From ec3065b35407a4b027552dbaa6e950fec1192c64 Mon Sep 17 00:00:00 2001 From: wang radium <741814620@qq.com> Date: Sat, 21 Mar 2026 10:08:36 +0800 Subject: [PATCH 001/175] Build: Add missing quote around TRINITY_BUILD_HOST_SYSTEM_RELEASE variable during revision_data.h generation (#31732) * Fixes more edge cases with localized output from Get-CimInstance --- cmake/genrev.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/genrev.cmake b/cmake/genrev.cmake index 07f3b8d4d84cd..9f219a047a898 100644 --- a/cmake/genrev.cmake +++ b/cmake/genrev.cmake @@ -134,7 +134,7 @@ if(WIN32) OUTPUT_STRIP_TRAILING_WHITESPACE ) # Remove "Microsoft Windows" from the result - string(REGEX REPLACE "^.* Windows " "" TRINITY_BUILD_HOST_SYSTEM_RELEASE ${TRINITY_BUILD_HOST_SYSTEM_RELEASE}) + string(REGEX REPLACE "^.* Windows " "" TRINITY_BUILD_HOST_SYSTEM_RELEASE "${TRINITY_BUILD_HOST_SYSTEM_RELEASE}") endif() if(CMAKE_SCRIPT_MODE_FILE) From db8552567d1c371a0581ea353202102bff243465 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 21 Mar 2026 13:41:42 +0100 Subject: [PATCH 002/175] Core/Transmog: Update transmog system to 12.0 --- sql/base/auth_database.sql | 27 +- sql/base/characters_database.sql | 88 +- .../auth/master/2026_03_21_00_auth.sql | 10 + .../master/2026_03_21_00_characters.sql | 47 ++ .../master/2026_03_21_00_hotfixes.sql | 190 +++++ .../Implementation/CharacterDatabase.cpp | 26 +- .../Implementation/CharacterDatabase.h | 13 + .../Implementation/HotfixDatabase.cpp | 39 + .../Database/Implementation/HotfixDatabase.h | 22 + .../Database/Implementation/LoginDatabase.cpp | 2 + .../Database/Implementation/LoginDatabase.h | 2 + .../game/Achievements/CriteriaHandler.cpp | 14 +- src/server/game/Chat/HyperlinkTags.cpp | 3 +- src/server/game/DataStores/DB2LoadInfo.h | 98 +++ src/server/game/DataStores/DB2Stores.cpp | 82 +- src/server/game/DataStores/DB2Stores.h | 12 +- src/server/game/DataStores/DB2Structure.h | 84 ++ src/server/game/DataStores/DBCEnums.h | 173 ++++ src/server/game/Entities/Item/Item.cpp | 60 +- .../game/Entities/Item/ItemTemplate.cpp | 46 ++ src/server/game/Entities/Item/ItemTemplate.h | 1 + .../Entities/Object/Updates/UpdateFields.cpp | 24 +- .../Entities/Object/Updates/UpdateFields.h | 4 +- .../game/Entities/Player/CollectionMgr.cpp | 106 ++- .../game/Entities/Player/CollectionMgr.h | 11 + src/server/game/Entities/Player/Player.cpp | 768 ++++++++++++++++-- src/server/game/Entities/Player/Player.h | 38 +- src/server/game/Globals/ObjectMgr.cpp | 5 +- src/server/game/Handlers/CharacterHandler.cpp | 18 +- .../Handlers/TransmogrificationHandler.cpp | 280 ++++++- .../Packets/TransmogrificationPackets.cpp | 155 ++++ .../Packets/TransmogrificationPackets.h | 128 +++ src/server/game/Server/Protocol/Opcodes.cpp | 16 +- src/server/game/Server/WorldSession.cpp | 12 +- src/server/game/Server/WorldSession.h | 8 + .../game/Spells/Auras/SpellAuraDefines.h | 2 +- .../game/Spells/Auras/SpellAuraEffects.cpp | 2 +- src/server/game/Spells/Spell.cpp | 11 +- src/server/game/Spells/Spell.h | 9 + src/server/game/Spells/SpellEffects.cpp | 29 +- src/server/game/Transmog/TransmogMgr.cpp | 416 ++++++++++ src/server/game/Transmog/TransmogMgr.h | 88 ++ src/server/game/World/World.cpp | 4 + 43 files changed, 2883 insertions(+), 290 deletions(-) create mode 100644 sql/updates/auth/master/2026_03_21_00_auth.sql create mode 100644 sql/updates/characters/master/2026_03_21_00_characters.sql create mode 100644 sql/updates/hotfixes/master/2026_03_21_00_hotfixes.sql create mode 100644 src/server/game/Transmog/TransmogMgr.cpp create mode 100644 src/server/game/Transmog/TransmogMgr.h diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 87b0e15cd8b0e..8798c3598f174 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -459,6 +459,30 @@ LOCK TABLES `battlenet_account_transmog_illusions` WRITE; /*!40000 ALTER TABLE `battlenet_account_transmog_illusions` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `battlenet_account_transmog_outfits` +-- + +DROP TABLE IF EXISTS `battlenet_account_transmog_outfits`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `battlenet_account_transmog_outfits` ( + `battlenetAccountId` int unsigned NOT NULL, + `transmogOutfitId` int NOT NULL DEFAULT '0', + PRIMARY KEY (`battlenetAccountId`,`blobIndex`), + CONSTRAINT `fk_battlenet_account_transmog_outfits` FOREIGN KEY (`battlenetAccountId`) REFERENCES `battlenet_accounts` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `battlenet_account_transmog_outfits` +-- + +LOCK TABLES `battlenet_account_transmog_outfits` WRITE; +/*!40000 ALTER TABLE `battlenet_account_transmog_outfits` DISABLE KEYS */; +/*!40000 ALTER TABLE `battlenet_account_transmog_outfits` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `battlenet_account_warband_scenes` -- @@ -4147,7 +4171,8 @@ INSERT INTO `updates` VALUES ('2026_03_10_00_auth.sql','4BB4EBC719F80F7BEA667E6DA49815B358956FEA','RELEASED','2026-03-10 20:42:13',0), ('2026_03_14_00_auth.sql','4CE4AF3D9E1BF173832B25F4D1A730A93ED016FA','RELEASED','2026-03-14 12:03:14',0), ('2026_03_18_00_auth.sql','7A755DADF9AAC9016FD01B26ACEC714FAB5E3269','RELEASED','2026-03-18 12:36:48',0), -('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0); +('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0), +('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 6691f0aca1229..9c127807f8ddb 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1891,6 +1891,89 @@ LOCK TABLES `character_trait_entry` WRITE; /*!40000 ALTER TABLE `character_trait_entry` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `character_transmog_outfit` +-- + +DROP TABLE IF EXISTS `character_transmog_outfit`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `character_transmog_outfit` ( + `guid` bigint NOT NULL, + `transmogOutfitId` int NOT NULL, + `name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL, + `icon` int NOT NULL, + `situationsEnabled` tinyint(1) NOT NULL, + PRIMARY KEY (`guid`,`transmogOutfitId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `character_transmog_outfit` +-- + +LOCK TABLES `character_transmog_outfit` WRITE; +/*!40000 ALTER TABLE `character_transmog_outfit` DISABLE KEYS */; +/*!40000 ALTER TABLE `character_transmog_outfit` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `character_transmog_outfit_situation` +-- + +DROP TABLE IF EXISTS `character_transmog_outfit_situation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `character_transmog_outfit_situation` ( + `guid` bigint NOT NULL, + `transmogOutfitId` int NOT NULL, + `situationID` int NOT NULL, + `specID` int NOT NULL, + `loadoutID` int NOT NULL, + `equipmentSetID` int NOT NULL, + PRIMARY KEY (`guid`,`transmogOutfitId`,`situationID`,`specID`,`loadoutID`,`equipmentSetID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `character_transmog_outfit_situation` +-- + +LOCK TABLES `character_transmog_outfit_situation` WRITE; +/*!40000 ALTER TABLE `character_transmog_outfit_situation` DISABLE KEYS */; +/*!40000 ALTER TABLE `character_transmog_outfit_situation` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `character_transmog_outfit_slot` +-- + +DROP TABLE IF EXISTS `character_transmog_outfit_slot`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `character_transmog_outfit_slot` ( + `guid` bigint NOT NULL, + `transmogOutfitId` int NOT NULL, + `slot` tinyint NOT NULL, + `slotOption` tinyint NOT NULL, + `itemModifiedAppearanceID` int NOT NULL, + `appearanceDisplayType` tinyint NOT NULL, + `spellItemEnchantmentID` int NOT NULL, + `illusionDisplayType` tinyint NOT NULL, + `flags` int NOT NULL, + PRIMARY KEY (`guid`,`transmogOutfitId`,`slot`,`slotOption`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `character_transmog_outfit_slot` +-- + +LOCK TABLES `character_transmog_outfit_slot` WRITE; +/*!40000 ALTER TABLE `character_transmog_outfit_slot` DISABLE KEYS */; +/*!40000 ALTER TABLE `character_transmog_outfit_slot` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `character_transmog_outfits` -- @@ -2043,6 +2126,8 @@ CREATE TABLE `characters` ( `personalTabardBorderStyle` int NOT NULL DEFAULT '-1', `personalTabardBorderColor` int NOT NULL DEFAULT '-1', `personalTabardBackgroundColor` int NOT NULL DEFAULT '-1', + `transmogOutfitEquippedId` int NOT NULL DEFAULT '2', + `transmogOutfitLocked` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`guid`), UNIQUE KEY `idx_name` (`name`), KEY `idx_account` (`account`), @@ -3832,7 +3917,8 @@ INSERT INTO `updates` VALUES ('2025_11_25_00_characters.sql','A0C04B2404B1832421402F78436DDC4AA18EBAD8','ARCHIVED','2025-11-25 22:28:32',0), ('2026_01_14_00_characters.sql','FF5D889A41BBD9F9827489DEC08BCA9DB457933E','ARCHIVED','2026-01-14 23:40:33',0), ('2026_01_28_00_characters.sql','807B6622970E81089806C3B45C6C7A32EF531BCA','ARCHIVED','2026-01-25 21:53:51',0), -('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0); +('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0), +('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_03_21_00_auth.sql b/sql/updates/auth/master/2026_03_21_00_auth.sql new file mode 100644 index 0000000000000..3d9874bdc3fdb --- /dev/null +++ b/sql/updates/auth/master/2026_03_21_00_auth.sql @@ -0,0 +1,10 @@ +-- +-- Table structure for table `battlenet_account_transmog_outfits` +-- +DROP TABLE IF EXISTS `battlenet_account_transmog_outfits`; +CREATE TABLE `battlenet_account_transmog_outfits` ( + `battlenetAccountId` int unsigned NOT NULL, + `transmogOutfitId` int NOT NULL DEFAULT '0', + PRIMARY KEY (`battlenetAccountId`,`transmogOutfitId`), + CONSTRAINT `fk_battlenet_account_transmog_outfits` FOREIGN KEY (`battlenetAccountId`) REFERENCES `battlenet_accounts` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; diff --git a/sql/updates/characters/master/2026_03_21_00_characters.sql b/sql/updates/characters/master/2026_03_21_00_characters.sql new file mode 100644 index 0000000000000..865bea9218a4d --- /dev/null +++ b/sql/updates/characters/master/2026_03_21_00_characters.sql @@ -0,0 +1,47 @@ +ALTER TABLE `characters` + ADD `transmogOutfitEquippedId` int NOT NULL DEFAULT 2 AFTER `personalTabardBackgroundColor`, + ADD `transmogOutfitLocked` tinyint(1) NOT NULL DEFAULT 0 AFTER `transmogOutfitEquippedId`; + +-- +-- Table structure for table `character_transmog_outfit` +-- +DROP TABLE IF EXISTS `character_transmog_outfit`; +CREATE TABLE `character_transmog_outfit` ( + `guid` bigint NOT NULL, + `transmogOutfitId` int NOT NULL, + `name` varchar(16) COLLATE utf8mb4_unicode_ci NOT NULL, + `icon` int NOT NULL, + `situationsEnabled` tinyint(1) NOT NULL, + PRIMARY KEY (`guid`,`transmogOutfitId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `character_transmog_outfit_situation` +-- +DROP TABLE IF EXISTS `character_transmog_outfit_situation`; +CREATE TABLE `character_transmog_outfit_situation` ( + `guid` bigint NOT NULL, + `transmogOutfitId` int NOT NULL, + `situationID` int NOT NULL, + `specID` int NOT NULL, + `loadoutID` int NOT NULL, + `equipmentSetID` int NOT NULL, + PRIMARY KEY (`guid`,`transmogOutfitId`,`situationID`,`specID`,`loadoutID`,`equipmentSetID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `character_transmog_outfit_slot` +-- +DROP TABLE IF EXISTS `character_transmog_outfit_slot`; +CREATE TABLE `character_transmog_outfit_slot` ( + `guid` bigint NOT NULL, + `transmogOutfitId` int NOT NULL, + `slot` tinyint NOT NULL, + `slotOption` tinyint NOT NULL, + `itemModifiedAppearanceID` int NOT NULL, + `appearanceDisplayType` tinyint NOT NULL, + `spellItemEnchantmentID` int NOT NULL, + `illusionDisplayType` tinyint NOT NULL, + `flags` int NOT NULL, + PRIMARY KEY (`guid`,`transmogOutfitId`,`slot`,`slotOption`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; diff --git a/sql/updates/hotfixes/master/2026_03_21_00_hotfixes.sql b/sql/updates/hotfixes/master/2026_03_21_00_hotfixes.sql new file mode 100644 index 0000000000000..a66c041162739 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_03_21_00_hotfixes.sql @@ -0,0 +1,190 @@ +-- +-- Table structure for table `transmog_outfit_entry` +-- +DROP TABLE IF EXISTS `transmog_outfit_entry`; +CREATE TABLE `transmog_outfit_entry` ( + `Cost` bigint unsigned NOT NULL DEFAULT '0', + `Name` text, + `ID` int unsigned NOT NULL DEFAULT '0', + `OrderIndex` int NOT NULL DEFAULT '0', + `Source` tinyint unsigned NOT NULL DEFAULT '0', + `Flags` int NOT NULL DEFAULT '0', + `SetType` tinyint unsigned NOT NULL DEFAULT '0', + `OverrideCostModifier` float NOT NULL DEFAULT '0', + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `transmog_outfit_entry_locale` +-- +DROP TABLE IF EXISTS `transmog_outfit_entry_locale`; +CREATE TABLE `transmog_outfit_entry_locale` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `locale` varchar(4) NOT NULL, + `Name_lang` text, + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +PARTITION BY LIST COLUMNS(locale) +(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB, + PARTITION esES VALUES IN ('esES') ENGINE = InnoDB, + PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB, + PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB, + PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB, + PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB, + PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB, + PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB, + PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB, + PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB); + +-- +-- Table structure for table `transmog_outfit_slot_info` +-- +DROP TABLE IF EXISTS `transmog_outfit_slot_info`; +CREATE TABLE `transmog_outfit_slot_info` ( + `InventorySlotName` text, + `ID` int unsigned NOT NULL DEFAULT '0', + `TransmogOutfitSlotEnum` tinyint NOT NULL DEFAULT '0', + `InventorySlotEnum` int NOT NULL DEFAULT '0', + `Flags` int NOT NULL DEFAULT '0', + `Unused1200` tinyint unsigned NOT NULL DEFAULT '0', + `TransmogCollectionType` tinyint unsigned NOT NULL DEFAULT '0', + `SecondarySlotID` int NOT NULL DEFAULT '0', + `InventorySlotID` int NOT NULL DEFAULT '0', + `UnassignedAtlasID` int NOT NULL DEFAULT '0', + `UnassignedDisplayAtlasID` int NOT NULL DEFAULT '0', + `ItemCostMultiplier` float NOT NULL DEFAULT '0', + `IllusionCostMultiplier` float NOT NULL DEFAULT '0', + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `transmog_outfit_slot_option` +-- +DROP TABLE IF EXISTS `transmog_outfit_slot_option`; +CREATE TABLE `transmog_outfit_slot_option` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `Name` text, + `OptionEnum` tinyint unsigned NOT NULL DEFAULT '0', + `TransmogOutfitSlotInfoID` int unsigned NOT NULL DEFAULT '0', + `Flags` int NOT NULL DEFAULT '0', + `SecondaryOptionID` int NOT NULL DEFAULT '0', + `ItemCostMultiplier` float NOT NULL DEFAULT '0', + `IllusionCostMultiplier` float NOT NULL DEFAULT '0', + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `transmog_outfit_slot_option_locale` +-- +DROP TABLE IF EXISTS `transmog_outfit_slot_option_locale`; +CREATE TABLE `transmog_outfit_slot_option_locale` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `locale` varchar(4) NOT NULL, + `Name_lang` text, + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +PARTITION BY LIST COLUMNS(locale) +(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB, + PARTITION esES VALUES IN ('esES') ENGINE = InnoDB, + PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB, + PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB, + PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB, + PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB, + PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB, + PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB, + PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB, + PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB); + +-- +-- Table structure for table `transmog_situation` +-- +DROP TABLE IF EXISTS `transmog_situation`; +CREATE TABLE `transmog_situation` ( + `Name` text, + `ID` int unsigned NOT NULL DEFAULT '0', + `SituationEnum` tinyint NOT NULL DEFAULT '0', + `Flags` int NOT NULL DEFAULT '0', + `TransmogSituationGroupID` int unsigned NOT NULL DEFAULT '0', + `OrderIndex` int NOT NULL DEFAULT '0', + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `transmog_situation_locale` +-- +DROP TABLE IF EXISTS `transmog_situation_locale`; +CREATE TABLE `transmog_situation_locale` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `locale` varchar(4) NOT NULL, + `Name_lang` text, + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +PARTITION BY LIST COLUMNS(locale) +(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB, + PARTITION esES VALUES IN ('esES') ENGINE = InnoDB, + PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB, + PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB, + PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB, + PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB, + PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB, + PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB, + PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB, + PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB); + +-- +-- Table structure for table `transmog_situation_group` +-- +DROP TABLE IF EXISTS `transmog_situation_group`; +CREATE TABLE `transmog_situation_group` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `TransmogSituationTriggerID` int unsigned NOT NULL DEFAULT '0', + `OrderIndex` int NOT NULL DEFAULT '0', + `Flags` int NOT NULL DEFAULT '0', + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `transmog_situation_trigger` +-- +DROP TABLE IF EXISTS `transmog_situation_trigger`; +CREATE TABLE `transmog_situation_trigger` ( + `Name` text, + `Description` text, + `ID` int unsigned NOT NULL DEFAULT '0', + `TriggerEnum` tinyint unsigned NOT NULL DEFAULT '0', + `Flags` int NOT NULL DEFAULT '0', + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- Table structure for table `transmog_situation_trigger_locale` +-- +DROP TABLE IF EXISTS `transmog_situation_trigger_locale`; +CREATE TABLE `transmog_situation_trigger_locale` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `locale` varchar(4) NOT NULL, + `Name_lang` text, + `Description_lang` text, + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +PARTITION BY LIST COLUMNS(locale) +(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB, + PARTITION esES VALUES IN ('esES') ENGINE = InnoDB, + PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB, + PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB, + PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB, + PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB, + PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB, + PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB, + PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB, + PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 04773aede62f2..def6ab00b4b80 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -99,7 +99,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, " "health, power1, power2, power3, power4, power5, power6, power7, power8, power9, power10, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, " "raidDifficulty, legacyRaidDifficulty, fishingSteps, honor, honorLevel, honorRestState, honorRestBonus, numRespecs, " - "personalTabardEmblemStyle, personalTabardEmblemColor, personalTabardBorderStyle, personalTabardBorderColor, personalTabardBackgroundColor " + "personalTabardEmblemStyle, personalTabardEmblemColor, personalTabardBorderStyle, personalTabardBorderColor, personalTabardBackgroundColor, transmogOutfitEquippedId, transmogOutfitLocked " "FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_CUSTOMIZATIONS, "SELECT chrCustomizationOptionID, chrCustomizationChoiceID FROM character_customizations WHERE guid = ? ORDER BY chrCustomizationOptionID", CONNECTION_ASYNC); @@ -150,6 +150,9 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFITS, "SELECT setguid, setindex, name, iconname, ignore_mask, appearance0, appearance1, appearance2, appearance3, appearance4, " "appearance5, appearance6, appearance7, appearance8, appearance9, appearance10, appearance11, appearance12, appearance13, appearance14, appearance15, appearance16, " "appearance17, appearance18, mainHandEnchant, offHandEnchant FROM character_transmog_outfits WHERE guid = ? ORDER BY setindex", CONNECTION_ASYNC); + PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT, "SELECT transmogOutfitId, name, icon, situationsEnabled FROM character_transmog_outfit WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SITUATION, "SELECT transmogOutfitId, situationID, specID, loadoutID, equipmentSetID FROM character_transmog_outfit_situation WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SLOT, "SELECT transmogOutfitId, slot, slotOption, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags FROM character_transmog_outfit_slot WHERE guid = ? ORDER BY transmogOutfitId, slot, slotOption", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_BGDATA, "SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell, queueId FROM character_battleground_data WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_GLYPHS, "SELECT talentGroup, glyphId FROM character_glyphs WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_TALENTS, "SELECT talentId, talentGroup FROM character_talent WHERE guid = ?", CONNECTION_ASYNC); @@ -360,6 +363,12 @@ void CharacterDatabaseConnection::DoPrepareStatements() "appearance16, appearance17, appearance18, mainHandEnchant, offHandEnchant) " "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT, "DELETE FROM character_transmog_outfits WHERE setguid=?", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_TRANSMOG_OUTFIT_2, "INSERT INTO character_transmog_outfit (guid, transmogOutfitId, name, icon, situationsEnabled) VALUES (?, ?, ?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT_2, "DELETE FROM character_transmog_outfit WHERE guid = ? AND transmogOutfitId = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_TRANSMOG_OUTFIT_SITUATION, "INSERT INTO character_transmog_outfit_situation (guid, transmogOutfitId, situationID, specID, loadoutID, equipmentSetID) VALUES (?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT_SITUATION, "DELETE FROM character_transmog_outfit_situation WHERE guid = ? AND transmogOutfitId = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_TRANSMOG_OUTFIT_SLOT, "INSERT INTO character_transmog_outfit_slot (guid, transmogOutfitId, slot, slotOption, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT_SLOT, "DELETE FROM character_transmog_outfit_slot WHERE guid = ? AND transmogOutfitId = ?", CONNECTION_ASYNC); // Auras PrepareStatement(CHAR_INS_AURA, "INSERT INTO character_aura (guid, casterGuid, itemGuid, spell, effectMask, recalculateMask, difficulty, stackCount, maxDuration, remainTime, remainCharges, castItemId, castItemLevel) " @@ -481,17 +490,19 @@ void CharacterDatabaseConnection::DoPrepareStatements() "taximask, createTime, createMode, cinematic, " "totaltime, leveltime, rest_bonus, logout_time, is_logout_resting, resettalents_cost, resettalents_time, primarySpecialization, " "extra_flags, summonedPetNumber, at_login, " - "death_expire_time, taxi_path, totalKills, " - "todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, power1, power2, power3, " - "power4, power5, power6, power7, power8, power9, power10, latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild) VALUES " - "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC); + "death_expire_time, taxi_path, totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, " + "power1, power2, power3, power4, power5, power6, power7, power8, power9, power10, " + "latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild, " + "personalTabardEmblemStyle, personalTabardEmblemColor, personalTabardBorderStyle, personalTabardBorderColor, personalTabardBackgroundColor, transmogOutfitEquippedId, transmogOutfitLocked) VALUES " + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_CHARACTER, "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,inventorySlots=?,inventoryBagFlags=?,bagSlotFlags1=?,bagSlotFlags2=?,bagSlotFlags3=?,bagSlotFlags4=?,bagSlotFlags5=?," "bankSlots=?,bankTabs=?,bankBagFlags=?,restState=?,playerFlags=?,playerFlagsEx=?," "map=?,instance_id=?,dungeonDifficulty=?,raidDifficulty=?,legacyRaidDifficulty=?,position_x=?,position_y=?,position_z=?,orientation=?,trans_x=?,trans_y=?,trans_z=?,trans_o=?,transguid=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?," "logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,numRespecs=?,primarySpecialization=?,extra_flags=?,summonedPetNumber=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," "totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,power8=?,power9=?,power10=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," - "equipmentCache=?,knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=? WHERE guid=?", CONNECTION_ASYNC); + "equipmentCache=?,knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=?," + "personalTabardEmblemStyle=?,personalTabardEmblemColor=?,personalTabardBorderStyle=?,personalTabardBorderColor=?,personalTabardBackgroundColor=?,transmogOutfitEquippedId=?,transmogOutfitLocked=? WHERE guid=?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_REM_AT_LOGIN_FLAG, "UPDATE characters set at_login = at_login & ~ ? WHERE guid = ?", CONNECTION_ASYNC); @@ -626,6 +637,9 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_CHAR_ACHIEVEMENTS, "DELETE FROM character_achievement WHERE guid = ? AND achievement NOT IN (456,457,458,459,460,461,462,463,464,465,466,467,1400,1402,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415,1416,1417,1418,1419,1420,1421,1422,1423,1424,1425,1426,1427,1463,3117,3259,4078,4576,4998,4999,5000,5001,5002,5003,5004,5005,5006,5007,5008,5381,5382,5383,5384,5385,5386,5387,5388,5389,5390,5391,5392,5393,5394,5395,5396,6433,6523,6524,6743,6744,6745,6746,6747,6748,6749,6750,6751,6752,6829,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6871,6872,6873)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_EQUIPMENTSETS, "DELETE FROM character_equipmentsets WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFITS, "DELETE FROM character_transmog_outfits WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFIT_BY_CHAR, "DELETE FROM character_transmog_outfit WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFIT_SITUATION_BY_CHAR, "DELETE FROM character_transmog_outfit_slot WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFIT_SLOT_BY_CHAR, "DELETE FROM character_transmog_outfit_situation WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_GUILD_EVENTLOG_BY_PLAYER, "DELETE FROM guild_eventlog WHERE PlayerGuid1 = ? OR PlayerGuid2 = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_GUILD_BANK_EVENTLOG_BY_PLAYER, "DELETE FROM guild_bank_eventlog WHERE PlayerGuid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHAR_GLYPHS, "DELETE FROM character_glyphs WHERE guid = ?", CONNECTION_ASYNC); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 33205a47d39ea..4838f2c85fbed 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -107,6 +107,9 @@ enum CharacterDatabaseStatements : uint32 CHAR_SEL_CHARACTER_CRITERIAPROGRESS, CHAR_SEL_CHARACTER_EQUIPMENTSETS, CHAR_SEL_CHARACTER_TRANSMOG_OUTFITS, + CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT, + CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SITUATION, + CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SLOT, CHAR_SEL_CHARACTER_BGDATA, CHAR_SEL_CHARACTER_GLYPHS, CHAR_SEL_CHARACTER_TALENTS, @@ -270,6 +273,13 @@ enum CharacterDatabaseStatements : uint32 CHAR_INS_TRANSMOG_OUTFIT, CHAR_DEL_TRANSMOG_OUTFIT, + CHAR_INS_TRANSMOG_OUTFIT_2, + CHAR_DEL_TRANSMOG_OUTFIT_2, + CHAR_INS_TRANSMOG_OUTFIT_SITUATION, + CHAR_DEL_TRANSMOG_OUTFIT_SITUATION, + CHAR_INS_TRANSMOG_OUTFIT_SLOT, + CHAR_DEL_TRANSMOG_OUTFIT_SLOT, + CHAR_INS_AURA, CHAR_INS_AURA_EFFECT, @@ -496,6 +506,9 @@ enum CharacterDatabaseStatements : uint32 CHAR_DEL_CHAR_ACHIEVEMENTS, CHAR_DEL_CHAR_EQUIPMENTSETS, CHAR_DEL_CHAR_TRANSMOG_OUTFITS, + CHAR_DEL_CHAR_TRANSMOG_OUTFIT_BY_CHAR, + CHAR_DEL_CHAR_TRANSMOG_OUTFIT_SITUATION_BY_CHAR, + CHAR_DEL_CHAR_TRANSMOG_OUTFIT_SLOT_BY_CHAR, CHAR_DEL_GUILD_EVENTLOG_BY_PLAYER, CHAR_DEL_GUILD_BANK_EVENTLOG_BY_PLAYER, CHAR_DEL_CHAR_GLYPHS, diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index c6b7c5e9fc5e2..eafaf95c7b954 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -1997,6 +1997,26 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_ILLUSION, "SELECT MAX(ID) + 1 FROM transmog_illusion", CONNECTION_SYNCH); + // TransmogOutfitEntry.db2 + PrepareStatement(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT Cost, Name, ID, OrderIndex, Source, Flags, SetType, OverrideCostModifier" + " FROM transmog_outfit_entry WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT MAX(ID) + 1 FROM transmog_outfit_entry", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT ID, Name_lang FROM transmog_outfit_entry_locale WHERE (`VerifiedBuild` > 0) = ?" + " AND locale = ?", CONNECTION_SYNCH); + + // TransmogOutfitSlotInfo.db2 + PrepareStatement(HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_INFO, "SELECT InventorySlotName, ID, TransmogOutfitSlotEnum, InventorySlotEnum, Flags, " + "Unused1200, TransmogCollectionType, SecondarySlotID, InventorySlotID, UnassignedAtlasID, UnassignedDisplayAtlasID, ItemCostMultiplier, " + "IllusionCostMultiplier FROM transmog_outfit_slot_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_INFO, "SELECT MAX(ID) + 1 FROM transmog_outfit_slot_info", CONNECTION_SYNCH); + + // TransmogOutfitSlotOption.db2 + PrepareStatement(HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION, "SELECT ID, Name, OptionEnum, TransmogOutfitSlotInfoID, Flags, SecondaryOptionID, " + "ItemCostMultiplier, IllusionCostMultiplier FROM transmog_outfit_slot_option WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION, "SELECT MAX(ID) + 1 FROM transmog_outfit_slot_option", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION, "SELECT ID, Name_lang FROM transmog_outfit_slot_option_locale" + " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); + // TransmogSet.db2 PrepareStatement(HOTFIX_SEL_TRANSMOG_SET, "SELECT Name, ID, ClassMask, TrackingQuestID, Flags, TransmogSetGroupID, ItemNameDescriptionID, " "ParentTransmogSetID, Unknown810, ExpansionID, PatchID, UiOrder, PlayerConditionID FROM transmog_set WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); @@ -2014,6 +2034,25 @@ void HotfixDatabaseConnection::DoPrepareStatements() " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SET_ITEM, "SELECT MAX(ID) + 1 FROM transmog_set_item", CONNECTION_SYNCH); + // TransmogSituation.db2 + PrepareStatement(HOTFIX_SEL_TRANSMOG_SITUATION, "SELECT Name, ID, SituationEnum, Flags, TransmogSituationGroupID, OrderIndex" + " FROM transmog_situation WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SITUATION, "SELECT MAX(ID) + 1 FROM transmog_situation", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SITUATION, "SELECT ID, Name_lang FROM transmog_situation_locale WHERE (`VerifiedBuild` > 0) = ?" + " AND locale = ?", CONNECTION_SYNCH); + + // TransmogSituationGroup.db2 + PrepareStatement(HOTFIX_SEL_TRANSMOG_SITUATION_GROUP, "SELECT ID, TransmogSituationTriggerID, OrderIndex, Flags FROM transmog_situation_group" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SITUATION_GROUP, "SELECT MAX(ID) + 1 FROM transmog_situation_group", CONNECTION_SYNCH); + + // TransmogSituationTrigger.db2 + PrepareStatement(HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER, "SELECT Name, Description, ID, TriggerEnum, Flags FROM transmog_situation_trigger" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER, "SELECT MAX(ID) + 1 FROM transmog_situation_trigger", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER, "SELECT ID, Name_lang, Description_lang FROM transmog_situation_trigger_locale" + " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); + // TransportAnimation.db2 PrepareStatement(HOTFIX_SEL_TRANSPORT_ANIMATION, "SELECT ID, PosX, PosY, PosZ, SequenceID, TimeIndex, TransportID FROM transport_animation" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index 078c45c64d886..d3a50924b5eac 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -1155,6 +1155,17 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_TRANSMOG_ILLUSION, HOTFIX_SEL_TRANSMOG_ILLUSION_MAX_ID, + HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, + HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY_MAX_ID, + HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY_LOCALE, + + HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_INFO, + HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_INFO_MAX_ID, + + HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION, + HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION_MAX_ID, + HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION_LOCALE, + HOTFIX_SEL_TRANSMOG_SET, HOTFIX_SEL_TRANSMOG_SET_MAX_ID, HOTFIX_SEL_TRANSMOG_SET_LOCALE, @@ -1166,6 +1177,17 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_TRANSMOG_SET_ITEM, HOTFIX_SEL_TRANSMOG_SET_ITEM_MAX_ID, + HOTFIX_SEL_TRANSMOG_SITUATION, + HOTFIX_SEL_TRANSMOG_SITUATION_MAX_ID, + HOTFIX_SEL_TRANSMOG_SITUATION_LOCALE, + + HOTFIX_SEL_TRANSMOG_SITUATION_GROUP, + HOTFIX_SEL_TRANSMOG_SITUATION_GROUP_MAX_ID, + + HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER, + HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER_MAX_ID, + HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER_LOCALE, + HOTFIX_SEL_TRANSPORT_ANIMATION, HOTFIX_SEL_TRANSPORT_ANIMATION_MAX_ID, diff --git a/src/server/database/Database/Implementation/LoginDatabase.cpp b/src/server/database/Database/Implementation/LoginDatabase.cpp index 820e828003ab7..c11ba3085e2d9 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.cpp +++ b/src/server/database/Database/Implementation/LoginDatabase.cpp @@ -191,6 +191,8 @@ void LoginDatabaseConnection::DoPrepareStatements() PrepareStatement(LOGIN_SEL_BNET_TRANSMOG_ILLUSIONS, "SELECT blobIndex, illusionMask FROM battlenet_account_transmog_illusions WHERE battlenetAccountId = ? ORDER BY blobIndex DESC", CONNECTION_ASYNC); PrepareStatement(LOGIN_INS_BNET_TRANSMOG_ILLUSIONS, "INSERT INTO battlenet_account_transmog_illusions (battlenetAccountId, blobIndex, illusionMask) VALUES (?, ?, ?) " "ON DUPLICATE KEY UPDATE illusionMask = illusionMask | VALUES(illusionMask)", CONNECTION_ASYNC); + PrepareStatement(LOGIN_SEL_BNET_TRANSMOG_OUTFITS, "SELECT transmogOutfitId FROM battlenet_account_transmog_outfits WHERE battlenetAccountId = ?", CONNECTION_ASYNC); + PrepareStatement(LOGIN_INS_BNET_TRANSMOG_OUTFITS, "INSERT IGNORE INTO battlenet_account_transmog_outfits (battlenetAccountId, transmogOutfitId) VALUES (?, ?)", CONNECTION_ASYNC); PrepareStatement(LOGIN_SEL_BNET_WARBAND_SCENES, "SELECT warbandSceneId, isFavorite, hasFanfare FROM battlenet_account_warband_scenes WHERE battlenetAccountId = ?", CONNECTION_ASYNC); PrepareStatement(LOGIN_INS_BNET_WARBAND_SCENE, "INSERT INTO battlenet_account_warband_scenes (battlenetAccountId, warbandSceneId, isFavorite, hasFanfare) VALUES (?, ?, ?, ?) " "ON DUPLICATE KEY UPDATE isFavorite = VALUES(isFavorite)", CONNECTION_ASYNC); diff --git a/src/server/database/Database/Implementation/LoginDatabase.h b/src/server/database/Database/Implementation/LoginDatabase.h index 811931fd75adf..53d1d7a7694db 100644 --- a/src/server/database/Database/Implementation/LoginDatabase.h +++ b/src/server/database/Database/Implementation/LoginDatabase.h @@ -176,6 +176,8 @@ enum LoginDatabaseStatements : uint32 LOGIN_DEL_BNET_ITEM_FAVORITE_APPEARANCE, LOGIN_SEL_BNET_TRANSMOG_ILLUSIONS, LOGIN_INS_BNET_TRANSMOG_ILLUSIONS, + LOGIN_SEL_BNET_TRANSMOG_OUTFITS, + LOGIN_INS_BNET_TRANSMOG_OUTFITS, LOGIN_SEL_BNET_WARBAND_SCENES, LOGIN_INS_BNET_WARBAND_SCENE, LOGIN_UPD_BNET_WARBAND_SCENE, diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 0a49db74fd699..54b0f0e5d5d91 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -3227,10 +3227,9 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 { itemSubclass = itemTemplate->GetSubClass(); - if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sDB2Manager.GetItemModifiedAppearance(visibleItem.ItemID, visibleItem.ItemAppearanceModID)) - if (ItemModifiedAppearanceExtraEntry const* itemModifiedAppearaceExtra = sItemModifiedAppearanceExtraStore.LookupEntry(itemModifiedAppearance->ID)) - if (itemModifiedAppearaceExtra->DisplayWeaponSubclassID > 0) - itemSubclass = itemModifiedAppearaceExtra->DisplayWeaponSubclassID; + if (ItemModifiedAppearanceExtraEntry const* itemModifiedAppearaceExtra = sItemModifiedAppearanceExtraStore.LookupEntry(visibleItem.ItemModifiedAppearanceID)) + if (itemModifiedAppearaceExtra->DisplayWeaponSubclassID > 0) + itemSubclass = itemModifiedAppearaceExtra->DisplayWeaponSubclassID; } } if (itemSubclass != reqValue) @@ -3247,10 +3246,9 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 { itemSubclass = itemTemplate->GetSubClass(); - if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sDB2Manager.GetItemModifiedAppearance(visibleItem.ItemID, visibleItem.ItemAppearanceModID)) - if (ItemModifiedAppearanceExtraEntry const* itemModifiedAppearaceExtra = sItemModifiedAppearanceExtraStore.LookupEntry(itemModifiedAppearance->ID)) - if (itemModifiedAppearaceExtra->DisplayWeaponSubclassID > 0) - itemSubclass = itemModifiedAppearaceExtra->DisplayWeaponSubclassID; + if (ItemModifiedAppearanceExtraEntry const* itemModifiedAppearaceExtra = sItemModifiedAppearanceExtraStore.LookupEntry(visibleItem.ItemModifiedAppearanceID)) + if (itemModifiedAppearaceExtra->DisplayWeaponSubclassID > 0) + itemSubclass = itemModifiedAppearaceExtra->DisplayWeaponSubclassID; } } if (itemSubclass != reqValue) diff --git a/src/server/game/Chat/HyperlinkTags.cpp b/src/server/game/Chat/HyperlinkTags.cpp index 6d7c41fa85487..c4fa8c9296d09 100644 --- a/src/server/game/Chat/HyperlinkTags.cpp +++ b/src/server/game/Chat/HyperlinkTags.cpp @@ -22,6 +22,7 @@ #include "ObjectMgr.h" #include "SpellInfo.h" #include "SpellMgr.h" +#include "TransmogMgr.h" static constexpr char HYPERLINK_DATA_DELIMITER = ':'; @@ -527,7 +528,7 @@ bool Trinity::Hyperlinks::LinkTags::transmogillusion::StoreTo(SpellItemEnchantme if (!t.TryConsumeTo(spellItemEnchantmentId)) return false; return !!(val = sSpellItemEnchantmentStore.LookupEntry(spellItemEnchantmentId)) - && sDB2Manager.GetTransmogIllusionForEnchantment(spellItemEnchantmentId) && t.IsEmpty(); + && TransmogMgr::GetTransmogIllusionForSpellItemEnchantment(spellItemEnchantmentId) && t.IsEmpty(); } bool Trinity::Hyperlinks::LinkTags::transmogset::StoreTo(TransmogSetEntry const*& val, std::string_view text) diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index 6d78bfb4cab7c..b41ffab613a76 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -6579,6 +6579,62 @@ struct TransmogIllusionLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 5, &TransmogIllusionMeta::Instance, HOTFIX_SEL_TRANSMOG_ILLUSION }; }; +struct TransmogOutfitEntryLoadInfo +{ + static constexpr DB2FieldMeta Fields[8] = + { + { .IsSigned = false, .Type = FT_LONG, .Name = "Cost" }, + { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, + { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "OrderIndex" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "Source" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "SetType" }, + { .IsSigned = false, .Type = FT_FLOAT, .Name = "OverrideCostModifier" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 8, &TransmogOutfitEntryMeta::Instance, HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY }; +}; + +struct TransmogOutfitSlotInfoLoadInfo +{ + static constexpr DB2FieldMeta Fields[13] = + { + { .IsSigned = false, .Type = FT_STRING_NOT_LOCALIZED, .Name = "InventorySlotName" }, + { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = true, .Type = FT_BYTE, .Name = "TransmogOutfitSlotEnum" }, + { .IsSigned = true, .Type = FT_INT, .Name = "InventorySlotEnum" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "Unused1200" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "TransmogCollectionType" }, + { .IsSigned = true, .Type = FT_INT, .Name = "SecondarySlotID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "InventorySlotID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "UnassignedAtlasID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "UnassignedDisplayAtlasID" }, + { .IsSigned = false, .Type = FT_FLOAT, .Name = "ItemCostMultiplier" }, + { .IsSigned = false, .Type = FT_FLOAT, .Name = "IllusionCostMultiplier" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 13, &TransmogOutfitSlotInfoMeta::Instance, HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_INFO }; +}; + +struct TransmogOutfitSlotOptionLoadInfo +{ + static constexpr DB2FieldMeta Fields[8] = + { + { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "OptionEnum" }, + { .IsSigned = false, .Type = FT_INT, .Name = "TransmogOutfitSlotInfoID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, + { .IsSigned = true, .Type = FT_INT, .Name = "SecondaryOptionID" }, + { .IsSigned = false, .Type = FT_FLOAT, .Name = "ItemCostMultiplier" }, + { .IsSigned = false, .Type = FT_FLOAT, .Name = "IllusionCostMultiplier" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 8, &TransmogOutfitSlotOptionMeta::Instance, HOTFIX_SEL_TRANSMOG_OUTFIT_SLOT_OPTION }; +}; + struct TransmogSetLoadInfo { static constexpr DB2FieldMeta Fields[13] = @@ -6625,6 +6681,48 @@ struct TransmogSetItemLoadInfo static constexpr DB2LoadInfo Instance{ Fields, 4, &TransmogSetItemMeta::Instance, HOTFIX_SEL_TRANSMOG_SET_ITEM }; }; +struct TransmogSituationLoadInfo +{ + static constexpr DB2FieldMeta Fields[6] = + { + { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, + { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = true, .Type = FT_BYTE, .Name = "SituationEnum" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, + { .IsSigned = false, .Type = FT_INT, .Name = "TransmogSituationGroupID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "OrderIndex" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 6, &TransmogSituationMeta::Instance, HOTFIX_SEL_TRANSMOG_SITUATION }; +}; + +struct TransmogSituationGroupLoadInfo +{ + static constexpr DB2FieldMeta Fields[4] = + { + { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = false, .Type = FT_INT, .Name = "TransmogSituationTriggerID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "OrderIndex" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 4, &TransmogSituationGroupMeta::Instance, HOTFIX_SEL_TRANSMOG_SITUATION_GROUP }; +}; + +struct TransmogSituationTriggerLoadInfo +{ + static constexpr DB2FieldMeta Fields[5] = + { + { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, + { .IsSigned = false, .Type = FT_STRING, .Name = "Description" }, + { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = false, .Type = FT_BYTE, .Name = "TriggerEnum" }, + { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, + }; + + static constexpr DB2LoadInfo Instance{ Fields, 5, &TransmogSituationTriggerMeta::Instance, HOTFIX_SEL_TRANSMOG_SITUATION_TRIGGER }; +}; + struct TransportAnimationLoadInfo { static constexpr DB2FieldMeta Fields[7] = diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 15145e7827464..c91cff7befd7d 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -382,6 +382,12 @@ DB2Storage sTraitTreeXTraitCostStore("Trait DB2Storage sTraitTreeXTraitCurrencyStore("TraitTreeXTraitCurrency.db2", &TraitTreeXTraitCurrencyLoadInfo::Instance); DB2Storage sTransmogHolidayStore("TransmogHoliday.db2", &TransmogHolidayLoadInfo::Instance); DB2Storage sTransmogIllusionStore("TransmogIllusion.db2", &TransmogIllusionLoadInfo::Instance); +DB2Storage sTransmogOutfitEntryStore("TransmogOutfitEntry.db2", &TransmogOutfitEntryLoadInfo::Instance); +DB2Storage sTransmogOutfitSlotInfoStore("TransmogOutfitSlotInfo.db2", &TransmogOutfitSlotInfoLoadInfo::Instance); +DB2Storage sTransmogOutfitSlotOptionInfoStore("TransmogOutfitSlotOption.db2", &TransmogOutfitSlotOptionLoadInfo::Instance); +DB2Storage sTransmogSituationStore("TransmogSituation.db2", &TransmogSituationLoadInfo::Instance); +DB2Storage sTransmogSituationGroupStore("TransmogSituationGroup.db2", &TransmogSituationGroupLoadInfo::Instance); +DB2Storage sTransmogSituationTriggerStore("TransmogSituationTrigger.db2", &TransmogSituationTriggerLoadInfo::Instance); DB2Storage sTransmogSetStore("TransmogSet.db2", &TransmogSetLoadInfo::Instance); DB2Storage sTransmogSetGroupStore("TransmogSetGroup.db2", &TransmogSetGroupLoadInfo::Instance); DB2Storage sTransmogSetItemStore("TransmogSetItem.db2", &TransmogSetItemLoadInfo::Instance); @@ -426,7 +432,6 @@ typedef std::unordered_map ItemChildEquipmentContainer; typedef std::array ItemClassByOldEnumContainer; typedef std::unordered_map> ItemLimitCategoryConditionContainer; -typedef std::unordered_map ItemModifiedAppearanceByItemContainer; typedef std::unordered_map> ItemSetSpellContainer; typedef std::unordered_map> ItemSpecOverridesContainer; typedef std::unordered_map> MapDifficultyContainer; @@ -505,7 +510,6 @@ namespace ItemClassByOldEnumContainer _itemClassByOldEnum; std::unordered_set _itemsWithCurrencyCost; ItemLimitCategoryConditionContainer _itemCategoryConditions; - ItemModifiedAppearanceByItemContainer _itemModifiedAppearancesByItem; ItemSetSpellContainer _itemSetSpells; ItemSpecOverridesContainer _itemSpecOverrides; std::vector _journalTiersByIndex; @@ -536,9 +540,6 @@ namespace TalentsByPosition _talentsByPosition; std::unordered_map, TaxiPathEntry const*> _taxiPaths; ToyItemIdsContainer _toys; - std::unordered_map _transmogIllusionsByEnchantmentId; - std::unordered_map> _transmogSetsByItemModifiedAppearance; - std::unordered_map> _transmogSetItemsByTransmogSet; std::unordered_map _uiMapBounds; std::unordered_multimap _uiMapAssignmentByMap[MAX_UI_MAP_SYSTEM]; std::unordered_multimap _uiMapAssignmentByArea[MAX_UI_MAP_SYSTEM]; @@ -1013,6 +1014,12 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul LOAD_DB2(sTraitTreeXTraitCurrencyStore); LOAD_DB2(sTransmogHolidayStore); LOAD_DB2(sTransmogIllusionStore); + LOAD_DB2(sTransmogOutfitEntryStore); + LOAD_DB2(sTransmogOutfitSlotInfoStore); + LOAD_DB2(sTransmogOutfitSlotOptionInfoStore); + LOAD_DB2(sTransmogSituationStore); + LOAD_DB2(sTransmogSituationGroupStore); + LOAD_DB2(sTransmogSituationTriggerStore); LOAD_DB2(sTransmogSetStore); LOAD_DB2(sTransmogSetGroupStore); LOAD_DB2(sTransmogSetItemStore); @@ -1359,12 +1366,6 @@ void DB2Manager::IndexLoadedStores() for (ItemLimitCategoryConditionEntry const* condition : sItemLimitCategoryConditionStore) _itemCategoryConditions[condition->ParentItemLimitCategoryID].push_back(condition); - for (ItemModifiedAppearanceEntry const* appearanceMod : sItemModifiedAppearanceStore) - { - ASSERT(appearanceMod->ItemID <= 0xFFFFFF); - _itemModifiedAppearancesByItem[appearanceMod->ItemID | (appearanceMod->ItemAppearanceModifierID << 24)] = appearanceMod; - } - for (ItemSetSpellEntry const* itemSetSpell : sItemSetSpellStore) _itemSetSpells[itemSetSpell->ItemSetID].push_back(itemSetSpell); @@ -1576,19 +1577,6 @@ void DB2Manager::IndexLoadedStores() for (ToyEntry const* toy : sToyStore) _toys.insert(toy->ItemID); - for (TransmogIllusionEntry const* transmogIllusion : sTransmogIllusionStore) - _transmogIllusionsByEnchantmentId[transmogIllusion->SpellItemEnchantmentID] = transmogIllusion; - - for (TransmogSetItemEntry const* transmogSetItem : sTransmogSetItemStore) - { - TransmogSetEntry const* set = sTransmogSetStore.LookupEntry(transmogSetItem->TransmogSetID); - if (!set) - continue; - - _transmogSetsByItemModifiedAppearance[transmogSetItem->ItemModifiedAppearanceID].push_back(set); - _transmogSetItemsByTransmogSet[transmogSetItem->TransmogSetID].push_back(transmogSetItem); - } - std::unordered_multimap uiMapAssignmentByUiMap; for (UiMapAssignmentEntry const* uiMapAssignment : sUiMapAssignmentStore) { @@ -2649,37 +2637,6 @@ std::vector const* DB2Manager::GetItemLi return Trinity::Containers::MapGetValuePtr(_itemCategoryConditions, categoryId); } -uint32 DB2Manager::GetItemDisplayId(uint32 itemId, uint32 appearanceModId) const -{ - if (ItemModifiedAppearanceEntry const* modifiedAppearance = GetItemModifiedAppearance(itemId, appearanceModId)) - if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(modifiedAppearance->ItemAppearanceID)) - return itemAppearance->ItemDisplayInfoID; - - return 0; -} - -ItemModifiedAppearanceEntry const* DB2Manager::GetItemModifiedAppearance(uint32 itemId, uint32 appearanceModId) const -{ - auto itr = _itemModifiedAppearancesByItem.find(itemId | (appearanceModId << 24)); - if (itr != _itemModifiedAppearancesByItem.end()) - return itr->second; - - // Fall back to unmodified appearance - if (appearanceModId) - { - itr = _itemModifiedAppearancesByItem.find(itemId); - if (itr != _itemModifiedAppearancesByItem.end()) - return itr->second; - } - - return nullptr; -} - -ItemModifiedAppearanceEntry const* DB2Manager::GetDefaultItemModifiedAppearance(uint32 itemId) const -{ - return Trinity::Containers::MapGetValuePtr(_itemModifiedAppearancesByItem, itemId); -} - std::vector const* DB2Manager::GetItemSetSpells(uint32 itemSetId) const { return Trinity::Containers::MapGetValuePtr(_itemSetSpells, itemSetId); @@ -3116,21 +3073,6 @@ bool DB2Manager::IsToyItem(uint32 toy) const return _toys.count(toy) > 0; } -TransmogIllusionEntry const* DB2Manager::GetTransmogIllusionForEnchantment(uint32 spellItemEnchantmentId) const -{ - return Trinity::Containers::MapGetValuePtr(_transmogIllusionsByEnchantmentId, spellItemEnchantmentId); -} - -std::vector const* DB2Manager::GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId) const -{ - return Trinity::Containers::MapGetValuePtr(_transmogSetsByItemModifiedAppearance, itemModifiedAppearanceId); -} - -std::vector const* DB2Manager::GetTransmogSetItems(uint32 transmogSetId) const -{ - return Trinity::Containers::MapGetValuePtr(_transmogSetItemsByTransmogSet, transmogSetId); -} - struct UiMapAssignmentStatus { UiMapAssignmentEntry const* UiMapAssignment = nullptr; diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 0c43a982b5ba4..da37df4d11ebf 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -306,6 +306,12 @@ TC_GAME_API extern DB2Storage sTraitTreeXT TC_GAME_API extern DB2Storage sTraitTreeXTraitCurrencyStore; TC_GAME_API extern DB2Storage sTransmogHolidayStore; TC_GAME_API extern DB2Storage sTransmogIllusionStore; +TC_GAME_API extern DB2Storage sTransmogOutfitEntryStore; +TC_GAME_API extern DB2Storage sTransmogOutfitSlotInfoStore; +TC_GAME_API extern DB2Storage sTransmogOutfitSlotOptionInfoStore; +TC_GAME_API extern DB2Storage sTransmogSituationStore; +TC_GAME_API extern DB2Storage sTransmogSituationGroupStore; +TC_GAME_API extern DB2Storage sTransmogSituationTriggerStore; TC_GAME_API extern DB2Storage sTransmogSetStore; TC_GAME_API extern DB2Storage sTransmogSetGroupStore; TC_GAME_API extern DB2Storage sTransmogSetItemStore; @@ -499,9 +505,6 @@ class TC_GAME_API DB2Manager ItemClassEntry const* GetItemClassByOldEnum(uint32 itemClass) const; bool HasItemCurrencyCost(uint32 itemId) const; std::vector const* GetItemLimitCategoryConditions(uint32 categoryId) const; - uint32 GetItemDisplayId(uint32 itemId, uint32 appearanceModId) const; - ItemModifiedAppearanceEntry const* GetItemModifiedAppearance(uint32 itemId, uint32 appearanceModId) const; - ItemModifiedAppearanceEntry const* GetDefaultItemModifiedAppearance(uint32 itemId) const; std::vector const* GetItemSetSpells(uint32 itemSetId) const; std::vector const* GetItemSpecOverrides(uint32 itemId) const; JournalTierEntry const* GetJournalTier(uint32 index) const; @@ -548,9 +551,6 @@ class TC_GAME_API DB2Manager TaxiPathEntry const* GetTaxiPath(uint32 from, uint32 to) const; static bool IsTotemCategoryCompatibleWith(uint32 itemTotemCategoryId, uint32 requiredTotemCategoryId, bool requireAllTotems = true); bool IsToyItem(uint32 toy) const; - TransmogIllusionEntry const* GetTransmogIllusionForEnchantment(uint32 spellItemEnchantmentId) const; - std::vector const* GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId) const; - std::vector const* GetTransmogSetItems(uint32 transmogSetId) const; static bool GetUiMapPosition(float x, float y, float z, int32 mapId, int32 areaId, int32 wmoDoodadPlacementId, int32 wmoGroupId, UiMapSystem system, bool local, uint32* uiMapId = nullptr, DBCPosition2D* newPos = nullptr); bool Zone2MapCoordinates(uint32 areaId, float& x, float& y) const; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 6bc353477cba2..c0371d272b689 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -4696,6 +4696,57 @@ struct TransmogIllusionEntry EnumFlag GetFlags() const { return static_cast(Flags); } }; +struct TransmogOutfitEntryEntry +{ + uint64 Cost; + LocalizedString Name; + uint32 ID; + int32 OrderIndex; + uint8 Source; + int32 Flags; + uint8 SetType; + float OverrideCostModifier; + + TransmogOutfitEntrySource GetSource() const { return static_cast(Source); } + bool HasFlag(TransmogOutfitEntryFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } + TransmogOutfitSetType GetSetType() const { return static_cast(SetType); } +}; + +struct TransmogOutfitSlotInfoEntry +{ + char const* InventorySlotName; + uint32 ID; + int8 TransmogOutfitSlotEnum; + int32 InventorySlotEnum; + int32 Flags; + uint8 Unused1200; + uint8 TransmogCollectionType; + int32 SecondarySlotID; + int32 InventorySlotID; + int32 UnassignedAtlasID; + int32 UnassignedDisplayAtlasID; + float ItemCostMultiplier; + float IllusionCostMultiplier; + + TransmogOutfitSlot GetSlot() const { return static_cast(TransmogOutfitSlotEnum); } + bool HasFlag(TransmogOutfitSlotFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } +}; + +struct TransmogOutfitSlotOptionEntry +{ + uint32 ID; + LocalizedString Name; + uint8 OptionEnum; + uint32 TransmogOutfitSlotInfoID; + int32 Flags; + int32 SecondaryOptionID; + float ItemCostMultiplier; + float IllusionCostMultiplier; + + TransmogOutfitSlotOption GetOption() const { return static_cast(OptionEnum); } + bool HasFlag(TransmogOutfitSlotOptionFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } +}; + struct TransmogSetEntry { LocalizedString Name; @@ -4727,6 +4778,39 @@ struct TransmogSetItemEntry int32 Flags; }; +struct TransmogSituationEntry +{ + LocalizedString Name; + uint32 ID; + int8 SituationEnum; + int32 Flags; + uint32 TransmogSituationGroupID; + int32 OrderIndex; + + TransmogSituation GetSituation() const { return static_cast(SituationEnum); } + bool HasFlag(TransmogSituationFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } +}; + +struct TransmogSituationGroupEntry +{ + uint32 ID; + uint32 TransmogSituationTriggerID; + int32 OrderIndex; + int32 Flags; +}; + +struct TransmogSituationTriggerEntry +{ + LocalizedString Name; + LocalizedString Description; + uint32 ID; + uint8 TriggerEnum; + int32 Flags; + + TransmogSituationTrigger GetTrigger() const { return static_cast(TriggerEnum); } + bool HasFlag(TransmogSituationTriggerFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } +}; + struct TransportAnimationEntry { uint32 ID; diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index cc7bd88004a32..0d0ea64cb3f66 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -2520,6 +2520,179 @@ enum class TransmogIllusionFlags : int32 DEFINE_ENUM_FLAG(TransmogIllusionFlags); +enum class TransmogOutfitDisplayType : uint8 +{ + Unassigned = 0, + Assigned = 1, + Equipped = 2, + Hidden = 3, + Disabled = 4, + + Max +}; + +enum class TransmogOutfitEquipAction : uint8 +{ + Equip = 0, + EquipAndLock = 1, + Remove = 2, + RemoveAndLock = 3, + Unlock = 4, + Lock = 5, +}; + +enum class TransmogOutfitEntryFlags : int32 +{ + AutomaticallyAwardedOnLogin = 0x01, + UseOverrideName = 0x02, + OnlyAvailableDuringEvent = 0x04, + SortedToTopOfList = 0x08, + UseOverrideCostModifier = 0x10, + IsDefaultEquipped = 0x20 +}; + +DEFINE_ENUM_FLAG(TransmogOutfitEntryFlags); + +enum class TransmogOutfitEntrySource : uint8 +{ + StampedSource = 0, + AutomaticallyAwarded = 1, + PlayerPurchased = 2, + + Max +}; + +enum class TransmogOutfitSetType : uint8 +{ + Equipped = 0, + Outfit = 1, + CustomSet = 2 +}; + +enum class TransmogOutfitSlot : int8 +{ + Head = 0, + ShoulderRight = 1, + ShoulderLeft = 2, + Back = 3, + Chest = 4, + Tabard = 5, + Body = 6, + Wrist = 7, + Hand = 8, + Waist = 9, + Legs = 10, + Feet = 11, + WeaponMainHand = 12, + WeaponOffHand = 13, + WeaponRanged = 14, + + Max +}; + +enum class TransmogOutfitSlotFlags : int32 +{ + CannotBeHidden = 0x01, + CanHaveIllusions = 0x02, + IsSecondarySlot = 0x04 +}; + +DEFINE_ENUM_FLAG(TransmogOutfitSlotFlags); + +enum class TransmogOutfitSlotOption : uint8 +{ + None = 0, + OneHandedWeapon = 1, + TwoHandedWeapon = 2, + RangedWeapon = 3, + OffHand = 4, + Shield = 5, + DeprecatedReuseMe = 6, + FuryTwoHandedWeapon = 7, + ArtifactSpecOne = 8, + ArtifactSpecTwo = 9, + ArtifactSpecThree = 10, + ArtifactSpecFour = 11, + + Max +}; + +enum class TransmogOutfitSlotOptionFlags : int32 +{ + IllusionNotAllowed = 0x01, + DynamicOptionName = 0x02, + DisablesOffhandSlot = 0x04 +}; + +DEFINE_ENUM_FLAG(TransmogOutfitSlotOptionFlags); + +enum class TransmogSituation : int8 +{ + AllSpecs = 0, + Spec = 1, + AllLocations = 2, + LocationRested = 3, + LocationHouse = 4, + LocationCharacterSelect = 5, + LocationWorld = 6, + LocationDelves = 7, + LocationDungeons = 8, + LocationRaids = 9, + LocationArenas = 10, + LocationBattlegrounds = 11, + AllMovement = 12, + MovementUnmounted = 13, + MovementSwimming = 14, + MovementGroundMount = 15, + MovementFlyingMount = 16, + AllEquipmentSets = 17, + EquipmentSets = 18, + AllRacialForms = 19, + FormNative = 20, + FormNonNative = 21, + + Max +}; + +enum class TransmogSituationFlags : int32 +{ + IsPlayerFacing = 0x01, + SpecUseTalentLoadout = 0x02, + AllSituation = 0x04, + DefaultsToOn = 0x08, + DynamicallyNamed = 0x10, + NoneSituation = 0x20, + DisabledSituation = 0x40 +}; + +DEFINE_ENUM_FLAG(TransmogSituationFlags); + +enum class TransmogSituationTrigger : uint8 +{ + None = 0, + Manual = 1, + TransmogUpdate = 2, + Location = 3, + Movement = 4, + Specialization = 5, + EquipmentSet = 6, + Forms = 7, + EventOutfit = 8, + + Max +}; + +enum class TransmogSituationTriggerFlags : int32 +{ + CanLockOutfit = 0x01, + CanChangeLockedOutfit = 0x02, + IsPlayerFacing = 0x04, + SituationsAreExclusive = 0x08, + DisabledTrigger = 0x10 +}; + +DEFINE_ENUM_FLAG(TransmogSituationTriggerFlags); + // SummonProperties.dbc, col 1 enum SummonPropGroup { diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 4566e09e504c7..89c4e33cd92e2 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -46,6 +46,7 @@ #include "SpellMgr.h" #include "StringConvert.h" #include "TradeData.h" +#include "TransmogMgr.h" #include "UpdateData.h" #include "World.h" #include "WorldSession.h" @@ -2010,51 +2011,6 @@ bool Item::IsValidTransmogrificationTarget() const return true; } -enum class ItemTransmogrificationWeaponCategory : uint8 -{ - // Two-handed - MELEE_2H, - RANGED, - - // One-handed - AXE_MACE_SWORD_1H, - DAGGER, - - INVALID -}; - -static ItemTransmogrificationWeaponCategory GetTransmogrificationWeaponCategory(ItemTemplate const* proto) -{ - if (proto->GetClass() == ITEM_CLASS_WEAPON) - { - switch (proto->GetSubClass()) - { - case ITEM_SUBCLASS_WEAPON_AXE2: - case ITEM_SUBCLASS_WEAPON_MACE2: - case ITEM_SUBCLASS_WEAPON_SWORD2: - case ITEM_SUBCLASS_WEAPON_STAFF: - case ITEM_SUBCLASS_WEAPON_POLEARM: - return ItemTransmogrificationWeaponCategory::MELEE_2H; - case ITEM_SUBCLASS_WEAPON_BOW: - case ITEM_SUBCLASS_WEAPON_GUN: - case ITEM_SUBCLASS_WEAPON_CROSSBOW: - return ItemTransmogrificationWeaponCategory::RANGED; - case ITEM_SUBCLASS_WEAPON_AXE: - case ITEM_SUBCLASS_WEAPON_MACE: - case ITEM_SUBCLASS_WEAPON_SWORD: - case ITEM_SUBCLASS_WEAPON_WARGLAIVES: - case ITEM_SUBCLASS_WEAPON_FIST_WEAPON: - return ItemTransmogrificationWeaponCategory::AXE_MACE_SWORD_1H; - case ITEM_SUBCLASS_WEAPON_DAGGER: - return ItemTransmogrificationWeaponCategory::DAGGER; - default: - break; - } - } - - return ItemTransmogrificationWeaponCategory::INVALID; -} - int32 const ItemTransmogrificationSlots[MAX_INVTYPE] = { -1, // INVTYPE_NON_EQUIP @@ -2124,7 +2080,7 @@ bool Item::CanTransmogrifyItemWithItem(Item const* item, ItemModifiedAppearanceE switch (source->GetClass()) { case ITEM_CLASS_WEAPON: - if (GetTransmogrificationWeaponCategory(source) != GetTransmogrificationWeaponCategory(target)) + if (source->GetWeaponTransmogOutfitSlotOption() != target->GetWeaponTransmogOutfitSlotOption()) return false; break; case ITEM_CLASS_ARMOR: @@ -2495,16 +2451,20 @@ uint32 Item::GetDisplayId(Player const* owner) const if (!itemModifiedAppearanceId) itemModifiedAppearanceId = GetModifier(ITEM_MODIFIER_TRANSMOG_APPEARANCE_ALL_SPECS); - if (ItemModifiedAppearanceEntry const* transmog = sItemModifiedAppearanceStore.LookupEntry(itemModifiedAppearanceId)) - if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(transmog->ItemAppearanceID)) + ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(itemModifiedAppearanceId); + if (!itemModifiedAppearance) + itemModifiedAppearance = GetItemModifiedAppearance(); + + if (itemModifiedAppearance) + if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(itemModifiedAppearance->ItemAppearanceID)) return itemAppearance->ItemDisplayInfoID; - return sDB2Manager.GetItemDisplayId(GetEntry(), GetAppearanceModId()); + return 0; } ItemModifiedAppearanceEntry const* Item::GetItemModifiedAppearance() const { - return sDB2Manager.GetItemModifiedAppearance(GetEntry(), _bonusData.AppearanceModID); + return TransmogMgr::GetItemModifiedAppearance(GetEntry(), _bonusData.AppearanceModID); } uint32 Item::GetModifier(ItemModifier modifier) const diff --git a/src/server/game/Entities/Item/ItemTemplate.cpp b/src/server/game/Entities/Item/ItemTemplate.cpp index b247dc88f8703..31580e0b68ece 100644 --- a/src/server/game/Entities/Item/ItemTemplate.cpp +++ b/src/server/game/Entities/Item/ItemTemplate.cpp @@ -297,3 +297,49 @@ std::size_t ItemTemplate::CalculateItemSpecBit(ChrSpecializationEntry const* spe { return (spec->ClassID - 1) * MAX_SPECIALIZATIONS + spec->OrderIndex; } + +TransmogOutfitSlotOption ItemTemplate::GetWeaponTransmogOutfitSlotOption() const +{ + switch (GetClass()) + { + case ITEM_CLASS_WEAPON: + switch (GetSubClass()) + { + case ITEM_SUBCLASS_WEAPON_AXE2: + case ITEM_SUBCLASS_WEAPON_MACE2: + case ITEM_SUBCLASS_WEAPON_SWORD2: + case ITEM_SUBCLASS_WEAPON_STAFF: + case ITEM_SUBCLASS_WEAPON_POLEARM: + return TransmogOutfitSlotOption::TwoHandedWeapon; + case ITEM_SUBCLASS_WEAPON_BOW: + case ITEM_SUBCLASS_WEAPON_GUN: + case ITEM_SUBCLASS_WEAPON_CROSSBOW: + return TransmogOutfitSlotOption::RangedWeapon; + case ITEM_SUBCLASS_WEAPON_AXE: + case ITEM_SUBCLASS_WEAPON_MACE: + case ITEM_SUBCLASS_WEAPON_SWORD: + case ITEM_SUBCLASS_WEAPON_WARGLAIVES: + case ITEM_SUBCLASS_WEAPON_FIST_WEAPON: + case ITEM_SUBCLASS_WEAPON_DAGGER: + return TransmogOutfitSlotOption::OneHandedWeapon; + default: + break; + } + break; + case ITEM_CLASS_ARMOR: + switch (GetInventoryType()) + { + case INVTYPE_SHIELD: + return TransmogOutfitSlotOption::Shield; + case INVTYPE_HOLDABLE: + return TransmogOutfitSlotOption::OffHand; + default: + break; + } + break; + default: + break; + } + + return TransmogOutfitSlotOption::None; +} diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index e86710e0b315b..3a8757407e692 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -967,6 +967,7 @@ struct TC_GAME_API ItemTemplate void GetDamage(uint32 itemLevel, float& minDamage, float& maxDamage) const; bool IsUsableByLootSpecialization(Player const* player, bool alwaysAllowBoundToAccount) const; static std::size_t CalculateItemSpecBit(ChrSpecializationEntry const* spec); + TransmogOutfitSlotOption GetWeaponTransmogOutfitSlotOption() const; }; #endif diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index fc6f13743aed6..0b8f82c65be81 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -882,7 +882,7 @@ void VisibleItem::WriteCreate(ByteBuffer& data, Player const* receiver, Unit con data << uint16(ItemAppearanceModID); data << uint16(ItemVisual); data << uint32(ItemModifiedAppearanceID); - data << uint8(Field_18); + data << uint8(TransmogSlotOption); data.WriteBit(HasTransmog); data.WriteBit(HasIllusion); data.FlushBits(); @@ -936,7 +936,7 @@ void VisibleItem::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player c } if (changesMask[9]) { - data << uint8(Field_18); + data << uint8(TransmogSlotOption); } } data.FlushBits(); @@ -952,7 +952,7 @@ void VisibleItem::ClearChangesMask() Base::ClearChangesMask(ItemAppearanceModID); Base::ClearChangesMask(ItemVisual); Base::ClearChangesMask(ItemModifiedAppearanceID); - Base::ClearChangesMask(Field_18); + Base::ClearChangesMask(TransmogSlotOption); _changesMask.ResetAll(); } @@ -5444,7 +5444,7 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag data << uint32(HouseThemes.size()); data << uint32(HouseRoomComponentTextures.size()); data << uint32(HouseTypes.size()); - data << uint32(Field_1980.size()); + data << uint32(UnlockedTransmogOutfits.size()); data << uint32(CharacterRestrictions.size()); data << uint32(SpellPctModByLabel.size()); data << uint32(SpellFlatModByLabel.size()); @@ -5563,9 +5563,9 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { data << uint32(HouseTypes[i]); } - for (uint32 i = 0; i < Field_1980.size(); ++i) + for (uint32 i = 0; i < UnlockedTransmogOutfits.size(); ++i) { - data << int32(Field_1980[i]); + data << int32(UnlockedTransmogOutfits[i]); } for (uint32 i = 0; i < SpellPctModByLabel.size(); ++i) { @@ -5979,9 +5979,9 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl if (changesMask[29]) { if (!ignoreNestedChangesMask) - Field_1980.WriteUpdateMask(data); + UnlockedTransmogOutfits.WriteUpdateMask(data); else - WriteCompleteDynamicFieldUpdateMask(Field_1980.size(), data); + WriteCompleteDynamicFieldUpdateMask(UnlockedTransmogOutfits.size(), data); } if (changesMask[30]) { @@ -6321,11 +6321,11 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl } if (changesMask[29]) { - for (uint32 i = 0; i < Field_1980.size(); ++i) + for (uint32 i = 0; i < UnlockedTransmogOutfits.size(); ++i) { - if (Field_1980.HasChanged(i) || ignoreNestedChangesMask) + if (UnlockedTransmogOutfits.HasChanged(i) || ignoreNestedChangesMask) { - data << int32(Field_1980[i]); + data << int32(UnlockedTransmogOutfits[i]); } } } @@ -7158,7 +7158,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(HouseThemes); Base::ClearChangesMask(HouseRoomComponentTextures); Base::ClearChangesMask(HouseTypes); - Base::ClearChangesMask(Field_1980); + Base::ClearChangesMask(UnlockedTransmogOutfits); Base::ClearChangesMask(SpellPctModByLabel); Base::ClearChangesMask(SpellFlatModByLabel); Base::ClearChangesMask(SpellPctModPVPByLabel); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 602f2740a567d..2f51ad0ade422 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -262,7 +262,7 @@ struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<10> UpdateField ItemAppearanceModID; UpdateField ItemVisual; UpdateField ItemModifiedAppearanceID; - UpdateField Field_18; + UpdateField TransmogSlotOption; using OwnerObject = Unit; void WriteCreate(ByteBuffer& data, Player const* receiver, Unit const* owner) const; @@ -1311,7 +1311,7 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas DynamicUpdateField HouseThemes; DynamicUpdateField HouseRoomComponentTextures; DynamicUpdateField HouseTypes; - DynamicUpdateField Field_1980; + DynamicUpdateField UnlockedTransmogOutfits; DynamicUpdateField SpellPctModByLabel; DynamicUpdateField SpellFlatModByLabel; DynamicUpdateField SpellPctModPVPByLabel; diff --git a/src/server/game/Entities/Player/CollectionMgr.cpp b/src/server/game/Entities/Player/CollectionMgr.cpp index 299cc3885d1a2..d12f5673b4dd2 100644 --- a/src/server/game/Entities/Player/CollectionMgr.cpp +++ b/src/server/game/Entities/Player/CollectionMgr.cpp @@ -26,6 +26,7 @@ #include "ObjectMgr.h" #include "Player.h" #include "Timer.h" +#include "TransmogMgr.h" #include "TransmogrificationPackets.h" #include "WorldSession.h" #include @@ -95,12 +96,36 @@ namespace } } -CollectionMgr::CollectionMgr(WorldSession* owner) : _owner(owner), _appearances(std::make_unique>()), _transmogIllusions(std::make_unique>()) +CollectionMgr::CollectionMgr(WorldSession* owner) : _owner(owner), + _appearances(std::make_unique>()), + _transmogIllusions(std::make_unique>()) { } CollectionMgr::~CollectionMgr() = default; +void CollectionMgr::LoadCharacterData() +{ + LoadToys(); + LoadHeirlooms(); + LoadMounts(); + LoadItemAppearances(); + LoadTransmogIllusions(); + LoadTransmogOutfits(); + LoadWarbandScenes(); +} + +void CollectionMgr::SaveToDB(LoginDatabaseTransaction trans) +{ + SaveAccountToys(trans); + SaveAccountHeirlooms(trans); + SaveAccountMounts(trans); + SaveAccountItemAppearances(trans); + SaveAccountTransmogIllusions(trans); + SaveAccountTransmogOutfits(trans); + SaveAccountWarbandScenes(trans); +} + void CollectionMgr::LoadToys() { for (auto const& [itemId, flags] : _toys) @@ -529,7 +554,7 @@ void CollectionMgr::LoadAccountItemAppearances(PreparedQueryResult knownAppearan for (uint32 hiddenItem : hiddenAppearanceItems) { - ItemModifiedAppearanceEntry const* hiddenAppearance = sDB2Manager.GetItemModifiedAppearance(hiddenItem, 0); + ItemModifiedAppearanceEntry const* hiddenAppearance = TransmogMgr::GetDefaultItemModifiedAppearance(hiddenItem); ASSERT(hiddenAppearance); if (_appearances->size() <= hiddenAppearance->ID) _appearances->resize(hiddenAppearance->ID + 1); @@ -603,7 +628,7 @@ void CollectionMgr::AddItemAppearance(Item* item) void CollectionMgr::AddItemAppearance(uint32 itemId, uint32 appearanceModId /*= 0*/) { - ItemModifiedAppearanceEntry const* itemModifiedAppearance = sDB2Manager.GetItemModifiedAppearance(itemId, appearanceModId); + ItemModifiedAppearanceEntry const* itemModifiedAppearance = TransmogMgr::GetItemModifiedAppearance(itemId, appearanceModId); if (!CanAddAppearance(itemModifiedAppearance)) return; @@ -612,11 +637,7 @@ void CollectionMgr::AddItemAppearance(uint32 itemId, uint32 appearanceModId /*= void CollectionMgr::AddTransmogSet(uint32 transmogSetId) { - std::vector const* items = sDB2Manager.GetTransmogSetItems(transmogSetId); - if (!items) - return; - - for (TransmogSetItemEntry const* item : *items) + for (TransmogSetItemEntry const* item : TransmogMgr::GetTransmogSetItems(transmogSetId)) { ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(item->ItemModifiedAppearanceID); if (!itemModifiedAppearance) @@ -628,13 +649,13 @@ void CollectionMgr::AddTransmogSet(uint32 transmogSetId) bool CollectionMgr::IsSetCompleted(uint32 transmogSetId) const { - std::vector const* transmogSetItems = sDB2Manager.GetTransmogSetItems(transmogSetId); - if (!transmogSetItems) + std::span transmogSetItems = TransmogMgr::GetTransmogSetItems(transmogSetId); + if (transmogSetItems.empty()) return false; std::array knownPieces; knownPieces.fill(-1); - for (TransmogSetItemEntry const* transmogSetItem : *transmogSetItems) + for (TransmogSetItemEntry const* transmogSetItem : transmogSetItems) { ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(transmogSetItem->ItemModifiedAppearanceID); if (!itemModifiedAppearance) @@ -756,18 +777,14 @@ void CollectionMgr::AddItemAppearance(ItemModifiedAppearanceEntry const* itemMod owner->UpdateCriteria(CriteriaType::LearnAnyTransmogInSlot, transmogSlot, itemModifiedAppearance->ID); } - if (std::vector const* sets = sDB2Manager.GetTransmogSetsForItemModifiedAppearance(itemModifiedAppearance->ID)) + for (TransmogSetEntry const* set : TransmogMgr::GetTransmogSetsForItemModifiedAppearance(itemModifiedAppearance->ID)) { - for (TransmogSetEntry const* set : *sets) + if (IsSetCompleted(set->ID)) { - if (IsSetCompleted(set->ID)) - { - - if (Quest const* quest = sObjectMgr->GetQuestTemplate(set->TrackingQuestID)) - owner->RewardQuest(quest, LootItemType::Item, 0, owner, false); + if (Quest const* quest = sObjectMgr->GetQuestTemplate(set->TrackingQuestID)) + owner->RewardQuest(quest, LootItemType::Item, 0, owner, false); - owner->UpdateCriteria(CriteriaType::CollectTransmogSetFromGroup, set->TransmogSetGroupID); - } + owner->UpdateCriteria(CriteriaType::CollectTransmogSetFromGroup, set->TransmogSetGroupID); } } } @@ -966,6 +983,55 @@ bool CollectionMgr::HasTransmogIllusion(uint32 transmogIllusionId) const return transmogIllusionId < _transmogIllusions->size() && _transmogIllusions->test(transmogIllusionId); } +void CollectionMgr::LoadTransmogOutfits() +{ + _owner->GetPlayer()->AddUnlockedTransmogOutfits(_transmogOutfits); +} + +void CollectionMgr::LoadAccountTransmogOutfits(PreparedQueryResult unlockedTransmogOutfits) +{ + if (unlockedTransmogOutfits) + { + do + { + Field* fields = unlockedTransmogOutfits->Fetch(); + + int32 transmogOutfitId = fields[0].GetInt32(); + + if (!sTransmogOutfitEntryStore.HasRecord(transmogOutfitId)) + continue; + + _transmogOutfits.insert(transmogOutfitId); + + } while (unlockedTransmogOutfits->NextRow()); + } + + for (TransmogOutfitEntryEntry const* transmogOutfitEntry : TransmogMgr::GetAutomaticallyUnlockedOutfits()) + _transmogOutfits.insert(transmogOutfitEntry->ID); +} + +void CollectionMgr::SaveAccountTransmogOutfits(LoginDatabaseTransaction trans) +{ + for (int32 transmogOutfitId : _transmogOutfits) + { + LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_INS_BNET_TRANSMOG_OUTFITS); + stmt->setUInt32(0, _owner->GetBattlenetAccountId()); + stmt->setInt32(1, transmogOutfitId); + trans->Append(stmt); + } +} + +void CollectionMgr::AddTransmogOutfit(int32 transmogOutfitId) +{ + if (_transmogOutfits.insert(transmogOutfitId).second) + _owner->GetPlayer()->AddUnlockedTransmogOutfit(transmogOutfitId); +} + +bool CollectionMgr::HasTransmogOutfit(int32 transmogOutfitId) const +{ + return _transmogOutfits.contains(transmogOutfitId); +} + void CollectionMgr::LoadWarbandScenes() { Player* owner = _owner->GetPlayer(); diff --git a/src/server/game/Entities/Player/CollectionMgr.h b/src/server/game/Entities/Player/CollectionMgr.h index 9b17eb0c8bf6f..2eb0e81de88a9 100644 --- a/src/server/game/Entities/Player/CollectionMgr.h +++ b/src/server/game/Entities/Player/CollectionMgr.h @@ -21,6 +21,7 @@ #include "Define.h" #include "DatabaseEnvFwd.h" #include "EnumFlag.h" +#include "FlatSet.h" #include "ObjectGuid.h" #include #include @@ -117,6 +118,9 @@ class TC_GAME_API CollectionMgr static void LoadMountDefinitions(); static void LoadWarbandSceneDefinitions(); + void LoadCharacterData(); + void SaveToDB(LoginDatabaseTransaction trans); + // Account-wide toys void LoadToys(); void LoadAccountToys(PreparedQueryResult result); @@ -179,6 +183,12 @@ class TC_GAME_API CollectionMgr void AddTransmogIllusion(uint32 transmogIllusionId); bool HasTransmogIllusion(uint32 transmogIllusionId) const; + void LoadTransmogOutfits(); + void LoadAccountTransmogOutfits(PreparedQueryResult unlockedTransmogOutfits); + void SaveAccountTransmogOutfits(LoginDatabaseTransaction trans); + void AddTransmogOutfit(int32 transmogOutfitId); + bool HasTransmogOutfit(int32 transmogOutfitId) const; + // Warband Scenes void LoadWarbandScenes(); void LoadAccountWarbandScenes(PreparedQueryResult knownWarbandScenes); @@ -204,6 +214,7 @@ class TC_GAME_API CollectionMgr std::unordered_map> _temporaryAppearances; std::unordered_map _favoriteAppearances; std::unique_ptr> _transmogIllusions; + Trinity::Containers::FlatSet _transmogOutfits; WarbandSceneCollectionContainer _warbandScenes; }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3f5a86662d027..70534d6b5f589 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -131,6 +131,8 @@ #include "TradeData.h" #include "TraitMgr.h" #include "TraitPacketsCommon.h" +#include "TransmogMgr.h" +#include "TransmogrificationPackets.h" #include "Transport.h" #include "UpdateData.h" #include "Util.h" @@ -559,6 +561,8 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac GetThreatManager().Initialize(); + EquipTransmogOutfit(0, TransmogSituationTrigger::Manual, false); + return true; } @@ -4146,6 +4150,18 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe stmt->setUInt64(0, guid); trans->Append(stmt); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFIT_SITUATION_BY_CHAR); + stmt->setUInt64(0, guid); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFIT_SLOT_BY_CHAR); + stmt->setUInt64(0, guid); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_TRANSMOG_OUTFIT_BY_CHAR); + stmt->setUInt64(0, guid); + trans->Append(stmt); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GUILD_EVENTLOG_BY_PLAYER); stmt->setUInt64(0, guid); stmt->setUInt64(1, guid); @@ -4521,19 +4537,10 @@ Corpse* Player::CreateCorpse() corpse->SetFactionTemplate(sChrRacesStore.AssertEntry(GetRace())->FactionID); for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; i++) - { - if (m_items[i]) - { - uint32 itemDisplayId = m_items[i]->GetDisplayId(this); - uint32 itemInventoryType; - if (ItemEntry const* itemEntry = sItemStore.LookupEntry(m_items[i]->GetVisibleEntry(this))) - itemInventoryType = itemEntry->InventoryType; - else - itemInventoryType = m_items[i]->GetTemplate()->GetInventoryType(); - - corpse->SetItem(i, itemDisplayId | (itemInventoryType << 24)); - } - } + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(m_playerData->VisibleItems[i].ItemModifiedAppearanceID)) + if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(itemModifiedAppearance->ItemAppearanceID)) + if (ItemEntry const* item = sItemStore.LookupEntry(itemModifiedAppearance->ItemID)) + corpse->SetItem(i, itemAppearance->ItemDisplayInfoID | int32(item->InventoryType) << 24); // register for player, but not show GetMap()->AddCorpse(corpse); @@ -6176,6 +6183,7 @@ bool Player::IsActionButtonDataValid(uint8 button, uint64 action, uint8 type) co case ACTION_BUTTON_MACRO: case ACTION_BUTTON_EQSET: case ACTION_BUTTON_DROPDOWN: + case ACTION_BUTTON_OUTFIT: break; default: TC_LOG_ERROR("entities.player", "Player::IsActionButtonDataValid: Unknown action type {}", type); @@ -11825,25 +11833,123 @@ void Player::QuickEquipItem(uint16 pos, Item* pItem) } } -void Player::SetVisibleItemSlot(uint8 slot, Item* pItem) +void Player::SetVisibleItemSlot(uint8 slot, Item const* item) { - auto itemField = m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::VisibleItems, slot); - if (pItem) + auto setVisibleItemSlot = [this](uint32 slot, int32 itemId, int32 secondaryItemModifiedAppearanceId, int32 conditionalItemAppearanceId, + uint16 itemAppearanceModId, uint16 itemVisual, uint32 itemModifiedAppearanceId, TransmogOutfitSlotOption transmogSlotOption, + bool hasTransmog, bool hasIllusion) { - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemID), pItem->GetVisibleEntry(this)); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::SecondaryItemModifiedAppearanceID), pItem->GetVisibleSecondaryModifiedAppearanceId(this)); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemAppearanceModID), pItem->GetVisibleAppearanceModId(this)); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemVisual), pItem->GetVisibleItemVisual(this)); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemModifiedAppearanceID), pItem->GetVisibleModifiedAppearanceId(this)); - } - else + auto itemField = m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::VisibleItems, slot); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemID), itemId); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::SecondaryItemModifiedAppearanceID), secondaryItemModifiedAppearanceId); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ConditionalItemAppearanceID), conditionalItemAppearanceId); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemAppearanceModID), itemAppearanceModId); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemVisual), itemVisual); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemModifiedAppearanceID), itemModifiedAppearanceId); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::TransmogSlotOption), AsUnderlyingType(transmogSlotOption)); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::HasTransmog), hasTransmog); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::HasIllusion), hasIllusion); + + auto transmogMetadata = m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TransmogMetadata); + if (slot == EQUIPMENT_SLOT_MAINHAND) + SetUpdateFieldValue(transmogMetadata.ModifyValue(&UF::TransmogOutfitMetadata::StampedOptionMainHand), AsUnderlyingType(transmogSlotOption)); + else if (slot == EQUIPMENT_SLOT_OFFHAND) + SetUpdateFieldValue(transmogMetadata.ModifyValue(&UF::TransmogOutfitMetadata::StampedOptionOffHand), AsUnderlyingType(transmogSlotOption)); + }; + + if (item) { - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemID), 0); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::SecondaryItemModifiedAppearanceID), 0); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemAppearanceModID), 0); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemVisual), 0); - SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemModifiedAppearanceID), 0); + TransmogOutfitSlotOption transmogSlotOption = item->GetTemplate()->GetWeaponTransmogOutfitSlotOption(); + if (transmogSlotOption == TransmogOutfitSlotOption::TwoHandedWeapon && CanTitanGrip()) + transmogSlotOption = TransmogOutfitSlotOption::FuryTwoHandedWeapon; + + int32 itemId = item->GetVisibleEntry(this); + int32 secondaryItemModifiedAppearanceId = item->GetVisibleSecondaryModifiedAppearanceId(this); + int32 conditionalItemAppearanceId = 0; + uint16 itemAppearanceModId = item->GetVisibleAppearanceModId(this); + uint16 itemVisual = item->GetVisibleItemVisual(this); + uint32 itemModifiedAppearanceId = item->GetVisibleModifiedAppearanceId(this); + bool hasTransmog = false; + bool hasIllusion = false; + + if (!m_activePlayerData->ViewedOutfit->Slots.empty()) + { + TransmogMgr::TransmogOutfitSlotAndOptionInfo const* slotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), transmogSlotOption); + if (transmogSlotOption != TransmogOutfitSlotOption::None) + { + // check if artifact override is active + TransmogOutfitSlotOption artifactOption = static_cast(AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + GetPrimarySpecializationEntry()->OrderIndex); + TransmogMgr::TransmogOutfitSlotAndOptionInfo const* artifactSlotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), artifactOption); + if (artifactSlotInfo && static_cast(*m_activePlayerData->ViewedOutfit->Slots[artifactSlotInfo->SlotIndex].AppearanceDisplayType) == TransmogOutfitDisplayType::Assigned) + { + transmogSlotOption = artifactOption; + slotInfo = artifactSlotInfo; + } + } + + if (slotInfo) + { + auto isTransmogDisplayed = [](TransmogOutfitDisplayType displayType) + { + return displayType == TransmogOutfitDisplayType::Assigned || displayType == TransmogOutfitDisplayType::Hidden; + }; + + UF::TransmogOutfitSlotData const& transmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex]; + if (isTransmogDisplayed(static_cast(*transmogOutfitItem.AppearanceDisplayType))) + { + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(transmogOutfitItem.ItemModifiedAppearanceID)) + { + itemId = itemModifiedAppearance->ItemID; + itemAppearanceModId = itemModifiedAppearance->ItemAppearanceModifierID; + itemModifiedAppearanceId = itemModifiedAppearance->ID; + } + + hasTransmog = true; + } + + if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) + { + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) + { + UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]; + if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) + || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) + { + secondaryItemModifiedAppearanceId = secondaryTransmogOutfitItem.ItemModifiedAppearanceID; + hasTransmog = true; + } + } + } + + if (TransmogOutfitSlotOptionEntry const* secondarySlotOption = sTransmogOutfitSlotOptionInfoStore.LookupEntry(slotInfo->SlotOption ? slotInfo->SlotOption->SecondaryOptionID : 0)) + { + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(slotInfo->Slot->GetSlot(), secondarySlotOption->GetOption())) + { + UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]; + if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) + || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) + { + secondaryItemModifiedAppearanceId = secondaryTransmogOutfitItem.ItemModifiedAppearanceID; + hasTransmog = true; + } + } + } + + if (isTransmogDisplayed(static_cast(*transmogOutfitItem.IllusionDisplayType))) + { + if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(transmogOutfitItem.SpellItemEnchantmentID)) + itemVisual = spellItemEnchantment->ItemVisual; + + hasIllusion = true; + } + } + } + + setVisibleItemSlot(slot, itemId, secondaryItemModifiedAppearanceId, conditionalItemAppearanceId, itemAppearanceModId, + itemVisual, itemModifiedAppearanceId, transmogSlotOption, hasTransmog, hasIllusion); } + else + setVisibleItemSlot(slot, 0, 0, 0, 0, 0, 0, TransmogOutfitSlotOption::None, false, false); } void Player::VisualizeItem(uint8 slot, Item* pItem) @@ -17579,7 +17685,7 @@ void Player::_LoadEquipmentSets(PreparedQueryResult result) } while (result->NextRow()); } -void Player::_LoadTransmogOutfits(PreparedQueryResult result) +void Player::_LoadTransmogCustomSets(PreparedQueryResult result) { // 0 1 2 3 4 5 6 7 8 9 //SELECT setguid, setindex, name, iconname, ignore_mask, appearance0, appearance1, appearance2, appearance3, appearance4, @@ -17616,6 +17722,153 @@ void Player::_LoadTransmogOutfits(PreparedQueryResult result) } while (result->NextRow()); } +void Player::_LoadTransmogOutfits(PreparedQueryResult setsResult, PreparedQueryResult situationsResult, PreparedQueryResult slotsResult, + int32 equippedTransmogOutfitId, bool locked) +{ + struct SetData + { + std::vector situations; + std::vector slots; + }; + + std::unordered_map sets; + + // SELECT transmogOutfitId, situationID, specID, loadoutID, equipmentSetID FROM character_transmog_outfit_situation WHERE guid = ? + if (situationsResult) + { + do + { + DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(PreparedResultSet, (transmogOutfitId)(situationID)(specID)(loadoutID)(equipmentSetID)) fields { *situationsResult }; + + uint32 transmogOutfitId = fields.transmogOutfitId().GetUInt32(); + + WorldPackets::Transmogrification::TransmogOutfitSituationInfo& situation = sets[transmogOutfitId].situations.emplace_back(); + situation.SituationID = fields.situationID().GetUInt32(); + situation.SpecID = fields.specID().GetUInt32(); + situation.LoadoutID = fields.loadoutID().GetUInt32(); + situation.EquipmentSetID = fields.equipmentSetID().GetUInt32(); + + } while (situationsResult->NextRow()); + } + + // SELECT transmogOutfitId, slot, slotOption, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags FROM character_transmog_outfit_slot guid = ? + if (slotsResult) + { + do + { + DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(PreparedResultSet, (transmogOutfitId)(slot)(slotOption)(itemModifiedAppearanceID)(appearanceDisplayType) + (spellItemEnchantmentID)(illusionDisplayType)(flags)) fields { *slotsResult }; + + uint32 transmogOutfitId = fields.transmogOutfitId().GetUInt32(); + + WorldPackets::Transmogrification::TransmogOutfitSlotData& slot = sets[transmogOutfitId].slots.emplace_back(); + slot.Slot = static_cast(fields.slot().GetInt8()); + slot.SlotOption = static_cast(fields.slotOption().GetUInt8()); + slot.ItemModifiedAppearanceID = fields.itemModifiedAppearanceID().GetUInt32(); + slot.AppearanceDisplayType = static_cast(fields.appearanceDisplayType().GetUInt8()); + slot.SpellItemEnchantmentID = fields.spellItemEnchantmentID().GetUInt32(); + slot.IllusionDisplayType = static_cast(fields.illusionDisplayType().GetUInt8()); + slot.Flags = fields.flags().GetUInt32(); + + } while (slotsResult->NextRow()); + } + + auto activePlayerData = m_values.ModifyValue(&Player::m_activePlayerData); + + // SELECT transmogOutfitId, name, icon, situationsEnabled FROM character_transmog_outfit WHERE guid = ? + if (setsResult) + { + do + { + DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(PreparedResultSet, (transmogOutfitId)(name)(icon)(situationsEnabled)) fields { *setsResult }; + + uint32 transmogOutfitId = fields.transmogOutfitId().GetUInt32(); + TransmogOutfitEntryEntry const* transmogOutfitEntry = sTransmogOutfitEntryStore.LookupEntry(transmogOutfitId); + if (!transmogOutfitEntry || transmogOutfitEntry->GetSetType() == TransmogOutfitSetType::CustomSet) + continue; + + if (transmogOutfitEntry->HasFlag(TransmogOutfitEntryFlags::OnlyAvailableDuringEvent) && !IsHolidayActive(HOLIDAY_TRIAL_OF_STYLE)) + continue; + + WorldPackets::Transmogrification::TransmogOutfitDataInfo outfitInfo; + outfitInfo.SetType = transmogOutfitEntry->GetSetType(); + outfitInfo.Name = fields.name().GetString(); + outfitInfo.Icon = fields.icon().GetUInt32(); + outfitInfo.SituationsEnabled = fields.situationsEnabled().GetBool(); + + auto transmogOutfit = activePlayerData.ModifyValue(&UF::ActivePlayerData::TransmogOutfits, transmogOutfitId); + InitializeNewTransmogOutfit(transmogOutfit, transmogOutfitId, outfitInfo); + + auto setData = sets.extract(transmogOutfitId); + if (!setData) + continue; + + auto situations = transmogOutfit.ModifyValue(&UF::TransmogOutfitData::Situations); + ClearDynamicUpdateFieldValues(situations); + for (WorldPackets::Transmogrification::TransmogOutfitSituationInfo const& situationInfo : setData.mapped().situations) + { + auto situation = AddDynamicUpdateFieldValue(situations); + situation.ModifyValue(&UF::TransmogOutfitSituationInfo::SituationID).SetValue(situationInfo.SituationID); + situation.ModifyValue(&UF::TransmogOutfitSituationInfo::SpecID).SetValue(situationInfo.SpecID); + situation.ModifyValue(&UF::TransmogOutfitSituationInfo::LoadoutID).SetValue(situationInfo.LoadoutID); + situation.ModifyValue(&UF::TransmogOutfitSituationInfo::EquipmentSetID).SetValue(situationInfo.EquipmentSetID); + } + + for (WorldPackets::Transmogrification::TransmogOutfitSlotData const& slotData : setData.mapped().slots) + { + TransmogMgr::TransmogOutfitSlotAndOptionInfo const* slotInfo = TransmogMgr::GetSlotAndOption(slotData.Slot, slotData.SlotOption); + if (!slotInfo) + continue; + + auto slot = transmogOutfit.ModifyValue(&UF::TransmogOutfitData::Slots, slotInfo->SlotIndex); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::Slot), AsUnderlyingType(slotData.Slot)); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::SlotOption), AsUnderlyingType(slotData.SlotOption)); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::ItemModifiedAppearanceID), slotData.ItemModifiedAppearanceID); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType), AsUnderlyingType(slotData.AppearanceDisplayType)); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::SpellItemEnchantmentID), slotData.SpellItemEnchantmentID); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::IllusionDisplayType), AsUnderlyingType(slotData.IllusionDisplayType)); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::Flags), slotData.Flags); + } + } while (setsResult->NextRow()); + } + + for (int32 transmogOutfitId : m_activePlayerData->UnlockedTransmogOutfits) + { + TransmogOutfitEntryEntry const* transmogOutfitEntry = sTransmogOutfitEntryStore.AssertEntry(transmogOutfitId); + + if (transmogOutfitEntry->HasFlag(TransmogOutfitEntryFlags::OnlyAvailableDuringEvent) && !IsHolidayActive(HOLIDAY_TRIAL_OF_STYLE)) + continue; + + WorldPackets::Transmogrification::TransmogOutfitDataInfo outfitData; + outfitData.SetType = transmogOutfitEntry->GetSetType(); + outfitData.SituationsEnabled = false; + outfitData.Icon = TransmogMgr::DefaultOutfitIcon; + outfitData.Name = TransmogMgr::DefaultOutfitName[GetSession()->GetSessionDbcLocale()]; + if (transmogOutfitEntry->Name.Str[GetSession()->GetSessionDbcLocale()][0]) + outfitData.Name = transmogOutfitEntry->Name.Str[GetSession()->GetSessionDbcLocale()]; + + switch (transmogOutfitEntry->GetSetType()) + { + case TransmogOutfitSetType::Equipped: + { + outfitData.SituationsEnabled = true; + auto equippedOutfit = activePlayerData.ModifyValue(&UF::ActivePlayerData::ViewedOutfit); + InitializeNewTransmogOutfit(equippedOutfit, transmogOutfitId, outfitData); + break; + } + case TransmogOutfitSetType::Outfit: + if (!m_activePlayerData->TransmogOutfits.Get(transmogOutfitId)) + CreateTransmogOutfit(transmogOutfitId, outfitData); + break; + case TransmogOutfitSetType::CustomSet: + default: + break; + } + } + + EquipTransmogOutfit(equippedTransmogOutfitId, TransmogSituationTrigger::Manual, locked); +} + void Player::_LoadBGData(PreparedQueryResult result) { if (!result) @@ -17717,7 +17970,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol // "totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, " // "health, power1, power2, power3, power4, power5, power6, power7, power8, power9, power10, instance_id, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, " // "raidDifficulty, legacyRaidDifficulty, fishingSteps, honor, honorLevel, honorRestState, honorRestBonus, numRespecs, " - // "personalTabardEmblemStyle, personalTabardEmblemColor, personalTabardBorderStyle, personalTabardBorderColor, personalTabardBackgroundColor " + // "personalTabardEmblemStyle, personalTabardEmblemColor, personalTabardBorderStyle, personalTabardBorderColor, personalTabardBackgroundColor, transmogOutfitEquippedId, transmogOutfitLocked " // "FROM characters c LEFT JOIN character_fishingsteps cfs ON c.guid = cfs.guid WHERE c.guid = ?", CONNECTION_ASYNC); ObjectGuid::LowType guid; @@ -17795,6 +18048,8 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol int32 personalTabardBorderStyle; int32 personalTabardBorderColor; int32 personalTabardBackgroundColor; + int32 transmogOutfitEquippedId; + bool transmogOutfitLocked; explicit PlayerLoadData(Field const* fields) { @@ -17876,6 +18131,8 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol personalTabardBorderStyle = fields[i++].GetInt32(); personalTabardBorderColor = fields[i++].GetInt32(); personalTabardBackgroundColor = fields[i++].GetInt32(); + transmogOutfitEquippedId = fields[i++].GetInt32(); + transmogOutfitLocked = fields[i++].GetBool(); } } fields(result->Fetch()); @@ -18379,12 +18636,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol _LoadTalents(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TALENTS)); _LoadPvpTalents(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_PVP_TALENTS)); _LoadSpells(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_SPELLS), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_SPELL_FAVORITES)); - GetSession()->GetCollectionMgr()->LoadToys(); - GetSession()->GetCollectionMgr()->LoadHeirlooms(); - GetSession()->GetCollectionMgr()->LoadMounts(); - GetSession()->GetCollectionMgr()->LoadItemAppearances(); - GetSession()->GetCollectionMgr()->LoadTransmogIllusions(); - GetSession()->GetCollectionMgr()->LoadWarbandScenes(); + GetSession()->GetCollectionMgr()->LoadCharacterData(); LearnSpecializationSpells(); @@ -18560,6 +18812,9 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol } } + if (extraflags & PLAYER_EXTRA_FLAG_FREE_TRANSMOG_CLAIMED) + SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_FREE_TRANSMOG_CLAIMED); + InitPvP(); // RaF stuff. @@ -18569,7 +18824,11 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol _LoadDeclinedNames(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES)); _LoadEquipmentSets(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS)); - _LoadTransmogOutfits(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS)); + _LoadTransmogCustomSets(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS)); + _LoadTransmogOutfits(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT), + holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SITUATION), + holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SLOT), + fields.transmogOutfitEquippedId, fields.transmogOutfitLocked); _LoadCUFProfiles(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CUF_PROFILES)); @@ -20314,27 +20573,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba } stmt->setString(index++, ss.str()); - ss.str(""); - // cache equipment... - for (uint32 i = 0; i < REAGENT_BAG_SLOT_END; ++i) - { - if (Item* item = GetItemByPos(INVENTORY_SLOT_BAG_0, i)) - { - ss << uint32(item->GetTemplate()->GetInventoryType()) << ' ' << item->GetDisplayId(this) << ' '; - if (SpellItemEnchantmentEntry const* enchant = sSpellItemEnchantmentStore.LookupEntry(item->GetVisibleEnchantmentId(this))) - ss << enchant->ItemVisual; - else - ss << '0'; - - ss << ' ' - << uint32(sItemStore.AssertEntry(item->GetVisibleEntry(this))->SubclassID) << ' ' - << uint32(item->GetVisibleSecondaryModifiedAppearanceId(this)) << ' '; - } - else - ss << "0 0 0 0 0 "; - } - - stmt->setString(index++, ss.str()); + stmt->setString(index++, GetCharacterSelectOutfit()); ss.str(""); for (uint32 i = 0; i < m_activePlayerData->KnownTitles.size(); ++i) @@ -20349,6 +20588,14 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba stmt->setUInt32(index++, ClientBuild::GetMinorMajorBugfixVersionForBuild(currentRealm->Build)); else stmt->setUInt32(index++, 0); + + stmt->setInt32(index++, m_playerData->PersonalTabard->EmblemStyle); + stmt->setInt32(index++, m_playerData->PersonalTabard->EmblemColor); + stmt->setInt32(index++, m_playerData->PersonalTabard->BorderStyle); + stmt->setInt32(index++, m_playerData->PersonalTabard->BorderColor); + stmt->setInt32(index++, m_playerData->PersonalTabard->BackgroundColor); + stmt->setInt32(index++, m_activePlayerData->TransmogMetadata->TransmogOutfitID); + stmt->setBool(index++, m_activePlayerData->TransmogMetadata->Locked); } else { @@ -20473,27 +20720,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba } stmt->setString(index++, ss.str()); - ss.str(""); - // cache equipment... - for (uint32 i = 0; i < REAGENT_BAG_SLOT_END; ++i) - { - if (Item* item = GetItemByPos(INVENTORY_SLOT_BAG_0, i)) - { - ss << uint32(item->GetTemplate()->GetInventoryType()) << ' ' << item->GetDisplayId(this) << ' '; - if (SpellItemEnchantmentEntry const* enchant = sSpellItemEnchantmentStore.LookupEntry(item->GetVisibleEnchantmentId(this))) - ss << enchant->ItemVisual; - else - ss << '0'; - - ss << ' ' - << uint32(sItemStore.AssertEntry(item->GetVisibleEntry(this))->SubclassID) << ' ' - << uint32(item->GetVisibleSecondaryModifiedAppearanceId(this)) << ' '; - } - else - ss << "0 0 0 0 0 "; - } - - stmt->setString(index++, ss.str()); + stmt->setString(index++, GetCharacterSelectOutfit()); ss.str(""); for (uint32 i = 0; i < m_activePlayerData->KnownTitles.size(); ++i) @@ -20515,6 +20742,14 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba else stmt->setUInt32(index++, 0); + stmt->setInt32(index++, m_playerData->PersonalTabard->EmblemStyle); + stmt->setInt32(index++, m_playerData->PersonalTabard->EmblemColor); + stmt->setInt32(index++, m_playerData->PersonalTabard->BorderStyle); + stmt->setInt32(index++, m_playerData->PersonalTabard->BorderColor); + stmt->setInt32(index++, m_playerData->PersonalTabard->BackgroundColor); + stmt->setInt32(index++, m_activePlayerData->TransmogMetadata->TransmogOutfitID); + stmt->setBool(index++, m_activePlayerData->TransmogMetadata->Locked); + // Index stmt->setUInt64(index, GetGUID().GetCounter()); } @@ -20554,6 +20789,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba m_reputationMgr->SaveToDB(trans); m_questObjectiveCriteriaMgr->SaveToDB(trans); _SaveEquipmentSets(trans); + _SaveTransmogOutfits(trans); GetSession()->SaveTutorialsData(trans); // changed only while character in game _SaveInstanceTimeRestrictions(trans); _SaveCurrency(trans); @@ -20569,13 +20805,8 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba _SaveStats(trans); // TODO: Move this out - GetSession()->GetCollectionMgr()->SaveAccountToys(loginTransaction); + GetSession()->GetCollectionMgr()->SaveToDB(loginTransaction); GetSession()->GetBattlePetMgr()->SaveToDB(loginTransaction); - GetSession()->GetCollectionMgr()->SaveAccountHeirlooms(loginTransaction); - GetSession()->GetCollectionMgr()->SaveAccountMounts(loginTransaction); - GetSession()->GetCollectionMgr()->SaveAccountItemAppearances(loginTransaction); - GetSession()->GetCollectionMgr()->SaveAccountTransmogIllusions(loginTransaction); - GetSession()->GetCollectionMgr()->SaveAccountWarbandScenes(loginTransaction); GetSession()->SavePlayerDataAccount(loginTransaction); Battlenet::RealmHandle currentRealmId = sRealmList->GetCurrentRealmId(); @@ -28047,6 +28278,71 @@ void Player::_SaveEquipmentSets(CharacterDatabaseTransaction trans) } } +void Player::_SaveTransmogOutfits(CharacterDatabaseTransaction trans) +{ + CharacterDatabasePreparedStatement* stmt = nullptr; + ObjectGuid::LowType guid = GetGUID().GetCounter(); + + for (uint32 transmogOutfitId : m_changedTransmogOutfits) + { + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_TRANSMOG_OUTFIT_SLOT); + stmt->setUInt64(0, guid); + stmt->setUInt32(1, transmogOutfitId); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_TRANSMOG_OUTFIT_SITUATION); + stmt->setUInt64(0, guid); + stmt->setUInt32(1, transmogOutfitId); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_TRANSMOG_OUTFIT_2); + stmt->setUInt64(0, guid); + stmt->setUInt32(1, transmogOutfitId); + trans->Append(stmt); + + UF::TransmogOutfitData const* transmogOutfit = m_activePlayerData->TransmogOutfits.Get(transmogOutfitId); + if (!transmogOutfit) + continue; + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_TRANSMOG_OUTFIT_2); + stmt->setUInt64(0, guid); + stmt->setUInt32(1, transmogOutfitId); + stmt->setString(2, *transmogOutfit->OutfitInfo->Name); + stmt->setUInt32(3, *transmogOutfit->OutfitInfo->Icon); + stmt->setBool(4, *transmogOutfit->OutfitInfo->SituationsEnabled); + trans->Append(stmt); + + for (UF::TransmogOutfitSituationInfo const& situation : transmogOutfit->Situations) + { + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_TRANSMOG_OUTFIT_SITUATION); + stmt->setUInt64(0, guid); + stmt->setUInt32(1, transmogOutfitId); + stmt->setUInt32(2, *situation.SituationID); + stmt->setUInt32(3, *situation.SpecID); + stmt->setUInt32(4, *situation.LoadoutID); + stmt->setUInt32(5, *situation.EquipmentSetID); + trans->Append(stmt); + } + + for (UF::TransmogOutfitSlotData const& slot : transmogOutfit->Slots) + { + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_TRANSMOG_OUTFIT_SLOT); + stmt->setUInt64(0, guid); + stmt->setUInt32(1, transmogOutfitId); + stmt->setInt8(2, *slot.Slot); + stmt->setUInt8(3, *slot.SlotOption); + stmt->setUInt32(4, *slot.ItemModifiedAppearanceID); + stmt->setUInt8(5, *slot.AppearanceDisplayType); + stmt->setUInt32(6, *slot.SpellItemEnchantmentID); + stmt->setUInt8(7, *slot.IllusionDisplayType); + stmt->setUInt32(8, *slot.Flags); + trans->Append(stmt); + } + } + + m_changedTransmogOutfits.clear(); +} + void Player::_SaveBGData(CharacterDatabaseTransaction trans) { CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_BGDATA); @@ -30891,6 +31187,308 @@ void Player::UpdateWarModeAuras() } } +void Player::AddUnlockedTransmogOutfits(std::span transmogOutfitIds) +{ + auto unlockedTransmogOutfits = m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::UnlockedTransmogOutfits); + for (int32 transmogOutfitId : transmogOutfitIds) + AddDynamicUpdateFieldValue(unlockedTransmogOutfits) = transmogOutfitId; +} + +void Player::CreateTransmogOutfit(uint32 id, WorldPackets::Transmogrification::TransmogOutfitDataInfo const& outfitData) +{ + auto outfit = m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TransmogOutfits, id); + InitializeNewTransmogOutfit(outfit, id, outfitData); + m_changedTransmogOutfits.insert(id); +} + +void Player::InitializeNewTransmogOutfit(UF::MutableFieldReference outfit, + uint32 id, WorldPackets::Transmogrification::TransmogOutfitDataInfo const& outfitData) +{ + SetUpdateFieldValue(outfit.ModifyValue(&UF::TransmogOutfitData::Id), id); + + auto outfitInfo = outfit.ModifyValue(&UF::TransmogOutfitData::OutfitInfo); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::SetType), AsUnderlyingType(outfitData.SetType)); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::SituationsEnabled), outfitData.SituationsEnabled); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::Icon), outfitData.Icon); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::Name), std::string(outfitData.Name)); + + auto situations = outfit.ModifyValue(&UF::TransmogOutfitData::Situations); + for (TransmogSituationEntry const* defaultSituation : TransmogMgr::GetDefaultSituations()) + { + auto situation = AddDynamicUpdateFieldValue(situations); + situation.ModifyValue(&UF::TransmogOutfitSituationInfo::SituationID).SetValue(defaultSituation->ID); + } + + auto slots = outfit.ModifyValue(&UF::TransmogOutfitData::Slots); + for (TransmogMgr::TransmogOutfitSlotAndOptionInfo const& slotInfo : TransmogMgr::GetAllSlots()) + { + auto slot = AddDynamicUpdateFieldValue(slots); + slot.ModifyValue(&UF::TransmogOutfitSlotData::Slot).SetValue(AsUnderlyingType(slotInfo.Slot->GetSlot())); + + if (slotInfo.SlotOption) + { + slot.ModifyValue(&UF::TransmogOutfitSlotData::SlotOption).SetValue(AsUnderlyingType(slotInfo.SlotOption->GetOption())); + + switch (slotInfo.SlotOption->GetOption()) + { + case TransmogOutfitSlotOption::ArtifactSpecOne: + case TransmogOutfitSlotOption::ArtifactSpecTwo: + case TransmogOutfitSlotOption::ArtifactSpecThree: + case TransmogOutfitSlotOption::ArtifactSpecFour: + // artifacts are disabled by default + slot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType).SetValue(AsUnderlyingType(TransmogOutfitDisplayType::Disabled)); + slot.ModifyValue(&UF::TransmogOutfitSlotData::IllusionDisplayType).SetValue(AsUnderlyingType(TransmogOutfitDisplayType::Disabled)); + break; + default: + break; + } + } + } +} + +bool Player::UpdateTransmogOutfit(uint32 id, WorldPackets::Transmogrification::TransmogOutfitDataInfo const& outfitData) +{ + if (!m_activePlayerData->TransmogOutfits.Get(id)) + return false; + + auto outfitInfo = m_values.ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::TransmogOutfits, id) + .ModifyValue(&UF::TransmogOutfitData::OutfitInfo); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::SetType), AsUnderlyingType(outfitData.SetType)); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::SituationsEnabled), outfitData.SituationsEnabled); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::Icon), outfitData.Icon); + SetUpdateFieldValue(outfitInfo.ModifyValue(&UF::TransmogOutfitDataInfo::Name), std::string(outfitData.Name)); + + m_changedTransmogOutfits.insert(id); + return true; +} + +void Player::UpdateTransmogOutfitSituations(uint32 id, bool situationsEnabled, std::span situations) +{ + auto outfit = m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::TransmogOutfits, id); + SetUpdateFieldValue(outfit.ModifyValue(&UF::TransmogOutfitData::OutfitInfo).ModifyValue(&UF::TransmogOutfitDataInfo::SituationsEnabled), situationsEnabled); + + auto outfitSituations = outfit.ModifyValue(&UF::TransmogOutfitData::Situations); + + ClearDynamicUpdateFieldValues(outfitSituations); + + for (WorldPackets::Transmogrification::TransmogOutfitSituationInfo const& situation : situations) + { + auto outfitSituation = AddDynamicUpdateFieldValue(outfitSituations); + outfitSituation.ModifyValue(&UF::TransmogOutfitSituationInfo::SituationID).SetValue(situation.SituationID); + outfitSituation.ModifyValue(&UF::TransmogOutfitSituationInfo::SpecID).SetValue(situation.SpecID); + outfitSituation.ModifyValue(&UF::TransmogOutfitSituationInfo::LoadoutID).SetValue(situation.LoadoutID); + outfitSituation.ModifyValue(&UF::TransmogOutfitSituationInfo::EquipmentSetID).SetValue(situation.EquipmentSetID); + } + + m_changedTransmogOutfits.insert(id); +} + +void Player::UpdateTransmogOutfitSlots(uint32 id, std::span slots) +{ + UF::TransmogOutfitData const* transmogOutfit = m_activePlayerData->TransmogOutfits.Get(id); + if (!transmogOutfit) + return; + + auto outfit = m_values.ModifyValue(&Player::m_activePlayerData) + .ModifyValue(&UF::ActivePlayerData::TransmogOutfits, id); + + uint32 outfitSlotIndex = 0; + for (WorldPackets::Transmogrification::TransmogOutfitSlotData const& slot : slots) + { + while (std::pair(*transmogOutfit->Slots[outfitSlotIndex].Slot, *transmogOutfit->Slots[outfitSlotIndex].SlotOption) < std::pair(AsUnderlyingType(slot.Slot), AsUnderlyingType(slot.SlotOption))) + if (++outfitSlotIndex >= transmogOutfit->Slots.size()) + return; + + auto viewedOutfitSlot = outfit.ModifyValue(&UF::TransmogOutfitData::Slots, outfitSlotIndex); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::Slot), AsUnderlyingType(slot.Slot)); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SlotOption), AsUnderlyingType(slot.SlotOption)); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::ItemModifiedAppearanceID), slot.ItemModifiedAppearanceID); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType), AsUnderlyingType(slot.AppearanceDisplayType)); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SpellItemEnchantmentID), slot.SpellItemEnchantmentID); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::IllusionDisplayType), AsUnderlyingType(slot.IllusionDisplayType)); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::Flags), slot.Flags); + } + + m_changedTransmogOutfits.insert(id); +} + +void Player::EquipTransmogOutfit(uint32 id, TransmogSituationTrigger trigger, Optional locked) +{ + auto activePlayerData = m_values.ModifyValue(&Player::m_activePlayerData); + + auto transmogMetadata = activePlayerData.ModifyValue(&UF::ActivePlayerData::TransmogMetadata); + SetUpdateFieldValue(transmogMetadata.ModifyValue(&UF::TransmogOutfitMetadata::TransmogOutfitID), id); + SetUpdateFieldValue(transmogMetadata.ModifyValue(&UF::TransmogOutfitMetadata::SituationTrigger), AsUnderlyingType(trigger)); + if (locked.has_value()) + SetUpdateFieldValue(transmogMetadata.ModifyValue(&UF::TransmogOutfitMetadata::Locked), *locked); + + auto viewedOutfit = activePlayerData.ModifyValue(&UF::ActivePlayerData::ViewedOutfit); + + if (UF::TransmogOutfitData const* transmogOutfit = m_activePlayerData->TransmogOutfits.Get(id)) + { + for (UF::TransmogOutfitSlotData const& slot : transmogOutfit->Slots) + { + uint32 slotIndex = TransmogMgr::GetSlotAndOption(static_cast(*slot.Slot), static_cast(*slot.SlotOption))->SlotIndex; + auto viewedOutfitSlot = viewedOutfit.ModifyValue(&UF::TransmogOutfitData::Slots, slotIndex); + if (static_cast(*slot.AppearanceDisplayType) != TransmogOutfitDisplayType::Unassigned) + { + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::ItemModifiedAppearanceID), slot.ItemModifiedAppearanceID); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType), slot.AppearanceDisplayType); + } + if (static_cast(*slot.IllusionDisplayType) != TransmogOutfitDisplayType::Unassigned) + { + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SpellItemEnchantmentID), slot.SpellItemEnchantmentID); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::IllusionDisplayType), slot.IllusionDisplayType); + } + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::Flags), slot.Flags); + } + } + else + { + for (TransmogMgr::TransmogOutfitSlotAndOptionInfo const& slotInfo : TransmogMgr::GetAllSlots()) + { + auto viewedOutfitSlot = viewedOutfit.ModifyValue(&UF::TransmogOutfitData::Slots, slotInfo.SlotIndex); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::Slot), AsUnderlyingType(slotInfo.Slot->GetSlot())); + + TransmogOutfitSlotOption slotOption = slotInfo.SlotOption ? slotInfo.SlotOption->GetOption() : TransmogOutfitSlotOption::None; + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SlotOption), AsUnderlyingType(slotOption)); + + if (Item const* item = GetItemByPos(INVENTORY_SLOT_BAG_0, slotInfo.Slot->InventorySlotEnum)) + { + if (item->GetTemplate()->GetWeaponTransmogOutfitSlotOption() == slotOption) + { + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = item->GetItemModifiedAppearance()) + { + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::ItemModifiedAppearanceID), itemModifiedAppearance->ID); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType), AsUnderlyingType(TransmogOutfitDisplayType::Equipped)); + } + } + } + + switch (slotOption) + { + case TransmogOutfitSlotOption::ArtifactSpecOne: + case TransmogOutfitSlotOption::ArtifactSpecTwo: + case TransmogOutfitSlotOption::ArtifactSpecThree: + case TransmogOutfitSlotOption::ArtifactSpecFour: + // artifacts are disabled by default + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType), AsUnderlyingType(TransmogOutfitDisplayType::Disabled)); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::IllusionDisplayType), AsUnderlyingType(TransmogOutfitDisplayType::Disabled)); + break; + case TransmogOutfitSlotOption::None: + break; + default: + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::IllusionDisplayType), AsUnderlyingType(TransmogOutfitDisplayType::Equipped)); + break; + } + } + } + + for (uint8 equipSlot = EQUIPMENT_SLOT_START; equipSlot < EQUIPMENT_SLOT_END; ++equipSlot) + SetVisibleItemSlot(equipSlot, GetItemByPos(INVENTORY_SLOT_BAG_0, equipSlot)); +} + +std::string Player::GetCharacterSelectOutfit() const +{ + std::vector outfits; + for (auto const& [_, transmogOutfit] : m_activePlayerData->TransmogOutfits) + { + if (!transmogOutfit.value.OutfitInfo->SituationsEnabled) + continue; + + bool isCharacterSelect = transmogOutfit.value.Situations.FindIndexIf([](UF::TransmogOutfitSituationInfo const& situation) + { + return sTransmogSituationStore.AssertEntry(situation.SituationID)->GetSituation() == TransmogSituation::LocationCharacterSelect; + }) >= 0; + + if (!isCharacterSelect) + continue; + + outfits.push_back(&transmogOutfit.value); + } + + UF::TransmogOutfitData const* outfit = &*m_activePlayerData->ViewedOutfit; + if (!outfits.empty()) + outfit = Trinity::Containers::SelectRandomContainerElement(outfits); + + auto isTransmogDisplayed = [](TransmogOutfitDisplayType displayType) + { + return displayType == TransmogOutfitDisplayType::Assigned || displayType == TransmogOutfitDisplayType::Hidden; + }; + + std::string result; + for (EquipmentSlots i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; i = EquipmentSlots(i + 1)) + { + TransmogOutfitSlotOption transmogSlotOption = TransmogOutfitSlotOption::None; + switch (i) + { + case EQUIPMENT_SLOT_MAINHAND: + transmogSlotOption = static_cast(m_activePlayerData->TransmogMetadata->StampedOptionMainHand); + break; + case EQUIPMENT_SLOT_OFFHAND: + transmogSlotOption = static_cast(m_activePlayerData->TransmogMetadata->StampedOptionOffHand); + break; + default: + break; + } + + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* slotInfo = TransmogMgr::GetSlotAndOption(i, transmogSlotOption)) + { + UF::TransmogOutfitSlotData const& transmogOutfitSlot = outfit->Slots[slotInfo->SlotIndex]; + + uint32 itemModifiedAppearanceId = transmogOutfitSlot.ItemModifiedAppearanceID; + if (!isTransmogDisplayed(static_cast(*transmogOutfitSlot.AppearanceDisplayType))) + itemModifiedAppearanceId = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex].ItemModifiedAppearanceID; + + uint32 spellItemEnchantmentId = transmogOutfitSlot.SpellItemEnchantmentID; + if (!isTransmogDisplayed(static_cast(*transmogOutfitSlot.IllusionDisplayType))) + spellItemEnchantmentId = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex].SpellItemEnchantmentID; + + InventoryType inventoryType = INVTYPE_NON_EQUIP; + int32 displayId = 0; + uint16 itemVisual = 0; + uint8 subClass = 0; + uint32 secondaryItemModifiedAppearanceId = 0; + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(itemModifiedAppearanceId)) + { + if (ItemEntry const* item = sItemStore.LookupEntry(itemModifiedAppearance->ItemID)) + { + subClass = item->SubclassID; + inventoryType = static_cast(item->InventoryType); + } + + if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(itemModifiedAppearance->ItemAppearanceID)) + displayId = itemAppearance->ItemDisplayInfoID; + } + + if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(spellItemEnchantmentId)) + itemVisual = spellItemEnchantment->ItemVisual; + + if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) + { + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) + { + UF::TransmogOutfitSlotData const& secondaryTransmogOutfitSlot = outfit->Slots[secondarySlotInfo->SlotIndex]; + + secondaryItemModifiedAppearanceId = secondaryTransmogOutfitSlot.ItemModifiedAppearanceID; + if (!isTransmogDisplayed(static_cast(*secondaryTransmogOutfitSlot.AppearanceDisplayType))) + secondaryItemModifiedAppearanceId = m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex].ItemModifiedAppearanceID; + } + } + + Trinity::StringFormatTo(std::back_inserter(result), "{} {} {} {} {} ", inventoryType, displayId, itemVisual, subClass, secondaryItemModifiedAppearanceId); + } + else + result += "0 0 0 0 0 "sv; + } + + for (uint32 i = EQUIPMENT_SLOT_END; i < REAGENT_BAG_SLOT_END; ++i) + result += "0 0 0 0 0 "sv; + + return result; +} + void Player::OnPhaseChange() { Unit::OnPhaseChange(); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 16bd13ff595be..5381cfccd642f 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -135,6 +135,13 @@ namespace WorldPackets struct TraitConfig; struct TraitEntry; } + + namespace Transmogrification + { + struct TransmogOutfitDataInfo; + struct TransmogOutfitSituationInfo; + struct TransmogOutfitSlotData; + } } TC_GAME_API uint32 GetBagSize(Bag const* bag); @@ -334,7 +341,8 @@ enum ActionButtonType ACTION_BUTTON_CMACRO = ACTION_BUTTON_C | ACTION_BUTTON_MACRO, ACTION_BUTTON_COMPANION = 0x50, ACTION_BUTTON_MOUNT = 0x60, - ACTION_BUTTON_ITEM = 0x80 + ACTION_BUTTON_ITEM = 0x80, + ACTION_BUTTON_OUTFIT = 0x90 }; enum class HonorGainSource : uint8 @@ -548,6 +556,7 @@ enum PlayerLocalFlags PLAYER_LOCAL_FLAG_CHARACTER_BANK_DISABLED = 0x00080000, PLAYER_LOCAL_FLAG_CHARACTER_BANK_CONVERSION_FAILED = 0x00100000, PLAYER_LOCAL_FLAG_ACCOUNT_BANK_DISABLED = 0x00200000, + PLAYER_LOCAL_FLAG_FREE_TRANSMOG_CLAIMED = 0x00400000, }; DEFINE_ENUM_FLAG(PlayerLocalFlags); @@ -586,6 +595,8 @@ enum PlayerExtraFlags PLAYER_EXTRA_HAS_RACE_CHANGED = 0x0200, PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF = 0x0400, PLAYER_EXTRA_LEVEL_BOOSTED = 0x0800, + + PLAYER_EXTRA_FLAG_FREE_TRANSMOG_CLAIMED = 0x1000, }; // 2^n values @@ -937,6 +948,9 @@ enum PlayerLoginQueryIndex PLAYER_LOGIN_QUERY_LOAD_ACHIEVEMENTS, PLAYER_LOGIN_QUERY_LOAD_CRITERIA_PROGRESS, PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS, + PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT, + PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SITUATION, + PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SLOT, PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS, PLAYER_LOGIN_QUERY_LOAD_BG_DATA, PLAYER_LOGIN_QUERY_LOAD_GLYPHS, @@ -1264,6 +1278,8 @@ class TC_GAME_API Player final : public Unit, public GridObject void SetBeenGrantedLevelsFromRaF() { m_ExtraFlags |= PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF; } bool HasLevelBoosted() const { return (m_ExtraFlags & PLAYER_EXTRA_LEVEL_BOOSTED) != 0; } void SetHasLevelBoosted() { m_ExtraFlags |= PLAYER_EXTRA_LEVEL_BOOSTED; } + bool HasClaimedFreeTransmog() const { return (m_ExtraFlags & PLAYER_EXTRA_FLAG_FREE_TRANSMOG_CLAIMED) != 0; } + void SetHasClaimedFreeTransmog() { m_ExtraFlags |= PLAYER_EXTRA_FLAG_FREE_TRANSMOG_CLAIMED; } uint32 GetXP() const { return m_activePlayerData->XP; } uint32 GetXPForNextLevel() const { return m_activePlayerData->NextLevelXP; } @@ -1550,7 +1566,7 @@ class TC_GAME_API Player final : public Unit, public GridObject void ApplyEquipCooldown(Item* pItem); void QuickEquipItem(uint16 pos, Item* pItem); void VisualizeItem(uint8 slot, Item* pItem); - void SetVisibleItemSlot(uint8 slot, Item* pItem); + void SetVisibleItemSlot(uint8 slot, Item const* item); Item* BankItem(ItemPosCountVec const& dest, Item* pItem, bool update); void RemoveItem(uint8 bag, uint8 slot, bool update); void MoveItemFromInventory(uint8 bag, uint8 slot, bool update); @@ -2987,6 +3003,18 @@ class TC_GAME_API Player final : public Unit, public GridObject bool CanEnableWarModeInArea() const; void UpdateWarModeAuras(); + void AddUnlockedTransmogOutfits(std::span transmogOutfitIds); + void AddUnlockedTransmogOutfit(int32 transmogOutfitIds) { AddUnlockedTransmogOutfits(std::span(&transmogOutfitIds, 1)); } + + void CreateTransmogOutfit(uint32 id, WorldPackets::Transmogrification::TransmogOutfitDataInfo const& outfitData); + void InitializeNewTransmogOutfit(UF::MutableFieldReference outfit, + uint32 id, WorldPackets::Transmogrification::TransmogOutfitDataInfo const& outfitData); + bool UpdateTransmogOutfit(uint32 id, WorldPackets::Transmogrification::TransmogOutfitDataInfo const& outfitData); + void UpdateTransmogOutfitSituations(uint32 id, bool situationsEnabled, std::span situations); + void UpdateTransmogOutfitSlots(uint32 id, std::span slots); + void EquipTransmogOutfit(uint32 id, TransmogSituationTrigger trigger, Optional locked); + std::string GetCharacterSelectOutfit() const; + std::string GetDebugInfo() const override; UF::UpdateField m_playerData; @@ -3075,7 +3103,9 @@ class TC_GAME_API Player final : public Unit, public GridObject void _LoadDeclinedNames(PreparedQueryResult result); void _LoadArenaTeamInfo(PreparedQueryResult result); void _LoadEquipmentSets(PreparedQueryResult result); - void _LoadTransmogOutfits(PreparedQueryResult result); + void _LoadTransmogCustomSets(PreparedQueryResult result); + void _LoadTransmogOutfits(PreparedQueryResult setsResult, PreparedQueryResult situationsResult, PreparedQueryResult slotsResult, + int32 equippedTransmogOutfitId, bool locked); void _LoadBGData(PreparedQueryResult result); void _LoadGlyphs(PreparedQueryResult result); void _LoadTalents(PreparedQueryResult result); @@ -3106,6 +3136,7 @@ class TC_GAME_API Player final : public Unit, public GridObject void _SaveSpells(CharacterDatabaseTransaction trans); void _SaveStoredAuraTeleportLocations(CharacterDatabaseTransaction trans); void _SaveEquipmentSets(CharacterDatabaseTransaction trans); + void _SaveTransmogOutfits(CharacterDatabaseTransaction trans); void _SaveBGData(CharacterDatabaseTransaction trans); void _SaveGlyphs(CharacterDatabaseTransaction trans) const; void _SaveTalents(CharacterDatabaseTransaction trans); @@ -3254,6 +3285,7 @@ class TC_GAME_API Player final : public Unit, public GridObject std::unique_ptr m_runes; EquipmentSetContainer _equipmentSets; + std::set m_changedTransmogOutfits; bool CanNeverSee(WorldObject const* obj, bool ignorePhaseShift = false) const override; bool CanAlwaysSee(WorldObject const* obj) const override; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 3126b09860030..dc23ab27c269c 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -70,6 +70,7 @@ #include "TerrainMgr.h" #include "ThreadPool.h" #include "Timer.h" +#include "TransmogMgr.h" #include "TransportMgr.h" #include "VMapFactory.h" #include "VMapManager.h" @@ -1509,12 +1510,12 @@ void ObjectMgr::LoadEquipmentTemplates() } // AppearanceModId 0 is always valid - if (equipmentInfo.Items[i].AppearanceModId && !sDB2Manager.GetItemModifiedAppearance(equipmentInfo.Items[i].ItemId, equipmentInfo.Items[i].AppearanceModId)) + if (equipmentInfo.Items[i].AppearanceModId && !TransmogMgr::GetItemModifiedAppearance(equipmentInfo.Items[i].ItemId, equipmentInfo.Items[i].AppearanceModId)) { TC_LOG_ERROR("sql.sql", "Unknown item appearance for (ID={}, AppearanceModID={}) pair in creature_equip_template.ItemID{} creature_equip_template.AppearanceModID{} " "for CreatureID = {} and ID={}, forced to default.", equipmentInfo.Items[i].ItemId, equipmentInfo.Items[i].AppearanceModId, i + 1, i + 1, entry, id); - if (ItemModifiedAppearanceEntry const* defaultAppearance = sDB2Manager.GetDefaultItemModifiedAppearance(equipmentInfo.Items[i].ItemId)) + if (ItemModifiedAppearanceEntry const* defaultAppearance = TransmogMgr::GetDefaultItemModifiedAppearance(equipmentInfo.Items[i].ItemId)) equipmentInfo.Items[i].AppearanceModId = defaultAppearance->ItemAppearanceModifierID; else equipmentInfo.Items[i].AppearanceModId = 0; diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 842b6cb845e1f..d9f29ada31dda 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -61,6 +61,7 @@ #include "SocialMgr.h" #include "StringConvert.h" #include "SystemPackets.h" +#include "TransmogMgr.h" #include "Util.h" #include "World.h" #include @@ -257,6 +258,18 @@ bool LoginQueryHolder::Initialize() stmt->setUInt64(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS, stmt); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT); + stmt->setUInt64(0, lowGuid); + res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT, stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SITUATION); + stmt->setUInt64(0, lowGuid); + res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SITUATION, stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SLOT); + stmt->setUInt64(0, lowGuid); + res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SLOT, stmt); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_CUF_PROFILES); stmt->setUInt64(0, lowGuid); res &= SetPreparedQuery(PLAYER_LOGIN_QUERY_LOAD_CUF_PROFILES, stmt); @@ -2047,10 +2060,7 @@ void WorldSession::HandleEquipmentSetSave(WorldPackets::EquipmentSet::SaveEquipm auto validateIllusion = [this](uint32 enchantId) -> bool { SpellItemEnchantmentEntry const* illusion = sSpellItemEnchantmentStore.LookupEntry(enchantId); - if (!illusion) - return false; - - if (!illusion->ItemVisual || !illusion->GetFlags().HasFlag(SpellItemEnchantmentFlags::AllowTransmog)) + if (!illusion || !TransmogMgr::GetTransmogIllusionForSpellItemEnchantment(enchantId)) return false; if (!ConditionMgr::IsPlayerMeetingCondition(_player, illusion->TransmogUseConditionID)) diff --git a/src/server/game/Handlers/TransmogrificationHandler.cpp b/src/server/game/Handlers/TransmogrificationHandler.cpp index 5e89574464716..36f16228409fe 100644 --- a/src/server/game/Handlers/TransmogrificationHandler.cpp +++ b/src/server/game/Handlers/TransmogrificationHandler.cpp @@ -23,6 +23,7 @@ #include "NPCPackets.h" #include "ObjectMgr.h" #include "Player.h" +#include "TransmogMgr.h" #include "TransmogrificationPackets.h" void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::TransmogrifyItems& transmogrifyItems) @@ -128,7 +129,7 @@ void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::Tra return; } - TransmogIllusionEntry const* illusion = sDB2Manager.GetTransmogIllusionForEnchantment(transmogItem.SpellItemEnchantmentID); + TransmogIllusionEntry const* illusion = TransmogMgr::GetTransmogIllusionForSpellItemEnchantment(transmogItem.SpellItemEnchantmentID); if (!illusion) { TC_LOG_DEBUG("network", "WORLD: HandleTransmogrifyItems - {}, Name: {} tried to transmogrify illusion using invalid enchant ({}).", player->GetGUID().ToString(), player->GetName(), transmogItem.SpellItemEnchantmentID); @@ -326,6 +327,283 @@ void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::Tra } } +void WorldSession::HandleTransmogOutfitNew(WorldPackets::Transmogrification::TransmogOutfitNew const& transmogOutfitNew) +{ + if (!_player->GetNPCIfCanInteractWith(transmogOutfitNew.Npc, UNIT_NPC_FLAG_TRANSMOGRIFIER, UNIT_NPC_FLAG_2_NONE)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - {} not found or player can't interact with it.", + GetPlayerInfo(), transmogOutfitNew.Npc); + return; + } + + _player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); + + if (transmogOutfitNew.Source != TransmogOutfitEntrySource::PlayerPurchased) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - source {} not allowed.", + GetPlayerInfo(), transmogOutfitNew.Source); + return; + } + + if (transmogOutfitNew.Info.SetType != TransmogOutfitSetType::Outfit) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - set type {} not allowed.", + GetPlayerInfo(), transmogOutfitNew.Info.SetType); + return; + } + + TransmogOutfitEntryEntry const* transmogOutfitEntry = TransmogMgr::GetNextOutfitToUnlock(transmogOutfitNew.Source, _player); + if (!transmogOutfitEntry) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - no next unlockable outfit entry found for source {}.", + GetPlayerInfo(), transmogOutfitNew.Source); + return; + } + + if (!_player->HasEnoughMoney(transmogOutfitEntry->Cost)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - not enough money.", + GetPlayerInfo()); + return; + } + + GetCollectionMgr()->AddTransmogOutfit(transmogOutfitEntry->ID); + _player->CreateTransmogOutfit(transmogOutfitEntry->ID, transmogOutfitNew.Info); + _player->ModifyMoney(-int64(transmogOutfitEntry->Cost)); + + WorldPackets::Transmogrification::TransmogOutfitNewEntryAdded transmogOutfitNewEntryAdded; + transmogOutfitNewEntryAdded.TransmogOutfitID = transmogOutfitEntry->ID; + SendPacket(transmogOutfitNewEntryAdded.Write()); +} + +void WorldSession::HandleTransmogOutfitUpdateInfo(WorldPackets::Transmogrification::TransmogOutfitUpdateInfo const& transmogOutfitUpdateInfo) +{ + if (!_player->GetNPCIfCanInteractWith(transmogOutfitUpdateInfo.Npc, UNIT_NPC_FLAG_TRANSMOGRIFIER, UNIT_NPC_FLAG_2_NONE)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - {} not found or player can't interact with it.", + GetPlayerInfo(), transmogOutfitUpdateInfo.Npc); + return; + } + + _player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); + + if (!_player->UpdateTransmogOutfit(transmogOutfitUpdateInfo.OutfitID, transmogOutfitUpdateInfo.Info)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateInfo - player does not have outfit {}.", + GetPlayerInfo(), transmogOutfitUpdateInfo.OutfitID); + return; + } + + // SMSG_UPDATE_OBJECT must be received by client before transmog packet for UI to properly update + Player::ValuesUpdateForPlayerWithMaskSender sendUpdateObject(_player); + sendUpdateObject.ActivePlayerMask.MarkChanged(&UF::ActivePlayerData::TransmogOutfits); + sendUpdateObject(_player); + + WorldPackets::Transmogrification::TransmogOutfitInfoUpdated transmogOutfitInfoUpdated; + transmogOutfitInfoUpdated.TransmogOutfitID = transmogOutfitUpdateInfo.OutfitID; + transmogOutfitInfoUpdated.OutfitInfo = &transmogOutfitUpdateInfo.Info; + SendPacket(transmogOutfitInfoUpdated.Write()); +} + +void WorldSession::HandleTransmogOutfitUpdateSituations(WorldPackets::Transmogrification::TransmogOutfitUpdateSituations const& transmogOutfitUpdateSituations) +{ + if (!_player->GetNPCIfCanInteractWith(transmogOutfitUpdateSituations.Npc, UNIT_NPC_FLAG_TRANSMOGRIFIER, UNIT_NPC_FLAG_2_NONE)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - {} not found or player can't interact with it.", + GetPlayerInfo(), transmogOutfitUpdateSituations.Npc); + return; + } + + _player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); + + if (!_player->m_activePlayerData->TransmogOutfits.Get(transmogOutfitUpdateSituations.OutfitID)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSituations - player does not have outfit {}.", + GetPlayerInfo(), transmogOutfitUpdateSituations.OutfitID); + return; + } + + if (!TransmogMgr::ValidateSituations(transmogOutfitUpdateSituations.Situations)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSituations - player sent invalid situations.", + GetPlayerInfo()); + return; + } + + _player->UpdateTransmogOutfitSituations(transmogOutfitUpdateSituations.OutfitID, transmogOutfitUpdateSituations.SituationsEnabled, + transmogOutfitUpdateSituations.Situations); + + // SMSG_UPDATE_OBJECT must be received by client before transmog packet for UI to properly update + Player::ValuesUpdateForPlayerWithMaskSender sendUpdateObject(_player); + sendUpdateObject.ActivePlayerMask.MarkChanged(&UF::ActivePlayerData::TransmogOutfits); + sendUpdateObject(_player); + + WorldPackets::Transmogrification::TransmogOutfitSituationsUpdated transmogOutfitSituationsUpdated; + transmogOutfitSituationsUpdated.TransmogOutfitID = transmogOutfitUpdateSituations.OutfitID; + transmogOutfitSituationsUpdated.SituationsEnabled = transmogOutfitUpdateSituations.SituationsEnabled; + transmogOutfitSituationsUpdated.Situations = transmogOutfitUpdateSituations.Situations; + SendPacket(transmogOutfitSituationsUpdated.Write()); +} + +void WorldSession::HandleTransmogOutfitUpdateSlots(WorldPackets::Transmogrification::TransmogOutfitUpdateSlots const& transmogOutfitUpdateSlots) +{ + if (!_player->GetNPCIfCanInteractWith(transmogOutfitUpdateSlots.Npc, UNIT_NPC_FLAG_TRANSMOGRIFIER, UNIT_NPC_FLAG_2_NONE)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitNew - {} not found or player can't interact with it.", + GetPlayerInfo(), transmogOutfitUpdateSlots.Npc); + return; + } + + _player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Interacting); + + UF::TransmogOutfitData const* transmogOutfit = _player->m_activePlayerData->TransmogOutfits.Get(transmogOutfitUpdateSlots.OutfitID); + if (!transmogOutfit) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - player does not have outfit {}.", + GetPlayerInfo(), transmogOutfitUpdateSlots.OutfitID); + return; + } + + if (!TransmogMgr::ValidateSlots(transmogOutfitUpdateSlots.Slots)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - player sent invalid slots.", + GetPlayerInfo()); + return; + } + + std::vector bindAppearances; + + for (WorldPackets::Transmogrification::TransmogOutfitSlotData const& slot : transmogOutfitUpdateSlots.Slots) + { + if (slot.ItemModifiedAppearanceID) + { + auto [hasAppearance, isTemporary] = GetCollectionMgr()->HasItemAppearance(slot.ItemModifiedAppearanceID); + if (!hasAppearance) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - player does not have appearance {} in collection.", + GetPlayerInfo(), slot.ItemModifiedAppearanceID); + return; + } + + if (isTemporary) + bindAppearances.push_back(slot.ItemModifiedAppearanceID); + } + + if (slot.SpellItemEnchantmentID && !GetCollectionMgr()->HasTransmogIllusion(TransmogMgr::GetTransmogIllusionForSpellItemEnchantment(slot.SpellItemEnchantmentID)->ID)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - player does not have enchant {} in illusion collection.", + GetPlayerInfo(), slot.SpellItemEnchantmentID); + return; + } + } + + if (transmogOutfitUpdateSlots.UseAvailableDiscount && _player->HasPlayerLocalFlag(PLAYER_LOCAL_FLAG_FREE_TRANSMOG_CLAIMED)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - player has already claimed free transmog before.", + GetPlayerInfo()); + return; + } + + // calculate cost + float baseCost = 0; + if (uint32 curveId = sDB2Manager.GetGlobalCurveId(GlobalCurve::TransmogCost)) + baseCost = sDB2Manager.GetCurveValueAt(curveId, std::max(_player->GetLevel(), _player->m_activePlayerData->MaxLevel)); + + float costMultiplier = 1.0f; + TransmogOutfitEntryEntry const* transmogOutfitEntry = sTransmogOutfitEntryStore.AssertEntry(transmogOutfitUpdateSlots.OutfitID); + if (transmogOutfitEntry->HasFlag(TransmogOutfitEntryFlags::UseOverrideCostModifier)) + costMultiplier *= transmogOutfitEntry->OverrideCostModifier; + + if (_player->HasAuraType(SPELL_AURA_MOD_TRANSMOG_OUTFIT_UPDATE_COST)) + costMultiplier *= _player->m_activePlayerData->TransmogMetadata->CostMod; + + if (sChrRacesStore.AssertEntry(_player->GetRace())->GetFlags().HasFlag(ChrRacesFlag::VoidVendorDiscount)) + costMultiplier *= 0.5f; + + uint64 cost = 0; + + if (!transmogOutfitUpdateSlots.UseAvailableDiscount) + { + auto oldSlotItr = transmogOutfit->Slots.begin(); + auto oldSlotEnd = transmogOutfit->Slots.end(); + for (WorldPackets::Transmogrification::TransmogOutfitSlotData const& slot : transmogOutfitUpdateSlots.Slots) + { + oldSlotItr = std::ranges::find(oldSlotItr, oldSlotEnd, + std::pair(AsUnderlyingType(slot.Slot), AsUnderlyingType(slot.SlotOption)), + [](UF::TransmogOutfitSlotData const& slotData) { return std::pair(*slotData.Slot, *slotData.SlotOption); }); + + auto [slotEntry, slotOptionEntry, _] = *TransmogMgr::GetSlotAndOption(slot.Slot, slot.SlotOption); + + if (slot.AppearanceDisplayType == TransmogOutfitDisplayType::Assigned && oldSlotItr->ItemModifiedAppearanceID != slot.ItemModifiedAppearanceID) + { + if (slotEntry) + cost = static_cast(std::floor(baseCost * slotEntry->ItemCostMultiplier)) + cost; + + if (slotOptionEntry) + cost = static_cast(std::floor(baseCost * slotOptionEntry->ItemCostMultiplier)) + cost; + } + + if (slot.IllusionDisplayType == TransmogOutfitDisplayType::Assigned && oldSlotItr->SpellItemEnchantmentID != slot.SpellItemEnchantmentID) + { + if (slotEntry) + cost = static_cast(std::floor(baseCost * slotEntry->IllusionCostMultiplier)) + cost; + + if (slotOptionEntry) + cost = static_cast(std::floor(baseCost * slotOptionEntry->IllusionCostMultiplier)) + cost; + } + + ++oldSlotItr; + } + + cost = static_cast(std::clamp(costMultiplier, 0.0f, 1.0f) * cost); + + if (cost != transmogOutfitUpdateSlots.Cost) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - player sent invalid cost {}.", + GetPlayerInfo(), transmogOutfitUpdateSlots.Cost); + return; + } + + if (!_player->HasEnoughMoney(cost)) + { + TC_LOG_ERROR("entities.player.cheat", "{} WorldSession::HandleTransmogOutfitUpdateSlots - not enough money.", + GetPlayerInfo()); + return; + } + } + else + { + _player->SetPlayerLocalFlag(PLAYER_LOCAL_FLAG_FREE_TRANSMOG_CLAIMED); + _player->SetHasClaimedFreeTransmog(); + } + + _player->ModifyMoney(-int64(cost)); + + _player->UpdateTransmogOutfitSlots(transmogOutfitUpdateSlots.OutfitID, transmogOutfitUpdateSlots.Slots); + + if (transmogOutfitUpdateSlots.OutfitID == _player->m_activePlayerData->TransmogMetadata->TransmogOutfitID) + _player->EquipTransmogOutfit(transmogOutfitUpdateSlots.OutfitID, TransmogSituationTrigger::TransmogUpdate, {}); + + WorldPackets::Transmogrification::TransmogOutfitSlotsUpdated transmogOutfitSlotsUpdated; + transmogOutfitSlotsUpdated.TransmogOutfitID = transmogOutfitUpdateSlots.OutfitID; + transmogOutfitSlotsUpdated.Slots = transmogOutfitUpdateSlots.Slots; + SendPacket(transmogOutfitSlotsUpdated.Write()); + + for (uint32 itemModifedAppearanceId : bindAppearances) + { + std::unordered_set itemsProvidingAppearance = GetCollectionMgr()->GetItemsProvidingTemporaryAppearance(itemModifedAppearanceId); + for (ObjectGuid const& itemGuid : itemsProvidingAppearance) + { + if (Item* item = _player->GetItemByGuid(itemGuid)) + { + item->SetNotRefundable(_player); + item->ClearSoulboundTradeable(_player); + GetCollectionMgr()->AddItemAppearance(item); + } + } + } +} + void WorldSession::SendOpenTransmogrifier(ObjectGuid const& guid) { WorldPackets::NPC::NPCInteractionOpenResult npcInteraction; diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp index 68b5c6632a2a3..8d507ac68d87c 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp +++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp @@ -37,9 +37,164 @@ void TransmogrifyItems::Read() for (TransmogrifyItem& item : Items) _worldPacket >> item; + _worldPacket.ResetBitPos(); _worldPacket >> Bits<1>(CurrentSpecOnly); } +ByteBuffer& operator>>(ByteBuffer& data, TransmogOutfitDataInfo& transmogOutfitDataInfo) +{ + data.ResetBitPos(); + data >> As(transmogOutfitDataInfo.SetType); + data >> transmogOutfitDataInfo.Icon; + data >> SizedString::BitsSize<8>(transmogOutfitDataInfo.Name); + data >> Bits<1>(transmogOutfitDataInfo.SituationsEnabled); + + data >> SizedString::Data(transmogOutfitDataInfo.Name); + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitDataInfo const& transmogOutfitDataInfo) +{ + data << As(transmogOutfitDataInfo.SetType); + data << uint32(transmogOutfitDataInfo.Icon); + data << SizedString::BitsSize<8>(transmogOutfitDataInfo.Name); + data << Bits<1>(transmogOutfitDataInfo.SituationsEnabled); + data.FlushBits(); + + data << SizedString::Data(transmogOutfitDataInfo.Name); + + return data; +} + +void TransmogOutfitNew::Read() +{ + _worldPacket >> Npc; + _worldPacket >> As(Source); + _worldPacket >> Info; +} + +WorldPacket const* TransmogOutfitNewEntryAdded::Write() +{ + _worldPacket << uint32(TransmogOutfitID); + + return &_worldPacket; +} + +void TransmogOutfitUpdateInfo::Read() +{ + _worldPacket >> OutfitID; + _worldPacket >> Npc; + _worldPacket >> Info; +} + +WorldPacket const* TransmogOutfitInfoUpdated::Write() +{ + _worldPacket << uint32(TransmogOutfitID); + _worldPacket << *OutfitInfo; + + return &_worldPacket; +} + +ByteBuffer& operator>>(ByteBuffer& data, TransmogOutfitSituationInfo& transmogOutfitSituationInfo) +{ + data >> transmogOutfitSituationInfo.SituationID; + data >> transmogOutfitSituationInfo.SpecID; + data >> transmogOutfitSituationInfo.LoadoutID; + data >> transmogOutfitSituationInfo.EquipmentSetID; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitSituationInfo const& transmogOutfitSituationInfo) +{ + data << uint32(transmogOutfitSituationInfo.SituationID); + data << uint32(transmogOutfitSituationInfo.SpecID); + data << uint32(transmogOutfitSituationInfo.LoadoutID); + data << uint32(transmogOutfitSituationInfo.EquipmentSetID); + + return data; +} + +void TransmogOutfitUpdateSituations::Read() +{ + _worldPacket >> OutfitID; + _worldPacket >> Npc; + _worldPacket >> Size(Situations); + for (TransmogOutfitSituationInfo& situation : Situations) + _worldPacket >> situation; + + _worldPacket.ResetBitPos(); + _worldPacket >> Bits<1>(SituationsEnabled); +} + +WorldPacket const* TransmogOutfitSituationsUpdated::Write() +{ + _worldPacket << uint32(TransmogOutfitID); + _worldPacket << Size(Situations); + + for (TransmogOutfitSituationInfo const& situation : Situations) + _worldPacket << situation; + + _worldPacket << Bits<1>(SituationsEnabled); + _worldPacket.FlushBits(); + + return &_worldPacket; +} + +ByteBuffer& operator>>(ByteBuffer& data, TransmogOutfitSlotData& transmogOutfitSlotData) +{ + data >> As(transmogOutfitSlotData.Slot); + data >> As(transmogOutfitSlotData.SlotOption); + data >> transmogOutfitSlotData.ItemModifiedAppearanceID; + data >> As(transmogOutfitSlotData.AppearanceDisplayType); + data >> transmogOutfitSlotData.SpellItemEnchantmentID; + data >> As(transmogOutfitSlotData.IllusionDisplayType); + data >> transmogOutfitSlotData.Flags; + + return data; +} + +ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitSlotData const& transmogOutfitSlotData) +{ + data << As(transmogOutfitSlotData.Slot); + data << As(transmogOutfitSlotData.SlotOption); + data << uint32(transmogOutfitSlotData.ItemModifiedAppearanceID); + data << As(transmogOutfitSlotData.AppearanceDisplayType); + data << uint32(transmogOutfitSlotData.SpellItemEnchantmentID); + data << As(transmogOutfitSlotData.IllusionDisplayType); + data << uint32(transmogOutfitSlotData.Flags); + + return data; +} + +void TransmogOutfitUpdateSlots::Read() +{ + _worldPacket >> OutfitID; + _worldPacket >> Size(Slots); + _worldPacket >> Npc; + _worldPacket >> Cost; + + for (TransmogOutfitSlotData& slot : Slots) + _worldPacket >> slot; + + _worldPacket.ResetBitPos(); + _worldPacket >> Bits<1>(UseAvailableDiscount); + + std::ranges::sort(Slots, std::ranges::less(), [](TransmogOutfitSlotData const& slot) { return std::pair(slot.Slot, slot.SlotOption); }); +} + +WorldPacket const* TransmogOutfitSlotsUpdated::Write() +{ + _worldPacket << uint32(TransmogOutfitID); + _worldPacket << Size(Slots); + + for (TransmogOutfitSlotData const& slot : Slots) + _worldPacket << slot; + + return &_worldPacket; +} + WorldPacket const* AccountTransmogUpdate::Write() { _worldPacket << Bits<1>(IsFullUpdate); diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.h b/src/server/game/Server/Packets/TransmogrificationPackets.h index b8a496f594d47..12f9a859fa354 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.h +++ b/src/server/game/Server/Packets/TransmogrificationPackets.h @@ -22,6 +22,12 @@ #include "ObjectGuid.h" #include "PacketUtilities.h" +enum class TransmogOutfitDisplayType : uint8; +enum class TransmogOutfitEntrySource : uint8; +enum class TransmogOutfitSetType : uint8; +enum class TransmogOutfitSlot : int8; +enum class TransmogOutfitSlotOption : uint8; + namespace WorldPackets { namespace Transmogrification @@ -51,6 +57,128 @@ namespace WorldPackets bool CurrentSpecOnly = false; }; + struct TransmogOutfitDataInfo + { + TransmogOutfitSetType SetType = { }; + bool SituationsEnabled = false; + uint32 Icon = 0; + std::string_view Name; + }; + + class TransmogOutfitNew final : public ClientPacket + { + public: + explicit TransmogOutfitNew(WorldPacket&& packet) : ClientPacket(CMSG_TRANSMOG_OUTFIT_NEW, std::move(packet)) { } + + void Read() override; + + ObjectGuid Npc; + TransmogOutfitDataInfo Info; + TransmogOutfitEntrySource Source = { }; + }; + + class TransmogOutfitNewEntryAdded final : public ServerPacket + { + public: + explicit TransmogOutfitNewEntryAdded() : ServerPacket(SMSG_TRANSMOG_OUTFIT_NEW_ENTRY_ADDED, 4) { } + + WorldPacket const* Write() override; + + uint32 TransmogOutfitID = 0; + }; + + class TransmogOutfitUpdateInfo final : public ClientPacket + { + public: + explicit TransmogOutfitUpdateInfo(WorldPacket&& packet) : ClientPacket(CMSG_TRANSMOG_OUTFIT_UPDATE_INFO, std::move(packet)) { } + + void Read() override; + + uint32 OutfitID = 0; + ObjectGuid Npc; + TransmogOutfitDataInfo Info; + }; + + class TransmogOutfitInfoUpdated final : public ServerPacket + { + public: + explicit TransmogOutfitInfoUpdated() : ServerPacket(SMSG_TRANSMOG_OUTFIT_INFO_UPDATED, 4 + 1 + 4 + 1 + 1 + 128) { } + + WorldPacket const* Write() override; + + uint32 TransmogOutfitID = 0; + TransmogOutfitDataInfo const* OutfitInfo = nullptr; + }; + + struct TransmogOutfitSituationInfo + { + uint32 SituationID = 0; + uint32 SpecID = 0; + uint32 LoadoutID = 0; + uint32 EquipmentSetID = 0; + }; + + class TransmogOutfitUpdateSituations final : public ClientPacket + { + public: + explicit TransmogOutfitUpdateSituations(WorldPacket&& packet) : ClientPacket(CMSG_TRANSMOG_OUTFIT_UPDATE_SITUATIONS, std::move(packet)) { } + + void Read() override; + + uint32 OutfitID = 0; + ObjectGuid Npc; + bool SituationsEnabled = false; + Array Situations; + }; + + class TransmogOutfitSituationsUpdated final : public ServerPacket + { + public: + explicit TransmogOutfitSituationsUpdated() : ServerPacket(SMSG_TRANSMOG_OUTFIT_SITUATIONS_UPDATED, 4 + 4 + 10 * (4 + 4 + 4 + 4) + 1) { } + + WorldPacket const* Write() override; + + uint32 TransmogOutfitID = 0; + bool SituationsEnabled = false; + std::span Situations; + }; + + struct TransmogOutfitSlotData + { + TransmogOutfitSlot Slot = { }; + TransmogOutfitSlotOption SlotOption = { }; + TransmogOutfitDisplayType AppearanceDisplayType = { }; + TransmogOutfitDisplayType IllusionDisplayType = { }; + uint32 ItemModifiedAppearanceID = 0; + uint32 SpellItemEnchantmentID = 0; + uint32 Flags = 0; + }; + + class TransmogOutfitUpdateSlots final : public ClientPacket + { + public: + explicit TransmogOutfitUpdateSlots(WorldPacket&& packet) : ClientPacket(CMSG_TRANSMOG_OUTFIT_UPDATE_SLOTS, std::move(packet)) { } + + void Read() override; + + uint32 OutfitID = 0; + Array Slots; + ObjectGuid Npc; + uint64 Cost = 0; + bool UseAvailableDiscount = false; + }; + + class TransmogOutfitSlotsUpdated final : public ServerPacket + { + public: + explicit TransmogOutfitSlotsUpdated() : ServerPacket(SMSG_TRANSMOG_OUTFIT_SLOTS_UPDATED, 4 + 4 + 30 * (1 + 1 + 4 + 1 + 4 + 1 + 4)) { } + + WorldPacket const* Write() override; + + uint32 TransmogOutfitID = 0; + std::span Slots; + }; + class AccountTransmogUpdate final : public ServerPacket { public: diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index bb90a71f0ad68..52ebf06b6d666 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -1105,10 +1105,10 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems); - DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_NEW, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_UPDATE_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_UPDATE_SITUATIONS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_UPDATE_SLOTS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_NEW, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogOutfitNew); + DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_UPDATE_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogOutfitUpdateInfo); + DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_UPDATE_SITUATIONS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogOutfitUpdateSituations); + DEFINE_HANDLER(CMSG_TRANSMOG_OUTFIT_UPDATE_SLOTS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogOutfitUpdateSlots); DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetition); DEFINE_HANDLER(CMSG_TUTORIAL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag); DEFINE_HANDLER(CMSG_UI_MAP_QUEST_LINES_REQUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUiMapQuestLinesRequest); @@ -2454,10 +2454,10 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAIT_CONFIG_COMMIT_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_ABORTED, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_INFO_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_NEW_ENTRY_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_SITUATIONS_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_SLOTS_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_INFO_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_NEW_ENTRY_ADDED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_SITUATIONS_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSMOG_OUTFIT_SLOTS_UPDATED, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TREASURE_PICKER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TREASURE_PUNCH_LIST_ITEMS_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_NEVER, CONNECTION_TYPE_REALM); diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 0dfed8f0959ba..2ab2959bc6542 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1136,11 +1136,7 @@ bool WorldSession::IsAddonRegistered(std::string_view prefix) const if (!_filterAddonMessages) // if we have hit the softcap (64) nothing should be filtered return true; - if (_registeredAddonPrefixes.empty()) - return false; - - std::vector::const_iterator itr = std::find(_registeredAddonPrefixes.begin(), _registeredAddonPrefixes.end(), prefix); - return itr != _registeredAddonPrefixes.end(); + return advstd::ranges::contains(_registeredAddonPrefixes, prefix); } void WorldSession::HandleUnregisterAllAddonPrefixesOpcode(WorldPackets::Chat::ChatUnregisterAllAddonPrefixes& /*packet*/) // empty packet @@ -1259,6 +1255,7 @@ class AccountInfoQueryHolder : public LoginDatabaseQueryHolder ITEM_APPEARANCES, ITEM_FAVORITE_APPEARANCES, TRANSMOG_ILLUSIONS, + TRANSMOG_OUTFITS, WARBAND_SCENES, PLAYER_DATA_ELEMENTS_ACCOUNT, PLAYER_DATA_FLAGS_ACCOUNT, @@ -1309,6 +1306,10 @@ class AccountInfoQueryHolder : public LoginDatabaseQueryHolder stmt->setUInt32(0, battlenetAccountId); ok = SetPreparedQuery(TRANSMOG_ILLUSIONS, stmt) && ok; + stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_BNET_TRANSMOG_OUTFITS); + stmt->setUInt32(0, battlenetAccountId); + ok = SetPreparedQuery(TRANSMOG_OUTFITS, stmt) && ok; + stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_BNET_WARBAND_SCENES); stmt->setUInt32(0, battlenetAccountId); ok = SetPreparedQuery(WARBAND_SCENES, stmt) && ok; @@ -1373,6 +1374,7 @@ void WorldSession::InitializeSessionCallback(LoginDatabaseQueryHolder const& hol _collectionMgr->LoadAccountMounts(holder.GetPreparedResult(AccountInfoQueryHolder::MOUNTS)); _collectionMgr->LoadAccountItemAppearances(holder.GetPreparedResult(AccountInfoQueryHolder::ITEM_APPEARANCES), holder.GetPreparedResult(AccountInfoQueryHolder::ITEM_FAVORITE_APPEARANCES)); _collectionMgr->LoadAccountTransmogIllusions(holder.GetPreparedResult(AccountInfoQueryHolder::TRANSMOG_ILLUSIONS)); + _collectionMgr->LoadAccountTransmogOutfits(holder.GetPreparedResult(AccountInfoQueryHolder::TRANSMOG_OUTFITS)); _collectionMgr->LoadAccountWarbandScenes(holder.GetPreparedResult(AccountInfoQueryHolder::WARBAND_SCENES)); LoadPlayerDataAccount(holder.GetPreparedResult(AccountInfoQueryHolder::PLAYER_DATA_ELEMENTS_ACCOUNT), holder.GetPreparedResult(AccountInfoQueryHolder::PLAYER_DATA_FLAGS_ACCOUNT)); diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 4781d7df8faf0..a2228a4aad4e1 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -819,6 +819,10 @@ namespace WorldPackets namespace Transmogrification { class TransmogrifyItems; + class TransmogOutfitNew; + class TransmogOutfitUpdateInfo; + class TransmogOutfitUpdateSituations; + class TransmogOutfitUpdateSlots; } namespace Vehicle @@ -1790,6 +1794,10 @@ class TC_GAME_API WorldSession // Transmogrification void HandleTransmogrifyItems(WorldPackets::Transmogrification::TransmogrifyItems& transmogrifyItems); + void HandleTransmogOutfitNew(WorldPackets::Transmogrification::TransmogOutfitNew const& transmogOutfitNew); + void HandleTransmogOutfitUpdateInfo(WorldPackets::Transmogrification::TransmogOutfitUpdateInfo const& transmogOutfitUpdateInfo); + void HandleTransmogOutfitUpdateSituations(WorldPackets::Transmogrification::TransmogOutfitUpdateSituations const& transmogOutfitUpdateSituations); + void HandleTransmogOutfitUpdateSlots(WorldPackets::Transmogrification::TransmogOutfitUpdateSlots const& transmogOutfitUpdateSlots); // Miscellaneous void HandleSpellClick(WorldPackets::Spells::SpellClick& spellClick); diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 6ab522d838aac..a75abe985daa5 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -735,7 +735,7 @@ enum AuraType : uint32 SPELL_AURA_ADD_FLAT_PVP_MODIFIER_BY_SPELL_LABEL = 648, SPELL_AURA_ADD_PCT_PVP_MODIFIER_BY_SPELL_LABEL = 649, SPELL_AURA_650 = 650, - SPELL_AURA_651 = 651, + SPELL_AURA_ENABLE_EVENT_TRANSMOG_OUTFIT = 651, SPELL_AURA_652 = 652, SPELL_AURA_653 = 653, SPELL_AURA_654 = 654, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 12091e5e2aaf6..c65e4cedf8525 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -720,7 +720,7 @@ NonDefaultConstructible AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //648 SPELL_AURA_ADD_FLAT_PVP_MODIFIER_BY_SPELL_LABEL &AuraEffect::HandleNULL, //649 SPELL_AURA_ADD_PCT_PVP_MODIFIER_BY_SPELL_LABEL &AuraEffect::HandleNULL, //650 - &AuraEffect::HandleNULL, //651 + &AuraEffect::HandleNULL, //651 SPELL_AURA_ENABLE_EVENT_TRANSMOG_OUTFIT &AuraEffect::HandleNULL, //652 &AuraEffect::HandleNULL, //653 &AuraEffect::HandleNULL, //654 diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d15090a061640..56ff494f2bb98 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -61,6 +61,7 @@ #include "TemporarySummon.h" #include "TradeData.h" #include "TraitPackets.h" +#include "TransmogMgr.h" #include "UniqueTrackablePtr.h" #include "Util.h" #include "VMapFactory.h" @@ -4973,7 +4974,10 @@ int32 Spell::GetSpellCastDataAmmo() switch (itemEntry->SubclassID) { case ITEM_SUBCLASS_WEAPON_THROWN: - ammoDisplayID = sDB2Manager.GetItemDisplayId(item_id, unitCaster->GetVirtualItemAppearanceMod(i)); + if (ItemModifiedAppearanceEntry const* modifiedAppearance = TransmogMgr::GetItemModifiedAppearance(item_id, unitCaster->GetVirtualItemAppearanceMod(i))) + if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(modifiedAppearance->ItemAppearanceID)) + ammoDisplayID = itemAppearance->ItemDisplayInfoID; + ammoInventoryType = itemEntry->InventoryType; break; case ITEM_SUBCLASS_WEAPON_BOW: @@ -4986,7 +4990,10 @@ int32 Spell::GetSpellCastDataAmmo() ammoInventoryType = INVTYPE_AMMO; break; default: - nonRangedAmmoDisplayID = sDB2Manager.GetItemDisplayId(item_id, unitCaster->GetVirtualItemAppearanceMod(i)); + if (ItemModifiedAppearanceEntry const* modifiedAppearance = TransmogMgr::GetItemModifiedAppearance(item_id, unitCaster->GetVirtualItemAppearanceMod(i))) + if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(modifiedAppearance->ItemAppearanceID)) + nonRangedAmmoDisplayID = itemAppearance->ItemDisplayInfoID; + nonRangedAmmoInventoryType = itemEntry->InventoryType; break; } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index c161995b33ba3..cb8bcc4f1bf28 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -464,6 +464,7 @@ class TC_GAME_API Spell void EffectSetPlayerDataElementCharacter(); void EffectSetPlayerDataFlagAccount(); void EffectSetPlayerDataFlagCharacter(); + void EffectEquipTransmogOutfit(); typedef std::unordered_set UsedSpellMods; @@ -632,6 +633,14 @@ class TC_GAME_API Spell // SPELL_EFFECT_UPGRADE_HEIRLOOM uint32 ItemId; + // SPELL_EFFECT_EQUIP_TRANSMOG_OUTFIT + struct + { + uint32 EquipAction; + uint32 TransmogOutfitId; + uint32 SituationTrigger; + } EquipTransmogOutfit; + struct { uint32 Data[3]; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 70bf5f8bccf91..5ca21302a6101 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -436,7 +436,7 @@ NonDefaultConstructible SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //344 SPELL_EFFECT_344 &Spell::EffectNULL, //345 SPELL_EFFECT_ASSIST_ACTION &Spell::EffectNULL, //346 SPELL_EFFECT_346 - &Spell::EffectNULL, //347 SPELL_EFFECT_EQUIP_TRANSMOG_OUTFIT + &Spell::EffectEquipTransmogOutfit, //347 SPELL_EFFECT_EQUIP_TRANSMOG_OUTFIT &Spell::EffectNULL, //348 SPELL_EFFECT_GIVE_HOUSE_LEVEL &Spell::EffectNULL, //349 SPELL_EFFECT_LEARN_HOUSE_ROOM &Spell::EffectNULL, //350 SPELL_EFFECT_LEARN_HOUSE_EXTERIOR_COMPONENT @@ -6338,3 +6338,30 @@ void Spell::EffectSetPlayerDataFlagCharacter() target->SetDataFlagCharacter(effectInfo->MiscValue, damage != 0); } + +void Spell::EffectEquipTransmogOutfit() +{ + if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) + return; + + Player* target = Object::ToPlayer(unitTarget); + if (!target) + return; + + Optional locked; + switch (static_cast(m_misc.EquipTransmogOutfit.EquipAction)) + { + case TransmogOutfitEquipAction::EquipAndLock: + case TransmogOutfitEquipAction::RemoveAndLock: + case TransmogOutfitEquipAction::Lock: + locked = true; + break; + case TransmogOutfitEquipAction::Unlock: + locked = false; + break; + default: + break; + } + + target->EquipTransmogOutfit(m_misc.EquipTransmogOutfit.TransmogOutfitId, static_cast(m_misc.EquipTransmogOutfit.SituationTrigger), locked); +} diff --git a/src/server/game/Transmog/TransmogMgr.cpp b/src/server/game/Transmog/TransmogMgr.cpp new file mode 100644 index 0000000000000..22dd3edebeba6 --- /dev/null +++ b/src/server/game/Transmog/TransmogMgr.cpp @@ -0,0 +1,416 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "TransmogMgr.h" +#include "DB2Stores.h" +#include "FlatSet.h" +#include "MapUtils.h" +#include "ObjectMgr.h" +#include "Player.h" +#include "TransmogrificationPackets.h" +#include "Util.h" + +namespace +{ +struct TransmogOutfitSlotOptionInfo +{ + TransmogOutfitSlotOptionEntry const* Data = nullptr; + int32 SlotIndex = -1; +}; + +struct TransmogOutfitSlotInfo +{ + TransmogOutfitSlotInfoEntry const* Data = nullptr; + std::variant> SlotIndexOrOptions; + + int32 GetSlotIndex(TransmogOutfitSlotOption slotOption) const + { + switch (SlotIndexOrOptions.index()) + { + case 0: + return std::get<0>(SlotIndexOrOptions); + case 1: + return std::get<1>(SlotIndexOrOptions)[AsUnderlyingType(slotOption)].SlotIndex; + default: + return -1; + } + } +}; + +std::unordered_map, ItemModifiedAppearanceEntry const*> ItemModifiedAppearancesByItem; +std::unordered_map TransmogIllusionBySpellItemEnchantment; +std::unordered_map> TransmogSetsByItemModifiedAppearance; +std::vector TransmogSetItemsByTransmogSet; +std::array, AsUnderlyingType(TransmogOutfitEntrySource::Max)> TransmogOutfitsBySource; +std::vector TransmogOutfitsAutomaticallyCreated; +std::vector AllSlots; +std::array SlotInfoByOutfitSlot; +std::array SlotInfoByInvSlot; +std::vector DefaultSituations; + +constexpr bool IsArtifactTransmogOutfitSlotOption(TransmogOutfitSlotOption option) +{ + return option == TransmogOutfitSlotOption::ArtifactSpecOne + || option == TransmogOutfitSlotOption::ArtifactSpecTwo + || option == TransmogOutfitSlotOption::ArtifactSpecThree + || option == TransmogOutfitSlotOption::ArtifactSpecFour; +} + +bool IsValidTransmogOutfitSlotForItem(ItemTemplate const* item, TransmogOutfitSlot slot, TransmogOutfitSlotOption option) +{ + if (IsArtifactTransmogOutfitSlotOption(option)) + if (ArtifactEntry const* artifact = sArtifactStore.LookupEntry(item->GetArtifactID())) + if (ChrSpecializationEntry const* specialization = sChrSpecializationStore.LookupEntry(artifact->ChrSpecializationID)) + if ((int8(option) - int8(TransmogOutfitSlotOption::ArtifactSpecOne)) != specialization->OrderIndex) + return false; + + switch (item->GetInventoryType()) + { + case INVTYPE_HEAD: + return slot == TransmogOutfitSlot::Head; + case INVTYPE_SHOULDERS: + return slot == TransmogOutfitSlot::ShoulderLeft || slot == TransmogOutfitSlot::ShoulderRight; + case INVTYPE_BODY: + return slot == TransmogOutfitSlot::Body; + case INVTYPE_CHEST: + case INVTYPE_ROBE: + return slot == TransmogOutfitSlot::Chest; + case INVTYPE_WAIST: + return slot == TransmogOutfitSlot::Waist; + case INVTYPE_LEGS: + return slot == TransmogOutfitSlot::Legs; + case INVTYPE_FEET: + return slot == TransmogOutfitSlot::Feet; + case INVTYPE_WRISTS: + return slot == TransmogOutfitSlot::Wrist; + case INVTYPE_HANDS: + return slot == TransmogOutfitSlot::Hand; + case INVTYPE_WEAPON: + case INVTYPE_WEAPONMAINHAND: + case INVTYPE_WEAPONOFFHAND: + return slot == TransmogOutfitSlot::WeaponMainHand || slot == TransmogOutfitSlot::WeaponOffHand || IsArtifactTransmogOutfitSlotOption(option); + case INVTYPE_SHIELD: + case INVTYPE_HOLDABLE: + return slot == TransmogOutfitSlot::WeaponOffHand || IsArtifactTransmogOutfitSlotOption(option); + case INVTYPE_RANGED: + return (slot == TransmogOutfitSlot::WeaponMainHand && option == TransmogOutfitSlotOption::RangedWeapon) || IsArtifactTransmogOutfitSlotOption(option); + case INVTYPE_CLOAK: + return slot == TransmogOutfitSlot::Back; + case INVTYPE_2HWEAPON: + return slot == TransmogOutfitSlot::WeaponMainHand || (slot == TransmogOutfitSlot::WeaponOffHand && option == TransmogOutfitSlotOption::FuryTwoHandedWeapon) || IsArtifactTransmogOutfitSlotOption(option); + case INVTYPE_TABARD: + return slot == TransmogOutfitSlot::Tabard; + case INVTYPE_RANGEDRIGHT: + return slot == (item->GetSubClass() == ITEM_SUBCLASS_WEAPON_WAND ? TransmogOutfitSlot::WeaponMainHand : TransmogOutfitSlot::WeaponRanged) || IsArtifactTransmogOutfitSlotOption(option); + default: + break; + } + return false; +} +} + +void TransmogMgr::Load() +{ + for (ItemModifiedAppearanceEntry const* appearanceMod : sItemModifiedAppearanceStore) + ItemModifiedAppearancesByItem[{ appearanceMod->ItemID, appearanceMod->ItemAppearanceModifierID }] = appearanceMod; + + for (TransmogIllusionEntry const* transmogIllusion : sTransmogIllusionStore) + TransmogIllusionBySpellItemEnchantment[transmogIllusion->SpellItemEnchantmentID] = transmogIllusion; + + for (TransmogSetItemEntry const* transmogSetItem : sTransmogSetItemStore) + { + TransmogSetEntry const* set = sTransmogSetStore.LookupEntry(transmogSetItem->TransmogSetID); + if (!set) + continue; + + TransmogSetsByItemModifiedAppearance[transmogSetItem->ItemModifiedAppearanceID].insert(set); + TransmogSetItemsByTransmogSet.push_back(transmogSetItem); + } + + std::ranges::sort(TransmogSetItemsByTransmogSet, {}, &TransmogSetItemEntry::TransmogSetID); + + for (TransmogOutfitEntryEntry const* transmogOutfitEntry : sTransmogOutfitEntryStore) + { + if (transmogOutfitEntry->HasFlag(TransmogOutfitEntryFlags::AutomaticallyAwardedOnLogin)) + TransmogOutfitsAutomaticallyCreated.push_back(transmogOutfitEntry); + + if (transmogOutfitEntry->GetSetType() == TransmogOutfitSetType::Outfit) + TransmogOutfitsBySource[AsUnderlyingType(transmogOutfitEntry->GetSource())].push_back(transmogOutfitEntry); + } + + for (std::vector& transmogOutfitEntries : TransmogOutfitsBySource) + std::ranges::sort(transmogOutfitEntries, {}, &TransmogOutfitEntryEntry::OrderIndex); + + for (TransmogOutfitSlotInfoEntry const* transmogOutfitSlot : sTransmogOutfitSlotInfoStore) + { + ASSERT(transmogOutfitSlot->GetSlot() < TransmogOutfitSlot::Max); + + TransmogOutfitSlotInfo* slot = &SlotInfoByOutfitSlot[AsUnderlyingType(transmogOutfitSlot->GetSlot())]; + slot->Data = transmogOutfitSlot; + + if (!transmogOutfitSlot->HasFlag(TransmogOutfitSlotFlags::IsSecondarySlot)) + { + ASSERT(transmogOutfitSlot->InventorySlotEnum < EQUIPMENT_SLOT_END); + SlotInfoByInvSlot[transmogOutfitSlot->InventorySlotEnum] = slot; + } + } + + for (TransmogOutfitSlotOptionEntry const* transmogOutfitSlotOption : sTransmogOutfitSlotOptionInfoStore) + { + ASSERT(transmogOutfitSlotOption->GetOption() < TransmogOutfitSlotOption::Max); + + TransmogOutfitSlotInfoEntry const* transmogOutfitSlot = sTransmogOutfitSlotInfoStore.AssertEntry(transmogOutfitSlotOption->TransmogOutfitSlotInfoID); + + TransmogOutfitSlotInfo& slotInfo = SlotInfoByOutfitSlot[AsUnderlyingType(transmogOutfitSlot->GetSlot())]; + if (!std::holds_alternative>(slotInfo.SlotIndexOrOptions)) + slotInfo.SlotIndexOrOptions.emplace>(new TransmogOutfitSlotOptionInfo[AsUnderlyingType(TransmogOutfitSlotOption::Max)]); + + std::get>(slotInfo.SlotIndexOrOptions)[AsUnderlyingType(transmogOutfitSlotOption->GetOption())].Data = transmogOutfitSlotOption; + } + + for (TransmogOutfitSlotInfo& slotInfo : SlotInfoByOutfitSlot) + { + if (!slotInfo.Data) + continue; + + TransmogOutfitSlotAndOptionInfo& slot = AllSlots.emplace_back(); + slot.Slot = slotInfo.Data; + slot.SlotIndex = AllSlots.size() - 1; + + if (std::holds_alternative>(slotInfo.SlotIndexOrOptions)) + { + // if slot has options, keep adding transmog slots for every option + auto options = std::span( + &std::get>(slotInfo.SlotIndexOrOptions)[0], + AsUnderlyingType(TransmogOutfitSlotOption::Max)); + + auto optionItr = std::ranges::find_if(options, + [](TransmogOutfitSlotOptionEntry const* option) { return option != nullptr; }, + &TransmogOutfitSlotOptionInfo::Data); + + slot.SlotOption = optionItr->Data; + optionItr->SlotIndex = AllSlots.size() - 1; + + while (++optionItr != options.end()) + { + if (!optionItr->Data) + continue; + + TransmogOutfitSlotAndOptionInfo& newSlot = AllSlots.emplace_back(); + newSlot.Slot = slotInfo.Data; + newSlot.SlotOption = optionItr->Data; + newSlot.SlotIndex = AllSlots.size() - 1; + optionItr->SlotIndex = AllSlots.size() - 1; + } + } + if (std::holds_alternative(slotInfo.SlotIndexOrOptions)) + std::get(slotInfo.SlotIndexOrOptions) = AllSlots.size() - 1; + } + + for (TransmogSituationEntry const* transmogSituation : sTransmogSituationStore) + if (transmogSituation->HasFlag(TransmogSituationFlags::DefaultsToOn)) + DefaultSituations.push_back(transmogSituation); +} + +ItemModifiedAppearanceEntry const* TransmogMgr::GetItemModifiedAppearance(uint32 itemId, uint32 appearanceModId) +{ + auto itr = ItemModifiedAppearancesByItem.find({ itemId, appearanceModId }); + if (itr != ItemModifiedAppearancesByItem.end()) + return itr->second; + + // Fall back to unmodified appearance + if (appearanceModId) + return GetDefaultItemModifiedAppearance(itemId); + + return nullptr; +} + +ItemModifiedAppearanceEntry const* TransmogMgr::GetDefaultItemModifiedAppearance(uint32 itemId) +{ + return Trinity::Containers::MapGetValuePtr(ItemModifiedAppearancesByItem, { itemId, 0 }); +} + +TransmogIllusionEntry const* TransmogMgr::GetTransmogIllusionForSpellItemEnchantment(uint32 spellItemEnchantmentId) +{ + return Trinity::Containers::MapGetValuePtr(TransmogIllusionBySpellItemEnchantment, spellItemEnchantmentId); +} + +std::span TransmogMgr::GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId) +{ + std::span result; + auto itr = TransmogSetsByItemModifiedAppearance.find(itemModifiedAppearanceId); + if (itr != TransmogSetsByItemModifiedAppearance.end()) + result = itr->second; + + return result; +} + +std::span TransmogMgr::GetTransmogSetItems(uint32 transmogSetId) +{ + return std::ranges::equal_range(TransmogSetItemsByTransmogSet, transmogSetId, {}, &TransmogSetItemEntry::TransmogSetID); +} + +std::span TransmogMgr::GetAutomaticallyUnlockedOutfits() +{ + return TransmogOutfitsAutomaticallyCreated; +} + +std::span TransmogMgr::GetAllSlots() +{ + return AllSlots; +} + +TransmogMgr::TransmogOutfitSlotAndOptionInfo const* TransmogMgr::GetSlotAndOption(TransmogOutfitSlot slot, TransmogOutfitSlotOption slotOption) +{ + int32 slotIndex = SlotInfoByOutfitSlot[AsUnderlyingType(slot)].GetSlotIndex(slotOption); + if (slotIndex >= 0) + return &AllSlots[slotIndex]; + + return nullptr; +} + +TransmogMgr::TransmogOutfitSlotAndOptionInfo const* TransmogMgr::GetSlotAndOption(EquipmentSlots inventorySlot, TransmogOutfitSlotOption slotOption) +{ + if (TransmogOutfitSlotInfo const* slotInfo = SlotInfoByInvSlot[inventorySlot]) + if (int32 slotIndex = slotInfo->GetSlotIndex(slotOption); slotIndex >= 0) + return &AllSlots[slotIndex]; + + return nullptr; +} + +std::span TransmogMgr::GetDefaultSituations() +{ + return DefaultSituations; +} + +TransmogOutfitEntryEntry const* TransmogMgr::GetNextOutfitToUnlock(TransmogOutfitEntrySource source, Player const* player) +{ + if (source >= TransmogOutfitEntrySource::Max) + return nullptr; + + TransmogOutfitEntryEntry const* lastOwnedOutfit = nullptr; + for (auto const& [id, transmogOutfit] : player->m_activePlayerData->TransmogOutfits) + { + TransmogOutfitEntryEntry const* transmogOutfitEntry = sTransmogOutfitEntryStore.LookupEntry(transmogOutfit.value.Id); + if (!transmogOutfitEntry || transmogOutfitEntry->GetSource() != source) + continue; + + if (!lastOwnedOutfit || transmogOutfitEntry->OrderIndex > lastOwnedOutfit->OrderIndex) + lastOwnedOutfit = transmogOutfitEntry; + } + + if (!lastOwnedOutfit) + return TransmogOutfitsBySource[AsUnderlyingType(source)].front(); + + auto itr = std::ranges::find(TransmogOutfitsBySource[AsUnderlyingType(source)], lastOwnedOutfit) + 1; + if (itr != TransmogOutfitsBySource[AsUnderlyingType(source)].end()) + return *itr; + + return nullptr; +} + +bool TransmogMgr::ValidateSituations(std::span situations) +{ + struct SituationTriggerStatus + { + uint8 AllSituationCount = 0; + uint8 NoneSituationCount = 0; + uint8 RegularSituationCount = 0; + }; + + std::array statusByTrigger; + + for (WorldPackets::Transmogrification::TransmogOutfitSituationInfo const& situation : situations) + { + TransmogSituationEntry const* transmogSituation = sTransmogSituationStore.LookupEntry(situation.SituationID); + if (!transmogSituation) + return false; + + TransmogSituationGroupEntry const* transmogSituationGroup = sTransmogSituationGroupStore.LookupEntry(transmogSituation->TransmogSituationGroupID); + if (!transmogSituationGroup) + return false; + + TransmogSituationTriggerEntry const* transmogSituationTrigger = sTransmogSituationTriggerStore.LookupEntry(transmogSituationGroup->TransmogSituationTriggerID); + if (!transmogSituationTrigger) + return false; + + SituationTriggerStatus& triggers = statusByTrigger[AsUnderlyingType(transmogSituationTrigger->GetTrigger())]; + uint8* count = nullptr; + if (transmogSituation->HasFlag(TransmogSituationFlags::AllSituation)) + count = &triggers.AllSituationCount; + else if (transmogSituation->HasFlag(TransmogSituationFlags::NoneSituation)) + count = &triggers.NoneSituationCount; + else + count = &triggers.RegularSituationCount; + + *count += 1; + if (transmogSituationTrigger->HasFlag(TransmogSituationTriggerFlags::SituationsAreExclusive) && *count > 1) + return false; + } + + for (SituationTriggerStatus const& triggers : statusByTrigger) + if ((triggers.AllSituationCount > 0) + (triggers.NoneSituationCount > 0) + (triggers.RegularSituationCount > 0) > 1) // only 1 group can be active + return false; + + return true; +} + +bool TransmogMgr::ValidateSlots(std::span slots) +{ + for (WorldPackets::Transmogrification::TransmogOutfitSlotData const& slot : slots) + { + if (slot.Slot >= TransmogOutfitSlot::Max) + return false; + + if (slot.SlotOption >= TransmogOutfitSlotOption::Max) + return false; + + if (slot.AppearanceDisplayType >= TransmogOutfitDisplayType::Max) + return false; + + if (slot.IllusionDisplayType >= TransmogOutfitDisplayType::Max) + return false; + + if (!GetSlotAndOption(slot.Slot, slot.SlotOption)) + return false; + + if (slot.ItemModifiedAppearanceID) + { + ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(slot.ItemModifiedAppearanceID); + if (!itemModifiedAppearance) + return false; + + ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(itemModifiedAppearance->ItemID); + if (!itemTemplate) + return false; + + if (!IsValidTransmogOutfitSlotForItem(itemTemplate, slot.Slot, slot.SlotOption)) + return false; + + TransmogOutfitSlotOption appearanceSlotOption = itemTemplate->GetWeaponTransmogOutfitSlotOption(); + if (appearanceSlotOption != slot.SlotOption + && (slot.SlotOption != TransmogOutfitSlotOption::FuryTwoHandedWeapon + || appearanceSlotOption != TransmogOutfitSlotOption::TwoHandedWeapon)) + return false; + } + + if (slot.SpellItemEnchantmentID && !TransmogIllusionBySpellItemEnchantment.contains(slot.SpellItemEnchantmentID)) + return false; + } + + return true; +} diff --git a/src/server/game/Transmog/TransmogMgr.h b/src/server/game/Transmog/TransmogMgr.h new file mode 100644 index 0000000000000..b4bd984a3528b --- /dev/null +++ b/src/server/game/Transmog/TransmogMgr.h @@ -0,0 +1,88 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef TRINITYCORE_TRANSMOG_MGR_H +#define TRINITYCORE_TRANSMOG_MGR_H + +#include "Common.h" +#include + +class Player; +struct ItemModifiedAppearanceEntry; +struct TransmogIllusionEntry; +struct TransmogOutfitEntryEntry; +struct TransmogOutfitSlotInfoEntry; +struct TransmogOutfitSlotOptionEntry; +struct TransmogSetEntry; +struct TransmogSetItemEntry; +struct TransmogSituationEntry; +enum EquipmentSlots : uint8; +enum class TransmogOutfitEntrySource : uint8; +enum class TransmogOutfitSlot : int8; +enum class TransmogOutfitSlotOption : uint8; + +namespace WorldPackets::Transmogrification +{ +struct TransmogOutfitSituationInfo; +struct TransmogOutfitSlotData; +} + +namespace TransmogMgr +{ +struct TransmogOutfitSlotAndOptionInfo +{ + TransmogOutfitSlotInfoEntry const* Slot = nullptr; + TransmogOutfitSlotOptionEntry const* SlotOption = nullptr; + uint32 SlotIndex = 0; +}; + +inline constexpr std::array DefaultOutfitName = +{ + "Outfit"sv, + "\354\235\230\354\203\201"sv, + "Tenue"sv, + "Outfit"sv, + "\345\244\226\350\247\202\346\226\271\346\241\210"sv, + "\346\234\215\350\243\235"sv, + "Atuendo"sv, + "Indumentaria"sv, + "\320\241\320\275\320\260\321\200\321\217\320\266\320\265\320\275\320\270\320\265"sv, + ""sv, + "Roupa"sv, + "Completo"sv +}; + +inline constexpr uint32 DefaultOutfitIcon = 134400; + +void Load(); + +ItemModifiedAppearanceEntry const* GetItemModifiedAppearance(uint32 itemId, uint32 appearanceModId); +ItemModifiedAppearanceEntry const* GetDefaultItemModifiedAppearance(uint32 itemId); +TransmogIllusionEntry const* GetTransmogIllusionForSpellItemEnchantment(uint32 spellItemEnchantmentId); +std::span GetTransmogSetsForItemModifiedAppearance(uint32 itemModifiedAppearanceId); +std::span GetTransmogSetItems(uint32 transmogSetId); +std::span GetAutomaticallyUnlockedOutfits(); +std::span GetAllSlots(); +TransmogOutfitSlotAndOptionInfo const* GetSlotAndOption(TransmogOutfitSlot slot, TransmogOutfitSlotOption slotOption); +TransmogOutfitSlotAndOptionInfo const* GetSlotAndOption(EquipmentSlots inventorySlot, TransmogOutfitSlotOption slotOption); +std::span GetDefaultSituations(); +TransmogOutfitEntryEntry const* GetNextOutfitToUnlock(TransmogOutfitEntrySource source, Player const* player); +bool ValidateSituations(std::span situations); +bool ValidateSlots(std::span slots); +} + +#endif // TRINITYCORE_TRANSMOG_MGR_H diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index b53db3d6d5094..13883d3ee7696 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -96,6 +96,7 @@ #include "TaxiPathGraph.h" #include "TerrainMgr.h" #include "TraitMgr.h" +#include "TransmogMgr.h" #include "TransportMgr.h" #include "Unit.h" #include "UpdateTime.h" @@ -2066,6 +2067,9 @@ bool World::SetInitialWorldSettings() TC_LOG_INFO("server.loading", "Loading phase names..."); sObjectMgr->LoadPhaseNames(); + TC_LOG_INFO("server.loading", "Loading transmog data..."); + TransmogMgr::Load(); + uint32 startupDuration = GetMSTimeDiffToNow(startupBegin); TC_LOG_INFO("server.worldserver", "World initialized in {} minutes {} seconds", startupDuration / 60000, startupDuration % 60000 / 1000); From db698348387168d5eac6c26e8f843d4d147a8452 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 21 Mar 2026 15:26:53 +0100 Subject: [PATCH 003/175] DB: Fix base auth_database.sql --- sql/base/auth_database.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 8798c3598f174..30dc9a77de91e 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -469,7 +469,7 @@ DROP TABLE IF EXISTS `battlenet_account_transmog_outfits`; CREATE TABLE `battlenet_account_transmog_outfits` ( `battlenetAccountId` int unsigned NOT NULL, `transmogOutfitId` int NOT NULL DEFAULT '0', - PRIMARY KEY (`battlenetAccountId`,`blobIndex`), + PRIMARY KEY (`battlenetAccountId`,`transmogOutfitId`), CONSTRAINT `fk_battlenet_account_transmog_outfits` FOREIGN KEY (`battlenetAccountId`) REFERENCES `battlenet_accounts` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; From 02e4fb5f823e5115b20d3260782f42f2a93f1078 Mon Sep 17 00:00:00 2001 From: Traesh Date: Sat, 21 Mar 2026 15:27:19 +0100 Subject: [PATCH 004/175] Core/GameObjects: Initialize gameobject type before creating its model --- src/server/game/Entities/GameObject/GameObject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 00b11546a4341..d4f52918babd5 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1076,9 +1076,9 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD SetDisplayId(goInfo->displayId); - CreateModel(); // GAMEOBJECT_BYTES_1, index at 0, 1, 2 and 3 SetGoType(GameobjectTypes(goInfo->type)); + CreateModel(); m_prevGoState = goState; SetGoState(goState); SetGoArtKit(artKit); From 92b9410b7af042bd9cbbfbc25b117559c6300df3 Mon Sep 17 00:00:00 2001 From: Traesh Date: Sat, 21 Mar 2026 15:27:19 +0100 Subject: [PATCH 005/175] Core/GameObjects: Implement "EnableDoodadSets" for phaseableMO gameobject type --- src/server/game/Entities/GameObject/GameObject.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index d4f52918babd5..7911d88a3c971 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1147,6 +1147,12 @@ bool GameObject::Create(uint32 entry, Map* map, Position const& pos, QuaternionD case GAMEOBJECT_TYPE_PHASEABLE_MO: RemoveFlag(GameObjectFlags(0xF00)); SetFlag(GameObjectFlags((m_goInfo->phaseableMO.AreaNameSet & 0xF) << 8)); + + if (GetGOInfo()->phaseableMO.DoodadSetA) + AddDynamicUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::EnableDoodadSets)) = static_cast(GetGOInfo()->phaseableMO.DoodadSetA); + + if (GetGOInfo()->phaseableMO.DoodadSetB) + AddDynamicUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::EnableDoodadSets)) = static_cast(GetGOInfo()->phaseableMO.DoodadSetB); break; case GAMEOBJECT_TYPE_CAPTURE_POINT: SetUpdateFieldValue(m_values.ModifyValue(&GameObject::m_gameObjectData).ModifyValue(&UF::GameObjectData::SpellVisualID), m_goInfo->capturePoint.SpellVisual1); From e7b57e2bb2969be9fd89d683b2ae0ec08eb1b96a Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 21 Mar 2026 21:31:07 +0100 Subject: [PATCH 006/175] Core/Transmog: Fixed character select screen transmog when no transmog outfit has been filled --- src/server/game/Entities/Player/Player.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 70534d6b5f589..bd832a8ba5eec 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -31439,11 +31439,7 @@ std::string Player::GetCharacterSelectOutfit() const uint32 itemModifiedAppearanceId = transmogOutfitSlot.ItemModifiedAppearanceID; if (!isTransmogDisplayed(static_cast(*transmogOutfitSlot.AppearanceDisplayType))) - itemModifiedAppearanceId = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex].ItemModifiedAppearanceID; - - uint32 spellItemEnchantmentId = transmogOutfitSlot.SpellItemEnchantmentID; - if (!isTransmogDisplayed(static_cast(*transmogOutfitSlot.IllusionDisplayType))) - spellItemEnchantmentId = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex].SpellItemEnchantmentID; + itemModifiedAppearanceId = m_playerData->VisibleItems[i].ItemModifiedAppearanceID; InventoryType inventoryType = INVTYPE_NON_EQUIP; int32 displayId = 0; @@ -31462,9 +31458,12 @@ std::string Player::GetCharacterSelectOutfit() const displayId = itemAppearance->ItemDisplayInfoID; } - if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(spellItemEnchantmentId)) + if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(transmogOutfitSlot.SpellItemEnchantmentID)) itemVisual = spellItemEnchantment->ItemVisual; + if (!isTransmogDisplayed(static_cast(*transmogOutfitSlot.IllusionDisplayType))) + itemVisual = m_playerData->VisibleItems[i].ItemVisual; + if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) { if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) @@ -31473,7 +31472,7 @@ std::string Player::GetCharacterSelectOutfit() const secondaryItemModifiedAppearanceId = secondaryTransmogOutfitSlot.ItemModifiedAppearanceID; if (!isTransmogDisplayed(static_cast(*secondaryTransmogOutfitSlot.AppearanceDisplayType))) - secondaryItemModifiedAppearanceId = m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex].ItemModifiedAppearanceID; + secondaryItemModifiedAppearanceId = m_playerData->VisibleItems[i].SecondaryItemModifiedAppearanceID; } } From 1984bd4564f6c93b98379ebfd0e8bd11bbdc9b0a Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 22 Mar 2026 00:26:23 +0100 Subject: [PATCH 007/175] Core/Players: Fixed custom playercreateinfo_item using 0 in race/class columns (should apply to all races/classes) --- src/server/game/Globals/ObjectMgr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index dc23ab27c269c..38059da292902 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4008,14 +4008,14 @@ void ObjectMgr::LoadPlayerInfo() Field* fields = result->Fetch(); uint32 current_race = fields[0].GetUInt8(); - if (!sChrRacesStore.HasRecord(current_race)) + if (current_race && !sChrRacesStore.HasRecord(current_race)) { TC_LOG_ERROR("sql.sql", "Wrong race {} in `playercreateinfo_item` table, ignoring.", current_race); continue; } uint32 current_class = fields[1].GetUInt8(); - if (!sChrClassesStore.HasRecord(current_class)) + if (current_class && !sChrClassesStore.HasRecord(current_class)) { TC_LOG_ERROR("sql.sql", "Wrong class {} in `playercreateinfo_item` table, ignoring.", current_class); continue; From ddf40a67e06508de40b3b9019e2ca8b12539d207 Mon Sep 17 00:00:00 2001 From: Naddley Date: Sun, 22 Mar 2026 11:14:37 +0100 Subject: [PATCH 008/175] DB/MaisaraCaverns: Added spawns up to Muro'jin and Nekraxx --- .../world/master/2026_03_22_00_world.sql | 1197 +++++++++++++++++ 1 file changed, 1197 insertions(+) create mode 100644 sql/updates/world/master/2026_03_22_00_world.sql diff --git a/sql/updates/world/master/2026_03_22_00_world.sql b/sql/updates/world/master/2026_03_22_00_world.sql new file mode 100644 index 0000000000000..71e3857edf0c4 --- /dev/null +++ b/sql/updates/world/master/2026_03_22_00_world.sql @@ -0,0 +1,1197 @@ +SET @CGUID := 11000016; +SET @OGUID := 11000000; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+375; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -755.125, 371.4132080078125, 160.09710693359375, 5.34438943862915039, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+1, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -743.98785400390625, 353.265625, 171.6817169189453125, 0.739062368869781494, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+2, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -749.06768798828125, 391.2569580078125, 160.327178955078125, 0.497320294380187988, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+3, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -769.8819580078125, 348.673614501953125, 160.176544189453125, 1.989690661430358886, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+4, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -728.20489501953125, 344.708343505859375, 172.1016845703125, 5.722148895263671875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+5, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -744.8680419921875, 390.645843505859375, 160.3202667236328125, 2.319268226623535156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+6, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -739.65802001953125, 408.170135498046875, 151.7335052490234375, 1.600904464721679687, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+7, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -740.52777099609375, 357.232635498046875, 171.6817169189453125, 4.741362571716308593, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+8, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -759.77606201171875, 360.625, 160.09088134765625, 0.273292005062103271, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+9, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -750.17535400390625, 353.104156494140625, 160.0968170166015625, 1.565504670143127441, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+10, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -740.83331298828125, 393.618072509765625, 149.4138946533203125, 5.231813430786132812, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+11, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -725.62847900390625, 348.142364501953125, 172.1156768798828125, 5.199656963348388671, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+12, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -756.91839599609375, 355.8125, 160.0973968505859375, 0.789829134941101074, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+13, 253302, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -720.8507080078125, 402.664947509765625, 150.41534423828125, 0.916049659252166748, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hex Guardian (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1263090 - [DNT], 1263096 - [DNT], 1258480 - Searing Presence, 18950 - Invisibility and Stealth Detection) +(@CGUID+14, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -739.81427001953125, 364.4132080078125, 160.087127685546875, 3.32840895652770996, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+15, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -751.10247802734375, 339.465118408203125, 171.88323974609375, 6.229412078857421875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+16, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -751.7523193359375, 338.2176513671875, 160.144012451171875, 3.189324855804443359, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+17, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -743.59722900390625, 355.4600830078125, 160.313995361328125, 2.139410018920898437, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+18, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -759.73956298828125, 366.361114501953125, 171.6817169189453125, 1.483146309852600097, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+19, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -739.4617919921875, 351.46527099609375, 171.6817169189453125, 1.898134112358093261, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+20, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -740.3819580078125, 359.62152099609375, 160.096832275390625, 2.721970081329345703, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+21, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -758.3975830078125, 370.126739501953125, 171.6817169189453125, 4.140065193176269531, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+22, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -728.18927001953125, 403.836822509765625, 150.914215087890625, 0.256596624851226806, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+23, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -759.1475830078125, 366.357635498046875, 160.0971221923828125, 6.007386207580566406, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+24, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -754.490234375, 345.9296875, 149.016876220703125, 5.101409435272216796, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+25, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -717.19525146484375, 365.51605224609375, 148.8572540283203125, 1.674197196960449218, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+26, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -718.063720703125, 378.20263671875, 148.705169677734375, 3.997442245483398437, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+27, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -716.52606201171875, 409.227447509765625, 150.5846405029296875, 3.897585153579711914, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+28, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -807.291015625, 358.333984375, 150.879852294921875, 0.329843699932098388, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+29, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -715.19122314453125, 377.378204345703125, 163.8780975341796875, 4.770196914672851562, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+30, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -759.86773681640625, 349.950469970703125, 152.3772735595703125, 4.205904960632324218, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+31, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -748.83331298828125, 367.87152099609375, 159.135528564453125, 0.910333991050720214, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+32, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -780.3455810546875, 350.7908935546875, 149.18450927734375, 5.141106128692626953, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+33, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -692.22393798828125, 393.58160400390625, 157.126861572265625, 0.132277086377143859, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+34, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -704.07244873046875, 312.548583984375, 149.6251373291015625, 3.155421733856201171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+35, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -716.97393798828125, 395.079864501953125, 150.425537109375, 1.585247635841369628, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+36, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -742.3507080078125, 411.399322509765625, 151.770477294921875, 5.744394302368164062, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+37, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -776.84027099609375, 403.9132080078125, 150.3783416748046875, 2.464860439300537109, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+38, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -766.18048095703125, 390.432159423828125, 148.953277587890625, 2.76351475715637207, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+39, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -709.3253173828125, 326.29180908203125, 149.8002471923828125, 2.015007972717285156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+40, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -798.1475830078125, 390.69964599609375, 152.175506591796875, 4.468144893646240234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+41, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -774.90423583984375, 379.16925048828125, 148.935638427734375, 5.791627883911132812, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+42, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -746.48248291015625, 384.250213623046875, 151.4430999755859375, 2.836532354354858398, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+43, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -781.34375, 407.821197509765625, 150.391265869140625, 5.740039348602294921, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+44, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -759.35107421875, 357.727294921875, 148.921661376953125, 6.190044879913330078, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+45, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -733.7144775390625, 362.893829345703125, 148.8835601806640625, 4.501299381256103515, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+46, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -801.759765625, 346.82421875, 150.9552001953125, 4.240354537963867187, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+47, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -745.98785400390625, 366.00347900390625, 159.094573974609375, 0.998561322689056396, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+48, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -755.68927001953125, 351.23785400390625, 171.7568359375, 4.293309688568115234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+49, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -749.670166015625, 265.197906494140625, 128.55120849609375, 5.382216453552246093, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+50, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -675.96148681640625, 329.46209716796875, 149.5182952880859375, 1.661783576011657714, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+51, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -699.49652099609375, 432.435760498046875, 151.08062744140625, 0.569790244102478027, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+52, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -691.966064453125, 337.674530029296875, 153.3903350830078125, 2.993183612823486328, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+53, 248678, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -791.0625, 441.6632080078125, 150.537261962890625, 4.131456375122070312, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hulking Juggernaut (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+54, 253159, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -803.2430419921875, 388.03472900390625, 152.542633056640625, 1.553679704666137695, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Training Dummy (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 349892 - [DNT] No Parry, 98892 - Training Dummy Marker) +(@CGUID+55, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -680.59130859375, 305.066986083984375, 154.656982421875, 1.86789095401763916, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+56, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -719.0555419921875, 424.06597900390625, 150.50787353515625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+57, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -691.48822021484375, 360.8211669921875, 148.9806060791015625, 3.50759744644165039, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+58, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -718.66265869140625, 308.741668701171875, 150.410247802734375, 1.85835731029510498, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+59, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -808.875, 390.454864501953125, 151.7478790283203125, 4.950809478759765625, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+60, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -689.9947509765625, 366.1937255859375, 149.179443359375, 2.665259122848510742, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+61, 253159, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -736.625, 442.342010498046875, 151.028594970703125, 4.629893302917480468, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Training Dummy (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 349892 - [DNT] No Parry, 98892 - Training Dummy Marker) +(@CGUID+62, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -697.2156982421875, 306.26300048828125, 149.179595947265625, 4.061985969543457031, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+63, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -838.804931640625, 361.68505859375, 151.3843841552734375, 2.152259588241577148, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+64, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -716.1669921875, 300.08367919921875, 150.600830078125, 2.339224100112915039, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+65, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -740.64581298828125, 438.1007080078125, 151.023193359375, 1.915590405464172363, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+66, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -769.38836669921875, 271.874298095703125, 126.5502166748046875, 6.078507423400878906, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+67, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -840.34722900390625, 364.84722900390625, 151.323486328125, 3.24633646011352539, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+68, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -691.8350830078125, 397.399322509765625, 156.541839599609375, 5.861034870147705078, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+69, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -736.70489501953125, 439.1632080078125, 151.1525421142578125, 1.549524545669555664, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+70, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -784.1805419921875, 274.414947509765625, 125.2244033813476562, 5.334950447082519531, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+71, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -815.59375, 299.586822509765625, 125.901702880859375, 5.379238605499267578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+72, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -774.22222900390625, 439.7725830078125, 150.543670654296875, 3.079525947570800781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+73, 211151, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -779.046875, 439.38714599609375, 150.543670654296875, 1.712825298309326171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+74, 253159, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -808.18231201171875, 388.180572509765625, 152.17242431640625, 1.752556562423706054, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Training Dummy (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 349892 - [DNT] No Parry, 98892 - Training Dummy Marker) +(@CGUID+75, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -730.92138671875, 295.611572265625, 151.0888824462890625, 4.231313705444335937, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+76, 253159, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -741.7569580078125, 441.4375, 150.7606658935546875, 5.036854743957519531, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Training Dummy (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 349892 - [DNT] No Parry, 98892 - Training Dummy Marker) +(@CGUID+77, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -710.54669189453125, 282.898651123046875, 150.026397705078125, 1.397456884384155273, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+78, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -683.61602783203125, 316.72637939453125, 149.8967132568359375, 3.862242698669433593, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+79, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -670.83306884765625, 310.28131103515625, 151.654998779296875, 1.442458748817443847, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+80, 211137, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -785.02606201171875, 438.6944580078125, 150.543609619140625, 0.875669717788696289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+81, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -692.68231201171875, 437.13714599609375, 151.293975830078125, 4.497735977172851562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+82, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -694.1781005859375, 318.070709228515625, 149.123443603515625, 2.456245183944702148, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+83, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -684.578125, 390.869781494140625, 155.4986724853515625, 2.573674678802490234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+84, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -728.2742919921875, 278.239593505859375, 149.5118408203125, 2.567630290985107421, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+85, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -714.36993408203125, 368.719268798828125, 178.8154754638671875, 2.676525354385375976, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+86, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -714.82098388671875, 335.11077880859375, 150.815765380859375, 6.093178272247314453, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+87, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -688.25518798828125, 429.708343505859375, 151.638885498046875, 1.945652246475219726, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+88, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -764.644775390625, 400.02740478515625, 164.090972900390625, 1.980341672897338867, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+89, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -694.50128173828125, 353.522613525390625, 151.521881103515625, 5.311586856842041015, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+90, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -710.2215576171875, 337.744476318359375, 150.4415283203125, 3.026194095611572265, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+91, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -736.10418701171875, 445.75, 150.681549072265625, 4.518976211547851562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+92, 253159, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -798.8038330078125, 387.5382080078125, 152.37835693359375, 1.152986764907836914, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Training Dummy (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 349892 - [DNT] No Parry, 98892 - Training Dummy Marker) +(@CGUID+93, 248678, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -677.7275390625, 410.545989990234375, 153.326141357421875, 5.630703926086425781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hulking Juggernaut (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+94, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -802.91668701171875, 391.243072509765625, 152.16485595703125, 4.539700984954833984, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+95, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -694.07464599609375, 430.0225830078125, 150.998260498046875, 1.250737667083740234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+96, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -729.89288330078125, 274.515960693359375, 149.54461669921875, 5.710870742797851562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+97, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -683.29876708984375, 349.976776123046875, 148.9154205322265625, 2.363880872726440429, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+98, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -778.67535400390625, 451.453125, 150.3653411865234375, 4.310792922973632812, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+99, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -696.353515625, 285.89727783203125, 149.7771453857421875, 4.712388992309570312, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+100, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -695.3822021484375, 284.4808349609375, 150.1278228759765625, 4.340045452117919921, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+101, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -823.31097412109375, 316.23626708984375, 131.867889404296875, 3.60490727424621582, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+102, 211152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -779.86285400390625, 446.0069580078125, 150.543670654296875, 5.071795463562011718, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+103, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -769.44964599609375, 451.371307373046875, 159.5469818115234375, 3.57187652587890625, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+104, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -783.2725830078125, 446.989593505859375, 150.543670654296875, 3.970919132232666015, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+105, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -716.28125, 444.41796875, 150.111907958984375, 1.398285865783691406, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+106, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -780.61285400390625, 442.76910400390625, 150.543670654296875, 3.166081190109252929, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+107, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -697.31756591796875, 438.906524658203125, 159.5220489501953125, 0.503473997116088867, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+108, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -833.03472900390625, 332.375, 123.6260452270507812, 3.735750436782836914, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+109, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -791.513916015625, 439.88714599609375, 150.5356903076171875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+110, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -714.2886962890625, 449.565765380859375, 149.31396484375, 4.848636627197265625, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+111, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -793.9122314453125, 283.028564453125, 130.4992218017578125, 0.838172733783721923, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+112, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -847.1961669921875, 330.086822509765625, 123.5467376708984375, 5.790504932403564453, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+113, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -768.63275146484375, 269.735870361328125, 135.7511444091796875, 5.650535106658935546, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+114, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -845.11834716796875, 383.19207763671875, 151.4047393798828125, 1.171506524085998535, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+115, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -754.31353759765625, 455.99200439453125, 149.675201416015625, 1.903046727180480957, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+116, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -838.3992919921875, 325.817718505859375, 123.4580535888671875, 0.986575484275817871, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+117, 254680, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -782.154541015625, 444.44097900390625, 150.543670654296875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+118, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -722.71844482421875, 447.112518310546875, 156.6802520751953125, 5.742448806762695312, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+119, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -678.510498046875, 298.72601318359375, 149.2476806640625, 1.699747085571289062, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+120, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -774.01214599609375, 447.329864501953125, 150.50701904296875, 3.122586250305175781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+121, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -761.185791015625, 261.227447509765625, 126.6808624267578125, 4.796905040740966796, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+122, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -651.76318359375, 362.067291259765625, 171.212158203125, 5.616149425506591796, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+123, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -825.14544677734375, 287.718994140625, 123.7036361694335937, 2.22062993049621582, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+124, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -766.47735595703125, 252.2652587890625, 125.1913070678710937, 5.690472126007080078, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+125, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -706.29296875, 468.651947021484375, 150.5048828125, 5.208477020263671875, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+126, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -828.81103515625, 284.278564453125, 123.5362396240234375, 2.220592975616455078, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+127, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -633.93231201171875, 390.65972900390625, 167.1510162353515625, 2.023930549621582031, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+128, 211150, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -644.41668701171875, 361.251739501953125, 161.177764892578125, 5.473778247833251953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+129, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -636.63714599609375, 356.92535400390625, 161.5084991455078125, 3.148540019989013671, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+130, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -763.0751953125, 252.888336181640625, 125.2505950927734375, 0.113627016544342041, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+131, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -768.8643798828125, 253.190826416015625, 125.0555496215820312, 2.74375319480895996, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+132, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -678.52911376953125, 280.49957275390625, 154.6171417236328125, 4.390234947204589843, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+133, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -719.89215087890625, 472.390533447265625, 150.170196533203125, 4.726924419403076171, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+134, 211150, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -788.16668701171875, 448.34375, 150.5614166259765625, 5.473778247833251953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+135, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -752.96783447265625, 258.606231689453125, 132.0280303955078125, 5.562935829162597656, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+136, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -765.213623046875, 249.0655059814453125, 125.2789993286132812, 5.151816844940185546, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+137, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -685.9913330078125, 266.508697509765625, 152.120269775390625, 5.52223825454711914, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+138, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -643.78302001953125, 357.51214599609375, 161.2349700927734375, 0.138099819421768188, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+139, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -762.9129638671875, 250.2885284423828125, 125.199127197265625, 2.722287178039550781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+140, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -677.047607421875, 437.851776123046875, 151.003082275390625, 5.079843521118164062, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+141, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -670.2274169921875, 280.071197509765625, 149.8128509521484375, 0.597534000873565673, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+142, 211149, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -783.7882080078125, 452.489593505859375, 150.545135498046875, 0.080561690032482147, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+143, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -691.1875, 262.13714599609375, 152.411285400390625, 1.095765113830566406, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+144, 253302, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -663.90625, 276.90972900390625, 149.149749755859375, 1.456340551376342773, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hex Guardian (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1263090 - [DNT], 1263096 - [DNT], 1258480 - Searing Presence, 18950 - Invisibility and Stealth Detection) +(@CGUID+145, 211152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -645.93231201171875, 353.369781494140625, 160.726837158203125, 5.071795463562011718, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+146, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -636.35418701171875, 356.37847900390625, 161.5944976806640625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+147, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -686.43402099609375, 257.557281494140625, 152.37451171875, 0.525339424610137939, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+148, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -810.43402099609375, 463.227447509765625, 149.9151763916015625, 1.115657806396484375, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+149, 211149, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -637.8211669921875, 362.7725830078125, 161.461517333984375, 0.080561690032482147, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+150, 211151, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -633.07989501953125, 349.670135498046875, 161.0665435791015625, 1.712825298309326171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+151, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -830.24481201171875, 284.02777099609375, 123.6313934326171875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+152, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -783.75225830078125, 466.991119384765625, 149.1885528564453125, 2.555507183074951171, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+153, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -639.63543701171875, 350.017364501953125, 160.980255126953125, 0.877036452293395996, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+154, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -660.42535400390625, 284.010406494140625, 150.763702392578125, 1.183813929557800292, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+155, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -716.73828125, 467.952667236328125, 149.98486328125, 4.849271774291992187, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+156, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -721.80902099609375, 245.751739501953125, 149.5104827880859375, 4.926103591918945312, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+157, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -722.138916015625, 236.5711822509765625, 148.6917724609375, 0.709236025810241699, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+158, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -672.05047607421875, 275.8524169921875, 158.4639892578125, 2.341111183166503906, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+159, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -632.2882080078125, 384.670135498046875, 166.1883697509765625, 4.716266632080078125, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+160, 247572, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -919.3367919921875, 165.4270782470703125, 99.84523773193359375, 0.485492140054702758, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Nekraxx (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+161, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -663.23089599609375, 284.87152099609375, 150.61865234375, 1.739864468574523925, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+162, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -625.1959228515625, 337.536224365234375, 159.69256591796875, 1.57470250129699707, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+163, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -656.40625, 282.2569580078125, 151.915802001953125, 2.453529834747314453, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+164, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -630.1705322265625, 337.435302734375, 159.5677490234375, 1.562983989715576171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+165, 211137, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -641.17535400390625, 345.826385498046875, 160.805450439453125, 0.875669717788696289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+166, 253302, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -860.6785888671875, 389.9237060546875, 138.684173583984375, 4.228639602661132812, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hex Guardian (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1263089 - [DNT], 1263096 - [DNT], 1258480 - Searing Presence, 18950 - Invisibility and Stealth Detection) +(@CGUID+167, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -833.10369873046875, 281.662445068359375, 123.631134033203125, 2.220317840576171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+168, 254680, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -640.3125, 354.12152099609375, 161.2733612060546875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+169, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -636.85980224609375, 388.73846435546875, 175.3899688720703125, 3.86331343650817871, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+170, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -791.10394287109375, 233.159423828125, 128.3606414794921875, 3.598108291625976562, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+171, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -627.47393798828125, 282.963531494140625, 151.013671875, 4.567312240600585937, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+172, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -691.8681640625, 468.800628662109375, 150.9369964599609375, 3.716125726699829101, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+173, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -832.14410400390625, 249.720489501953125, 123.9630584716796875, 0.790923655033111572, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+174, 248678, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -704.91668701171875, 233.3246612548828125, 147.572906494140625, 5.465989112854003906, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hulking Juggernaut (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+175, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -780.67669677734375, 471.453460693359375, 163.782501220703125, 3.686596870422363281, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+176, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -686.12994384765625, 479.515106201171875, 149.9635467529296875, 4.510018348693847656, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+177, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -708.40814208984375, 475.086212158203125, 150.32659912109375, 2.98554396629333496, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+178, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -633.75, 281.1319580078125, 149.914642333984375, 5.29331207275390625, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+179, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -613.00518798828125, 330.58160400390625, 160.3414764404296875, 1.688739776611328125, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+180, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -838.14410400390625, 254.532989501953125, 123.8361129760742187, 0.988258600234985351, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+181, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -662.71527099609375, 244.7934112548828125, 149.371917724609375, 4.287086009979248046, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+182, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -817.78924560546875, 460.4061279296875, 150.673065185546875, 4.872944355010986328, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+183, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -703.5694580078125, 224.998260498046875, 146.0625, 1.653272271156311035, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+184, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -610.16668701171875, 333.1875, 161.318878173828125, 2.779189586639404296, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+185, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -883.17877197265625, 385.7796630859375, 156.793792724609375, 0.445529371500015258, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+186, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -798.005859375, 232.166015625, 126.820892333984375, 0.007082302588969469, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+187, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -692.2340087890625, 473.87860107421875, 150.76361083984375, 5.074171066284179687, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+188, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -830.165283203125, 462.360504150390625, 163.497802734375, 5.851043701171875, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+189, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -717.28302001953125, 240.607635498046875, 149.423248291015625, 0.647428333759307861, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+190, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -827.314697265625, 453.21661376953125, 156.1149444580078125, 5.538033962249755859, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+191, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -697.07989501953125, 231.6788177490234375, 148.1875, 2.97649693489074707, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+192, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -717.55206298828125, 244.7743072509765625, 149.393463134765625, 5.313076972961425781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+193, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -876.21356201171875, 291.651031494140625, 125.78399658203125, 5.724179267883300781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+194, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -679.3961181640625, 478.0882568359375, 163.8956298828125, 5.270673751831054687, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+195, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -802.90106201171875, 496.99652099609375, 157.027252197265625, 3.474299192428588867, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+196, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -664.95660400390625, 241.015625, 149.11663818359375, 1.072641372680664062, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+197, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -774.64239501953125, 502.65625, 157.793609619140625, 1.089646220207214355, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+198, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -792.046875, 224.1996612548828125, 130.38824462890625, 1.571496248245239257, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+199, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -740.575439453125, 211.1124114990234375, 135.655487060546875, 5.311760902404785156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+200, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -867.50177001953125, 289.619781494140625, 124.8030929565429687, 3.225272893905639648, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+201, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 3, -768.90802001953125, 509.739593505859375, 157.793609619140625, 4.079102993011474609, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+202, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -746.57720947265625, 497.661224365234375, 166.924285888671875, 5.604392051696777343, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+203, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -872.87677001953125, 283.84027099609375, 125.337066650390625, 1.163340091705322265, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+204, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 3, -767.76910400390625, 506.244781494140625, 157.793609619140625, 3.151291370391845703, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+205, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -840.84893798828125, 248.2552032470703125, 123.70721435546875, 0.929230690002441406, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+206, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -628.26214599609375, 273.1632080078125, 154.4221649169921875, 1.54196333885192871, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+207, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -806.7257080078125, 489.545135498046875, 158.027740478515625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+208, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 3, -774.388916015625, 508.982635498046875, 157.793609619140625, 5.903186321258544921, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+209, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -811.82464599609375, 494.423614501953125, 157.0267333984375, 0.043513387441635131, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+210, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -613.3868408203125, 351.75396728515625, 170.259796142578125, 4.074642181396484375, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+211, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -598.1649169921875, 329.109375, 162.383026123046875, 2.263371706008911132, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+212, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -896.045166015625, 379.727447509765625, 156.940277099609375, 1.610793232917785644, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+213, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -826.38018798828125, 243.0746612548828125, 123.746612548828125, 0.506741523742675781, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+214, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -832.93927001953125, 241.09375, 123.33941650390625, 0.417199105024337768, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+215, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -733.46533203125, 214.88714599609375, 136.5810699462890625, 5.31349039077758789, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+216, 255027, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -775.2672119140625, 225.972564697265625, 129.1671905517578125, 3.845318078994750976, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Grotto Spiderling (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+217, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -666.5850830078125, 244.6059112548828125, 150.5262451171875, 5.758709907531738281, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+218, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -900.125, 397.00347900390625, 156.037109375, 1.472277998924255371, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+219, 211151, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -801.66143798828125, 502.3819580078125, 157.028656005859375, 1.712825298309326171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+220, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -869.61456298828125, 286.513885498046875, 125.1510467529296875, 2.121387243270874023, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+221, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -868.327392578125, 454.798675537109375, 152.5287017822265625, 0.130541548132896423, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+222, 211150, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -814.16668701171875, 493.1875, 157.0272216796875, 5.473778247833251953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+223, 211137, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -802.3367919921875, 494.420135498046875, 157.0260162353515625, 0.875669717788696289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+224, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -598.5867919921875, 317.852447509765625, 160.801025390625, 1.416203022003173828, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+225, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -593.29168701171875, 322.173614501953125, 162.049163818359375, 3.944760560989379882, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+226, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -892.1180419921875, 406.373260498046875, 156.385223388671875, 3.092969655990600585, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+227, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -871.89239501953125, 292, 125.2604293823242187, 4.294780731201171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+228, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -640.55035400390625, 234.4375, 149.4617919921875, 5.898277759552001953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+229, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -754.69427490234375, 513.194091796875, 164.4179534912109375, 0.81971752643585205, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+230, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -894.93402099609375, 399.322906494140625, 156.24871826171875, 2.113661527633666992, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+231, 254680, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -808.123291015625, 496.739593505859375, 157.0281982421875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+232, 211149, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -815.1649169921875, 499.907989501953125, 157.0276947021484375, 0.080561690032482147, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+233, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -806.9600830078125, 492.07464599609375, 157.028656005859375, 1.689812421798706054, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+234, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 2, -842.87677001953125, 490.53125, 157.947998046875, 1.037015795707702636, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+235, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -904.9305419921875, 398.76910400390625, 155.848907470703125, 0.975073277950286865, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+236, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -876.05206298828125, 288.135406494140625, 126.0920181274414062, 0.53470844030380249, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+237, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -722.0526123046875, 511.026275634765625, 173.744781494140625, 0.934515655040740966, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+238, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 3, -839.217041015625, 491.833343505859375, 157.9480438232421875, 2.382233858108520507, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+239, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -837.88714599609375, 495.09027099609375, 157.7906494140625, 2.606711387634277343, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269901 - Carry Drink Tray) +(@CGUID+240, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -594.46527099609375, 397.979156494140625, 184.3173828125, 6.253313064575195312, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+241, 211152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -807.72052001953125, 500.7569580078125, 157.02783203125, 5.071795463562011718, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+242, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -893.60589599609375, 447.967010498046875, 153.6489105224609375, 4.375359058380126953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+243, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -674.3507080078125, 206.671875, 147.270111083984375, 3.621089458465576171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+244, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -677.8992919921875, 207.11285400390625, 146.545440673828125, 4.532846927642822265, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+245, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -598.152587890625, 307.526702880859375, 172.9702911376953125, 3.842673778533935546, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+246, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 2, -846.29168701171875, 494.015625, 157.793609619140625, 5.715224742889404296, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+247, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -893.01336669921875, 457.118804931640625, 154.6060638427734375, 0.8424224853515625, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+248, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -576.9149169921875, 376.25347900390625, 185.633758544921875, 0.863437294960021972, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+249, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -856.09686279296875, 479.69775390625, 161.5823974609375, 2.938875436782836914, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+250, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -908.4132080078125, 404.7725830078125, 155.341949462890625, 0.166267007589340209, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+251, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -894.98614501953125, 440.670135498046875, 153.776031494140625, 1.29119265079498291, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+252, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -805.42706298828125, 518.921875, 158.2586212158203125, 5.507002830505371093, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+253, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -799.890625, 516.967041015625, 158.2585296630859375, 3.263515710830688476, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+254, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -634.57293701171875, 231.7465362548828125, 149.1197052001953125, 2.11248183250427246, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+255, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -860.432861328125, 475.348602294921875, 149.037506103515625, 1.013457894325256347, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+256, 248678, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -915.4444580078125, 317.796875, 122.7542724609375, 3.460182666778564453, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hulking Juggernaut (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+257, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -900.140625, 401.24652099609375, 155.742523193359375, 0.580395460128784179, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+258, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -633.63714599609375, 238.75, 149.5818328857421875, 4.481818199157714843, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+259, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -819.95660400390625, 515.36981201171875, 158.2585906982421875, 4.305006027221679687, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+260, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -718.8819580078125, 190.8055572509765625, 140.84619140625, 4.566547870635986328, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+261, 249020, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -902.89422607421875, 422.697021484375, 156.7493743896484375, 0.202464491128921508, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hexbound Eagle (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1256584 - Diseased Claws) +(@CGUID+262, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -912.535400390625, 310.332550048828125, 122.837493896484375, 3.460364818572998046, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+263, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -680.85589599609375, 198.3385467529296875, 146.13397216796875, 1.096265792846679687, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+264, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -823.998291015625, 511.0625, 158.258575439453125, 0.449871808290481567, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+265, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -591.35260009765625, 321.22705078125, 176.376922607421875, 5.769391536712646484, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+266, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 3, -841.7742919921875, 496.39410400390625, 157.793609619140625, 4.347009658813476562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+267, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -917.558837890625, 325.523590087890625, 123.5002899169921875, 3.460689544677734375, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+268, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -727.26043701171875, 185.4444427490234375, 140.7832183837890625, 5.522356033325195312, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+269, 211137, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -894.217041015625, 452.251739501953125, 154.2734832763671875, 0.875669717788696289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+270, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -709.5555419921875, 184.1840362548828125, 141.8333282470703125, 3.572663545608520507, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+271, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -892.58331298828125, 444.270843505859375, 153.197906494140625, 1.225085020065307617, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+272, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -679.46356201171875, 203.0590362548828125, 146.4674224853515625, 5.126857757568359375, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+273, 211149, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -903.21356201171875, 437.19964599609375, 155.0361480712890625, 0.080561690032482147, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+274, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -864.26568603515625, 492.768218994140625, 164.6216583251953125, 5.098380565643310546, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+275, 253302, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -720.6007080078125, 179.1041717529296875, 142.373260498046875, 0.680092513561248779, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hex Guardian (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1263090 - [DNT], 1263096 - [DNT], 1258480 - Searing Presence, 18950 - Invisibility and Stealth Detection) +(@CGUID+276, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -919.20068359375, 394.23931884765625, 157.05474853515625, 5.265244960784912109, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+277, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -895.77081298828125, 445.635406494140625, 153.734375, 0.480973809957504272, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+278, 254680, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -584.16839599609375, 373.15625, 182.595855712890625, 1.293682694435119628, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+279, 211150, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -898.44268798828125, 439.461822509765625, 154.474517822265625, 5.473778247833251953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+280, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -895.05731201171875, 445.5, 153.6112213134765625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+281, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -661.97393798828125, 196.17535400390625, 154.8156585693359375, 2.829250812530517578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+282, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -905.53302001953125, 445.4375, 154.7114715576171875, 0.427287161350250244, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+283, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -667.09332275390625, 209.13690185546875, 155.18438720703125, 0.997213542461395263, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+284, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -732.87847900390625, 177.7118072509765625, 143.1961822509765625, 0.112922877073287963, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+285, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -676.24652099609375, 200.9809112548828125, 146.8842315673828125, 2.121387243270874023, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+286, 255025, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -737.3978271484375, 185.2481536865234375, 150.714569091796875, 2.021303176879882812, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Veil Moth (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+287, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -565.8194580078125, 394.979156494140625, 189.9952850341796875, 0.507042229175567626, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+288, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -670.92767333984375, 201.521148681640625, 146.7350616455078125, 6.267896652221679687, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+289, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -895.232666015625, 443.232635498046875, 153.65625, 5.71959686279296875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+290, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -597.59722900390625, 393.217010498046875, 182.1085662841796875, 5.649900436401367187, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+291, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -667.58856201171875, 193.0121612548828125, 154.885223388671875, 1.185145020484924316, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+292, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -651.15106201171875, 178.8993072509765625, 153.7342987060546875, 5.121004104614257812, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+293, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -733.21875, 162.642364501953125, 143.089202880859375, 0.802441298961639404, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+294, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -687.6129150390625, 170.01690673828125, 146.303253173828125, 1.065266251564025878, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+295, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -654.1788330078125, 182.204864501953125, 166.4239654541015625, 2.126428127288818359, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+296, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -924.18524169921875, 295.20928955078125, 133.2287139892578125, 3.745895862579345703, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+297, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -655.208984375, 200, 143.45135498046875, 4.365431785583496093, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+298, 211152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -907.06768798828125, 448.05035400390625, 154.731231689453125, 5.071795463562011718, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+299, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -846.320068359375, 517.36016845703125, 149.568450927734375, 0.262994736433029174, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+300, 211151, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -899.87677001953125, 456.734375, 155.084442138671875, 1.712825298309326171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+301, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -712.375, 174.6805572509765625, 143.29339599609375, 2.648180484771728515, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+302, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -675.27264404296875, 175.3437652587890625, 143.174896240234375, 1.534075021743774414, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+303, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -731.44964599609375, 168, 143.0170135498046875, 3.923350334167480468, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+304, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -646.9913330078125, 179.0225677490234375, 153.6933135986328125, 4.201961517333984375, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+305, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -887.4913330078125, 235.90972900390625, 99.84600830078125, 2.795201778411865234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+306, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -654.94793701171875, 173.9739532470703125, 153.6933135986328125, 0.074559986591339111, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+307, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -895.2298583984375, 483.94549560546875, 156.1354217529296875, 6.273420333862304687, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+308, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -904.69793701171875, 449.482635498046875, 154.6908416748046875, 5.327391624450683593, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+309, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -893.4288330078125, 231.4774322509765625, 100.0932769775390625, 4.859364509582519531, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+310, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -681.498291015625, 178.6180572509765625, 144.20751953125, 0.266826361417770385, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+311, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -735.55731201171875, 160.095489501953125, 143.0819549560546875, 5.080216407775878906, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+312, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -719.92706298828125, 165.62847900390625, 144.90625, 1.62074434757232666, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+313, 249022, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -903.00714111328125, 483.67950439453125, 156.777069091796875, 0.756695985794067382, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Bramblemaw Bear (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+314, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -736.0850830078125, 165.390625, 143.1015625, 0.628461241722106933, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+315, 255021, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -937.02685546875, 332.99310302734375, 129.1280364990234375, 5.476846694946289062, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mire Wasp (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+316, 248686, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -634.109375, 170.484375, 166.2804718017578125, 1.898134112358093261, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Dread Souleater (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection) +(@CGUID+317, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -660.39239501953125, 155.8506927490234375, 166.2804718017578125, 2.804212808609008789, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+318, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -842.50518798828125, 181.56597900390625, 99.8499908447265625, 2.121387243270874023, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+319, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -954.045166015625, 303.571197509765625, 125.0308990478515625, 0.038611575961112976, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+320, 248685, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -643.84893798828125, 174.5572967529296875, 153.8214569091796875, 3.14997410774230957, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Ritual Hexxer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+321, 253302, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -946.49127197265625, 278.343414306640625, 124.0248794555664062, 5.875704765319824218, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Hex Guardian (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1263089 - [DNT], 1263096 - [DNT], 18950 - Invisibility and Stealth Detection, 1258480 - Searing Presence) +(@CGUID+322, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -646.24481201171875, 168.795135498046875, 153.859130859375, 2.008588075637817382, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+323, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -950.6646728515625, 282.143402099609375, 123.9094467163085937, 5.325832843780517578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+324, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -635.17535400390625, 176.251739501953125, 166.2804718017578125, 4.741362571716308593, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+325, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -958.13018798828125, 302.34722900390625, 125.4951324462890625, 0.695339083671569824, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+326, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -638.63543701171875, 172.282989501953125, 166.2804718017578125, 0.739062368869781494, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+327, 248684, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -670.50347900390625, 153.0243072509765625, 154.881988525390625, 2.248398303985595703, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Frenzied Berserker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield) +(@CGUID+328, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -621.81640625, 189.6471710205078125, 144.1494140625, 0.110794536769390106, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+329, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -952.01312255859375, 286.633392333984375, 123.848663330078125, 5.238074302673339843, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+330, 254740, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -622.342041015625, 181.6197967529296875, 154.5335845947265625, 4.201268672943115234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Umbral Shadowbinder (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+331, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -673.7557373046875, 169.6490020751953125, 143.1990814208984375, 4.441071033477783203, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+332, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -666.7965087890625, 167.53338623046875, 143.1755218505859375, 0.459613025188446044, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+333, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -953.82568359375, 285.286529541015625, 123.9931869506835937, 5.224335193634033203, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+334, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -954.23956298828125, 315.515625, 125.0495223999023437, 5.279439926147460937, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+335, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -950.03704833984375, 286.292816162109375, 123.8290328979492187, 5.236383438110351562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+336, 255010, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -616.666015625, 187.5, 144.3209228515625, 0.790922999382019042, 7200, 2, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Swamp Hopper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+337, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -551.37677001953125, 406.779510498046875, 192.551849365234375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+338, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -956.63018798828125, 306.93402099609375, 125.2574691772460937, 4.750826835632324218, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+339, 249002, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -951.90277099609375, 318.779510498046875, 125.3748321533203125, 6.163985252380371093, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Warding Mask (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1270961 - [DNT], 1281560 - Sear) +(@CGUID+340, 211137, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -515.578125, 421.625, 192.435882568359375, 3.177709579467773437, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+341, 210930, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -898.56597900390625, 179.83160400390625, 99.8498687744140625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+342, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -634.3975830078125, 155.390625, 166.3874969482421875, 0.490269690752029418, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+343, 255027, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -987.3634033203125, 305.495574951171875, 125.9626083374023437, 3.367715835571289062, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Grotto Spiderling (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+344, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -966.09027099609375, 317.223968505859375, 125.51507568359375, 5.958989143371582031, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+345, 255024, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -618.6163330078125, 166.55743408203125, 178.4210662841796875, 0.345186471939086914, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Pale Glowmite (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+346, 211111, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -521.4757080078125, 424.572906494140625, 191.8151702880859375, 3.90152287483215332, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+347, 249012, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -632.1990966796875, 163.847442626953125, 143.938507080078125, 2.560632228851318359, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Putrid Boggorm (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+348, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -663.13543701171875, 152.111114501953125, 166.588409423828125, 2.096359968185424804, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+349, 253436, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -650.48785400390625, 162.42535400390625, 154.772186279296875, 1.339069843292236328, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Witherbark Prisoner (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1259067 - Vile Root) +(@CGUID+350, 211149, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -519.96875, 418.729156494140625, 191.9115142822265625, 1.828124880790710449, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+351, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -971.3992919921875, 314.026031494140625, 125.53515625, 5.360931396484375, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+352, 255027, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -985.3006591796875, 310.67047119140625, 125.843963623046875, 0.370962828397750854, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Grotto Spiderling (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+353, 248693, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -969.5538330078125, 308.390625, 125.5828628540039062, 0.529857754707336425, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Mire Laborer (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head) +(@CGUID+354, 211152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -514.5867919921875, 428.458343505859375, 192.572418212890625, 3.685638904571533203, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+355, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -922.4930419921875, 218.986114501953125, 99.75244140625, 4.976204872131347656, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+356, 255027, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -970.818359375, 255.165557861328125, 125.5129776000976562, 1.555181026458740234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Grotto Spiderling (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+357, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -966.8115234375, 340.28570556640625, 126.2273788452148437, 2.834513187408447265, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+358, 211151, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -525.2899169921875, 430.579864501953125, 192.513702392578125, 5.729500293731689453, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+359, 211150, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -519.75347900390625, 432.592010498046875, 192.859527587890625, 4.279088020324707031, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+360, 255322, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -509.13714599609375, 416.295135498046875, 193.470245361328125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 472701 - Helper) +(@CGUID+361, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -937.32464599609375, 208.4184112548828125, 99.8424072265625, 0.195586815476417541, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+362, 242964, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -968.335205078125, 335.515869140625, 126.2288589477539062, 2.831062078475952148, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Keen Headhunter (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1255966 - Regeneratin') +(@CGUID+363, 255026, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -625.947509765625, 165.0520477294921875, 143.9500732421875, 0.543859004974365234, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66431), -- Mukleech (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%) +(@CGUID+364, 253646, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -769.8194580078125, -217.578125, -8.22257709503173828, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Stalker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+365, 253646, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -996.86114501953125, -15.796875, 67.1988525390625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Stalker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+366, 253646, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -809.5694580078125, -256.61285400390625, -18.666666030883789, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Stalker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+367, 253458, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 1, -347.064239501953125, -256.633697509765625, -12.8639736175537109, 3.141592741012573242, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Zaib'yan (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 323486 - Dual Wield) +(@CGUID+368, 253646, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -848.56427001953125, -295.961822509765625, -8.22257709503173828, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Stalker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+369, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -894.73614501953125, 118.251739501953125, 100.197479248046875, 1.945917487144470214, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+370, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -950.96527099609375, 203.001739501953125, 100.7272186279296875, 5.421166896820068359, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+371, 210931, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -835.154541015625, 105.4635391235351562, 99.20751953125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Path Helper (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 422357 - Bot AI Follow Advert) +(@CGUID+372, 253646, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -769.8975830078125, -296.154510498046875, -8.22257709503173828, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Stalker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+373, 253152, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -905.86285400390625, 123.7777786254882812, 100.1015625, 4.859364509582519531, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Defiled Captive (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 471891 - Mod Scale 95-105%, 1269987 - [DNT]) +(@CGUID+374, 253646, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -848.57464599609375, -217.395828247070312, -8.22257709503173828, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431), -- Stalker (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@CGUID+375, 248605, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, 0, 0, -275.21875, -256.767364501953125, -13.2697744369506835, 3.146727800369262695, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66431); -- Rak'tul (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 (Auras: 1252864 - Deathgorged Vessel, 1270332 - [DNT], 422362 - Bot AI Follow Advert) +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+375; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Umbral Shadowbinder - 471891 - Mod Scale 95-105% +(@CGUID+4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+6, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+10, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+11, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+33, 0, 0, 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+36, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+40, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+49, 0, 0, 0, 0, 0, 1, 0, 1084, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+59, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+65, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+68, 0, 0, 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+69, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+70, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- Bramblemaw Bear - 214567 - Mod Scale 90-110% +(@CGUID+91, 0, 0, 0, 0, 0, 1, 0, 27, 0, 0, 0, 0, '214567'), -- Bramblemaw Bear - 214567 - Mod Scale 90-110% +(@CGUID+94, 0, 0, 0, 0, 0, 1, 0, 425, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+121, 0, 0, 0, 0, 0, 1, 0, 1084, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+127, 0, 0, 0, 0, 0, 1, 0, 1084, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+148, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+159, 0, 0, 0, 0, 0, 1, 0, 1084, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+173, 0, 0, 0, 0, 0, 1, 0, 425, 0, 0, 0, 0, '471891 18950'), -- Dread Souleater - 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection +(@CGUID+180, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+181, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+196, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+205, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+206, 0, 0, 0, 0, 0, 1, 0, 474, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+212, 0, 0, 0, 0, 0, 1, 0, 1029, 0, 0, 0, 0, '471891 1255966'), -- Keen Headhunter - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin' +(@CGUID+213, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+214, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '471891'), -- Umbral Shadowbinder - 471891 - Mod Scale 95-105% +(@CGUID+252, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+253, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+254, 0, 0, 0, 0, 0, 1, 0, 474, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+259, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+264, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+292, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+304, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+306, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+310, 0, 0, 0, 0, 0, 1, 0, 233, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+311, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+316, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891 18950'), -- Dread Souleater - 471891 - Mod Scale 95-105%, 18950 - Invisibility and Stealth Detection +(@CGUID+317, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+320, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Ritual Hexxer - 471891 - Mod Scale 95-105% +(@CGUID+322, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+325, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+327, 0, 0, 0, 0, 0, 1, 0, 1084, 0, 0, 0, 0, '471891 1255966 42459'), -- Frenzied Berserker - 471891 - Mod Scale 95-105%, 1255966 - Regeneratin', 42459 - Dual Wield +(@CGUID+330, 0, 0, 0, 0, 0, 1, 0, 1084, 0, 0, 0, 0, '471891'), -- Umbral Shadowbinder - 471891 - Mod Scale 95-105% +(@CGUID+338, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+348, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- Mire Laborer - 471891 - Mod Scale 95-105% +(@CGUID+351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891 358422'), -- Mire Laborer - 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head +(@CGUID+353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891 358422'); -- Mire Laborer - 471891 - Mod Scale 95-105%, 358422 - Channel: Sleep Zzz (With Aggro Change) - Head + +-- GameObject +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+5; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 617108, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, -780.8992919921875, 454.508697509765625, 150.0961761474609375, 5.683735370635986328, 0, 0, -0.295257568359375, 0.9554176926612854, 7200, 255, 1, 66431), -- Massive Freezing Trap (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@OGUID+1, 617108, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, -664.8819580078125, 254.2621612548828125, 151.496490478515625, 0.152399629354476928, 0, 0, 0.0761260986328125, 0.997098207473754882, 7200, 255, 1, 66431), -- Massive Freezing Trap (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@OGUID+2, 616703, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, -808.6492919921875, 498.586822509765625, 156.945343017578125, 0, 0, 0, 0, 1, 7200, 255, 1, 66431), -- Cooking Pot (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@OGUID+3, 617108, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, -910.42364501953125, 456.25, 155.0296173095703125, 5.771526813507080078, 0, 0, -0.25304794311523437, 0.967453718185424804, 7200, 255, 1, 66431), -- Massive Freezing Trap (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@OGUID+4, 616801, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, -652.3992919921875, 169.576385498046875, 153.6099853515625, 0.894857168197631835, 0, 0, 0.432648658752441406, 0.901562631130218505, 7200, 255, 1, 66431), -- Ritual Cauldron (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +(@OGUID+5, 616338, 2874, 16395, 16395, '1,2,8,23,205', 0, 0, -838.3507080078125, 108.9236068725585937, 99.25086212158203125, 2.312558174133300781, 0, 0, 0.915310859680175781, 0.402748137712478637, 7200, 255, 1, 66431); -- Maisara Boss 1 Gate (Area: Maisara Caverns - Difficulty: Normal) CreateObject1 +DELETE FROM `gameobject_addon` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+5; +INSERT INTO `gameobject_addon` (`guid`, `parent_rotation0`, `parent_rotation1`, `parent_rotation2`, `parent_rotation3`, `WorldEffectID`, `AIAnimKitID`) VALUES +(@OGUID+0, 0, 0, 0, 1, 0, 35649), -- Massive Freezing Trap +(@OGUID+1, 0, 0, 0, 1, 0, 35649), -- Massive Freezing Trap +(@OGUID+3, 0, 0, 0, 1, 0, 35649), -- Massive Freezing Trap +(@OGUID+5, 0, 0, 0, 1, 0, 992); -- Maisara Boss 1 Gate + +-- Template +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.714285731315612792, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags3`=0x800000 WHERE `entry`=248605; -- Rak'tul +UPDATE `creature_template` SET `unit_flags3`=0x41008001, `flags_extra` = 128 WHERE `entry` IN (210931, 210930); -- Path Helper +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=253458; -- Zaib'yan +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x800, `unit_flags3`=0x40000001, `flags_extra` = 128 WHERE `entry`=253646; -- Stalker +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000000, `unit_flags3`=0x41008001, `flags_extra` = 128 WHERE `entry`=255322; -- Helper +UPDATE `creature_template` SET `faction`=190, `speed_run`=0.714285731315612792, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255027; -- Grotto Spiderling +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x140, `unit_flags3`=0x800000, `VehicleId`=9196 WHERE `entry`=247572; -- Nekraxx +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x140, `unit_flags3`=0x800000 WHERE `entry`=247570; -- Muro'jin +UPDATE `creature_template` SET `faction`=190, `speed_run`=0.714285731315612792, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255025; -- Veil Moth +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000000, `unit_flags3`=0x41008001, `flags_extra` = 128 WHERE `entry`=254680; -- Path Helper +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x2000140, `unit_flags2`=0x800 WHERE `entry`=248681; -- Vilebranch Beastrider +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x0801, `unit_flags3`=0x01000000|0x00002000 WHERE `entry`=253152; -- Defiled Captive +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=249020; -- Hexbound Eagle +UPDATE `creature_template` SET `faction`=7, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800, `unit_flags3`=0x40800001 WHERE `entry`=253159; -- Training Dummy +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800, `VehicleId`=9079 WHERE `entry`=248678; -- Hulking Juggernaut +UPDATE `creature_template` SET `faction`=190, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=249012; -- Putrid Boggorm +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=248686; -- Dread Souleater +UPDATE `creature_template` SET `faction`=35, `npcflag`=16777216, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x800 WHERE `entry`=253436; -- Witherbark Prisoner +UPDATE `creature_template` SET `faction`=190, `speed_run`=0.714285731315612792, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255021; -- Mire Wasp +UPDATE `creature_template` SET `faction`=190, `speed_run`=0.714285731315612792, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255024; -- Pale Glowmite +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=249022; -- Bramblemaw Bear +UPDATE `creature_template` SET `faction`=190, `speed_run`=0.714285731315612792, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255010; -- Swamp Hopper +UPDATE `creature_template` SET `faction`=190, `speed_run`=0.714285731315612792, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255026; -- Mukleech +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=242964; -- Keen Headhunter +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=253302; -- Hex Guardian +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=248685; -- Ritual Hexxer +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2500, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=248684; -- Frenzied Berserker +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=254740; -- Umbral Shadowbinder +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=248693; -- Mire Laborer +UPDATE `creature_template` SET `faction`=16, `speed_run`=1.428571462631225585, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=249002; -- Warding Mask + +-- Template Addon +DELETE FROM `gameobject_template_addon` WHERE `entry` IN (616338 /*Maisara Boss 1 Gate*/, 617108 /*Massive Freezing Trap*/); +INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`, `WorldEffectID`, `AIAnimKitID`) VALUES +(616338, 0, 0x30, 0, 992), -- Maisara Boss 1 Gate +(617108, 0, 0x0, 0, 35649); -- Massive Freezing Trap + +DELETE FROM `creature_template_addon` WHERE `entry` IN (248605 /*248605 (Rak'tul) - Deathgorged Vessel, [DNT], Bot AI Follow Advert*/, 253458 /*253458 (Zaib'yan) - Dual Wield*/, 253646 /*253646 (Stalker)*/, 255322 /*255322 (Helper) - Helper*/, 255027 /*255027 (Grotto Spiderling) - Mod Scale 95-105%*/, 247572 /*247572 (Nekraxx)*/, 247570 /*247570 (Muro'jin) - Bot AI Follow Advert*/, 255025 /*255025 (Veil Moth) - Mod Scale 95-105%*/, 248681 /*248681 (Vilebranch Beastrider) - Ride Vehicle Hardcoded*/, 253152 /*253152 (Defiled Captive) - Mod Scale 95-105%*/, 249020 /*249020 (Hexbound Eagle) - Diseased Claws*/, 253159 /*253159 (Training Dummy) - [DNT] No Parry, Training Dummy Marker*/, 249012 /*249012 (Putrid Boggorm) - Mod Scale 95-105%*/, 248686 /*248686 (Dread Souleater) - Mod Scale 95-105%, Invisibility and Stealth Detection*/, 253436 /*253436 (Witherbark Prisoner) - Mod Scale 95-105%, Vile Root*/, 255021 /*255021 (Mire Wasp) - Mod Scale 95-105%*/, 255024 /*255024 (Pale Glowmite) - Mod Scale 95-105%*/, 249022 /*249022 (Bramblemaw Bear) - Mod Scale 90-110%*/, 255010 /*255010 (Swamp Hopper) - Mod Scale 95-105%*/, 255026 /*255026 (Mukleech) - Mod Scale 95-105%*/, 242964 /*242964 (Keen Headhunter) - Mod Scale 95-105%, Regeneratin'*/, 253302 /*253302 (Hex Guardian) - [DNT], [DNT], [DNT], Searing Presence, Invisibility and Stealth Detection*/, 248685 /*248685 (Ritual Hexxer) - Mod Scale 95-105%*/, 248684 /*248684 (Frenzied Berserker) - Mod Scale 95-105%, Regeneratin', Dual Wield*/, 254740 /*254740 (Umbral Shadowbinder) - Mod Scale 95-105%*/, 248693 /*248693 (Mire Laborer) - Mod Scale 95-105%*/, 249002 /*249002 (Warding Mask) - [DNT], Sear*/); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(248605, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1252864 1270332 422362'), -- 248605 (Rak'tul) - Deathgorged Vessel, [DNT], Bot AI Follow Advert +(253458, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '323486'), -- 253458 (Zaib'yan) - Dual Wield +(253646, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 253646 (Stalker) +(255322, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '472701'), -- 255322 (Helper) - Helper +(255027, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 255027 (Grotto Spiderling) - Mod Scale 95-105% +(247572, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, ''), -- 247572 (Nekraxx) +(247570, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '422356'), -- 247570 (Muro'jin) - Bot AI Follow Advert +(255025, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 255025 (Veil Moth) - Mod Scale 95-105% +(248681, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 248681 (Vilebranch Beastrider) - Ride Vehicle Hardcoded +(253152, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 253152 (Defiled Captive) - Mod Scale 95-105% +(249020, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, '1256584'), -- 249020 (Hexbound Eagle) - Diseased Claws +(253159, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '349892 98892'), -- 253159 (Training Dummy) - [DNT] No Parry, Training Dummy Marker +(249012, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 249012 (Putrid Boggorm) - Mod Scale 95-105% +(248686, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891 18950'), -- 248686 (Dread Souleater) - Mod Scale 95-105%, Invisibility and Stealth Detection +(253436, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891 1259067'), -- 253436 (Witherbark Prisoner) - Mod Scale 95-105%, Vile Root +(255021, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 255021 (Mire Wasp) - Mod Scale 95-105% +(255024, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 255024 (Pale Glowmite) - Mod Scale 95-105% +(249022, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 249022 (Bramblemaw Bear) - Mod Scale 90-110% +(255010, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 255010 (Swamp Hopper) - Mod Scale 95-105% +(255026, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891'), -- 255026 (Mukleech) - Mod Scale 95-105% +(242964, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891 1255966'), -- 242964 (Keen Headhunter) - Mod Scale 95-105%, Regeneratin' +(253302, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1270961 1263090 1263096 1258480 18950'), -- 253302 (Hex Guardian) - [DNT], [DNT], [DNT], Searing Presence, Invisibility and Stealth Detection +(248685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- 248685 (Ritual Hexxer) - Mod Scale 95-105% +(248684, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '471891 1255966 42459'), -- 248684 (Frenzied Berserker) - Mod Scale 95-105%, Regeneratin', Dual Wield +(254740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- 254740 (Umbral Shadowbinder) - Mod Scale 95-105% +(248693, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '471891'), -- 248693 (Mire Laborer) - Mod Scale 95-105% +(249002, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1270961 1281560'); -- 249002 (Warding Mask) - [DNT], Sear + +-- Difficulty +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249024 AND `DifficultyID`=0); -- 249024 (Hollow Soulrender) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=255041 AND `DifficultyID`=0); -- 255041 (Fallen Sacrifice) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248595 AND `DifficultyID`=0); -- 248595 (Vordaza) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=253458 AND `DifficultyID`=0); -- 253458 (Zaib'yan) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248605 AND `DifficultyID`=0); -- 248605 (Rak'tul) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=328, `StaticFlags1`=0x20000100, `VerifiedBuild`=66527 WHERE (`Entry`=253159 AND `DifficultyID`=0); -- 253159 (Training Dummy) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x30000000, `VerifiedBuild`=66527 WHERE (`Entry`=253473 AND `DifficultyID`=0); -- 253473 (Gloomwing Bat) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249025 AND `DifficultyID`=0); -- 249025 (Bound Defender) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x20000100, `VerifiedBuild`=66527 WHERE (`Entry`=253646 AND `DifficultyID`=0); -- 253646 (Stalker) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=256964 AND `DifficultyID`=0); -- 256964 (Vengeful Shade) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x20000000, `VerifiedBuild`=66527 WHERE (`Entry`=255024 AND `DifficultyID`=0); -- 255024 (Pale Glowmite) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66527 WHERE (`Entry`=255026 AND `DifficultyID`=0); -- 255026 (Mukleech) - +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248678 AND `DifficultyID`=0); -- 248678 (Hulking Juggernaut) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x30000100, `VerifiedBuild`=66527 WHERE (`Entry`=248681 AND `DifficultyID`=0); -- 248681 (Vilebranch Beastrider) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249012 AND `DifficultyID`=0); -- 249012 (Putrid Boggorm) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=253683 AND `DifficultyID`=0); -- 253683 (Rokh'zal) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=247572 AND `DifficultyID`=0); -- 247572 (Nekraxx) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66527 WHERE (`Entry`=255028 AND `DifficultyID`=0); -- 255028 (Spectral Rat) - +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=5071, `StaticFlags1`=0x30000100, `VerifiedBuild`=66527 WHERE (`Entry`=247570 AND `DifficultyID`=0); -- 247570 (Muro'jin) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x20000000, `VerifiedBuild`=66527 WHERE (`Entry`=255021 AND `DifficultyID`=0); -- 255021 (Mire Wasp) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66527 WHERE (`Entry`=255010 AND `DifficultyID`=0); -- 255010 (Swamp Hopper) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249022 AND `DifficultyID`=0); -- 249022 (Bramblemaw Bear) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249030 AND `DifficultyID`=0); -- 249030 (Restless Gnarldin) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x20000000, `VerifiedBuild`=66527 WHERE (`Entry`=255025 AND `DifficultyID`=0); -- 255025 (Veil Moth) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249036 AND `DifficultyID`=0); -- 249036 (Tormented Shade) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=253302 AND `DifficultyID`=0); -- 253302 (Hex Guardian) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248690 AND `DifficultyID`=0); -- 248690 (Grim Skirmisher) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248692 AND `DifficultyID`=0); -- 248692 (Reanimated Warrior) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66527 WHERE (`Entry`=255027 AND `DifficultyID`=0); -- 255027 (Grotto Spiderling) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x20000000, `VerifiedBuild`=66527 WHERE (`Entry`=255036 AND `DifficultyID`=0); -- 255036 (Dusk Bat) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66527 WHERE (`Entry`=255029 AND `DifficultyID`=0); -- 255029 (Cave Roach) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66527 WHERE (`Entry`=210930 AND `DifficultyID`=1); -- 210930 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66527 WHERE (`Entry`=210931 AND `DifficultyID`=1); -- 210931 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249002 AND `DifficultyID`=0); -- 249002 (Warding Mask) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248686 AND `DifficultyID`=0); -- 248686 (Dread Souleater) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249020 AND `DifficultyID`=0); -- 249020 (Hexbound Eagle) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248684 AND `DifficultyID`=0); -- 248684 (Frenzied Berserker) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=242964 AND `DifficultyID`=0); -- 242964 (Keen Headhunter) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=254740 AND `DifficultyID`=0); -- 254740 (Umbral Shadowbinder) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248685 AND `DifficultyID`=0); -- 248685 (Ritual Hexxer) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=248693 AND `DifficultyID`=0); -- 248693 (Mire Laborer) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=253436 AND `DifficultyID`=0); -- 253436 (Witherbark Prisoner) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=5071, `StaticFlags1`=0x30000100, `VerifiedBuild`=66527 WHERE (`Entry`=253152 AND `DifficultyID`=0); -- 253152 (Defiled Captive) - Sessile, CanSwim, Floating + +-- Model +UPDATE `creature_model_info` SET `VerifiedBuild`=66527 WHERE `DisplayID` IN (131693, 125072, 125074, 131694, 131548, 131679, 120523, 131550, 140860, 140855, 137743, 114972, 131701, 140867, 129465, 120520, 115092, 140857, 129463, 129464, 120521, 120518, 131676, 140854, 131691, 94282, 130862, 130864, 130872, 140869, 130858, 140866, 125475, 130871, 100959, 130867, 131677, 130868, 140868, 138664, 130863, 130861, 130705, 131681, 131699, 131718, 131717, 130699, 76759, 71577, 130866, 130860, 131682, 11686, 25749, 125075, 131690, 125076, 130857, 114969, 120517, 130869, 23767, 125045, 130882, 142403, 131683, 131700, 131719, 130865, 140865, 131692, 130870, 140862, 130859); +UPDATE `creature_model_info` SET `BoundingRadius`=0.372827142477035522, `CombatReach`=0.300000011920928955, `VerifiedBuild`=66527 WHERE `DisplayID` IN (117451, 117449, 117448); +UPDATE `creature_model_info` SET `BoundingRadius`=0.307534664869308471, `CombatReach`=0.150000005960464477, `VerifiedBuild`=66527 WHERE `DisplayID` IN (128271, 128273, 128272); +UPDATE `creature_model_info` SET `BoundingRadius`=2.614222049713134765, `CombatReach`=4.477612018585205078, `VerifiedBuild`=66527 WHERE `DisplayID` IN (129467, 129466); +UPDATE `creature_model_info` SET `BoundingRadius`=0.300000011920928955, `CombatReach`=0.5, `VerifiedBuild`=66527 WHERE `DisplayID` IN (128278, 128277, 128275); +UPDATE `creature_model_info` SET `BoundingRadius`=0.363841086626052856, `VerifiedBuild`=66527 WHERE `DisplayID` IN (114623, 114622); +UPDATE `creature_model_info` SET `BoundingRadius`=0.299999982118606567, `CombatReach`=0.5, `VerifiedBuild`=66527 WHERE `DisplayID`=128276; +UPDATE `creature_model_info` SET `BoundingRadius`=0.158240109682083129, `CombatReach`=0.300000011920928955, `VerifiedBuild`=66527 WHERE `DisplayID` IN (120525, 120527); +UPDATE `creature_model_info` SET `BoundingRadius`=0.307534635066986083, `CombatReach`=0.150000005960464477, `VerifiedBuild`=66527 WHERE `DisplayID` IN (128269, 128270); +UPDATE `creature_model_info` SET `BoundingRadius`=0.052500005811452865, `CombatReach`=0.150000005960464477, `VerifiedBuild`=66527 WHERE `DisplayID`=36944; + +-- Spellclick +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (253436,248678,247572); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(253436, 1259069, 1, 0), +(248678, 46598, 1, 0), +(247572, 1260494, 1, 0); + +-- Vehicle +DELETE FROM `vehicle_template_accessory` WHERE (`seat_id`=0 AND `entry` IN (248678,247572)); +INSERT INTO `vehicle_template_accessory` (`entry`, `accessory_entry`, `seat_id`, `minion`, `description`, `summontype`, `summontimer`) VALUES +(248678, 248681, 0, 1, 'Hulking Juggernaut - Vilebranch Beastrider', 8, 0), -- Hulking Juggernaut - Vilebranch Beastrider +(247572, 247570, 0, 0, 'Nekraxx - Muro\'jin', 8, 0); -- Nekraxx - Muro'jin + +-- Bramblemaw Bear smart ai +SET @ENTRY := 249022; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 1, 0, 100, 1, 1000, 1000, 0, 0, 0, 85, 358422, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Time = 1 seconds (OOC) - Self: Cast spell 358422 on self', ''); + +UPDATE `creature` SET `StringID` = 'CosmeticSleep' WHERE `guid` IN (@CGUID+211, @CGUID+225, @CGUID+224); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 22 AND `SourceEntry` = 249022 AND `SourceId` = 0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES +(22, 1, 249022, 0, 0, 58, 1, 0, 0, 0, 'CosmeticSleep', 0, 'Object has StringID CosmeticSleep'); + +-- Path for Frenzied Berserker +SET @MOVERGUID := @CGUID+3; +SET @ENTRY := 248684; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Frenzied Berserker - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -773.8941, 358.89758, 159.99374, NULL, 0), +(@PATH, 1, -773.86456, 365.88715, 160.06856, NULL, 0), +(@PATH, 2, -772.9028, 371.57465, 160.03064, NULL, 0), +(@PATH, 3, -771.83856, 376.48785, 160.23352, NULL, 0), +(@PATH, 4, -769.0052, 380.37326, 160.31612, NULL, 0), +(@PATH, 5, -764.0243, 384.42883, 160.26926, NULL, 4513), +(@PATH, 6, -769.0052, 380.37326, 160.31612, NULL, 0), +(@PATH, 7, -771.83856, 376.48785, 160.23352, NULL, 0), +(@PATH, 8, -772.9028, 371.57465, 160.03064, NULL, 0), +(@PATH, 9, -773.86456, 365.88715, 160.06856, NULL, 0), +(@PATH, 10, -773.8938, 358.9676, 160.00241, NULL, 0), +(@PATH, 11, -772.4375, 354.4132, 160.2201, NULL, 0), +(@PATH, 12, -769.88196, 348.6736, 160.17654, NULL, 8211), +(@PATH, 13, -772.4375, 354.4132, 160.2201, NULL, 0); + +UPDATE `creature` SET `position_x`=-773.8941, `position_y`=358.89758, `position_z`=159.99374, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966 42459'); + +-- Path for Frenzied Berserker +SET @MOVERGUID := @CGUID+16; +SET @ENTRY := 248684; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Frenzied Berserker - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -752.2014, 338.1962, 160.14824, NULL, 4953), +(@PATH, 1, -745.9514, 338.49478, 159.99376, NULL, 0), +(@PATH, 2, -740.21356, 339.85245, 160.26387, NULL, 0), +(@PATH, 3, -736.5417, 341.45486, 160.25447, NULL, 0), +(@PATH, 4, -732.0625, 345.908, 160.21533, NULL, 0), +(@PATH, 5, -728.9705, 349.6736, 160.14532, NULL, 0), +(@PATH, 6, -726.9251, 353.3319, 159.98958, NULL, 4406), +(@PATH, 7, -732.0625, 345.908, 160.21533, NULL, 0), +(@PATH, 8, -736.5417, 341.45486, 160.25447, NULL, 0), +(@PATH, 9, -740.21356, 339.85245, 160.26387, NULL, 0), +(@PATH, 10, -745.9514, 338.49478, 159.99376, NULL, 0); + +UPDATE `creature` SET `position_x`=-752.2014, `position_y`=338.1962, `position_z`=160.14824, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966 42459'); + +-- Path for Frenzied Berserker +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+96; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+96, @CGUID+96, 0, 0, 515, 0, 0), +(@CGUID+96, @CGUID+84, 3, 270, 515, 8, 18); + +SET @MOVERGUID := @CGUID+96; +SET @ENTRY := 248684; +SET @PATHOFFSET := 2; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Frenzied Berserker - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -725.294, 271.67548, 149.54836, NULL, 0), +(@PATH, 1, -723.29895, 269.40662, 149.76967, NULL, 0), +(@PATH, 2, -722.5345, 268.20755, 149.65767, NULL, 0), +(@PATH, 3, -721.50586, 265.3294, 149.71925, NULL, 0), +(@PATH, 4, -721.2176, 263.32962, 149.6019, NULL, 0), +(@PATH, 5, -720.93787, 260.46487, 149.5088, NULL, 0), +(@PATH, 6, -720.73773, 257.65985, 149.54863, NULL, 0), +(@PATH, 7, -720.6815, 254.63452, 149.64647, NULL, 0), +(@PATH, 8, -720.65735, 253.33539, 149.68617, NULL, 6871), +(@PATH, 9, -720.73395, 257.45663, 149.55145, NULL, 0), +(@PATH, 10, -720.92395, 260.28192, 149.5114, NULL, 0), +(@PATH, 11, -721.19904, 263.16736, 149.59319, NULL, 0), +(@PATH, 12, -721.408, 264.95618, 149.68958, NULL, 0), +(@PATH, 13, -722.45844, 267.99463, 149.63586, NULL, 0), +(@PATH, 14, -723.1813, 269.27283, 149.78387, NULL, 0), +(@PATH, 15, -725.2093, 271.5792, 149.54326, NULL, 0), +(@PATH, 16, -726.81836, 272.5349, 149.48578, NULL, 0), +(@PATH, 17, -729.38824, 274.19653, 149.53494, NULL, 0), +(@PATH, 18, -730.44617, 274.88055, 149.55519, NULL, 5664), +(@PATH, 19, -726.9302, 272.60727, 149.48792, NULL, 0); + +UPDATE `creature` SET `position_x`=-725.294, `position_y`=271.67548, `position_z`=149.54836, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966 42459'); + +-- Path for Frenzied Berserker +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+164; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+164, @CGUID+164, 0, 0, 515, 0, 0), +(@CGUID+164, @CGUID+162, 4, 270, 515, 4, 9); + +SET @MOVERGUID := @CGUID+164; +SET @ENTRY := 248684; +SET @PATHOFFSET := 3; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Frenzied Berserker - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -630.16144, 338.61285, 159.68176, NULL, 0), +(@PATH, 1, -630.2153, 331.76215, 159.02081, NULL, 0), +(@PATH, 2, -630.3316, 324.97745, 157.99335, NULL, 0), +(@PATH, 3, -630.7422, 318.98828, 156.78285, NULL, 0), +(@PATH, 4, -632.0018, 308.5, 155.2942, NULL, 5587), +(@PATH, 5, -630.74133, 318.9896, 156.7389, NULL, 0), +(@PATH, 6, -630.3316, 324.97745, 157.99335, NULL, 0), +(@PATH, 7, -630.2153, 331.76215, 159.02081, NULL, 0), +(@PATH, 8, -630.16144, 338.61285, 159.68176, NULL, 0), +(@PATH, 9, -630.48785, 345.86807, 160.52904, NULL, 6806); + +UPDATE `creature` SET `position_x`=-630.48785, `position_y`=345.86807, `position_z`=160.52904, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966 42459'); + +-- Path for Frenzied Berserker +SET @MOVERGUID := @CGUID+185; +SET @ENTRY := 248684; +SET @PATHOFFSET := 4; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Frenzied Berserker - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -878.0868, 393.77777, 156.79063, NULL, 0), +(@PATH, 1, -875.9618, 397.9132, 156.79063, NULL, 4453), +(@PATH, 2, -878.0868, 393.77777, 156.79063, NULL, 0), +(@PATH, 3, -880.13196, 389.76736, 156.79065, NULL, 0), +(@PATH, 4, -882.9028, 385.91147, 156.79063, NULL, 0), +(@PATH, 5, -888.6215, 383.18057, 156.90352, NULL, 0), +(@PATH, 6, -893.6528, 382.64584, 156.99376, NULL, 5717), +(@PATH, 7, -888.6215, 383.18057, 156.90352, NULL, 0), +(@PATH, 8, -882.9028, 385.91147, 156.79063, NULL, 0), +(@PATH, 9, -880.13196, 389.76736, 156.79065, NULL, 0); + +UPDATE `creature` SET `position_x`=-878.0868, `position_y`=393.77777, `position_z`=156.79063, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966 42459'); + +-- Path for Frenzied Berserker +SET @MOVERGUID := @CGUID+276; +SET @ENTRY := 248684; +SET @PATHOFFSET := 5; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Frenzied Berserker - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -913.1858, 385.908, 156.9794, NULL, 0), +(@PATH, 1, -909.4531, 383.12674, 156.79063, NULL, 0), +(@PATH, 2, -903.1858, 381.89236, 156.99376, NULL, 0), +(@PATH, 3, -899.42017, 381.98785, 156.99376, NULL, 7326), +(@PATH, 4, -909.4531, 383.12674, 156.79063, NULL, 0), +(@PATH, 5, -913.1655, 385.89288, 157.00801, NULL, 0), +(@PATH, 6, -916.9165, 390.54736, 157.19688, NULL, 0), +(@PATH, 7, -920.2518, 395.94272, 157.14198, NULL, 8572), +(@PATH, 8, -916.9427, 390.57986, 157.20671, NULL, 0); + +UPDATE `creature` SET `position_x`=-913.1858, `position_y`=385.908, `position_z`=156.9794, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966 42459'); + +-- Path for Keen Headhunter +SET @MOVERGUID := @CGUID+63; +SET @ENTRY := 242964; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Keen Headhunter - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -836.3281, 357.91666, 151.38438, NULL, 0), +(@PATH, 1, -839.28125, 362.40973, 151.38438, NULL, 1676), +(@PATH, 2, -836.3281, 357.91666, 151.38438, NULL, 0), +(@PATH, 3, -828.2674, 353.92535, 151.19688, NULL, 0), +(@PATH, 4, -818.5, 354.76215, 151.19688, NULL, 6161), +(@PATH, 5, -828.2674, 353.92535, 151.19688, NULL, 0); + +UPDATE `creature` SET `position_x`=-836.3281, `position_y`=357.91666, `position_z`=151.38438, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966'); + +-- Path for Keen Headhunter +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+126; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+126, @CGUID+126, 0, 0, 515, 0, 0), +(@CGUID+126, @CGUID+167, 4, 270, 515, 2, 5), +(@CGUID+126, @CGUID+123, 4, 90, 515, 2, 5); + +SET @MOVERGUID := @CGUID+126; +SET @ENTRY := 242964; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Keen Headhunter - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -837.125, 295.20834, 122.66649, NULL, 0), +(@PATH, 1, -848.0417, 306.47223, 122.50137, NULL, 0), +(@PATH, 2, -860.1927, 314.83682, 122.61268, NULL, 7498), +(@PATH, 3, -848.0417, 306.47223, 122.50137, NULL, 0), +(@PATH, 4, -837.125, 295.20834, 122.66649, NULL, 0), +(@PATH, 5, -828.2049, 283.4809, 123.56122, NULL, 6292); + +UPDATE `creature` SET `position_x`=-837.125, `position_y`=295.20834, `position_z`=122.66649, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966'); + +-- Path for Keen Headhunter +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+357; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+357, @CGUID+357, 0, 0, 515, 0, 0), +(@CGUID+357, @CGUID+362, 4, 270, 515, 3, 9); + +SET @MOVERGUID := @CGUID+357; +SET @ENTRY := 242964; +SET @PATHOFFSET := 2; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Keen Headhunter - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -970.9583, 341.6007, 126.23889, NULL, 0), +(@PATH, 1, -977.91797, 342.35352, 126.96025, NULL, 0), +(@PATH, 2, -986.4393, 340.89584, 127.69656, NULL, 0), +(@PATH, 3, -994.25867, 335.75174, 127.31412, NULL, 6871), +(@PATH, 4, -986.4393, 340.89584, 127.69656, NULL, 0), +(@PATH, 5, -978.04865, 342.3611, 127.0103, NULL, 0), +(@PATH, 6, -971.08984, 341.60938, 126.27849, NULL, 0), +(@PATH, 7, -962.28125, 338.84723, 126.44167, NULL, 0), +(@PATH, 8, -956.1059, 336.44272, 126.861176, NULL, 0), +(@PATH, 9, -948.2882, 332.30902, 126.5294, NULL, 4759), +(@PATH, 10, -956.1059, 336.44272, 126.861176, NULL, 0), +(@PATH, 11, -962.28125, 338.84723, 126.44167, NULL, 0); + +UPDATE `creature` SET `position_x`=-970.9583, `position_y`=341.6007, `position_z`=126.23889, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966'); + +-- Path for Keen Headhunter +SET @MOVERGUID := @CGUID+342; +SET @ENTRY := 242964; +SET @PATHOFFSET := 3; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Keen Headhunter - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -654.2083, 151.04167, 166.19931, NULL, 0), +(@PATH, 1, -659.07465, 152.56944, 166.1601, NULL, 5394), +(@PATH, 2, -654.2083, 151.04167, 166.19931, NULL, 0), +(@PATH, 3, -646.7969, 150.71355, 166.19688, NULL, 0), +(@PATH, 4, -641.0625, 151.83333, 166.22177, NULL, 0), +(@PATH, 5, -634.3976, 155.39062, 166.3875, NULL, 4233), +(@PATH, 6, -641.0625, 151.83333, 166.22177, NULL, 0), +(@PATH, 7, -646.7969, 150.71355, 166.19688, NULL, 0); + +UPDATE `creature` SET `position_x`=-654.2083, `position_y`=151.04167, `position_z`=166.19931, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 1255966'); + +-- Path for Dread Souleater +SET @MOVERGUID := @CGUID+34; +SET @ENTRY := 248686; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Dread Souleater - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -717.5417, 312.52084, 150.1913, NULL, 0), +(@PATH, 1, -724.625, 312.52432, 150.15503, NULL, 5537), +(@PATH, 2, -717.5417, 312.52084, 150.1913, NULL, 0), +(@PATH, 3, -710.283, 312.4566, 149.98105, NULL, 0), +(@PATH, 4, -703.4427, 312.55728, 149.59676, NULL, 0), +(@PATH, 5, -696.8143, 313.1771, 149.54935, NULL, 0), +(@PATH, 6, -690.02954, 314.42188, 149.29169, NULL, 9264), +(@PATH, 7, -696.8143, 313.1771, 149.54935, NULL, 0), +(@PATH, 8, -703.4427, 312.55728, 149.59676, NULL, 0), +(@PATH, 9, -710.283, 312.4566, 149.98105, NULL, 0); + +UPDATE `creature` SET `position_x`=-717.5417, `position_y`=312.52084, `position_z`=150.1913, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '471891 18950'); + +-- Path for Hulking Juggernaut +SET @MOVERGUID := @CGUID+93; +SET @ENTRY := 248678; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Hulking Juggernaut - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -662.4965, 398.33682, 156.28151, NULL, 0), +(@PATH, 1, -657.51044, 391.51736, 157.32515, NULL, 0), +(@PATH, 2, -654.9965, 383.71008, 157.64792, NULL, 4037), +(@PATH, 3, -657.51044, 391.51736, 157.32515, NULL, 0), +(@PATH, 4, -662.4965, 398.33682, 156.28151, NULL, 0), +(@PATH, 5, -670.09375, 404.71527, 154.63313, NULL, 0), +(@PATH, 6, -679.3264, 411.76736, 152.99295, NULL, 5330), +(@PATH, 7, -670.09375, 404.71527, 154.63313, NULL, 0); + +UPDATE `creature` SET `position_x`=-662.4965, `position_y`=398.33682, `position_z`=156.28151, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 1); + +-- Path for Hulking Juggernaut +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+256; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+256, @CGUID+256, 0, 0, 515, 0, 0), +(@CGUID+256, @CGUID+262, 8, 90, 515, 2, 5), +(@CGUID+256, @CGUID+267, 8, 270, 515, 2, 5); + +SET @MOVERGUID := @CGUID+256; +SET @ENTRY := 248678; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Hulking Juggernaut - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -906.86456, 320.62674, 122.788414, NULL, 0), +(@PATH, 1, -889.67706, 327.0191, 123.07226, NULL, 0), +(@PATH, 2, -875.2101, 335.01736, 124.67186, NULL, 5574), +(@PATH, 3, -889.67706, 327.0191, 123.07226, NULL, 0), +(@PATH, 4, -906.86456, 320.62674, 122.788414, NULL, 0), +(@PATH, 5, -915.44446, 317.79688, 122.75427, NULL, 7994); + +UPDATE `creature` SET `position_x`=-906.86456, `position_y`=320.62674, `position_z`=122.788414, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 1); + +-- Path for Umbral Shadowbinder +SET @MOVERGUID := @CGUID+114; +SET @ENTRY := 254740; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Umbral Shadowbinder - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -843.1424, 387.875, 151.49692, NULL, 4708), +(@PATH, 1, -845.8316, 381.50174, 151.38438, NULL, 0), +(@PATH, 2, -845.07117, 373.37848, 151.38438, NULL, 0), +(@PATH, 3, -841.6406, 366.90973, 151.28915, NULL, 6868), +(@PATH, 4, -845.07117, 373.37848, 151.38438, NULL, 0), +(@PATH, 5, -845.8316, 381.50174, 151.38438, NULL, 0); + +UPDATE `creature` SET `position_x`=-843.1424, `position_y`=387.875, `position_z`=151.49692, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 0, '471891'); + +-- Path for Bramblemaw Bear +SET @MOVERGUID := @CGUID+66; +SET @ENTRY := 249022; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Bramblemaw Bear - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -760.2153, 270.80728, 128.26015, NULL, 7564), +(@PATH, 1, -765.67365, 271.1059, 127.278854, NULL, 0), +(@PATH, 2, -770.3993, 272.08334, 126.366035, NULL, 0), +(@PATH, 3, -773.94794, 273.83508, 125.62784, NULL, 6381), +(@PATH, 4, -765.67365, 271.1059, 127.278854, NULL, 0); + +UPDATE `creature` SET `position_x`=-760.2153, `position_y`=270.80728, `position_z`=128.26015, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '214567'); + +-- Path for Bramblemaw Bear +SET @MOVERGUID := @CGUID+70; +SET @ENTRY := 249022; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Bramblemaw Bear - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -787.59375, 279.1684, 125.19968, NULL, 0), +(@PATH, 1, -791.1719, 284.592, 124.86041, NULL, 0), +(@PATH, 2, -793.03516, 286.9414, 125.374435, NULL, 4773), +(@PATH, 3, -787.59375, 279.1684, 125.19968, NULL, 0), +(@PATH, 4, -784.18054, 274.41495, 125.2244, NULL, 6034); + +UPDATE `creature` SET `position_x`=-787.59375, `position_y`=279.1684, `position_z`=125.19968, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '214567'); + +-- Path for Warding Mask +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+131; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+131, @CGUID+131, 0, 0, 515, 0, 0), +(@CGUID+131, @CGUID+124, 5, 340, 515, 0, 3), +(@CGUID+131, @CGUID+136, 5, 20, 515, 0, 3), +(@CGUID+131, @CGUID+139, 7, 350, 515, 0, 3), +(@CGUID+131, @CGUID+130, 7, 10, 515, 0, 3); + +SET @MOVERGUID := @CGUID+131; +SET @ENTRY := 249002; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Warding Mask - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -762.30035, 250.4323, 125.18973, NULL, 4984), +(@PATH, 1, -772.5208, 254.72743, 124.98081, NULL, 0), +(@PATH, 2, -784.65454, 259.4514, 124.133026, NULL, 0), +(@PATH, 3, -805.6458, 262.99826, 123.664734, NULL, 4948), +(@PATH, 4, -784.65454, 259.4514, 124.133026, NULL, 0), +(@PATH, 5, -772.54297, 254.72852, 124.98771, NULL, 0); + +UPDATE `creature` SET `position_x`=-762.30035, `position_y`=250.4323, `position_z`=125.18973, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1270961 1281560'); + +-- Path for Hex Guardian +SET @MOVERGUID := @CGUID+166; +SET @ENTRY := 253302; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Hex Guardian - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -867.066, 377.21353, 135.78726, NULL, 6325), +(@PATH, 1, -863.76215, 384.06598, 137.27512, NULL, 0), +(@PATH, 2, -859.5781, 392.0293, 139.53763, NULL, 0), +(@PATH, 3, -856.23267, 398.6771, 141.63054, NULL, 0), +(@PATH, 4, -852.44965, 405.49826, 143.04544, NULL, 7632), +(@PATH, 5, -856.23267, 398.6771, 141.63054, NULL, 0), +(@PATH, 6, -859.55035, 392.06946, 139.52298, NULL, 0), +(@PATH, 7, -863.7344, 384.10742, 137.21584, NULL, 0); + +UPDATE `creature` SET `position_x`=-867.066, `position_y`=377.21353, `position_z`=135.78726, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1270961 1263090 1263096 1258480 18950'); + +-- Path for Hex Guardian +DELETE FROM `creature_formations` WHERE `leaderGUID` = @CGUID+321; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@CGUID+321, @CGUID+321, 0, 0, 515, 0, 0), +(@CGUID+321, @CGUID+335, 5, 340, 515, 0, 0), +(@CGUID+321, @CGUID+323, 5, 20, 515, 0, 0), +(@CGUID+321, @CGUID+329, 7, 350, 515, 0, 0), +(@CGUID+321, @CGUID+333, 7, 10, 515, 0, 0); + +SET @MOVERGUID := @CGUID+321; +SET @ENTRY := 253302; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Hex Guardian - Formation Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -934.7917, 274.2604, 123.77057, NULL, 0), +(@PATH, 1, -926.0833, 273.66147, 123.75641, NULL, 0), +(@PATH, 2, -913.04517, 276.533, 125.22684, NULL, 0), +(@PATH, 3, -903.5573, 279.8611, 124.55498, NULL, 0), +(@PATH, 4, -897.4167, 289.4479, 125.39234, NULL, 0), +(@PATH, 5, -897.78516, 298.44727, 124.7267, NULL, 0), +(@PATH, 6, -905.2101, 305.56424, 123.537575, NULL, 0), +(@PATH, 7, -916.55383, 308.80902, 122.685715, NULL, 0), +(@PATH, 8, -928.25, 306.6337, 123.25917, NULL, 0), +(@PATH, 9, -937.066, 305.40277, 123.56673, NULL, 0), +(@PATH, 10, -947.0573, 301.52258, 124.06848, NULL, 0), +(@PATH, 11, -954.8143, 294.658, 124.569115, NULL, 0), +(@PATH, 12, -955.9983, 286.15625, 124.218735, NULL, 0), +(@PATH, 13, -950.2205, 279.95312, 124.07266, NULL, 0), +(@PATH, 14, -942.38544, 276.5712, 123.972275, NULL, 0); + +UPDATE `creature` SET `position_x`=-934.7917, `position_y`=274.2604, `position_z`=123.77057, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1270961 1263090 1263096 1258480 18950'); + +-- Path for Hexbound Eagle +SET @MOVERGUID := @CGUID+261; +SET @ENTRY := 249020; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Hexbound Eagle - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -883.81946, 413.01736, 156.92513, NULL, 4531), +(@PATH, 1, -889.8785, 420.11285, 156.68202, NULL, 0), +(@PATH, 2, -900.09894, 423.27084, 157.10704, NULL, 0), +(@PATH, 3, -910.73615, 421.1007, 157.63022, NULL, 8275), +(@PATH, 4, -900.09894, 423.27084, 157.10704, NULL, 0), +(@PATH, 5, -889.8785, 420.11285, 156.68202, NULL, 0); + +UPDATE `creature` SET `position_x`=-883.81946, `position_y`=413.01736, `position_z`=156.92513, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 2, 1, '1256584'); + +-- Path for Hexbound Eagle +SET @MOVERGUID := @CGUID+71; +SET @ENTRY := 249020; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Hexbound Eagle - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -818.8403, 303.70486, 126.94377, NULL, 0), +(@PATH, 1, -823.6233, 311.62326, 127.34377, NULL, 0), +(@PATH, 2, -826.19965, 318.5729, 126.67368, NULL, 9000), +(@PATH, 3, -823.6233, 311.62326, 127.34377, NULL, 0), +(@PATH, 4, -818.8403, 303.70486, 126.94377, NULL, 0), +(@PATH, 5, -815.59375, 299.58682, 127.8517, NULL, 8221); + +UPDATE `creature` SET `position_x`=-818.8403, `position_y`=303.70486, `position_z`=126.94377, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 2, 1, '1256584'); From db123e24b7ec2d36cf7d806e3c117049f261c3c6 Mon Sep 17 00:00:00 2001 From: Naddley Date: Sun, 22 Mar 2026 12:51:57 +0100 Subject: [PATCH 009/175] DB/Stormwind: Added Envoy Manat spawn at Stormwind Embassy --- .../world/master/2026_03_22_01_world.sql | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 sql/updates/world/master/2026_03_22_01_world.sql diff --git a/sql/updates/world/master/2026_03_22_01_world.sql b/sql/updates/world/master/2026_03_22_01_world.sql new file mode 100644 index 0000000000000..76aaf882e34ce --- /dev/null +++ b/sql/updates/world/master/2026_03_22_01_world.sql @@ -0,0 +1,48 @@ +SET @CGUID := 11000392; +SET @OGUID := 11000006; + +SET @NPCTEXTID := 610007; + +-- Creature +DELETE FROM `creature` WHERE `guid` = @CGUID+0; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 249187, 0, 1519, 9171, '0', 0, 0, 0, 1, -8138.8662109375, 787.34027099609375, 72.63970947265625, 2.819438457489013671, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66527); -- Envoy Manat (Area: Stormwind Embassy - Difficulty: 0) CreateObject1 + +DELETE FROM `creature_addon` WHERE `guid` = @CGUID+0; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+0, 0, 0, 0, 0, 0, 1, 0, 716, 0, 0, 0, 0, ''); -- Envoy Manat + +-- GameObject +DELETE FROM `gameobject` WHERE `guid` = @OGUID+0; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 574613, 0, 1519, 9171, '0', 0, 0, -8137.0244140625, 788.015625, 72.4526214599609375, 2.387194633483886718, 0, 0, 0.929699897766113281, 0.368317902088165283, 120, 255, 1, 66527); -- Haranir (Area: Stormwind Embassy - Difficulty: 0) CreateObject1 + +-- Template Addon +DELETE FROM `gameobject_template_addon` WHERE `entry` = 574613; +INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`, `WorldEffectID`, `AIAnimKitID`) VALUES +(574613, 0, 0x40000, 0, 0); -- Haranir + +-- Template +UPDATE `creature_template` SET `faction`=35, `npcflag`=3, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=249187; -- Envoy Manat + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=249187 AND `MenuID`=40543); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(249187, 40543, 66527); -- Envoy Manat + +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+1; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 300131, 0, 0, 0, 0, 0, 0, 0, 66527), -- 249187 (Envoy Manat) +(@NPCTEXTID+1, 1, 0, 0, 0, 0, 0, 0, 0, 300128, 0, 0, 0, 0, 0, 0, 0, 66527); -- 249187 (Envoy Manat) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=40542 AND `TextID`=@NPCTEXTID+0) OR (`MenuID`=40543 AND `TextID`=@NPCTEXTID+1); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(40542, @NPCTEXTID+0, 66527), -- 249187 (Envoy Manat) +(40543, @NPCTEXTID+1, 66527); -- 249187 (Envoy Manat) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=40543 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(40543, 135803, 0, 0, 'Why is the Harandar banner not inside with the rest of them?', 0, 0, 0, 40542, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66527); + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2145, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249187 AND `DifficultyID`=0); -- 249187 (Envoy Manat) - CanSwim From a738e6935cccfb0a942814e16b2e40a7e23ee63b Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 23 Mar 2026 16:13:10 +0100 Subject: [PATCH 010/175] Core/Transmog: Implemented TransmogHoliday.db2 transmog conditions --- src/server/game/Entities/Player/Player.cpp | 70 +++++++++++-------- .../Handlers/TransmogrificationHandler.cpp | 16 +++-- 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index bd832a8ba5eec..0c79db078f811 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -11899,41 +11899,42 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) { if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(transmogOutfitItem.ItemModifiedAppearanceID)) { - itemId = itemModifiedAppearance->ItemID; - itemAppearanceModId = itemModifiedAppearance->ItemAppearanceModifierID; - itemModifiedAppearanceId = itemModifiedAppearance->ID; - } - - hasTransmog = true; - } - - if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) - { - if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) - { - UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]; - if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) - || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) + TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); + if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) { - secondaryItemModifiedAppearanceId = secondaryTransmogOutfitItem.ItemModifiedAppearanceID; + itemId = itemModifiedAppearance->ItemID; + itemAppearanceModId = itemModifiedAppearance->ItemAppearanceModifierID; + itemModifiedAppearanceId = itemModifiedAppearance->ID; hasTransmog = true; } } } - if (TransmogOutfitSlotOptionEntry const* secondarySlotOption = sTransmogOutfitSlotOptionInfoStore.LookupEntry(slotInfo->SlotOption ? slotInfo->SlotOption->SecondaryOptionID : 0)) + auto getSecondaryItemModifiedAppearance = [isTransmogDisplayed](UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem) -> int32 { - if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(slotInfo->Slot->GetSlot(), secondarySlotOption->GetOption())) + if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) + || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) { - UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]; - if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) - || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(secondaryTransmogOutfitItem.ItemModifiedAppearanceID)) { - secondaryItemModifiedAppearanceId = secondaryTransmogOutfitItem.ItemModifiedAppearanceID; - hasTransmog = true; + TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); + if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) + return secondaryTransmogOutfitItem.ItemModifiedAppearanceID; } } - } + return 0; + }; + + if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) + secondaryItemModifiedAppearanceId = getSecondaryItemModifiedAppearance(m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]); + + if (TransmogOutfitSlotOptionEntry const* secondarySlotOption = sTransmogOutfitSlotOptionInfoStore.LookupEntry(slotInfo->SlotOption ? slotInfo->SlotOption->SecondaryOptionID : 0)) + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(slotInfo->Slot->GetSlot(), secondarySlotOption->GetOption())) + secondaryItemModifiedAppearanceId = getSecondaryItemModifiedAppearance(m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]); + + if (secondaryItemModifiedAppearanceId) + hasTransmog = true; if (isTransmogDisplayed(static_cast(*transmogOutfitItem.IllusionDisplayType))) { @@ -31448,14 +31449,18 @@ std::string Player::GetCharacterSelectOutfit() const uint32 secondaryItemModifiedAppearanceId = 0; if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(itemModifiedAppearanceId)) { - if (ItemEntry const* item = sItemStore.LookupEntry(itemModifiedAppearance->ItemID)) + TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); + if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) { - subClass = item->SubclassID; - inventoryType = static_cast(item->InventoryType); - } + if (ItemEntry const* item = sItemStore.LookupEntry(itemModifiedAppearance->ItemID)) + { + subClass = item->SubclassID; + inventoryType = static_cast(item->InventoryType); + } - if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(itemModifiedAppearance->ItemAppearanceID)) - displayId = itemAppearance->ItemDisplayInfoID; + if (ItemAppearanceEntry const* itemAppearance = sItemAppearanceStore.LookupEntry(itemModifiedAppearance->ItemAppearanceID)) + displayId = itemAppearance->ItemDisplayInfoID; + } } if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(transmogOutfitSlot.SpellItemEnchantmentID)) @@ -31473,6 +31478,11 @@ std::string Player::GetCharacterSelectOutfit() const secondaryItemModifiedAppearanceId = secondaryTransmogOutfitSlot.ItemModifiedAppearanceID; if (!isTransmogDisplayed(static_cast(*secondaryTransmogOutfitSlot.AppearanceDisplayType))) secondaryItemModifiedAppearanceId = m_playerData->VisibleItems[i].SecondaryItemModifiedAppearanceID; + + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(secondaryItemModifiedAppearanceId)) + if (TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID)) + if (!IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) + secondaryItemModifiedAppearanceId = 0; } } diff --git a/src/server/game/Handlers/TransmogrificationHandler.cpp b/src/server/game/Handlers/TransmogrificationHandler.cpp index 36f16228409fe..f75f5451aaf10 100644 --- a/src/server/game/Handlers/TransmogrificationHandler.cpp +++ b/src/server/game/Handlers/TransmogrificationHandler.cpp @@ -507,7 +507,7 @@ void WorldSession::HandleTransmogOutfitUpdateSlots(WorldPackets::Transmogrificat // calculate cost float baseCost = 0; if (uint32 curveId = sDB2Manager.GetGlobalCurveId(GlobalCurve::TransmogCost)) - baseCost = sDB2Manager.GetCurveValueAt(curveId, std::max(_player->GetLevel(), _player->m_activePlayerData->MaxLevel)); + baseCost = sDB2Manager.GetCurveValueAt(curveId, std::max(_player->GetLevel(), _player->m_activePlayerData->TransmogCostMinScalingLevel)); float costMultiplier = 1.0f; TransmogOutfitEntryEntry const* transmogOutfitEntry = sTransmogOutfitEntryStore.AssertEntry(transmogOutfitUpdateSlots.OutfitID); @@ -536,11 +536,15 @@ void WorldSession::HandleTransmogOutfitUpdateSlots(WorldPackets::Transmogrificat if (slot.AppearanceDisplayType == TransmogOutfitDisplayType::Assigned && oldSlotItr->ItemModifiedAppearanceID != slot.ItemModifiedAppearanceID) { - if (slotEntry) - cost = static_cast(std::floor(baseCost * slotEntry->ItemCostMultiplier)) + cost; - - if (slotOptionEntry) - cost = static_cast(std::floor(baseCost * slotOptionEntry->ItemCostMultiplier)) + cost; + ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(slot.ItemModifiedAppearanceID); + if (!itemModifiedAppearance || !sTransmogHolidayStore.HasRecord(itemModifiedAppearance->ItemID)) + { + if (slotEntry) + cost = static_cast(std::floor(baseCost * slotEntry->ItemCostMultiplier)) + cost; + + if (slotOptionEntry) + cost = static_cast(std::floor(baseCost * slotOptionEntry->ItemCostMultiplier)) + cost; + } } if (slot.IllusionDisplayType == TransmogOutfitDisplayType::Assigned && oldSlotItr->SpellItemEnchantmentID != slot.SpellItemEnchantmentID) From 201f4e09d1340557bada8309490c2ee69911d3ff Mon Sep 17 00:00:00 2001 From: ModoX Date: Mon, 23 Mar 2026 22:37:48 +0100 Subject: [PATCH 011/175] Scripts/Commands: Set worldstate when using .debug worldstate instead of just sending packet --- src/server/scripts/Commands/cs_debug.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index c46687262ee54..fdd5a46a7b275 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -516,7 +516,8 @@ class debug_commandscript : public CommandScript static bool HandleDebugUpdateWorldStateCommand(ChatHandler* handler, uint32 variable, uint32 value) { - handler->GetPlayer()->SendUpdateWorldState(variable, value); + Map* map = handler->GetPlayer()->GetMap(); + map->SetWorldStateValue(variable, value, false); return true; } From 39508901591610f648120875e7d99ca4585f316c Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 24 Mar 2026 19:15:43 +0100 Subject: [PATCH 012/175] Core/Transmog: Fix crash happening when trying to apply artifact override transmog to characters still in Initial spec Closes #31749 --- src/server/game/Entities/Player/Player.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0c79db078f811..8faf742742761 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -11878,12 +11878,17 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) if (transmogSlotOption != TransmogOutfitSlotOption::None) { // check if artifact override is active - TransmogOutfitSlotOption artifactOption = static_cast(AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + GetPrimarySpecializationEntry()->OrderIndex); - TransmogMgr::TransmogOutfitSlotAndOptionInfo const* artifactSlotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), artifactOption); - if (artifactSlotInfo && static_cast(*m_activePlayerData->ViewedOutfit->Slots[artifactSlotInfo->SlotIndex].AppearanceDisplayType) == TransmogOutfitDisplayType::Assigned) + static constexpr int32 MaxArtifactSpecializations = AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecFour) - AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + 1; + int32 specIndex = GetPrimarySpecializationEntry()->OrderIndex; + if (specIndex >= 0 && specIndex < MaxArtifactSpecializations) { - transmogSlotOption = artifactOption; - slotInfo = artifactSlotInfo; + TransmogOutfitSlotOption artifactOption = static_cast(AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + specIndex); + TransmogMgr::TransmogOutfitSlotAndOptionInfo const* artifactSlotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), artifactOption); + if (artifactSlotInfo && static_cast(*m_activePlayerData->ViewedOutfit->Slots[artifactSlotInfo->SlotIndex].AppearanceDisplayType) == TransmogOutfitDisplayType::Assigned) + { + transmogSlotOption = artifactOption; + slotInfo = artifactSlotInfo; + } } } From ed3d7221a94d62e8c3eb2e8609f53b916bd4e6a9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 25 Mar 2026 09:28:45 +0100 Subject: [PATCH 013/175] Core: Updated allowed build to 12.0.1.66562 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_03_25_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_03_25_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 30dc9a77de91e..ab9db878eb0c0 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1547,7 +1547,14 @@ INSERT INTO `build_auth_key` VALUES (66527,'Mac','x64','WoWC',0xF40A1B10E7367BE4B742A9E25CA93DB9), (66527,'Win','A64','WoW',0xE928E091C823F9127583959F3E688D2E), (66527,'Win','x64','WoW',0xCBAE2BD108168495CCE1AF55F6D050B0), -(66527,'Win','x64','WoWC',0x949DD36DBB35F4FD024D8F97A5378B19); +(66527,'Win','x64','WoWC',0x949DD36DBB35F4FD024D8F97A5378B19), +(66562,'Mac','A64','WoW',0x68422269B293771D8EE7EF57EB8FAFD4), +(66562,'Mac','A64','WoWC',0x38259127937E9E149B3BE3EE3357C40D), +(66562,'Mac','x64','WoW',0xD3431C99AFC2D768CC71134590BC5EC6), +(66562,'Mac','x64','WoWC',0x7084CF7EF6BEB8E9AD51B4162DB03801), +(66562,'Win','A64','WoW',0xB41A779F15EEC97EA4843377C6338306), +(66562,'Win','x64','WoW',0xE91BD215E3A61567A75E414272AF79FD), +(66562,'Win','x64','WoWC',0xF785954126005B294FFC373F2767AFC1); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -1988,7 +1995,8 @@ INSERT INTO `build_info` VALUES (66337,12,0,1,NULL), (66384,12,0,1,NULL), (66431,12,0,1,NULL), -(66527,12,0,1,NULL); +(66527,12,0,1,NULL), +(66562,12,0,1,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3601,7 +3609,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '66527', + `gamebuild` int unsigned NOT NULL DEFAULT '66562', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3616,7 +3624,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66527,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66562,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4172,7 +4180,8 @@ INSERT INTO `updates` VALUES ('2026_03_14_00_auth.sql','4CE4AF3D9E1BF173832B25F4D1A730A93ED016FA','RELEASED','2026-03-14 12:03:14',0), ('2026_03_18_00_auth.sql','7A755DADF9AAC9016FD01B26ACEC714FAB5E3269','RELEASED','2026-03-18 12:36:48',0), ('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0), -('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0); +('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0), +('2026_03_25_00_auth.sql','1407469EAE26B180ABA3A3802C429A031B241C67','RELEASED','2026-03-25 09:28:09',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_03_25_00_auth.sql b/sql/updates/auth/master/2026_03_25_00_auth.sql new file mode 100644 index 0000000000000..d6198ed302ff6 --- /dev/null +++ b/sql/updates/auth/master/2026_03_25_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (66562); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(66562,12,0,1,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66562 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(66562,'Mac','A64','WoW',0x68422269B293771D8EE7EF57EB8FAFD4), +(66562,'Mac','A64','WoWC',0x38259127937E9E149B3BE3EE3357C40D), +(66562,'Mac','x64','WoW',0xD3431C99AFC2D768CC71134590BC5EC6), +(66562,'Mac','x64','WoWC',0x7084CF7EF6BEB8E9AD51B4162DB03801), +(66562,'Win','A64','WoW',0xB41A779F15EEC97EA4843377C6338306), +(66562,'Win','x64','WoW',0xE91BD215E3A61567A75E414272AF79FD), +(66562,'Win','x64','WoWC',0xF785954126005B294FFC373F2767AFC1); + +UPDATE `realmlist` SET `gamebuild`=66562 WHERE `gamebuild`=66527; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '66562'; From b81a6d122b11205c2d420e059702f15fe256fec1 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 26 Mar 2026 21:33:18 +0100 Subject: [PATCH 014/175] Core: Updated allowed build to 12.0.1.66666 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_03_26_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_03_26_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index ab9db878eb0c0..0b7b0d9fcbe0f 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1554,7 +1554,14 @@ INSERT INTO `build_auth_key` VALUES (66562,'Mac','x64','WoWC',0x7084CF7EF6BEB8E9AD51B4162DB03801), (66562,'Win','A64','WoW',0xB41A779F15EEC97EA4843377C6338306), (66562,'Win','x64','WoW',0xE91BD215E3A61567A75E414272AF79FD), -(66562,'Win','x64','WoWC',0xF785954126005B294FFC373F2767AFC1); +(66562,'Win','x64','WoWC',0xF785954126005B294FFC373F2767AFC1), +(66666,'Mac','A64','WoW',0x63DA3BC7E84E15EE58C7503863F96C87), +(66666,'Mac','A64','WoWC',0x00C4CCAB3E1FF64F400FAC50F4133F0E), +(66666,'Mac','x64','WoW',0xD09CC36F366611321CE3B6E3EB1981EB), +(66666,'Mac','x64','WoWC',0x8A98C6903755FD3B4241569B76A92B3F), +(66666,'Win','A64','WoW',0x5BC22F3E44F9E25C24A6EA4716A19B17), +(66666,'Win','x64','WoW',0xAE2F669B86BEC87F325539F9017E7338), +(66666,'Win','x64','WoWC',0xD9BD5A15ED5DCABB77823D9AD30B3E0B); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -1996,7 +2003,8 @@ INSERT INTO `build_info` VALUES (66384,12,0,1,NULL), (66431,12,0,1,NULL), (66527,12,0,1,NULL), -(66562,12,0,1,NULL); +(66562,12,0,1,NULL), +(66666,12,0,1,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3609,7 +3617,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '66562', + `gamebuild` int unsigned NOT NULL DEFAULT '66666', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3624,7 +3632,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66562,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66666,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4181,7 +4189,8 @@ INSERT INTO `updates` VALUES ('2026_03_18_00_auth.sql','7A755DADF9AAC9016FD01B26ACEC714FAB5E3269','RELEASED','2026-03-18 12:36:48',0), ('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0), ('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0), -('2026_03_25_00_auth.sql','1407469EAE26B180ABA3A3802C429A031B241C67','RELEASED','2026-03-25 09:28:09',0); +('2026_03_25_00_auth.sql','1407469EAE26B180ABA3A3802C429A031B241C67','RELEASED','2026-03-25 09:28:09',0), +('2026_03_26_00_auth.sql','85B672D6B69E3AF187F413B8D1788FF948744CDA','RELEASED','2026-03-26 21:31:03',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_03_26_00_auth.sql b/sql/updates/auth/master/2026_03_26_00_auth.sql new file mode 100644 index 0000000000000..ebc09f2157d89 --- /dev/null +++ b/sql/updates/auth/master/2026_03_26_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (66666); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(66666,12,0,1,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66666 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(66666,'Mac','A64','WoW',0x63DA3BC7E84E15EE58C7503863F96C87), +(66666,'Mac','A64','WoWC',0x00C4CCAB3E1FF64F400FAC50F4133F0E), +(66666,'Mac','x64','WoW',0xD09CC36F366611321CE3B6E3EB1981EB), +(66666,'Mac','x64','WoWC',0x8A98C6903755FD3B4241569B76A92B3F), +(66666,'Win','A64','WoW',0x5BC22F3E44F9E25C24A6EA4716A19B17), +(66666,'Win','x64','WoW',0xAE2F669B86BEC87F325539F9017E7338), +(66666,'Win','x64','WoWC',0xD9BD5A15ED5DCABB77823D9AD30B3E0B); + +UPDATE `realmlist` SET `gamebuild`=66666 WHERE `gamebuild`=66562; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '66666'; From 4b6e6e1fec9c585fb3c99b092052bbae6f8049af Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 27 Mar 2026 20:02:12 +0100 Subject: [PATCH 015/175] Core/Commands: Refactor chat command internals to slightly reduce template bloat * Replace std::enable_if with concept constraints * Move code not dependent on template arguments out of template function bodies * Reduce number of ChatCommandResult copies made during parsing * Changed ChatCommandTable subcommands argument from std::vector<> const& to std::span<> and convert command definitions to arrays * Allow ChatHandler arguments to be const --- .../game/AuctionHouseBot/AuctionHouseBot.cpp | 2 +- .../game/AuctionHouseBot/AuctionHouseBot.h | 2 +- src/server/game/Chat/Chat.cpp | 11 +- src/server/game/Chat/Chat.h | 11 +- .../game/Chat/ChatCommands/ChatCommand.cpp | 47 ++++- .../game/Chat/ChatCommands/ChatCommand.h | 169 +++++++-------- .../Chat/ChatCommands/ChatCommandArgs.cpp | 140 +++++++++++-- .../game/Chat/ChatCommands/ChatCommandArgs.h | 192 ++++++++---------- .../Chat/ChatCommands/ChatCommandHelpers.h | 58 ++---- .../Chat/ChatCommands/ChatCommandTags.cpp | 41 ++-- .../game/Chat/ChatCommands/ChatCommandTags.h | 57 +++--- src/server/game/Scripting/ScriptMgr.cpp | 8 +- src/server/game/Scripting/ScriptMgr.h | 2 +- src/server/scripts/Commands/cs_account.cpp | 35 ++-- .../scripts/Commands/cs_achievement.cpp | 2 +- src/server/scripts/Commands/cs_ahbot.cpp | 79 ++++--- src/server/scripts/Commands/cs_arena.cpp | 2 +- src/server/scripts/Commands/cs_ban.cpp | 2 +- .../scripts/Commands/cs_battlenet_account.cpp | 2 +- src/server/scripts/Commands/cs_bf.cpp | 2 +- src/server/scripts/Commands/cs_cast.cpp | 2 +- src/server/scripts/Commands/cs_character.cpp | 2 +- src/server/scripts/Commands/cs_cheat.cpp | 2 +- src/server/scripts/Commands/cs_debug.cpp | 2 +- src/server/scripts/Commands/cs_deserter.cpp | 2 +- src/server/scripts/Commands/cs_disable.cpp | 2 +- src/server/scripts/Commands/cs_event.cpp | 2 +- src/server/scripts/Commands/cs_gm.cpp | 2 +- src/server/scripts/Commands/cs_go.cpp | 2 +- src/server/scripts/Commands/cs_gobject.cpp | 2 +- src/server/scripts/Commands/cs_group.cpp | 8 +- src/server/scripts/Commands/cs_guild.cpp | 6 +- src/server/scripts/Commands/cs_honor.cpp | 2 +- src/server/scripts/Commands/cs_instance.cpp | 2 +- src/server/scripts/Commands/cs_learn.cpp | 2 +- src/server/scripts/Commands/cs_lfg.cpp | 2 +- src/server/scripts/Commands/cs_list.cpp | 16 +- src/server/scripts/Commands/cs_lookup.cpp | 6 +- src/server/scripts/Commands/cs_message.cpp | 2 +- src/server/scripts/Commands/cs_misc.cpp | 2 +- src/server/scripts/Commands/cs_mmaps.cpp | 8 +- src/server/scripts/Commands/cs_modify.cpp | 8 +- src/server/scripts/Commands/cs_npc.cpp | 2 +- src/server/scripts/Commands/cs_pet.cpp | 2 +- src/server/scripts/Commands/cs_quest.cpp | 2 +- src/server/scripts/Commands/cs_rbac.cpp | 2 +- src/server/scripts/Commands/cs_reload.cpp | 12 +- src/server/scripts/Commands/cs_reset.cpp | 8 +- src/server/scripts/Commands/cs_scene.cpp | 2 +- src/server/scripts/Commands/cs_send.cpp | 2 +- src/server/scripts/Commands/cs_server.cpp | 18 +- src/server/scripts/Commands/cs_tele.cpp | 2 +- src/server/scripts/Commands/cs_ticket.cpp | 20 +- src/server/scripts/Commands/cs_titles.cpp | 2 +- src/server/scripts/Commands/cs_wp.cpp | 6 +- 55 files changed, 551 insertions(+), 477 deletions(-) diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp b/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp index 86f574726459f..de6c868d84b9b 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp +++ b/src/server/game/AuctionHouseBot/AuctionHouseBot.cpp @@ -486,7 +486,7 @@ void AuctionHouseBot::ReloadAllConfig() InitializeAgents(); } -void AuctionHouseBot::PrepareStatusInfos(std::unordered_map& statusInfo) +void AuctionHouseBot::PrepareStatusInfos(std::array& statusInfo) { for (AuctionHouseType ahType : EnumUtils::Iterate()) { diff --git a/src/server/game/AuctionHouseBot/AuctionHouseBot.h b/src/server/game/AuctionHouseBot/AuctionHouseBot.h index 11381b38a14e0..c82286b207863 100644 --- a/src/server/game/AuctionHouseBot/AuctionHouseBot.h +++ b/src/server/game/AuctionHouseBot/AuctionHouseBot.h @@ -316,7 +316,7 @@ class TC_GAME_API AuctionHouseBot void ReloadAllConfig(); void Rebuild(bool all); - void PrepareStatusInfos(std::unordered_map& statusInfo); + void PrepareStatusInfos(std::array& statusInfo); private: void InitializeAgents(); diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index b9ff4085f20e3..dc7a79112bb8e 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -149,10 +149,19 @@ void ChatHandler::SendSysMessage(uint32 entry) SendSysMessage(GetTrinityString(entry)); } -std::string ChatHandler::StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs) +void ChatHandler::SendSysMessage(std::string_view messageFormat, fmt::printf_args messageFormatArgs) noexcept +{ + SendSysMessage(StringVPrintf(messageFormat, messageFormatArgs)); +} + +std::string ChatHandler::StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs) noexcept try { return fmt::vsprintf(messageFormat, messageFormatArgs); } +catch (std::exception const& formatError) +{ + return fmt::format(R"(An error occurred formatting string "{}" : {})", messageFormat, formatError.what()); +} bool ChatHandler::_ParseCommands(std::string_view text) { diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 9ed2222208cc6..d44d984653173 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -56,32 +56,33 @@ class TC_GAME_API ChatHandler virtual void SendSysMessage(std::string_view str, bool escapeCharacters = false); void SendSysMessage(uint32 entry); + void SendSysMessage(std::string_view messageFormat, fmt::printf_args messageFormatArgs) noexcept; template void PSendSysMessage(char const* fmt, Args&&... args) { - SendSysMessage(StringVPrintf(fmt, fmt::make_printf_args(args...))); + this->SendSysMessage(fmt, fmt::make_printf_args(args...)); } template void PSendSysMessage(uint32 entry, Args&&... args) { - SendSysMessage(PGetParseString(entry, std::forward(args)...)); + this->PSendSysMessage(GetTrinityString(entry), std::forward(args)...); } template - static std::string PGetParseString(std::string_view fmt, Args&&... args) + static std::string PGetParseString(std::string_view fmt, Args&&... args) noexcept { return StringVPrintf(fmt, fmt::make_printf_args(args...)); } template - std::string PGetParseString(uint32 entry, Args&&... args) const + std::string PGetParseString(uint32 entry, Args&&... args) const noexcept { return PGetParseString(GetTrinityString(entry), std::forward(args)...); } - static std::string StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs); + static std::string StringVPrintf(std::string_view messageFormat, fmt::printf_args messageFormatArgs) noexcept; bool _ParseCommands(std::string_view text); virtual bool ParseCommands(std::string_view text); diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.cpp b/src/server/game/Chat/ChatCommands/ChatCommand.cpp index a26cb7aa7b4bd..3c6cc51ed4805 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommand.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommand.cpp @@ -31,20 +31,31 @@ using ChatSubCommandMap = std::map(&builder._data)) + switch (builder._data.index()) { - ASSERT(!_invoker, "Duplicate blank sub-command."); - _invoker = invokerEntry->_invoker; - if (invokerEntry->_help) - _help.emplace(invokerEntry->_help); - - _permission = invokerEntry->_permissions; + case 0: + { + ChatCommandBuilder::InvokerEntry const& invokerEntry = std::get<0>(builder._data); + ASSERT(!_invoker, "Duplicate blank sub-command."); + _invoker = invokerEntry._invoker; + if (invokerEntry._help != TrinityStrings()) + _help.emplace(invokerEntry._help); + + _permission = invokerEntry._permissions; + break; + } + case 1: + { + auto [data, size] = std::get<1>(builder._data); + LoadCommandsIntoMap(this, _subCommands, { data, size }); + break; + } + default: + break; } - else - LoadCommandsIntoMap(this, _subCommands, std::get(builder._data)); } -/*static*/ void Trinity::Impl::ChatCommands::ChatCommandNode::LoadCommandsIntoMap(ChatCommandNode* blank, ChatSubCommandMap& map, Trinity::ChatCommands::ChatCommandTable const& commands) +/*static*/ void Trinity::Impl::ChatCommands::ChatCommandNode::LoadCommandsIntoMap(ChatCommandNode* blank, ChatSubCommandMap& map, std::span commands) { for (ChatCommandBuilder const& builder : commands) { @@ -475,6 +486,22 @@ bool Trinity::Impl::ChatCommands::ChatCommandNode::HasVisibleSubCommands(ChatHan return false; } +void Trinity::Impl::ChatCommands::MergeChatCommandResults(ChatHandler const* handler, ChatCommandResult& result1, ChatCommandResult& result2) noexcept +{ + if (result2.IsSuccessful()) + result1 = *result2; + else if (result2.HasErrorMessage()) + { + if (result1.HasErrorMessage()) + result1 = Trinity::StringFormat("{} \"{}\"\n{} \"{}\"", + GetTrinityString(handler, LANG_CMDPARSER_EITHER), result2.GetErrorMessage(), + GetTrinityString(handler, LANG_CMDPARSER_OR), result1.GetErrorMessage()); + else + result1 = std::move(result2).GetErrorMessage(); + } + // else only result1 has error message, don't need to do anything +} + void Trinity::ChatCommands::LoadCommandMap() { Trinity::Impl::ChatCommands::ChatCommandNode::LoadCommandMap(); } void Trinity::ChatCommands::InvalidateCommandMap() { Trinity::Impl::ChatCommands::ChatCommandNode::InvalidateCommandMap(); } bool Trinity::ChatCommands::TryExecuteCommand(ChatHandler& handler, std::string_view cmd) { return Trinity::Impl::ChatCommands::ChatCommandNode::TryExecuteCommand(handler, cmd); } diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.h b/src/server/game/Chat/ChatCommands/ChatCommand.h index b7783e4faa89b..13f65a6a9d78d 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommand.h +++ b/src/server/game/Chat/ChatCommands/ChatCommand.h @@ -46,7 +46,7 @@ namespace Trinity::ChatCommands }; struct ChatCommandBuilder; - using ChatCommandTable = std::vector; + using ChatCommandTable = ChatCommandBuilder const[]; } namespace Trinity::Impl::ChatCommands @@ -56,105 +56,95 @@ namespace Trinity::Impl::ChatCommands // the call stack is MultiConsumer -> ConsumeFromOffset -> MultiConsumer -> ConsumeFromOffset etc // MultiConsumer goes into ArgInfo for parsing on each iteration template - ChatCommandResult ConsumeFromOffset(Tuple&, ChatHandler const* handler, std::string_view args); + void ConsumeFromOffset(ChatCommandResult& result, Tuple&, ChatHandler const* handler, std::string_view args) noexcept; template struct MultiConsumer { - static ChatCommandResult TryConsumeTo(Tuple& tuple, ChatHandler const* handler, std::string_view args) + inline static ChatCommandResult TryConsumeTo(Tuple& tuple, ChatHandler const* handler, std::string_view args) noexcept { ChatCommandResult next = ArgInfo::TryConsume(std::get(tuple), handler, args); if (next) - return ConsumeFromOffset(tuple, handler, *next); - else - return next; + ConsumeFromOffset(next, tuple, handler, *next); + return next; } }; + TC_GAME_API void MergeChatCommandResults(ChatHandler const* handler, ChatCommandResult& result1, ChatCommandResult& result2) noexcept; + template struct MultiConsumer, offset> { - static ChatCommandResult TryConsumeTo(Tuple& tuple, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsumeTo(Tuple& tuple, ChatHandler const* handler, std::string_view args) noexcept { // try with the argument auto& myArg = std::get(tuple); - myArg.emplace(); - ChatCommandResult result1 = ArgInfo::TryConsume(myArg.value(), handler, args); + ChatCommandResult result1 = ArgInfo::TryConsume(myArg.emplace(), handler, args); if (result1) - if ((result1 = ConsumeFromOffset(tuple, handler, *result1))) - return result1; - // try again omitting the argument - myArg = std::nullopt; - ChatCommandResult result2 = ConsumeFromOffset(tuple, handler, args); - if (result2) - return result2; - if (result1.HasErrorMessage() && result2.HasErrorMessage()) { - return Trinity::StringFormat("{} \"{}\"\n{} \"{}\"", - GetTrinityString(handler, LANG_CMDPARSER_EITHER), result2.GetErrorMessage(), - GetTrinityString(handler, LANG_CMDPARSER_OR), result1.GetErrorMessage()); + ConsumeFromOffset(result1, tuple, handler, *result1); + if (result1) + return result1; } - else if (result1.HasErrorMessage()) - return result1; - else - return result2; + + // try again omitting the argument + myArg.reset(); + ChatCommandResult result2 = std::nullopt; + ConsumeFromOffset(result2, tuple, handler, args); + MergeChatCommandResults(handler, result1, result2); + return result1; } }; template - ChatCommandResult ConsumeFromOffset([[maybe_unused]] Tuple& tuple, [[maybe_unused]] ChatHandler const* handler, std::string_view args) + void ConsumeFromOffset([[maybe_unused]] ChatCommandResult& result, [[maybe_unused]] Tuple& tuple, [[maybe_unused]] ChatHandler const* handler, std::string_view args) noexcept { if constexpr (offset < std::tuple_size_v) - return MultiConsumer, offset>::TryConsumeTo(tuple, handler, args); + result = MultiConsumer, offset>::TryConsumeTo(tuple, handler, args); else if (!args.empty()) /* the entire string must be consumed */ - return std::nullopt; + result = std::nullopt; else - return args; + result = args; } - template struct HandlerToTuple { static_assert(Trinity::dependant_false_v, "Invalid command handler signature"); }; - template struct HandlerToTuple { using type = std::tuple; }; - - template struct ValueTupleType { }; - template struct ValueTupleType> { using type = std::tuple...>; }; - - struct CommandInvoker + template struct CommandInvokerTraits { static_assert(Trinity::dependant_false_v, "Invalid command handler signature"); }; + template struct CommandInvokerTraits { - CommandInvoker() : _wrapper(nullptr), _handler(nullptr) {} - template - CommandInvoker(TypedHandler& handler) + using Func = bool(ChatHandler*, Ts...); + using Refs = std::tuple; + using Vals = std::tuple...>; + + static bool Wrapper(void* handler, ChatHandler* chatHandler, std::string_view argsStr) noexcept { - _wrapper = [](void* handler, ChatHandler* chatHandler, std::string_view argsStr) - { - using RefTuple = typename HandlerToTuple::type; - using ValueTuple = typename ValueTupleType::type; - - ValueTuple arguments; - std::get<0>(arguments) = chatHandler; - ChatCommandResult result = ConsumeFromOffset(arguments, chatHandler, argsStr); - if (result) - return Invoke(reinterpret_cast(handler), arguments, std::make_index_sequence>{}); - else - { - if (result.HasErrorMessage()) - SendErrorMessageToHandler(chatHandler, result.GetErrorMessage()); - return false; - } - }; - _handler = reinterpret_cast(handler); + Vals arguments; + ChatCommandResult result = std::nullopt; + ConsumeFromOffset(result, arguments, chatHandler, argsStr); + if (result.IsSuccessful()) + return Invoke(reinterpret_cast(handler), chatHandler, arguments, std::make_index_sequence>{}); + + if (result.HasErrorMessage()) + SendErrorMessageToHandler(chatHandler, result.GetErrorMessage()); + + return false; } - CommandInvoker(bool(&handler)(ChatHandler*, char const*)) + + template + inline static constexpr bool Invoke(Func* handler, ChatHandler* chatHandler, Vals& arguments, std::index_sequence) noexcept { - _wrapper = [](void* handler, ChatHandler* chatHandler, std::string_view argsStr) - { - // make a copy of the argument string - // legacy handlers can destroy input strings with strtok - std::string argsStrCopy(argsStr); - return reinterpret_cast(handler)(chatHandler, argsStrCopy.c_str()); - }; - _handler = reinterpret_cast(handler); + // Invoke command handler preserving original reference category of each argument + return handler(chatHandler, std::get(advstd::forward_like>(arguments))...); } + }; + + template struct CommandInvokerTraits : CommandInvokerTraits { }; + + struct CommandInvoker + { + CommandInvoker() = default; + template + CommandInvoker(TypedHandler& handler) : _wrapper(&CommandInvokerTraits::Wrapper), _handler(reinterpret_cast(handler)) { } + CommandInvoker(bool(&handler)(ChatHandler*, char const*)) : _wrapper(&LegacyWrapper), _handler(reinterpret_cast(handler)) { } explicit operator bool() const { return (_wrapper != nullptr); } bool operator()(ChatHandler* chatHandler, std::string_view args) const @@ -164,16 +154,17 @@ namespace Trinity::Impl::ChatCommands } private: - template - static constexpr bool Invoke(TypedHandler* handler, ValueTuple& arguments, std::index_sequence) + static bool LegacyWrapper(void* handler, ChatHandler* chatHandler, std::string_view argsStr) noexcept { - // Invoke command handler preserving original reference category of each argument - return std::invoke(handler, std::get(advstd::forward_like>(arguments))...); + // make a copy of the argument string + // legacy handlers can destroy input strings with strtok + std::string argsStrCopy(argsStr); + return reinterpret_cast(handler)(chatHandler, argsStrCopy.c_str()); } - using wrapper_func = bool(void*, ChatHandler*, std::string_view); - wrapper_func* _wrapper; - void* _handler; + using wrapper_func = std::add_pointer_t; + wrapper_func _wrapper = nullptr; + void* _handler = nullptr; }; struct CommandPermissions @@ -196,14 +187,18 @@ namespace Trinity::Impl::ChatCommands static void SendCommandHelpFor(ChatHandler& handler, std::string_view cmd); static std::vector GetAutoCompletionsFor(ChatHandler const& handler, std::string_view cmd); - ChatCommandNode() : _name{}, _invoker {}, _permission{}, _help{}, _subCommands{} {} + ChatCommandNode() = default; + ~ChatCommandNode() = default; private: static std::map const& GetTopLevelMap(); - static void LoadCommandsIntoMap(ChatCommandNode* blank, std::map& map, Trinity::ChatCommands::ChatCommandTable const& commands); + static void LoadCommandsIntoMap(ChatCommandNode* blank, std::map& map, std::span commands); void LoadFromBuilder(ChatCommandBuilder const& builder); - ChatCommandNode(ChatCommandNode&& other) = default; + ChatCommandNode(ChatCommandNode const& other) = delete; + ChatCommandNode(ChatCommandNode&& other) noexcept = default; + ChatCommandNode& operator=(ChatCommandNode const& other) = delete; + ChatCommandNode& operator=(ChatCommandNode&& other) noexcept = default; void ResolveNames(std::string name); void SendCommandHelp(ChatHandler& handler) const; @@ -231,29 +226,24 @@ namespace Trinity::ChatCommands InvokerEntry(T& handler, TrinityStrings help, rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole) : _invoker{ handler }, _help{ help }, _permissions{ permission, allowConsole } {} - InvokerEntry(InvokerEntry const&) = default; - InvokerEntry(InvokerEntry&&) = default; Trinity::Impl::ChatCommands::CommandInvoker _invoker; TrinityStrings _help; Trinity::Impl::ChatCommands::CommandPermissions _permissions; }; - using SubCommandEntry = std::reference_wrapper const>; - - ChatCommandBuilder(ChatCommandBuilder&&) = default; - ChatCommandBuilder(ChatCommandBuilder const&) = default; + using SubCommandEntry = std::span; template - ChatCommandBuilder(char const* name, TypedHandler& handler, TrinityStrings help, rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole) - : _name{ ASSERT_NOTNULL(name) }, _data{ std::in_place_type, handler, help, permission, allowConsole } + ChatCommandBuilder(std::string_view name, TypedHandler& handler, TrinityStrings help, rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole) + : _name{ name }, _data{ InvokerEntry { handler, help, permission, allowConsole } } {} template - ChatCommandBuilder(char const* name, TypedHandler& handler, rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole) + ChatCommandBuilder(std::string_view name, TypedHandler& handler, rbac::RBACPermissions permission, Trinity::ChatCommands::Console allowConsole) : ChatCommandBuilder(name, handler, TrinityStrings(), permission, allowConsole) {} - ChatCommandBuilder(char const* name, std::vector const& subCommands) - : _name{ ASSERT_NOTNULL(name) }, _data{ std::in_place_type, subCommands } + ChatCommandBuilder(std::string_view name, std::span subCommands) + : _name{ name }, _data{ std::in_place_index<1>, subCommands.data(), subCommands.size() } {} [[deprecated("char const* parameters to command handlers are deprecated; convert this to a typed argument handler instead")]] @@ -268,13 +258,13 @@ namespace Trinity::ChatCommands {} [[deprecated("you are using the old-style command format; convert this to the new format ({ name, subCommands })")]] - ChatCommandBuilder(char const* name, rbac::RBACPermissions, bool, std::nullptr_t, char const*, std::vector const& sub) + ChatCommandBuilder(char const* name, rbac::RBACPermissions, bool, std::nullptr_t, char const*, SubCommandEntry sub) : ChatCommandBuilder(name, sub) {} private: std::string_view _name; - std::variant _data; + std::variant /*workaround: span requires type to be complete*/> _data; }; TC_GAME_API void LoadCommandMap(); @@ -284,7 +274,4 @@ namespace Trinity::ChatCommands TC_GAME_API std::vector GetAutoCompletionsFor(ChatHandler const& handler, std::string_view cmd); } -// backwards compatibility with old patches -using ChatCommand [[deprecated("std::vector should be ChatCommandTable! (using namespace Trinity::ChatCommands)")]] = Trinity::ChatCommands::ChatCommandBuilder; - #endif diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index e4b0d7b4d2c67..c25002e2eca2e 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -18,27 +18,116 @@ #include "ChatCommandArgs.h" #include "ChatCommand.h" #include "DB2Stores.h" +#include "MapUtils.h" #include "ObjectMgr.h" #include "SpellMgr.h" using namespace Trinity::ChatCommands; using ChatCommandResult = Trinity::Impl::ChatCommands::ChatCommandResult; +void Trinity::Impl::ChatCommands::InvalidStringValueFormatError(ChatCommandResult& result, ChatHandler const* handler, std::string_view arg, std::type_info const& type) noexcept +{ + result = FormatTrinityString(handler, LANG_CMDPARSER_STRING_VALUE_INVALID, STRING_VIEW_FMT_ARG(arg), Trinity::GetTypeName(type).c_str()); +} + +void Trinity::Impl::ChatCommands::EnumArgInfoBase::AddSearchMapEntry(SearchMap& map, int64 val, EnumText const& text) noexcept +{ + std::string_view title(text.Title); + std::string_view constant(text.Constant); + + StringCompareLessI_T compare; + + auto constantIt = std::ranges::lower_bound(map, constant, compare, Containers::MapKey); + if (constantIt == map.end() || compare(constant, constantIt->first)) + map.emplace(constantIt, constant, val); // not unique + else + constantIt->second = std::nullopt; + + if (title != constant) + { + auto titleIt = std::ranges::lower_bound(map, title, compare, Containers::MapKey); + if (constantIt == map.end() || compare(title, titleIt->first)) + map.emplace(titleIt, title, val); // not unique + else + titleIt->second = std::nullopt; + } +} + +int64 const* Trinity::Impl::ChatCommands::EnumArgInfoBase::Match(SearchMap const& map, std::string_view s) noexcept +{ + auto it = std::ranges::lower_bound(map, s, StringCompareLessI_T(), Containers::MapKey); + auto end = map.end(); + if (it == end || !StringStartsWithI(it->first, s)) // not a match + return nullptr; + + if (!StringEqualI(it->first, s)) // we don't have an exact match - check if it is unique + { + auto it2 = it; + ++it2; + if (it2 != end && StringStartsWithI(it2->first, s)) // not unique + return nullptr; + } + + if (it->second) + return &*it->second; + else + return nullptr; +} + +bool Trinity::Impl::ChatCommands::HandleVariantChatCommandConsumeResults(ChatCommandResult& combined, ChatCommandResult&& current, ChatHandler const* handler) noexcept +{ + if (!current.IsSuccessful()) + { + if (current.HasErrorMessage()) + { + if (combined.HasErrorMessage()) + { + std::string mergedError = std::move(combined).GetErrorMessage(); + mergedError.append(1, '\n'); + mergedError.append(GetTrinityString(handler, LANG_CMDPARSER_OR)); + mergedError.append(1, ' '); + mergedError.append(current.GetErrorMessage()); + combined = std::move(mergedError); + } + else + combined = std::move(current).GetErrorMessage(); + } + + return false; + } + + combined = *current; + return true; +} + +void Trinity::Impl::ChatCommands::PrefixVariantChatCommandError(ChatCommandResult& combined, ChatHandler const* handler) noexcept +{ + if (combined.HasErrorMessage() && combined.GetErrorMessage().find('\n') != std::string::npos) + { + std::string error = std::string(GetTrinityString(handler, LANG_CMDPARSER_EITHER)) + .append(1, ' ') + .append(combined.GetErrorMessage()); + combined = std::move(error); + } +} + struct AchievementVisitor { using value_type = AchievementEntry const*; - value_type operator()(Hyperlink achData) const { return achData->Achievement; } + value_type operator()(Hyperlink const& achData) const { return achData->Achievement; } value_type operator()(uint32 achId) const { return sAchievementStore.LookupEntry(achId); } }; -ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(AchievementEntry const*& data, ChatHandler const* handler, std::string_view args) +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(AchievementEntry const*& data, ChatHandler const* handler, std::string_view args) noexcept { Variant, uint32> val; ChatCommandResult result = ArgInfo::TryConsume(val, handler, args); if (!result || (data = val.visit(AchievementVisitor()))) return result; if (uint32* id = std::get_if(&val)) - return FormatTrinityString(handler, LANG_CMDPARSER_ACHIEVEMENT_NO_EXIST, *id); - return std::nullopt; + result = FormatTrinityString(handler, LANG_CMDPARSER_ACHIEVEMENT_NO_EXIST, *id); + else + result = std::nullopt; + return result; } struct CurrencyTypesVisitor @@ -47,15 +136,17 @@ struct CurrencyTypesVisitor value_type operator()(Hyperlink currency) const { return currency->Currency; } value_type operator()(uint32 currencyId) const { return sCurrencyTypesStore.LookupEntry(currencyId); } }; -ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(CurrencyTypesEntry const*& data, ChatHandler const* handler, std::string_view args) +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(CurrencyTypesEntry const*& data, ChatHandler const* handler, std::string_view args) noexcept { Variant, uint32> val; ChatCommandResult result = ArgInfo::TryConsume(val, handler, args); if (!result || (data = val.visit(CurrencyTypesVisitor()))) return result; if (uint32* id = std::get_if(&val)) - return FormatTrinityString(handler, LANG_CMDPARSER_CURRENCY_NO_EXIST, *id); - return std::nullopt; + result = FormatTrinityString(handler, LANG_CMDPARSER_CURRENCY_NO_EXIST, *id); + else + result = std::nullopt; + return result; } struct GameTeleVisitor @@ -64,33 +155,36 @@ struct GameTeleVisitor value_type operator()(Hyperlink tele) const { return sObjectMgr->GetGameTele(tele); } value_type operator()(std::string_view tele) const { return sObjectMgr->GetGameTele(tele); } }; -ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(GameTele const*& data, ChatHandler const* handler, std::string_view args) +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(GameTele const*& data, ChatHandler const* handler, std::string_view args) noexcept { Variant, std::string_view> val; ChatCommandResult result = ArgInfo::TryConsume(val, handler, args); if (!result || (data = val.visit(GameTeleVisitor()))) return result; if (val.holds_alternative>()) - return FormatTrinityString(handler, LANG_CMDPARSER_GAME_TELE_ID_NO_EXIST, static_cast(std::get>(val))); + result = FormatTrinityString(handler, LANG_CMDPARSER_GAME_TELE_ID_NO_EXIST, static_cast(std::get>(val))); else - return FormatTrinityString(handler, LANG_CMDPARSER_GAME_TELE_NO_EXIST, STRING_VIEW_FMT_ARG(std::get(val))); + result = FormatTrinityString(handler, LANG_CMDPARSER_GAME_TELE_NO_EXIST, STRING_VIEW_FMT_ARG(std::get(val))); + return result; } struct ItemTemplateVisitor { using value_type = ItemTemplate const*; - value_type operator()(Hyperlink item) const { return item->Item; } + value_type operator()(Hyperlink const& item) const { return item->Item; } value_type operator()(uint32 item) const { return sObjectMgr->GetItemTemplate(item); } }; -ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(ItemTemplate const*& data, ChatHandler const* handler, std::string_view args) +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(ItemTemplate const*& data, ChatHandler const* handler, std::string_view args) noexcept { Variant, uint32> val; ChatCommandResult result = ArgInfo::TryConsume(val, handler, args); if (!result || (data = val.visit(ItemTemplateVisitor()))) return result; if (uint32* id = std::get_if(&val)) - return FormatTrinityString(handler, LANG_CMDPARSER_ITEM_NO_EXIST, *id); - return std::nullopt; + result = FormatTrinityString(handler, LANG_CMDPARSER_ITEM_NO_EXIST, *id); + else + result = std::nullopt; + return result; } struct QuestVisitor @@ -99,15 +193,17 @@ struct QuestVisitor value_type operator()(Hyperlink quest) const { return quest->Quest; } value_type operator()(uint32 questId) const { return sObjectMgr->GetQuestTemplate(questId); } }; -ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(Quest const*& data, ChatHandler const* handler, std::string_view args) +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(Quest const*& data, ChatHandler const* handler, std::string_view args) noexcept { Variant, uint32> val; ChatCommandResult result = ArgInfo::TryConsume(val, handler, args); if (!result || (data = val.visit(QuestVisitor()))) return result; if (uint32* id = std::get_if(&val)) - return FormatTrinityString(handler, LANG_CMDPARSER_QUEST_NO_EXIST, *id); - return std::nullopt; + result = FormatTrinityString(handler, LANG_CMDPARSER_QUEST_NO_EXIST, *id); + else + result = std::nullopt; + return result; } struct SpellInfoVisitor @@ -122,17 +218,19 @@ struct SpellInfoVisitor value_type operator()(Hyperlink pvpTalent) const { return operator()((*pvpTalent)->SpellID); } value_type operator()(Hyperlink spell) const { return spell->Spell; } value_type operator()(Hyperlink talent) const { return operator()((*talent)->SpellID); } - value_type operator()(Hyperlink trade) const { return trade->Spell; } + value_type operator()(Hyperlink const& trade) const { return trade->Spell; } value_type operator()(uint32 spellId) const { return sSpellMgr->GetSpellInfo(spellId, DIFFICULTY_NONE); } }; -ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(SpellInfo const*& data, ChatHandler const* handler, std::string_view args) +ChatCommandResult Trinity::Impl::ChatCommands::ArgInfo::TryConsume(SpellInfo const*& data, ChatHandler const* handler, std::string_view args) noexcept { Variant, Hyperlink, Hyperlink, Hyperlink, Hyperlink, Hyperlink, Hyperlink, Hyperlink, Hyperlink, uint32> val; ChatCommandResult result = ArgInfo::TryConsume(val, handler, args); if (!result || (data = val.visit(SpellInfoVisitor()))) return result; if (uint32* id = std::get_if(&val)) - return FormatTrinityString(handler, LANG_CMDPARSER_SPELL_NO_EXIST, *id); - return std::nullopt; + result = FormatTrinityString(handler, LANG_CMDPARSER_SPELL_NO_EXIST, *id); + else + result = std::nullopt; + return result; } diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h index 630e7ea6237f4..d2cf1b0db7218 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.h @@ -25,10 +25,9 @@ #include "StringConvert.h" #include "StringFormat.h" #include "Util.h" -#include -#include #include #include +#include struct GameTele; @@ -47,39 +46,50 @@ namespace Trinity::Impl::ChatCommands |* - otherwise, the state of T& is indeterminate and caller will not use it *| |* *| \****************************************************************************************/ - template + template struct ArgInfo { static_assert(Trinity::dependant_false_v, "Invalid command parameter type - see ChatCommandArgs.h for possible types"); }; + TC_GAME_API void InvalidStringValueFormatError(ChatCommandResult& result, ChatHandler const* handler, std::string_view arg, std::type_info const& type) noexcept; + // catch-all for number types - template - struct ArgInfo || std::is_floating_point_v>> + template requires std::is_arithmetic_v + struct ArgInfo { - static ChatCommandResult TryConsume(T& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(T& val, ChatHandler const* handler, std::string_view args) noexcept { auto [token, tail] = tokenize(args); + ChatCommandResult result = std::nullopt; if (token.empty()) - return std::nullopt; + return result; - if (Optional v = StringTo(token, 0)) - val = *v; - else - return FormatTrinityString(handler, LANG_CMDPARSER_STRING_VALUE_INVALID, STRING_VIEW_FMT_ARG(token), Trinity::GetTypeName().c_str()); + Optional v = StringTo(token, 0); + if (!v) + { + InvalidStringValueFormatError(result, handler, token, typeid(T)); + return result; + } if constexpr (std::is_floating_point_v) { if (!std::isfinite(val)) - return FormatTrinityString(handler, LANG_CMDPARSER_STRING_VALUE_INVALID, STRING_VIEW_FMT_ARG(token), Trinity::GetTypeName().c_str()); + { + InvalidStringValueFormatError(result, handler, token, typeid(T)); + return result; + } } - return tail; + val = *v; + result = tail; + + return result; } }; // string_view template <> - struct ArgInfo + struct ArgInfo { - static ChatCommandResult TryConsume(std::string_view& val, ChatHandler const*, std::string_view args) + static ChatCommandResult TryConsume(std::string_view& val, ChatHandler const*, std::string_view args) noexcept { auto [token, next] = tokenize(args); if (token.empty()) @@ -91,9 +101,9 @@ namespace Trinity::Impl::ChatCommands // string template <> - struct ArgInfo + struct ArgInfo { - static ChatCommandResult TryConsume(std::string& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(std::string& val, ChatHandler const* handler, std::string_view args) noexcept { std::string_view view; ChatCommandResult next = ArgInfo::TryConsume(view, handler, args); @@ -105,85 +115,58 @@ namespace Trinity::Impl::ChatCommands // wstring template <> - struct ArgInfo + struct ArgInfo { - static ChatCommandResult TryConsume(std::wstring& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(std::wstring& val, ChatHandler const* handler, std::string_view args) noexcept { std::string_view utf8view; ChatCommandResult next = ArgInfo::TryConsume(utf8view, handler, args); if (next) { - if (Utf8toWStr(utf8view, val)) - return next; - else - return GetTrinityString(handler, LANG_CMDPARSER_INVALID_UTF8); + if (!Utf8toWStr(utf8view, val)) + next = GetTrinityString(handler, LANG_CMDPARSER_INVALID_UTF8); } else - return std::nullopt; + next = std::nullopt; + + return next; } }; // enum - template - struct ArgInfo>> + struct TC_GAME_API EnumArgInfoBase { - using SearchMap = std::map, StringCompareLessI_T>; - static SearchMap MakeSearchMap() + using SearchMap = std::vector>>; + + static void AddSearchMapEntry(SearchMap& map, int64 val, EnumText const& text) noexcept; + + static int64 const* Match(SearchMap const& map, std::string_view s) noexcept; + }; + + template requires std::is_enum_v + struct ArgInfo : EnumArgInfoBase + { + static SearchMap MakeSearchMap() noexcept { SearchMap map; for (T val : EnumUtils::Iterate()) - { - EnumText text = EnumUtils::ToString(val); - - std::string_view title(text.Title); - std::string_view constant(text.Constant); - - auto [constantIt, constantNew] = map.try_emplace(constant, val); - if (!constantNew) - constantIt->second = std::nullopt; + EnumArgInfoBase::AddSearchMapEntry(map, int64(val), EnumUtils::ToString(val)); - if (title != constant) - { - auto [titleIt, titleNew] = map.try_emplace(title, val); - if (!titleNew) - titleIt->second = std::nullopt; - } - } return map; } static inline SearchMap const _map = MakeSearchMap(); - static T const* Match(std::string_view s) - { - auto it = _map.lower_bound(s); - if (it == _map.end() || !StringStartsWithI(it->first, s)) // not a match - return nullptr; - - if (!StringEqualI(it->first, s)) // we don't have an exact match - check if it is unique - { - auto it2 = it; - ++it2; - if ((it2 != _map.end()) && StringStartsWithI(it2->first, s)) // not unique - return nullptr; - } - - if (it->second) - return &*it->second; - else - return nullptr; - } - - static ChatCommandResult TryConsume(T& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(T& val, ChatHandler const* handler, std::string_view args) noexcept { std::string_view strVal; ChatCommandResult next1 = ArgInfo::TryConsume(strVal, handler, args); if (next1) { - if (T const* match = Match(strVal)) + if (int64 const* match = Match(_map, strVal)) { - val = *match; + val = static_cast(*match); return next1; } } @@ -201,22 +184,24 @@ namespace Trinity::Impl::ChatCommands break; val = static_cast(uVal); - return next2; + next1 = *next2; + return next1; } } while (false); + // We successfully parsed a token but it couldn't be converted to enum - replace it with error if (next1) - return FormatTrinityString(handler, LANG_CMDPARSER_STRING_VALUE_INVALID, STRING_VIEW_FMT_ARG(strVal), Trinity::GetTypeName().c_str()); - else - return next1; + InvalidStringValueFormatError(next1, handler, strVal, typeid(T)); + + return next1; } }; // a container tag - template - struct ArgInfo>> + template requires std::is_base_of_v + struct ArgInfo { - static ChatCommandResult TryConsume(T& tag, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(T& tag, ChatHandler const* handler, std::string_view args) noexcept { return tag.TryConsume(handler, args); } @@ -224,9 +209,9 @@ namespace Trinity::Impl::ChatCommands // non-empty vector template - struct ArgInfo, void> + struct ArgInfo> { - static ChatCommandResult TryConsume(std::vector& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(std::vector& val, ChatHandler const* handler, std::string_view args) noexcept { val.clear(); ChatCommandResult next = ArgInfo::TryConsume(val.emplace_back(), handler, args); @@ -244,9 +229,9 @@ namespace Trinity::Impl::ChatCommands // fixed-size array template - struct ArgInfo, void> + struct ArgInfo> { - static ChatCommandResult TryConsume(std::array& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(std::array& val, ChatHandler const* handler, std::string_view args) noexcept { ChatCommandResult next = args; for (T& t : val) @@ -257,42 +242,25 @@ namespace Trinity::Impl::ChatCommands }; // variant + TC_GAME_API bool HandleVariantChatCommandConsumeResults(ChatCommandResult& combined, ChatCommandResult&& current, ChatHandler const* handler) noexcept; + TC_GAME_API void PrefixVariantChatCommandError(ChatCommandResult& combined, ChatHandler const* handler) noexcept; + template struct ArgInfo> { - using V = std::variant; - static constexpr size_t N = std::variant_size_v; + using Variant = std::variant; - template - static ChatCommandResult TryAtIndex([[maybe_unused]] Trinity::ChatCommands::Variant& val, [[maybe_unused]] ChatHandler const* handler, [[maybe_unused]] std::string_view args) + template + inline static bool TryConsume(ChatCommandResult& result, Variant& val, ChatHandler const* handler, std::string_view args, std::index_sequence) noexcept { - if constexpr (I < N) - { - ChatCommandResult thisResult = ArgInfo>::TryConsume(val.template emplace(), handler, args); - if (thisResult) - return thisResult; - else - { - ChatCommandResult nestedResult = TryAtIndex(val, handler, args); - if (nestedResult || !thisResult.HasErrorMessage()) - return nestedResult; - if (!nestedResult.HasErrorMessage()) - return thisResult; - if (StringStartsWith(nestedResult.GetErrorMessage(), "\"")) - return Trinity::StringFormat("\"{}\"\n{} {}", thisResult.GetErrorMessage(), GetTrinityString(handler, LANG_CMDPARSER_OR), nestedResult.GetErrorMessage()); - else - return Trinity::StringFormat("\"{}\"\n{} \"{}\"", thisResult.GetErrorMessage(), GetTrinityString(handler, LANG_CMDPARSER_OR), nestedResult.GetErrorMessage()); - } - } - else - return std::nullopt; + return (HandleVariantChatCommandConsumeResults(result, ArgInfo>::TryConsume(val.template emplace(), handler, args), handler) || ...); } - static ChatCommandResult TryConsume(Trinity::ChatCommands::Variant& val, ChatHandler const* handler, std::string_view args) + static ChatCommandResult TryConsume(Trinity::ChatCommands::Variant& val, ChatHandler const* handler, std::string_view args) noexcept { - ChatCommandResult result = TryAtIndex<0>(val, handler, args); - if (result.HasErrorMessage() && (result.GetErrorMessage().find('\n') != std::string::npos)) - return Trinity::StringFormat("{} {}", GetTrinityString(handler, LANG_CMDPARSER_EITHER), result.GetErrorMessage()); + ChatCommandResult result = std::nullopt; + if (!TryConsume(result, val, handler, args, std::index_sequence_for())) + PrefixVariantChatCommandError(result, handler); return result; } }; @@ -301,42 +269,42 @@ namespace Trinity::Impl::ChatCommands template <> struct TC_GAME_API ArgInfo { - static ChatCommandResult TryConsume(AchievementEntry const*&, ChatHandler const*, std::string_view); + static ChatCommandResult TryConsume(AchievementEntry const*&, ChatHandler const*, std::string_view) noexcept; }; // CurrencyTypesEntry* from numeric id or link template <> struct TC_GAME_API ArgInfo { - static ChatCommandResult TryConsume(CurrencyTypesEntry const*&, ChatHandler const*, std::string_view); + static ChatCommandResult TryConsume(CurrencyTypesEntry const*&, ChatHandler const*, std::string_view) noexcept; }; // GameTele* from string name or link template <> struct TC_GAME_API ArgInfo { - static ChatCommandResult TryConsume(GameTele const*&, ChatHandler const*, std::string_view); + static ChatCommandResult TryConsume(GameTele const*&, ChatHandler const*, std::string_view) noexcept; }; // ItemTemplate* from numeric id or link template <> struct TC_GAME_API ArgInfo { - static ChatCommandResult TryConsume(ItemTemplate const*&, ChatHandler const*, std::string_view); + static ChatCommandResult TryConsume(ItemTemplate const*&, ChatHandler const*, std::string_view) noexcept; }; // Quest* from numeric id or link template <> struct TC_GAME_API ArgInfo { - static ChatCommandResult TryConsume(Quest const*&, ChatHandler const*, std::string_view); + static ChatCommandResult TryConsume(Quest const*&, ChatHandler const*, std::string_view) noexcept; }; // SpellInfo const* from spell id or link template <> struct TC_GAME_API ArgInfo { - static ChatCommandResult TryConsume(SpellInfo const*&, ChatHandler const*, std::string_view); + static ChatCommandResult TryConsume(SpellInfo const*&, ChatHandler const*, std::string_view) noexcept; }; } diff --git a/src/server/game/Chat/ChatCommands/ChatCommandHelpers.h b/src/server/game/Chat/ChatCommands/ChatCommandHelpers.h index 271e1d70a450c..16c4197b68d9a 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandHelpers.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandHelpers.h @@ -20,8 +20,7 @@ #include "Define.h" #include "Language.h" -#include "Optional.h" -#include "StringFormat.h" +#include "Optional.h" // for std::nullopt #include #include #include @@ -47,13 +46,14 @@ namespace Trinity::Impl::ChatCommands template using tag_base_t = typename tag_base::type; - struct TokenizeResult { - explicit operator bool() { return !token.empty(); } + struct TokenizeResult + { + explicit operator bool() const { return !token.empty(); } std::string_view token; std::string_view tail; }; - inline TokenizeResult tokenize(std::string_view args) + inline TokenizeResult tokenize(std::string_view args) noexcept { TokenizeResult result; if (size_t delimPos = args.find(COMMAND_DELIMITER); delimPos != std::string_view::npos) @@ -68,30 +68,6 @@ namespace Trinity::Impl::ChatCommands return result; } - template - struct are_all_assignable - { - static constexpr bool value = (std::is_assignable_v && ...); - }; - - template - struct are_all_assignable - { - static constexpr bool value = false; - }; - - template - struct get_nth : get_nth { }; - - template - struct get_nth<0, T1, Ts...> - { - using type = T1; - }; - - template - using get_nth_t = typename get_nth::type; - // this essentially models std::optional, except it can also hold an error message // it has std::string_view's bool conversion and dereference operators // @@ -100,25 +76,33 @@ namespace Trinity::Impl::ChatCommands // std::string_view <-> success, string_view is remaining argument string struct ChatCommandResult { - ChatCommandResult(std::nullopt_t) : _storage() {} + ChatCommandResult(std::nullopt_t) noexcept : _storage() {} ChatCommandResult(std::string const&) = delete; - ChatCommandResult(std::string&& s) : _storage(std::in_place_type, std::forward(s)) {} + ChatCommandResult(std::string&& s) noexcept : _storage(std::in_place_type, std::move(s)) {} ChatCommandResult(char const* c) : _storage(std::in_place_type, c) {} - ChatCommandResult(std::string_view s) : _storage(std::in_place_type, s) {} + ChatCommandResult(std::string_view s) noexcept : _storage(std::in_place_type, s) {} + + ChatCommandResult& operator=(std::nullopt_t) noexcept { _storage.emplace(); return *this; } + ChatCommandResult& operator=(std::string&& s) noexcept { _storage.emplace(std::move(s)); return *this; } + ChatCommandResult& operator=(char const* c) { _storage.emplace(c); return *this; } + ChatCommandResult& operator=(std::string_view s) noexcept { _storage.emplace(s); return *this; } ChatCommandResult(ChatCommandResult const&) = delete; - ChatCommandResult(ChatCommandResult&&) = default; + ChatCommandResult(ChatCommandResult&&) noexcept = default; ChatCommandResult& operator=(ChatCommandResult const&) = delete; - ChatCommandResult& operator=(ChatCommandResult&&) = default; + ChatCommandResult& operator=(ChatCommandResult&&) noexcept = default; + + ~ChatCommandResult() = default; std::string_view operator*() const { return std::get(_storage); } bool IsSuccessful() const { return std::holds_alternative(_storage); } explicit operator bool() const { return IsSuccessful(); } bool HasErrorMessage() const { return std::holds_alternative(_storage); } - std::string const& GetErrorMessage() const { return std::get(_storage); } + std::string const& GetErrorMessage() const & { return std::get(_storage); } + std::string&& GetErrorMessage() && { return std::get(std::move(_storage)); } - private: - std::variant _storage; + private: + std::variant _storage; }; TC_GAME_API void SendErrorMessageToHandler(ChatHandler* handler, std::string_view str); diff --git a/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp b/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp index bc64636319c70..703763c3357da 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandTags.cpp @@ -88,23 +88,29 @@ ChatCommandResult Trinity::ChatCommands::AccountIdentifier::TryConsume(ChatHandl // first try parsing as account name _name.assign(text); if (!Utf8ToUpperOnlyLatin(_name)) - return GetTrinityString(handler, LANG_CMDPARSER_INVALID_UTF8); + { + next = GetTrinityString(handler, LANG_CMDPARSER_INVALID_UTF8); + return next; + } + _id = AccountMgr::GetId(_name); _session = sWorld->FindSession(_id); if (_id) // account with name exists, we are done return next; // try parsing as account id instead - Optional id = Trinity::StringTo(text, 10); - if (!id) - return FormatTrinityString(handler, LANG_CMDPARSER_ACCOUNT_NAME_NO_EXIST, STRING_VIEW_FMT_ARG(_name)); - _id = *id; - _session = sWorld->FindSession(_id); + if (Optional id = Trinity::StringTo(text, 10)) + { + _id = *id; + _session = sWorld->FindSession(_id); - if (AccountMgr::GetName(_id, _name)) - return next; + if (!AccountMgr::GetName(_id, _name)) + next = FormatTrinityString(handler, LANG_CMDPARSER_ACCOUNT_ID_NO_EXIST, _id); + } else - return FormatTrinityString(handler, LANG_CMDPARSER_ACCOUNT_ID_NO_EXIST, _id); + next = FormatTrinityString(handler, LANG_CMDPARSER_ACCOUNT_NAME_NO_EXIST, STRING_VIEW_FMT_ARG(_name)); + + return next; } Optional Trinity::ChatCommands::AccountIdentifier::FromTarget(ChatHandler* handler) @@ -129,7 +135,7 @@ ChatCommandResult Trinity::ChatCommands::PlayerIdentifier::TryConsume(ChatHandle if ((_player = ObjectAccessor::FindPlayerByLowGUID(_guid.GetCounter()))) _name = _player->GetName(); else if (!sCharacterCache->GetCharacterNameByGuid(_guid, _name)) - return FormatTrinityString(handler, LANG_CMDPARSER_CHAR_GUID_NO_EXIST, _guid.ToString().c_str()); + next = FormatTrinityString(handler, LANG_CMDPARSER_CHAR_GUID_NO_EXIST, _guid.ToString().c_str()); return next; } else @@ -139,13 +145,16 @@ ChatCommandResult Trinity::ChatCommands::PlayerIdentifier::TryConsume(ChatHandle else _name.assign(val.get()); - if (!normalizePlayerName(_name)) - return FormatTrinityString(handler, LANG_CMDPARSER_CHAR_NAME_INVALID, STRING_VIEW_FMT_ARG(_name)); + if (normalizePlayerName(_name)) + { + if ((_player = ObjectAccessor::FindPlayerByName(_name))) + _guid = _player->GetGUID(); + else if (!(_guid = sCharacterCache->GetCharacterGuidByName(_name))) + next = FormatTrinityString(handler, LANG_CMDPARSER_CHAR_NAME_NO_EXIST, STRING_VIEW_FMT_ARG(_name)); + } + else + next = FormatTrinityString(handler, LANG_CMDPARSER_CHAR_NAME_INVALID, STRING_VIEW_FMT_ARG(_name)); - if ((_player = ObjectAccessor::FindPlayerByName(_name))) - _guid = _player->GetGUID(); - else if (!(_guid = sCharacterCache->GetCharacterGuidByName(_name))) - return FormatTrinityString(handler, LANG_CMDPARSER_CHAR_NAME_NO_EXIST, STRING_VIEW_FMT_ARG(_name)); return next; } } diff --git a/src/server/game/Chat/ChatCommands/ChatCommandTags.h b/src/server/game/Chat/ChatCommands/ChatCommandTags.h index f01e7fc95184d..db0c8cb075558 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandTags.h +++ b/src/server/game/Chat/ChatCommands/ChatCommandTags.h @@ -23,7 +23,6 @@ #include "ObjectGuid.h" #include "Optional.h" #include "Util.h" -#include #include #include #include @@ -135,7 +134,7 @@ namespace Trinity::ChatCommands { using value_type = uint32; - AccountIdentifier() : _id(), _name(), _session(nullptr) {} + AccountIdentifier() = default; AccountIdentifier(WorldSession& session); operator uint32() const { return _id; } @@ -144,24 +143,24 @@ namespace Trinity::ChatCommands uint32 GetID() const { return _id; } std::string const& GetName() const { return _name; } - bool IsConnected() { return _session != nullptr; } + bool IsConnected() const { return _session != nullptr; } WorldSession* GetConnectedSession() { return _session; } ChatCommandResult TryConsume(ChatHandler const* handler, std::string_view args); static Optional FromTarget(ChatHandler* handler); - private: - uint32 _id; - std::string _name; - WorldSession* _session; + private: + uint32 _id = 0; + std::string _name; + WorldSession* _session = nullptr; }; struct TC_GAME_API PlayerIdentifier : Trinity::Impl::ChatCommands::ContainerTag { using value_type = Player*; - PlayerIdentifier() : _name(), _guid(), _player(nullptr) {} + PlayerIdentifier() = default; PlayerIdentifier(Player& player); operator ObjectGuid() const { return _guid; } @@ -185,10 +184,10 @@ namespace Trinity::ChatCommands return FromSelf(handler); } - private: - std::string _name; - ObjectGuid _guid; - Player* _player; + private: + std::string _name; + ObjectGuid _guid; + Player* _player = nullptr; }; template @@ -224,8 +223,8 @@ namespace Trinity::ChatCommands return info.tail; } - private: - storage_type val; + private: + storage_type val; }; // pull in link tags for user convenience @@ -244,28 +243,31 @@ namespace Trinity::Impl namespace Trinity::ChatCommands { + template + concept HasVariantConversionOperators = !std::same_as, void> + && (std::assignable_from&, Impl::ChatCommands::tag_base_t> && ...); + template struct Variant : public std::variant { using base = std::variant; - using first_type = Trinity::Impl::ChatCommands::tag_base_t; - static constexpr bool have_operators = Trinity::Impl::ChatCommands::are_all_assignable...>::value; + using first_type = Impl::ChatCommands::tag_base_t; - template - std::enable_if_t operator*() const + first_type operator*() const requires (HasVariantConversionOperators) { - return visit(Trinity::Impl::CastToVisitor()); + return visit(Impl::CastToVisitor()); } - template - operator std::enable_if_t() const + operator first_type() const requires (HasVariantConversionOperators) { return operator*(); } - template - std::enable_if_t operator!() const { return !**this; } + bool operator!() const requires (HasVariantConversionOperators) + { + return !**this; + } template Variant& operator=(T&& arg) { base::operator=(std::forward(arg)); return *this; } @@ -286,16 +288,7 @@ namespace Trinity::ChatCommands template constexpr bool holds_alternative() const { return std::holds_alternative(static_cast(*this)); } - - template - friend std::enable_if_t operator<<(std::ostream& os, Trinity::ChatCommands::Variant const& v) - { - return (os << *v); - } }; } -template -struct fmt::formatter> : ostream_formatter {}; - #endif diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index e1c8af38d0cf0..b98610fc1af4c 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1787,14 +1787,14 @@ OutdoorPvP* ScriptMgr::CreateOutdoorPvP(uint32 scriptId, Map* map) return tmpscript->GetOutdoorPvP(map); } -Trinity::ChatCommands::ChatCommandTable ScriptMgr::GetChatCommands() +std::vector ScriptMgr::GetChatCommands() { - Trinity::ChatCommands::ChatCommandTable table; + std::vector table; FOR_SCRIPTS(CommandScript, itr, end) { - Trinity::ChatCommands::ChatCommandTable cmds = itr->second->GetCommands(); - std::move(cmds.begin(), cmds.end(), std::back_inserter(table)); + std::span cmds = itr->second->GetCommands(); + table.insert(table.end(), cmds.begin(), cmds.end()); } return table; diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 4e6af2ac5d4a4..0570ea0856904 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -537,7 +537,7 @@ class TC_GAME_API CommandScript : public ScriptObject ~CommandScript(); // Should return a pointer to a valid command table (ChatCommand array) to be used by ChatHandler. - virtual std::vector GetCommands() const = 0; + virtual std::span GetCommands() const = 0; }; class TC_GAME_API WeatherScript : public ScriptObject diff --git a/src/server/scripts/Commands/cs_account.cpp b/src/server/scripts/Commands/cs_account.cpp index 1caf56a37f66a..71547c77fbcd1 100644 --- a/src/server/scripts/Commands/cs_account.cpp +++ b/src/server/scripts/Commands/cs_account.cpp @@ -48,7 +48,7 @@ class account_commandscript : public CommandScript public: account_commandscript() : CommandScript("account_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable accountSetCommandTable = { @@ -291,7 +291,7 @@ class account_commandscript : public CommandScript /// Delete a user account and all associated characters in this realm /// @todo This function has to be enhanced to respect the login/realm split (delete char, delete account chars in realm then delete account) - static bool HandleAccountDeleteCommand(ChatHandler* handler, std::string accountName) + static bool HandleAccountDeleteCommand(ChatHandler* handler, std::string& accountName) { if (!Utf8ToUpperOnlyLatin(accountName)) { @@ -343,7 +343,7 @@ class account_commandscript : public CommandScript return HandleAccountOnlineListCommandWithParameters(handler, {}, {}, {}, {}); } - static bool HandleAccountOnlineListWithIpFilterCommand(ChatHandler* handler, std::string ipAddress) + static bool HandleAccountOnlineListWithIpFilterCommand(ChatHandler* handler, std::string_view ipAddress) { return HandleAccountOnlineListCommandWithParameters(handler, ipAddress, {}, {}, {}); } @@ -363,7 +363,7 @@ class account_commandscript : public CommandScript return HandleAccountOnlineListCommandWithParameters(handler, {}, {}, {}, zoneId); } - static bool HandleAccountOnlineListCommandWithParameters(ChatHandler* handler, Optional ipAddress, Optional limit, Optional mapId, Optional zoneId) + static bool HandleAccountOnlineListCommandWithParameters(ChatHandler* handler, Optional const& ipAddress, Optional limit, Optional mapId, Optional zoneId) { size_t sessionsMatchCount = 0; @@ -381,15 +381,15 @@ class account_commandscript : public CommandScript uint32 playerZoneId = player->GetZoneId(); // Apply optional ipAddress filter - if (ipAddress && ipAddress != session->GetRemoteAddress()) + if (ipAddress && *ipAddress != session->GetRemoteAddress()) continue; // Apply optional mapId filter - if (mapId && mapId != playerMapId) + if (mapId && *mapId != playerMapId) continue; // Apply optional zoneId filter - if (zoneId && zoneId != playerZoneId) + if (zoneId && *zoneId != playerZoneId) continue; if (!sessionsMatchCount) @@ -634,7 +634,6 @@ class account_commandscript : public CommandScript // Email display if sufficient rights if (handler->HasPermission(rbac::RBAC_PERM_MAY_CHECK_OWN_EMAIL)) { - std::string emailoutput; uint32 accountId = handler->GetSession()->GetAccountId(); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_GET_EMAIL_BY_ID); @@ -642,17 +641,14 @@ class account_commandscript : public CommandScript PreparedQueryResult result = LoginDatabase.Query(stmt); if (result) - { - emailoutput = (*result)[0].GetString(); - handler->PSendSysMessage(LANG_COMMAND_EMAIL_OUTPUT, emailoutput.c_str()); - } + handler->PSendSysMessage(LANG_COMMAND_EMAIL_OUTPUT, (*result)[0].GetCString()); } return true; } /// Set/Unset the expansion level for an account - static bool HandleAccountSetAddonCommand(ChatHandler* handler, Optional accountName, uint8 expansion) + static bool HandleAccountSetAddonCommand(ChatHandler* handler, Optional& accountName, uint8 expansion) { uint32 accountId; if (accountName) @@ -680,8 +676,7 @@ class account_commandscript : public CommandScript return false; accountId = player->GetSession()->GetAccountId(); - accountName.emplace(); - AccountMgr::GetName(accountId, *accountName); + AccountMgr::GetName(accountId, accountName.emplace()); } // Let set addon state only for lesser (strong) security level @@ -704,7 +699,7 @@ class account_commandscript : public CommandScript return true; } - static bool HandleAccountSetSecLevelCommand(ChatHandler* handler, Optional accountName, uint8 securityLevel, Optional realmId) + static bool HandleAccountSetSecLevelCommand(ChatHandler* handler, Optional& accountName, uint8 securityLevel, Optional realmId) { uint32 accountId; if (accountName) @@ -794,7 +789,7 @@ class account_commandscript : public CommandScript } /// Set password for account - static bool HandleAccountSetPasswordCommand(ChatHandler* handler, std::string accountName, std::string const& password, std::string const& confirmPassword) + static bool HandleAccountSetPasswordCommand(ChatHandler* handler, std::string& accountName, std::string const& password, std::string const& confirmPassword) { if (!Utf8ToUpperOnlyLatin(accountName)) { @@ -845,7 +840,7 @@ class account_commandscript : public CommandScript return true; } - static bool HandleAccountSet2FACommand(ChatHandler* handler, std::string accountName, std::string secret) + static bool HandleAccountSet2FACommand(ChatHandler* handler, std::string& accountName, std::string_view secret) { if (!Utf8ToUpperOnlyLatin(accountName)) { @@ -909,7 +904,7 @@ class account_commandscript : public CommandScript } /// Set normal email for account - static bool HandleAccountSetEmailCommand(ChatHandler* handler, std::string accountName, std::string const& email, std::string const& confirmEmail) + static bool HandleAccountSetEmailCommand(ChatHandler* handler, std::string& accountName, std::string const& email, std::string const& confirmEmail) { if (!Utf8ToUpperOnlyLatin(accountName)) { @@ -964,7 +959,7 @@ class account_commandscript : public CommandScript } /// Change registration email for account - static bool HandleAccountSetRegEmailCommand(ChatHandler* handler, std::string accountName, std::string const& email, std::string const& confirmEmail) + static bool HandleAccountSetRegEmailCommand(ChatHandler* handler, std::string& accountName, std::string const& email, std::string const& confirmEmail) { if (!Utf8ToUpperOnlyLatin(accountName)) { diff --git a/src/server/scripts/Commands/cs_achievement.cpp b/src/server/scripts/Commands/cs_achievement.cpp index bc26fba7c717c..99779e4e68ebd 100644 --- a/src/server/scripts/Commands/cs_achievement.cpp +++ b/src/server/scripts/Commands/cs_achievement.cpp @@ -37,7 +37,7 @@ class achievement_commandscript : public CommandScript public: achievement_commandscript() : CommandScript("achievement_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable commandTable = { diff --git a/src/server/scripts/Commands/cs_ahbot.cpp b/src/server/scripts/Commands/cs_ahbot.cpp index daeb06a7fbe66..42e76a6d31ba3 100644 --- a/src/server/scripts/Commands/cs_ahbot.cpp +++ b/src/server/scripts/Commands/cs_ahbot.cpp @@ -24,15 +24,15 @@ using namespace Trinity::ChatCommands; -static std::unordered_map const ahbotQualityLangIds = +static constexpr std::array AhbotQualityLangIds = { - { AUCTION_QUALITY_GRAY, LANG_AHBOT_QUALITY_GRAY }, - { AUCTION_QUALITY_WHITE, LANG_AHBOT_QUALITY_WHITE }, - { AUCTION_QUALITY_GREEN, LANG_AHBOT_QUALITY_GREEN }, - { AUCTION_QUALITY_BLUE, LANG_AHBOT_QUALITY_BLUE }, - { AUCTION_QUALITY_PURPLE, LANG_AHBOT_QUALITY_PURPLE }, - { AUCTION_QUALITY_ORANGE, LANG_AHBOT_QUALITY_ORANGE }, - { AUCTION_QUALITY_YELLOW, LANG_AHBOT_QUALITY_YELLOW } + LANG_AHBOT_QUALITY_GRAY, + LANG_AHBOT_QUALITY_WHITE, + LANG_AHBOT_QUALITY_GREEN, + LANG_AHBOT_QUALITY_BLUE, + LANG_AHBOT_QUALITY_PURPLE, + LANG_AHBOT_QUALITY_ORANGE, + LANG_AHBOT_QUALITY_YELLOW }; class ahbot_commandscript : public CommandScript @@ -40,26 +40,29 @@ class ahbot_commandscript : public CommandScript public: ahbot_commandscript(): CommandScript("ahbot_commandscript") {} - ChatCommandTable GetCommands() const override + template + using Wrap = std::integral_constant; + + std::span GetCommands() const override { static ChatCommandTable ahbotItemsAmountCommandTable = { - { "gray", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_GRAY, Console::Yes }, - { "white", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_WHITE, Console::Yes }, - { "green", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_GREEN, Console::Yes }, - { "blue", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_BLUE, Console::Yes }, - { "purple", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_PURPLE, Console::Yes }, - { "orange", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_ORANGE, Console::Yes }, - { "yellow", HandleAHBotItemsAmountQualityCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_YELLOW, Console::Yes }, - { "", HandleAHBotItemsAmountCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS, Console::Yes }, + { "gray", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_GRAY, Console::Yes }, + { "white", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_WHITE, Console::Yes }, + { "green", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_GREEN, Console::Yes }, + { "blue", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_BLUE, Console::Yes }, + { "purple", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_PURPLE, Console::Yes }, + { "orange", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_ORANGE, Console::Yes }, + { "yellow", HandleAHBotItemsAmountQualityCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS_YELLOW, Console::Yes }, + { "", HandleAHBotItemsAmountCommand, rbac::RBAC_PERM_COMMAND_AHBOT_ITEMS, Console::Yes }, }; static ChatCommandTable ahbotItemsRatioCommandTable = { - { "alliance", HandleAHBotItemsRatioHouseCommand, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO_ALLIANCE, Console::Yes }, - { "horde", HandleAHBotItemsRatioHouseCommand, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO_HORDE, Console::Yes }, - { "neutral", HandleAHBotItemsRatioHouseCommand, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO_NEUTRAL, Console::Yes }, - { "", HandleAHBotItemsRatioCommand, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO, Console::Yes }, + { "alliance", HandleAHBotItemsRatioHouseCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO_ALLIANCE, Console::Yes }, + { "horde", HandleAHBotItemsRatioHouseCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO_HORDE, Console::Yes }, + { "neutral", HandleAHBotItemsRatioHouseCommand>, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO_NEUTRAL, Console::Yes }, + { "", HandleAHBotItemsRatioCommand, rbac::RBAC_PERM_COMMAND_AHBOT_RATIO, Console::Yes }, }; static ChatCommandTable ahbotCommandTable = @@ -79,21 +82,22 @@ class ahbot_commandscript : public CommandScript return commandTable; } - static bool HandleAHBotItemsAmountCommand(ChatHandler* handler, std::array items) + static bool HandleAHBotItemsAmountCommand(ChatHandler* handler, std::array const& items) { sAuctionBot->SetItemsAmount(items); for (AuctionQuality quality : EnumUtils::Iterate()) - handler->PSendSysMessage(LANG_AHBOT_ITEMS_AMOUNT, handler->GetTrinityString(ahbotQualityLangIds.at(quality)), sAuctionBotConfig->GetConfigItemQualityAmount(quality)); + handler->PSendSysMessage(LANG_AHBOT_ITEMS_AMOUNT, handler->GetTrinityString(AhbotQualityLangIds[quality]), sAuctionBotConfig->GetConfigItemQualityAmount(quality)); return true; } - template + template static bool HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount) { + static constexpr AuctionQuality Q = QConst::value; sAuctionBot->SetItemsAmountForQuality(Q, amount); - handler->PSendSysMessage(LANG_AHBOT_ITEMS_AMOUNT, handler->GetTrinityString(ahbotQualityLangIds.at(Q)), + handler->PSendSysMessage(LANG_AHBOT_ITEMS_AMOUNT, handler->GetTrinityString(AhbotQualityLangIds[Q]), sAuctionBotConfig->GetConfigItemQualityAmount(Q)); return true; @@ -108,9 +112,10 @@ class ahbot_commandscript : public CommandScript return true; } - template + template static bool HandleAHBotItemsRatioHouseCommand(ChatHandler* handler, uint32 ratio) { + static constexpr AuctionHouseType H = HConst::value; sAuctionBot->SetItemsRatioForHouse(H, ratio); handler->PSendSysMessage(LANG_AHBOT_ITEMS_RATIO, AuctionBotConfig::GetHouseTypeName(H), sAuctionBotConfig->GetConfigItemAmountRatio(H)); return true; @@ -131,7 +136,7 @@ class ahbot_commandscript : public CommandScript static bool HandleAHBotStatusCommand(ChatHandler* handler, Optional all) { - std::unordered_map statusInfo; + std::array statusInfo; sAuctionBot->PrepareStatusInfos(statusInfo); WorldSession* session = handler->GetSession(); @@ -175,10 +180,10 @@ class ahbot_commandscript : public CommandScript handler->SendSysMessage(LANG_AHBOT_STATUS_TITLE2_CHAT); for (AuctionQuality quality : EnumUtils::Iterate()) - handler->PSendSysMessage(fmtId, handler->GetTrinityString(ahbotQualityLangIds.at(quality)), - statusInfo[AUCTION_HOUSE_ALLIANCE].QualityInfo.at(quality), - statusInfo[AUCTION_HOUSE_HORDE].QualityInfo.at(quality), - statusInfo[AUCTION_HOUSE_NEUTRAL].QualityInfo.at(quality), + handler->PSendSysMessage(fmtId, handler->GetTrinityString(AhbotQualityLangIds[quality]), + statusInfo[AUCTION_HOUSE_ALLIANCE].QualityInfo[quality], + statusInfo[AUCTION_HOUSE_HORDE].QualityInfo[quality], + statusInfo[AUCTION_HOUSE_NEUTRAL].QualityInfo[quality], sAuctionBotConfig->GetConfigItemQualityAmount(quality)); } @@ -190,18 +195,6 @@ class ahbot_commandscript : public CommandScript }; -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); -template bool ahbot_commandscript::HandleAHBotItemsAmountQualityCommand(ChatHandler* handler, uint32 amount); - -template bool ahbot_commandscript::HandleAHBotItemsRatioHouseCommand(ChatHandler* handler, uint32 ratio); -template bool ahbot_commandscript::HandleAHBotItemsRatioHouseCommand(ChatHandler* handler, uint32 ratio); -template bool ahbot_commandscript::HandleAHBotItemsRatioHouseCommand(ChatHandler* handler, uint32 ratio); - void AddSC_ahbot_commandscript() { new ahbot_commandscript(); diff --git a/src/server/scripts/Commands/cs_arena.cpp b/src/server/scripts/Commands/cs_arena.cpp index 58bdd00a6b2f7..6493ddec41f5a 100644 --- a/src/server/scripts/Commands/cs_arena.cpp +++ b/src/server/scripts/Commands/cs_arena.cpp @@ -38,7 +38,7 @@ class arena_commandscript : public CommandScript public: arena_commandscript() : CommandScript("arena_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable arenaCommandTable = { diff --git a/src/server/scripts/Commands/cs_ban.cpp b/src/server/scripts/Commands/cs_ban.cpp index b85bc48c326cd..45e94e6e61099 100644 --- a/src/server/scripts/Commands/cs_ban.cpp +++ b/src/server/scripts/Commands/cs_ban.cpp @@ -48,7 +48,7 @@ class ban_commandscript : public CommandScript public: ban_commandscript() : CommandScript("ban_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable unbanCommandTable = { diff --git a/src/server/scripts/Commands/cs_battlenet_account.cpp b/src/server/scripts/Commands/cs_battlenet_account.cpp index 6ef1f8d973bb6..33f00c3377c76 100644 --- a/src/server/scripts/Commands/cs_battlenet_account.cpp +++ b/src/server/scripts/Commands/cs_battlenet_account.cpp @@ -36,7 +36,7 @@ class battlenet_account_commandscript : public CommandScript public: battlenet_account_commandscript() : CommandScript("battlenet_account_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable accountSetCommandTable = { diff --git a/src/server/scripts/Commands/cs_bf.cpp b/src/server/scripts/Commands/cs_bf.cpp index d883b5609bd6e..7ac464e0b980d 100644 --- a/src/server/scripts/Commands/cs_bf.cpp +++ b/src/server/scripts/Commands/cs_bf.cpp @@ -36,7 +36,7 @@ class bf_commandscript : public CommandScript public: bf_commandscript() : CommandScript("bf_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable battlefieldcommandTable = { diff --git a/src/server/scripts/Commands/cs_cast.cpp b/src/server/scripts/Commands/cs_cast.cpp index d4108921b4e38..31bf52f4451ac 100644 --- a/src/server/scripts/Commands/cs_cast.cpp +++ b/src/server/scripts/Commands/cs_cast.cpp @@ -40,7 +40,7 @@ class cast_commandscript : public CommandScript public: cast_commandscript() : CommandScript("cast_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable castCommandTable = { diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 9217a5c9f4b4e..46a212288ee64 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -45,7 +45,7 @@ class character_commandscript : public CommandScript public: character_commandscript() : CommandScript("character_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable pdumpCommandTable = { diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp index 8187f27a773cb..e613b218151d4 100644 --- a/src/server/scripts/Commands/cs_cheat.cpp +++ b/src/server/scripts/Commands/cs_cheat.cpp @@ -37,7 +37,7 @@ class cheat_commandscript : public CommandScript public: cheat_commandscript() : CommandScript("cheat_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable cheatCommandTable = { diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index fdd5a46a7b275..43b919475a04c 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -67,7 +67,7 @@ class debug_commandscript : public CommandScript public: debug_commandscript() : CommandScript("debug_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable debugPlayCommandTable = { diff --git a/src/server/scripts/Commands/cs_deserter.cpp b/src/server/scripts/Commands/cs_deserter.cpp index 9ddb213af02aa..48bc06d0f9466 100644 --- a/src/server/scripts/Commands/cs_deserter.cpp +++ b/src/server/scripts/Commands/cs_deserter.cpp @@ -47,7 +47,7 @@ class deserter_commandscript : public CommandScript * @brief Returns the command structure for the system. */ - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable deserterInstanceCommandTable = { diff --git a/src/server/scripts/Commands/cs_disable.cpp b/src/server/scripts/Commands/cs_disable.cpp index 1cfed781ecdda..83378db6be548 100644 --- a/src/server/scripts/Commands/cs_disable.cpp +++ b/src/server/scripts/Commands/cs_disable.cpp @@ -43,7 +43,7 @@ class disable_commandscript : public CommandScript public: disable_commandscript() : CommandScript("disable_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable removeDisableCommandTable = { diff --git a/src/server/scripts/Commands/cs_event.cpp b/src/server/scripts/Commands/cs_event.cpp index 2e892e33c62b9..b066430760f7d 100644 --- a/src/server/scripts/Commands/cs_event.cpp +++ b/src/server/scripts/Commands/cs_event.cpp @@ -37,7 +37,7 @@ class event_commandscript : public CommandScript public: event_commandscript() : CommandScript("event_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable eventCommandTable = { diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp index d4302e4bb0dbc..c70730b3efe23 100644 --- a/src/server/scripts/Commands/cs_gm.cpp +++ b/src/server/scripts/Commands/cs_gm.cpp @@ -41,7 +41,7 @@ class gm_commandscript : public CommandScript public: gm_commandscript() : CommandScript("gm_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable gmCommandTable = { diff --git a/src/server/scripts/Commands/cs_go.cpp b/src/server/scripts/Commands/cs_go.cpp index 4db279eee2a1b..eeb8ad4547cf3 100644 --- a/src/server/scripts/Commands/cs_go.cpp +++ b/src/server/scripts/Commands/cs_go.cpp @@ -46,7 +46,7 @@ class go_commandscript : public CommandScript public: go_commandscript() : CommandScript("go_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable goCommandTable = { diff --git a/src/server/scripts/Commands/cs_gobject.cpp b/src/server/scripts/Commands/cs_gobject.cpp index 70b8a122cc4ee..5ed2398a482fe 100644 --- a/src/server/scripts/Commands/cs_gobject.cpp +++ b/src/server/scripts/Commands/cs_gobject.cpp @@ -58,7 +58,7 @@ class gobject_commandscript : public CommandScript public: gobject_commandscript() : CommandScript("gobject_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable gobjectCommandTable = { diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp index 83471c9716a85..599404143084b 100644 --- a/src/server/scripts/Commands/cs_group.cpp +++ b/src/server/scripts/Commands/cs_group.cpp @@ -44,9 +44,9 @@ class group_commandscript : public CommandScript public: group_commandscript() : CommandScript("group_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector groupSetCommandTable = + static ChatCommandTable groupSetCommandTable = { { "leader", rbac::RBAC_PERM_COMMAND_GROUP_LEADER, false, &HandleGroupLeaderCommand, "" }, { "assistant", rbac::RBAC_PERM_COMMAND_GROUP_ASSISTANT, false, &HandleGroupAssistantCommand, "" }, @@ -54,7 +54,7 @@ class group_commandscript : public CommandScript { "mainassist", rbac::RBAC_PERM_COMMAND_GROUP_MAINASSIST, false, &HandleGroupMainAssistCommand, "" } }; - static std::vector groupCommandTable = + static ChatCommandTable groupCommandTable = { { "set", rbac::RBAC_PERM_COMMAND_GROUP_SET, false, nullptr, "", groupSetCommandTable }, { "leader", rbac::RBAC_PERM_COMMAND_GROUP_LEADER, false, &HandleGroupLeaderCommand, "" }, @@ -68,7 +68,7 @@ class group_commandscript : public CommandScript { "level", rbac::RBAC_PERM_COMMAND_CHARACTER_LEVEL, true, &HandleGroupLevelCommand, "" } }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "group", rbac::RBAC_PERM_COMMAND_GROUP, false, nullptr, "", groupCommandTable }, }; diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index 08fbaf49c2361..c81b5f018f43f 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -46,9 +46,9 @@ class guild_commandscript : public CommandScript public: guild_commandscript() : CommandScript("guild_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector guildCommandTable = + static ChatCommandTable guildCommandTable = { { "create", rbac::RBAC_PERM_COMMAND_GUILD_CREATE, true, &HandleGuildCreateCommand, "" }, { "delete", rbac::RBAC_PERM_COMMAND_GUILD_DELETE, true, &HandleGuildDeleteCommand, "" }, @@ -59,7 +59,7 @@ class guild_commandscript : public CommandScript { "info", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildInfoCommand, "" }, { "list", rbac::RBAC_PERM_COMMAND_GUILD_INFO, true, &HandleGuildListCommand, "" }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "guild", rbac::RBAC_PERM_COMMAND_GUILD, true, nullptr, "", guildCommandTable }, }; diff --git a/src/server/scripts/Commands/cs_honor.cpp b/src/server/scripts/Commands/cs_honor.cpp index 29e325bf65df1..1aa6974a29390 100644 --- a/src/server/scripts/Commands/cs_honor.cpp +++ b/src/server/scripts/Commands/cs_honor.cpp @@ -37,7 +37,7 @@ class honor_commandscript : public CommandScript public: honor_commandscript() : CommandScript("honor_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable honorAddCommandTable = { diff --git a/src/server/scripts/Commands/cs_instance.cpp b/src/server/scripts/Commands/cs_instance.cpp index 9badba728730f..4d9dbce012216 100644 --- a/src/server/scripts/Commands/cs_instance.cpp +++ b/src/server/scripts/Commands/cs_instance.cpp @@ -46,7 +46,7 @@ class instance_commandscript : public CommandScript public: instance_commandscript() : CommandScript("instance_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable instanceCommandTable = { diff --git a/src/server/scripts/Commands/cs_learn.cpp b/src/server/scripts/Commands/cs_learn.cpp index 2eea35542de9b..2166f6664374a 100644 --- a/src/server/scripts/Commands/cs_learn.cpp +++ b/src/server/scripts/Commands/cs_learn.cpp @@ -41,7 +41,7 @@ class learn_commandscript : public CommandScript public: learn_commandscript() : CommandScript("learn_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable learnAllCommandTable = { diff --git a/src/server/scripts/Commands/cs_lfg.cpp b/src/server/scripts/Commands/cs_lfg.cpp index da7a1f73f6904..9a0f0214c3d34 100644 --- a/src/server/scripts/Commands/cs_lfg.cpp +++ b/src/server/scripts/Commands/cs_lfg.cpp @@ -49,7 +49,7 @@ class lfg_commandscript : public CommandScript public: lfg_commandscript() : CommandScript("lfg_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable lfgCommandTable = { diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp index 7fd01f24efdc6..f409747ebc8b3 100644 --- a/src/server/scripts/Commands/cs_list.cpp +++ b/src/server/scripts/Commands/cs_list.cpp @@ -47,7 +47,7 @@ class list_commandscript : public CommandScript public: list_commandscript() : CommandScript("list_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable listAurasCommandTable = { @@ -92,7 +92,7 @@ class list_commandscript : public CommandScript QueryResult result; uint32 creatureCount = 0; - result = WorldDatabase.PQuery("SELECT COUNT(guid) FROM creature WHERE id='{}'", creatureId); + result = WorldDatabase.PQuery("SELECT COUNT(guid) FROM creature WHERE id='{}'", *creatureId); if (result) creatureCount = (*result)[0].GetUInt64(); @@ -100,11 +100,11 @@ class list_commandscript : public CommandScript { Player* player = handler->GetSession()->GetPlayer(); result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map, (POW(position_x - '{}', 2) + POW(position_y - '{}', 2) + POW(position_z - '{}', 2)) AS order_ FROM creature WHERE id = '{}' ORDER BY order_ ASC LIMIT {}", - player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), creatureId, count); + player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), *creatureId, count); } else result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map FROM creature WHERE id = '{}' LIMIT {}", - creatureId, count); + *creatureId, count); if (result) { @@ -149,7 +149,7 @@ class list_commandscript : public CommandScript return true; } - static bool HandleListItemCommand(ChatHandler* handler, Hyperlink item, Optional countArg) + static bool HandleListItemCommand(ChatHandler* handler, Hyperlink const& item, Optional countArg) { uint32 itemId = item->Item->GetId(); uint32 count = countArg.value_or(10); @@ -360,7 +360,7 @@ class list_commandscript : public CommandScript QueryResult result; uint32 objectCount = 0; - result = WorldDatabase.PQuery("SELECT COUNT(guid) FROM gameobject WHERE id='{}'", gameObjectId); + result = WorldDatabase.PQuery("SELECT COUNT(guid) FROM gameobject WHERE id='{}'", *gameObjectId); if (result) objectCount = (*result)[0].GetUInt64(); @@ -368,11 +368,11 @@ class list_commandscript : public CommandScript { Player* player = handler->GetSession()->GetPlayer(); result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map, id, (POW(position_x - '{}', 2) + POW(position_y - '{}', 2) + POW(position_z - '{}', 2)) AS order_ FROM gameobject WHERE id = '{}' ORDER BY order_ ASC LIMIT {}", - player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), gameObjectId, count); + player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), *gameObjectId, count); } else result = WorldDatabase.PQuery("SELECT guid, position_x, position_y, position_z, map, id FROM gameobject WHERE id = '{}' LIMIT {}", - gameObjectId, count); + *gameObjectId, count); if (result) { diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 885ccf33f16ad..51a8ecf37e76b 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -49,16 +49,16 @@ class lookup_commandscript : public CommandScript public: lookup_commandscript() : CommandScript("lookup_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector lookupPlayerCommandTable = + static ChatCommandTable lookupPlayerCommandTable = { { "ip", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_IP, true, &HandleLookupPlayerIpCommand, "" }, { "account", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_ACCOUNT, true, &HandleLookupPlayerAccountCommand, "" }, { "email", rbac::RBAC_PERM_COMMAND_LOOKUP_PLAYER_EMAIL, true, &HandleLookupPlayerEmailCommand, "" }, }; - static std::vector lookupCommandTable = + static ChatCommandTable lookupCommandTable = { { "area", rbac::RBAC_PERM_COMMAND_LOOKUP_AREA, true, &HandleLookupAreaCommand, "" }, { "creature", rbac::RBAC_PERM_COMMAND_LOOKUP_CREATURE, true, &HandleLookupCreatureCommand, "" }, diff --git a/src/server/scripts/Commands/cs_message.cpp b/src/server/scripts/Commands/cs_message.cpp index 67b141ac2dda7..2e811cb9950f8 100644 --- a/src/server/scripts/Commands/cs_message.cpp +++ b/src/server/scripts/Commands/cs_message.cpp @@ -45,7 +45,7 @@ class message_commandscript : public CommandScript public: message_commandscript() : CommandScript("message_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable commandTable = { diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index f824e35850c4a..32740be9d8d5e 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -60,7 +60,7 @@ class misc_commandscript : public CommandScript public: misc_commandscript() : CommandScript("misc_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable commandTable = { diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index ec2ada1971d34..26afee7bfecf4 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -41,14 +41,16 @@ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif +using namespace Trinity::ChatCommands; + class mmaps_commandscript : public CommandScript { public: mmaps_commandscript() : CommandScript("mmaps_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector mmapCommandTable = + static ChatCommandTable mmapCommandTable = { { "loadedtiles", rbac::RBAC_PERM_COMMAND_MMAP_LOADEDTILES, false, &HandleMmapLoadedTilesCommand, "" }, { "loc", rbac::RBAC_PERM_COMMAND_MMAP_LOC, false, &HandleMmapLocCommand, "" }, @@ -57,7 +59,7 @@ class mmaps_commandscript : public CommandScript { "testarea", rbac::RBAC_PERM_COMMAND_MMAP_TESTAREA, false, &HandleMmapTestArea, "" }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "mmap", rbac::RBAC_PERM_COMMAND_MMAP, true, nullptr, "", mmapCommandTable }, }; diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index f505ee0a8afb7..f2cc27925035e 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -50,9 +50,9 @@ class modify_commandscript : public CommandScript public: modify_commandscript() : CommandScript("modify_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector modifyspeedCommandTable = + static ChatCommandTable modifyspeedCommandTable = { { "all", rbac::RBAC_PERM_COMMAND_MODIFY_SPEED_ALL, false, &HandleModifyASpeedCommand, "" }, { "backwalk", rbac::RBAC_PERM_COMMAND_MODIFY_SPEED_BACKWALK, false, &HandleModifyBWalkCommand, "" }, @@ -61,7 +61,7 @@ class modify_commandscript : public CommandScript { "swim", rbac::RBAC_PERM_COMMAND_MODIFY_SPEED_SWIM, false, &HandleModifySwimCommand, "" }, { "", rbac::RBAC_PERM_COMMAND_MODIFY_SPEED, false, &HandleModifyASpeedCommand, "" }, }; - static std::vector modifyCommandTable = + static ChatCommandTable modifyCommandTable = { { "currency", rbac::RBAC_PERM_COMMAND_MODIFY_CURRENCY, false, &HandleModifyCurrencyCommand, "" }, { "drunk", rbac::RBAC_PERM_COMMAND_MODIFY_DRUNK, false, &HandleModifyDrunkCommand, "" }, @@ -85,7 +85,7 @@ class modify_commandscript : public CommandScript { "xp", rbac::RBAC_PERM_COMMAND_MODIFY_XP, false, &HandleModifyXPCommand, "" }, { "power", rbac::RBAC_PERM_COMMAND_MODIFY_POWER, false, &HandleModifyPowerCommand, "" }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "morph", rbac::RBAC_PERM_COMMAND_MORPH, false, &HandleModifyMorphCommand, "" }, { "demorph", rbac::RBAC_PERM_COMMAND_DEMORPH, false, &HandleDeMorphCommand, "" }, diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index 1bd81181d8aa2..08e9eb2452af0 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -64,7 +64,7 @@ class npc_commandscript : public CommandScript public: npc_commandscript() : CommandScript("npc_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable npcAddCommandTable = { diff --git a/src/server/scripts/Commands/cs_pet.cpp b/src/server/scripts/Commands/cs_pet.cpp index b75789ecae293..33c3f93319c13 100644 --- a/src/server/scripts/Commands/cs_pet.cpp +++ b/src/server/scripts/Commands/cs_pet.cpp @@ -48,7 +48,7 @@ class pet_commandscript : public CommandScript public: pet_commandscript() : CommandScript("pet_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable petCommandTable = { diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index 00fb5c4bce80a..ec4ae5429ae83 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -41,7 +41,7 @@ class quest_commandscript : public CommandScript public: quest_commandscript() : CommandScript("quest_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable objectiveCommandTable = { diff --git a/src/server/scripts/Commands/cs_rbac.cpp b/src/server/scripts/Commands/cs_rbac.cpp index 2d42cf2f6dd3c..ce553be51af2d 100644 --- a/src/server/scripts/Commands/cs_rbac.cpp +++ b/src/server/scripts/Commands/cs_rbac.cpp @@ -54,7 +54,7 @@ class rbac_commandscript : public CommandScript public: rbac_commandscript() : CommandScript("rbac_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable rbacAccountCommandTable = { diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index a7ca75da5f68c..2f2b836166604 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -55,14 +55,16 @@ EndScriptData */ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif +using namespace Trinity::ChatCommands; + class reload_commandscript : public CommandScript { public: reload_commandscript() : CommandScript("reload_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector reloadAllCommandTable = + static ChatCommandTable reloadAllCommandTable = { { "achievement", rbac::RBAC_PERM_COMMAND_RELOAD_ALL_ACHIEVEMENT, true, &HandleReloadAllAchievementCommand, "" }, { "area", rbac::RBAC_PERM_COMMAND_RELOAD_ALL_AREA, true, &HandleReloadAllAreaCommand, "" }, @@ -76,7 +78,7 @@ class reload_commandscript : public CommandScript { "spell", rbac::RBAC_PERM_COMMAND_RELOAD_ALL_SPELL, true, &HandleReloadAllSpellCommand, "" }, { "", rbac::RBAC_PERM_COMMAND_RELOAD_ALL, true, &HandleReloadAllCommand, "" }, }; - static std::vector reloadCommandTable = + static ChatCommandTable reloadCommandTable = { { "auctions", rbac::RBAC_PERM_COMMAND_RELOAD_AUCTIONS, true, &HandleReloadAuctionsCommand, "" }, { "access_requirement", rbac::RBAC_PERM_COMMAND_RELOAD_ACCESS_REQUIREMENT, true, &HandleReloadAccessRequirementCommand, "" }, @@ -168,9 +170,9 @@ class reload_commandscript : public CommandScript { "vehicle_accessory", rbac::RBAC_PERM_COMMAND_RELOAD_VEHICLE_ACCESORY, true, &HandleReloadVehicleAccessoryCommand, "" }, { "vehicle_template_accessory", rbac::RBAC_PERM_COMMAND_RELOAD_VEHICLE_TEMPLATE_ACCESSORY, true, &HandleReloadVehicleTemplateAccessoryCommand, "" }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { - { "reload", rbac::RBAC_PERM_COMMAND_RELOAD, true, nullptr, "", reloadCommandTable }, + { "reload", reloadCommandTable }, }; return commandTable; } diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 56c5f8b0ef8a9..0af5e0df95e09 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -41,14 +41,16 @@ EndScriptData */ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif +using namespace Trinity::ChatCommands; + class reset_commandscript : public CommandScript { public: reset_commandscript() : CommandScript("reset_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector resetCommandTable = + static ChatCommandTable resetCommandTable = { { "achievements", rbac::RBAC_PERM_COMMAND_RESET_ACHIEVEMENTS, true, &HandleResetAchievementsCommand, "" }, { "honor", rbac::RBAC_PERM_COMMAND_RESET_HONOR, true, &HandleResetHonorCommand, "" }, @@ -58,7 +60,7 @@ class reset_commandscript : public CommandScript { "talents", rbac::RBAC_PERM_COMMAND_RESET_TALENTS, true, &HandleResetTalentsCommand, "" }, { "all", rbac::RBAC_PERM_COMMAND_RESET_ALL, true, &HandleResetAllCommand, "" }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "reset", rbac::RBAC_PERM_COMMAND_RESET, true, nullptr, "", resetCommandTable }, }; diff --git a/src/server/scripts/Commands/cs_scene.cpp b/src/server/scripts/Commands/cs_scene.cpp index ad474723b69da..d117f9bad5bad 100644 --- a/src/server/scripts/Commands/cs_scene.cpp +++ b/src/server/scripts/Commands/cs_scene.cpp @@ -32,7 +32,7 @@ class scene_commandscript : public CommandScript public: scene_commandscript() : CommandScript("scene_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable sceneCommandTable = { diff --git a/src/server/scripts/Commands/cs_send.cpp b/src/server/scripts/Commands/cs_send.cpp index f9ee8c114f7ee..f221141bf5949 100644 --- a/src/server/scripts/Commands/cs_send.cpp +++ b/src/server/scripts/Commands/cs_send.cpp @@ -38,7 +38,7 @@ class send_commandscript : public CommandScript public: send_commandscript() : CommandScript("send_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable sendCommandTable = { diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index 843c46d98b378..22ffaf1a1b847 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -51,47 +51,49 @@ EndScriptData */ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif +using namespace Trinity::ChatCommands; + class server_commandscript : public CommandScript { public: server_commandscript() : CommandScript("server_commandscript") { } - std::vector GetCommands() const override + std::span GetCommands() const override { - static std::vector serverIdleRestartCommandTable = + static ChatCommandTable serverIdleRestartCommandTable = { { "cancel", rbac::RBAC_PERM_COMMAND_SERVER_IDLERESTART_CANCEL, true, &HandleServerShutDownCancelCommand, "" }, { "" , rbac::RBAC_PERM_COMMAND_SERVER_IDLERESTART, true, &HandleServerIdleRestartCommand, "" }, }; - static std::vector serverIdleShutdownCommandTable = + static ChatCommandTable serverIdleShutdownCommandTable = { { "cancel", rbac::RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN_CANCEL, true, &HandleServerShutDownCancelCommand, "" }, { "" , rbac::RBAC_PERM_COMMAND_SERVER_IDLESHUTDOWN, true, &HandleServerIdleShutDownCommand, "" }, }; - static std::vector serverRestartCommandTable = + static ChatCommandTable serverRestartCommandTable = { { "cancel", rbac::RBAC_PERM_COMMAND_SERVER_RESTART_CANCEL, true, &HandleServerShutDownCancelCommand, "" }, { "force", rbac::RBAC_PERM_COMMAND_SERVER_RESTART_FORCE, true, &HandleServerForceRestartCommand, "" }, { "" , rbac::RBAC_PERM_COMMAND_SERVER_RESTART, true, &HandleServerRestartCommand, "" }, }; - static std::vector serverShutdownCommandTable = + static ChatCommandTable serverShutdownCommandTable = { { "cancel", rbac::RBAC_PERM_COMMAND_SERVER_SHUTDOWN_CANCEL, true, &HandleServerShutDownCancelCommand, "" }, { "force", rbac::RBAC_PERM_COMMAND_SERVER_SHUTDOWN_FORCE, true, &HandleServerForceShutDownCommand, "" }, { "" , rbac::RBAC_PERM_COMMAND_SERVER_SHUTDOWN, true, &HandleServerShutDownCommand, "" }, }; - static std::vector serverSetCommandTable = + static ChatCommandTable serverSetCommandTable = { { "loglevel", rbac::RBAC_PERM_COMMAND_SERVER_SET_LOGLEVEL, true, &HandleServerSetLogLevelCommand, "" }, { "motd", rbac::RBAC_PERM_COMMAND_SERVER_SET_MOTD, true, &HandleServerSetMotdCommand, "" }, { "closed", rbac::RBAC_PERM_COMMAND_SERVER_SET_CLOSED, true, &HandleServerSetClosedCommand, "" }, }; - static std::vector serverCommandTable = + static ChatCommandTable serverCommandTable = { { "corpses", rbac::RBAC_PERM_COMMAND_SERVER_CORPSES, true, &HandleServerCorpsesCommand, "" }, { "debug", rbac::RBAC_PERM_COMMAND_SERVER_DEBUG, true, &HandleServerDebugCommand, "" }, @@ -106,7 +108,7 @@ class server_commandscript : public CommandScript { "set", rbac::RBAC_PERM_COMMAND_SERVER_SET, true, nullptr, "", serverSetCommandTable }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "server", rbac::RBAC_PERM_COMMAND_SERVER, true, nullptr, "", serverCommandTable }, }; diff --git a/src/server/scripts/Commands/cs_tele.cpp b/src/server/scripts/Commands/cs_tele.cpp index 48866791fcbb1..ae00432146ec7 100644 --- a/src/server/scripts/Commands/cs_tele.cpp +++ b/src/server/scripts/Commands/cs_tele.cpp @@ -44,7 +44,7 @@ class tele_commandscript : public CommandScript public: tele_commandscript() : CommandScript("tele_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable teleNameNpcCommandTable = { diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index bcba814325c05..a962a42f4823c 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -39,6 +39,8 @@ EndScriptData */ #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif +using namespace Trinity::ChatCommands; + class ticket_commandscript : public CommandScript { public: @@ -102,7 +104,7 @@ class ticket_commandscript : public CommandScript return true; } - std::vector GetCommands() const override; + std::span GetCommands() const override; }; template @@ -364,13 +366,13 @@ bool ticket_commandscript::HandleTicketGetByIdCommand(ChatHandler* handler, char return true; } - handler->SendSysMessage(ticket->FormatViewMessageString(*handler, true).c_str()); + handler->SendSysMessage(ticket->FormatViewMessageString(*handler, true)); return true; } -std::vector ticket_commandscript::GetCommands() const +std::span ticket_commandscript::GetCommands() const { - static std::vector ticketBugCommandTable = + static ChatCommandTable ticketBugCommandTable = { { "assign", rbac::RBAC_PERM_COMMAND_TICKET_BUG_ASSIGN, true, &HandleTicketAssignToCommand, "" }, { "close", rbac::RBAC_PERM_COMMAND_TICKET_BUG_CLOSE, true, &HandleTicketCloseByIdCommand, "" }, @@ -381,7 +383,7 @@ std::vector ticket_commandscript::GetCommands() const { "unassign", rbac::RBAC_PERM_COMMAND_TICKET_BUG_UNASSIGN, true, &HandleTicketUnAssignCommand, "" }, { "view", rbac::RBAC_PERM_COMMAND_TICKET_BUG_VIEW, true, &HandleTicketGetByIdCommand, "" }, }; - static std::vector ticketComplaintCommandTable = + static ChatCommandTable ticketComplaintCommandTable = { { "assign", rbac::RBAC_PERM_COMMAND_TICKET_COMPLAINT_ASSIGN, true, &HandleTicketAssignToCommand, "" }, { "close", rbac::RBAC_PERM_COMMAND_TICKET_COMPLAINT_CLOSE, true, &HandleTicketCloseByIdCommand, "" }, @@ -392,7 +394,7 @@ std::vector ticket_commandscript::GetCommands() const { "unassign", rbac::RBAC_PERM_COMMAND_TICKET_COMPLAINT_UNASSIGN, true, &HandleTicketUnAssignCommand, "" }, { "view", rbac::RBAC_PERM_COMMAND_TICKET_COMPLAINT_VIEW, true, &HandleTicketGetByIdCommand, "" }, }; - static std::vector ticketSuggestionCommandTable = + static ChatCommandTable ticketSuggestionCommandTable = { { "assign", rbac::RBAC_PERM_COMMAND_TICKET_SUGGESTION_ASSIGN, true, &HandleTicketAssignToCommand, "" }, { "close", rbac::RBAC_PERM_COMMAND_TICKET_SUGGESTION_CLOSE, true, &HandleTicketCloseByIdCommand, "" }, @@ -403,14 +405,14 @@ std::vector ticket_commandscript::GetCommands() const { "unassign", rbac::RBAC_PERM_COMMAND_TICKET_SUGGESTION_UNASSIGN, true, &HandleTicketUnAssignCommand, "" }, { "view", rbac::RBAC_PERM_COMMAND_TICKET_SUGGESTION_VIEW, true, &HandleTicketGetByIdCommand, "" }, }; - static std::vector ticketResetCommandTable = + static ChatCommandTable ticketResetCommandTable = { { "all", rbac::RBAC_PERM_COMMAND_TICKET_RESET_ALL, true, &HandleTicketResetAllCommand, "" }, { "bug", rbac::RBAC_PERM_COMMAND_TICKET_RESET_BUG, true, &HandleTicketResetCommand, "" }, { "complaint", rbac::RBAC_PERM_COMMAND_TICKET_RESET_COMPLAINT, true, &HandleTicketResetCommand, "" }, { "suggestion", rbac::RBAC_PERM_COMMAND_TICKET_RESET_SUGGESTION, true, &HandleTicketResetCommand, "" }, }; - static std::vector ticketCommandTable = + static ChatCommandTable ticketCommandTable = { { "bug", rbac::RBAC_PERM_COMMAND_TICKET_BUG, true, nullptr, "", ticketBugCommandTable }, { "complaint", rbac::RBAC_PERM_COMMAND_TICKET_COMPLAINT, true, nullptr, "", ticketComplaintCommandTable }, @@ -418,7 +420,7 @@ std::vector ticket_commandscript::GetCommands() const { "suggestion", rbac::RBAC_PERM_COMMAND_TICKET_SUGGESTION, true, nullptr, "", ticketSuggestionCommandTable }, { "togglesystem", rbac::RBAC_PERM_COMMAND_TICKET_TOGGLESYSTEM, true, &HandleToggleGMTicketSystem, "" }, }; - static std::vector commandTable = + static ChatCommandTable commandTable = { { "ticket", rbac::RBAC_PERM_COMMAND_TICKET, false, nullptr, "", ticketCommandTable }, }; diff --git a/src/server/scripts/Commands/cs_titles.cpp b/src/server/scripts/Commands/cs_titles.cpp index 4b79fe12b19e0..c6dbbb36e305b 100644 --- a/src/server/scripts/Commands/cs_titles.cpp +++ b/src/server/scripts/Commands/cs_titles.cpp @@ -37,7 +37,7 @@ class titles_commandscript : public CommandScript public: titles_commandscript() : CommandScript("titles_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable titlesSetCommandTable = { diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 06384f77b62d4..65a129f7aeca2 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -43,7 +43,7 @@ class wp_commandscript : public CommandScript public: wp_commandscript() : CommandScript("wp_commandscript") { } - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable wpCommandTable = { @@ -417,11 +417,11 @@ class wp_commandscript : public CommandScript ObjectGuid const& guid = sWaypointMgr->GetVisualGUIDByNode(path->Id, path->Nodes.front().Id); if (!guid.IsEmpty()) { - handler->SendSysMessage("|cff00ff00Path with id %u is already showing.|r", *pathid); + handler->PSendSysMessage("|cff00ff00Path with id %u is already showing.|r", *pathid); return true; } - handler->SendSysMessage("|cff00ff00Showing path with id %u.|r", *pathid); + handler->PSendSysMessage("|cff00ff00Showing path with id %u.|r", *pathid); return true; } else if (show.holds_alternative()) From d5b62a05d480198100bf1a2f5b717d5962314368 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 28 Mar 2026 00:58:27 +0100 Subject: [PATCH 016/175] Core/Utils: Fixed Trinity::GetTypeName return value when given std::type_info args directly --- src/common/Utilities/Util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index 9f65fd9b16325..c747483bd5884 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -589,7 +589,7 @@ std::string GetTypeName() { return Impl::GetTypeName(typeid(T)); } template std::string GetTypeName(T&& v) { - if constexpr (std::is_same_v, std::type_info>) + if constexpr (std::is_same_v, std::type_info>) return Impl::GetTypeName(v); else return Impl::GetTypeName(typeid(v)); From 068c21528c8cc2c25008ac6e43e35dcac93012dd Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 28 Mar 2026 01:05:59 +0100 Subject: [PATCH 017/175] Core: Updated allowed build to 12.0.1.66709 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_03_28_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_03_28_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 0b7b0d9fcbe0f..600bcbd44c445 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1561,7 +1561,14 @@ INSERT INTO `build_auth_key` VALUES (66666,'Mac','x64','WoWC',0x8A98C6903755FD3B4241569B76A92B3F), (66666,'Win','A64','WoW',0x5BC22F3E44F9E25C24A6EA4716A19B17), (66666,'Win','x64','WoW',0xAE2F669B86BEC87F325539F9017E7338), -(66666,'Win','x64','WoWC',0xD9BD5A15ED5DCABB77823D9AD30B3E0B); +(66666,'Win','x64','WoWC',0xD9BD5A15ED5DCABB77823D9AD30B3E0B), +(66709,'Mac','A64','WoW',0x396B922D343C50BEBEBFC74D30ED08C3), +(66709,'Mac','A64','WoWC',0x22D9162DE5B1812997AE2103DB7E0A7B), +(66709,'Mac','x64','WoW',0x86D1677AE56A5E8081FF6A2DA57B1D3F), +(66709,'Mac','x64','WoWC',0x09FA12BA5EFFAB4991B67C8023859A0F), +(66709,'Win','A64','WoW',0x57B21A0711347B6C331700CDB99D8062), +(66709,'Win','x64','WoW',0xA5BE6D5379CADEE2D78ECF1F8D2B655B), +(66709,'Win','x64','WoWC',0x3099082D2374A9BDBCEF42B00811383A); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2004,7 +2011,8 @@ INSERT INTO `build_info` VALUES (66431,12,0,1,NULL), (66527,12,0,1,NULL), (66562,12,0,1,NULL), -(66666,12,0,1,NULL); +(66666,12,0,1,NULL), +(66709,12,0,1,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3617,7 +3625,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '66666', + `gamebuild` int unsigned NOT NULL DEFAULT '66709', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3632,7 +3640,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66666,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66709,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4190,7 +4198,8 @@ INSERT INTO `updates` VALUES ('2026_03_20_00_auth.sql','9083386953291DA3D0634E90D40863F7625FF37E','RELEASED','2026-03-20 01:11:00',0), ('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0), ('2026_03_25_00_auth.sql','1407469EAE26B180ABA3A3802C429A031B241C67','RELEASED','2026-03-25 09:28:09',0), -('2026_03_26_00_auth.sql','85B672D6B69E3AF187F413B8D1788FF948744CDA','RELEASED','2026-03-26 21:31:03',0); +('2026_03_26_00_auth.sql','85B672D6B69E3AF187F413B8D1788FF948744CDA','RELEASED','2026-03-26 21:31:03',0), +('2026_03_28_00_auth.sql','510B4485FF9865D7E2F6AEE8DFA8A50285362C8B','RELEASED','2026-03-28 01:05:32',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_03_28_00_auth.sql b/sql/updates/auth/master/2026_03_28_00_auth.sql new file mode 100644 index 0000000000000..e4b3050bb3e99 --- /dev/null +++ b/sql/updates/auth/master/2026_03_28_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (66709); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(66709,12,0,1,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66709 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(66709,'Mac','A64','WoW',0x396B922D343C50BEBEBFC74D30ED08C3), +(66709,'Mac','A64','WoWC',0x22D9162DE5B1812997AE2103DB7E0A7B), +(66709,'Mac','x64','WoW',0x86D1677AE56A5E8081FF6A2DA57B1D3F), +(66709,'Mac','x64','WoWC',0x09FA12BA5EFFAB4991B67C8023859A0F), +(66709,'Win','A64','WoW',0x57B21A0711347B6C331700CDB99D8062), +(66709,'Win','x64','WoW',0xA5BE6D5379CADEE2D78ECF1F8D2B655B), +(66709,'Win','x64','WoWC',0x3099082D2374A9BDBCEF42B00811383A); + +UPDATE `realmlist` SET `gamebuild`=66709 WHERE `gamebuild`=66666; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '66709'; From 88268721c8648c3da8675df18c424217e17b6701 Mon Sep 17 00:00:00 2001 From: Mirshod Allaberganov Date: Mon, 30 Mar 2026 02:40:05 +0500 Subject: [PATCH 018/175] Scripts/Spells: Implement Feral Lunge (#31746) --- .../world/master/2026_03_29_00_world.sql | 8 +++ src/server/scripts/Spells/spell_shaman.cpp | 50 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 sql/updates/world/master/2026_03_29_00_world.sql diff --git a/sql/updates/world/master/2026_03_29_00_world.sql b/sql/updates/world/master/2026_03_29_00_world.sql new file mode 100644 index 0000000000000..c6f47a8d8c731 --- /dev/null +++ b/sql/updates/world/master/2026_03_29_00_world.sql @@ -0,0 +1,8 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN (196884, 215802); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(196884, 'spell_sha_feral_lunge'), +(215802, 'spell_sha_feral_lunge_damage'); + +DELETE FROM `jump_charge_params` WHERE `id` = 1211; +INSERT INTO `jump_charge_params` (`id`, `speed`, `treatSpeedAsMoveTimeSeconds`, `unlimitedSpeed`, `minHeight`, `maxHeight`, `spellVisualId`, `progressCurveId`, `parabolicCurveId`, `triggerSpellId`) VALUES +(1211, 42, 0, 0, 2, NULL, NULL, NULL, 79789, 215802); diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index f6cc4ee3569ff..cd6098d0af9df 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -77,6 +77,8 @@ enum ShamanSpells SPELL_SHAMAN_ELEMENTAL_WEAPONS_BUFF = 408390, SPELL_SHAMAN_ENERGY_SURGE = 40465, SPELL_SHAMAN_ENHANCED_ELEMENTS = 77223, + SPELL_SHAMAN_FERAL_LUNGE = 196884, + SPELL_SHAMAN_FERAL_LUNGE_DAMAGE = 215802, SPELL_SHAMAN_FIRE_NOVA_DAMAGE = 333977, SPELL_SHAMAN_FIRE_NOVA_ENABLER = 466622, SPELL_SHAMAN_FLAME_SHOCK = 188389, @@ -1140,6 +1142,52 @@ class spell_sha_elemental_weapons : public AuraScript } }; +// 196884 - Feral Lunge +class spell_sha_feral_lunge : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHAMAN_GHOST_WOLF }); + } + + bool Load() override + { + return !GetCaster()->HasAura(SPELL_SHAMAN_GHOST_WOLF); + } + + void OnPrecast() override + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_SHAMAN_GHOST_WOLF, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + } +}; + +// 215802 - Feral Lunge Damage +class spell_sha_feral_lunge_damage : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHAMAN_GHOST_WOLF }); + } + + void HandleHit(SpellEffIndex /*effIndex*/) const + { + GetCaster()->RemoveAurasDueToSpell(SPELL_SHAMAN_GHOST_WOLF); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_sha_feral_lunge_damage::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + struct FireNovaTargetCheck { float MaxSearchRange = 40.0f; @@ -3459,6 +3507,8 @@ void AddSC_shaman_spell_scripts() RegisterSpellScript(spell_sha_earthquake_tick); RegisterSpellScript(spell_sha_elemental_blast); RegisterSpellScript(spell_sha_elemental_weapons); + RegisterSpellScript(spell_sha_feral_lunge); + RegisterSpellScript(spell_sha_feral_lunge_damage); RegisterSpellScript(spell_sha_fire_nova); RegisterSpellScript(spell_sha_flame_shock_fire_nova_enabler); RegisterSpellScript(spell_sha_flametongue_weapon); From ba43c0e5657565ea4070956ee1dc9de4e2c23131 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 30 Mar 2026 00:04:33 +0200 Subject: [PATCH 019/175] Core/Commands: Fix copypaste --- src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp index c25002e2eca2e..cdd2345ba743a 100644 --- a/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp +++ b/src/server/game/Chat/ChatCommands/ChatCommandArgs.cpp @@ -46,7 +46,7 @@ void Trinity::Impl::ChatCommands::EnumArgInfoBase::AddSearchMapEntry(SearchMap& if (title != constant) { auto titleIt = std::ranges::lower_bound(map, title, compare, Containers::MapKey); - if (constantIt == map.end() || compare(title, titleIt->first)) + if (titleIt == map.end() || compare(title, titleIt->first)) map.emplace(titleIt, title, val); // not unique else titleIt->second = std::nullopt; From 62a459d508a0f1cee131b6edb489350c8c7fb543 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 30 Mar 2026 12:04:55 +0200 Subject: [PATCH 020/175] Core/Spells: Changed SpellEffectInfo::CalcBaseValue return type to double --- src/server/game/Entities/Object/Object.cpp | 2 +- src/server/game/Entities/Object/Object.h | 2 +- src/server/game/Spells/Spell.cpp | 7 +++--- src/server/game/Spells/SpellDefines.h | 3 +++ src/server/game/Spells/SpellInfo.cpp | 28 ++++++++++------------ src/server/game/Spells/SpellInfo.h | 2 +- src/server/scripts/Spells/spell_dk.cpp | 2 +- src/server/scripts/Spells/spell_mage.cpp | 2 +- 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 5594f295500b9..83f8131378a50 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1713,7 +1713,7 @@ float WorldObject::GetSpellMinRangeForTarget(Unit const* target, SpellInfo const return spellInfo->GetMinRange(!IsHostileTo(target)); } -double WorldObject::ApplyEffectModifiers(SpellInfo const* spellInfo, uint8 effIndex, double value) const +SpellEffectValue WorldObject::ApplyEffectModifiers(SpellInfo const* spellInfo, uint8 effIndex, SpellEffectValue value) const { if (Player* modOwner = GetSpellModOwner()) { diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 3faba4a5c483a..af70caa04292d 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -453,7 +453,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation float GetSpellMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const; float GetSpellMinRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const; - double ApplyEffectModifiers(SpellInfo const* spellInfo, uint8 effIndex, double value) const; + SpellEffectValue ApplyEffectModifiers(SpellInfo const* spellInfo, uint8 effIndex, SpellEffectValue value) const; int32 CalcSpellDuration(SpellInfo const* spellInfo, std::vector const* powerCosts) const; int32 ModSpellDuration(SpellInfo const* spellInfo, WorldObject const* target, int32 duration, bool positive, uint32 effectMask) const; void ModSpellCastTime(SpellInfo const* spellInfo, int32& castTime, Spell* spell = nullptr) const; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 56ff494f2bb98..440dbb0acda36 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6764,10 +6764,9 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (spellEffectInfo.Effect == SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY) { - auto qualityItr = std::lower_bound(sBattlePetBreedQualityStore.begin(), sBattlePetBreedQualityStore.end(), spellEffectInfo.CalcBaseValue(m_caster, creature, m_castItemEntry, m_castItemLevel), [](BattlePetBreedQualityEntry const* a1, int32 selector) - { - return a1->MaxQualityRoll < selector; - }); + auto qualityItr = std::ranges::lower_bound(sBattlePetBreedQualityStore, + spellEffectInfo.CalcBaseValue(m_caster, creature, m_castItemEntry, m_castItemLevel), {}, + &BattlePetBreedQualityEntry::MaxQualityRoll); BattlePets::BattlePetBreedQuality quality = BattlePets::BattlePetBreedQuality::Poor; if (qualityItr != sBattlePetBreedQualityStore.end()) diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index bea9193545d57..2415f725015bf 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -477,6 +477,9 @@ struct TC_GAME_API CastSpellTargetArg Optional Targets; // empty optional used to signal error state }; +//! Spell effect value calculation result type. +using SpellEffectValue = double; //!< This is a double instead of float to be able to store full range of int32 + struct CastSpellExtraArgsInit { TriggerCastFlags TriggerFlags = TRIGGERED_NONE; diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 4288aa4de9b35..ef683fd79a252 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -514,11 +514,10 @@ uint32 SpellEffectInfo::GetPeriodicTickCount() const int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 const* bp /*= nullptr*/, Unit const* target /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const { - double basePointsPerLevel = RealPointsPerLevel; - // TODO: this needs to be a float, not rounded - int32 basePoints = CalcBaseValue(caster, target, castItemId, itemLevel); - double value = bp ? *bp : basePoints; - double comboDamage = PointsPerResource; + SpellEffectValue basePoints = CalcBaseValue(caster, target, castItemId, itemLevel); + SpellEffectValue value = bp ? *bp : basePoints; + SpellEffectValue basePointsPerLevel = RealPointsPerLevel; + SpellEffectValue comboDamage = PointsPerResource; Unit const* casterUnit = nullptr; if (caster) @@ -555,8 +554,8 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 if (Scaling.Variance) { float delta = fabs(Scaling.Variance * 0.5f); - double valueVariance = frand(-delta, delta); - value += double(basePoints) * valueVariance; + float valueVariance = frand(-delta, delta); + value += basePoints * valueVariance; if (variance) *variance = valueVariance; @@ -566,7 +565,7 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 if (Scaling.Coefficient != 0.0f) { if (Scaling.ResourceCoefficient) - comboDamage = Scaling.ResourceCoefficient * value; + comboDamage = value * Scaling.ResourceCoefficient; } else if (GetScalingExpectedStat() == ExpectedStatType::None) { @@ -578,8 +577,7 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 // if base level is greater than spell level, reduce by base level (eg. pilgrims foods) level -= int32(std::max(_spellInfo->BaseLevel, _spellInfo->SpellLevel)); - if (level < 0) - level = 0; + level = std::max(level, 0); value += level * basePointsPerLevel; } } @@ -603,7 +601,7 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 return int32(round(value)); } -int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* target, uint32 itemId, int32 itemLevel) const +SpellEffectValue SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* target, uint32 itemId, int32 itemLevel) const { if (Scaling.Coefficient != 0.0f) { @@ -660,7 +658,7 @@ int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* targ if (value > 0.0f && value < 1.0f) value = 1.0f; - return int32(round(value)); + return round(value); } else { @@ -686,7 +684,7 @@ int32 SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* targ value = sDB2Manager.EvaluateExpectedStat(stat, level, expansion, 0, CLASS_NONE, 0) * BasePoints / 100.0f; } - return int32(round(value)); + return round(value); } } @@ -3625,7 +3623,7 @@ void SpellInfo::_LoadSqrtTargetLimit(int32 maxTargets, int32 numNonDiminishedTar else { SpellEffectInfo const& valueHolder = maxTargetValueHolder->GetEffect(*maxTargetsValueHolderEffect); - int32 expectedValue = valueHolder.CalcBaseValue(nullptr, nullptr, 0, -1); + int32 expectedValue = int32(valueHolder.CalcBaseValue(nullptr, nullptr, 0, -1)); if (maxTargets != expectedValue) TC_LOG_ERROR("spells", "SpellInfo::_LoadSqrtTargetLimit(maxTargets): Spell {} has different value in effect {} than expected, recheck target caps (expected {}, got {})", maxTargetValueHolder->Id, AsUnderlyingType(*maxTargetsValueHolderEffect), maxTargets, expectedValue); @@ -3646,7 +3644,7 @@ void SpellInfo::_LoadSqrtTargetLimit(int32 maxTargets, int32 numNonDiminishedTar else { SpellEffectInfo const& valueHolder = numNonDiminishedTargetsValueHolder->GetEffect(*numNonDiminishedTargetsValueHolderEffect); - int32 expectedValue = valueHolder.CalcBaseValue(nullptr, nullptr, 0, -1); + int32 expectedValue = int32(valueHolder.CalcBaseValue(nullptr, nullptr, 0, -1)); if (numNonDiminishedTargets != expectedValue) TC_LOG_ERROR("spells", "SpellInfo::_LoadSqrtTargetLimit(numNonDiminishedTargets): Spell {} has different value in effect {} than expected, recheck target caps (expected {}, got {})", numNonDiminishedTargetsValueHolder->Id, AsUnderlyingType(*numNonDiminishedTargetsValueHolderEffect), numNonDiminishedTargets, expectedValue); diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 1af2abf6cd9cc..49f99212db7f0 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -264,7 +264,7 @@ class TC_GAME_API SpellEffectInfo uint32 GetPeriodicTickCount() const; int32 CalcValue(WorldObject const* caster = nullptr, int32 const* basePoints = nullptr, Unit const* target = nullptr, float* variance = nullptr, uint32 castItemId = 0, int32 itemLevel = -1) const; - int32 CalcBaseValue(WorldObject const* caster, Unit const* target, uint32 itemId, int32 itemLevel) const; + SpellEffectValue CalcBaseValue(WorldObject const* caster, Unit const* target, uint32 itemId, int32 itemLevel) const; float CalcValueMultiplier(WorldObject* caster, Spell* spell = nullptr) const; float CalcDamageMultiplier(WorldObject* caster, Spell* spell = nullptr) const; diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 6c2ecae1fabb5..608640fda01b6 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -212,7 +212,7 @@ class spell_dk_apply_bone_shield : public SpellScript { return ValidateSpellInfo({ SPELL_DK_BONE_SHIELD }) && ValidateSpellEffect({ { spellInfo->Id, _effIndex } }) - && spellInfo->GetEffect(_effIndex).CalcBaseValue(nullptr, nullptr, 0, 0) <= int32(sSpellMgr->AssertSpellInfo(SPELL_DK_BONE_SHIELD, DIFFICULTY_NONE)->StackAmount); + && spellInfo->GetEffect(_effIndex).CalcBaseValue(nullptr, nullptr, 0, 0) <= SpellEffectValue(sSpellMgr->AssertSpellInfo(SPELL_DK_BONE_SHIELD, DIFFICULTY_NONE)->StackAmount); } void HandleHitTarget(SpellEffIndex /*effIndex*/) const diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 59155ad13ea67..6876418dac34a 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -666,7 +666,7 @@ class spell_mage_ethereal_blink_triggered : public SpellScript if (AuraEffect const* effectivenessEffect = GetCaster()->GetAuraEffect(SPELL_MAGE_ETHEREAL_BLINK, EFFECT_1)) effectivenessPct = effectivenessEffect->GetAmount(); - int32 slowPct = sSpellMgr->AssertSpellInfo(SPELL_MAGE_SLOW, DIFFICULTY_NONE)->GetEffect(EFFECT_0).CalcBaseValue(GetCaster(), GetHitUnit(), 0, -1); + SpellEffectValue slowPct = sSpellMgr->AssertSpellInfo(SPELL_MAGE_SLOW, DIFFICULTY_NONE)->GetEffect(EFFECT_0).CalcBaseValue(GetCaster(), GetHitUnit(), 0, -1); ApplyPct(slowPct, effectivenessPct); GetCaster()->CastSpell(GetHitUnit(), SPELL_MAGE_SLOW, CastSpellExtraArgs(GetSpell()) From 28a73b6e0f3c5df0eecd72b440664429a7f4ce56 Mon Sep 17 00:00:00 2001 From: Naddley <64811442+Naddley@users.noreply.github.com> Date: Mon, 30 Mar 2026 17:45:15 +0200 Subject: [PATCH 021/175] Scripts/IsleOfDorn: Scripted on quest accept conversations for Bringer of the Void (84998) and Blessings Be Upon You (85001) (#31689) --- .../world/master/2026_03_30_00_world.sql | 82 +++++++++++++++++++ .../campaign_visions_of_a_shadowed_sun.cpp | 20 +++++ 2 files changed, 102 insertions(+) create mode 100644 sql/updates/world/master/2026_03_30_00_world.sql diff --git a/sql/updates/world/master/2026_03_30_00_world.sql b/sql/updates/world/master/2026_03_30_00_world.sql new file mode 100644 index 0000000000000..8ccc9086b2781 --- /dev/null +++ b/sql/updates/world/master/2026_03_30_00_world.sql @@ -0,0 +1,82 @@ +-- Conversation +DELETE FROM `conversation_template` WHERE `Id`=28287; +INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES +(28287, 77763, 0, 65893); + +UPDATE `conversation_template` SET `ScriptName` = 'conversation_after_vereesas_ceremony' WHERE `Id` = 28287; + +DELETE FROM `conversation_actors` WHERE (`ConversationId`=28287 AND `Idx` IN (1,0)); +INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `ConversationActorGuid`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES +(28287, 103076, 0, 1, 0, 0, 0, 0, 65893), -- Full: 0x2042613F00E3DC4001F632000012E1AB Creature/0 R4248/S128562 Map: 2552 (Khaz Algar (Surface)) Entry: 233329 (Silver Hand Avenger) Low: 1237419 +(28287, 103060, 10006960, 0, 0, 0, 0, 0, 65893); -- Full: 0x2042613F00E3D88001F63200001183E4 Creature/0 R4248/S128562 Map: 2552 (Khaz Algar (Surface)) Entry: 233314 (Vereesa Windrunner) Low: 1147876 + +DELETE FROM `conversation_line_template` WHERE `Id` IN (77764, 77763); +INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES +(77764, 0, 1, 0, 0, 65893), +(77763, 0, 0, 0, 0, 65893); + +-- Condition +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 25036 AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 25036, 0, 0, 0, 47, 0, 84997, 2|64, 0, 0, 'Apply Phase 25036 if Quest 84997 is complete|rewarded'), +(26, 25036, 0, 0, 0, 47, 0, 85001, 2|8|64, 0, 1, 'Apply Phase 25036 if Quest 84997 is not complete|in progress|rewarded'); + +-- Quest +DELETE FROM `quest_request_items` WHERE `ID` IN (85001 /*Blessings Be Upon You*/, 84998 /*Bringer of the Void*/); +INSERT INTO `quest_request_items` (`ID`, `EmoteOnComplete`, `EmoteOnIncomplete`, `EmoteOnCompleteDelay`, `EmoteOnIncompleteDelay`, `CompletionText`, `VerifiedBuild`) VALUES +(85001, 0, 5, 0, 0, 'These poor souls are imperiled through no fault of their own!', 65893), -- Blessings Be Upon You +(84998, 0, 0, 0, 0, 'Why does this... void creature want... us dead?', 65893); -- Bringer of the Void + +DELETE FROM `creature_queststarter` WHERE (`id`=233312 AND `quest`=85001) OR (`id`=233314 AND `quest`=84998); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(233312, 85001, 65893), -- Blessings Be Upon You offered by Arator +(233314, 84998, 65893); -- Bringer of the Void offered by Vereesa Windrunner + +DELETE FROM `creature_questender` WHERE (`id`=233329 AND `quest`=85001) OR (`id`=233314 AND `quest`=84998); +INSERT INTO `creature_questender` (`id`, `quest`, `VerifiedBuild`) VALUES +(233329, 85001, 65893), -- Blessings Be Upon You ended by Silver Hand Avenger +(233314, 84998, 65893); -- Bringer of the Void ended by Vereesa Windrunner + +DELETE FROM `quest_template_addon` WHERE `ID` IN (85001,84998); +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `BreadcrumbForQuestId`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(85001, 0, 0, 0, 84997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''), +(84998, 0, 0, 0, 84997, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); + +-- SpellArea +DELETE FROM `spell_area` WHERE `spell` = 470452 AND `area` = 15943; +INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`) VALUES +(470452, 15943, 85001, 85002, 0, 0, 2, 3, 74, 11); + +-- Creature Summon data +DELETE FROM `creature_summoned_data` WHERE `CreatureID` = 233329; +INSERT INTO `creature_summoned_data` (`CreatureID`, `CreatureIDVisibleToSummoner`, `GroundMountDisplayID`, `FlyingMountDisplayID`, `DespawnOnQuestsRemoved`) VALUES +(233329, 233312, NULL, NULL, NULL); + + -- Arator smart ai +SET @ENTRY := 233312; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 19, 0, 100, 0, 85001, 0, 0, 0, 0, 143, 28287, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On player accepted quest 85001 - Player who accepted quest: Start conversation (28287) Actors<> (first line 77763)', ''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 22 AND `SourceEntry` = 233312 AND `SourceId` = 0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES +(22, 1, 233312, 0, 0, 47, 0, 84998, 8, 0, '', 0, 'Action invoker has Bringer of the Void (84998) in state incomplete'); + +-- Vereesa Windrunner smart ai +SET @ENTRY := 233314; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 19, 0, 100, 0, 84998, 0, 0, 0, 0, 143, 28287, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On player accepted quest Bringer of the Void (84998) - Player who accepted quest: Start conversation (28287) Actors<> (first line 77763)', ''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 22 AND `SourceEntry` = 233314 AND `SourceId` = 0; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES +(22, 1, 233314, 0, 0, 47, 0, 85001, 8, 0, '', 0, 'Action invoker has Blessings Be Upon You (85001) in state incomplete'); + +-- Silver Hand Avenger smart ai +SET @ENTRY := 233329; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 85, 470456, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On just summoned - Self: Cast spell 470456 on self', ''); diff --git a/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp b/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp index 91964a3eb056c..5d479e3be15ea 100644 --- a/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp +++ b/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp @@ -33,6 +33,7 @@ namespace Creatures { static constexpr uint32 VereesaWindrunnerOztanIsle = 231042; static constexpr uint32 AratorOztanIsle = 231039; + static constexpr uint32 SummonedSilverHandAvenger = 233329; } namespace Mounts @@ -77,6 +78,7 @@ namespace Conversations { static constexpr uint32 VereesaActorOztanIsle = 102984; static constexpr uint32 AratorActorOztanIsle = 102985; + static constexpr uint32 SummonedSilverHandAvenger = 103060; } namespace Lines @@ -257,6 +259,23 @@ class conversation_vereesas_tale : public ConversationAI }, conversation->GetLastLineEndTime(privateOwnerLocale) + 2s); } }; + +// 28287 - Conversation: After Vereesas Ceremony +class conversation_after_vereesas_ceremony : public ConversationAI +{ +public: + using ConversationAI::ConversationAI; + + void OnCreate(Unit* creator) override + { + Creature* summonedAvenger = creator->FindNearestCreatureWithOptions(20.0f, { .CreatureId = Creatures::SummonedSilverHandAvenger, .IgnorePhases = true, .OwnerGuid = creator->GetGUID() }); + if (!summonedAvenger) + return; + + conversation->AddActor(Conversations::Actors::SummonedSilverHandAvenger, 1, summonedAvenger->GetGUID()); + conversation->Start(); + } +}; } void AddSC_campaign_visions_of_a_shadowed_sun() @@ -268,4 +287,5 @@ void AddSC_campaign_visions_of_a_shadowed_sun() // Conversation RegisterConversationAI(conversation_vereesas_tale); + RegisterConversationAI(conversation_after_vereesas_ceremony); } From b1f3448cf9604b2d862022062408be0935a8f358 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 31 Mar 2026 21:39:33 +0200 Subject: [PATCH 022/175] Core/WorldStates: Fixed thread unsafe access to realm wide world states --- .../game/Achievements/CriteriaHandler.cpp | 4 +- .../game/Battlegrounds/Battleground.cpp | 2 +- .../game/Battlegrounds/BattlegroundScript.cpp | 2 +- src/server/game/Conditions/ConditionMgr.cpp | 6 +- src/server/game/Entities/Player/Player.cpp | 10 +- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Events/GameEventMgr.cpp | 4 +- src/server/game/Instances/InstanceScript.cpp | 2 +- src/server/game/Maps/Map.cpp | 12 +- src/server/game/Maps/MapManager.cpp | 4 +- src/server/game/OutdoorPvP/OutdoorPvP.cpp | 4 +- src/server/game/World/World.cpp | 20 +-- .../game/World/WorldStates/WorldStateMgr.cpp | 118 +++++++++----- .../game/World/WorldStates/WorldStateMgr.h | 27 ++-- .../scripts/Battlefield/BattlefieldTB.cpp | 150 +++++++++--------- .../scripts/Battlefield/BattlefieldWG.cpp | 64 ++++---- .../IsleOfConquest/isle_of_conquest.cpp | 12 +- .../battleground_strand_of_the_ancients.cpp | 2 +- .../battleground_temple_of_kotmogu.cpp | 8 +- src/server/scripts/Commands/cs_debug.cpp | 6 +- .../ScarletEnclave/chapter5.cpp | 14 +- .../scripts/ExilesReach/zone_exiles_reach.cpp | 2 +- src/server/scripts/Spells/spell_generic.cpp | 4 +- 23 files changed, 255 insertions(+), 224 deletions(-) diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 54b0f0e5d5d91..d625bde8b9cff 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -1364,7 +1364,7 @@ bool CriteriaHandler::CanUpdateCriteria(Criteria const* criteria, CriteriaTreeLi } if (criteria->Entry->EligibilityWorldStateID != 0) - if (sWorldStateMgr->GetValue(criteria->Entry->EligibilityWorldStateID, referencePlayer->GetMap()) != criteria->Entry->EligibilityWorldStateValue) + if (WorldStateMgr::GetValue(criteria->Entry->EligibilityWorldStateID, referencePlayer->GetMap()) != criteria->Entry->EligibilityWorldStateValue) return false; return true; @@ -2296,7 +2296,7 @@ bool CriteriaHandler::ModifierSatisfied(ModifierTreeEntry const* modifier, uint6 return false; break; case ModifierTreeType::PlayersRealmWorldState: // 108 - if (sWorldStateMgr->GetValue(reqValue, referencePlayer->GetMap()) != int32(secondaryAsset)) + if (WorldStateMgr::GetValue(reqValue, referencePlayer->GetMap()) != int32(secondaryAsset)) return false; break; case ModifierTreeType::TimeBetween: // 109 diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 1f55c0ccb8600..85240dd1f3f2e 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -603,7 +603,7 @@ void Battleground::RewardReputationToTeam(uint32 faction_id, uint32 Reputation, void Battleground::UpdateWorldState(int32 worldStateId, int32 value, bool hidden /*= false*/) { - sWorldStateMgr->SetValue(worldStateId, value, hidden, GetBgMap()); + WorldStateMgr::SetValue(worldStateId, value, hidden, GetBgMap()); } void Battleground::EndBattleground(Team winner) diff --git a/src/server/game/Battlegrounds/BattlegroundScript.cpp b/src/server/game/Battlegrounds/BattlegroundScript.cpp index 5ab744cf8a2a3..b6b21dbaf91d5 100644 --- a/src/server/game/Battlegrounds/BattlegroundScript.cpp +++ b/src/server/game/Battlegrounds/BattlegroundScript.cpp @@ -64,7 +64,7 @@ void BattlegroundScript::TriggerGameEvent(uint32 gameEventId, WorldObject* sourc void BattlegroundScript::UpdateWorldState(int32 worldStateId, int32 value, bool hidden) const { - sWorldStateMgr->SetValue(worldStateId, value, hidden, battlegroundMap); + WorldStateMgr::SetValue(worldStateId, value, hidden, battlegroundMap); } ArenaScript::ArenaScript(BattlegroundMap* map) : BattlegroundScript(map) diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index b53ac96e2018a..534edeafabf40 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -251,7 +251,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const break; case CONDITION_WORLD_STATE: { - condMeets = sWorldStateMgr->GetValue(ConditionValue1, map) == int32(ConditionValue2); + condMeets = WorldStateMgr::GetValue(ConditionValue1, map) == int32(ConditionValue2); break; } case CONDITION_REALM_ACHIEVEMENT: @@ -2544,7 +2544,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) const } case CONDITION_WORLD_STATE: { - if (!sWorldStateMgr->GetWorldStateTemplate(cond->ConditionValue1)) + if (!WorldStateMgr::GetWorldStateTemplate(cond->ConditionValue1)) { TC_LOG_ERROR("sql.sql", "{} has non existing world state in value1 ({}), skipped.", *cond, cond->ConditionValue1); return false; @@ -3634,7 +3634,7 @@ int32 EvalSingleValue(ByteBuffer& buffer, Map const* map) case WorldStateExpressionValueType::WorldState: { int32 worldStateId = buffer.read(); - value = sWorldStateMgr->GetValue(worldStateId, map); + value = WorldStateMgr::GetValue(worldStateId, map); break; } case WorldStateExpressionValueType::Function: diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8faf742742761..e21f0c81bcf7c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7428,7 +7428,7 @@ uint32 Player::GetCurrencyMaxQuantity(CurrencyTypesEntry const* currency, bool o uint32 maxQuantity = currency->MaxQty; if (currency->MaxQtyWorldStateID) - maxQuantity = sWorldStateMgr->GetValue(currency->MaxQtyWorldStateID, GetMap()); + maxQuantity = WorldStateMgr::GetValue(currency->MaxQtyWorldStateID, GetMap()); uint32 increasedCap = 0; if (currency->GetFlags().HasFlag(CurrencyTypesFlags::DynamicMaximum)) @@ -7716,7 +7716,7 @@ void Player::UpdateHostileAreaState(AreaTableEntry const* area) { if (area) { - if (InBattleground() || area->GetFlags().HasFlag(AreaFlags::CombatZone) || (area->PvpCombatWorldStateID != -1 && sWorldStateMgr->GetValue(area->PvpCombatWorldStateID, GetMap()) != 0)) + if (InBattleground() || area->GetFlags().HasFlag(AreaFlags::CombatZone) || (area->PvpCombatWorldStateID != -1 && WorldStateMgr::GetValue(area->PvpCombatWorldStateID, GetMap()) != 0)) pvpInfo.IsInHostileArea = true; else if (IsWarModeLocalActive() || (area->GetFlags().HasFlag(AreaFlags::EnemiesPvPFlagged))) { @@ -9232,9 +9232,7 @@ void Player::SendUpdateWorldState(uint32 variable, uint32 value, bool hidden /*= SendDirectMessage(worldstate.Write()); } -// TODO - InitWorldStates should NOT always send the same states -// Some should keep the same value between different zoneIds and areaIds on the same map -void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) +void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) const { uint32 mapId = GetMapId(); @@ -9245,7 +9243,7 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.AreaID = zoneId; packet.SubareaID = areaId; - sWorldStateMgr->FillInitialWorldStates(packet, GetMap(), areaId); + WorldStateMgr::FillInitialWorldStates(packet, GetMap(), areaId); SendDirectMessage(packet.Write()); } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 5381cfccd642f..f51d91271a91f 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2514,7 +2514,7 @@ class TC_GAME_API Player final : public Unit, public GridObject void SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& newEqSet); void DeleteEquipmentSet(uint64 id); - void SendInitWorldStates(uint32 zoneId, uint32 areaId); + void SendInitWorldStates(uint32 zoneId, uint32 areaId) const; void SendUpdateWorldState(uint32 variable, uint32 value, bool hidden = false) const; void SendDirectMessage(WorldPacket const* data) const; diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp index 058ea7d39c63e..e7a9651dc0053 100644 --- a/src/server/game/Events/GameEventMgr.cpp +++ b/src/server/game/Events/GameEventMgr.cpp @@ -289,7 +289,7 @@ void GameEventMgr::LoadFromDB() SetHolidayEventTime(pGameEvent); } - if (pGameEvent.WorldStateId && !sWorldStateMgr->GetWorldStateTemplate(*pGameEvent.WorldStateId)) + if (pGameEvent.WorldStateId && !WorldStateMgr::GetWorldStateTemplate(*pGameEvent.WorldStateId)) { TC_LOG_ERROR("sql.sql", "`game_event` game event id ({}) has an invalid world state Id {}, set to 0.", event_id, *pGameEvent.WorldStateId); pGameEvent.WorldStateId.reset(); @@ -1519,7 +1519,7 @@ void GameEventMgr::UpdateEventQuests(uint16 event_id, bool activate) void GameEventMgr::UpdateWorldStates(uint16 event_id, bool Activate) { if (Optional worldStateId = mGameEvent[event_id].WorldStateId) - sWorldStateMgr->SetValue(*worldStateId, Activate ? 1 : 0, false, nullptr); + WorldStateMgr::SetValue(*worldStateId, Activate ? 1 : 0, false, nullptr); } GameEventMgr::GameEventMgr() : isSystemInit(false) diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index eb5cb73e9f3e3..fcd351cadaca7 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -649,7 +649,7 @@ void InstanceScript::DoRespawnGameObject(ObjectGuid guid, Seconds timeToDespawn void InstanceScript::DoUpdateWorldState(int32 worldStateId, int32 value) { - sWorldStateMgr->SetValue(worldStateId, value, false, instance); + WorldStateMgr::SetValue(worldStateId, value, false, instance); } // Send Notify to all players in instance diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index b98d309346d5e..0d4d2e6372642 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -159,7 +159,7 @@ i_scriptLock(false), _respawnTimes(std::make_unique()), _r if (MMAP::MMapManager::isRebuildingTilesEnabledOnMap(GetId())) m_mmapTileRebuilder = std::make_shared(this, MMAP::MMapManager::instance()->GetNavMesh(GetId(), GetInstanceId())); - _worldStateValues = sWorldStateMgr->GetInitialWorldStatesForMap(this); + _worldStateValues = WorldStateMgr::GetInitialWorldStatesForMap(this); } void Map::InitVisibilityDistance() @@ -441,7 +441,7 @@ void Map::SetWorldStateValue(int32 worldStateId, int32 value, bool hidden) itr->second = value; - WorldStateTemplate const* worldStateTemplate = sWorldStateMgr->GetWorldStateTemplate(worldStateId); + WorldStateTemplate const* worldStateTemplate = WorldStateMgr::GetWorldStateTemplate(worldStateId); if (worldStateTemplate) sScriptMgr->OnWorldStateValueChange(worldStateTemplate, oldValue, value, this); @@ -2846,8 +2846,8 @@ InstanceMap::InstanceMap(uint32 id, time_t expiry, uint32 InstanceId, Difficulty // this make sure it gets unloaded if for some reason no player joins m_unloadTimer = std::max(sWorld->getIntConfig(CONFIG_INSTANCE_UNLOAD_DELAY), (uint32)MIN_UNLOAD_DELAY); - sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, InstanceTeam == TEAM_ALLIANCE, false, this); - sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_HORDE, InstanceTeam == TEAM_HORDE, false, this); + WorldStateMgr::SetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, InstanceTeam == TEAM_ALLIANCE, false, this); + WorldStateMgr::SetValue(WS_TEAM_IN_INSTANCE_HORDE, InstanceTeam == TEAM_HORDE, false, this); if (i_instanceLock) { @@ -3404,9 +3404,9 @@ uint32 InstanceMap::GetMaxPlayers() const TeamId InstanceMap::GetTeamIdInInstance() const { - if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, this)) + if (WorldStateMgr::GetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, this)) return TEAM_ALLIANCE; - if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_HORDE, this)) + if (WorldStateMgr::GetValue(WS_TEAM_IN_INSTANCE_HORDE, this)) return TEAM_HORDE; return TEAM_NEUTRAL; } diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp index d363349febe2b..e5cca6b376493 100644 --- a/src/server/game/Maps/MapManager.cpp +++ b/src/server/game/Maps/MapManager.cpp @@ -485,8 +485,8 @@ class SplitByFactionMapScript : public WorldMapScript void OnCreate(Map* map) override { - sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, map->GetInstanceId() == TEAM_ALLIANCE, false, map); - sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_HORDE, map->GetInstanceId() == TEAM_HORDE, false, map); + WorldStateMgr::SetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, map->GetInstanceId() == TEAM_ALLIANCE, false, map); + WorldStateMgr::SetValue(WS_TEAM_IN_INSTANCE_HORDE, map->GetInstanceId() == TEAM_HORDE, false, map); } }; diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.cpp b/src/server/game/OutdoorPvP/OutdoorPvP.cpp index b6db2c304b336..e1e817b512496 100644 --- a/src/server/game/OutdoorPvP/OutdoorPvP.cpp +++ b/src/server/game/OutdoorPvP/OutdoorPvP.cpp @@ -85,12 +85,12 @@ void OutdoorPvP::Update(uint32 diff) int32 OutdoorPvP::GetWorldState(int32 worldStateId) const { - return sWorldStateMgr->GetValue(worldStateId, m_map); + return WorldStateMgr::GetValue(worldStateId, m_map); } void OutdoorPvP::SetWorldState(int32 worldStateId, int32 value) { - sWorldStateMgr->SetValue(worldStateId, value, false, m_map); + WorldStateMgr::SetValue(worldStateId, value, false, m_map); } void OutdoorPvP::HandleKill(Player* killer, Unit* killed) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 13883d3ee7696..fc6cac584a633 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1218,8 +1218,8 @@ void World::LoadConfigSettings(bool reload) m_timers[WUPDATE_CLEANDB].Reset(); m_timers[WUPDATE_AUTOBROADCAST].SetInterval(m_int_configs[CONFIG_AUTOBROADCAST_INTERVAL]); m_timers[WUPDATE_AUTOBROADCAST].Reset(); - sWorldStateMgr->SetValue(WS_CURRENT_PVP_SEASON_ID, getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS) ? getIntConfig(CONFIG_ARENA_SEASON_ID) : 0, false, nullptr); - sWorldStateMgr->SetValue(WS_PREVIOUS_PVP_SEASON_ID, getIntConfig(CONFIG_ARENA_SEASON_ID) - getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS), false, nullptr); + WorldStateMgr::SetValue(WS_CURRENT_PVP_SEASON_ID, getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS) ? getIntConfig(CONFIG_ARENA_SEASON_ID) : 0, false, nullptr); + WorldStateMgr::SetValue(WS_PREVIOUS_PVP_SEASON_ID, getIntConfig(CONFIG_ARENA_SEASON_ID) - getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS), false, nullptr); // call ScriptMgr if we're reloading the configuration sScriptMgr->OnConfigLoad(reload); @@ -1605,7 +1605,7 @@ bool World::SetInitialWorldSettings() sQuestPoolMgr->LoadFromDB(); // must be after quest templates TC_LOG_INFO("server.loading", "Loading World State templates..."); - sWorldStateMgr->LoadFromDB(); // must be loaded before battleground, outdoor PvP, game events and conditions + WorldStateMgr::LoadFromDB(); // must be loaded before battleground, outdoor PvP, game events and conditions TC_LOG_INFO("server.loading", "Loading Game Event Data..."); // must be after loading pools fully sGameEventMgr->LoadFromDB(); @@ -1842,8 +1842,8 @@ bool World::SetInitialWorldSettings() TC_LOG_INFO("server.loading", "Loading Persistend World Variables..."); LoadPersistentWorldVariables(); - sWorldStateMgr->SetValue(WS_CURRENT_PVP_SEASON_ID, getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS) ? getIntConfig(CONFIG_ARENA_SEASON_ID) : 0, false, nullptr); - sWorldStateMgr->SetValue(WS_PREVIOUS_PVP_SEASON_ID, getIntConfig(CONFIG_ARENA_SEASON_ID) - getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS), false, nullptr); + WorldStateMgr::SetValue(WS_CURRENT_PVP_SEASON_ID, getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS) ? getIntConfig(CONFIG_ARENA_SEASON_ID) : 0, false, nullptr); + WorldStateMgr::SetValue(WS_PREVIOUS_PVP_SEASON_ID, getIntConfig(CONFIG_ARENA_SEASON_ID) - getBoolConfig(CONFIG_ARENA_SEASON_IN_PROGRESS), false, nullptr); sObjectMgr->LoadPhases(); @@ -2080,8 +2080,8 @@ bool World::SetInitialWorldSettings() void World::SetForcedWarModeFactionBalanceState(TeamId team, int32 reward) { - sWorldStateMgr->SetValueAndSaveInDb(WS_WAR_MODE_HORDE_BUFF_VALUE, 10 + (team == TEAM_ALLIANCE ? reward : 0), false, nullptr); - sWorldStateMgr->SetValueAndSaveInDb(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, 10 + (team == TEAM_HORDE ? reward : 0), false, nullptr); + WorldStateMgr::SetValueAndSaveInDb(WS_WAR_MODE_HORDE_BUFF_VALUE, 10 + (team == TEAM_ALLIANCE ? reward : 0), false, nullptr); + WorldStateMgr::SetValueAndSaveInDb(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, 10 + (team == TEAM_HORDE ? reward : 0), false, nullptr); } void World::DisableForcedWarModeFactionBalanceState() @@ -2410,6 +2410,8 @@ void World::Update(uint32 diff) SendGuidWarning(); } + WorldStateMgr::Update(); + { TC_METRIC_TIMER("world_update_time", TC_METRIC_TAG("type", "Process cli commands")); // And last, but not least handle the issued cli commands @@ -3517,8 +3519,8 @@ void World::UpdateWarModeRewardValues() outnumberedFactionReward = 5; } - sWorldStateMgr->SetValueAndSaveInDb(WS_WAR_MODE_HORDE_BUFF_VALUE, 10 + (dominantFaction == TEAM_ALLIANCE ? outnumberedFactionReward : 0), false, nullptr); - sWorldStateMgr->SetValueAndSaveInDb(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, 10 + (dominantFaction == TEAM_HORDE ? outnumberedFactionReward : 0), false, nullptr); + WorldStateMgr::SetValueAndSaveInDb(WS_WAR_MODE_HORDE_BUFF_VALUE, 10 + (dominantFaction == TEAM_ALLIANCE ? outnumberedFactionReward : 0), false, nullptr); + WorldStateMgr::SetValueAndSaveInDb(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, 10 + (dominantFaction == TEAM_HORDE ? outnumberedFactionReward : 0), false, nullptr); } uint32 GetVirtualRealmAddress() diff --git a/src/server/game/World/WorldStates/WorldStateMgr.cpp b/src/server/game/World/WorldStates/WorldStateMgr.cpp index df34905ba0c1a..f20a274b89ad3 100644 --- a/src/server/game/World/WorldStates/WorldStateMgr.cpp +++ b/src/server/game/World/WorldStates/WorldStateMgr.cpp @@ -31,9 +31,21 @@ namespace { constexpr int32 WORLDSTATE_ANY_MAP = -1; -std::unordered_map _worldStateTemplates; -WorldStateValueContainer _realmWorldStateValues; -std::unordered_map _worldStatesByMap; +struct Data +{ + std::unordered_map WorldStateTemplates; + std::mutex RealmWorldStateValuesMutex; + WorldStateValueContainer RealmWorldStateValues; + std::unordered_set ChangedRealmWorldStates; + std::vector RealmWorldStatePacketCache; + std::unordered_map WorldStatesByMap; +}; + +Data& GetData() +{ + static Data data; + return data; +} } void WorldStateMgr::LoadFromDB() @@ -45,12 +57,14 @@ void WorldStateMgr::LoadFromDB() if (!result) return; + Data& data = GetData(); + do { Field* fields = result->Fetch(); int32 id = fields[0].GetInt32(); - WorldStateTemplate& worldState = _worldStateTemplates[id]; + WorldStateTemplate& worldState = data.WorldStateTemplates[id]; worldState.Id = id; worldState.DefaultValue = fields[1].GetInt32(); @@ -103,7 +117,7 @@ void WorldStateMgr::LoadFromDB() continue; } - if (worldState.MapIds.find(areaTableEntry->ContinentID) == worldState.MapIds.end()) + if (!worldState.MapIds.contains(areaTableEntry->ContinentID)) { TC_LOG_ERROR("sql.sql", "Table `world_state` contains a world state {} with AreaID ({}) not on any of required maps, area ignored", id, *areaId); @@ -131,14 +145,14 @@ void WorldStateMgr::LoadFromDB() if (!worldState.MapIds.empty()) { for (int32 mapId : worldState.MapIds) - _worldStatesByMap[mapId][id] = worldState.DefaultValue; + data.WorldStatesByMap[mapId][id] = worldState.DefaultValue; } else - _realmWorldStateValues[id] = worldState.DefaultValue; + data.RealmWorldStateValues[id] = worldState.DefaultValue; } while (result->NextRow()); - TC_LOG_INFO("server.loading", ">> Loaded {} world state templates {} ms", _worldStateTemplates.size(), GetMSTimeDiffToNow(oldMSTime)); + TC_LOG_INFO("server.loading", ">> Loaded {} world state templates {} ms", data.WorldStateTemplates.size(), GetMSTimeDiffToNow(oldMSTime)); oldMSTime = getMSTime(); @@ -150,7 +164,7 @@ void WorldStateMgr::LoadFromDB() { Field* fields = result->Fetch(); int32 worldStateId = fields[0].GetInt32(); - WorldStateTemplate* worldState = Trinity::Containers::MapGetValuePtr(_worldStateTemplates, worldStateId); + WorldStateTemplate* worldState = Trinity::Containers::MapGetValuePtr(data.WorldStateTemplates, worldStateId); if (!worldState) { TC_LOG_ERROR("sql.sql", "Table `world_state_value` contains a value for unknown world state {}, ignored", worldStateId); @@ -162,10 +176,10 @@ void WorldStateMgr::LoadFromDB() if (!worldState->MapIds.empty()) { for (int32 mapId : worldState->MapIds) - _worldStatesByMap[mapId][worldStateId] = value; + data.WorldStatesByMap[mapId][worldStateId] = value; } else - _realmWorldStateValues[worldStateId] = value; + data.RealmWorldStateValues[worldStateId] = value; ++savedValueCount; } @@ -175,23 +189,48 @@ void WorldStateMgr::LoadFromDB() TC_LOG_INFO("server.loading", ">> Loaded {} saved world state values {} ms", savedValueCount, GetMSTimeDiffToNow(oldMSTime)); } -WorldStateTemplate const* WorldStateMgr::GetWorldStateTemplate(int32 worldStateId) const +void WorldStateMgr::Update() +{ + Data& data = GetData(); + if (!data.ChangedRealmWorldStates.empty()) + { + data.RealmWorldStatePacketCache.clear(); + for (auto const& [worldStateId, value] : data.RealmWorldStateValues) + data.RealmWorldStatePacketCache.emplace_back(worldStateId, value); + + // Broadcast update to all players on the server + for (WorldStateValueContainer::value_type const* changedRealmWorldState : data.ChangedRealmWorldStates) + { + WorldPackets::WorldState::UpdateWorldState updateWorldState; + updateWorldState.VariableID = changedRealmWorldState->first; + updateWorldState.Value = changedRealmWorldState->second; + updateWorldState.Hidden = false; + sWorld->SendGlobalMessage(updateWorldState.Write()); + } + + data.ChangedRealmWorldStates.clear(); + } +} + +WorldStateTemplate const* WorldStateMgr::GetWorldStateTemplate(int32 worldStateId) { - return Trinity::Containers::MapGetValuePtr(_worldStateTemplates, worldStateId); + return Trinity::Containers::MapGetValuePtr(GetData().WorldStateTemplates, worldStateId); } -int32 WorldStateMgr::GetValue(int32 worldStateId, Map const* map) const +int32 WorldStateMgr::GetValue(int32 worldStateId, Map const* map) { WorldStateTemplate const* worldStateTemplate = GetWorldStateTemplate(worldStateId); if (!worldStateTemplate || worldStateTemplate->MapIds.empty()) { - if (int32 const* value = Trinity::Containers::MapGetValuePtr(_realmWorldStateValues, worldStateId)) + Data& data = GetData(); + std::scoped_lock lock(data.RealmWorldStateValuesMutex); + if (int32 const* value = Trinity::Containers::MapGetValuePtr(data.RealmWorldStateValues, worldStateId)) return *value; return 0; } - if (!map || (!worldStateTemplate->MapIds.count(map->GetId()) && !worldStateTemplate->MapIds.count(WORLDSTATE_ANY_MAP))) + if (!map || (!worldStateTemplate->MapIds.contains(map->GetId()) && !worldStateTemplate->MapIds.contains(WORLDSTATE_ANY_MAP))) return 0; return map->GetWorldStateValue(worldStateId); @@ -202,26 +241,26 @@ void WorldStateMgr::SetValue(int32 worldStateId, int32 value, bool hidden, Map* WorldStateTemplate const* worldStateTemplate = GetWorldStateTemplate(worldStateId); if (!worldStateTemplate || worldStateTemplate->MapIds.empty()) { - auto [itr, inserted] = _realmWorldStateValues.try_emplace(worldStateId, 0); - int32 oldValue = itr->second; - if (oldValue == value && !inserted) - return; - - itr->second = value; + int32 oldValue; + { + Data& data = GetData(); + std::scoped_lock lock(data.RealmWorldStateValuesMutex); + auto [itr, inserted] = data.RealmWorldStateValues.try_emplace(worldStateId, 0); + oldValue = itr->second; + if (oldValue == value && !inserted) + return; + + itr->second = value; + data.ChangedRealmWorldStates.insert(&*itr); + } if (worldStateTemplate) sScriptMgr->OnWorldStateValueChange(worldStateTemplate, oldValue, value, nullptr); - // Broadcast update to all players on the server - WorldPackets::WorldState::UpdateWorldState updateWorldState; - updateWorldState.VariableID = worldStateId; - updateWorldState.Value = value; - updateWorldState.Hidden = hidden; - sWorld->SendGlobalMessage(updateWorldState.Write()); return; } - if (!map || (!worldStateTemplate->MapIds.count(map->GetId()) && !worldStateTemplate->MapIds.count(WORLDSTATE_ANY_MAP))) + if (!map || (!worldStateTemplate->MapIds.contains(map->GetId()) && !worldStateTemplate->MapIds.contains(WORLDSTATE_ANY_MAP))) return; map->SetWorldStateValue(worldStateId, value, hidden); @@ -244,29 +283,30 @@ void WorldStateMgr::SetValueAndSaveInDb(int32 worldStateId, int32 value, bool hi SaveValueInDb(worldStateId, value); } -WorldStateValueContainer WorldStateMgr::GetInitialWorldStatesForMap(Map const* map) const +WorldStateValueContainer WorldStateMgr::GetInitialWorldStatesForMap(Map const* map) { WorldStateValueContainer initialValues; - if (WorldStateValueContainer const* valuesTemplate = Trinity::Containers::MapGetValuePtr(_worldStatesByMap, map->GetId())) + Data& data = GetData(); + if (WorldStateValueContainer const* valuesTemplate = Trinity::Containers::MapGetValuePtr(data.WorldStatesByMap, map->GetId())) initialValues.insert(valuesTemplate->begin(), valuesTemplate->end()); - if (WorldStateValueContainer const* valuesTemplate = Trinity::Containers::MapGetValuePtr(_worldStatesByMap, WORLDSTATE_ANY_MAP)) + if (WorldStateValueContainer const* valuesTemplate = Trinity::Containers::MapGetValuePtr(data.WorldStatesByMap, WORLDSTATE_ANY_MAP)) initialValues.insert(valuesTemplate->begin(), valuesTemplate->end()); return initialValues; } -void WorldStateMgr::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& initWorldStates, Map const* map, uint32 playerAreaId) const +void WorldStateMgr::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& initWorldStates, Map const* map, uint32 playerAreaId) { - for (auto const& [worldStateId, value] : _realmWorldStateValues) - initWorldStates.Worldstates.emplace_back(worldStateId, value); + Data& data = GetData(); + initWorldStates.Worldstates.insert(initWorldStates.Worldstates.end(), data.RealmWorldStatePacketCache.begin(), data.RealmWorldStatePacketCache.end()); for (auto const& [worldStateId, value] : map->GetWorldStateValues()) { WorldStateTemplate const* worldStateTemplate = GetWorldStateTemplate(worldStateId); if (worldStateTemplate && !worldStateTemplate->AreaIds.empty()) { - bool isInAllowedArea = std::any_of(worldStateTemplate->AreaIds.begin(), worldStateTemplate->AreaIds.end(), + bool isInAllowedArea = std::ranges::any_of(worldStateTemplate->AreaIds, [=](uint32 requiredAreaId) { return DB2Manager::IsInArea(playerAreaId, requiredAreaId); }); if (!isInAllowedArea) continue; @@ -275,9 +315,3 @@ void WorldStateMgr::FillInitialWorldStates(WorldPackets::WorldState::InitWorldSt initWorldStates.Worldstates.emplace_back(worldStateId, value); } } - -WorldStateMgr* WorldStateMgr::instance() -{ - static WorldStateMgr instance; - return &instance; -} diff --git a/src/server/game/World/WorldStates/WorldStateMgr.h b/src/server/game/World/WorldStates/WorldStateMgr.h index 17a3f7920ee8b..28013b3d0946e 100644 --- a/src/server/game/World/WorldStates/WorldStateMgr.h +++ b/src/server/game/World/WorldStates/WorldStateMgr.h @@ -15,8 +15,8 @@ * with this program. If not, see . */ -#ifndef WorldStateMgr_h__ -#define WorldStateMgr_h__ +#ifndef TRINITYCORE_WORLD_STATE_MGR_H +#define TRINITYCORE_WORLD_STATE_MGR_H #include "Define.h" #include "WorldStateDefines.h" @@ -28,25 +28,22 @@ namespace WorldPackets::WorldState class InitWorldStates; } -class TC_GAME_API WorldStateMgr +namespace WorldStateMgr { -public: - static WorldStateMgr* instance(); - void LoadFromDB(); - WorldStateTemplate const* GetWorldStateTemplate(int32 worldStateId) const; + void Update(); - int32 GetValue(int32 worldStateId, Map const* map) const; - void SetValue(int32 worldStateId, int32 value, bool hidden, Map* map); - void SaveValueInDb(int32 worldStateId, int32 value); - void SetValueAndSaveInDb(int32 worldStateId, int32 value, bool hidden, Map* map); + TC_GAME_API WorldStateTemplate const* GetWorldStateTemplate(int32 worldStateId); - WorldStateValueContainer GetInitialWorldStatesForMap(Map const* map) const; + TC_GAME_API int32 GetValue(int32 worldStateId, Map const* map); + TC_GAME_API void SetValue(int32 worldStateId, int32 value, bool hidden, Map* map); + TC_GAME_API void SaveValueInDb(int32 worldStateId, int32 value); + TC_GAME_API void SetValueAndSaveInDb(int32 worldStateId, int32 value, bool hidden, Map* map); - void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& initWorldStates, Map const* map, uint32 playerAreaId) const; -}; + WorldStateValueContainer GetInitialWorldStatesForMap(Map const* map); -#define sWorldStateMgr WorldStateMgr::instance() + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& initWorldStates, Map const* map, uint32 playerAreaId); +}; #endif diff --git a/src/server/scripts/Battlefield/BattlefieldTB.cpp b/src/server/scripts/Battlefield/BattlefieldTB.cpp index fc08cee710df4..704bd05fbeea4 100644 --- a/src/server/scripts/Battlefield/BattlefieldTB.cpp +++ b/src/server/scripts/Battlefield/BattlefieldTB.cpp @@ -72,30 +72,30 @@ bool BattlefieldTB::SetupBattlefield() m_updateObjectsTimer = 0; // Was there a battle going on or time isn't set yet? Then use m_RestartAfterCrash - if (sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_STATE_BATTLE, m_Map) == 1 || sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_Map) < GameTime::GetGameTime()) + if (WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_STATE_BATTLE, m_Map) == 1 || WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_Map) < GameTime::GetGameTime()) { - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_STATE_BATTLE, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_RestartAfterCrash / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_STATE_BATTLE, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_RestartAfterCrash / IN_MILLISECONDS, false, m_Map); } // Set timer - m_Timer = sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_Map) - GameTime::GetGameTime(); + m_Timer = WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, m_Map) - GameTime::GetGameTime(); // Defending team isn't set yet? Choose randomly. - if (sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, m_Map) == 0) - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, uint32(urand(1, 2)), false, m_Map); + if (WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, m_Map) == 0) + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, uint32(urand(1, 2)), false, m_Map); // Set defender team - SetDefenderTeam(TeamId(sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, m_Map) - 1)); + SetDefenderTeam(TeamId(WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, m_Map) - 1)); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 1, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 1, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, GetDefenderTeam() + 1, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_ALLIANCE, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_HORDE, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, GetDefenderTeam() + 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_KEEP_ALLIANCE, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_KEEP_HORDE, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); // Create capture points for (uint8 i = 0; i < TB_BASE_COUNT; i++) @@ -106,13 +106,13 @@ bool BattlefieldTB::SetupBattlefield() std::unique_ptr controlZone = std::make_unique(this, TBCapturePoints[i]); if (GetDefenderTeam() == TEAM_ALLIANCE) { - sWorldStateMgr->SetValue(controlZone->GetWorldStateAllianceControlled(), 1, false, GetMap()); + WorldStateMgr::SetValue(controlZone->GetWorldStateAllianceControlled(), 1, false, GetMap()); go->HandleCustomTypeCommand(GameObjectType::SetControlZoneValue(100)); go->SetGoArtKit(TB_GO_ARTKIT_FLAG_ALLIANCE); } else if (GetDefenderTeam() == TEAM_HORDE) { - sWorldStateMgr->SetValue(controlZone->GetWorldStateHordeControlled(), 1, false, GetMap()); + WorldStateMgr::SetValue(controlZone->GetWorldStateHordeControlled(), 1, false, GetMap()); go->HandleCustomTypeCommand(GameObjectType::SetControlZoneValue(0)); go->SetGoArtKit(TB_GO_ARTKIT_FLAG_HORDE); } @@ -216,7 +216,7 @@ void BattlefieldTB::OnPlayerJoinWar(Player* player) // Bonus damage buff for attackers if (player->GetTeamId() == GetAttackerTeam()) { - int32 towersDestroyed = sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, m_Map); + int32 towersDestroyed = WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, m_Map); if (towersDestroyed > 0) player->CastSpell(player, SPELL_TOWER_ATTACK_BONUS, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, towersDestroyed)); } @@ -239,7 +239,7 @@ void BattlefieldTB::OnStartGrouping() { UpdateNPCsAndGameObjects(); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, 1, false, m_Map); // Teleport players out of questing area for (uint8 team = 0; team < PVP_TEAMS_COUNT; ++team) @@ -257,35 +257,35 @@ void BattlefieldTB::OnBattleStart() UpdateNPCsAndGameObjects(); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW, 1, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW, 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 0, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, GetAttackerTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, GetAttackerTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, GetAttackerTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW, 1, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW, 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, 0, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_STATE_BATTLE, 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_STATE_PREPARATIONS, 0, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_STATE_BATTLE, 1, false, m_Map); // Towers/spires for (uint8 i = 0; i < TB_TOWERS_COUNT; i++) { - sWorldStateMgr->SetValue(TBTowers[i].wsIntact[GetDefenderTeam()], 1, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[i].wsDamaged[GetDefenderTeam()], 0, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[i].wsDestroyed, 0, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[i].wsDamaged[GetAttackerTeam()], 0, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[i].wsIntact[GetAttackerTeam()], 0, false, m_Map); + WorldStateMgr::SetValue(TBTowers[i].wsIntact[GetDefenderTeam()], 1, false, m_Map); + WorldStateMgr::SetValue(TBTowers[i].wsDamaged[GetDefenderTeam()], 0, false, m_Map); + WorldStateMgr::SetValue(TBTowers[i].wsDestroyed, 0, false, m_Map); + WorldStateMgr::SetValue(TBTowers[i].wsDamaged[GetAttackerTeam()], 0, false, m_Map); + WorldStateMgr::SetValue(TBTowers[i].wsIntact[GetAttackerTeam()], 0, false, m_Map); } } @@ -323,24 +323,24 @@ void BattlefieldTB::OnBattleEnd(bool endByTimer) warnedTwoMinutes = false; warnedOneMinute = false; - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 1, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_NoWarBattleTime / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE_SHOW, 1, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_TIME_NEXT_BATTLE, GameTime::GetGameTime() + m_NoWarBattleTime / IN_MILLISECONDS, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_ALLIANCE_ATTACKING_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_HORDE_ATTACKING_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, GetDefenderTeam() + 1, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_ALLIANCE, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_KEEP_HORDE, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_FACTION_CONTROLLING, GetDefenderTeam() + 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_ALLIANCE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_HORDE_CONTROLS_SHOW, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_KEEP_ALLIANCE, GetDefenderTeam() == TEAM_ALLIANCE ? 1 : 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_KEEP_HORDE, GetDefenderTeam() == TEAM_HORDE ? 1 : 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED_SHOW, 0, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_TB_STATE_BATTLE, 0, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_TB_STATE_BATTLE, 0, false, m_Map); } void BattlefieldTB::UpdateNPCsAndGameObjects() @@ -399,13 +399,13 @@ void BattlefieldTB::UpdateNPCsAndGameObjects() std::unique_ptr controlZone = std::make_unique(this, TBCapturePoints[i]); if (GetDefenderTeam() == TEAM_ALLIANCE) { - sWorldStateMgr->SetValue(controlZone->GetWorldStateAllianceControlled(), 1, false, GetMap()); + WorldStateMgr::SetValue(controlZone->GetWorldStateAllianceControlled(), 1, false, GetMap()); go->HandleCustomTypeCommand(GameObjectType::SetControlZoneValue(100)); go->SetGoArtKit(TB_GO_ARTKIT_FLAG_ALLIANCE); } else if (GetDefenderTeam() == TEAM_HORDE) { - sWorldStateMgr->SetValue(controlZone->GetWorldStateHordeControlled(), 1, false, GetMap()); + WorldStateMgr::SetValue(controlZone->GetWorldStateHordeControlled(), 1, false, GetMap()); go->HandleCustomTypeCommand(GameObjectType::SetControlZoneValue(0)); go->SetGoArtKit(TB_GO_ARTKIT_FLAG_HORDE); } @@ -625,8 +625,8 @@ void BattlefieldTB::TowerDamaged(TBTowerId tbTowerId) SetData(BATTLEFIELD_TB_DATA_TOWERS_INTACT, GetData(BATTLEFIELD_TB_DATA_TOWERS_INTACT) - 1); - sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsIntact[GetDefenderTeam()], 0, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()], 1, false, m_Map); + WorldStateMgr::SetValue(TBTowers[tbTowerId].wsIntact[GetDefenderTeam()], 0, false, m_Map); + WorldStateMgr::SetValue(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()], 1, false, m_Map); TeamCastSpell(GetAttackerTeam(), SPELL_REWARD_TOWER_DAMAGED); } @@ -638,16 +638,16 @@ void BattlefieldTB::TowerDestroyed(TBTowerId tbTowerId) // Add 5 minute bonus time m_Timer += m_BonusTime; - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TIME_BATTLE_END, GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); SendWarning(TBTowers[tbTowerId].textDestroyed); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW, 1, false, m_Map); - int32 towersDestroyed = sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, m_Map) + 1; - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, towersDestroyed, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED_SHOW, 1, false, m_Map); + int32 towersDestroyed = WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, m_Map) + 1; + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_TOWERS_DESTROYED, towersDestroyed, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()], 0, false, m_Map); - sWorldStateMgr->SetValue(TBTowers[tbTowerId].wsDestroyed, 1, false, m_Map); + WorldStateMgr::SetValue(TBTowers[tbTowerId].wsDamaged[GetDefenderTeam()], 0, false, m_Map); + WorldStateMgr::SetValue(TBTowers[tbTowerId].wsDestroyed, 1, false, m_Map); // Attack bonus buff for (ObjectGuid const& guid : m_PlayersInWar[GetAttackerTeam()]) @@ -665,18 +665,18 @@ void BattlefieldTB::UpdateCapturedBaseCount() // these world states are either 0 or 1 if (GetAttackerTeam() == TEAM_ALLIANCE) { - numCapturedBases += sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_GARRISON_ALLIANCE_CONTROLLED, GetMap()); - numCapturedBases += sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_VIGIL_ALLIANCE_CONTROLLED, GetMap()); - numCapturedBases += sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_SLAGWORKS_ALLIANCE_CONTROLLED, GetMap()); + numCapturedBases += WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_GARRISON_ALLIANCE_CONTROLLED, GetMap()); + numCapturedBases += WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_VIGIL_ALLIANCE_CONTROLLED, GetMap()); + numCapturedBases += WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_SLAGWORKS_ALLIANCE_CONTROLLED, GetMap()); } else if (GetAttackerTeam() == TEAM_HORDE) { - numCapturedBases += sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_GARRISON_HORDE_CONTROLLED, GetMap()); - numCapturedBases += sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_VIGIL_HORDE_CONTROLLED, GetMap()); - numCapturedBases += sWorldStateMgr->GetValue(WS_BATTLEFIELD_TB_SLAGWORKS_HORDE_CONTROLLED, GetMap()); + numCapturedBases += WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_GARRISON_HORDE_CONTROLLED, GetMap()); + numCapturedBases += WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_VIGIL_HORDE_CONTROLLED, GetMap()); + numCapturedBases += WorldStateMgr::GetValue(WS_BATTLEFIELD_TB_SLAGWORKS_HORDE_CONTROLLED, GetMap()); } - sWorldStateMgr->SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, numCapturedBases, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_TB_BUILDINGS_CAPTURED, numCapturedBases, false, m_Map); // Check if attackers won if (numCapturedBases == TB_BASE_COUNT) @@ -728,8 +728,8 @@ void TolBaradCapturePoint::HandleProgressEventHorde(GameObject* controlZone) BattlefieldControlZoneHandler::HandleProgressEventHorde(controlZone); GetBattlefield()->SendWarning(_textIdHordeCaptured); controlZone->SetGoArtKit(TB_GO_ARTKIT_FLAG_HORDE); - sWorldStateMgr->SetValue(_worldstateHordeControlled, 1, false, controlZone->GetMap()); - sWorldStateMgr->SetValue(_worldstateHordeCapturing, 0, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateHordeControlled, 1, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateHordeCapturing, 0, false, controlZone->GetMap()); GetBattlefield()->ProcessEvent(nullptr, EVENT_COUNT_CAPTURED_BASE, nullptr); } @@ -738,24 +738,24 @@ void TolBaradCapturePoint::HandleProgressEventAlliance(GameObject* controlZone) BattlefieldControlZoneHandler::HandleProgressEventAlliance(controlZone); GetBattlefield()->SendWarning(_textIdAllianceCaptured); controlZone->SetGoArtKit(TB_GO_ARTKIT_FLAG_ALLIANCE); - sWorldStateMgr->SetValue(_worldstateAllianceControlled, 1, false, controlZone->GetMap()); - sWorldStateMgr->SetValue(_worldstateAllianceCapturing, 0, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateAllianceControlled, 1, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateAllianceCapturing, 0, false, controlZone->GetMap()); GetBattlefield()->ProcessEvent(nullptr, EVENT_COUNT_CAPTURED_BASE, nullptr); } void TolBaradCapturePoint::HandleNeutralEventHorde(GameObject* controlZone) { GetBattlefield()->SendWarning(_textIdHordeLost); - sWorldStateMgr->SetValue(_worldstateHordeControlled, 0, false, controlZone->GetMap()); - sWorldStateMgr->SetValue(_worldstateAllianceCapturing, 1, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateHordeControlled, 0, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateAllianceCapturing, 1, false, controlZone->GetMap()); BattlefieldControlZoneHandler::HandleNeutralEventHorde(controlZone); } void TolBaradCapturePoint::HandleNeutralEventAlliance(GameObject* controlZone) { GetBattlefield()->SendWarning(_textIdAllianceLost); - sWorldStateMgr->SetValue(_worldstateAllianceControlled, 0, false, controlZone->GetMap()); - sWorldStateMgr->SetValue(_worldstateHordeCapturing, 1, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateAllianceControlled, 0, false, controlZone->GetMap()); + WorldStateMgr::SetValue(_worldstateHordeCapturing, 1, false, controlZone->GetMap()); BattlefieldControlZoneHandler::HandleNeutralEventAlliance(controlZone); } diff --git a/src/server/scripts/Battlefield/BattlefieldWG.cpp b/src/server/scripts/Battlefield/BattlefieldWG.cpp index a44916c10ec02..735a4675381e4 100644 --- a/src/server/scripts/Battlefield/BattlefieldWG.cpp +++ b/src/server/scripts/Battlefield/BattlefieldWG.cpp @@ -439,26 +439,26 @@ bool BattlefieldWG::SetupBattlefield() SetGraveyardNumber(BATTLEFIELD_WG_GRAVEYARD_MAX); // Load from db - if (sWorldStateMgr->GetValue(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, m_Map) == 0 - && sWorldStateMgr->GetValue(ClockWorldState[0], m_Map) < GameTime::GetGameTime()) + if (WorldStateMgr::GetValue(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, m_Map) == 0 + && WorldStateMgr::GetValue(ClockWorldState[0], m_Map) < GameTime::GetGameTime()) { - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 0, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_WG_DEFENDER, urand(0, 1), false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(ClockWorldState[0], GameTime::GetGameTime() + m_NoWarBattleTime / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 0, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_WG_DEFENDER, urand(0, 1), false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(ClockWorldState[0], GameTime::GetGameTime() + m_NoWarBattleTime / IN_MILLISECONDS, false, m_Map); } - m_isActive = sWorldStateMgr->GetValue(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, m_Map) == 0; - m_DefenderTeam = TeamId(sWorldStateMgr->GetValue(WS_BATTLEFIELD_WG_DEFENDER, m_Map)); + m_isActive = WorldStateMgr::GetValue(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, m_Map) == 0; + m_DefenderTeam = TeamId(WorldStateMgr::GetValue(WS_BATTLEFIELD_WG_DEFENDER, m_Map)); - m_Timer = sWorldStateMgr->GetValue(ClockWorldState[0], m_Map) - GameTime::GetGameTime(); + m_Timer = WorldStateMgr::GetValue(ClockWorldState[0], m_Map) - GameTime::GetGameTime(); if (m_isActive) { m_isActive = false; m_Timer = m_RestartAfterCrash; } - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam(), false, m_Map); - sWorldStateMgr->SetValue(ClockWorldState[1], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam(), false, m_Map); + WorldStateMgr::SetValue(ClockWorldState[1], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); for (uint8 i = 0; i < BATTLEFIELD_WG_GRAVEYARD_MAX; i++) { @@ -549,11 +549,11 @@ void BattlefieldWG::OnBattleStart() else TC_LOG_ERROR("bg.battlefield", "WG: Failed to spawn titan relic."); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam(), false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_WG_DEFENDER, GetDefenderTeam(), false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 0, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END, 1, false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_ATTACKER, GetAttackerTeam(), false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_WG_DEFENDER, GetDefenderTeam(), false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 0, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END, 1, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); // Update tower visibility and update faction for (auto itr = CanonList.begin(); itr != CanonList.end(); ++itr) @@ -647,13 +647,13 @@ void BattlefieldWG::OnBattleEnd(bool endByTimer) else worldStateId = GetDefenderTeam() == TEAM_HORDE ? WS_BATTLEFIELD_WG_ATTACKED_H : WS_BATTLEFIELD_WG_ATTACKED_A; - sWorldStateMgr->SetValueAndSaveInDb(worldStateId, sWorldStateMgr->GetValue(worldStateId, m_Map) + 1, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(worldStateId, WorldStateMgr::GetValue(worldStateId, m_Map) + 1, false, m_Map); } - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_WG_DEFENDER, GetDefenderTeam(), false, m_Map); - sWorldStateMgr->SetValueAndSaveInDb(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 1, false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END, 0, false, m_Map); - sWorldStateMgr->SetValue(ClockWorldState[1], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_WG_DEFENDER, GetDefenderTeam(), false, m_Map); + WorldStateMgr::SetValueAndSaveInDb(WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE, 1, false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END, 0, false, m_Map); + WorldStateMgr::SetValue(ClockWorldState[1], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); // Remove turret for (auto itr = CanonList.begin(); itr != CanonList.end(); ++itr) @@ -1182,7 +1182,7 @@ void BattlefieldWG::UpdatedDestroyedTowerCount(TeamId team) else m_Timer -= 600000; - sWorldStateMgr->SetValue(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); + WorldStateMgr::SetValue(ClockWorldState[0], GameTime::GetGameTime() + m_Timer / IN_MILLISECONDS, false, m_Map); } } else // Keep tower @@ -1241,10 +1241,10 @@ void BattlefieldWG::UpdateDamagedTowerCount(TeamId team) // Update vehicle count WorldState to player void BattlefieldWG::UpdateVehicleCountWG() { - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_VEHICLE_H), false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_MAX_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H), false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_VEHICLE_A), false, m_Map); - sWorldStateMgr->SetValue(WS_BATTLEFIELD_WG_MAX_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A), false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_VEHICLE_H), false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_MAX_VEHICLE_H, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_H), false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_VEHICLE_A), false, m_Map); + WorldStateMgr::SetValue(WS_BATTLEFIELD_WG_MAX_VEHICLE_A, GetData(BATTLEFIELD_WG_DATA_MAX_VEHICLE_A), false, m_Map); } void BattlefieldWG::UpdateTenacity() @@ -1397,7 +1397,7 @@ void BfWGGameObjectBuilding::Rebuild() // Update worldstate _state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT - (_teamControl * 3)); - sWorldStateMgr->SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); + WorldStateMgr::SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); } UpdateCreatureAndGo(); build->SetFaction(WintergraspFaction[_teamControl]); @@ -1420,7 +1420,7 @@ void BfWGGameObjectBuilding::Damaged() { // Update worldstate _state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE - (_teamControl * 3)); - sWorldStateMgr->SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); + WorldStateMgr::SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); // Send warning message if (_staticTowerInfo) @@ -1444,7 +1444,7 @@ void BfWGGameObjectBuilding::Destroyed() { // Update worldstate _state = WintergraspGameObjectState(BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY - (_teamControl * 3)); - sWorldStateMgr->SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); + WorldStateMgr::SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); // Warn players if (_staticTowerInfo) @@ -1498,7 +1498,7 @@ void BfWGGameObjectBuilding::Init(GameObject* go) break; } - _state = WintergraspGameObjectState(sWorldStateMgr->GetValue(_worldState, _wg->GetMap())); + _state = WintergraspGameObjectState(WorldStateMgr::GetValue(_worldState, _wg->GetMap())); if (_state == BATTLEFIELD_WG_OBJECTSTATE_NONE) { // set to default state based on type @@ -1516,7 +1516,7 @@ void BfWGGameObjectBuilding::Init(GameObject* go) default: break; } - sWorldStateMgr->SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); + WorldStateMgr::SetValueAndSaveInDb(_worldState, _state, false, _wg->GetMap()); } switch (_state) @@ -1766,7 +1766,7 @@ void WintergraspWorkshop::GiveControlTo(TeamId teamId, bool init /*= false*/) { // Updating worldstate _state = BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT; - sWorldStateMgr->SetValueAndSaveInDb(_staticInfo->WorldStateId, _state, false, _wg->GetMap()); + WorldStateMgr::SetValueAndSaveInDb(_staticInfo->WorldStateId, _state, false, _wg->GetMap()); // Warning message if (!init) @@ -1784,7 +1784,7 @@ void WintergraspWorkshop::GiveControlTo(TeamId teamId, bool init /*= false*/) { // Update worldstate _state = BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT; - sWorldStateMgr->SetValueAndSaveInDb(_staticInfo->WorldStateId, _state, false, _wg->GetMap()); + WorldStateMgr::SetValueAndSaveInDb(_staticInfo->WorldStateId, _state, false, _wg->GetMap()); // Warning message if (!init) diff --git a/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp b/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp index 309e4cd7692e9..f2b8030a4e725 100644 --- a/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp +++ b/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp @@ -364,18 +364,18 @@ class at_ioc_backdoor_job : public AreaTriggerScript /// @hack: this spell should be cast by npc 22515 (World Trigger) and not by the player if (player->GetBGTeam() == HORDE && trigger->ID == AT_ALLIANCE_KEEP) { - bool keepClosed = sWorldStateMgr->GetValue(BG_IC_GATE_EAST_A_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_WEST_A_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_FRONT_A_WS_CLOSED, player->GetMap()) == 1; + bool keepClosed = WorldStateMgr::GetValue(BG_IC_GATE_EAST_A_WS_CLOSED, player->GetMap()) == 1 + && WorldStateMgr::GetValue(BG_IC_GATE_WEST_A_WS_CLOSED, player->GetMap()) == 1 + && WorldStateMgr::GetValue(BG_IC_GATE_FRONT_A_WS_CLOSED, player->GetMap()) == 1; if (keepClosed) player->CastSpell(player, SPELL_BACK_DOOR_JOB_ACHIEVEMENT, true); } else if (player->GetBGTeam() == ALLIANCE && trigger->ID == AT_HORDE_KEEP) { - bool keepClosed = sWorldStateMgr->GetValue(BG_IC_GATE_EAST_H_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_WEST_H_WS_CLOSED, player->GetMap()) == 1 - && sWorldStateMgr->GetValue(BG_IC_GATE_FRONT_H_WS_CLOSED, player->GetMap()) == 1; + bool keepClosed = WorldStateMgr::GetValue(BG_IC_GATE_EAST_H_WS_CLOSED, player->GetMap()) == 1 + && WorldStateMgr::GetValue(BG_IC_GATE_WEST_H_WS_CLOSED, player->GetMap()) == 1 + && WorldStateMgr::GetValue(BG_IC_GATE_FRONT_H_WS_CLOSED, player->GetMap()) == 1; if (keepClosed) player->CastSpell(player, SPELL_BACK_DOOR_JOB_ACHIEVEMENT, true); diff --git a/src/server/scripts/Battlegrounds/StrandOfTheAncients/battleground_strand_of_the_ancients.cpp b/src/server/scripts/Battlegrounds/StrandOfTheAncients/battleground_strand_of_the_ancients.cpp index 9cefe03b553e5..60f9292fdd9ab 100644 --- a/src/server/scripts/Battlegrounds/StrandOfTheAncients/battleground_strand_of_the_ancients.cpp +++ b/src/server/scripts/Battlegrounds/StrandOfTheAncients/battleground_strand_of_the_ancients.cpp @@ -687,7 +687,7 @@ struct battleground_strand_of_the_ancients : BattlegroundScript if (Player* killerPlayer = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) battleground->UpdatePvpStat(killerPlayer, PVP_STAT_DEMOLISHERS_DESTROYED, 1); int32 worldStateId = _attackers == TEAM_HORDE ? BG_SA_DESTROYED_HORDE_VEHICLES : BG_SA_DESTROYED_ALLIANCE_VEHICLES; - int32 currentDestroyedVehicles = sWorldStateMgr->GetValue(worldStateId, battlegroundMap); + int32 currentDestroyedVehicles = WorldStateMgr::GetValue(worldStateId, battlegroundMap); UpdateWorldState(worldStateId, currentDestroyedVehicles + 1); } } diff --git a/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp b/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp index db1f854367e9d..46675b8d666b0 100644 --- a/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp +++ b/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp @@ -401,7 +401,7 @@ struct battleground_temple_of_kotmogu final : BattlegroundScript bool CheckWinner() const { - uint32 const maxScore = sWorldStateMgr->GetValue(TempleOfKotmogu::WorldStates::MaxPoints, battlegroundMap); + uint32 const maxScore = WorldStateMgr::GetValue(TempleOfKotmogu::WorldStates::MaxPoints, battlegroundMap); if (battleground->GetTeamScore(TEAM_HORDE) == maxScore && battleground->GetTeamScore(TEAM_ALLIANCE) == maxScore) { UpdateWorldState(TempleOfKotmogu::WorldStates::AlliancePoints, maxScore); @@ -529,15 +529,15 @@ class spell_bg_temple_of_kotmogu_victory_points_periodic : public SpellScript if (!bg) return; - uint32 const maxScore = sWorldStateMgr->GetValue(TempleOfKotmogu::WorldStates::MaxPoints, player->GetMap()); + uint32 const maxScore = WorldStateMgr::GetValue(TempleOfKotmogu::WorldStates::MaxPoints, player->GetMap()); bg->UpdatePvpStat(player, TempleOfKotmogu::PvpStats::VictoryPoints, Points); Team const team = player->GetBGTeam(); uint32 const score = bg->GetTeamScore(GetTeamIdForTeam(team)); int32 const amount = std::min(maxScore, score + Points); bg->SetTeamPoint(team, amount); - sWorldStateMgr->SetValue(TempleOfKotmogu::WorldStates::AlliancePoints, bg->GetTeamScore(TEAM_ALLIANCE), false, player->GetMap()); - sWorldStateMgr->SetValue(TempleOfKotmogu::WorldStates::HordePoints, bg->GetTeamScore(TEAM_HORDE), false, player->GetMap()); + WorldStateMgr::SetValue(TempleOfKotmogu::WorldStates::AlliancePoints, bg->GetTeamScore(TEAM_ALLIANCE), false, player->GetMap()); + WorldStateMgr::SetValue(TempleOfKotmogu::WorldStates::HordePoints, bg->GetTeamScore(TEAM_HORDE), false, player->GetMap()); } void Register() override diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 43b919475a04c..063d0699f17f3 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -54,6 +54,7 @@ EndScriptData */ #include "Transport.h" #include "World.h" #include "WorldSession.h" +#include "WorldStateMgr.h" #include #include #include @@ -514,10 +515,9 @@ class debug_commandscript : public CommandScript return true; } - static bool HandleDebugUpdateWorldStateCommand(ChatHandler* handler, uint32 variable, uint32 value) + static bool HandleDebugUpdateWorldStateCommand(ChatHandler const* handler, int32 variable, int32 value) { - Map* map = handler->GetPlayer()->GetMap(); - map->SetWorldStateValue(variable, value, false); + WorldStateMgr::SetValue(variable, value, false, handler->GetPlayer()->GetMap()); return true; } diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index e692b73ef99ca..24d160311b8bc 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -342,9 +342,9 @@ class npc_highlord_darion_mograine : public CreatureScript me->Mount(25279); me->SetVisible(true); - sWorldStateMgr->SetValue(WORLD_STATE_SHOW_FORCES_REMAINING, 0, false, me->GetMap()); - //sWorldStateMgr->SetValue(WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE, 0, false, me->GetMap()); - sWorldStateMgr->SetValue(WORLD_STATE_BATTLE_IN_PROGRESS, 0, false, me->GetMap()); + WorldStateMgr::SetValue(WORLD_STATE_SHOW_FORCES_REMAINING, 0, false, me->GetMap()); + //WorldStateMgr::SetValue(WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE, 0, false, me->GetMap()); + WorldStateMgr::SetValue(WORLD_STATE_BATTLE_IN_PROGRESS, 0, false, me->GetMap()); if (Creature* temp = ObjectAccessor::GetCreature(*me, uiTirionGUID)) temp->setDeathState(JUST_DIED); @@ -582,13 +582,13 @@ class npc_highlord_darion_mograine : public CreatureScript switch (uiStep) { case 0: // countdown - //sWorldStateMgr->SetValue(WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE, 1, false, me->GetMap()); + //WorldStateMgr::SetValue(WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE, 1, false, me->GetMap()); break; case 1: // just delay - //sWorldStateMgr->SetValue(WORLD_STATE_SHOW_FORCES_REMAINING, 1, false, me->GetMap()); - sWorldStateMgr->SetValue(WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE, 0, false, me->GetMap()); - sWorldStateMgr->SetValue(WORLD_STATE_BATTLE_IN_PROGRESS, 1, false, me->GetMap()); + //WorldStateMgr::SetValue(WORLD_STATE_SHOW_FORCES_REMAINING, 1, false, me->GetMap()); + WorldStateMgr::SetValue(WORLD_STATE_SHOW_MINUTES_UNTIL_BATTLE, 0, false, me->GetMap()); + WorldStateMgr::SetValue(WORLD_STATE_BATTLE_IN_PROGRESS, 1, false, me->GetMap()); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); JumpToNextStep(3000); break; diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp index e0c2eb2b22795..3106cfffdd5ad 100644 --- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp +++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp @@ -4329,7 +4329,7 @@ struct npc_geolord_grekog : public ScriptedAI { uint32 prisonerEntry = NPC_LINDIE_SPRINGSTOCK; - if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_HORDE, me->GetMap()) == 1) + if (WorldStateMgr::GetValue(WS_TEAM_IN_INSTANCE_HORDE, me->GetMap()) == 1) prisonerEntry = NPC_CORK_FIZZLEPOP; Creature* bunny = me->FindNearestCreatureWithOptions(25.0f, { .CreatureId = NPC_INVIS_BUNNY_GEOLORD, .IgnorePhases = true }); diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index ac9d427ac1c8e..358a6df294695 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -4626,10 +4626,10 @@ class spell_gen_war_mode_enlisted : public AuraScript switch (target->GetTeamId()) { case TEAM_ALLIANCE: - amount = sWorldStateMgr->GetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, target->GetMap()); + amount = WorldStateMgr::GetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, target->GetMap()); break; case TEAM_HORDE: - amount = sWorldStateMgr->GetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, target->GetMap()); + amount = WorldStateMgr::GetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, target->GetMap()); break; default: break; From 9e7661314ffbb2d5a93ac22386449bc60b034629 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 1 Apr 2026 18:14:58 +0200 Subject: [PATCH 023/175] Core/Spells: Suppress a few float/double/int conversion warnings in Player::GetSpellModValues --- src/server/game/Entities/Player/Player.cpp | 38 +++++++++------------- src/server/game/Entities/Player/Player.h | 5 ++- src/server/game/Spells/SpellInfo.cpp | 2 +- src/server/game/Spells/SpellInfo.h | 2 +- 4 files changed, 20 insertions(+), 27 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e21f0c81bcf7c..518289d5f057c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22623,7 +22623,7 @@ void Player::SendRemoveControlBar() const SendDirectMessage(packet.Write()); } -uint32 Player::IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier const* mod, Spell const* spell) +int32 Player::IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier const* mod, Spell const* spell) { if (!mod || !spellInfo) return 0; @@ -22670,8 +22670,7 @@ uint32 Player::IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier co return spellInfo->IsAffectedBySpellMod(mod); } -template -void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, T base, int32* flat, float* pct) const +void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, double base, int32* flat, float* pct) const { ASSERT(flat && pct); @@ -22735,7 +22734,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (!IsAffectedBySpellmod(spellInfo, mod, spell)) continue; - if (base < T(10000) && static_cast(mod)->value <= -100) + if (base < 10000.0 && static_cast(mod)->value <= -100) { modInstantSpell = mod; break; @@ -22749,7 +22748,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (!IsAffectedBySpellmod(spellInfo, mod, spell)) continue; - if (base < T(10000) && static_cast(mod)->value.ModifierValue <= -1.0f) + if (base < 10000.0 && static_cast(mod)->value.ModifierValue <= -1.0f) { modInstantSpell = mod; break; @@ -22810,7 +22809,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* for (SpellModifier* mod : spellModTypeRange(SPELLMOD_FLAT)) { - uint32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); + int32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); if (!applyCount) continue; @@ -22824,7 +22823,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* for (SpellModifier* mod : spellModTypeRange(SPELLMOD_LABEL_FLAT)) { - uint32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); + int32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); if (!applyCount) continue; @@ -22838,12 +22837,12 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* for (SpellModifier* mod : spellModTypeRange(SPELLMOD_PCT)) { - uint32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); + int32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); if (!applyCount) continue; // skip percent mods for null basevalue (most important for spell mods with charges) - if (base + *flat == T(0)) + if (base + *flat == 0) continue; int32 value = static_cast(mod)->value; @@ -22853,22 +22852,22 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* // special case (skip > 10sec spell casts for instant cast setting) if (op == SpellModOp::ChangeCastTime) { - if (base >= T(10000) && value <= -100) + if (base >= 10000.0 && value <= -100) continue; } - *pct *= std::pow(1.0f + CalculatePct(1.0f, value), applyCount); + *pct *= std::pow(1.0f + CalculatePct(1.0f, value), float(applyCount)); Player::ApplyModToSpell(mod, spell); } for (SpellModifier* mod : spellModTypeRange(SPELLMOD_LABEL_PCT)) { - uint32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); + int32 applyCount = IsAffectedBySpellmod(spellInfo, mod, spell); if (!applyCount) continue; // skip percent mods for null basevalue (most important for spell mods with charges) - if (base + *flat == T(0)) + if (base + *flat == 0) continue; float value = static_cast(mod)->value.ModifierValue; @@ -22878,29 +22877,24 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* // special case (skip > 10sec spell casts for instant cast setting) if (op == SpellModOp::ChangeCastTime) { - if (base >= T(10000) && value <= -1.0f) + if (base >= 10000.0 && value <= -1.0f) continue; } - *pct *= std::pow(value, applyCount); + *pct *= std::pow(value, float(applyCount)); Player::ApplyModToSpell(mod, spell); } } -template TC_GAME_API void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, int32 base, int32* flat, float* pct) const; -template TC_GAME_API void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, uint32 base, int32* flat, float* pct) const; -template TC_GAME_API void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, float base, int32* flat, float* pct) const; -template TC_GAME_API void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, double base, int32* flat, float* pct) const; - template void Player::ApplySpellMod(SpellInfo const* spellInfo, SpellModOp op, T& basevalue, Spell* spell /*= nullptr*/) const { float totalmul = 1.0f; int32 totalflat = 0; - GetSpellModValues(spellInfo, op, spell, basevalue, &totalflat, &totalmul); + this->GetSpellModValues(spellInfo, op, spell, basevalue, &totalflat, &totalmul); - basevalue = T(double(basevalue + totalflat) * totalmul); + basevalue = T((double(basevalue) + totalflat) * totalmul); } template TC_GAME_API void Player::ApplySpellMod(SpellInfo const* spellInfo, SpellModOp op, int32& basevalue, Spell* spell) const; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index f51d91271a91f..14a4c49cbce35 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2026,9 +2026,8 @@ class TC_GAME_API Player final : public Unit, public GridObject PlayerSpellMap & GetSpellMap() { return m_spells; } void AddSpellMod(SpellModifier* mod, bool apply); - static uint32 IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier const* mod, Spell const* spell = nullptr); - template - void GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, T base, int32* flat, float* pct) const; + static int32 IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier const* mod, Spell const* spell = nullptr); + void GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* spell, double base, int32* flat, float* pct) const; template void ApplySpellMod(SpellInfo const* spellInfo, SpellModOp op, T& basevalue, Spell* spell = nullptr) const; static void ApplyModToSpell(SpellModifier* mod, Spell* spell); diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index ef683fd79a252..36d122984f3b1 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1949,7 +1949,7 @@ bool SpellInfo::IsAffectedBySpellMods() const return !HasAttribute(SPELL_ATTR3_IGNORE_CASTER_MODIFIERS); } -uint32 SpellInfo::IsAffectedBySpellMod(SpellModifier const* mod) const +int32 SpellInfo::IsAffectedBySpellMod(SpellModifier const* mod) const { SpellInfo const* affectSpell = sSpellMgr->GetSpellInfo(mod->spellId, Difficulty); if (!affectSpell) diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 49f99212db7f0..aedf82f9e9624 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -521,7 +521,7 @@ class TC_GAME_API SpellInfo bool IsAffected(uint32 familyName, flag128 const& familyFlags) const; bool IsAffectedBySpellMods() const; - uint32 IsAffectedBySpellMod(SpellModifier const* mod) const; + int32 IsAffectedBySpellMod(SpellModifier const* mod) const; bool IsUpdatingTemporaryAuraValuesBySpellMod() const; bool CanPierceImmuneAura(SpellInfo const* auraSpellInfo) const; From 94088a3192060d43719887c6db1974cb1d17dd62 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 2 Apr 2026 18:45:43 +0200 Subject: [PATCH 024/175] Core/Players: Define new CharacterFlags4 --- src/server/game/Miscellaneous/SharedDefines.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 69d0b5342c363..1571d4ee386b4 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1217,6 +1217,10 @@ enum CharacterFlags4 : int32 CHARACTER_FLAG_4_NO_NEIGHBORHOOD_INVITES = 0x00000080, // Character does not accept neighborhood invites CHARACTER_FLAG_4_CHECKED_FOR_2ND_WAVE_ACCOUNT_WIDE_FACTIONS = 0x00000100, // Character has been checked for 2nd wave of account wide factions CHARACTER_FLAG_4_WILL_BE_RESURRECTED_IN_HARDCORE = 0x00000200, // Character will be resurrected overriding hardcore game rule + CHARACTER_FLAG_4_USED_MAX_LEVEL_BOOST = 0x00000400, // Character used a max level boost and cannot use it again + CHARACTER_FLAG_4_DISALLOW_RECENT_ALLIES_TO_SEE_LOCATION = 0x00000800, // Other players cannot see your character's location if you are in their Recent Allies list + CHARACTER_FLAG_4_HAS_ARATHI_RPE = 0x00001000, // Character is granted the Arathi teleport option at selection (removed after entering world) + CHARACTER_FLAG_4_FREE_TRANSMOG_CLAIMED = 0x00002000, // Character has used their first discounted transmog transaction }; enum CharacterRestrictionFlags : uint32 From ed715222819c36910a0bbe99afa7b19b8560a72e Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Fri, 3 Apr 2026 01:11:47 +0200 Subject: [PATCH 025/175] Scripts/Darkflame Cleft: Implement The Candle King encounter (#31701) --- .../world/master/2026_04_03_00_world.sql | 98 ++++ src/server/game/Spells/SpellMgr.cpp | 25 + .../DarkflameCleft/boss_the_candle_king.cpp | 529 ++++++++++++++++++ .../DarkflameCleft/darkflame_cleft.h | 54 ++ .../instance_darkflame_cleft.cpp | 70 +++ .../KhazAlgar/khaz_algar_script_loader.cpp | 8 + 6 files changed, 784 insertions(+) create mode 100644 sql/updates/world/master/2026_04_03_00_world.sql create mode 100644 src/server/scripts/KhazAlgar/DarkflameCleft/boss_the_candle_king.cpp create mode 100644 src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h create mode 100644 src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp diff --git a/sql/updates/world/master/2026_04_03_00_world.sql b/sql/updates/world/master/2026_04_03_00_world.sql new file mode 100644 index 0000000000000..2c244f05d803a --- /dev/null +++ b/sql/updates/world/master/2026_04_03_00_world.sql @@ -0,0 +1,98 @@ +-- Instance +DELETE FROM `instance_template` WHERE `map`=2651; +INSERT INTO `instance_template` (`map`, `parent`, `script`) VALUES +(2651, 0, 'instance_darkflame_cleft'); + +-- Areatriggers +DELETE FROM `areatrigger_create_properties` WHERE (`IsCustom`=0 AND `Id` IN (29999, 29904, 29906)); +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Speed`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(29999, 0, 33619, 0, 4, 0, 0, 0, 0, -1, 0, 82, NULL, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 'at_the_candle_king_cursed_wax', 59679), -- Spell: 421648 (Cursed Wax) +(29904, 0, 33535, 0, 6, 0, 69049, 0, 0, -1, 0, 0, NULL, 60000, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 'at_the_candle_king_molten_wax', 59679), -- Spell: 420691 (Molten Wax) +(29906, 0, 33535, 0, 6, 0, 69050, 0, 0, -1, 0, 0, NULL, 45000, 0, 0, 1.5, 1.5, 0, 0, 0, 0, 0, 0, 'at_the_candle_king_molten_wax', 59679); -- Spell: 420963 (Molten Wax) + +DELETE FROM `areatrigger_template` WHERE (`IsCustom`=0 AND `Id` IN (33535, 33619)); +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `VerifiedBuild`) VALUES +(33535, 0, 59679), +(33619, 0, 59679); + +-- Custom AT +DELETE FROM `areatrigger` WHERE `SpawnId`=888888; +INSERT INTO `areatrigger` (`SpawnId`, `AreaTriggerCreatePropertiesId`, `IsCustom`, `MapId`, `SpawnDifficulties`, `PosX`, `PosY`, `PosZ`, `Orientation`, `PhaseUseFlags`, `PhaseId`, `PhaseGroup`, `ScriptName`, `Comment`, `VerifiedBuild`) VALUES +(888888, 888888, 1, 2651, '1,2,8,23', 119.2231, -154.7091, 73.8308, 3.152349, 0, 0, 0, '', 'Darkflame Cleft - The Candle King encounter - Candlelight', 66192); + +DELETE FROM `areatrigger_create_properties` WHERE `Id`=888888 AND `IsCustom`=1; +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Speed`, `SpeedIsTime`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(888888, 1, 888888, 1, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 0, 0, 1, 32, 50, 5, 32, 50, 5, 0, 0, 'at_the_candle_king_candlelight', 0); + +DELETE FROM `areatrigger_template` WHERE `Id`=888888 AND `IsCustom`=1; +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `ActionSetId`, `ActionSetFlags`, `VerifiedBuild`) VALUES +(888888, 1, 1, 0, 0, 0); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (421153, 421156, 420919); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 421153, 0, 0, 51, 0, 5, 209603, 0, '', 0, 0, 0, '', 'Spell \'Candleburn\' can only hit \'Wax Statue\''), +(13, 1, 421156, 0, 0, 51, 0, 5, 209791, 0, '', 0, 0, 0, '', 'Spell \'Candleburn\' can only hit \'Wax Chunk\''), +(13, 1, 420919, 0, 0, 51, 0, 6, 0, 0, '', 0, 0, 0, '', 'Spell \'Eerie Molds\' can only hit player'); + +-- Spells +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_the_candle_king_throw_darkflame_selector', 'spell_the_candle_king_throw_darkflame_missile', 'spell_the_candle_king_eerie_molds_clone_summoner', 'spell_the_candle_king_eerie_molds_selector', 'spell_the_candle_king_cursed_wax', 'spell_the_candle_king_darkflame_pickaxe_selector', +'spell_the_candle_king_darkflame_pickaxe_cast'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(420677, 'spell_the_candle_king_eerie_molds_clone_summoner'), +(420659, 'spell_the_candle_king_eerie_molds_selector'), +(422079, 'spell_the_candle_king_cursed_wax'), +(421274, 'spell_the_candle_king_darkflame_pickaxe_selector'), +(421277, 'spell_the_candle_king_darkflame_pickaxe_cast'), +(420696, 'spell_the_candle_king_throw_darkflame_selector'), +(421250, 'spell_the_candle_king_throw_darkflame_missile'); + +-- Creature +DELETE FROM `creature_template_addon` WHERE `entry` IN (209791, 209603); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(209791, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, ''), -- 209791 (Wax Chunk) +(209603, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, ''); -- 209603 (Wax Statue) + +DELETE FROM `creature_template_difficulty` WHERE (`DifficultyID`=23 AND `Entry` IN (208745, 209791, 209603)); +INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `LevelScalingDeltaMin`, `LevelScalingDeltaMax`, `ContentTuningID`, `StaticFlags1`, `StaticFlags2`, `StaticFlags3`, `StaticFlags4`, `StaticFlags5`, `StaticFlags6`, `StaticFlags7`, `StaticFlags8`, `VerifiedBuild`) VALUES +(208745, 23, 2, 2, 1279, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 59679), -- 208745 (The Candle King) - CanSwim +(209791, 23, 0, 0, 1279, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 59679), -- 209791 (Wax Chunk) - +(209603, 23, 0, 0, 1279, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 59679); -- 209603 (Wax Statue) - + +UPDATE `creature_template_difficulty` SET `HealthScalingExpansion`=10 WHERE (`Entry`=209791 AND `DifficultyID`=0); -- Wax Chunk +UPDATE `creature_template_difficulty` SET `HealthScalingExpansion`=10 WHERE (`Entry`=209603 AND `DifficultyID`=0); -- Wax Statue + +UPDATE `creature_template` SET `ScriptName` = 'boss_the_candle_king' WHERE `entry`=208745; +UPDATE `creature_template` SET `faction`=35, `speed_walk`=0.400000005960464477, `speed_run`=0.142857149243354797, `BaseAttackTime`=1500, `unit_flags`=0x2000300, `unit_flags3`=0x1080001, `AIName`='SmartAI' WHERE `entry`=209791; -- Wax Chunk +UPDATE `creature_template` SET `faction`=35, `speed_walk`=0.400000005960464477, `speed_run`=0.142857149243354797, `BaseAttackTime`=1500, `unit_flags`=0x2000300, `unit_flags3`=0x1080001, `AIName`='SmartAI' WHERE `entry`=209603; -- Wax Statue + +-- Texts +DELETE FROM `creature_text` WHERE `CreatureID`=208745; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(208745, 0, 0, 'You. No. Take. CANDLE!', 14, 0, 100, 0, 0, 247825, 262503, 0, 'The Candle King'), +(208745, 1, 0, 'I mold you now!', 14, 0, 33, 0, 0, 247831, 262509, 0, 'The Candle King'), +(208745, 1, 1, 'I make you candle!', 14, 0, 33, 0, 0, 247829, 262507, 0, 'The Candle King'), +(208745, 1, 2, 'Wax and ruin!', 14, 0, 33, 0, 0, 247830, 262508, 0, 'The Candle King'), +(208745, 2, 0, '|TInterface\\Icons\\INV_Shadowflames_Wave:20|t%s targets you with |cFFFF0000|Hspell:421282|h[Darkflame Pickaxe]|h|r!', 42, 0, 100, 0, 0, 0, 0, 0, 'The Candle King'), -- Unknown broadcast_text +(208745, 3, 0, 'This why I king and you dead.', 14, 0, 100, 0, 0, 247832, 262510, 0, 'The Candle King'), +(208745, 4, 0, 'You die!', 14, 0, 33, 0, 0, 247826, 262504, 0, 'The Candle King'), +(208745, 4, 1, 'Snuffed out!', 14, 0, 33, 0, 0, 247827, 262505, 0, 'The Candle King'), +(208745, 4, 2, 'Weaklings!', 14, 0, 33, 0, 0, 247828, 262506, 0, 'The Candle King'), +(208745, 5, 0, 'But I... the king...', 14, 0, 100, 0, 0, 28232, 262511, 0, 'The Candle King'); + +-- SAI +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (209603, 209791) AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(209603, 0, 0, 1, '', 11, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 420677, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Respawn - Cast \'Eerie Molds\''), +(209603, 0, 1, 2, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 420918, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Linked - Cast \'Eerie Molds\''), +(209603, 0, 2, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 426011, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Linked - Cast \'Eerie Molds\''), +(209603, 0, 3, 0, '8,23', 11, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 421648, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue (Difficulties Mythic and M+) - On Respawn - Cast \'Cursed Wax\''), +(209603, 0, 4, 5, '', 8, 0, 100, 0, 421153, 0, 0, 0, 0, '', 28, 420918, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Spellhit - Remove Aura \'Eerie Molds\''), +(209603, 0, 5, 6, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 420959, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Linked - Cast \'Molten Wax\''), +(209603, 0, 6, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 420691, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Linked - Cast \'Molten Wax\''), +(209603, 0, 7, 0, '8,23', 8, 0, 100, 0, 421153, 0, 0, 0, 0, '', 28, 421648, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue (Difficulties Mythic and M+) - On Spellhit - Remove Aura \'Cursed Wax\''), +(209603, 0, 8, 9, '', 8, 0, 100, 0, 421283, 0, 0, 0, 0, '', 11, 420939, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Spellhit - Cast \'Rupture\''), +(209603, 0, 9, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 41, 1000, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Statue - On Linked - Despawn after 1 second'), +(209791, 0, 0, 0, '', 11, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 420932, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Chunk - On Respawn - Cast \'Wax Chunk\''), +(209791, 0, 1, 2, '', 8, 0, 100, 0, 421156, 0, 0, 0, 0, '', 11, 420963, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Chunk - On Spellhit - Cast \'Molten Wax\''), +(209791, 0, 2, 0, '', 61, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 420959, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Wax Chunk - On Linked - Cast \'Molten Wax\''); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 4c6fab2c0ddcc..4188177476bb2 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5103,6 +5103,31 @@ void SpellMgr::LoadSpellInfoCorrections() // ENDOF JADE FOREST SPELLS // + // + // DARKFLAME CLEFT SPELLS + // + + // Darkflame Pickaxe + ApplySpellFix({ 421277 }, [](SpellInfo* spellInfo) + { + spellInfo->AttributesEx2 |= SPELL_ATTR2_IGNORE_LINE_OF_SIGHT; + }); + + // Throw Darkflame + ApplySpellFix({ 420696 }, [](SpellInfo* spellInfo) + { + spellInfo->Attributes |= SPELL_ATTR0_AURA_IS_DEBUFF; + }); + + // Throw Darkflame + ApplySpellFix({ 421250 }, [](SpellInfo* spellInfo) + { + spellInfo->DurationEntry = sSpellDurationStore.LookupEntry(165); // 7s + }); + + // ENDOF DARKFLAME CLEFT SPELLS + // + // Earthquake ApplySpellFix({ 61882 }, [](SpellInfo* spellInfo) { diff --git a/src/server/scripts/KhazAlgar/DarkflameCleft/boss_the_candle_king.cpp b/src/server/scripts/KhazAlgar/DarkflameCleft/boss_the_candle_king.cpp new file mode 100644 index 0000000000000..0683a7d3478ba --- /dev/null +++ b/src/server/scripts/KhazAlgar/DarkflameCleft/boss_the_candle_king.cpp @@ -0,0 +1,529 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "AreaTrigger.h" +#include "AreaTriggerAI.h" +#include "Creature.h" +#include "GridNotifiersImpl.h" +#include "InstanceScript.h" +#include "Map.h" +#include "ObjectAccessor.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellHistory.h" +#include "SpellMgr.h" +#include "SpellScript.h" +#include "darkflame_cleft.h" + +enum TheCandleKingSpells +{ + SPELL_CURSED_WAX = 421648, + SPELL_CURSED_WAX_DUMMY = 422079, + SPELL_CURSED_WAX_STUN = 421653, + SPELL_CURSED_WAX_VISUAL = 422088, // Unk purpose + SPELL_DARKFLAME_PICKAXE_SELECTOR = 421274, + SPELL_DARKFLAME_PICKAXE_CAST = 421277, + SPELL_DARKFLAME_PICKAXE_MARKER = 422648, + SPELL_DARKFLAME_PICKAXE_DAMAGE = 421282, + SPELL_DARKFLAME_PICKAXE_VISUAL = 421283, + SPELL_DARKLIGHT = 426152, + SPELL_DARKLIGHT_DEBUFF = 426127, + SPELL_CANDLELIGHT = 426125, + SPELL_EERIE_MOLDS_CLONE_SUMMONER = 420676, + SPELL_EERIE_MOLDS_SELECTOR = 420659, + SPELL_EERIE_MOLDS_SUMMON = 420665, + SPELL_MOLTEN_WAX_AT = 420691, + SPELL_MOLTEN_WAX_DAMAGE = 421067, + SPELL_PARANOID_MIND = 426145, + SPELL_THROW_DARKFLAME_SELECTOR = 420696, + SPELL_THROW_DARKFLAME_MARKER = 421250, + SPELL_THROW_DARKFLAME_MISSILE = 421145 +}; + +enum TheCandleKingTexts +{ + SAY_AGGRO = 0, + SAY_EERIE_MOLDS = 1, + SAY_PICKAXE_WARNING = 2, + SAY_WIPE = 3, + SAY_KILL = 4, + SAY_DEATH = 5 +}; + +enum TheCandleKingEvents +{ + EVENT_EERIE_MOLDS = 1, + EVENT_PARANOID_MIND, + EVENT_DARKFLAME_PICKAXE, + EVENT_THROW_DARKFLAME +}; + +enum TheCandleKingMisc +{ + NPC_WAX_STATUE = 209603, + NPC_WAX_CHUNK = 209791, +}; + +// 208745 - The Candle King +struct boss_the_candle_king : public BossAI +{ + boss_the_candle_king(Creature* creature) : BossAI(creature, DATA_THE_CANDLE_KING) { } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(SAY_DEATH); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + instance->SetBossState(DATA_THE_CANDLE_KING, DONE); + + RemoveWaxStatues(); + } + + void EnterEvadeMode(EvadeReason /*why*/) override + { + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + instance->SetBossState(DATA_THE_CANDLE_KING, FAIL); + + Talk(SAY_WIPE); + + _EnterEvadeMode(); + _DespawnAtEvade(); + RemoveWaxStatues(); + } + + void RemoveWaxStatues() + { + std::list waxStatues; + GetCreatureListWithEntryInGrid(waxStatues, me, NPC_WAX_STATUE, 200.0f); + GetCreatureListWithEntryInGrid(waxStatues, me, NPC_WAX_CHUNK, 200.0f); + + for (Creature* waxStatue : waxStatues) + waxStatue->DespawnOrUnsummon(); + } + + void KilledUnit(Unit* victim) override + { + if (!victim->IsPlayer()) + return; + + Talk(SAY_KILL); + } + + void OnSpellStart(SpellInfo const* spellInfo) override + { + if (spellInfo->Id == SPELL_EERIE_MOLDS_SELECTOR) + Talk(SAY_EERIE_MOLDS); + } + + void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override + { + if (!target->IsPlayer()) + return; + + if (spellInfo->Id == SPELL_DARKFLAME_PICKAXE_SELECTOR) + Talk(SAY_PICKAXE_WARNING, target); + } + + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1); + instance->SetBossState(DATA_THE_CANDLE_KING, IN_PROGRESS); + + Talk(SAY_AGGRO); + + DoCastSelf(SPELL_DARKLIGHT); + + events.ScheduleEvent(EVENT_EERIE_MOLDS, 6s); + events.ScheduleEvent(EVENT_PARANOID_MIND, 10500ms); + events.ScheduleEvent(EVENT_DARKFLAME_PICKAXE, 13200ms); + events.ScheduleEvent(EVENT_THROW_DARKFLAME, 19300ms); + } + + Milliseconds GetCooldownOfSpell(uint32 spellId) + { + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, GetDifficulty()); + if (!spellInfo) + return 0ms; + + return me->GetSpellHistory()->GetRemainingCooldown(spellInfo); + } + + bool TryCastSpellIfReady(uint32 spellId) + { + Milliseconds cd = GetCooldownOfSpell(spellId); + if (cd == 0ms) + { + DoCastSelf(spellId); + return true; + } + + events.Repeat(cd); + return false; + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_EERIE_MOLDS: + { + if (TryCastSpellIfReady(SPELL_EERIE_MOLDS_SELECTOR)) + events.Repeat(IsMythic() ? 23100ms : 31500ms); + break; + } + case EVENT_PARANOID_MIND: + { + if (TryCastSpellIfReady(SPELL_PARANOID_MIND)) + events.Repeat(IsMythic() ? 10900ms : 20600ms); + break; + } + case EVENT_DARKFLAME_PICKAXE: + { + if (TryCastSpellIfReady(SPELL_DARKFLAME_PICKAXE_SELECTOR)) + events.Repeat(IsMythic() ? 23100ms : 17s); + break; + } + case EVENT_THROW_DARKFLAME: + { + if (TryCastSpellIfReady(SPELL_THROW_DARKFLAME_SELECTOR)) + events.Repeat(IsMythic() ? 24300ms : 17s); + break; + } + default: + break; + } + } + } +}; + +// 420677 - Eerie Molds +class spell_the_candle_king_eerie_molds_clone_summoner : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_EERIE_MOLDS_CLONE_SUMMONER }); + } + + void HandleHit(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetCaster(), SPELL_EERIE_MOLDS_CLONE_SUMMONER, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_the_candle_king_eerie_molds_clone_summoner::HandleHit, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +// 420659 - Eerie Molds +class spell_the_candle_king_eerie_molds_selector : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_EERIE_MOLDS_SUMMON }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_EERIE_MOLDS_SUMMON, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_the_candle_king_eerie_molds_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 420696 - Throw Darkflame +class spell_the_candle_king_throw_darkflame_selector : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_THROW_DARKFLAME_MARKER }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_THROW_DARKFLAME_MARKER, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_the_candle_king_throw_darkflame_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_APPLY_AURA); + } +}; + +// 421250 - Throw Darkflame +class spell_the_candle_king_throw_darkflame_missile : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_THROW_DARKFLAME_MISSILE }); + } + + void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) const + { + if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) + return; + + if (Unit* caster = GetCaster()) + caster->CastSpell(GetTarget(), SPELL_THROW_DARKFLAME_MISSILE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_the_candle_king_throw_darkflame_missile::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 422079 - Cursed Wax +class spell_the_candle_king_cursed_wax : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_CURSED_WAX_STUN }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_CURSED_WAX_STUN, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_the_candle_king_cursed_wax::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 421274 - Darkflame Pickaxe +class spell_the_candle_king_darkflame_pickaxe_selector : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DARKFLAME_PICKAXE_CAST, SPELL_DARKFLAME_PICKAXE_MARKER }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + + CastSpellExtraArgs args; + args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + args.SetTriggeringSpell(GetSpell()); + + caster->CastSpell(target, SPELL_DARKFLAME_PICKAXE_CAST, args); + caster->CastSpell(target, SPELL_DARKFLAME_PICKAXE_MARKER, args); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_the_candle_king_darkflame_pickaxe_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +class DarkflamePickaxeDamageEvent : public BasicEvent +{ +public: + explicit DarkflamePickaxeDamageEvent(Unit* caster, ObjectGuid const& targetGUID, ObjectGuid const& originalCastId) : _caster(caster), _targetGUID(targetGUID), _originalCastId(originalCastId) { } + + bool Execute(uint64 /*time*/, uint32 /*diff*/) override + { + if (Unit* target = ObjectAccessor::GetUnit(*_caster, _targetGUID)) + { + _caster->CastSpell(target, SPELL_DARKFLAME_PICKAXE_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .OriginalCastId = _originalCastId + }); + } + return true; + } + +private: + Unit* _caster; + ObjectGuid _targetGUID; + ObjectGuid _originalCastId; +}; + +// 421277 - Darkflame Pickaxe +class spell_the_candle_king_darkflame_pickaxe_cast : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DARKFLAME_PICKAXE_VISUAL, SPELL_DARKFLAME_PICKAXE_DAMAGE }); + } + + void ClearTarget(WorldObject*& target) + { + target = nullptr; + } + + void FilterTargets(std::list& targets) + { + static constexpr uint8 MAX_TARGETS = 1; + + if (targets.size() <= MAX_TARGETS) + return; + + targets.remove_if([](WorldObject* target) -> bool + { + Unit* unit = target->ToUnit(); + if (!unit) + return true; + + return (!unit->IsPlayer() && unit->GetEntry() != NPC_WAX_STATUE) || !unit->HasAura(SPELL_MOLTEN_WAX_AT); + }); + + auto closestTargetItr = std::ranges::min_element(targets, std::ranges::less(), [caster = GetCaster()](WorldObject const* obj) + { + return caster->GetExactDist2dSq(obj->GetPosition()); + }); + + if (closestTargetItr == targets.end()) + return; + + WorldObject* closestTarget = *closestTargetItr; + targets.clear(); + targets.push_back(closestTarget); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + + CastSpellExtraArgs args; + args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + args.SetTriggeringSpell(GetSpell()); + + caster->CastSpell(target, SPELL_DARKFLAME_PICKAXE_VISUAL, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + caster->m_Events.AddEventAtOffset(new DarkflamePickaxeDamageEvent(caster, target->GetGUID(), GetSpell()->m_castId), 300ms); + } + + void Register() override + { + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_the_candle_king_darkflame_pickaxe_cast::ClearTarget, EFFECT_0, TARGET_UNIT_TARGET_ENEMY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_the_candle_king_darkflame_pickaxe_cast::FilterTargets, EFFECT_0, TARGET_UNIT_RECT_CASTER); + OnEffectHitTarget += SpellEffectFn(spell_the_candle_king_darkflame_pickaxe_cast::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 421648 - Cursed Wax +// Id - 29999 +struct at_the_candle_king_cursed_wax : AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + if (!unit->IsPlayer()) + return; + + Unit* caster = at->GetCaster(); + if (!caster) + return; + + caster->CastSpell(unit, SPELL_CURSED_WAX_VISUAL, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + caster->CastSpell(unit, SPELL_CURSED_WAX_DUMMY, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } +}; + +// 420691 - Molten Wax and 420963 - Molten Wax +// Ids: 29904, 29906 +struct at_the_candle_king_molten_wax : public AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + if (!unit->IsPlayer()) + return; + + unit->CastSpell(unit, SPELL_MOLTEN_WAX_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void OnUnitExit(Unit* unit, AreaTriggerExitReason /*reason*/) override + { + unit->RemoveAurasDueToSpell(SPELL_MOLTEN_WAX_DAMAGE); + } +}; + +// Id - XXXX (change on merge) +struct at_the_candle_king_candlelight : AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + if (!unit->IsPlayer()) + return; + + unit->CastSpell(unit, SPELL_CANDLELIGHT, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + unit->RemoveAurasDueToSpell(SPELL_DARKLIGHT_DEBUFF); + } + + void OnUnitExit(Unit* unit, AreaTriggerExitReason /*reason*/) override + { + unit->RemoveAurasDueToSpell(SPELL_CANDLELIGHT); + } +}; + +void AddSC_boss_the_candle_king() +{ + RegisterDarkflameCleftCreatureAI(boss_the_candle_king); + + RegisterSpellScript(spell_the_candle_king_eerie_molds_clone_summoner); + RegisterSpellScript(spell_the_candle_king_eerie_molds_selector); + RegisterSpellScript(spell_the_candle_king_throw_darkflame_selector); + RegisterSpellScript(spell_the_candle_king_throw_darkflame_missile); + RegisterSpellScript(spell_the_candle_king_cursed_wax); + RegisterSpellScript(spell_the_candle_king_darkflame_pickaxe_selector); + RegisterSpellScript(spell_the_candle_king_darkflame_pickaxe_cast); + + RegisterAreaTriggerAI(at_the_candle_king_cursed_wax); + RegisterAreaTriggerAI(at_the_candle_king_molten_wax); + RegisterAreaTriggerAI(at_the_candle_king_candlelight); +} diff --git a/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h b/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h new file mode 100644 index 0000000000000..98c66c7f43ecd --- /dev/null +++ b/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h @@ -0,0 +1,54 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef DEF_DARKFLAME_CLEFT_H_ +#define DEF_DARKFLAME_CLEFT_H_ + +#include "CreatureAIImpl.h" + +#define DCScriptName "instance_darkflame_cleft" +#define DataHeader "DarkflameCleft" + +uint32 const EncounterCount = 4; + +enum DarkflameCleftDataTypes +{ + // Encounters + DATA_OL_WAXBEARD = 0, + DATA_BLAZIKON = 1, + DATA_THE_CANDLE_KING = 2, + DATA_THE_DARKNESS = 3 +}; + +enum DarkflameCleftCreatureIds +{ + // Bosses + BOSS_OL_WAXBEARD = 210149, + BOSS_BLAZIKON = 208743, + BOSS_THE_CANDLE_KING = 208745, + BOSS_THE_DARKNESS = 210797 +}; + +template +inline AI* GetDarkflameCleftAI(T* obj) +{ + return GetInstanceAI(obj, DCScriptName); +} + +#define RegisterDarkflameCleftCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetDarkflameCleftAI) + +#endif diff --git a/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp b/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp new file mode 100644 index 0000000000000..bed74fb6c9e1e --- /dev/null +++ b/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp @@ -0,0 +1,70 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "AreaBoundary.h" +#include "InstanceScript.h" +#include "ScriptMgr.h" +#include "darkflame_cleft.h" + +BossBoundaryData const boundaries = +{ + { DATA_THE_CANDLE_KING, new ZRangeBoundary(59.20f, 90.0f) } +}; + +static constexpr ObjectData creatureData[] = +{ + { DATA_OL_WAXBEARD, BOSS_OL_WAXBEARD }, + { DATA_BLAZIKON, BOSS_BLAZIKON }, + { DATA_THE_CANDLE_KING, BOSS_THE_CANDLE_KING }, + { DATA_THE_DARKNESS, BOSS_THE_DARKNESS } +}; + +static constexpr DungeonEncounterData const encounters[] = +{ + { DATA_OL_WAXBEARD, {{ 2829 }} }, + { DATA_BLAZIKON, {{ 2826 }} }, + { DATA_THE_CANDLE_KING, {{ 2787 }} }, + { DATA_THE_DARKNESS, {{ 2788 }} } +}; + +class instance_darkflame_cleft : public InstanceMapScript +{ +public: + instance_darkflame_cleft() : InstanceMapScript(DCScriptName, 2651) { } + + struct instance_darkflame_cleft_InstanceMapScript: public InstanceScript + { + instance_darkflame_cleft_InstanceMapScript(InstanceMap* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + SetBossNumber(EncounterCount); + LoadObjectData(creatureData, {}); + LoadBossBoundaries(boundaries); + LoadDungeonEncounterData(encounters); + } + }; + + InstanceScript* GetInstanceScript(InstanceMap* map) const override + { + return new instance_darkflame_cleft_InstanceMapScript(map); + } +}; + +void AddSC_instance_darkflame_cleft() +{ + new instance_darkflame_cleft(); +} diff --git a/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp b/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp index 117ff91ef22de..602efceafb311 100644 --- a/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp +++ b/src/server/scripts/KhazAlgar/khaz_algar_script_loader.cpp @@ -39,6 +39,10 @@ void AddSC_boss_ulgrax_the_devourer(); void AddSC_instance_city_of_threads(); void AddSC_boss_orator_krix_vizk(); +// Darkflame Cleft +void AddSC_instance_darkflame_cleft(); +void AddSC_boss_the_candle_king(); + // The name of this function should match: // void Add${NameOfDirectory}Scripts() void AddKhazAlgarScripts() @@ -64,4 +68,8 @@ void AddKhazAlgarScripts() // City of Threads AddSC_instance_city_of_threads(); AddSC_boss_orator_krix_vizk(); + + // Darkflame Cleft + AddSC_instance_darkflame_cleft(); + AddSC_boss_the_candle_king(); } From 373c92067b363fd515d792c1ae43fdafef95f475 Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 3 Apr 2026 10:21:28 +0200 Subject: [PATCH 026/175] DB/DarkflameCleft: Fix areatrigger ids of recent custom areatrigger for The Candle King * ed715222819c36910a0bbe99afa7b19b8560a72e followup --- .../world/master/2026_04_03_01_world.sql | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 sql/updates/world/master/2026_04_03_01_world.sql diff --git a/sql/updates/world/master/2026_04_03_01_world.sql b/sql/updates/world/master/2026_04_03_01_world.sql new file mode 100644 index 0000000000000..2c9e645856834 --- /dev/null +++ b/sql/updates/world/master/2026_04_03_01_world.sql @@ -0,0 +1,19 @@ +SET @ATIDSPAWN := 285; +SET @ATCP := 175; +SET @ATID := 184; + +DELETE FROM `areatrigger` WHERE `SpawnId`=888888; +DELETE FROM `areatrigger_create_properties` WHERE `Id`=888888 AND `IsCustom`=1; +DELETE FROM `areatrigger_template` WHERE `Id`=888888 AND `IsCustom`=1; + +DELETE FROM `areatrigger` WHERE `SpawnId`=@ATIDSPAWN; +INSERT INTO `areatrigger` (`SpawnId`, `AreaTriggerCreatePropertiesId`, `IsCustom`, `MapId`, `SpawnDifficulties`, `PosX`, `PosY`, `PosZ`, `Orientation`, `PhaseUseFlags`, `PhaseId`, `PhaseGroup`, `ScriptName`, `Comment`, `VerifiedBuild`) VALUES +(@ATIDSPAWN, @ATCP, 1, 2651, '1,2,8,23', 119.2231, -154.7091, 73.8308, 3.152349, 0, 0, 0, '', 'Darkflame Cleft - The Candle King encounter - Candlelight', 66192); + +DELETE FROM `areatrigger_create_properties` WHERE `Id`=@ATCP AND `IsCustom`=1; +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Speed`, `SpeedIsTime`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(@ATCP, 1, @ATID, 1, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 0, 0, 1, 32, 50, 5, 32, 50, 5, 0, 0, 'at_the_candle_king_candlelight', 0); + +DELETE FROM `areatrigger_template` WHERE `Id`=@ATID AND `IsCustom`=1; +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `ActionSetId`, `ActionSetFlags`, `VerifiedBuild`) VALUES +(@ATID, 1, 1, 0, 0, 0); From d3ed40aadc565e3aa3ee109cc3760f3d410252e7 Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Fri, 3 Apr 2026 12:07:28 +0200 Subject: [PATCH 027/175] Scripts/DarkflameCleft: Add Normal/Heroic difficulties and door data for The Candle King (#31773) --- .../master/026_04_03_02_world.sql\342\200\216" | 15 +++++++++++++++ .../KhazAlgar/DarkflameCleft/darkflame_cleft.h | 5 +++++ .../DarkflameCleft/instance_darkflame_cleft.cpp | 6 ++++++ 3 files changed, 26 insertions(+) create mode 100644 "sql/updates/world/master/026_04_03_02_world.sql\342\200\216" diff --git "a/sql/updates/world/master/026_04_03_02_world.sql\342\200\216" "b/sql/updates/world/master/026_04_03_02_world.sql\342\200\216" new file mode 100644 index 0000000000000..55900e653b145 --- /dev/null +++ "b/sql/updates/world/master/026_04_03_02_world.sql\342\200\216" @@ -0,0 +1,15 @@ +DELETE FROM `creature_template_difficulty` WHERE (`DifficultyID` IN (1, 2) AND `Entry` IN (209791,209603, 208745)); +INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `HealthScalingExpansion`, `HealthModifier`, `ManaModifier`, `CreatureDifficultyID`, `TypeFlags`, `TypeFlags2`, `TypeFlags3`) VALUES +(209791, 1, 10, 1, 1, 240104, 0x200068, 128, 0), -- Wax Chunk +(209603, 1, 10, 1, 1, 239912, 0x200068, 128, 0), -- Wax Statue +(208745, 1, 10, 35, 1, 237981, 0x200068, 128, 0), -- The Candle King +(209791, 2, 10, 1, 1, 240104, 0x200068, 128, 0), -- Wax Chunk +(209603, 2, 10, 1, 1, 239912, 0x200068, 128, 0), -- Wax Statue +(208745, 2, 10, 35, 1, 237981, 0x200068, 128, 0); -- The Candle King + +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2718, `VerifiedBuild`=66709 WHERE (`Entry`=209791 AND `DifficultyID`=1); -- 209791 (Wax Chunk) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2718, `VerifiedBuild`=66709 WHERE (`Entry`=209603 AND `DifficultyID`=1); -- 209603 (Wax Statue) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2718, `VerifiedBuild`=66709 WHERE (`Entry`=208745 AND `DifficultyID`=1); -- 208745 (The Candle King) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2720, `VerifiedBuild`=66709 WHERE (`Entry`=209791 AND `DifficultyID`=2); -- 209791 (Wax Chunk) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2720, `VerifiedBuild`=66709 WHERE (`Entry`=209603 AND `DifficultyID`=2); -- 209603 (Wax Statue) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2720, `VerifiedBuild`=66709 WHERE (`Entry`=208745 AND `DifficultyID`=2); -- 208745 (The Candle King) - diff --git a/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h b/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h index 98c66c7f43ecd..1587baf298638 100644 --- a/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h +++ b/src/server/scripts/KhazAlgar/DarkflameCleft/darkflame_cleft.h @@ -43,6 +43,11 @@ enum DarkflameCleftCreatureIds BOSS_THE_DARKNESS = 210797 }; +enum DarkflameCleftGameObjectIds +{ + GO_CATACOMBS_GATE = 430177 +}; + template inline AI* GetDarkflameCleftAI(T* obj) { diff --git a/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp b/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp index bed74fb6c9e1e..cbc9846333046 100644 --- a/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp +++ b/src/server/scripts/KhazAlgar/DarkflameCleft/instance_darkflame_cleft.cpp @@ -41,6 +41,11 @@ static constexpr DungeonEncounterData const encounters[] = { DATA_THE_DARKNESS, {{ 2788 }} } }; +static constexpr DoorData doorData[] = +{ + { GO_CATACOMBS_GATE, DATA_THE_CANDLE_KING, EncounterDoorBehavior::OpenWhenDone } +}; + class instance_darkflame_cleft : public InstanceMapScript { public: @@ -53,6 +58,7 @@ class instance_darkflame_cleft : public InstanceMapScript SetHeaders(DataHeader); SetBossNumber(EncounterCount); LoadObjectData(creatureData, {}); + LoadDoorData(doorData); LoadBossBoundaries(boundaries); LoadDungeonEncounterData(encounters); } From 1f68a6c76755a0ddc0a92f06bff74eca5cce32d2 Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 3 Apr 2026 12:16:22 +0200 Subject: [PATCH 028/175] DB/Misc: Fix file name --- .../updates/world/master/2026_04_03_02_world.sql\342\200\216" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "sql/updates/world/master/026_04_03_02_world.sql\342\200\216" => "sql/updates/world/master/2026_04_03_02_world.sql\342\200\216" (100%) diff --git "a/sql/updates/world/master/026_04_03_02_world.sql\342\200\216" "b/sql/updates/world/master/2026_04_03_02_world.sql\342\200\216" similarity index 100% rename from "sql/updates/world/master/026_04_03_02_world.sql\342\200\216" rename to "sql/updates/world/master/2026_04_03_02_world.sql\342\200\216" From 920ac54b79c5b1d6282d37ed899abdc4093c71eb Mon Sep 17 00:00:00 2001 From: ModoX Date: Sat, 4 Apr 2026 12:13:02 +0200 Subject: [PATCH 029/175] Core/Chat: Define new chat msg types: CHAT_MSG_PING, CHAT_MSG_ENCOUNTER_EVENT --- src/server/game/Miscellaneous/SharedDefines.h | 2 ++ .../game/Miscellaneous/enuminfo_SharedDefines.cpp | 12 +++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 1571d4ee386b4..7393fd4a54795 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -6424,6 +6424,8 @@ enum ChatMsg : int32 CHAT_MSG_GUILD_ITEM_LOOTED = 0x40, CHAT_MSG_COMMUNITIES_CHANNEL = 0x41, CHAT_MSG_VOICE_TEXT = 0x42, + CHAT_MSG_PING = 0x43, + CHAT_MSG_ENCOUNTER_EVENT = 0x44, MAX_CHAT_MSG_TYPE }; diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index 6b418c3c9ff02..d12843edf0573 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -5346,13 +5346,15 @@ TC_API_EXPORT EnumText EnumUtils::ToString(ChatMsg value) case CHAT_MSG_GUILD_ITEM_LOOTED: return { "CHAT_MSG_GUILD_ITEM_LOOTED", "CHAT_MSG_GUILD_ITEM_LOOTED", "" }; case CHAT_MSG_COMMUNITIES_CHANNEL: return { "CHAT_MSG_COMMUNITIES_CHANNEL", "CHAT_MSG_COMMUNITIES_CHANNEL", "" }; case CHAT_MSG_VOICE_TEXT: return { "CHAT_MSG_VOICE_TEXT", "CHAT_MSG_VOICE_TEXT", "" }; + case CHAT_MSG_PING: return { "CHAT_MSG_PING", "CHAT_MSG_PING", "" }; + case CHAT_MSG_ENCOUNTER_EVENT: return { "CHAT_MSG_ENCOUNTER_EVENT", "CHAT_MSG_ENCOUNTER_EVENT", "" }; case MAX_CHAT_MSG_TYPE: return { "MAX_CHAT_MSG_TYPE", "MAX_CHAT_MSG_TYPE", "" }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils::Count() { return 69; } +TC_API_EXPORT size_t EnumUtils::Count() { return 71; } template <> TC_API_EXPORT ChatMsg EnumUtils::FromIndex(size_t index) @@ -5427,7 +5429,9 @@ TC_API_EXPORT ChatMsg EnumUtils::FromIndex(size_t index) case 65: return CHAT_MSG_GUILD_ITEM_LOOTED; case 66: return CHAT_MSG_COMMUNITIES_CHANNEL; case 67: return CHAT_MSG_VOICE_TEXT; - case 68: return MAX_CHAT_MSG_TYPE; + case 68: return CHAT_MSG_PING; + case 69: return CHAT_MSG_ENCOUNTER_EVENT; + case 70: return MAX_CHAT_MSG_TYPE; default: throw std::out_of_range("index"); } } @@ -5505,7 +5509,9 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(ChatMsg value) case CHAT_MSG_GUILD_ITEM_LOOTED: return 65; case CHAT_MSG_COMMUNITIES_CHANNEL: return 66; case CHAT_MSG_VOICE_TEXT: return 67; - case MAX_CHAT_MSG_TYPE: return 68; + case CHAT_MSG_PING: return 68; + case CHAT_MSG_ENCOUNTER_EVENT: return 69; + case MAX_CHAT_MSG_TYPE: return 70; default: throw std::out_of_range("value"); } } From 7eb491a2e58dcded1a433f99ef70882c8872b464 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 4 Apr 2026 17:31:13 +0200 Subject: [PATCH 030/175] Core/Auras: Define new aura type --- src/server/game/Spells/Auras/SpellAuraDefines.h | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index a75abe985daa5..ac2e641deb3e0 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -728,7 +728,7 @@ enum AuraType : uint32 SPELL_AURA_641 = 641, SPELL_AURA_642 = 642, SPELL_AURA_MOD_RANGED_ATTACK_SPEED_FLAT = 643, // NYI - SPELL_AURA_644 = 644, + SPELL_AURA_MOD_GRAVITY = 644, // NYI SPELL_AURA_645 = 645, SPELL_AURA_ADD_FLAT_PVP_MODIFIER = 646, SPELL_AURA_ADD_PCT_PVP_MODIFIER = 647, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index c65e4cedf8525..0839c34182bb1 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -713,7 +713,7 @@ NonDefaultConstructible AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //641 &AuraEffect::HandleNULL, //642 &AuraEffect::HandleNULL, //643 SPELL_AURA_MOD_RANGED_ATTACK_SPEED_FLAT - &AuraEffect::HandleNULL, //644 + &AuraEffect::HandleNULL, //644 SPELL_AURA_MOD_GRAVITY &AuraEffect::HandleNULL, //645 &AuraEffect::HandleNULL, //646 SPELL_AURA_ADD_FLAT_PVP_MODIFIER &AuraEffect::HandleNULL, //647 SPELL_AURA_ADD_PCT_PVP_MODIFIER From b3d246e5a5570c365464e0f7ad8033d80726e2eb Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 5 Apr 2026 13:27:03 +0200 Subject: [PATCH 031/175] Dep/jemalloc: Fix build on arm64 Closes #31776 --- dep/jemalloc/Configure.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dep/jemalloc/Configure.c b/dep/jemalloc/Configure.c index 65105d148541d..c64f662ef4b02 100644 --- a/dep/jemalloc/Configure.c +++ b/dep/jemalloc/Configure.c @@ -21,6 +21,10 @@ #include #include +#ifndef _WIN32 +#include +#endif + #if defined(_M_IX86) || defined(_M_AMD64) || defined(__i386__) || defined(__x86_64__) #ifdef _WIN32 @@ -28,7 +32,6 @@ #include #else #include -#include #endif static uint32_t GetNumSignificantVirtualAddressBits(void) From bba0de5731bc9b5fde49191693368840e607bb00 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 5 Apr 2026 17:37:52 +0200 Subject: [PATCH 032/175] Core/Network: Fix build with msvc versions < 19.43 (vs 2022 17.13) --- src/server/bnetserver/Server/SessionManager.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/server/bnetserver/Server/SessionManager.h b/src/server/bnetserver/Server/SessionManager.h index 8eb426ec49d79..1e1c703432d2a 100644 --- a/src/server/bnetserver/Server/SessionManager.h +++ b/src/server/bnetserver/Server/SessionManager.h @@ -27,9 +27,11 @@ namespace Battlenet { }; + class SessionManager; + struct SessionManagerTraits { - using Self = class SessionManager; + using Self = SessionManager; using SocketType = Session; using ThreadType = SessionNetworkThread; }; From 0fe1c043a74e84819e55ce4b62a89ef4db0e4c04 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 5 Apr 2026 20:47:00 +0200 Subject: [PATCH 033/175] DB/Misc: Fix file name (for real this time) --- .../updates/world/master/2026_04_03_02_world.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "sql/updates/world/master/2026_04_03_02_world.sql\342\200\216" => sql/updates/world/master/2026_04_03_02_world.sql (100%) diff --git "a/sql/updates/world/master/2026_04_03_02_world.sql\342\200\216" b/sql/updates/world/master/2026_04_03_02_world.sql similarity index 100% rename from "sql/updates/world/master/2026_04_03_02_world.sql\342\200\216" rename to sql/updates/world/master/2026_04_03_02_world.sql From 1b4567e4da6307ef1ab1a1598b6e358e6e1bb0f0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 6 Apr 2026 18:28:41 +0200 Subject: [PATCH 034/175] Core/Auras: Split SpellModifierByClassMask into separate flat/pct types --- src/server/game/Entities/Player/Player.cpp | 19 +++---- src/server/game/Entities/Player/Player.h | 50 +++++++++++++++---- .../game/Spells/Auras/SpellAuraEffects.cpp | 38 +++----------- src/server/scripts/Spells/spell_dh.cpp | 8 +-- src/server/scripts/Spells/spell_shaman.cpp | 12 +---- 5 files changed, 61 insertions(+), 66 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 518289d5f057c..1063a323d6681 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22734,7 +22734,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (!IsAffectedBySpellmod(spellInfo, mod, spell)) continue; - if (base < 10000.0 && static_cast(mod)->value <= -100) + if (base < 10000.0 && static_cast(mod)->value <= -100) { modInstantSpell = mod; break; @@ -22773,7 +22773,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (!IsAffectedBySpellmod(spellInfo, mod, spell)) continue; - if (static_cast(mod)->value >= 100) + if (static_cast(mod)->value >= 100) { modCritical = mod; break; @@ -22813,7 +22813,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (!applyCount) continue; - int32 value = static_cast(mod)->value; + int32 value = static_cast(mod)->value; if (value == 0) continue; @@ -22845,7 +22845,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (base + *flat == 0) continue; - int32 value = static_cast(mod)->value; + int32 value = static_cast(mod)->value; if (value == 0) continue; @@ -22946,7 +22946,7 @@ void Player::AddSpellMod(SpellModifier* mod, bool apply) auto itr = std::ranges::lower_bound(m_spellMods, std::make_pair(mod->op, SPELLMOD_FLAT), std::ranges::less(), [](SpellModifier const* sm) { return std::make_pair(sm->op, sm->type); }); while (itr != m_spellMods.end() && (*itr)->op == mod->op && (*itr)->type == SPELLMOD_FLAT) { - SpellModifierByClassMask const* spellMod = static_cast(*itr++); + SpellFlatModifierByClassMask const* spellMod = static_cast(*itr++); if (spellMod->mask[classIndex / 32] & (1u << (classIndex % 32))) modData.ModifierValue += spellMod->value; } @@ -22957,7 +22957,7 @@ void Player::AddSpellMod(SpellModifier* mod, bool apply) auto itr = std::ranges::lower_bound(m_spellMods, std::make_pair(mod->op, SPELLMOD_PCT), std::ranges::less(), [](SpellModifier const* sm) { return std::make_pair(sm->op, sm->type); }); while (itr != m_spellMods.end() && (*itr)->op == mod->op && (*itr)->type == SPELLMOD_PCT) { - SpellModifierByClassMask const* spellMod = static_cast(*itr++); + SpellPctModifierByClassMask const* spellMod = static_cast(*itr++); if (spellMod->mask[classIndex / 32] & (1u << (classIndex % 32))) modData.ModifierValue *= 1.0f + CalculatePct(1.0f, spellMod->value); } @@ -23051,9 +23051,6 @@ void Player::SendSpellModifiers() const for (SpellModifier const* mod : m_spellMods) { - if (mod->type != SPELLMOD_FLAT && mod->type != SPELLMOD_PCT) - continue; - switch (mod->type) { case SPELLMOD_FLAT: @@ -23066,7 +23063,7 @@ void Player::SendSpellModifiers() const for (std::size_t classIndex = mask.find_first(); classIndex != decltype(mask)::npos; classIndex = mask.find_next(classIndex)) { float& modifierValue = getOrCreateModifierData(flatModifier->ModifierData, classIndex, 0.0f); - modifierValue += static_cast(mod)->value; + modifierValue += static_cast(mod)->value; } break; case SPELLMOD_PCT: @@ -23079,7 +23076,7 @@ void Player::SendSpellModifiers() const for (std::size_t classIndex = mask.find_first(); classIndex != decltype(mask)::npos; classIndex = mask.find_next(classIndex)) { float& modifierValue = getOrCreateModifierData(pctModifier->ModifierData, classIndex, 1.0f); - modifierValue *= 1.0f + CalculatePct(1.0f, static_cast(mod)->value); + modifierValue *= 1.0f + CalculatePct(1.0f, static_cast(mod)->value); } break; default: diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 14a4c49cbce35..254a31bca3440 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -251,7 +251,8 @@ enum SpecResetType // Spell modifier (used for modify other spells) struct SpellModifier { - SpellModifier(Aura* _ownerAura) : op(SpellModOp::HealingAndDamage), type(SPELLMOD_FLAT), spellId(0), ownerAura(_ownerAura) { } + SpellModifier(SpellModOp _op, SpellModType _type, uint32 _spellId, Aura* _ownerAura) + : op(_op), type(_type), spellId(_spellId), ownerAura(_ownerAura) { } virtual ~SpellModifier() = default; SpellModOp op; @@ -263,22 +264,53 @@ struct SpellModifier struct SpellModifierByClassMask : SpellModifier { - SpellModifierByClassMask(Aura* _ownerAura) : SpellModifier(_ownerAura), value(0), mask() { } + SpellModifierByClassMask(SpellModOp _op, SpellModType _type, uint32 _spellId, Aura* _ownerAura, flag128 const& _mask) + : SpellModifier(_op, _type, _spellId, _ownerAura), mask(_mask) { } - int32 value; flag128 mask; }; -template -struct SpellModifierByLabel : SpellModifier +struct SpellFlatModifierByClassMask : SpellModifierByClassMask { - SpellModifierByLabel(Aura* _ownerAura) : SpellModifier(_ownerAura) { } + SpellFlatModifierByClassMask(SpellModOp _op, uint32 _spellId, Aura* _ownerAura, flag128 _mask) + : SpellModifierByClassMask(_op, SPELLMOD_FLAT, _spellId, _ownerAura, _mask) { } - T value; + int32 value = { }; }; -using SpellFlatModifierByLabel = SpellModifierByLabel; -using SpellPctModifierByLabel = SpellModifierByLabel; +struct SpellPctModifierByClassMask : SpellModifierByClassMask +{ + SpellPctModifierByClassMask(SpellModOp _op, uint32 _spellId, Aura* _ownerAura, flag128 _mask) + : SpellModifierByClassMask(_op, SPELLMOD_PCT, _spellId, _ownerAura, _mask) { } + + int32 value = { }; +}; + +struct SpellFlatModifierByLabel : SpellModifier +{ + SpellFlatModifierByLabel(SpellModOp _op, uint32 _spellId, Aura* _ownerAura, uint32 _label) + : SpellModifier(_op, SPELLMOD_LABEL_FLAT, _spellId, _ownerAura) + { + value.ModIndex = int32(_op); + value.ModifierValue = 0; + value.LabelID = _label; + } + + UF::SpellFlatModByLabel value = { }; +}; + +struct SpellPctModifierByLabel : SpellModifier +{ + SpellPctModifierByLabel(SpellModOp _op, uint32 _spellId, Aura* _ownerAura, int32 _label) + : SpellModifier(_op, SPELLMOD_LABEL_PCT, _spellId, _ownerAura) + { + value.ModIndex = int32(_op); + value.ModifierValue = 0.0f; + value.LabelID = _label; + } + + UF::SpellPctModByLabel value; +}; struct SpellModifierCompare { diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 0839c34182bb1..69fb1b45e3c3b 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1006,45 +1006,23 @@ void AuraEffect::CalculateSpellMod() switch (GetAuraType()) { case SPELL_AURA_ADD_FLAT_MODIFIER: + if (!m_spellmod) + m_spellmod = new SpellFlatModifierByClassMask(SpellModOp(GetMiscValue()), GetId(), GetBase(), GetSpellEffectInfo().SpellClassMask); + static_cast(m_spellmod)->value = GetAmount(); + break; case SPELL_AURA_ADD_PCT_MODIFIER: if (!m_spellmod) - { - SpellModifierByClassMask* spellmod = new SpellModifierByClassMask(GetBase()); - spellmod->op = SpellModOp(GetMiscValue()); - - spellmod->type = GetAuraType() == SPELL_AURA_ADD_PCT_MODIFIER ? SPELLMOD_PCT : SPELLMOD_FLAT; - spellmod->spellId = GetId(); - spellmod->mask = GetSpellEffectInfo().SpellClassMask; - m_spellmod = spellmod; - } - static_cast(m_spellmod)->value = GetAmount(); + m_spellmod = new SpellPctModifierByClassMask(SpellModOp(GetMiscValue()), GetId(), GetBase(), GetSpellEffectInfo().SpellClassMask); + static_cast(m_spellmod)->value = GetAmount(); break; case SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL: if (!m_spellmod) - { - SpellFlatModifierByLabel* spellmod = new SpellFlatModifierByLabel(GetBase()); - spellmod->op = SpellModOp(GetMiscValue()); - - spellmod->type = SPELLMOD_LABEL_FLAT; - spellmod->spellId = GetId(); - spellmod->value.ModIndex = GetMiscValue(); - spellmod->value.LabelID = GetMiscValueB(); - m_spellmod = spellmod; - } + m_spellmod = new SpellFlatModifierByLabel(SpellModOp(GetMiscValue()), GetId(), GetBase(), GetMiscValueB()); static_cast(m_spellmod)->value.ModifierValue = GetAmount(); break; case SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL: if (!m_spellmod) - { - SpellPctModifierByLabel* spellmod = new SpellPctModifierByLabel(GetBase()); - spellmod->op = SpellModOp(GetMiscValue()); - - spellmod->type = SPELLMOD_LABEL_PCT; - spellmod->spellId = GetId(); - spellmod->value.ModIndex = GetMiscValue(); - spellmod->value.LabelID = GetMiscValueB(); - m_spellmod = spellmod; - } + m_spellmod = new SpellPctModifierByLabel(SpellModOp(GetMiscValue()), GetId(), GetBase(), GetMiscValueB()); static_cast(m_spellmod)->value.ModifierValue = 1.0f + CalculatePct(1.0f, GetAmount()); break; default: diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index f26e68c3572ca..522ae2aabf49e 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -2311,12 +2311,8 @@ class spell_dh_soul_furnace_conduit : public AuraScript { if (!spellMod) { - spellMod = new SpellModifierByClassMask(GetAura()); - spellMod->op = SpellModOp::HealingAndDamage; - spellMod->type = SPELLMOD_PCT; - spellMod->spellId = GetId(); - static_cast(spellMod)->mask = flag128(0x80000000); - static_cast(spellMod)->value = GetEffect(EFFECT_1)->GetAmount() + 1; + spellMod = new SpellPctModifierByClassMask(SpellModOp::HealingAndDamage, GetId(), GetAura(), flag128(0x80000000)); + static_cast(spellMod)->value = GetEffect(EFFECT_1)->GetAmount() + 1; } } } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index cd6098d0af9df..37ac7da2483ce 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -1322,20 +1322,12 @@ class spell_sha_hailstorm : public AuraScript void CalcCleaveMod(AuraEffect const* aurEff, SpellModifier*& spellMod) const { if (!spellMod) - { - SpellModifierByClassMask* mod = new SpellModifierByClassMask(GetAura()); - mod->op = SpellModOp::ChainTargets; - mod->type = SPELLMOD_FLAT; - mod->spellId = GetId(); - mod->mask = { 0x80000000, 0x00000000, 0x00000000, 0x00000000 }; - - spellMod = mod; - } + spellMod = new SpellFlatModifierByClassMask(SpellModOp::ChainTargets, GetId(), GetAura(), { 0x80000000, 0x00000000, 0x00000000, 0x00000000 }); if (AuraEffect const* hailstormPassive = GetUnitOwner()->GetAuraEffect(SPELL_SHAMAN_HAILSTORM_TALENT, EFFECT_0)) { int32 targetCap = hailstormPassive->GetAmount() / aurEff->GetBaseAmount(); - static_cast(spellMod)->value = std::min(targetCap, GetStackAmount()) + 1; + static_cast(spellMod)->value = std::min(targetCap, GetStackAmount()) + 1; } } From cbd81237f942c2cf11e5218491ebac873d146347 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 7 Apr 2026 09:23:30 +0200 Subject: [PATCH 035/175] Core: Updated allowed build to 12.0.1.66838 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_04_07_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_04_07_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 600bcbd44c445..d370e0421b0f4 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1568,7 +1568,14 @@ INSERT INTO `build_auth_key` VALUES (66709,'Mac','x64','WoWC',0x09FA12BA5EFFAB4991B67C8023859A0F), (66709,'Win','A64','WoW',0x57B21A0711347B6C331700CDB99D8062), (66709,'Win','x64','WoW',0xA5BE6D5379CADEE2D78ECF1F8D2B655B), -(66709,'Win','x64','WoWC',0x3099082D2374A9BDBCEF42B00811383A); +(66709,'Win','x64','WoWC',0x3099082D2374A9BDBCEF42B00811383A), +(66838,'Mac','A64','WoW',0x0DF087CEC90FD63C141640CDA44BED4D), +(66838,'Mac','A64','WoWC',0x5DFC3FC183FE0B1643BEEA2C8DD653D0), +(66838,'Mac','x64','WoW',0x6FBB1E9AE33FF34B1EB26AFD9C8AB9EA), +(66838,'Mac','x64','WoWC',0xF30391E577B93E4F405C12B7410DE4D2), +(66838,'Win','A64','WoW',0x0BF2D8325ACDA262E4067CA94E9A74E2), +(66838,'Win','x64','WoW',0x3311F0FE50F95B1F2FED73D88EBEF674), +(66838,'Win','x64','WoWC',0x16CB76E27B2953AD7155A9DBE924827F); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2012,7 +2019,8 @@ INSERT INTO `build_info` VALUES (66527,12,0,1,NULL), (66562,12,0,1,NULL), (66666,12,0,1,NULL), -(66709,12,0,1,NULL); +(66709,12,0,1,NULL), +(66838,12,0,1,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3625,7 +3633,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '66709', + `gamebuild` int unsigned NOT NULL DEFAULT '66838', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3640,7 +3648,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66709,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66838,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4199,7 +4207,8 @@ INSERT INTO `updates` VALUES ('2026_03_21_00_auth.sql','6D47EFD7FBCD159F5BC5B5A6020E61824280E92A','RELEASED','2026-03-21 00:08:26',0), ('2026_03_25_00_auth.sql','1407469EAE26B180ABA3A3802C429A031B241C67','RELEASED','2026-03-25 09:28:09',0), ('2026_03_26_00_auth.sql','85B672D6B69E3AF187F413B8D1788FF948744CDA','RELEASED','2026-03-26 21:31:03',0), -('2026_03_28_00_auth.sql','510B4485FF9865D7E2F6AEE8DFA8A50285362C8B','RELEASED','2026-03-28 01:05:32',0); +('2026_03_28_00_auth.sql','510B4485FF9865D7E2F6AEE8DFA8A50285362C8B','RELEASED','2026-03-28 01:05:32',0), +('2026_04_07_00_auth.sql','AE088A44CB5E1ECE7BC928B5471AD8D523074001','RELEASED','2026-04-07 09:20:28',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_04_07_00_auth.sql b/sql/updates/auth/master/2026_04_07_00_auth.sql new file mode 100644 index 0000000000000..6d5ba2cbba7ba --- /dev/null +++ b/sql/updates/auth/master/2026_04_07_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (66838); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(66838,12,0,1,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=66838 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(66838,'Mac','A64','WoW',0x0DF087CEC90FD63C141640CDA44BED4D), +(66838,'Mac','A64','WoWC',0x5DFC3FC183FE0B1643BEEA2C8DD653D0), +(66838,'Mac','x64','WoW',0x6FBB1E9AE33FF34B1EB26AFD9C8AB9EA), +(66838,'Mac','x64','WoWC',0xF30391E577B93E4F405C12B7410DE4D2), +(66838,'Win','A64','WoW',0x0BF2D8325ACDA262E4067CA94E9A74E2), +(66838,'Win','x64','WoW',0x3311F0FE50F95B1F2FED73D88EBEF674), +(66838,'Win','x64','WoWC',0x16CB76E27B2953AD7155A9DBE924827F); + +UPDATE `realmlist` SET `gamebuild`=66838 WHERE `gamebuild`=66709; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '66838'; From 5579f4403aeba198a987aa87f2da5e42f9dba761 Mon Sep 17 00:00:00 2001 From: Naddley Date: Tue, 7 Apr 2026 15:34:33 +0200 Subject: [PATCH 036/175] DB/TheDreamrift: Added init. spawns --- .../world/master/2026_04_07_00_world.sql | 324 ++++++++++++++++++ 1 file changed, 324 insertions(+) create mode 100644 sql/updates/world/master/2026_04_07_00_world.sql diff --git a/sql/updates/world/master/2026_04_07_00_world.sql b/sql/updates/world/master/2026_04_07_00_world.sql new file mode 100644 index 0000000000000..c723eba0dad91 --- /dev/null +++ b/sql/updates/world/master/2026_04_07_00_world.sql @@ -0,0 +1,324 @@ +SET @CGUID := 11000393; +SET @OGUID := 11000007; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+36; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 245555, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -787.592041015625, -1104.4722900390625, 674.07940673828125, 0, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Swarming Shade (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+1, 245575, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -786.60418701171875, -1115.8160400390625, 673.8848876953125, 0, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Haunting Essence (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+2, 245555, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -781.30816650390625, -1107.08740234375, 674.44989013671875, 1.942371964454650878, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Swarming Shade (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+3, 254774, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -766.6632080078125, -1136.6927490234375, 673.79669189453125, 0.806599557399749755, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Sergeant Quackers (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 123168 - Mod Scale 115-120%) +(@CGUID+4, 245556, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -789.8753662109375, -1116.27734375, 673.68304443359375, 3.501076698303222656, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Colossal Horror (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+5, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -744.56390380859375, -1093.241943359375, 679.43487548828125, 1.016281485557556152, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+6, 245555, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -788.3236083984375, -1101.9854736328125, 674.07781982421875, 5.043668746948242187, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Swarming Shade (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+7, 249066, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 1, -777.65277099609375, -1086.185791015625, 674.4271240234375, 4.425620079040527343, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Amarakk (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1270994 - Hold the Line!) +(@CGUID+8, 249280, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 1, -762.05731201171875, -1036.6180419921875, 674.36676025390625, 4.338056087493896484, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- En'liahn (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+9, 245555, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -749.8524169921875, -1100.49658203125, 677.4171142578125, 0, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Swarming Shade (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+10, 253131, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -761.59344482421875, -1030.9364013671875, 674.26953125, 0.122570976614952087, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Rift Potadpole (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+11, 245575, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -776.73956298828125, -1121.5208740234375, 674.255126953125, 0.033210199326276779, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Haunting Essence (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+12, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1395.4017333984375, -1124.0120849609375, 726.40887451171875, 1.565437197685241699, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +(@CGUID+13, 245556, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -796.70587158203125, -1111.998046875, 673.1402587890625, 4.521075248718261718, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Colossal Horror (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+14, 256116, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -792.02081298828125, -1112.888916015625, 673.601806640625, 0.530372798442840576, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Chimaerus (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+15, 245575, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -784.99481201171875, -1110.9322509765625, 674.1256103515625, 0, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Haunting Essence (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+16, 253131, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -804.8173828125, -1036.3851318359375, 673.2769775390625, 1.975446701049804687, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Rift Potadpole (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+17, 245555, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -778.6251220703125, -1112.8759765625, 674.52203369140625, 5.302561759948730468, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Swarming Shade (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+18, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -763.65814208984375, -1129.8997802734375, 677.9564208984375, 3.431071758270263671, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+19, 245575, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -796.4923095703125, -1100.3033447265625, 673.22271728515625, 0.942626953125, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Haunting Essence (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 80808 - Cosmetic - Alpha State 0%) +(@CGUID+20, 245555, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -786.15277099609375, -1105.8004150390625, 674.1788330078125, 0, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Swarming Shade (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+21, 253131, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -788.488525390625, -1132.46923828125, 672.62481689453125, 2.233999252319335937, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Rift Potadpole (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+22, 249279, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 1, -766.09552001953125, -1107.185791015625, 675.7486572265625, 3.503299951553344726, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Shul'ka Seila (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +(@CGUID+23, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -902.89300537109375, -1078.7047119140625, 651.3525390625, 3.120233535766601562, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +(@CGUID+24, 245569, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1367.41748046875, -1264.350830078125, 680.83599853515625, 0.430401623249053955, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Chimaerus (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 18950 - Invisibility and Stealth Detection, 1245748 - Alndust Energy, 80808 - Cosmetic - Alpha State 0%, 295475 - Mod Scale 35%) +(@CGUID+25, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -789.73095703125, -1255.195556640625, 449.121795654296875, 5.222716331481933593, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +(@CGUID+26, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1033.3594970703125, -1096.6724853515625, 688.58746337890625, 2.143465518951416015, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+27, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -869.4849853515625, -1113.739013671875, 663.9140625, 2.407356739044189453, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +(@CGUID+28, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -893.964111328125, -1183.1029052734375, 703.5771484375, 3.064356327056884765, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+29, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -703.7301025390625, -1646.969482421875, 573.26953125, 6.229364395141601562, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +(@CGUID+30, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -816.53460693359375, -1232.308837890625, 662.25335693359375, 3.370735883712768554, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+31, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -878.702392578125, -1069.8460693359375, 689.0340576171875, 5.784270286560058593, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+32, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1058.811767578125, -1180.6024169921875, 661.79571533203125, 1.474488019943237304, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +(@CGUID+33, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1316.7847900390625, -1010.940185546875, 669.6724853515625, 5.51616668701171875, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) (possible waypoints or random movement) +(@CGUID+34, 253132, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -948.98907470703125, -1311.2615966796875, 662.25335693359375, 0.771706342697143554, 604800, 4, 0, 1, NULL, NULL, NULL, NULL, 66527), -- Underrift Moth (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader) +(@CGUID+35, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1289.2391357421875, -1316.3736572265625, 554.36346435546875, 5.050086021423339843, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527), -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) (possible waypoints or random movement) +(@CGUID+36, 253457, 2939, 16531, 16531, '14,15,16,17', '0', 0, 0, 0, -1303.168212890625, -968.7440185546875, 735.102294921875, 5.915684223175048828, 604800, 0, 0, 0, NULL, NULL, NULL, NULL, 66527); -- Astray Manifestation (Area: The Dreamrift - Difficulty: Normal) CreateObject1 (Auras: 1238822 - [DNT] Azerite Shader, 1259121 - [DNT] Alnsight Cosmetic Alpha) +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+36; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Swarming Shade +(@CGUID+1, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Haunting Essence +(@CGUID+2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Swarming Shade - 80808 - Cosmetic - Alpha State 0% +(@CGUID+3, 0, 0, 0, 0, 0, 1, 0, 27, 0, 0, 0, 0, '123168'), -- Sergeant Quackers - 123168 - Mod Scale 115-120% +(@CGUID+4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Colossal Horror - 80808 - Cosmetic - Alpha State 0% +(@CGUID+5, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, '1238822'), -- Underrift Moth - 1238822 - [DNT] Azerite Shader +(@CGUID+6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Swarming Shade - 80808 - Cosmetic - Alpha State 0% +(@CGUID+7, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, '1270994'), -- Amarakk - 1270994 - Hold the Line! +(@CGUID+8, 0, 0, 0, 0, 0, 1, 0, 425, 0, 0, 0, 0, ''), -- En'liahn +(@CGUID+9, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Swarming Shade +(@CGUID+10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1238822'), -- Rift Potadpole - 1238822 - [DNT] Azerite Shader +(@CGUID+11, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Haunting Essence - 80808 - Cosmetic - Alpha State 0% +(@CGUID+13, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Colossal Horror - 80808 - Cosmetic - Alpha State 0% +(@CGUID+15, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Haunting Essence +(@CGUID+16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1238822'), -- Rift Potadpole - 1238822 - [DNT] Azerite Shader +(@CGUID+17, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Swarming Shade - 80808 - Cosmetic - Alpha State 0% +(@CGUID+19, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- Haunting Essence - 80808 - Cosmetic - Alpha State 0% +(@CGUID+20, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Swarming Shade +(@CGUID+21, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1238822'), -- Rift Potadpole - 1238822 - [DNT] Azerite Shader +(@CGUID+22, 0, 0, 0, 0, 0, 1, 0, 333, 0, 0, 0, 0, ''); -- Shul'ka Seila + +-- GameObject +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+0; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 253128, 2939, 16531, 16531, '14,15,16,17', '0', 0, -713.8680419921875, -1057.4114990234375, 677.00860595703125, 0.175276935100555419, 0, 0, 0.087526321411132812, 0.996162176132202148, 604800, 255, 1, 66527); -- Instance Portal (Area: The Dreamrift - Difficulty: Normal) CreateObject1 +DELETE FROM `gameobject_addon` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+0; + +-- Template Addon +DELETE FROM `creature_template_addon` WHERE `entry` IN (245569 /*245569 (Chimaerus) - Invisibility and Stealth Detection, Alndust Energy, Cosmetic - Alpha State 0%, Mod Scale 35%*/, 253457 /*253457 (Astray Manifestation) - [DNT] Azerite Shader, [DNT] Alnsight Cosmetic Alpha*/, 256116 /*256116 (Chimaerus)*/, 256995 /*256995 (En'liahn) - Ride Vehicle Hardcoded*/, 253131 /*253131 (Rift Potadpole) - [DNT] Azerite Shader*/, 249066 /*249066 (Amarakk) - Hold the Line!*/, 253132 /*253132 (Underrift Moth) - [DNT] Azerite Shader*/, 245556 /*245556 (Colossal Horror) - Cosmetic - Alpha State 0%*/, 254774 /*254774 (Sergeant Quackers) - Mod Scale 115-120%*/, 245575 /*245575 (Haunting Essence)*/, 245555 /*245555 (Swarming Shade)*/); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(245569, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 5, '18950 1245748 80808 295475'), -- 245569 (Chimaerus) - Invisibility and Stealth Detection, Alndust Energy, Cosmetic - Alpha State 0%, Mod Scale 35% +(253457, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 4, '1238822 1259121'), -- 253457 (Astray Manifestation) - [DNT] Azerite Shader, [DNT] Alnsight Cosmetic Alpha +(256116, 0, 0, 0, 0, 0, 1, 0, 0, 15498, 0, 0, 3, ''), -- 256116 (Chimaerus) +(256995, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 256995 (En'liahn) - Ride Vehicle Hardcoded +(253131, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1238822'), -- 253131 (Rift Potadpole) - [DNT] Azerite Shader +(249066, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1270994'), -- 249066 (Amarakk) - Hold the Line! +(253132, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, '1238822'), -- 253132 (Underrift Moth) - [DNT] Azerite Shader +(245556, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '80808'), -- 245556 (Colossal Horror) - Cosmetic - Alpha State 0% +(254774, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '123168'), -- 254774 (Sergeant Quackers) - Mod Scale 115-120% +(245575, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- 245575 (Haunting Essence) +(245555, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''); -- 245555 (Swarming Shade) + +-- Template +UPDATE `creature_template` SET `faction`=16, `speed_walk`=1.111111998558044433, `speed_run`=1.785714268684387207, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags3`=0x800000 WHERE `entry`=245569; -- Chimaerus +UPDATE `creature_template` SET `faction`=16, `speed_walk`=2.799999952316284179, `speed_run`=1.714285731315612792, `BaseAttackTime`=2000, `unit_flags`=0x2000340, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=253457; -- Astray Manifestation +UPDATE `creature_template` SET `faction`=3512, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x800 WHERE `entry`=249279; -- Shul'ka Seila +UPDATE `creature_template` SET `faction`=16, `speed_walk`=1.111111998558044433, `speed_run`=1.785714268684387207, `BaseAttackTime`=2000 WHERE `entry`=256116; -- Chimaerus +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0x41008001 WHERE `entry`=256995; -- En'liahn +UPDATE `creature_template` SET `faction`=190, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=253131; -- Rift Potadpole +UPDATE `creature_template` SET `faction`=3512, `npcflag`=2, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x800, `VehicleId`=9302 WHERE `entry`=249280; -- En'liahn +UPDATE `creature_template` SET `faction`=3512, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=249066; -- Amarakk +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=253132; -- Underrift Moth +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x2000040, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=245556; -- Colossal Horror +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `speed_run`=0.857142865657806396, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x800 WHERE `entry`=254774; -- Sergeant Quackers +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x340, `unit_flags2`=0x0801, `unit_flags3`=0x01000000|0x00002000 WHERE `entry`=245575; -- Haunting Essence +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x340, `unit_flags2`=0x0801, `unit_flags3`=0x01000000|0x00002000 WHERE `entry`=245555; -- Swarming Shade + +-- Creature Equip +DELETE FROM `creature_equip_template` WHERE (`ID`=1 AND `CreatureID` IN (249279,249280,249066)); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES +(249279, 1, 252376, 0, 0, 0, 0, 0, 0, 0, 0, 66527), -- Shul'ka Seila +(249280, 1, 254201, 0, 0, 0, 0, 0, 0, 0, 0, 66527), -- En'liahn +(249066, 1, 252376, 0, 0, 0, 0, 0, 0, 0, 0, 66527); -- Amarakk + +-- SpellClick +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = 249280; +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(249280, 46598, 1, 0); + +-- Vehicle +DELETE FROM `vehicle_template_accessory` WHERE (`entry`=249280 AND `seat_id`=0); +INSERT INTO `vehicle_template_accessory` (`entry`, `accessory_entry`, `seat_id`, `minion`, `description`, `summontype`, `summontimer`) VALUES +(249280, 256995, 0, 1, 'En\'liahn - En\'liahn', 0, 0); -- En'liahn - En'liahn + +-- Difficulty +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=3, `LevelScalingDeltaMax`=3, `ContentTuningID`=3607, `StaticFlags1`=0x20000000, `VerifiedBuild`=66527 WHERE (`Entry`=245569 AND `DifficultyID`=0); -- 245569 (Chimaerus) - Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3607, `StaticFlags1`=0x30000000, `VerifiedBuild`=66527 WHERE (`Entry`=253457 AND `DifficultyID`=0); -- 253457 (Astray Manifestation) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249279 AND `DifficultyID`=0); -- 249279 (Shul'ka Seila) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=3, `LevelScalingDeltaMax`=3, `ContentTuningID`=3607, `VerifiedBuild`=66527 WHERE (`Entry`=256116 AND `DifficultyID`=0); -- 256116 (Chimaerus) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=328, `StaticFlags1`=0x20000100, `VerifiedBuild`=66527 WHERE (`Entry`=256995 AND `DifficultyID`=0); -- 256995 (En'liahn) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=253131 AND `DifficultyID`=0); -- 253131 (Rift Potadpole) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249280 AND `DifficultyID`=0); -- 249280 (En'liahn) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=249066 AND `DifficultyID`=0); -- 249066 (Amarakk) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x30000000, `VerifiedBuild`=66527 WHERE (`Entry`=253132 AND `DifficultyID`=0); -- 253132 (Underrift Moth) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=245556 AND `DifficultyID`=0); -- 245556 (Colossal Horror) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `StaticFlags3`=0x40000, `VerifiedBuild`=66527 WHERE (`Entry`=254774 AND `DifficultyID`=0); -- 254774 (Sergeant Quackers) - CanSwim - AllowInteractionWhileInCombat +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=245575 AND `DifficultyID`=0); -- 245575 (Haunting Essence) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3607, `StaticFlags1`=0x10000000, `VerifiedBuild`=66527 WHERE (`Entry`=245555 AND `DifficultyID`=0); -- 245555 (Swarming Shade) - CanSwim + +-- Model +DELETE FROM `creature_model_info` WHERE `DisplayID` IN (142894, 137646, 138354, 138356, 136680, 138355, 117925, 142323, 140806, 140805); +INSERT INTO `creature_model_info` (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`, `VerifiedBuild`) VALUES +(142894, 6.216385841369628906, 1.5, 0, 66527), +(137646, 0.581943452358245849, 1.80000007152557373, 0, 66527), +(138354, 0.85696578025817871, 0, 0, 66527), +(138356, 0.85696578025817871, 0, 0, 66527), +(136680, 4.019346237182617187, 4, 0, 66527), +(138355, 0.85696578025817871, 0, 0, 66527), +(117925, 0.244999989867210388, 0.699999988079071044, 0, 66527), +(142323, 6.026553630828857421, 8, 0, 66527), +(140806, 0.5, 1.5, 0, 66527), +(140805, 0.5, 1.5, 0, 66527); + +-- Path for Chimaerus +SET @MOVERGUID := @CGUID+24; +SET @ENTRY := 245569; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 48.8461, 'Chimaerus - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -1326.6702, -1159.257, 680.889, NULL, 0), +(@PATH, 1, -1372.625, -1121.7795, 680.889, NULL, 0), +(@PATH, 2, -1427.2153, -1121.9358, 680.889, NULL, 0), +(@PATH, 3, -1481.4774, -1167.4392, 702.4301, NULL, 0), +(@PATH, 4, -1478.8698, -1226.9497, 694.1883, NULL, 0), +(@PATH, 5, -1430.5834, -1262.0938, 680.889, NULL, 0), +(@PATH, 6, -1399.3125, -1275.0486, 680.889, NULL, 0), +(@PATH, 7, -1346.5885, -1253.4757, 680.889, NULL, 0), +(@PATH, 8, -1326.5973, -1230.5695, 681.6359, NULL, 0), +(@PATH, 9, -1325.3334, -1207.382, 681.5873, NULL, 0); + +UPDATE `creature_template_addon` SET `PathId` = @PATH WHERE `entry` = 245569; +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; + +-- Path for Astray Manifestation +SET @MOVERGUID := @CGUID+23; +SET @ENTRY := 253457; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 26.5463, 'Astray Manifestation - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -914.04865, -1082.533, 651.35266, NULL, 0), +(@PATH, 1, -900.75867, -1119.7986, 651.35266, NULL, 0), +(@PATH, 2, -829.7049, -1294.7882, 651.35266, NULL, 0), +(@PATH, 3, -912.5903, -1383.9497, 651.35266, NULL, 0), +(@PATH, 4, -979.3333, -1407.7639, 651.35266, NULL, 0), +(@PATH, 5, -1025.5555, -1355.007, 651.35266, NULL, 0), +(@PATH, 6, -1051.1666, -1160.5695, 651.35266, NULL, 0), +(@PATH, 7, -886.15625, -1079.118, 651.35266, NULL, 0); + +UPDATE `creature` SET `position_x`=-914.04865, `position_y`=-1082.533, `position_z`=651.35266, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 3, 1, 4, '1238822 1259121'); + +-- Path for Astray Manifestation +SET @MOVERGUID := @CGUID+27; +SET @ENTRY := 253457; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 31.0180, 'Astray Manifestation - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -767.5607, -1420.4409, 761.4145, NULL, 0), +(@PATH, 1, -786.2465, -1320.3212, 714.5774, NULL, 0), +(@PATH, 2, -804.9323, -1220.2014, 667.7403, NULL, 0), +(@PATH, 3, -841.7344, -1179.5416, 663.91846, NULL, 0), +(@PATH, 4, -868.09894, -1115.0052, 663.91846, NULL, 0), +(@PATH, 5, -1103.231, -937.52954, 663.91846, NULL, 0), +(@PATH, 6, -1077.3403, -853.11456, 747.8006, NULL, 0), +(@PATH, 7, -790.8368, -1147.599, 747.8006, NULL, 0), +(@PATH, 8, -777.5278, -1340.2639, 738.9389, NULL, 0); + +UPDATE `creature` SET `position_x`=-767.5607, `position_y`=-1420.4409, `position_z`=761.4145, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 3, 1, 4, '1238822 1259121'); + +-- Path for Astray Manifestation +SET @MOVERGUID := @CGUID+32; +SET @ENTRY := 253457; +SET @PATHOFFSET := 2; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 38.1586, 'Astray Manifestation - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -1056.6041, -1143.1007, 659.01245, NULL, 0), +(@PATH, 1, -1060.0591, -1103.3403, 656.1166, NULL, 0), +(@PATH, 2, -1031.6233, -881.30035, 638.4762, NULL, 0), +(@PATH, 3, -1256.9618, -836.0174, 291.0168, NULL, 0), +(@PATH, 4, -1545.908, -762.23267, 638.4762, NULL, 0), +(@PATH, 5, -1670.1892, -1274.717, 661.67267, NULL, 0), +(@PATH, 6, -1160.7084, -1572.2692, 661.67267, NULL, 0), +(@PATH, 7, -1053.651, -1144.75, 661.67267, NULL, 0); + +UPDATE `creature` SET `position_x`=-1056.6041, `position_y`=-1143.1007, `position_z`=659.01245, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 3, 1, 4, '1238822 1259121'); + +-- Path for Astray Manifestation +SET @MOVERGUID := @CGUID+36; +SET @ENTRY := 253457; +SET @PATHOFFSET := 3; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 23.5770, 'Astray Manifestation - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -1371.6805, -963.25183, 711.4533, NULL, 0), +(@PATH, 1, -1279.4341, -1070.8038, 652.33527, NULL, 0), +(@PATH, 2, -1219.356, -1374.2223, 708.2347, NULL, 0), +(@PATH, 3, -1272.3854, -1497.2743, 711.2215, NULL, 0), +(@PATH, 4, -1505.5035, -1468.8872, 701.2363, NULL, 0), +(@PATH, 5, -1643.3993, -1230.4827, 740.2478, NULL, 0), +(@PATH, 6, -1429.7916, -975.10767, 740.2478, NULL, 0); + +UPDATE `creature` SET `position_x`=-1371.6805, `position_y`=-963.25183, `position_z`=711.4533, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 3, 1, 4, '1238822 1259121'); + +-- Path for Astray Manifestation +SET @MOVERGUID := @CGUID+33; +SET @ENTRY := 253457; +SET @PATHOFFSET := 4; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 14.0324, 'Astray Manifestation - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -1164.5659, -1025.3942, 815.8983, NULL, 0), +(@PATH, 1, -1681.4479, -1004.4375, 707.2032, NULL, 0), +(@PATH, 2, -1817.6442, -1077.4531, 717.4851, NULL, 0), +(@PATH, 3, -1865.1423, -1035.3229, 717.48517, NULL, 0), +(@PATH, 4, -1897.4149, -960.434, 736.22473, NULL, 0), +(@PATH, 5, -1827.783, -918.77954, 734.0309, NULL, 0), +(@PATH, 6, -1539.033, -759.4149, 719.5612, NULL, 0), +(@PATH, 7, -1387.2778, -928.3906, 734.0309, NULL, 0); + +UPDATE `creature` SET `position_x`=-1164.5659, `position_y`=-1025.3942, `position_z`=815.8983, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 3, 1, 4, '1238822 1259121'); + +-- Path for Astray Manifestation +SET @MOVERGUID := @CGUID+12; +SET @ENTRY := 253457; +SET @PATHOFFSET := 5; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 33.2557, 'Astray Manifestation - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -1465.5643, -1411.0834, 715.65674, NULL, 0), +(@PATH, 1, -1477.5521, -1388.1459, 727.24725, NULL, 0), +(@PATH, 2, -1489.5399, -1365.2084, 738.83777, NULL, 0), +(@PATH, 3, -1403.5608, -1210.8247, 727.24725, NULL, 0), +(@PATH, 4, -1390.7048, -987.8594, 727.24725, NULL, 0), +(@PATH, 5, -1331.1459, -847.26044, 727.24725, NULL, 0), +(@PATH, 6, -1681.6406, -791.1285, 727.24725, NULL, 0), +(@PATH, 7, -1886.1719, -953.566, 727.24725, NULL, 0), +(@PATH, 8, -1641.0573, -1412.9913, 727.24725, NULL, 0), +(@PATH, 9, -1510.7031, -1449.2952, 727.24725, NULL, 0); + +UPDATE `creature` SET `position_x`=-1465.5643, `position_y`=-1411.0834, `position_z`=715.65674, `orientation`=0, `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 3, 1, 4, '1238822 1259121'); From 8371ebb1c608a054822117fc8980e159fa0be3ce Mon Sep 17 00:00:00 2001 From: Naddley Date: Tue, 7 Apr 2026 20:11:46 +0200 Subject: [PATCH 037/175] DB/DenOfNalorakk: Added init. spawns --- .../world/master/2026_04_07_01_world.sql | 609 ++++++++++++++++++ 1 file changed, 609 insertions(+) create mode 100644 sql/updates/world/master/2026_04_07_01_world.sql diff --git a/sql/updates/world/master/2026_04_07_01_world.sql b/sql/updates/world/master/2026_04_07_01_world.sql new file mode 100644 index 0000000000000..9ad6b6d1da048 --- /dev/null +++ b/sql/updates/world/master/2026_04_07_01_world.sql @@ -0,0 +1,609 @@ +SET @CGUID := 11000430; +SET @OGUID := 11000008; + +SET @NPCTEXTID := 610009; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+216; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 211137, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4438.4150390625, -4921.20849609375, 14.58650875091552734, 3.177709341049194335, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+1, 246409, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4480.17529296875, -4908.5849609375, 13.32403278350830078, 5.545542716979980468, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Zul'jarra (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+2, 213786, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4476.8349609375, -4912.71337890625, 13.44758033752441406, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+3, 211151, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4437.63623046875, -4914.20849609375, 14.64127731323242187, 5.729500293731689453, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+4, 211149, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4475.705078125, -4907.26220703125, 13.49157619476318359, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+5, 211149, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4433.28466796875, -4923.51416015625, 14.78823280334472656, 1.828124880790710449, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+6, 254929, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4467.2255859375, -4894.455078125, 13.57268047332763671, 5.258516788482666015, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Papa (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+7, 211152, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4440.2509765625, -4917.16650390625, 14.58111858367919921, 3.685639142990112304, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+8, 211150, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4433.20654296875, -4915.392578125, 15.29960918426513671, 4.279088497161865234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+9, 255407, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4449.5205078125, -4925.291015625, 14.09206771850585937, 3.681848526000976562, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Gulpling (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+10, 254927, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4474.1474609375, -4897.76953125, 13.57105064392089843, 3.972083091735839843, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Fetid Roach (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+11, 211151, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4478.541015625, -4917.8818359375, 13.37950325012207031, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+12, 255827, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4449.09912109375, -4912.29541015625, 13.85124778747558593, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 472701 - Helper) +(@CGUID+13, 211111, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4434.58349609375, -4918.73291015625, 14.76352214813232421, 3.90152287483215332, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+14, 211137, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4484.6630859375, -4908.6005859375, 13.30395793914794921, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+15, 255407, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4481.931640625, -4936.021484375, 13.06563472747802734, 3.101282358169555664, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Gulpling (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+16, 255407, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4464.86083984375, -4938.68505859375, 12.39996337890625, 1.00405287742614746, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Gulpling (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+17, 210930, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4477.38525390625, -4914.24462890625, 13.42934703826904296, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+18, 248897, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4480.892578125, -4911.9130859375, 13.34032630920410156, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ethereal Pyre (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+19, 254927, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4446.09619140625, -4916.6796875, 13.93190860748291015, 2.007129669189453125, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Fetid Roach (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+20, 255407, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4474.4619140625, -4918.17138671875, 13.48775577545166015, 0.010216200724244117, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Gulpling (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+21, 254927, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4468.18798828125, -4927.39501953125, 13.55449676513671875, 2.450300931930541992, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Fetid Roach (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+22, 245139, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4618.7119140625, -4888.28125, -21.8822879791259765, 3.262831449508666992, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Stormbound Mystic (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+23, 245716, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4308.97998046875, -5178.6494140625, 100.17791748046875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Barrel of Apples (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1279403 - [DNT] Lootable Offering Visual) +(@CGUID+24, 257419, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4330.251953125, -5025.93212890625, 100.42822265625, 2.2030792236328125, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Warding Incense (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+25, 210930, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4333.78564453125, -4955.4619140625, 103.3016738891601562, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+26, 255420, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4490.02001953125, -4891.142578125, 12.90264892578125, 3.758415460586547851, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Sprocket (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+27, 248908, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4339.3359375, -4942.72412109375, 104.4021530151367187, 6.150688648223876953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ethereal Pyre (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+28, 245638, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4219.08837890625, -5087.80029296875, 89.54437255859375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Salmon Pool (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1239051 - Salmon Pool) +(@CGUID+29, 210930, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4304.49462890625, -4987.8369140625, 96.5413970947265625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+30, 245139, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4817.939453125, -4869.314453125, -55.9288215637207031, 3.334614276885986328, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Stormbound Mystic (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+31, 244889, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4316.54931640625, -4958.38525390625, 100.6486129760742187, 0.01468520238995552, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Loa Speaker Nanea (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1263952 - [DNT] Nanea Shoulders, 1247531 - Display Color Override, 1249100 - Burden of War, 1250975 - Ghostly Projection) +(@CGUID+32, 211151, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4302.09375, -4979.32666015625, 97.408599853515625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+33, 261055, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4526.462890625, -4905.73974609375, 13.767913818359375, 3.141592741012573242, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ethereal Pyre (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+34, 210932, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4550.49853515625, -4902.86474609375, 13.72763824462890625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 422360 - Bot AI Follow Advert) +(@CGUID+35, 211150, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4487.4775390625, -4915.517578125, 13.26296234130859375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+36, 254924, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4341.3896484375, -5012.4912109375, 102.8901748657226562, 1.996457815170288085, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+37, 255407, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4478.92724609375, -4887.203125, 12.71645832061767578, 4.157253742218017578, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Gulpling (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+38, 245143, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4617.31591796875, -4894.09912109375, -21.8033332824707031, 3.28849959373474121, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ruthless Totemcaller (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1250569 - Wear Helmet, 42459 - Dual Wield) +(@CGUID+39, 245716, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4115.5322265625, -5127.048828125, 104.6384658813476562, 5.971379756927490234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Barrel of Apples (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1279403 - [DNT] Lootable Offering Visual) +(@CGUID+40, 245139, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4859.12060546875, -4864.46728515625, -53.6967315673828125, 3.163949251174926757, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Stormbound Mystic (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+41, 254923, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4328.0078125, -4994.6875, 100.5382232666015625, 2.050176858901977539, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+42, 252041, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4305.54443359375, -5008.47900390625, 97.27301025390625, 1.577386021614074707, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Satiated Avatar of Starvation (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 1254815 - Well Fed) +(@CGUID+43, 241813, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4347.0869140625, -5012.51025390625, 103.9473876953125, 0.64805692434310913, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+44, 211152, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4301.2412109375, -4974.033203125, 98.43219757080078125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+45, 211149, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4296.41162109375, -4987.4375, 95.2532806396484375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+46, 254927, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4549.12255859375, -4901.73779296875, 13.79124641418457031, 3.257672071456909179, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Fetid Roach (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+47, 211137, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4290.3046875, -4986.2568359375, 93.477813720703125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+48, 244941, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4297.0078125, -4982.2587890625, 96.3289031982421875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Berry Bush (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1239302 - Alluring Scent, 1279403 - [DNT] Lootable Offering Visual) +(@CGUID+49, 245716, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4348.29541015625, -5170.24658203125, 104.465484619140625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Barrel of Apples (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1279403 - [DNT] Lootable Offering Visual) +(@CGUID+50, 245750, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4166.1875, -4971.96533203125, 93.03708648681640625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Berry Bush (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1239302 - Alluring Scent, 1279403 - [DNT] Lootable Offering Visual) +(@CGUID+51, 245139, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4939.99462890625, -4854.51904296875, -32.7397537231445312, 3.163949251174926757, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Stormbound Mystic (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+52, 245146, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4934.5380859375, -4851.00537109375, -32.6845703125, 3.31565260887145996, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Grizzled Warbringer (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+53, 245146, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4777.251953125, -4874.1630859375, -38.994781494140625, 3.160244226455688476, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Grizzled Warbringer (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+54, 210932, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4626.60498046875, -4894.27587890625, -23.0550651550292968, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 422360 - Bot AI Follow Advert) +(@CGUID+55, 241813, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4339.36181640625, -5022.92626953125, 101.5020523071289062, 1.28887641429901123, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+56, 245146, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4935.328125, -4859.43603515625, -32.6822471618652343, 3.31565260887145996, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Grizzled Warbringer (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+57, 211150, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4300.6162109375, -4984.21728515625, 96.2666778564453125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+58, 254924, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4337.8017578125, -4995.2294921875, 102.7182159423828125, 1.107898116111755371, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+59, 210932, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4509.6962890625, -4908.15625, 13.42204666137695312, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 422360 - Bot AI Follow Advert) +(@CGUID+60, 211152, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4488.88818359375, -4905.3681640625, 13.27858448028564453, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+61, 213786, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4302.1640625, -4983.61279296875, 96.5389404296875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+62, 245716, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4123.947265625, -5115.08349609375, 101.1563186645507812, 6.077584743499755859, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Barrel of Apples (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1279403 - [DNT] Lootable Offering Visual) +(@CGUID+63, 245139, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4619.6337890625, -4899.13525390625, -21.8275947570800781, 3.163949251174926757, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Stormbound Mystic (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+64, 246409, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4957.33984375, -4844.56982421875, -23.4106006622314453, 6.021385669708251953, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Zul'jarra (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+65, 254927, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4649.22119140625, -4904.72900390625, -26.7110633850097656, 0, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Fetid Roach (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+66, 254927, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4640.88525390625, -4863.93212890625, -28.6435375213623046, 2.541669845581054687, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Fetid Roach (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+67, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4276.720703125, -4987.51318359375, 88.53133392333984375, 1.162187099456787109, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+68, 245698, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4248.134765625, -5169.5068359375, 98.57867431640625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Salmon Pool (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1239214 - Salmon Pool) +(@CGUID+69, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4202.27197265625, -5024.53515625, 87.772003173828125, 0.517398953437805175, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+70, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4314.9853515625, -5068.40087890625, 100.1189041137695312, 1.3554764986038208, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+71, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4159.67529296875, -4998.91650390625, 90.4255828857421875, 5.078410625457763671, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+72, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4194.7890625, -4981.765625, 85.82221221923828125, 0.336734890937805175, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+73, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4238.6181640625, -4991.59716796875, 87.22705078125, 1.453580975532531738, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 18950 - Invisibility and Stealth Detection) +(@CGUID+74, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4297.47509765625, -5108.5009765625, 98.45742034912109375, 1.371822714805603027, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 18950 - Invisibility and Stealth Detection) +(@CGUID+75, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4194.78466796875, -5062.63525390625, 89.0661163330078125, 2.30993056297302246, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+76, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4257.19873046875, -5047.56103515625, 99.497833251953125, 5.31028604507446289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+77, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4193.353515625, -4986.76904296875, 86.2714691162109375, 0.721004664897918701, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+78, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4290.24560546875, -5045.375, 98.1533203125, 1.270578980445861816, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+79, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4169.13916015625, -5021.7900390625, 88.11284637451171875, 0, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+80, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4272.04443359375, -5002.78662109375, 86.61473846435546875, 3.722004890441894531, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+81, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4259.25341796875, -4967.3837890625, 90.25521087646484375, 6.110576152801513671, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+82, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4163.8076171875, -4968.34375, 93.4427642822265625, 3.98015451431274414, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+83, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4262.8681640625, -5003.30224609375, 85.98007965087890625, 5.090020179748535156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+84, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4311.2900390625, -5120.046875, 99.84200286865234375, 1.072675466537475585, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+85, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4196.47216796875, -4986.28125, 86.011474609375, 0.727106869220733642, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1236801 - [DNT] Cosmetic - Sleep Zzz) +(@CGUID+86, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4238.31591796875, -5065.32470703125, 94.53623199462890625, 0, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+87, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4153.71435546875, -5000.5244140625, 90.42510986328125, 6.055881977081298828, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+88, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4253.87841796875, -5072.59033203125, 99.197509765625, 0.917462170124053955, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 18950 - Invisibility and Stealth Detection) +(@CGUID+89, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4166.16748046875, -4997.205078125, 90.3368072509765625, 3.45103001594543457, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+90, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4317.15283203125, -5064.7412109375, 100.36285400390625, 3.845853805541992187, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+91, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4310.6728515625, -5035.890625, 98.8306884765625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+92, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4261.97900390625, -5052.546875, 98.46916961669921875, 4.530139923095703125, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+93, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4259.73876953125, -4963.93603515625, 90.1566925048828125, 4.526015758514404296, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1236801 - [DNT] Cosmetic - Sleep Zzz) +(@CGUID+94, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4298.71728515625, -5129.1943359375, 99.0542449951171875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+95, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4195.94287109375, -5067.8837890625, 89.83428955078125, 5.781849384307861328, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+96, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4209.4677734375, -4981.6025390625, 87.273193359375, 4.329421043395996093, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+97, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4259.05126953125, -5051.41845703125, 98.8541717529296875, 4.189478397369384765, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+98, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4299.31005859375, -5045.44287109375, 99.68535614013671875, 1.709743022918701171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+99, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4193.19775390625, -5058.064453125, 88.56396484375, 5.054661273956298828, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+100, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4199.869140625, -5065.158203125, 88.92901611328125, 0.68765801191329956, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+101, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4160.27001953125, -5003.47021484375, 90.155120849609375, 5.966549873352050781, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+102, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4162.0634765625, -5003.6318359375, 90.08978271484375, 2.180411577224731445, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+103, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4315.2646484375, -5121.43603515625, 100.1631927490234375, 1.813080549240112304, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+104, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4323.880859375, -5132.380859375, 100.2061614990234375, 2.21068429946899414, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+105, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4189.52001953125, -5060.6943359375, 88.67983245849609375, 5.539064407348632812, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+106, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4224.63720703125, -4996.95849609375, 85.7831573486328125, 2.532696723937988281, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+107, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4162.017578125, -4992.3349609375, 91.71701812744140625, 5.136224746704101562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+108, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4258.3330078125, -4968.75, 89.977508544921875, 5.297764778137207031, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+109, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4298.2646484375, -5039.376953125, 100.1323165893554687, 4.859283447265625, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+110, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4211.77001953125, -5028.67724609375, 85.844818115234375, 6.196368217468261718, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+111, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4178.68603515625, -5021.0380859375, 87.4886932373046875, 2.971761703491210937, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 18950 - Invisibility and Stealth Detection) +(@CGUID+112, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4315.2490234375, -5117.1181640625, 99.5706634521484375, 4.365396022796630859, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+113, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4319.96533203125, -5114.60400390625, 98.47939300537109375, 4.365396022796630859, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+114, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4300, -5079.166015625, 98.4610595703125, 0.846240162849426269, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+115, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4279.92724609375, -5090.98095703125, 103.9194183349609375, 1.305745720863342285, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+116, 247012, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4339.86181640625, -4931.36962890625, 105.6365966796875, 2.245645046234130859, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Waystone (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1246125 - [DNT]Waystone Visual) +(@CGUID+117, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4167.89306640625, -5039.314453125, 89.98850250244140625, 2.809684038162231445, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+118, 252041, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4328.01416015625, -5143.81787109375, 100.8490982055664062, 3.022559881210327148, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Satiated Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 1254815 - Well Fed) +(@CGUID+119, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4163.9619140625, -5037.578125, 90.179046630859375, 5.614151954650878906, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+120, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4165.0244140625, -5041.68212890625, 90.390838623046875, 0.720505952835083007, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+121, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4265.4765625, -5151.0712890625, 98.29998779296875, 3.345350027084350585, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil) +(@CGUID+122, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4282.7509765625, -5157.26220703125, 99.46709442138671875, 4.187730789184570312, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+123, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4344.4287109375, -5165.81591796875, 102.77386474609375, 1.948713898658752441, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+124, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4160.2490234375, -5041.203125, 90.23519134521484375, 1.589136958122253417, 7200, 0, 0, 0, NULL, 768, 1, 8193, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+125, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4180.13818359375, -5085.896484375, 93.126800537109375, 2.695410490036010742, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+126, 211152, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4350.9443359375, -5164.0556640625, 104.1047286987304687, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+127, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4265.236328125, -5147.91845703125, 98.1591033935546875, 3.497744560241699218, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+128, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4350.87353515625, -5163.13916015625, 103.8205795288085937, 1.149100422859191894, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+129, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4191.93798828125, -5100.20751953125, 94.5496978759765625, 5.981145858764648437, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+130, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4339.7958984375, -5163.78662109375, 102.0494232177734375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+131, 252041, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4186.77783203125, -5101.76416015625, 94.81771087646484375, 2.422978639602661132, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Satiated Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 1254815 - Well Fed) +(@CGUID+132, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4307.88916015625, -5170.77587890625, 100.1666793823242187, 4.672759532928466796, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+133, 213786, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4345.759765625, -5167.73095703125, 103.20416259765625, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+134, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4312.87353515625, -5170.67529296875, 100.380218505859375, 3.129043817520141601, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+135, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4166.99072265625, -5071.39404296875, 90.21814727783203125, 4.466759681701660156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 18950 - Invisibility and Stealth Detection) +(@CGUID+136, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4350.337890625, -5170.330078125, 104.6348724365234375, 2.991391420364379882, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+137, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4265.1787109375, -5154.048828125, 98.2900390625, 3.077419042587280273, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+138, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4325.462890625, -5173.408203125, 101.100738525390625, 1.639182686805725097, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+139, 211150, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4343.9931640625, -5167.43408203125, 102.6626052856445312, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+140, 211151, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4345.0390625, -5172.484375, 102.963226318359375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+141, 211137, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4353.6416015625, -5167.84716796875, 105.005218505859375, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+142, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4301.2724609375, -5171.79150390625, 100.4922256469726562, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+143, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4237.87060546875, -5151.1416015625, 100.427490234375, 6.076594829559326171, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+144, 211150, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4308.5244140625, -5174.0869140625, 100.2121124267578125, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+145, 211151, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4303.6318359375, -5175.126953125, 100.3645858764648437, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+146, 211152, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4313.87353515625, -5174.1025390625, 100.2881927490234375, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+147, 211149, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4348.66845703125, -5174.205078125, 104.2550048828125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+148, 213786, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4307.70166015625, -5172.57275390625, 100.2204360961914062, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+149, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4216.642578125, -5141.15966796875, 98.96282958984375, 4.487066268920898437, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+150, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4214.22998046875, -5145.67529296875, 99.0020904541015625, 0.727836072444915771, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+151, 260195, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4308.90625, -5177.61279296875, 130.37884521484375, 1.803434610366821289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Magical Mountain Seagull (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+152, 213786, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4248.83056640625, -5170.0625, 98.0625457763671875, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+153, 211151, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4243.564453125, -5166.3525390625, 98.072998046875, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+154, 211150, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4253.43603515625, -5169.76025390625, 98.0625457763671875, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+155, 241816, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4218.79150390625, -5145.421875, 98.8695068359375, 2.964620351791381835, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+156, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4161.5166015625, -5088.21728515625, 93.1201629638671875, 0, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+157, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4216.11279296875, -5144.68408203125, 99.01770782470703125, 1.589136958122253417, 7200, 0, 0, 0, NULL, 768, 1, 8193, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+158, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4212.408203125, -5150.63720703125, 99.267364501953125, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+159, 211149, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4304.69287109375, -5179.001953125, 100.532989501953125, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+160, 211149, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4251.009765625, -5164.63916015625, 98.01171112060546875, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+161, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4306.97900390625, -5181.1630859375, 100.5985870361328125, 0.66098487377166748, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+162, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4306.55712890625, -5177.673828125, 100.3314361572265625, 5.706905841827392578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+163, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4248.94091796875, -5165.71533203125, 98.0565185546875, 4.667697906494140625, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State, 18950 - Invisibility and Stealth Detection) +(@CGUID+164, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4145.5068359375, -5071.82666015625, 94.671875, 5.885994911193847656, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+165, 211137, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4312.7568359375, -5178.61962890625, 100.4895858764648437, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+166, 245752, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4288.74462890625, -4958.48974609375, 118.754302978515625, 5.046964168548583984, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Keen-Eyed Screecher (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+167, 211137, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4250.25, -5173.96337890625, 98.0738677978515625, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+168, 211152, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4245.2275390625, -5173.90478515625, 98.07555389404296875, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+169, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4186.89013671875, -5136.83251953125, 98.3038482666015625, 5.506074428558349609, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+170, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4138.30712890625, -5069.79345703125, 94.2024993896484375, 4.167443275451660156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+171, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4143.49658203125, -5071.8369140625, 94.57928466796875, 0.226878955960273742, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+172, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4244.36279296875, -5171, 98.0625457763671875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+173, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4140.45654296875, -5079.7705078125, 95.1507568359375, 4.646525382995605468, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+174, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4218.986328125, -5170.55908203125, 99.88683319091796875, 0.860709130764007568, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+175, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4122.916015625, -5091.666015625, 100.3120803833007812, 6.172528266906738281, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+176, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4141.3037109375, -5103.34716796875, 96.84561920166015625, 2.149580955505371093, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+177, 254923, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4181.25, -5158.333984375, 98.3612060546875, 1.723273277282714843, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Snake (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+178, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4159.970703125, -5153.546875, 99.6666717529296875, 5.014565944671630859, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+179, 211149, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4126.44970703125, -5116.783203125, 100.755767822265625, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+180, 245825, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4269.046875, -5209.73779296875, 110.0806961059570312, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- LT Offering Stalker (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+181, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4164.296875, -5158.2744140625, 98.47396087646484375, 0.36899694800376892, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+182, 257419, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4188.23291015625, -5175.63525390625, 101.3555068969726562, 0.772132396697998046, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Warding Incense (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+183, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4160.77099609375, -5156.0087890625, 99.35590362548828125, 1.606670141220092773, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+184, 211137, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4123.76025390625, -5111.12841796875, 100.9570159912109375, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+185, 213786, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4127.5380859375, -5115.28466796875, 100.56402587890625, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+186, 254924, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4141.576171875, -5139.302734375, 99.7413482666015625, 4.712388992309570312, 7200, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Timid Treehopper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 214567 - Mod Scale 90-110%) +(@CGUID+187, 211150, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4126.158203125, -5113.47900390625, 100.69781494140625, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+188, 241809, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4167.27099609375, -5157.61474609375, 98.18576812744140625, 3.450577974319458007, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Curious Yearling (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+189, 241808, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4164.86474609375, -5152.72216796875, 99.22570037841796875, 1.080504059791564941, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Territorial Matriarch (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241219 - Matriarch's Vigil, 1236801 - [DNT] Cosmetic - Sleep Zzz) +(@CGUID+190, 241814, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4125.63037109375, -5127.359375, 102.47222900390625, 2.584401845932006835, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Earthwhisper Tender (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: ) +(@CGUID+191, 210930, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4125.77978515625, -5125.02978515625, 101.9416122436523437, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 422354 - Bot AI Follow Advert) +(@CGUID+192, 241813, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4124.6962890625, -5121.02978515625, 100.9601287841796875, 3.3152313232421875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Thornclaw Gatherer (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1241217 - Shredding Claws) +(@CGUID+193, 211151, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4122.37158203125, -5118.408203125, 101.3485183715820312, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+194, 211152, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4119.55908203125, -5115.88720703125, 101.9957275390625, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+195, 245855, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4119.859375, -5124.17724609375, 103.0399322509765625, 0.164674967527389526, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit of Hunger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+196, 244041, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4267.2958984375, -5214.05712890625, 109.379364013671875, 3.883824825286865234, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Meat Pile (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+197, 211151, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4116.2587890625, -5125.53662109375, 103.8976593017578125, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+198, 213786, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4117.65087890625, -5128.9443359375, 104.4093093872070312, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+199, 211150, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4116.080078125, -5129.7744140625, 104.8579788208007812, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+200, 211149, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4117.11181640625, -5127.59716796875, 104.2301788330078125, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+201, 211152, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4114.5166015625, -5124.2255859375, 104.3929824829101562, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+202, 211137, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4113.5224609375, -5129.81591796875, 104.935455322265625, 5.423309326171875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Path Helper (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 424283 - Passive) +(@CGUID+203, 241805, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4259.126953125, -5245.3037109375, 109.0399322509765625, 3.45283055305480957, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+204, 241805, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4232.71630859375, -5238.892578125, 109.0399322509765625, 5.085548877716064453, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+205, 241805, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4254.1708984375, -5239.85791015625, 109.039093017578125, 4.085669517517089843, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+206, 241805, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4247.38916015625, -5236.91845703125, 109.0395584106445312, 4.72601175308227539, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+207, 241805, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4239.6484375, -5236.54150390625, 109.0399322509765625, 4.894677162170410156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+208, 244061, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4212.3427734375, -5235.68603515625, 108.8611526489257812, 6.251031398773193359, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Mushroom Pile (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+209, 241805, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4228.189453125, -5244.392578125, 109.0399322509765625, 5.614514827728271484, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Avatar of Starvation (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1227959 - Mask State) +(@CGUID+210, 241812, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4242.38720703125, -5250.6494140625, 109.0399322509765625, 1.530134081840515136, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- The Hoardmonger (Area: The Foraging - Difficulty: Normal) CreateObject1 (Auras: 1235414 - Display Color Override, 1236823 - [DNT] Cosmetic - Sleep Zzz, 422356 - Bot AI Follow Advert, 42459 - Dual Wield) +(@CGUID+211, 244036, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 0, 0, 4266.3662109375, -5266.60791015625, 109.1284027099609375, 2.123056650161743164, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Bone Pile (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@CGUID+212, 245143, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4701.15966796875, -4922.6474609375, -10.0277271270751953, 1.901738762855529785, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ruthless Totemcaller (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1250569 - Wear Helmet, 42459 - Dual Wield) +(@CGUID+213, 245190, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 4695.03662109375, -4886.84375, -26.3428077697753906, 3.199767827987670898, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Loyal Saberfang (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+214, 245143, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4689.8193359375, -4849.26416015625, -10.0273609161376953, 4.01878976821899414, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ruthless Totemcaller (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1250569 - Wear Helmet, 42459 - Dual Wield) +(@CGUID+215, 245145, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 1, 4695.361328125, -4883.95654296875, -26.3762245178222656, 3.291513681411743164, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Bonded Beasttamer (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@CGUID+216, 246404, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 0, 0, 5015.9599609375, -4846, -23.4111995697021484, 3.281219005584716796, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Nalorakk (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 (Auras: 1243865 - Immune to Daze [DNT], 1281970 - [DNT] Disable VO, 1254622 - Watchful Gaze, 422362 - Bot AI Follow Advert) +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+216; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, ''), -- Zul'jarra +(@CGUID+30, 0, 0, 0, 0, 0, 1, 0, 375, 0, 0, 0, 4, ''), -- Stormbound Mystic +(@CGUID+40, 0, 0, 0, 0, 0, 1, 0, 375, 0, 0, 0, 4, ''), -- Stormbound Mystic +(@CGUID+64, 0, 0, 0, 0, 0, 0, 0, 0, 27383, 0, 0, 4, ''), -- Zul'jarra +(@CGUID+83, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, '1241217'), -- Thornclaw Gatherer - 1241217 - Shredding Claws +(@CGUID+85, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1236801'), -- Curious Yearling - 1236801 - [DNT] Cosmetic - Sleep Zzz +(@CGUID+93, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1236801'), -- Keen-Eyed Screecher - 1236801 - [DNT] Cosmetic - Sleep Zzz +(@CGUID+95, 0, 0, 0, 0, 0, 1, 0, 431, 0, 0, 0, 0, ''), -- Curious Yearling +(@CGUID+98, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, ''), -- Earthwhisper Tender +(@CGUID+100, 0, 0, 0, 0, 0, 1, 0, 431, 0, 0, 0, 0, ''), -- Curious Yearling +(@CGUID+104, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- Timid Treehopper - 214567 - Mod Scale 90-110% +(@CGUID+106, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- Snake - 214567 - Mod Scale 90-110% +(@CGUID+108, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- Timid Treehopper - 214567 - Mod Scale 90-110% +(@CGUID+109, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, ''), -- Earthwhisper Tender +(@CGUID+110, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Keen-Eyed Screecher +(@CGUID+112, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1241219'), -- Territorial Matriarch - 1241219 - Matriarch's Vigil +(@CGUID+113, 0, 0, 0, 0, 0, 1, 0, 431, 0, 0, 0, 0, ''), -- Curious Yearling +(@CGUID+115, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- Keen-Eyed Screecher +(@CGUID+120, 0, 0, 0, 0, 0, 1, 0, 431, 0, 0, 0, 0, ''), -- Curious Yearling +(@CGUID+123, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, '1241217'), -- Thornclaw Gatherer - 1241217 - Shredding Claws +(@CGUID+124, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Territorial Matriarch +(@CGUID+127, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Curious Yearling +(@CGUID+128, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, '1241217'), -- Thornclaw Gatherer - 1241217 - Shredding Claws +(@CGUID+132, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1241217'), -- Thornclaw Gatherer - 1241217 - Shredding Claws +(@CGUID+137, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Curious Yearling +(@CGUID+149, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Keen-Eyed Screecher +(@CGUID+150, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Keen-Eyed Screecher +(@CGUID+151, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- Magical Mountain Seagull +(@CGUID+157, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Territorial Matriarch +(@CGUID+162, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, ''), -- Earthwhisper Tender +(@CGUID+164, 0, 0, 0, 0, 0, 1, 0, 431, 0, 0, 0, 0, '1241217'), -- Thornclaw Gatherer - 1241217 - Shredding Claws +(@CGUID+170, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, ''), -- Earthwhisper Tender +(@CGUID+171, 0, 0, 0, 0, 0, 1, 0, 69, 0, 0, 0, 0, ''), -- Earthwhisper Tender +(@CGUID+189, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1241219 1236801'), -- Territorial Matriarch - 1241219 - Matriarch's Vigil, 1236801 - [DNT] Cosmetic - Sleep Zzz +(@CGUID+190, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, ''), -- Earthwhisper Tender +(@CGUID+192, 0, 0, 0, 0, 0, 1, 0, 64, 0, 0, 0, 0, '1241217'), -- Thornclaw Gatherer - 1241217 - Shredding Claws +(@CGUID+195, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1227959'); -- Spirit of Hunger - 1227959 - Mask State + +-- GameObject +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+10; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 570512, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 4527.6708984375, -4905.71044921875, 13.63506698608398437, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 7200, 255, 1, 66838), -- Cave Door (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@OGUID+1, 616377, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 4480.689453125, -4912.03759765625, 13.36997413635253906, 3.263772249221801757, 0, 0, -0.99813461303710937, 0.061051756143569946, 7200, 255, 1, 66838), -- Ethereal Pyre (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@OGUID+2, 252248, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 4410.66943359375, -4919.94091796875, 21.45351982116699218, 3.033326148986816406, 0, 0, 0.99853515625, 0.054106760770082473, 7200, 255, 1, 66838), -- Instance Portal (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@OGUID+3, 531150, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 4241.68603515625, -5284.25, 109.6128463745117187, 4.782205104827880859, 0, 0, -0.68199729919433593, 0.731354713439941406, 7200, 255, 1, 66838), -- Water Door (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@OGUID+4, 613266, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 4339.45068359375, -4942.67529296875, 103.9313735961914062, 3.070511341094970703, -0.03115701675415039, 0.004240036010742187, 0.998870849609375, 0.035613581538200378, 7200, 255, 1, 66838), -- Ethereal Pyre (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@OGUID+5, 581781, 2825, 16368, 16640, '1,2,8,23,205', '0', 0, 4954.72216796875, -4853.25537109375, -23.009073257446289, 3.24634718894958496, 0, 0, -0.99862861633300781, 0.052353221923112869, 7200, 255, 0, 66838), -- Vine Door (Area: Dreamer's Passage - Difficulty: Normal) CreateObject1 +(@OGUID+6, 531148, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 4248.20654296875, -5290.28662109375, 166.0091552734375, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448513984680175, 7200, 255, 1, 66838), -- Tunnel Waterfall (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@OGUID+7, 613253, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 4348.57568359375, -5170.421875, 104.0381927490234375, 3.149658918380737304, -0.15089941024780273, 0.045528411865234375, 0.98749542236328125, 0.003059073351323604, 7200, 255, 1, 66838), -- Barrel of Apples (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@OGUID+8, 613256, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 4309.0224609375, -5178.6474609375, 100.3107681274414062, 3.132735729217529296, -0.01547527313232421, 0.031268119812011718, 0.999379158020019531, 0.004913235083222389, 7200, 255, 1, 66838), -- Barrel of Apples (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@OGUID+9, 613262, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 4123.626953125, -5115.15087890625, 101.0173568725585937, 1.253117799758911132, 0.019550800323486328, 0.052631378173828125, 0.584254264831542968, 0.809626221656799316, 7200, 255, 1, 66838), -- Barrel of Apples (Area: The Foraging - Difficulty: Normal) CreateObject1 +(@OGUID+10, 613254, 2825, 16368, 16388, '1,2,8,23,205', '0', 0, 4115.15625, -5127.47216796875, 104.2875289916992187, 0.174526706337928771, -0.09450769424438476, 0.078387260437011718, 0.094057083129882812, 0.987966120243072509, 7200, 255, 1, 66838); -- Barrel of Apples (Area: The Foraging - Difficulty: Normal) CreateObject1 +DELETE FROM `gameobject_addon` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+10; +INSERT INTO `gameobject_addon` (`guid`, `parent_rotation0`, `parent_rotation1`, `parent_rotation2`, `parent_rotation3`, `WorldEffectID`, `AIAnimKitID`) VALUES +(@OGUID+0, 0, 0, 0.998134791851043701, -0.06104859709739685, 0, 0), -- Cave Door +(@OGUID+1, 0, 0, 0.998134791851043701, -0.06104859709739685, 0, 0); -- Ethereal Pyre + +-- Template Addon +DELETE FROM `creature_template_addon` WHERE `entry` IN (241812 /*241812 (The Hoardmonger) - Display Color Override, [DNT] Cosmetic - Sleep Zzz, Bot AI Follow Advert, Dual Wield*/, 241805 /*241805 (Avatar of Starvation) - Mask State*/, 260195 /*260195 (Magical Mountain Seagull)*/, 247012 /*247012 (Waystone) - [DNT]Waystone Visual*/, 241816 /*241816 (Keen-Eyed Screecher) - [DNT] Cosmetic - Sleep Zzz*/, 241809 /*241809 (Curious Yearling) - [DNT] Cosmetic - Sleep Zzz*/, 241808 /*241808 (Territorial Matriarch) - Matriarch's Vigil*/, 245855 /*245855 (Spirit of Hunger) - Mask State, Invisibility and Stealth Detection*/, 245698 /*245698 (Salmon Pool) - Salmon Pool*/, 249411 /*249411 (Loa Speaker Nanea) - Ride Vehicle Hardcoded*/, 245146 /*245146 (Grizzled Warbringer)*/, 245750 /*245750 (Berry Bush) - Alluring Scent, [DNT] Lootable Offering Visual*/, 244941 /*244941 (Berry Bush) - Alluring Scent, [DNT] Lootable Offering Visual*/, 241813 /*241813 (Thornclaw Gatherer) - Shredding Claws*/, 252041 /*252041 (Satiated Avatar of Starvation) - Mask State, Well Fed*/, 254923 /*254923 (Snake) - Mod Scale 90-110%*/, 245143 /*245143 (Ruthless Totemcaller) - Wear Helmet, Dual Wield*/, 254924 /*254924 (Timid Treehopper) - Mod Scale 90-110%*/, 244889 /*244889 (Loa Speaker Nanea) - [DNT] Nanea Shoulders, Display Color Override, Burden of War, Ghostly Projection*/, 245148 /*245148 (Grizzled Warbringer) - Ride Vehicle Hardcoded*/, 245638 /*245638 (Salmon Pool) - Salmon Pool*/, 255420 /*255420 (Sprocket) - Mod Scale 90-110%*/, 245716 /*245716 (Barrel of Apples) - [DNT] Lootable Offering Visual*/, 245139 /*245139 (Stormbound Mystic)*/, 255827 /*255827 (Helper) - Helper*/, 254927 /*254927 (Fetid Roach) - Mod Scale 90-110%*/, 255407 /*255407 (Gulpling) - Mod Scale 90-110%*/, 254929 /*254929 (Papa) - Mod Scale 90-110%*/, 246409 /*246409 (Zul'jarra)*/, 246404); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(241812, 0, 0, 0, 0, 0, 1, 0, 0, 22246, 0, 0, 0, '1235414 1236823 422356 42459'), -- 241812 (The Hoardmonger) - Display Color Override, [DNT] Cosmetic - Sleep Zzz, Bot AI Follow Advert, Dual Wield +(241805, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1227959'), -- 241805 (Avatar of Starvation) - Mask State +(260195, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 260195 (Magical Mountain Seagull) +(247012, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '1246125'), -- 247012 (Waystone) - [DNT]Waystone Visual +(241816, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 241816 (Keen-Eyed Screecher) - [DNT] Cosmetic - Sleep Zzz +(241809, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 241809 (Curious Yearling) - [DNT] Cosmetic - Sleep Zzz +(241808, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1241219'), -- 241808 (Territorial Matriarch) - Matriarch's Vigil +(245855, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1227959 18950'), -- 245855 (Spirit of Hunger) - Mask State, Invisibility and Stealth Detection +(245698, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '1239214'), -- 245698 (Salmon Pool) - Salmon Pool +(249411, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 249411 (Loa Speaker Nanea) - Ride Vehicle Hardcoded +(245146, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, ''), -- 245146 (Grizzled Warbringer) +(245750, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '1239302 1279403'), -- 245750 (Berry Bush) - Alluring Scent, [DNT] Lootable Offering Visual +(244941, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '1239302 1279403'), -- 244941 (Berry Bush) - Alluring Scent, [DNT] Lootable Offering Visual +(241813, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1241217'), -- 241813 (Thornclaw Gatherer) - Shredding Claws +(252041, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1227959 1254815'), -- 252041 (Satiated Avatar of Starvation) - Mask State, Well Fed +(254923, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 254923 (Snake) - Mod Scale 90-110% +(245143, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1250569 42459'), -- 245143 (Ruthless Totemcaller) - Wear Helmet, Dual Wield +(254924, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 254924 (Timid Treehopper) - Mod Scale 90-110% +(244889, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1263952 1247531 1249100 1250975'), -- 244889 (Loa Speaker Nanea) - [DNT] Nanea Shoulders, Display Color Override, Burden of War, Ghostly Projection +(245148, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- 245148 (Grizzled Warbringer) - Ride Vehicle Hardcoded +(245638, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '1239051'), -- 245638 (Salmon Pool) - Salmon Pool +(255420, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 255420 (Sprocket) - Mod Scale 90-110% +(245716, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '1279403'), -- 245716 (Barrel of Apples) - [DNT] Lootable Offering Visual +(245139, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, ''), -- 245139 (Stormbound Mystic) +(255827, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '472701'), -- 255827 (Helper) - Helper +(254927, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 254927 (Fetid Roach) - Mod Scale 90-110% +(255407, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 255407 (Gulpling) - Mod Scale 90-110% +(254929, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '214567'), -- 254929 (Papa) - Mod Scale 90-110% +(246409, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, ''), -- 246409 (Zul'jarra) +(246404, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '1243865 1281970 1254622 422362'); -- 246404 (Nalorakk) - Immune to Daze [DNT], [DNT] Disable VO, Watchful Gaze, Bot AI Follow Advert + +DELETE FROM `gameobject_template_addon` WHERE `entry` IN (549042 /*Salmon Pool*/, 527975 /*Collision*/, 548681 /*Salmon Pool*/, 581781 /*Vine Door*/, 531150 /*Water Door*/, 570512 /*Cave Door*/, 531148); +INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`, `WorldEffectID`, `AIAnimKitID`) VALUES +(549042, 190, 0x0, 0, 0), -- Salmon Pool +(527975, 35, 0x800020, 0, 0), -- Collision +(548681, 190, 0x0, 0, 0), -- Salmon Pool +(581781, 0, 0x800030, 0, 0), -- Vine Door +(531150, 0, 0x30, 0, 0), -- Water Door +(570512, 0, 0x30, 0, 0), -- Cave Door +(531148, 0, 0x10, 0, 0); -- Tunnel Waterfall + +-- Template +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40008001 WHERE `entry`=244036; -- Bone Pile +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x340 WHERE `entry`=241812; -- The Hoardmonger +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40008001 WHERE `entry`=244061; -- Mushroom Pile +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x140, `unit_flags2`=0x800 WHERE `entry`=241805; -- Avatar of Starvation +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40008001 WHERE `entry`=244041; -- Meat Pile +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000800, `unit_flags3`=0x8001, `flags_extra` = 128 WHERE `entry`=245825; -- LT Offering Stalker +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry` IN (245752, 241816); -- Keen-Eyed Screecher +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=260195; -- Magical Mountain Seagull +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0x41008001 WHERE `entry`=247012; -- Waystone +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=241814; -- Earthwhisper Tender +UPDATE `creature_template` SET `faction`=16, `speed_walk`=1.60000002384185791, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=241808; -- Territorial Matriarch +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=245855; -- Spirit of Hunger +UPDATE `creature_template` SET `faction`=2136, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=241809; -- Curious Yearling +UPDATE `creature_template` SET `faction`=190, `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4000800, `unit_flags3`=0x41000001 WHERE `entry` IN (245698, 245638); -- Salmon Pool +UPDATE `creature_template` SET `faction`=35, `speed_walk`=1.60000002384185791, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800, `unit_flags3`=0x1080000 WHERE `entry`=250991; -- You +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags`=0x2000040, `unit_flags2`=0x4000000, `unit_flags3`=0x8001 WHERE `entry`=249411; -- Loa Speaker Nanea +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800, `VehicleId`=9015 WHERE `entry`=245146; -- Grizzled Warbringer +UPDATE `creature_template` SET `faction`=190, `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4000800, `unit_flags3`=0x41000001 WHERE `entry` IN (245750, 244941); -- Berry Bush +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=241813; -- Thornclaw Gatherer +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=252041; -- Satiated Avatar of Starvation +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=254923; -- Snake +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=245143; -- Ruthless Totemcaller +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=254924; -- Timid Treehopper +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0x41008001 WHERE `entry` IN (261055, 248897); -- Ethereal Pyre +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags`=0x340, `VehicleId`=9091 WHERE `entry`=244889; -- Loa Speaker Nanea +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x800 WHERE `entry`=245148; -- Grizzled Warbringer +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4000800, `unit_flags3`=0x41008001 WHERE `entry`=248908; -- Ethereal Pyre +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255420; -- Sprocket +UPDATE `creature_template` SET `faction`=190, `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4000800, `unit_flags3`=0x41000001 WHERE `entry`=257419; -- Warding Incense +UPDATE `creature_template` SET `faction`=190, `npcflag`=16777216, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4000800, `unit_flags3`=0x41008001 WHERE `entry`=245716; -- Barrel of Apples +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=245139; -- Stormbound Mystic +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000000, `unit_flags3`=0x41008001 WHERE `entry`=255827; -- Helper +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=254927; -- Fetid Roach +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=255407; -- Gulpling +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1 WHERE `entry`=254929; -- Papa +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000000, `unit_flags3`=0x41008001, `flags_extra` = 128 WHERE `entry`=213786; -- Path Helper +UPDATE `creature_template` SET `faction`=1665, `speed_run`=0.992062866687774658, `BaseAttackTime`=2000, `unit_flags`=0x2000, `unit_flags3`=0x1 WHERE `entry`=246409; -- Zul'jarra +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x340 WHERE `entry`=246404; -- Nalorakk +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=245145; -- Bonded Beasttamer +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=245190; -- Loyal Saberfang + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=244036 AND `DifficultyID`=0); -- 244036 (Bone Pile) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241812 AND `DifficultyID`=0); -- 241812 (The Hoardmonger) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=244061 AND `DifficultyID`=0); -- 244061 (Mushroom Pile) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241805 AND `DifficultyID`=0); -- 241805 (Avatar of Starvation) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=244041 AND `DifficultyID`=0); -- 244041 (Meat Pile) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245825 AND `DifficultyID`=0); -- 245825 (LT Offering Stalker) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x30000000, `VerifiedBuild`=66838 WHERE (`Entry`=245752 AND `DifficultyID`=0); -- 245752 (Keen-Eyed Screecher) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=260195 AND `DifficultyID`=0); -- 260195 (Magical Mountain Seagull) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=247012 AND `DifficultyID`=0); -- 247012 (Waystone) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241814 AND `DifficultyID`=0); -- 241814 (Earthwhisper Tender) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241808 AND `DifficultyID`=0); -- 241808 (Territorial Matriarch) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245855 AND `DifficultyID`=0); -- 245855 (Spirit of Hunger) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241809 AND `DifficultyID`=0); -- 241809 (Curious Yearling) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241816 AND `DifficultyID`=0); -- 241816 (Keen-Eyed Screecher) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=245698 AND `DifficultyID`=0); -- 245698 (Salmon Pool) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=250991 AND `DifficultyID`=0); -- 250991 (You) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3906, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=249411 AND `DifficultyID`=0); -- 249411 (Loa Speaker Nanea) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245146 AND `DifficultyID`=0); -- 245146 (Grizzled Warbringer) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=245750 AND `DifficultyID`=0); -- 245750 (Berry Bush) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=244941 AND `DifficultyID`=0); -- 244941 (Berry Bush) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=241813 AND `DifficultyID`=0); -- 241813 (Thornclaw Gatherer) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=252041 AND `DifficultyID`=0); -- 252041 (Satiated Avatar of Starvation) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66838 WHERE (`Entry`=254923 AND `DifficultyID`=0); -- 254923 (Snake) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245143 AND `DifficultyID`=0); -- 245143 (Ruthless Totemcaller) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66838 WHERE (`Entry`=254924 AND `DifficultyID`=0); -- 254924 (Timid Treehopper) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=210932 AND `DifficultyID`=0); -- 210932 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=261055 AND `DifficultyID`=0); -- 261055 (Ethereal Pyre) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=244889 AND `DifficultyID`=0); -- 244889 (Loa Speaker Nanea) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=245148 AND `DifficultyID`=0); -- 245148 (Grizzled Warbringer) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=245638 AND `DifficultyID`=0); -- 245638 (Salmon Pool) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=248908 AND `DifficultyID`=0); -- 248908 (Ethereal Pyre) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66838 WHERE (`Entry`=255420 AND `DifficultyID`=0); -- 255420 (Sprocket) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=257419 AND `DifficultyID`=0); -- 257419 (Warding Incense) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=245716 AND `DifficultyID`=0); -- 245716 (Barrel of Apples) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245139 AND `DifficultyID`=0); -- 245139 (Stormbound Mystic) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=248897 AND `DifficultyID`=0); -- 248897 (Ethereal Pyre) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `VerifiedBuild`=66838 WHERE (`DifficultyID`=1 AND `Entry` IN (210930,213786)); +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=211111 AND `DifficultyID`=1); -- 211111 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=255827 AND `DifficultyID`=0); -- 255827 (Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66838 WHERE (`Entry`=254927 AND `DifficultyID`=0); -- 254927 (Fetid Roach) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66838 WHERE (`Entry`=255407 AND `DifficultyID`=0); -- 255407 (Gulpling) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=211150 AND `DifficultyID`=1); -- 211150 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=211152 AND `DifficultyID`=1); -- 211152 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `VerifiedBuild`=66838 WHERE (`Entry`=254929 AND `DifficultyID`=0); -- 254929 (Papa) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=211149 AND `DifficultyID`=1); -- 211149 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=211151 AND `DifficultyID`=1); -- 211151 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=246409 AND `DifficultyID`=0); -- 246409 (Zul'jarra) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2940, `VerifiedBuild`=66838 WHERE (`Entry`=211137 AND `DifficultyID`=1); -- 211137 (Path Helper) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=246404 AND `DifficultyID`=0); -- 246404 (Nalorakk) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245145 AND `DifficultyID`=0); -- 245145 (Bonded Beasttamer) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3906, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245190 AND `DifficultyID`=0); -- 245190 (Loyal Saberfang) - CanSwim + +-- Gossip +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+0; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 294690, 0, 0, 0, 0, 0, 0, 0, 66838); -- 616377 (Ethereal Pyre) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=40087 AND `TextID`=@NPCTEXTID+0); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(40087, @NPCTEXTID+0, 66838); -- 616377 (Ethereal Pyre) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=40087 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(40087, 135009, 0, 0, '', 0, 0, 0, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); + +DELETE FROM `gossip_menu` WHERE (`MenuID`=40088 AND `TextID`=@NPCTEXTID+0); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(40088, @NPCTEXTID+0, 66838); -- 613266 (Ethereal Pyre) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=40088 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(40088, 135010, 0, 0, '', 0, 0, 0, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); + +-- Vehicle +DELETE FROM `vehicle_template_accessory` WHERE (`seat_id`=0 AND `entry` IN (245146,244889)) OR (`entry`=249280 AND `seat_id`=0); +INSERT INTO `vehicle_template_accessory` (`entry`, `accessory_entry`, `seat_id`, `minion`, `description`, `summontype`, `summontimer`) VALUES +(245146, 245148, 0, 0, 'Grizzled Warbringer - Grizzled Warbringer', 8, 0), -- Grizzled Warbringer - Grizzled Warbringer +(244889, 249411, 0, 1, 'Loa Speaker Nanea - Loa Speaker Nanea', 8, 0), -- Loa Speaker Nanea - Loa Speaker Nanea +(249280, 256995, 0, 1, 'En\'liahn - En\'liahn', 8, 0); -- En'liahn - En'liahn + +-- SpellClick +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (245716,245638,244941,245750,245698,245146,249280); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(245716, 1239300, 1, 0), +(245638, 1239040, 1, 0), +(244941, 1239001, 1, 0), +(245750, 1239001, 1, 0), +(245698, 1239227, 1, 0), +(245146, 46598, 1, 0), +(249280, 46598, 1, 0); + +-- Path for Spirit of Hunger +SET @MOVERGUID := @CGUID+74; +SET @ENTRY := 245855; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Spirit of Hunger - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4300.1206, -5077.9966, 98.46927, NULL, 0), +(@PATH, 1, 4308.752, -5053.174, 98.51996, NULL, 0), +(@PATH, 2, 4316.5454, -5015.401, 98.19628, NULL, 5482), +(@PATH, 3, 4308.752, -5053.174, 98.51996, NULL, 0), +(@PATH, 4, 4300.1206, -5077.9966, 98.46927, NULL, 0), +(@PATH, 5, 4300.3267, -5094.3594, 98.391304, NULL, 0), +(@PATH, 6, 4296.2725, -5114.4653, 98.485306, NULL, 0), +(@PATH, 7, 4299.4966, -5130.5957, 98.92946, NULL, 5017), +(@PATH, 8, 4296.2725, -5114.4653, 98.485306, NULL, 0), +(@PATH, 9, 4300.3267, -5094.3594, 98.391304, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1227959 18950'); + +-- Path for Spirit of Hunger +SET @MOVERGUID := @CGUID+135; +SET @ENTRY := 245855; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Spirit of Hunger - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4161.4272, -5116.4966, 95.84447, NULL, 0), +(@PATH, 1, 4167.5845, -5133.1772, 97.36687, NULL, 0), +(@PATH, 2, 4194.3193, -5151.53, 98.306915, NULL, 5274), +(@PATH, 3, 4167.5845, -5133.1772, 97.36687, NULL, 0), +(@PATH, 4, 4161.4272, -5116.4966, 95.84447, NULL, 0), +(@PATH, 5, 4162.1294, -5090.8145, 93.3008, NULL, 0), +(@PATH, 6, 4166.9907, -5071.394, 90.21815, NULL, 5261), +(@PATH, 7, 4162.127, -5090.8086, 93.3236, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1227959 18950'); + +-- Path for Thornclaw Gatherer +SET @MOVERGUID := @CGUID+55; +SET @ENTRY := 241813; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Thornclaw Gatherer - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4338.541, -5024.672, 100.87391, NULL, 6747), +(@PATH, 1, 4340.8066, -5017.9307, 102.55328, NULL, 1896); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1241217'); + +-- Path for Thornclaw Gatherer +SET @MOVERGUID := @CGUID+43; +SET @ENTRY := 241813; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Thornclaw Gatherer - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4342.5903, -5015.9165, 103.055984, NULL, 1356), +(@PATH, 1, 4347.087, -5012.5103, 103.94739, NULL, 5013); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1241217'); + +-- Path for Thornclaw Gatherer +SET @MOVERGUID := @CGUID+78; +SET @ENTRY := 241813; +SET @PATHOFFSET := 2; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Thornclaw Gatherer - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4296.9434, -5043.1855, 99.66165, NULL, 3319), +(@PATH, 1, 4290.2456, -5045.375, 98.15332, 1.27057, 5768); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1241217'); + +-- Path for Thornclaw Gatherer +SET @MOVERGUID := @CGUID+128; +SET @ENTRY := 241813; +SET @PATHOFFSET := 3; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Thornclaw Gatherer - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4348.8003, -5167.7603, 103.923935, NULL, 1831), +(@PATH, 1, 4351.9106, -5160.8335, 104.07092, 1.1491, 4247); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1241217'); + +-- Path for Thornclaw Gatherer +SET @MOVERGUID := @CGUID+173; +SET @ENTRY := 241813; +SET @PATHOFFSET := 4; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Thornclaw Gatherer - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 4138.3813, -5073.7153, 94.83013, NULL, 4119), +(@PATH, 1, 4140.5234, -5078.759, 95.05564, NULL, 0), +(@PATH, 2, 4139.3066, -5081.6235, 95.50525, NULL, 4962); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '1241217'); From 8225b5b71c5f38836dc3146e5d45377086408859 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 8 Apr 2026 18:40:58 +0200 Subject: [PATCH 038/175] Core/Spells: Change spell effect value type to double --- sql/base/characters_database.sql | 11 +- .../master/2026_04_08_00_characters.sql | 7 + .../world/master/2026_04_08_00_world.sql | 11 + src/server/game/Combat/ThreatManager.cpp | 8 +- src/server/game/Combat/ThreatManager.h | 14 +- .../game/Entities/GameObject/GameObject.cpp | 2 +- src/server/game/Entities/Object/Object.cpp | 19 +- src/server/game/Entities/Object/Object.h | 1 - src/server/game/Entities/Pet/Pet.cpp | 8 +- src/server/game/Entities/Player/Player.cpp | 28 +- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Entities/Unit/StatSystem.cpp | 4 +- src/server/game/Entities/Unit/Unit.cpp | 158 +++++----- src/server/game/Entities/Unit/Unit.h | 48 +-- src/server/game/Handlers/ItemHandler.cpp | 2 +- src/server/game/Miscellaneous/SharedDefines.h | 2 +- .../Miscellaneous/enuminfo_SharedDefines.cpp | 6 +- .../game/Spells/Auras/SpellAuraEffects.cpp | 161 +++++----- .../game/Spells/Auras/SpellAuraEffects.h | 29 +- src/server/game/Spells/Auras/SpellAuras.cpp | 8 +- src/server/game/Spells/Auras/SpellAuras.h | 14 +- src/server/game/Spells/Spell.cpp | 54 ++-- src/server/game/Spells/Spell.h | 9 +- src/server/game/Spells/SpellDefines.h | 36 +-- src/server/game/Spells/SpellEffects.cpp | 286 +++++++++--------- src/server/game/Spells/SpellHistory.cpp | 23 +- src/server/game/Spells/SpellInfo.cpp | 74 ++++- src/server/game/Spells/SpellInfo.h | 6 +- src/server/game/Spells/SpellMgr.cpp | 14 +- src/server/game/Spells/SpellMgr.h | 8 +- src/server/game/Spells/SpellScript.cpp | 13 +- src/server/game/Spells/SpellScript.h | 19 +- .../boss_garothi_worldbreaker.cpp | 10 +- .../DalaranSewers/arena_dalaran_sewers.cpp | 4 +- .../battleground_seething_shore.cpp | 4 +- .../BrokenIsles/TrialOfValor/boss_guarm.cpp | 8 +- src/server/scripts/Commands/cs_debug.cpp | 4 +- .../BaradinHold/boss_argaloth.cpp | 2 +- .../BaradinHold/boss_occuthar.cpp | 4 +- .../Gilneas/gilneas_chapter_1.cpp | 6 +- .../boss_maiden_of_virtue_rtk.cpp | 4 +- .../ReturnToKarazhan/boss_shade_of_medivh.cpp | 2 +- .../ScarletEnclave/chapter2.cpp | 2 +- .../ShadowfangKeep/shadowfang_keep.cpp | 2 +- .../SunwellPlateau/boss_kalecgos.cpp | 4 +- .../ZulGurub/boss_mandokir.cpp | 8 +- .../EasternKingdoms/zone_stormwind_city.cpp | 4 +- .../scripts/Events/love_is_in_the_air.cpp | 18 +- src/server/scripts/Events/pilgrims_bounty.cpp | 10 +- .../BlackfathomDeeps/blackfathom_deeps.cpp | 2 +- .../Kalimdor/Firelands/boss_baleroc.cpp | 6 +- .../boss_temple_guardian_anhuur.cpp | 2 +- .../boss_dark_shaman_koranthal.cpp | 2 +- .../Kalimdor/zone_dustwallow_marsh.cpp | 8 +- .../KhazAlgar/TheStoneVault/boss_edna.cpp | 2 +- .../ShrineOfTheStorm/boss_lord_stormsong.cpp | 8 +- .../boss_tidesage_council.cpp | 4 +- .../WaycrestManor/boss_heartsbane_triad.cpp | 2 +- .../WaycrestManor/boss_soulbound_goliath.cpp | 2 +- .../AzjolNerub/Ahnkahet/ahnkahet.cpp | 8 +- .../RubySanctum/boss_halion.cpp | 4 +- .../RubySanctum/boss_saviana_ragefire.cpp | 2 +- .../TrialOfTheChampion/boss_black_knight.cpp | 8 +- .../boss_anubarak_trial.cpp | 2 +- .../TrialOfTheCrusader/boss_lord_jaraxxus.cpp | 8 +- .../boss_northrend_beasts.cpp | 8 +- .../TrialOfTheCrusader/boss_twin_valkyr.cpp | 2 +- .../DraktharonKeep/boss_trollgore.cpp | 4 +- .../ForgeOfSouls/boss_bronjahm.cpp | 2 +- .../HallsOfReflection/boss_marwyn.cpp | 2 +- .../PitOfSaron/boss_krickandick.cpp | 2 +- .../boss_blood_prince_council.cpp | 6 +- .../boss_blood_queen_lana_thel.cpp | 4 +- .../boss_deathbringer_saurfang.cpp | 8 +- .../IcecrownCitadel/boss_festergut.cpp | 2 +- .../boss_icecrown_gunship_battle.cpp | 6 +- .../IcecrownCitadel/boss_lord_marrowgar.cpp | 4 +- .../boss_professor_putricide.cpp | 24 +- .../IcecrownCitadel/boss_rotface.cpp | 6 +- .../IcecrownCitadel/boss_sindragosa.cpp | 6 +- .../IcecrownCitadel/boss_the_lich_king.cpp | 16 +- .../IcecrownCitadel/icecrown_citadel.cpp | 4 +- .../Nexus/EyeOfEternity/boss_malygos.cpp | 2 +- .../scripts/Northrend/Nexus/Oculus/oculus.cpp | 10 +- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_freya.cpp | 12 +- .../Ulduar/Ulduar/boss_general_vezax.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_kologarn.cpp | 6 +- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 8 +- .../Northrend/Ulduar/Ulduar/boss_xt002.cpp | 6 +- .../Ulduar/Ulduar/boss_yogg_saron.cpp | 18 +- .../scripts/Northrend/zone_borean_tundra.cpp | 8 +- .../scripts/Northrend/zone_dragonblight.cpp | 14 +- .../scripts/Northrend/zone_howling_fjord.cpp | 12 +- .../scripts/Northrend/zone_icecrown.cpp | 8 +- .../scripts/Northrend/zone_sholazar_basin.cpp | 12 +- .../scripts/Northrend/zone_storm_peaks.cpp | 18 +- .../scripts/Northrend/zone_wintergrasp.cpp | 10 +- src/server/scripts/Northrend/zone_zuldrak.cpp | 4 +- .../Outland/BlackTemple/black_temple.cpp | 2 +- .../BlackTemple/boss_reliquary_of_souls.cpp | 2 +- .../BlackTemple/boss_shade_of_akama.cpp | 2 +- .../TempestKeep/Eye/boss_astromancer.cpp | 2 +- .../scripts/Outland/boss_doomlord_kazzak.cpp | 2 +- .../Outland/zone_shadowmoon_valley.cpp | 4 +- .../Pandaria/zone_the_wandering_isle.cpp | 2 +- src/server/scripts/Pet/pet_generic.cpp | 4 +- .../boss_anduin_wrynn.cpp | 10 +- .../Shadowlands/Torghast/spell_torghast.cpp | 4 +- src/server/scripts/Spells/spell_azerite.cpp | 6 +- src/server/scripts/Spells/spell_dh.cpp | 50 +-- src/server/scripts/Spells/spell_dk.cpp | 46 +-- src/server/scripts/Spells/spell_druid.cpp | 86 +++--- src/server/scripts/Spells/spell_evoker.cpp | 14 +- src/server/scripts/Spells/spell_generic.cpp | 84 ++--- src/server/scripts/Spells/spell_hunter.cpp | 32 +- src/server/scripts/Spells/spell_item.cpp | 20 +- src/server/scripts/Spells/spell_mage.cpp | 54 ++-- src/server/scripts/Spells/spell_monk.cpp | 46 +-- src/server/scripts/Spells/spell_paladin.cpp | 32 +- src/server/scripts/Spells/spell_pet.cpp | 130 ++++---- src/server/scripts/Spells/spell_priest.cpp | 170 +++++------ src/server/scripts/Spells/spell_quest.cpp | 22 +- src/server/scripts/Spells/spell_rogue.cpp | 28 +- src/server/scripts/Spells/spell_shaman.cpp | 108 +++---- src/server/scripts/Spells/spell_warlock.cpp | 26 +- src/server/scripts/Spells/spell_warrior.cpp | 54 ++-- .../scripts/World/areatrigger_scripts.cpp | 2 +- .../AtalDazar/boss_priestess_alun_za.cpp | 10 +- .../Zandalar/AtalDazar/boss_volkaal.cpp | 2 +- .../Zandalar/Underrot/boss_elder_leaxa.cpp | 4 +- 131 files changed, 1345 insertions(+), 1224 deletions(-) create mode 100644 sql/updates/characters/master/2026_04_08_00_characters.sql create mode 100644 sql/updates/world/master/2026_04_08_00_world.sql diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 9c127807f8ddb..97f3e5662bfee 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -547,8 +547,8 @@ CREATE TABLE `character_aura_effect` ( `spell` int unsigned NOT NULL, `effectMask` int unsigned NOT NULL, `effectIndex` tinyint unsigned NOT NULL, - `amount` int NOT NULL DEFAULT '0', - `baseAmount` int NOT NULL DEFAULT '0', + `amount` double NOT NULL DEFAULT '0', + `baseAmount` double NOT NULL DEFAULT '0', PRIMARY KEY (`guid`,`casterGuid`,`itemGuid`,`spell`,`effectMask`,`effectIndex`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -3392,8 +3392,8 @@ CREATE TABLE `pet_aura_effect` ( `spell` int unsigned NOT NULL, `effectMask` int unsigned NOT NULL, `effectIndex` tinyint unsigned NOT NULL, - `amount` int NOT NULL DEFAULT '0', - `baseAmount` int NOT NULL DEFAULT '0', + `amount` double NOT NULL DEFAULT '0', + `baseAmount` double NOT NULL DEFAULT '0', PRIMARY KEY (`guid`,`casterGuid`,`spell`,`effectMask`,`effectIndex`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Pet System'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -3918,7 +3918,8 @@ INSERT INTO `updates` VALUES ('2026_01_14_00_characters.sql','FF5D889A41BBD9F9827489DEC08BCA9DB457933E','ARCHIVED','2026-01-14 23:40:33',0), ('2026_01_28_00_characters.sql','807B6622970E81089806C3B45C6C7A32EF531BCA','ARCHIVED','2026-01-25 21:53:51',0), ('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0), -('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0); +('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0), +('2026_04_08_00_characters.sql','5A7FC8264EBD524E4EBAACF53D1CE89C6FF0D255','RELEASED','2026-04-07 10:24:16',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2026_04_08_00_characters.sql b/sql/updates/characters/master/2026_04_08_00_characters.sql new file mode 100644 index 0000000000000..42354b9731501 --- /dev/null +++ b/sql/updates/characters/master/2026_04_08_00_characters.sql @@ -0,0 +1,7 @@ +ALTER TABLE `character_aura_effect` + MODIFY `amount` double NOT NULL DEFAULT 0 AFTER `effectIndex`, + MODIFY `baseAmount` double NOT NULL DEFAULT 0 AFTER `amount`; + +ALTER TABLE `pet_aura_effect` + MODIFY `amount` double NOT NULL DEFAULT 0 AFTER `effectIndex`, + MODIFY `baseAmount` double NOT NULL DEFAULT 0 AFTER `amount`; diff --git a/sql/updates/world/master/2026_04_08_00_world.sql b/sql/updates/world/master/2026_04_08_00_world.sql new file mode 100644 index 0000000000000..df1c465046e36 --- /dev/null +++ b/sql/updates/world/master/2026_04_08_00_world.sql @@ -0,0 +1,11 @@ +UPDATE `trinity_string` SET + `content_default`=REPLACE(`content_default`,'%i','%.2f'), + `content_loc1`=REPLACE(`content_loc1`,'%i','%.2f'), + `content_loc2`=REPLACE(`content_loc2`,'%i','%.2f'), + `content_loc3`=REPLACE(`content_loc3`,'%i','%.2f'), + `content_loc4`=REPLACE(`content_loc4`,'%i','%.2f'), + `content_loc5`=REPLACE(`content_loc5`,'%i','%.2f'), + `content_loc6`=REPLACE(`content_loc6`,'%i','%.2f'), + `content_loc7`=REPLACE(`content_loc7`,'%i','%.2f'), + `content_loc8`=REPLACE(`content_loc8`,'%i','%.2f') + WHERE `entry`=470; diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 6ac504e456c82..7a4f50d89b356 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -776,7 +776,7 @@ void ThreatManager::RemoveMeFromThreatLists(bool (*unitFilter)(Unit const* other void ThreatManager::UpdateMyTempModifiers() { - int32 mod = 0; + SpellEffectValue mod = 0; for (AuraEffect const* eff : _owner->GetAuraEffectsByType(SPELL_AURA_MOD_TOTAL_THREAT)) mod += eff->GetAmount(); @@ -802,7 +802,7 @@ void ThreatManager::UpdateMySpellSchoolModifiers() _multiSchoolModifiers.clear(); } -void ThreatManager::RegisterRedirectThreat(uint32 spellId, ObjectGuid const& victim, uint32 pct) +void ThreatManager::RegisterRedirectThreat(uint32 spellId, ObjectGuid const& victim, float pct) { _redirectRegistry[spellId][victim] = pct; UpdateRedirectInfo(); @@ -927,11 +927,11 @@ void ThreatManager::PurgeThreatenedByMeRef(ObjectGuid const& guid) void ThreatManager::UpdateRedirectInfo() { _redirectInfo.clear(); - uint32 totalPct = 0; + float totalPct = 0; for (auto const& pair : _redirectRegistry) // (spellid, victim -> pct) for (auto const& victimPair : pair.second) // (victim,pct) { - uint32 thisPct = std::min(100 - totalPct, victimPair.second); + float thisPct = std::min(100.0f - totalPct, victimPair.second); if (thisPct > 0) { _redirectInfo.push_back({ victimPair.first, thisPct }); diff --git a/src/server/game/Combat/ThreatManager.h b/src/server/game/Combat/ThreatManager.h index d1ac06d38071b..4e0b44987f4db 100644 --- a/src/server/game/Combat/ThreatManager.h +++ b/src/server/game/Combat/ThreatManager.h @@ -143,7 +143,7 @@ class TC_GAME_API ThreatManager void AddThreat(Unit* target, float amount, SpellInfo const* spell = nullptr, bool ignoreModifiers = false, bool ignoreRedirects = false); void ScaleThreat(Unit* target, float factor); // Modify target's threat by +percent% - void ModifyThreatByPercent(Unit* target, int32 percent) { if (percent) ScaleThreat(target, 0.01f*float(100 + percent)); } + void ModifyThreatByPercent(Unit* target, float percent) { if (percent) ScaleThreat(target, 0.01f * (100.0f + percent)); } // Resets the specified unit's threat to zero void ResetThreat(Unit* target) { ScaleThreat(target, 0.0f); } // Sets the specified unit's threat to be equal to the highest entry on the threat list @@ -176,7 +176,7 @@ class TC_GAME_API ThreatManager ///== REDIRECT SYSTEM == // Register a redirection effect that redirects pct% of threat generated by owner to victim - void RegisterRedirectThreat(uint32 spellId, ObjectGuid const& victim, uint32 pct); + void RegisterRedirectThreat(uint32 spellId, ObjectGuid const& victim, float pct); // Unregister a redirection effort for all victims void UnregisterRedirectThreat(uint32 spellId); // Unregister a redirection effect for a specific victim @@ -226,8 +226,8 @@ class TC_GAME_API ThreatManager // redirect system (is kind of dumb, but that's because none of the redirection spells actually have any aura effect associated with them, so spellscript needs to deal with it) void UpdateRedirectInfo(); - std::vector> _redirectInfo; // current redirection targets and percentages (updated from registry in ThreatManager::UpdateRedirectInfo) - std::unordered_map> _redirectRegistry; // spellid -> (victim -> pct); all redirection effects on us (removal individually managed by spell scripts because blizzard is dumb) + std::vector> _redirectInfo; // current redirection targets and percentages (updated from registry in ThreatManager::UpdateRedirectInfo) + std::unordered_map> _redirectRegistry; // spellid -> (victim -> pct); all redirection effects on us (removal individually managed by spell scripts because blizzard is dumb) public: ThreatManager(ThreatManager const&) = delete; @@ -268,7 +268,7 @@ class TC_GAME_API ThreatReference Creature* GetOwner() const { return _owner; } Unit* GetVictim() const { return _victim; } - float GetThreat() const { return std::max(_baseAmount + (float)_tempModifier, 0.0f); } + float GetThreat() const { return std::max(_baseAmount + _tempModifier, 0.0f); } OnlineState GetOnlineState() const { return _online; } bool IsOnline() const { return (_online >= ONLINE_STATE_ONLINE); } bool IsAvailable() const { return (_online > ONLINE_STATE_OFFLINE); } @@ -290,7 +290,7 @@ class TC_GAME_API ThreatReference explicit ThreatReference(ThreatManager* mgr, Unit* victim) : _owner(reinterpret_cast(mgr->_owner)), _mgr(*mgr), _victim(victim), - _baseAmount(0.0f), _tempModifier(0), _taunted(TAUNT_STATE_NONE) + _baseAmount(0.0f), _tempModifier(0.0f), _taunted(TAUNT_STATE_NONE) { _online = ONLINE_STATE_OFFLINE; } @@ -309,7 +309,7 @@ class TC_GAME_API ThreatReference Unit* const _victim; OnlineState _online; float _baseAmount; - int32 _tempModifier; // Temporary effects (auras with SPELL_AURA_MOD_TOTAL_THREAT) - set from victim's threatmanager in ThreatManager::UpdateMyTempModifiers + float _tempModifier; // Temporary effects (auras with SPELL_AURA_MOD_TOTAL_THREAT) - set from victim's threatmanager in ThreatManager::UpdateMyTempModifiers TauntState _taunted; public: diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 7911d88a3c971..ff5bcffb715e6 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -4672,7 +4672,7 @@ SpellInfo const* GameObject::GetSpellForLock(Player const* player) const if (SpellInfo const* spell = sSpellMgr->GetSpellInfo(playerSpell.first, GetMap()->GetDifficultyID())) for (auto&& effect : spell->GetEffects()) if (effect.Effect == SPELL_EFFECT_OPEN_LOCK && effect.MiscValue == lock->Index[i]) - if (effect.CalcValue(player) >= int32(lock->Skill[i])) + if (effect.CalcValueAsInt(player) >= int32(lock->Skill[i])) return spell; } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 83f8131378a50..1e667af9a40ee 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1676,15 +1676,6 @@ Player* WorldObject::GetSpellModOwner() const return nullptr; } -// function uses real base points (typically value - 1) -int32 WorldObject::CalculateSpellDamage(Unit const* target, SpellEffectInfo const& spellEffectInfo, int32 const* basePoints /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const -{ - if (variance) - *variance = 0.0f; - - return spellEffectInfo.CalcValue(this, basePoints, target, variance, castItemId, itemLevel); -} - float WorldObject::GetSpellMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const { if (!spellInfo->RangeEntry) @@ -1912,7 +1903,7 @@ SpellMissInfo WorldObject::MagicSpellHitResult(Unit* victim, SpellInfo const* sp int32 levelBasedHitDiff = leveldif; // Base hit chance from attacker and victim levels - int32 modHitChance = 100; + float modHitChance = 100; if (levelBasedHitDiff >= 0) { if (victim->GetTypeId() != TYPEID_PLAYER) @@ -1959,7 +1950,7 @@ SpellMissInfo WorldObject::MagicSpellHitResult(Unit* victim, SpellInfo const* sp return SPELL_MISS_MISS; // Chance resist mechanic (select max value from every mechanic spell effect) - int32 resist_chance = victim->GetMechanicResistChance(spellInfo) * 100; + int32 resist_chance = victim->GetMechanicResistChance(spellInfo) * 100.0f; // Roll chance if (resist_chance > 0 && rand < (tmp += resist_chance)) @@ -1968,7 +1959,7 @@ SpellMissInfo WorldObject::MagicSpellHitResult(Unit* victim, SpellInfo const* sp // cast by caster in front of victim if (!victim->HasUnitState(UNIT_STATE_CONTROLLED) && (victim->HasInArc(float(M_PI), this) || victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION))) { - int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100; + int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100.0f; if (deflect_chance > 0 && rand < (tmp += deflect_chance)) return SPELL_MISS_DEFLECT; } @@ -2010,10 +2001,10 @@ SpellMissInfo WorldObject::SpellHitResult(Unit* victim, SpellInfo const* spellIn // Try victim reflect spell if (canReflect) { - int32 reflectchance = victim->GetTotalAuraModifier(SPELL_AURA_REFLECT_SPELLS); + float reflectchance = victim->GetTotalAuraModifier(SPELL_AURA_REFLECT_SPELLS); reflectchance += victim->GetTotalAuraModifierByMiscMask(SPELL_AURA_REFLECT_SPELLS_SCHOOL, spellInfo->GetSchoolMask()); - if (reflectchance > 0 && roll_chance_i(reflectchance)) + if (reflectchance > 0 && roll_chance_f(reflectchance)) return spellInfo->HasAttribute(SPELL_ATTR7_REFLECTION_ONLY_DEFENDS) ? SPELL_MISS_DEFLECT : SPELL_MISS_REFLECT; } diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index af70caa04292d..af641e62ace97 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -447,7 +447,6 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation Player* GetAffectingPlayer() const; Player* GetSpellModOwner() const; - int32 CalculateSpellDamage(Unit const* target, SpellEffectInfo const& spellEffectInfo, int32 const* basePoints = nullptr, float* variance = nullptr, uint32 castItemId = 0, int32 itemLevel = -1) const; // target dependent range checks float GetSpellMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const; diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 669fcb362874c..2e64f411e854f 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -1199,8 +1199,8 @@ void Pet::_LoadAuras(PreparedQueryResult auraResult, PreparedQueryResult effectR AuraKey key{ casterGuid, itemGuid, fields[1].GetUInt32(), fields[2].GetUInt32() }; AuraLoadEffectInfo& info = effectInfo[key]; - info.Amounts[effectIndex] = fields[4].GetInt32(); - info.BaseAmounts[effectIndex] = fields[5].GetInt32(); + info.Amounts[effectIndex] = fields[4].GetDouble(); + info.BaseAmounts[effectIndex] = fields[5].GetDouble(); } } while (effectResult->NextRow()); } @@ -1337,8 +1337,8 @@ void Pet::_SaveAuras(CharacterDatabaseTransaction trans) stmt->setUInt32(index++, key.SpellId); stmt->setUInt32(index++, key.EffectMask); stmt->setUInt8(index++, effect->GetEffIndex()); - stmt->setInt32(index++, effect->GetAmount()); - stmt->setInt32(index++, effect->GetBaseAmount()); + stmt->setDouble(index++, effect->GetAmount()); + stmt->setDouble(index++, effect->GetBaseAmount()); trans->Append(stmt); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1063a323d6681..554ecb39d7ba0 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5350,7 +5350,7 @@ void Player::UpdateRating(CombatRating cr) if (amount < 0) amount = 0; - uint32 oldRating = m_activePlayerData->CombatRatings[cr]; + int32 oldRating = m_activePlayerData->CombatRatings[cr]; SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::CombatRatings, cr), amount); bool affectStats = CanModifyStats(); @@ -8536,7 +8536,7 @@ void Player::ApplyArtifactPowerRank(Item* artifact, ArtifactPowerRankEntry const args.SetCastItem(artifact); if (artifactPowerRank->AuraPointsOverride) for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects()) - args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + AsUnderlyingType(spellEffectInfo.EffectIndex)), artifactPowerRank->AuraPointsOverride); + args.AddSpellMod(SpellValueModFloat(SPELLVALUE_BASE_POINT0 + AsUnderlyingType(spellEffectInfo.EffectIndex)), artifactPowerRank->AuraPointsOverride); CastSpell(this, artifactPowerRank->SpellID, args); } @@ -8837,7 +8837,7 @@ void Player::CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemT for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects()) if (spellEffectInfo.IsEffect()) - args.AddSpellMod(static_cast(SPELLVALUE_BASE_POINT0 + AsUnderlyingType(spellEffectInfo.EffectIndex)), CalculatePct(spellEffectInfo.CalcValue(this), effectPct)); + args.AddSpellMod(static_cast(SPELLVALUE_BASE_POINT0 + AsUnderlyingType(spellEffectInfo.EffectIndex)), CalculatePct(spellEffectInfo.CalcValue(this), effectPct)); } CastSpell(target, spellInfo->Id, args); } @@ -19038,8 +19038,8 @@ void Player::_LoadAuras(PreparedQueryResult auraResult, PreparedQueryResult effe itemGuid.SetRawValue(rawGuidBytes); AuraKey key{ casterGuid, itemGuid, fields[2].GetUInt32(), fields[3].GetUInt32() }; AuraLoadEffectInfo& info = effectInfo[key]; - info.Amounts[effectIndex] = fields[5].GetInt32(); - info.BaseAmounts[effectIndex] = fields[6].GetInt32(); + info.Amounts[effectIndex] = fields[5].GetDouble(); + info.BaseAmounts[effectIndex] = fields[6].GetDouble(); } } while (effectResult->NextRow()); @@ -20999,8 +20999,8 @@ void Player::_SaveAuras(CharacterDatabaseTransaction trans) stmt->setUInt32(index++, key.SpellId); stmt->setUInt32(index++, key.EffectMask); stmt->setUInt8(index++, effect->GetEffIndex()); - stmt->setInt32(index++, effect->GetAmount()); - stmt->setInt32(index++, effect->GetBaseAmount()); + stmt->setDouble(index++, effect->GetAmount()); + stmt->setDouble(index++, effect->GetBaseAmount()); trans->Append(stmt); } } @@ -22845,7 +22845,7 @@ void Player::GetSpellModValues(SpellInfo const* spellInfo, SpellModOp op, Spell* if (base + *flat == 0) continue; - int32 value = static_cast(mod)->value; + float value = static_cast(mod)->value; if (value == 0) continue; @@ -23871,7 +23871,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin price = uint64(floor(price * GetReputationPriceDiscount(creature))); price = pProto->GetBuyPrice() > 0 ? std::max(uint64(1), price) : price; - if (int32 priceMod = GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) + if (float priceMod = GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) price -= CalculatePct(price, priceMod); if (!HasEnoughMoney(price)) @@ -27045,12 +27045,12 @@ uint8 Player::GetRunesState() const uint32 Player::GetRuneBaseCooldown() const { - float cooldown = RUNE_BASE_COOLDOWN; + double cooldown = RUNE_BASE_COOLDOWN; AuraEffectList const& regenAura = GetAuraEffectsByType(SPELL_AURA_MOD_POWER_REGEN_PERCENT); for (AuraEffectList::const_iterator i = regenAura.begin();i != regenAura.end(); ++i) if ((*i)->GetMiscValue() == POWER_RUNES) - cooldown *= 1.0f - (*i)->GetAmount() / 100.0f; + cooldown *= 1.0 - (*i)->GetAmount() / 100.0; // Runes cooldown are now affected by player's haste from equipment ... float hastePct = GetRatingBonusValue(CR_HASTE_MELEE); @@ -27060,9 +27060,9 @@ uint32 Player::GetRuneBaseCooldown() const hastePct += GetTotalAuraModifier(SPELL_AURA_MOD_MELEE_HASTE_2); hastePct += GetTotalAuraModifier(SPELL_AURA_MOD_MELEE_HASTE_3); - cooldown *= 1.0f - (hastePct / 100.0f); + cooldown *= 1.0f - (hastePct / 100.0f); - return cooldown; + return static_cast(cooldown); } void Player::SetRuneCooldown(uint8 index, uint32 cooldown) @@ -27458,7 +27458,7 @@ void Player::HandleFall(MovementInfo const& movementInfo) !HasAuraType(SPELL_AURA_FLY) && !IsImmunedToDamage(SPELL_SCHOOL_MASK_NORMAL)) { //Safe fall, fall height reduction - int32 safe_fall = GetTotalAuraModifier(SPELL_AURA_SAFE_FALL); + float safe_fall = GetTotalAuraModifier(SPELL_AURA_SAFE_FALL); float damageperc = 0.018f*(z_diff-safe_fall)-0.2426f; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 254a31bca3440..96325bd34b48d 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -283,7 +283,7 @@ struct SpellPctModifierByClassMask : SpellModifierByClassMask SpellPctModifierByClassMask(SpellModOp _op, uint32 _spellId, Aura* _ownerAura, flag128 _mask) : SpellModifierByClassMask(_op, SPELLMOD_PCT, _spellId, _ownerAura, _mask) { } - int32 value = { }; + float value = { }; }; struct SpellFlatModifierByLabel : SpellModifier diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 5f30a33685331..ecc7f9f35a96f 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -177,7 +177,7 @@ void Player::UpdateSpellDamageAndHealingBonus() for (uint16 i = SPELL_SCHOOL_HOLY; i < MAX_SPELL_SCHOOL; ++i) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::ModDamageDoneNeg, i), - std::accumulate(modDamageAuras.begin(), modDamageAuras.end(), 0, [i](int32 negativeMod, AuraEffect const* aurEff) + std::accumulate(modDamageAuras.begin(), modDamageAuras.end(), 0, [i](SpellEffectValue negativeMod, AuraEffect const* aurEff) { if (aurEff->GetAmount() < 0 && aurEff->GetMiscValue() & (1 << i)) negativeMod += aurEff->GetAmount(); @@ -758,7 +758,7 @@ void Player::UpdateRangedHitChances() void Player::UpdateSpellHitChances() { - m_modSpellHitChance = 15.0f + (float)GetTotalAuraModifier(SPELL_AURA_MOD_SPELL_HIT_CHANCE); + m_modSpellHitChance = 15.0f + GetTotalAuraModifier(SPELL_AURA_MOD_SPELL_HIT_CHANCE); m_modSpellHitChance += GetRatingBonusValue(CR_HIT_SPELL); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a555c31e0e3a8..dd6aee117e460 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1618,7 +1618,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) continue; } - uint32 damage = aurEff->GetAmount(); + uint32 damage = aurEff->GetAmountAsInt(); if (Unit* caster = aurEff->GetCaster()) { damage = caster->SpellDamageBonusDone(this, spellInfo, damage, SPELL_DIRECT_DAMAGE, aurEff->GetSpellEffectInfo()); @@ -1684,12 +1684,12 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit armor *= victim->GetArmorMultiplierForTarget(attacker); // bypass enemy armor by SPELL_AURA_BYPASS_ARMOR_FOR_CASTER - int32 armorBypassPct = 0; + SpellEffectValue armorBypassPct = 0; AuraEffectList const & reductionAuras = victim->GetAuraEffectsByType(SPELL_AURA_BYPASS_ARMOR_FOR_CASTER); for (AuraEffectList::const_iterator i = reductionAuras.begin(); i != reductionAuras.end(); ++i) if ((*i)->GetCasterGUID() == attacker->GetGUID()) armorBypassPct += (*i)->GetAmount(); - armor = CalculatePct(armor, 100 - std::min(armorBypassPct, 100)); + armor = CalculatePct(armor, 100 - std::min(armorBypassPct, 100.0)); // Ignore enemy armor by SPELL_AURA_MOD_TARGET_RESISTANCE aura armor += attacker->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_TARGET_RESISTANCE, SPELL_SCHOOL_MASK_NORMAL); @@ -1801,13 +1801,13 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit float damageResisted = damage * resistance / 10.f; if (damageResisted > 0.0f) // if any damage was resisted { - int32 ignoredResistance = 0; + float ignoredResistance = 0.0f; if (attacker) ignoredResistance += attacker->GetTotalAuraModifierByMiscMask(SPELL_AURA_MOD_IGNORE_TARGET_RESIST, schoolMask); - ignoredResistance = std::min(ignoredResistance, 100); - ApplyPct(damageResisted, 100 - ignoredResistance); + ignoredResistance = std::min(ignoredResistance, 100.0f); + ApplyPct(damageResisted, 100.0f - ignoredResistance); // Spells with melee and magic school mask, decide whether resistance or armor absorb is higher if (spellInfo && spellInfo->HasAttribute(SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC)) @@ -1905,7 +1905,7 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit continue; // get amount which can be still absorbed by the aura - int32 currentAbsorb = absorbAurEff->GetAmount(); + int32 currentAbsorb = absorbAurEff->GetAmountAsInt(); // aura with infinite absorb amount - let the scripts handle absorbtion amount, set here to 0 for safety if (currentAbsorb < 0) currentAbsorb = 0; @@ -1973,7 +1973,7 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit continue; // get amount which can be still absorbed by the aura - int32 currentAbsorb = absorbAurEff->GetAmount(); + int32 currentAbsorb = absorbAurEff->GetAmountAsInt(); // aura with infinite absorb amount - let the scripts handle absorbtion amount, set here to 0 for safety if (currentAbsorb < 0) currentAbsorb = 0; @@ -2115,7 +2115,7 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit continue; // get amount which can be still absorbed by the aura - int32 currentAbsorb = absorbAurEff->GetAmount(); + int32 currentAbsorb = absorbAurEff->GetAmountAsInt(); // aura with infinite absorb amount - let the scripts handle absorbtion amount, set here to 0 for safety if (currentAbsorb < 0) currentAbsorb = 0; @@ -2569,17 +2569,17 @@ void Unit::SendMeleeAttackStop(Unit* victim) bool Unit::IsBlockCritical() const { - if (roll_chance_i(GetTotalAuraModifier(SPELL_AURA_MOD_BLOCK_CRIT_CHANCE))) + if (roll_chance_f(GetTotalAuraModifier(SPELL_AURA_MOD_BLOCK_CRIT_CHANCE))) return true; return false; } -int32 Unit::GetMechanicResistChance(SpellInfo const* spellInfo) const +float Unit::GetMechanicResistChance(SpellInfo const* spellInfo) const { if (!spellInfo) return 0; - int32 resistMech = 0; + float resistMech = 0; for (SpellEffectInfo const& effect : spellInfo->GetEffects()) { if (!effect.IsEffect()) @@ -2588,13 +2588,13 @@ int32 Unit::GetMechanicResistChance(SpellInfo const* spellInfo) const int32 effectMech = spellInfo->GetEffectMechanic(effect.EffectIndex); if (effectMech) { - int32 temp = GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MECHANIC_RESISTANCE, effectMech); + float temp = GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_MECHANIC_RESISTANCE, effectMech); if (resistMech < temp) resistMech = temp; } } - return std::max(resistMech, 0); + return std::max(resistMech, 0.0f); } bool Unit::CanUseAttackType(uint8 attacktype) const @@ -2635,7 +2635,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spellInfo return SPELL_MISS_MISS; // Chance resist mechanic - int32 resist_chance = victim->GetMechanicResistChance(spellInfo) * 100; + int32 resist_chance = victim->GetMechanicResistChance(spellInfo) * 100.0f; tmp += resist_chance; if (roll < tmp) return SPELL_MISS_RESIST; @@ -2665,7 +2665,7 @@ SpellMissInfo Unit::MeleeSpellHitResult(Unit* victim, SpellInfo const* spellInfo // only if in front if (!victim->HasUnitState(UNIT_STATE_CONTROLLED) && (victim->HasInArc(float(M_PI), this) || victim->HasAuraType(SPELL_AURA_IGNORE_HIT_DIRECTION))) { - int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100; + int32 deflect_chance = victim->GetTotalAuraModifier(SPELL_AURA_DEFLECT_SPELLS) * 100.0f; tmp += deflect_chance; if (roll < tmp) return SPELL_MISS_DEFLECT; @@ -3412,13 +3412,13 @@ Aura* Unit::_TryStackingOrRefreshingExistingAura(AuraCreateInfo& createInfo) if (!auraEff) continue; - int32 bp; + SpellEffectValue bp; if (createInfo.BaseAmount) bp = *(createInfo.BaseAmount + spellEffectInfo.EffectIndex); else - bp = int32(spellEffectInfo.BasePoints); + bp = spellEffectInfo.BasePoints; - int32* oldBP = const_cast(&(auraEff->m_baseAmount)); + SpellEffectValue* oldBP = const_cast(&(auraEff->m_baseAmount)); if (spellEffectInfo.EffectAttributes.HasFlag(SpellEffectAttributes::AuraPointsStack)) *oldBP += bp; else @@ -4038,8 +4038,8 @@ void Unit::RemoveAurasDueToSpellBySteal(uint32 spellId, ObjectGuid casterGUID, W Aura* aura = iter->second; if (aura->GetCasterGUID() == casterGUID) { - std::array damage = { }; - std::array baseDamage = { }; + std::array damage = { }; + std::array baseDamage = { }; std::bitset effMask; std::bitset recalculateMask; Unit* caster = aura->GetCaster(); @@ -4844,7 +4844,7 @@ bool Unit::HasAuraTypeWithValue(AuraType auraType, int32 value) const { AuraEffectList const& mTotalAuraList = GetAuraEffectsByType(auraType); for (AuraEffectList::const_iterator i = mTotalAuraList.begin(); i != mTotalAuraList.end(); ++i) - if (value == (*i)->GetAmount()) + if (value == (*i)->GetAmountAsInt()) return true; return false; } @@ -4978,14 +4978,14 @@ uint32 Unit::GetDoTsByCaster(ObjectGuid casterGUID) const return dots; } -int32 Unit::GetTotalAuraModifier(AuraType auraType, std::function const& predicate) const +float Unit::GetTotalAuraModifier(AuraType auraType, std::function const& predicate) const { AuraEffectList const& mTotalAuraList = GetAuraEffectsByType(auraType); if (mTotalAuraList.empty()) - return 0; + return 0.0f; - std::map sameEffectSpellGroup; - int32 modifier = 0; + std::map sameEffectSpellGroup; + SpellEffectValue modifier = 0; for (AuraEffect const* aurEff : mTotalAuraList) { @@ -4993,7 +4993,7 @@ int32 Unit::GetTotalAuraModifier(AuraType auraType, std::functionAddSameEffectStackRuleSpellGroups(aurEff->GetSpellInfo(), static_cast(auraType), aurEff->GetAmount(), sameEffectSpellGroup)) + if (!sSpellMgr->AddSameEffectStackRuleSpellGroups(aurEff->GetSpellInfo(), auraType, aurEff->GetAmount(), sameEffectSpellGroup)) modifier += aurEff->GetAmount(); } } @@ -5002,7 +5002,7 @@ int32 Unit::GetTotalAuraModifier(AuraType auraType, std::functionsecond; - return modifier; + return static_cast(modifier); } float Unit::GetTotalAuraMultiplier(AuraType auraType, std::function const& predicate) const @@ -5011,8 +5011,8 @@ float Unit::GetTotalAuraMultiplier(AuraType auraType, std::function sameEffectSpellGroup; - float multiplier = 1.0f; + std::map sameEffectSpellGroup; + SpellEffectValue multiplier = 1.0; for (AuraEffect const* aurEff : mTotalAuraList) { @@ -5020,7 +5020,7 @@ float Unit::GetTotalAuraMultiplier(AuraType auraType, std::functionAddSameEffectStackRuleSpellGroups(aurEff->GetSpellInfo(), static_cast(auraType), aurEff->GetAmount(), sameEffectSpellGroup)) + if (!sSpellMgr->AddSameEffectStackRuleSpellGroups(aurEff->GetSpellInfo(), auraType, aurEff->GetAmount(), sameEffectSpellGroup)) AddPct(multiplier, aurEff->GetAmount()); } } @@ -5029,42 +5029,42 @@ float Unit::GetTotalAuraMultiplier(AuraType auraType, std::functionsecond); - return multiplier; + return static_cast(multiplier); } -int32 Unit::GetMaxPositiveAuraModifier(AuraType auraType, std::function const& predicate) const +float Unit::GetMaxPositiveAuraModifier(AuraType auraType, std::function const& predicate) const { AuraEffectList const& mTotalAuraList = GetAuraEffectsByType(auraType); if (mTotalAuraList.empty()) - return 0; + return 0.0f; - int32 modifier = 0; + SpellEffectValue modifier = 0; for (AuraEffect const* aurEff : mTotalAuraList) { if (predicate(aurEff)) modifier = std::max(modifier, aurEff->GetAmount()); } - return modifier; + return static_cast(modifier); } -int32 Unit::GetMaxNegativeAuraModifier(AuraType auraType, std::function const& predicate) const +float Unit::GetMaxNegativeAuraModifier(AuraType auraType, std::function const& predicate) const { AuraEffectList const& mTotalAuraList = GetAuraEffectsByType(auraType); if (mTotalAuraList.empty()) - return 0; + return 0.0f; - int32 modifier = 0; + SpellEffectValue modifier = 0; for (AuraEffect const* aurEff : mTotalAuraList) { if (predicate(aurEff)) modifier = std::min(modifier, aurEff->GetAmount()); } - return modifier; + return static_cast(modifier); } -int32 Unit::GetTotalAuraModifier(AuraType auraType) const +float Unit::GetTotalAuraModifier(AuraType auraType) const { return GetTotalAuraModifier(auraType, [](AuraEffect const* /*aurEff*/) { return true; }); } @@ -5074,17 +5074,17 @@ float Unit::GetTotalAuraMultiplier(AuraType auraType) const return GetTotalAuraMultiplier(auraType, [](AuraEffect const* /*aurEff*/) { return true; }); } -int32 Unit::GetMaxPositiveAuraModifier(AuraType auraType) const +float Unit::GetMaxPositiveAuraModifier(AuraType auraType) const { return GetMaxPositiveAuraModifier(auraType, [](AuraEffect const* /*aurEff*/) { return true; }); } -int32 Unit::GetMaxNegativeAuraModifier(AuraType auraType) const +float Unit::GetMaxNegativeAuraModifier(AuraType auraType) const { return GetMaxNegativeAuraModifier(auraType, [](AuraEffect const* /*aurEff*/) { return true; }); } -int32 Unit::GetTotalAuraModifierByMiscMask(AuraType auraType, uint32 miscMask) const +float Unit::GetTotalAuraModifierByMiscMask(AuraType auraType, uint32 miscMask) const { return GetTotalAuraModifier(auraType, [miscMask](AuraEffect const* aurEff) -> bool { @@ -5104,7 +5104,7 @@ float Unit::GetTotalAuraMultiplierByMiscMask(AuraType auraType, uint32 miscMask) }); } -int32 Unit::GetMaxPositiveAuraModifierByMiscMask(AuraType auraType, uint32 miscMask, AuraEffect const* except /*= nullptr*/) const +float Unit::GetMaxPositiveAuraModifierByMiscMask(AuraType auraType, uint32 miscMask, AuraEffect const* except /*= nullptr*/) const { return GetMaxPositiveAuraModifier(auraType, [miscMask, except](AuraEffect const* aurEff) -> bool { @@ -5114,7 +5114,7 @@ int32 Unit::GetMaxPositiveAuraModifierByMiscMask(AuraType auraType, uint32 miscM }); } -int32 Unit::GetMaxNegativeAuraModifierByMiscMask(AuraType auraType, uint32 miscMask) const +float Unit::GetMaxNegativeAuraModifierByMiscMask(AuraType auraType, uint32 miscMask) const { return GetMaxNegativeAuraModifier(auraType, [miscMask](AuraEffect const* aurEff) -> bool { @@ -5124,7 +5124,7 @@ int32 Unit::GetMaxNegativeAuraModifierByMiscMask(AuraType auraType, uint32 miscM }); } -int32 Unit::GetTotalAuraModifierByMiscValue(AuraType auraType, int32 miscValue) const +float Unit::GetTotalAuraModifierByMiscValue(AuraType auraType, int32 miscValue) const { return GetTotalAuraModifier(auraType, [miscValue](AuraEffect const* aurEff) -> bool { @@ -5144,7 +5144,7 @@ float Unit::GetTotalAuraMultiplierByMiscValue(AuraType auraType, int32 miscValue }); } -int32 Unit::GetMaxPositiveAuraModifierByMiscValue(AuraType auraType, int32 miscValue) const +float Unit::GetMaxPositiveAuraModifierByMiscValue(AuraType auraType, int32 miscValue) const { return GetMaxPositiveAuraModifier(auraType, [miscValue](AuraEffect const* aurEff) -> bool { @@ -5154,7 +5154,7 @@ int32 Unit::GetMaxPositiveAuraModifierByMiscValue(AuraType auraType, int32 miscV }); } -int32 Unit::GetMaxNegativeAuraModifierByMiscValue(AuraType auraType, int32 miscValue) const +float Unit::GetMaxNegativeAuraModifierByMiscValue(AuraType auraType, int32 miscValue) const { return GetMaxNegativeAuraModifier(auraType, [miscValue](AuraEffect const* aurEff) -> bool { @@ -5164,7 +5164,7 @@ int32 Unit::GetMaxNegativeAuraModifierByMiscValue(AuraType auraType, int32 miscV }); } -int32 Unit::GetTotalAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const +float Unit::GetTotalAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const { return GetTotalAuraModifier(auraType, [affectedSpell](AuraEffect const* aurEff) -> bool { @@ -5184,7 +5184,7 @@ float Unit::GetTotalAuraMultiplierByAffectMask(AuraType auraType, SpellInfo cons }); } -int32 Unit::GetMaxPositiveAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const +float Unit::GetMaxPositiveAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const { return GetMaxPositiveAuraModifier(auraType, [affectedSpell](AuraEffect const* aurEff) -> bool { @@ -5194,7 +5194,7 @@ int32 Unit::GetMaxPositiveAuraModifierByAffectMask(AuraType auraType, SpellInfo }); } -int32 Unit::GetMaxNegativeAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const +float Unit::GetMaxNegativeAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const { return GetMaxNegativeAuraModifier(auraType, [affectedSpell](AuraEffect const* aurEff) -> bool { @@ -7485,7 +7485,7 @@ float Unit::SpellHealingPctDone(Unit* victim, SpellInfo const* spellProto) const float healthPctDiff = 100.0f - victim->GetHealthPct(); for (AuraEffect const* healingDonePctVsTargetHealth : GetAuraEffectsByType(SPELL_AURA_MOD_HEALING_DONE_PCT_VERSUS_TARGET_HEALTH)) if (healingDonePctVsTargetHealth->IsAffectingSpell(spellProto)) - AddPct(DoneTotalMod, CalculatePct(float(healingDonePctVsTargetHealth->GetAmount()), healthPctDiff)); + AddPct(DoneTotalMod, CalculatePct(healingDonePctVsTargetHealth->GetAmount(), healthPctDiff)); return DoneTotalMod; } @@ -8468,9 +8468,9 @@ void Unit::UpdateMountCapability() for (AuraEffect* aurEff : mounts) { aurEff->RecalculateAmount(); - if (!aurEff->GetAmount()) + if (!aurEff->GetAmountAsInt()) aurEff->GetBase()->Remove(); - else if (MountCapabilityEntry const* capability = sMountCapabilityStore.LookupEntry(aurEff->GetAmount())) // aura may get removed by interrupt flag, reapply + else if (MountCapabilityEntry const* capability = sMountCapabilityStore.LookupEntry(aurEff->GetAmountAsInt())) // aura may get removed by interrupt flag, reapply { SetFlightCapabilityID(capability->FlightCapabilityID, true); @@ -8669,7 +8669,7 @@ void Unit::TriggerOnHealthChangeAuras(uint64 oldVal, uint64 newVal) AuraEffectVector effects = CopyAuraEffectList(GetAuraEffectsByType(SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_PCT)); for (AuraEffect const* effect : effects) { - uint32 triggerHealthPct = effect->GetAmount(); + SpellEffectValue triggerHealthPct = effect->GetAmount(); uint32 triggerSpell = effect->GetSpellEffectInfo().TriggerSpell; uint64 threshold = CountPctFromMaxHealth(triggerHealthPct); @@ -8775,7 +8775,7 @@ void Unit::SetVisible(bool x) void Unit::UpdateSpeed(UnitMoveType mtype) { - int32 main_speed_mod = 0; + float main_speed_mod = 0.0f; float stack_bonus = 1.0f; float non_stack_bonus = 1.0f; @@ -8817,7 +8817,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype) stack_bonus = GetTotalAuraMultiplier(SPELL_AURA_MOD_VEHICLE_SPEED_ALWAYS); // for some spells this mod is applied on vehicle owner - int32 owner_speed_mod = 0; + float owner_speed_mod = 0.0f; if (Unit* owner = GetCharmer()) owner_speed_mod = owner->GetMaxPositiveAuraModifier(SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED); @@ -8861,7 +8861,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype) // Normalize speed by 191 aura SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED if need /// @todo possible affect only on MOVE_RUN - if (int32 normalization = GetMaxPositiveAuraModifier(SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED)) + if (float normalization = GetMaxPositiveAuraModifier(SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED)) { if (Creature* creature = ToCreature()) if (CreatureImmunities const* immunities = SpellMgr::GetCreatureImmunities(creature->GetCreatureTemplate()->CreatureImmunitiesId)) @@ -8877,7 +8877,7 @@ void Unit::UpdateSpeed(UnitMoveType mtype) if (mtype == MOVE_RUN) { // force minimum speed rate @ aura 437 SPELL_AURA_MOD_MINIMUM_SPEED_RATE - if (int32 minSpeedMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MINIMUM_SPEED_RATE)) + if (float minSpeedMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MINIMUM_SPEED_RATE)) { float minSpeed = minSpeedMod / (IsControlledByPlayer() ? playerBaseMoveSpeed[mtype] : baseMoveSpeed[mtype]); if (speed < minSpeed) @@ -8909,11 +8909,11 @@ void Unit::UpdateSpeed(UnitMoveType mtype) } // Apply strongest slow aura mod to speed - int32 slow = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_DECREASE_SPEED); + float slow = GetMaxNegativeAuraModifier(SPELL_AURA_MOD_DECREASE_SPEED); if (slow) AddPct(speed, slow); - if (float minSpeedMod = (float)GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MINIMUM_SPEED)) + if (float minSpeedMod = GetMaxPositiveAuraModifier(SPELL_AURA_MOD_MINIMUM_SPEED)) { float baseMinSpeed = 1.0f; if (!GetOwnerGUID().IsPlayer() && !IsHunterPet() && GetTypeId() == TYPEID_UNIT) @@ -9056,10 +9056,10 @@ void Unit::UpdateAdvFlyingSpeed(AdvFlyingRateTypeSingle speedType, bool clientUp if (rateAura != SPELL_AURA_NONE) { // take only lowest negative and highest positive auras - these effects do not stack - if (int32 neg = GetMaxNegativeAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 0 && mod->GetAmount() < 100; })) + if (float neg = GetMaxNegativeAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 0 && mod->GetAmount() < 100; })) ApplyPct(newValue, neg); - if (int32 pos = GetMaxPositiveAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 100; })) + if (float pos = GetMaxPositiveAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 100; })) ApplyPct(newValue, pos); } @@ -9107,13 +9107,13 @@ void Unit::UpdateAdvFlyingSpeed(AdvFlyingRateTypeRange speedType, bool clientUpd if (rateAura != SPELL_AURA_NONE) { // take only lowest negative and highest positive auras - these effects do not stack - if (int32 neg = GetMaxNegativeAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 0 && mod->GetAmount() < 100; })) + if (float neg = GetMaxNegativeAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 0 && mod->GetAmount() < 100; })) { ApplyPct(min, neg); ApplyPct(max, neg); } - if (int32 pos = GetMaxPositiveAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 100; })) + if (float pos = GetMaxPositiveAuraModifier(rateAura, [](AuraEffect const* mod) { return mod->GetAmount() > 100; })) { ApplyPct(min, pos); ApplyPct(max, pos); @@ -10111,11 +10111,11 @@ void Unit::TriggerOnPowerChangeAuras(Powers power, int32 oldVal, int32 newVal) { if (effect->GetMiscValue() == power) { - int32 effectAmount = effect->GetAmount(); + SpellEffectValue effectAmount = effect->GetAmount(); uint32 triggerSpell = effect->GetSpellEffectInfo().TriggerSpell; - float oldValueCheck = oldVal; - float newValueCheck = newVal; + SpellEffectValue oldValueCheck = oldVal; + SpellEffectValue newValueCheck = newVal; if (effect->GetAuraType() == SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT) { @@ -10768,7 +10768,7 @@ bool Unit::IsPolymorphed() const void Unit::RecalculateObjectScale() { - int32 scaleAuras = GetTotalAuraModifier(SPELL_AURA_MOD_SCALE) + GetTotalAuraModifier(SPELL_AURA_MOD_SCALE_2); + float scaleAuras = GetTotalAuraModifier(SPELL_AURA_MOD_SCALE) + GetTotalAuraModifier(SPELL_AURA_MOD_SCALE_2); float scale = GetNativeObjectScale() + CalculatePct(1.0f, scaleAuras); float scaleMin = GetTypeId() == TYPEID_PLAYER ? 0.1f : 0.01f; SetObjectScale(std::max(scale, scaleMin)); @@ -12707,14 +12707,14 @@ bool Unit::HandleSpellClick(Unit* clicker, int8 seatId, uint32 spellId, TriggerC { CastSpellExtraArgs args(flags); args.OriginalCaster = origCasterGUID; - args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + effectIndex), seatId + 1); + args.AddSpellMod(SpellValueModFloat(SPELLVALUE_BASE_POINT0 + effectIndex), seatId + 1); castResult = caster->CastSpell(target, spellId, args); } else // This can happen during Player::_LoadAuras { - std::array bp = { }; + std::array bp = { }; for (SpellEffectInfo const& spellEffectInfo : spellEntry->GetEffects()) - bp[spellEffectInfo.EffectIndex] = int32(spellEffectInfo.BasePoints); + bp[spellEffectInfo.EffectIndex] = spellEffectInfo.BasePoints; bp[effectIndex] = seatId; @@ -14124,9 +14124,9 @@ void Unit::ClearValuesChangesMask() WorldObject::ClearValuesChangesMask(); } -int32 Unit::GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect const* aurEff, AuraType auraType, bool checkMiscValue /*= false*/, int32 miscValue /*= 0*/) const +SpellEffectValue Unit::GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect const* aurEff, AuraType auraType, bool checkMiscValue /*= false*/, int32 miscValue /*= 0*/) const { - int32 val = 0; + SpellEffectValue val = 0; SpellSpellGroupMapBounds spellGroup = sSpellMgr->GetSpellSpellGroupMapBounds(aurEff->GetSpellInfo()->GetFirstRankSpell()->Id); for (SpellSpellGroupMap::const_iterator itr = spellGroup.first; itr != spellGroup.second ; ++itr) { @@ -14157,7 +14157,7 @@ bool Unit::IsHighestExclusiveAura(Aura const* aura, bool removeOtherAuraApplicat return true; } -bool Unit::IsHighestExclusiveAuraEffect(SpellInfo const* spellInfo, AuraType auraType, int32 effectAmount, uint32 auraEffectMask, bool removeOtherAuraApplications /*= false*/) +bool Unit::IsHighestExclusiveAuraEffect(SpellInfo const* spellInfo, AuraType auraType, SpellEffectValue effectAmount, uint32 auraEffectMask, bool removeOtherAuraApplications /*= false*/) { AuraEffectList const& auras = GetAuraEffectsByType(auraType); for (Unit::AuraEffectList::const_iterator itr = auras.begin(); itr != auras.end();) @@ -14167,7 +14167,7 @@ bool Unit::IsHighestExclusiveAuraEffect(SpellInfo const* spellInfo, AuraType aur if (sSpellMgr->CheckSpellGroupStackRules(spellInfo, existingAurEff->GetSpellInfo()) == SPELL_GROUP_STACK_RULE_EXCLUSIVE_HIGHEST) { - int64 diff = int64(abs(effectAmount)) - int64(abs(existingAurEff->GetAmount())); + SpellEffectValue diff = abs(effectAmount) - abs(existingAurEff->GetAmount()); if (!diff) { // treat the aura with more effects as stronger @@ -14346,9 +14346,9 @@ SpellInfo const* Unit::GetCastSpellInfo(SpellInfo const* spellInfo, TriggerCastF for (AuraEffect const* auraEffect : GetAuraEffectsByType(type)) { bool matches = auraEffect->GetMiscValue() ? uint32(auraEffect->GetMiscValue()) == spellInfo->Id : auraEffect->IsAffectingSpell(spellInfo); - if (matches && context->AddSpell(auraEffect->GetAmount())) + if (matches && context->AddSpell(auraEffect->GetAmountAsInt())) { - if (SpellInfo const* newInfo = sSpellMgr->GetSpellInfo(auraEffect->GetAmount(), GetMap()->GetDifficultyID())) + if (SpellInfo const* newInfo = sSpellMgr->GetSpellInfo(auraEffect->GetAmountAsInt(), GetMap()->GetDifficultyID())) { if (auraEffect->GetSpellInfo()->HasAttribute(SPELL_ATTR8_IGNORE_SPELLCAST_OVERRIDE_COST)) triggerFlag |= TRIGGERED_IGNORE_POWER_COST; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 01a3534a0dcc2..1efe5cab502eb 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -789,13 +789,13 @@ class TC_GAME_API Unit : public WorldObject uint64 GetMaxHealth() const { return m_unitData->MaxHealth; } bool IsFullHealth() const { return GetHealth() == GetMaxHealth(); } - bool HealthBelowPct(int32 pct) const { return GetHealth() < CountPctFromMaxHealth(pct); } - bool HealthBelowPctDamaged(int32 pct, uint32 damage) const { return int64(GetHealth()) - int64(damage) < int64(CountPctFromMaxHealth(pct)); } - bool HealthAbovePct(int32 pct) const { return GetHealth() > CountPctFromMaxHealth(pct); } - bool HealthAbovePctHealed(int32 pct, uint32 heal) const { return uint64(GetHealth()) + uint64(heal) > CountPctFromMaxHealth(pct); } + bool HealthBelowPct(float pct) const { return GetHealth() < CountPctFromMaxHealth(pct); } + bool HealthBelowPctDamaged(float pct, uint32 damage) const { return int64(GetHealth()) - int64(damage) < int64(CountPctFromMaxHealth(pct)); } + bool HealthAbovePct(float pct) const { return GetHealth() > CountPctFromMaxHealth(pct); } + bool HealthAbovePctHealed(float pct, uint32 heal) const { return uint64(GetHealth()) + uint64(heal) > CountPctFromMaxHealth(pct); } float GetHealthPct() const { return GetMaxHealth() ? 100.f * GetHealth() / GetMaxHealth() : 0.0f; } - uint64 CountPctFromMaxHealth(int32 pct) const { return CalculatePct(GetMaxHealth(), pct); } - uint64 CountPctFromCurHealth(int32 pct) const { return CalculatePct(GetHealth(), pct); } + uint64 CountPctFromMaxHealth(float pct) const { return CalculatePct(GetMaxHealth(), pct); } + uint64 CountPctFromCurHealth(float pct) const { return CalculatePct(GetHealth(), pct); } void SetHealth(uint64 val); void SetMaxHealth(uint64 val); @@ -982,7 +982,7 @@ class TC_GAME_API Unit : public WorldObject float GetUnitCriticalChanceDone(WeaponAttackType attackType) const; float GetUnitCriticalChanceTaken(Unit const* attacker, WeaponAttackType attackType, float critDone) const; float GetUnitCriticalChanceAgainst(WeaponAttackType attackType, Unit const* victim) const; - int32 GetMechanicResistChance(SpellInfo const* spellInfo) const; + float GetMechanicResistChance(SpellInfo const* spellInfo) const; bool CanUseAttackType(uint8 attacktype) const; virtual float GetBlockPercent(uint8 /*attackerLevel*/) const { return 30.0f; } @@ -1378,30 +1378,30 @@ class TC_GAME_API Unit : public WorldObject uint32 GetDiseasesByCaster(ObjectGuid casterGUID, bool remove = false); uint32 GetDoTsByCaster(ObjectGuid casterGUID) const; - int32 GetTotalAuraModifier(AuraType auraType) const; + float GetTotalAuraModifier(AuraType auraType) const; float GetTotalAuraMultiplier(AuraType auraType) const; - int32 GetMaxPositiveAuraModifier(AuraType auraType) const; - int32 GetMaxNegativeAuraModifier(AuraType auraType) const; + float GetMaxPositiveAuraModifier(AuraType auraType) const; + float GetMaxNegativeAuraModifier(AuraType auraType) const; - int32 GetTotalAuraModifier(AuraType auraType, std::function const& predicate) const; + float GetTotalAuraModifier(AuraType auraType, std::function const& predicate) const; float GetTotalAuraMultiplier(AuraType auraType, std::function const& predicate) const; - int32 GetMaxPositiveAuraModifier(AuraType auraType, std::function const& predicate) const; - int32 GetMaxNegativeAuraModifier(AuraType auraType, std::function const& predicate) const; + float GetMaxPositiveAuraModifier(AuraType auraType, std::function const& predicate) const; + float GetMaxNegativeAuraModifier(AuraType auraType, std::function const& predicate) const; - int32 GetTotalAuraModifierByMiscMask(AuraType auraType, uint32 misc_mask) const; + float GetTotalAuraModifierByMiscMask(AuraType auraType, uint32 misc_mask) const; float GetTotalAuraMultiplierByMiscMask(AuraType auraType, uint32 misc_mask) const; - int32 GetMaxPositiveAuraModifierByMiscMask(AuraType auraType, uint32 misc_mask, AuraEffect const* except = nullptr) const; - int32 GetMaxNegativeAuraModifierByMiscMask(AuraType auraType, uint32 misc_mask) const; + float GetMaxPositiveAuraModifierByMiscMask(AuraType auraType, uint32 misc_mask, AuraEffect const* except = nullptr) const; + float GetMaxNegativeAuraModifierByMiscMask(AuraType auraType, uint32 misc_mask) const; - int32 GetTotalAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const; + float GetTotalAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const; float GetTotalAuraMultiplierByMiscValue(AuraType auraType, int32 misc_value) const; - int32 GetMaxPositiveAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const; - int32 GetMaxNegativeAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const; + float GetMaxPositiveAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const; + float GetMaxNegativeAuraModifierByMiscValue(AuraType auraType, int32 misc_value) const; - int32 GetTotalAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; + float GetTotalAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; float GetTotalAuraMultiplierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; - int32 GetMaxPositiveAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; - int32 GetMaxNegativeAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; + float GetMaxPositiveAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; + float GetMaxNegativeAuraModifierByAffectMask(AuraType auraType, SpellInfo const* affectedSpell) const; void InitStatBuffMods(); void UpdateStatBuffMod(Stats stat); @@ -1833,9 +1833,9 @@ class TC_GAME_API Unit : public WorldObject // Movement info std::unique_ptr movespline; - int32 GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect const* aurEff, AuraType auraType, bool checkMiscValue = false, int32 miscValue = 0) const; + SpellEffectValue GetHighestExclusiveSameEffectSpellGroupValue(AuraEffect const* aurEff, AuraType auraType, bool checkMiscValue = false, int32 miscValue = 0) const; bool IsHighestExclusiveAura(Aura const* aura, bool removeOtherAuraApplications = false); - bool IsHighestExclusiveAuraEffect(SpellInfo const* spellInfo, AuraType auraType, int32 effectAmount, uint32 auraEffectMask, bool removeOtherAuraApplications = false); + bool IsHighestExclusiveAuraEffect(SpellInfo const* spellInfo, AuraType auraType, SpellEffectValue effectAmount, uint32 auraEffectMask, bool removeOtherAuraApplications = false); virtual void Talk(std::string_view text, ChatMsg msgType, Language language, float textRange, WorldObject const* target); virtual void Say(std::string_view text, Language language, WorldObject const* target = nullptr); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index a4b33d1c723a6..6553dd05ba141 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -646,7 +646,7 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) uint64 price = uint64(floor(itemTemplate->GetBuyPrice() * discountMod)); price = itemTemplate->GetBuyPrice() > 0 ? std::max(uint64(1), price) : price; - if (int32 priceMod = _player->GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) + if (float priceMod = _player->GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) price -= CalculatePct(price, priceMod); item.MuID = slot + 1; // client expects counting to start at 1 diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 7393fd4a54795..d6cff6931df20 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -899,7 +899,7 @@ enum SpellAttr12 : uint32 SPELL_ATTR12_UNK18 = 0x00040000, // TITLE Unknown attribute 18@Attr12 SPELL_ATTR12_UNK19 = 0x00080000, // TITLE Unknown attribute 19@Attr12 SPELL_ATTR12_UNK20 = 0x00100000, // TITLE Unknown attribute 20@Attr12 - SPELL_ATTR12_UNK21 = 0x00200000, // TITLE Unknown attribute 21@Attr12 + SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS = 0x00200000, // TITLE Use float values for scaling amounts SPELL_ATTR12_UNK22 = 0x00400000, // TITLE Unknown attribute 22@Attr12 SPELL_ATTR12_START_COOLDOWN_ON_CAST_START = 0x00800000, // TITLE Trigger Cooldown On Spell Start SPELL_ATTR12_IS_GARRISON_BUFF = 0x01000000, // TITLE Never Learn diff --git a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp index d12843edf0573..6009a7cf0b00a 100644 --- a/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp +++ b/src/server/game/Miscellaneous/enuminfo_SharedDefines.cpp @@ -1846,7 +1846,7 @@ TC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr12 value) case SPELL_ATTR12_UNK18: return { "SPELL_ATTR12_UNK18", "Unknown attribute 18@Attr12", "" }; case SPELL_ATTR12_UNK19: return { "SPELL_ATTR12_UNK19", "Unknown attribute 19@Attr12", "" }; case SPELL_ATTR12_UNK20: return { "SPELL_ATTR12_UNK20", "Unknown attribute 20@Attr12", "" }; - case SPELL_ATTR12_UNK21: return { "SPELL_ATTR12_UNK21", "Unknown attribute 21@Attr12", "" }; + case SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS: return { "SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS", "Use float values for scaling amounts", "" }; case SPELL_ATTR12_UNK22: return { "SPELL_ATTR12_UNK22", "Unknown attribute 22@Attr12", "" }; case SPELL_ATTR12_START_COOLDOWN_ON_CAST_START: return { "SPELL_ATTR12_START_COOLDOWN_ON_CAST_START", "Trigger Cooldown On Spell Start", "" }; case SPELL_ATTR12_IS_GARRISON_BUFF: return { "SPELL_ATTR12_IS_GARRISON_BUFF", "Never Learn", "" }; @@ -1890,7 +1890,7 @@ TC_API_EXPORT SpellAttr12 EnumUtils::FromIndex(size_t index) case 18: return SPELL_ATTR12_UNK18; case 19: return SPELL_ATTR12_UNK19; case 20: return SPELL_ATTR12_UNK20; - case 21: return SPELL_ATTR12_UNK21; + case 21: return SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS; case 22: return SPELL_ATTR12_UNK22; case 23: return SPELL_ATTR12_START_COOLDOWN_ON_CAST_START; case 24: return SPELL_ATTR12_IS_GARRISON_BUFF; @@ -1931,7 +1931,7 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(SpellAttr12 value) case SPELL_ATTR12_UNK18: return 18; case SPELL_ATTR12_UNK19: return 19; case SPELL_ATTR12_UNK20: return 20; - case SPELL_ATTR12_UNK21: return 21; + case SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS: return 21; case SPELL_ATTR12_UNK22: return 22; case SPELL_ATTR12_START_COOLDOWN_ON_CAST_START: return 23; case SPELL_ATTR12_IS_GARRISON_BUFF: return 24; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 69fb1b45e3c3b..91116e6ebc91e 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -727,7 +727,7 @@ NonDefaultConstructible AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //655 SPELL_AURA_MOD_TRANSMOG_OUTFIT_UPDATE_COST }; -AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster) : +AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, SpellEffectValue const* baseAmount, Unit* caster) : m_base(base), m_spellInfo(base->GetSpellInfo()), m_effectInfo(spellEfffectInfo), m_spellmod(nullptr), m_baseAmount(baseAmount ? *baseAmount : spellEfffectInfo.CalcBaseValue(caster, base->GetType() == UNIT_AURA_TYPE ? base->GetOwner()->ToUnit() : nullptr, base->GetCastItemId(), base->GetCastItemLevel())), _amount(), _periodicTimer(0), _period(0), _ticksDone(0), @@ -768,12 +768,12 @@ void AuraEffect::GetApplicationList(Container& applicationContainer) const } } -int32 AuraEffect::CalculateAmount(Unit* caster) +SpellEffectValue AuraEffect::CalculateAmount(Unit* caster) { Unit* unitOwner = GetBase()->GetOwner()->ToUnit(); // default amount calculation - int32 amount = GetSpellEffectInfo().CalcValue(caster, &m_baseAmount, unitOwner, nullptr, GetBase()->GetCastItemId(), GetBase()->GetCastItemLevel()); + SpellEffectValue amount = GetSpellEffectInfo().CalcValue(caster, &m_baseAmount, unitOwner, nullptr, GetBase()->GetCastItemId(), GetBase()->GetCastItemLevel()); // custom amount calculations go here switch (GetAuraType()) @@ -825,7 +825,7 @@ int32 AuraEffect::CalculateAmount(Unit* caster) Unit::AuraEffectList const& periodicAuras = unitOwner->GetAuraEffectsByType(GetAuraType()); if (uint32 totalTicks = GetTotalTicks()) { - amount = std::accumulate(std::begin(periodicAuras), std::end(periodicAuras), amount, [&](int32 val, AuraEffect const* aurEff) + amount = std::accumulate(std::begin(periodicAuras), std::end(periodicAuras), amount, [&](SpellEffectValue val, AuraEffect const* aurEff) { if (aurEff->GetCasterGUID() == GetCasterGUID() && aurEff->GetId() == GetId() && aurEff->GetEffIndex() == GetEffIndex()) val += aurEff->GetEstimatedAmount().value_or(aurEff->GetAmount()) * static_cast(aurEff->GetRemainingTicks()) / static_cast(totalTicks); @@ -838,13 +838,38 @@ int32 AuraEffect::CalculateAmount(Unit* caster) if (!GetSpellEffectInfo().EffectAttributes.HasFlag(SpellEffectAttributes::SuppressPointsStacking)) amount *= GetBase()->GetStackAmount(); + switch (GetAuraType()) + { + case SPELL_AURA_PERIODIC_DAMAGE: + case SPELL_AURA_PERIODIC_HEAL: + case SPELL_AURA_PERIODIC_LEECH: + case SPELL_AURA_PERIODIC_HEALTH_FUNNEL: + case SPELL_AURA_PERIODIC_WEAPON_PERCENT_DAMAGE: + case SPELL_AURA_DAMAGE_SHIELD: + case SPELL_AURA_PROC_TRIGGER_DAMAGE: + case SPELL_AURA_OBS_MOD_HEALTH: + case SPELL_AURA_OBS_MOD_POWER: + case SPELL_AURA_PERIODIC_ENERGIZE: + case SPELL_AURA_PERIODIC_MANA_LEECH: + case SPELL_AURA_PERIODIC_DAMAGE_PERCENT: + case SPELL_AURA_POWER_BURN: + amount = std::round(amount); + break; + default: + break; + } + + amount = std::clamp(amount, SpellEffectInfo::MinValue, SpellEffectInfo::MaxValue); + _estimatedAmount = CalculateEstimatedAmount(caster, amount); + if (_estimatedAmount) + _estimatedAmount = std::clamp(*_estimatedAmount, SpellEffectInfo::MinValue, SpellEffectInfo::MaxValue); return amount; } -Optional AuraEffect::CalculateEstimatedAmount(Unit const* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, - int32 amount, uint8 stack, AuraEffect const* aurEff) +Optional AuraEffect::CalculateEstimatedAmount(Unit const* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, + SpellEffectValue amount, uint8 stack, AuraEffect const* aurEff) { uint32 stackAmountForBonuses = !spellEffectInfo.EffectAttributes.HasFlag(SpellEffectAttributes::SuppressPointsStacking) ? stack : 1; @@ -862,7 +887,7 @@ Optional AuraEffect::CalculateEstimatedAmount(Unit const* caster, Unit* t return {}; } -Optional AuraEffect::CalculateEstimatedAmount(Unit const* caster, int32 amount) const +Optional AuraEffect::CalculateEstimatedAmount(Unit const* caster, SpellEffectValue amount) const { if (!caster || GetBase()->GetType() != UNIT_AURA_TYPE) return {}; @@ -870,16 +895,16 @@ Optional AuraEffect::CalculateEstimatedAmount(Unit const* caster, int32 a return CalculateEstimatedAmount(caster, GetBase()->GetUnitOwner(), GetSpellInfo(), GetSpellEffectInfo(), amount, GetBase()->GetStackAmount(), this); } -float AuraEffect::CalculateEstimatedfTotalPeriodicAmount(Unit* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, - float amount, uint8 stack) +SpellEffectValue AuraEffect::CalculateEstimatedfTotalPeriodicAmount(Unit const* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, + SpellEffectValue amount, uint8 stack) { int32 maxDuration = Aura::CalcMaxDuration(spellInfo, caster, nullptr); if (maxDuration <= 0) - return 0.0f; + return 0.0; int32 period = spellEffectInfo.ApplyAuraPeriod; if (!period) - return 0.0f; + return 0.0; if (Player* modOwner = caster->GetSpellModOwner()) modOwner->ApplySpellMod(spellInfo, SpellModOp::Period, period); @@ -893,7 +918,7 @@ float AuraEffect::CalculateEstimatedfTotalPeriodicAmount(Unit* caster, Unit* tar period = int32(period * caster->m_unitData->ModHaste); if (!period) - return 0.0f; + return 0.0; float totalTicks = float(maxDuration) / period; if (spellInfo->HasAttribute(SPELL_ATTR5_EXTRA_INITIAL_PERIOD)) @@ -1008,7 +1033,7 @@ void AuraEffect::CalculateSpellMod() case SPELL_AURA_ADD_FLAT_MODIFIER: if (!m_spellmod) m_spellmod = new SpellFlatModifierByClassMask(SpellModOp(GetMiscValue()), GetId(), GetBase(), GetSpellEffectInfo().SpellClassMask); - static_cast(m_spellmod)->value = GetAmount(); + static_cast(m_spellmod)->value = GetAmountAsInt(); break; case SPELL_AURA_ADD_PCT_MODIFIER: if (!m_spellmod) @@ -1018,7 +1043,7 @@ void AuraEffect::CalculateSpellMod() case SPELL_AURA_ADD_FLAT_MODIFIER_BY_SPELL_LABEL: if (!m_spellmod) m_spellmod = new SpellFlatModifierByLabel(SpellModOp(GetMiscValue()), GetId(), GetBase(), GetMiscValueB()); - static_cast(m_spellmod)->value.ModifierValue = GetAmount(); + static_cast(m_spellmod)->value.ModifierValue = GetAmountAsInt(); break; case SPELL_AURA_ADD_PCT_MODIFIER_BY_SPELL_LABEL: if (!m_spellmod) @@ -1057,7 +1082,7 @@ void AuraEffect::CalculateSpellMod() } } -void AuraEffect::ChangeAmount(int32 newAmount, bool mark, bool onStackOrReapply, AuraEffect const* triggeredBy /* = nullptr */) +void AuraEffect::ChangeAmount(SpellEffectValue newAmount, bool mark, bool onStackOrReapply, AuraEffect const* triggeredBy /* = nullptr */) { // Reapply if amount change uint8 handleMask = 0; @@ -1624,14 +1649,14 @@ void AuraEffect::HandleModInvisibilityDetect(AuraApplication const* aurApp, uint if (apply) { target->m_invisibilityDetect.AddFlag(type); - target->m_invisibilityDetect.AddValue(type, GetAmount()); + target->m_invisibilityDetect.AddValue(type, GetAmountAsInt()); } else { if (!target->HasAuraType(SPELL_AURA_MOD_INVISIBILITY_DETECT)) target->m_invisibilityDetect.DelFlag(type); - target->m_invisibilityDetect.AddValue(type, -GetAmount()); + target->m_invisibilityDetect.AddValue(type, -GetAmountAsInt()); } // call functions which may have additional effects after changing state of unit @@ -1655,7 +1680,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode playerTarget->AddAuraVision(PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); target->m_invisibility.AddFlag(type); - target->m_invisibility.AddValue(type, GetAmount()); + target->m_invisibility.AddValue(type, GetAmountAsInt()); target->SetVisFlag(UNIT_VIS_FLAGS_INVISIBLE); } @@ -1675,7 +1700,7 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode if (!target->HasAuraType(SPELL_AURA_MOD_INVISIBILITY)) target->RemoveVisFlag(UNIT_VIS_FLAGS_INVISIBLE); - target->m_invisibility.AddValue(type, -GetAmount()); + target->m_invisibility.AddValue(type, -GetAmountAsInt()); } // call functions which may have additional effects after changing state of unit @@ -1700,14 +1725,14 @@ void AuraEffect::HandleModStealthDetect(AuraApplication const* aurApp, uint8 mod if (apply) { target->m_stealthDetect.AddFlag(type); - target->m_stealthDetect.AddValue(type, GetAmount()); + target->m_stealthDetect.AddValue(type, GetAmountAsInt()); } else { if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH_DETECT)) target->m_stealthDetect.DelFlag(type); - target->m_stealthDetect.AddValue(type, -GetAmount()); + target->m_stealthDetect.AddValue(type, -GetAmountAsInt()); } // call functions which may have additional effects after changing state of unit @@ -1726,7 +1751,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo if (apply) { target->m_stealth.AddFlag(type); - target->m_stealth.AddValue(type, GetAmount()); + target->m_stealth.AddValue(type, GetAmountAsInt()); target->SetVisFlag(UNIT_VIS_FLAGS_STEALTHED); if (Player * playerTarget = target->ToPlayer()) @@ -1734,7 +1759,7 @@ void AuraEffect::HandleModStealth(AuraApplication const* aurApp, uint8 mode, boo } else { - target->m_stealth.AddValue(type, -GetAmount()); + target->m_stealth.AddValue(type, -GetAmountAsInt()); if (!target->HasAuraType(SPELL_AURA_MOD_STEALTH)) // if last SPELL_AURA_MOD_STEALTH { @@ -1766,9 +1791,9 @@ void AuraEffect::HandleModStealthLevel(AuraApplication const* aurApp, uint8 mode StealthType type = StealthType(GetMiscValue()); if (apply) - target->m_stealth.AddValue(type, GetAmount()); + target->m_stealth.AddValue(type, GetAmountAsInt()); else - target->m_stealth.AddValue(type, -GetAmount()); + target->m_stealth.AddValue(type, -GetAmountAsInt()); // call functions which may have additional effects after changing state of unit if (target->IsInWorld()) @@ -2693,7 +2718,7 @@ void AuraEffect::HandleAuraModSkill(AuraApplication const* aurApp, uint8 mode, b return; uint32 prot = GetMiscValue(); - int32 points = GetAmount(); + int32 points = GetAmountAsInt(); if (prot == SKILL_DEFENSE) return; @@ -2798,7 +2823,7 @@ void AuraEffect::HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bo // cast speed aura if (mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK) { - if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(GetAmount())) + if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(GetAmountAsInt())) { target->SetFlightCapabilityID(mountCapability->FlightCapabilityID, true); target->CastSpell(target, mountCapability->ModSpellAuraID, this); @@ -2822,7 +2847,7 @@ void AuraEffect::HandleAuraMounted(AuraApplication const* aurApp, uint8 mode, bo if (mode & AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK) // remove speed aura - if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(GetAmount())) + if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(GetAmountAsInt())) target->RemoveAurasDueToSpell(mountCapability->ModSpellAuraID, target->GetGUID()); target->SetFlightCapabilityID(0, true); @@ -3325,7 +3350,7 @@ void AuraEffect::HandleAuraControlVehicle(AuraApplication const* aurApp, uint8 m // so this break such spells or most of them. // Current formula about m_amount: effect base points + dieside - 1 // TO DO: Reasearch more about 0/0 and fix it. - caster->_EnterVehicle(target->GetVehicleKit(), GetAmount() - 1, aurApp); + caster->_EnterVehicle(target->GetVehicleKit(), GetAmountAsInt() - 1, aurApp); } else { @@ -3726,11 +3751,11 @@ void AuraEffect::HandleModTargetResistance(AuraApplication const* aurApp, uint8 // show armor penetration if (target->GetTypeId() == TYPEID_PLAYER && (GetMiscValue() & SPELL_SCHOOL_MASK_NORMAL)) - target->ApplyModTargetPhysicalResistance(GetAmount(), apply); + target->ApplyModTargetPhysicalResistance(GetAmountAsInt(), apply); // show as spell penetration only full spell penetration bonuses (all resistances except armor and holy if (target->GetTypeId() == TYPEID_PLAYER && (GetMiscValue() & SPELL_SCHOOL_MASK_SPELL) == SPELL_SCHOOL_MASK_SPELL) - target->ApplyModTargetResistance(GetAmount(), apply); + target->ApplyModTargetResistance(GetAmountAsInt(), apply); } /********************************/ @@ -3749,7 +3774,7 @@ void AuraEffect::HandleAuraModStat(AuraApplication const* aurApp, uint8 mode, bo } Unit* target = aurApp->GetTarget(); - int32 spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, SPELL_AURA_MOD_STAT, true, GetMiscValue()); + SpellEffectValue spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, SPELL_AURA_MOD_STAT, true, GetMiscValue()); if (std::abs(spellGroupVal) >= std::abs(GetAmount())) return; @@ -4086,11 +4111,11 @@ void AuraEffect::HandleAuraModIncreaseHealth(AuraApplication const* aurApp, uint Unit* target = aurApp->GetTarget(); - int32 const amt = apply ? GetAmount() : -GetAmount(); + int32 const amt = apply ? GetAmountAsInt() : -GetAmountAsInt(); if (amt < 0) target->ModifyHealth(std::max(1 - target->GetHealth(), amt)); - target->HandleStatFlatModifier(UNIT_MOD_HEALTH, TOTAL_VALUE, GetAmount(), apply); + target->HandleStatFlatModifier(UNIT_MOD_HEALTH, TOTAL_VALUE, GetAmountAsInt(), apply); if (amt > 0) target->ModifyHealth(amt); @@ -4319,7 +4344,7 @@ void AuraEffect::HandleTriggerSpellOnHealthPercent(AuraApplication const* aurApp return; Unit* target = aurApp->GetTarget(); - int32 thresholdPct = GetAmount(); + SpellEffectValue thresholdPct = GetAmount(); uint32 triggerSpell = GetSpellEffectInfo().TriggerSpell; switch (AuraTriggerOnHealthChangeDirection(GetMiscValue())) @@ -4491,7 +4516,7 @@ void AuraEffect::HandleModCastingSpeed(AuraApplication const* aurApp, uint8 mode return; } - int32 spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, GetAuraType()); + SpellEffectValue spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, GetAuraType()); if (std::abs(spellGroupVal) >= std::abs(GetAmount())) return; @@ -4520,7 +4545,7 @@ void AuraEffect::HandleModCombatSpeedPct(AuraApplication const* aurApp, uint8 mo return; Unit* target = aurApp->GetTarget(); - int32 spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, SPELL_AURA_MELEE_SLOW); + SpellEffectValue spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, SPELL_AURA_MELEE_SLOW); if (std::abs(spellGroupVal) >= std::abs(GetAmount())) return; @@ -4555,7 +4580,7 @@ void AuraEffect::HandleModMeleeSpeedPct(AuraApplication const* aurApp, uint8 mod //! ToDo: Haste auras with the same handler _CAN'T_ stack together Unit* target = aurApp->GetTarget(); - int32 spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, SPELL_AURA_MOD_MELEE_HASTE); + SpellEffectValue spellGroupVal = target->GetHighestExclusiveSameEffectSpellGroupValue(this, SPELL_AURA_MOD_MELEE_HASTE); if (std::abs(spellGroupVal) >= std::abs(GetAmount())) return; @@ -4595,7 +4620,7 @@ void AuraEffect::HandleModRating(AuraApplication const* aurApp, uint8 mode, bool for (uint32 rating = 0; rating < MAX_COMBAT_RATING; ++rating) if (GetMiscValue() & (1 << rating)) - target->ToPlayer()->ApplyRatingMod(CombatRating(rating), GetAmount(), apply); + target->ToPlayer()->ApplyRatingMod(CombatRating(rating), GetAmountAsInt(), apply); } void AuraEffect::HandleModRatingPct(AuraApplication const* aurApp, uint8 mode, bool /*apply*/) const @@ -4698,10 +4723,10 @@ void AuraEffect::HandleModDamageDone(AuraApplication const* aurApp, uint8 mode, for (uint16 i = SPELL_SCHOOL_NORMAL; i < MAX_SPELL_SCHOOL; ++i) if (GetMiscValue() & (1 << i)) { - if (GetAmount() >= 0) - playerTarget->ApplyModDamageDonePos(SpellSchools(i), GetAmount(), apply); + if (GetAmountAsInt() >= 0) + playerTarget->ApplyModDamageDonePos(SpellSchools(i), GetAmountAsInt(), apply); else - playerTarget->ApplyModDamageDoneNeg(SpellSchools(i), GetAmount(), apply); + playerTarget->ApplyModDamageDoneNeg(SpellSchools(i), GetAmountAsInt(), apply); } if (Guardian* pet = playerTarget->GetGuardianPet()) @@ -4789,7 +4814,7 @@ void AuraEffect::HandleModPowerCost(AuraApplication const* aurApp, uint8 mode, b for (int i = 0; i < MAX_SPELL_SCHOOL; ++i) if (GetMiscValue() & (1 << i)) - target->ApplyModManaCostModifier(SpellSchools(i), GetAmount(), apply); + target->ApplyModManaCostModifier(SpellSchools(i), GetAmountAsInt(), apply); } void AuraEffect::HandleArenaPreparation(AuraApplication const* aurApp, uint8 mode, bool apply) const @@ -4949,7 +4974,7 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool break; case 52172: // Coyote Spirit Despawn Aura case 60244: // Blood Parrot Despawn Aura - target->CastSpell(nullptr, GetAmount(), this); + target->CastSpell(nullptr, GetAmountAsInt(), this); break; case 91604: // Restricted Flight Area if (aurApp->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE) @@ -4960,7 +4985,7 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool case SPELLFAMILY_DEATHKNIGHT: // Summon Gargoyle (Dismiss Gargoyle at remove) if (GetId() == 61777) - target->CastSpell(target, GetAmount(), this); + target->CastSpell(target, GetAmountAsInt(), this); break; default: break; @@ -5134,7 +5159,7 @@ void AuraEffect::HandleChannelDeathItem(AuraApplication const* aurApp, uint8 mod Unit* target = aurApp->GetTarget(); // Item amount - if (GetAmount() <= 0) + if (GetAmountAsInt() <= 0) return; if (GetSpellEffectInfo().ItemType == 0) @@ -5151,7 +5176,7 @@ void AuraEffect::HandleChannelDeathItem(AuraApplication const* aurApp, uint8 mod //Adding items uint32 noSpaceForCount = 0; - uint32 count = GetAmount(); + uint32 count = GetAmountAsInt(); ItemPosCountVec dest; InventoryResult msg = plCaster->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, GetSpellEffectInfo().ItemType, count, &noSpaceForCount); @@ -5194,7 +5219,7 @@ void AuraEffect::HandleForceReaction(AuraApplication const* aurApp, uint8 mode, return; uint32 factionId = GetMiscValue(); - ReputationRank factionRank = ReputationRank(GetAmount()); + ReputationRank factionRank = ReputationRank(GetAmountAsInt()); player->GetReputationMgr().ApplyForceReaction(factionId, factionRank, apply); @@ -5342,7 +5367,7 @@ void AuraEffect::HandleTriggerSpellOnPowerPercent(AuraApplication const* aurApp, Unit* target = aurApp->GetTarget(); - int32 effectAmount = GetAmount(); + SpellEffectValue effectAmount = GetAmount(); uint32 triggerSpell = GetSpellEffectInfo().TriggerSpell; int32 maxPower = target->GetMaxPower(Powers(GetMiscValue())); if (!maxPower) @@ -5374,7 +5399,7 @@ void AuraEffect::HandleTriggerSpellOnPowerAmount(AuraApplication const* aurApp, Unit* target = aurApp->GetTarget(); - int32 effectAmount = GetAmount(); + SpellEffectValue effectAmount = GetAmount(); uint32 triggerSpell = GetSpellEffectInfo().TriggerSpell; float powerAmount = target->GetPower(Powers(GetMiscValue())); @@ -5440,20 +5465,20 @@ void AuraEffect::HandleAuraModFakeInebriation(AuraApplication const* aurApp, uin if (apply) { target->m_invisibilityDetect.AddFlag(INVISIBILITY_DRUNK); - target->m_invisibilityDetect.AddValue(INVISIBILITY_DRUNK, GetAmount()); + target->m_invisibilityDetect.AddValue(INVISIBILITY_DRUNK, GetAmountAsInt()); if (Player* playerTarget = target->ToPlayer()) - playerTarget->ApplyModFakeInebriation(GetAmount(), true); + playerTarget->ApplyModFakeInebriation(GetAmountAsInt(), true); } else { bool removeDetect = !target->HasAuraType(SPELL_AURA_MOD_FAKE_INEBRIATE); - target->m_invisibilityDetect.AddValue(INVISIBILITY_DRUNK, -GetAmount()); + target->m_invisibilityDetect.AddValue(INVISIBILITY_DRUNK, -GetAmountAsInt()); if (Player* playerTarget = target->ToPlayer()) { - playerTarget->ApplyModFakeInebriation(GetAmount(), false); + playerTarget->ApplyModFakeInebriation(GetAmountAsInt(), false); if (removeDetect) removeDetect = !playerTarget->GetDrunkValue(); @@ -5606,7 +5631,7 @@ void AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick(Unit* target, Unit* CastSpellExtraArgs args(this); args.SetTriggerFlags(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_REAGENT_COST)); for (std::size_t i = 0; i < triggeredSpellInfo->GetEffects().size(); ++i) - args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), GetAmount()); + args.AddSpellMod(SpellValueModFloat(SPELLVALUE_BASE_POINT0 + i), GetAmount()); triggerCaster->CastSpell(target, triggerSpellId, args); TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick: Spell {} Trigger {}", GetId(), triggeredSpellInfo->Id); } @@ -5637,7 +5662,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const uint32 stackAmountForBonuses = !GetSpellEffectInfo().EffectAttributes.HasFlag(SpellEffectAttributes::SuppressPointsStacking) ? GetBase()->GetStackAmount() : 1; // ignore negative values (can be result apply spellmods to aura damage - uint32 damage = std::max(GetAmount(), 0); + uint32 damage = std::max(GetAmountAsInt(), 0); // Script Hook For HandlePeriodicDamageAurasTick -- Allow scripts to change the Damage pre class mitigation calculations sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage); @@ -5771,7 +5796,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c uint32 stackAmountForBonuses = !GetSpellEffectInfo().EffectAttributes.HasFlag(SpellEffectAttributes::SuppressPointsStacking) ? GetBase()->GetStackAmount() : 1; // ignore negative values (can be result apply spellmods to aura damage - uint32 damage = std::max(GetAmount(), 0); + uint32 damage = std::max(GetAmountAsInt(), 0); if (caster) damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, GetSpellEffectInfo(), stackAmountForBonuses, nullptr, this); @@ -5862,7 +5887,7 @@ void AuraEffect::HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster) return; } - uint32 damage = std::max(GetAmount(), 0); + uint32 damage = std::max(GetAmountAsInt(), 0); // do not kill health donator if (caster->GetHealth() < damage) damage = caster->GetHealth() - 1; @@ -5899,7 +5924,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const uint32 stackAmountForBonuses = !GetSpellEffectInfo().EffectAttributes.HasFlag(SpellEffectAttributes::SuppressPointsStacking) ? GetBase()->GetStackAmount() : 1; // ignore negative values (can be result apply spellmods to aura damage - uint32 damage = std::max(GetAmount(), 0); + uint32 damage = std::max(GetAmountAsInt(), 0); if (GetAuraType() == SPELL_AURA_OBS_MOD_HEALTH) damage = uint32(target->CountPctFromMaxHealth(damage)); @@ -5957,7 +5982,7 @@ void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) con return; // ignore negative values (can be result apply spellmods to aura damage - int32 drainAmount = std::max(GetAmount(), 0); + int32 drainAmount = std::max(GetAmountAsInt(), 0); TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: {} power leech of {} for {} dmg inflicted by {}", GetCasterGUID().ToString(), target->GetGUID().ToString(), drainAmount, GetId()); @@ -5981,7 +6006,7 @@ void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) con // Drain Mana - Mana Feed effect if (caster->GetGuardianPet() && m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK && m_spellInfo->SpellFamilyFlags[0] & 0x00000010) { - int32 manaFeedVal = 0; + SpellEffectValue manaFeedVal = 0; if (AuraEffect const* aurEff = GetBase()->GetEffect(EFFECT_1)) manaFeedVal = aurEff->GetAmount(); @@ -6028,7 +6053,7 @@ void AuraEffect::HandleObsModPowerAuraTick(Unit* target, Unit* caster) const return; } - int32 amount = GetAmount() * target->GetMaxPower(powerType) / 100; + int32 amount = CalculatePct(target->GetMaxPower(powerType), GetAmount()); TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: {} energize {} for {} dmg inflicted by {}", GetCasterGUID().ToString(), target->GetGUID().ToString(), amount, GetId()); @@ -6058,7 +6083,7 @@ void AuraEffect::HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) cons return; // ignore negative values (can be result apply spellmods to aura damage - int32 amount = std::max(GetAmount(), 0); + int32 amount = std::max(GetAmountAsInt(), 0); SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false); @@ -6086,7 +6111,7 @@ void AuraEffect::HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) con } // ignore negative values (can be result apply spellmods to aura damage - int32 damage = std::max(GetAmount(), 0); + int32 damage = std::max(GetAmountAsInt(), 0); uint32 gain = uint32(-target->ModifyPower(powerType, -damage)); @@ -6135,7 +6160,7 @@ float AuraEffect::CalcPeriodicCritChance(Unit const* caster) const void AuraEffect::HandleBreakableCCAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo) { - int32 const damageLeft = GetAmount() - static_cast(eventInfo.GetDamageInfo()->GetDamage()); + SpellEffectValue const damageLeft = GetAmount() - static_cast(eventInfo.GetDamageInfo()->GetDamage()); if (damageLeft <= 0) aurApp->GetTarget()->RemoveAura(aurApp); @@ -6206,7 +6231,7 @@ void AuraEffect::HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEv } SpellNonMeleeDamage damageInfo(target, triggerTarget, GetSpellInfo(), GetBase()->GetSpellVisual(), GetSpellInfo()->SchoolMask, GetBase()->GetCastId()); - uint32 damage = target->SpellDamageBonusDone(triggerTarget, GetSpellInfo(), GetAmount(), SPELL_DIRECT_DAMAGE, GetSpellEffectInfo(), 1, nullptr, this); + uint32 damage = target->SpellDamageBonusDone(triggerTarget, GetSpellInfo(), GetAmountAsInt(), SPELL_DIRECT_DAMAGE, GetSpellEffectInfo(), 1, nullptr, this); damage = triggerTarget->SpellDamageBonusTaken(target, GetSpellInfo(), damage, SPELL_DIRECT_DAMAGE); target->CalculateSpellDamageTaken(&damageInfo, damage, GetSpellInfo()); Unit::DealDamageMods(damageInfo.attacker, damageInfo.target, damageInfo.damage, &damageInfo.absorb); @@ -6257,9 +6282,9 @@ void AuraEffect::HandleModSpellCategoryCooldown(AuraApplication const* aurApp, u return; if (apply) - target->AddSpellCategoryCooldownMod(GetMiscValue(), GetAmount()); + target->AddSpellCategoryCooldownMod(GetMiscValue(), GetAmountAsInt()); else - target->RemoveSpellCategoryCooldownMod(GetMiscValue(), GetAmount()); + target->RemoveSpellCategoryCooldownMod(GetMiscValue(), GetAmountAsInt()); } void AuraEffect::HandleModRecoveryRate(AuraApplication const* aurApp, uint8 mode, bool apply) const diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 97bc61885a90b..4f02394b7118a 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -28,13 +28,13 @@ typedef void(AuraEffect::*pAuraEffectHandler)(AuraApplication const* aurApp, uin class TC_GAME_API AuraEffect { - friend void Aura::_InitEffects(uint32 effMask, Unit* caster, int32 const* baseAmount); + friend void Aura::_InitEffects(uint32 effMask, Unit* caster, SpellEffectValue const* baseAmount); friend Aura::~Aura(); friend class Unit; private: ~AuraEffect(); - explicit AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, int32 const* baseAmount, Unit* caster); + explicit AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, SpellEffectValue const* baseAmount, Unit* caster); public: Unit* GetCaster() const { return GetBase()->GetCaster(); } @@ -50,27 +50,28 @@ class TC_GAME_API AuraEffect SpellInfo const* GetSpellInfo() const { return m_spellInfo; } uint32 GetId() const { return m_spellInfo->Id; } SpellEffIndex GetEffIndex() const { return m_effectInfo.EffectIndex; } - int32 GetBaseAmount() const { return m_baseAmount; } + SpellEffectValue GetBaseAmount() const { return m_baseAmount; } int32 GetPeriod() const { return _period; } int32 GetMiscValueB() const { return GetSpellEffectInfo().MiscValueB; } int32 GetMiscValue() const { return GetSpellEffectInfo().MiscValue; } AuraType GetAuraType() const { return GetSpellEffectInfo().ApplyAuraName; } - int32 GetAmount() const { return _amount; } - void SetAmount(int32 amount) { _amount = amount; m_canBeRecalculated = false; } + int32 GetAmountAsInt() const { return static_cast(_amount); } + SpellEffectValue GetAmount() const { return _amount; } + void SetAmount(SpellEffectValue amount) { _amount = amount; m_canBeRecalculated = false; } - Optional GetEstimatedAmount() const { return _estimatedAmount; } + Optional GetEstimatedAmount() const { return _estimatedAmount; } int32 GetPeriodicTimer() const { return _periodicTimer; } void SetPeriodicTimer(int32 periodicTimer) { _periodicTimer = periodicTimer; } - int32 CalculateAmount(Unit* caster); - static Optional CalculateEstimatedAmount(Unit const* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, int32 amount, uint8 stack, AuraEffect const* aurEff); - Optional CalculateEstimatedAmount(Unit const* caster, int32 amount) const; - static float CalculateEstimatedfTotalPeriodicAmount(Unit* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, float amount, uint8 stack); + SpellEffectValue CalculateAmount(Unit* caster); + static Optional CalculateEstimatedAmount(Unit const* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, SpellEffectValue amount, uint8 stack, AuraEffect const* aurEff); + Optional CalculateEstimatedAmount(Unit const* caster, SpellEffectValue amount) const; + static SpellEffectValue CalculateEstimatedfTotalPeriodicAmount(Unit const* caster, Unit* target, SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, SpellEffectValue amount, uint8 stack); void CalculatePeriodic(Unit* caster, bool resetPeriodicTimer = true, bool load = false); void CalculateSpellMod(); - void ChangeAmount(int32 newAmount, bool mark = true, bool onStackOrReapply = false, AuraEffect const* triggeredBy = nullptr); + void ChangeAmount(SpellEffectValue newAmount, bool mark = true, bool onStackOrReapply = false, AuraEffect const* triggeredBy = nullptr); void RecalculateAmount(AuraEffect const* triggeredBy = nullptr) { if (!CanBeRecalculated()) return; ChangeAmount(CalculateAmount(GetCaster()), false, false, triggeredBy); } void RecalculateAmount(Unit* caster, AuraEffect const* triggeredBy = nullptr) { if (!CanBeRecalculated()) return; ChangeAmount(CalculateAmount(caster), false, false, triggeredBy); } bool CanBeRecalculated() const { return m_canBeRecalculated; } @@ -115,9 +116,9 @@ class TC_GAME_API AuraEffect SpellModifier* m_spellmod; - int32 const m_baseAmount; - int32 _amount; - Optional _estimatedAmount; // for periodic damage and healing auras this will include damage done bonuses + SpellEffectValue const m_baseAmount; + SpellEffectValue _amount; + Optional _estimatedAmount; // for periodic damage and healing auras this will include damage done bonuses // periodic stuff int32 _periodicTimer; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 3a68549f2383c..58de70ec820c8 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -511,7 +511,7 @@ AuraScript* Aura::GetScriptByType(std::type_info const& type) const return nullptr; } -void Aura::_InitEffects(uint32 effMask, Unit* caster, int32 const* baseAmount) +void Aura::_InitEffects(uint32 effMask, Unit* caster, SpellEffectValue const* baseAmount) { // shouldn't be in constructor - functions in AuraEffect::AuraEffect use polymorphism _effects.resize(GetSpellInfo()->GetEffects().size()); @@ -1273,7 +1273,7 @@ AuraKey Aura::GenerateKey(uint32& recalculateMask) const return key; } -void Aura::SetLoadedState(int32 maxDuration, int32 duration, int32 charges, uint32 recalculateMask, int32* amount) +void Aura::SetLoadedState(int32 maxDuration, int32 duration, int32 charges, uint32 recalculateMask, SpellEffectValue const* amount) { m_maxDuration = maxDuration; m_duration = duration; @@ -1541,7 +1541,7 @@ void Aura::HandleAuraSpecificMods(AuraApplication const* aurApp, Unit* caster, b // effect on caster if (AuraEffect const* aurEff = aura->GetEffect(0)) { - float multiplier = float(aurEff->GetAmount()); + SpellEffectValue multiplier = aurEff->GetAmount(); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.SetOriginalCastId(GetCastId()); args.AddSpellMod(SPELLVALUE_BASE_POINT0, CalculatePct(caster->GetMaxPower(POWER_MANA), multiplier)); @@ -2217,7 +2217,7 @@ void Aura::CallScriptEffectUpdatePeriodicHandlers(AuraEffect* aurEff) } } -void Aura::CallScriptEffectCalcAmountHandlers(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated) +void Aura::CallScriptEffectCalcAmountHandlers(AuraEffect const* aurEff, SpellEffectValue& amount, bool& canBeRecalculated) { for (AuraScript* script : m_loadedScripts) { diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h index 101e32a516119..872f964bfc9e8 100644 --- a/src/server/game/Spells/Auras/SpellAuras.h +++ b/src/server/game/Spells/Auras/SpellAuras.h @@ -113,7 +113,7 @@ struct TC_GAME_API AuraCreateInfo AuraCreateInfo& SetCasterGUID(ObjectGuid const& guid) { CasterGUID = guid; return *this; } AuraCreateInfo& SetCaster(Unit* caster) { Caster = caster; return *this; } - AuraCreateInfo& SetBaseAmount(int32 const* bp) { BaseAmount = bp; return *this; } + AuraCreateInfo& SetBaseAmount(SpellEffectValue const* bp) { BaseAmount = bp; return *this; } AuraCreateInfo& SetCastItem(ObjectGuid const& guid, uint32 itemId, int32 itemLevel) { CastItemGUID = guid; CastItemId = itemId; CastItemLevel = itemLevel; return *this; } AuraCreateInfo& SetPeriodicReset(bool reset) { ResetPeriodicTimer = reset; return *this; } AuraCreateInfo& SetIsRefresh(bool* isRefresh) { IsRefresh = isRefresh; return *this; } @@ -126,7 +126,7 @@ struct TC_GAME_API AuraCreateInfo ObjectGuid CasterGUID; Unit* Caster = nullptr; - int32 const* BaseAmount = nullptr; + SpellEffectValue const* BaseAmount = nullptr; ObjectGuid CastItemGUID; uint32 CastItemId = 0; int32 CastItemLevel = -1; @@ -160,8 +160,8 @@ struct AuraKey struct AuraLoadEffectInfo { - std::array Amounts; - std::array BaseAmounts; + std::array Amounts; + std::array BaseAmounts; }; class TC_GAME_API Aura @@ -176,7 +176,7 @@ class TC_GAME_API Aura static Aura* TryCreate(AuraCreateInfo& createInfo); static Aura* Create(AuraCreateInfo& createInfo); explicit Aura(AuraCreateInfo const& createInfo); - void _InitEffects(uint32 effMask, Unit* caster, int32 const* baseAmount); + void _InitEffects(uint32 effMask, Unit* caster, SpellEffectValue const* baseAmount); virtual ~Aura(); SpellInfo const* GetSpellInfo() const { return m_spellInfo; } @@ -269,7 +269,7 @@ class TC_GAME_API Aura * @return Aura key. */ AuraKey GenerateKey(uint32& recalculateMask) const; - void SetLoadedState(int32 maxDuration, int32 duration, int32 charges, uint32 recalculateMask, int32* amount); + void SetLoadedState(int32 maxDuration, int32 duration, int32 charges, uint32 recalculateMask, SpellEffectValue const* amount); // helpers for aura effects bool CanPeriodicTickCrit() const; @@ -323,7 +323,7 @@ class TC_GAME_API Aura void CallScriptAfterEffectRemoveHandlers(AuraEffect const* aurEff, AuraApplication const* aurApp, AuraEffectHandleModes mode); bool CallScriptEffectPeriodicHandlers(AuraEffect const* aurEff, AuraApplication const* aurApp); void CallScriptEffectUpdatePeriodicHandlers(AuraEffect* aurEff); - void CallScriptEffectCalcAmountHandlers(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated); + void CallScriptEffectCalcAmountHandlers(AuraEffect const* aurEff, SpellEffectValue& amount, bool& canBeRecalculated); void CallScriptEffectCalcPeriodicHandlers(AuraEffect const* aurEff, bool& isPeriodic, int32& amplitude); void CallScriptEffectCalcSpellModHandlers(AuraEffect const* aurEff, SpellModifier*& spellMod); void CallScriptEffectCalcCritChanceHandlers(AuraEffect const* aurEff, AuraApplication const* aurApp, Unit const* victim, float& critChance); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 440dbb0acda36..d73bcdc3e2d54 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -438,10 +438,12 @@ void SpellCastTargets::Update(WorldObject* caster) SpellValue::SpellValue(SpellInfo const* proto, WorldObject const* caster) { - memset(EffectBasePoints, 0, sizeof(EffectBasePoints)); for (SpellEffectInfo const& spellEffectInfo : proto->GetEffects()) EffectBasePoints[spellEffectInfo.EffectIndex] = spellEffectInfo.CalcBaseValue(caster, nullptr, 0, -1); + for (std::size_t i = proto->GetEffects().size(); i < std::size(EffectBasePoints); ++i) + EffectBasePoints[i] = 0.0; + CustomBasePointsMask = 0; MaxAffectedTargets = proto->MaxAffectedTargets; RadiusMod = 1.0f; @@ -549,7 +551,7 @@ m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr) gameObjTarget = nullptr; m_corpseTarget = nullptr; destTarget = nullptr; - damage = 0; + effectValue = 0.0; targetMissInfo = SPELL_MISS_NONE; variance = 0.0f; effectHandleMode = SPELL_EFFECT_HANDLE_LAUNCH; @@ -5015,9 +5017,9 @@ int32 Spell::GetSpellCastDataAmmo() return ammoDisplayID; } -static std::pair CalcPredictedHealing(SpellInfo const* spellInfo, Unit const* unitCaster, Unit* target, uint32 castItemEntry, int32 castItemLevel, Spell* spell, bool withPeriodic) +static std::pair CalcPredictedHealing(SpellInfo const* spellInfo, Unit const* unitCaster, Unit* target, uint32 castItemEntry, int32 castItemLevel, Spell* spell, bool withPeriodic) { - int32 points = 0; + SpellEffectValue points = 0; SpellHealPredictionType type = SPELL_HEAL_PREDICTION_TARGET; for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects()) { @@ -5072,7 +5074,7 @@ void Spell::UpdateSpellHealPrediction(WorldPackets::Spells::SpellHealPrediction& if (Unit* target = m_targets.GetUnitTarget()) { auto [points, type] = CalcPredictedHealing(m_spellInfo, unitCaster, target, m_castItemEntry, m_castItemLevel, this, withPeriodic); - healPrediction.Points = points; + healPrediction.Points = static_cast(points); healPrediction.Type = type; } @@ -5761,7 +5763,7 @@ void Spell::HandleEffects(Unit* pUnitTarget, Item* pItemTarget, GameObject* pGoT destTarget = &m_destTargets[spellEffectInfo.EffectIndex]._position; effectInfo = &spellEffectInfo; - damage = CalculateDamage(spellEffectInfo, unitTarget, &variance); + effectValue = CalculateDamage(spellEffectInfo, unitTarget, &variance); bool preventDefault = CallScriptEffectHandlers(spellEffectInfo.EffectIndex, mode); @@ -6517,7 +6519,7 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 Optional petSlot; if (!spellEffectInfo.MiscValue) { - petSlot = PetSaveMode(spellEffectInfo.CalcValue()); + petSlot = PetSaveMode(spellEffectInfo.CalcValueAsInt()); // No pet can be summoned if any pet is dead for (Optional const& activePet : playerCaster->GetPetStable()->ActivePets) @@ -6849,8 +6851,8 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (target->GetOwner() && target->GetOwner()->GetTypeId() == TYPEID_PLAYER) return SPELL_FAILED_TARGET_IS_PLAYER_CONTROLLED; - int32 value = CalculateDamage(spellEffectInfo, target); - if (value && int32(target->GetLevelForTarget(m_caster)) > value) + SpellEffectValue value = CalculateDamage(spellEffectInfo, target); + if (value && target->GetLevelForTarget(m_caster) > value) return SPELL_FAILED_HIGHLEVEL; } @@ -7244,10 +7246,14 @@ SpellCastResult Spell::CheckMovement() const return SPELL_CAST_OK; } -int32 Spell::CalculateDamage(SpellEffectInfo const& spellEffectInfo, Unit const* target, float* var /*= nullptr*/) const +SpellEffectValue Spell::CalculateDamage(SpellEffectInfo const& spellEffectInfo, Unit const* target, float* var /*= nullptr*/) const { + if (var) + *var = 0.0f; + bool needRecalculateBasePoints = !(m_spellValue->CustomBasePointsMask & (1 << spellEffectInfo.EffectIndex)); - return m_caster->CalculateSpellDamage(target, spellEffectInfo, needRecalculateBasePoints ? nullptr : &m_spellValue->EffectBasePoints[spellEffectInfo.EffectIndex], var, m_castItemEntry, m_castItemLevel); + SpellEffectValue* basePoints = needRecalculateBasePoints ? nullptr : &m_spellValue->EffectBasePoints[spellEffectInfo.EffectIndex]; + return spellEffectInfo.CalcValue(m_caster, basePoints, target, var, m_castItemEntry, m_castItemLevel); } bool Spell::CanAutoCast(Unit* target) @@ -7685,7 +7691,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*= if (!itemTemplate) return SPELL_FAILED_ITEM_NOT_FOUND; - uint32 createCount = std::clamp(spellEffectInfo.CalcValue(), 1u, itemTemplate->GetMaxStackSize()); + uint32 createCount = std::clamp(spellEffectInfo.CalcValueAsInt(), 1u, itemTemplate->GetMaxStackSize()); ItemPosCountVec dest; InventoryResult msg = target->ToPlayer()->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, spellEffectInfo.ItemType, createCount); if (msg != EQUIP_ERR_OK) @@ -7707,7 +7713,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*= return SPELL_FAILED_DONT_REPORT; } else if (m_spellInfo->GetEffects().size() > EFFECT_1) - player->CastSpell(player, m_spellInfo->GetEffect(EFFECT_1).CalcValue(), CastSpellExtraArgs() + player->CastSpell(player, m_spellInfo->GetEffect(EFFECT_1).CalcValueAsInt(), CastSpellExtraArgs() .SetTriggeringSpell(this)); // move this to anywhere return SPELL_FAILED_DONT_REPORT; } @@ -8045,10 +8051,10 @@ void Spell::Delayed() // only called in DealDamage() //check pushback reduce int32 delaytime = 500; // spellcasting delay is normally 500ms - int32 delayReduce = 100; // must be initialized to 100 for percent modifiers + float delayReduce = 100.0f; // must be initialized to 100 for percent modifiers if (Player* player = unitCaster->GetSpellModOwner()) player->ApplySpellMod(m_spellInfo, SpellModOp::ResistPushback, delayReduce, this); - delayReduce += unitCaster->GetTotalAuraModifier(SPELL_AURA_REDUCE_PUSHBACK) - 100; + delayReduce += unitCaster->GetTotalAuraModifier(SPELL_AURA_REDUCE_PUSHBACK) - 100.0f; if (delayReduce >= 100) return; @@ -8087,10 +8093,10 @@ void Spell::DelayedChannel() int32 delaytime = CalculatePct(duration, 25); // channeling delay is normally 25% of its time per hit - int32 delayReduce = 100; // must be initialized to 100 for percent modifiers + float delayReduce = 100.0f; // must be initialized to 100 for percent modifiers if (Player* player = unitCaster->GetSpellModOwner()) player->ApplySpellMod(m_spellInfo, SpellModOp::ResistPushback, delayReduce, this); - delayReduce += unitCaster->GetTotalAuraModifier(SPELL_AURA_REDUCE_PUSHBACK) - 100; + delayReduce += unitCaster->GetTotalAuraModifier(SPELL_AURA_REDUCE_PUSHBACK) - 100.0f; if (delayReduce >= 100) return; @@ -8227,8 +8233,8 @@ bool Spell::CheckEffectTarget(Unit const* target, SpellEffectInfo const& spellEf return false; if (!target->GetCharmerGUID().IsEmpty()) return false; - if (int32 value = CalculateDamage(spellEffectInfo, target)) - if ((int32)target->GetLevelForTarget(m_caster) > value) + if (SpellEffectValue value = CalculateDamage(spellEffectInfo, target)) + if (target->GetLevelForTarget(m_caster) > value) return false; break; default: @@ -8743,7 +8749,7 @@ SpellCastResult Spell::CanOpenLock(SpellEffectInfo const& effect, uint32 lockId, // skill bonus provided by casting spell (mostly item spells) // add the effect base points modifier from the spell cast (cheat lock / skeleton key etc.) if (effect.TargetA.GetTarget() == TARGET_GAMEOBJECT_ITEM_TARGET || effect.TargetB.GetTarget() == TARGET_GAMEOBJECT_ITEM_TARGET) - skillValue += effect.CalcValue(); + skillValue += effect.CalcValueAsInt(); if (skillValue < reqSkillValue) return SPELL_FAILED_LOW_CASTLEVEL; @@ -8769,7 +8775,7 @@ void Spell::SetSpellValue(CastSpellExtraArgsInit::SpellValueOverride const& valu { if (value.Type >= SPELLVALUE_BASE_POINT0 && value.Type < SPELLVALUE_BASE_POINT_END) { - m_spellValue->EffectBasePoints[value.Type - SPELLVALUE_BASE_POINT0] = value.Value.I; + m_spellValue->EffectBasePoints[value.Type - SPELLVALUE_BASE_POINT0] = value.Value.F; m_spellValue->CustomBasePointsMask |= 1 << (value.Type - SPELLVALUE_BASE_POINT0); return; } @@ -8798,7 +8804,7 @@ void Spell::SetSpellValue(CastSpellExtraArgsInit::SpellValueOverride const& valu m_spellValue->CriticalChance = value.Value.F; break; case SPELLVALUE_DURATION_PCT: - m_spellValue->DurationMul = value.Value.F / 100.0f; + m_spellValue->DurationMul = value.Value.F / 100.0; break; default: break; @@ -9186,9 +9192,9 @@ void Spell::PrepareTriggersExecutedOnHit() { // calculate the chance using spell base amount, because aura amount is not updated on combo-points change // this possibly needs fixing - int32 auraBaseAmount = aurEff->GetBaseAmount(); + SpellEffectValue auraBaseAmount = aurEff->GetBaseAmount(); // proc chance is stored in effect amount - int32 chance = unitCaster->CalculateSpellDamage(nullptr, aurEff->GetSpellEffectInfo(), &auraBaseAmount); + int32 chance = aurEff->GetSpellEffectInfo().CalcValueAsInt(unitCaster, &auraBaseAmount); chance *= aurEff->GetBase()->GetStackAmount(); // build trigger and add to the list diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index cb8bcc4f1bf28..28ce4960de898 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -239,7 +239,7 @@ struct SpellLogEffect struct SpellValue { explicit SpellValue(SpellInfo const* proto, WorldObject const* caster); - int32 EffectBasePoints[MAX_SPELL_EFFECTS]; + SpellEffectValue EffectBasePoints[MAX_SPELL_EFFECTS]; uint32 CustomBasePointsMask; uint32 MaxAffectedTargets; float RadiusMod; @@ -543,7 +543,7 @@ class TC_GAME_API Spell bool CheckSpellCancelsConfuse(int32* param1) const; bool CheckSpellCancelsNoActions(int32* param1) const; - int32 CalculateDamage(SpellEffectInfo const& spellEffectInfo, Unit const* target, float* var = nullptr) const; + SpellEffectValue CalculateDamage(SpellEffectInfo const& spellEffectInfo, Unit const* target, float* var = nullptr) const; void Delayed(); void DelayedChannel(); @@ -799,7 +799,8 @@ class TC_GAME_API Spell GameObject* gameObjTarget; Corpse* m_corpseTarget; WorldLocation* destTarget; - int32 damage; + SpellEffectValue effectValue; + inline int32 GetEffectValueAsInt() const { return static_cast(effectValue); } SpellMissInfo targetMissInfo; float variance; SpellEffectHandleMode effectHandleMode; @@ -865,7 +866,7 @@ class TC_GAME_API Spell // info set at PreprocessTarget, used by DoTargetSpellHit DiminishingGroup DRGroup = DIMINISHING_NONE; int32 AuraDuration = 0; - int32 AuraBasePoints[MAX_SPELL_EFFECTS] = { }; + SpellEffectValue AuraBasePoints[MAX_SPELL_EFFECTS] = { }; UnitAura* HitAura = nullptr; ProcFlagsHit ProcHitMask = { }; diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 2415f725015bf..50fa4eca45685 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -212,7 +212,18 @@ enum class SpellPvpModifier : uint8 enum SpellValueMod : int32 { - SPELLVALUE_BASE_POINT0, + SPELLVALUE_MAX_TARGETS, + SPELLVALUE_AURA_STACK, + SPELLVALUE_DURATION, + SPELLVALUE_PARENT_SPELL_TARGET_COUNT, + SPELLVALUE_PARENT_SPELL_TARGET_INDEX, + + SPELLVALUE_INT_END +}; + +enum SpellValueModFloat : int32 +{ + SPELLVALUE_BASE_POINT0 = uint8(SPELLVALUE_INT_END), SPELLVALUE_BASE_POINT1, SPELLVALUE_BASE_POINT2, SPELLVALUE_BASE_POINT3, @@ -247,18 +258,7 @@ enum SpellValueMod : int32 SPELLVALUE_BASE_POINT_END, - SPELLVALUE_MAX_TARGETS = SPELLVALUE_BASE_POINT_END, - SPELLVALUE_AURA_STACK, - SPELLVALUE_DURATION, - SPELLVALUE_PARENT_SPELL_TARGET_COUNT, - SPELLVALUE_PARENT_SPELL_TARGET_INDEX, - - SPELLVALUE_INT_END -}; - -enum SpellValueModFloat : int32 -{ - SPELLVALUE_RADIUS_MOD = uint8(SPELLVALUE_INT_END), + SPELLVALUE_RADIUS_MOD = SPELLVALUE_BASE_POINT_END, SPELLVALUE_CRIT_CHANCE, SPELLVALUE_DURATION_PCT, }; @@ -493,12 +493,12 @@ struct CastSpellExtraArgsInit struct SpellValueOverride { SpellValueOverride(SpellValueMod mod, int32 val) : Type(mod) { Value.I = val; } - SpellValueOverride(SpellValueModFloat mod, float val) : Type(mod) { Value.F = val; } + SpellValueOverride(SpellValueModFloat mod, SpellEffectValue val) : Type(mod) { Value.F = val; } int32 Type; union { - float F; + SpellEffectValue F; int32 I; } Value; }; @@ -518,7 +518,7 @@ struct TC_GAME_API CastSpellExtraArgs : public CastSpellExtraArgsInit CastSpellExtraArgs(AuraEffect const* eff) { TriggerFlags = TRIGGERED_FULL_MASK; SetTriggeringAura(eff); } CastSpellExtraArgs(Difficulty castDifficulty) { CastDifficulty = castDifficulty; } CastSpellExtraArgs(SpellValueMod mod, int32 val) { SpellValueOverrides.emplace_back(mod, val); } - CastSpellExtraArgs(SpellValueModFloat mod, float val) { SpellValueOverrides.emplace_back(mod, val); } + CastSpellExtraArgs(SpellValueModFloat mod, SpellEffectValue val) { SpellValueOverrides.emplace_back(mod, val); } CastSpellExtraArgs(CastSpellExtraArgsInit&& init) : CastSpellExtraArgsInit(std::move(init)) { SetTriggeringSpell(TriggeringSpell); } CastSpellExtraArgs(CastSpellExtraArgs const& other); @@ -537,8 +537,8 @@ struct TC_GAME_API CastSpellExtraArgs : public CastSpellExtraArgsInit CastSpellExtraArgs& SetCastDifficulty(Difficulty castDifficulty) { CastDifficulty = castDifficulty; return *this; } CastSpellExtraArgs& SetOriginalCastId(ObjectGuid const& castId) { OriginalCastId = castId; return *this; } CastSpellExtraArgs& AddSpellMod(SpellValueMod mod, int32 val) { SpellValueOverrides.emplace_back(mod, val); return *this; } - CastSpellExtraArgs& AddSpellMod(SpellValueModFloat mod, float val) { SpellValueOverrides.emplace_back(mod, val); return *this; } - CastSpellExtraArgs& AddSpellBP0(int32 val) { return AddSpellMod(SPELLVALUE_BASE_POINT0, val); } // because i don't want to type SPELLVALUE_BASE_POINT0 300 times + CastSpellExtraArgs& AddSpellMod(SpellValueModFloat mod, SpellEffectValue val) { SpellValueOverrides.emplace_back(mod, val); return *this; } + CastSpellExtraArgs& AddSpellBP0(SpellEffectValue val) { return AddSpellMod(SPELLVALUE_BASE_POINT0, val); } // because i don't want to type SPELLVALUE_BASE_POINT0 300 times CastSpellExtraArgs& SetCustomArg(std::any customArg) { CustomArg = std::move(customArg); return *this; } CastSpellExtraArgs& SetScriptResult(Scripting::v2::ActionResultSetter&& scriptResult) { ScriptResult = std::move(scriptResult); return *this; } CastSpellExtraArgs& SetScriptWaitsForSpellHit(bool scriptWaitsForSpellHit) { ScriptWaitsForSpellHit = scriptWaitsForSpellHit; return *this; } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 5ca21302a6101..d261fcc2f50eb 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -477,7 +477,7 @@ void Spell::EffectResurrectNew() if (player->IsResurrectRequested()) // already have one active request return; - uint32 health = damage; + uint32 health = GetEffectValueAsInt(); uint32 mana = effectInfo->MiscValue; ExecuteLogEffectResurrect(SpellEffectName(effectInfo->Effect), player); player->SetResurrectRequestData(m_caster, health, mana, 0); @@ -516,6 +516,7 @@ void Spell::EffectEnvironmentalDMG() if (!unitTarget || !unitTarget->IsAlive()) return; + uint32 damage = GetEffectValueAsInt(); // CalcAbsorbResist already in Player::EnvironmentalDamage if (unitTarget->GetTypeId() == TYPEID_PLAYER) unitTarget->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage); @@ -543,6 +544,7 @@ void Spell::EffectSchoolDMG() if (unitTarget && unitTarget->IsAlive()) { + int32 damage = GetEffectValueAsInt(); bool apply_direct_bonus = true; // Meteor like spells (divided damage to targets) @@ -556,9 +558,9 @@ void Spell::EffectSchoolDMG() Unit* unitCaster = GetUnitCasterForEffectHandlers(); if (unitCaster && apply_direct_bonus) { - uint32 bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, (uint32)damage, SPELL_DIRECT_DAMAGE, *effectInfo, 1, this); - damage = bonus + uint32(bonus * variance); - damage = unitTarget->SpellDamageBonusTaken(unitCaster, m_spellInfo, (uint32)damage, SPELL_DIRECT_DAMAGE); + int32 bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, damage, SPELL_DIRECT_DAMAGE, *effectInfo, 1, this); + damage = bonus + int32(bonus * variance); + damage = unitTarget->SpellDamageBonusTaken(unitCaster, m_spellInfo, damage, SPELL_DIRECT_DAMAGE); } m_damage += damage; @@ -690,7 +692,7 @@ void Spell::EffectTriggerSpell() delay = Milliseconds(effectInfo->MiscValue); m_caster->m_Events.AddEventAtOffset([caster = m_caster, targets, originalCaster = m_originalCasterGUID, castItemGuid = m_castItemGUID, originalCastId = m_castId, - spellEffectInfo = effectInfo, value = damage, itemLevel = m_castItemLevel, targetCount, targetIndex]() mutable + spellEffectInfo = effectInfo, value = effectValue, itemLevel = m_castItemLevel, targetCount, targetIndex]() mutable { targets.Update(caster); // refresh pointers stored in targets @@ -707,7 +709,7 @@ void Spell::EffectTriggerSpell() // set basepoints for trigger with value effect if (spellEffectInfo->Effect == SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE) for (std::size_t i = 0; i < spellInfo->GetEffects().size(); ++i) - args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), value); + args.AddSpellMod(SpellValueModFloat(SPELLVALUE_BASE_POINT0 + i), value); if (targetCount) args.AddSpellMod(SPELLVALUE_PARENT_SPELL_TARGET_COUNT, *targetCount); @@ -773,7 +775,7 @@ void Spell::EffectTriggerMissileSpell() // set basepoints for trigger with value effect if (effectInfo->Effect == SPELL_EFFECT_TRIGGER_MISSILE_SPELL_WITH_VALUE) for (std::size_t i = 0; i < spellInfo->GetEffects().size(); ++i) - args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), damage); + args.AddSpellMod(SpellValueModFloat(SPELLVALUE_BASE_POINT0 + i), effectValue); if (targetCount) args.AddSpellMod(SPELLVALUE_PARENT_SPELL_TARGET_COUNT, *targetCount); @@ -809,20 +811,20 @@ void Spell::EffectForceCast() return; } - if (effectInfo->Effect == SPELL_EFFECT_FORCE_CAST && damage) + if (effectInfo->Effect == SPELL_EFFECT_FORCE_CAST) { switch (m_spellInfo->Id) { case 52588: // Skeletal Gryphon Escape case 48598: // Ride Flamebringer Cue - unitTarget->RemoveAura(damage); + unitTarget->RemoveAura(GetEffectValueAsInt()); break; case 52463: // Hide In Mine Car case 52349: // Overtake { CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.SetOriginalCaster(m_originalCasterGUID); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, damage); + args.AddSpellMod(SPELLVALUE_BASE_POINT0, effectValue); unitTarget->CastSpell(unitTarget, spellInfo->Id, args); return; } @@ -840,7 +842,7 @@ void Spell::EffectForceCast() CastSpellExtraArgs args(TRIGGERED_FULL_MASK & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_CAST_DIRECTLY | TRIGGERED_IGNORE_REAGENT_COST)); if (effectInfo->Effect == SPELL_EFFECT_FORCE_CAST_WITH_VALUE) for (std::size_t i = 0; i < spellInfo->GetEffects().size(); ++i) - args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), damage); + args.AddSpellMod(SpellValueModFloat(SPELLVALUE_BASE_POINT0 + i), effectValue); unitTarget->CastSpell(m_caster, spellInfo->Id, args); } @@ -1148,31 +1150,32 @@ void Spell::EffectPowerDrain() if (effectInfo->MiscValue < 0 || effectInfo->MiscValue >= int8(MAX_POWERS)) return; + int32 drainAmount = GetEffectValueAsInt(); Powers powerType = Powers(effectInfo->MiscValue); - if (!unitTarget || !unitTarget->IsAlive() || unitTarget->GetPowerType() != powerType || damage < 0) + if (!unitTarget || !unitTarget->IsAlive() || unitTarget->GetPowerType() != powerType || drainAmount < 0) return; Unit* unitCaster = GetUnitCasterForEffectHandlers(); // add spell damage bonus if (unitCaster) { - uint32 bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE, *effectInfo, 1, this); - damage = bonus + uint32(bonus * variance); - damage = unitTarget->SpellDamageBonusTaken(unitCaster, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE); + int32 bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, drainAmount, SPELL_DIRECT_DAMAGE, *effectInfo, 1, this); + drainAmount = bonus + int32(bonus * variance); + drainAmount = unitTarget->SpellDamageBonusTaken(unitCaster, m_spellInfo, drainAmount, SPELL_DIRECT_DAMAGE); } - int32 newDamage = -(unitTarget->ModifyPower(powerType, -damage)); + int32 damage = -unitTarget->ModifyPower(powerType, -drainAmount); // Don't restore from self drain float gainMultiplier = 0.f; if (unitCaster && unitCaster != unitTarget) { gainMultiplier = effectInfo->CalcValueMultiplier(unitCaster, this); - int32 const gain = int32(newDamage * gainMultiplier); + int32 const gain = int32(damage * gainMultiplier); unitCaster->EnergizeBySpell(unitCaster, m_spellInfo, gain, powerType); } - ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, newDamage, gainMultiplier); + ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, damage, gainMultiplier); } void Spell::EffectSendEvent() @@ -1221,21 +1224,22 @@ void Spell::EffectPowerBurn() if (effectInfo->MiscValue < 0 || effectInfo->MiscValue >= int8(MAX_POWERS)) return; + int32 burnAmount = GetEffectValueAsInt(); Powers powerType = Powers(effectInfo->MiscValue); - if (!unitTarget || !unitTarget->IsAlive() || unitTarget->GetPowerType() != powerType || damage < 0) + if (!unitTarget || !unitTarget->IsAlive() || unitTarget->GetPowerType() != powerType || burnAmount < 0) return; - int32 newDamage = -(unitTarget->ModifyPower(powerType, -damage)); + int32 damage = -unitTarget->ModifyPower(powerType, -burnAmount); // NO - Not a typo - EffectPowerBurn uses effect value multiplier - not effect damage multiplier float dmgMultiplier = effectInfo->CalcValueMultiplier(GetUnitCasterForEffectHandlers(), this); // add log data before multiplication (need power amount, not damage) - ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, newDamage, 0.0f); + ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, damage, 0.0f); - newDamage = int32(newDamage * dmgMultiplier); + damage = int32(damage * dmgMultiplier); - m_damage += newDamage; + m_damage += damage; } void Spell::EffectHeal() @@ -1243,7 +1247,9 @@ void Spell::EffectHeal() if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET) return; - if (!unitTarget || !unitTarget->IsAlive() || damage < 0) + int32 addhealth = GetEffectValueAsInt(); + + if (!unitTarget || !unitTarget->IsAlive() || addhealth < 0) return; Unit* unitCaster = GetUnitCasterForEffectHandlers(); @@ -1252,8 +1258,6 @@ void Spell::EffectHeal() if (!unitCaster) return; - int32 addhealth = damage; - // Vessel of the Naaru (Vial of the Sunwell trinket) ///@todo: move this to scripts if (m_spellInfo->Id == 45064) @@ -1270,11 +1274,11 @@ void Spell::EffectHeal() } // Death Pact - return pct of max health to caster else if (m_spellInfo->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && m_spellInfo->SpellFamilyFlags[0] & 0x00080000) - addhealth = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, int32(unitCaster->CountPctFromMaxHealth(damage)), HEAL, *effectInfo, 1, this); + addhealth = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, int32(unitCaster->CountPctFromMaxHealth(addhealth)), HEAL, *effectInfo, 1, this); else { - uint32 bonus = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, addhealth, HEAL, *effectInfo, 1, this); - addhealth = bonus + uint32(bonus * variance); + int32 bonus = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, addhealth, HEAL, *effectInfo, 1, this); + addhealth = bonus + int32(bonus * variance); } addhealth = unitTarget->SpellHealingBonusTaken(unitCaster, m_spellInfo, addhealth, HEAL); @@ -1291,10 +1295,10 @@ void Spell::EffectHealPct() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - if (!unitTarget || !unitTarget->IsAlive() || damage < 0) + if (!unitTarget || !unitTarget->IsAlive() || effectValue < 0) return; - uint32 heal = unitTarget->CountPctFromMaxHealth(damage); + int32 heal = unitTarget->CountPctFromMaxHealth(effectValue); if (Unit* unitCaster = GetUnitCasterForEffectHandlers()) { heal = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, heal, HEAL, *effectInfo, 1, this); @@ -1309,15 +1313,15 @@ void Spell::EffectHealMechanical() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - if (!unitTarget || !unitTarget->IsAlive() || damage < 0) + if (!unitTarget || !unitTarget->IsAlive() || effectValue < 0) return; Unit* unitCaster = GetUnitCasterForEffectHandlers(); - uint32 heal = damage; + int32 heal = GetEffectValueAsInt(); if (unitCaster) heal = unitCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, heal, HEAL, *effectInfo, 1, this); - heal += uint32(heal * variance); + heal += int32(heal * variance); if (unitCaster) heal = unitTarget->SpellHealingBonusTaken(unitCaster, m_spellInfo, heal, HEAL); @@ -1329,20 +1333,19 @@ void Spell::EffectHealthLeech() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; + int32 damage = GetEffectValueAsInt(); if (!unitTarget || !unitTarget->IsAlive() || damage < 0) return; Unit* unitCaster = GetUnitCasterForEffectHandlers(); - uint32 bonus = 0; + int32 bonus = 0; if (unitCaster) - bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE, *effectInfo, 1, this); + bonus = unitCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, damage, SPELL_DIRECT_DAMAGE, *effectInfo, 1, this); - damage = bonus + uint32(bonus * variance); + damage = bonus + int32(bonus * variance); if (unitCaster) - damage = unitTarget->SpellDamageBonusTaken(unitCaster, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE); - - TC_LOG_DEBUG("spells", "HealthLeech :{}", damage); + damage = unitTarget->SpellDamageBonusTaken(unitCaster, m_spellInfo, damage, SPELL_DIRECT_DAMAGE); float healMultiplier = effectInfo->CalcValueMultiplier(unitCaster, this); @@ -1354,7 +1357,7 @@ void Spell::EffectHealthLeech() damage -= absorb; // get max possible damage, don't count overkill for heal - uint32 healthGain = uint32(-unitTarget->GetHealthGain(-damage) * healMultiplier); + int32 healthGain = int32(-unitTarget->GetHealthGain(-damage) * healMultiplier); if (unitCaster && unitCaster->IsAlive()) { @@ -1381,12 +1384,7 @@ void Spell::DoCreateItem(uint32 itemId, ItemContext context /*= ItemContext::NON return; } - uint32 num_to_add = damage; - - if (num_to_add < 1) - num_to_add = 1; - if (num_to_add > pProto->GetMaxStackSize()) - num_to_add = pProto->GetMaxStackSize(); + uint32 num_to_add = std::clamp(GetEffectValueAsInt(), 1, pProto->GetMaxStackSize()); /* == gem perfection handling == */ // this is bad, should be done using spell_loot_template (and conditions) @@ -1591,29 +1589,30 @@ void Spell::EffectEnergize() if (unitTarget->GetMaxPower(power) == 0) return; + int32 energizeAmount = GetEffectValueAsInt(); // Some level depends spells switch (m_spellInfo->Id) { case 24571: // Blood Fury // Instantly increases your rage by ${(300-10*$max(0,$PL-60))/10}. - damage -= 10 * std::max(0, std::min(30, unitCaster->GetLevel() - 60)); + energizeAmount -= 10 * std::max(0, std::min(30, unitCaster->GetLevel() - 60)); break; case 24532: // Burst of Energy // Instantly increases your energy by ${60-4*$max(0,$min(15,$PL-60))}. - damage -= 4 * std::max(0, std::min(15, unitCaster->GetLevel() - 60)); + energizeAmount -= 4 * std::max(0, std::min(15, unitCaster->GetLevel() - 60)); break; case 67490: // Runic Mana Injector (mana gain increased by 25% for engineers - 3.2.0 patch change) { if (Player* player = unitCaster->ToPlayer()) if (player->HasSkill(SKILL_ENGINEERING)) - AddPct(damage, 25); + AddPct(energizeAmount, 25); break; } default: break; } - unitCaster->EnergizeBySpell(unitTarget, m_spellInfo, damage, power); + unitCaster->EnergizeBySpell(unitTarget, m_spellInfo, energizeAmount, power); } void Spell::EffectEnergizePct() @@ -1636,7 +1635,7 @@ void Spell::EffectEnergizePct() if (!maxPower) return; - uint32 const gain = CalculatePct(maxPower, damage); + uint32 const gain = CalculatePct(maxPower, effectValue); unitCaster->EnergizeBySpell(unitTarget, m_spellInfo, gain, power); } @@ -1933,7 +1932,7 @@ void Spell::EffectSummonType() case 833: case 1161: case 713: - numSummons = (damage > 0) ? damage : 1; + numSummons = std::max(GetEffectValueAsInt(), 1); break; default: numSummons = 1; @@ -1979,10 +1978,10 @@ void Spell::EffectSummonType() if (!summon || !summon->IsTotem()) return; - if (damage) // if not spell info, DB values used + if (int32 health = GetEffectValueAsInt()) // if not spell info, DB values used { - summon->SetMaxHealth(damage); - summon->SetHealth(damage); + summon->SetMaxHealth(health); + summon->SetHealth(health); } break; } @@ -2061,7 +2060,7 @@ void Spell::EffectSummonType() // The spell that this effect will trigger. It has SPELL_AURA_CONTROL_VEHICLE uint32 spellId = VEHICLE_SPELL_RIDE_HARDCODED; - int32 basePoints = effectInfo->CalcValue(); + SpellEffectValue basePoints = effectInfo->CalcValue(); if (basePoints > MAX_VEHICLE_SEATS) { SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(basePoints, GetCastDifficulty()); @@ -2153,9 +2152,11 @@ void Spell::EffectDispel() size_t remaining = dispelList.size(); + int32 dispelAmount = GetEffectValueAsInt(); + // Ok if exist some buffs for dispel try dispel it DispelChargesList successList; - successList.reserve(damage); + successList.reserve(dispelAmount); WorldPackets::Spells::DispelFailed dispelFailed; dispelFailed.CasterGUID = m_caster->GetGUID(); @@ -2163,7 +2164,7 @@ void Spell::EffectDispel() dispelFailed.SpellID = m_spellInfo->Id; // dispel N = damage buffs (or while exist buffs for dispel) - for (int32 count = 0; count < damage && remaining > 0;) + for (int32 count = 0; count < dispelAmount && remaining > 0;) { // Random select buff for dispel auto itr = dispelList.begin(); @@ -2257,7 +2258,7 @@ void Spell::EffectDistract() if (unitTarget->HasUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_STUNNED | UNIT_STATE_FLEEING)) return; - unitTarget->GetMotionMaster()->MoveDistract(damage * IN_MILLISECONDS, unitTarget->GetAbsoluteAngle(destTarget)); + unitTarget->GetMotionMaster()->MoveDistract(GetEffectValueAsInt() * IN_MILLISECONDS, unitTarget->GetAbsoluteAngle(destTarget)); } void Spell::EffectPickPocket() @@ -2370,7 +2371,8 @@ void Spell::EffectLearnSkill() if (!playerTarget) return; - if (damage < 1) + uint16 skillTier = GetEffectValueAsInt(); + if (skillTier < 1) return; uint32 skillid = effectInfo->MiscValue; @@ -2383,12 +2385,12 @@ void Spell::EffectLearnSkill() return; uint16 skillval = std::max(1, playerTarget->GetPureSkillValue(skillid)); - uint16 maxSkillVal = tier->GetValueForTierIndex(damage - 1); + uint16 maxSkillVal = tier->GetValueForTierIndex(skillTier - 1); if (rcEntry->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE) skillval = maxSkillVal; - playerTarget->SetSkill(skillid, damage, skillval, maxSkillVal); + playerTarget->SetSkill(skillid, skillTier, skillval, maxSkillVal); } void Spell::EffectPlayMovie() @@ -2438,7 +2440,7 @@ void Spell::EffectEnchantItemPerm() player->DestroyItemCount(itemTarget, count, true); unitTarget = player; // and add a scroll - damage = 1; + effectValue = 1.0; DoCreateItem(effectInfo->ItemType, m_spellInfo->HasAttribute(SPELL_ATTR0_IS_TRADESKILL) ? ItemContext::Trade_Skill : ItemContext::NONE); itemTarget = nullptr; m_targets.SetItemTarget(nullptr); @@ -2714,7 +2716,7 @@ void Spell::EffectSummonPet() Optional petSlot; if (!petentry) - petSlot = PetSaveMode(damage); + petSlot = PetSaveMode(GetEffectValueAsInt()); float x, y, z; owner->GetClosePoint(x, y, z, owner->GetCombatReach()); @@ -2845,8 +2847,8 @@ void Spell::EffectWeaponDmg() // some spell specific modifiers float totalDamagePercentMod = 1.0f; // applied to final bonus+weapon damage - int32 fixed_bonus = 0; - int32 spell_bonus = 0; // bonus specific for spell + SpellEffectValue fixed_bonus = 0; + SpellEffectValue spell_bonus = 0; // bonus specific for spell switch (m_spellInfo->SpellFamilyName) { @@ -2901,12 +2903,12 @@ void Spell::EffectWeaponDmg() float weapon_total_pct = unitCaster->GetPctModifierValue(unitMod, TOTAL_PCT); if (fixed_bonus) - fixed_bonus = int32(fixed_bonus * weapon_total_pct); + fixed_bonus = fixed_bonus * weapon_total_pct; if (spell_bonus) - spell_bonus = int32(spell_bonus * weapon_total_pct); + spell_bonus = spell_bonus * weapon_total_pct; } - int32 weaponDamage = unitCaster->CalculateDamage(m_attackType, normalized, addPctMods); + SpellEffectValue weaponDamage = unitCaster->CalculateDamage(m_attackType, normalized, addPctMods); Mechanics mechanic = MECHANIC_NONE; // Sequence is important @@ -2925,7 +2927,7 @@ void Spell::EffectWeaponDmg() weaponDamage += fixed_bonus; break; case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE: - weaponDamage = int32(weaponDamage * weaponDamagePercentMod); + weaponDamage = weaponDamage * weaponDamagePercentMod; break; default: continue; // not weapon damage effect, just skip @@ -2936,10 +2938,10 @@ void Spell::EffectWeaponDmg() } weaponDamage += spell_bonus; - weaponDamage = int32(weaponDamage * totalDamagePercentMod); + weaponDamage = weaponDamage * totalDamagePercentMod; // prevent negative damage - weaponDamage = std::max(weaponDamage, 0); + weaponDamage = std::max(std::round(weaponDamage), 0.0); // Add melee damage bonuses (also check for negative) weaponDamage = unitCaster->MeleeDamageBonusDone(unitTarget, weaponDamage, m_attackType, SPELL_DIRECT_DAMAGE, m_spellInfo, effectInfo, mechanic, m_spellSchoolMask, this); @@ -2961,7 +2963,7 @@ void Spell::EffectThreat() if (!unitTarget->CanHaveThreatList()) return; - unitTarget->GetThreatManager().AddThreat(unitCaster, float(damage), m_spellInfo, true); + unitTarget->GetThreatManager().AddThreat(unitCaster, effectValue, m_spellInfo, true); } void Spell::EffectHealMaxHealth() @@ -2979,7 +2981,7 @@ void Spell::EffectHealMaxHealth() int32 addhealth = 0; // damage == 0 - heal for caster max health - if (damage == 0) + if (GetEffectValueAsInt() == 0) addhealth = unitCaster->GetMaxHealth(); else addhealth = unitTarget->GetMaxHealth() - unitTarget->GetHealth(); @@ -3183,7 +3185,7 @@ void Spell::EffectScriptEffect() return; // Delete item from inventory at death - m_caster->ToPlayer()->DestroyItemCount(damage, 5, true); + m_caster->ToPlayer()->DestroyItemCount(GetEffectValueAsInt(), 5, true); return; } @@ -3200,7 +3202,7 @@ void Spell::EffectScriptEffect() { /// @todo a hack, range = 11, should after some time cast, otherwise too far unitCaster->CastSpell(parent, 62496, this); - unitTarget->CastSpell(parent, damage, CastSpellExtraArgs() + unitTarget->CastSpell(parent, GetEffectValueAsInt(), CastSpellExtraArgs() .SetTriggeringSpell(this)); // DIFFICULTY_NONE, so effect always valid } } @@ -3471,7 +3473,7 @@ void Spell::EffectEnchantHeldItem() uint32 enchant_id = effectInfo->MiscValue; int32 duration = m_spellInfo->GetDuration(); //Try duration index first .. if (!duration) - duration = damage;//+1; //Base points after .. + duration = GetEffectValueAsInt();//+1; //Base points after .. if (!duration) duration = 10 * IN_MILLISECONDS; //10 seconds for enchants which don't have listed duration @@ -3524,7 +3526,7 @@ void Spell::EffectInebriate() Player* player = unitTarget->ToPlayer(); uint8 currentDrunkValue = player->GetDrunkValue(); - uint8 drunkValue = std::clamp(damage + currentDrunkValue, 0, 100); + uint8 drunkValue = std::clamp(GetEffectValueAsInt() + currentDrunkValue, 0, 100); if (currentDrunkValue == 100 && currentDrunkValue == drunkValue) if (roll_chance_f(25.0f)) player->CastSpell(player, 67468, CastSpellExtraArgs() @@ -3669,8 +3671,8 @@ void Spell::EffectResurrect() if (player->IsResurrectRequested()) // already have one active request return; - uint32 health = player->CountPctFromMaxHealth(damage); - uint32 mana = CalculatePct(player->GetMaxPower(POWER_MANA), damage); + uint32 health = player->CountPctFromMaxHealth(effectValue); + uint32 mana = CalculatePct(player->GetMaxPower(POWER_MANA), effectValue); ExecuteLogEffectResurrect(SpellEffectName(effectInfo->Effect), player); @@ -3686,9 +3688,11 @@ void Spell::EffectAddExtraAttacks() if (!unitTarget || !unitTarget->IsAlive()) return; - unitTarget->AddExtraAttacks(damage); + int32 extraAttacks = GetEffectValueAsInt(); - ExecuteLogEffectExtraAttacks(SpellEffectName(effectInfo->Effect), unitTarget, damage); + unitTarget->AddExtraAttacks(extraAttacks); + + ExecuteLogEffectExtraAttacks(SpellEffectName(effectInfo->Effect), unitTarget, extraAttacks); } void Spell::EffectParry() @@ -3740,7 +3744,7 @@ void Spell::EffectReputation() Player* player = unitTarget->ToPlayer(); - int32 repChange = damage; + int32 repChange = GetEffectValueAsInt(); uint32 factionId = effectInfo->MiscValue; @@ -3831,17 +3835,17 @@ void Spell::EffectSelfResurrect() uint32 mana = 0; // flat case - if (damage < 0) + if (effectValue < 0) { - health = uint32(-damage); + health = uint32(-GetEffectValueAsInt()); mana = effectInfo->MiscValue; } // percent case else { - health = player->CountPctFromMaxHealth(damage); + health = player->CountPctFromMaxHealth(effectValue); if (player->GetMaxPower(POWER_MANA) > 0) - mana = CalculatePct(player->GetMaxPower(POWER_MANA), damage); + mana = CalculatePct(player->GetMaxPower(POWER_MANA), effectValue); } player->ResurrectPlayer(0.0f); @@ -4044,7 +4048,7 @@ void Spell::EffectKnockBack() float ratio = 0.1f; float speedXY = float(effectInfo->MiscValue) * ratio; - float speedZ = float(damage) * ratio; + float speedZ = effectValue * ratio; if (std::abs(speedXY) < 0.01f && std::abs(speedZ) < 0.01f) return; @@ -4074,7 +4078,7 @@ void Spell::EffectLeapBack() return; float speedxy = effectInfo->MiscValue / 10.f; - float speedz = damage / 10.f; + float speedz = effectValue / 10.f; // Disengage unitTarget->KnockbackFrom(unitTarget->GetPosition(), speedxy, speedz, effectInfo->PositionFacing); @@ -4221,7 +4225,7 @@ void Spell::EffectChangeRaidMarker() float x, y, z; destTarget->GetPosition(x, y, z); - group->AddRaidMarker(damage, player->GetMapId(), x, y, z); + group->AddRaidMarker(GetEffectValueAsInt(), player->GetMapId(), x, y, z); } void Spell::EffectDispelMechanic() @@ -4264,7 +4268,7 @@ void Spell::EffectResurrectPet() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT) return; - if (damage < 0) + if (effectValue < 0) return; Player* player = m_caster->ToPlayer(); @@ -4310,7 +4314,7 @@ void Spell::EffectResurrectPet() pet->RemoveUnitFlag(UNIT_FLAG_SKINNABLE); pet->setDeathState(ALIVE); pet->ClearUnitState(UNIT_STATE_ALL_ERASABLE); - pet->SetHealth(pet->CountPctFromMaxHealth(damage)); + pet->SetHealth(pet->CountPctFromMaxHealth(effectValue)); // Reset things for when the AI to takes over CharmInfo *ci = pet->GetCharmInfo(); @@ -4361,7 +4365,7 @@ void Spell::EffectDestroyAllTotems() } } - ApplyPct(mana, damage); + ApplyPct(mana, effectValue); if (mana) { @@ -4385,7 +4389,7 @@ void Spell::EffectDurabilityDamage() // -1 means all player equipped items and -2 all items if (slot < 0) { - unitTarget->ToPlayer()->DurabilityPointsLossAll(damage, (slot < -1)); + unitTarget->ToPlayer()->DurabilityPointsLossAll(GetEffectValueAsInt(), (slot < -1)); ExecuteLogEffectDurabilityDamage(SpellEffectName(effectInfo->Effect), unitTarget, -1, -1); return; } @@ -4396,7 +4400,7 @@ void Spell::EffectDurabilityDamage() if (Item* item = unitTarget->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) { - unitTarget->ToPlayer()->DurabilityPointsLoss(item, damage); + unitTarget->ToPlayer()->DurabilityPointsLoss(item, GetEffectValueAsInt()); ExecuteLogEffectDurabilityDamage(SpellEffectName(effectInfo->Effect), unitTarget, item->GetEntry(), slot); } } @@ -4415,7 +4419,7 @@ void Spell::EffectDurabilityDamagePCT() // Possibly its mean -1 all player equipped items and -2 all items if (slot < 0) { - unitTarget->ToPlayer()->DurabilityLossAll(float(damage) / 100.0f, (slot < -1)); + unitTarget->ToPlayer()->DurabilityLossAll(effectValue / 100.0, (slot < -1)); return; } @@ -4423,11 +4427,11 @@ void Spell::EffectDurabilityDamagePCT() if (slot >= INVENTORY_SLOT_BAG_END) return; - if (damage <= 0) + if (effectValue <= 0) return; if (Item* item = unitTarget->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) - unitTarget->ToPlayer()->DurabilityLoss(item, float(damage) / 100.0f); + unitTarget->ToPlayer()->DurabilityLoss(item, effectValue / 100.0); } void Spell::EffectModifyThreatPercent() @@ -4439,7 +4443,7 @@ void Spell::EffectModifyThreatPercent() if (!unitCaster || !unitTarget) return; - unitTarget->GetThreatManager().ModifyThreatByPercent(unitCaster, damage); + unitTarget->GetThreatManager().ModifyThreatByPercent(unitCaster, effectValue); } void Spell::EffectTransmitted() @@ -4639,11 +4643,12 @@ void Spell::EffectSkill() if (!playerTarget) return; - if (damage < 1) + uint16 skillStep = GetEffectValueAsInt(); + if (skillStep < 1) return; uint32 skillid = effectInfo->MiscValue; - if (playerTarget->GetSkillStep(skillid) >= damage) + if (playerTarget->GetSkillStep(skillid) >= skillStep) return; SkillRaceClassInfoEntry const* rcEntry = sDB2Manager.GetSkillRaceClassInfo(skillid, playerTarget->GetRace(), playerTarget->GetClass()); @@ -4655,12 +4660,12 @@ void Spell::EffectSkill() return; uint16 skillval = std::max(1, playerTarget->GetPureSkillValue(skillid)); - uint16 maxSkillVal = tier->GetValueForTierIndex(damage - 1); + uint16 maxSkillVal = tier->GetValueForTierIndex(skillStep - 1); if (rcEntry->Flags & SKILL_FLAG_ALWAYS_MAX_VALUE) skillval = maxSkillVal; - playerTarget->SetSkill(skillid, damage, skillval, maxSkillVal); + playerTarget->SetSkill(skillid, skillStep, skillval, maxSkillVal); } void Spell::EffectSpiritHeal() @@ -4758,9 +4763,11 @@ void Spell::EffectStealBeneficialBuff() size_t remaining = stealList.size(); + int32 stealAmount = GetEffectValueAsInt(); + // Ok if exist some buffs for dispel try dispel it std::vector> successList; - successList.reserve(damage); + successList.reserve(stealAmount); WorldPackets::Spells::DispelFailed dispelFailed; dispelFailed.CasterGUID = m_caster->GetGUID(); @@ -4768,7 +4775,7 @@ void Spell::EffectStealBeneficialBuff() dispelFailed.SpellID = m_spellInfo->Id; // dispel N = damage buffs (or while exist buffs for dispel) - for (int32 count = 0; count < damage && remaining > 0;) + for (int32 count = 0; count < stealAmount && remaining > 0;) { // Random select buff for dispel DispelChargesList::iterator itr = stealList.begin(); @@ -4959,7 +4966,7 @@ void Spell::EffectRedirectThreat() return; if (unitTarget) - unitCaster->GetThreatManager().RegisterRedirectThreat(m_spellInfo->Id, unitTarget->GetGUID(), uint32(damage)); + unitCaster->GetThreatManager().RegisterRedirectThreat(m_spellInfo->Id, unitTarget->GetGUID(), effectValue); } void Spell::EffectGameObjectDamage() @@ -4974,7 +4981,7 @@ void Spell::EffectGameObjectDamage() FactionTemplateEntry const* targetFaction = sFactionTemplateStore.LookupEntry(gameObjTarget->GetFaction()); // Do not allow to damage GO's of friendly factions (ie: Wintergrasp Walls/Ulduar Storm Beacons) if (!targetFaction || (casterFaction && !casterFaction->IsFriendlyTo(targetFaction))) - gameObjTarget->ModifyHealth(-damage, m_caster, GetSpellInfo()->Id); + gameObjTarget->ModifyHealth(-GetEffectValueAsInt(), m_caster, GetSpellInfo()->Id); } void Spell::EffectGameObjectRepair() @@ -4985,7 +4992,7 @@ void Spell::EffectGameObjectRepair() if (!gameObjTarget) return; - gameObjTarget->ModifyHealth(damage, m_caster); + gameObjTarget->ModifyHealth(GetEffectValueAsInt(), m_caster); } void Spell::EffectGameObjectSetDestructionState() @@ -5157,7 +5164,7 @@ void Spell::EffectDamageFromMaxHealthPCT() if (!unitTarget) return; - m_damage += unitTarget->CountPctFromMaxHealth(damage); + m_damage += unitTarget->CountPctFromMaxHealth(effectValue); } void Spell::EffectGiveCurrency() @@ -5171,7 +5178,7 @@ void Spell::EffectGiveCurrency() if (!sCurrencyTypesStore.LookupEntry(effectInfo->MiscValue)) return; - unitTarget->ToPlayer()->ModifyCurrency(effectInfo->MiscValue, damage, CurrencyGainSource::Spell, CurrencyDestroyReason::Spell); + unitTarget->ToPlayer()->ModifyCurrency(effectInfo->MiscValue, GetEffectValueAsInt(), CurrencyGainSource::Spell, CurrencyDestroyReason::Spell); } void Spell::EffectCastButtons() @@ -5283,11 +5290,11 @@ void Spell::EffectIncreaseCurrencyCap() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - if (damage <= 0) + if (effectValue <= 0) return; if (Player* player = unitTarget->ToPlayer()) - player->IncreaseCurrencyCap(effectInfo->MiscValue, damage); + player->IncreaseCurrencyCap(effectInfo->MiscValue, GetEffectValueAsInt()); } void Spell::EffectSummonRaFFriend() @@ -5309,7 +5316,7 @@ void Spell::EffectUnlockGuildVaultTab() // Safety checks done in Spell::CheckCast Player* caster = m_caster->ToPlayer(); if (Guild* guild = caster->GetGuild()) - guild->HandleBuyBankTab(caster->GetSession(), damage - 1); // Bank tabs start at zero internally + guild->HandleBuyBankTab(caster->GetSession(), GetEffectValueAsInt() - 1); // Bank tabs start at zero internally } void Spell::EffectSummonPersonalGameObject() @@ -5382,8 +5389,8 @@ void Spell::EffectResurrectWithAura() if (target->IsResurrectRequested()) // already have one active request return; - uint32 health = target->CountPctFromMaxHealth(damage); - uint32 mana = CalculatePct(target->GetMaxPower(POWER_MANA), damage); + uint32 health = target->CountPctFromMaxHealth(effectValue); + uint32 mana = CalculatePct(target->GetMaxPower(POWER_MANA), effectValue); uint32 resurrectAura = 0; if (sSpellMgr->GetSpellInfo(effectInfo->TriggerSpell, DIFFICULTY_NONE)) resurrectAura = effectInfo->TriggerSpell; @@ -5563,7 +5570,7 @@ void Spell::EffectGrantBattlePetLevel() if (!unitTarget || !unitTarget->IsCreature()) return; - playerCaster->GetSession()->GetBattlePetMgr()->GrantBattlePetLevel(unitTarget->GetBattlePetCompanionGUID(), damage); + playerCaster->GetSession()->GetBattlePetMgr()->GrantBattlePetLevel(unitTarget->GetBattlePetCompanionGUID(), GetEffectValueAsInt()); } void Spell::EffectGiveExperience() @@ -5589,7 +5596,7 @@ void Spell::EffectGiveRestedExperience() return; // effect value is number of resting hours - playerTarget->GetRestMgr().AddRestBonus(REST_TYPE_XP, damage * HOUR * playerTarget->GetRestMgr().CalcExtraPerSec(REST_TYPE_XP, 0.125f)); + playerTarget->GetRestMgr().AddRestBonus(REST_TYPE_XP, effectValue * float(HOUR) * playerTarget->GetRestMgr().CalcExtraPerSec(REST_TYPE_XP, 0.125f)); } void Spell::EffectHealBattlePetPct() @@ -5601,7 +5608,7 @@ void Spell::EffectHealBattlePetPct() return; if (BattlePets::BattlePetMgr* battlePetMgr = unitTarget->ToPlayer()->GetSession()->GetBattlePetMgr()) - battlePetMgr->HealBattlePetsPct(damage); + battlePetMgr->HealBattlePetsPct(GetEffectValueAsInt()); } void Spell::EffectEnableBattlePets() @@ -5629,10 +5636,7 @@ void Spell::EffectChangeBattlePetQuality() if (!unitTarget || !unitTarget->IsCreature()) return; - auto qualityItr = std::lower_bound(sBattlePetBreedQualityStore.begin(), sBattlePetBreedQualityStore.end(), damage, [](BattlePetBreedQualityEntry const* a1, int32 selector) - { - return a1->MaxQualityRoll < selector; - }); + auto qualityItr = std::ranges::lower_bound(sBattlePetBreedQualityStore, GetEffectValueAsInt(), {}, &BattlePetBreedQualityEntry::MaxQualityRoll); BattlePets::BattlePetBreedQuality quality = BattlePets::BattlePetBreedQuality::Poor; if (qualityItr != sBattlePetBreedQualityStore.end()) @@ -5761,7 +5765,7 @@ void Spell::EffectGiveArtifactPower() if (Aura* artifactAura = playerCaster->GetAura(ARTIFACTS_ALL_WEAPONS_GENERAL_WEAPON_EQUIPPED_PASSIVE)) if (Item* artifact = playerCaster->GetItemByGuid(artifactAura->GetCastItemGUID())) - artifact->GiveArtifactXp(damage, m_CastItem, uint32(effectInfo->MiscValue)); + artifact->GiveArtifactXp(uint64(effectValue), m_CastItem, uint32(effectInfo->MiscValue)); } void Spell::EffectGiveArtifactPowerNoBonus() @@ -5774,7 +5778,7 @@ void Spell::EffectGiveArtifactPowerNoBonus() if (Aura* artifactAura = unitTarget->GetAura(ARTIFACTS_ALL_WEAPONS_GENERAL_WEAPON_EQUIPPED_PASSIVE)) if (Item* artifact = unitTarget->ToPlayer()->GetItemByGuid(artifactAura->GetCastItemGUID())) - artifact->GiveArtifactXp(damage, m_CastItem, 0); + artifact->GiveArtifactXp(uint64(effectValue), m_CastItem, 0); } void Spell::EffectPlaySceneScriptPackage() @@ -5862,12 +5866,14 @@ void Spell::EffectGiveHonor() if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) return; + int32 honor = GetEffectValueAsInt(); + WorldPackets::Combat::PvPCredit packet; - packet.Honor = damage; - packet.OriginalHonor = damage; + packet.Honor = honor; + packet.OriginalHonor = honor; Player* playerTarget = unitTarget->ToPlayer(); - playerTarget->AddHonorXP(damage); + playerTarget->AddHonorXP(honor); playerTarget->SendDirectMessage(packet.Write()); } @@ -6094,7 +6100,7 @@ void Spell::EffectGrantBattlePetExperience() if (!unitTarget || !unitTarget->IsCreature()) return; - playerCaster->GetSession()->GetBattlePetMgr()->GrantBattlePetExperience(unitTarget->GetBattlePetCompanionGUID(), damage, BattlePets::BattlePetXpSource::SpellEffect); + playerCaster->GetSession()->GetBattlePetMgr()->GrantBattlePetExperience(unitTarget->GetBattlePetCompanionGUID(), GetEffectValueAsInt(), BattlePets::BattlePetXpSource::SpellEffect); } void Spell::EffectLearnTransmogIllusion() @@ -6125,10 +6131,10 @@ void Spell::EffectModifyAuraStacks() switch (effectInfo->MiscValue) { case 0: - targetAura->ModStackAmount(damage); + targetAura->ModStackAmount(GetEffectValueAsInt()); break; case 1: - targetAura->SetStackAmount(damage); + targetAura->SetStackAmount(GetEffectValueAsInt()); break; default: break; @@ -6140,7 +6146,7 @@ void Spell::EffectModifyCooldown() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - unitTarget->GetSpellHistory()->ModifyCooldown(effectInfo->TriggerSpell, Milliseconds(damage)); + unitTarget->GetSpellHistory()->ModifyCooldown(effectInfo->TriggerSpell, Milliseconds(GetEffectValueAsInt())); } void Spell::EffectModifyCooldowns() @@ -6159,7 +6165,7 @@ void Spell::EffectModifyCooldowns() return false; return (spellOnCooldown->SpellFamilyFlags[bitIndex / 32] & 1u << (bitIndex % 32)) != 0; - }, Milliseconds(damage)); + }, Milliseconds(GetEffectValueAsInt())); } void Spell::EffectModifyCooldownsByCategory() @@ -6170,7 +6176,7 @@ void Spell::EffectModifyCooldownsByCategory() unitTarget->GetSpellHistory()->ModifyCoooldowns([this](SpellHistory::CooldownEntry const& cooldown) { return sSpellMgr->AssertSpellInfo(cooldown.SpellId, DIFFICULTY_NONE)->CategoryId == uint32(effectInfo->MiscValue); - }, Milliseconds(damage)); + }, Milliseconds(GetEffectValueAsInt())); } void Spell::EffectModifySpellCharges() @@ -6178,7 +6184,7 @@ void Spell::EffectModifySpellCharges() if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) return; - for (int32 i = 0; i < damage; ++i) + for (int32 i = 0; i < GetEffectValueAsInt(); ++i) unitTarget->GetSpellHistory()->RestoreCharge(effectInfo->MiscValue); } @@ -6240,7 +6246,7 @@ void Spell::EffectChangeActiveCombatTraitConfig() if (!traitConfig) return; - target->UpdateTraitConfig(std::move(*traitConfig), damage, false); + target->UpdateTraitConfig(std::move(*traitConfig), GetEffectValueAsInt(), false); } void Spell::EffectTeleportGraveyard() @@ -6300,7 +6306,7 @@ void Spell::EffectSetPlayerDataElementAccount() if (!target) return; - target->SetDataElementAccount(effectInfo->MiscValue, int64(damage)); + target->SetDataElementAccount(effectInfo->MiscValue, int64(GetEffectValueAsInt())); } void Spell::EffectSetPlayerDataElementCharacter() @@ -6312,7 +6318,7 @@ void Spell::EffectSetPlayerDataElementCharacter() if (!target) return; - target->SetDataElementCharacter(effectInfo->MiscValue, int64(damage)); + target->SetDataElementCharacter(effectInfo->MiscValue, int64(GetEffectValueAsInt())); } void Spell::EffectSetPlayerDataFlagAccount() @@ -6324,7 +6330,7 @@ void Spell::EffectSetPlayerDataFlagAccount() if (!target) return; - target->SetDataFlagAccount(effectInfo->MiscValue, damage != 0); + target->SetDataFlagAccount(effectInfo->MiscValue, GetEffectValueAsInt() != 0); } void Spell::EffectSetPlayerDataFlagCharacter() @@ -6336,7 +6342,7 @@ void Spell::EffectSetPlayerDataFlagCharacter() if (!target) return; - target->SetDataFlagCharacter(effectInfo->MiscValue, damage != 0); + target->SetDataFlagCharacter(effectInfo->MiscValue, GetEffectValueAsInt() != 0); } void Spell::EffectEquipTransmogOutfit() diff --git a/src/server/game/Spells/SpellHistory.cpp b/src/server/game/Spells/SpellHistory.cpp index 6589cb8b2e113..c2140544dc106 100644 --- a/src/server/game/Spells/SpellHistory.cpp +++ b/src/server/game/Spells/SpellHistory.cpp @@ -456,7 +456,7 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel { auto calcRecoveryRate = [&](AuraEffect const* modRecoveryRate) { - float rate = 100.0f / (std::max(modRecoveryRate->GetAmount(), -99.0f) + 100.0f); + double rate = 100.0 / (std::max(modRecoveryRate->GetAmount(), -99.0) + 100.0); if (baseCooldown <= 1h && !spellInfo->HasAttribute(SPELL_ATTR6_IGNORE_FOR_MOD_TIME_RATE) && !modRecoveryRate->GetSpellEffectInfo().EffectAttributes.HasFlag(SpellEffectAttributes::IgnoreDuringCooldownTimeRateCalculation)) @@ -465,7 +465,7 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel return rate; }; - float recoveryRate = 1.0f; + double recoveryRate = 1.0; for (AuraEffect const* modRecoveryRate : _owner->GetAuraEffectsByType(SPELL_AURA_MOD_RECOVERY_RATE)) if (modRecoveryRate->IsAffectingSpell(spellInfo)) recoveryRate *= calcRecoveryRate(modRecoveryRate); @@ -474,7 +474,7 @@ void SpellHistory::StartCooldown(SpellInfo const* spellInfo, uint32 itemId, Spel if (spellInfo->HasLabel(modRecoveryRate->GetMiscValue()) || (modRecoveryRate->GetMiscValueB() && spellInfo->HasLabel(modRecoveryRate->GetMiscValueB()))) recoveryRate *= calcRecoveryRate(modRecoveryRate); - if (recoveryRate > 0.0f) + if (recoveryRate > 0.0) { cooldown = Duration(int64(cooldown.count() * recoveryRate)); categoryCooldown = Duration(int64(categoryCooldown.count() * recoveryRate)); @@ -1002,36 +1002,35 @@ int32 SpellHistory::GetChargeRecoveryTime(uint32 chargeCategoryId) const if (!chargeCategoryEntry) return 0; - int32 recoveryTime = chargeCategoryEntry->ChargeRecoveryTime; + SpellEffectValue recoveryTime = chargeCategoryEntry->ChargeRecoveryTime; recoveryTime += _owner->GetTotalAuraModifierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MOD, chargeCategoryId); for (AuraEffect const* modRecoveryRate : _owner->GetAuraEffectsByType(SPELL_AURA_MOD_CHARGE_RECOVERY_BY_TYPE_MASK)) if (modRecoveryRate->GetMiscValue() & chargeCategoryEntry->TypeMask) recoveryTime += modRecoveryRate->GetAmount(); - float recoveryTimeF = float(recoveryTime); - recoveryTimeF *= _owner->GetTotalAuraMultiplierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER, chargeCategoryId); + recoveryTime *= _owner->GetTotalAuraMultiplierByMiscValue(SPELL_AURA_CHARGE_RECOVERY_MULTIPLIER, chargeCategoryId); if (_owner->HasAuraType(SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE)) - recoveryTimeF *= _owner->m_unitData->ModSpellHaste; + recoveryTime *= _owner->m_unitData->ModSpellHaste; if (_owner->HasAuraTypeWithMiscvalue(SPELL_AURA_CHARGE_RECOVERY_AFFECTED_BY_HASTE_REGEN, chargeCategoryId)) - recoveryTimeF *= _owner->m_unitData->ModHasteRegen; + recoveryTime *= _owner->m_unitData->ModHasteRegen; for (AuraEffect const* modRecoveryRate : _owner->GetAuraEffectsByType(SPELL_AURA_MOD_CHARGE_RECOVERY_RATE)) if (modRecoveryRate->GetMiscValue() == int32(chargeCategoryId)) - recoveryTimeF *= 100.0f / (std::max(modRecoveryRate->GetAmount(), -99.0f) + 100.0f); + recoveryTime *= 100.0 / (std::max(modRecoveryRate->GetAmount(), -99.0) + 100.0); for (AuraEffect const* modRecoveryRate : _owner->GetAuraEffectsByType(SPELL_AURA_MOD_CHARGE_RECOVERY_RATE_BY_TYPE_MASK)) if (modRecoveryRate->GetMiscValue() & chargeCategoryEntry->TypeMask) - recoveryTimeF *= 100.0f / (std::max(modRecoveryRate->GetAmount(), -99.0f) + 100.0f); + recoveryTime *= 100.0 / (std::max(modRecoveryRate->GetAmount(), -99.0) + 100.0); if (Milliseconds(chargeCategoryEntry->ChargeRecoveryTime) <= 1h && !(chargeCategoryEntry->GetFlags().HasFlag(SpellCategoryFlags::IgnoreForModTimeRate)) && !(chargeCategoryEntry->GetFlags().HasFlag(SpellCategoryFlags::CooldownInDays))) - recoveryTimeF *= *_owner->m_unitData->ModTimeRate; + recoveryTime *= *_owner->m_unitData->ModTimeRate; - return int32(std::floor(recoveryTimeF)); + return int32(std::floor(recoveryTime)); } bool SpellHistory::HasGlobalCooldown(SpellInfo const* spellInfo) const diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 36d122984f3b1..05b90335d9179 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -512,7 +512,12 @@ uint32 SpellEffectInfo::GetPeriodicTickCount() const return totalTicks; } -int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 const* bp /*= nullptr*/, Unit const* target /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const +int32 SpellEffectInfo::CalcValueAsInt(WorldObject const* caster /*= nullptr*/, SpellEffectValue const* basePoints /*= nullptr*/, Unit const* target /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const +{ + return int32(CalcValue(caster, basePoints, target, variance, castItemId, itemLevel)); +} + +SpellEffectValue SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, SpellEffectValue const* bp /*= nullptr*/, Unit const* target /*= nullptr*/, float* variance /*= nullptr*/, uint32 castItemId /*= 0*/, int32 itemLevel /*= -1*/) const { SpellEffectValue basePoints = CalcBaseValue(caster, target, castItemId, itemLevel); SpellEffectValue value = bp ? *bp : basePoints; @@ -598,7 +603,59 @@ int32 SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullptr*/, int32 if (caster) value = caster->ApplyEffectModifiers(_spellInfo, EffectIndex, value); - return int32(round(value)); + switch (Effect) + { + case SPELL_EFFECT_SCHOOL_DAMAGE: + case SPELL_EFFECT_ENVIRONMENTAL_DAMAGE: + case SPELL_EFFECT_HEALTH_LEECH: + case SPELL_EFFECT_HEAL: + case SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL: + case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE: + case SPELL_EFFECT_WEAPON_DAMAGE: + case SPELL_EFFECT_HEAL_MAX_HEALTH: + case SPELL_EFFECT_HEAL_MECHANICAL: + case SPELL_EFFECT_NORMALIZED_WEAPON_DMG: + case SPELL_EFFECT_POWER_DRAIN: + case SPELL_EFFECT_ENERGIZE: + case SPELL_EFFECT_POWER_BURN: + value = std::round(value); + break; + case SPELL_EFFECT_APPLY_AURA: + case SPELL_EFFECT_PERSISTENT_AREA_AURA: + case SPELL_EFFECT_APPLY_AREA_AURA_PARTY: + case SPELL_EFFECT_APPLY_AREA_AURA_RAID: + case SPELL_EFFECT_APPLY_AREA_AURA_PET: + case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND: + case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY: + case SPELL_EFFECT_APPLY_AREA_AURA_OWNER: + case SPELL_EFFECT_APPLY_AURA_ON_PET: + case SPELL_EFFECT_APPLY_AREA_AURA_SUMMONS: + switch (ApplyAuraName) + { + case SPELL_AURA_PERIODIC_DAMAGE: + case SPELL_AURA_PERIODIC_HEAL: + case SPELL_AURA_PERIODIC_LEECH: + case SPELL_AURA_PERIODIC_HEALTH_FUNNEL: + case SPELL_AURA_PERIODIC_WEAPON_PERCENT_DAMAGE: + case SPELL_AURA_DAMAGE_SHIELD: + case SPELL_AURA_PROC_TRIGGER_DAMAGE: + case SPELL_AURA_OBS_MOD_HEALTH: + case SPELL_AURA_OBS_MOD_POWER: + case SPELL_AURA_PERIODIC_ENERGIZE: + case SPELL_AURA_PERIODIC_MANA_LEECH: + case SPELL_AURA_PERIODIC_DAMAGE_PERCENT: + case SPELL_AURA_POWER_BURN: + value = std::round(value); + break; + default: + break; + } + break; + default: + return false; + } + + return std::clamp(value, MinValue, MaxValue); } SpellEffectValue SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit const* target, uint32 itemId, int32 itemLevel) const @@ -658,7 +715,10 @@ SpellEffectValue SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit if (value > 0.0f && value < 1.0f) value = 1.0f; - return round(value); + if (!_spellInfo->HasAttribute(SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS)) + value = round(value); + + return value; } else { @@ -681,10 +741,12 @@ SpellEffectValue SpellEffectInfo::CalcBaseValue(WorldObject const* caster, Unit else if (caster && caster->IsUnit()) level = caster->ToUnit()->GetLevel(); - value = sDB2Manager.EvaluateExpectedStat(stat, level, expansion, 0, CLASS_NONE, 0) * BasePoints / 100.0f; + value = sDB2Manager.EvaluateExpectedStat(stat, level, expansion, 0, CLASS_NONE, 0) * value / 100.0f; + if (!_spellInfo->HasAttribute(SPELL_ATTR12_USE_FLOAT_VALUES_FOR_SCALING_AMOUNTS)) + value = round(value); } - return round(value); + return value; } } @@ -4582,7 +4644,7 @@ bool _isPositiveEffectImpl(SpellInfo const* spellInfo, SpellEffectInfo const& ef //We need scaling level info for some auras that compute bp 0 or positive but should be debuffs float bpScalePerLevel = effect.RealPointsPerLevel; - int32 bp = effect.CalcValue(); + SpellEffectValue bp = effect.CalcValue(); switch (spellInfo->SpellFamilyName) { case SPELLFAMILY_GENERIC: diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index aedf82f9e9624..aeb4f58bd1dca 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -263,7 +263,11 @@ class TC_GAME_API SpellEffectInfo uint32 GetPeriodicTickCount() const; - int32 CalcValue(WorldObject const* caster = nullptr, int32 const* basePoints = nullptr, Unit const* target = nullptr, float* variance = nullptr, uint32 castItemId = 0, int32 itemLevel = -1) const; + static constexpr SpellEffectValue MinValue = -2000000000.0; + static constexpr SpellEffectValue MaxValue = 2000000000.0; + + int32 CalcValueAsInt(WorldObject const* caster = nullptr, SpellEffectValue const* basePoints = nullptr, Unit const* target = nullptr, float* variance = nullptr, uint32 castItemId = 0, int32 itemLevel = -1) const; + SpellEffectValue CalcValue(WorldObject const* caster = nullptr, SpellEffectValue const* basePoints = nullptr, Unit const* target = nullptr, float* variance = nullptr, uint32 castItemId = 0, int32 itemLevel = -1) const; SpellEffectValue CalcBaseValue(WorldObject const* caster, Unit const* target, uint32 itemId, int32 itemLevel) const; float CalcValueMultiplier(WorldObject* caster, Spell* spell = nullptr) const; float CalcDamageMultiplier(WorldObject* caster, Spell* spell = nullptr) const; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 4188177476bb2..ce8d545b5fa27 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -410,7 +410,7 @@ void SpellMgr::GetSetOfSpellsInSpellGroup(SpellGroup group_id, std::set& } } -bool SpellMgr::AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, uint32 auraType, int32 amount, std::map& groups) const +bool SpellMgr::AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, AuraType auraType, SpellEffectValue amount, std::map& groups) const { uint32 spellId = spellInfo->GetFirstRankSpell()->Id; auto spellGroupBounds = GetSpellSpellGroupMapBounds(spellId); @@ -422,7 +422,7 @@ bool SpellMgr::AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, uin if (found != mSpellSameEffectStack.end()) { // check auraTypes - if (!found->second.count(auraType)) + if (!found->second.contains(auraType)) continue; // Put the highest amount in the map @@ -431,7 +431,7 @@ bool SpellMgr::AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, uin groups.emplace(group, amount); else { - int32 curr_amount = groups[group]; + SpellEffectValue curr_amount = groupItr->second; // Take absolute value because this also counts for the highest negative aura if (std::abs(curr_amount) < std::abs(amount)) groupItr->second = amount; @@ -975,7 +975,7 @@ void SpellMgr::LoadSpellLearnSkills() { case SPELL_EFFECT_SKILL: dbc_node.skill = uint16(spellEffectInfo.MiscValue); - dbc_node.step = uint16(spellEffectInfo.CalcValue()); + dbc_node.step = uint16(spellEffectInfo.CalcValueAsInt()); dbc_node.value = 0; dbc_node.maxvalue = 0; break; @@ -1858,7 +1858,7 @@ void SpellMgr::LoadSpellProcs() break; // proc auras with another aura reducing hit chance (eg 63767) only proc on missed attack case SPELL_AURA_MOD_HIT_CHANCE: - if (spellEffectInfo.CalcValue() <= -100) + if (spellEffectInfo.CalcValueAsInt() <= -100) procEntry.HitMask = PROC_HIT_MISS; break; case SPELL_AURA_PROC_TRIGGER_SPELL: @@ -2101,7 +2101,7 @@ void SpellMgr::LoadSpellLinked() { for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects()) { - if (spellEffectInfo.CalcValue() == abs(effect)) + if (spellEffectInfo.CalcValueAsInt() == abs(effect)) TC_LOG_ERROR("sql.sql", "The spell {} Effect: {} listed in `spell_linked_spell` has same bp{} like effect (possible hack).", abs(trigger), abs(effect), uint32(spellEffectInfo.EffectIndex)); } } @@ -3192,7 +3192,7 @@ void SpellMgr::LoadSpellInfoCustomAttributes() default: { // No value and not interrupt cast or crowd control without SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY flag - if (!spellEffectInfo.CalcValue() && !((spellEffectInfo.Effect == SPELL_EFFECT_INTERRUPT_CAST || spellInfoMutable->HasAttribute(SPELL_ATTR0_CU_AURA_CC)) && !spellInfoMutable->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES))) + if (!spellEffectInfo.CalcValueAsInt() && !((spellEffectInfo.Effect == SPELL_EFFECT_INTERRUPT_CAST || spellInfoMutable->HasAttribute(SPELL_ATTR0_CU_AURA_CC)) && !spellInfoMutable->HasAttribute(SPELL_ATTR0_NO_IMMUNITIES))) break; // Sindragosa Frost Breath diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 30cea7a5f1535..c9e954b25ee8a 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -439,7 +439,7 @@ class TC_GAME_API PetAura public: PetAura() : removeOnChangePet(false), damage(0) { } - PetAura(uint32 petEntry, uint32 aura, bool _removeOnChangePet, int _damage) : + PetAura(uint32 petEntry, uint32 aura, bool _removeOnChangePet, SpellEffectValue _damage) : removeOnChangePet(_removeOnChangePet), damage(_damage) { auras[petEntry] = aura; @@ -466,7 +466,7 @@ class TC_GAME_API PetAura return removeOnChangePet; } - int32 GetDamage() const + SpellEffectValue GetDamage() const { return damage; } @@ -474,7 +474,7 @@ class TC_GAME_API PetAura private: PetAuraMap auras; bool removeOnChangePet; - int32 damage; + SpellEffectValue damage; }; typedef std::map SpellPetAuraMap; @@ -697,7 +697,7 @@ class TC_GAME_API SpellMgr void GetSetOfSpellsInSpellGroup(SpellGroup group_id, std::set& foundSpells, std::set& usedGroups) const; // Spell Group Stack Rules table - bool AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, uint32 auraType, int32 amount, std::map& groups) const; + bool AddSameEffectStackRuleSpellGroups(SpellInfo const* spellInfo, AuraType auraType, SpellEffectValue amount, std::map& groups) const; SpellGroupStackRule CheckSpellGroupStackRules(SpellInfo const* spellInfo1, SpellInfo const* spellInfo2) const; SpellGroupStackRule GetSpellGroupStackRule(SpellGroup groupid) const; diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp index 0a1edb7ab5402..0e26eff614d78 100644 --- a/src/server/game/Spells/SpellScript.cpp +++ b/src/server/game/Spells/SpellScript.cpp @@ -719,7 +719,12 @@ SpellEffectInfo const& SpellScript::GetEffectInfo() const return *m_spell->effectInfo; } -int32 SpellScript::GetEffectValue() const +int32 SpellScript::GetEffectValueAsInt() const +{ + return static_cast(GetEffectValue()); +} + +SpellEffectValue SpellScript::GetEffectValue() const { if (!IsInEffectHook()) { @@ -727,10 +732,10 @@ int32 SpellScript::GetEffectValue() const return 0; } - return m_spell->damage; + return m_spell->effectValue; } -void SpellScript::SetEffectValue(int32 value) +void SpellScript::SetEffectValue(SpellEffectValue value) { if (!IsInEffectHook()) { @@ -738,7 +743,7 @@ void SpellScript::SetEffectValue(int32 value) return; } - m_spell->damage = value; + m_spell->effectValue = std::clamp(value, SpellEffectInfo::MinValue, SpellEffectInfo::MaxValue); } float SpellScript::GetEffectVariance() const diff --git a/src/server/game/Spells/SpellScript.h b/src/server/game/Spells/SpellScript.h index e3f818628b7b2..2ae439a3781fc 100644 --- a/src/server/game/Spells/SpellScript.h +++ b/src/server/game/Spells/SpellScript.h @@ -55,6 +55,8 @@ struct SpellValue; enum Difficulty : int16; enum class ItemContext : uint8; +using SpellEffectValue = double; + #define SPELL_EFFECT_ANY ((uint16)-1) #define SPELL_AURA_ANY ((uint16)-1) @@ -940,8 +942,9 @@ class TC_GAME_API SpellScript : public SpellScriptBase // method available only in EffectHandler method SpellEffectInfo const& GetEffectInfo() const; - int32 GetEffectValue() const; - void SetEffectValue(int32 value); + int32 GetEffectValueAsInt() const; + SpellEffectValue GetEffectValue() const; + void SetEffectValue(SpellEffectValue value); float GetEffectVariance() const; void SetEffectVariance(float variance); @@ -1191,7 +1194,7 @@ class TC_GAME_API AuraScript : public SpellScriptBase class EffectCalcAmountHandler final : public EffectBase { public: - using ScriptFuncInvoker = AuraScript::ScriptFuncInvoker; + using ScriptFuncInvoker = AuraScript::ScriptFuncInvoker; template explicit EffectCalcAmountHandler(ScriptFunc handler, uint8 effIndex, uint16 auraType) @@ -1203,17 +1206,17 @@ class TC_GAME_API AuraScript : public SpellScriptBase static_assert(ScriptFuncInvoker::Alignment >= alignof(ScriptFunc)); if constexpr (std::is_member_function_pointer_v) - static_assert(std::is_invocable_r_v, - R""(EffectCalcAmountHandler signature must be "void CalcAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)")""); + static_assert(std::is_invocable_r_v, + R""(EffectCalcAmountHandler signature must be "void CalcAmount(AuraEffect const* aurEff, SpellEffectValue& amount, bool& canBeRecalculated)")""); else - static_assert(std::is_invocable_r_v, - R""(EffectCalcAmountHandler signature must be "static void CalcAmount(your_script_class& script, AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated)")""); + static_assert(std::is_invocable_r_v, + R""(EffectCalcAmountHandler signature must be "static void CalcAmount(your_script_class& script, AuraEffect const* aurEff, SpellEffectValue& amount, bool& canBeRecalculated)")""); new (_invoker.ImplStorage.data()) ScriptFuncInvoker::Impl{ .Func = handler }; _invoker.Thunk = &ScriptFuncInvoker::Impl::Invoke; } - void Call(AuraScript* auraScript, AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated) const + void Call(AuraScript* auraScript, AuraEffect const* aurEff, SpellEffectValue& amount, bool& canBeRecalculated) const { return _invoker.Thunk(*auraScript, aurEff, amount, canBeRecalculated, _invoker.ImplStorage); } diff --git a/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp b/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp index 65e07c5a4765a..ce64017a19595 100644 --- a/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp +++ b/src/server/scripts/Argus/AntorusTheBurningThrone/boss_garothi_worldbreaker.cpp @@ -598,13 +598,13 @@ class spell_garothi_fel_bombardment_periodic : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandlePeriodic(AuraEffect const* aurEff) { if (Unit* caster = GetCaster()) - caster->CastSpell(GetTarget(), uint32(aurEff->GetSpellEffectInfo().CalcValue(caster)), true); + caster->CastSpell(GetTarget(), uint32(aurEff->GetSpellEffectInfo().CalcValueAsInt(caster)), true); } void Register() override @@ -651,7 +651,7 @@ class spell_garothi_searing_barrage_selector : public SpellScript void HandleHit(SpellEffIndex /*effIndex*/) { - uint32 spellId = GetEffectValue() == SPELL_SEARING_BARRAGE_DUMMY_ANNIHILATOR ? SPELL_SEARING_BARRAGE_DAMAGE_ANNIHILATOR : SPELL_SEARING_BARRAGE_DAMAGE_DECIMATOR; + uint32 spellId = GetEffectValueAsInt() == SPELL_SEARING_BARRAGE_DUMMY_ANNIHILATOR ? SPELL_SEARING_BARRAGE_DAMAGE_ANNIHILATOR : SPELL_SEARING_BARRAGE_DAMAGE_DECIMATOR; if (Unit* caster = GetCaster()) caster->CastSpell(GetHitUnit(), spellId, true); } @@ -739,13 +739,13 @@ class spell_garothi_annihilation_selector : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleHit(SpellEffIndex /*effIndex*/) { if (Unit* caster = GetCaster()) - caster->CastSpell(GetHitUnit(), uint32(GetEffectInfo().CalcValue(caster)), true); + caster->CastSpell(GetHitUnit(), uint32(GetEffectInfo().CalcValueAsInt(caster)), true); } void Register() override diff --git a/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp b/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp index 24b16f3b904da..175bedee0c088 100644 --- a/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp +++ b/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp @@ -262,13 +262,13 @@ class spell_arena_dalaran_sewers_pipe_flush_knockback_search_trigger : public Sp bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellInfo({ - static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) + static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleDummy(SpellEffIndex /*effIndex*/) const { - GetCaster()->CastSpell(nullptr, GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(), CastSpellExtraArgsInit + GetCaster()->CastSpell(nullptr, GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt(), CastSpellExtraArgsInit { .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR }); diff --git a/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp b/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp index f6810ecd7a597..7e3f5413b9ca1 100644 --- a/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp +++ b/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp @@ -609,7 +609,7 @@ class spell_bg_seething_shore_parachute : public SpellScript return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo( { - static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()), + static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()), SeethingShore::Spells::AchievementTrackerCreditClaimJumper, SeethingShore::Spells::AchievementTrackerDeathFromAbove }); @@ -623,7 +623,7 @@ class spell_bg_seething_shore_parachute : public SpellScript args.TriggerFlags = TRIGGERED_FULL_MASK; args.OriginalCastId = GetSpell()->m_castId; - player->CastSpell(player, static_cast(GetEffectInfo().CalcValue(player)), args); + player->CastSpell(player, static_cast(GetEffectInfo().CalcValueAsInt(player)), args); player->CastSpell(player, SeethingShore::Spells::AchievementTrackerCreditClaimJumper, true); player->CastSpell(player, SeethingShore::Spells::AchievementTrackerDeathFromAbove, true); } diff --git a/src/server/scripts/BrokenIsles/TrialOfValor/boss_guarm.cpp b/src/server/scripts/BrokenIsles/TrialOfValor/boss_guarm.cpp index fa5b8a08fb201..19f81696db8a4 100644 --- a/src/server/scripts/BrokenIsles/TrialOfValor/boss_guarm.cpp +++ b/src/server/scripts/BrokenIsles/TrialOfValor/boss_guarm.cpp @@ -418,7 +418,7 @@ class spell_lick_selector_guarm : public SpellScript void HandleHitTarget(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), GetEffectValue(), true); + GetCaster()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), true); } void Register() override @@ -728,7 +728,7 @@ class spell_volatile_foam_selector : public SpellScript void HandleHitTarget(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), GetEffectValue(), true); + GetCaster()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), true); } void Register() override @@ -769,7 +769,7 @@ class spell_volatile_foam_aura : public AuraScript { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo( { - (uint32)spellInfo->GetEffect(EFFECT_0).CalcValue(), // SpellIdOnDispel + (uint32)spellInfo->GetEffect(EFFECT_0).CalcValueAsInt(), // SpellIdOnDispel SpellIdOnExpire }); } @@ -782,7 +782,7 @@ class spell_volatile_foam_aura : public AuraScript if (removeMode == AURA_REMOVE_BY_EXPIRE) target->CastSpell(target, SpellIdOnExpire); else if (removeMode == AURA_REMOVE_BY_ENEMY_SPELL) - target->CastSpell(nullptr, GetSpellInfo()->GetEffect(EFFECT_0).CalcValue()); + target->CastSpell(nullptr, GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt()); } void Register() override diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 063d0699f17f3..46e8a7ad18675 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1005,7 +1005,7 @@ class debug_commandscript : public CommandScript for (auto const& pair : redirectInfo) { Unit* unit = ObjectAccessor::GetUnit(*target, pair.first); - handler->PSendSysMessage(" |-- %02u%% to %s", pair.second, unit ? unit->GetName().c_str() : pair.first.ToString().c_str()); + handler->PSendSysMessage(" |-- % 2.1f%% to %s", pair.second, unit ? unit->GetName().c_str() : pair.first.ToString().c_str()); } } } @@ -1025,7 +1025,7 @@ class debug_commandscript : public CommandScript for (auto const& innerPair : outerPair.second) // (guid, pct) { Unit* unit = ObjectAccessor::GetUnit(*target, innerPair.first); - handler->PSendSysMessage(" |-- %02u%% to %s", innerPair.second, unit ? unit->GetName().c_str() : innerPair.first.ToString().c_str()); + handler->PSendSysMessage(" |-- % 2.1f%% to %s", innerPair.second, unit ? unit->GetName().c_str() : innerPair.first.ToString().c_str()); } } } diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_argaloth.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_argaloth.cpp index ac6ddaffef9c3..4d684391a5729 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_argaloth.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_argaloth.cpp @@ -150,7 +150,7 @@ class spell_argaloth_consuming_darkness : public AuraScript { if (AuraEffect* aurEff = GetEffect(EFFECT_0)) { - int32 damage = aurEff->GetAmount() + CalculatePct(aurEff->GetAmount(), 10); + SpellEffectValue damage = aurEff->GetAmount() + CalculatePct(aurEff->GetAmount(), 10); aurEff->SetAmount(damage); } } diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp index 6d4b0e31a8e2a..332a333759b7b 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp @@ -248,7 +248,7 @@ class spell_occuthar_eyes_of_occuthar : public SpellScriptLoader { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } bool Load() override @@ -266,7 +266,7 @@ class spell_occuthar_eyes_of_occuthar : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), GetEffectValue(), true); + GetHitUnit()->CastSpell(GetCaster(), GetEffectValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/Gilneas/gilneas_chapter_1.cpp b/src/server/scripts/EasternKingdoms/Gilneas/gilneas_chapter_1.cpp index a249d16a0f577..2584514277531 100644 --- a/src/server/scripts/EasternKingdoms/Gilneas/gilneas_chapter_1.cpp +++ b/src/server/scripts/EasternKingdoms/Gilneas/gilneas_chapter_1.cpp @@ -147,14 +147,14 @@ class spell_gilneas_knocking : public SpellScript { return ValidateSpellInfo( { - uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()), - uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) + uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt()), + uint32(spellInfo->GetEffect(EFFECT_2).CalcValueAsInt()) }); } void HandleEffect() { - GetCaster()->CastSpell(GetCaster(), GetEffectInfo(RAND(EFFECT_1, EFFECT_2)).CalcValue(), true); + GetCaster()->CastSpell(GetCaster(), GetEffectInfo(RAND(EFFECT_1, EFFECT_2)).CalcValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_maiden_of_virtue_rtk.cpp b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_maiden_of_virtue_rtk.cpp index 2d0d9f9519fd7..a8bfc08f7cfeb 100644 --- a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_maiden_of_virtue_rtk.cpp +++ b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_maiden_of_virtue_rtk.cpp @@ -222,7 +222,7 @@ class spell_maiden_of_virtue_rtk_sacred_ground : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandlePeriodic(AuraEffect const* /*aurEff*/) const @@ -230,7 +230,7 @@ class spell_maiden_of_virtue_rtk_sacred_ground : public AuraScript if (!GetCaster()) return; - GetCaster()->CastSpell(GetTarget(), GetEffectInfo(EFFECT_0).CalcValue(), TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + GetCaster()->CastSpell(GetTarget(), GetEffectInfo(EFFECT_0).CalcValueAsInt(), TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp index c2d31a6b5f7e6..73a7e8bf1b101 100644 --- a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp +++ b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp @@ -679,7 +679,7 @@ class spell_shade_of_medivh_arcane_bolt_selector : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) const { - GetCaster()->CastSpell(GetHitUnit(), GetEffectValue(), CastSpellExtraArgsInit{ + GetCaster()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = GetSpell(), }); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index ff1cacd5e09a7..e16af7b56ddf6 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -614,7 +614,7 @@ class spell_death_knight_devour_humanoid : public SpellScript { void HandleScriptEffect(SpellEffIndex /* effIndex */) { - GetHitUnit()->CastSpell(GetCaster(), GetEffectValue(), true); + GetHitUnit()->CastSpell(GetCaster(), GetEffectValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp index 9536ae4db6a65..ac5f9c535d38f 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp @@ -31,7 +31,7 @@ class spell_shadowfang_keep_haunting_spirits : public AuraScript void HandleDummyTick(AuraEffect const* aurEff) { - GetTarget()->CastSpell(nullptr, aurEff->GetAmount(), true); + GetTarget()->CastSpell(nullptr, aurEff->GetAmountAsInt(), true); } void HandleUpdatePeriodic(AuraEffect* aurEff) diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index 68717bdb57f66..31b0d012c5881 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -601,12 +601,12 @@ class spell_kalecgos_tap_check : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleDummy(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), GetEffectInfo().CalcValue(), true); + GetHitUnit()->CastSpell(GetCaster(), GetEffectInfo().CalcValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index 9dce483983b0f..0381aaff7b977 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -415,7 +415,7 @@ class spell_mandokir_decapitate : public SpellScript { Unit* caster = GetCaster(); if (Player* target = GetHitPlayer()) - caster->CastSpell(target, uint32(GetEffectValue()), true); + caster->CastSpell(target, uint32(GetEffectValueAsInt()), true); } void Register() override @@ -442,7 +442,7 @@ class spell_mandokir_bloodletting : public AuraScript CastSpellExtraArgs args; args.TriggerFlags = TRIGGERED_FULL_MASK; - args.AddSpellMod(SPELLVALUE_BASE_POINT0, std::max(7500, target->CountPctFromCurHealth(aurEff->GetAmount()))); + args.AddSpellMod(SPELLVALUE_BASE_POINT0, std::max(7500, CalculatePct(target->GetHealth(), aurEff->GetAmount()))); caster->CastSpell(target, SPELL_BLOODLETTING_DAMAGE, args); target->CastSpell(caster, SPELL_BLOODLETTING_HEAL, args); @@ -460,7 +460,7 @@ class spell_mandokir_spirit_vengeance_cancel : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { if (Player* target = GetHitPlayer()) - target->RemoveAura(uint32(GetEffectValue())); + target->RemoveAura(uint32(GetEffectValueAsInt())); } void Register() override @@ -553,7 +553,7 @@ class spell_mandokir_ohgan_orders : public SpellScript { Unit* caster = GetCaster(); if (Unit* target = GetHitUnit()) - caster->CastSpell(target, uint32(GetEffectValue()), true); + caster->CastSpell(target, uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp index 7177fb2ec00f8..b2ea568a236de 100644 --- a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp +++ b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp @@ -353,13 +353,13 @@ class spell_stormwind_harbor_to_boralus_transition : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt()) }); } void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { if (Unit* caster = GetCaster()) - caster->CastSpell(caster, aurEff->GetAmount(), false); + caster->CastSpell(caster, aurEff->GetAmountAsInt(), false); } void Register() override diff --git a/src/server/scripts/Events/love_is_in_the_air.cpp b/src/server/scripts/Events/love_is_in_the_air.cpp index 10a5448c43b64..986c9664be054 100644 --- a/src/server/scripts/Events/love_is_in_the_air.cpp +++ b/src/server/scripts/Events/love_is_in_the_air.cpp @@ -152,12 +152,12 @@ class spell_love_is_in_the_air_fragrant_air_analysis : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override @@ -171,12 +171,12 @@ class spell_love_is_in_the_air_heavily_perfumed : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->CastSpell(GetTarget(), uint32(GetEffectInfo(EFFECT_0).CalcValue())); + GetTarget()->CastSpell(GetTarget(), uint32(GetEffectInfo(EFFECT_0).CalcValueAsInt())); } void Register() override @@ -241,7 +241,7 @@ class spell_love_is_in_the_air_service_uniform : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -258,7 +258,7 @@ class spell_love_is_in_the_air_service_uniform : public AuraScript void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->RemoveAurasDueToSpell(uint32(GetEffectInfo(EFFECT_0).CalcValue())); + GetTarget()->RemoveAurasDueToSpell(uint32(GetEffectInfo(EFFECT_0).CalcValueAsInt())); } void Register() override @@ -300,14 +300,14 @@ class spell_love_is_in_the_air_perfume_cologne_immune : public SpellScript { return ValidateSpellInfo( { - uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()), - uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()) + uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()), + uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetCaster()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Events/pilgrims_bounty.cpp b/src/server/scripts/Events/pilgrims_bounty.cpp index 9d0b8f7ad53b9..c3dbd4fc478ab 100644 --- a/src/server/scripts/Events/pilgrims_bounty.cpp +++ b/src/server/scripts/Events/pilgrims_bounty.cpp @@ -87,7 +87,7 @@ class spell_pilgrims_bounty_feast_on : public SpellScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) - && ValidateSpellEffect({ { uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()), EFFECT_0 } }); + && ValidateSpellEffect({ { uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()), EFFECT_0 } }); } void HandleDummy(SpellEffIndex /*effIndex*/) @@ -125,10 +125,10 @@ class spell_pilgrims_bounty_feast_on : public SpellScript .SetOriginalCaster(player->GetGUID())); } - if (Aura* aura = caster->GetAura(GetEffectValue())) + if (Aura* aura = caster->GetAura(GetEffectValueAsInt())) { if (aura->GetStackAmount() == 1) - caster->RemoveAurasDueToSpell(aura->GetSpellInfo()->GetEffect(EFFECT_0).CalcValue()); + caster->RemoveAurasDueToSpell(aura->GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt()); aura->ModStackAmount(-1); } } @@ -411,14 +411,14 @@ class spell_pilgrims_bounty_a_serving_of : public AuraScript void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->CastSpell(target, uint32(aurEff->GetAmount()), true); + target->CastSpell(target, uint32(aurEff->GetAmountAsInt()), true); HandlePlate(target, true); } void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->RemoveAurasDueToSpell(aurEff->GetAmount()); + target->RemoveAurasDueToSpell(aurEff->GetAmountAsInt()); HandlePlate(target, false); } diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp index 9b5ebec95f629..245759b8c33ff 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp @@ -208,7 +208,7 @@ class spell_subjugator_korul_darkness_calls : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { if (Unit* hitUnit = GetHitUnit()) - GetCaster()->CastSpell(hitUnit, uint32(GetEffectValue()), true); + GetCaster()->CastSpell(hitUnit, uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index 64668e887eac8..d5b9ee9243fa7 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -409,13 +409,13 @@ class spell_baleroc_decimating_strike : public SpellScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }) - && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) }); + && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValueAsInt()) }); } void ChangeDamage() { int32 healthPctDmg = GetHitUnit()->CountPctFromMaxHealth(GetEffectInfo(EFFECT_0).CalcValue(GetCaster())); - int32 flatDmg = GetEffectInfo(EFFECT_2).CalcValue(GetCaster()); + int32 flatDmg = GetEffectInfo(EFFECT_2).CalcValueAsInt(GetCaster()); SetHitDamage(healthPctDmg < flatDmg ? flatDmg : healthPctDmg); } @@ -779,7 +779,7 @@ class spell_baleroc_vital_flame : public AuraScript } stacks = GetCaster()->GetAuraCount(SPELL_VITAL_SPARK); - int32 healingPct = sSpellMgr->AssertSpellInfo(SPELL_VITAL_SPARK, GetCastDifficulty())->GetEffect(EFFECT_0).CalcValue(GetCaster()) * stacks; + SpellEffectValue healingPct = sSpellMgr->AssertSpellInfo(SPELL_VITAL_SPARK, GetCastDifficulty())->GetEffect(EFFECT_0).CalcValue(GetCaster()) * stacks; if (GetAura()->GetEffect(EFFECT_0)->GetAmount() < healingPct) GetAura()->GetEffect(EFFECT_0)->SetAmount(healingPct); diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp index 764cd43494f81..5bcbf61ddf053 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp @@ -287,7 +287,7 @@ class spell_anhuur_disable_beacon_beams : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->RemoveAurasDueToSpell(GetEffectValue()); + GetHitUnit()->RemoveAurasDueToSpell(GetEffectValueAsInt()); } void Notify(SpellEffIndex /*index*/) diff --git a/src/server/scripts/Kalimdor/RagefireChasm/boss_dark_shaman_koranthal.cpp b/src/server/scripts/Kalimdor/RagefireChasm/boss_dark_shaman_koranthal.cpp index beba0fa6b2c83..ac7c7ad32a00c 100644 --- a/src/server/scripts/Kalimdor/RagefireChasm/boss_dark_shaman_koranthal.cpp +++ b/src/server/scripts/Kalimdor/RagefireChasm/boss_dark_shaman_koranthal.cpp @@ -126,7 +126,7 @@ class spell_dark_shaman_koranthal_shadow_storm : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) const { - GetCaster()->CastSpell(GetHitUnit(), GetEffectValue(), true); + GetCaster()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index 41c617f2305ea..554245cb6cd6e 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -38,7 +38,7 @@ class spell_ooze_zap : public SpellScript SpellCastResult CheckRequirement() { - if (!GetCaster()->HasAura(GetEffectInfo(EFFECT_1).CalcValue())) + if (!GetCaster()->HasAura(GetEffectInfo(EFFECT_1).CalcValueAsInt())) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; // This is actually correct if (!GetExplTargetUnit()) @@ -51,7 +51,7 @@ class spell_ooze_zap : public SpellScript { PreventHitDefaultEffect(effIndex); if (GetHitUnit()) - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -95,7 +95,7 @@ class spell_energize_aoe : public SpellScript { for (std::list::iterator itr = targets.begin(); itr != targets.end();) { - if ((*itr)->GetTypeId() == TYPEID_PLAYER && (*itr)->ToPlayer()->GetQuestStatus(GetEffectInfo(EFFECT_1).CalcValue()) == QUEST_STATUS_INCOMPLETE) + if ((*itr)->GetTypeId() == TYPEID_PLAYER && (*itr)->ToPlayer()->GetQuestStatus(GetEffectInfo(EFFECT_1).CalcValueAsInt()) == QUEST_STATUS_INCOMPLETE) ++itr; else targets.erase(itr++); @@ -106,7 +106,7 @@ class spell_energize_aoe : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp b/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp index dd087c8ffc1f3..a58a70b31b838 100644 --- a/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp +++ b/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp @@ -474,7 +474,7 @@ class spell_edna_refracting_beam_selector : public SpellScript void FilterTargets(std::list& targets) const { SpellInfo const* spell = sSpellMgr->GetSpellInfo(SPELL_REFRACTING_BEAM_DAMAGE, GetCastDifficulty()); - uint32 maxTargets = spell->GetEffect(EFFECT_3).CalcValue(GetCaster()); + uint32 maxTargets = spell->GetEffect(EFFECT_3).CalcValueAsInt(GetCaster()); if (targets.size() > maxTargets) targets.resize(maxTargets); diff --git a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp index 6b69fda548277..683f206f23e50 100644 --- a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp +++ b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp @@ -472,12 +472,12 @@ class spell_lord_stormsong_surrender_to_the_void : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleDummy(SpellEffIndex /* effIndex */) const { - GetHitUnit()->m_Events.AddEvent([hitUnit = GetHitUnit(), casterGUID = GetCaster()->GetGUID(), spellId = GetEffectValue()]() + GetHitUnit()->m_Events.AddEvent([hitUnit = GetHitUnit(), casterGUID = GetCaster()->GetGUID(), spellId = GetEffectValueAsInt()]() { if (Unit* caster = ObjectAccessor::GetUnit(*hitUnit, casterGUID)) hitUnit->CastSpell(caster, uint32(spellId), TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); @@ -495,13 +495,13 @@ class spell_lord_stormsong_disciple_of_the_vol_zith : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandlePeriodic(AuraEffect const* /*aurEff*/) const { Unit* target = GetTarget(); - target->CastSpell(target, GetEffectInfo(EFFECT_0).CalcValue(), TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + target->CastSpell(target, GetEffectInfo(EFFECT_0).CalcValueAsInt(), TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); } void Register() override diff --git a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp index 131aba7bcdaf0..b036ff896b80a 100644 --- a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp +++ b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp @@ -351,12 +351,12 @@ class spell_tidesage_council_ward_selector : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleHitTarget(SpellEffIndex /*effIndex*/) const { - GetCaster()->CastSpell(GetHitUnit()->GetPosition(), GetEffectValue(), CastSpellExtraArgsInit{ + GetCaster()->CastSpell(GetHitUnit()->GetPosition(), GetEffectValueAsInt(), CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = GetSpell() }); diff --git a/src/server/scripts/KulTiras/WaycrestManor/boss_heartsbane_triad.cpp b/src/server/scripts/KulTiras/WaycrestManor/boss_heartsbane_triad.cpp index 8e8e206668b15..b311343983e0f 100644 --- a/src/server/scripts/KulTiras/WaycrestManor/boss_heartsbane_triad.cpp +++ b/src/server/scripts/KulTiras/WaycrestManor/boss_heartsbane_triad.cpp @@ -676,7 +676,7 @@ class spell_heartsbane_triad_jagged_nettles : public AuraScript { if (aurEff->GetTickNumber() > 1) { - if (GetTarget()->GetHealthPct() >= float(GetEffectInfo(EFFECT_2).CalcValue(GetCaster()))) + if (GetTarget()->GetHealthPct() >= GetEffectInfo(EFFECT_2).CalcValue(GetCaster())) Remove(); } } diff --git a/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp b/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp index d08fe51c8afaa..980daec93cc37 100644 --- a/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp +++ b/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp @@ -278,7 +278,7 @@ class spell_soulbound_goliath_soul_thorns_remove_stun : public SpellScript if (TempSummon* target = GetHitUnit()->ToTempSummon()) { if (Unit* summoner = target->GetSummonerUnit()) - summoner->RemoveAurasDueToSpell(GetEffectValue()); + summoner->RemoveAurasDueToSpell(GetEffectValueAsInt()); } } diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.cpp index c6ab0f90be32e..9d69d02bef68e 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/ahnkahet.cpp @@ -86,20 +86,20 @@ class spell_ahnkahet_yogg_saron_whisper : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValue())) && - sSoundKitStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_1).CalcValue())); + return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt())) && + sSoundKitStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt())); } void HandleScript(SpellEffIndex /*effIndex*/) { if (Player* player = GetHitPlayer()) - GetCaster()->Unit::Whisper(uint32(GetEffectValue()), player, false); + GetCaster()->Unit::Whisper(uint32(GetEffectValueAsInt()), player, false); } void HandleDummy(SpellEffIndex /*effIndex*/) { if (Player* player = GetHitPlayer()) - player->PlayDistanceSound(uint32(GetEffectValue()), player); + player->PlayDistanceSound(uint32(GetEffectValueAsInt()), player); } void Register() override diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 67117eb675d29..5b5af02855b76 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -1704,8 +1704,8 @@ class spell_halion_clear_debuffs : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - if (GetHitUnit()->HasAura(GetEffectInfo().CalcValue())) - GetHitUnit()->RemoveAurasDueToSpell(GetEffectInfo().CalcValue()); + if (GetHitUnit()->HasAura(GetEffectInfo().CalcValueAsInt())) + GetHitUnit()->RemoveAurasDueToSpell(GetEffectInfo().CalcValueAsInt()); } void Register() override diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index d6fe5c2a011e7..a8b667572b322 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -241,7 +241,7 @@ class spell_saviana_conflagration_throwback : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); GetHitUnit()->GetMotionMaster()->MovePoint(POINT_LAND, SavianaRagefireFlyInPos); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index a42e87a133568..43ef561e70fa6 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -384,12 +384,12 @@ class spell_black_knight_ghoul_explode : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectInfo(EFFECT_0).CalcValue())); + GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectInfo(EFFECT_0).CalcValueAsInt())); } void Register() override @@ -404,12 +404,12 @@ class spell_black_knight_ghoul_explode_risen_ghoul : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue())); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index 08c75cc716aee..d157c8ce2e37b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -855,7 +855,7 @@ class spell_anubarak_leeching_swarm : public AuraScript Unit* caster = GetCaster(); if (Unit* target = GetTarget()) { - int32 lifeLeeched = target->CountPctFromCurHealth(aurEff->GetAmount()); + SpellEffectValue lifeLeeched = target->CountPctFromCurHealth(aurEff->GetAmount()); if (lifeLeeched < 250) lifeLeeched = 250; CastSpellExtraArgs args(TRIGGERED_FULL_MASK); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index c6a4c1a939531..752879f7ad253 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -487,7 +487,7 @@ class spell_mistress_kiss_area : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void FilterTargets(std::list& targets) @@ -508,7 +508,7 @@ class spell_mistress_kiss_area : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -523,12 +523,12 @@ class spell_fel_streak_visual : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), static_cast(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), static_cast(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index f744fe1c8f908..89151a737ed02 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -1150,7 +1150,7 @@ class spell_jormungars_paralytic_toxin : public AuraScript GetTarget()->RemoveAurasDueToSpell(SPELL_PARALYSIS); } - void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* aurEff, SpellEffectValue& amount, bool& canBeRecalculated) { if (!canBeRecalculated) amount = aurEff->GetAmount(); @@ -1162,7 +1162,7 @@ class spell_jormungars_paralytic_toxin : public AuraScript { if (AuraEffect* slowEff = GetEffect(EFFECT_0)) { - int32 newAmount = slowEff->GetAmount() - 10; + SpellEffectValue newAmount = slowEff->GetAmount() - 10; if (newAmount < -100) newAmount = -100; slowEff->ChangeAmount(newAmount); @@ -1270,12 +1270,12 @@ class spell_icehowl_arctic_breath : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - uint32 spellId = GetEffectInfo().CalcValue(); + uint32 spellId = GetEffectInfo().CalcValueAsInt(); GetCaster()->CastSpell(GetHitUnit(), spellId, true); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index 98607db6f34a8..408bb22c1b47e 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -750,7 +750,7 @@ class spell_valkyr_essences : public AuraScript // Twin Vortex part uint32 lightVortex = SPELL_LIGHT_VORTEX_DAMAGE; uint32 darkVortex = SPELL_DARK_VORTEX_DAMAGE; - int32 stacksCount = dmgInfo.GetSpellInfo()->GetEffect(EFFECT_0).CalcValue() / 1000 - 1; + int32 stacksCount = dmgInfo.GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt() / 1000 - 1; if (lightVortex && darkVortex && stacksCount) { diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index f38e1dcf690cc..c0042273ef99e 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -255,13 +255,13 @@ class spell_trollgore_invader_taunt : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleTaunt(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) - target->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + target->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index a5db42cf2d3f3..86d5c33c26ffb 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -262,7 +262,7 @@ class spell_bronjahm_consume_soul : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetHitUnit(), GetEffectValue(), true); + GetHitUnit()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index 0660da6176ae6..35c2d3df9331f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -145,7 +145,7 @@ class spell_marwyn_shared_suffering : public SpellScriptLoader if (Unit* caster = GetCaster()) { - int32 remainingDamage = aurEff->GetAmount() * aurEff->GetRemainingTicks(); + SpellEffectValue remainingDamage = aurEff->GetAmount() * aurEff->GetRemainingTicks(); if (remainingDamage > 0) { CastSpellExtraArgs args(TRIGGERED_FULL_MASK); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index 531f88a88e45d..22e2a9339b5c7 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -600,7 +600,7 @@ class spell_krick_pursuit : public SpellScript ick->AI()->Talk(SAY_ICK_CHASE_1, target); ick->AddAura(GetSpellInfo()->Id, target); ick->AI()->DoAction(ACTION_STORE_OLD_TARGET); - ick->GetThreatManager().AddThreat(target, float(GetEffectValue()), GetSpellInfo(), true, true); + ick->GetThreatManager().AddThreat(target, GetEffectValue(), GetSpellInfo(), true, true); ick->GetThreatManager().FixateTarget(target); } } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 0ca2b57d1eb96..6ace8aa4ed864 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -1092,7 +1092,7 @@ class spell_taldaram_glittering_sparks : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -1108,7 +1108,7 @@ class spell_taldaram_summon_flame_ball : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -1290,7 +1290,7 @@ class spell_blood_council_shadow_prison_damage : public SpellScript { if (Aura const* aur = victim->GetAura(GetSpellInfo()->Id)) if (AuraEffect const* eff = aur->GetEffect(EFFECT_1)) - flatMod += eff->GetAmount(); + flatMod += eff->GetAmountAsInt(); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 48d42b6aa4442..44b30bcaffd16 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -676,9 +676,9 @@ class spell_blood_queen_pact_of_the_darkfallen_dmg : public AuraScript void PeriodicTick(AuraEffect const* aurEff) { SpellInfo const* damageSpell = sSpellMgr->AssertSpellInfo(SPELL_PACT_OF_THE_DARKFALLEN_DAMAGE, GetCastDifficulty()); - int32 damage = damageSpell->GetEffect(EFFECT_0).CalcValue(); + SpellEffectValue damage = damageSpell->GetEffect(EFFECT_0).CalcValue(); float multiplier = 0.3375f + 0.1f * uint32(aurEff->GetTickNumber()/10); // do not convert to 0.01f - we need tick number/10 as INT (damage increases every 10 ticks) - damage = int32(damage * multiplier); + damage = damage * multiplier; CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.AddSpellBP0(damage); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 762eafebd8512..5256c0ec08dfc 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -1025,9 +1025,9 @@ class spell_deathbringer_blood_power : public SpellScript class spell_deathbringer_blood_power_aura : public AuraScript { - void RecalculateHook(AuraEffect const* /*aurEffect*/, int32& amount, bool& canBeRecalculated) + void RecalculateHook(AuraEffect const* /*aurEffect*/, SpellEffectValue& amount, bool& canBeRecalculated) { - amount = int32(GetUnitOwner()->GetPower(POWER_ENERGY)); + amount = GetUnitOwner()->GetPower(POWER_ENERGY); canBeRecalculated = true; } @@ -1146,7 +1146,7 @@ class spell_deathbringer_blood_nova_targeting : public SpellScript void HandleForceCast(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), TRIGGERED_FULL_MASK); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), TRIGGERED_FULL_MASK); } void Register() override @@ -1190,7 +1190,7 @@ class spell_deathbringer_remove_marks : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index f7e8cdcbc31f8..360fa08de29cd 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -353,7 +353,7 @@ class spell_festergut_pungent_blight : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetCaster()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); GetCaster()->ToCreature()->AI()->Talk(EMOTE_PUNGENT_BLIGHT); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 9c50461a49526..cc50c66ae6d85 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -1999,7 +1999,7 @@ class spell_igb_burning_pitch_selector : public SpellScript void HandleDummy(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), TRIGGERED_NONE); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), TRIGGERED_NONE); } void Register() override @@ -2017,7 +2017,7 @@ class spell_igb_burning_pitch : public SpellScript PreventHitDefaultEffect(effIndex); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.AddSpellBP0(8000); - GetCaster()->CastSpell(nullptr, GetEffectValue(), args); + GetCaster()->CastSpell(nullptr, GetEffectValueAsInt(), args); GetHitUnit()->CastSpell(GetHitUnit(), SPELL_BURNING_PITCH, TRIGGERED_FULL_MASK); } @@ -2043,7 +2043,7 @@ class spell_igb_rocket_artillery : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), TRIGGERED_NONE); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), TRIGGERED_NONE); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index 9de7dea9523f4..c1a4ea1327c55 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -498,7 +498,7 @@ class spell_marrowgar_coldflame : public SpellScript void HandleScriptEffect(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -515,7 +515,7 @@ class spell_marrowgar_coldflame_bonestorm : public SpellScript { PreventHitDefaultEffect(effIndex); for (uint8 i = 0; i < 4; ++i) - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue() + i), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt() + i), true); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index b29b5a7e021bc..bf63b468e1697 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -975,7 +975,7 @@ class spell_putricide_unstable_experiment : public SpellScript break; } - GetCaster()->CastSpell(target, uint32(GetEffectInfo(SpellEffIndex(stage)).CalcValue()), true); + GetCaster()->CastSpell(target, uint32(GetEffectInfo(SpellEffIndex(stage)).CalcValueAsInt()), true); } void Register() override @@ -1037,7 +1037,7 @@ class spell_putricide_choking_gas_bomb : public SpellScript if (spellEffectInfo.EffectIndex == skipIndex) continue; - uint32 spellId = uint32(spellEffectInfo.CalcValue()); + uint32 spellId = uint32(spellEffectInfo.CalcValueAsInt()); GetCaster()->CastSpell(GetCaster(), spellId, CastSpellExtraArgs(TRIGGERED_FULL_MASK) .SetOriginalCaster(GetCaster()->GetGUID())); } @@ -1129,7 +1129,7 @@ class spell_putricide_eat_ooze : public SpellScript if (!target) return; - if (Aura* grow = target->GetAura(uint32(GetEffectValue()))) + if (Aura* grow = target->GetAura(uint32(GetEffectValueAsInt()))) { if (grow->GetStackAmount() < 3) { @@ -1162,13 +1162,13 @@ class spell_putricide_mutated_plague : public AuraScript uint32 triggerSpell = aurEff->GetSpellEffectInfo().TriggerSpell; SpellInfo const* spell = sSpellMgr->AssertSpellInfo(triggerSpell, GetCastDifficulty()); - int32 damage = spell->GetEffect(EFFECT_0).CalcValue(caster); + SpellEffectValue damage = spell->GetEffect(EFFECT_0).CalcValue(caster); float multiplier = 2.0f; if (GetTarget()->GetMap()->Is25ManRaid()) multiplier = 3.0f; - damage *= int32(pow(multiplier, GetStackAmount())); - damage = int32(damage * 1.5f); + damage *= std::pow(multiplier, GetStackAmount()); + damage = damage * 1.5f; CastSpellExtraArgs args(aurEff); args.OriginalCaster = GetCasterGUID(); @@ -1178,13 +1178,13 @@ class spell_putricide_mutated_plague : public AuraScript void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - uint32 healSpell = uint32(aurEff->GetSpellEffectInfo().CalcValue()); + uint32 healSpell = uint32(aurEff->GetSpellEffectInfo().CalcValueAsInt()); SpellInfo const* healSpellInfo = sSpellMgr->GetSpellInfo(healSpell, GetCastDifficulty()); if (!healSpellInfo) return; - int32 heal = healSpellInfo->GetEffect(EFFECT_0).CalcValue() * GetStackAmount(); + SpellEffectValue heal = healSpellInfo->GetEffect(EFFECT_0).CalcValue() * GetStackAmount(); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.SetOriginalCaster(GetCasterGUID()); args.AddSpellBP0(heal); @@ -1372,11 +1372,11 @@ class spell_putricide_clear_aura_effect_value : public SpellScript { PreventHitDefaultEffect(effIndex); Unit* target = GetHitUnit(); - uint32 auraId = GetEffectValue(); + uint32 auraId = GetEffectValueAsInt(); target->RemoveAurasDueToSpell(auraId); if (m_scriptSpellId == SPELL_TEAR_GAS_CANCEL && GetSpellInfo()->GetEffects().size() >= EFFECT_1) { - uint32 auraId2 = GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(); + uint32 auraId2 = GetSpellInfo()->GetEffect(EFFECT_1).CalcValueAsInt(); target->RemoveAurasDueToSpell(auraId2); } } @@ -1393,9 +1393,9 @@ class spell_stinky_precious_decimate : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) { - if (GetHitUnit()->GetHealthPct() > float(GetEffectValue())) + if (GetHitUnit()->GetHealthPct() > GetEffectValue()) { - uint32 newHealth = GetHitUnit()->GetMaxHealth() * uint32(GetEffectValue()) / 100; + uint64 newHealth = GetHitUnit()->CountPctFromMaxHealth(GetEffectValue()); GetHitUnit()->SetHealth(newHealth); } } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 081cfce1ce4a3..d1c6e27889f5a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -419,7 +419,7 @@ class spell_rotface_ooze_flood : public SpellScript return; triggers.sort(Trinity::ObjectDistanceOrderPred(GetHitUnit())); - GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValue()), CastSpellExtraArgs(TRIGGERED_FULL_MASK) + GetHitUnit()->CastSpell(triggers.back(), uint32(GetEffectValueAsInt()), CastSpellExtraArgs(TRIGGERED_FULL_MASK) .SetOriginalCaster(GetOriginalCaster() ? GetOriginalCaster()->GetGUID() : ObjectGuid::Empty)); } @@ -478,13 +478,13 @@ class spell_rotface_mutated_infection_aura : public AuraScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }) - && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValue()) }); + && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_2).CalcValueAsInt()) }); } void HandleEffectRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); - target->CastSpell(target, uint32(GetEffectInfo(EFFECT_2).CalcValue()), CastSpellExtraArgs(TRIGGERED_FULL_MASK) + target->CastSpell(target, uint32(GetEffectInfo(EFFECT_2).CalcValueAsInt()), CastSpellExtraArgs(TRIGGERED_FULL_MASK) .SetTriggeringAura(aurEff) .SetOriginalCaster(GetCasterGUID())); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 659f216fc1ef6..c5abd0dece6f6 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -1058,7 +1058,7 @@ class spell_sindragosa_s_fury : public SpellScript uint32 minResistFactor = uint32((resistance / (resistance + 510.0f)) * 10.0f) * 2; uint32 randomResist = urand(0, (9 - minResistFactor) * 100) / 100 + minResistFactor; - uint32 damage = (uint32(GetEffectValue() / _targetCount) * randomResist) / 10; + uint32 damage = (uint32(GetEffectValueAsInt() / _targetCount) * randomResist) / 10; SpellNonMeleeDamage damageInfo(GetCaster(), GetHitUnit(), GetSpellInfo(), GetSpell()->m_SpellVisual, GetSpellInfo()->SchoolMask); damageInfo.damage = damage; @@ -1378,7 +1378,7 @@ class spell_frostwarden_handler_order_whelp : public SpellScript if (unitList.empty()) return; - Trinity::Containers::SelectRandomContainerElement(unitList)->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + Trinity::Containers::SelectRandomContainerElement(unitList)->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -1394,7 +1394,7 @@ class spell_frostwarden_handler_focus_fire : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->GetThreatManager().AddThreat(GetHitUnit(), float(GetEffectValue()), GetSpellInfo(), true, true); + GetCaster()->GetThreatManager().AddThreat(GetHitUnit(), GetEffectValue(), GetSpellInfo(), true, true); GetCaster()->GetAI()->SetData(DATA_WHELP_MARKER, 1); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index fd860851d22fe..3d0b5bf80bc67 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -1944,7 +1944,7 @@ class spell_the_lich_king_infest : public AuraScript if (aurEff->GetTickNumber() == 1) return; - aurEff->SetAmount(int32(aurEff->GetAmount() * 1.15f)); + aurEff->SetAmount(aurEff->GetAmount() * 1.15); } void Register() override @@ -2091,7 +2091,7 @@ class spell_the_lich_king_necrotic_plague_jump_aura : public AuraScript AfterEffectApply += AuraEffectRemoveFn(spell_the_lich_king_necrotic_plague_jump_aura::AfterDispel, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAPPLY); } - int32 _lastAmount; + SpellEffectValue _lastAmount; }; // 73530 - Shadow Trap (Visual) @@ -2188,7 +2188,7 @@ class spell_the_lich_king_raging_spirit : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -2337,7 +2337,7 @@ class spell_the_lich_king_cast_back_to_caster : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -2517,12 +2517,12 @@ class spell_the_lich_king_lights_favor : public AuraScript effect->RecalculateAmount(caster); } - void CalculateBonus(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateBonus(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = true; amount = 0; if (Unit* caster = GetCaster()) - amount = int32(caster->GetHealthPct()); + amount = caster->GetHealthPct(); } void Register() override @@ -2659,7 +2659,7 @@ class spell_the_lich_king_summon_spirit_bomb : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(nullptr, uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(nullptr, uint32(GetEffectValueAsInt()), true); } void Register() override @@ -2710,7 +2710,7 @@ class spell_the_lich_king_jump_remove_aura : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index bac72097dcd9a..8c4ea66cb2889 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -1440,12 +1440,12 @@ class spell_icc_harvest_blight_specimen : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void HandleQuestComplete(SpellEffIndex /*effIndex*/) { - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 182f71a01633e..4479fc4bef6f7 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -1916,7 +1916,7 @@ class spell_wyrmrest_skytalon_ride_red_dragon_buddy_trigger : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) - target->CastSpell(GetCaster(), GetEffectValue(), true); + target->CastSpell(GetCaster(), GetEffectValueAsInt(), true); } void Register() override diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp index 6232a72848f1b..ea160f32499e1 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.cpp @@ -442,7 +442,7 @@ class spell_oculus_shock_lance : public SpellScript { if (AuraEffect const* shockCharges = victim->GetAuraEffect(SPELL_AMBER_SHOCK_CHARGE, EFFECT_0, GetCaster()->GetGUID())) { - flatMod += shockCharges->GetAmount(); + flatMod += shockCharges->GetAmountAsInt(); shockCharges->GetBase()->Remove(AURA_REMOVE_BY_ENEMY_SPELL); } } @@ -493,7 +493,7 @@ class spell_oculus_temporal_rift : public AuraScript if (!damageInfo || !damageInfo->GetDamage()) return; - int32 amount = aurEff->GetAmount() + damageInfo->GetDamage(); + SpellEffectValue amount = aurEff->GetAmount() + damageInfo->GetDamage(); if (amount >= 15000) { if (Unit* caster = GetCaster()) @@ -501,7 +501,7 @@ class spell_oculus_temporal_rift : public AuraScript amount -= 15000; } - const_cast(aurEff)->SetAmount(amount); + aurEff->SetAmount(amount); } void Register() override @@ -527,10 +527,10 @@ class spell_oculus_touch_the_nightmare : public SpellScript // 50344 - Dream Funnel class spell_oculus_dream_funnel : public AuraScript { - void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void HandleEffectCalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { if (Unit* caster = GetCaster()) - amount = int32(caster->CountPctFromMaxHealth(5)); + amount = caster->CountPctFromMaxHealth(5); canBeRecalculated = false; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 73daed276898b..f5332de0374d7 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1717,7 +1717,7 @@ class spell_vehicle_throw_passenger : public SpellScriptLoader { Spell* baseSpell = GetSpell(); SpellCastTargets targets = baseSpell->m_targets; - int32 damage = GetEffectValue(); + int32 damage = GetEffectValueAsInt(); if (targets.HasTraj()) if (Vehicle* vehicle = GetCaster()->GetVehicleKit()) if (Unit* passenger = vehicle->GetPassenger(damage - 1)) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index 37cec2e31cff3..ca4c457bbabcd 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -1561,19 +1561,19 @@ class spell_freya_attuned_to_nature_dose_reduction : public SpellScriptLoader switch (GetSpellInfo()->Id) { case SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION: - if (target->HasAura(GetEffectValue())) + if (target->HasAura(GetEffectValueAsInt())) for (uint8 n = 0; n < 2; ++n) - target->RemoveAuraFromStack(GetEffectValue()); + target->RemoveAuraFromStack(GetEffectValueAsInt()); break; case SPELL_ATTUNED_TO_NATURE_10_DOSE_REDUCTION: - if (target->HasAura(GetEffectValue())) + if (target->HasAura(GetEffectValueAsInt())) for (uint8 n = 0; n < 10; ++n) - target->RemoveAuraFromStack(GetEffectValue()); + target->RemoveAuraFromStack(GetEffectValueAsInt()); break; case SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION: - if (target->HasAura(GetEffectValue())) + if (target->HasAura(GetEffectValueAsInt())) for (uint8 n = 0; n < 25; ++n) - target->RemoveAuraFromStack(GetEffectValue()); + target->RemoveAuraFromStack(GetEffectValueAsInt()); break; default: break; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index c65f7113b7bd5..cea4a754d897c 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -526,7 +526,7 @@ class spell_general_vezax_saronite_vapors : public SpellScriptLoader { if (Unit* caster = GetCaster()) { - int32 mana = int32(aurEff->GetAmount() * std::pow(2.0f, GetStackAmount())); // mana restore - bp * 2^stackamount + SpellEffectValue mana = aurEff->GetAmount() * std::pow(2.0f, GetStackAmount()); // mana restore - bp * 2^stackamount CastSpellExtraArgs args1(TRIGGERED_FULL_MASK), args2(TRIGGERED_FULL_MASK); args1.AddSpellBP0(mana); args2.AddSpellBP0(mana * 2); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index db6bfa7b2fd2f..0179cfc747ea7 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -339,7 +339,7 @@ class spell_ulduar_rubble_summon : public SpellScriptLoader return; ObjectGuid originalCaster = caster->GetInstanceScript() ? caster->GetInstanceScript()->GetGuidData(DATA_KOLOGARN) : ObjectGuid::Empty; - uint32 spellId = GetEffectValue(); + uint32 spellId = GetEffectValueAsInt(); for (uint8 i = 0; i < 5; ++i) caster->CastSpell(caster, spellId, CastSpellExtraArgs(TRIGGERED_FULL_MASK) .SetOriginalCaster(originalCaster)); @@ -460,7 +460,7 @@ class spell_ulduar_cancel_stone_grip : public SpellScriptLoader if (target->GetMap()->Is25ManRaid()) effectIndexToCancel = EFFECT_1; - target->RemoveAura(GetEffectInfo(effectIndexToCancel).CalcValue()); + target->RemoveAura(GetEffectInfo(effectIndexToCancel).CalcValueAsInt()); } void Register() override @@ -558,7 +558,7 @@ class spell_ulduar_stone_grip : public SpellScriptLoader { void OnRemoveStun(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - GetUnitOwner()->RemoveAurasDueToSpell(aurEff->GetAmount()); + GetUnitOwner()->RemoveAurasDueToSpell(aurEff->GetAmountAsInt()); } void OnRemoveVehicle(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 08708ff647cba..6531825c3fe6e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -951,7 +951,7 @@ struct npc_thorim_trashAI : public ScriptedAI /// returns heal amount of the given spell including hots static uint32 GetTotalHeal(SpellInfo const* spellInfo, Unit const* caster) { - uint32 heal = 0; + SpellEffectValue heal = 0; for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects()) { if (spellEffectInfo.IsEffect(SPELL_EFFECT_HEAL)) @@ -960,18 +960,18 @@ struct npc_thorim_trashAI : public ScriptedAI if (spellEffectInfo.IsEffect(SPELL_EFFECT_APPLY_AURA) && spellEffectInfo.IsAura(SPELL_AURA_PERIODIC_HEAL)) heal += spellEffectInfo.GetPeriodicTickCount() * spellEffectInfo.CalcValue(caster); } - return heal; + return static_cast(heal); } /// returns remaining heal amount on given target static uint32 GetRemainingHealOn(Unit* target) { - uint32 heal = 0; + SpellEffectValue heal = 0; Unit::AuraEffectList const& auras = target->GetAuraEffectsByType(SPELL_AURA_PERIODIC_HEAL); for (AuraEffect const* aurEff : auras) heal += aurEff->GetAmount() * aurEff->GetRemainingTicks(); - return heal; + return static_cast(heal); } class MostHPMissingInRange diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index fb38edf3c9739..ce86c65b1b085 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -700,7 +700,7 @@ class spell_xt002_searing_light_spawn_life_spark : public AuraScript void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { if (Unit* xt002 = GetCaster()) - if (xt002->HasAura(aurEff->GetAmount())) // Heartbreak aura indicating hard mode + if (xt002->HasAura(aurEff->GetAmountAsInt())) // Heartbreak aura indicating hard mode xt002->CastSpell(GetOwner(), SPELL_SUMMON_LIFE_SPARK, true); } @@ -721,7 +721,7 @@ class spell_xt002_gravity_bomb_aura : public AuraScript void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { if (Unit* xt002 = GetCaster()) - if (xt002->HasAura(aurEff->GetAmount())) // Heartbreak aura indicating hard mode + if (xt002->HasAura(aurEff->GetAmountAsInt())) // Heartbreak aura indicating hard mode xt002->CastSpell(GetOwner(), SPELL_SUMMON_VOID_ZONE, true); } @@ -732,7 +732,7 @@ class spell_xt002_gravity_bomb_aura : public AuraScript if (!xt002) return; - if (aurEff->GetAmount() >= int32(owner->GetHealth())) + if (aurEff->GetAmount() >= static_cast(owner->GetHealth())) xt002->GetAI()->SetData(DATA_GRAVITY_BOMB_CASUALTY, 1); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index fabd012123bd5..86c12476aaee5 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -1967,7 +1967,7 @@ class spell_yogg_saron_target_selectors : public SpellScriptLoader // 63744, void HandleScript(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) - GetCaster()->CastSpell(target, uint32(GetEffectValue())); + GetCaster()->CastSpell(target, uint32(GetEffectValueAsInt())); } void Register() override @@ -2186,7 +2186,7 @@ class spell_yogg_saron_brain_link : public SpellScriptLoader // 63802 if (!linked) return; - GetTarget()->CastSpell(linked, (GetTarget()->GetDistance(linked) > (float)aurEff->GetAmount()) ? SPELL_BRAIN_LINK_DAMAGE : SPELL_BRAIN_LINK_NO_DAMAGE, true); + GetTarget()->CastSpell(linked, (GetTarget()->GetDistance(linked) > aurEff->GetAmount()) ? SPELL_BRAIN_LINK_DAMAGE : SPELL_BRAIN_LINK_NO_DAMAGE, true); } void Register() override @@ -2311,7 +2311,7 @@ class spell_yogg_saron_empowering_shadows_range_check : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) - target->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + target->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -2410,7 +2410,7 @@ class spell_yogg_saron_lunge : public SpellScriptLoader // 64131 else target->CastSpell(target, SPELL_SQUEEZE_10, true); - target->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + target->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } } @@ -2569,7 +2569,7 @@ class spell_yogg_saron_shattered_illusion : public SpellScriptLoader // 65238 void HandleScript(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) - target->RemoveAurasDueToSpell(uint32(GetEffectValue())); + target->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override @@ -2638,7 +2638,7 @@ class spell_yogg_saron_cancel_illusion_room_aura : public SpellScriptLoader / if (Unit* target = GetHitUnit()) { target->CastSpell(target, SPELL_TELEPORT_BACK_TO_MAIN_ROOM); - target->RemoveAurasDueToSpell(uint32(GetEffectValue())); + target->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } } @@ -2664,7 +2664,7 @@ class spell_yogg_saron_nondescript : public SpellScriptLoader // 64010, 6401 { void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - GetTarget()->CastSpell(GetTarget(), uint32(aurEff->GetAmount()), true); + GetTarget()->CastSpell(GetTarget(), uint32(aurEff->GetAmountAsInt()), true); } void Register() override @@ -2770,7 +2770,7 @@ class spell_yogg_saron_induce_madness : public SpellScriptLoader // 64059 { target->CastSpell(target, SPELL_TELEPORT_BACK_TO_MAIN_ROOM); target->RemoveAurasDueToSpell(SPELL_SANITY, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL); - target->RemoveAurasDueToSpell(uint32(GetEffectValue())); + target->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } } @@ -2917,7 +2917,7 @@ class spell_yogg_saron_insane_periodic : public SpellScriptLoader // 64555 void HandleScript(SpellEffIndex /*effIndex*/) { if (Unit* target = GetHitUnit()) - GetCaster()->CastSpell(target, uint32(GetEffectValue()), true); + GetCaster()->CastSpell(target, uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index b4ac065ce14e6..8ae4c0e7248f3 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1397,12 +1397,12 @@ class spell_borean_tundra_nerubar_web_random_unit_not_on_quest : public SpellScr { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -1466,12 +1466,12 @@ class spell_borean_tundra_dispel_freed_soldier_debuff : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - if (Aura* aura = GetHitUnit()->GetAura(uint32(GetEffectValue()))) + if (Aura* aura = GetHitUnit()->GetAura(uint32(GetEffectValueAsInt()))) aura->ModStackAmount(-1); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index fd99ee345f2f9..29ed9e473df71 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -615,14 +615,14 @@ class spell_dragonblight_moti_hourglass_cast_see_invis_on_master : public SpellS { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { if (TempSummon* casterSummon = GetCaster()->ToTempSummon()) if (Unit* summoner = casterSummon->GetSummonerUnit()) - summoner->CastSpell(summoner, uint32(GetEffectValue())); + summoner->CastSpell(summoner, uint32(GetEffectValueAsInt())); } void Register() override @@ -911,12 +911,12 @@ class spell_dragonblight_fill_blood_unholy_frost_gem : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue())); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt())); } void Register() override @@ -930,18 +930,18 @@ class spell_dragonblight_corrosive_spit : public AuraScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - if (GetTarget()->HasAura(GetEffectInfo(EFFECT_0).CalcValue())) + if (GetTarget()->HasAura(GetEffectInfo(EFFECT_0).CalcValueAsInt())) GetAura()->Remove(); } void PeriodicTick(AuraEffect const* /*aurEff*/) { - if (GetTarget()->HasAura(GetEffectInfo(EFFECT_0).CalcValue())) + if (GetTarget()->HasAura(GetEffectInfo(EFFECT_0).CalcValueAsInt())) { PreventDefaultAction(); GetAura()->Remove(); diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 2bfb9902ba360..5f748c5f27b31 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -449,14 +449,14 @@ class spell_fjord_the_cleansing_on_death_cast_on_master : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { if (TempSummon* casterSummon = GetCaster()->ToTempSummon()) if (Unit* summoner = casterSummon->GetSummonerUnit()) - summoner->CastSpell(summoner, uint32(GetEffectValue())); + summoner->CastSpell(summoner, uint32(GetEffectValueAsInt())); } void Register() override @@ -500,12 +500,12 @@ class spell_fjord_the_way_to_his_heart_reverse_cast : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -519,14 +519,14 @@ class spell_fjord_the_way_to_his_heart_quest_complete : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { if (TempSummon* casterSummon = GetCaster()->ToTempSummon()) if (Unit* summoner = casterSummon->GetSummonerUnit()) - summoner->CastSpell(summoner, uint32(GetEffectValue()), true); + summoner->CastSpell(summoner, uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index a043f399ddae6..01c72169f5001 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -733,13 +733,13 @@ class spell_icecrown_the_ocular_on_death : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { if (Player* target = GetHitPlayer()) - target->CastSpell(target, uint32(GetEffectValue())); + target->CastSpell(target, uint32(GetEffectValueAsInt())); } void Register() override @@ -905,12 +905,12 @@ class spell_icecrown_summon_freed_crusader : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp index 3cddb45f9816a..565b503ef0b05 100644 --- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp +++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp @@ -628,14 +628,14 @@ class spell_sholazar_take_sputum_sample : public SpellScript { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) && ValidateSpellInfo( { - uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()), - uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()) + uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()), + uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt()) }); } SpellCastResult CheckCast() { - if (!GetCaster()->HasAura(uint32(GetEffectInfo(EFFECT_1).CalcValue()))) + if (!GetCaster()->HasAura(uint32(GetEffectInfo(EFFECT_1).CalcValueAsInt()))) return SPELL_FAILED_CASTER_AURASTATE; return SPELL_CAST_OK; @@ -643,7 +643,7 @@ class spell_sholazar_take_sputum_sample : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue())); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt())); } void Register() override @@ -762,7 +762,7 @@ class spell_sholazar_flight_to_sholazar : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return sBroadcastTextStore.LookupEntry(uint32(spellInfo->GetEffect(EFFECT_0).CalcValue())); + return sBroadcastTextStore.LookupEntry(uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt())); } void HandleScript(SpellEffIndex /*effIndex*/) @@ -770,7 +770,7 @@ class spell_sholazar_flight_to_sholazar : public SpellScript // 51076 (triggers 51071) is Area Aura - Party and applies on player too (no aura in sniffs on player) // That makes both player and creature say if (Creature* caster = GetCaster()->ToCreature()) - caster->Unit::Say(uint32(GetEffectValue()), caster); + caster->Unit::Say(uint32(GetEffectValueAsInt()), caster); } void Register() override diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index 5009c7585864e..8aa1cdf037305 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -971,7 +971,7 @@ class spell_grab_on : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { if (Aura* grip = GetCaster()->GetAura(SPELL_GRIP, GetCaster()->GetGUID())) - grip->ModStackAmount(GetEffectValue(), AURA_REMOVE_BY_DEFAULT, false); + grip->ModStackAmount(GetEffectValueAsInt(), AURA_REMOVE_BY_DEFAULT, false); } void Register() override @@ -1002,12 +1002,12 @@ class spell_low_health_trigger : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(nullptr, GetEffectValue(), true); + GetHitUnit()->CastSpell(nullptr, GetEffectValueAsInt(), true); } void Register() override @@ -1022,7 +1022,7 @@ class spell_jaws_of_death_claw_swipe_pct_damage : public SpellScript { void HandleDamage(SpellEffIndex /*effIndex*/) { - SetEffectValue(static_cast(GetHitUnit()->CountPctFromMaxHealth(GetEffectValue()))); + SetEffectValue(static_cast(GetHitUnit()->CountPctFromMaxHealth(GetEffectValue()))); } void Register() override @@ -1053,7 +1053,7 @@ class spell_claw_swipe_check : public AuraScript } } - GetTarget()->CastSpell(nullptr, aurEff->GetAmount(), false); + GetTarget()->CastSpell(nullptr, aurEff->GetAmountAsInt(), false); } void Register() override @@ -1073,11 +1073,11 @@ class spell_fatal_strike : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - int32 chance = 0; + SpellEffectValue chance = 0; if (AuraEffect const* aurEff = GetCaster()->GetAuraEffect(SPELL_PRY_JAWS_OPEN, EFFECT_0)) chance = aurEff->GetAmount(); - if (!roll_chance_i(chance)) + if (!roll_chance_f(chance)) { GetCaster()->GetAI()->DoAction(ACTION_FATAL_STRIKE_MISS); return; @@ -1120,12 +1120,12 @@ class spell_storm_peaks_remove_collapsing_cave_aura : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue())); + GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index 7f222b21e70ce..3f30c548c6548 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -366,7 +366,7 @@ class spell_wintergrasp_force_building : public SpellScript void HandleScript(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetHitUnit(), GetEffectValue(), false); + GetHitUnit()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), false); } void Register() override @@ -465,7 +465,7 @@ class spell_wintergrasp_tenacity_refresh : public AuraScript { if (!ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } })) return false; - uint32 triggeredSpellId = spellInfo->GetEffect(EFFECT_2).CalcValue(); + uint32 triggeredSpellId = spellInfo->GetEffect(EFFECT_2).CalcValueAsInt(); return !triggeredSpellId || ValidateSpellInfo({ triggeredSpellId }); } @@ -473,9 +473,9 @@ class spell_wintergrasp_tenacity_refresh : public AuraScript { PreventDefaultAction(); - if (uint32 triggeredSpellId = aurEff->GetSpellEffectInfo().CalcValue()) + if (uint32 triggeredSpellId = aurEff->GetSpellEffectInfo().CalcValueAsInt()) { - int32 bp = 0; + SpellEffectValue bp = 0; if (AuraEffect const* healEffect = GetEffect(EFFECT_0)) bp = healEffect->GetAmount(); @@ -491,7 +491,7 @@ class spell_wintergrasp_tenacity_refresh : public AuraScript void OnRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - if (uint32 triggeredSpellId = aurEff->GetSpellEffectInfo().CalcValue()) + if (uint32 triggeredSpellId = aurEff->GetSpellEffectInfo().CalcValueAsInt()) GetTarget()->RemoveAurasDueToSpell(triggeredSpellId); } diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index fd750e96b8992..13e5ee1d8e56e 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -868,12 +868,12 @@ class spell_zuldrak_chains_of_the_scourge : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_1).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue())); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp index b8cad82d8a702..c2140e6c3a48d 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp @@ -256,7 +256,7 @@ class spell_illidari_nightlord_shadow_inferno : public AuraScript void OnPeriodic(AuraEffect const* aurEffect) { PreventDefaultAction(); - int32 bp = aurEffect->GetTickNumber() * aurEffect->GetAmount(); + SpellEffectValue bp = aurEffect->GetTickNumber() * aurEffect->GetAmount(); GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_SHADOW_INFERNO_DAMAGE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(bp)); } diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index 5af82e20198d9..09dae5b99eda4 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -740,7 +740,7 @@ class spell_reliquary_of_souls_aura_of_anger : public AuraScript { if (AuraEffect* aurEff1 = aurEff->GetBase()->GetEffect(EFFECT_1)) aurEff1->ChangeAmount(aurEff1->GetAmount() + 5); - aurEff->SetAmount(100 * aurEff->GetTickNumber()); + aurEff->SetAmount(100.0 * aurEff->GetTickNumber()); } void Register() override diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index 6ba5bebf0d87e..a3c2499d8d965 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -1089,7 +1089,7 @@ class spell_shade_soul_channel : public AuraScript { void OnApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - int32 const maxSlowEff = -99; + constexpr SpellEffectValue maxSlowEff = -99; if (aurEff->GetAmount() < maxSlowEff) if (AuraEffect* slowEff = GetEffect(EFFECT_0)) slowEff->ChangeAmount(maxSlowEff); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index 4ae564a5b3c38..d27633dfc2911 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -487,7 +487,7 @@ class spell_astromancer_wrath_of_the_astromancer : public AuraScript return; Unit* target = GetUnitOwner(); - target->CastSpell(target, GetEffectInfo(EFFECT_1).CalcValue(), false); + target->CastSpell(target, GetEffectInfo(EFFECT_1).CalcValueAsInt(), false); } void Register() override diff --git a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp index 769f441e04b9e..25b207a7cd103 100644 --- a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp +++ b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp @@ -169,7 +169,7 @@ class spell_mark_of_kazzak : public AuraScript return ValidateSpellInfo({ SPELL_MARK_OF_KAZZAK_DAMAGE }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* owner = GetUnitOwner()) amount = CalculatePct(owner->GetPower(POWER_MANA), 5); diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index b61e5cf87bfff..3b0dfa345b37d 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -1622,7 +1622,7 @@ class spell_shadowmoon_quest_credit_crazed_colossus : public SpellScript { return ValidateSpellInfo( { - uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()), + uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()), SPELL_KILL_CREDIT_CRAZED_COLOSSUS }); } @@ -1630,7 +1630,7 @@ class spell_shadowmoon_quest_credit_crazed_colossus : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { Unit* target = GetHitUnit(); - if (target->HasAura(uint32(GetEffectValue()))) + if (target->HasAura(uint32(GetEffectValueAsInt()))) target->CastSpell(target, SPELL_KILL_CREDIT_CRAZED_COLOSSUS); } diff --git a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp index e97abce2bfce0..e6aaa54308986 100644 --- a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp +++ b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp @@ -639,7 +639,7 @@ class spell_force_summoner_to_ride_vehicle : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) const { - GetHitUnit()->CastSpell(GetCaster(), GetEffectValue(), TRIGGERED_FULL_MASK); + GetHitUnit()->CastSpell(GetCaster(), GetEffectValueAsInt(), TRIGGERED_FULL_MASK); } void Register() override diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp index b35dfeade3ae0..069458df89166 100644 --- a/src/server/scripts/Pet/pet_generic.cpp +++ b/src/server/scripts/Pet/pet_generic.cpp @@ -265,12 +265,12 @@ class spell_pet_gen_lich_pet_focus : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue())); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt())); } void Register() override diff --git a/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp b/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp index fe5996968e46f..73183afb1aa9e 100644 --- a/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp +++ b/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp @@ -2185,7 +2185,7 @@ class spell_anduin_wrynn_progression_aura : public AuraScript return ValidateSpellInfo({ SPELL_ANDUIN_PROGRESSION_AURA, SPELL_ANDUIN_KNEEL_POSE }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { amount = -1; canBeRecalculated = true; @@ -2379,7 +2379,7 @@ struct at_anduin_wrynn_befouled_barrier : AreaTriggerAI void OnInitialize() override { if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_BEFOULED_BARRIER_DEBUFF, at->GetMap()->GetDifficultyID())) - _absorbRequired = spellInfo->GetEffect(EFFECT_0).CalcValue(at->GetCaster()); + _absorbRequired = spellInfo->GetEffect(EFFECT_0).CalcValueAsInt(at->GetCaster()); at->SetTimeToTargetScale(30000); @@ -2609,7 +2609,7 @@ class spell_anduin_wrynn_befouled_barrier_absorb : public AuraScript void OnHealAbsorb(AuraEffect* /*aurEff*/, HealInfo const& healInfo, uint32& absorbAmount) const { - absorbAmount = CalculatePct(healInfo.GetHeal(), GetEffectInfo(EFFECT_2).CalcValue()); + absorbAmount = CalculatePct(healInfo.GetHeal(), GetEffectInfo(EFFECT_2).CalcValueAsInt()); Unit* caster = GetCaster(); if (!caster) @@ -3150,7 +3150,7 @@ class spell_anduin_wrynn_soul_despawn : public SpellScript // 368913 - Force of Will class spell_anduin_wrynn_force_of_will : public AuraScript { - void RecalculateHook(AuraEffect const* /*aurEffect*/, int32& amount, bool& canBeRecalculated) const + void RecalculateHook(AuraEffect const* /*aurEffect*/, SpellEffectValue& amount, bool& canBeRecalculated) const { Unit* caster = GetCaster(); if (!caster) @@ -3162,7 +3162,7 @@ class spell_anduin_wrynn_force_of_will : public AuraScript canBeRecalculated = false; } - void RecalculateHookDamageTaken(AuraEffect const* /*aurEffect*/, int32& amount, bool& canBeRecalculated) const + void RecalculateHookDamageTaken(AuraEffect const* /*aurEffect*/, SpellEffectValue& amount, bool& canBeRecalculated) const { Unit* caster = GetCaster(); if (!caster) diff --git a/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp b/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp index 198f8cc2d0433..996dd032a5236 100644 --- a/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp +++ b/src/server/scripts/Shadowlands/Torghast/spell_torghast.cpp @@ -197,7 +197,7 @@ class spell_torghast_uncontrolled_darkness_proc : public AuraScript if (caster->HasAura(SPELL_UNCONTROLLED_DARKNESS_BUFF)) { - if (++script->KillCounter >= uncontrolledDarkness->GetSpellInfo()->GetEffect(EFFECT_1).CalcValue()) + if (++script->KillCounter >= uncontrolledDarkness->GetSpellInfo()->GetEffect(EFFECT_1).CalcValueAsInt()) { caster->RemoveAura(SPELL_UNCONTROLLED_DARKNESS_BUFF); script->KillCounter = 0; @@ -205,7 +205,7 @@ class spell_torghast_uncontrolled_darkness_proc : public AuraScript } else { - if (++script->KillCounter >= uncontrolledDarkness->GetSpellInfo()->GetEffect(EFFECT_0).CalcValue()) + if (++script->KillCounter >= uncontrolledDarkness->GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt()) { caster->CastSpell(caster, SPELL_UNCONTROLLED_DARKNESS_BUFF, true); script->KillCounter = 0; diff --git a/src/server/scripts/Spells/spell_azerite.cpp b/src/server/scripts/Spells/spell_azerite.cpp index a7b14f2985082..2f60bdb9e139d 100644 --- a/src/server/scripts/Spells/spell_azerite.cpp +++ b/src/server/scripts/Spells/spell_azerite.cpp @@ -32,7 +32,7 @@ class spell_azerite_gen_aura_calc_from_2nd_effect_triggered_spell : public AuraS return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) && ValidateSpellInfo({ spellInfo->GetEffect(EFFECT_1).TriggerSpell }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { if (Unit* caster = GetCaster()) { @@ -467,7 +467,7 @@ class spell_item_echoing_blades_damage : public SpellScript void CalculateDamage(SpellEffectInfo const& /*spellEffectInfo*/, Unit const* /*victim*/, int32& damage, int32& /*flatMod*/, float& /*pctMod*/) const { if (AuraEffect const* trait = GetCaster()->GetAuraEffect(SPELL_ECHOING_BLADES_TRAIT, EFFECT_2)) - damage = trait->GetAmount() * 2; + damage = trait->GetAmountAsInt() * 2; } void ForceCritical(Unit const* /*victim*/, float& critChance) @@ -604,7 +604,7 @@ class spell_item_corruption_grasping_tendrils : public AuraScript return GetUnitOwner()->IsPlayer(); } - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { Player* player = GetUnitOwner()->ToPlayer(); amount = std::clamp(10.0f + player->GetRatingBonusValue(CR_CORRUPTION) - player->GetRatingBonusValue(CR_CORRUPTION_RESISTANCE), 0.0f, 99.0f); diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index 522ae2aabf49e..b0f240e1aea2b 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -409,7 +409,7 @@ class spell_dh_chaos_theory : public SpellScript if (!min || !max) return; - int32 critChance = irand(min->GetAmount(), max->GetAmount()); + SpellEffectValue critChance = frand(min->GetAmount(), max->GetAmount()); caster->CastSpell(caster, SPELL_DH_CHAOS_THEORY_CRIT, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, critChance } } @@ -611,7 +611,7 @@ class spell_dh_consume_soul_vengeance_lesser : public SpellScript if (!shearPassive || !shearPassive->HasEffect(EFFECT_1) || !shearPassive->HasEffect(EFFECT_2)) return; - flatMod += std::max(CalculatePct(uint64(damageTakenTracker->CalculateAmount(GetCaster())), shearPassive->GetEffect(EFFECT_1)->GetAmount()), + flatMod += std::max(CalculatePct(damageTakenTracker->CalculateAmount(GetCaster()), shearPassive->GetEffect(EFFECT_1)->GetAmount()), victim->CountPctFromMaxHealth(shearPassive->GetEffect(EFFECT_2)->GetAmount())); } @@ -624,7 +624,7 @@ class spell_dh_consume_soul_vengeance_lesser : public SpellScript // 320413 - Critical Chaos class spell_dh_critical_chaos : public AuraScript { - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool const& /*canBeRecalculated*/) const + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool const& /*canBeRecalculated*/) const { if (AuraEffect const* amountHolder = GetEffect(EFFECT_1)) { @@ -659,7 +659,7 @@ class spell_dh_cycle_of_binding : public AuraScript void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { SpellHistory* history = GetTarget()->GetSpellHistory(); - SpellHistory::Duration amount = Seconds(-aurEff->GetAmount()); + SpellHistory::Duration amount = duration_cast(FloatSeconds(-aurEff->GetAmount())); for (uint32 spellId : SigilSpellsIds) history->ModifyCooldown(spellId, amount); @@ -691,7 +691,7 @@ class spell_dh_cycle_of_hatred : public SpellScript // First calculate cooldown then add another stack uint32 cycleOfHatredStack = caster->GetAuraCount(SPELL_DH_CYCLE_OF_HATRED_COOLDOWN_REDUCTION); AuraEffect const* cycleOfHatred = caster->GetAuraEffect(SPELL_DH_CYCLE_OF_HATRED_TALENT, EFFECT_0); - caster->GetSpellHistory()->ModifyCooldown(GetSpellInfo(), -Milliseconds(cycleOfHatred->GetAmount() * cycleOfHatredStack)); + caster->GetSpellHistory()->ModifyCooldown(GetSpellInfo(), -Milliseconds(static_cast(cycleOfHatred->GetAmount() * cycleOfHatredStack))); CastSpellExtraArgs args; args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); @@ -783,10 +783,10 @@ class spell_dh_darkglare_boon : public AuraScript SpellHistory::Duration cooldown, categoryCooldown; SpellHistory::GetCooldownDurations(GetSpellInfo(), 0, &cooldown, nullptr, &categoryCooldown); - int32 reductionPct = irand(darkglareBoon->GetEffect(EFFECT_0)->GetAmount(), darkglareBoon->GetEffect(EFFECT_1)->GetAmount()); + SpellEffectValue reductionPct = frand(darkglareBoon->GetEffect(EFFECT_0)->GetAmount(), darkglareBoon->GetEffect(EFFECT_1)->GetAmount()); SpellHistory::Duration cooldownReduction(CalculatePct(std::max(cooldown, categoryCooldown).count(), reductionPct)); - int32 energizeValue = irand(darkglareBoon->GetEffect(EFFECT_2)->GetAmount(), darkglareBoon->GetEffect(EFFECT_3)->GetAmount()); + SpellEffectValue energizeValue = frand(darkglareBoon->GetEffect(EFFECT_2)->GetAmount(), darkglareBoon->GetEffect(EFFECT_3)->GetAmount()); target->GetSpellHistory()->ModifyCooldown(SPELL_DH_FEL_DEVASTATION, -cooldownReduction); @@ -810,7 +810,7 @@ class spell_dh_darkness : public AuraScript return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { // Set absorbtion amount to unlimited amount = -1; @@ -819,7 +819,7 @@ class spell_dh_darkness : public AuraScript void Absorb(AuraEffect const* /*aurEff*/, DamageInfo& dmgInfo, uint32& absorbAmount) const { if (AuraEffect const* chanceEffect = GetEffect(EFFECT_1)) - if (roll_chance_i(chanceEffect->GetAmount())) + if (roll_chance_f(chanceEffect->GetAmount())) absorbAmount = dmgInfo.GetDamage(); } @@ -924,7 +924,7 @@ class spell_dh_demonic : public SpellScript if (!demonic) return; - int32 duration = demonic->GetAmount() + GetSpell()->GetChannelDuration(); + int32 duration = demonic->GetAmountAsInt() + GetSpell()->GetChannelDuration(); if (Aura* aura = caster->GetAura(_transformSpellId)) { @@ -1126,7 +1126,7 @@ class spell_dh_elysian_decree : public SpellScript bool Load() override { - _maxFragmentsToCreate = sSpellMgr->AssertSpellInfo(_primarySpellId, GetCastDifficulty())->GetEffect(EFFECT_2).CalcValue(GetCaster()); + _maxFragmentsToCreate = sSpellMgr->AssertSpellInfo(_primarySpellId, GetCastDifficulty())->GetEffect(EFFECT_2).CalcValueAsInt(GetCaster()); _fragmentsToCreate = _maxFragmentsToCreate; return true; } @@ -1517,7 +1517,7 @@ struct at_dh_inner_demon : AreaTriggerAI // 388118 - Know Your Enemy class spell_dh_know_your_enemy : public AuraScript { - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool const& /*canBeRecalculated*/) const + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool const& /*canBeRecalculated*/) const { if (AuraEffect const* amountHolder = GetEffect(EFFECT_1)) { @@ -1924,7 +1924,7 @@ class spell_dh_shattered_destiny : public AuraScript return false; _furySpent += procSpell->GetPowerTypeCostAmount(POWER_FURY).value_or(0); - return _furySpent >= GetEffect(EFFECT_1)->GetAmount(); + return _furySpent >= GetEffect(EFFECT_1)->GetAmountAsInt(); } void HandleProc(ProcEventInfo const& /*eventInfo*/) @@ -1933,8 +1933,8 @@ class spell_dh_shattered_destiny : public AuraScript if (!metamorphosis) return; - int32 requiredFuryAmount = GetEffect(EFFECT_1)->GetAmount(); - metamorphosis->SetDuration(metamorphosis->GetDuration() + _furySpent / requiredFuryAmount * GetEffect(EFFECT_0)->GetAmount()); + int32 requiredFuryAmount = GetEffect(EFFECT_1)->GetAmountAsInt(); + metamorphosis->SetDuration(metamorphosis->GetDuration() + _furySpent / requiredFuryAmount * GetEffect(EFFECT_0)->GetAmountAsInt()); _furySpent %= requiredFuryAmount; } @@ -2010,7 +2010,7 @@ class spell_dh_shattered_souls_devourer : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -2162,7 +2162,7 @@ class spell_dh_soul_carver : public SpellScript void HandleSoulFragments(SpellEffIndex /*effIndex*/) const { - spell_dh_shattered_souls_base_lesser::CreateFragments(GetHitUnit(), GetCaster(), GetEffectInfo(EFFECT_2).CalcValue(GetCaster())); + spell_dh_shattered_souls_base_lesser::CreateFragments(GetHitUnit(), GetCaster(), GetEffectInfo(EFFECT_2).CalcValueAsInt(GetCaster())); } void Register() override @@ -2181,7 +2181,7 @@ class spell_dh_soul_carver_aura : public AuraScript void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) const { if (Unit* caster = GetCaster()) - spell_dh_shattered_souls_base_lesser::CreateFragments(GetTarget(), caster, GetEffectInfo(EFFECT_3).CalcValue(caster)); + spell_dh_shattered_souls_base_lesser::CreateFragments(GetTarget(), caster, GetEffectInfo(EFFECT_3).CalcValueAsInt(caster)); } void Register() override @@ -2204,7 +2204,7 @@ class spell_dh_soul_fragments_damage_taken_tracker : public AuraScript if (!seconds) return false; - _damagePerSecond.resize(seconds->GetAmount()); + _damagePerSecond.resize(seconds->GetAmountAsInt()); return !_damagePerSecond.empty(); } @@ -2220,10 +2220,10 @@ class spell_dh_soul_fragments_damage_taken_tracker : public AuraScript _damagePerSecond[0] = 0; } - void HandleCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void HandleCalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = true; - amount = int32(std::reduce(_damagePerSecond.begin(), _damagePerSecond.end(), 0u)); + amount = std::reduce(_damagePerSecond.begin(), _damagePerSecond.end(), 0u); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -2259,11 +2259,11 @@ class spell_dh_soulmonger : public AuraScript static void HandleEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) { Unit* target = eventInfo.GetActionTarget(); - int32 amount = eventInfo.GetHealInfo()->GetHeal(); + SpellEffectValue amount = eventInfo.GetHealInfo()->GetHeal(); if (AuraEffect const* existingAbsorb = target->GetAuraEffect(SPELL_DH_SOULMONGER_ABSORB, EFFECT_0)) amount += existingAbsorb->GetAmount(); - amount = std::min(amount, int32(target->CountPctFromMaxHealth(aurEff->GetAmount()))); + amount = std::min(amount, SpellEffectValue(target->CountPctFromMaxHealth(aurEff->GetAmount()))); target->CastSpell(target, SPELL_DH_SOULMONGER_ABSORB, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -2307,7 +2307,7 @@ class spell_dh_soul_furnace_conduit : public AuraScript { void CalculateSpellMod(AuraEffect const* aurEff, SpellModifier*& spellMod) { - if (aurEff->GetAmount() == 10) + if (aurEff->GetAmountAsInt() == 10) { if (!spellMod) { @@ -2328,7 +2328,7 @@ class spell_dh_soul_sigils : public AuraScript { void HandleOnProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const { - spell_dh_shattered_souls_base_lesser::CreateFragments(eventInfo.GetActionTarget(), eventInfo.GetActor(), aurEff->GetAmount()); + spell_dh_shattered_souls_base_lesser::CreateFragments(eventInfo.GetActionTarget(), eventInfo.GetActor(), aurEff->GetAmountAsInt()); } void Register() override diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 608640fda01b6..02cf1e4101416 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -169,7 +169,7 @@ class spell_dk_anti_magic_shell : public AuraScript return true; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { amount = CalculatePct(maxHealth, absorbPct); @@ -185,7 +185,7 @@ class spell_dk_anti_magic_shell : public AuraScript absorbedAmount += absorbAmount; CastSpellExtraArgs args(aurEff); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, CalculatePct(absorbAmount, 2 * absorbAmount * 100 / maxHealth)); + args.AddSpellMod(SPELLVALUE_BASE_POINT0, CalculatePct(absorbAmount, UI64LIT(2) * absorbAmount * 100 / maxHealth)); GetTarget()->CastSpell(GetTarget(), SPELL_DK_RUNIC_POWER_ENERGIZE, args); } @@ -196,8 +196,8 @@ class spell_dk_anti_magic_shell : public AuraScript } private: - int32 absorbPct; - int32 maxHealth; + SpellEffectValue absorbPct; + uint64 maxHealth; uint32 absorbedAmount; }; @@ -218,7 +218,7 @@ class spell_dk_apply_bone_shield : public SpellScript void HandleHitTarget(SpellEffIndex /*effIndex*/) const { Unit* caster = GetCaster(); - for (int32 i = 0; i < GetEffectValue(); ++i) + for (int32 i = 0; i < GetEffectValueAsInt(); ++i) caster->CastSpell(caster, SPELL_DK_BONE_SHIELD, CastSpellExtraArgs() .SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR) .SetTriggeringSpell(GetSpell())); @@ -385,7 +385,7 @@ class spell_dk_blood_bond_periodic : public AuraScript Unit* owner = GetTarget()->GetOwner(); Unit* target = GetTarget(); SpellInfo const* bloodBondTalent = sSpellMgr->AssertSpellInfo(SPELL_DK_BLOOD_BOND_TALENT, GetCastDifficulty()); - if (owner->GetHealthPct() >= bloodBondTalent->GetEffect(EFFECT_0).CalcValue(owner)) + if (owner->GetHealthPct() >= bloodBondTalent->GetEffect(EFFECT_0).CalcValueAsInt(owner)) return; CastSpellExtraArgs args; @@ -559,7 +559,7 @@ class spell_dk_dark_simulacrum_buff : public AuraScript { bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const { - return uint32(aurEff->GetAmount()) == eventInfo.GetSpellInfo()->Id; + return uint32(aurEff->GetAmountAsInt()) == eventInfo.GetSpellInfo()->Id; } void Register() override @@ -623,7 +623,7 @@ class spell_dk_death_gate : public SpellScript { PreventHitDefaultEffect(effIndex); if (Unit* target = GetHitUnit()) - target->CastSpell(target, GetEffectValue(), false); + target->CastSpell(target, GetEffectValueAsInt(), false); } void Register() override @@ -680,10 +680,10 @@ class spell_dk_death_pact : public AuraScript return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }); } - void HandleCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void HandleCalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* caster = GetCaster()) - amount = int32(caster->CountPctFromMaxHealth(GetEffectInfo(EFFECT_2).CalcValue(caster))); + amount = caster->CountPctFromMaxHealth(GetEffectInfo(EFFECT_2).CalcValue(caster)); } void Register() override @@ -716,9 +716,9 @@ class spell_dk_death_strike : public SpellScript if (AuraEffect* enabler = caster->GetAuraEffect(SPELL_DK_DEATH_STRIKE_ENABLER, EFFECT_0, GetCaster()->GetGUID())) { // Heals you for 25% of all damage taken in the last 5 sec, - int32 heal = CalculatePct(enabler->CalculateAmount(GetCaster()), GetEffectInfo(EFFECT_1).CalcValue(GetCaster())); + SpellEffectValue heal = CalculatePct(enabler->CalculateAmount(GetCaster()), GetEffectInfo(EFFECT_1).CalcValue(GetCaster())); // minimum 7.0% of maximum health. - int32 pctOfMaxHealth = CalculatePct(GetEffectInfo(EFFECT_2).CalcValue(GetCaster()), caster->GetMaxHealth()); + SpellEffectValue pctOfMaxHealth = CalculatePct(GetEffectInfo(EFFECT_2).CalcValue(GetCaster()), caster->GetMaxHealth()); heal = std::max(heal, pctOfMaxHealth); caster->CastSpell(caster, SPELL_DK_DEATH_STRIKE_HEAL, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_BASE_POINT0, heal)); @@ -761,10 +761,10 @@ class spell_dk_death_strike_enabler : public AuraScript _damagePerSecond[0] = 0; } - void HandleCalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void HandleCalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = true; - amount = int32(std::accumulate(_damagePerSecond.begin(), _damagePerSecond.end(), 0u)); + amount = std::accumulate(_damagePerSecond.begin(), _damagePerSecond.end(), 0u); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) @@ -794,7 +794,7 @@ class spell_dk_festering_strike : public SpellScript void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetHitUnit(), SPELL_DK_FESTERING_WOUND, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetEffectValue())); + GetCaster()->CastSpell(GetHitUnit(), SPELL_DK_FESTERING_WOUND, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, GetEffectValueAsInt())); } void Register() override @@ -808,7 +808,7 @@ class spell_dk_frost_fever_proc : public AuraScript { bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void Register() override @@ -1003,13 +1003,13 @@ class spell_dk_improved_death_strike : public AuraScript && ValidateSpellEffect({ { spellInfo->Id, EFFECT_4 } }); } - void CalcHealIncrease(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) const + void CalcHealIncrease(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) const { if (GetUnitOwner()->HasAura(SPELL_DK_BLOOD)) amount = GetEffectInfo(EFFECT_3).CalcValue(GetCaster()); } - void CalcPowerCostReduction(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) const + void CalcPowerCostReduction(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) const { if (GetUnitOwner()->HasAura(SPELL_DK_BLOOD)) amount = GetEffectInfo(EFFECT_4).CalcValue(GetCaster()); @@ -1079,7 +1079,7 @@ class spell_dk_obliteration : public AuraScript target->CastSpell(target, SPELL_DK_KILLING_MACHINE_PROC, aurEff); if (AuraEffect const* oblitaration = target->GetAuraEffect(SPELL_DK_OBLITERATION, EFFECT_1)) - if (roll_chance_i(oblitaration->GetAmount())) + if (roll_chance_f(oblitaration->GetAmount())) target->CastSpell(target, SPELL_DK_OBLITERATION_RUNE_ENERGIZE, aurEff); } @@ -1258,7 +1258,7 @@ class spell_dk_rime : public AuraScript bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) { - float chance = static_cast(GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(GetTarget())); + SpellEffectValue chance = GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(GetTarget()); if (eventInfo.GetSpellInfo()->Id == SPELL_DK_FROST_SCYTHE) chance /= 2.f; @@ -1291,7 +1291,7 @@ class spell_dk_soul_reaper : public AuraScript if (!caster) return; - if (!_healthLimitEffectIndex || target->GetHealthPct() < float(GetEffectInfo(*_healthLimitEffectIndex).CalcValue(caster))) + if (!_healthLimitEffectIndex || target->GetHealthPct() < GetEffectInfo(*_healthLimitEffectIndex).CalcValue(caster)) caster->CastSpell(target, SPELL_DK_SOUL_REAPER_DAMAGE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff @@ -1421,7 +1421,7 @@ class spell_dk_t20_2p_rune_empowered : public AuraScript // 55233 - Vampiric Blood class spell_dk_vampiric_blood : public AuraScript { - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { amount = GetUnitOwner()->CountPctFromMaxHealth(amount); } @@ -1485,7 +1485,7 @@ struct at_dk_death_and_decay : AreaTriggerAI if (Aura* deathAndDecay = unit->GetAura(SPELL_DK_DEATH_AND_DECAY_INCREASE_TARGETS)) { if (AuraEffect* const cleavingStrikes = unit->GetAuraEffect(SPELL_DK_CLEAVING_STRIKES, EFFECT_3)) - deathAndDecay->SetDuration(cleavingStrikes->GetAmount()); + deathAndDecay->SetDuration(cleavingStrikes->GetAmountAsInt()); } unit->RemoveAurasDueToSpell(SPELL_DK_SANGUINE_GROUND); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 5e3e0b81fa9c4..7f17e73a3d9d4 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -258,9 +258,9 @@ class spell_dru_astral_smolder : public AuraScript PreventDefaultAction(); SpellEffectInfo const& astralSmolderDmg = sSpellMgr->AssertSpellInfo(SPELL_DRUID_ASTRAL_SMOLDER_DAMAGE, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 pct = aurEff->GetAmount(); + SpellEffectValue pct = aurEff->GetAmount(); - int32 amount = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), pct) / astralSmolderDmg.GetPeriodicTickCount()); + SpellEffectValue amount = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), pct) / astralSmolderDmg.GetPeriodicTickCount(); CastSpellExtraArgs args(aurEff); args.AddSpellMod(SPELLVALUE_BASE_POINT0, amount); @@ -490,7 +490,7 @@ class spell_dru_cultivation : public AuraScript // 1850 - Dash class spell_dru_dash : public AuraScript { - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { // do not set speed if not in cat form if (GetUnitOwner()->GetShapeshiftForm() != FORM_CAT_FORM) @@ -585,7 +585,7 @@ class spell_dru_eclipse_aura : public AuraScript return; uint32 spellId = GetSpellInfo()->Id == SPELL_DRUID_ECLIPSE_SOLAR_AURA ? SPELL_DRUID_ECLIPSE_LUNAR_SPELL_CNT : SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT; - spell_dru_eclipse_common::SetSpellCount(GetTarget(), spellId, auraEffDummy->GetAmount()); + spell_dru_eclipse_common::SetSpellCount(GetTarget(), spellId, auraEffDummy->GetAmountAsInt()); } void Register() override @@ -641,7 +641,7 @@ class spell_dru_eclipse_dummy : public AuraScript void HandleApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { // counters are applied with a delay - GetTarget()->m_Events.AddEventAtOffset(new InitializeEclipseCountersEvent(GetTarget(), aurEff->GetAmount()), 1s); + GetTarget()->m_Events.AddEventAtOffset(new InitializeEclipseCountersEvent(GetTarget(), aurEff->GetAmountAsInt()), 1s); } void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -711,8 +711,8 @@ class spell_dru_eclipse_ooc : public AuraScript if (!owner->IsInCombat() && (!owner->HasAura(SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT) || !owner->HasAura(SPELL_DRUID_ECLIPSE_LUNAR_SPELL_CNT))) { // Restore 2 stacks to each spell when out of combat - spell_dru_eclipse_common::SetSpellCount(owner, SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT, auraEffDummy->GetAmount()); - spell_dru_eclipse_common::SetSpellCount(owner, SPELL_DRUID_ECLIPSE_LUNAR_SPELL_CNT, auraEffDummy->GetAmount()); + spell_dru_eclipse_common::SetSpellCount(owner, SPELL_DRUID_ECLIPSE_SOLAR_SPELL_CNT, auraEffDummy->GetAmountAsInt()); + spell_dru_eclipse_common::SetSpellCount(owner, SPELL_DRUID_ECLIPSE_LUNAR_SPELL_CNT, auraEffDummy->GetAmountAsInt()); } } @@ -837,7 +837,7 @@ class spell_dru_elunes_favored_proc : public AuraScript if (!elunesFavored) return; - int32 heal = CalculatePct(_arcaneDamage, elunesFavored->GetAmount()); + SpellEffectValue heal = CalculatePct(_arcaneDamage, elunesFavored->GetAmount()); caster->CastSpell(caster, SPELL_DRUID_ELUNES_FAVORED_HEAL, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -868,7 +868,7 @@ class spell_dru_embrace_of_the_dream : public AuraScript bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const { - return roll_chance_i(GetEffectInfo(EFFECT_2).CalcValue(GetCaster())); + return roll_chance_f(GetEffectInfo(EFFECT_2).CalcValue(GetCaster())); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const @@ -986,7 +986,7 @@ class spell_dru_ferocious_bite : public SpellScript void HandleHitTargetBurn(SpellEffIndex /*effIndex*/) { - int32 newValue = int32(float(GetEffectValue()) * _damageMultiplier); + SpellEffectValue newValue = GetEffectValue() * _damageMultiplier; SetEffectValue(newValue); } @@ -1000,16 +1000,16 @@ class spell_dru_ferocious_bite : public SpellScript { Unit* caster = GetCaster(); - int32 maxExtraConsumedPower = GetEffectValue(); + SpellEffectValue maxExtraConsumedPower = GetEffectValue(); if (AuraEffect* auraEffect = caster->GetAuraEffect(SPELL_DRUID_INCARNATION_KING_OF_THE_JUNGLE, EFFECT_1)) { - float multiplier = 1.0f + float(auraEffect->GetAmount()) / 100.0f; - maxExtraConsumedPower = int32(float(maxExtraConsumedPower) * multiplier); + SpellEffectValue multiplier = 1.0 + auraEffect->GetAmount() / 100.0; + maxExtraConsumedPower = maxExtraConsumedPower * multiplier; SetEffectValue(maxExtraConsumedPower); } - _damageMultiplier = std::min(caster->GetPower(POWER_ENERGY), maxExtraConsumedPower) / maxExtraConsumedPower; + _damageMultiplier = std::min(caster->GetPower(POWER_ENERGY), maxExtraConsumedPower) / maxExtraConsumedPower; } void Register() override @@ -1061,7 +1061,7 @@ class spell_dru_flower_walk_heal : public SpellScript void FilterTargets(std::list& targets) { Unit* caster = GetCaster(); - int32 maxTargets = GetEffectInfo(EFFECT_1).CalcValue(caster); + int32 maxTargets = GetEffectInfo(EFFECT_1).CalcValueAsInt(caster); if (targets.size() > 1) targets.remove(caster); @@ -1168,7 +1168,7 @@ class spell_dru_galactic_guardian : public AuraScript static bool CheckEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -1294,7 +1294,7 @@ class spell_dru_gore : public AuraScript bool CheckEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*procInfo*/) @@ -1320,7 +1320,7 @@ class spell_dru_guardian_of_elune_healing : public AuraScript return ValidateSpellEffect({ { SPELL_DRUID_GUARDIAN_OF_ELUNE_AURA, EFFECT_1 } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = false; @@ -1604,7 +1604,7 @@ class spell_dru_luxuriant_soil : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) const @@ -1701,7 +1701,7 @@ class spell_dru_matted_fur_absorb : public AuraScript static void CalculateAmount(AuraScript const&, AuraEffect const* /*aurEff*/, Unit const* victim, int32& baseAbsorb, int32& /*flatMod*/, float& /*pctMod*/) { if (AuraEffect const* passiveEffect = victim->GetAuraEffect(SPELL_DRUID_MATTED_FUR, EFFECT_0)) - baseAbsorb = static_cast(victim->GetTotalAttackPowerValue(BASE_ATTACK) * 0.0125f * passiveEffect->GetAmount()); + baseAbsorb = static_cast(victim->GetTotalAttackPowerValue(BASE_ATTACK) * 0.0125 * passiveEffect->GetAmount()); } void Register() override @@ -1746,7 +1746,7 @@ class spell_dru_moonless_night : public AuraScript { Unit* caster = eventInfo.GetActor(); Unit* target = eventInfo.GetActionTarget(); - int32 damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()); + SpellEffectValue damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()); caster->CastSpell(target, SPELL_DRUID_MOONLESS_NIGHT_DAMAGE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -1774,7 +1774,7 @@ class spell_dru_natures_grace : public AuraScript static void Trigger(Unit* caster, AuraEffect const* naturesGraceEffect) { caster->CastSpell(caster, SPELL_DRUID_DREAMSTATE, CastSpellExtraArgsInit{ - .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, naturesGraceEffect->GetAmount() } } + .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, naturesGraceEffect->GetAmountAsInt() } } }); } @@ -1879,7 +1879,7 @@ class spell_dru_omen_of_clarity_restoration : public AuraScript { bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void Register() override @@ -1921,7 +1921,7 @@ class spell_dru_power_of_the_archdruid : public AuraScript AuraEffect const* powerOfTheArchdruidEffect = druid->GetAuraEffect(SPELL_DRUID_POWER_OF_THE_ARCHDRUID, EFFECT_0); // max. targets is SPELL_DRUID_POWER_OF_THE_ARCHDRUID's EFFECT_0 BasePoints. - int32 maxTargets = powerOfTheArchdruidEffect->GetAmount(); + int32 maxTargets = powerOfTheArchdruidEffect->GetAmountAsInt(); Trinity::Containers::RandomResize(targetList, maxTargets); @@ -1960,7 +1960,7 @@ class spell_dru_pulverize : public SpellScript if (!bleedAura) return; - int32 stacksToRemove = GetEffectInfo(EFFECT_2).CalcValue(caster); + int32 stacksToRemove = GetEffectInfo(EFFECT_2).CalcValueAsInt(caster); bleedAura->ModStackAmount(-stacksToRemove); target->RemoveAurasDueToSpell(SPELL_DRUID_THRASH_PULVERIZE_TRIGGER); @@ -2001,7 +2001,7 @@ class spell_dru_pulverize_thrash : public SpellScript if (!bleedAura) return; - int32 thresholdStacks = sSpellMgr->AssertSpellInfo(SPELL_DRUID_PULVERIZE, GetCastDifficulty())->GetEffect(EFFECT_2).CalcValue(caster); + int32 thresholdStacks = sSpellMgr->AssertSpellInfo(SPELL_DRUID_PULVERIZE, GetCastDifficulty())->GetEffect(EFFECT_2).CalcValueAsInt(caster); if (bleedAura->GetStackAmount() >= thresholdStacks) caster->CastSpell(target, SPELL_DRUID_THRASH_PULVERIZE_TRIGGER, CastSpellExtraArgs().SetTriggeringSpell(GetSpell())); } @@ -2091,7 +2091,7 @@ class spell_dru_rip : public AuraScript return caster && caster->GetTypeId() == TYPEID_PLAYER; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = false; @@ -2107,7 +2107,7 @@ class spell_dru_rip : public AuraScript else if (AuraEffect const* auraEffIdolOfWorship = caster->GetAuraEffect(SPELL_DRUID_IDOL_OF_WORSHIP, EFFECT_0)) amount += cp * auraEffIdolOfWorship->GetAmount(); - amount += int32(CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), cp)); + amount += CalculatePct(caster->GetTotalAttackPowerValue(BASE_ATTACK), cp); } } @@ -2210,7 +2210,7 @@ class spell_dru_shooting_stars : public AuraScript { uint32 spellId = SPELL_DRUID_SHOOTING_STARS_DAMAGE; AuraEffect const* crashingStarTalent = caster->GetAuraEffect(SPELL_DRUID_CRASHING_STAR_TALENT, EFFECT_0); - if (crashingStarTalent && roll_chance_i(crashingStarTalent->GetAmount())) + if (crashingStarTalent && roll_chance_f(crashingStarTalent->GetAmount())) spellId = SPELL_DRUID_CRASHING_STAR_DAMAGE; caster->CastSpell(target, spellId, CastSpellExtraArgsInit{ @@ -2295,7 +2295,7 @@ class spell_dru_starfall_dummy : public SpellScript if (caster->HasUnitState(UNIT_STATE_CONTROLLED)) return; - caster->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + caster->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -2339,7 +2339,7 @@ class spell_dru_sudden_ambush : public AuraScript if (!comboPoints) return false; - return roll_chance_i(*comboPoints * aurEff->GetAmount()); + return roll_chance_f(*comboPoints * aurEff->GetAmount()); } void Register() override @@ -2395,7 +2395,7 @@ class spell_dru_swift_flight_passive : public AuraScript return GetCaster()->GetTypeId() == TYPEID_PLAYER; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* caster = GetCaster()->ToPlayer()) if (caster->GetSkillValue(SKILL_RIDING) >= 375) @@ -2448,7 +2448,7 @@ class spell_dru_t3_8p_bonus : public AuraScript if (!manaCost) return; - int32 amount = CalculatePct(*manaCost, aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(*manaCost, aurEff->GetAmount()); CastSpellExtraArgs args(aurEff); args.AddSpellBP0(amount); caster->CastSpell(nullptr, SPELL_DRUID_EXHILARATE, args); @@ -2502,7 +2502,7 @@ class spell_dru_t10_balance_4p_bonus : public AuraScript Unit* target = eventInfo.GetProcTarget(); SpellEffectInfo const& spellEffect = sSpellMgr->AssertSpellInfo(SPELL_DRUID_LANGUISH, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 amount = CalculatePct(static_cast(damageInfo->GetDamage()), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(static_cast(damageInfo->GetDamage()), aurEff->GetAmount()); amount /= spellEffect.GetPeriodicTickCount(); @@ -2608,7 +2608,7 @@ class spell_dru_thorns_of_iron_damage : public SpellScript Unit* caster = GetCaster(); int32 noTargets = GetUnitTargetCountForEffect(effIndex); - int32 pct = GetTriggeringSpell()->GetEffect(effIndex).CalcValue(caster); + SpellEffectValue pct = GetTriggeringSpell()->GetEffect(effIndex).CalcValue(caster); int32 damage = CalculatePct(caster->GetArmor(), pct) / noTargets; SetHitDamage(damage); @@ -2837,7 +2837,7 @@ class spell_dru_tiger_dash_aura : public AuraScript { if (AuraEffect* effRunSpeed = GetEffect(EFFECT_0)) { - int32 reduction = aurEff->GetAmount(); + SpellEffectValue reduction = aurEff->GetAmount(); effRunSpeed->ChangeAmount(effRunSpeed->GetAmount() - reduction); } } @@ -3003,7 +3003,7 @@ class spell_dru_ursocs_fury : public AuraScript return; Unit* caster = eventInfo.GetActor(); - int32 amount = CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()); caster->CastSpell(caster, SPELL_DRUID_URSOCS_FURY_SHIELD, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -3028,10 +3028,10 @@ class spell_dru_wild_growth : public SpellScript void FilterTargets(std::list& targets) const { Unit* caster = GetCaster(); - int32 maxTargets = GetEffectInfo(EFFECT_1).CalcValue(caster); + int32 maxTargets = GetEffectInfo(EFFECT_1).CalcValueAsInt(caster); if (AuraEffect const* treeOfLife = caster->GetAuraEffect(SPELL_DRUID_TREE_OF_LIFE, EFFECT_2)) - maxTargets += treeOfLife->GetAmount(); + maxTargets += treeOfLife->GetAmountAsInt(); // Note: Wild Growth became a smart heal which prioritizes players and their pets in their group before any unit outside their group. Trinity::SelectRandomInjuredTargets(targets, maxTargets, true, caster); @@ -3057,16 +3057,16 @@ class spell_dru_wild_growth_aura : public AuraScript return; // calculate from base damage, not from aurEff->GetAmount() (already modified) - float damage = caster->CalculateSpellDamage(GetUnitOwner(), aurEff->GetSpellEffectInfo()); + SpellEffectValue damage = aurEff->GetSpellEffectInfo().CalcValue(caster, nullptr, GetUnitOwner()); // Wild Growth = first tick gains a 6% bonus, reduced by 2% each tick float reduction = 2.f; if (AuraEffect* bonus = caster->GetAuraEffect(SPELL_DRUID_RESTORATION_T10_2P_BONUS, EFFECT_0)) reduction -= CalculatePct(reduction, bonus->GetAmount()); - reduction *= (aurEff->GetTickNumber() - 1); + reduction *= aurEff->GetTickNumber() - 1; AddPct(damage, 6.f - reduction); - aurEff->SetAmount(int32(damage)); + aurEff->SetAmount(damage); } void Register() override @@ -3089,7 +3089,7 @@ class spell_dru_yseras_gift : public AuraScript void HandleEffectPeriodic(AuraEffect const* aurEff) { - int32 healAmount = int32(GetTarget()->CountPctFromMaxHealth(aurEff->GetAmount())); + SpellEffectValue healAmount = GetTarget()->CountPctFromMaxHealth(aurEff->GetAmount()); if (!GetTarget()->IsFullHealth()) GetTarget()->CastSpell(GetTarget(), SPELL_DRUID_YSERAS_GIFT_HEAL_SELF, CastSpellExtraArgs(aurEff).AddSpellBP0(healAmount)); diff --git a/src/server/scripts/Spells/spell_evoker.cpp b/src/server/scripts/Spells/spell_evoker.cpp index 48c8229c6cc41..f05e76d54723a 100644 --- a/src/server/scripts/Spells/spell_evoker.cpp +++ b/src/server/scripts/Spells/spell_evoker.cpp @@ -97,7 +97,7 @@ class spell_evo_azure_strike : public SpellScript void FilterTargets(std::list& targets) { targets.remove(GetExplTargetUnit()); - Trinity::Containers::RandomResize(targets, GetEffectInfo(EFFECT_0).CalcValue(GetCaster()) - 1); + Trinity::Containers::RandomResize(targets, GetEffectInfo(EFFECT_0).CalcValueAsInt(GetCaster()) - 1); targets.push_back(GetExplTargetUnit()); } @@ -168,7 +168,7 @@ class spell_evo_burnout : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -229,7 +229,7 @@ class spell_evo_causality_disintegrate : public AuraScript { if (AuraEffect const* causality = GetCaster()->GetAuraEffect(SPELL_EVOKER_CAUSALITY, EFFECT_0)) for (uint32 spell : CausalityAffectedEmpowerSpells) - GetCaster()->GetSpellHistory()->ModifyCooldown(spell, Milliseconds(causality->GetAmount())); + GetCaster()->GetSpellHistory()->ModifyCooldown(spell, Milliseconds(causality->GetAmountAsInt())); } void Register() override @@ -259,7 +259,7 @@ class spell_evo_causality_pyre : public SpellScript if (!causality) return; - Milliseconds cooldownReduction = Milliseconds(std::min(GetUnitTargetCountForEffect(EFFECT_0), TargetLimit) * causality->GetAmount()); + Milliseconds cooldownReduction = Milliseconds(std::min(GetUnitTargetCountForEffect(EFFECT_0), TargetLimit) * causality->GetAmountAsInt()); for (uint32 spell : CausalityAffectedEmpowerSpells) GetCaster()->GetSpellHistory()->ModifyCooldown(spell, cooldownReduction); } @@ -307,7 +307,7 @@ class spell_evo_emerald_blossom_heal : public SpellScript void FilterTargets(std::list& targets) const { - uint32 const maxTargets = uint32(GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(GetCaster())); + uint32 const maxTargets = uint32(GetSpellInfo()->GetEffect(EFFECT_1).CalcValueAsInt(GetCaster())); Trinity::SelectRandomInjuredTargets(targets, maxTargets, true); } @@ -332,7 +332,7 @@ class spell_evo_essence_burst_trigger : public SpellScript bool Load() override { AuraEffect const* aurEff = GetCaster()->GetAuraEffect(_talentAuraId, EFFECT_0); - return aurEff && roll_chance_i(aurEff->GetAmount()); + return aurEff && roll_chance_f(aurEff->GetAmount()); } void HandleEssenceBurst() const @@ -368,7 +368,7 @@ class spell_evo_fire_breath : public SpellScript void OnComplete(int32 completedStageCount) const { - int32 dotTicks = 10 - (completedStageCount - 1) * 3; + SpellEffectValue dotTicks = 10 - (completedStageCount - 1) * 3; if (AuraEffect const* blastFurnace = GetCaster()->GetAuraEffect(SPELL_EVOKER_BLAST_FURNACE, EFFECT_0)) dotTicks += blastFurnace->GetAmount() / 2; diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 358a6df294695..93362920e7dc3 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -60,7 +60,7 @@ class spell_gen_absorb0_hitlimit1 : public AuraScript bool Load() override { // Max absorb stored in 1 dummy effect - limit = GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(); + limit = GetSpellInfo()->GetEffect(EFFECT_1).CalcValueAsInt(); return true; } @@ -269,7 +269,7 @@ class spell_gen_arena_drink : public AuraScript isPeriodic = false; } - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { AuraEffect* regen = GetAura()->GetEffect(EFFECT_0); if (!regen) @@ -715,18 +715,18 @@ class spell_gen_burning_depths_necrolyte_image : public AuraScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }) - && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_2).CalcValue()) }); + && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_2).CalcValueAsInt()) }); } void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (Unit* caster = GetCaster()) - caster->CastSpell(GetTarget(), uint32(GetEffectInfo(EFFECT_2).CalcValue())); + caster->CastSpell(GetTarget(), uint32(GetEffectInfo(EFFECT_2).CalcValueAsInt())); } void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - GetTarget()->RemoveAurasDueToSpell(uint32(GetEffectInfo(EFFECT_2).CalcValue()), GetCasterGUID()); + GetTarget()->RemoveAurasDueToSpell(uint32(GetEffectInfo(EFFECT_2).CalcValueAsInt()), GetCasterGUID()); } void Register() override @@ -786,7 +786,7 @@ class spell_gen_chains_of_ice : public AuraScript if (!slow) return; - int32 newAmount = std::min(slow->GetAmount() + aurEff->GetAmount(), 0); + SpellEffectValue newAmount = std::min(slow->GetAmount() + aurEff->GetAmount(), 0.0); slow->ChangeAmount(newAmount); } @@ -851,7 +851,7 @@ class spell_gen_clone : public SpellScript void HandleScriptEffect(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -886,7 +886,7 @@ class spell_gen_clone_weapon : public SpellScript void HandleScriptEffect(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -1027,7 +1027,7 @@ class spell_gen_consumption : public SpellScript void CalculateDamage(SpellEffectInfo const& /*spellEffectInfo*/, Unit const* /*victim*/, int32& damage, int32& /*flatMod*/, float& /*pctMod*/) const { if (SpellInfo const* createdBySpell = sSpellMgr->GetSpellInfo(GetCaster()->m_unitData->CreatedBySpell, GetCastDifficulty())) - damage = createdBySpell->GetEffect(EFFECT_1).CalcValue(); + damage = createdBySpell->GetEffect(EFFECT_1).CalcValueAsInt(); } void Register() override @@ -1896,14 +1896,14 @@ class spell_gen_gift_of_naaru : public AuraScript return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); } - void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* aurEff, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !aurEff->GetTotalTicks()) return; - float healPct = GetEffectInfo(EFFECT_1).CalcValue() / 100.0f; - float heal = healPct * GetCaster()->GetMaxHealth(); - int32 healTick = std::floor(heal / aurEff->GetTotalTicks()); + SpellEffectValue healPct = GetEffectInfo(EFFECT_1).CalcValue() / 100.0; + SpellEffectValue heal = healPct * GetCaster()->GetMaxHealth(); + SpellEffectValue healTick = std::floor(heal / aurEff->GetTotalTicks()); amount += healTick; } @@ -2064,9 +2064,9 @@ class spell_gen_increase_stats_buff : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { if (GetHitUnit()->IsInRaidWith(GetCaster())) - GetCaster()->CastSpell(GetCaster(), GetEffectValue() + 1, true); // raid buff + GetCaster()->CastSpell(GetCaster(), GetEffectValueAsInt() + 1, true); // raid buff else - GetCaster()->CastSpell(GetHitUnit(), GetEffectValue(), true); // single-target buff + GetCaster()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), true); // single-target buff } void Register() override @@ -2479,8 +2479,8 @@ class spell_gen_oracle_wolvar_reputation : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { Player* player = GetCaster()->ToPlayer(); - uint32 factionId = GetEffectInfo().CalcValue(); - int32 repChange = GetEffectInfo(EFFECT_1).CalcValue(); + uint32 factionId = GetEffectInfo().CalcValueAsInt(); + int32 repChange = GetEffectInfo(EFFECT_1).CalcValueAsInt(); FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionId); if (!factionEntry) @@ -2590,14 +2590,14 @@ class spell_gen_player_say : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValue())); + return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt())); } void HandleScript(SpellEffIndex /*effIndex*/) { // Note: target here is always player; caster here is gameobject, creature or player (self cast) if (Unit* target = GetHitUnit()) - target->Unit::Say(uint32(GetEffectValue()), target); + target->Unit::Say(uint32(GetEffectValueAsInt()), target); } void Register() override @@ -2614,7 +2614,7 @@ class spell_gen_proc_below_pct_damaged : public AuraScript if (!damageInfo || !damageInfo->GetDamage()) return false; - int32 pct = GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(); + SpellEffectValue pct = GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(); if (eventInfo.GetActionTarget()->HealthBelowPctDamaged(pct, damageInfo->GetDamage())) return true; @@ -3014,7 +3014,7 @@ class spell_gen_replenishment_aura : public AuraScript return GetUnitOwner()->GetPowerType() == POWER_MANA; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { switch (GetSpellInfo()->Id) { @@ -3074,7 +3074,7 @@ class spell_gen_running_wild_aura : public AuraScript target->Mount(DISPLAYID_HIDDEN_MOUNT, 0, 0); // cast speed aura - if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(aurEff->GetAmount())) + if (MountCapabilityEntry const* mountCapability = sMountCapabilityStore.LookupEntry(aurEff->GetAmountAsInt())) target->CastSpell(target, mountCapability->ModSpellAuraID, TRIGGERED_FULL_MASK); } @@ -3246,7 +3246,7 @@ class spell_gen_throw_shield : public SpellScript void HandleScriptEffect(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -3550,22 +3550,22 @@ class spell_gen_vehicle_scaling : public AuraScript return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { Unit* caster = GetCaster(); float factor; - uint16 baseItemLevel; + float baseItemLevel; /// @todo Reserach coeffs for different vehicles switch (GetId()) { case SPELL_GEAR_SCALING: factor = 1.0f; - baseItemLevel = 205; + baseItemLevel = 205.0f; break; default: factor = 1.0f; - baseItemLevel = 170; + baseItemLevel = 170.0f; break; } @@ -3573,7 +3573,7 @@ class spell_gen_vehicle_scaling : public AuraScript if (avgILvl < baseItemLevel) return; /// @todo Research possibility of scaling down - amount = uint16((avgILvl - baseItemLevel) * factor); + amount = (avgILvl - baseItemLevel) * factor; } void Register() override @@ -3648,14 +3648,14 @@ class spell_gen_whisper_to_controller : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValue())); + return sBroadcastTextStore.HasRecord(uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt())); } void HandleScript(SpellEffIndex /*effIndex*/) { if (TempSummon* casterSummon = GetCaster()->ToTempSummon()) if (Player* target = casterSummon->GetSummonerUnit()->ToPlayer()) - casterSummon->Unit::Whisper(uint32(GetEffectValue()), target, false); + casterSummon->Unit::Whisper(uint32(GetEffectValueAsInt()), target, false); } void Register() override @@ -3721,7 +3721,7 @@ class spell_gen_eject_passenger : public SpellScript { if (!ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } })) return false; - if (spellInfo->GetEffect(EFFECT_0).CalcValue() < 1) + if (spellInfo->GetEffect(EFFECT_0).CalcValueAsInt() < 1) return false; return true; } @@ -3730,7 +3730,7 @@ class spell_gen_eject_passenger : public SpellScript { if (Vehicle* vehicle = GetHitUnit()->GetVehicleKit()) { - if (Unit* passenger = vehicle->GetPassenger(GetEffectValue() - 1)) + if (Unit* passenger = vehicle->GetPassenger(GetEffectValueAsInt() - 1)) passenger->ExitVehicle(); } } @@ -3946,7 +3946,7 @@ class spell_gen_mixology_bonus : public AuraScript bonus = value; } - void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* aurEff, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (GetCaster()->HasAura(SPELL_MIXOLOGY) && GetCaster()->HasSpell(GetEffectInfo(EFFECT_0).TriggerSpell)) { @@ -4375,7 +4375,7 @@ class spell_freezing_circle : public SpellScript if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId, GetCastDifficulty())) if (!spellInfo->GetEffects().empty()) - SetHitDamage(spellInfo->GetEffect(EFFECT_0).CalcValue()); + SetHitDamage(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()); } void Register() override @@ -4420,7 +4420,7 @@ class spell_gen_cannon_blast : public SpellScript } void HandleScript(SpellEffIndex /*effIndex*/) { - int32 bp = GetEffectValue(); + SpellEffectValue bp = GetEffectValue(); Unit* target = GetHitUnit(); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.AddSpellBP0(bp); @@ -4468,7 +4468,7 @@ class spell_gen_anetheron_summon_towering_infernal : public SpellScript { void HandleDummy(SpellEffIndex /* effIndex */) { - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -4536,7 +4536,7 @@ class spell_gen_azgalor_rain_of_fire_hellfire_citadel : public SpellScript { void HandleDummy(SpellEffIndex /* effIndex */) { - GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true); + GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValueAsInt()), true); } void Register() override @@ -4617,7 +4617,7 @@ class spell_gen_boost_2_0_paladin_priest_watch_for_shield : public AuraScript // 282559 - Enlisted class spell_gen_war_mode_enlisted : public AuraScript { - void CalcWarModeBonus(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalcWarModeBonus(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { Player* target = GetUnitOwner()->ToPlayer(); if (!target) @@ -4931,7 +4931,7 @@ class spell_gen_reverse_cast_target_to_caster_triggered: public SpellScript { void HandleScript(SpellEffIndex effIndex) { - GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->GetEffect(effIndex).CalcValue(), true); + GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->GetEffect(effIndex).CalcValueAsInt(), true); } void Register() override @@ -5232,7 +5232,7 @@ enum MajorHealingCooldownSpell namespace MajorPlayerHealingCooldownHelpers { -float GetBonusMultiplier(Unit const* unit, uint32 spellId) +SpellEffectValue GetBonusMultiplier(Unit const* unit, uint32 spellId) { // Note: if caster is not in a raid setting, is in PvP or while in arena combat with 5 or less allied players. if (!unit->GetMap()->IsRaid() || !unit->GetMap()->IsBattleground()) @@ -5275,7 +5275,7 @@ float GetBonusMultiplier(Unit const* unit, uint32 spellId) return sSpellMgr->AssertSpellInfo(bonusSpellId, DIFFICULTY_NONE)->GetEffect(effIndex).CalcValue(unit); } - return 0.0f; + return 0.0; } } @@ -5584,7 +5584,7 @@ class spell_gen_no_npc_damage_below_override : public AuraScript public: spell_gen_no_npc_damage_below_override(float healthPct) : _healthPct(healthPct) {} - static void CalculateAmount(AuraScript const&, AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + static void CalculateAmount(AuraScript const&, AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { amount = -1; } diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 46e0ea7d61c6e..22e4c4da78ed2 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -335,7 +335,7 @@ class spell_hun_cobra_sting : public AuraScript bool RollProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*procInfo*/) { - return roll_chance_i(GetEffect(EFFECT_1)->GetAmount()); + return roll_chance_f(GetEffect(EFFECT_1)->GetAmount()); } void Register() override @@ -360,7 +360,7 @@ class spell_hun_concussive_shot : public SpellScript if (Aura* concussiveShot = GetHitUnit()->GetAura(SPELL_HUNTER_CONCUSSIVE_SHOT, caster->GetGUID())) { SpellInfo const* steadyShot = sSpellMgr->AssertSpellInfo(SPELL_HUNTER_STEADY_SHOT, GetCastDifficulty()); - Milliseconds extraDuration = Seconds(steadyShot->GetEffect(EFFECT_2).CalcValue(caster) / 10); + Milliseconds extraDuration = duration_cast(FloatSeconds(steadyShot->GetEffect(EFFECT_2).CalcValue(caster) / 10)); Milliseconds newDuration = Milliseconds(concussiveShot->GetDuration()) + extraDuration; concussiveShot->SetDuration(newDuration.count()); concussiveShot->SetMaxDuration(newDuration.count()); @@ -481,8 +481,8 @@ class spell_hun_hunting_party : public AuraScript void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) { PreventDefaultAction(); - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_HUNTER_EXHILARATION, -Seconds(aurEff->GetAmount())); - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_HUNTER_EXHILARATION_PET, -Seconds(aurEff->GetAmount())); + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_HUNTER_EXHILARATION, duration_cast(FloatSeconds(-aurEff->GetAmount()))); + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_HUNTER_EXHILARATION_PET, duration_cast(FloatSeconds(-aurEff->GetAmount()))); } void Register() override @@ -639,7 +639,7 @@ class spell_hun_lock_and_load : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -697,7 +697,7 @@ class spell_hun_master_marksman : public AuraScript static void HandleProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) { uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_HUNTER_MASTER_MARKSMAN, DIFFICULTY_NONE)->GetEffect(EFFECT_0).GetPeriodicTickCount(); - int32 damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()) / ticks; + SpellEffectValue damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()) / ticks; eventInfo.GetActor()->CastSpell(eventInfo.GetActionTarget(), SPELL_HUNTER_MASTER_MARKSMAN, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -717,7 +717,7 @@ class spell_hun_masters_call : public SpellScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) - && ValidateSpellInfo({ SPELL_HUNTER_MASTERS_CALL_TRIGGERED, uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + && ValidateSpellInfo({ SPELL_HUNTER_MASTERS_CALL_TRIGGERED, uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } bool Load() override @@ -760,7 +760,7 @@ class spell_hun_masters_call : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetCaster()->ToPlayer()->GetPet()->CastSpell(GetHitUnit(), GetEffectValue(), true); + GetCaster()->ToPlayer()->GetPet()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), true); } void HandleScriptEffect(SpellEffIndex /*effIndex*/) @@ -850,7 +850,7 @@ class spell_hun_multi_shot : public SpellScript // 459783 - Penetrating Shots class spell_hun_penetrating_shots : public AuraScript { - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool const& /*canBeRecalculated*/) const + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool const& /*canBeRecalculated*/) const { if (AuraEffect const* amountHolder = GetEffect(EFFECT_1)) { @@ -1008,7 +1008,7 @@ class spell_hun_rejuvenating_wind : public AuraScript Unit* caster = GetTarget(); uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_HUNTER_REJUVENATING_WIND_HEAL, DIFFICULTY_NONE)->GetEffect(EFFECT_0).GetPeriodicTickCount(); - int32 heal = CalculatePct(caster->GetMaxHealth(), aurEff->GetAmount()) / ticks; + SpellEffectValue heal = CalculatePct(caster->GetMaxHealth(), aurEff->GetAmount()) / ticks; caster->CastSpell(caster, SPELL_HUNTER_REJUVENATING_WIND_HEAL, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -1120,7 +1120,7 @@ class spell_hun_scrappy : public AuraScript void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { for (uint32 spellId : AffectedSpellIds) - GetTarget()->GetSpellHistory()->ModifyCooldown(spellId, -Milliseconds(aurEff->GetAmount())); + GetTarget()->GetSpellHistory()->ModifyCooldown(spellId, -Milliseconds(aurEff->GetAmountAsInt())); } void Register() override @@ -1139,7 +1139,7 @@ class spell_hun_shrapnel_shot : public AuraScript void HandleProc(ProcEventInfo const& /*eventInfo*/) const { - if (!roll_chance_i(GetEffect(EFFECT_0)->GetAmount())) + if (!roll_chance_f(GetEffect(EFFECT_0)->GetAmount())) return; GetCaster()->CastSpell(GetCaster(), SPELL_HUNTER_LOCK_AND_LOAD, CastSpellExtraArgsInit{ @@ -1174,7 +1174,7 @@ class spell_hun_steady_shot : public SpellScript }); if (GetCaster()->HasAura(SPELL_HUNTER_MARKSMANSHIP_HUNTER_AURA)) - GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_HUNTER_AIMED_SHOT, Milliseconds(-GetEffectInfo(EFFECT_1).CalcValue())); + GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_HUNTER_AIMED_SHOT, Milliseconds(-GetEffectInfo(EFFECT_1).CalcValueAsInt())); } void Register() override @@ -1406,7 +1406,7 @@ class spell_hun_t29_2p_marksmanship_bonus : public AuraScript Unit* caster = eventInfo.GetActor(); uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_HUNTER_T29_2P_MARKSMANSHIP_DAMAGE, DIFFICULTY_NONE)->GetEffect(EFFECT_0).GetPeriodicTickCount(); - uint32 damage = CalculatePct(eventInfo.GetDamageInfo()->GetOriginalDamage(), aurEff->GetAmount()) / ticks; + SpellEffectValue damage = CalculatePct(eventInfo.GetDamageInfo()->GetOriginalDamage(), aurEff->GetAmount()) / ticks; caster->CastSpell(eventInfo.GetActionTarget(), SPELL_HUNTER_T29_2P_MARKSMANSHIP_DAMAGE, CastSpellExtraArgs(aurEff) .SetTriggeringSpell(eventInfo.GetProcSpell()) @@ -1444,7 +1444,7 @@ class spell_hun_wilderness_medicine : public AuraScript void OnPeriodic(AuraEffect const* aurEff) const { if (Unit* caster = GetCaster()) - if (roll_chance_i(_dispelChance)) + if (roll_chance_f(_dispelChance)) caster->CastSpell(GetTarget(), SPELL_HUNTER_WILDERNESS_MEDICINE_DISPEL, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff @@ -1456,7 +1456,7 @@ class spell_hun_wilderness_medicine : public AuraScript OnEffectPeriodic += AuraEffectPeriodicFn(spell_hun_wilderness_medicine::OnPeriodic, EFFECT_0, SPELL_AURA_OBS_MOD_HEALTH); } - int32 _dispelChance = 0; + SpellEffectValue _dispelChance = 0; }; void AddSC_hunter_spell_scripts() diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 5c627e283a570..5c23fb8c5e561 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -334,7 +334,7 @@ class spell_item_anger_capacitor : public SpellScriptLoader // 26400 - Arcane Shroud class spell_item_arcane_shroud : public AuraScript { - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { int32 diff = GetUnitOwner()->GetLevel() - 60; if (diff > 0) @@ -504,11 +504,11 @@ class spell_item_blessing_of_ancient_kings : public AuraScript if (!healInfo || !healInfo->GetHeal()) return; - int32 absorb = int32(CalculatePct(healInfo->GetHeal(), 15.0f)); + SpellEffectValue absorb = CalculatePct(healInfo->GetHeal(), 15.0f); if (AuraEffect* protEff = eventInfo.GetProcTarget()->GetAuraEffect(SPELL_PROTECTION_OF_ANCIENT_KINGS, EFFECT_0, eventInfo.GetActor()->GetGUID())) { // The shield can grow to a maximum size of 20,000 damage absorbtion - protEff->SetAmount(std::min(protEff->GetAmount() + absorb, 20000)); + protEff->SetAmount(std::min(protEff->GetAmount() + absorb, 20000.0)); // Refresh and return to prevent replacing the aura protEff->GetBase()->RefreshDuration(); @@ -1355,7 +1355,7 @@ class spell_item_crystal_spire_of_karabor : public AuraScript bool CheckProc(ProcEventInfo& eventInfo) { - int32 pct = GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(); + SpellEffectValue pct = GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(); if (HealInfo* healInfo = eventInfo.GetHealInfo()) if (Unit* healTarget = healInfo->GetTarget()) if (healTarget->GetHealth() - healInfo->GetEffectiveHeal() <= healTarget->CountPctFromMaxHealth(pct)) @@ -1692,7 +1692,7 @@ class spell_item_persistent_shield : public AuraScript { Unit* caster = eventInfo.GetActor(); Unit* target = eventInfo.GetProcTarget(); - int32 bp0 = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), 15); + SpellEffectValue bp0 = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), 15); // Scarab Brooch does not replace stronger shields if (AuraEffect const* shield = target->GetAuraEffect(SPELL_PERSISTENT_SHIELD_TRIGGERED, EFFECT_0, caster->GetGUID())) @@ -2331,7 +2331,7 @@ class spell_item_swift_hand_justice_dummy : public AuraScript // 28862 - The Eye of Diminution class spell_item_the_eye_of_diminution : public AuraScript { - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { int32 diff = GetUnitOwner()->GetLevel() - 60; if (diff > 0) @@ -3561,7 +3561,7 @@ class spell_item_trinket_stack : public SpellScriptLoader Aura* dummy = caster->GetAura(_stackSpell); // retrieve aura //dont do anything if it's not the right amount of stacks; - if (!dummy || dummy->GetStackAmount() < aurEff->GetAmount()) + if (!dummy || dummy->GetStackAmount() < aurEff->GetAmountAsInt()) return; // if right amount, remove the aura and cast real trigger @@ -3941,7 +3941,7 @@ class spell_item_artifical_stamina : public AuraScript return GetOwner()->GetTypeId() == TYPEID_PLAYER; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Item* artifact = GetOwner()->ToPlayer()->GetItemByGuid(GetAura()->GetCastItemGUID())) amount = GetEffectInfo(EFFECT_1).BasePoints * artifact->GetTotalPurchasedArtifactPowers() / 100; @@ -3965,7 +3965,7 @@ class spell_item_artifical_damage : public AuraScript return GetOwner()->GetTypeId() == TYPEID_PLAYER; } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Item* artifact = GetOwner()->ToPlayer()->GetItemByGuid(GetAura()->GetCastItemGUID())) amount = GetSpellInfo()->GetEffect(EFFECT_1).BasePoints * artifact->GetTotalPurchasedArtifactPowers() / 100; @@ -4548,7 +4548,7 @@ class spell_item_grips_of_forsaken_sanity : public AuraScript bool CheckHealth(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) { - return eventInfo.GetActor()->GetHealthPct() >= float(GetEffectInfo(EFFECT_1).CalcValue()); + return eventInfo.GetActor()->GetHealthPct() >= GetEffectInfo(EFFECT_1).CalcValue(); } void Register() override diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 6876418dac34a..c7b1656bf77a2 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -293,7 +293,7 @@ class spell_mage_arcane_explosion : public SpellScript if (!requiredTargets) return false; - return GetUnitTargetCountForEffect(EFFECT_1) >= requiredTargets->GetAmount() && roll_chance_i(triggerChance->GetAmount()); + return GetUnitTargetCountForEffect(EFFECT_1) >= requiredTargets->GetAmount() && roll_chance_f(triggerChance->GetAmount()); }(); if (!procTriggered) @@ -315,11 +315,11 @@ class spell_mage_blazing_barrier : public AuraScript return ValidateSpellInfo({ SPELL_MAGE_BLAZING_BARRIER_TRIGGER }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = false; if (Unit* caster = GetCaster()) - amount = int32(caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()) * 7.0f); + amount = caster->SpellBaseHealingBonusDone(GetSpellInfo()->GetSchoolMask()) * 7.0f; } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) @@ -647,22 +647,22 @@ class spell_mage_ethereal_blink_triggered : public SpellScript if (!reductionEffect) return; - Seconds reduction = Seconds(reductionEffect->GetAmount()) * targets.size(); + FloatSeconds reduction = FloatSeconds(reductionEffect->GetAmount()) * targets.size(); if (AuraEffect const* cap = GetCaster()->GetAuraEffect(SPELL_MAGE_ETHEREAL_BLINK, EFFECT_3)) - if (reduction > Seconds(cap->GetAmount())) - reduction = Seconds(cap->GetAmount()); + if (reduction > FloatSeconds(cap->GetAmount())) + reduction = FloatSeconds(cap->GetAmount()); if (reduction > 0s) { - GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_MAGE_BLINK, -reduction); - GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_MAGE_SHIMMER, -reduction); + GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_MAGE_BLINK, -duration_cast(reduction)); + GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_MAGE_SHIMMER, -duration_cast(reduction)); } } void TriggerSlow(SpellEffIndex /*effIndex*/) { - int32 effectivenessPct = 100; + SpellEffectValue effectivenessPct = 100; if (AuraEffect const* effectivenessEffect = GetCaster()->GetAuraEffect(SPELL_MAGE_ETHEREAL_BLINK, EFFECT_1)) effectivenessPct = effectivenessEffect->GetAmount(); @@ -688,7 +688,7 @@ class spell_mage_feel_the_burn : public AuraScript return ValidateSpellInfo({ SPELL_MAGE_FEEL_THE_BURN }); } - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { if (Unit* caster = GetCaster()) if (AuraEffect const* valueHolder = caster->GetAuraEffect(SPELL_MAGE_FEEL_THE_BURN, EFFECT_0)) @@ -733,13 +733,13 @@ class spell_mage_fingers_of_frost : public AuraScript bool CheckFrostboltProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { return eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_MAGE, flag128(0, 0x2000000, 0, 0)) - && roll_chance_i(aurEff->GetAmount()); + && roll_chance_f(aurEff->GetAmount()); } bool CheckFrozenOrbProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { return eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_MAGE, flag128(0, 0, 0x80, 0)) - && roll_chance_i(aurEff->GetAmount()); + && roll_chance_f(aurEff->GetAmount()); } void Trigger(AuraEffect* aurEff, ProcEventInfo& eventInfo) @@ -843,10 +843,10 @@ class spell_mage_flame_on : public AuraScript && ValidateSpellEffect({ { spellInfo->Id, EFFECT_2 } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = false; - amount = -GetPctOf(GetEffectInfo(EFFECT_2).CalcValue() * IN_MILLISECONDS, sSpellCategoryStore.AssertEntry(sSpellMgr->AssertSpellInfo(SPELL_MAGE_FIRE_BLAST, DIFFICULTY_NONE)->ChargeCategoryId)->ChargeRecoveryTime); + amount = -GetPctOf(GetEffectInfo(EFFECT_2).CalcValue() * int32(IN_MILLISECONDS), sSpellCategoryStore.AssertEntry(sSpellMgr->AssertSpellInfo(SPELL_MAGE_FIRE_BLAST, DIFFICULTY_NONE)->ChargeCategoryId)->ChargeRecoveryTime); } void Register() override @@ -946,7 +946,7 @@ class spell_mage_flurry : public SpellScript void EffectHit(SpellEffIndex /*effIndex*/) const { - GetCaster()->m_Events.AddEventAtOffset(new FlurryEvent(GetCaster(), GetHitUnit()->GetGUID(), GetSpell()->m_castId, GetEffectValue() - 1), randtime(300ms, 400ms)); + GetCaster()->m_Events.AddEventAtOffset(new FlurryEvent(GetCaster(), GetHitUnit()->GetGUID(), GetSpell()->m_castId, GetEffectValueAsInt() - 1), randtime(300ms, 400ms)); } void Register() override @@ -1156,7 +1156,7 @@ class spell_mage_ice_barrier : public AuraScript }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) const + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) const { canBeRecalculated = false; amount = CalculatePct(GetUnitOwner()->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue()); @@ -1243,7 +1243,7 @@ class spell_mage_ice_lance : public SpellScript if (Aura const* thermalVoid = caster->GetAura(SPELL_MAGE_THERMAL_VOID)) if (!thermalVoid->GetSpellInfo()->GetEffects().empty()) if (Aura* icyVeins = caster->GetAura(SPELL_MAGE_ICY_VEINS)) - icyVeins->SetDuration(icyVeins->GetDuration() + thermalVoid->GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(caster) * IN_MILLISECONDS); + icyVeins->SetDuration(icyVeins->GetDuration() + thermalVoid->GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt(caster) * IN_MILLISECONDS); // Chain Reaction if (caster->HasAura(SPELL_MAGE_CHAIN_REACTION_DUMMY)) @@ -1307,12 +1307,12 @@ class spell_mage_ignite : public AuraScript PreventDefaultAction(); SpellEffectInfo const& igniteDot = sSpellMgr->AssertSpellInfo(SPELL_MAGE_IGNITE, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 pct = aurEff->GetAmount(); + SpellEffectValue pct = aurEff->GetAmount(); if (spell_mage_hot_streak_ignite_marker::IsActive(eventInfo.GetProcSpell())) pct *= 2; - int32 amount = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), pct) / igniteDot.GetPeriodicTickCount()); + SpellEffectValue amount = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), pct) / igniteDot.GetPeriodicTickCount(); CastSpellExtraArgs args(aurEff); args.AddSpellMod(SPELLVALUE_BASE_POINT0, amount); @@ -1379,7 +1379,7 @@ class spell_mage_improved_combustion : public AuraScript return GetUnitOwner()->HasAura(SPELL_MAGE_IMPROVED_COMBUSTION); } - void CalcAmount(AuraEffect const* /*aurEff*/, int32& amount, bool const& /*canBeRecalculated*/) const + void CalcAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool const& /*canBeRecalculated*/) const { if (AuraEffect const* amountHolder = GetEffect(EFFECT_2)) { @@ -1665,11 +1665,11 @@ class spell_mage_prismatic_barrier : public AuraScript return ValidateSpellEffect({ { spellInfo->Id, EFFECT_5 } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = false; if (Unit* caster = GetCaster()) - amount = int32(CalculatePct(caster->GetMaxHealth(), GetEffectInfo(EFFECT_5).CalcValue(caster))); + amount = CalculatePct(caster->GetMaxHealth(), GetEffectInfo(EFFECT_5).CalcValue(caster)); } void Register() override @@ -1978,7 +1978,7 @@ class spell_mage_supernova : public SpellScript { if (GetExplTargetUnit() == GetHitUnit()) { - uint32 damage = GetHitDamage(); + int32 damage = GetHitDamage(); AddPct(damage, GetEffectInfo(EFFECT_0).CalcValue()); SetHitDamage(damage); } @@ -2002,7 +2002,7 @@ class spell_mage_tempest_barrier : public AuraScript { PreventDefaultAction(); Unit* target = GetTarget(); - int32 amount = CalculatePct(target->GetMaxHealth(), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(target->GetMaxHealth(), aurEff->GetAmount()); target->CastSpell(target, SPELL_MAGE_TEMPEST_BARRIER_ABSORB, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff, @@ -2031,7 +2031,7 @@ class spell_mage_touch_of_the_magi_aura : public AuraScript { if (damageInfo->GetAttacker() == GetCaster() && damageInfo->GetVictim() == GetTarget()) { - uint32 extra = CalculatePct(damageInfo->GetDamage(), 25); + SpellEffectValue extra = CalculatePct(damageInfo->GetDamage(), 25); if (extra > 0) aurEff->ChangeAmount(aurEff->GetAmount() + extra); } @@ -2040,7 +2040,7 @@ class spell_mage_touch_of_the_magi_aura : public AuraScript void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { - int32 amount = aurEff->GetAmount(); + SpellEffectValue amount = aurEff->GetAmount(); if (!amount || GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) return; @@ -2087,7 +2087,7 @@ class spell_mage_wildfire_crit : public AuraScript return ValidateSpellEffect({ { SPELL_MAGE_WILDFIRE_TALENT, _effIndex } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) const + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) const { Unit* caster = GetCaster(); if (!caster) diff --git a/src/server/scripts/Spells/spell_monk.cpp b/src/server/scripts/Spells/spell_monk.cpp index a29af634d3197..c6a6f76fc0ed0 100644 --- a/src/server/scripts/Spells/spell_monk.cpp +++ b/src/server/scripts/Spells/spell_monk.cpp @@ -85,7 +85,7 @@ class spell_monk_burst_of_life : public AuraScript void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) const { AuraRemoveMode removeMode = GetTargetApplication()->GetRemoveMode(); - if (removeMode != AURA_REMOVE_BY_EXPIRE && (removeMode != AURA_REMOVE_BY_ENEMY_SPELL || aurEff->GetAmount())) + if (removeMode != AURA_REMOVE_BY_EXPIRE && (removeMode != AURA_REMOVE_BY_ENEMY_SPELL || aurEff->GetAmountAsInt())) return; Unit* caster = GetCaster(); @@ -98,7 +98,7 @@ class spell_monk_burst_of_life : public AuraScript caster->CastSpell(GetTarget(), SPELL_MONK_BURST_OF_LIFE_HEAL, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, - .SpellValueOverrides = { { SPELLVALUE_MAX_TARGETS, burstOfLife->GetAmount() } } + .SpellValueOverrides = { { SPELLVALUE_MAX_TARGETS, burstOfLife->GetAmountAsInt() } } }); } @@ -223,7 +223,7 @@ class spell_monk_life_cocoon : public SpellScript void CalculateAbsorb(SpellEffIndex /*effIndex*/) { - int32 absorb = GetCaster()->CountPctFromMaxHealth(GetEffectValue()); + SpellEffectValue absorb = GetCaster()->CountPctFromMaxHealth(GetEffectValue()); if (Player* player = GetCaster()->ToPlayer()) AddPct(absorb, player->GetRatingBonusValue(CR_VERSATILITY_HEALING_DONE)); @@ -285,7 +285,7 @@ class spell_monk_open_palm_strikes : public AuraScript bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*procInfo*/) { AuraEffect const* talent = GetTarget()->GetAuraEffect(SPELL_MONK_OPEN_PALM_STRIKES_TALENT, EFFECT_1); - return talent && roll_chance_i(talent->GetAmount()); + return talent && roll_chance_f(talent->GetAmount()); } void Register() override @@ -465,14 +465,14 @@ class spell_monk_roll : public SpellScript // 109131 - Roll (backward) class spell_monk_roll_aura : public AuraScript { - void CalcMovementAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalcMovementAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { - amount += 100; + amount += 100.0; } - void CalcImmunityAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalcImmunityAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { - amount -= 100; + amount -= 100.0; } void ChangeRunBackSpeed(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -596,7 +596,7 @@ class spell_monk_stagger : public AuraScript if (!effect) return; - Absorb(dmgInfo, float(effect->GetAmount()) / 100.0f); + Absorb(dmgInfo, effect->GetAmount() / 100.0); } void Absorb(DamageInfo& dmgInfo, float multiplier) @@ -639,7 +639,7 @@ class spell_monk_stagger : public AuraScript } private: - void AddAndRefreshStagger(float amount) + void AddAndRefreshStagger(float amount) const { Unit* target = GetTarget(); if (Aura* auraStagger = FindExistingStaggerEffect(target)) @@ -648,7 +648,7 @@ class spell_monk_stagger : public AuraScript if (!effStaggerRemaining) return; - float newAmount = effStaggerRemaining->GetAmount() + amount; + SpellEffectValue newAmount = effStaggerRemaining->GetAmount() + amount; uint32 spellId = GetStaggerSpellId(target, newAmount); if (spellId == effStaggerRemaining->GetSpellInfo()->Id) { @@ -666,18 +666,18 @@ class spell_monk_stagger : public AuraScript AddNewStagger(target, GetStaggerSpellId(target, amount), amount); } - uint32 GetStaggerSpellId(Unit* unit, float amount) + static uint32 GetStaggerSpellId(Unit const* unit, SpellEffectValue amount) { - const float StaggerHeavy = 0.6f; - const float StaggerModerate = 0.3f; + constexpr double StaggerHeavy = 0.6; + constexpr double StaggerModerate = 0.3; - float staggerPct = amount / float(unit->GetMaxHealth()); + double staggerPct = amount / SpellEffectValue(unit->GetMaxHealth()); return (staggerPct >= StaggerHeavy) ? SPELL_MONK_STAGGER_HEAVY : (staggerPct >= StaggerModerate) ? SPELL_MONK_STAGGER_MODERATE : SPELL_MONK_STAGGER_LIGHT; } - void AddNewStagger(Unit* unit, uint32 staggerSpellId, float staggerAmount) + static void AddNewStagger(Unit* unit, uint32 staggerSpellId, SpellEffectValue staggerAmount) { // We only set the total stagger amount. The amount per tick will be set by the stagger spell script unit->CastSpell(unit, staggerSpellId, CastSpellExtraArgs(SPELLVALUE_BASE_POINT1, staggerAmount).SetTriggerFlags(TRIGGERED_FULL_MASK)); @@ -697,11 +697,11 @@ class spell_monk_stagger_damage_aura : public AuraScript // Update our light/medium/heavy stagger with the correct stagger amount left if (Aura* auraStagger = FindExistingStaggerEffect(GetTarget())) { - if (AuraEffect* auraEff = auraStagger->GetEffect(AuraStaggerEffectTotal)) + if (AuraEffect* totalEffect = auraStagger->GetEffect(AuraStaggerEffectTotal)) { - float total = float(auraEff->GetAmount()); - float tickDamage = float(aurEff->GetAmount()); - auraEff->ChangeAmount(total - tickDamage); + SpellEffectValue total = totalEffect->GetAmount(); + SpellEffectValue tickDamage = aurEff->GetAmount(); + totalEffect->ChangeAmount(total - tickDamage); } } } @@ -730,8 +730,8 @@ class spell_monk_stagger_debuff_aura : public AuraScript void OnReapply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) { // Calculate damage per tick - float total = float(aurEff->GetAmount()); - float perTick = total * _period / float(GetDuration()); // should be same as GetMaxDuration() TODO: verify + SpellEffectValue total = aurEff->GetAmount(); + SpellEffectValue perTick = total * _period / float(GetDuration()); // should be same as GetMaxDuration() TODO: verify // Set amount on effect for tooltip AuraEffect* effInfo = GetAura()->GetEffect(AuraStaggerEffectTick); @@ -760,7 +760,7 @@ class spell_monk_stagger_debuff_aura : public AuraScript private: float _period = 0.0f; - void CastOrChangeTickDamage(float tickDamage) + void CastOrChangeTickDamage(SpellEffectValue tickDamage) { Unit* unit = GetTarget(); Aura* auraDamage = unit->GetAura(SPELL_MONK_STAGGER_DAMAGE_AURA); diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 07568cb5570ca..58685b5081253 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -179,7 +179,7 @@ class spell_pal_ardent_defender : public AuraScript { PreventDefaultAction(); - int32 targetHealthPercent = GetEffectInfo(EFFECT_1).CalcValue(GetTarget()); + SpellEffectValue targetHealthPercent = GetEffectInfo(EFFECT_1).CalcValue(GetTarget()); uint64 targetHealth = int32(GetTarget()->CountPctFromMaxHealth(targetHealthPercent)); if (GetTarget()->HealthBelowPct(targetHealthPercent)) { @@ -215,7 +215,7 @@ class spell_pal_art_of_war : public AuraScript bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) @@ -297,14 +297,14 @@ class spell_pal_awakening : public AuraScript bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) { Milliseconds extraDuration = 0ms; if (AuraEffect const* durationEffect = GetEffect(EFFECT_1)) - extraDuration = Seconds(durationEffect->GetAmount()); + extraDuration = duration_cast(FloatSeconds(durationEffect->GetAmount())); if (Aura* avengingWrath = GetTarget()->GetAura(SPELL_PALADIN_AVENGING_WRATH)) { @@ -479,7 +479,7 @@ class spell_pal_crusader_might : public AuraScript void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) { - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_HOLY_SHOCK, Milliseconds(aurEff->GetAmount())); + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_HOLY_SHOCK, Milliseconds(aurEff->GetAmountAsInt())); } void Register() override @@ -558,7 +558,7 @@ class spell_pal_divine_purpose : public AuraScript if (!procSpell->HasPowerTypeCost(POWER_HOLY_POWER)) return false; - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) @@ -779,7 +779,7 @@ class spell_pal_execution_sentence_aura : public AuraScript void AfterRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) const { - int32 amount = aurEff->GetAmount(); + SpellEffectValue amount = aurEff->GetAmount(); if (!amount || GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) return; @@ -827,7 +827,7 @@ class spell_pal_final_verdict : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) const { - if (!roll_chance_i(GetEffectValue())) + if (!roll_chance_f(GetEffectValue())) return; Unit* caster = GetCaster(); @@ -1382,7 +1382,7 @@ class spell_pal_light_s_beacon : public AuraScript if (!healInfo || !healInfo->GetHeal()) return; - uint32 heal = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()); + SpellEffectValue heal = CalculatePct(healInfo->GetHeal(), aurEff->GetAmount()); Unit::AuraList const& auras = GetCaster()->GetSingleCastAuras(); for (Unit::AuraList::const_iterator itr = auras.begin(); itr != auras.end(); ++itr) @@ -1489,7 +1489,7 @@ class spell_pal_righteous_protector : public AuraScript void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) { - int32 value = aurEff->GetAmount() * 100 * _baseHolyPowerCost->Amount; + int32 value = aurEff->GetAmountAsInt() * 100 * _baseHolyPowerCost->Amount; GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_AVENGING_WRATH, Milliseconds(-value)); GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PALADIN_GUARDIAN_OF_ANCIENT_KINGS, Milliseconds(-value)); @@ -1567,7 +1567,7 @@ class spell_pal_shield_of_vengeance : public AuraScript return ValidateSpellInfo({ SPELL_PALADIN_SHIELD_OF_VENGEANCE_DAMAGE }) && ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { amount = CalculatePct(GetUnitOwner()->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue()); if (Player const* player = GetUnitOwner()->ToPlayer()) @@ -1588,7 +1588,7 @@ class spell_pal_shield_of_vengeance : public AuraScript OnEffectRemove += AuraEffectApplyFn(spell_pal_shield_of_vengeance::HandleRemove, EFFECT_0, SPELL_AURA_SCHOOL_ABSORB, AURA_EFFECT_HANDLE_REAL); } - int32 _initialAmount = 0; + SpellEffectValue _initialAmount = 0; }; // 469304 - Steed of Liberty @@ -1605,7 +1605,7 @@ class spell_pal_steed_of_liberty : public AuraScript target->CastSpell(target, SPELL_PALADIN_BLESSING_OF_FREEDOM, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff, - .SpellValueOverrides = { { SPELLVALUE_DURATION, aurEff->GetAmount() } } + .SpellValueOverrides = { { SPELLVALUE_DURATION, aurEff->GetAmountAsInt() } } }); } @@ -1709,7 +1709,7 @@ class spell_pal_t8_2p_bonus : public AuraScript Unit* target = eventInfo.GetProcTarget(); SpellEffectInfo const& hotEffect = sSpellMgr->AssertSpellInfo(SPELL_PALADIN_HOLY_MENDING, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 amount = CalculatePct(static_cast(healInfo->GetHeal()), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(static_cast(healInfo->GetHeal()), aurEff->GetAmount()); amount /= hotEffect.GetPeriodicTickCount(); @@ -1739,7 +1739,7 @@ class spell_pal_t30_2p_protection_bonus : public AuraScript Unit* caster = procInfo.GetActor(); uint32 ticks = sSpellMgr->AssertSpellInfo(SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE, DIFFICULTY_NONE)->GetEffect(EFFECT_0).GetPeriodicTickCount(); - uint32 damage = CalculatePct(procInfo.GetDamageInfo()->GetOriginalDamage(), aurEff->GetAmount()) / ticks; + SpellEffectValue damage = CalculatePct(procInfo.GetDamageInfo()->GetOriginalDamage(), aurEff->GetAmount()) / ticks; caster->CastSpell(procInfo.GetActionTarget(), SPELL_PALADIN_T30_2P_HEARTFIRE_DAMAGE, CastSpellExtraArgs(aurEff) .SetTriggeringSpell(procInfo.GetProcSpell()) @@ -1815,7 +1815,7 @@ class spell_pal_zeal : public AuraScript void HandleEffectProc(AuraEffect* aurEff, ProcEventInfo& /*procInfo*/) { Unit* target = GetTarget(); - target->CastSpell(target, SPELL_PALADIN_ZEAL_AURA, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, aurEff->GetAmount())); + target->CastSpell(target, SPELL_PALADIN_ZEAL_AURA, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, aurEff->GetAmountAsInt())); PreventDefaultAction(); } diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index c7d5ebb7ffaa0..179a0703679ef 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -100,7 +100,7 @@ class spell_gen_pet_calculate : public SpellScriptLoader return true; } - void CalculateAmountCritSpell(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountCritSpell(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -113,11 +113,11 @@ class spell_gen_pet_calculate : public SpellScriptLoader // Increase crit spell from spell crit ratings CritSpell += owner->GetRatingBonusValue(CR_CRIT_SPELL); - amount += int32(CritSpell); + amount += CritSpell; } } - void CalculateAmountCritMelee(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountCritMelee(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -130,11 +130,11 @@ class spell_gen_pet_calculate : public SpellScriptLoader // Increase crit melee from melee crit ratings CritMelee += owner->GetRatingBonusValue(CR_CRIT_MELEE); - amount += int32(CritMelee); + amount += CritMelee; } } - void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -145,11 +145,11 @@ class spell_gen_pet_calculate : public SpellScriptLoader // Increase hit melee from meele hit ratings HitMelee += owner->GetRatingBonusValue(CR_HIT_MELEE); - amount += int32(HitMelee); + amount += HitMelee; } } - void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -160,11 +160,11 @@ class spell_gen_pet_calculate : public SpellScriptLoader // Increase hit spell from spell hit ratings HitSpell += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(HitSpell); + amount += HitSpell; } } - void CalculateAmountExpertise(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountExpertise(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -175,7 +175,7 @@ class spell_gen_pet_calculate : public SpellScriptLoader // Increase Expertise from Expertise ratings Expertise += owner->GetRatingBonusValue(CR_EXPERTISE); - amount += int32(Expertise); + amount += Expertise; } } @@ -235,7 +235,7 @@ class spell_warl_pet_scaling_01 : public SpellScriptLoader return true; } - void CalculateStaminaAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateStaminaAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -289,7 +289,7 @@ class spell_warl_pet_scaling_01 : public SpellScriptLoader } } - void CalculateAttackPowerAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAttackPowerAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -317,7 +317,7 @@ class spell_warl_pet_scaling_01 : public SpellScriptLoader } } - void CalculateDamageDoneAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateDamageDoneAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -376,7 +376,7 @@ class spell_warl_pet_scaling_02 : public SpellScriptLoader return true; } - void CalculateIntellectAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateIntellectAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -427,7 +427,7 @@ class spell_warl_pet_scaling_02 : public SpellScriptLoader } } - void CalculateArmorAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateArmorAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -438,7 +438,7 @@ class spell_warl_pet_scaling_02 : public SpellScriptLoader } } - void CalculateFireResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateFireResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -482,7 +482,7 @@ class spell_warl_pet_scaling_03 : public SpellScriptLoader return true; } - void CalculateFrostResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateFrostResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -493,7 +493,7 @@ class spell_warl_pet_scaling_03 : public SpellScriptLoader } } - void CalculateArcaneResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateArcaneResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -504,7 +504,7 @@ class spell_warl_pet_scaling_03 : public SpellScriptLoader } } - void CalculateNatureResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateNatureResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -543,7 +543,7 @@ class spell_warl_pet_scaling_04 : public SpellScriptLoader return true; } - void CalculateShadowResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateShadowResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -580,7 +580,7 @@ class spell_warl_pet_scaling_05 : public SpellScriptLoader return true; } - void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -591,11 +591,11 @@ class spell_warl_pet_scaling_05 : public SpellScriptLoader // Increase hit spell from spell hit ratings HitMelee += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(HitMelee); + amount += HitMelee; } } - void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -606,11 +606,11 @@ class spell_warl_pet_scaling_05 : public SpellScriptLoader // Increase hit spell from spell hit ratings HitSpell += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(HitSpell); + amount += HitSpell; } } - void CalculateAmountExpertise(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountExpertise(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -621,7 +621,7 @@ class spell_warl_pet_scaling_05 : public SpellScriptLoader // Increase hit spell from spell hit ratings Expertise += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(Expertise); + amount += Expertise; } } @@ -653,7 +653,7 @@ class spell_warl_pet_passive : public SpellScriptLoader return true; } - void CalculateAmountCritSpell(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountCritSpell(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -673,7 +673,7 @@ class spell_warl_pet_passive : public SpellScriptLoader } } - void CalculateAmountCritMelee(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountCritMelee(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -720,7 +720,7 @@ class spell_warl_pet_passive_damage_done : public SpellScriptLoader return true; } - void CalculateAmountDamageDone(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountDamageDone(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -769,7 +769,7 @@ class spell_warl_pet_passive_voidwalker : public SpellScriptLoader return true; } - void CalculateAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -804,7 +804,7 @@ class spell_sha_pet_scaling_04 : public SpellScriptLoader return true; } - void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -815,11 +815,11 @@ class spell_sha_pet_scaling_04 : public SpellScriptLoader // Increase hit melee from meele hit ratings HitMelee += owner->GetRatingBonusValue(CR_HIT_MELEE); - amount += int32(HitMelee); + amount += HitMelee; } } - void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Player* owner = GetCaster()->GetOwner()->ToPlayer()) { @@ -830,7 +830,7 @@ class spell_sha_pet_scaling_04 : public SpellScriptLoader // Increase hit spell from spell hit ratings HitSpell += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(HitSpell); + amount += HitSpell; } } @@ -861,7 +861,7 @@ class spell_hun_pet_scaling_01 : public SpellScriptLoader } private: - void CalculateStaminaAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateStaminaAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) if (pet->IsPet()) @@ -897,7 +897,7 @@ class spell_hun_pet_scaling_01 : public SpellScriptLoader _tempHealth = pet->GetHealth(); } - void CalculateAttackPowerAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAttackPowerAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -927,7 +927,7 @@ class spell_hun_pet_scaling_01 : public SpellScriptLoader } } - void CalculateDamageDoneAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateDamageDoneAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -990,7 +990,7 @@ class spell_hun_pet_scaling_02 : public SpellScriptLoader return true; } - void CalculateFrostResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateFrostResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1006,7 +1006,7 @@ class spell_hun_pet_scaling_02 : public SpellScriptLoader } } - void CalculateFireResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateFireResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1022,7 +1022,7 @@ class spell_hun_pet_scaling_02 : public SpellScriptLoader } } - void CalculateNatureResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateNatureResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1066,7 +1066,7 @@ class spell_hun_pet_scaling_03 : public SpellScriptLoader return true; } - void CalculateShadowResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateShadowResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1082,7 +1082,7 @@ class spell_hun_pet_scaling_03 : public SpellScriptLoader } } - void CalculateArcaneResistanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateArcaneResistanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1098,7 +1098,7 @@ class spell_hun_pet_scaling_03 : public SpellScriptLoader } } - void CalculateArmorAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateArmorAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1142,7 +1142,7 @@ class spell_hun_pet_scaling_04 : public SpellScriptLoader return true; } - void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1155,11 +1155,11 @@ class spell_hun_pet_scaling_04 : public SpellScriptLoader // Increase hit melee from meele hit ratings HitMelee += owner->GetRatingBonusValue(CR_HIT_MELEE); - amount += int32(HitMelee); + amount += HitMelee; } } - void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1172,11 +1172,11 @@ class spell_hun_pet_scaling_04 : public SpellScriptLoader // Increase hit spell from spell hit ratings HitSpell += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(HitSpell); + amount += HitSpell; } } - void CalculateAmountExpertise(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountExpertise(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1189,7 +1189,7 @@ class spell_hun_pet_scaling_04 : public SpellScriptLoader // Increase Expertise from Expertise ratings Expertise += owner->GetRatingBonusValue(CR_EXPERTISE); - amount += int32(Expertise); + amount += Expertise; } } @@ -1221,7 +1221,7 @@ class spell_hun_pet_passive_crit : public SpellScriptLoader return true; } - void CalculateAmountCritSpell(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountCritSpell(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1240,7 +1240,7 @@ class spell_hun_pet_passive_crit : public SpellScriptLoader } } - void CalculateAmountCritMelee(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountCritMelee(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1286,7 +1286,7 @@ class spell_hun_pet_passive_damage_done : public SpellScriptLoader return true; } - void CalculateAmountDamageDone(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountDamageDone(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1324,7 +1324,7 @@ class spell_hun_animal_handler : public SpellScriptLoader return true; } - void CalculateAmountDamageDone(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountDamageDone(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1363,7 +1363,7 @@ class spell_dk_avoidance_passive : public SpellScriptLoader return true; } - void CalculateAvoidanceAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAvoidanceAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1405,7 +1405,7 @@ class spell_dk_pet_scaling_01 : public SpellScriptLoader return true; } - void CalculateStaminaAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateStaminaAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1433,7 +1433,7 @@ class spell_dk_pet_scaling_01 : public SpellScriptLoader _tempHealth = pet->GetHealth(); } - void CalculateStrengthAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateStrengthAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1480,7 +1480,7 @@ class spell_dk_pet_scaling_02 : public SpellScriptLoader return true; } - void CalculateAmountMeleeHaste(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHaste(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1491,7 +1491,7 @@ class spell_dk_pet_scaling_02 : public SpellScriptLoader // Increase hit from SPELL_AURA_MOD_HIT_CHANCE HasteMelee += (1-owner->m_modAttackSpeedPct[BASE_ATTACK])*100; - amount += int32(HasteMelee); + amount += HasteMelee; } } @@ -1521,7 +1521,7 @@ class spell_dk_pet_scaling_03 : public SpellScriptLoader return true; } - void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1534,11 +1534,11 @@ class spell_dk_pet_scaling_03 : public SpellScriptLoader // Increase hit melee from meele hit ratings HitMelee += owner->GetRatingBonusValue(CR_HIT_MELEE); - amount += int32(HitMelee); + amount += HitMelee; } } - void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountSpellHit(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1551,7 +1551,7 @@ class spell_dk_pet_scaling_03 : public SpellScriptLoader // Increase hit spell from spell hit ratings HitSpell += owner->GetRatingBonusValue(CR_HIT_SPELL); - amount += int32(HitSpell); + amount += HitSpell; } } @@ -1582,7 +1582,7 @@ class spell_dk_rune_weapon_scaling_02 : public SpellScriptLoader return true; } - void CalculateDamageDoneAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateDamageDoneAmount(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) { @@ -1597,7 +1597,7 @@ class spell_dk_rune_weapon_scaling_02 : public SpellScriptLoader } } - void CalculateAmountMeleeHaste(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) + void CalculateAmountMeleeHaste(AuraEffect const* /* aurEff */, SpellEffectValue& amount, bool& /*canBeRecalculated*/) { if (!GetCaster() || !GetCaster()->GetOwner()) return; @@ -1608,7 +1608,7 @@ class spell_dk_rune_weapon_scaling_02 : public SpellScriptLoader // Increase hit from SPELL_AURA_MOD_HIT_CHANCE HasteMelee += (1-owner->m_modAttackSpeedPct[BASE_ATTACK])*100; - amount += int32(HasteMelee); + amount += HasteMelee; } } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 36731e11a4ccc..2ee0f40046890 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -353,7 +353,7 @@ class spell_pri_angelic_bulwark : public AuraScript if (!caster) return; - int32 absorb = caster->CountPctFromMaxHealth(GetEffect(EFFECT_1)->GetAmount()); + SpellEffectValue absorb = caster->CountPctFromMaxHealth(GetEffect(EFFECT_1)->GetAmount()); caster->CastSpell(caster, SPELL_PRIEST_ANGELIC_BULWARK_BUFF, CastSpellExtraArgsInit { @@ -447,7 +447,7 @@ class spell_pri_answered_prayers : public AuraScript { Milliseconds extraDuration = 0ms; if (AuraEffect const* durationEffect = GetEffect(EFFECT_1)) - extraDuration = Seconds(durationEffect->GetAmount()); + extraDuration = duration_cast(FloatSeconds(durationEffect->GetAmount())); Unit* target = eventInfo.GetActor(); @@ -462,7 +462,7 @@ class spell_pri_answered_prayers : public AuraScript answeredPrayers->ModStackAmount(1); // Note: if current stacks match max. stacks, trigger Apotheosis. - if (answeredPrayers->GetStackAmount() != aurEff->GetAmount()) + if (answeredPrayers->GetStackAmount() != aurEff->GetAmountAsInt()) return; answeredPrayers->Remove(); @@ -630,11 +630,11 @@ class spell_pri_atonement : public AuraScript void UpdateSinsOfTheManyValue() const { // Note: the damage dimish starts at the 6th application as of 10.0.5. - constexpr std::array damageByStack = { 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 17.5f, 15.0f, 12.5f, 10.0f, 7.5f, 5.5f, 4.0f, 2.5f, 2.0f, 1.5f, 1.25f, 1.0f, 0.75f, 0.63f, 0.5f }; + static constexpr std::array DamageByStack = { 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 17.5f, 15.0f, 12.5f, 10.0f, 7.5f, 5.5f, 4.0f, 2.5f, 2.0f, 1.5f, 1.25f, 1.0f, 0.75f, 0.63f, 0.5f }; for (SpellEffIndex effectIndex : { EFFECT_0, EFFECT_1, EFFECT_2 }) if (AuraEffect* sinOfTheMany = GetUnitOwner()->GetAuraEffect(SPELL_PRIEST_SINS_OF_THE_MANY, effectIndex)) - sinOfTheMany->ChangeAmount(damageByStack[std::min(_appliedAtonements.size(), damageByStack.size() - 1)]); + sinOfTheMany->ChangeAmount(DamageByStack[std::min(_appliedAtonements.size(), DamageByStack.size() - 1)]); } void UpdateTrinityEffect() const @@ -714,7 +714,7 @@ class spell_pri_atonement_effect : public SpellScript case SPELL_PRIEST_POWER_WORD_SHIELD: if (AuraEffect const* indemnity = caster->GetAuraEffect(SPELL_PRIEST_INDEMNITY, EFFECT_0)) args.AddSpellMod(SPELLVALUE_DURATION, - (Seconds(indemnity->GetAmount()) + (FloatSeconds(indemnity->GetAmount()) + Milliseconds(Aura::CalcMaxDuration(sSpellMgr->AssertSpellInfo(_effectSpellId, GetCastDifficulty()), caster, &GetSpell()->GetPowerCost()))).count()); break; @@ -838,7 +838,7 @@ class spell_pri_benediction : public SpellScript void HandleEffectHitTarget(SpellEffIndex /*effIndex*/) const { if (AuraEffect const* benediction = GetCaster()->GetAuraEffect(SPELL_PRIEST_BENEDICTION, EFFECT_0)) - if (roll_chance_i(benediction->GetAmount())) + if (roll_chance_f(benediction->GetAmount())) GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_RENEW, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS); } @@ -869,7 +869,7 @@ class spell_pri_binding_heals : public AuraScript .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = eventInfo.GetProcSpell(), .TriggeringAura = aurEff, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount())) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, SpellEffectValue(CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount())) } } }); } @@ -924,7 +924,7 @@ class spell_pri_burning_vehemence : public AuraScript .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = eventInfo.GetProcSpell(), .TriggeringAura = aurEff, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount())) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, SpellEffectValue(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount())) } } }); } @@ -945,7 +945,7 @@ class spell_pri_circle_of_healing : public SpellScript void FilterTargets(std::list& targets) const { // Note: we must remove one since target is always chosen. - uint32 const maxTargets = uint32(GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(GetCaster()) - 1); + uint32 const maxTargets = uint32(GetSpellInfo()->GetEffect(EFFECT_1).CalcValueAsInt(GetCaster()) - 1); Trinity::SelectRandomInjuredTargets(targets, maxTargets, true); @@ -1024,7 +1024,7 @@ class spell_pri_dark_indulgence : public SpellScript if (!aurEff) return; - if (roll_chance_i(aurEff->GetAmount())) + if (roll_chance_f(aurEff->GetAmount())) GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_POWER_OF_THE_DARK_SIDE, true); } @@ -1040,7 +1040,7 @@ class spell_pri_deaths_torment : public AuraScript public: struct Data { - int32 DamagePct = 0; + SpellEffectValue DamagePct = 0; int32 BacklashPct = 10; // for some weird reason its 10% for backlash, not 15% int32 EnergizePct = 25; // for some weird reason its 25% for energize, not 15% }; @@ -1061,8 +1061,8 @@ class spell_pri_deaths_torment : public AuraScript Unit* caster = eventInfo.GetActor(); Unit* target = eventInfo.GetActionTarget(); - int32 maxHits = GetEffect(EFFECT_0)->GetAmount(); - int32 effectiveness = GetEffect(EFFECT_1)->GetAmount(); + int32 maxHits = GetEffect(EFFECT_0)->GetAmountAsInt(); + SpellEffectValue effectiveness = GetEffect(EFFECT_1)->GetAmount(); for (int32 i = 1; i <= maxHits; ++i) { @@ -1108,8 +1108,8 @@ class spell_pri_dispersing_light : public AuraScript .TriggeringAura = aurEff, .SpellValueOverrides = { - { SPELLVALUE_BASE_POINT0, int32(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount())) }, - { SPELLVALUE_MAX_TARGETS, GetEffectInfo(EFFECT_1).CalcValue(caster) } + { SPELLVALUE_BASE_POINT0, SpellEffectValue(CalculatePct(healInfo->GetHeal(), aurEff->GetAmount())) }, + { SPELLVALUE_MAX_TARGETS, GetEffectInfo(EFFECT_1).CalcValueAsInt(caster) } }, .CustomArg = TriggerArgs{ .TargetToExclude = target->GetGUID() } }); @@ -1357,7 +1357,7 @@ class spell_pri_divine_service : public SpellScript { if (AuraEffect const* divineServiceEffect = GetCaster()->GetAuraEffect(SPELL_PRIEST_DIVINE_SERVICE, EFFECT_0)) if (Aura const* prayerOfMending = victim->GetAura(SPELL_PRIEST_PRAYER_OF_MENDING_AURA, GetCaster()->GetGUID())) - AddPct(pctMod, int32(divineServiceEffect->GetAmount() * prayerOfMending->GetStackAmount())); + AddPct(pctMod, divineServiceEffect->GetAmount() * prayerOfMending->GetStackAmount()); } void Register() override @@ -1531,7 +1531,7 @@ class spell_pri_divine_word : public AuraScript .TriggeringSpell = procInfo.GetProcSpell() }); spell_pri_holy_words_base::ModifyCooldown(caster, procInfo.GetSpellInfo(), - Seconds(-GetSpellInfo()->GetEffect(EFFECT_1).CalcValue(caster))); + Seconds(-GetSpellInfo()->GetEffect(EFFECT_1).CalcValueAsInt(caster))); break; case SPELL_PRIEST_HOLY_WORD_SANCTIFY: GetCaster()->CastSpell(*procInfo.GetProcSpell()->m_targets.GetDst(), SPELL_PRIEST_DIVINE_WORD_SANCTUARY_AREATRIGGER, CastSpellExtraArgsInit{ @@ -1587,7 +1587,7 @@ class spell_pri_divine_word_sanctuary_heal : public SpellScript void FilterTargets(std::list& targets) const { - int32 maxTargets = GetEffectInfo(EFFECT_1).CalcValue(GetCaster()); + int32 maxTargets = GetEffectInfo(EFFECT_1).CalcValueAsInt(GetCaster()); Trinity::SelectRandomInjuredTargets(targets, maxTargets, true); } @@ -1643,7 +1643,7 @@ class spell_pri_empowered_renew : public AuraScript void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const { spell_pri_holy_words_base::ModifyCooldown(eventInfo.GetActor(), sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HOLY_WORD_SANCTIFY, GetCastDifficulty()), - Milliseconds(-aurEff->GetAmount())); + Milliseconds(-aurEff->GetAmountAsInt())); } void Register() override @@ -1691,7 +1691,7 @@ class spell_pri_empyreal_blaze : public AuraScript .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = eventInfo.GetProcSpell(), .TriggeringAura = aurEff, - .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, aurEff->GetAmount() } } + .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, aurEff->GetAmountAsInt() } } }); } @@ -1933,7 +1933,7 @@ class spell_pri_epiphany : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleOnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) const @@ -1983,7 +1983,7 @@ class spell_pri_eternal_sanctity : public AuraScript static void HandleEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) { if (Aura* apotheosisAura = eventInfo.GetActor()->GetAura(SPELL_PRIEST_APOTHEOSIS)) - apotheosisAura->SetDuration(apotheosisAura->GetDuration() + aurEff->GetAmount()); + apotheosisAura->SetDuration(apotheosisAura->GetDuration() + aurEff->GetAmountAsInt()); } void Register() override @@ -1999,7 +1999,7 @@ class spell_pri_evangelism : public SpellScript public: struct TriggerArgs { - int32 EffectivenessPct = 100; + SpellEffectValue EffectivenessPct = 100.0; }; bool Validate(SpellInfo const* /*spellInfo*/) override @@ -2009,7 +2009,7 @@ class spell_pri_evangelism : public SpellScript void HandleCast() const { - GetSpell()->SetSpellValue({ SPELLVALUE_AURA_STACK, GetEffectInfo(EFFECT_0).CalcValue(GetCaster()) }); + GetSpell()->SetSpellValue({ SPELLVALUE_AURA_STACK, GetEffectInfo(EFFECT_0).CalcValueAsInt(GetCaster()) }); } void HandleDummy(SpellEffIndex /*effIndex*/) const @@ -2065,13 +2065,13 @@ class spell_pri_expiation : public SpellScript Aura* swPainAura = swPainAuraEffect->GetBase(); int32 debuffDuration = swPainAura->GetDuration(); - int32 consumeDuration = std::min(debuffDuration, expiationConsume->GetAmount() * IN_MILLISECONDS); + int32 consumeDuration = std::min(debuffDuration, expiationConsume->GetAmountAsInt() * IN_MILLISECONDS); if (consumeDuration == 0) return; float ticksConsumed = static_cast(consumeDuration) / swPainAuraEffect->GetPeriod(); - float damagePerTick = swPainAuraEffect->CalculateEstimatedAmount(caster, swPainAuraEffect->GetAmount()).value_or(swPainAuraEffect->GetAmount()); - int32 totalDamage = static_cast(damagePerTick * ticksConsumed); + SpellEffectValue damagePerTick = swPainAuraEffect->CalculateEstimatedAmount(caster, swPainAuraEffect->GetAmount()).value_or(swPainAuraEffect->GetAmount()); + SpellEffectValue totalDamage = static_cast(damagePerTick * ticksConsumed); swPainAura->SetDuration(debuffDuration - consumeDuration); @@ -2130,7 +2130,7 @@ class spell_pri_from_darkness_comes_light : public AuraScript // 47788 - Guardian Spirit class spell_pri_guardian_spirit : public AuraScript { - uint32 healPct = 0; + SpellEffectValue healPct = 0.0; bool Validate(SpellInfo const* spellInfo) override { @@ -2143,7 +2143,7 @@ class spell_pri_guardian_spirit : public AuraScript return true; } - static void CalculateAmount(AuraScript const&, AuraEffect const* /*aurEff*/, int32 & amount, bool & /*canBeRecalculated*/) + static void CalculateAmount(AuraScript const&, AuraEffect const* /*aurEff*/, SpellEffectValue & amount, bool & /*canBeRecalculated*/) { // Set absorbtion amount to unlimited amount = -1; @@ -2155,7 +2155,7 @@ class spell_pri_guardian_spirit : public AuraScript if (dmgInfo.GetDamage() < target->GetHealth()) return; - int32 healAmount = int32(target->CountPctFromMaxHealth(healPct)); + SpellEffectValue healAmount = SpellEffectValue(target->CountPctFromMaxHealth(healPct)); // remove the aura now, we don't want 40% healing bonus Remove(AURA_REMOVE_BY_ENEMY_SPELL); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); @@ -2190,7 +2190,7 @@ class spell_pri_harsh_discipline : public SpellScript { Unit* caster = GetCaster(); SpellInfo const* penanceChannel = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_PENANCE_CHANNEL_DAMAGE, GetCastDifficulty()); - int32 additionalBolts = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HARSH_DISCIPLINE, GetCastDifficulty())->GetEffect(EFFECT_1).CalcValue(caster); + SpellEffectValue additionalBolts = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HARSH_DISCIPLINE, GetCastDifficulty())->GetEffect(EFFECT_1).CalcValue(caster); // do the calc here float channelDuration = penanceChannel->GetDuration(); @@ -2200,16 +2200,16 @@ class spell_pri_harsh_discipline : public SpellScript if (caster->HasAura(SPELL_PRIEST_CASTIGATION)) baseBolts += 1.0f; - float basePeriod = channelDuration / baseBolts; + SpellEffectValue basePeriod = channelDuration / baseBolts; - float totalBolts = baseBolts + additionalBolts; - float newPeriod = channelDuration / totalBolts; - float pctDiff = GetPctOf(newPeriod - basePeriod, basePeriod); + SpellEffectValue totalBolts = baseBolts + additionalBolts; + SpellEffectValue newPeriod = channelDuration / totalBolts; + SpellEffectValue pctDiff = GetPctOf(newPeriod - basePeriod, basePeriod); caster->CastSpell(caster, SPELL_PRIEST_HARSH_DISCIPLINE_AURA, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .SpellValueOverrides = { - { SPELLVALUE_BASE_POINT0, static_cast(std::floor(pctDiff)) }, + { SPELLVALUE_BASE_POINT0, std::floor(pctDiff) }, { SPELLVALUE_BASE_POINT1, additionalBolts } } }); @@ -2240,8 +2240,8 @@ class spell_pri_heavens_wrath : public AuraScript if (!caster) return; - int32 cdReduction = aurEff->GetAmount(); - caster->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_ULTIMATE_PENITENCE, Seconds(-cdReduction), true); + SpellHistory::Duration cdReduction = -duration_cast(FloatSeconds(aurEff->GetAmount())); + caster->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_ULTIMATE_PENITENCE, cdReduction, true); } void Register() override @@ -2447,7 +2447,7 @@ class spell_pri_holy_words : public AuraScript case SPELL_PRIEST_FLASH_HEAL: // reduce Holy Word: Serenity cd by 6 seconds targetSpellId = SPELL_PRIEST_HOLY_WORD_SERENITY; cdReductionEffIndex = EFFECT_1; - // cdReduction = sSpellMgr->GetSpellInfo(SPELL_PRIEST_HOLY_WORD_SERENITY, GetCastDifficulty())->GetEffect(EFFECT_1)->CalcValue(player); + // cdReduction = sSpellMgr->GetSpellInfo(SPELL_PRIEST_HOLY_WORD_SERENITY, GetCastDifficulty())->GetEffect(EFFECT_1)->CalcValueAsInt(player); break; case SPELL_PRIEST_PRAYER_OF_HEALING: // reduce Holy Word: Sanctify cd by 6 seconds targetSpellId = SPELL_PRIEST_HOLY_WORD_SANCTIFY; @@ -2467,7 +2467,7 @@ class spell_pri_holy_words : public AuraScript } SpellInfo const* targetSpellInfo = sSpellMgr->AssertSpellInfo(targetSpellId, GetCastDifficulty()); - int32 cdReduction = targetSpellInfo->GetEffect(cdReductionEffIndex).CalcValue(GetTarget()); + int32 cdReduction = targetSpellInfo->GetEffect(cdReductionEffIndex).CalcValueAsInt(GetTarget()); spell_pri_holy_words_base::ModifyCooldown(GetTarget(), targetSpellInfo, Seconds(-cdReduction)); } @@ -2538,9 +2538,9 @@ class spell_pri_holy_word_salvation : public SpellScript args.TriggerFlags = TRIGGERED_FULL_MASK; // amount of Prayer of Mending is SPELL_PRIEST_HOLY_WORD_SALVATION's EFFECT_1. - args.AddSpellMod(SPELLVALUE_AURA_STACK, GetEffectValue()); + args.AddSpellMod(SPELLVALUE_AURA_STACK, GetEffectValueAsInt()); - int32 basePoints = caster->SpellHealingBonusDone(target, _spellInfoHeal, _healEffectDummy->CalcValue(caster), HEAL, *_healEffectDummy); + int32 basePoints = caster->SpellHealingBonusDone(target, _spellInfoHeal, _healEffectDummy->CalcValueAsInt(caster), HEAL, *_healEffectDummy); args.AddSpellMod(SPELLVALUE_BASE_POINT0, basePoints); caster->CastSpell(target, SPELL_PRIEST_PRAYER_OF_MENDING_AURA, args); @@ -2575,7 +2575,7 @@ class spell_pri_holy_word_salvation_cooldown_reduction : public SpellScript void ReduceCooldown() const { // cooldown reduced by SPELL_PRIEST_HOLY_WORD_SALVATION's Seconds(EFFECT_2). - int32 cooldownReduction = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HOLY_WORD_SALVATION, GetCastDifficulty())->GetEffect(EFFECT_2).CalcValue(GetCaster()); + int32 cooldownReduction = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_HOLY_WORD_SALVATION, GetCastDifficulty())->GetEffect(EFFECT_2).CalcValueAsInt(GetCaster()); GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_HOLY_WORD_SALVATION, Seconds(-cooldownReduction), true); } @@ -2622,7 +2622,7 @@ class spell_pri_inescapable_torment : public SpellScript .TriggeringSpell = GetSpell() }); - int32 durationExtend = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_INESCAPABLE_TORMENT, DIFFICULTY_NONE)->GetEffect(EFFECT_1).CalcValue(caster); + int32 durationExtend = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_INESCAPABLE_TORMENT, DIFFICULTY_NONE)->GetEffect(EFFECT_1).CalcValueAsInt(caster); summon->ModifyTimer(Milliseconds(durationExtend)); } @@ -2718,7 +2718,7 @@ class spell_pri_lasting_words : public SpellScript caster->CastSpell(GetHitUnit(), SPELL_PRIEST_RENEW, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = GetSpell(), - .SpellValueOverrides = { { SPELLVALUE_DURATION, lastingWordsEff->GetAmount() } } + .SpellValueOverrides = { { SPELLVALUE_DURATION, lastingWordsEff->GetAmountAsInt() } } }); } @@ -2748,7 +2748,7 @@ class spell_pri_leap_of_faith_effect_trigger : public SpellScript SpellCastTargets targets; targets.SetDst(destPos); targets.SetUnitTarget(GetCaster()); - GetHitUnit()->CastSpell(std::move(targets), GetEffectValue(), GetCastDifficulty()); + GetHitUnit()->CastSpell(std::move(targets), GetEffectValueAsInt(), GetCastDifficulty()); } void Register() override @@ -2836,7 +2836,7 @@ class spell_pri_mental_decay : public AuraScript return; Unit* target = eventInfo.GetActionTarget(); - int32 durationExtend = aurEff->GetAmount() * IN_MILLISECONDS; + int32 durationExtend = aurEff->GetAmount() * int32(IN_MILLISECONDS); if (Aura* shadowWordPain = target->GetOwnedAura(SPELL_PRIEST_SHADOW_WORD_PAIN, caster->GetGUID())) { @@ -2896,7 +2896,7 @@ class spell_pri_mind_devourer : public SpellScript void HandleEffectHitTarget(SpellEffIndex /*effIndex*/) const { AuraEffect const* aurEff = GetCaster()->GetAuraEffect(SPELL_PRIEST_MIND_DEVOURER, EFFECT_0); - if (aurEff && roll_chance_i(aurEff->GetAmount())) + if (aurEff && roll_chance_f(aurEff->GetAmount())) GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_MIND_DEVOURER_AURA, GetSpell()); } @@ -2921,7 +2921,7 @@ class spell_pri_mind_devourer_buff_aura : public AuraScript } public: - float DamageIncrease = 0.0f; + SpellEffectValue DamageIncrease = 0.0; }; class spell_pri_mind_devourer_buff : public SpellScript @@ -2963,7 +2963,7 @@ class spell_pri_mind_devourer_buff : public SpellScript OnEffectHitTarget += SpellEffectFn(spell_pri_mind_devourer_buff::ModifyAuraValueAndRemoveBuff, EFFECT_1, SPELL_EFFECT_APPLY_AURA); } - float _damageIncrease = 0.0f; + SpellEffectValue _damageIncrease = 0.0; }; // 390686 - Painful Punishment @@ -2985,7 +2985,7 @@ class spell_pri_painful_punishment : public AuraScript if (!caster || !target) return; - int32 additionalDuration = aurEff->GetAmount(); + int32 additionalDuration = aurEff->GetAmountAsInt(); if (Aura* shadowWordPain = target->GetOwnedAura(SPELL_PRIEST_SHADOW_WORD_PAIN, caster->GetGUID())) shadowWordPain->SetDuration(shadowWordPain->GetDuration() + additionalDuration); @@ -3360,7 +3360,7 @@ class spell_pri_power_word_radiance : public SpellScript Unit* explTarget = GetExplTargetUnit(); // we must add one since explicit target is always chosen. - uint32 maxTargets = GetEffectInfo(EFFECT_2).CalcValue(caster) + 1; + uint32 maxTargets = GetEffectInfo(EFFECT_2).CalcValueAsInt(caster) + 1; Trinity::SortTargetsWithPriorityRules(targets, maxTargets, GetRadianceRules(caster, explTarget)); @@ -3507,7 +3507,7 @@ class spell_pri_divine_aegis : public AuraScript if (!caster) return; - int32 aegisAmount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); + SpellEffectValue aegisAmount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); CastSpellExtraArgs args(aurEff); args.SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); @@ -3566,7 +3566,7 @@ class spell_pri_divine_procession : public AuraScript { if (atonement->GetDuration() < 30 * IN_MILLISECONDS) { - int32 newDuration = atonement->GetDuration() + aurEff->GetAmount(); + int32 newDuration = atonement->GetDuration() + aurEff->GetAmountAsInt(); atonement->SetDuration(newDuration); atonement->SetMaxDuration(newDuration); } @@ -3592,7 +3592,7 @@ class spell_pri_power_word_solace : public SpellScript { GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_POWER_WORD_SOLACE_ENERGIZE, CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS).SetTriggeringSpell(GetSpell()) - .AddSpellMod(SPELLVALUE_BASE_POINT0, GetEffectValue() / 100)); + .AddSpellMod(SPELLVALUE_BASE_POINT0, GetEffectValue() / 100.0)); } void Register() override @@ -3617,7 +3617,7 @@ class spell_pri_prayer_of_mending_SpellScriptBase : public SpellScript return true; } - void CastPrayerOfMendingAura(Unit* caster, Unit* target, Unit* visualSender, uint8 stack, bool firstCast) const + void CastPrayerOfMendingAura(Unit* caster, Unit* target, Unit* visualSender, int32 stack, bool firstCast) const { CastSpellExtraArgs args; args.TriggerFlags = TRIGGERED_FULL_MASK; @@ -3625,7 +3625,7 @@ class spell_pri_prayer_of_mending_SpellScriptBase : public SpellScript // Note: this line's purpose is to show the correct amount in Points field in SMSG_AURA_UPDATE. SpellEffectInfo const* healEffectDummy = &_spellInfoHeal->GetEffect(EFFECT_0); - uint32 basePoints = caster->SpellHealingBonusDone(target, _spellInfoHeal, healEffectDummy->CalcValue(caster), HEAL, *healEffectDummy); + uint32 basePoints = caster->SpellHealingBonusDone(target, _spellInfoHeal, healEffectDummy->CalcValueAsInt(caster), HEAL, *healEffectDummy); args.AddSpellMod(SPELLVALUE_BASE_POINT0, basePoints); // Note: Focused Mending talent. @@ -3660,7 +3660,7 @@ class spell_pri_prayer_of_mending_dummy : public spell_pri_prayer_of_mending_Spe Unit* target = GetHitUnit(); // Note: we need to increase BasePoints by 1 since it's 4 as default. Also HACKFIX, we shouldn't reduce it by 1 if the target has the aura already. - uint8 stackAmount = target->HasAura(SPELL_PRIEST_PRAYER_OF_MENDING_AURA, caster->GetGUID()) ? GetEffectValue() : GetEffectValue() + 1; + uint8 stackAmount = target->HasAura(SPELL_PRIEST_PRAYER_OF_MENDING_AURA, caster->GetGUID()) ? GetEffectValueAsInt() : GetEffectValueAsInt() + 1; CastPrayerOfMendingAura(caster, target, caster, stackAmount, true); @@ -3704,7 +3704,7 @@ class spell_pri_prayer_of_mending_aura : public AuraScript int32 newStackAmount = stackAmount - 1; if (AuraEffect* sayYourPrayers = caster->GetAuraEffect(SPELL_PRIEST_SAY_YOUR_PRAYERS, EFFECT_0)) - if (roll_chance_i(sayYourPrayers->GetAmount())) + if (roll_chance_f(sayYourPrayers->GetAmount())) ++newStackAmount; args.AddSpellMod(SPELLVALUE_BASE_POINT0, newStackAmount); @@ -3764,7 +3764,7 @@ class spell_pri_prayer_of_mending_jump : public spell_pri_prayer_of_mending_Spel void HandleJump(SpellEffIndex /*effIndex*/) const { if (Unit* origCaster = GetOriginalCaster()) - CastPrayerOfMendingAura(origCaster, GetHitUnit(), GetCaster(), GetEffectValue(), false); + CastPrayerOfMendingAura(origCaster, GetHitUnit(), GetCaster(), GetEffectValueAsInt(), false); } void Register() override @@ -3831,7 +3831,7 @@ class spell_pri_holy_10_1_class_set_2pc : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const @@ -3869,7 +3869,7 @@ class spell_pri_holy_10_1_class_set_2pc_chooser : public spell_pri_prayer_of_men Unit* target = GetHitUnit(); // Note: we need to increase BasePoints by 1 since it's 4 as default. Also HACKFIX, we shouldn't reduce it by 1 if the target has the aura already. - uint8 stackAmount = target->HasAura(SPELL_PRIEST_PRAYER_OF_MENDING_AURA, caster->GetGUID()) ? GetEffectValue() : GetEffectValue() + 1; + uint8 stackAmount = target->HasAura(SPELL_PRIEST_PRAYER_OF_MENDING_AURA, caster->GetGUID()) ? GetEffectValueAsInt() : GetEffectValueAsInt() + 1; CastPrayerOfMendingAura(caster, target, caster, stackAmount, true); } @@ -3942,7 +3942,7 @@ class spell_pri_assured_safety : public spell_pri_prayer_of_mending_SpellScriptB { Unit* caster = GetCaster(); if (AuraEffect const* effect = caster->GetAuraEffect(SPELL_PRIEST_ASSURED_SAFETY, EFFECT_0)) - CastPrayerOfMendingAura(caster, GetHitUnit(), caster, effect->GetAmount(), false); + CastPrayerOfMendingAura(caster, GetHitUnit(), caster, effect->GetAmountAsInt(), false); } void Register() override @@ -3963,7 +3963,7 @@ class spell_pri_protector_of_the_frail : public SpellScript { Unit* caster = GetCaster(); - int32 cdReduction = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_PROTECTOR_OF_THE_FRAIL, GetCastDifficulty())->GetEffect(EFFECT_1).CalcValue(caster); + int32 cdReduction = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_PROTECTOR_OF_THE_FRAIL, GetCastDifficulty())->GetEffect(EFFECT_1).CalcValueAsInt(caster); caster->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_PAIN_SUPPRESSION, Milliseconds(cdReduction)); } @@ -4051,7 +4051,7 @@ class spell_pri_purge_the_wicked_dummy : public SpellScript // Note: Revel in Purity talent. if (caster->HasAura(SPELL_PRIEST_REVEL_IN_PURITY)) - spreadCount += sSpellMgr->AssertSpellInfo(SPELL_PRIEST_REVEL_IN_PURITY, DIFFICULTY_NONE)->GetEffect(EFFECT_1).CalcValue(GetCaster()); + spreadCount += sSpellMgr->AssertSpellInfo(SPELL_PRIEST_REVEL_IN_PURITY, DIFFICULTY_NONE)->GetEffect(EFFECT_1).CalcValueAsInt(GetCaster()); if (targets.size() > spreadCount) targets.resize(spreadCount); @@ -4194,10 +4194,10 @@ class spell_pri_sanctuary_absorb : public AuraScript if (!amountHolderEffect) return; - if (dmgInfo.GetDamage() >= uint32(amountHolderEffect->GetAmount())) + if (dmgInfo.GetDamage() >= uint32(amountHolderEffect->GetAmountAsInt())) { amountHolderEffect->GetBase()->Remove(AURA_REMOVE_BY_ENEMY_SPELL); - dmgInfo.AbsorbDamage(amountHolderEffect->GetAmount()); + dmgInfo.AbsorbDamage(amountHolderEffect->GetAmountAsInt()); } else { @@ -4222,7 +4222,7 @@ class spell_pri_searing_light : public AuraScript void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const { - int32 dotDmg = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()); + SpellEffectValue dotDmg = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()); dotDmg /= sSpellMgr->AssertSpellInfo(SPELL_PRIEST_SEARING_LIGHT_DAMAGE, GetCastDifficulty())->GetEffect(EFFECT_0).GetPeriodicTickCount(); eventInfo.GetActor()->CastSpell(eventInfo.GetActionTarget(), SPELL_PRIEST_SEARING_LIGHT_DAMAGE, CastSpellExtraArgsInit{ @@ -4255,7 +4255,7 @@ class spell_pri_sanctuary_trigger : public SpellScript { if (Unit* target = GetHitUnit()) { - float absorbAmount = CalculatePct(caster->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SHADOW), sanctuaryEffect->GetAmount()); + SpellEffectValue absorbAmount = CalculatePct(caster->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_SHADOW), sanctuaryEffect->GetAmount()); AddPct(absorbAmount, caster->GetRatingBonusValue(CR_VERSATILITY_DAMAGE_DONE)); caster->CastSpell(caster, SPELL_PRIEST_SANCTUARY_ABSORB, CastSpellExtraArgs() @@ -4419,7 +4419,7 @@ class spell_pri_shadow_mend_periodic_damage : public AuraScript void HandleProc(AuraEffect* aurEff, ProcEventInfo const& eventInfo) { - int32 newAmount = aurEff->GetAmount() - eventInfo.GetDamageInfo()->GetDamage(); + SpellEffectValue newAmount = aurEff->GetAmount() - eventInfo.GetDamageInfo()->GetDamage(); aurEff->ChangeAmount(newAmount); if (newAmount < 0) @@ -4641,7 +4641,7 @@ class spell_pri_surge_of_light : public AuraScript void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) const { - if (roll_chance_i(aurEff->GetAmount())) + if (roll_chance_f(aurEff->GetAmount())) GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_SURGE_OF_LIGHT_EFFECT, aurEff); } @@ -4722,7 +4722,7 @@ class spell_pri_t10_heal_2p_bonus : public AuraScript return; SpellEffectInfo const& hotEffect = sSpellMgr->AssertSpellInfo(SPELL_PRIEST_BLESSED_HEALING, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 amount = CalculatePct(static_cast(healInfo->GetHeal()), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(static_cast(healInfo->GetHeal()), aurEff->GetAmount()); amount /= hotEffect.GetPeriodicTickCount(); @@ -4781,7 +4781,7 @@ class spell_pri_trail_of_light : public AuraScript if (!caster->IsWithinDist(oldTarget, healSpellInfo->GetMaxRange(true, caster))) return; - uint32 healAmount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); + SpellEffectValue healAmount = CalculatePct(eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); caster->CastSpell(oldTarget, SPELL_PRIEST_TRAIL_OF_LIGHT_HEAL, CastSpellExtraArgs(aurEff).AddSpellBP0(healAmount)); } @@ -4823,12 +4823,12 @@ class spell_pri_train_of_thought : public AuraScript void ReducePowerWordShieldCooldown(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_POWER_WORD_SHIELD, Milliseconds(aurEff->GetAmount())); + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_POWER_WORD_SHIELD, Milliseconds(aurEff->GetAmountAsInt())); } void ReducePenanceCooldown(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_PENANCE, Milliseconds(aurEff->GetAmount())); + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_PRIEST_PENANCE, Milliseconds(aurEff->GetAmountAsInt())); } void Register() override @@ -4877,7 +4877,7 @@ class spell_pri_twilight_equilibrium_shadow_word_pain : public AuraScript return ValidateSpellInfo({ SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_SHADOW }); } - void OnApply(AuraEffect const* /*aurEff*/, int32& /*amount*/, bool& /*canBeRecalculated*/) + void OnApply(AuraEffect const* /*aurEff*/, SpellEffectValue& /*amount*/, bool& /*canBeRecalculated*/) { _damageMultiplier = 1.0f; if (Unit* caster = GetCaster()) @@ -4937,7 +4937,7 @@ class spell_pri_ultimate_penitence : public SpellScript .TriggeringSpell = GetSpell() }); - int32 preferHealing = 1; + SpellEffectValue preferHealing = 1; if (Unit const* target = GetExplTargetUnit(); target && !GetCaster()->IsFriendlyTo(target)) preferHealing = 0; @@ -4961,7 +4961,7 @@ class spell_pri_ultimate_penitence : public SpellScript // 421453 - Ultimate Penitence (Aura) class spell_pri_ultimate_penitence_aura : public AuraScript { - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) const + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) const { canBeRecalculated = false; Unit* caster = GetCaster(); @@ -4994,7 +4994,7 @@ class spell_pri_ultimate_penitence_channel : public AuraScript void HandlePeriodic(AuraEffect const* aurEff) const { - if (aurEff->GetAmount() == 1) // set by spell_pri_ultimate_penitence + if (aurEff->GetAmountAsInt() == 1) // set by spell_pri_ultimate_penitence (void)(TryHealing() || TryDealingDamage()); else (void)(TryDealingDamage() || TryHealing()); @@ -5160,8 +5160,8 @@ class spell_pri_vampiric_embrace : public AuraScript if (!damageInfo || !damageInfo->GetDamage()) return; - int32 selfHeal = int32(CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount())); - int32 teamHeal = selfHeal / 2; + SpellEffectValue selfHeal = CalculatePct(damageInfo->GetDamage(), aurEff->GetAmount()); + SpellEffectValue teamHeal = selfHeal / 2; CastSpellExtraArgs args(aurEff); args.AddSpellMod(SPELLVALUE_BASE_POINT0, teamHeal); @@ -5255,8 +5255,8 @@ class spell_pri_voice_of_harmony : public AuraScript void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { SpellInfo const* targetSpellInfo = sSpellMgr->AssertSpellInfo(TargetSpellId, GetCastDifficulty()); - int32 cdReduction = aurEff->GetAmount(); - spell_pri_holy_words_base::ModifyCooldown(GetTarget(), targetSpellInfo, Seconds(-cdReduction)); + Milliseconds cdReduction = -duration_cast(FloatSeconds(aurEff->GetAmount())); + spell_pri_holy_words_base::ModifyCooldown(GetTarget(), targetSpellInfo, cdReduction); } void Register() override @@ -5323,7 +5323,7 @@ class spell_pri_void_volley : public SpellScript .TriggeringSpell = GetSpell() }); - int32 bolts = target == GetExplTargetUnit() ? GetEffectValue() : GetEffectInfo(EFFECT_2).CalcValue(caster); + int32 bolts = target == GetExplTargetUnit() ? GetEffectValueAsInt() : GetEffectInfo(EFFECT_2).CalcValueAsInt(caster); if (bolts > 1) caster->m_Events.AddEventAtOffset(new BoltEvent(caster, target->GetGUID(), GetSpell()->m_originalCastId, bolts - 1), BoltEvent::Period); } diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 2c2eff515e41c..47d05d207c48e 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -521,7 +521,7 @@ class spell_q12805_lifeblood_dummy : public SpellScript if (Creature* target = GetHitCreature()) { caster->KilledMonsterCredit(NPC_SHARD_KILL_CREDIT); - target->CastSpell(target, uint32(GetEffectValue()), true); + target->CastSpell(target, uint32(GetEffectValueAsInt()), true); target->DespawnOrUnsummon(2s); } } @@ -897,13 +897,13 @@ class spell_q13086_cannons_target : public SpellScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) - && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + && ValidateSpellInfo({ static_cast(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleEffectDummy(SpellEffIndex /*effIndex*/) { if (WorldLocation const* pos = GetExplTargetDest()) - GetCaster()->CastSpell(pos->GetPosition(), GetEffectValue(), true); + GetCaster()->CastSpell(pos->GetPosition(), GetEffectValueAsInt(), true); } void Register() override @@ -1084,7 +1084,7 @@ class spell_q13264_q13276_q13288_q13289_assign_credit_to_master : public SpellSc { if (Unit* owner = target->GetOwner()) { - owner->CastSpell(owner, GetEffectValue(), true); + owner->CastSpell(owner, GetEffectValueAsInt(), true); } } } @@ -1299,7 +1299,7 @@ class spell_q12619_emblazon_runeblade_effect : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValue()), false); + GetCaster()->CastSpell(GetCaster(), uint32(GetEffectValueAsInt()), false); } void Register() override @@ -1537,7 +1537,7 @@ class spell_q13665_q13790_bested_trigger : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { Unit* target = GetHitUnit()->GetCharmerOrOwnerOrSelf(); - target->CastSpell(target, uint32(GetEffectValue()), true); + target->CastSpell(target, uint32(GetEffectValueAsInt()), true); } void Register() override @@ -1647,7 +1647,7 @@ class spell_q11896_weakness_to_lightning_46444 : public SpellScript { if (Unit* owner = target->GetOwner()) { - target->CastSpell(owner, GetEffectValue(), true); + target->CastSpell(owner, GetEffectValueAsInt(), true); } } } @@ -1772,8 +1772,8 @@ class spell_quest_portal_with_condition : public SpellScript bool Validate(SpellInfo const* spellInfo) override { return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } }) - && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }) - && sObjectMgr->GetQuestTemplate(uint32(spellInfo->GetEffect(EFFECT_1).CalcValue())); + && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }) + && sObjectMgr->GetQuestTemplate(uint32(spellInfo->GetEffect(EFFECT_1).CalcValueAsInt())); } void HandleScriptEffect(SpellEffIndex /* effIndex */) @@ -1782,8 +1782,8 @@ class spell_quest_portal_with_condition : public SpellScript if (!target) return; - uint32 spellId = GetEffectInfo().CalcValue(); - uint32 questId = GetEffectInfo(EFFECT_1).CalcValue(); + uint32 spellId = GetEffectInfo().CalcValueAsInt(); + uint32 questId = GetEffectInfo(EFFECT_1).CalcValueAsInt(); // This probably should be a way to throw error in SpellCastResult if (target->IsActiveQuest(questId)) diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 170ece98f679f..1091052f5ea5b 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -239,7 +239,7 @@ class spell_rog_backstab : public SpellScript if (hitUnit->isInBack(caster)) { float currDamage = float(GetHitDamage()); - float newDamage = AddPct(currDamage, float(GetEffectInfo(EFFECT_3).CalcValue(caster))); + float newDamage = AddPct(currDamage, GetEffectInfo(EFFECT_3).CalcValue(caster)); SetHitDamage(newDamage); } } @@ -365,7 +365,7 @@ class spell_rog_cloaked_in_shadows : public SpellScript if (!cloakedInShadows) return; - int32 amount = caster->CountPctFromMaxHealth(cloakedInShadows->GetAmount()); + SpellEffectValue amount = caster->CountPctFromMaxHealth(cloakedInShadows->GetAmount()); caster->CastSpell(caster, SPELL_ROGUE_CLOAKED_IN_SHADOWS_ABSORB, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -422,7 +422,7 @@ class spell_rog_deepening_shadows : public AuraScript void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& procInfo) const { - Milliseconds amount = -Seconds(aurEff->GetAmount()) * *procInfo.GetProcSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS); + Milliseconds amount = duration_cast(-FloatSeconds(aurEff->GetAmount()) * *procInfo.GetProcSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS)); GetTarget()->GetSpellHistory()->ModifyChargeRecoveryTime(sSpellMgr->AssertSpellInfo(SPELL_ROGUE_SHADOW_DANCE, GetCastDifficulty())->ChargeCategoryId, amount / 10); } @@ -441,7 +441,7 @@ class spell_rog_envenom : public SpellScript pctMod *= GetSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS).value_or(0); if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) - flatMod += t5->GetAmount(); + flatMod += t5->GetAmountAsInt(); } void Register() override @@ -458,7 +458,7 @@ class spell_rog_eviscerate : public SpellScript pctMod *= GetSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS).value_or(0); if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) - flatMod += t5->GetAmount(); + flatMod += t5->GetAmountAsInt(); } void Register() override @@ -589,7 +589,7 @@ class spell_rog_improved_garrote_damage : public AuraScript }); } - void CalculateBonus(AuraEffect const* /*aurEff*/, int32& /*amount*/, bool& /*canBeRecalculated*/) + void CalculateBonus(AuraEffect const* /*aurEff*/, SpellEffectValue& /*amount*/, bool& /*canBeRecalculated*/) { _pctMod = 1.0f; Unit* caster = GetCaster(); @@ -973,11 +973,11 @@ class spell_rog_restless_blades : public AuraScript { if (Optional spentCP = GetFinishingMoveCPCost(procInfo.GetProcSpell())) { - int32 cdExtra = -(float(aurEff->GetAmount() * *spentCP) * 0.1f); + Milliseconds cdExtra = -duration_cast(FloatSeconds(aurEff->GetAmount() * *spentCP * 0.1)); SpellHistory* history = GetTarget()->GetSpellHistory(); for (uint32 spellId : Spells) - history->ModifyCooldown(spellId, Seconds(cdExtra), true); + history->ModifyCooldown(spellId, cdExtra, true); } } @@ -1086,7 +1086,7 @@ class spell_rog_ruthlessness : public AuraScript Unit* target = GetTarget(); if (Optional cost = GetFinishingMoveCPCost(procInfo.GetProcSpell())) - if (roll_chance_i(aurEff->GetSpellEffectInfo().PointsPerResource * (*cost))) + if (roll_chance_f(aurEff->GetSpellEffectInfo().PointsPerResource * *cost)) target->ModifyPower(POWER_COMBO_POINTS, 1); } @@ -1121,10 +1121,10 @@ class spell_rog_shadowstrike : public SpellScript if (caster->HasAura(SPELL_ROGUE_SLICE_AND_DICE)) if (Aura* premeditationPassive = caster->GetAura(SPELL_ROGUE_PREMEDITATION_PASSIVE)) if (AuraEffect const* auraEff = premeditationPassive->GetEffect(EFFECT_1)) - SetHitDamage(GetHitDamage() + auraEff->GetAmount()); + SetHitDamage(GetHitDamage() + auraEff->GetAmountAsInt()); // Grant 10 seconds of slice and dice - int32 duration = sSpellMgr->AssertSpellInfo(SPELL_ROGUE_PREMEDITATION_PASSIVE, DIFFICULTY_NONE)->GetEffect(EFFECT_0).CalcValue(GetCaster()); + int32 duration = sSpellMgr->AssertSpellInfo(SPELL_ROGUE_PREMEDITATION_PASSIVE, DIFFICULTY_NONE)->GetEffect(EFFECT_0).CalcValueAsInt(GetCaster()); CastSpellExtraArgs args; args.TriggerFlags = TRIGGERED_FULL_MASK; @@ -1236,7 +1236,7 @@ class spell_rog_shuriken_storm : public SpellScript GetCaster()->CastSpell(GetCaster(), SPELL_ROGUE_SHURIKEN_STORM_ENERGIZE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = GetSpell(), - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, static_cast(GetUnitTargetCountForEffect(effIndex)) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, static_cast(GetUnitTargetCountForEffect(effIndex)) } } }); } @@ -1280,7 +1280,7 @@ class spell_rog_sinister_strike : public SpellScript { int32 damagePerCombo = GetHitDamage(); if (AuraEffect const* t5 = GetCaster()->GetAuraEffect(SPELL_ROGUE_T5_2P_SET_BONUS, EFFECT_0)) - damagePerCombo += t5->GetAmount(); + damagePerCombo += t5->GetAmountAsInt(); int32 finalDamage = damagePerCombo; if (Optional comboPointCost = GetSpell()->GetPowerTypeCostAmount(POWER_COMBO_POINTS)) @@ -1552,7 +1552,7 @@ class spell_rog_venomous_wounds : public AuraScript { void HandleProc(AuraEffect* aurEff, ProcEventInfo& /*eventInfo*/) { - int32 extraEnergy = aurEff->GetAmount(); + int32 extraEnergy = aurEff->GetAmountAsInt(); GetTarget()->ModifyPower(POWER_ENERGY, extraEnergy); } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 37ac7da2483ce..ffabc6238f2c2 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -233,7 +233,7 @@ class spell_sha_aftershock : public AuraScript { if (Spell const* procSpell = eventInfo.GetProcSpell()) if (Optional cost = procSpell->GetPowerTypeCostAmount(POWER_MAELSTROM)) - return cost > 0 && roll_chance_i(aurEff->GetAmount()); + return cost > 0 && roll_chance_f(aurEff->GetAmount()); return false; } @@ -245,7 +245,7 @@ class spell_sha_aftershock : public AuraScript .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = procSpell, .TriggeringAura = aurEff, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, *procSpell->GetPowerTypeCostAmount(POWER_MAELSTROM) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, static_cast(*procSpell->GetPowerTypeCostAmount(POWER_MAELSTROM)) } } }); } @@ -278,7 +278,7 @@ class spell_sha_ancestral_guidance : public AuraScript void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) { PreventDefaultAction(); - int32 bp0 = CalculatePct(int32(eventInfo.GetDamageInfo() ? eventInfo.GetDamageInfo()->GetDamage() : eventInfo.GetHealInfo()->GetHeal()), aurEff->GetAmount()); + SpellEffectValue bp0 = CalculatePct(eventInfo.GetDamageInfo() ? eventInfo.GetDamageInfo()->GetDamage() : eventInfo.GetHealInfo()->GetHeal(), aurEff->GetAmount()); if (!bp0) return; @@ -351,7 +351,7 @@ class spell_sha_artifact_gathering_storms : public SpellScript GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_GATHERING_STORMS_BUFF, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(gatheringStorms->GetAmount() * GetUnitTargetCountForEffect(effIndex)) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, gatheringStorms->GetAmount() * GetUnitTargetCountForEffect(effIndex) } } }); } @@ -400,7 +400,7 @@ class spell_sha_ascendance_restoration : public AuraScript } private: - int32 _healToDistribute = 0; + SpellEffectValue _healToDistribute = 0; }; // 390370 - Ashen Catalyst @@ -413,7 +413,7 @@ class spell_sha_ashen_catalyst : public AuraScript void ReduceLavaLashCooldown(AuraEffect const* aurEff, ProcEventInfo const& /*procInfo*/) const { - GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_SHAMAN_LAVA_LASH, -aurEff->GetAmount() * 100ms); + GetTarget()->GetSpellHistory()->ModifyCooldown(SPELL_SHAMAN_LAVA_LASH, -aurEff->GetAmountAsInt() * 100ms); } void Register() override @@ -437,7 +437,7 @@ class spell_sha_chain_lightning_crash_lightning : public SpellScript void HandleCooldownReduction(SpellEffIndex /*effIndex*/) const { - GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_SHAMAN_CRASH_LIGHTNING, Milliseconds(-GetEffectValue()) * GetUnitTargetCountForEffect(EFFECT_0)); + GetCaster()->GetSpellHistory()->ModifyCooldown(SPELL_SHAMAN_CRASH_LIGHTNING, Milliseconds(-GetEffectValueAsInt()) * GetUnitTargetCountForEffect(EFFECT_0)); } void HandleDamageBuff(SpellEffIndex effIndex) const @@ -477,7 +477,7 @@ class spell_sha_chain_lightning_energize : public SpellScript GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_CHAIN_LIGHTNING_ENERGIZE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = energizeAmount, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(energizeAmount->GetAmount() * GetUnitTargetCountForEffect(EFFECT_0)) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount() * GetUnitTargetCountForEffect(EFFECT_0) } } }); } @@ -507,7 +507,7 @@ class spell_sha_chain_lightning_overload : public SpellScript GetCaster()->CastSpell(GetCaster(), SPELL_SHAMAN_CHAIN_LIGHTNING_OVERLOAD_ENERGIZE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = energizeAmount, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(energizeAmount->GetAmount() * GetUnitTargetCountForEffect(EFFECT_0)) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, energizeAmount->GetAmount() * GetUnitTargetCountForEffect(EFFECT_0) } } }); } @@ -669,7 +669,7 @@ class spell_sha_deeply_rooted_elements : public AuraScript Unit* target = eventInfo.GetActor(); - int32 duration = GetEffect(EFFECT_0)->GetAmount(); + int32 duration = GetEffect(EFFECT_0)->GetAmountAsInt(); if (Aura const* ascendanceAura = target->GetAura(_triggeredSpellId)) duration += ascendanceAura->GetDuration(); @@ -788,7 +788,7 @@ class spell_sha_downpour : public SpellScript void HandleCooldown() const { - SpellHistory::Duration cooldown = Milliseconds(GetSpellInfo()->RecoveryTime) + Seconds(GetEffectInfo(EFFECT_1).CalcValue() * _healedTargets); + SpellHistory::Duration cooldown = Milliseconds(GetSpellInfo()->RecoveryTime) + Seconds(GetEffectInfo(EFFECT_1).CalcValueAsInt() * _healedTargets); GetCaster()->GetSpellHistory()->StartCooldown(GetSpellInfo(), 0, GetSpell(), false, cooldown); } @@ -946,7 +946,7 @@ struct areatrigger_sha_earthquake : AreaTriggerAI caster->CastSpell(at->GetPosition(), SPELL_SHAMAN_EARTHQUAKE_TICK, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK, .OriginalCaster = at->GetGUID(), - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, int32(caster->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_NATURE) * 0.213f * _damageMultiplier) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, caster->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_NATURE) * 0.213 * _damageMultiplier } } }); _refreshTimer += _period; @@ -1016,7 +1016,7 @@ class spell_sha_earthquake_tick : public SpellScript { if (Unit* target = GetHitUnit()) { - if (roll_chance_i(GetEffectInfo(EFFECT_1).CalcValue())) + if (roll_chance_f(GetEffectInfo(EFFECT_1).CalcValue())) { std::vector areaTriggers = GetCaster()->GetAreaTriggers(SPELL_SHAMAN_EARTHQUAKE); auto itr = std::ranges::find(areaTriggers, GetSpell()->GetOriginalCasterGUID(), [](AreaTrigger const* at) { return at->GetGUID(); }); @@ -1110,7 +1110,7 @@ class spell_sha_elemental_weapons : public AuraScript if (owner->HasAura(SPELL_SHAMAN_WINDFURY_AURA)) ++enchatmentCount; - int32 valuePerStack = GetEffect(EFFECT_0)->GetAmount(); + SpellEffectValue valuePerStack = GetEffect(EFFECT_0)->GetAmount(); if (Aura* buff = owner->GetAura(SPELL_SHAMAN_ELEMENTAL_WEAPONS_BUFF)) { @@ -1462,7 +1462,7 @@ class spell_sha_ice_strike : public SpellScript void EnergizeMaelstrom(SpellEffIndex /*effIndex*/) const { - spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetCaster(), GetEffectValue()); + spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetCaster(), GetEffectValueAsInt()); } void Register() override @@ -1583,7 +1583,7 @@ class spell_sha_item_mana_surge : public AuraScript if (Optional manaCost = eventInfo.GetProcSpell()->GetPowerTypeCostAmount(POWER_MANA)) { - int32 mana = CalculatePct(*manaCost, 35); + SpellEffectValue mana = CalculatePct(*manaCost, 35); if (mana > 0) { GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_ITEM_MANA_SURGE, CastSpellExtraArgsInit{ @@ -1667,7 +1667,7 @@ class spell_sha_item_t10_elemental_2p_bonus : public AuraScript { PreventDefaultAction(); if (Player* target = GetTarget()->ToPlayer()) - target->GetSpellHistory()->ModifyCooldown(SPELL_SHAMAN_ELEMENTAL_MASTERY, Milliseconds(-aurEff->GetAmount())); + target->GetSpellHistory()->ModifyCooldown(SPELL_SHAMAN_ELEMENTAL_MASTERY, Milliseconds(-aurEff->GetAmountAsInt())); } void Register() override @@ -1751,7 +1751,7 @@ class spell_sha_lava_crit_chance : public SpellScript return; if (victim->HasAura(SPELL_SHAMAN_FLAME_SHOCK, caster->GetGUID())) - if (victim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE) > -100) + if (victim->GetTotalAuraModifier(SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE) > -100.0f) chance = 100.f; } @@ -1810,19 +1810,19 @@ class spell_sha_lava_surge : public AuraScript Cell::VisitAllObjects(caster, worker, 100.0f); // Proc uptime is not supposed to scale with the number of applied flame shocks - _normalizedTicks += 1.0f / flameShocks; + _normalizedTicks += 1.0 / flameShocks; // first 6 ticks after last proc fail to prevent overwriting - if (_normalizedTicks < 6.0f) + if (_normalizedTicks < 6.0) return false; - float procChance = aurEff->GetAmount(); + SpellEffectValue procChance = aurEff->GetAmount(); if (AuraEffect const* igneousPotential = GetTarget()->GetAuraEffect(SPELL_SHAMAN_IGNEOUS_POTENTIAL, EFFECT_0)) procChance += igneousPotential->GetAmount(); - float missChance = std::max(100 - procChance, 0.0f) / 100.0f; + SpellEffectValue missChance = std::max(100 - procChance, 0.0) / 100.0; - procChance = (1.0f - std::pow(missChance, _normalizedTicks)) * 100.0f; + procChance = (1.0 - std::pow(missChance, _normalizedTicks)) * 100.0; return roll_chance_f(procChance); } @@ -1841,7 +1841,7 @@ class spell_sha_lava_surge : public AuraScript OnEffectProc += AuraEffectProcFn(spell_sha_lava_surge::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY); } - float _normalizedTicks = 0.0f; + SpellEffectValue _normalizedTicks = 0.0; }; // 77762 - Lava Surge @@ -2150,14 +2150,14 @@ class spell_sha_mastery_elemental_overload : public AuraScript if (!GetTriggeredSpellId(spellInfo->Id)) return false; - float chance = aurEff->GetAmount(); // Mastery % amount + SpellEffectValue chance = aurEff->GetAmount(); // Mastery % amount if (spellInfo->Id == SPELL_SHAMAN_CHAIN_LIGHTNING) - chance /= 3.0f; + chance /= 3.0; if (Aura* stormkeeper = eventInfo.GetActor()->GetAura(SPELL_SHAMAN_STORMKEEPER)) if (eventInfo.GetProcSpell()->m_appliedMods.contains(stormkeeper)) - chance = 100.0f; + chance = 100.0; return roll_chance_f(chance); } @@ -2259,7 +2259,7 @@ class spell_sha_molten_assault : public SpellScript Cell::VisitAllObjects(lavaLashTarget, searcher, range + EXTRA_CELL_SEARCH_RADIUS); auto withoutFlameShockItr = std::partition(targets.begin(), targets.end(), Trinity::UnitAuraCheck(true, SPELL_SHAMAN_FLAME_SHOCK, GetCaster()->GetGUID())); - std::size_t flameShocksMissing = GetEffectValue() + 1 - std::ranges::distance(targets.begin(), withoutFlameShockItr); + std::size_t flameShocksMissing = GetEffectValueAsInt() + 1 - std::ranges::distance(targets.begin(), withoutFlameShockItr); if (flameShocksMissing) Trinity::Containers::RandomShuffle(withoutFlameShockItr, targets.end()); @@ -2269,7 +2269,7 @@ class spell_sha_molten_assault : public SpellScript args.SetTriggeringSpell(GetSpell()); // targets that already have flame shock are first in the list (and need to refresh it) - for (std::size_t i = 0; i < std::min(targets.size(), GetEffectValue() + 1); ++i) + for (std::size_t i = 0; i < std::min(targets.size(), GetEffectValueAsInt() + 1); ++i) caster->CastSpell(targets[i], SPELL_SHAMAN_FLAME_SHOCK, args); } @@ -2322,10 +2322,10 @@ class spell_sha_molten_thunder_sundering : public SpellScript if (!counterScript) return; - int32 procChance = chanceBaseEffect->GetAmount(); - procChance += std::min(targetLimitEffect->GetAmount(), GetUnitTargetCountForEffect(EFFECT_0)) * chancePerTargetEffect->GetAmount(); - procChance >>= counterScript->ProcCount; // Each consecutive reset reduces these chances by half - if (roll_chance_i(procChance)) + SpellEffectValue procChance = chanceBaseEffect->GetAmount(); + procChance += std::min(targetLimitEffect->GetAmount(), GetUnitTargetCountForEffect(EFFECT_0)) * chancePerTargetEffect->GetAmount(); + procChance *= std::pow(0.5, counterScript->ProcCount); // Each consecutive reset reduces these chances by half + if (roll_chance_f(procChance)) { shaman->CastSpell(shaman, SPELL_SHAMAN_MOLTEN_THUNDER_PROC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -2442,7 +2442,7 @@ class spell_sha_primordial_wave : public SpellScript void EnergizeMaelstrom(SpellEffIndex /*effIndex*/) const { - spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetCaster(), GetEffectValue()); + spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetCaster(), GetEffectValueAsInt()); } void Register() override @@ -2542,7 +2542,7 @@ class spell_sha_stormblast_damage : public SpellScript { if (AuraEffect const* stormblast = GetCaster()->GetAuraEffect(SPELL_SHAMAN_STORMBLAST_TALENT, EFFECT_0)) { - int32 damage = CalculatePct(GetHitDamage(), stormblast->GetAmount()); + SpellEffectValue damage = CalculatePct(GetHitDamage(), stormblast->GetAmount()); // Not part of SpellFamilyFlags for mastery effect but known to be affected by it if (AuraEffect const* mastery = GetCaster()->GetAuraEffect(SPELL_SHAMAN_ENHANCED_ELEMENTS, EFFECT_0)) @@ -2593,11 +2593,11 @@ class StormflurryEvent : public BasicEvent public: struct Data { - int32 DamagePercent = 0; + SpellEffectValue DamagePercent = 0; }; - explicit StormflurryEvent(Unit* caster, Unit* target, ObjectGuid const& originalCastId, int32 damagePercent, - uint32 mainHandDamageSpellId, uint32 offHandDamageSpellId, int32 procChance) + explicit StormflurryEvent(Unit* caster, Unit* target, ObjectGuid const& originalCastId, SpellEffectValue damagePercent, + uint32 mainHandDamageSpellId, uint32 offHandDamageSpellId, SpellEffectValue procChance) : _caster(caster), _target(target), _originalCastId(originalCastId), _damagePercent(damagePercent), _mainHandDamageSpellId(mainHandDamageSpellId), _offHandDamageSpellId(offHandDamageSpellId), _procChance(procChance) { @@ -2618,7 +2618,7 @@ class StormflurryEvent : public BasicEvent _caster->CastSpell(_target, _mainHandDamageSpellId, args); _caster->CastSpell(_target, _offHandDamageSpellId, args); - if (!roll_chance_i(_procChance)) + if (!roll_chance_f(_procChance)) return true; _caster->m_Events.AddEvent(this, Milliseconds(time) + 200ms); @@ -2629,10 +2629,10 @@ class StormflurryEvent : public BasicEvent Unit* _caster; CastSpellTargetArg _target; ObjectGuid _originalCastId; - int32 _damagePercent; + SpellEffectValue _damagePercent; uint32 _mainHandDamageSpellId; uint32 _offHandDamageSpellId; - int32 _procChance; + SpellEffectValue _procChance; }; // 198367 Stormflurry @@ -2668,8 +2668,8 @@ class spell_sha_stormflurry : public SpellScript if (!chanceEffect || !damageEffect) return; - int32 procChance = chanceEffect->GetAmount(); - if (!roll_chance_i(procChance)) + SpellEffectValue procChance = chanceEffect->GetAmount(); + if (!roll_chance_f(procChance)) return; caster->m_Events.AddEventAtOffset(new StormflurryEvent(caster, GetHitUnit(), GetSpell()->m_castId, damageEffect->GetAmount(), @@ -2780,7 +2780,7 @@ class spell_sha_swirling_maelstrom : public AuraScript void EnergizeMaelstrom(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetTarget(), aurEff->GetAmount()); + spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetTarget(), aurEff->GetAmountAsInt()); } void Register() override @@ -2870,7 +2870,7 @@ class spell_sha_thorims_invocation_trigger : public SpellScript // Manually remove stacks - Maelstrom Weapon aura cannot proc from procs and free Lightning Bolt/Chain Lightning procs from Arc Discharge (455096) shoulnd't consume it if (Aura* maelstromWeaponVisibleAura = caster->GetAura(SPELL_SHAMAN_MAELSTROM_WEAPON_VISIBLE_AURA)) - spell_sha_maelstrom_weapon_base::ConsumeMaelstromWeapon(caster, maelstromWeaponVisibleAura, thorimsInvocation->GetAmount()); + spell_sha_maelstrom_weapon_base::ConsumeMaelstromWeapon(caster, maelstromWeaponVisibleAura, thorimsInvocation->GetAmountAsInt()); } void Register() override @@ -3001,7 +3001,7 @@ class spell_sha_t8_elemental_4p_bonus : public AuraScript return; SpellEffectInfo const& dotEffect = sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_ELECTRIFIED, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 amount = CalculatePct(static_cast(damageInfo->GetDamage()), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(static_cast(damageInfo->GetDamage()), aurEff->GetAmount()); amount /= dotEffect.GetPeriodicTickCount(); @@ -3039,7 +3039,7 @@ class spell_sha_t9_elemental_4p_bonus : public AuraScript return; SpellEffectInfo const& dotEffect = sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_LAVA_BURST_BONUS_DAMAGE, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 amount = CalculatePct(static_cast(damageInfo->GetDamage()), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(static_cast(damageInfo->GetDamage()), aurEff->GetAmount()); amount /= dotEffect.GetPeriodicTickCount(); @@ -3077,7 +3077,7 @@ class spell_sha_t10_elemental_4p_bonus : public AuraScript Aura* flameShockAura = flameShock->GetBase(); int32 maxDuration = flameShockAura->GetMaxDuration(); - int32 newDuration = flameShockAura->GetDuration() + aurEff->GetAmount() * IN_MILLISECONDS; + int32 newDuration = flameShockAura->GetDuration() + aurEff->GetAmountAsInt() * IN_MILLISECONDS; flameShockAura->SetDuration(newDuration); // is it blizzlike to change max duration for FS? @@ -3109,7 +3109,7 @@ class spell_sha_t10_restoration_4p_bonus : public AuraScript return; SpellEffectInfo const& dotEffect = sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_CHAINED_HEAL, GetCastDifficulty())->GetEffect(EFFECT_0); - int32 amount = CalculatePct(static_cast(healInfo->GetHeal()), aurEff->GetAmount()); + SpellEffectValue amount = CalculatePct(static_cast(healInfo->GetHeal()), aurEff->GetAmount()); amount /= dotEffect.GetPeriodicTickCount(); @@ -3203,7 +3203,7 @@ class spell_sha_unrelenting_storms : public SpellScript int64 targetLimit = 0; if (AuraEffect const* limitEffect = unrelentingStorms->GetEffect(EFFECT_0)) - targetLimit = limitEffect->GetAmount(); + targetLimit = limitEffect->GetAmountAsInt(); if (GetUnitTargetCountForEffect(effIndex) > targetLimit) return; @@ -3215,7 +3215,7 @@ class spell_sha_unrelenting_storms : public SpellScript shaman->CastSpell(shaman, SPELL_SHAMAN_UNRELENTING_STORMS_REDUCTION, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, -int32(CalculatePct(cooldown.count(), reductionPctEffect->GetAmount())) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, SpellEffectValue(-CalculatePct(cooldown.count(), reductionPctEffect->GetAmount())) } } }); } @@ -3253,7 +3253,7 @@ class spell_sha_voltaic_blaze : public SpellScript void EnergizeMaelstrom(SpellEffIndex /*effIndex*/) const { - spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetCaster(), GetEffectValue()); + spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon(GetCaster(), GetEffectValueAsInt()); } void Register() override @@ -3283,7 +3283,7 @@ class spell_sha_voltaic_blaze_talent : public AuraScript { static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -3370,7 +3370,7 @@ void WindfuryProcEvent::Trigger(Unit* shaman, Unit* target) } std::ptrdiff_t attacks = 2; - if (AuraEffect const* unrulyWinds = shaman->GetAuraEffect(SPELL_SHAMAN_UNRULY_WINDS, EFFECT_0); roll_chance_i(unrulyWinds->GetAmount())) + if (AuraEffect const* unrulyWinds = shaman->GetAuraEffect(SPELL_SHAMAN_UNRULY_WINDS, EFFECT_0); roll_chance_f(unrulyWinds->GetAmount())) ++attacks; shaman->m_Events.AddEventAtOffset(new WindfuryProcEvent(shaman, target, attacks), Sequence.front().Delay); diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 589e862dd60af..9dce0928d6d39 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -137,7 +137,7 @@ class spell_warl_absolute_corruption : public SpellScript if (Aura const* absoluteCorruption = GetCaster()->GetAura(SPELL_WARLOCK_ABSOLUTE_CORRUPTION)) { Milliseconds duration = GetHitUnit()->IsPvP() - ? Seconds(absoluteCorruption->GetSpellInfo()->GetEffect(EFFECT_0).CalcValue()) + ? Seconds(absoluteCorruption->GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt()) : Milliseconds(-1); GetHitAura()->SetMaxDuration(duration.count()); @@ -281,7 +281,7 @@ class spell_warl_burning_rush : public SpellScript { Unit* caster = GetCaster(); - if (caster->GetHealthPct() <= float(GetEffectInfo(EFFECT_1).CalcValue(caster))) + if (caster->GetHealthPct() <= GetEffectInfo(EFFECT_1).CalcValue(caster)) { SetCustomCastResultMessage(SPELL_CUSTOM_ERROR_YOU_DONT_HAVE_ENOUGH_HEALTH); return SPELL_FAILED_CUSTOM_ERROR; @@ -301,7 +301,7 @@ class spell_warl_burning_rush_aura : public AuraScript { void PeriodicTick(AuraEffect const* aurEff) { - if (GetTarget()->GetHealthPct() <= float(aurEff->GetAmount())) + if (GetTarget()->GetHealthPct() <= aurEff->GetAmount()) { PreventDefaultAction(); Remove(); @@ -467,7 +467,7 @@ class spell_warl_chaotic_energies : public AuraScript } // You take ${$s2/3}% reduced damage - float damageReductionPct = float(effect1->GetAmount()) / 3; + float damageReductionPct = effect1->GetAmount() / 3; // plus a random amount of up to ${$s2/3}% additional reduced damage damageReductionPct += frand(0.0f, damageReductionPct); @@ -534,13 +534,13 @@ class spell_warl_dark_pact : public AuraScript return ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 }, { spellInfo->Id, EFFECT_2 } }); } - void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& canBeRecalculated) + void CalculateAmount(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& canBeRecalculated) { canBeRecalculated = false; if (Unit* caster = GetCaster()) { float extraAmount = caster->SpellBaseDamageBonusDone(GetSpellInfo()->GetSchoolMask()) * 2.5f; - int32 absorb = caster->CountPctFromCurHealth(GetEffectInfo(EFFECT_1).CalcValue(caster)); + uint64 absorb = caster->CountPctFromCurHealth(GetEffectInfo(EFFECT_1).CalcValue(caster)); caster->SetHealth(caster->GetHealth() - absorb); amount = CalculatePct(absorb, GetEffectInfo(EFFECT_2).CalcValue(caster)) + extraAmount; } @@ -912,7 +912,7 @@ class spell_warl_perpetual_unstability : public SpellScript { if (Aura const* unstableAfflictionAura = target->GetAura(GetSpellInfo()->Id, caster->GetGUID())) { - Milliseconds maxUnstableAfflictionDuration = Seconds(perpetualUnstability->GetAmount()); + FloatSeconds maxUnstableAfflictionDuration(perpetualUnstability->GetAmount()); if (Milliseconds(unstableAfflictionAura->GetDuration()) <= maxUnstableAfflictionDuration) caster->CastSpell(target, SPELL_WARLOCK_PERPETUAL_UNSTABILITY_DAMAGE, CastSpellExtraArgs() .SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR) @@ -1165,7 +1165,7 @@ class spell_warl_seed_of_corruption_dummy_aura : public AuraScript caster->CastSpell(GetTarget(), SPELL_WARLOCK_SEED_OF_CORRUPTION_DAMAGE, aurEff); } - void CalculateBuffer(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) const + void CalculateBuffer(AuraEffect const* /*aurEff*/, SpellEffectValue& amount, bool& /*canBeRecalculated*/) const { Unit* caster = GetCaster(); if (!caster) @@ -1192,7 +1192,7 @@ class spell_warl_seed_of_corruption_dummy_aura : public AuraScript // other seed explosions detonate this instantly, no matter what damage amount is if (!damageInfo->GetSpellInfo() || damageInfo->GetSpellInfo()->Id != SPELL_WARLOCK_SEED_OF_CORRUPTION_DAMAGE) { - int32 amount = aurEff->GetAmount() - damageInfo->GetDamage(); + SpellEffectValue amount = aurEff->GetAmount() - damageInfo->GetDamage(); if (amount > 0) { aurEff->SetAmount(amount); @@ -1235,10 +1235,10 @@ class spell_warl_seed_of_corruption_generic : public AuraScript if (!damageInfo || !damageInfo->GetDamage()) return; - int32 amount = aurEff->GetAmount() - damageInfo->GetDamage(); + SpellEffectValue amount = aurEff->GetAmount() - damageInfo->GetDamage(); if (amount > 0) { - const_cast(aurEff)->SetAmount(amount); + aurEff->SetAmount(amount); return; } @@ -1706,7 +1706,7 @@ class spell_warl_unstable_affliction : public AuraScript if (!removedEffect) return; - int32 damage = GetEffectInfo(EFFECT_0).CalcValue(caster, nullptr, GetUnitOwner()) / 100.0f * *removedEffect->CalculateEstimatedAmount(caster, removedEffect->GetAmount()); + SpellEffectValue damage = GetEffectInfo(EFFECT_0).CalcValue(caster, nullptr, GetUnitOwner()) / 100.0 * *removedEffect->CalculateEstimatedAmount(caster, removedEffect->GetAmount()); caster->CastSpell(dispelInfo->GetDispeller(), SPELL_WARLOCK_UNSTABLE_AFFLICTION_DAMAGE, CastSpellExtraArgs() .AddSpellMod(SPELLVALUE_BASE_POINT0, damage) .SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR)); @@ -1774,7 +1774,7 @@ class spell_warl_volatile_agony : public SpellScript { if (Aura const* agonyAura = target->GetAura(GetSpellInfo()->Id, caster->GetGUID())) { - Milliseconds maxAgonyDuration = Seconds(volatileAgony->GetAmount()); + FloatSeconds maxAgonyDuration(volatileAgony->GetAmount()); if (Milliseconds(agonyAura->GetDuration()) <= maxAgonyDuration) caster->CastSpell(target, SPELL_WARLOCK_VOLATILE_AGONY_DAMAGE, CastSpellExtraArgs() .SetTriggerFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR) diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index edee2fc2c6671..e7e7203ed49c2 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -166,7 +166,7 @@ class spell_warr_anger_management_proc : public AuraScript { static bool ValidateProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo, ChrSpecialization spec) { - if (aurEff->GetAmount() == 0) + if (aurEff->GetAmountAsInt() == 0) return false; Player const* player = eventInfo.GetActor()->ToPlayer(); @@ -222,7 +222,7 @@ class spell_warr_anger_management_proc : public AuraScript void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo, std::span spellIds) const { int32 rageCost = *eventInfo.GetProcSpell()->GetPowerTypeCostAmount(POWER_RAGE) / 10; // db values are 10x the actual rage cost - float multiplier = static_cast(rageCost) / static_cast(aurEff->GetAmount()); + SpellEffectValue multiplier = static_cast(rageCost) / aurEff->GetAmount(); Milliseconds cooldownMod = -duration_cast(multiplier * CooldownReduction); for (int32 spellId : spellIds) @@ -310,7 +310,7 @@ class spell_warr_bloodsurge : public AuraScript Trinity::UnitWorker worker(caster, work); Cell::VisitAllObjects(caster, worker, 50.0f); - float chance = std::sqrt(rends) * aurEff->GetAmount(); + SpellEffectValue chance = std::sqrt(rends) * aurEff->GetAmount(); if (!roll_chance_f(chance)) return; @@ -624,7 +624,7 @@ class spell_warr_deft_experience : public SpellScript Unit const* caster = GetCaster(); if (Aura* enrageAura = caster->GetAura(SPELL_WARRIOR_ENRAGE)) if (AuraEffect const* aurEff = caster->GetAuraEffect(SPELL_WARRIOR_DEFT_EXPERIENCE, EFFECT_1)) - enrageAura->SetDuration(enrageAura->GetDuration() + (aurEff->GetAmount() * (IsHitCrit() ? 2 : 1))); + enrageAura->SetDuration(enrageAura->GetDuration() + (aurEff->GetAmountAsInt() * (IsHitCrit() ? 2 : 1))); } void Register() override @@ -645,7 +645,7 @@ class spell_warr_devastator : public AuraScript { if (GetTarget()->GetSpellHistory()->HasCooldown(SPELL_WARRIOR_SHIELD_SLAM)) { - if (roll_chance_i(GetEffectInfo(EFFECT_1).CalcValue())) + if (roll_chance_f(GetEffectInfo(EFFECT_1).CalcValue())) { GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_WARRIOR_SHIELD_SLAM, true); GetTarget()->CastSpell(GetTarget(), SPELL_WARRIOR_SHIELD_SLAM_MARKER, TRIGGERED_IGNORE_CAST_IN_PROGRESS); @@ -706,7 +706,7 @@ class spell_warr_enrage_proc : public AuraScript } } - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(ProcEventInfo const& eventInfo) @@ -768,7 +768,7 @@ class spell_warr_execute : public SpellScript if (Aura* suddenDeathAura = GetCaster()->GetAura(SPELL_WARRIOR_SUDDEN_DEATH_BUFF)) if (GetSpell()->m_appliedMods.contains(suddenDeathAura)) if (AuraEffect const* suddenDeathTalentAura = GetCaster()->GetAuraEffect(SPELL_WARRIOR_SUDDEN_DEATH, EFFECT_0)) - return suddenDeathTalentAura->GetAmount() * 10; + return suddenDeathTalentAura->GetAmountAsInt() * 10; return {}; } @@ -797,7 +797,7 @@ class spell_warr_execute : public SpellScript .BaseRageCost = baseCost, .OptionalRageCost = optionalCost, .DamageRageSpent = GetSuddenDeathRageCost().value_or(rageSpent), - .RefundRage = CalculatePct(rageSpent, GetEffectInfo(EFFECT_1).CalcValue()) + .RefundRage = CalculatePct(rageSpent, GetEffectInfo(EFFECT_1).CalcValueAsInt()) } }); } @@ -924,7 +924,7 @@ class spell_warr_frothing_berserker : public AuraScript .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = procSpell, .TriggeringAura = aurEff, - .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, CalculatePct(spentRage, aurEff->GetAmount()) } } + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, static_cast(CalculatePct(spentRage, aurEff->GetAmount())) } } }); } @@ -1193,15 +1193,15 @@ class spell_warr_improved_whirlwind : public SpellScript if (!caster) return; - int32 const ragePerTarget = GetEffectValue(); - int32 const baseRage = GetEffectInfo(EFFECT_0).CalcValue(); - int32 const maxRage = baseRage + (ragePerTarget * GetEffectInfo(EFFECT_2).CalcValue()); + int32 const ragePerTarget = GetEffectValueAsInt(); + int32 const baseRage = GetEffectInfo(EFFECT_0).CalcValueAsInt(); + int32 const maxRage = baseRage + (ragePerTarget * GetEffectInfo(EFFECT_2).CalcValueAsInt()); int32 const rageGained = std::min(baseRage + (targetsHit * ragePerTarget), maxRage); caster->CastSpell(nullptr, SPELL_WARRIOR_WHIRLWIND_ENERGIZE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = GetSpell(), - .SpellValueOverrides = {{ SPELLVALUE_BASE_POINT0, rageGained * 10 } } + .SpellValueOverrides = {{ SPELLVALUE_BASE_POINT0, SpellEffectValue(rageGained * 10) } } }); ApplyWhirlwindCleaveAura(caster, GetCastDifficulty(), GetSpell()); @@ -1424,7 +1424,7 @@ class spell_warr_item_t10_prot_4p_bonus : public AuraScript PreventDefaultAction(); Unit* target = eventInfo.GetActionTarget(); - int32 bp0 = CalculatePct(target->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue()); + SpellEffectValue bp0 = CalculatePct(target->GetMaxHealth(), GetEffectInfo(EFFECT_1).CalcValue()); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.AddSpellBP0(bp0); target->CastSpell(nullptr, SPELL_WARRIOR_STOICISM, args); @@ -1561,7 +1561,7 @@ class spell_warr_meat_cleaver_damage_bonus : public SpellScript int64 const targetCount = GetUnitTargetCountForEffect(spellEffectInfo.EffectIndex); - if (targetCount < minTargetCount->GetAmount()) + if (targetCount < minTargetCount->GetAmountAsInt()) return; if (AuraEffect const* aurEff = meatCleaver->GetEffect(EFFECT_0)) @@ -1635,14 +1635,14 @@ class spell_warr_raging_blow_cooldown_reset : public SpellScript { // it is currently impossible to have Wrath and Fury without having Improved Raging Blow, but we will check it anyway Unit* caster = GetCaster(); - int32 value = 0; + SpellEffectValue value = 0; if (caster->HasAura(SPELL_WARRIOR_IMPROVED_RAGING_BLOW)) value = GetEffectValue(); if (AuraEffect const* auraEffect = caster->GetAuraEffect(SPELL_WARRIOR_WRATH_AND_FURY, EFFECT_0)) value += auraEffect->GetAmount(); - if (roll_chance_i(value)) + if (roll_chance_f(value)) { caster->CastSpell(nullptr, SPELL_WARRIOR_ALWAYS_ANGRY, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -1674,7 +1674,7 @@ class spell_warr_rallying_cry : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { CastSpellExtraArgs args(TRIGGERED_FULL_MASK); - args.AddSpellMod(SPELLVALUE_BASE_POINT0, int32(GetHitUnit()->CountPctFromMaxHealth(GetEffectValue()))); + args.AddSpellMod(SPELLVALUE_BASE_POINT0, SpellEffectValue(GetHitUnit()->CountPctFromMaxHealth(GetEffectValue()))); GetCaster()->CastSpell(GetHitUnit(), SPELL_WARRIOR_RALLYING_CRY, args); } @@ -1746,8 +1746,8 @@ class spell_warr_rumbling_earth : public SpellScript if (!minTargetCount || !cooldownReduction) return; - if (GetUnitTargetCountForEffect(EFFECT_0) >= minTargetCount->GetAmount()) - GetCaster()->GetSpellHistory()->ModifyCooldown(GetSpellInfo()->Id, Seconds(-cooldownReduction->GetAmount())); + if (GetUnitTargetCountForEffect(EFFECT_0) >= minTargetCount->GetAmountAsInt()) + GetCaster()->GetSpellHistory()->ModifyCooldown(GetSpellInfo()->Id, -duration_cast(FloatSeconds(cooldownReduction->GetAmount()))); } void Register() override @@ -1873,7 +1873,7 @@ class spell_warr_strategist : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*procEvent*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleCooldown(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*procEvent*/) const @@ -2000,7 +2000,7 @@ class spell_warr_tactician : public AuraScript if (!procSpell->CalcPowerCost(POWER_RAGE, false, eventInfo.GetActor(), SpellSchoolMask(procSpell->SchoolMask))) return false; - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) @@ -2047,7 +2047,7 @@ class spell_warr_tenderize : public AuraScript target->CastSpell(nullptr, SPELL_WARRIOR_SLAUGHTERING_STRIKES_BUFF, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = eventInfo.GetProcSpell(), - .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, aurEff->GetAmount() } } + .SpellValueOverrides = { { SPELLVALUE_AURA_STACK, aurEff->GetAmountAsInt() } } }); } @@ -2083,7 +2083,7 @@ class spell_warr_thunder_blast_aura : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_i(aurEff->GetAmount()); + return roll_chance_f(aurEff->GetAmount()); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const @@ -2193,7 +2193,7 @@ class spell_warr_trauma : public AuraScript { Unit* target = eventInfo.GetActionTarget(); //Get 25% of damage from the spell casted (Slam & Whirlwind) plus Remaining Damage from Aura - int32 damage = int32(CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()) / sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_TRAUMA_EFFECT, GetCastDifficulty())->GetEffect(EFFECT_0).GetPeriodicTickCount()); + SpellEffectValue damage = CalculatePct(eventInfo.GetDamageInfo()->GetDamage(), aurEff->GetAmount()) / sSpellMgr->AssertSpellInfo(SPELL_WARRIOR_TRAUMA_EFFECT, GetCastDifficulty())->GetEffect(EFFECT_0).GetPeriodicTickCount(); CastSpellExtraArgs args(TRIGGERED_FULL_MASK); args.AddSpellMod(SPELLVALUE_BASE_POINT0, damage); GetCaster()->CastSpell(target, SPELL_WARRIOR_TRAUMA_EFFECT, args); @@ -2240,7 +2240,7 @@ class spell_warr_unbridled_ferocity : public AuraScript void HandleProc(ProcEventInfo& /*eventInfo*/) const { - int32 durationMs = GetEffect(EFFECT_1)->GetAmount(); + int32 durationMs = GetEffect(EFFECT_1)->GetAmountAsInt(); GetTarget()->CastSpell(nullptr, SPELL_WARRIOR_RECKLESSNESS, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD, @@ -2250,7 +2250,7 @@ class spell_warr_unbridled_ferocity : public AuraScript bool CheckProc(ProcEventInfo& /*eventInfo*/) const { - return roll_chance_i(GetEffect(EFFECT_0)->GetAmount()); + return roll_chance_f(GetEffect(EFFECT_0)->GetAmount()); } void Register() override diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 45cfcd40ceb53..407262b888917 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -519,7 +519,7 @@ struct at_abyssal_portal_harbinger : AreaTriggerAI void OnCreate(Spell const* creatingSpell) override { if (Unit* caster = at->GetCaster()) - _remainingSummons = creatingSpell->GetSpellInfo()->GetEffect(EFFECT_0).CalcValue(caster); + _remainingSummons = creatingSpell->GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt(caster); _scheduler.Schedule(500ms, [this](TaskContext task) { diff --git a/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp b/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp index 24153b4f79ebf..6f6533c10474f 100644 --- a/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp +++ b/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp @@ -401,7 +401,7 @@ class spell_priestess_alun_za_energy_regen : public AuraScript { void OnPeriodic(AuraEffect const* aurEff) const { - GetTarget()->ModifyPower(POWER_ENERGY, aurEff->GetAmount() / 10); + GetTarget()->ModifyPower(POWER_ENERGY, aurEff->GetAmountAsInt() / 10); } void Register() override @@ -415,7 +415,7 @@ class spell_priestess_alun_za_agitate : public SpellScript { void HandleScript(SpellEffIndex /*effIndex*/) const { - GetCaster()->CastSpell(GetHitUnit(), GetEffectValue(), CastSpellExtraArgsInit{ + GetCaster()->CastSpell(GetHitUnit(), GetEffectValueAsInt(), CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = GetSpell(), }); @@ -442,7 +442,7 @@ class spell_priestess_alun_za_molten_gold : public AuraScript return; Unit* target = GetTarget(); - target->CastSpell(target, aurEff->GetAmount(), CastSpellExtraArgsInit{ + target->CastSpell(target, aurEff->GetAmountAsInt(), CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff }); @@ -580,7 +580,7 @@ class spell_priestess_alun_za_transfusion_heal : public SpellScript { void HandleHitTarget(SpellEffIndex /*effIndex*/) { - SetEffectValue(GetEffectValue() / 100); + SetEffectValue(GetEffectValue() / 100.0); } void Register() override @@ -594,7 +594,7 @@ class spell_priestess_alun_za_transfusion_damage : public SpellScript { void HandleHitTarget(SpellEffIndex /*effIndex*/) { - SetEffectValue(GetEffectValue() / 100); + SetEffectValue(GetEffectValue() / 100.0); } void Register() override diff --git a/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp b/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp index e09a06c665c19..ff9abd0922c8d 100644 --- a/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp +++ b/src/server/scripts/Zandalar/AtalDazar/boss_volkaal.cpp @@ -267,7 +267,7 @@ class spell_volkaal_lingering_nausea : public AuraScript Unit* target = GetTarget(); if (Unit* caster = GetCaster()) - caster->CastSpell(target, aurEff->GetAmount(), CastSpellExtraArgsInit{ + caster->CastSpell(target, aurEff->GetAmountAsInt(), CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff }); diff --git a/src/server/scripts/Zandalar/Underrot/boss_elder_leaxa.cpp b/src/server/scripts/Zandalar/Underrot/boss_elder_leaxa.cpp index a22a79be16d24..3e45f91446d36 100644 --- a/src/server/scripts/Zandalar/Underrot/boss_elder_leaxa.cpp +++ b/src/server/scripts/Zandalar/Underrot/boss_elder_leaxa.cpp @@ -212,13 +212,13 @@ class spell_sanguine_feast_selector : public SpellScript { bool Validate(SpellInfo const* spellInfo) override { - return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) }); + return ValidateSpellEffect({ { spellInfo->Id, EFFECT_0 } }) && ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValueAsInt()) }); } void HandleHit(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); - caster->CastSpell(GetHitUnit(), uint32(GetEffectInfo().CalcValue(caster))); + caster->CastSpell(GetHitUnit(), uint32(GetEffectInfo().CalcValueAsInt(caster))); } void Register() override From 729271454bf488720340fbd1bdb49dcf53912365 Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Thu, 9 Apr 2026 00:24:56 +0200 Subject: [PATCH 039/175] Scripts/MurderRow: Implement Kystia Manaheart encounter (#31722) --- .../world/master/2026_04_08_01_world.sql | 111 ++++ .../MurderRow/boss_kystia_manaheart.cpp | 558 ++++++++++++++++++ .../MurderRow/instance_murder_row.cpp | 77 +++ .../scripts/QuelThalas/MurderRow/murder_row.h | 65 ++ .../QuelThalas/quel_thalas_script_loader.cpp | 31 + 5 files changed, 842 insertions(+) create mode 100644 sql/updates/world/master/2026_04_08_01_world.sql create mode 100644 src/server/scripts/QuelThalas/MurderRow/boss_kystia_manaheart.cpp create mode 100644 src/server/scripts/QuelThalas/MurderRow/instance_murder_row.cpp create mode 100644 src/server/scripts/QuelThalas/MurderRow/murder_row.h create mode 100644 src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp diff --git a/sql/updates/world/master/2026_04_08_01_world.sql b/sql/updates/world/master/2026_04_08_01_world.sql new file mode 100644 index 0000000000000..ff5432884f0fc --- /dev/null +++ b/sql/updates/world/master/2026_04_08_01_world.sql @@ -0,0 +1,111 @@ +SET @CGUID := 11000647; +SET @OGUID := 11000019; + +-- Creatures +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+1; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 234648, 2813, 16091, 16091, '1,2,8,23,205', '0', 0, 0, 0, 8858.5732421875, -4841.0869140625, -6.9904031753540039, 4.624201774597167968, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66220), -- Kystia Manaheart (Area: Murder Row - Difficulty: 0) CreateObject1 (Auras: 474365 - Fel Crazed, 422356 - Bot AI Follow Advert, 1217989 - Felshield, 1217464 - Illicit Infusion) (possible waypoints or random movement) +(@CGUID+1, 234660, 2813, 16091, 16091, '1,2,8,23,205', '0', 0, 0, 0, 8858.5732421875, -4850.85400390625, -6.9904031753540039, 1.564232110977172851, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66220); -- Nibbles (Area: Murder Row - Difficulty: 0) CreateObject1 (Auras: 1230289 - Illicit Infusion) + +DELETE FROM `creature_template_addon` WHERE `entry` IN (234648, 255050, 234660); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(234648, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, '422356'), -- 234648 (Kystia Manaheart) - Bot AI Follow Advert +(255050, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1264103'), -- 255050 (Kystia Manaheart) - VFX +(234660, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, '1230289'); -- 234660 (Nibbles) - Illicit Infusion + +DELETE FROM `creature_template_difficulty` WHERE (`DifficultyID`=1 AND `Entry` IN (234648, 234660, 255050)); +INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `HealthScalingExpansion`, `HealthModifier`, `ManaModifier`, `CreatureDifficultyID`, `TypeFlags`, `TypeFlags2`, `TypeFlags3`) VALUES +(255050, 1, 11, 10, 1, 335959, 0x1000000, 128, 0), -- Kystia Manaheart +(234648, 1, 11, 30, 1, 286375, 0x200068, 4224, 0), -- Kystia Manaheart +(234660, 1, 11, 12, 1, 286387, 0x200068, 128, 0); -- Nibbles + +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=3233, `StaticFlags1`=0x10000000, `VerifiedBuild`=66220 WHERE (`Entry`=234660 AND `DifficultyID`=1); -- 234660 (Nibbles) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=3233, `StaticFlags1`=0x10000000, `VerifiedBuild`=66220 WHERE (`Entry`=234648 AND `DifficultyID`=1); -- 234648 (Kystia Manaheart) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=2, `LevelScalingDeltaMax`=2, `ContentTuningID`=3233, `VerifiedBuild`=66220 WHERE (`Entry`=255050 AND `DifficultyID`=1); -- 255050 (Kystia Manaheart) - + +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags`=0x40, `ScriptName`='boss_kystia_manaheart' WHERE `entry`=234648; -- Kystia Manaheart +UPDATE `creature_template` SET `faction`=16, `speed_run`=1, `BaseAttackTime`=2400, `unit_flags`=0x000, `unit_flags3`=0x800001, `ScriptName`='boss_kystia_manaheart_nibbles' WHERE `entry`=234660; -- Nibbles +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags2`=0x800, `AIName`= 'SmartAI' WHERE `entry`=255050; -- Kystia Manaheart + +DELETE FROM `creature_equip_template` WHERE (`ID`=1 AND `CreatureID` IN (234648)); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES +(234648, 1, 208225, 0, 0, 0, 0, 0, 0, 0, 0, 66220); -- Kystia Manaheart + +DELETE FROM `creature_model_info` WHERE `DisplayID` IN (126199, 124578, 138932); +INSERT INTO `creature_model_info` (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`, `VerifiedBuild`) VALUES +(124578, 0.765999972820281982, 3, 0, 66220), +(138932, 0.765999972820281982, 3, 0, 66220), +(126199, 2.475043296813964843, 4, 0, 66220); + +-- Gameobjects +DELETE FROM `gameobject` WHERE `guid` = @OGUID+0; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 618401, 2813, 16091, 16091, '1,2,8,23,205', '0', 0, 8817.5693359375, -4840.35400390625, -9.61550140380859375, 3.132858037948608398, 0, 0, 0.999990463256835937, 0.004367320332676172, 7200, 255, 0, 66220); -- Fel Door (Area: Murder Row - Difficulty: 0) CreateObject1 + +DELETE FROM `gameobject_template` WHERE `entry` = 618401; +INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `unk1`, `size`, `Data0`, `Data1`, `Data2`, `Data3`, `Data4`, `Data5`, `Data6`, `Data7`, `Data8`, `Data9`, `Data10`, `Data11`, `Data12`, `Data13`, `Data14`, `Data15`, `Data16`, `Data17`, `Data18`, `Data19`, `Data20`, `Data21`, `Data22`, `Data23`, `Data24`, `Data25`, `Data26`, `Data27`, `Data28`, `Data29`, `Data30`, `Data31`, `Data32`, `Data33`, `Data34`, `RequiredLevel`, `ContentTuningId`, `VerifiedBuild`) VALUES +(618401, 0, 118294,'Fel Door', '', '', 1.800000429153442382, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66220); -- Fel Door + +DELETE FROM `gameobject_template_addon` WHERE `entry` = 618401; +INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`, `WorldEffectID`, `AIAnimKitID`) VALUES +(618401, 0, 0x30, 0, 0); -- Fel Door + +-- Areatrigger +DELETE FROM `areatrigger_create_properties` WHERE (`IsCustom`=0 AND `Id` IN (36175,36260,36030,36393,2329,39934,36242,36356,36048,39560,36081,39834,26730,23866,2442,32530,30795,41463,41462)); +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Speed`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(39560, 0, 41022, 0, 2, 0, 0, 0, 0, -1, 0, 0, NULL, 5000, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 'at_kystia_manaheart_fel_spray', 66220); -- Spell: 1253811 (Fel Spray) + +DELETE FROM `areatrigger_create_properties_polygon_vertex` WHERE (`AreaTriggerCreatePropertiesId`=39560 AND `IsCustom`=0 AND `Idx`=0) OR (`AreaTriggerCreatePropertiesId`=39560 AND `IsCustom`=0 AND `Idx`=1) OR (`AreaTriggerCreatePropertiesId`=39560 AND `IsCustom`=0 AND `Idx`=2) OR (`AreaTriggerCreatePropertiesId`=39560 AND `IsCustom`=0 AND `Idx`=3); +INSERT INTO `areatrigger_create_properties_polygon_vertex` (`AreaTriggerCreatePropertiesId`, `IsCustom`, `Idx`, `VerticeX`, `VerticeY`, `VerticeTargetX`, `VerticeTargetY`, `VerifiedBuild`) VALUES +(39560, 0, 0, 0, 1, NULL, NULL, 66220), -- Spell: 1253811 (Fel Spray) +(39560, 0, 1, 0, -1, NULL, NULL, 66220), -- Spell: 1253811 (Fel Spray) +(39560, 0, 2, 60, -45, NULL, NULL, 66220), -- Spell: 1253811 (Fel Spray) +(39560, 0, 3, 60, 45, NULL, NULL, 66220); -- Spell: 1253811 (Fel Spray) + +DELETE FROM `areatrigger_template` WHERE (`IsCustom`=0 AND `Id` IN (41022)); +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `VerifiedBuild`) VALUES +(41022, 0, 66220); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=2 AND `SourceEntry`=1217464; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 2, 1217464, 0, 0, 51, 0, 5, 234660, 0, '', 0, 0, 0, '', 'Spell \'Illicit Infusion\' can only hit \'Nibbles\''); + +-- Instance +DELETE FROM `instance_template` WHERE `map`=2813; +INSERT INTO `instance_template` (`map`, `parent`, `script`) VALUES +(2813, 0, 'instance_murder_row'); + +-- SAI +DELETE FROM `smart_scripts` WHERE `entryorguid` = 255050 AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(255050, 0, 0, 0, '', 11, 0, 100, 0, 0, 0, 0, 0, 0, '', 11, 1264106, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'Kystia Manaheart (copy) - On Respawn - Cast \'Felstorm\''); + +-- Spells +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_kystia_manaheart_felstorm', 'spell_kystia_manaheart_mirror_images', 'spell_kystia_manaheart_mirror_image', 'spell_kystia_manaheart_light_infusion', 'spell_kystia_manaheart_fel_crazed', 'spell_kystia_manaheart_fel_nova_selector', 'spell_kystia_manaheart_blink'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(1264095, 'spell_kystia_manaheart_mirror_images'), +(1264098, 'spell_kystia_manaheart_mirror_image'), +(1230304, 'spell_kystia_manaheart_light_infusion'), +(474365, 'spell_kystia_manaheart_fel_crazed'), +(474240, 'spell_kystia_manaheart_fel_nova_selector'), +(1264106, 'spell_kystia_manaheart_felstorm'), +(474183, 'spell_kystia_manaheart_blink'); + +-- Texts +DELETE FROM `creature_text` WHERE `CreatureID` IN (234648, 234660); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(234648, 0, 0, 'Let\'s make an example of you.', 14, 0, 100, 0, 0, 306490, 281368, 0, 'Kystia Manaheart'), +(234648, 1, 0, 'Flee the flame!', 14, 0, 50, 0, 0, 299094, 297213, 0, 'Kystia Manaheart'), +(234648, 1, 1, 'Fear the fel!', 14, 0, 50, 0, 0, 299095, 297214, 0, 'Kystia Manaheart'), +(234648, 2, 0, 'Learn your place!', 14, 0, 50, 0, 0, 299093, 297210, 0, 'Kystia Manaheart'), +(234648, 2, 1, 'Back, you mongrels!', 14, 0, 50, 0, 0, 299092, 297209, 0, 'Kystia Manaheart'), +(234648, 3, 0, 'Naughty little Nibbles!', 14, 0, 50, 0, 0, 299096, 297215, 0, 'Kystia Manaheart to Nibbles'), +(234648, 3, 1, 'Nibbles! Drop it!', 14, 0, 50, 0, 0, 299097, 297216, 0, 'Kystia Manaheart to Nibbles'), +(234648, 4, 0, 'Ahh, just what I needed.', 14, 0, 50, 0, 0, 299091, 297208, 0, 'Kystia Manaheart'), +(234648, 4, 1, 'Nibbles, give mother a taste!', 14, 0, 50, 0, 0, 299090, 297206, 0, 'Kystia Manaheart'), +(234648, 5, 0, 'But... my... magic...', 14, 0, 100, 0, 0, 299088, 297202, 0, 'Kystia Manaheart to Player'), +(234648, 6, 0, 'Fel conquers all.', 14, 0, 100, 0, 0, 299087, 297199, 0, 'Kystia Manaheart'), +(234660, 0, 0, '|TInterface\\ICONS\\Spell_Paladin_Lightofdawn.blp:20|t %s casts |cFFFF0000|Hspell:1230304|h[Light Infusion]|h|r at Kystia!', 68, 0, 100, 0, 0, 0, 0, 0, 'Nibbles to Kystia Manaheart'), +(234660, 1, 0, '|TInterface\\ICONS\\Spell_Fire_FelFlameBreath.blp:20|t %s begins casting |cFFFF0000|Hspell:1253811|h[Fel Spray]|h|r!', 68, 0, 100, 0, 0, 0, 0, 0, 'Nibbles to Player'), +(234660, 2, 0, '%s makes her escape.', 68, 0, 100, 0, 0, 299088, 280475, 0, 'Nibbles to Nibbles'); diff --git a/src/server/scripts/QuelThalas/MurderRow/boss_kystia_manaheart.cpp b/src/server/scripts/QuelThalas/MurderRow/boss_kystia_manaheart.cpp new file mode 100644 index 0000000000000..43a24c6da27f3 --- /dev/null +++ b/src/server/scripts/QuelThalas/MurderRow/boss_kystia_manaheart.cpp @@ -0,0 +1,558 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "AreaTrigger.h" +#include "AreaTriggerAI.h" +#include "Creature.h" +#include "InstanceScript.h" +#include "Map.h" +#include "MotionMaster.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellInfo.h" +#include "SpellMgr.h" +#include "SpellScript.h" +#include "murder_row.h" + +namespace Scripts::QuelThalas::MurderRow::KystiaManaheart +{ + namespace Spells + { + static constexpr uint32 IllicitInfusionVisual = 1217464; + static constexpr uint32 FelCrazed = 474365; + static constexpr uint32 Felshield = 1217989; + static constexpr uint32 MirrorImages = 1264095; + static constexpr uint32 MirrorImage = 1264098; + static constexpr uint32 ChaosBarrage = 1230298; + static constexpr uint32 IllicitInfusion = 1230289; + static constexpr uint32 IllicitInfusionCast = 474238; + static constexpr uint32 FelNova = 1223906; + static constexpr uint32 FelNovaSelector = 474240; + static constexpr uint32 Blink = 474183; + + // Nibbles + static constexpr uint32 FelSpray = 1253811; + static constexpr uint32 FelSprayDamage = 1253813; + static constexpr uint32 CorrodingSpittle = 1228198; + static constexpr uint32 LightInfusion = 1230304; + static constexpr uint32 Destabilized = 1265412; + static constexpr uint32 Escape = 1248184; + } + + namespace Texts + { + // Kystia + static constexpr uint8 Aggro = 0; + static constexpr uint8 MirrorImages = 1; + static constexpr uint8 FelNova = 2; + static constexpr uint8 Destabilized = 3; + static constexpr uint8 IllicitInfusion = 4; + static constexpr uint8 Death = 5; + static constexpr uint8 Wipe = 6; + + // Nibbles + static constexpr uint8 LightInfusion = 0; + static constexpr uint8 FelSprayWarning = 1; + static constexpr uint8 Escape = 2; + } + + namespace Events + { + // Kystia + static constexpr uint8 ChaosBarrage = 1; + static constexpr uint8 MirrorImages = 2; + static constexpr uint8 FelNova = 3; + + // Nibbles + static constexpr uint8 FelSpray = 4; + static constexpr uint8 CorrodingSpittle = 5; + static constexpr uint8 CheckHealth = 6; + } + + namespace Positions + { + static constexpr Position NibblesEscapePosition = { 8861.71f, -4843.24f, 13.0376f }; + } + + namespace Points + { + static constexpr uint8 PointEscape = 0; + } + + namespace SpellVisuals + { + static constexpr uint32 SpellVisualNibblesFriendly = 229191; + static constexpr uint32 SpellVisualNibblesUnfriendly = 249081; + } + + namespace DisplayIds + { + static constexpr uint32 DisplayFriendly = 128332; + static constexpr uint32 DisplayUnfriendly = 126199; + } + +// 234648 - Kystia Manaheart +struct boss_kystia_manaheart : public BossAI +{ + boss_kystia_manaheart(Creature* creature) : BossAI(creature, DATA_KYSTIA_MANAHEART), _felshieldCount(0) { } + + void JustAppeared() override + { + DoCastSelf(Spells::FelCrazed, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + DoCast(Spells::IllicitInfusionVisual); + } + + void Reset() override + { + _Reset(); + _felshieldCount = 0; + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(Texts::Death); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + instance->SetBossState(DATA_KYSTIA_MANAHEART, DONE); + + if (Creature* nibbles = instance->GetCreature(DATA_NIBBLES)) + { + nibbles->SetDisplayId(DisplayIds::DisplayFriendly); + nibbles->SetAnimTier(AnimTier::Fly, true); + nibbles->SetDisableGravity(true); + nibbles->SetPlayHoverAnim(true); + nibbles->CastSpell(nibbles, Spells::Escape, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + nibbles->AI()->Talk(Texts::Escape); + nibbles->GetMotionMaster()->MovePoint(Points::PointEscape, Positions::NibblesEscapePosition); + } + } + + void OnChannelFinished(SpellInfo const* spell) override + { + if (spell->Id != Spells::IllicitInfusionCast) + return; + + uint8 stackAmount = 3 - _felshieldCount; + if (stackAmount == 0) + stackAmount = 1; + + DoCastSelf(Spells::Felshield, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellMod(SPELLVALUE_AURA_STACK, stackAmount)); + _felshieldCount++; + + if (Creature* nibbles = instance->GetCreature(DATA_NIBBLES)) + { + nibbles->SendPlaySpellVisualKit(SpellVisuals::SpellVisualNibblesUnfriendly, 0, 0); + nibbles->SetDisplayId(DisplayIds::DisplayUnfriendly); + nibbles->ClearUnitState(UNIT_STATE_ROOT); + nibbles->CastSpell(nibbles, Spells::IllicitInfusion, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + } + + void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override + { + if (spellInfo->Id == Spells::Destabilized) + Talk(Texts::Destabilized); + } + + void OnSpellStart(SpellInfo const* spellInfo) override + { + if (spellInfo->Id == Spells::IllicitInfusionCast) + { + Talk(Texts::IllicitInfusion); + + if (Creature* nibbles = instance->GetCreature(DATA_NIBBLES)) + nibbles->AddUnitState(UNIT_STATE_ROOT); + } + } + + void EnterEvadeMode(EvadeReason why) override + { + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + instance->SetBossState(DATA_KYSTIA_MANAHEART, FAIL); + + Talk(Texts::Wipe); + + summons.DespawnAll(); + _EnterEvadeMode(); + _DespawnAtEvade(); + + if (Creature* nibbles = instance->GetCreature(DATA_NIBBLES)) + nibbles->AI()->EnterEvadeMode(why); + } + + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + Talk(Texts::Aggro); + + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1); + instance->SetBossState(DATA_KYSTIA_MANAHEART, IN_PROGRESS); + + if (Creature* nibbles = instance->GetCreature(DATA_NIBBLES)) + nibbles->AI()->DoZoneInCombat(); + + events.ScheduleEvent(Events::ChaosBarrage, 1s); + events.ScheduleEvent(Events::MirrorImages, 14s); + + if (IsHeroicOrHigher()) + events.ScheduleEvent(Events::FelNova, 12s); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case Events::ChaosBarrage: + { + DoCastVictim(Spells::ChaosBarrage, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + events.Repeat(3500ms); + break; + } + case Events::MirrorImages: + { + Talk(Texts::MirrorImages); + DoCastSelf(Spells::MirrorImages, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + events.Repeat(30500ms); + break; + } + case Events::FelNova: + { + Talk(Texts::FelNova); + DoCast(Spells::FelNovaSelector); + events.Repeat(15s); + break; + } + default: + break; + } + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + } + } + +private: + uint8 _felshieldCount; +}; + +// 234660 - Nibbles +struct boss_kystia_manaheart_nibbles : public BossAI +{ + boss_kystia_manaheart_nibbles(Creature* creature) : BossAI(creature, DATA_NIBBLES) + { + SetBoundary(instance->GetBossBoundary(DATA_KYSTIA_MANAHEART)); + me->SetUnkillable(true); + } + + void EnterEvadeMode(EvadeReason /*why*/) override + { + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + + _EnterEvadeMode(); + _DespawnAtEvade(); + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + if (id == Points::PointEscape) + { + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + me->DespawnOrUnsummon(); + } + } + + void JustEngagedWith(Unit* /*who*/) override + { + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 2); + + if (Creature* kystia = instance->GetCreature(DATA_KYSTIA_MANAHEART)) + kystia->AI()->DoZoneInCombat(); + + events.ScheduleEvent(Events::CheckHealth, 1s); + events.ScheduleEvent(Events::FelSpray, 8s); + events.ScheduleEvent(Events::CorrodingSpittle, 4500ms); + } + + void OnChannelFinished(SpellInfo const* spell) override + { + if (spell->Id != Spells::LightInfusion) + return; + + if (Creature* kystia = instance->GetCreature(DATA_KYSTIA_MANAHEART)) + kystia->CastSpell(me, Spells::IllicitInfusionCast, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void UpdateAI(uint32 diff) override + { + if (me->GetFaction() == FACTION_FRIENDLY) + return; + + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case Events::FelSpray: + { + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) + DoCast(target, Spells::FelSpray, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + Talk(Texts::FelSprayWarning); + events.Repeat(51s); + break; + } + case Events::CorrodingSpittle: + { + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) + DoCast(target, Spells::CorrodingSpittle, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + events.Repeat(14500ms); + break; + } + case Events::CheckHealth: + { + SpellInfo const* illicitInfusion = sSpellMgr->AssertSpellInfo(Spells::IllicitInfusion, DIFFICULTY_NONE); + if (me->GetHealthPct() < illicitInfusion->GetEffect(EFFECT_0).CalcValue(me)) + { + me->RemoveAurasDueToSpell(Spells::IllicitInfusion); + me->InterruptNonMeleeSpells(true); + me->AttackStop(); + me->SetFaction(FACTION_FRIENDLY); + me->SendPlaySpellVisualKit(SpellVisuals::SpellVisualNibblesFriendly, 0, 0); + me->SetDisplayId(DisplayIds::DisplayFriendly); + + if (Creature* kystia = instance->GetCreature(DATA_KYSTIA_MANAHEART)) + { + DoCast(kystia, Spells::LightInfusion, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + Talk(Texts::LightInfusion); + } + + events.RescheduleEvent(Events::CheckHealth, 15s); + } + events.Repeat(1s); + break; + } + default: + break; + } + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + } + } +}; + +// 1230304 - Light Infusion +class spell_kystia_manaheart_light_infusion : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo ({ Spells::Destabilized }); + } + + void HandleStun(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + Unit* target = GetTarget(); + target->CastSpell(target, Spells::Destabilized, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_kystia_manaheart_light_infusion::HandleStun, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 1264095 - Mirror Images +class spell_kystia_manaheart_mirror_images : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ Spells::MirrorImage }); + } + + void HandlePeriodicEffect(AuraEffect const* aurEff) const + { + Unit* target = GetTarget(); + target->CastSpell(target, Spells::MirrorImage, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_kystia_manaheart_mirror_images::HandlePeriodicEffect, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } +}; + +// 1264098 - Mirror Image +class spell_kystia_manaheart_mirror_image : public SpellScript +{ + void SetDest(SpellDestination& dest) const + { + dest.RelocateOffset({ frand(-30.0f, 25.0f), frand(-15.0f, 26.0f), 0.0f, 0.0f }); + } + + void Register() override + { + OnDestinationTargetSelect += SpellDestinationTargetSelectFn(spell_kystia_manaheart_mirror_image::SetDest, EFFECT_0, TARGET_DEST_DEST); + } +}; + +// 474240 - Fel Nova +class spell_kystia_manaheart_fel_nova_selector : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ Spells::Blink }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + GetCaster()->CastSpell(GetHitUnit(), Spells::Blink, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_kystia_manaheart_fel_nova_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 474183 - Blink +class spell_kystia_manaheart_blink : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ Spells::FelNova }); + } + + void HandleCast() const + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, Spells::FelNova, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_kystia_manaheart_blink::HandleCast); + } +}; + +// 474365 - Fel Crazed +class spell_kystia_manaheart_fel_crazed : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ Spells::Felshield }); + } + + void HandleFelshield(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + + Unit* caster = GetCaster(); + caster->CastSpell(caster, Spells::Felshield, CastSpellExtraArgs() + .SetTriggerFlags(TRIGGERED_FULL_MASK) + .SetTriggeringSpell(GetSpell()) + .AddSpellMod(SPELLVALUE_AURA_STACK, 4)); + } + + void Register() override + { + OnEffectLaunch += SpellEffectFn(spell_kystia_manaheart_fel_crazed::HandleFelshield, EFFECT_1, SPELL_EFFECT_TRIGGER_SPELL); + } +}; + +// 1264106 - Felstorm +class spell_kystia_manaheart_felstorm : public AuraScript +{ + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Creature* targetCreature = GetTarget()->ToCreature()) + targetCreature->DespawnOrUnsummon(1ms); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_kystia_manaheart_felstorm::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 1253811 - Fel Spray +// ID - 39560 +struct at_kystia_manaheart_fel_spray : AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + Unit* caster = at->GetCaster(); + if (!caster) + return; + + if (!unit->IsPlayer()) + return; + + caster->CastSpell(unit, Spells::FelSprayDamage, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void OnUnitExit(Unit* unit, AreaTriggerExitReason /*reason*/) override + { + unit->RemoveAurasDueToSpell(Spells::FelSprayDamage); + } +}; +} + +void AddSC_boss_kystia_manaheart() +{ + using namespace Scripts::QuelThalas::MurderRow::KystiaManaheart; + + RegisterMurderRowCreatureAI(boss_kystia_manaheart); + RegisterMurderRowCreatureAI(boss_kystia_manaheart_nibbles); + + RegisterSpellScript(spell_kystia_manaheart_light_infusion); + RegisterSpellScript(spell_kystia_manaheart_mirror_images); + RegisterSpellScript(spell_kystia_manaheart_mirror_image); + RegisterSpellScript(spell_kystia_manaheart_fel_nova_selector); + RegisterSpellScript(spell_kystia_manaheart_blink); + RegisterSpellScript(spell_kystia_manaheart_fel_crazed); + RegisterSpellScript(spell_kystia_manaheart_felstorm); + + RegisterAreaTriggerAI(at_kystia_manaheart_fel_spray); +} diff --git a/src/server/scripts/QuelThalas/MurderRow/instance_murder_row.cpp b/src/server/scripts/QuelThalas/MurderRow/instance_murder_row.cpp new file mode 100644 index 0000000000000..9189efbd839af --- /dev/null +++ b/src/server/scripts/QuelThalas/MurderRow/instance_murder_row.cpp @@ -0,0 +1,77 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "AreaBoundary.h" +#include "InstanceScript.h" +#include "ScriptMgr.h" +#include "murder_row.h" + +BossBoundaryData const boundaries = +{ + { DATA_KYSTIA_MANAHEART, new ZRangeBoundary(-8.0f, 4.50f) } +}; + +static constexpr ObjectData creatureData[] = +{ + { BOSS_KYSTIA_MANAHEART, DATA_KYSTIA_MANAHEART }, + { BOSS_ZAEN_BLADESORROW, DATA_ZAEN_BLADESORROW }, + { BOSS_XATHUUX_THE_ANNIHILATOR, DATA_XATHUUX_THE_ANNIHILATOR }, + { BOSS_LITHIEL_CINDERFURY, DATA_LITHIEL_CINDERFURY }, + { NPC_NIBBLES, DATA_NIBBLES } +}; + +static constexpr DungeonEncounterData const encounters[] = +{ + { DATA_KYSTIA_MANAHEART, {{ 3101 }} }, + { DATA_ZAEN_BLADESORROW, {{ 3102 }} }, + { DATA_XATHUUX_THE_ANNIHILATOR, {{ 3103 }} }, + { DATA_LITHIEL_CINDERFURY, {{ 3105 }} } +}; + +static constexpr DoorData doorData[] = +{ + { GO_FEL_DOOR, DATA_KYSTIA_MANAHEART, EncounterDoorBehavior::OpenWhenNotInProgress } +}; + +class instance_murder_row : public InstanceMapScript +{ +public: + instance_murder_row() : InstanceMapScript(MRScriptName, 2813) { } + + struct instance_murder_row_InstanceMapScript: public InstanceScript + { + instance_murder_row_InstanceMapScript(InstanceMap* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + SetBossNumber(EncounterCount); + LoadObjectData(creatureData, {}); + LoadDoorData(doorData); + LoadBossBoundaries(boundaries); + LoadDungeonEncounterData(encounters); + } + }; + + InstanceScript* GetInstanceScript(InstanceMap* map) const override + { + return new instance_murder_row_InstanceMapScript(map); + } +}; + +void AddSC_instance_murder_row() +{ + new instance_murder_row(); +} diff --git a/src/server/scripts/QuelThalas/MurderRow/murder_row.h b/src/server/scripts/QuelThalas/MurderRow/murder_row.h new file mode 100644 index 0000000000000..b8337fe37f9b3 --- /dev/null +++ b/src/server/scripts/QuelThalas/MurderRow/murder_row.h @@ -0,0 +1,65 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef DEF_MURDER_ROW_H_ +#define DEF_MURDER_ROW_H_ + +#include "CreatureAIImpl.h" + +#define MRScriptName "instance_murder_row" +#define DataHeader "MurderRow" + +uint32 const EncounterCount = 4; + +enum MurderRowDataTypes +{ + // Encounters + DATA_KYSTIA_MANAHEART = 0, + DATA_ZAEN_BLADESORROW = 1, + DATA_XATHUUX_THE_ANNIHILATOR = 2, + DATA_LITHIEL_CINDERFURY = 3, + + // Additional Data + DATA_NIBBLES +}; + +enum MurderRowCreatureIds +{ + // Bosses + BOSS_KYSTIA_MANAHEART = 234648, + BOSS_ZAEN_BLADESORROW = 234649, + BOSS_XATHUUX_THE_ANNIHILATOR = 234647, + BOSS_LITHIEL_CINDERFURY = 237415, + + // Npcs + NPC_NIBBLES = 234660 +}; + +enum MurderRowGameObjectIds +{ + GO_FEL_DOOR = 618401 +}; + +template +inline AI* GetMurderRowAI(T* obj) +{ + return GetInstanceAI(obj, MRScriptName); +} + +#define RegisterMurderRowCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetMurderRowAI) + +#endif diff --git a/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp b/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp new file mode 100644 index 0000000000000..df7d68a978fdc --- /dev/null +++ b/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp @@ -0,0 +1,31 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +// This is where scripts' loading functions should be declared: + +// Murder Row +void AddSC_boss_kystia_manaheart(); +void AddSC_instance_murder_row(); + +// The name of this function should match: +// void Add${NameOfDirectory}Scripts() +void AddQuelThalasScripts() +{ + // Murder Row + AddSC_boss_kystia_manaheart(); + AddSC_instance_murder_row(); +} From e0633733440fed33367c80b99889fa5ecdc4c807 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 9 Apr 2026 16:33:29 +0200 Subject: [PATCH 040/175] Scripts/Spells: Fixed crash in mage Ignite script --- src/server/scripts/Spells/spell_mage.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index c7b1656bf77a2..11087ee8221e1 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -1120,8 +1120,9 @@ class spell_mage_hot_streak_ignite_marker : public SpellScript public: static bool IsActive(Spell const* spell) { - if (spell_mage_hot_streak_ignite_marker const* script = spell->GetScript()) - return script->_affectedByHotStreak; + if (spell) + if (spell_mage_hot_streak_ignite_marker const* script = spell->GetScript()) + return script->_affectedByHotStreak; return false; } }; From 77e549c0f417b8dc4e6cbe8ab98aa3f3ab93fb97 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 9 Apr 2026 16:35:42 +0200 Subject: [PATCH 041/175] Core/Spells: Fixed crashes happening when aura remove or proc script despawns a creature that is already despawning --- src/server/game/Spells/Spell.cpp | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d73bcdc3e2d54..d411f5938e880 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3617,10 +3617,19 @@ void Spell::cancel() SendCastResult(SPELL_FAILED_INTERRUPTED); break; case SPELL_STATE_CHANNELING: - for (TargetInfo const& targetInfo : m_UniqueTargetInfo) - if (targetInfo.MissCondition == SPELL_MISS_NONE) - if (Unit* unit = m_caster->GetGUID() == targetInfo.TargetGUID ? m_caster->ToUnit() : ObjectAccessor::GetUnit(*m_caster, targetInfo.TargetGUID)) - unit->RemoveOwnedAura(m_spellInfo->Id, m_originalCasterGUID, 0, AURA_REMOVE_BY_CANCEL); + { + // Mark current spell as not deletable to protect against scripts attempting to despawn the caster twice (aura removal) + // while current spell is being cancelled by despawn + bool executed = m_executedCurrently; + SetExecutedCurrently(true); + + for (TargetInfo const& targetInfo : m_UniqueTargetInfo) + if (targetInfo.MissCondition == SPELL_MISS_NONE) + if (Unit* unit = m_caster->GetGUID() == targetInfo.TargetGUID ? m_caster->ToUnit() : ObjectAccessor::GetUnit(*m_caster, targetInfo.TargetGUID)) + unit->RemoveOwnedAura(m_spellInfo->Id, m_originalCasterGUID, 0, AURA_REMOVE_BY_CANCEL); + + SetExecutedCurrently(executed); + } SendChannelUpdate(0, SPELL_FAILED_INTERRUPTED); SendInterrupted(0); @@ -4370,7 +4379,16 @@ void Spell::finish(SpellCastResult result) if (Creature* creatureCaster = unitCaster->ToCreature()) creatureCaster->ReleaseSpellFocus(this); - Unit::ProcSkillsAndAuras(unitCaster, nullptr, PROC_FLAG_CAST_ENDED, PROC_FLAG_NONE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_PHASE_NONE, PROC_HIT_NONE, this, nullptr, nullptr); + { + // Mark current spell as not deletable to protect against scripts attempting to despawn the caster twice + // while current spell is already being finished by despawn + bool executed = m_executedCurrently; + SetExecutedCurrently(true); + + Unit::ProcSkillsAndAuras(unitCaster, nullptr, PROC_FLAG_CAST_ENDED, PROC_FLAG_NONE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_PHASE_NONE, PROC_HIT_NONE, this, nullptr, nullptr); + + SetExecutedCurrently(executed); + } if (IsEmpowerSpell()) { From be5bc28bd12799464bc779d32b4b3cdb179aff64 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 9 Apr 2026 17:20:29 +0200 Subject: [PATCH 042/175] Core/Spells: Fix spell effect value calculation --- src/server/game/Spells/SpellInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 05b90335d9179..92c9cc47f9123 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -652,7 +652,7 @@ SpellEffectValue SpellEffectInfo::CalcValue(WorldObject const* caster /*= nullpt } break; default: - return false; + break; } return std::clamp(value, MinValue, MaxValue); From 325509b6c775cdfc9a325825fd8db1f9a7f2c8bd Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 10 Apr 2026 00:09:44 +0200 Subject: [PATCH 043/175] Core/Random: Rename roll_chance_x functions to roll_chance --- src/common/Utilities/Random.h | 14 ++++++-- .../game/AI/SmartScripts/SmartScript.cpp | 2 +- .../game/AI/SmartScripts/SmartScriptMgr.h | 2 +- .../game/BlackMarket/BlackMarketMgr.cpp | 2 +- src/server/game/Entities/Object/Object.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 8 ++--- src/server/game/Entities/Player/RestMgr.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 10 +++--- src/server/game/Loot/LootMgr.cpp | 8 ++--- src/server/game/Skills/SkillDiscovery.cpp | 4 +-- .../game/Spells/Auras/SpellAuraEffects.cpp | 8 ++--- src/server/game/Spells/Auras/SpellAuras.cpp | 2 +- src/server/game/Spells/Spell.cpp | 4 +-- src/server/game/Spells/SpellEffects.cpp | 8 ++--- .../boss_ymiron_the_fallen_king.cpp | 2 +- .../BrokenIsles/zone_orderhall_warrior.cpp | 2 +- .../EasternKingdoms/Karazhan/boss_curator.cpp | 2 +- .../Karazhan/boss_maiden_of_virtue.cpp | 2 +- .../ShadowfangKeep/boss_apothecary_hummel.cpp | 2 +- .../EasternKingdoms/Stratholme/stratholme.cpp | 2 +- .../SunwellPlateau/boss_kalecgos.cpp | 8 ++--- .../SunwellPlateau/boss_kiljaeden.cpp | 2 +- .../zone_dun_morogh_area_coldridge_valley.cpp | 2 +- .../zone_eastern_plaguelands.cpp | 2 +- .../zone_redridge_mountains.cpp | 4 +-- .../zone_silverpine_forest.cpp | 4 +-- .../EasternKingdoms/zone_undercity.cpp | 2 +- .../scripts/EasternKingdoms/zone_westfall.cpp | 6 ++-- src/server/scripts/Events/hallows_end.cpp | 4 +-- .../scripts/Events/love_is_in_the_air.cpp | 2 +- .../scripts/ExilesReach/zone_exiles_reach.cpp | 8 ++--- .../scripts/Kalimdor/zone_azuremyst_isle.cpp | 2 +- .../scripts/Kalimdor/zone_bloodmyst_isle.cpp | 2 +- .../Kalimdor/zone_dustwallow_marsh.cpp | 2 +- src/server/scripts/Kalimdor/zone_felwood.cpp | 2 +- .../KulTiras/WaycrestManor/waycrest_manor.cpp | 2 +- .../AzjolNerub/Ahnkahet/boss_amanitar.cpp | 2 +- .../AzjolNerub/Ahnkahet/boss_elder_nadox.cpp | 2 +- .../boss_grand_champions.cpp | 2 +- .../ForgeOfSouls/boss_devourer_of_souls.cpp | 2 +- .../FrozenHalls/PitOfSaron/pit_of_saron.cpp | 2 +- .../Northrend/Gundrak/boss_moorabi.cpp | 2 +- .../boss_blood_prince_council.cpp | 2 +- .../IcecrownCitadel/icecrown_citadel.cpp | 2 +- .../Northrend/Naxxramas/boss_thaddius.cpp | 2 +- .../Northrend/Nexus/Oculus/boss_drakos.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_auriaya.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 2 +- .../Northrend/Ulduar/Ulduar/boss_xt002.cpp | 2 +- .../Ulduar/Ulduar/boss_yogg_saron.cpp | 2 +- .../scripts/Northrend/zone_borean_tundra.cpp | 2 +- .../scripts/Northrend/zone_howling_fjord.cpp | 4 +-- .../scripts/Northrend/zone_icecrown.cpp | 2 +- .../scripts/Northrend/zone_storm_peaks.cpp | 4 +-- src/server/scripts/Northrend/zone_zuldrak.cpp | 2 +- .../AuchenaiCrypts/boss_exarch_maladaar.cpp | 4 +-- .../boss_grandmaster_vorpil.cpp | 2 +- .../BlackTemple/boss_gurtogg_bloodboil.cpp | 2 +- .../Outland/BlackTemple/boss_illidan.cpp | 2 +- .../BlackTemple/boss_illidari_council.cpp | 2 +- .../Mechanar/boss_gatewatcher_ironhand.cpp | 4 +-- .../Mechanar/boss_mechano_lord_capacitus.cpp | 2 +- .../Mechanar/boss_nethermancer_sepethrea.cpp | 2 +- .../scripts/Outland/boss_doomwalker.cpp | 2 +- .../scripts/Outland/zone_terokkar_forest.cpp | 2 +- src/server/scripts/Pet/pet_generic.cpp | 2 +- src/server/scripts/Spells/spell_dh.cpp | 4 +-- src/server/scripts/Spells/spell_dk.cpp | 6 ++-- src/server/scripts/Spells/spell_druid.cpp | 20 ++++++------ src/server/scripts/Spells/spell_evoker.cpp | 4 +-- src/server/scripts/Spells/spell_generic.cpp | 14 ++++---- src/server/scripts/Spells/spell_hunter.cpp | 8 ++--- src/server/scripts/Spells/spell_item.cpp | 32 +++++++++---------- src/server/scripts/Spells/spell_mage.cpp | 6 ++-- src/server/scripts/Spells/spell_monk.cpp | 2 +- src/server/scripts/Spells/spell_paladin.cpp | 10 +++--- src/server/scripts/Spells/spell_priest.cpp | 16 +++++----- src/server/scripts/Spells/spell_quest.cpp | 2 +- src/server/scripts/Spells/spell_rogue.cpp | 2 +- src/server/scripts/Spells/spell_shaman.cpp | 24 +++++++------- src/server/scripts/Spells/spell_warlock.cpp | 2 +- src/server/scripts/Spells/spell_warrior.cpp | 16 +++++----- src/server/scripts/World/item_scripts.cpp | 2 +- src/server/scripts/World/npc_guard.cpp | 4 +-- src/server/scripts/World/npcs_special.cpp | 4 +-- 85 files changed, 199 insertions(+), 189 deletions(-) diff --git a/src/common/Utilities/Random.h b/src/common/Utilities/Random.h index 2de685db45623..dbf4b9a48e5ee 100644 --- a/src/common/Utilities/Random.h +++ b/src/common/Utilities/Random.h @@ -20,6 +20,7 @@ #include "Define.h" #include "Duration.h" +#include #include /* Return a random number in the range min..max. */ @@ -50,17 +51,26 @@ TC_COMMON_API float rand_chance(); TC_COMMON_API uint32 urandweighted(size_t count, double const* chances); /* Return true if a random roll fits in the specified chance (range 0-100). */ -inline bool roll_chance_f(float chance) +template +inline bool roll_chance(T chance) { return chance > rand_chance(); } /* Return true if a random roll fits in the specified chance (range 0-100). */ -inline bool roll_chance_i(int chance) +template +inline bool roll_chance(T chance) { return chance > irand(0, 99); } +/* Return true if a random roll fits in the specified chance (range 0-100). */ +template +inline bool roll_chance(T chance) +{ + return chance > urand(0, 99); +} + /* * Wrapper satisfying UniformRandomNumberGenerator concept for use in algorithms */ diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 69eb63dbec9bc..27b17c5558da5 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -309,7 +309,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u // calc random if (e.GetEventType() != SMART_EVENT_LINK && e.event.event_chance < 100 && e.event.event_chance && !(e.event.event_flags & SMART_EVENT_FLAG_TEMP_IGNORE_CHANCE_ROLL)) { - if (!roll_chance_i(e.event.event_chance)) + if (!roll_chance(e.event.event_chance)) return; } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 65098245dbd42..9ea0e2956e219 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1639,7 +1639,7 @@ enum SmartEventFlags SMART_EVENT_FLAGS_ALL = (SMART_EVENT_FLAG_NOT_REPEATABLE| SMART_EVENT_FLAGS_DEPRECATED | SMART_EVENT_FLAG_ACTIONLIST_WAITS | SMART_EVENT_FLAG_RESERVED_6 | SMART_EVENT_FLAG_DEBUG_ONLY | SMART_EVENT_FLAG_DONT_RESET | SMART_EVENT_FLAG_WHILE_CHARMED), // Temp flags, used only at runtime, never stored in DB - SMART_EVENT_FLAG_TEMP_IGNORE_CHANCE_ROLL = 0x40000000, //Event occurs no matter what roll_chance_i(e.event.event_chance) returns. + SMART_EVENT_FLAG_TEMP_IGNORE_CHANCE_ROLL = 0x40000000, //Event occurs no matter what roll_chance(e.event.event_chance) returns. }; enum SmartCastFlags diff --git a/src/server/game/BlackMarket/BlackMarketMgr.cpp b/src/server/game/BlackMarket/BlackMarketMgr.cpp index 7a7825581804d..e49efb3691889 100644 --- a/src/server/game/BlackMarket/BlackMarketMgr.cpp +++ b/src/server/game/BlackMarket/BlackMarketMgr.cpp @@ -189,7 +189,7 @@ void BlackMarketMgr::RefreshAuctions() { if (GetAuctionByID(pair.second->MarketID)) continue; - if (!roll_chance_f(pair.second->Chance)) + if (!roll_chance(pair.second->Chance)) continue; templates.push_back(pair.second); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 1e667af9a40ee..eed1bcd518849 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2004,7 +2004,7 @@ SpellMissInfo WorldObject::SpellHitResult(Unit* victim, SpellInfo const* spellIn float reflectchance = victim->GetTotalAuraModifier(SPELL_AURA_REFLECT_SPELLS); reflectchance += victim->GetTotalAuraModifierByMiscMask(SPELL_AURA_REFLECT_SPELLS_SCHOOL, spellInfo->GetSchoolMask()); - if (reflectchance > 0 && roll_chance_f(reflectchance)) + if (reflectchance > 0 && roll_chance(reflectchance)) return spellInfo->HasAttribute(SPELL_ATTR7_REFLECTION_ONLY_DEFENDS) ? SPELL_MISS_DEFLECT : SPELL_MISS_REFLECT; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 554ecb39d7ba0..49a2d9635f645 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -8751,7 +8751,7 @@ void Player::CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemT else if (chance > 100.0f) chance = GetWeaponProcChance(); - if (roll_chance_f(chance) && sScriptMgr->OnCastItemCombatSpell(this, damageInfo.GetVictim(), spellInfo, item)) + if (roll_chance(chance) && sScriptMgr->OnCastItemCombatSpell(this, damageInfo.GetVictim(), spellInfo, item)) CastSpell(damageInfo.GetVictim(), spellInfo->Id, item); } } @@ -8814,7 +8814,7 @@ void Player::CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemT if (FindCurrentSpellBySpellId(5938) && e_slot == TEMP_ENCHANTMENT_SLOT) chance = 100.0f; - if (roll_chance_f(chance)) + if (roll_chance(chance)) { if (spellInfo->IsPositive()) CastSpell(this, spellInfo->Id, item); @@ -8822,7 +8822,7 @@ void Player::CastItemCombatSpell(DamageInfo const& damageInfo, Item* item, ItemT CastSpell(damageInfo.GetVictim(), spellInfo->Id, item); } - if (roll_chance_f(chance)) + if (roll_chance(chance)) { Unit* target = spellInfo->IsPositive() ? this : damageInfo.GetVictim(); @@ -26309,7 +26309,7 @@ void Player::InitializeSelfResurrectionSpells() if ((*itr)->GetSpellInfo()->SpellFamilyName == SPELLFAMILY_WARLOCK && (*itr)->GetSpellInfo()->SpellFamilyFlags[1] & 0x1000000) spells[0] = 3026; // Twisting Nether // prio: 2 (max) - else if ((*itr)->GetId() == 23701 && roll_chance_i(10)) + else if ((*itr)->GetId() == 23701 && roll_chance(10)) spells[1] = 23700; } diff --git a/src/server/game/Entities/Player/RestMgr.cpp b/src/server/game/Entities/Player/RestMgr.cpp index 6fae5b98f2919..48b97f3e8afbe 100644 --- a/src/server/game/Entities/Player/RestMgr.cpp +++ b/src/server/game/Entities/Player/RestMgr.cpp @@ -135,7 +135,7 @@ uint32 RestMgr::GetRestBonusFor(RestTypes restType, uint32 xp) void RestMgr::Update(time_t now) { - if (roll_chance_i(3) && _restTime > 0) // freeze update + if (roll_chance(3) && _restTime > 0) // freeze update { time_t timeDiff = now - _restTime; if (timeDiff >= 10) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index dd6aee117e460..018ec3a275494 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -130,7 +130,7 @@ DispelableAura::~DispelableAura() = default; bool DispelableAura::RollDispel() const { - return roll_chance_i(_chance); + return roll_chance(_chance); } DamageInfo::DamageInfo(Unit* attacker, Unit* victim, uint32 damage, SpellInfo const* spellInfo, SpellSchoolMask schoolMask, DamageEffectType damageType, WeaponAttackType attackType) @@ -1083,7 +1083,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit const* excludeCasterChannel else // victim is a player { // random durability for items (HIT TAKEN) - if (durabilityLoss && roll_chance_f(sWorld->getRate(RATE_DURABILITY_LOSS_DAMAGE))) + if (durabilityLoss && roll_chance(sWorld->getRate(RATE_DURABILITY_LOSS_DAMAGE))) { EquipmentSlots slot = EquipmentSlots(urand(0, EQUIPMENT_SLOT_END-1)); victim->ToPlayer()->DurabilityPointLossForEquipSlot(slot); @@ -1093,7 +1093,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit const* excludeCasterChannel if (attacker && attacker->GetTypeId() == TYPEID_PLAYER) { // random durability for items (HIT DONE) - if (durabilityLoss && roll_chance_f(sWorld->getRate(RATE_DURABILITY_LOSS_DAMAGE))) + if (durabilityLoss && roll_chance(sWorld->getRate(RATE_DURABILITY_LOSS_DAMAGE))) { EquipmentSlots slot = EquipmentSlots(urand(0, EQUIPMENT_SLOT_END-1)); attacker->ToPlayer()->DurabilityPointLossForEquipSlot(slot); @@ -1583,7 +1583,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) // -probability is between 0% and 40% RoundToInterval(chance, 0.0f, 40.0f); - if (roll_chance_f(chance)) + if (roll_chance(chance)) CastSpell(victim, SPELL_DAZED, true); } @@ -2569,7 +2569,7 @@ void Unit::SendMeleeAttackStop(Unit* victim) bool Unit::IsBlockCritical() const { - if (roll_chance_f(GetTotalAuraModifier(SPELL_AURA_MOD_BLOCK_CRIT_CHANCE))) + if (roll_chance(GetTotalAuraModifier(SPELL_AURA_MOD_BLOCK_CRIT_CHANCE))) return true; return false; } diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 650c7190c924d..3039bfa7ec142 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -260,20 +260,20 @@ bool LootStoreItem::Roll(bool rate) const float qualityModifier = pProto && rate && QualityToRate[pProto->GetQuality()] != MAX_RATES ? sWorld->getRate(QualityToRate[pProto->GetQuality()]) : 1.0f; - return roll_chance_f(chance * qualityModifier); + return roll_chance(chance * qualityModifier); } case Type::Reference: - return roll_chance_f(chance * (rate ? sWorld->getRate(RATE_DROP_ITEM_REFERENCED) : 1.0f)); + return roll_chance(chance * (rate ? sWorld->getRate(RATE_DROP_ITEM_REFERENCED) : 1.0f)); case Type::Currency: { CurrencyTypesEntry const* currency = sCurrencyTypesStore.AssertEntry(itemid); float qualityModifier = currency && rate && QualityToRate[currency->Quality] != MAX_RATES ? sWorld->getRate(QualityToRate[currency->Quality]) : 1.0f; - return roll_chance_f(chance * qualityModifier); + return roll_chance(chance * qualityModifier); } case Type::TrackingQuest: - return roll_chance_f(chance); + return roll_chance(chance); default: break; } diff --git a/src/server/game/Skills/SkillDiscovery.cpp b/src/server/game/Skills/SkillDiscovery.cpp index 53026662d3d7c..019660269f37d 100644 --- a/src/server/game/Skills/SkillDiscovery.cpp +++ b/src/server/game/Skills/SkillDiscovery.cpp @@ -230,7 +230,7 @@ uint32 GetSkillDiscoverySpell(uint32 skillId, uint32 spellId, Player* player) { for (SkillDiscoveryList::const_iterator item_iter = tab->second.begin(); item_iter != tab->second.end(); ++item_iter) { - if (roll_chance_f(item_iter->chance * sWorld->getRate(RATE_SKILL_DISCOVERY)) && + if (roll_chance(item_iter->chance * sWorld->getRate(RATE_SKILL_DISCOVERY)) && item_iter->reqSkillValue <= skillvalue && !player->HasSpell(item_iter->spellId)) return item_iter->spellId; @@ -248,7 +248,7 @@ uint32 GetSkillDiscoverySpell(uint32 skillId, uint32 spellId, Player* player) { for (SkillDiscoveryList::const_iterator item_iter = tab->second.begin(); item_iter != tab->second.end(); ++item_iter) { - if (roll_chance_f(item_iter->chance * sWorld->getRate(RATE_SKILL_DISCOVERY)) && + if (roll_chance(item_iter->chance * sWorld->getRate(RATE_SKILL_DISCOVERY)) && item_iter->reqSkillValue <= skillvalue && !player->HasSpell(item_iter->spellId)) return item_iter->spellId; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 91116e6ebc91e..714710a5216a2 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -4931,7 +4931,7 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool break; } case 39850: // Rocket Blast - if (roll_chance_i(20)) // backfire stun + if (roll_chance(20)) // backfire stun target->CastSpell(target, 51581, this); break; case 43873: // Headless Horseman Laugh @@ -5713,7 +5713,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const break; } - bool crit = roll_chance_f(GetCritChanceFor(caster, target)); + bool crit = roll_chance(GetCritChanceFor(caster, target)); if (crit) damage = Unit::SpellCriticalDamageBonus(caster, m_spellInfo, damage, target); @@ -5802,7 +5802,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, GetSpellEffectInfo(), stackAmountForBonuses, nullptr, this); damage = target->SpellDamageBonusTaken(caster, GetSpellInfo(), damage, DOT); - bool crit = roll_chance_f(GetCritChanceFor(caster, target)); + bool crit = roll_chance(GetCritChanceFor(caster, target)); if (crit) damage = Unit::SpellCriticalDamageBonus(caster, m_spellInfo, damage, target); @@ -5933,7 +5933,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const damage = target->SpellHealingBonusTaken(caster, GetSpellInfo(), damage, DOT); - bool crit = roll_chance_f(GetCritChanceFor(caster, target)); + bool crit = roll_chance(GetCritChanceFor(caster, target)); if (crit) damage = Unit::SpellCriticalHealingBonus(caster, m_spellInfo, damage, target); diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 58de70ec820c8..819f69257dbef 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -1976,7 +1976,7 @@ uint32 Aura::GetProcEffectMask(AuraApplication* aurApp, ProcEventInfo& eventInfo if (!target->IsStandState()) return 0; - bool success = roll_chance_f(CalcProcChance(*procEntry, eventInfo)); + bool success = roll_chance(CalcProcChance(*procEntry, eventInfo)); const_cast(this)->SetLastProcAttemptTime(now); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d411f5938e880..e609d987fbbfb 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3306,7 +3306,7 @@ void Spell::DoTriggersOnSpellHit(Unit* unit) int32 _duration = 0; for (auto i = m_hitTriggerSpells.begin(); i != m_hitTriggerSpells.end(); ++i) { - if (CanExecuteTriggersOnHit(unit, i->triggeredByAura) && roll_chance_i(i->chance)) + if (CanExecuteTriggersOnHit(unit, i->triggeredByAura) && roll_chance(i->chance)) { m_caster->CastSpell(unit, i->triggeredSpell->Id, CastSpellExtraArgs(TRIGGERED_FULL_MASK) .SetTriggeringSpell(this) @@ -8626,7 +8626,7 @@ void Spell::PreprocessSpellLaunch(TargetInfo& targetInfo) critChance = unit->SpellCritChanceTaken(m_originalCaster, this, nullptr, m_spellSchoolMask, critChance, m_attackType); } - targetInfo.IsCrit = roll_chance_f(critChance); + targetInfo.IsCrit = roll_chance(critChance); } void Spell::DoEffectOnLaunchTarget(TargetInfo& targetInfo, float multiplier, SpellEffectInfo const& spellEffectInfo) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d261fcc2f50eb..01442399f1440 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1395,7 +1395,7 @@ void Spell::DoCreateItem(uint32 itemId, ItemContext context /*= ItemContext::NON uint32 perfectItemType = itemId; // get perfection capability and chance if (CanCreatePerfectItem(player, m_spellInfo->Id, perfectCreateChance, perfectItemType)) - if (roll_chance_f(perfectCreateChance)) // if the roll succeeds... + if (roll_chance(perfectCreateChance)) // if the roll succeeds... newitemid = perfectItemType; // the perfect item replaces the regular one /* == gem perfection handling over == */ @@ -1411,7 +1411,7 @@ void Spell::DoCreateItem(uint32 itemId, ItemContext context /*= ItemContext::NON // get the chance and maximum number for creating extra items if (CanCreateExtraItems(player, m_spellInfo->Id, additionalCreateChance, additionalMaxNum)) // roll with this chance till we roll not to create or we create the max num - while (roll_chance_f(additionalCreateChance) && items_count <= additionalMaxNum) + while (roll_chance(additionalCreateChance) && items_count <= additionalMaxNum) ++items_count; // really will be created more items @@ -3528,7 +3528,7 @@ void Spell::EffectInebriate() uint8 currentDrunkValue = player->GetDrunkValue(); uint8 drunkValue = std::clamp(GetEffectValueAsInt() + currentDrunkValue, 0, 100); if (currentDrunkValue == 100 && currentDrunkValue == drunkValue) - if (roll_chance_f(25.0f)) + if (roll_chance(25.0f)) player->CastSpell(player, 67468, CastSpellExtraArgs() .SetTriggeringSpell(this)); // Drunken Vomit @@ -4244,7 +4244,7 @@ void Spell::EffectDispelMechanic() Aura* aura = itr->second; if (!aura->GetApplicationOfTarget(unitTarget->GetGUID())) continue; - if (roll_chance_i(aura->CalcDispelChance(unitTarget, !unitTarget->IsFriendlyTo(m_caster)))) + if (roll_chance(aura->CalcDispelChance(unitTarget, !unitTarget->IsFriendlyTo(m_caster)))) if ((aura->GetSpellInfo()->GetAllEffectsMechanicMask() & (UI64LIT(1) << mechanic))) dispel_list.emplace_back(aura->GetId(), aura->GetCasterGUID()); } diff --git a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp index 96ee6e52dd9a0..3b4ad46595ff0 100644 --- a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp +++ b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp @@ -382,7 +382,7 @@ class spell_ymiron_the_fallen_king_soul_siphon : public AuraScript void OnPeriodic(AuraEffect const* /*aurEff*/) { - if (!roll_chance_f(10)) + if (!roll_chance(10)) return; TriggerSuicide(); diff --git a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp index ca3add81c223b..908b03979cb48 100644 --- a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp +++ b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp @@ -213,7 +213,7 @@ struct npc_feasting_valarjar : public ScriptedAI _scheduler.Schedule(1s, [this](TaskContext /*context*/) { me->SetVirtualItem(0, 0); - if (roll_chance_i(85)) + if (roll_chance(85)) DoCastSelf(SPELL_EMOTE_BELCH); }); } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp index 2a383362c1ba6..e469f64e016b1 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp @@ -109,7 +109,7 @@ class boss_curator : public CreatureScript DoCastSelf(SPELL_ARCANE_INFUSION, true); break; case EVENT_SUMMON_ASTRAL_FLARE: - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_SUMMON); DoCastSelf(RAND(SPELL_SUMMON_ASTRAL_FLARE_NE, SPELL_SUMMON_ASTRAL_FLARE_NW, SPELL_SUMMON_ASTRAL_FLARE_SE, SPELL_SUMMON_ASTRAL_FLARE_SW), true); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp index 5d1145bdfbcc8..cd53cb02ec5e4 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp @@ -55,7 +55,7 @@ class boss_maiden_of_virtue : public CreatureScript void KilledUnit(Unit* /*Victim*/) override { - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_SLAY); } diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp index d4cfa91276637..4b595d3f16b94 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp @@ -364,7 +364,7 @@ class spell_apothecary_lingering_fumes : public SpellScript void HandleAfterCast() { Unit* caster = GetCaster(); - if (!caster->IsInCombat() || roll_chance_i(50)) + if (!caster->IsInCombat() || roll_chance(50)) return; std::list triggers; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp index 43bd93489d4ef..781efbe23afce 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp @@ -371,7 +371,7 @@ class spell_stratholme_haunting_phantoms : public AuraScript void HandleDummyTick(AuraEffect const* /*aurEff*/) { - if (roll_chance_i(50)) + if (roll_chance(50)) GetTarget()->CastSpell(nullptr, SPELL_SUMMON_SPITEFUL_PHANTOM, true); else GetTarget()->CastSpell(nullptr, SPELL_SUMMON_WRATH_PHANTOM, true); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index 31b0d012c5881..692507416b665 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -223,7 +223,7 @@ struct boss_kalecgos : public BossAI void KilledUnit(Unit* who) override { - if (who->GetTypeId() == TYPEID_PLAYER && roll_chance_i(50)) + if (who->GetTypeId() == TYPEID_PLAYER && roll_chance(50)) Talk(SAY_EVIL_SLAY); } @@ -263,7 +263,7 @@ struct boss_kalecgos : public BossAI switch (eventId) { case EVENT_ARCANE_BUFFET: - if (roll_chance_i(20)) + if (roll_chance(20)) Talk(SAY_ARCANE_BUFFET); DoCastAOE(SPELL_ARCANE_BUFFET); events.Repeat(Seconds(8)); @@ -513,7 +513,7 @@ struct boss_sathrovarr : public BossAI switch (eventId) { case EVENT_SHADOWBOLT: - if (roll_chance_i(20)) + if (roll_chance(20)) Talk(SAY_SATH_SPELL1); DoCastAOE(SPELL_SHADOW_BOLT); events.Repeat(Seconds(7), Seconds(10)); @@ -530,7 +530,7 @@ struct boss_sathrovarr : public BossAI break; } case EVENT_CORRUPTION_STRIKE: - if (roll_chance_i(20)) + if (roll_chance(20)) Talk(SAY_SATH_SPELL2); DoCastVictim(SPELL_CORRUPTION_STRIKE); events.Repeat(Seconds(13)); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 678b3d70ff3a0..63a44f4d9954a 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -1217,7 +1217,7 @@ class npc_shield_orb : public CreatureScript c = 0; mx = ShieldOrbLocations[0][0]; my = ShieldOrbLocations[0][1]; - bClockwise = roll_chance_i(50); + bClockwise = roll_chance(50); } InstanceScript* instance; diff --git a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp index 669569c2953e0..1aa389abf993e 100644 --- a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp +++ b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp @@ -524,7 +524,7 @@ struct npc_joren_ironstock : public ScriptedAI SpellCastResult result = DoCast(invader, SPELL_SHOOT); if (result == SpellCastResult::SPELL_CAST_OK) { - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_SHOOT_ROCKJAW, invader); } else diff --git a/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp index 55ac51fb7c706..421533b1a6b76 100644 --- a/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp +++ b/src/server/scripts/EasternKingdoms/zone_eastern_plaguelands.cpp @@ -39,7 +39,7 @@ class spell_eastern_plaguelands_test_fetid_skull : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), roll_chance_i(50) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST, TRIGGERED_IGNORE_REAGENT_COST); + GetCaster()->CastSpell(GetCaster(), roll_chance(50) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST, TRIGGERED_IGNORE_REAGENT_COST); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp index 299cd527fec4a..3c13a23c049ff 100644 --- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp @@ -764,13 +764,13 @@ class npc_redridge_citizen : public CreatureScript _events.ScheduleEvent(EVENT_PLAYEMOTE, Seconds(10), Seconds(25)); break; case EVENT_SAY_TEXT: - if (roll_chance_i(3)) + if (roll_chance(3)) { Talk(SAY_LEAVE_TOWNHALL); _events.ScheduleEvent(EVENT_LEAVE_TOWNHALL, Seconds(2)); break; } - if (roll_chance_i(30)) + if (roll_chance(30)) Talk(SAY_IN_TOWNHALL); _events.Repeat(Seconds(30), Seconds(60)); break; diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp index 13fd6830b551a..0459f9a41cd74 100644 --- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp +++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp @@ -3747,7 +3747,7 @@ struct npc_silverpine_webbed_victim : public ScriptedAI if (Player* player = killer->ToPlayer()) { if (player->GetQuestStatus(QUEST_LOST_IN_THE_DARKNESS) == QUEST_STATUS_INCOMPLETE) - player->CastSpell(me, roll_chance_i(50) ? SPELL_FREE_WEBBED_VICTIM : SPELL_FREE_WEBBED_VICTIM_RANDOM, true); + player->CastSpell(me, roll_chance(50) ? SPELL_FREE_WEBBED_VICTIM : SPELL_FREE_WEBBED_VICTIM_RANDOM, true); } } }; @@ -4357,7 +4357,7 @@ class spell_silverpine_notify_agatha : public SpellScript if (Player* player = target->ToPlayer()) { - if (roll_chance_i(50)) + if (roll_chance(50)) { if (agatha->IsAIEnabled()) agatha->AI()->Talk(TALK_AGATHA_RISE_FORSAKEN, player); diff --git a/src/server/scripts/EasternKingdoms/zone_undercity.cpp b/src/server/scripts/EasternKingdoms/zone_undercity.cpp index 21211518c3c01..b324c6835d12a 100644 --- a/src/server/scripts/EasternKingdoms/zone_undercity.cpp +++ b/src/server/scripts/EasternKingdoms/zone_undercity.cpp @@ -339,7 +339,7 @@ class spell_undercity_bending_shinbone : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), roll_chance_i(20) ? SPELL_BENDING_SHINBONE1 : SPELL_BENDING_SHINBONE2, GetSpell()); + GetCaster()->CastSpell(GetCaster(), roll_chance(20) ? SPELL_BENDING_SHINBONE1 : SPELL_BENDING_SHINBONE2, GetSpell()); } void Register() override diff --git a/src/server/scripts/EasternKingdoms/zone_westfall.cpp b/src/server/scripts/EasternKingdoms/zone_westfall.cpp index 6ff87b5ad5c95..e70f16bc098f2 100644 --- a/src/server/scripts/EasternKingdoms/zone_westfall.cpp +++ b/src/server/scripts/EasternKingdoms/zone_westfall.cpp @@ -401,7 +401,7 @@ struct npc_westfall_hobo_witness : public ScriptedAI me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); CloseGossipMenuFor(player); - if (roll_chance_i(clueGainChance)) + if (roll_chance(clueGainChance)) GiveClue(player); else { @@ -555,9 +555,9 @@ struct npc_westfall_hobo_witness : public ScriptedAI } case Events::MurderWasTheCaseThatTheyGaveMe::ResumeMove: me->ResumeMovement(); - if (roll_chance_i(50)) // prevent spam + if (roll_chance(50)) // prevent spam { - if (roll_chance_i(70)) // chance to trigger simple talk event + if (roll_chance(70)) // chance to trigger simple talk event _events.ScheduleEvent(Events::MurderWasTheCaseThatTheyGaveMe::HoboTalk, 30s, 80s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); else _events.ScheduleEvent(urand(Events::MurderWasTheCaseThatTheyGaveMe::JackpotIntro, Events::MurderWasTheCaseThatTheyGaveMe::PropertyRage), 30s, 80s, Events::MurderWasTheCaseThatTheyGaveMe::GroupOOC); diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp index e6af391714f1a..715141d24894d 100644 --- a/src/server/scripts/Events/hallows_end.cpp +++ b/src/server/scripts/Events/hallows_end.cpp @@ -201,7 +201,7 @@ class spell_hallow_end_trick_or_treat : public SpellScript Unit* caster = GetCaster(); if (Player* target = GetHitPlayer()) { - caster->CastSpell(target, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true); + caster->CastSpell(target, roll_chance(50) ? SPELL_TRICK : SPELL_TREAT, true); caster->CastSpell(target, SPELL_TRICKED_OR_TREATED, true); } } @@ -228,7 +228,7 @@ class spell_hallow_end_tricky_treat : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); - if (caster->HasAura(SPELL_TRICKY_TREAT_TRIGGER) && caster->GetAuraCount(SPELL_TRICKY_TREAT_SPEED) > 3 && roll_chance_i(33)) + if (caster->HasAura(SPELL_TRICKY_TREAT_TRIGGER) && caster->GetAuraCount(SPELL_TRICKY_TREAT_SPEED) > 3 && roll_chance(33)) caster->CastSpell(caster, SPELL_UPSET_TUMMY, true); } diff --git a/src/server/scripts/Events/love_is_in_the_air.cpp b/src/server/scripts/Events/love_is_in_the_air.cpp index 986c9664be054..7d5dee3abd3fb 100644 --- a/src/server/scripts/Events/love_is_in_the_air.cpp +++ b/src/server/scripts/Events/love_is_in_the_air.cpp @@ -214,7 +214,7 @@ class spell_love_is_in_the_air_sample_satisfaction : public AuraScript { void OnPeriodic(AuraEffect const* /*aurEff*/) { - if (roll_chance_i(30)) + if (roll_chance(30)) Remove(); } diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp index 3106cfffdd5ad..75dd8ca23949e 100644 --- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp +++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp @@ -4478,7 +4478,7 @@ struct npc_quilboar_warrior : public ScriptedAI { me->RemoveAura(SPELL_QUILBOAR_SLEEP_DNT); - if (roll_chance_f(33.33f)) + if (roll_chance(33.33f)) Talk(SAY_AGGRO, who); _events.ScheduleEvent(EVENT_BRUTAL_STRIKE, 3s, 5s); @@ -4486,7 +4486,7 @@ struct npc_quilboar_warrior : public ScriptedAI void JustDied(Unit* killer) override { - if (roll_chance_f(33.33f)) + if (roll_chance(33.33f)) Talk(SAY_DEATH, killer); } @@ -4529,7 +4529,7 @@ struct npc_quilboar_geomancer : public ScriptedAI { me->RemoveAura(SPELL_QUILBOAR_SLEEP_DNT); - if (roll_chance_f(33.33f)) + if (roll_chance(33.33f)) Talk(SAY_AGGRO, who); _events.ScheduleEvent(EVENT_GEOMANCER_EARTH_BOLT, 3s, 5s); @@ -4537,7 +4537,7 @@ struct npc_quilboar_geomancer : public ScriptedAI void JustDied(Unit* killer) override { - if (roll_chance_f(33.33f)) + if (roll_chance(33.33f)) Talk(SAY_DEATH, killer); } diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 0beae4707c5bd..7d36fec809dc2 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -649,7 +649,7 @@ class spell_azuremyst_isle_cast_fishing_net : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), roll_chance_i(66) ? SPELL_FISHED_UP_RED_SNAPPER : SPELL_FISHED_UP_MURLOC); + GetCaster()->CastSpell(GetCaster(), roll_chance(66) ? SPELL_FISHED_UP_RED_SNAPPER : SPELL_FISHED_UP_MURLOC); } void Register() override diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index f491413154762..53d11eb9deba1 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -802,7 +802,7 @@ class spell_free_webbed_on_quest : public SpellScript Unit* caster = GetCaster(); Unit* target = GetHitUnit(); - if (roll_chance_i(66)) + if (roll_chance(66)) caster->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(CocoonSummonSpells), true); else target->CastSpell(caster, SPELL_FREE_WEBBED_11, true); diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index 554245cb6cd6e..c8da4dcfaf7c6 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -137,7 +137,7 @@ class spell_dustwallow_marsh_salvage_wreckage : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(GetCaster(), roll_chance_i(50) ? SPELL_SUMMON_LOCKBOX : SPELL_SUMMON_BURROWER); + GetCaster()->CastSpell(GetCaster(), roll_chance(50) ? SPELL_SUMMON_LOCKBOX : SPELL_SUMMON_BURROWER); } void Register() override diff --git a/src/server/scripts/Kalimdor/zone_felwood.cpp b/src/server/scripts/Kalimdor/zone_felwood.cpp index 07a93852790dc..32eed07a25701 100644 --- a/src/server/scripts/Kalimdor/zone_felwood.cpp +++ b/src/server/scripts/Kalimdor/zone_felwood.cpp @@ -55,7 +55,7 @@ class npc_whisperwind_lasher : public CreatureScript if (!spellClickHandled) return; - if (roll_chance_i(CHANCE_HOSTILE)) + if (roll_chance(CHANCE_HOSTILE)) { me->CastSpell(me, SPELL_INFECTED_WOULD); me->SetEntry(NPC_CORRUPTED_LASHER); diff --git a/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp b/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp index a40eaca015867..444508cdbf0b1 100644 --- a/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp +++ b/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp @@ -234,7 +234,7 @@ class spell_waycrest_manor_wildfire : public AuraScript void HandlePeriodic(AuraEffect const* aurEff) { if (aurEff->GetTickNumber() % 6 == 0) - GetTarget()->CastSpell(roll_chance_i(50) ? GetRandomPositionInCircle() : GetRandomPositionInRectangle(), SPELL_WILDFIRE_MISSILE, TRIGGERED_FULL_MASK); + GetTarget()->CastSpell(roll_chance(50) ? GetRandomPositionInCircle() : GetRandomPositionInRectangle(), SPELL_WILDFIRE_MISSILE, TRIGGERED_FULL_MASK); } void Register() override diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index 717c0cec56040..9b6896f705d71 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -130,7 +130,7 @@ struct boss_amanitar : public BossAI void SpawnMushroom(Position const pos) { - me->SummonCreature(roll_chance_i(40) ? NPC_HEALTHY_MUSHROOM : NPC_POISONOUS_MUSHROOM, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 4s); + me->SummonCreature(roll_chance(40) ? NPC_HEALTHY_MUSHROOM : NPC_POISONOUS_MUSHROOM, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 4s); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp index 41f83de88ac7b..19d2b9a9584ed 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -140,7 +140,7 @@ struct boss_elder_nadox : public BossAI case EVENT_SUMMON_SWARMER: /// @todo: summoned by egg DoCast(me, SPELL_SUMMON_SWARMERS); - if (roll_chance_i(33)) // 33% chance of dialog + if (roll_chance(33)) // 33% chance of dialog Talk(SAY_EGG_SAC); events.Repeat(10s); break; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index 55977dc57a387..1d598fd9b81ed 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -694,7 +694,7 @@ class boss_shaman_toc5 : public CreatureScript if (uiHealingWaveTimer <= uiDiff) { - bool bChance = roll_chance_i(50); + bool bChance = roll_chance(50); if (!bChance) { diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index 2e3dfcfb9ae5d..269cd01ff89e2 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -266,7 +266,7 @@ struct boss_devourer_of_souls : public BossAI beamAngle = me->GetOrientation(); - if (roll_chance_i(50)) + if (roll_chance(50)) beamAngleDiff = -beamAngleDiff; me->InterruptNonMeleeSpells(false); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index c0ca2d4a7bf00..0372d88925c49 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -43,7 +43,7 @@ enum Events bool ScheduledIcicleSummons::Execute(uint64 /*time*/, uint32 /*diff*/) { - if (roll_chance_i(12)) + if (roll_chance(12)) { _trigger->CastSpell(_trigger, SPELL_ICICLE_SUMMON, true); _trigger->m_Events.AddEvent(new ScheduledIcicleSummons(_trigger), _trigger->m_Events.CalculateTime(randtime(20s, 35s))); diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 007e9ed11c23e..6aaebd30e407b 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -145,7 +145,7 @@ struct boss_moorabi : public BossAI switch (eventId) { case EVENT_GROUND_TREMOR: - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_QUAKE); DoCastAOE(_transformed ? SPELL_QUAKE : SPELL_GROUND_TREMOR); events.Repeat(Seconds(10)); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 6ace8aa4ed864..166e39964190d 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -288,7 +288,7 @@ struct boss_blood_council_controller : public BossAI events.ScheduleEvent(EVENT_INVOCATION_OF_BLOOD, Seconds(46) + Milliseconds(500)); _invocationOrder[0] = InvocationData(instance->GetGuidData(DATA_PRINCE_VALANAR), SPELL_INVOCATION_OF_BLOOD_VALANAR, EMOTE_VALANAR_INVOCATION, SPELL_INVOCATION_VISUAL_VALANAR); - if (roll_chance_i(50)) + if (roll_chance(50)) { _invocationOrder[1] = InvocationData(instance->GetGuidData(DATA_PRINCE_TALDARAM), SPELL_INVOCATION_OF_BLOOD_TALDARAM, EMOTE_TALDARAM_INVOCATION, SPELL_INVOCATION_VISUAL_TALDARAM); _invocationOrder[2] = InvocationData(instance->GetGuidData(DATA_PRINCE_KELESETH), SPELL_INVOCATION_OF_BLOOD_KELESETH, EMOTE_KELESETH_INVOCATION, SPELL_INVOCATION_VISUAL_KELESETH); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 8c4ea66cb2889..ff1e31d15adc9 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -788,7 +788,7 @@ struct DarkFallenAI : public ScriptedAI if (!IsDoingEmotes) return; - if (roll_chance_i(20)) + if (roll_chance(20)) { std::vector creatures; ICCOrbControllerMinionSearch check(me, true); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index 0cb07689954d7..037a5944f313b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -1043,7 +1043,7 @@ class spell_thaddius_polarity_shift : public SpellScript if (Unit* target = GetHitUnit()) if (target->GetTypeId() == TYPEID_PLAYER) { - if (roll_chance_i(50)) + if (roll_chance(50)) { // positive target->CastSpell(target, SPELL_POSITIVE_CHARGE_APPLY, true); target->RemoveAura(SPELL_POSITIVE_CHARGE_AMP); diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp index 9c2b2669158fd..0d811d994ccd3 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp @@ -80,7 +80,7 @@ struct boss_drakos : public BossAI void OnSpellCast(SpellInfo const* spell) override { if (spell->Id == SPELL_THUNDERING_STOMP) - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_STOMP); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index f3f6d252769f1..53387896fc4d6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -169,7 +169,7 @@ struct boss_auriaya : public BossAI void KilledUnit(Unit* who) override { - if (who->GetTypeId() == TYPEID_PLAYER && roll_chance_i(50)) + if (who->GetTypeId() == TYPEID_PLAYER && roll_chance(50)) Talk(SAY_SLAY); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 6531825c3fe6e..ce96d3e673d55 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1026,7 +1026,7 @@ struct npc_thorim_trashAI : public ScriptedAI static Unit* GetHealTarget(SpellInfo const* spellInfo, Unit* caster) { Unit* healTarget = nullptr; - if (!spellInfo->HasAttribute(SPELL_ATTR1_EXCLUDE_CASTER) && !roll_chance_f(caster->GetHealthPct()) && ((caster->GetHealth() + GetRemainingHealOn(caster) + GetTotalHeal(spellInfo, caster)) <= caster->GetMaxHealth())) + if (!spellInfo->HasAttribute(SPELL_ATTR1_EXCLUDE_CASTER) && !roll_chance(caster->GetHealthPct()) && ((caster->GetHealth() + GetRemainingHealOn(caster) + GetTotalHeal(spellInfo, caster)) <= caster->GetMaxHealth())) healTarget = caster; else healTarget = GetUnitWithMostMissingHp(spellInfo, caster); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index ce86c65b1b085..183ee0868b030 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -825,7 +825,7 @@ class spell_xt002_energy_orb : public SpellScript target->CastSpell(target, SPELL_RECHARGE_BOOMBOT, true); - if (roll_chance_i(30)) + if (roll_chance(30)) target->CastSpell(target, SPELL_RECHARGE_PUMMELER, true); for (uint8 i = 0; i < urand(5, 7); ++i) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index 86c12476aaee5..827d0fcb92e0c 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -737,7 +737,7 @@ class boss_sara : public CreatureScript void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override { - if (!roll_chance_i(30) || _events.IsInPhase(PHASE_TRANSFORM)) + if (!roll_chance(30) || _events.IsInPhase(PHASE_TRANSFORM)) return; switch (spellInfo->Id) diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 8ae4c0e7248f3..d038676d21ce3 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1449,7 +1449,7 @@ class spell_borean_tundra_nerubar_web_random_unit_on_quest_dummy : public SpellS // Always summon peon if has 3 soldiers Aura* aura = caster->GetAura(SPELL_FREED_SOLDIER_DEBUFF); - if ((!aura || aura->GetStackAmount() < 3) && roll_chance_i(75)) + if ((!aura || aura->GetStackAmount() < 3) && roll_chance(75)) caster->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(CocoonSummonSpells), true); else caster->CastSpell(nullptr, SPELL_FREED_WARSONG_PEON, true); diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 5f748c5f27b31..ba10bf78cebdc 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -333,7 +333,7 @@ class spell_fjord_rivenwood_captives_on_quest : public SpellScript Unit* caster = GetCaster(); Unit* target = GetHitUnit(); - if (roll_chance_i(80)) + if (roll_chance(80)) target->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(CocoonSummonSpells), true); else target->CastSpell(caster, SPELL_SUMMON_FREED_MIST_WHISPER_SCOUT, true); @@ -486,7 +486,7 @@ class spell_fjord_the_way_to_his_heart_anuniaq_net : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); - caster->CastSpell(caster, roll_chance_i(75) ? SPELL_CREATE_TASTY_REEF_FISH : SPELL_FISHED_UP_REEF_SHARK, true); + caster->CastSpell(caster, roll_chance(75) ? SPELL_CREATE_TASTY_REEF_FISH : SPELL_FISHED_UP_REEF_SHARK, true); } void Register() override diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index 01c72169f5001..2a0939c737c12 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -787,7 +787,7 @@ class spell_icecrown_pound_drum : public SpellScript void HandleSummon() { - GetCaster()->CastSpell(GetCaster(), roll_chance_i(50) ? SPELL_SUMMON_DEEP_JORMUNGAR : SPELL_STORMFORGED_MOLE_MACHINE, true); + GetCaster()->CastSpell(GetCaster(), roll_chance(50) ? SPELL_SUMMON_DEEP_JORMUNGAR : SPELL_STORMFORGED_MOLE_MACHINE, true); } void Register() override diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index 8aa1cdf037305..c8769cdb65f0d 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -1077,7 +1077,7 @@ class spell_fatal_strike : public SpellScript if (AuraEffect const* aurEff = GetCaster()->GetAuraEffect(SPELL_PRY_JAWS_OPEN, EFFECT_0)) chance = aurEff->GetAmount(); - if (!roll_chance_f(chance)) + if (!roll_chance(chance)) { GetCaster()->GetAI()->DoAction(ACTION_FATAL_STRIKE_MISS); return; @@ -1192,7 +1192,7 @@ class spell_storm_peaks_bear_flank_master : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetHitUnit(), roll_chance_i(20) ? SPELL_CREATE_BEAR_FLANK : SPELL_BEAR_FLANK_FAIL); + GetHitUnit()->CastSpell(GetHitUnit(), roll_chance(20) ? SPELL_CREATE_BEAR_FLANK : SPELL_BEAR_FLANK_FAIL); } void Register() override diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 13e5ee1d8e56e..ae2744d31e5ce 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -806,7 +806,7 @@ class spell_zuldrak_cocooned_on_quest : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetHitUnit()->CastSpell(GetCaster(), roll_chance_i(66) ? SPELL_SUMMON_SCOURGED_CAPTIVE : SPELL_SUMMON_CAPTIVE_FOOTMAN); + GetHitUnit()->CastSpell(GetCaster(), roll_chance(66) ? SPELL_SUMMON_SCOURGED_CAPTIVE : SPELL_SUMMON_CAPTIVE_FOOTMAN); } void Register() override diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index 297caf347f0d1..4f2d571df48a3 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -124,7 +124,7 @@ struct boss_exarch_maladaar : public BossAI void OnSpellCast(SpellInfo const* spell) override { if (spell->Id == SPELL_STOLEN_SOUL) - if (roll_chance_i(25)) + if (roll_chance(25)) Talk(SAY_SOUL_CLEAVE); } @@ -164,7 +164,7 @@ struct boss_exarch_maladaar : public BossAI switch (eventId) { case EVENT_SOUL_SCREAM: - if (roll_chance_i(25)) + if (roll_chance(25)) Talk(SAY_ROAR); DoCastSelf(SPELL_SOUL_SCREAM); events.Repeat(RAND(15s, 20s)); diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index 8bcaf3d5faf29..d7efd77a5ea08 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -152,7 +152,7 @@ struct boss_grandmaster_vorpil : public BossAI events.Repeat(20s, 30s); break; case EVENT_DRAW_SHADOWS: - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_DRAW); DoCastSelf(SPELL_DRAW_SHADOWS); events.Repeat(35s, 45s); diff --git a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp index cb73cfbb60708..ed0cdffd2f5b1 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp @@ -255,7 +255,7 @@ struct boss_gurtogg_bloodboil : public BossAI break; case EVENT_BERSERK: DoCast(SPELL_BERSERK); - roll_chance_i(50) ? Talk(SAY_ENRAGE) : DoPlaySoundToSet(me, SOUND_ID_ENRAGE); + roll_chance(50) ? Talk(SAY_ENRAGE) : DoPlaySoundToSet(me, SOUND_ID_ENRAGE); break; default: break; diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 7256342ef5620..567a7742b08c0 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -534,7 +534,7 @@ struct boss_illidan_stormrage : public BossAI case GROUP_PHASE_2: events.ScheduleEvent(EVENT_FIREBALL, Seconds(1), Seconds(8), group); events.ScheduleEvent(EVENT_EYE_BLAST, Seconds(1), Seconds(30), group); - if (roll_chance_i(50)) + if (roll_chance(50)) events.ScheduleEvent(EVENT_DARK_BARRAGE, Seconds(1), Seconds(20), group); break; case GROUP_PHASE_3: diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp index 309b538fce440..efa5f6b23c3d1 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp @@ -284,7 +284,7 @@ struct IllidariCouncilBossAI : public BossAI if (victim->GetTypeId() == TYPEID_PLAYER) Talk(SAY_COUNCIL_SLAY); - if (roll_chance_i(30)) + if (roll_chance(30)) if (Creature* boss = instance->GetCreature(GetRandomBossExcept(_bossId))) boss->AI()->Talk(SAY_COUNCIL_COMNT); } diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp index 770ce2090e8b2..fa457e614319a 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -67,7 +67,7 @@ struct boss_gatewatcher_iron_hand : public BossAI void KilledUnit(Unit* /*victim*/) override { - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_SLAY); } @@ -99,7 +99,7 @@ struct boss_gatewatcher_iron_hand : public BossAI Talk(EMOTE_HAMMER); /// @todo expect cast this about 5 times in a row (?), announce it by emote only once DoCastVictim(SPELL_JACKHAMMER, true); - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_HAMMER); events.ScheduleEvent(EVENT_JACKHAMMER, 30s); break; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp index 1da49ecd87f79..6888481bc2818 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp @@ -223,7 +223,7 @@ class spell_capacitus_polarity_shift : public SpellScript Unit* target = GetHitUnit(); Unit* caster = GetCaster(); - target->CastSpell(target, roll_chance_i(50) ? SPELL_POSITIVE_POLARITY : SPELL_NEGATIVE_POLARITY, CastSpellExtraArgs(TRIGGERED_FULL_MASK) + target->CastSpell(target, roll_chance(50) ? SPELL_POSITIVE_POLARITY : SPELL_NEGATIVE_POLARITY, CastSpellExtraArgs(TRIGGERED_FULL_MASK) .SetOriginalCaster(caster->GetGUID())); } diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index 9d4325e080d02..1d0c05fa7b1ca 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -124,7 +124,7 @@ struct boss_nethermancer_sepethrea : public BossAI case EVENT_DRAGONS_BREATH: DoCastSelf(SPELL_DRAGONS_BREATH); events.Repeat(25s, 35s); - if (roll_chance_i(50)) + if (roll_chance(50)) Talk(SAY_DRAGONS_BREATH); break; default: diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp index 21b7c510c1b60..2f402071847f3 100644 --- a/src/server/scripts/Outland/boss_doomwalker.cpp +++ b/src/server/scripts/Outland/boss_doomwalker.cpp @@ -190,7 +190,7 @@ class spell_doomwalker_earthquake : public AuraScript void HandleKnockdown(AuraEffect const* /*aurEff*/) const { - if (roll_chance_i(50)) + if (roll_chance(50)) GetTarget()->CastSpell(GetTarget(), SPELL_KNOCKDOWN, true); } diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp index 6a5224a60de21..61158c77d7610 100644 --- a/src/server/scripts/Outland/zone_terokkar_forest.cpp +++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp @@ -211,7 +211,7 @@ class spell_terokkar_free_webbed_on_quest : public SpellScript Unit* caster = GetCaster(); Unit* target = GetHitUnit(); - if (roll_chance_i(66)) + if (roll_chance(66)) caster->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(CocoonSummonSpells), true); else target->CastSpell(caster, SPELL_FREE_WEBBED_6, true); diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp index 069458df89166..879487f98bc1b 100644 --- a/src/server/scripts/Pet/pet_generic.cpp +++ b/src/server/scripts/Pet/pet_generic.cpp @@ -236,7 +236,7 @@ class spell_pet_gen_lich_pet_periodic_emote : public AuraScript // Effect of 70050 is overlapped by effect of 69683 but not instantly (69683 is a series of spell casts, takes longer to execute). // However, for some reason emote is not played if creature is idle and only if creature is moving or is already rooted. // For now it's scripted manually in script below to play emote always. - if (roll_chance_i(50)) + if (roll_chance(50)) GetTarget()->CastSpell(GetTarget(), SPELL_LICH_PET_EMOTE, true); } diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index b0f240e1aea2b..60fb048e8e98e 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -819,7 +819,7 @@ class spell_dh_darkness : public AuraScript void Absorb(AuraEffect const* /*aurEff*/, DamageInfo& dmgInfo, uint32& absorbAmount) const { if (AuraEffect const* chanceEffect = GetEffect(EFFECT_1)) - if (roll_chance_f(chanceEffect->GetAmount())) + if (roll_chance(chanceEffect->GetAmount())) absorbAmount = dmgInfo.GetDamage(); } @@ -2010,7 +2010,7 @@ class spell_dh_shattered_souls_devourer : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 02cf1e4101416..51f9513617b73 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -808,7 +808,7 @@ class spell_dk_frost_fever_proc : public AuraScript { bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void Register() override @@ -1079,7 +1079,7 @@ class spell_dk_obliteration : public AuraScript target->CastSpell(target, SPELL_DK_KILLING_MACHINE_PROC, aurEff); if (AuraEffect const* oblitaration = target->GetAuraEffect(SPELL_DK_OBLITERATION, EFFECT_1)) - if (roll_chance_f(oblitaration->GetAmount())) + if (roll_chance(oblitaration->GetAmount())) target->CastSpell(target, SPELL_DK_OBLITERATION_RUNE_ENERGIZE, aurEff); } @@ -1262,7 +1262,7 @@ class spell_dk_rime : public AuraScript if (eventInfo.GetSpellInfo()->Id == SPELL_DK_FROST_SCYTHE) chance /= 2.f; - return roll_chance_f(chance); + return roll_chance(chance); } void Register() override diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 7f17e73a3d9d4..8724fee69ffb8 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -516,7 +516,7 @@ class spell_dru_dream_of_cenarius_guardian : public AuraScript if (GetUnitOwner()->HasAura(SPELL_DRUID_DREAM_OF_CENARIUS_COOLDOWN)) return false; - return roll_chance_f(GetUnitOwner()->GetUnitCriticalChanceDone(BASE_ATTACK)); + return roll_chance(GetUnitOwner()->GetUnitCriticalChanceDone(BASE_ATTACK)); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& /*procInfo*/) const @@ -868,7 +868,7 @@ class spell_dru_embrace_of_the_dream : public AuraScript bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const { - return roll_chance_f(GetEffectInfo(EFFECT_2).CalcValue(GetCaster())); + return roll_chance(GetEffectInfo(EFFECT_2).CalcValue(GetCaster())); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const @@ -1168,7 +1168,7 @@ class spell_dru_galactic_guardian : public AuraScript static bool CheckEffectProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -1294,7 +1294,7 @@ class spell_dru_gore : public AuraScript bool CheckEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*procInfo*/) @@ -1488,7 +1488,7 @@ class spell_dru_item_t6_trinket : public AuraScript else return; - if (roll_chance_i(chance)) + if (roll_chance(chance)) eventInfo.GetActor()->CastSpell(nullptr, spellId, aurEff); } @@ -1604,7 +1604,7 @@ class spell_dru_luxuriant_soil : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) const @@ -1879,7 +1879,7 @@ class spell_dru_omen_of_clarity_restoration : public AuraScript { bool CheckProc(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void Register() override @@ -2199,7 +2199,7 @@ class spell_dru_shooting_stars : public AuraScript float chance = float(aurEff->GetAmount()) * std::sqrt(float(targets.size())); float procs; - if (roll_chance_f(std::modf(chance / 100.0f, &procs) * 100.0f)) + if (roll_chance(std::modf(chance / 100.0f, &procs) * 100.0f)) procs += 1.0f; if (procs <= 0.0f) @@ -2210,7 +2210,7 @@ class spell_dru_shooting_stars : public AuraScript { uint32 spellId = SPELL_DRUID_SHOOTING_STARS_DAMAGE; AuraEffect const* crashingStarTalent = caster->GetAuraEffect(SPELL_DRUID_CRASHING_STAR_TALENT, EFFECT_0); - if (crashingStarTalent && roll_chance_f(crashingStarTalent->GetAmount())) + if (crashingStarTalent && roll_chance(crashingStarTalent->GetAmount())) spellId = SPELL_DRUID_CRASHING_STAR_DAMAGE; caster->CastSpell(target, spellId, CastSpellExtraArgsInit{ @@ -2339,7 +2339,7 @@ class spell_dru_sudden_ambush : public AuraScript if (!comboPoints) return false; - return roll_chance_f(*comboPoints * aurEff->GetAmount()); + return roll_chance(*comboPoints * aurEff->GetAmount()); } void Register() override diff --git a/src/server/scripts/Spells/spell_evoker.cpp b/src/server/scripts/Spells/spell_evoker.cpp index f05e76d54723a..476747ef1ea1b 100644 --- a/src/server/scripts/Spells/spell_evoker.cpp +++ b/src/server/scripts/Spells/spell_evoker.cpp @@ -168,7 +168,7 @@ class spell_evo_burnout : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -332,7 +332,7 @@ class spell_evo_essence_burst_trigger : public SpellScript bool Load() override { AuraEffect const* aurEff = GetCaster()->GetAuraEffect(_talentAuraId, EFFECT_0); - return aurEff && roll_chance_f(aurEff->GetAmount()); + return aurEff && roll_chance(aurEff->GetAmount()); } void HandleEssenceBurst() const diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 93362920e7dc3..8c0870ddc0e87 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -333,7 +333,7 @@ class spell_gen_aura_of_fear : public AuraScript void PeriodicTick(AuraEffect const* aurEff) { PreventDefaultAction(); - if (!roll_chance_i(GetSpellInfo()->ProcChance)) + if (!roll_chance(GetSpellInfo()->ProcChance)) return; GetTarget()->CastSpell(nullptr, aurEff->GetSpellEffectInfo().TriggerSpell, true); @@ -1932,7 +1932,7 @@ class spell_gen_gnomish_transporter : public SpellScript void HandleDummy(SpellEffIndex /* effIndex */) { - GetCaster()->CastSpell(GetCaster(), roll_chance_i(50) ? SPELL_TRANSPORTER_SUCCESS : SPELL_TRANSPORTER_FAILURE, true); + GetCaster()->CastSpell(GetCaster(), roll_chance(50) ? SPELL_TRANSPORTER_SUCCESS : SPELL_TRANSPORTER_FAILURE, true); } void Register() override @@ -2193,7 +2193,7 @@ class spell_gen_mounted_charge : public SpellScript } // If target isn't a training dummy there's a chance of failing the charge - if (!target->IsCharmedOwnedByPlayerOrPlayer() && roll_chance_f(12.5f)) + if (!target->IsCharmedOwnedByPlayerOrPlayer() && roll_chance(12.5f)) spellId = SPELL_CHARGE_MISS_EFFECT; if (Unit* vehicle = GetCaster()->GetVehicleBase()) @@ -2317,7 +2317,7 @@ class spell_gen_netherbloom : public SpellScript if (Unit* target = GetHitUnit()) { // 25% chance of casting a random buff - if (roll_chance_i(75)) + if (roll_chance(75)) return; // triggered spells are 28703 to 28707 @@ -2359,7 +2359,7 @@ class spell_gen_nightmare_vine : public SpellScript if (Unit* target = GetHitUnit()) { // 25% chance of casting Nightmare Pollen - if (roll_chance_i(25)) + if (roll_chance(25)) target->CastSpell(target, SPELL_NIGHTMARE_POLLEN, true); } } @@ -3172,7 +3172,7 @@ class spell_gen_spectator_cheer_trigger : public SpellScript { void HandleDummy(SpellEffIndex /*effIndex*/) { - if (roll_chance_i(40)) + if (roll_chance(40)) GetCaster()->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(EmoteArray)); } @@ -3684,7 +3684,7 @@ class spell_gen_whisper_to_controller_random : public SpellScript void HandleScript(SpellEffIndex /*effIndex*/) { // Same for all spells - if (!roll_chance_i(20)) + if (!roll_chance(20)) return; if (Creature* target = GetHitCreature()) diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 22e4c4da78ed2..71640321e337a 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -335,7 +335,7 @@ class spell_hun_cobra_sting : public AuraScript bool RollProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*procInfo*/) { - return roll_chance_f(GetEffect(EFFECT_1)->GetAmount()); + return roll_chance(GetEffect(EFFECT_1)->GetAmount()); } void Register() override @@ -639,7 +639,7 @@ class spell_hun_lock_and_load : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -1139,7 +1139,7 @@ class spell_hun_shrapnel_shot : public AuraScript void HandleProc(ProcEventInfo const& /*eventInfo*/) const { - if (!roll_chance_f(GetEffect(EFFECT_0)->GetAmount())) + if (!roll_chance(GetEffect(EFFECT_0)->GetAmount())) return; GetCaster()->CastSpell(GetCaster(), SPELL_HUNTER_LOCK_AND_LOAD, CastSpellExtraArgsInit{ @@ -1444,7 +1444,7 @@ class spell_hun_wilderness_medicine : public AuraScript void OnPeriodic(AuraEffect const* aurEff) const { if (Unit* caster = GetCaster()) - if (roll_chance_f(_dispelChance)) + if (roll_chance(_dispelChance)) caster->CastSpell(GetTarget(), SPELL_HUNTER_WILDERNESS_MEDICINE_DISPEL, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringAura = aurEff diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 5c23fb8c5e561..749c4298c85e1 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -307,7 +307,7 @@ class spell_item_anger_capacitor : public SpellScriptLoader caster->RemoveAurasDueToSpell(SPELL_MOTE_OF_ANGER); uint32 spellId = SPELL_MANIFEST_ANGER_MAIN_HAND; if (Player* player = caster->ToPlayer()) - if (player->GetWeaponForAttack(OFF_ATTACK, true) && roll_chance_i(50)) + if (player->GetWeaponForAttack(OFF_ATTACK, true) && roll_chance(50)) spellId = SPELL_MANIFEST_ANGER_OFF_HAND; caster->CastSpell(target, spellId, aurEff); @@ -420,7 +420,7 @@ class spell_item_aura_of_madness : public AuraScript uint32 spellId = Trinity::Containers::SelectRandomContainerElement(triggeredSpells[caster->GetClass()]); caster->CastSpell(caster, spellId, aurEff); - if (roll_chance_i(10)) + if (roll_chance(10)) caster->Unit::Say(SAY_MADNESS); } @@ -730,7 +730,7 @@ class spell_item_goblin_bomb_dispenser : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { if (Item* item = GetCastItem()) - GetCaster()->CastSpell(GetCaster(), roll_chance_i(95) ? SPELL_SUMMON_GOBLIN_BOMB : SPELL_MALFUNCTION_EXPLOSION, item); + GetCaster()->CastSpell(GetCaster(), roll_chance(95) ? SPELL_SUMMON_GOBLIN_BOMB : SPELL_MALFUNCTION_EXPLOSION, item); } void Register() override @@ -792,7 +792,7 @@ class spell_item_defibrillate : public SpellScriptLoader void HandleScript(SpellEffIndex effIndex) { - if (roll_chance_i(_chance)) + if (roll_chance(_chance)) { PreventHitDefaultEffect(effIndex); if (_failSpell) @@ -1978,7 +1978,7 @@ class spell_item_ultrasafe_transporter : public SpellScript void HandleScript(SpellEffIndex /* effIndex */) { - if (!roll_chance_i(50)) // 50% success + if (!roll_chance(50)) // 50% success return; Unit* caster = GetCaster(); @@ -2045,7 +2045,7 @@ class spell_item_dimensional_ripper_area52 : public SpellScript void HandleScript(SpellEffIndex /* effIndex */) { - if (!roll_chance_i(50)) // 50% success + if (!roll_chance(50)) // 50% success return; Unit* caster = GetCaster(); @@ -2748,7 +2748,7 @@ class spell_item_purify_helboar_meat : public SpellScript void HandleDummy(SpellEffIndex /* effIndex */) { Unit* caster = GetCaster(); - caster->CastSpell(caster, roll_chance_i(50) ? SPELL_SUMMON_PURIFIED_HELBOAR_MEAT : SPELL_SUMMON_TOXIC_HELBOAR_MEAT, true); + caster->CastSpell(caster, roll_chance(50) ? SPELL_SUMMON_PURIFIED_HELBOAR_MEAT : SPELL_SUMMON_TOXIC_HELBOAR_MEAT, true); } void Register() override @@ -2775,7 +2775,7 @@ class spell_item_nigh_invulnerability : public SpellScript Unit* caster = GetCaster(); if (Item* castItem = GetCastItem()) { - if (roll_chance_i(86)) // Nigh-Invulnerability - success + if (roll_chance(86)) // Nigh-Invulnerability - success caster->CastSpell(caster, SPELL_NIGH_INVULNERABILITY, castItem); else // Complete Vulnerability - backfire in 14% casts caster->CastSpell(caster, SPELL_COMPLETE_VULNERABILITY, castItem); @@ -2804,7 +2804,7 @@ class spell_item_poultryizer : public SpellScript void HandleDummy(SpellEffIndex /* effIndex */) { if (GetCastItem() && GetHitUnit()) - GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(80) ? SPELL_POULTRYIZER_SUCCESS : SPELL_POULTRYIZER_BACKFIRE, GetCastItem()); + GetCaster()->CastSpell(GetHitUnit(), roll_chance(80) ? SPELL_POULTRYIZER_SUCCESS : SPELL_POULTRYIZER_BACKFIRE, GetCastItem()); } void Register() override @@ -3012,7 +3012,7 @@ class spell_item_nitro_boosts : public SpellScript Unit* caster = GetCaster(); bool success = true; if (!caster->GetMap()->IsDungeon()) - success = roll_chance_i(95); // nitro boosts can only fail in flying-enabled locations on 3.3.5 + success = roll_chance(95); // nitro boosts can only fail in flying-enabled locations on 3.3.5 caster->CastSpell(caster, success ? SPELL_NITRO_BOOSTS_SUCCESS : SPELL_NITRO_BOOSTS_BACKFIRE, GetCastItem()); } @@ -3040,7 +3040,7 @@ class spell_item_nitro_boosts_backfire : public AuraScript float curZ = GetTarget()->GetPositionZ(); if (curZ < lastZ) { - if (roll_chance_i(80)) // we don't have enough sniffs to verify this, guesstimate + if (roll_chance(80)) // we don't have enough sniffs to verify this, guesstimate GetTarget()->CastSpell(GetTarget(), SPELL_NITRO_BOOSTS_PARACHUTE, effect); GetAura()->Remove(); } @@ -3137,7 +3137,7 @@ class spell_item_pygmy_oil : public SpellScript else { aura = caster->GetAura(SPELL_PYGMY_OIL_SMALLER_AURA); - if (!aura || aura->GetStackAmount() < 5 || !roll_chance_i(50)) + if (!aura || aura->GetStackAmount() < 5 || !roll_chance(50)) caster->CastSpell(caster, SPELL_PYGMY_OIL_SMALLER_AURA, true); else { @@ -3815,8 +3815,8 @@ class spell_item_mind_control_cap : public SpellScript Unit* caster = GetCaster(); if (Unit* target = GetHitUnit()) { - if (roll_chance_i(ROLL_CHANCE_NO_BACKFIRE)) - caster->CastSpell(target, roll_chance_i(ROLL_CHANCE_DULLARD) ? SPELL_DULLARD : SPELL_GNOMISH_MIND_CONTROL_CAP, GetCastItem()); + if (roll_chance(ROLL_CHANCE_NO_BACKFIRE)) + caster->CastSpell(target, roll_chance(ROLL_CHANCE_DULLARD) ? SPELL_DULLARD : SPELL_GNOMISH_MIND_CONTROL_CAP, GetCastItem()); else target->CastSpell(caster, SPELL_GNOMISH_MIND_CONTROL_CAP, true); // backfire - 5% chance } @@ -4229,8 +4229,8 @@ class spell_item_eggnog : public SpellScript void HandleScript(SpellEffIndex /* effIndex */) { - if (roll_chance_i(40)) - GetCaster()->CastSpell(GetHitUnit(), roll_chance_i(50) ? SPELL_EGG_NOG_REINDEER : SPELL_EGG_NOG_SNOWMAN, GetCastItem()); + if (roll_chance(40)) + GetCaster()->CastSpell(GetHitUnit(), roll_chance(50) ? SPELL_EGG_NOG_REINDEER : SPELL_EGG_NOG_SNOWMAN, GetCastItem()); } void Register() override diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index 11087ee8221e1..c2cd9b53bf150 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -293,7 +293,7 @@ class spell_mage_arcane_explosion : public SpellScript if (!requiredTargets) return false; - return GetUnitTargetCountForEffect(EFFECT_1) >= requiredTargets->GetAmount() && roll_chance_f(triggerChance->GetAmount()); + return GetUnitTargetCountForEffect(EFFECT_1) >= requiredTargets->GetAmount() && roll_chance(triggerChance->GetAmount()); }(); if (!procTriggered) @@ -733,13 +733,13 @@ class spell_mage_fingers_of_frost : public AuraScript bool CheckFrostboltProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { return eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_MAGE, flag128(0, 0x2000000, 0, 0)) - && roll_chance_f(aurEff->GetAmount()); + && roll_chance(aurEff->GetAmount()); } bool CheckFrozenOrbProc(AuraEffect const* aurEff, ProcEventInfo& eventInfo) { return eventInfo.GetSpellInfo() && eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_MAGE, flag128(0, 0, 0x80, 0)) - && roll_chance_f(aurEff->GetAmount()); + && roll_chance(aurEff->GetAmount()); } void Trigger(AuraEffect* aurEff, ProcEventInfo& eventInfo) diff --git a/src/server/scripts/Spells/spell_monk.cpp b/src/server/scripts/Spells/spell_monk.cpp index c6a6f76fc0ed0..2b29fd0df6e48 100644 --- a/src/server/scripts/Spells/spell_monk.cpp +++ b/src/server/scripts/Spells/spell_monk.cpp @@ -285,7 +285,7 @@ class spell_monk_open_palm_strikes : public AuraScript bool CheckProc(AuraEffect const* /*aurEff*/, ProcEventInfo& /*procInfo*/) { AuraEffect const* talent = GetTarget()->GetAuraEffect(SPELL_MONK_OPEN_PALM_STRIKES_TALENT, EFFECT_1); - return talent && roll_chance_f(talent->GetAmount()); + return talent && roll_chance(talent->GetAmount()); } void Register() override diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index 58685b5081253..7d1b1ff51c2d5 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -215,7 +215,7 @@ class spell_pal_art_of_war : public AuraScript bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& /*eventInfo*/) @@ -297,7 +297,7 @@ class spell_pal_awakening : public AuraScript bool CheckProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) @@ -558,7 +558,7 @@ class spell_pal_divine_purpose : public AuraScript if (!procSpell->HasPowerTypeCost(POWER_HOLY_POWER)) return false; - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect* /*aurEff*/, ProcEventInfo& eventInfo) @@ -827,7 +827,7 @@ class spell_pal_final_verdict : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) const { - if (!roll_chance_f(GetEffectValue())) + if (!roll_chance(GetEffectValue())) return; Unit* caster = GetCaster(); @@ -1323,7 +1323,7 @@ class spell_pal_item_t6_trinket : public AuraScript else return; - if (roll_chance_i(chance)) + if (roll_chance(chance)) eventInfo.GetActor()->CastSpell(eventInfo.GetProcTarget(), spellId, aurEff); } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 2ee0f40046890..6ab697ea4b44e 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -838,7 +838,7 @@ class spell_pri_benediction : public SpellScript void HandleEffectHitTarget(SpellEffIndex /*effIndex*/) const { if (AuraEffect const* benediction = GetCaster()->GetAuraEffect(SPELL_PRIEST_BENEDICTION, EFFECT_0)) - if (roll_chance_f(benediction->GetAmount())) + if (roll_chance(benediction->GetAmount())) GetCaster()->CastSpell(GetHitUnit(), SPELL_PRIEST_RENEW, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS); } @@ -1024,7 +1024,7 @@ class spell_pri_dark_indulgence : public SpellScript if (!aurEff) return; - if (roll_chance_f(aurEff->GetAmount())) + if (roll_chance(aurEff->GetAmount())) GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_POWER_OF_THE_DARK_SIDE, true); } @@ -1933,7 +1933,7 @@ class spell_pri_epiphany : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleOnProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) const @@ -2896,7 +2896,7 @@ class spell_pri_mind_devourer : public SpellScript void HandleEffectHitTarget(SpellEffIndex /*effIndex*/) const { AuraEffect const* aurEff = GetCaster()->GetAuraEffect(SPELL_PRIEST_MIND_DEVOURER, EFFECT_0); - if (aurEff && roll_chance_f(aurEff->GetAmount())) + if (aurEff && roll_chance(aurEff->GetAmount())) GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_MIND_DEVOURER_AURA, GetSpell()); } @@ -3455,7 +3455,7 @@ class spell_pri_power_word_shield : public AuraScript float critChanceDone = caster->SpellCritChanceDone(nullptr, aurEff, GetSpellInfo()->GetSchoolMask(), GetSpellInfo()->GetAttackType()); float critChanceTaken = GetUnitOwner()->SpellCritChanceTaken(caster, nullptr, aurEff, GetSpellInfo()->GetSchoolMask(), critChanceDone, GetSpellInfo()->GetAttackType()); - if (roll_chance_f(critChanceTaken)) + if (roll_chance(critChanceTaken)) pctMod *= 2; } @@ -3704,7 +3704,7 @@ class spell_pri_prayer_of_mending_aura : public AuraScript int32 newStackAmount = stackAmount - 1; if (AuraEffect* sayYourPrayers = caster->GetAuraEffect(SPELL_PRIEST_SAY_YOUR_PRAYERS, EFFECT_0)) - if (roll_chance_f(sayYourPrayers->GetAmount())) + if (roll_chance(sayYourPrayers->GetAmount())) ++newStackAmount; args.AddSpellMod(SPELLVALUE_BASE_POINT0, newStackAmount); @@ -3831,7 +3831,7 @@ class spell_pri_holy_10_1_class_set_2pc : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) const @@ -4641,7 +4641,7 @@ class spell_pri_surge_of_light : public AuraScript void HandleEffectProc(AuraEffect const* aurEff, ProcEventInfo& /*eventInfo*/) const { - if (roll_chance_f(aurEff->GetAmount())) + if (roll_chance(aurEff->GetAmount())) GetTarget()->CastSpell(GetTarget(), SPELL_PRIEST_SURGE_OF_LIGHT_EFFECT, aurEff); } diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 47d05d207c48e..b383a51847044 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -413,7 +413,7 @@ class spell_q12634_despawn_fruit_tosser : public SpellScript case 2: spellId = SPELL_PAPAYA_FALLS_TO_GROUND; break; } // sometimes, if you're lucky, you get a dwarf - if (roll_chance_i(5)) + if (roll_chance(5)) spellId = SPELL_SUMMON_ADVENTUROUS_DWARF; GetCaster()->CastSpell(GetCaster(), spellId, true); } diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 1091052f5ea5b..a840b505a726a 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -1086,7 +1086,7 @@ class spell_rog_ruthlessness : public AuraScript Unit* target = GetTarget(); if (Optional cost = GetFinishingMoveCPCost(procInfo.GetProcSpell())) - if (roll_chance_f(aurEff->GetSpellEffectInfo().PointsPerResource * *cost)) + if (roll_chance(aurEff->GetSpellEffectInfo().PointsPerResource * *cost)) target->ModifyPower(POWER_COMBO_POINTS, 1); } diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index ffabc6238f2c2..8deb01eeaeb37 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -233,7 +233,7 @@ class spell_sha_aftershock : public AuraScript { if (Spell const* procSpell = eventInfo.GetProcSpell()) if (Optional cost = procSpell->GetPowerTypeCostAmount(POWER_MAELSTROM)) - return cost > 0 && roll_chance_f(aurEff->GetAmount()); + return cost > 0 && roll_chance(aurEff->GetAmount()); return false; } @@ -660,7 +660,7 @@ class spell_sha_deeply_rooted_elements : public AuraScript if (procInfo.GetSpellInfo()->Id != _triggeringSpellId) return false; - return roll_chance_i(_procAttempts++ - 2); + return roll_chance(_procAttempts++ - 2); } void HandleProc(AuraEffect const* aurEff, ProcEventInfo const& eventInfo) @@ -1016,7 +1016,7 @@ class spell_sha_earthquake_tick : public SpellScript { if (Unit* target = GetHitUnit()) { - if (roll_chance_f(GetEffectInfo(EFFECT_1).CalcValue())) + if (roll_chance(GetEffectInfo(EFFECT_1).CalcValue())) { std::vector areaTriggers = GetCaster()->GetAreaTriggers(SPELL_SHAMAN_EARTHQUAKE); auto itr = std::ranges::find(areaTriggers, GetSpell()->GetOriginalCasterGUID(), [](AreaTrigger const* at) { return at->GetGUID(); }); @@ -1484,7 +1484,7 @@ class spell_sha_ice_strike_proc : public AuraScript public: void AttemptProc() { - if (!roll_chance_i(++_attemptCount * 7)) + if (!roll_chance(++_attemptCount * 7)) return; _attemptCount = 0; @@ -1645,7 +1645,7 @@ class spell_sha_item_t6_trinket : public AuraScript else return; - if (roll_chance_i(chance)) + if (roll_chance(chance)) eventInfo.GetActor()->CastSpell(nullptr, spellId, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK }); } @@ -1824,7 +1824,7 @@ class spell_sha_lava_surge : public AuraScript procChance = (1.0 - std::pow(missChance, _normalizedTicks)) * 100.0; - return roll_chance_f(procChance); + return roll_chance(procChance); } void HandleEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) @@ -2159,7 +2159,7 @@ class spell_sha_mastery_elemental_overload : public AuraScript if (eventInfo.GetProcSpell()->m_appliedMods.contains(stormkeeper)) chance = 100.0; - return roll_chance_f(chance); + return roll_chance(chance); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& procInfo) @@ -2325,7 +2325,7 @@ class spell_sha_molten_thunder_sundering : public SpellScript SpellEffectValue procChance = chanceBaseEffect->GetAmount(); procChance += std::min(targetLimitEffect->GetAmount(), GetUnitTargetCountForEffect(EFFECT_0)) * chancePerTargetEffect->GetAmount(); procChance *= std::pow(0.5, counterScript->ProcCount); // Each consecutive reset reduces these chances by half - if (roll_chance_f(procChance)) + if (roll_chance(procChance)) { shaman->CastSpell(shaman, SPELL_SHAMAN_MOLTEN_THUNDER_PROC, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -2618,7 +2618,7 @@ class StormflurryEvent : public BasicEvent _caster->CastSpell(_target, _mainHandDamageSpellId, args); _caster->CastSpell(_target, _offHandDamageSpellId, args); - if (!roll_chance_f(_procChance)) + if (!roll_chance(_procChance)) return true; _caster->m_Events.AddEvent(this, Milliseconds(time) + 200ms); @@ -2669,7 +2669,7 @@ class spell_sha_stormflurry : public SpellScript return; SpellEffectValue procChance = chanceEffect->GetAmount(); - if (!roll_chance_f(procChance)) + if (!roll_chance(procChance)) return; caster->m_Events.AddEventAtOffset(new StormflurryEvent(caster, GetHitUnit(), GetSpell()->m_castId, damageEffect->GetAmount(), @@ -3283,7 +3283,7 @@ class spell_sha_voltaic_blaze_talent : public AuraScript { static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) @@ -3370,7 +3370,7 @@ void WindfuryProcEvent::Trigger(Unit* shaman, Unit* target) } std::ptrdiff_t attacks = 2; - if (AuraEffect const* unrulyWinds = shaman->GetAuraEffect(SPELL_SHAMAN_UNRULY_WINDS, EFFECT_0); roll_chance_f(unrulyWinds->GetAmount())) + if (AuraEffect const* unrulyWinds = shaman->GetAuraEffect(SPELL_SHAMAN_UNRULY_WINDS, EFFECT_0); roll_chance(unrulyWinds->GetAmount())) ++attacks; shaman->m_Events.AddEventAtOffset(new WindfuryProcEvent(shaman, target, attacks), Sequence.front().Delay); diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 9dce0928d6d39..fa5a33c7efb37 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -1656,7 +1656,7 @@ class spell_warl_summon_sayaad : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { - GetCaster()->CastSpell(nullptr, roll_chance_i(50) ? SPELL_WARLOCK_SUMMON_SUCCUBUS : SPELL_WARLOCK_SUMMON_INCUBUS, TRIGGERED_FULL_MASK); + GetCaster()->CastSpell(nullptr, roll_chance(50) ? SPELL_WARLOCK_SUMMON_SUCCUBUS : SPELL_WARLOCK_SUMMON_INCUBUS, TRIGGERED_FULL_MASK); } void Register() override diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index e7e7203ed49c2..8d75436c8fedf 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -311,7 +311,7 @@ class spell_warr_bloodsurge : public AuraScript Cell::VisitAllObjects(caster, worker, 50.0f); SpellEffectValue chance = std::sqrt(rends) * aurEff->GetAmount(); - if (!roll_chance_f(chance)) + if (!roll_chance(chance)) return; caster->CastSpell(caster, SPELL_WARRIOR_BLOODSURGE_ENERGIZE, CastSpellExtraArgsInit{ @@ -645,7 +645,7 @@ class spell_warr_devastator : public AuraScript { if (GetTarget()->GetSpellHistory()->HasCooldown(SPELL_WARRIOR_SHIELD_SLAM)) { - if (roll_chance_f(GetEffectInfo(EFFECT_1).CalcValue())) + if (roll_chance(GetEffectInfo(EFFECT_1).CalcValue())) { GetTarget()->GetSpellHistory()->ResetCooldown(SPELL_WARRIOR_SHIELD_SLAM, true); GetTarget()->CastSpell(GetTarget(), SPELL_WARRIOR_SHIELD_SLAM_MARKER, TRIGGERED_IGNORE_CAST_IN_PROGRESS); @@ -706,7 +706,7 @@ class spell_warr_enrage_proc : public AuraScript } } - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(ProcEventInfo const& eventInfo) @@ -1642,7 +1642,7 @@ class spell_warr_raging_blow_cooldown_reset : public SpellScript if (AuraEffect const* auraEffect = caster->GetAuraEffect(SPELL_WARRIOR_WRATH_AND_FURY, EFFECT_0)) value += auraEffect->GetAmount(); - if (roll_chance_f(value)) + if (roll_chance(value)) { caster->CastSpell(nullptr, SPELL_WARRIOR_ALWAYS_ANGRY, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, @@ -1873,7 +1873,7 @@ class spell_warr_strategist : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*procEvent*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleCooldown(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*procEvent*/) const @@ -2000,7 +2000,7 @@ class spell_warr_tactician : public AuraScript if (!procSpell->CalcPowerCost(POWER_RAGE, false, eventInfo.GetActor(), SpellSchoolMask(procSpell->SchoolMask))) return false; - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } static void HandleProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) @@ -2083,7 +2083,7 @@ class spell_warr_thunder_blast_aura : public AuraScript static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) { - return roll_chance_f(aurEff->GetAmount()); + return roll_chance(aurEff->GetAmount()); } void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/) const @@ -2250,7 +2250,7 @@ class spell_warr_unbridled_ferocity : public AuraScript bool CheckProc(ProcEventInfo& /*eventInfo*/) const { - return roll_chance_f(GetEffect(EFFECT_0)->GetAmount()); + return roll_chance(GetEffect(EFFECT_0)->GetAmount()); } void Register() override diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index 861fbc00a43a6..2679efd26684a 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -220,7 +220,7 @@ class item_generic_limit_chance_above_60 : public ItemScript float const failureChance = (victim->GetLevelForTarget(player) - 60) * lvlPenaltyFactor; // base ppm chance was already rolled, only roll success chance - return !roll_chance_f(failureChance); + return !roll_chance(failureChance); } return true; diff --git a/src/server/scripts/World/npc_guard.cpp b/src/server/scripts/World/npc_guard.cpp index cfbb8be671aa1..7d577c13bcfef 100644 --- a/src/server/scripts/World/npc_guard.cpp +++ b/src/server/scripts/World/npc_guard.cpp @@ -123,7 +123,7 @@ struct npc_guard_generic : public GuardAI meleeContext.Repeat(); return; } - if (roll_chance_i(20)) + if (roll_chance(20)) { if (SpellInfo const* spellInfo = SelectSpell(me->GetVictim(), 0, 0, SELECT_TARGET_ANY_ENEMY, 0, NOMINAL_MELEE_RANGE, SELECT_EFFECT_DONTCARE)) { @@ -138,7 +138,7 @@ struct npc_guard_generic : public GuardAI SpellInfo const* spellInfo = nullptr; // Select a healing spell if less than 30% hp and ONLY 33% of the time - if (me->HealthBelowPct(30) && roll_chance_i(33)) + if (me->HealthBelowPct(30) && roll_chance(33)) spellInfo = SelectSpell(me, 0, 0, SELECT_TARGET_ANY_FRIEND, 0, 0, SELECT_EFFECT_HEALING); // No healing spell available, check if we can cast a ranged spell diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 725c8951f71d3..0fab824a98d71 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1519,7 +1519,7 @@ struct npc_brewfest_reveler_2 : ScriptedAI } case EVENT_EMOTE: // Play random emote or dance - if (roll_chance_i(50)) + if (roll_chance(50)) { me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(BrewfestRandomEmote)); _events.ScheduleEvent(EVENT_NEXT, 4s, 6s); @@ -1536,7 +1536,7 @@ struct npc_brewfest_reveler_2 : ScriptedAI me->SetEmoteState(EMOTE_ONESHOT_NONE); // Random EVENT_EMOTE or EVENT_FACETO - if (roll_chance_i(50)) + if (roll_chance(50)) _events.ScheduleEvent(EVENT_FACE_TO, 1s); else _events.ScheduleEvent(EVENT_EMOTE, 1s); From f9478386df98ceec578dfe78a7cd1dae8b70d210 Mon Sep 17 00:00:00 2001 From: ".:::ReZaRr:::." Date: Fri, 10 Apr 2026 17:45:51 +0300 Subject: [PATCH 044/175] Scripts/ExilesReach: Update quests 55174/59932 Cooking Meat (#31771) --- .../world/master/2026_04_10_00_world.sql | 20 +++++++++++++++++++ .../scripts/ExilesReach/zone_exiles_reach.cpp | 18 ----------------- 2 files changed, 20 insertions(+), 18 deletions(-) create mode 100644 sql/updates/world/master/2026_04_10_00_world.sql diff --git a/sql/updates/world/master/2026_04_10_00_world.sql b/sql/updates/world/master/2026_04_10_00_world.sql new file mode 100644 index 0000000000000..6671841bfa9cf --- /dev/null +++ b/sql/updates/world/master/2026_04_10_00_world.sql @@ -0,0 +1,20 @@ +-- Template +UPDATE `creature_template` SET `ScriptName` = '' WHERE `entry` IN (166906, 156651); + +-- Locales +DELETE FROM `gameobject_template_locale` WHERE (`locale`='ruRU' AND `entry` IN (339770,335718,339769,349962)); +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `unk1`, `VerifiedBuild`) VALUES +(339770, 'ruRU', 'Брошенный сундук с сокровищами', 'Открывание', '', 66709), +(335718, 'ruRU', 'Doodad_6DU_HighmaulRaid_Door_ThroneRoom001', '', '', 66709), +(339769, 'ruRU', 'Костер', 'Готовка', '', 66709), +(349962, 'ruRU', 'Костер', 'Готовка', '', 66709); + +DELETE FROM `quest_request_items_locale` WHERE (`ID` IN (59932, 55174) AND `locale`='ruRU'); +INSERT INTO `quest_request_items_locale` (`ID`, `locale`, `CompletionText`, `VerifiedBuild`) VALUES +(59932, 'ruRU', 'Прошу... еды...', 66709), +(55174, 'ruRU', 'Прошу... еды...', 66709); + +DELETE FROM `quest_offer_reward_locale` WHERE (`ID` IN (59932, 55174) AND `locale`='ruRU'); +INSERT INTO `quest_offer_reward_locale` (`ID`, `locale`, `RewardText`, `VerifiedBuild`) VALUES +(59932, 'ruRU', '<Вон\'са быстро съедает приготовленное вами мясо.>\n\nЗначит, я все-таки пока не отправлюсь к Бвонсамди.\n\nЛучше вам поторопиться. Нескольких членов экспедиции сцапали свинобразы!', 66709), +(55174, 'ruRU', '<Алария быстро съедает приготовленное вами мясо.>\n\nКлянусь Светом... Так намного лучше.\n\nЗдесь нельзя оставаться... экспедицию захватили свинобразы!', 66709); diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp index 75dd8ca23949e..a4dd1fb7c3a49 100644 --- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp +++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp @@ -1988,7 +1988,6 @@ class spell_summon_survivor_beach : public SpellScript enum CaptainGarrickAbandonedCampData { - CONVERSATION_QUEST_COOKING_MEAT_ACCEPT_ALLIANCE = 11696, CONVERSATION_QUEST_COOKING_MEAT_COMPLETE_ALLIANCE = 12863, QUEST_COOKING_MEAT_ALLIANCE = 55174 @@ -1996,26 +1995,11 @@ enum CaptainGarrickAbandonedCampData enum WarlordGrimaxeAbandonedCampData { - CONVERSATION_QUEST_COOKING_MEAT_ACCEPT_HORDE = 14439, CONVERSATION_QUEST_COOKING_MEAT_COMPLETE_HORDE = 14611, QUEST_COOKING_MEAT_HORDE = 59932 }; -template -struct npc_captain_abandoned_camp_exiles_reach : public ScriptedAI -{ - npc_captain_abandoned_camp_exiles_reach(Creature* creature) : ScriptedAI(creature) { } - - void OnQuestAccept(Player* player, Quest const* quest) override - { - if (quest->GetQuestId() != QuestId) - return; - - Conversation::CreateConversation(ConversationId, player, *player, player->GetGUID()); - } -}; - enum CookingMeatQuestData { ANIMATION_KIT_INJURED = 14432 @@ -6965,8 +6949,6 @@ void AddSC_zone_exiles_reach() new quest_finding_the_lost_expedition_horde(); RegisterSpellScript(spell_summon_survivor_beach); // Abandoned Camp - new GenericCreatureScript>("npc_captain_garrick_abandoned_camp"); - new GenericCreatureScript>("npc_warlord_grimaxe_abandoned_camp"); new quest_cooking_meat_alliance(); new quest_cooking_meat_horde(); RegisterAreaTriggerAI(areatrigger_find_the_lost_expedition); From 7bbf993c6b1252fb4cec95d16b0ee6ca7baca2e7 Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Sat, 11 Apr 2026 01:28:50 +0300 Subject: [PATCH 045/175] Scripts/Spell: Implement priest talent Tithe Evasion (#31764) --- src/server/scripts/Spells/spell_priest.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 6ab697ea4b44e..502e50717e78e 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -241,6 +241,7 @@ enum PriestSpells SPELL_PRIEST_STRENGTH_OF_SOUL_EFFECT = 197548, SPELL_PRIEST_SURGE_OF_LIGHT = 109186, SPELL_PRIEST_SURGE_OF_LIGHT_EFFECT = 114255, + SPELL_PRIEST_TITHE_EVASION = 373223, SPELL_PRIEST_TRANQUIL_LIGHT = 196816, SPELL_PRIEST_THE_PENITENT_AURA = 200347, SPELL_PRIEST_TRAIL_OF_LIGHT_HEAL = 234946, @@ -4470,6 +4471,9 @@ class spell_pri_shadow_word_death : public SpellScript if (spell_pri_deaths_torment::Data const* deathsTorment = std::any_cast(&GetSpell()->m_customArg)) backlashDamage = CalculatePct(backlashDamage, deathsTorment->BacklashPct); + if (AuraEffect const* titheEvasion = caster->GetAuraEffect(SPELL_PRIEST_TITHE_EVASION, EFFECT_0)) + AddPct(backlashDamage, -titheEvasion->GetAmount()); + caster->m_Events.AddEventAtOffset([caster, originalCastId = GetSpell()->m_castId, backlashDamage] { caster->CastSpell(caster, SPELL_PRIEST_SHADOW_WORD_DEATH_DAMAGE, CastSpellExtraArgs() From 26de9d180c16f8171024aa1a74e4268ee0abb734 Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Sat, 11 Apr 2026 18:40:01 +0200 Subject: [PATCH 046/175] Scripts/EcoDomeAldani: Implement Azhiccar encounter (#31364) Co-authored-by: ModoX --- .../world/master/2026_04_11_00_world.sql | 103 +++ .../Karesh/EcoDomeAldani/boss_azhiccar.cpp | 770 ++++++++++++++++++ .../Karesh/EcoDomeAldani/ecodome_aldani.h | 58 ++ .../EcoDomeAldani/instance_ecodome_aldani.cpp | 93 +++ .../scripts/Karesh/karesh_script_loader.cpp | 31 + 5 files changed, 1055 insertions(+) create mode 100644 sql/updates/world/master/2026_04_11_00_world.sql create mode 100644 src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp create mode 100644 src/server/scripts/Karesh/EcoDomeAldani/ecodome_aldani.h create mode 100644 src/server/scripts/Karesh/EcoDomeAldani/instance_ecodome_aldani.cpp create mode 100644 src/server/scripts/Karesh/karesh_script_loader.cpp diff --git a/sql/updates/world/master/2026_04_11_00_world.sql b/sql/updates/world/master/2026_04_11_00_world.sql new file mode 100644 index 0000000000000..9352f23eadd92 --- /dev/null +++ b/sql/updates/world/master/2026_04_11_00_world.sql @@ -0,0 +1,103 @@ +SET @ATSPAWNID := 286; +SET @ATPROP := 176; +SET @ATID := 185; + +-- Creature +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x80000, `AIName`='SmartAI' WHERE `entry`=236190; -- Frenzied Mite +UPDATE `creature_template` SET `faction`=16, `BaseAttackTime`=2000, `unit_flags`=33555264, `unit_flags3`=1073741824, `ScriptName`='boss_azhiccar' WHERE `entry`=234893; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=237454; +UPDATE `creature_template` SET `ScriptName`='npc_azhiccar_intro_creature' WHERE `entry` IN (245411, 245412); + +DELETE FROM `creature_template_addon` WHERE `entry`=234893; +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(234893, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '422356'); + +DELETE FROM `creature_addon` WHERE `guid`=10006776; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(10006776, 0, 0, 0, 0, 0, 0, 1, 0, 0, 19254, 0, 0, 0, ''); + +DELETE FROM `creature_template_difficulty` WHERE (`DifficultyID`=23 AND `Entry` =236190); +INSERT INTO `creature_template_difficulty` (`Entry`, `DifficultyID`, `HealthScalingExpansion`, `HealthModifier`, `ManaModifier`, `CreatureDifficultyID`, `TypeFlags`, `TypeFlags2`, `TypeFlags3`) VALUES +(236190, 23, 10, 0.5, 1, 315019, 0x200048, 128, 0); -- Frenzied Mite + +UPDATE `creature_template_difficulty` SET `ContentTuningID`=1279, `StaticFlags1`=0x10000000 WHERE (`Entry`=236190 AND `DifficultyID`=23); -- 236190 (Frenzied Mite) - CanSwim + +-- SAI +DELETE FROM `smart_scripts` WHERE `entryorguid`=237454 AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(237454, 0, 0, 0, '', 63, 0, 100, 0, 0, 0, 0, 0, 0, '', 85, 1217720, 0, 0, 0, 0, 0, 0, NULL, 1, 0, 0, 0, 0, NULL, 0, 0, 0, 0, '[DNT] Stalker - On Just Summoned - Cast self [DNT] Spawn'); + +UPDATE `creature_template` SET `AIName`='', `ScriptName`='npc_azhiccar_frenzied_mite' WHERE `entry`=236190; + +-- Instance +DELETE FROM `instance_template` WHERE `map`=2830; +INSERT INTO `instance_template` (`map`, `parent`, `script`) VALUES +(2830, 0, 'instance_ecodome_aldani'); + +-- Conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (1217255, 1233147, 1233116); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 1217255, 0, 0, 51, 0, 5, 236190, 0, '', 0, 0, 0, '', 'Spell \'Devour\' can only hit \'Frenzied Mite\''), +(13, 2, 1217255, 0, 0, 51, 0, 5, 236190, 0, '', 0, 0, 0, '', 'Spell \'Devour\' can only hit \'Frenzied Mite\''), +(13, 2, 1233147, 0, 0, 51, 0, 5, 234893, 0, '', 0, 0, 0, '', 'Spell \'Devour\' can only hit \'Azhiccar\''), +(13, 4, 1233147, 0, 0, 51, 0, 5, 234893, 0, '', 0, 0, 0, '', 'Spell \'Devour\' can only hit \'Azhiccar\''), +(13, 1, 1233116, 0, 1, 51, 0, 5, 245411, 0, '', 0, 0, 0, '', 'Spell \'Devour\' can only hit \'Ravaging Scavenger\''), +(13, 1, 1233116, 0, 0, 51, 0, 5, 245412, 0, '', 0, 0, 0, '', 'Spell \'Devour\' can only hit \'Voracious Gorger\''); + +-- Areatrigger +DELETE FROM `areatrigger` WHERE `SpawnId`=@ATSPAWNID; +INSERT INTO `areatrigger` (`SpawnId`, `AreaTriggerCreatePropertiesId`, `IsCustom`, `MapId`, `SpawnDifficulties`, `PosX`, `PosY`, `PosZ`, `Orientation`, `PhaseUseFlags`, `PhaseId`, `PhaseGroup`, `ScriptName`, `Comment`, `VerifiedBuild`) VALUES +(@ATSPAWNID, @ATPROP, 1, 2830, '1,2,23,8,205', 526.473, -747.901, 999.682, 6.1991, 0, 0, 0, 'at_azhiccar_intro', 'Eco-Dome Aldani - Azhiccar intro', 0); + +DELETE FROM `areatrigger_create_properties` WHERE `Id`=@ATPROP AND `IsCustom`=1; +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Speed`, `SpeedIsTime`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(@ATPROP, 1, @ATID, 1, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 0, 0, 1, 20, 10, 5, 20, 10, 5, 0, 0, '', 0); + +DELETE FROM `areatrigger_template` WHERE `Id`=@ATID AND `IsCustom`=1; +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `ActionSetId`, `ActionSetFlags`, `VerifiedBuild`) VALUES +(@ATID, 1, 1, 0, 0, 0); + +DELETE FROM `areatrigger_create_properties` WHERE (`IsCustom`=0 AND `Id` IN (36165, 36166, 38667, 36181, 38379)); +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Speed`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(36165, 0, 38189, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1217240, 18000, 0, 0, 12, 12, 0, 0, 0, 0, 0, 0, 'at_azhiccar_devour', 63305), -- SpellForVisuals: 1217240 (Devour) +(36166, 0, 38188, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1217240, 18000, 0, 0, 108, 108, 0, 0, 0, 0, 0, 0, 'at_azhiccar_devour_force', 63305), -- SpellForVisuals: 1217240 (Devour) +(38667, 0, 34184, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1217240, 18000, 0, 0, 20, 20, 0, 0, 0, 0, 0, 0, '', 63305), -- SpellForVisuals: 1217240 (Devour) +(36181, 0, 38204, 0, 4, 0, 81441, 0, 0, -1, 0, 690, NULL, 180000, 0, 0, 10, 10, 0, 0, 0, 0, 0, 0, 'at_azhiccar_digestive_spittle', 63305), -- Spell: 1217441 (Digestive Spittle) +(38379, 0, 6197, 0, 2, 0, 0, 0, 0, -1, 0, 0, NULL, 6000, 0, 0, 108, 108, 0, 0, 0, 0, 0, 0, '', 63305); + +DELETE FROM `areatrigger_template` WHERE (`IsCustom`=0 AND `Id` IN (38189, 38188, 34184, 38204)); +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `VerifiedBuild`) VALUES +(38189, 0, 63305), +(38188, 0, 63305), +(34184, 0, 63305), +(38204, 0, 63305); + +UPDATE `areatrigger_template` SET `VerifiedBuild`=63305 WHERE (`Id`=6197 AND `IsCustom`=0); + +-- Texts +DELETE FROM `creature_text` WHERE `CreatureID` = 234893; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(234893, 0, 0, '|TInterface\\ICONS\\Spell_Shadow_DevouringPlague..blp:20|t %s prepares to |cFFFF0000|Hspell:1217232|h[Devour]|h|r!', 41, 0, 100, 0, 0, 283865, 285972, 0, 'Azhiccar'); + +-- Spells +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_azhiccar_energy_controller', 'spell_azhiccar_feast', 'spell_azhiccar_devour_selector', 'spell_azhiccar_devour', 'spell_azhiccar_player_detection', 'spell_azhiccar_invading_shriek_dummy', 'spell_azhiccar_toxic_regurgitation_cast', 'spell_azhiccar_toxic_regurgitation_selector', 'spell_azhiccar_devour_intro_selector', 'spell_azhiccar_invading_shriek'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(1217202, 'spell_azhiccar_energy_controller'), +(1217436, 'spell_azhiccar_toxic_regurgitation_selector'), +(1227745, 'spell_azhiccar_toxic_regurgitation_cast'), +(1233116, 'spell_azhiccar_devour_intro_selector'), +(1217330, 'spell_azhiccar_invading_shriek_dummy'), +(1217758, 'spell_azhiccar_player_detection'), +(1217232, 'spell_azhiccar_devour'), +(1217255, 'spell_azhiccar_devour_selector'), +(1217241, 'spell_azhiccar_feast'), +(1217252, 'spell_azhiccar_feast'), +(1217327, 'spell_azhiccar_invading_shriek'); + +DELETE FROM `serverside_spell` WHERE `Id`=1217758 AND `DifficultyID`=0; +INSERT INTO `serverside_spell` (`Id`, `DifficultyID`, `CategoryId`, `Dispel`, `Mechanic`, `Attributes`, `AttributesEx`, `AttributesEx2`, `AttributesEx3`, `AttributesEx4`, `AttributesEx5`, `AttributesEx6`, `AttributesEx7`, `AttributesEx8`, `AttributesEx9`, `AttributesEx10`, `AttributesEx11`, `AttributesEx12`, `AttributesEx13`, `AttributesEx14`, `AttributesEx15`, `Stances`, `StancesNot`, `Targets`, `TargetCreatureType`, `RequiresSpellFocus`, `FacingCasterFlags`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CasterAuraType`, `TargetAuraType`, `ExcludeCasterAuraType`, `ExcludeTargetAuraType`, `CastingTimeIndex`, `RecoveryTime`, `CategoryRecoveryTime`, `StartRecoveryCategory`, `StartRecoveryTime`, `InterruptFlags`, `AuraInterruptFlags1`, `AuraInterruptFlags2`, `ChannelInterruptFlags1`, `ChannelInterruptFlags2`, `ProcFlags`, `ProcFlags2`, `ProcChance`, `ProcCharges`, `ProcCooldown`, `ProcBasePPM`, `MaxLevel`, `BaseLevel`, `SpellLevel`, `DurationIndex`, `RangeIndex`, `Speed`, `LaunchDelay`, `StackAmount`, `EquippedItemClass`, `EquippedItemSubClassMask`, `EquippedItemInventoryTypeMask`, `ContentTuningId`, `SpellName`, `ConeAngle`, `ConeWidth`, `MaxTargetLevel`, `MaxAffectedTargets`, `SpellFamilyName`, `SpellFamilyFlags1`, `SpellFamilyFlags2`, `SpellFamilyFlags3`, `SpellFamilyFlags4`, `DmgClass`, `PreventionType`, `AreaGroupId`, `SchoolMask`, `ChargeCategoryId`) VALUES +(1217758, 0, 0, 0, 0, 0x20000180, 0x00000400, 0x10400004, 0x00070300, 0x00800000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 'Player Detection', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0); + +DELETE FROM `serverside_spell_effect` WHERE `SpellID`=1217758 AND `EffectIndex`=0 AND `DifficultyID`=0; +INSERT INTO `serverside_spell_effect` (`SpellID`, `EffectIndex`, `DifficultyID`, `Effect`, `EffectAura`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`) VALUES +(1217758, 0, 0, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 22, 15); diff --git a/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp b/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp new file mode 100644 index 0000000000000..c25504fe8e7d2 --- /dev/null +++ b/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp @@ -0,0 +1,770 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "AreaTriggerAI.h" +#include "CellImpl.h" +#include "Containers.h" +#include "GameObject.h" +#include "GridNotifiersImpl.h" +#include "InstanceScript.h" +#include "MotionMaster.h" +#include "MoveSplineInit.h" +#include "ObjectAccessor.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" +#include "ecodome_aldani.h" + +enum AzhiccarSpells +{ + // Intro + SPELL_DEVOUR_INTRO = 1233112, + SPELL_DEVOUR_INTRO_SELECTOR = 1233116, + SPELL_DEVOUR_INSTAKILL = 1233147, + SPELL_KNOCKBACK = 1222792, + + // Combat + SPELL_DEVOUR = 1217232, + SPELL_DEVOUR_AREATRIGGER = 1217240, + SPELL_DEVOUR_SELECTOR = 1217255, + SPELL_DEVOURER_VORTEX = 1227068, + SPELL_DIGESTIVE_SPITTLE = 1217446, + SPELL_DIGESTIVE_SPITTLE_NPC_SLOW = 1217526, + SPELL_ENERGY_CONTROLLER = 1217202, + SPELL_FEAST = 1217241, + SPELL_FEAST_HEAL = 1217247, + SPELL_FEAST_INSTAKILL = 1217252, + SPELL_INVADING_SHRIEK_DAMAGE = 1231850, + SPELL_INVADING_SHRIEK_DUMMY = 1217330, + SPELL_INVADING_SHRIEK_PERIODIC = 1217327, + SPELL_INVADING_SHRIEK_SUMMON = 1217331, + SPELL_PLAYER_DETECTION = 1217757, + SPELL_THRASH = 1217664, + SPELL_TOXIC_REGURGITATION_CAST = 1227745, + SPELL_TOXIC_REGURGITATION_MARKER = 1227748, + SPELL_TOXIC_REGURGITATION_MISSILE = 1217438, + SPELL_TOXIC_REGURGITATION_SELECTOR = 1217436, + + // Mites + SPELL_UNCONTROLLED = 1231811, + SPELL_STUNNED = 1235707, +}; + +enum AzhiccarEvents +{ + EVENT_INVADING_SHRIEK = 1, + EVENT_TOXIC_REGURGITATION, + EVENT_CHECK_ENERGY +}; + +enum AzhiccarActions +{ + ACTION_START_INTRO = 1 +}; + +enum AzhiccarTexts +{ + SAY_DEVOUR = 0 +}; + +enum AzhiccarMisc +{ + ANIMKIT_NONE = 0, + ANIMKIT_EMERGE = 21290, + ANIMKIT_MITE_DEVOUR_BIRTH = 11428, + + SPELL_VISUALKIT_ALARM = 222521, + + POINT_AZHICCAR = 0, + + SPELL_VISUAL_DEVOURED = 155836, + + NPC_PORTAL_STALKER = 237454, + NPC_FRENZIED_MITE = 236190, +}; + +static constexpr Position AzhiccarPosition = { 436.8889f, -746.0f, 1002.0926f }; +static constexpr Position OrphanSpellVisualPosition = { 436.8889f, -746.0f, 1018.0926f }; + +// 234893 - Azhiccar +struct boss_azhiccar : public BossAI +{ + boss_azhiccar(Creature* creature) : BossAI(creature, DATA_AZHICCAR), _invadingShriekCount(1), _toxicRegurgitationCount(1) { } + + void JustAppeared() override + { + if (instance->GetData(DATA_AZHICCAR_INTRO) == DONE) + { + me->SetUninteractible(false); + me->SetImmuneToAll(false); + me->SetAIAnimKitId(ANIMKIT_NONE); + me->PlayOneShotAnimKitId(ANIMKIT_EMERGE); + } + + me->SetPowerType(POWER_ENERGY); + me->SetPower(POWER_ENERGY, 0); + + DoCastSelf(SPELL_DEVOURER_VORTEX); + } + + void Reset() override + { + BossAI::Reset(); + + _invadingShriekCount = 1; + _toxicRegurgitationCount = 1; + + _lastPortalPositions.clear(); + } + + void JustEngagedWith(Unit* who) override + { + BossAI::JustEngagedWith(who); + instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1); + + DoCastSelf(SPELL_PLAYER_DETECTION); + DoCastSelf(SPELL_ENERGY_CONTROLLER); + + events.ScheduleEvent(EVENT_TOXIC_REGURGITATION, 15400ms); + events.ScheduleEvent(EVENT_INVADING_SHRIEK, 5200ms); + + if (IsHeroicOrHigher()) + events.ScheduleEvent(EVENT_CHECK_ENERGY, 500ms); + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + + summons.DespawnAll(); + me->RemoveAllAreaTriggers(); + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + } + + void EnterEvadeMode(EvadeReason /*why*/) override + { + instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me); + + summons.DespawnAll(); + me->RemoveAllAreaTriggers(); + _EnterEvadeMode(); + _DespawnAtEvade(); + } + + void OnSpellStart(SpellInfo const* spellInfo) override + { + switch (spellInfo->Id) + { + case SPELL_DEVOUR: + { + Talk(SAY_DEVOUR); + break; + } + default: + break; + } + } + + void DoAction(int32 actionId) override + { + switch (actionId) + { + case ACTION_START_INTRO: + { + me->SetAIAnimKitId(ANIMKIT_NONE); + me->PlayOneShotAnimKitId(ANIMKIT_EMERGE); + + scheduler.Schedule(2s + 170ms, [this](TaskContext context) + { + DoCastSelf(SPELL_KNOCKBACK); + DoCastSelf(SPELL_DEVOUR_INTRO); + + context.Schedule(7s, [this](TaskContext) + { + me->SetUninteractible(false); + me->SetImmuneToAll(false); + instance->SetData(DATA_AZHICCAR_INTRO, DONE); + }); + }); + break; + } + default: + break; + } + } + + void UpdateAI(uint32 diff) override + { + scheduler.Update(diff); + + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_INVADING_SHRIEK: + { + std::vector portalAngles = + { + float(M_PI / 4.0f), + -float(M_PI / 4.0f), + -(3.0f * float(M_PI / 4.0f)), + (3.0f * float(M_PI / 4.0f)) + }; + + Trinity::Containers::RandomResize(portalAngles, 3); + + static constexpr float PORTAL_STALKER_DIST = 30.0f; + + _lastPortalPositions.clear(); + for (float angle : portalAngles) + { + angle += me->GetOrientation(); + Position pos = me->GetPosition(); + me->MovePosition(pos, PORTAL_STALKER_DIST, angle); + me->SummonCreature(NPC_PORTAL_STALKER, pos, TEMPSUMMON_TIMED_DESPAWN, 4100ms); + + _lastPortalPositions.push_back(pos); + } + + DoCastSelf(SPELL_INVADING_SHRIEK_PERIODIC); + + _invadingShriekCount++; + if (_invadingShriekCount % 2 == 0) + events.Repeat(37200ms); + else + events.Repeat(48500ms); + break; + } + case EVENT_TOXIC_REGURGITATION: + { + DoCastSelf(SPELL_TOXIC_REGURGITATION_SELECTOR); + _toxicRegurgitationCount++; + if (_toxicRegurgitationCount % 2 == 0) + events.Repeat(18200ms); + else + events.Repeat(67500ms); + break; + } + case EVENT_CHECK_ENERGY: + { + if (me->GetPower(POWER_ENERGY) >= 100) + { + DoCastSelf(SPELL_DEVOUR); + + if (IsMythic()) + { + for (Position const& lastPos : _lastPortalPositions) + { + me->SummonCreature(NPC_PORTAL_STALKER, lastPos, TEMPSUMMON_TIMED_DESPAWN, 2s); + for (uint8 i = 0; i < 3; i++) + { + Position pos(lastPos); + me->MovePosition(pos, 3.0f, frand(0, 2 * float(M_PI))); + + me->m_Events.AddEventAtOffset([caster = me, pos]() + { + caster->CastSpell(pos, SPELL_INVADING_SHRIEK_SUMMON, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR + }); + }, 2100ms); + } + } + } + events.Repeat(25s); + } + else + events.Repeat(500ms); + break; + } + default: + break; + } + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + } + } + +private: + uint32 _invadingShriekCount; + uint32 _toxicRegurgitationCount; + std::vector _lastPortalPositions; +}; + +// 236190 - Frenzied Mite +struct npc_azhiccar_frenzied_mite : public ScriptedAI +{ + npc_azhiccar_frenzied_mite(Creature* creature) : ScriptedAI(creature) {} + + void JustAppeared() override + { + Creature* azhiccar = me->GetInstanceScript()->GetCreature(DATA_AZHICCAR); + if (!azhiccar) + return; + + if (azhiccar->GetPower(POWER_ENERGY) >= 100) + { + me->SetReactState(REACT_PASSIVE); + DoCastSelf(SPELL_STUNNED); + me->PlayOneShotAnimKitId(ANIMKIT_MITE_DEVOUR_BIRTH); + } + else + DoCastSelf(SPELL_UNCONTROLLED); + } +}; + +// 1217202 - Energy Controller +class spell_azhiccar_energy_controller : public AuraScript +{ + static constexpr std::array AzhiccarEnergizeCycle = { 1, 2, 2 }; + + void PeriodicTick(AuraEffect const* aurEff) const + { + if (GetTarget()->HasAura(SPELL_DEVOUR)) + return; + + uint8 cycleIdx = aurEff->GetTickNumber() % AzhiccarEnergizeCycle.size(); + GetTarget()->ModifyPower(POWER_ENERGY, AzhiccarEnergizeCycle[cycleIdx]); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_azhiccar_energy_controller::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } +}; + +// 1217436 - Toxic Regurgitation +class spell_azhiccar_toxic_regurgitation_selector : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TOXIC_REGURGITATION_MARKER, SPELL_TOXIC_REGURGITATION_CAST }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + + CastSpellExtraArgs args; + args.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR; + args.TriggeringSpell = GetSpell(); + + caster->CastSpell(caster, SPELL_TOXIC_REGURGITATION_CAST, args); + caster->CastSpell(GetHitUnit(), SPELL_TOXIC_REGURGITATION_MARKER, args); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_azhiccar_toxic_regurgitation_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 1227745 - Toxic Regurgitation +class spell_azhiccar_toxic_regurgitation_cast : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TOXIC_REGURGITATION_MARKER, SPELL_TOXIC_REGURGITATION_MISSILE }); + } + + void HandleOnHit() const + { + Unit* caster = GetCaster(); + + std::list players; + Trinity::UnitAuraCheck check(true, SPELL_TOXIC_REGURGITATION_MARKER); + Trinity::PlayerListSearcher searcher(caster, players, check); + Cell::VisitWorldObjects(caster, searcher, 200.0f); + + for (Player* player : players) + { + caster->CastSpell(player, SPELL_TOXIC_REGURGITATION_MISSILE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + } + + void Register() override + { + OnHit += SpellHitFn(spell_azhiccar_toxic_regurgitation_cast::HandleOnHit); + } +}; + +// 1217327 - Invading Shriek +class spell_azhiccar_invading_shriek : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo ({ SPELL_INVADING_SHRIEK_DAMAGE }); + } + + void HandleAfterCast() const + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_INVADING_SHRIEK_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_azhiccar_invading_shriek::HandleAfterCast); + } +}; + +// 1217327 - Invading Shriek +class spell_azhiccar_invading_shriek_aura : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo ({ SPELL_INVADING_SHRIEK_DAMAGE }); + } + + void OnApply(AuraEffect const* /*auraEffect*/, AuraEffectHandleModes /*mode*/) + { + std::vector stalkers; + GetCaster()->GetCreatureListWithEntryInGrid(stalkers, NPC_PORTAL_STALKER, 150.0f); + Trinity::Containers::RandomShuffle(stalkers); + + for (Creature* creature : stalkers) + _stalkerList.push(creature->GetGUID()); + } + + void OnPeriodic(AuraEffect const* aurEff) + { + if (aurEff->GetTickNumber() <= 1) + return; + + Unit* caster = GetCaster(); + ObjectGuid guid = _stalkerList.front(); + _stalkerList.pop(); + + if (Creature* stalker = ObjectAccessor::GetCreature(*caster, guid)) + { + caster->CastSpell(stalker->GetPosition(), SPELL_INVADING_SHRIEK_DUMMY, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_azhiccar_invading_shriek_aura::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_azhiccar_invading_shriek_aura::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } + +private: + std::queue _stalkerList; +}; + +// 1217330 - Invading Shriek +class spell_azhiccar_invading_shriek_dummy : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_INVADING_SHRIEK_SUMMON }); + } + + void HandleHit(SpellEffIndex /*effIndex*/) const + { + GetCaster()->CastSpell(GetHitDest()->GetPosition(), SPELL_INVADING_SHRIEK_SUMMON, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_azhiccar_invading_shriek_dummy::HandleHit, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 1217758 - Player Detection (SERVERSIDE) +class spell_azhiccar_player_detection : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DEVOUR, SPELL_THRASH }); + } + + void HandlePlayerDetection() const + { + Unit* caster = GetCaster(); + int64 const targetsHit = GetUnitTargetCountForEffect(EFFECT_0); + if (targetsHit > 0) + return; + + Spell* currentChanneledSpell = caster->GetCurrentSpell(CURRENT_CHANNELED_SPELL); + if (currentChanneledSpell && (currentChanneledSpell->GetSpellInfo()->Id == SPELL_DEVOUR)) + return; + + if (caster->HasAura(SPELL_DEVOUR)) + return; + + caster->CastSpell(caster, SPELL_THRASH, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void Register() override + { + AfterCast += SpellCastFn(spell_azhiccar_player_detection::HandlePlayerDetection); + } +}; + +// 1217232 - Devour +class spell_azhiccar_devour : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DEVOUR_AREATRIGGER, SPELL_DEVOUR_SELECTOR }); + } + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_DEVOUR_AREATRIGGER, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + caster->CastSpell(caster, SPELL_DEVOUR_SELECTOR, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void Register() override + { + AfterEffectApply += AuraEffectRemoveFn(spell_azhiccar_devour::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 1217255 - Devour +class spell_azhiccar_devour_selector : public SpellScript +{ + void FilterTargets(std::list& targets) + { + targets.remove_if([](WorldObject* target) { + return !target->IsPlayer() && target->GetEntry() != NPC_FRENZIED_MITE; + }); + } + + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* target = GetHitUnit(); + std::function initializer = [](Movement::MoveSplineInit& init) + { + init.SetBackward(); + init.MoveTo(AzhiccarPosition.GetPositionX(), AzhiccarPosition.GetPositionY(), AzhiccarPosition.GetPositionZ(), false); + }; + target->SendPlaySpellVisualKit(SPELL_VISUALKIT_ALARM, 4, 9000); + target->GetMotionMaster()->LaunchMoveSpline(std::move(initializer), POINT_AZHICCAR, MOTION_PRIORITY_NORMAL, POINT_MOTION_TYPE); + target->SetSpeed(MOVE_RUN_BACK, 12.0f); + } + + void Register() override + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_azhiccar_devour_selector::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ENTRY); + OnEffectHitTarget += SpellEffectFn(spell_azhiccar_devour_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +// 1217241 - Feast +// 1217252 - Feast +class spell_azhiccar_feast : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FEAST_HEAL }); + } + + void HandleHit(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_FEAST_HEAL, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_azhiccar_feast::HandleHit, EFFECT_0, SPELL_EFFECT_ANY); + } +}; + +// 1217441 - Digestive Spittle +// Id - 36181 +struct at_azhiccar_digestive_spittle : AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + Unit* caster = at->GetCaster(); + if (!caster) + return; + + caster->CastSpell(unit, (unit->IsPlayer() ? SPELL_DIGESTIVE_SPITTLE : SPELL_DIGESTIVE_SPITTLE_NPC_SLOW), TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void OnUnitExit(Unit* unit, AreaTriggerExitReason /*reason*/) override + { + unit->RemoveAurasDueToSpell(SPELL_DIGESTIVE_SPITTLE); + unit->RemoveAurasDueToSpell(SPELL_DIGESTIVE_SPITTLE_NPC_SLOW); + } +}; + +// 1217240 - Devour +// Id - 38188 +struct at_azhiccar_devour_force : AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + if (!unit->IsPlayer() || unit->GetEntry() == NPC_PORTAL_STALKER) + return; + + unit->ApplyMovementForce(at->GetGUID(), at->GetPosition(), 3.0f, MovementForceType::Gravity); + } + + void OnUnitExit(Unit* unit, AreaTriggerExitReason /*reason*/) override + { + unit->RemoveMovementForce(at->GetGUID()); + } +}; + +// 1217240 - Devour +// Id - 38189 +struct at_azhiccar_devour : AreaTriggerAI +{ + using AreaTriggerAI::AreaTriggerAI; + + void OnUnitEnter(Unit* unit) override + { + Unit* caster = at->GetCaster(); + if (!caster) + return; + + if (unit->IsPlayer()) + caster->CastSpell(unit, SPELL_FEAST, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + else if (unit->HasAura(SPELL_DEVOUR_SELECTOR)) + caster->CastSpell(unit, SPELL_FEAST_INSTAKILL, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } +}; + +// Id - 176 +struct at_azhiccar_intro : AreaTriggerAI +{ + at_azhiccar_intro(AreaTrigger* areatrigger) : AreaTriggerAI(areatrigger) { } + + void OnUnitEnter(Unit* unit) override + { + InstanceScript* instance = at->GetInstanceScript(); + if (!instance) + return; + + Player* player = unit->ToPlayer(); + if (!player || player->IsGameMaster()) + return; + + if (Creature* azhiccar = instance->GetCreature(DATA_AZHICCAR)) + azhiccar->AI()->DoAction(ACTION_START_INTRO); + + at->Remove(); + } +}; + +// 245411 - Ravaging Scavenger +// 245412 - Voracious Gorger +struct npc_azhiccar_intro_creature : public ScriptedAI +{ + npc_azhiccar_intro_creature(Creature* creature) : ScriptedAI(creature) { } + + void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override + { + if (spellInfo->Id == SPELL_DEVOUR_INTRO_SELECTOR) + { + _scheduler.Schedule(2000ms, 4500ms, [this](TaskContext) + { + me->SendPlayOrphanSpellVisual(OrphanSpellVisualPosition, me->GetPosition(), SPELL_VISUAL_DEVOURED, 45.0f, false); + DoCastSelf(SPELL_DEVOUR_INSTAKILL); + me->DespawnOrUnsummon(5s); + }); + } + } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff); + } + +private: + TaskScheduler _scheduler; +}; + +// 1233116 - Devour +class spell_azhiccar_devour_intro_selector : public SpellScript +{ + void HandleHitTarget(SpellEffIndex /*effIndex*/) const + { + Unit* target = GetHitUnit(); + std::function initializer = [](Movement::MoveSplineInit& init) + { + init.SetBackward(); + init.MoveTo(AzhiccarPosition.GetPositionX(), AzhiccarPosition.GetPositionY(), AzhiccarPosition.GetPositionZ(), false); + }; + target->SendPlaySpellVisualKit(SPELL_VISUALKIT_ALARM, 4, 9000); + target->GetMotionMaster()->LaunchMoveSpline(std::move(initializer), POINT_AZHICCAR, MOTION_PRIORITY_NORMAL, POINT_MOTION_TYPE); + target->SetSpeed(MOVE_RUN_BACK, 16.0f); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_azhiccar_devour_intro_selector::HandleHitTarget, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + +void AddSC_boss_azhiccar() +{ + RegisterEcodomeAldaniCreatureAI(boss_azhiccar); + + RegisterEcodomeAldaniCreatureAI(npc_azhiccar_frenzied_mite); + RegisterSpellScript(spell_azhiccar_energy_controller); + RegisterSpellScript(spell_azhiccar_toxic_regurgitation_selector); + RegisterSpellScript(spell_azhiccar_toxic_regurgitation_cast); + RegisterSpellAndAuraScriptPair(spell_azhiccar_invading_shriek, spell_azhiccar_invading_shriek_aura); + RegisterSpellScript(spell_azhiccar_invading_shriek_dummy); + RegisterSpellScript(spell_azhiccar_player_detection); + RegisterSpellScript(spell_azhiccar_devour); + RegisterSpellScript(spell_azhiccar_devour_selector); + RegisterSpellScript(spell_azhiccar_feast); + RegisterAreaTriggerAI(at_azhiccar_digestive_spittle); + RegisterAreaTriggerAI(at_azhiccar_devour_force); + RegisterAreaTriggerAI(at_azhiccar_devour); + + // Intro + RegisterAreaTriggerAI(at_azhiccar_intro); + RegisterEcodomeAldaniCreatureAI(npc_azhiccar_intro_creature); + RegisterSpellScript(spell_azhiccar_devour_intro_selector); +} diff --git a/src/server/scripts/Karesh/EcoDomeAldani/ecodome_aldani.h b/src/server/scripts/Karesh/EcoDomeAldani/ecodome_aldani.h new file mode 100644 index 0000000000000..a372c78992594 --- /dev/null +++ b/src/server/scripts/Karesh/EcoDomeAldani/ecodome_aldani.h @@ -0,0 +1,58 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef DEF_ECODOME_ALDANI_H_ +#define DEF_ECODOME_ALDANI_H_ + +#include "CreatureAIImpl.h" + +#define EAScriptName "instance_ecodome_aldani" +#define DataHeader "EcodomeAldani" + +uint32 const EncounterCount = 3; + +enum EcodomeAldaniDataTypes +{ + // Encounters + DATA_AZHICCAR = 0, + DATA_TAAHBAT_AND_AWAZJ = 1, + DATA_SOUL_SCRIBE = 2, + + DATA_TAAHBAT, + DATA_AWAZJ, + + DATA_AZHICCAR_INTRO +}; + +enum EcodomeAldaniCreatureIds +{ + // Bosses + BOSS_AZHICCAR = 234893, + BOSS_TAAHBAT = 234933, + BOSS_AWAZJ = 241375, + BOSS_SOUL_SCRIBE = 247283 +}; + +template +inline AI* GetEcodomeAldaniAI(T* obj) +{ + return GetInstanceAI(obj, EAScriptName); +} + +#define RegisterEcodomeAldaniCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetEcodomeAldaniAI) + +#endif diff --git a/src/server/scripts/Karesh/EcoDomeAldani/instance_ecodome_aldani.cpp b/src/server/scripts/Karesh/EcoDomeAldani/instance_ecodome_aldani.cpp new file mode 100644 index 0000000000000..b24925bbd877c --- /dev/null +++ b/src/server/scripts/Karesh/EcoDomeAldani/instance_ecodome_aldani.cpp @@ -0,0 +1,93 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "Creature.h" +#include "InstanceScript.h" +#include "ScriptMgr.h" +#include "ecodome_aldani.h" + +static constexpr ObjectData creatureData[] = +{ + { BOSS_AZHICCAR, DATA_AZHICCAR }, + { BOSS_TAAHBAT, DATA_TAAHBAT }, + { BOSS_AWAZJ, DATA_AWAZJ }, + { BOSS_SOUL_SCRIBE, DATA_SOUL_SCRIBE }, + { 0, 0 } // END +}; + +static constexpr DungeonEncounterData encounters[] = +{ + { DATA_AZHICCAR, {{ 3107 }} }, + { DATA_TAAHBAT_AND_AWAZJ, {{ 3108 }} }, + { DATA_SOUL_SCRIBE, {{ 3109 }} } +}; + +class instance_ecodome_aldani : public InstanceMapScript +{ +public: + instance_ecodome_aldani() : InstanceMapScript(EAScriptName, 2830) { } + + struct instance_ecodome_aldani_InstanceMapScript: public InstanceScript + { + instance_ecodome_aldani_InstanceMapScript(InstanceMap* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + SetBossNumber(EncounterCount); + LoadObjectData(creatureData, {}); + LoadDungeonEncounterData(encounters); + + _azhiccarIntroState = NOT_STARTED; + } + + uint32 GetData(uint32 dataId) const override + { + switch (dataId) + { + case DATA_AZHICCAR_INTRO: + return _azhiccarIntroState; + default: + break; + } + return 0; + } + + void SetData(uint32 dataId, uint32 value) override + { + switch (dataId) + { + case DATA_AZHICCAR_INTRO: + _azhiccarIntroState = value; + break; + default: + break; + } + } + + private: + uint8 _azhiccarIntroState; + }; + + InstanceScript* GetInstanceScript(InstanceMap* map) const override + { + return new instance_ecodome_aldani_InstanceMapScript(map); + } +}; + +void AddSC_instance_ecodome_aldani() +{ + new instance_ecodome_aldani(); +} diff --git a/src/server/scripts/Karesh/karesh_script_loader.cpp b/src/server/scripts/Karesh/karesh_script_loader.cpp new file mode 100644 index 0000000000000..c7a1a7a05bfa1 --- /dev/null +++ b/src/server/scripts/Karesh/karesh_script_loader.cpp @@ -0,0 +1,31 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +// This is where scripts' loading functions should be declared: + +// Eco-Dome Aldani +void AddSC_boss_azhiccar(); +void AddSC_instance_ecodome_aldani(); + +// The name of this function should match: +// void Add${NameOfDirectory}Scripts() +void AddKareshScripts() +{ + // Eco-Dome Aldani + AddSC_boss_azhiccar(); + AddSC_instance_ecodome_aldani(); +} From fa57c0325e0b880b41149f37087162f6d8d6add4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 11 Apr 2026 23:06:04 +0200 Subject: [PATCH 047/175] Core/Misc: TaskScheduler internal improvements * Make TaskContext not copyable - this allowed removing shared `_consumed` state, getting rid of memory allocation per task execution * Use std::make_shared * Remove unnceccessary memory alloc/dealloc in TaskContext::Repeat * Remove std::function wrapping in every TaskContext function --- src/common/Utilities/TaskScheduler.cpp | 278 +++++++++++------- src/common/Utilities/TaskScheduler.h | 122 ++++---- .../battleground_deephaul_ravine.cpp | 1 + .../boss_ymiron_the_fallen_king.cpp | 1 + .../zone_dun_morogh_area_coldridge_valley.cpp | 1 + .../Karesh/EcoDomeAldani/boss_azhiccar.cpp | 1 + src/server/scripts/Spells/spell_priest.cpp | 1 + 7 files changed, 239 insertions(+), 166 deletions(-) diff --git a/src/common/Utilities/TaskScheduler.cpp b/src/common/Utilities/TaskScheduler.cpp index 4ee9451b84696..0d3e4147ecad0 100644 --- a/src/common/Utilities/TaskScheduler.cpp +++ b/src/common/Utilities/TaskScheduler.cpp @@ -18,6 +18,8 @@ #include "TaskScheduler.h" #include "Errors.h" +TaskScheduler::success_t const TaskScheduler::EmptySuccessCallback; + TaskScheduler::TaskScheduler() : self_reference(this, [](TaskScheduler const*) { }), _now(clock_t::now()), @@ -33,19 +35,42 @@ TaskScheduler& TaskScheduler::ClearValidator() return *this; } -TaskScheduler& TaskScheduler::Update(success_t const& callback/* = nullptr*/) +TaskScheduler& TaskScheduler::Update() { _now = clock_t::now(); + Dispatch(EmptySuccessCallback); + return *this; +} + +TaskScheduler& TaskScheduler::Update(success_t callback) +{ + _now = clock_t::now(); + Dispatch(callback); + return *this; +} + +TaskScheduler& TaskScheduler::Update(size_t milliseconds) +{ + _now += std::chrono::milliseconds(milliseconds); + Dispatch(EmptySuccessCallback); + return *this; +} + +TaskScheduler& TaskScheduler::Update(size_t milliseconds, success_t callback) +{ + _now += std::chrono::milliseconds(milliseconds); Dispatch(callback); return *this; } -TaskScheduler& TaskScheduler::Update(size_t milliseconds, success_t const& callback/* = nullptr*/) +TaskScheduler& TaskScheduler::Update(duration_t difftime) { - return Update(std::chrono::milliseconds(milliseconds), callback); + _now += difftime; + Dispatch(EmptySuccessCallback); + return *this; } -TaskScheduler& TaskScheduler::Update(duration_t difftime, success_t const& callback/* = nullptr*/) +TaskScheduler& TaskScheduler::Update(duration_t difftime, success_t callback) { _now += difftime; Dispatch(callback); @@ -54,7 +79,7 @@ TaskScheduler& TaskScheduler::Update(duration_t difftime, success_t const& callb TaskScheduler& TaskScheduler::Async(std::function callable) { - _asyncHolder.emplace(std::move(callable)); + Schedule(duration_t(1), [callable = std::move(callable)](TaskContext const&) { callable(); }); return *this; } @@ -62,7 +87,6 @@ TaskScheduler& TaskScheduler::CancelAll() { /// Clear the task holder _task_holder.Clear(); - _asyncHolder = AsyncHolder(); return *this; } @@ -75,11 +99,12 @@ TaskScheduler& TaskScheduler::CancelGroup(group_t group) return *this; } -TaskScheduler& TaskScheduler::CancelGroupsOf(std::vector const& groups) +TaskScheduler& TaskScheduler::CancelGroupsOf(std::span groups) { - for (group_t group : groups) - CancelGroup(group); - + _task_holder.RemoveIf([groups](TaskContainer const& task) -> bool + { + return std::ranges::any_of(groups, [&](group_t group) { return task->IsInGroup(group); }); + }); return *this; } @@ -93,7 +118,7 @@ TaskScheduler& TaskScheduler::DelayAll(duration_t duration) return *this; } -TaskScheduler& TaskScheduler::DelayGroup(group_t const group, duration_t duration) +TaskScheduler& TaskScheduler::DelayGroup(group_t group, duration_t duration) { _task_holder.ModifyIf([&duration, group](TaskContainer const& task) -> bool { @@ -110,7 +135,7 @@ TaskScheduler& TaskScheduler::DelayGroup(group_t const group, duration_t duratio TaskScheduler& TaskScheduler::RescheduleAll(duration_t duration) { - auto const end = _now + duration; + timepoint_t end = _now + duration; _task_holder.ModifyIf([end](TaskContainer const& task) -> bool { task->_end = end; @@ -119,9 +144,9 @@ TaskScheduler& TaskScheduler::RescheduleAll(duration_t duration) return *this; } -TaskScheduler& TaskScheduler::RescheduleGroup(group_t const group, duration_t duration) +TaskScheduler& TaskScheduler::RescheduleGroup(group_t group, duration_t duration) { - auto const end = _now + duration; + timepoint_t end = _now + duration; _task_holder.ModifyIf([end, group](TaskContainer const& task) -> bool { if (task->IsInGroup(group)) @@ -135,21 +160,27 @@ TaskScheduler& TaskScheduler::RescheduleGroup(group_t const group, duration_t du return *this; } -TaskScheduler& TaskScheduler::InsertTask(TaskContainer task) +TaskScheduler& TaskScheduler::InsertTask(TaskContainer&& task) { _task_holder.Push(std::move(task)); return *this; } +TaskScheduler& TaskScheduler::InsertTask(TaskQueue::Container::node_type&& node) +{ + _task_holder.Push(std::move(node)); + return *this; +} + TaskScheduler& TaskScheduler::ScheduleAt(timepoint_t end, duration_t time, task_handler_t task) { - return InsertTask(TaskContainer(new Task(end + time, time, std::move(task)))); + return InsertTask(std::make_shared(end + time, time, std::move(task))); } TaskScheduler& TaskScheduler::ScheduleAt(timepoint_t end, duration_t time, group_t const group, task_handler_t task) { static constexpr repeated_t DEFAULT_REPEATED = 0; - return InsertTask(TaskContainer(new Task(end + time, time, group, DEFAULT_REPEATED, std::move(task)))); + return InsertTask(std::make_shared(end + time, time, group, DEFAULT_REPEATED, std::move(task))); } void TaskScheduler::Dispatch(success_t const& callback/* = nullptr*/) @@ -158,17 +189,6 @@ void TaskScheduler::Dispatch(success_t const& callback/* = nullptr*/) if (!_predicate()) return; - // Process all asyncs - while (!_asyncHolder.empty()) - { - _asyncHolder.front()(); - _asyncHolder.pop(); - - // If the validation failed abort the dispatching here. - if (!_predicate()) - return; - } - while (!_task_holder.IsEmpty()) { if (_task_holder.First()->_end > _now) @@ -196,14 +216,17 @@ void TaskScheduler::TaskQueue::Push(TaskContainer&& task) container.emplace(std::move(task)); } -auto TaskScheduler::TaskQueue::Pop() -> TaskContainer +void TaskScheduler::TaskQueue::Push(Container::node_type&& node) { - TaskContainer result = *container.begin(); - container.erase(container.begin()); - return result; + container.insert(std::move(node)); } -auto TaskScheduler::TaskQueue::First() const -> TaskContainer const& +TaskScheduler::TaskQueue::Container::node_type TaskScheduler::TaskQueue::Pop() +{ + return container.extract(container.begin()); +} + +TaskScheduler::TaskContainer const& TaskScheduler::TaskQueue::First() const { return *container.begin(); } @@ -224,17 +247,14 @@ void TaskScheduler::TaskQueue::RemoveIf(std::function const& filter) { - std::vector cache; + Container cache; for (auto itr = container.begin(); itr != container.end();) if (filter(*itr)) - { - cache.push_back(*itr); - itr = container.erase(itr); - } + cache.insert(container.extract(itr++)); else ++itr; - container.insert(cache.begin(), cache.end()); + container.merge(cache); } bool TaskScheduler::TaskQueue::IsEmpty() const @@ -242,11 +262,47 @@ bool TaskScheduler::TaskQueue::IsEmpty() const return container.empty(); } -TaskContext& TaskContext::Dispatch(std::function const& apply) +TaskScheduler::TaskContainer& TaskContext::GetTaskContainer() noexcept { - if (std::shared_ptr owner = _owner.lock()) - apply(*owner); + static_assert(std::variant_size_v == 2); + switch (_task.index()) + { + case 0: return std::get<0>(_task).value(); + case 1: return std::get<1>(_task); + default: + ASSERT(false); + } +} + +TaskScheduler::Task* TaskContext::GetTask() const noexcept +{ + static_assert(std::variant_size_v == 2); + switch (_task.index()) + { + case 0: return std::get<0>(_task).value().get(); + case 1: return std::get<1>(_task).get(); + default: + ASSERT(false); + } +} + +TaskContext::TaskContext(TaskContext&& right) noexcept + : _task(std::move(right._task)), _owner(std::move(right._owner)) +{ + //leave moved-from object in usable state (const qualified functions need to remain callable) + right._task = GetTaskContainer(); +} + +TaskContext& TaskContext::operator=(TaskContext&& right) noexcept +{ + if (this != &right) + { + _task = std::move(right._task); + _owner = std::move(right._owner); + //leave moved-from object in usable state (const qualified functions need to remain callable) + right._task = GetTaskContainer(); + } return *this; } @@ -255,130 +311,134 @@ bool TaskContext::IsExpired() const return _owner.expired(); } -bool TaskContext::IsInGroup(TaskScheduler::group_t const group) const +bool TaskContext::IsInGroup(TaskScheduler::group_t group) const { - return _task->IsInGroup(group); + return GetTask()->IsInGroup(group); } -TaskContext& TaskContext::SetGroup(TaskScheduler::group_t const group) +TaskContext& TaskContext::SetGroup(TaskScheduler::group_t group) { - _task->_group = group; + GetTask()->_group = group; return *this; } TaskContext& TaskContext::ClearGroup() { - _task->_group = std::nullopt; + GetTask()->_group = std::nullopt; return *this; } TaskScheduler::repeated_t TaskContext::GetRepeatCounter() const { - return _task->_repeated; + return GetTask()->_repeated; } TaskContext& TaskContext::Repeat(TaskScheduler::duration_t duration) { - AssertOnConsumed(); + // If you encounter this assertion check if you repeat a TaskContext more then 1 time! + ASSERT(std::holds_alternative(_task), "Bad task logic, task context was consumed already!"); // Set new duration, in-context timing and increment repeat counter - _task->_duration = duration; - _task->_end += duration; - _task->_repeated += 1; - (*_consumed) = true; - return this->Dispatch([this](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.InsertTask(_task); - }); + TaskScheduler::TaskQueue::Container::node_type& taskNode = std::get(_task); + TaskScheduler::TaskContainer task = taskNode.value(); + task->_duration = duration; + task->_end += duration; + task->_repeated += 1; + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->InsertTask(std::move(taskNode)); + + //leave *this in usable state (const qualified functions need to remain callable) + _task = std::move(task); + + return *this; } -TaskContext& TaskContext::Async(std::function const& callable) +TaskContext& TaskContext::Repeat() { - return Dispatch([&](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.Async(callable); - }); + return Repeat(GetTask()->_duration); +} + +TaskContext& TaskContext::Async(std::function callable) +{ + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->Async(std::move(callable)); + + return *this; } TaskContext& TaskContext::Schedule(TaskScheduler::duration_t time, TaskScheduler::task_handler_t task) { - auto const end = _task->_end; - return this->Dispatch([end, time, task = std::move(task)](TaskScheduler& scheduler) mutable -> TaskScheduler& - { - return scheduler.ScheduleAt(end, time, std::move(task)); - }); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->ScheduleAt(GetTask()->_end, time, std::move(task)); + + return *this; } -TaskContext& TaskContext::Schedule(TaskScheduler::duration_t time, TaskScheduler::group_t const group, TaskScheduler::task_handler_t task) +TaskContext& TaskContext::Schedule(TaskScheduler::duration_t time, TaskScheduler::group_t group, TaskScheduler::task_handler_t task) { - auto const end = _task->_end; - return this->Dispatch([end, time, group, task = std::move(task)](TaskScheduler& scheduler) mutable -> TaskScheduler& - { - return scheduler.ScheduleAt(end, time, group, std::move(task)); - }); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->ScheduleAt(GetTask()->_end, time, group, std::move(task)); + + return *this; } TaskContext& TaskContext::CancelAll() { - return Dispatch(&TaskScheduler::CancelAll); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->CancelAll(); + + return *this; } -TaskContext& TaskContext::CancelGroup(TaskScheduler::group_t const group) +TaskContext& TaskContext::CancelGroup(TaskScheduler::group_t group) { - return Dispatch([=](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.CancelGroup(group); - }); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->CancelGroup(group); + + return *this; } -TaskContext& TaskContext::CancelGroupsOf(std::vector const& groups) +TaskContext& TaskContext::CancelGroupsOf(std::span groups) { - return Dispatch([&](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.CancelGroupsOf(groups); - }); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->CancelGroupsOf(groups); + + return *this; } TaskContext& TaskContext::DelayAll(TaskScheduler::duration_t duration) { - return this->Dispatch([=](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.DelayAll(duration); - }); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->DelayAll(duration); + + return *this; } -TaskContext& TaskContext::DelayGroup(TaskScheduler::group_t const group, TaskScheduler::duration_t duration) +TaskContext& TaskContext::DelayGroup(TaskScheduler::group_t group, TaskScheduler::duration_t duration) { - return this->Dispatch([=](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.DelayGroup(group, duration); - }); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->DelayGroup(group, duration); + + return *this; } TaskContext& TaskContext::RescheduleAll(TaskScheduler::duration_t duration) { - return this->Dispatch([=](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.RescheduleAll(duration); - }); -} + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->RescheduleAll(duration); -TaskContext& TaskContext::RescheduleGroup(TaskScheduler::group_t const group, TaskScheduler::duration_t duration) -{ - return this->Dispatch([=](TaskScheduler& scheduler) -> TaskScheduler& - { - return scheduler.RescheduleGroup(group, duration); - }); + return *this; } -void TaskContext::AssertOnConsumed() const +TaskContext& TaskContext::RescheduleGroup(TaskScheduler::group_t group, TaskScheduler::duration_t duration) { - // This was adapted to TC to prevent static analysis tools from complaining. - // If you encounter this assertion check if you repeat a TaskContext more then 1 time! - ASSERT(!(*_consumed) && "Bad task logic, task context was consumed already!"); + if (std::shared_ptr scheduler = _owner.lock()) + scheduler->RescheduleGroup(group, duration); + + return *this; } void TaskContext::Invoke() { - _task->_task(*this); + GetTask()->_task(std::move(*this)); } diff --git a/src/common/Utilities/TaskScheduler.h b/src/common/Utilities/TaskScheduler.h index c9029a002dbf8..36876453614ff 100644 --- a/src/common/Utilities/TaskScheduler.h +++ b/src/common/Utilities/TaskScheduler.h @@ -23,11 +23,11 @@ #include "Random.h" #include #include -#include -#include #include -#include #include +#include +#include +#include class TaskContext; @@ -58,7 +58,7 @@ class TC_COMMON_API TaskScheduler // Task repeated type typedef uint32 repeated_t; // Task handle type - typedef std::function task_handler_t; + typedef std::function task_handler_t; // Predicate type typedef std::function predicate_t; // Success handle type @@ -90,7 +90,7 @@ class TC_COMMON_API TaskScheduler // Move construct Task(Task&&) = delete; // Copy Assign - Task& operator= (Task const&) = default; + Task& operator= (Task const&) = delete; // Move Assign Task& operator= (Task&& right) = delete; @@ -128,14 +128,21 @@ class TC_COMMON_API TaskScheduler class TC_COMMON_API TaskQueue { - std::multiset container; + public: + typedef std::multiset Container; + + private: + Container container; public: // Pushes the task in the container void Push(TaskContainer&& task); + // Pushes the task in the container + void Push(Container::node_type&& node); + /// Pops the task out of the container - TaskContainer Pop(); + Container::node_type Pop(); TaskContainer const& First() const; @@ -157,12 +164,6 @@ class TC_COMMON_API TaskScheduler /// The Task Queue which contains all task objects. TaskQueue _task_holder; - typedef std::queue> AsyncHolder; - - /// Contains all asynchronous tasks which will be invoked at - /// the next update tick. - AsyncHolder _asyncHolder; - predicate_t _predicate; static bool EmptyValidator() @@ -195,17 +196,28 @@ class TC_COMMON_API TaskScheduler /// Clears the validator which is asked if tasks are allowed to be executed. TaskScheduler& ClearValidator(); + static success_t const EmptySuccessCallback; + + /// Update the scheduler to the current time. + TaskScheduler& Update(); + /// Update the scheduler to the current time. /// Calls the optional callback on successfully finish. - TaskScheduler& Update(success_t const& callback = nullptr); + TaskScheduler& Update(success_t callback); + + /// Update the scheduler with a difftime in ms. + TaskScheduler& Update(size_t milliseconds); /// Update the scheduler with a difftime in ms. /// Calls the optional callback on successfully finish. - TaskScheduler& Update(size_t milliseconds, success_t const& callback = nullptr); + TaskScheduler& Update(size_t milliseconds, success_t callback); + + /// Update the scheduler with a difftime. + TaskScheduler& Update(duration_t difftime); /// Update the scheduler with a difftime. /// Calls the optional callback on successfully finish. - TaskScheduler& Update(duration_t difftime, success_t const& callback = nullptr); + TaskScheduler& Update(duration_t difftime, success_t callback); /// Schedule an callable function that is executed at the next update tick. /// Its safe to modify the TaskScheduler from within the callable. @@ -222,7 +234,7 @@ class TC_COMMON_API TaskScheduler /// Schedule an event with a fixed rate. /// Never call this from within a task context! Use TaskContext::Schedule instead! TaskScheduler& Schedule(duration_t time, - group_t const group, task_handler_t task) + group_t group, task_handler_t task) { return this->ScheduleAt(_now, time, group, std::move(task)); } @@ -238,7 +250,7 @@ class TC_COMMON_API TaskScheduler /// Schedule an event with a fixed rate. /// Never call this from within a task context! Use TaskContext::Schedule instead! TaskScheduler& Schedule(std::chrono::milliseconds min, - std::chrono::milliseconds max, group_t const group, + std::chrono::milliseconds max, group_t group, task_handler_t task) { return this->Schedule(::randtime(min, max), group, std::move(task)); @@ -252,9 +264,9 @@ class TC_COMMON_API TaskScheduler /// Never call this from within a task context! Use TaskContext::CancelGroup instead! TaskScheduler& CancelGroup(group_t group); - /// Cancels all groups in the given std::vector. + /// Cancels all groups in the given std::span. /// Hint: Use std::initializer_list for this: "{1, 2, 3, 4}" - TaskScheduler& CancelGroupsOf(std::vector const& groups); + TaskScheduler& CancelGroupsOf(std::span groups); /// Delays all tasks with the given duration. TaskScheduler& DelayAll(duration_t duration); @@ -267,10 +279,10 @@ class TC_COMMON_API TaskScheduler } /// Delays all tasks of a group with the given duration. - TaskScheduler& DelayGroup(group_t const group, duration_t duration); + TaskScheduler& DelayGroup(group_t group, duration_t duration); /// Delays all tasks of a group with a random duration between min and max. - TaskScheduler& DelayGroup(group_t const group, + TaskScheduler& DelayGroup(group_t group, std::chrono::milliseconds min, std::chrono::milliseconds max) { @@ -287,10 +299,10 @@ class TC_COMMON_API TaskScheduler } /// Reschedule all tasks of a group with the given duration. - TaskScheduler& RescheduleGroup(group_t const group, duration_t duration); + TaskScheduler& RescheduleGroup(group_t group, duration_t duration); /// Reschedule all tasks of a group with a random duration between min and max. - TaskScheduler& RescheduleGroup(group_t const group, + TaskScheduler& RescheduleGroup(group_t group, std::chrono::milliseconds min, std::chrono::milliseconds max) { @@ -299,7 +311,10 @@ class TC_COMMON_API TaskScheduler private: /// Insert a new task to the enqueued tasks. - TaskScheduler& InsertTask(TaskContainer task); + TaskScheduler& InsertTask(TaskContainer&& task); + + /// Insert a new task to the enqueued tasks. + TaskScheduler& InsertTask(TaskQueue::Container::node_type&& node); TaskScheduler& ScheduleAt(timepoint_t end, duration_t time, task_handler_t task); @@ -308,7 +323,7 @@ class TC_COMMON_API TaskScheduler /// Never call this from within a task context! Use TaskContext::schedule instead! TaskScheduler& ScheduleAt(timepoint_t end, duration_t time, - group_t const group, task_handler_t task); + group_t group, task_handler_t task); /// Dispatch remaining tasks void Dispatch(success_t const& callback); @@ -319,37 +334,36 @@ class TC_COMMON_API TaskContext friend class TaskScheduler; /// Associated task - TaskScheduler::TaskContainer _task; + std::variant _task; /// Owner std::weak_ptr _owner; - /// Marks the task as consumed - std::shared_ptr _consumed; + TaskScheduler::TaskContainer& GetTaskContainer() noexcept; - /// Dispatches an action safe on the TaskScheduler - TaskContext& Dispatch(std::function const& apply); + TaskScheduler::Task* GetTask() const noexcept; public: // Empty constructor - TaskContext() - : _task(), _owner(), _consumed(std::make_shared(true)) { } + TaskContext() noexcept + : _task(), _owner() { } // Construct from task and owner - explicit TaskContext(TaskScheduler::TaskContainer&& task, std::weak_ptr&& owner) - : _task(std::move(task)), _owner(std::move(owner)), _consumed(std::make_shared(false)) { } + explicit TaskContext(TaskScheduler::TaskQueue::Container::node_type&& task, std::weak_ptr&& owner) noexcept + : _task(std::move(task)), _owner(std::move(owner)) { } // Copy construct - TaskContext(TaskContext const& right) = default; + TaskContext(TaskContext const& right) = delete; // Move construct - TaskContext(TaskContext&& right) noexcept = default; + TaskContext(TaskContext&& right) noexcept; // Copy assign - TaskContext& operator=(TaskContext const& right) = default; + TaskContext& operator=(TaskContext const& right) = delete; // Move assign - TaskContext& operator=(TaskContext&& right) noexcept = default; + TaskContext& operator=(TaskContext&& right) noexcept; ~TaskContext() = default; @@ -357,10 +371,10 @@ class TC_COMMON_API TaskContext bool IsExpired() const; /// Returns true if the event is in the given group - bool IsInGroup(TaskScheduler::group_t const group) const; + bool IsInGroup(TaskScheduler::group_t group) const; /// Sets the event in the given group - TaskContext& SetGroup(TaskScheduler::group_t const group); + TaskContext& SetGroup(TaskScheduler::group_t group); /// Removes the group from the event TaskContext& ClearGroup(); @@ -377,10 +391,7 @@ class TC_COMMON_API TaskContext /// Repeats the event with the same duration. /// This will consume the task context, its not possible to repeat the task again /// from the same task context! - TaskContext& Repeat() - { - return Repeat(_task->_duration); - } + TaskContext& Repeat(); /// Repeats the event and set a new duration that is randomized between min and max. /// std::chrono::seconds(5) for example. @@ -394,7 +405,7 @@ class TC_COMMON_API TaskContext /// Schedule a callable function that is executed at the next update tick from within the context. /// Its safe to modify the TaskScheduler from within the callable. - TaskContext& Async(std::function const& callable); + TaskContext& Async(std::function callable); /// Schedule an event with a fixed rate from within the context. /// Its possible that the new event is executed immediately! @@ -408,7 +419,7 @@ class TC_COMMON_API TaskContext /// Use TaskScheduler::Async to create a task /// which will be called at the next update tick. TaskContext& Schedule(TaskScheduler::duration_t time, - TaskScheduler::group_t const group, TaskScheduler::task_handler_t task); + TaskScheduler::group_t group, TaskScheduler::task_handler_t task); /// Schedule an event with a randomized rate between min and max rate from within the context. /// Its possible that the new event is executed immediately! @@ -425,7 +436,7 @@ class TC_COMMON_API TaskContext /// Use TaskScheduler::Async to create a task /// which will be called at the next update tick. TaskContext& Schedule(std::chrono::milliseconds min, - std::chrono::milliseconds max, TaskScheduler::group_t const group, + std::chrono::milliseconds max, TaskScheduler::group_t group, TaskScheduler::task_handler_t task) { return this->Schedule(::randtime(min, max), group, std::move(task)); @@ -435,11 +446,11 @@ class TC_COMMON_API TaskContext TaskContext& CancelAll(); /// Cancel all tasks of a single group from within the context. - TaskContext& CancelGroup(TaskScheduler::group_t const group); + TaskContext& CancelGroup(TaskScheduler::group_t group); /// Cancels all groups in the given std::vector from within the context. /// Hint: Use std::initializer_list for this: "{1, 2, 3, 4}" - TaskContext& CancelGroupsOf(std::vector const& groups); + TaskContext& CancelGroupsOf(std::span groups); /// Delays all tasks with the given duration from within the context. TaskContext& DelayAll(TaskScheduler::duration_t duration); @@ -452,10 +463,10 @@ class TC_COMMON_API TaskContext } /// Delays all tasks of a group with the given duration from within the context. - TaskContext& DelayGroup(TaskScheduler::group_t const group, TaskScheduler::duration_t duration); + TaskContext& DelayGroup(TaskScheduler::group_t group, TaskScheduler::duration_t duration); /// Delays all tasks of a group with a random duration between min and max from within the context. - TaskContext& DelayGroup(TaskScheduler::group_t const group, + TaskContext& DelayGroup(TaskScheduler::group_t group, std::chrono::milliseconds min, std::chrono::milliseconds max) { @@ -473,10 +484,10 @@ class TC_COMMON_API TaskContext } /// Reschedule all tasks of a group with the given duration. - TaskContext& RescheduleGroup(TaskScheduler::group_t const group, TaskScheduler::duration_t duration); + TaskContext& RescheduleGroup(TaskScheduler::group_t group, TaskScheduler::duration_t duration); /// Reschedule all tasks of a group with a random duration between min and max. - TaskContext& RescheduleGroup(TaskScheduler::group_t const group, + TaskContext& RescheduleGroup(TaskScheduler::group_t group, std::chrono::milliseconds min, std::chrono::milliseconds max) { @@ -484,9 +495,6 @@ class TC_COMMON_API TaskContext } private: - /// Asserts if the task was consumed already. - void AssertOnConsumed() const; - /// Invokes the associated hook of the task. void Invoke(); }; diff --git a/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp b/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp index 8be231534abde..2a037781ab042 100644 --- a/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp +++ b/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp @@ -31,6 +31,7 @@ #include "TaskScheduler.h" #include "TemporarySummon.h" #include "Vehicle.h" +#include namespace DeephaulRavine { diff --git a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp index 3b4ad46595ff0..f65c8e52a3227 100644 --- a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp +++ b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp @@ -33,6 +33,7 @@ #include "SharedDefines.h" #include "TemporarySummon.h" #include "maw_of_souls.h" +#include enum YmironFallenKingSpells { diff --git a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp index 1aa389abf993e..e5763be0c6e86 100644 --- a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp +++ b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp @@ -27,6 +27,7 @@ #include "SpellScript.h" #include "TemporarySummon.h" #include "WaypointDefines.h" +#include enum WoundedColdridgeMountaineer { diff --git a/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp b/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp index c25504fe8e7d2..81931820101a8 100644 --- a/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp +++ b/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp @@ -30,6 +30,7 @@ #include "SpellAuraEffects.h" #include "SpellScript.h" #include "ecodome_aldani.h" +#include enum AzhiccarSpells { diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 502e50717e78e..72b20fcd6c0d8 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -38,6 +38,7 @@ #include "TaskScheduler.h" #include "TemporarySummon.h" #include "CommonPredicates.h" +#include enum PriestSpells { From d538abf0479a9a1a621d1c9a4ec5c02002c367f2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 12 Apr 2026 15:06:38 +0200 Subject: [PATCH 048/175] Core/Players: Add more granular teleport state tracking, fixes delayed cross map teleports Closes #31782 Closes #31788 --- src/server/game/Entities/Player/Player.cpp | 42 ++++++++------------ src/server/game/Entities/Player/Player.h | 35 ++++++++++------ src/server/game/Handlers/MovementHandler.cpp | 24 ++++++----- 3 files changed, 53 insertions(+), 48 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 49a2d9635f645..560b95f389963 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -210,12 +210,9 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) m_atLoginFlags = AT_LOGIN_NONE; - mSemaphoreTeleport_Near = false; - mSemaphoreTeleport_Far = false; - m_DelayedOperations = 0; m_bCanDelayTeleport = false; - m_bHasDelayedTeleport = false; + m_teleport_state = TeleportState::NotTeleporting; m_teleport_options = TELE_TO_NONE; m_teleportSpellId = 0; m_newWorldCounter = 0; @@ -1121,8 +1118,11 @@ void Player::Update(uint32 p_time) //we should execute delayed teleports only for alive(!) players //because we don't want player's ghost teleported from graveyard - if (IsHasDelayedTeleport() && IsAlive()) + if ((GetTeleportState() == TeleportState::DelayedTeleport || GetTeleportState() == TeleportState::DelayedWorldPort) && IsAlive()) + { + SetTeleportState(TeleportState::NotTeleporting); // skip state check inside TeleportTo TeleportTo(m_teleport_dest, m_teleport_options, m_teleportSpellId); + } } void Player::Heartbeat() @@ -1249,6 +1249,9 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti return false; } + if (GetTeleportState() != TeleportState::NotTeleporting) + return false; + // preparing unsummon pet if lost (we must get pet before teleportation or will not find it later) Pet* pet = GetPet(); @@ -1300,15 +1303,12 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti if (GetMapId() == teleportLocation.Location.GetMapId() && (!teleportLocation.InstanceId || GetInstanceId() == teleportLocation.InstanceId)) { - //lets reset far teleport flag if it wasn't reset during chained teleport - SetSemaphoreTeleportFar(false); - //setup delayed teleport flag - SetDelayedTeleportFlag(IsCanDelayTeleport()); + SetTeleportState(TeleportState::Initiated); //if teleport spell is cast in Unit::Update() func //then we need to delay it until update process will be finished - if (IsHasDelayedTeleport()) + if (IsCanDelayTeleport()) { - SetSemaphoreTeleportNear(true); + SetTeleportState(TeleportState::DelayedTeleport); //lets save teleport destination for player m_teleport_dest = teleportLocation; m_teleport_options = options; @@ -1337,16 +1337,13 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti // code for finish transfer called in WorldSession::HandleMovementOpcodes() // at client packet CMSG_MOVE_TELEPORT_ACK - SetSemaphoreTeleportNear(true); + SetTeleportState(TeleportState::WaitingForTeleportAck); // near teleport, triggering send CMSG_MOVE_TELEPORT_ACK from client at landing if (!GetSession()->PlayerLogout()) SendTeleportPacket(m_teleport_dest); } else { - if (IsBeingTeleportedFar()) - return false; - if (GetClass() == CLASS_DEATH_KNIGHT && GetMapId() == 609 && !IsGameMaster() && !HasSpell(50977)) { SendTransferAborted(teleportLocation.Location.GetMapId(), TRANSFER_ABORT_UNIQUE_MESSAGE, 1); @@ -1371,16 +1368,13 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti !((oldmap->GetEntry()->CosmeticParentMapID != -1) ^ (oldmap->GetEntry()->CosmeticParentMapID != mEntry->CosmeticParentMapID)))) options &= ~TELE_TO_SEAMLESS; - //lets reset near teleport flag if it wasn't reset during chained teleports - SetSemaphoreTeleportNear(false); - //setup delayed teleport flag - SetDelayedTeleportFlag(IsCanDelayTeleport()); - SetSemaphoreTeleportFar(true); + SetTeleportState(TeleportState::Initiated); //if teleport spell is cast in Unit::Update() func //then we need to delay it until update process will be finished - if (IsHasDelayedTeleport()) + if (IsCanDelayTeleport()) { //lets save teleport destination for player + SetTeleportState(TeleportState::DelayedWorldPort); m_teleport_dest = teleportLocation; m_teleport_options = options; m_teleportSpellId = teleportSpellId; @@ -1466,6 +1460,8 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti // if the player is saved before worldportack (at logout for example) // this will be used instead of the current location in SaveToDB + SetTeleportState(TeleportState::WaitingForSuspendTokenResponse); + if (!GetSession()->PlayerLogout()) { ++m_newWorldCounter; @@ -1475,10 +1471,6 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti suspendToken.Reason = options & TELE_TO_SEAMLESS ? 2 : 1; SendDirectMessage(suspendToken.Write()); } - - // move packet sent by client always after far teleport - // code for finish transfer to new map called in WorldSession::HandleMoveWorldportAckOpcode at client packet - SetSemaphoreTeleportFar(true); } return true; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 96325bd34b48d..b2b938f6e83de 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -904,6 +904,19 @@ enum ArenaTeamInfoType ARENA_TEAM_END = 7 }; +enum class TeleportState +{ + NotTeleporting, + Initiated, + // destination is on same map and instance + DelayedTeleport, + WaitingForTeleportAck, + // destination is on different map or different instance of the same map + DelayedWorldPort, + WaitingForSuspendTokenResponse, + WaitingForWorldPortAck +}; + enum TeleportToOptions { TELE_TO_NONE = 0x00, @@ -2381,14 +2394,16 @@ class TC_GAME_API Player final : public Unit, public GridObject void SetSkillPermBonus(uint32 pos, uint16 bonus) { SetUpdateFieldValue(m_values.ModifyValue(&Player::m_activePlayerData).ModifyValue(&UF::ActivePlayerData::Skill).ModifyValue(&UF::SkillInfo::SkillPermBonus, pos), bonus); } TeleportLocation& GetTeleportDest() { return m_teleport_dest; } - uint32 GetTeleportOptions() const { return m_teleport_options; } + TeleportState GetTeleportState() const { return m_teleport_state; } + void SetTeleportState(TeleportState state) { m_teleport_state = state; } + EnumFlag GetTeleportOptions() const { return m_teleport_options; } int32 GetNewWorldCounter() const { return m_newWorldCounter; } - bool IsBeingTeleported() const { return IsBeingTeleportedNear() || IsBeingTeleportedFar(); } - bool IsBeingTeleportedNear() const { return mSemaphoreTeleport_Near; } - bool IsBeingTeleportedFar() const { return mSemaphoreTeleport_Far; } - bool IsBeingTeleportedSeamlessly() const { return IsBeingTeleportedFar() && m_teleport_options & TELE_TO_SEAMLESS; } - void SetSemaphoreTeleportNear(bool semphsetting) { mSemaphoreTeleport_Near = semphsetting; } - void SetSemaphoreTeleportFar(bool semphsetting) { mSemaphoreTeleport_Far = semphsetting; } + bool IsBeingTeleported() const { return m_teleport_state != TeleportState::NotTeleporting; } + bool IsBeingTeleportedNear() const { return m_teleport_state == TeleportState::DelayedTeleport + || m_teleport_state == TeleportState::WaitingForTeleportAck; } + bool IsBeingTeleportedFar() const { return m_teleport_state == TeleportState::DelayedWorldPort + || m_teleport_state == TeleportState::WaitingForSuspendTokenResponse + || m_teleport_state == TeleportState::WaitingForWorldPortAck; } void ProcessDelayedOperations(); void CheckAreaExplore(); @@ -3346,8 +3361,6 @@ class TC_GAME_API Player final : public Unit, public GridObject bool IsCanDelayTeleport() const { return m_bCanDelayTeleport; } void SetCanDelayTeleport(bool setting) { m_bCanDelayTeleport = setting; } - bool IsHasDelayedTeleport() const { return m_bHasDelayedTeleport; } - void SetDelayedTeleportFlag(bool setting) { m_bHasDelayedTeleport = setting; } void ScheduleDelayedOperation(uint32 operation) { if (operation < DELAYED_END) m_DelayedOperations |= operation; } bool IsInstanceLoginGameMasterException() const; @@ -3363,15 +3376,13 @@ class TC_GAME_API Player final : public Unit, public GridObject // Current teleport data TeleportLocation m_teleport_dest; + TeleportState m_teleport_state; TeleportToOptions m_teleport_options; uint32 m_teleportSpellId; int32 m_newWorldCounter; - bool mSemaphoreTeleport_Near; - bool mSemaphoreTeleport_Far; uint32 m_DelayedOperations; bool m_bCanDelayTeleport; - bool m_bHasDelayedTeleport; std::unique_ptr m_petStable; diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index c897e588fb772..bc8bd06e769cb 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -47,6 +47,9 @@ void WorldSession::HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortResponse& /*packet*/) { + if (_player->GetTeleportState() != TeleportState::WaitingForWorldPortAck) + return; + HandleMoveWorldportAck(); } @@ -54,11 +57,8 @@ void WorldSession::HandleMoveWorldportAck() { Player* player = GetPlayer(); // ignore unexpected far teleports - if (!player->IsBeingTeleportedFar()) - return; - - bool seamlessTeleport = player->IsBeingTeleportedSeamlessly(); - player->SetSemaphoreTeleportFar(false); + bool seamlessTeleport = player->GetTeleportOptions().HasFlag(TELE_TO_SEAMLESS); + player->SetTeleportState(TeleportState::NotTeleporting); // get the teleport destination TeleportLocation const& loc = player->GetTeleportDest(); @@ -188,7 +188,7 @@ void WorldSession::HandleMoveWorldportAck() player->FinishTaxiFlight(); } - if (!player->IsAlive() && player->GetTeleportOptions() & TELE_REVIVE_AT_TELEPORT) + if (!player->IsAlive() && player->GetTeleportOptions().HasFlag(TELE_REVIVE_AT_TELEPORT)) player->ResurrectPlayer(0.5f); // resurrect character at enter into instance where his corpse exist after add to map @@ -252,7 +252,7 @@ void WorldSession::HandleMoveWorldportAck() void WorldSession::HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& /*suspendTokenResponse*/) { - if (!_player->IsBeingTeleportedFar()) + if (_player->GetTeleportState() != TeleportState::WaitingForSuspendTokenResponse) return; TeleportLocation const& loc = GetPlayer()->GetTeleportDest(); @@ -267,11 +267,13 @@ void WorldSession::HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTok WorldPackets::Movement::NewWorld packet; packet.MapID = loc.Location.GetMapId(); packet.Loc.Pos = loc.Location; - packet.Reason = !_player->IsBeingTeleportedSeamlessly() ? NEW_WORLD_NORMAL : NEW_WORLD_SEAMLESS; + packet.Reason = !_player->GetTeleportOptions().HasFlag(TELE_TO_SEAMLESS) ? NEW_WORLD_NORMAL : NEW_WORLD_SEAMLESS; packet.Counter = _player->GetNewWorldCounter(); SendPacket(packet.Write()); - if (_player->IsBeingTeleportedSeamlessly()) + _player->SetTeleportState(TeleportState::WaitingForWorldPortAck); + + if (_player->GetTeleportOptions().HasFlag(TELE_TO_SEAMLESS)) HandleMoveWorldportAck(); } @@ -281,13 +283,13 @@ void WorldSession::HandleMoveTeleportAck(WorldPackets::Movement::MoveTeleportAck Player* plMover = _player->GetUnitBeingMoved()->ToPlayer(); - if (!plMover || !plMover->IsBeingTeleportedNear()) + if (!plMover || plMover->GetTeleportState() != TeleportState::WaitingForTeleportAck) return; if (packet.MoverGUID != plMover->GetGUID()) return; - plMover->SetSemaphoreTeleportNear(false); + plMover->SetTeleportState(TeleportState::NotTeleporting); uint32 old_zone = plMover->GetZoneId(); From 188a46f1a0a82691f4c31151ead8cb99632ae5da Mon Sep 17 00:00:00 2001 From: VoxCore Date: Sun, 12 Apr 2026 15:37:55 +0200 Subject: [PATCH 049/175] Core/Items: Add missing comma in ItemTransmogrificationSlots array --- src/server/game/Entities/Item/Item.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index 89c4e33cd92e2..e35a61b7ef577 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -2041,7 +2041,7 @@ int32 const ItemTransmogrificationSlots[MAX_INVTYPE] = -1, // INVTYPE_THROWN EQUIPMENT_SLOT_MAINHAND, // INVTYPE_RANGEDRIGHT -1, // INVTYPE_QUIVER - -1 // INVTYPE_RELIC + -1, // INVTYPE_RELIC -1, // INVTYPE_PROFESSION_TOOL -1, // INVTYPE_PROFESSION_GEAR -1, // INVTYPE_EQUIPABLE_SPELL_OFFENSIVE From e1c4f987c6a0597191a3498c9fc1a0954611f121 Mon Sep 17 00:00:00 2001 From: stevebone Date: Sun, 12 Apr 2026 15:53:32 +0200 Subject: [PATCH 050/175] Core/Units: Define new npc flag UNIT_NPC_FLAG_2_PERKS_VENDOR (#31786) --- src/server/game/Entities/Unit/UnitDefines.h | 1 + src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h index ae194f3d591a7..2579b1990407c 100644 --- a/src/server/game/Entities/Unit/UnitDefines.h +++ b/src/server/game/Entities/Unit/UnitDefines.h @@ -374,6 +374,7 @@ enum NPCFlags2 : uint32 UNIT_NPC_FLAG_2_AZERITE_RESPEC = 0x00004000, // TITLE is azerite respec UNIT_NPC_FLAG_2_ISLANDS_QUEUE = 0x00008000, // TITLE is islands queue UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION = 0x00010000, + UNIT_NPC_FLAG_2_PERKS_VENDOR = 0x00080000, // TITLE is trading post vendor UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER = 0x00200000, // TITLE is personal tabard designer }; diff --git a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp index 5ba09cba6e796..f8d038359866c 100644 --- a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp +++ b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp @@ -565,13 +565,14 @@ TC_API_EXPORT EnumText EnumUtils::ToString(NPCFlags2 value) case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return { "UNIT_NPC_FLAG_2_AZERITE_RESPEC", "is azerite respec", "" }; case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return { "UNIT_NPC_FLAG_2_ISLANDS_QUEUE", "is islands queue", "" }; case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return { "UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION", "UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION", "" }; + case UNIT_NPC_FLAG_2_PERKS_VENDOR: return { "UNIT_NPC_FLAG_2_PERKS_VENDOR", "is trading post vendor", "" }; case UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER: return { "UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER", "is personal tabard designer", "" }; default: throw std::out_of_range("value"); } } template <> -TC_API_EXPORT size_t EnumUtils::Count() { return 16; } +TC_API_EXPORT size_t EnumUtils::Count() { return 17; } template <> TC_API_EXPORT NPCFlags2 EnumUtils::FromIndex(size_t index) @@ -593,7 +594,8 @@ TC_API_EXPORT NPCFlags2 EnumUtils::FromIndex(size_t index) case 12: return UNIT_NPC_FLAG_2_AZERITE_RESPEC; case 13: return UNIT_NPC_FLAG_2_ISLANDS_QUEUE; case 14: return UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION; - case 15: return UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER; + case 15: return UNIT_NPC_FLAG_2_PERKS_VENDOR; + case 16: return UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER; default: throw std::out_of_range("index"); } } @@ -618,7 +620,8 @@ TC_API_EXPORT size_t EnumUtils::ToIndex(NPCFlags2 value) case UNIT_NPC_FLAG_2_AZERITE_RESPEC: return 12; case UNIT_NPC_FLAG_2_ISLANDS_QUEUE: return 13; case UNIT_NPC_FLAG_2_SUPPRESS_NPC_SOUNDS_EXCEPT_END_OF_INTERACTION: return 14; - case UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER: return 15; + case UNIT_NPC_FLAG_2_PERKS_VENDOR: return 15; + case UNIT_NPC_FLAG_2_PERSONAL_TABARD_DESIGNER: return 16; default: throw std::out_of_range("value"); } } From c703fac86fd31c44be6b199766899ec1f10bd8a1 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 13 Apr 2026 11:12:56 +0200 Subject: [PATCH 051/175] Core/Players: Fixed fatigue timer appearing in some situations where it shouldn't (in some wmos or on some vehicles) --- src/server/game/DataStores/DB2Stores.cpp | 8 +++- src/server/game/DataStores/DB2Stores.h | 2 +- src/server/game/DataStores/DB2Structure.h | 3 ++ src/server/game/DataStores/DBCEnums.h | 21 +++++++++ src/server/game/Entities/Player/Player.cpp | 31 +++++++++++-- src/server/game/Entities/Player/Player.h | 3 +- src/server/game/Entities/Unit/Unit.cpp | 11 ++--- src/server/game/Entities/Unit/Unit.h | 2 +- src/server/game/Entities/Vehicle/Vehicle.cpp | 8 ++-- src/server/game/Maps/GridMap.cpp | 14 ++---- src/server/game/Maps/TerrainMgr.cpp | 48 ++++++-------------- 11 files changed, 89 insertions(+), 62 deletions(-) diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index c91cff7befd7d..ced4b66d33a8c 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -3416,9 +3416,13 @@ bool DB2Manager::IsUiMapPhase(uint32 phaseId) const return _uiMapPhases.find(phaseId) != _uiMapPhases.end(); } -WMOAreaTableEntry const* DB2Manager::GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const +WMOAreaTableEntry const* DB2Manager::GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId, bool allowGroupFallback) { - return Trinity::Containers::MapGetValuePtr(_wmoAreaTableLookup, WMOAreaTableKey(int16(rootId), int8(adtId), groupId)); + WMOAreaTableEntry const* wmoAreaTableEntry = Trinity::Containers::MapGetValuePtr(_wmoAreaTableLookup, WMOAreaTableKey(int16(rootId), int8(adtId), groupId)); + if (!wmoAreaTableEntry && allowGroupFallback) + wmoAreaTableEntry = Trinity::Containers::MapGetValuePtr(_wmoAreaTableLookup, WMOAreaTableKey(int16(rootId), int8(adtId), -1)); + + return wmoAreaTableEntry; } std::unordered_set const* DB2Manager::GetPVPStatIDsForMap(uint32 mapId) const diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index da37df4d11ebf..69a42edfa14c1 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -556,7 +556,7 @@ class TC_GAME_API DB2Manager bool Zone2MapCoordinates(uint32 areaId, float& x, float& y) const; void Map2ZoneCoordinates(uint32 areaId, float& x, float& y) const; bool IsUiMapPhase(uint32 phaseId) const; - WMOAreaTableEntry const* GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId) const; + static WMOAreaTableEntry const* GetWMOAreaTable(int32 rootId, int32 adtId, int32 groupId, bool allowGroupFallback); std::unordered_set const* GetPVPStatIDsForMap(uint32 mapId) const; private: diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index c0371d272b689..d4cf2268e315d 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -5032,6 +5032,7 @@ struct VehicleSeatEntry inline bool HasFlag(VehicleSeatFlags flag) const { return !!(Flags & flag); } inline bool HasFlag(VehicleSeatFlagsB flag) const { return !!(FlagsB & flag); } + inline bool HasFlag(VehicleSeatFlagsC flag) const { return EnumFlag(static_cast(FlagsC)).HasFlag(flag); } inline bool CanEnterOrExit() const { return HasFlag(VehicleSeatFlags(VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT | VEHICLE_SEAT_FLAG_CAN_CONTROL | VEHICLE_SEAT_FLAG_SHOULD_USE_VEH_SEAT_EXIT_ANIM_ON_VOLUNTARY_EXIT)); } inline bool CanSwitchFromSeat() const { return HasFlag(VEHICLE_SEAT_FLAG_CAN_SWITCH); } @@ -5099,6 +5100,8 @@ struct WMOAreaTableEntry uint16 UwIntroSound; uint16 AreaTableID; int32 Flags; + + bool HasFlag(WMOAreaTableFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } }; struct WorldEffectEntry diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 0d0ea64cb3f66..b7e897b2fbcb8 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -3108,6 +3108,13 @@ enum VehicleSeatFlagsB VEHICLE_SEAT_FLAG_B_VEHICLE_PLAYERFRAME_UI = 0x80000000 // Lua_UnitHasVehiclePlayerFrameUI - actually checked for flagsb &~ 0x80000000 }; +enum class VehicleSeatFlagsC : int32 +{ + NoFatigue = 0x00000040 +}; + +DEFINE_ENUM_FLAG(VehicleSeatFlagsC); + enum class VignetteFlags { InfiniteAOI = 0x000001, @@ -3140,6 +3147,20 @@ enum class WarbandSceneFlags : uint8 DEFINE_ENUM_FLAG(WarbandSceneFlags); +enum class WMOAreaTableFlags : int32 +{ + RenderMinimap = 0x01, + ForceIndoors = 0x02, + ForceOutdoors = 0x04, + GenerateSingleExteriorMap = 0x08, + Stormwind = 0x10, + ChunkUsesTerrainForMinimap = 0x20, + IgnoreForMinimapAndEffects = 0x40, + IgnoreFatigue = 0x80 +}; + +DEFINE_ENUM_FLAG(WMOAreaTableFlags); + enum WorldMapTransformsFlags { WORLD_MAP_TRANSFORMS_FLAG_DUNGEON = 0x04 diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 560b95f389963..e837c7e71e38b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -26766,11 +26766,20 @@ int32 Player::NextGroupUpdateSequenceNumber(GroupCategory category) return m_groupUpdateSequences[category].UpdateSequenceNumber++; } -void Player::ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional const& newLiquidData) +void Player::ProcessPositionDataChanged(PositionFullTerrainStatus const& data) { - // process liquid auras using generic unit code - Unit::ProcessTerrainStatusUpdate(oldLiquidStatus, newLiquidData); + ZLiquidStatus oldLiquidStatus = GetLiquidStatus(); + Unit::ProcessPositionDataChanged(data); + UpdateLiquidMirrorTimerFlagsOnPositionChange(data.liquidInfo); + + // mount capability depends on liquid state change + if (oldLiquidStatus != GetLiquidStatus()) + UpdateMountCapability(); +} + +void Player::UpdateLiquidMirrorTimerFlagsOnPositionChange(Optional const& newLiquidData) +{ m_MirrorTimerFlags &= ~(UNDERWATER_INWATER | UNDERWATER_INLAVA | UNDERWATER_INSLIME | UNDERWATER_INDARKWATER); // player specific logic for mirror timers @@ -26783,7 +26792,21 @@ void Player::ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional< // Fatigue bar state (if not on flight path or transport) if (newLiquidData->type_flags.HasFlag(map_liquidHeaderTypeFlags::DarkWater) && !IsInFlight() && !GetTransport()) - m_MirrorTimerFlags |= UNDERWATER_INDARKWATER; + { + bool ignoreFatigue = false; + if (WmoLocation const* wmoLocation = GetCurrentWmo()) + if (WMOAreaTableEntry const* wmoEntry = DB2Manager::GetWMOAreaTable(wmoLocation->RootId, wmoLocation->NameSetId, wmoLocation->GroupId, true)) + if (wmoEntry->HasFlag(WMOAreaTableFlags::IgnoreFatigue)) + ignoreFatigue = true; + + if (Vehicle const* vehicle = GetVehicle()) + if (VehicleSeatEntry const* vehicleSeat = vehicle->GetSeatForPassenger(this)) + if (vehicleSeat->HasFlag(VehicleSeatFlagsC::NoFatigue)) + ignoreFatigue = true; + + if (!ignoreFatigue) + m_MirrorTimerFlags |= UNDERWATER_INDARKWATER; + } // Lava state (any contact) if (newLiquidData->type_flags.HasFlag(map_liquidHeaderTypeFlags::Magma)) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index b2b938f6e83de..3d9c6badc195b 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2317,7 +2317,8 @@ class TC_GAME_API Player final : public Unit, public GridObject bool UpdatePosition(float x, float y, float z, float orientation, bool teleport = false) override; bool UpdatePosition(Position const& pos, bool teleport = false) override { return UpdatePosition(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teleport); } - void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional const& newLiquidData) override; + void ProcessPositionDataChanged(PositionFullTerrainStatus const& data) override; + void UpdateLiquidMirrorTimerFlagsOnPositionChange(Optional const& newLiquidData); void AtEnterCombat() override; void AtExitCombat() override; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 018ec3a275494..038af6515efcf 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3338,13 +3338,12 @@ bool Unit::IsOnOceanFloor() const void Unit::ProcessPositionDataChanged(PositionFullTerrainStatus const& data) { - ZLiquidStatus oldLiquidStatus = GetLiquidStatus(); WorldObject::ProcessPositionDataChanged(data); - ProcessTerrainStatusUpdate(oldLiquidStatus, data.liquidInfo); + UpdateLiquidStatusOnPositionChange(data.liquidInfo); SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::CurrentAreaID), data.areaId); } -void Unit::ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional const& newLiquidData) +void Unit::UpdateLiquidStatusOnPositionChange(Optional const& newLiquidData) { if (!IsControlledByPlayer()) return; @@ -3363,18 +3362,14 @@ void Unit::ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional
  • SpellID) RemoveAurasDueToSpell(_lastLiquid->SpellID); - Player* player = GetCharmerOrOwnerPlayerOrPlayerItself(); // Set _lastLiquid before casting liquid spell to avoid infinite loops _lastLiquid = curLiquid; + Player* player = GetCharmerOrOwnerPlayerOrPlayerItself(); if (curLiquid && curLiquid->SpellID && (!player || !player->IsGameMaster())) CastSpell(this, curLiquid->SpellID, true); } - - // mount capability depends on liquid state change - if (oldLiquidStatus != GetLiquidStatus()) - UpdateMountCapability(); } void Unit::DeMorph() diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 1efe5cab502eb..37cfd540e104e 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1967,7 +1967,7 @@ class TC_GAME_API Unit : public WorldObject void DisableSpline(); void ProcessPositionDataChanged(PositionFullTerrainStatus const& data) override; - virtual void ProcessTerrainStatusUpdate(ZLiquidStatus oldLiquidStatus, Optional const& newLiquidData); + void UpdateLiquidStatusOnPositionChange(Optional const& newLiquidData); // notifiers virtual void AtEnterCombat(); diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index ca39f80ec347c..52b5250ac08e8 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -345,7 +345,10 @@ SeatMap::const_iterator Vehicle::GetNextEmptySeat(int8 seatId, bool next) const // Make sure we don't loop indefinetly if (seat->first == seatId) - return Seats.end(); + { + seat = Seats.end(); + break; + } } return seat; @@ -685,8 +688,7 @@ VehicleSeatEntry const* Vehicle::GetSeatForPassenger(Unit const* passenger) cons SeatMap::iterator Vehicle::GetSeatIteratorForPassenger(Unit* passenger) { - SeatMap::iterator itr; - for (itr = Seats.begin(); itr != Seats.end(); ++itr) + for (SeatMap::iterator itr = Seats.begin(); itr != Seats.end(); ++itr) if (itr->second.Passenger.Guid == passenger->GetGUID()) return itr; diff --git a/src/server/game/Maps/GridMap.cpp b/src/server/game/Maps/GridMap.cpp index d61594736c3c0..c12094a70c46d 100644 --- a/src/server/game/Maps/GridMap.cpp +++ b/src/server/game/Maps/GridMap.cpp @@ -613,31 +613,27 @@ ZLiquidStatus GridMap::GetLiquidStatus(float x, float y, float z, Optional>3)*16 + (y_int>>3); map_liquidHeaderTypeFlags type = _liquidFlags ? _liquidFlags[idx] : _liquidGlobalFlags; uint32 entry = _liquidEntry ? _liquidEntry[idx] : _liquidGlobalEntry; - if (LiquidTypeEntry const* liquidEntry = sLiquidTypeStore.LookupEntry(entry)) + if (sLiquidTypeStore.HasRecord(entry)) { type &= map_liquidHeaderTypeFlags::DarkWater; - uint32 liqTypeIdx = liquidEntry->SoundBank; if (entry < 21) { if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(getArea(x, y))) { - uint32 overrideLiquid = area->LiquidTypeID[liquidEntry->SoundBank]; + uint32 overrideLiquid = area->LiquidTypeID[(entry - 1) & 3]; if (!overrideLiquid && area->ParentAreaID) { area = sAreaTableStore.LookupEntry(area->ParentAreaID); if (area) - overrideLiquid = area->LiquidTypeID[liquidEntry->SoundBank]; + overrideLiquid = area->LiquidTypeID[(entry - 1) & 3]; } - if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(overrideLiquid)) - { + if (sLiquidTypeStore.HasRecord(overrideLiquid)) entry = overrideLiquid; - liqTypeIdx = liq->SoundBank; - } } } - type |= map_liquidHeaderTypeFlags(1 << liqTypeIdx); + type |= map_liquidHeaderTypeFlags(DB2Manager::GetLiquidFlags(entry)); } if (type == map_liquidHeaderTypeFlags::NoWater) diff --git a/src/server/game/Maps/TerrainMgr.cpp b/src/server/game/Maps/TerrainMgr.cpp index b0afc102fa483..4e138a3ced0f0 100644 --- a/src/server/game/Maps/TerrainMgr.cpp +++ b/src/server/game/Maps/TerrainMgr.cpp @@ -387,19 +387,16 @@ void TerrainInfo::GetFullTerrainStatusForPosition(PhaseShift const& phaseShift, { if (wmoData->areaInfo) { - data.wmoLocation.emplace(wmoData->areaInfo->groupId, wmoData->areaInfo->adtId, wmoData->areaInfo->rootId, wmoData->areaInfo->uniqueId); // wmo found - WMOAreaTableEntry const* wmoEntry = sDB2Manager.GetWMOAreaTable(wmoData->areaInfo->rootId, wmoData->areaInfo->adtId, wmoData->areaInfo->groupId); - if (!wmoEntry) - wmoEntry = sDB2Manager.GetWMOAreaTable(wmoData->areaInfo->rootId, wmoData->areaInfo->adtId, -1); - + data.wmoLocation.emplace(wmoData->areaInfo->groupId, wmoData->areaInfo->adtId, wmoData->areaInfo->rootId, wmoData->areaInfo->uniqueId); data.outdoors = (wmoData->areaInfo->mogpFlags & 0x8) != 0; - if (wmoEntry) + + if (WMOAreaTableEntry const* wmoEntry = DB2Manager::GetWMOAreaTable(wmoData->areaInfo->rootId, wmoData->areaInfo->adtId, wmoData->areaInfo->groupId, true)) { data.areaId = wmoEntry->AreaTableID; - if (wmoEntry->Flags & 4) + if (wmoEntry->HasFlag(WMOAreaTableFlags::ForceOutdoors)) data.outdoors = true; - else if (wmoEntry->Flags & 2) + else if (wmoEntry->HasFlag(WMOAreaTableFlags::ForceIndoors)) data.outdoors = false; } @@ -430,32 +427,24 @@ void TerrainInfo::GetFullTerrainStatusForPosition(PhaseShift const& phaseShift, if (GetId() == 530 && liquidType == 2) // gotta love hacks liquidType = 15; - uint32 liquidFlagType = 0; - if (LiquidTypeEntry const* liquidData = sLiquidTypeStore.LookupEntry(liquidType)) - liquidFlagType = liquidData->SoundBank; - if (liquidType && liquidType < 21 && areaEntry) { - uint32 overrideLiquid = areaEntry->LiquidTypeID[liquidFlagType]; + uint32 overrideLiquid = areaEntry->LiquidTypeID[(liquidType - 1) & 3]; if (!overrideLiquid && areaEntry->ParentAreaID) { - AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(areaEntry->ParentAreaID); - if (zoneEntry) - overrideLiquid = zoneEntry->LiquidTypeID[liquidFlagType]; + if (AreaTableEntry const* zoneEntry = sAreaTableStore.LookupEntry(areaEntry->ParentAreaID)) + overrideLiquid = zoneEntry->LiquidTypeID[(liquidType - 1) & 3]; } - if (LiquidTypeEntry const* overrideData = sLiquidTypeStore.LookupEntry(overrideLiquid)) - { + if (sLiquidTypeStore.HasRecord(overrideLiquid)) liquidType = overrideLiquid; - liquidFlagType = overrideData->SoundBank; - } } data.liquidInfo.emplace(); data.liquidInfo->level = wmoData->liquidInfo->level; data.liquidInfo->depth_level = wmoData->floorZ; data.liquidInfo->entry = liquidType; - data.liquidInfo->type_flags = map_liquidHeaderTypeFlags(1 << liquidFlagType); + data.liquidInfo->type_flags = map_liquidHeaderTypeFlags(DB2Manager::GetLiquidFlags(liquidType)); float delta = wmoData->liquidInfo->level - z; uint32 status = LIQUID_MAP_ABOVE_WATER; @@ -508,27 +497,20 @@ ZLiquidStatus TerrainInfo::GetLiquidStatus(PhaseShift const& phaseShift, uint32 if (GetId() == 530 && vmapData.liquidInfo->type == 2) vmapData.liquidInfo->type = 15; - uint32 liquidFlagType = 0; - if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(vmapData.liquidInfo->type)) - liquidFlagType = liq->SoundBank; - if (vmapData.liquidInfo->type && vmapData.liquidInfo->type < 21) { if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(GetAreaId(phaseShift, mapId, x, y, z))) { - uint32 overrideLiquid = area->LiquidTypeID[liquidFlagType]; + uint32 overrideLiquid = area->LiquidTypeID[(vmapData.liquidInfo->type - 1) & 3]; if (!overrideLiquid && area->ParentAreaID) { area = sAreaTableStore.LookupEntry(area->ParentAreaID); if (area) - overrideLiquid = area->LiquidTypeID[liquidFlagType]; + overrideLiquid = area->LiquidTypeID[(vmapData.liquidInfo->type - 1) & 3]; } - if (LiquidTypeEntry const* liq = sLiquidTypeStore.LookupEntry(overrideLiquid)) - { + if (sLiquidTypeStore.HasRecord(overrideLiquid)) vmapData.liquidInfo->type = overrideLiquid; - liquidFlagType = liq->SoundBank; - } } } @@ -536,7 +518,7 @@ ZLiquidStatus TerrainInfo::GetLiquidStatus(PhaseShift const& phaseShift, uint32 data->depth_level = vmapData.floorZ; data->entry = vmapData.liquidInfo->type; - data->type_flags = map_liquidHeaderTypeFlags(1 << liquidFlagType); + data->type_flags = map_liquidHeaderTypeFlags(DB2Manager::GetLiquidFlags(vmapData.liquidInfo->type)); } float delta = vmapData.liquidInfo->level - z; @@ -648,7 +630,7 @@ uint32 TerrainInfo::GetAreaId(PhaseShift const& phaseShift, uint32 mapId, float if (hasVmapArea && G3D::fuzzyGe(z, vmapZ - GROUND_HEIGHT_TOLERANCE) && (G3D::fuzzyLt(z, gridMapHeight - GROUND_HEIGHT_TOLERANCE) || vmapZ > gridMapHeight)) { // wmo found - if (WMOAreaTableEntry const* wmoEntry = sDB2Manager.GetWMOAreaTable(rootId, adtId, groupId)) + if (WMOAreaTableEntry const* wmoEntry = DB2Manager::GetWMOAreaTable(rootId, adtId, groupId, false)) areaId = wmoEntry->AreaTableID; if (!areaId) From 9697588d3b7c503992f164519ce5b0fb47ef6eb7 Mon Sep 17 00:00:00 2001 From: Naddley Date: Mon, 13 Apr 2026 13:05:50 +0200 Subject: [PATCH 052/175] DB/Harandar: Added createobject2 spawns for phase 26622 --- .../world/master/2026_04_13_00_world.sql | 247 ++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 sql/updates/world/master/2026_04_13_00_world.sql diff --git a/sql/updates/world/master/2026_04_13_00_world.sql b/sql/updates/world/master/2026_04_13_00_world.sql new file mode 100644 index 0000000000000..6dedb2b3ac4f3 --- /dev/null +++ b/sql/updates/world/master/2026_04_13_00_world.sql @@ -0,0 +1,247 @@ +SET @CGUID := 11000649; +SET @OGUID := 11000020; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+70; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1279.7396240234375, 864.38018798828125, 1328.6943359375, 4.665193080902099609, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+1, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1301.15283203125, 856.60418701171875, 1330.354736328125, 0.766289472579956054, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+2, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1328.2847900390625, 882.3507080078125, 1344.6680908203125, 4.665193080902099609, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+3, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1333.2916259765625, 910.08856201171875, 1367.6905517578125, 5.441879749298095703, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+4, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1307.3680419921875, 915.310791015625, 1336.75, 4.521508216857910156, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+5, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1262.9114990234375, 829.13018798828125, 1332.329345703125, 5.007440090179443359, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+6, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1289.545166015625, 896.28472900390625, 1335.830078125, 3.724887371063232421, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+7, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1266.26220703125, 832.94793701171875, 1332.7568359375, 5.518473148345947265, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (Auras: ) (possible waypoints or random movement) +(@CGUID+8, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1248.751708984375, 873.26910400390625, 1362.4405517578125, 4.632912635803222656, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+9, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1297.984375, 874.84027099609375, 1331.7841796875, 6.014566898345947265, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+10, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1334.1197509765625, 893.171875, 1346.1248779296875, 0.325119495391845703, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+11, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1308.69970703125, 877.125, 1338.8040771484375, 0.833702564239501953, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+12, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1262.607666015625, 827.45660400390625, 1345.630615234375, 5.421803474426269531, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+13, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1302.9913330078125, 903.9288330078125, 1351.1243896484375, 4.322881221771240234, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+14, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1272.1944580078125, 699.7430419921875, 1397.3477783203125, 4.817058563232421875, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+15, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1225.23095703125, 753.3125, 1330.7554931640625, 2.222631454467773437, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+16, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1234.967041015625, 734.185791015625, 1331.5206298828125, 5.430673599243164062, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+17, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1278.907958984375, 769.22222900390625, 1330.619384765625, 3.994721651077270507, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+18, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1273.7066650390625, 729.19097900390625, 1331.4862060546875, 0.166934013366699218, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+19, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1290.923583984375, 741.61285400390625, 1331.7236328125, 0.665167570114135742, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+20, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1284.34375, 768.34893798828125, 1330.0596923828125, 1.505312323570251464, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+21, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1325.0555419921875, 774.09375, 1333.641357421875, 0.633518517017364501, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+22, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1283.3992919921875, 796.732666015625, 1343.99072265625, 3.590230703353881835, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+23, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1271.4114990234375, 747.34722900390625, 1330.98095703125, 2.903629064559936523, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+24, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1264.470458984375, 717.98614501953125, 1333.0911865234375, 2.188169240951538085, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+25, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1285.8697509765625, 797.3663330078125, 1331.5302734375, 2.499593734741210937, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (Auras: 1250486 - High-Value Beast) (possible waypoints or random movement) +(@CGUID+26, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1285.6649169921875, 801.8038330078125, 1331.852783203125, 2.094257593154907226, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+27, 245114, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1126.8680419921875, 880.0867919921875, 1340.6632080078125, 2.467528581619262695, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Vicious Saptor (Area: Har'mara - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+28, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1205.7882080078125, 831.65802001953125, 1329.9727783203125, 4.245204448699951171, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+29, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1212.1805419921875, 814.5850830078125, 1329.729248046875, 4.986347198486328125, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+30, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1172.2535400390625, 814.28472900390625, 1350.0543212890625, 5.441879749298095703, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+31, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1197.65625, 803.11285400390625, 1353.4312744140625, 0, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+32, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1149.16845703125, 880.263916015625, 1356.376708984375, 3.30220198631286621, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+33, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1185.49658203125, 806.092041015625, 1333.003662109375, 1.89648592472076416, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+34, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1189.1910400390625, 821.6007080078125, 1332.8319091796875, 4.606882572174072265, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+35, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1177.40625, 789.28472900390625, 1334.004150390625, 1.437374830245971679, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+36, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1215.73095703125, 826.45831298828125, 1329.8011474609375, 2.942288875579833984, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+37, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1191.3541259765625, 925.607666015625, 1330.4775390625, 2.475512027740478515, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+38, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1238.6927490234375, 887.78472900390625, 1331.400634765625, 3.469159364700317382, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+39, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1221.4774169921875, 927.09552001953125, 1331.4822998046875, 4.643042564392089843, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+40, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1216.6978759765625, 941.53472900390625, 1332.35986328125, 0.970654547214508056, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+41, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1319.90625, 964.34893798828125, 1347.1171875, 4.486883163452148437, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+42, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1201.4774169921875, 881.625, 1332.2554931640625, 1.596370697021484375, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+43, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1225.90625, 927.2882080078125, 1333.0439453125, 1.841365933418273925, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+44, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1195.5660400390625, 900.3194580078125, 1344.765869140625, 6.024446010589599609, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+45, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1201.0867919921875, 905.13714599609375, 1330.8714599609375, 3.840784311294555664, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+46, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1194.3975830078125, 946.3211669921875, 1329.5537109375, 2.878571271896362304, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+47, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1231.4166259765625, 903.810791015625, 1332.3154296875, 0.852510750293731689, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+48, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1208.1441650390625, 925.69964599609375, 1337.216064453125, 0.2813262939453125, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+49, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1228.90283203125, 988.87152099609375, 1330.49267578125, 4.795212268829345703, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+50, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1258.8524169921875, 1000.09197998046875, 1331.01220703125, 3.554572820663452148, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+51, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1217.763916015625, 979.109375, 1332.8763427734375, 3.234653949737548828, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+52, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1144.0208740234375, 933.59375, 1343.85400390625, 1.751643657684326171, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+53, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1252.201416015625, 992.75518798828125, 1331.3984375, 5.450029850006103515, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+54, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1143.8194580078125, 964.40277099609375, 1356.2708740234375, 5.025057315826416015, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+55, 237036, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1170.91845703125, 961.76910400390625, 1341.1671142578125, 5.521956920623779296, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Lashroom Bud (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+56, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1243.060791015625, 990.20831298828125, 1342.5679931640625, 3.945434808731079101, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+57, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1239.640625, 976.78125, 1332.416015625, 1.571391820907592773, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 (possible waypoints or random movement) +(@CGUID+58, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1267.1597900390625, 994.0538330078125, 1332.5791015625, 1.675621390342712402, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+59, 245117, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1346.4288330078125, 979.11285400390625, 1329.609619140625, 2.72369694709777832, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Pesky Sludger (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+60, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1280.734375, 1009.00872802734375, 1328.994140625, 5.477174282073974609, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+61, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1352.5260009765625, 1045.62158203125, 1370.0010986328125, 4.477639198303222656, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+62, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1327.7239990234375, 987.23785400390625, 1328.9873046875, 5.599215030670166015, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+63, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1349.73095703125, 1002.06768798828125, 1337.474609375, 3.653069019317626953, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+64, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1305.15283203125, 958.97918701171875, 1331.8116455078125, 0.645912647247314453, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+65, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1368.501708984375, 1017.44622802734375, 1339.3486328125, 0.223540291190147399, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+66, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1343.7882080078125, 1021.54522705078125, 1356.90087890625, 5.169723033905029296, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+67, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1356.98095703125, 1040.0728759765625, 1343.625, 2.54312300682067871, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+68, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1309.1163330078125, 1025.8541259765625, 1333.4609375, 1.991940140724182128, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+69, 245118, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1331.5382080078125, 940.0867919921875, 1330.7901611328125, 4.955296039581298828, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838), -- Invasive Drifter (Area: Har'mara - Difficulty: 0) CreateObject2 +(@CGUID+70, 237068, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1319.90625, 964.34893798828125, 1347.1171875, 4.486883163452148437, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 66838); -- Spore-Covered Firefly (Area: Har'mara - Difficulty: 0) CreateObject2 + +-- GameObjects +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+5; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 620076, 2694, 15355, 15928, '0', 26622, 0, 1352.9774169921875, 906.14410400390625, 1345.3524169921875, 1.325773000717163085, 0, 0, 0.61539459228515625, 0.788219213485717773, 120, 255, 1, 66838), -- Mailbox (Area: Har'mara - Difficulty: 0) CreateObject1 +(@OGUID+1, 542334, 2694, 15355, 15928, '0', 26622, 0, 595.8211669921875, 227.6996612548828125, 1158.6407470703125, 0, 0, 0, 0, 1, 120, 255, 0, 66838), -- Ancient Visionstone (Area: Har'mara - Difficulty: 0) CreateObject1 +(@OGUID+2, 546728, 2694, 15355, 15928, '0', 26622, 0, 1144.6805419921875, 1057.5086669921875, 1320.9173583984375, 4.8823699951171875, -0.06232452392578125, 0.07067108154296875, -0.64066886901855468, 0.762013554573059082, 120, 255, 1, 66838), -- Legacy Stone of True Calling (Area: Har'mara - Difficulty: 0) CreateObject1 +(@OGUID+3, 554679, 2694, 15355, 15928, '0', 26622, 0, 1098.157958984375, 1033.798583984375, 1339.0015869140625, 6.276787281036376953, -0.00849342346191406, -0.00138568878173828, -0.00321102142333984, 0.999957799911499023, 120, 255, 1, 66838), -- Legacy Stone of True Self (Area: Har'mara - Difficulty: 0) CreateObject1 +(@OGUID+4, 554848, 2694, 15355, 15928, '0', 26622, 0, 1142.3975830078125, 1130.05908203125, 1310.259521484375, 5.667225360870361328, 0.008546352386474609, -0.01894569396972656, -0.30286407470703125, 0.952807128429412841, 120, 255, 1, 66838), -- Legacy Stone of the Goddess Guidance (Area: Har'mara - Difficulty: 0) CreateObject1 +(@OGUID+5, 554966, 2694, 15355, 15928, '0', 26622, 0, 1135.96533203125, 1167.0538330078125, 1310.147216796875, 6.215996265411376953, -0.03531312942504882, -0.16981887817382812, -0.03821086883544921, 0.984100878238677978, 120, 255, 1, 66838); -- Legacy Stone (Area: Har'mara - Difficulty: 0) CreateObject1 +DELETE FROM `gameobject_addon` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+5; + +-- Template Addon +DELETE FROM `creature_template_addon` WHERE `entry` IN (245118); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(245118, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, ''); -- 245118 (Invasive Drifter) + +DELETE FROM `gameobject_template_addon` WHERE `entry` IN (554966 /*Legacy Stone*/, 554848 /*Legacy Stone of the Goddess Guidance*/, 554679 /*Legacy Stone of True Self*/, 546728 /*Legacy Stone of True Calling*/, 542334 /*Ancient Visionstone*/); +INSERT INTO `gameobject_template_addon` (`entry`, `faction`, `flags`, `WorldEffectID`, `AIAnimKitID`) VALUES +(554966, 0, 0x40000, 0, 0), -- Legacy Stone +(554848, 0, 0x40000, 0, 0), -- Legacy Stone of the Goddess Guidance +(554679, 0, 0x40000, 0, 0), -- Legacy Stone of True Self +(546728, 0, 0x40000, 0, 0), -- Legacy Stone of True Calling +(542334, 0, 0x20, 0, 0); -- Ancient Visionstone + +-- Template +DELETE FROM `gameobject_template` WHERE `entry` IN (554966 /*Legacy Stone*/, 554848 /*Legacy Stone of the Goddess Guidance*/, 554679 /*Legacy Stone of True Self*/, 546728 /*Legacy Stone of True Calling*/, 553763 /*Invasive Fungi*/); +INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `size`, `Data0`, `Data1`, `Data2`, `Data3`, `Data4`, `Data5`, `Data6`, `Data7`, `Data8`, `Data9`, `Data10`, `Data11`, `Data12`, `Data13`, `Data14`, `Data15`, `Data16`, `Data17`, `Data18`, `Data19`, `Data20`, `Data21`, `Data22`, `Data23`, `Data24`, `Data25`, `Data26`, `Data27`, `Data28`, `Data29`, `Data30`, `Data31`, `Data32`, `Data33`, `Data34`, `RequiredLevel`, `ContentTuningId`, `VerifiedBuild`) VALUES +(554966, 10, 105910, 'Legacy Stone', 'questinteract', '', '', 0.85000002384185791, 4163, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1242077, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 141651, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Legacy Stone +(554848, 10, 105910, 'Legacy Stone of the Goddess Guidance', 'questinteract', '', '', 0.85000002384185791, 4227, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1241353, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 141586, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Legacy Stone of the Goddess Guidance +(554679, 10, 105910, 'Legacy Stone of True Self', 'questinteract', '', '', 0.85000002384185791, 4389, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1241222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 141566, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Legacy Stone of True Self +(546728, 10, 105910, 'Legacy Stone of True Calling', 'questinteract', '', '', 0.800000011920928955, 4227, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1241295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 141572, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Legacy Stone of True Calling +(553763, 10, 109980, 'Invasive Fungi', 'questinteract', '', '', 0.5, 4101, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838); -- Invasive Fungi + +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x80000 WHERE `entry`=248669; -- Withered Lasher +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1000000 WHERE `entry`=246474; -- Vision Summoned +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1000000 WHERE `entry`=246490; -- Vision of True Calling +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x1000000 WHERE `entry`=246522; -- Vision of True Calling - Event +UPDATE `creature_template` SET `npcflag`=67108865, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=132969; -- Katy Stampwhistle +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x4000800, `unit_flags3`=0x8000 WHERE `entry`=248899; -- Har'mara Rotling +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248819; -- Zur'ashar Kassameh +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40000000 WHERE `entry`=246360; -- Outsider +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40000000 WHERE `entry`=247257; -- Help Outsider - Kill Credit +UPDATE `creature_template` SET `faction`=35, `npcflag`=2, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=242650; -- Ney'leia +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248904; -- Har'mara Elder Root +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40000000 WHERE `entry`=253478; -- Seek Outsider +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000800, `unit_flags3`=0x41000000 WHERE `entry`=256045; -- Skyriding Glyph Tracker +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248818; -- Ku'paal +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=251883; -- Grove Protector Madar +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags`=0x2000300, `unit_flags2`=0x4000800, `unit_flags3`=0xC1000000 WHERE `entry`=237725; -- Firefly +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248789; -- Hannan +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=245114; -- Vicious Saptor +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248900; -- Har'mara Mycomancer +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=249173; -- Har'alnorian Pilgrim +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248817; -- Ney'leia +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248901; -- Har'mara Grove Protector +UPDATE `creature_template` SET `faction`=35, `npcflag`=3, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=245090; -- Hagar +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248911; -- Har'kuaian Pilgrim +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40000000 WHERE `entry`=246284; -- Outsider's Gear +UPDATE `creature_template` SET `faction`=2299, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248905; -- Har'mara Grovewarden +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248910; -- Har'mara Citizen +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=237068; -- Spore-Covered Firefly +UPDATE `creature_template` SET `faction`=35, `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800, `unit_flags3`=0x41000000 WHERE `entry`=246277; -- Withered Plant +UPDATE `creature_template` SET `faction`=190, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x4000000 WHERE `entry`=245116; -- Tranquil Sporeglider +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=245117; -- Pesky Sludger +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags`=0x2000000, `unit_flags2`=0x4000800, `unit_flags3`=0x40000000 WHERE `entry`=246861; -- Faint Song +UPDATE `creature_template` SET `faction`=35, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=248902; -- Har'mara Blossomsinger +UPDATE `creature_template` SET `faction`=190, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=237036; -- Lashroom Bud +UPDATE `creature_template` SET `faction`=2299, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=248895; -- Har'mara Sporeguard +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=245118; -- Invasive Drifter + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248669 AND `DifficultyID`=0); -- 248669 (Withered Lasher) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3008, `StaticFlags1`=0x20000000, `VerifiedBuild`=66838 WHERE (`Entry`=246474 AND `DifficultyID`=0); -- 246474 (Vision Summoned) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3008, `StaticFlags1`=0x20000000, `VerifiedBuild`=66838 WHERE (`Entry`=246490 AND `DifficultyID`=0); -- 246490 (Vision of True Calling) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3008, `StaticFlags1`=0x20000000, `VerifiedBuild`=66838 WHERE (`Entry`=246522 AND `DifficultyID`=0); -- 246522 (Vision of True Calling - Event) - Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248899 AND `DifficultyID`=0); -- 248899 (Har'mara Rotling) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248819 AND `DifficultyID`=0); -- 248819 (Zur'ashar Kassameh) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=246360 AND `DifficultyID`=0); -- 246360 (Outsider) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=247257 AND `DifficultyID`=0); -- 247257 (Help Outsider - Kill Credit) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=242650 AND `DifficultyID`=0); -- 242650 (Ney'leia) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248904 AND `DifficultyID`=0); -- 248904 (Har'mara Elder Root) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=253478 AND `DifficultyID`=0); -- 253478 (Seek Outsider) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3322, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=256045 AND `DifficultyID`=0); -- 256045 (Skyriding Glyph Tracker) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248818 AND `DifficultyID`=0); -- 248818 (Ku'paal) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2145, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=251883 AND `DifficultyID`=0); -- 251883 (Grove Protector Madar) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=237725 AND `DifficultyID`=0); -- 237725 (Firefly) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248789 AND `DifficultyID`=0); -- 248789 (Hannan) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245114 AND `DifficultyID`=0); -- 245114 (Vicious Saptor) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248900 AND `DifficultyID`=0); -- 248900 (Har'mara Mycomancer) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=249173 AND `DifficultyID`=0); -- 249173 (Har'alnorian Pilgrim) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248817 AND `DifficultyID`=0); -- 248817 (Ney'leia) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=2145, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248901 AND `DifficultyID`=0); -- 248901 (Har'mara Grove Protector) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245090 AND `DifficultyID`=0); -- 245090 (Hagar) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248911 AND `DifficultyID`=0); -- 248911 (Har'kuaian Pilgrim) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=246284 AND `DifficultyID`=0); -- 246284 (Outsider's Gear) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248905 AND `DifficultyID`=0); -- 248905 (Har'mara Grovewarden) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248910 AND `DifficultyID`=0); -- 248910 (Har'mara Citizen) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=237068 AND `DifficultyID`=0); -- 237068 (Spore-Covered Firefly) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x30000100, `VerifiedBuild`=66838 WHERE (`Entry`=246277 AND `DifficultyID`=0); -- 246277 (Withered Plant) - Sessile, CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x30000000, `VerifiedBuild`=66838 WHERE (`Entry`=245116 AND `DifficultyID`=0); -- 245116 (Tranquil Sporeglider) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245117 AND `DifficultyID`=0); -- 245117 (Pesky Sludger) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=246861 AND `DifficultyID`=0); -- 246861 (Faint Song) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248902 AND `DifficultyID`=0); -- 248902 (Har'mara Blossomsinger) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=237036 AND `DifficultyID`=0); -- 237036 (Lashroom Bud) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=248895 AND `DifficultyID`=0); -- 248895 (Har'mara Sporeguard) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=863, `StaticFlags1`=0x30000000, `VerifiedBuild`=66838 WHERE (`Entry`=245118 AND `DifficultyID`=0); -- 245118 (Invasive Drifter) - CanSwim, Floating + +-- Model +DELETE FROM `creature_model_info` WHERE `DisplayID` IN (141183, 131738, 131736, 131735, 131740, 131818, 131820, 131737, 131734, 139907); +INSERT INTO `creature_model_info` (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`, `VerifiedBuild`) VALUES +(141183, 0.5, 1, 0, 66838), +(131738, 0.580512702465057373, 1.5, 0, 66838), +(131736, 0.484952837228775024, 1.5, 0, 66838), +(131735, 0.484952837228775024, 1.5, 0, 66838), +(131740, 0.580512702465057373, 1.5, 0, 66838), +(131818, 0.580512702465057373, 1.5, 0, 66838), +(131820, 0.484952837228775024, 1.5, 0, 66838), +(131737, 0.580512702465057373, 1.5, 0, 66838), +(131734, 0.484952837228775024, 1.5, 0, 66838), +(139907, 0.25, 0.5, 0, 66838); + +UPDATE `creature_model_info` SET `VerifiedBuild`=66838 WHERE `DisplayID` IN (118222, 127756, 118215, 126051, 118217, 115237, 137150, 118223, 118216, 27823, 138998, 115199, 137184, 23767, 118221, 140931, 131465, 115198, 127752, 112410, 115238, 114621, 137183, 122804, 127784, 126101, 129964, 125189, 118213); +UPDATE `creature_model_info` SET `BoundingRadius`=0.310000002384185791, `CombatReach`=1, `VerifiedBuild`=66838 WHERE `DisplayID`=118214; +UPDATE `creature_model_info` SET `BoundingRadius`=0.441019505262374877, `VerifiedBuild`=66838 WHERE `DisplayID` IN (114623, 114622); + +-- Phase +DELETE FROM `phase_name` WHERE `ID` = 26622; +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(26622, 'Har''mara - Allied Race start hub'); + +DELETE FROM `phase_area` WHERE `PhaseId` = 26622; +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(15928, 26622, 'Har''mara - Allied Race start hub'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 26622 AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 26622, 0, 0, 0, 16, 0, 0x180000, 0, 0, 0, 'Apply Phase 26622 if player is Race Haranir (A|H)'), +(26, 26622, 0, 0, 0, 47, 0, 90961, 64, 0, 1, 'Apply Phase 26622 if Quest 90961 is not rewarded'); + +-- Creature Equip +DELETE FROM `creature_equip_template` WHERE (`ID`=1 AND `CreatureID` IN (248904,251883,248789,248902,248895,248901,248905)); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES +(248904, 1, 245691, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Har'mara Elder Root +(251883, 1, 251946, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Grove Protector Madar +(248789, 1, 232649, 0, 0, 232650, 0, 0, 0, 0, 0, 66838), -- Hannan +(248902, 1, 245691, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Har'mara Blossomsinger +(248895, 1, 180150, 0, 0, 0, 0, 0, 61320, 0, 0, 66838), -- Har'mara Sporeguard +(248901, 1, 252382, 0, 0, 254184, 0, 0, 254230, 0, 0, 66838), -- Har'mara Grove Protector +(248905, 1, 245691, 0, 0, 0, 0, 0, 0, 0, 0, 66838); -- Har'mara Grovewarden + +-- Path for Vicious Saptor +SET @MOVERGUID := @CGUID+27; +SET @ENTRY := 245114; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 1, 0x0, NULL, 'Vicious Saptor - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 1118.7952, 886.533, 1344.5997, NULL, 4660), +(@PATH, 1, 1120.0695, 875.24133, 1343.8569, NULL, 1622), +(@PATH, 2, 1126.868, 880.0868, 1340.4802, 2.467528, 2506); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 1); From 6b007639050110ddd1567314515b6f05a5766441 Mon Sep 17 00:00:00 2001 From: Naddley Date: Mon, 13 Apr 2026 17:57:31 +0200 Subject: [PATCH 053/175] DB/Harandar: Added some more spawns to Haranir allied race hub --- .../world/master/2026_04_13_01_world.sql | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 sql/updates/world/master/2026_04_13_01_world.sql diff --git a/sql/updates/world/master/2026_04_13_01_world.sql b/sql/updates/world/master/2026_04_13_01_world.sql new file mode 100644 index 0000000000000..5ae535da2d97d --- /dev/null +++ b/sql/updates/world/master/2026_04_13_01_world.sql @@ -0,0 +1,119 @@ +SET @CGUID := 11000720; + +SET @NPCTEXTID := 610010; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+30; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 248902, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1281.767333984375, 926.07293701171875, 1332.53271484375, 5.504429340362548828, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Blossomsinger (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+1, 249173, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1255.6024169921875, 950.55206298828125, 1332.541748046875, 0.163528740406036376, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'alnorian Pilgrim (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+2, 245090, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1268.1285400390625, 943.05035400390625, 1332.669189453125, 4.229924201965332031, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Hagar (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+3, 249173, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1258.6754150390625, 951.638916015625, 1332.541748046875, 3.329707145690917968, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'alnorian Pilgrim (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+4, 248818, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1266.34033203125, 943.09375, 1332.664794921875, 5.050043582916259765, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ku'paal (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+5, 248817, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1277.4757080078125, 927.6805419921875, 1332.53271484375, 0.5752907395362854, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Ney'leia (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+6, 248900, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1281.0416259765625, 923.6961669921875, 1332.53271484375, 2.08398747444152832, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Mycomancer (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+7, 248895, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1283.700927734375, 924.32867431640625, 1332.5875244140625, 2.632289648056030273, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Sporeguard (Area: Har'mara - Difficulty: 0) CreateObject1 (Auras: 18950 - Invisibility and Stealth Detection) +(@CGUID+8, 248789, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1279.1822509765625, 929.1475830078125, 1332.53271484375, 3.702705860137939453, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Hannan (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+9, 249173, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1246.9271240234375, 930.263916015625, 1332.541748046875, 0.334236830472946166, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'alnorian Pilgrim (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+10, 248901, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1254.7413330078125, 928.46356201171875, 1332.53271484375, 0.961435258388519287, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grove Protector (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+11, 248901, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1287.110107421875, 936.30035400390625, 1335.587646484375, 3.384865283966064453, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grove Protector (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+12, 248910, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1247.9757080078125, 933.93927001953125, 1332.541748046875, 1.281082749366760253, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Citizen (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+13, 248910, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1247.9271240234375, 935.81768798828125, 1332.541748046875, 4.418229103088378906, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Citizen (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+14, 248910, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1279.6302490234375, 948.86114501953125, 1332.541748046875, 5.048713207244873046, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Citizen (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+15, 248911, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1280.3507080078125, 946.79168701171875, 1332.541748046875, 1.786588549613952636, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'kuaian Pilgrim (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+16, 248901, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1255.3836669921875, 872.0069580078125, 1327.9986572265625, 4.233323097229003906, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grove Protector (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+17, 248901, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1283.454833984375, 984.02606201171875, 1340.6011962890625, 0.584655463695526123, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grove Protector (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+18, 248902, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1269.09033203125, 965.44097900390625, 1332.53271484375, 0, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Blossomsinger (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+19, 248900, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1271.8836669921875, 985.15277099609375, 1340.6005859375, 4.216250896453857421, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Mycomancer (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+20, 248900, 2694, 15355, 15928, '0', 26622, 0, 0, 0, 1236.8004150390625, 954.94268798828125, 1335.625, 0, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Mycomancer (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+21, 251883, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1246.986083984375, 875.107666015625, 1328.0244140625, 5.050669193267822265, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Grove Protector Madar (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+22, 248902, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1238.829833984375, 954.9757080078125, 1335.636962890625, 3.545102119445800781, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Blossomsinger (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+23, 248895, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1271.55908203125, 983.0382080078125, 1340.59912109375, 1.926427364349365234, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Sporeguard (Area: Har'mara - Difficulty: 0) CreateObject1 (Auras: 18950 - Invisibility and Stealth Detection) +(@CGUID+24, 248895, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1271.4444580078125, 964.90625, 1332.53271484375, 2.899782896041870117, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Sporeguard (Area: Har'mara - Difficulty: 0) CreateObject1 (Auras: 18950 - Invisibility and Stealth Detection) +(@CGUID+25, 248904, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1371.5069580078125, 915.796875, 1346.4896240234375, 1.779142379760742187, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Elder Root (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+26, 248902, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1372.6788330078125, 918.234375, 1346.4559326171875, 4.148610591888427734, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Blossomsinger (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+27, 248905, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1219.4583740234375, 955.654541015625, 1338.2626953125, 4.400951385498046875, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grovewarden (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+28, 248905, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1361.90625, 912.9930419921875, 1346.701416015625, 5.9857635498046875, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grovewarden (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+29, 248905, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1355.3489990234375, 899.1336669921875, 1345.645263671875, 3.179465532302856445, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Har'mara Grovewarden (Area: Har'mara - Difficulty: 0) CreateObject1 +(@CGUID+30, 248905, 2694, 15355, 15928, '0', 26622, 0, 0, 1, 1366.982666015625, 907.60589599609375, 1346.39990234375, 1.4651641845703125, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Har'mara Grovewarden (Area: Har'mara - Difficulty: 0) CreateObject1 +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+30; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- Har'alnorian Pilgrim +(@CGUID+3, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- Har'alnorian Pilgrim +(@CGUID+9, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- Har'alnorian Pilgrim +(@CGUID+23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '18950'), -- Har'mara Sporeguard - 18950 - Invisibility and Stealth Detection +(@CGUID+24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); -- Har'mara Sporeguard - 18950 - Invisibility and Stealth Detection + +-- Template Addon +DELETE FROM `creature_template_addon` WHERE `entry` IN (248789 /*248789 (Hannan)*/, 248895 /*248895 (Har'mara Sporeguard) - Invisibility and Stealth Detection*/, 249173 /*249173 (Har'alnorian Pilgrim)*/); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(248789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''), -- 248789 (Hannan) +(248895, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '18950'), -- 248895 (Har'mara Sporeguard) - Invisibility and Stealth Detection +(249173, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''); -- 249173 (Har'alnorian Pilgrim) + +-- Template +UPDATE `creature_template` SET `faction`=35, `npcflag`=3, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4800 WHERE `entry`=245102; -- Dalnir + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=248789 AND `MenuID`=40070) OR (`CreatureID`=248817 AND `MenuID`=40071) OR (`CreatureID`=245090 AND `MenuID`=39757) OR (`CreatureID`=248818 AND `MenuID`=40069); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(248789, 40070, 66838), -- Hannan +(248817, 40071, 66838), -- Ney'leia +(245090, 39757, 66838), -- Hagar +(248818, 40069, 66838); -- Ku'paal + +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+4; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 294583, 0, 0, 0, 0, 0, 0, 0, 66838), -- 248817 (Ney'leia) +(@NPCTEXTID+1, 1, 0, 0, 0, 0, 0, 0, 0, 292811, 0, 0, 0, 0, 0, 0, 0, 66838), -- 245090 (Hagar) +(@NPCTEXTID+2, 1, 0, 0, 0, 0, 0, 0, 0, 294577, 0, 0, 0, 0, 0, 0, 0, 66838), -- 248818 (Ku'paal) +(@NPCTEXTID+3, 1, 0, 0, 0, 0, 0, 0, 0, 294582, 0, 0, 0, 0, 0, 0, 0, 66838), -- 248789 (Hannan) +(@NPCTEXTID+4, 1, 0, 0, 0, 0, 0, 0, 0, 294393, 0, 0, 0, 0, 0, 0, 0, 66838); -- 245090 (Hagar) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=40071 AND `TextID`=@NPCTEXTID+0) OR (`MenuID`=39757 AND `TextID`=@NPCTEXTID+1) OR (`MenuID`=40069 AND `TextID`=@NPCTEXTID+2) OR (`MenuID`=40070 AND `TextID`=@NPCTEXTID+3) OR (`MenuID`=40033 AND `TextID`=@NPCTEXTID+4); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(40071, @NPCTEXTID+0, 66838), -- 248817 (Ney'leia) +(39757, @NPCTEXTID+1, 66838), -- 245090 (Hagar) +(40069, @NPCTEXTID+2, 66838), -- 248818 (Ku'paal) +(40070, @NPCTEXTID+3, 66838), -- 248789 (Hannan) +(40033, @NPCTEXTID+4, 66838); -- 245090 (Hagar) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=39757 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(39757, 134936, 0, 0, 'What is this place?', 18411, 0, 0, 40033, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); -- OptionBroadcastTextID: 18411 - 39050 - 53647 - 60157 - 66591 - 94147 - 136659 - 208743 + +-- Quest +DELETE FROM `quest_details` WHERE `ID`=90957; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(90957, 1, 0, 0, 0, 0, 0, 0, 0, 66838); -- Initiation Day + +DELETE FROM `creature_queststarter` WHERE (`id`=245090 AND `quest`=90957); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(245090, 90957, 66838); -- Initiation Day offered by Hagar + +-- Path for Harmara Grove Protector +SET @MOVERGUID := @CGUID+11; +SET @ENTRY := 248901; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x0, NULL, 'Har''mara Grove Protector - Cosmetic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 1288.4462, 936.63196, 1335.5876, NULL, 0), +(@PATH, 1, 1291.7274, 937.80206, 1335.5875, NULL, 0), +(@PATH, 2, 1289.1292, 944.98865, 1335.4019, NULL, 0), +(@PATH, 3, 1287.1354, 953.3073, 1338.2437, NULL, 0), +(@PATH, 4, 1279.9271, 959.5764, 1342.2869, NULL, 5371), +(@PATH, 5, 1287.1354, 953.3073, 1338.2437, NULL, 0), +(@PATH, 6, 1289.0817, 945.1198, 1335.4164, NULL, 0), +(@PATH, 7, 1291.7274, 937.80206, 1335.5875, NULL, 0), +(@PATH, 8, 1288.4462, 936.63196, 1335.5876, NULL, 0), +(@PATH, 9, 1279.1841, 934.3333, 1332.5875, NULL, 5407); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `SheathState`, `auras`) VALUES +(@MOVERGUID, @PATH, 1, '18950'); From 37c2b1fa9b86a9d7a4c8d48193680436331e679a Mon Sep 17 00:00:00 2001 From: Naddley Date: Mon, 13 Apr 2026 20:02:44 +0200 Subject: [PATCH 054/175] DB/Harandar: Implement Quest: "Initiation Day" --- .../world/master/2026_04_13_02_world.sql | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 sql/updates/world/master/2026_04_13_02_world.sql diff --git a/sql/updates/world/master/2026_04_13_02_world.sql b/sql/updates/world/master/2026_04_13_02_world.sql new file mode 100644 index 0000000000000..f2af46c5e5c3a --- /dev/null +++ b/sql/updates/world/master/2026_04_13_02_world.sql @@ -0,0 +1,120 @@ +SET @CGUID := 11000751; +SET @NPCTEXTID := 610015; + +SET @ATID := 186; +SET @ATIDSPAWN := 287; +SET @ATCP := 177; + +-- Creature +DELETE FROM `creature` WHERE `guid` = @CGUID+0; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 245102, 2694, 15355, 15928, '0', 26891, 0, 0, 1, 1348.517333984375, 909.0867919921875, 1345.374267578125, 3.514191150665283203, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Dalnir (Area: Har'mara - Difficulty: 0) CreateObject1 + +-- Serverside Areatrigger +DELETE FROM `areatrigger_template` WHERE `Id`=@ATID+0 AND `IsCustom`=1; +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `VerifiedBuild`) VALUES +(@ATID+0, 1, 1, 0); + +DELETE FROM `areatrigger` WHERE `SpawnId` = @ATIDSPAWN+0; +INSERT INTO `areatrigger` (`SpawnId`, `AreaTriggerCreatePropertiesId`, `IsCustom`, `MapId`, `SpawnDifficulties`, `PosX`, `PosY`, `PosZ`, `Orientation`, `PhaseUseFlags`, `PhaseId`, `PhaseGroup`, `ScriptName`, `Comment`, `VerifiedBuild`) VALUES +(@ATIDSPAWN+0, @ATCP+0, 1, 2694, '0', 1348.517333984375, 909.0867919921875, 1345.374267578125, 3.514191150665283203, 0, 26891, 0, 'SmartAreaTriggerAI', 'Harmara - Trigger Conversation 30105 for Dalnir', 0); + +DELETE FROM `areatrigger_create_properties` WHERE `Id`=@ATCP+0 AND `IsCustom`=1; +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(@ATCP+0, 1, @ATID+0, 1, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, '', 0); + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=245102 AND `DifficultyID`=0); -- 245102 (Dalnir) - CanSwim + +-- Conversation +DELETE FROM `conversation_template` WHERE `Id`=30105; +INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES +(30105, 83187, 0, 66838); + +DELETE FROM `conversation_actors` WHERE (`ConversationId`=30105 AND `Idx`=0); +INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `ConversationActorGuid`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES +(30105, 108648, (@CGUID+0), 0, 0, 0, 0, 0, 66838); -- Full: 0x203AF950C0EF5B8000762100005C1623 Creature/0 R3774/S30241 Map: 2694 (Harandar) Entry: 245102 (Dalnir) Low: 6034979 + +DELETE FROM `conversation_line_template` WHERE `Id`=83187; +INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES +(83187, 0, 0, 0, 0, 66838); + +-- Phase +DELETE FROM `phase_name` WHERE `ID` = 26891; +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(26891, 'Cosmetic - See Root Temder Dalnir'); + +DELETE FROM `phase_area` WHERE `PhaseId` = 26891; +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(15928, 26891, 'See Root Temder Dalnir'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 26891 AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 26891, 0, 0, 0, 47, 0, 90957, 2|8|64, 0, 0, 'Apply Phase 26891 if Quest 90957 is complete|in progress|rewarded'); + +-- Quest +DELETE FROM `creature_queststarter` WHERE (`id`=245102 AND `quest`=90958); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(245102, 90958, 66838); -- Roots Above All offered by Dalnir + +DELETE FROM `creature_questender` WHERE (`id`=245102 AND `quest`=90957); +INSERT INTO `creature_questender` (`id`, `quest`, `VerifiedBuild`) VALUES +(245102, 90957, 66838); -- Initiation Day ended by Dalnir + +DELETE FROM `quest_offer_reward` WHERE `ID`=90957; +INSERT INTO `quest_offer_reward` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `RewardText`, `VerifiedBuild`) VALUES +(90957, 1, 0, 0, 0, 0, 0, 0, 0, 'The time has come to take your place among our people, and give up childish adventures. Follow my guidance and Aln\'hara bless this day.\n\nRemember, our traditions show us the way.', 66838); -- Initiation Day + +UPDATE `quest_poi` SET `VerifiedBuild`=66838 WHERE (`QuestID`=90957 AND `BlobIndex`=0 AND `Idx1`=2) OR (`QuestID`=90957 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=90957 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=93057 AND `BlobIndex`=1 AND `Idx1`=1) OR (`QuestID`=93057 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=90719 AND `BlobIndex`=4 AND `Idx1`=5) OR (`QuestID`=90719 AND `BlobIndex`=3 AND `Idx1`=4) OR (`QuestID`=90719 AND `BlobIndex`=2 AND `Idx1`=3) OR (`QuestID`=90719 AND `BlobIndex`=1 AND `Idx1`=2) OR (`QuestID`=90719 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=90719 AND `BlobIndex`=0 AND `Idx1`=0); + +UPDATE `quest_poi_points` SET `VerifiedBuild`=66838 WHERE (`QuestID`=90957 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=8) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=7) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=6) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=5) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=4) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=3) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=2) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=1) OR (`QuestID`=90957 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=90957 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=93057 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=93057 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=90719 AND `Idx1`=5 AND `Idx2`=0) OR (`QuestID`=90719 AND `Idx1`=4 AND `Idx2`=0) OR (`QuestID`=90719 AND `Idx1`=3 AND `Idx2`=0) OR (`QuestID`=90719 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=90719 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=90719 AND `Idx1`=0 AND `Idx2`=0); + +DELETE FROM `quest_details` WHERE `ID`=90958; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(90958, 1, 0, 0, 0, 0, 0, 0, 0, 66838); -- Roots Above All + +DELETE FROM `quest_request_items` WHERE `ID`=90957; +INSERT INTO `quest_request_items` (`ID`, `EmoteOnComplete`, `EmoteOnIncomplete`, `EmoteOnCompleteDelay`, `EmoteOnIncompleteDelay`, `CompletionText`, `VerifiedBuild`) VALUES +(90957, 0, 1, 0, 0, 'Are the pests cleared? We should not have the day spoiled by them.', 66838); -- Initiation Day + +DELETE FROM `quest_template_addon` WHERE `ID` = 90958; +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `BreadcrumbForQuestId`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(90958, 0, 0, 0, 90957, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=245102 AND `MenuID`=39722); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(245102, 39722, 66838); -- Dalnir + +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+1; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 292642, 0, 0, 0, 0, 0, 0, 0, 66838), -- 245102 (Dalnir) +(@NPCTEXTID+1, 1, 0, 0, 0, 0, 0, 0, 0, 294381, 0, 0, 0, 0, 0, 0, 0, 66838); -- 245102 (Dalnir) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=39722 AND `TextID`=@NPCTEXTID+0) OR (`MenuID`=40031 AND `TextID`=@NPCTEXTID+1); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(39722, @NPCTEXTID+0, 66838), -- 245102 (Dalnir) +(40031, @NPCTEXTID+1, 66838); -- 245102 (Dalnir) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=39722 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(39722, 134934, 0, 0, 'Why do we value tradition first?', 0, 0, 0, 40031, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); + +-- Creature Equip +DELETE FROM `creature_equip_template` WHERE (`CreatureID`=245102 AND `ID`=1); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `AppearanceModID1`, `ItemVisual1`, `ItemID2`, `AppearanceModID2`, `ItemVisual2`, `ItemID3`, `AppearanceModID3`, `ItemVisual3`, `VerifiedBuild`) VALUES +(245102, 1, 232649, 0, 0, 0, 0, 0, 0, 0, 0, 66838); -- Dalnir + +-- Model +DELETE FROM `creature_model_info` WHERE `DisplayID`=139977; +INSERT INTO `creature_model_info` (`DisplayID`, `BoundingRadius`, `CombatReach`, `DisplayID_Other_Gender`, `VerifiedBuild`) VALUES +(139977, 0.580512702465057373, 1.5, 0, 66838); + +-- Serverside Areatrigger SAI +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ATID+0 AND `source_type`=12 AND `id`=0 AND `link`=1; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@ATID+0, 12, 0, 1, '', 46, 0, 100, 0, 0, 0, 0, 0, 0, '', 143, 30105, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'On AreaTrigger enter - play Conversation to Invoker'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=28 AND `SourceGroup`=@ATID+0 AND `SourceEntry`=1; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(28, @ATID+0, 1, 0, 0, 47, 0, 90957, 8, 0, '', 0, 0, 0, '', 'Only trigger areatrigger when quest 90957 is in progress'); From f82e03ac96d2268713608a8995718c3c8d8cfaf7 Mon Sep 17 00:00:00 2001 From: Cristian Vintila <127750549+cristianvnt@users.noreply.github.com> Date: Mon, 13 Apr 2026 23:33:14 +0300 Subject: [PATCH 055/175] Scripts/Spells: Fix priest talent Translucent Image (#31763) --- .../world/master/2026_04_13_03_world.sql | 3 +++ src/server/scripts/Spells/spell_priest.cpp | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 sql/updates/world/master/2026_04_13_03_world.sql diff --git a/sql/updates/world/master/2026_04_13_03_world.sql b/sql/updates/world/master/2026_04_13_03_world.sql new file mode 100644 index 0000000000000..b665c01485c31 --- /dev/null +++ b/sql/updates/world/master/2026_04_13_03_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_translucent_image'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(586, 'spell_pri_translucent_image'); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 72b20fcd6c0d8..3aa294453c806 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -246,6 +246,7 @@ enum PriestSpells SPELL_PRIEST_TRANQUIL_LIGHT = 196816, SPELL_PRIEST_THE_PENITENT_AURA = 200347, SPELL_PRIEST_TRAIL_OF_LIGHT_HEAL = 234946, + SPELL_PRIEST_TRANSLUCENT_IMAGE = 373446, SPELL_PRIEST_TRINITY = 214205, SPELL_PRIEST_TRINITY_EFFECT = 290793, SPELL_PRIEST_TWILIGHT_EQUILIBRIUM_HOLY = 390706, @@ -4845,6 +4846,26 @@ class spell_pri_train_of_thought : public AuraScript } }; +// 373446 - Translucent Image +// Triggered by 586 - Fade +class spell_pri_translucent_image : public SpellScript +{ + bool Load() override + { + return !GetCaster()->HasAura(SPELL_PRIEST_TRANSLUCENT_IMAGE); + } + + static void PreventEffect(SpellScript const&, WorldObject*& target) + { + target = nullptr; + } + + void Register() override + { + OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_pri_translucent_image::PreventEffect, EFFECT_3, TARGET_UNIT_CASTER); + } +}; + // 390705 - Twilight Equilibrium class spell_pri_twilight_equilibrium : public AuraScript { @@ -5537,6 +5558,7 @@ void AddSC_priest_spell_scripts() RegisterSpellScript(spell_pri_t3_4p_bonus); RegisterSpellScript(spell_pri_t5_heal_2p_bonus); RegisterSpellScript(spell_pri_t10_heal_2p_bonus); + RegisterSpellScript(spell_pri_translucent_image); RegisterSpellScript(spell_pri_twilight_equilibrium); RegisterSpellScript(spell_pri_twilight_equilibrium_shadow_word_pain); RegisterSpellScript(spell_pri_twist_of_fate); From daae0381f04962a133d004a45dd3e07a0f98f711 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 14 Apr 2026 19:39:32 +0200 Subject: [PATCH 056/175] Core/Misc: Pass TaskContext by reference --- src/common/Utilities/TaskScheduler.cpp | 51 +++++++----- src/common/Utilities/TaskScheduler.h | 54 ++++++++++--- .../AlteracValley/alterac_valley.cpp | 2 +- .../AlteracValley/boss_vanndar.cpp | 10 +-- .../BladesEdge/arena_blades_edge.cpp | 2 +- .../BladesEdge/arena_blades_edge_legion.cpp | 2 +- .../CageOfCarnage/arena_cage_of_carnage.cpp | 2 +- .../DalaranSewers/arena_dalaran_sewers.cpp | 2 +- .../battleground_deephaul_ravine.cpp | 34 ++++---- .../EmpyreanDomain/arena_empyrean_domain.cpp | 2 +- .../EnigmaCrucible/arena_enigma_crucible.cpp | 4 +- .../HookPoint/arena_hook_point.cpp | 2 +- .../battleground_isle_of_conquest.cpp | 2 +- .../IsleOfConquest/isle_of_conquest.cpp | 2 +- .../NagrandArena/arena_nagrand_arena.cpp | 2 +- .../arena_nokhudon_proving_grounds.cpp | 4 +- .../RingOfValor/arena_ring_of_valor.cpp | 2 +- .../battleground_seething_shore.cpp | 14 ++-- .../battleground_silvershard_mines.cpp | 8 +- .../battleground_temple_of_kotmogu.cpp | 6 +- .../TheRobodrome/arena_the_robodrome.cpp | 2 +- .../BlackRookHold/boss_amalgam_of_souls.cpp | 6 +- .../boss_ymiron_the_fallen_king.cpp | 16 ++-- .../NeltharionsLair/boss_rokmora.cpp | 8 +- .../scripts/BrokenIsles/zone_mardum.cpp | 68 ++++++++-------- .../BrokenIsles/zone_orderhall_warrior.cpp | 34 ++++---- .../scripts/Draenor/Auchindoun/auchindoun.cpp | 22 ++--- .../boss_kazzara_the_hellforged.cpp | 4 +- .../DragonIsles/AzureVault/boss_leymor.cpp | 2 +- .../BlackrockDepths/boss_coren_direbrew.cpp | 6 +- .../MoltenCore/boss_garr.cpp | 4 +- .../MoltenCore/boss_golemagg.cpp | 2 +- .../EasternKingdoms/Karazhan/boss_curator.cpp | 2 +- .../Karazhan/boss_midnight.cpp | 14 ++-- .../Karazhan/boss_terestian_illhoof.cpp | 6 +- .../ReturnToKarazhan/boss_mana_devourer.cpp | 4 +- .../ReturnToKarazhan/boss_shade_of_medivh.cpp | 2 +- .../boss_headless_horseman.cpp | 10 +-- .../boss_mograine_and_whitemane.cpp | 8 +- .../SunwellPlateau/boss_muru.cpp | 22 ++--- .../TheStockade/boss_hogger.cpp | 6 +- .../TheStockade/boss_randolph_moloch.cpp | 4 +- .../EasternKingdoms/Uldaman/boss_ironaya.cpp | 2 +- .../EasternKingdoms/zone_abyssal_depths.cpp | 2 +- .../EasternKingdoms/zone_dun_morogh.cpp | 12 +-- .../zone_dun_morogh_area_coldridge_valley.cpp | 6 +- .../zone_redridge_mountains.cpp | 2 +- .../EasternKingdoms/zone_stormwind_city.cpp | 12 +-- .../scripts/ExilesReach/zone_exiles_reach.cpp | 2 +- .../Kalimdor/Firelands/boss_baleroc.cpp | 18 ++--- .../scripts/Kalimdor/Firelands/firelands.cpp | 8 +- .../Kalimdor/RagefireChasm/boss_adarogg.cpp | 14 ++-- .../RagefireChasm/boss_lava_guard_gordoth.cpp | 2 +- .../Karesh/EcoDomeAldani/boss_azhiccar.cpp | 6 +- .../CityOfThreads/boss_orator_krix_vizk.cpp | 2 +- .../boss_ulgrax_the_devourer.cpp | 4 +- .../KhazAlgar/TheStoneVault/boss_edna.cpp | 6 +- .../campaign_visions_of_a_shadowed_sun.cpp | 4 +- .../drustvar_chapter_1_the_final_effigy.cpp | 2 +- .../drustvar_chapter_3_an_airtight_alibi.cpp | 4 +- .../ShrineOfTheStorm/boss_aqusirr.cpp | 14 ++-- .../ShrineOfTheStorm/boss_lord_stormsong.cpp | 6 +- .../boss_tidesage_council.cpp | 2 +- .../WaycrestManor/boss_soulbound_goliath.cpp | 2 +- .../KulTiras/WaycrestManor/waycrest_manor.cpp | 2 +- src/server/scripts/KulTiras/zone_boralus.cpp | 12 +-- .../AzjolNerub/Ahnkahet/boss_amanitar.cpp | 6 +- .../Ahnkahet/boss_herald_volazj.cpp | 80 +++++++++---------- .../Ahnkahet/boss_jedoga_shadowseeker.cpp | 2 +- .../AzjolNerub/AzjolNerub/boss_anubarak.cpp | 6 +- .../RubySanctum/boss_halion.cpp | 4 +- .../TrialOfTheCrusader/boss_lord_jaraxxus.cpp | 2 +- .../trial_of_the_crusader.cpp | 2 +- .../FrozenHalls/PitOfSaron/pit_of_saron.cpp | 2 +- .../Gundrak/boss_drakkari_colossus.cpp | 4 +- .../Northrend/Gundrak/boss_slad_ran.cpp | 14 ++-- .../boss_blood_prince_council.cpp | 4 +- .../boss_lady_deathwhisper.cpp | 48 +++++------ .../IcecrownCitadel/icecrown_citadel.cpp | 38 ++++----- .../Northrend/Naxxramas/boss_grobbulus.cpp | 2 +- .../Northrend/Naxxramas/boss_kelthuzad.cpp | 2 +- .../Northrend/Naxxramas/boss_sapphiron.cpp | 2 +- .../Ulduar/HallsOfStone/boss_sjonnir.cpp | 4 +- .../Northrend/Ulduar/Ulduar/boss_auriaya.cpp | 2 +- .../Ulduar/Ulduar/boss_razorscale.cpp | 28 +++---- .../Northrend/Ulduar/Ulduar/boss_xt002.cpp | 26 +++--- .../UtgardePinnacle/boss_skadi.cpp | 42 +++++----- .../Northrend/VioletHold/boss_cyanigosa.cpp | 10 +-- .../Northrend/VioletHold/boss_erekem.cpp | 18 ++--- .../Northrend/VioletHold/boss_ichoron.cpp | 4 +- .../Northrend/VioletHold/boss_lavanthor.cpp | 8 +- .../Northrend/VioletHold/boss_moragg.cpp | 4 +- .../Northrend/VioletHold/boss_xevozz.cpp | 12 +-- .../Northrend/VioletHold/boss_zuramat.cpp | 6 +- .../VioletHold/instance_violet_hold.cpp | 50 ++++++------ .../Northrend/VioletHold/violet_hold.cpp | 70 ++++++++-------- .../scripts/Northrend/zone_howling_fjord.cpp | 4 +- .../scripts/Northrend/zone_storm_peaks.cpp | 2 +- .../AuchenaiCrypts/boss_exarch_maladaar.cpp | 20 ++--- .../boss_grandmaster_vorpil.cpp | 6 +- .../Outland/BlackTemple/black_temple.cpp | 6 +- .../Outland/BlackTemple/boss_illidan.cpp | 12 +-- .../BlackTemple/boss_illidari_council.cpp | 2 +- .../BlackTemple/boss_reliquary_of_souls.cpp | 2 +- .../BlackTemple/boss_shade_of_akama.cpp | 4 +- .../Outland/BlackTemple/boss_supremus.cpp | 2 +- .../BlackTemple/boss_teron_gorefiend.cpp | 6 +- .../TheSlavePens/boss_ahune.cpp | 4 +- .../TheUnderbog/boss_hungarfen.cpp | 12 +-- .../TheUnderbog/boss_the_black_stalker.cpp | 2 +- .../BloodFurnace/boss_broggok.cpp | 10 +-- .../MagtheridonsLair/boss_magtheridon.cpp | 2 +- .../Mechanar/boss_nethermancer_sepethrea.cpp | 2 +- src/server/scripts/Outland/zone_nagrand.cpp | 10 +-- .../scripts/Pandaria/zone_the_jade_forest.cpp | 2 +- .../Pandaria/zone_the_wandering_isle.cpp | 58 +++++++------- .../boss_anduin_wrynn.cpp | 48 +++++------ src/server/scripts/Spells/spell_dh.cpp | 2 +- src/server/scripts/Spells/spell_druid.cpp | 2 +- src/server/scripts/Spells/spell_evoker.cpp | 2 +- src/server/scripts/Spells/spell_hunter.cpp | 2 +- src/server/scripts/Spells/spell_mage.cpp | 2 +- src/server/scripts/Spells/spell_priest.cpp | 4 +- .../scripts/World/areatrigger_scripts.cpp | 2 +- src/server/scripts/World/npc_guard.cpp | 10 +-- src/server/scripts/World/npcs_special.cpp | 14 ++-- .../AtalDazar/boss_priestess_alun_za.cpp | 4 +- .../KingsRest/boss_golden_serpent.cpp | 2 +- .../scripts/Zandalar/KingsRest/kings_rest.cpp | 10 +-- 129 files changed, 711 insertions(+), 668 deletions(-) diff --git a/src/common/Utilities/TaskScheduler.cpp b/src/common/Utilities/TaskScheduler.cpp index 0d3e4147ecad0..7b0ae111a1a26 100644 --- a/src/common/Utilities/TaskScheduler.cpp +++ b/src/common/Utilities/TaskScheduler.cpp @@ -262,28 +262,9 @@ bool TaskScheduler::TaskQueue::IsEmpty() const return container.empty(); } -TaskScheduler::TaskContainer& TaskContext::GetTaskContainer() noexcept +TaskContext::TaskContext(TaskScheduler::TaskQueue::Container::node_type&& task, std::weak_ptr&& owner) noexcept + : _task(std::move(task)), _owner(std::move(owner)) { - static_assert(std::variant_size_v == 2); - switch (_task.index()) - { - case 0: return std::get<0>(_task).value(); - case 1: return std::get<1>(_task); - default: - ASSERT(false); - } -} - -TaskScheduler::Task* TaskContext::GetTask() const noexcept -{ - static_assert(std::variant_size_v == 2); - switch (_task.index()) - { - case 0: return std::get<0>(_task).value().get(); - case 1: return std::get<1>(_task).get(); - default: - ASSERT(false); - } } TaskContext::TaskContext(TaskContext&& right) noexcept @@ -306,6 +287,8 @@ TaskContext& TaskContext::operator=(TaskContext&& right) noexcept return *this; } +TaskContext::~TaskContext() = default; + bool TaskContext::IsExpired() const { return _owner.expired(); @@ -440,5 +423,29 @@ TaskContext& TaskContext::RescheduleGroup(TaskScheduler::group_t group, TaskSche void TaskContext::Invoke() { - GetTask()->_task(std::move(*this)); + GetTask()->_task(*this); +} + +TaskScheduler::TaskContainer& TaskContext::GetTaskContainer() noexcept +{ + static_assert(std::variant_size_v == 2); + switch (_task.index()) + { + case 0: return std::get<0>(_task).value(); + case 1: return std::get<1>(_task); + default: + ASSERT(false); + } +} + +TaskScheduler::Task* TaskContext::GetTask() const noexcept +{ + static_assert(std::variant_size_v == 2); + switch (_task.index()) + { + case 0: return std::get<0>(_task).value().get(); + case 1: return std::get<1>(_task).get(); + default: + ASSERT(false); + } } diff --git a/src/common/Utilities/TaskScheduler.h b/src/common/Utilities/TaskScheduler.h index 36876453614ff..6be531a7a14e9 100644 --- a/src/common/Utilities/TaskScheduler.h +++ b/src/common/Utilities/TaskScheduler.h @@ -21,6 +21,7 @@ #include "Duration.h" #include "Optional.h" #include "Random.h" +#include "Types.h" #include #include #include @@ -48,6 +49,8 @@ class TC_COMMON_API TaskScheduler { friend class TaskContext; + class TaskHandler; + // Time definitions (use steady clock) typedef std::chrono::steady_clock clock_t; typedef clock_t::time_point timepoint_t; @@ -57,13 +60,47 @@ class TC_COMMON_API TaskScheduler typedef uint32 group_t; // Task repeated type typedef uint32 repeated_t; - // Task handle type - typedef std::function task_handler_t; + // Task handler type + typedef TaskHandler task_handler_t; // Predicate type typedef std::function predicate_t; // Success handle type typedef std::function success_t; + // Task handler function wrapper designed to support both TaskContext& and TaskContext arguments + class TaskHandler + { + public: + template requires (!std::same_as) + TaskHandler(InnerHandler&& handler) : _handler(TaskHandler::Wrap(std::forward(handler))) { } + + void operator()(TaskContext& context) const { _handler(context); } + + private: + template + static decltype(auto) Wrap(InnerHandler&& handler) + { + if constexpr (std::invocable) + { + return std::forward(handler); + } + else if constexpr (std::invocable) + { + // support legacy signature + return [inner = std::forward(handler)](TaskContext& context) + { + inner(static_cast(context)); + }; + } + else + { + static_assert(Trinity::dependant_false_v, "Unsupported task argument type, must be TaskContext& or TaskContext const&"); + } + } + + std::function _handler; + }; + class Task { friend class TaskContext; @@ -340,18 +377,13 @@ class TC_COMMON_API TaskContext /// Owner std::weak_ptr _owner; - TaskScheduler::TaskContainer& GetTaskContainer() noexcept; - - TaskScheduler::Task* GetTask() const noexcept; - public: // Empty constructor TaskContext() noexcept : _task(), _owner() { } // Construct from task and owner - explicit TaskContext(TaskScheduler::TaskQueue::Container::node_type&& task, std::weak_ptr&& owner) noexcept - : _task(std::move(task)), _owner(std::move(owner)) { } + explicit TaskContext(TaskScheduler::TaskQueue::Container::node_type&& task, std::weak_ptr&& owner) noexcept; // Copy construct TaskContext(TaskContext const& right) = delete; @@ -365,7 +397,7 @@ class TC_COMMON_API TaskContext // Move assign TaskContext& operator=(TaskContext&& right) noexcept; - ~TaskContext() = default; + ~TaskContext(); /// Returns true if the owner was deallocated and this context has expired. bool IsExpired() const; @@ -497,6 +529,10 @@ class TC_COMMON_API TaskContext private: /// Invokes the associated hook of the task. void Invoke(); + + TaskScheduler::TaskContainer& GetTaskContainer() noexcept; + + TaskScheduler::Task* GetTask() const noexcept; }; #endif /// TRINITYCORE_TASK_SCHEDULER_H diff --git a/src/server/scripts/Battlegrounds/AlteracValley/alterac_valley.cpp b/src/server/scripts/Battlegrounds/AlteracValley/alterac_valley.cpp index 94af6a25a5310..3c5a6508bc696 100644 --- a/src/server/scripts/Battlegrounds/AlteracValley/alterac_valley.cpp +++ b/src/server/scripts/Battlegrounds/AlteracValley/alterac_valley.cpp @@ -162,7 +162,7 @@ struct go_av_contested_object : public go_av_capturable_object void Reset() override { go_av_capturable_object::Reset(); - _scheduler.Schedule(4min, [&](TaskContext) + _scheduler.Schedule(4min, [&](TaskContext const&) { if (ZoneScript* zonescript = me->GetZoneScript()) zonescript->DoAction(ACTION_AV_CAPTURE_CAPTURABLE_OBJECT, me, me); diff --git a/src/server/scripts/Battlegrounds/AlteracValley/boss_vanndar.cpp b/src/server/scripts/Battlegrounds/AlteracValley/boss_vanndar.cpp index 83c1fcc813ec6..cad5a061eee8a 100644 --- a/src/server/scripts/Battlegrounds/AlteracValley/boss_vanndar.cpp +++ b/src/server/scripts/Battlegrounds/AlteracValley/boss_vanndar.cpp @@ -47,27 +47,27 @@ struct boss_vanndar : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { _scheduler - .Schedule(3s, [this](TaskContext task) + .Schedule(3s, [this](TaskContext& task) { DoCastVictim(SPELL_AVATAR); task.Repeat(15s, 20s); }) - .Schedule(4s, [this](TaskContext task) + .Schedule(4s, [this](TaskContext& task) { DoCastVictim(SPELL_THUNDERCLAP); task.Repeat(5s, 15s); }) - .Schedule(6s, [this](TaskContext task) + .Schedule(6s, [this](TaskContext& task) { DoCastVictim(SPELL_STORMBOLT); task.Repeat(10s, 25s); }) - .Schedule(20s, 30s, [this](TaskContext task) + .Schedule(20s, 30s, [this](TaskContext& task) { Talk(YELL_RANDOM); task.Repeat(20s, 30s); }) - .Schedule(5s, [this](TaskContext task) + .Schedule(5s, [this](TaskContext& task) { if (me->GetDistance2d(me->GetHomePosition().GetPositionX(), me->GetHomePosition().GetPositionY()) > 50) { diff --git a/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge.cpp b/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge.cpp index f0ac3bfc2129c..d2becc3323a95 100644 --- a/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge.cpp +++ b/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge.cpp @@ -60,7 +60,7 @@ struct arena_blades_edge : ArenaScript } } - _scheduler.Schedule(1min, [&](TaskContext) + _scheduler.Schedule(1min, [&](TaskContext const&) { CreateObject(BG_BE_OBJECT_TYPE_BUFF_1, 6249.042f, 275.3239f, 11.22033f, -1.448624f, 0, 0, 0.6626201f, -0.7489557f); CreateObject(BG_BE_OBJECT_TYPE_BUFF_2, 6228.26f, 249.566f, 11.21812f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f); diff --git a/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge_legion.cpp b/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge_legion.cpp index a8c973aef46e1..5220986661d43 100644 --- a/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge_legion.cpp +++ b/src/server/scripts/Battlegrounds/BladesEdge/arena_blades_edge_legion.cpp @@ -109,7 +109,7 @@ struct arena_blades_edge_legion : ArenaScript if (Creature const* maulgar = battlegroundMap->GetCreature(_maulgarGUID)) maulgar->AI()->DoAction(BladesEdge::Actions::ArenaStart); - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { if (_scheduleBored) context.Repeat(1min, 2min); diff --git a/src/server/scripts/Battlegrounds/CageOfCarnage/arena_cage_of_carnage.cpp b/src/server/scripts/Battlegrounds/CageOfCarnage/arena_cage_of_carnage.cpp index 8ef5d8903a038..65abff7f120a9 100644 --- a/src/server/scripts/Battlegrounds/CageOfCarnage/arena_cage_of_carnage.cpp +++ b/src/server/scripts/Battlegrounds/CageOfCarnage/arena_cage_of_carnage.cpp @@ -101,7 +101,7 @@ struct arena_cage_of_carnage : ArenaScript if (Creature const* creature = battlegroundMap->GetCreature(_naminzeGUID)) creature->AI()->Talk(CageOfCarnage::Texts::Naminze::Start); - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { battlegroundMap->DoOnPlayers([&](Player* player) { diff --git a/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp b/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp index 175bedee0c088..6f4c30545bb13 100644 --- a/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp +++ b/src/server/scripts/Battlegrounds/DalaranSewers/arena_dalaran_sewers.cpp @@ -162,7 +162,7 @@ struct arena_dalaran_sewers : ArenaScript if (Player* player = ObjectAccessor::FindPlayer(playerGuid)) player->RemoveAurasDueToSpell(DalaranSewers::Spells::WarlockDemonicCircle); - _scheduler.Schedule(6s, [&](TaskContext) + _scheduler.Schedule(6s, [&](TaskContext const&) { for (ObjectGuid const& guid : _waterSpoutEntranceGUIDs) { diff --git a/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp b/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp index 2a037781ab042..27bff3dfc673d 100644 --- a/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp +++ b/src/server/scripts/Battlegrounds/DeephaulRavine/battleground_deephaul_ravine.cpp @@ -256,14 +256,14 @@ struct battleground_deephaul_ravine : BattlegroundScript void OnStart() override { BattlegroundScript::OnStart(); - _scheduler.Schedule(15s, [&](TaskContext) + _scheduler.Schedule(15s, [&](TaskContext const&) { UpdateWorldState(DeephaulRavine::WorldStates::FlagEnabled, 3); }); UpdateWorldState(DeephaulRavine::WorldStates::BattleBegun, 1); - _scheduler.Schedule(2s, [&](TaskContext context) + _scheduler.Schedule(2s, [&](TaskContext& context) { uint32 const underAllianceControl = std::ranges::count_if(DeephaulRavine::WorldStates::AllianceControlWorldStates, [&](int32 worldState) { @@ -289,7 +289,7 @@ struct battleground_deephaul_ravine : BattlegroundScript context.Repeat(); }); - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { RespawnEarthenMineCarts(); context.Repeat(); @@ -311,12 +311,12 @@ struct battleground_deephaul_ravine : BattlegroundScript { BattlegroundScript::OnPrepareStage3(); - _scheduler.Schedule(2s, [&](TaskContext) + _scheduler.Schedule(2s, [&](TaskContext const&) { SpawnMineCarts(); }); - _scheduler.Schedule(15s, [&](TaskContext) + _scheduler.Schedule(15s, [&](TaskContext const&) { DoForLeaders([&](Creature const* creature) { @@ -412,7 +412,7 @@ struct battleground_deephaul_ravine : BattlegroundScript UpdateWorldState(DeephaulRavine::WorldStates::HordeFlagState, DeephaulRavine::WorldStates::Values::FlagUnclaimed); UpdateWorldState(DeephaulRavine::WorldStates::AllianceFlagState, DeephaulRavine::WorldStates::Values::FlagUnclaimed); - _scheduler.Schedule(Milliseconds(flagInBase->GetGOInfo()->newflag.RespawnTime) - 5s, [&](TaskContext) + _scheduler.Schedule(Milliseconds(flagInBase->GetGOInfo()->newflag.RespawnTime) - 5s, [&](TaskContext const&) { DoForLeaders([&](Creature const* creature) { @@ -475,7 +475,7 @@ struct battleground_deephaul_ravine : BattlegroundScript AreaTriggerCreatePropertiesId const createPropertiesId = trigger->GetCreateProperties()->Id; Position pos = trigger->GetPosition(); - _scheduler.Schedule(90s, [&, createPropertiesId, pos](TaskContext) + _scheduler.Schedule(90s, [&, createPropertiesId, pos](TaskContext const&) { if (Creature* genericBunny = battlegroundMap->GetCreature(_genericBunnyGUID)) AreaTrigger::CreateAreaTrigger(createPropertiesId, pos, -1, genericBunny, nullptr); @@ -629,7 +629,7 @@ struct battleground_deephaul_ravine : BattlegroundScript CheckWinner(); - _scheduler.Schedule(2s, [&](TaskContext) + _scheduler.Schedule(2s, [&](TaskContext const&) { SpawnMineCarts(); }); @@ -894,7 +894,7 @@ class npc_bg_deephaul_ravine_earthen_mine_cart_horde final : public ScriptedAI void JustAppeared() override { me->ToTempSummon()->GetSummoner()->ToPlayer()->EnterVehicle(me); - _scheduler.Schedule(1500ms, [&](TaskContext) + _scheduler.Schedule(1500ms, [&](TaskContext const&) { // teleport packet sends same x & y for some reason // teleport and movement start at same time @@ -913,7 +913,7 @@ class npc_bg_deephaul_ravine_earthen_mine_cart_horde final : public ScriptedAI switch (pathId) { case Path1: - _scheduler.Schedule(500ms, [&](TaskContext) + _scheduler.Schedule(500ms, [&](TaskContext const&) { if (Vehicle* vehicle = me->GetVehicleKit()) vehicle->RemoveAllPassengers(); @@ -921,7 +921,7 @@ class npc_bg_deephaul_ravine_earthen_mine_cart_horde final : public ScriptedAI }); break; case Path2: - _scheduler.Schedule(1s, [&](TaskContext) + _scheduler.Schedule(1s, [&](TaskContext const&) { me->GetMotionMaster()->MovePath(Path3, false); }); @@ -952,7 +952,7 @@ class npc_bg_deephaul_ravine_earthen_mine_cart_alliance final : public ScriptedA void JustAppeared() override { me->ToTempSummon()->GetSummoner()->ToPlayer()->EnterVehicle(me); - _scheduler.Schedule(1500ms, [&](TaskContext) + _scheduler.Schedule(1500ms, [&](TaskContext const&) { // teleport packet sends same x & y for some reason // teleport and movement start at same time @@ -971,7 +971,7 @@ class npc_bg_deephaul_ravine_earthen_mine_cart_alliance final : public ScriptedA switch (pathId) { case Path1: - _scheduler.Schedule(500ms, [&](TaskContext) + _scheduler.Schedule(500ms, [&](TaskContext const&) { if (Vehicle* vehicle = me->GetVehicleKit()) { @@ -988,7 +988,7 @@ class npc_bg_deephaul_ravine_earthen_mine_cart_alliance final : public ScriptedA }); break; case Path2: - _scheduler.Schedule(1s, [&](TaskContext) + _scheduler.Schedule(1s, [&](TaskContext const&) { me->DespawnOrUnsummon(); }); @@ -1052,20 +1052,20 @@ class npc_bg_deephaul_ravine_commander : public ScriptedAI switch (pathId) { case Path1: - _scheduler.Schedule(10s, [this](TaskContext) + _scheduler.Schedule(10s, [this](TaskContext const&) { me->GetMotionMaster()->MovePath(Path2, false); Talk(DeephaulRavine::CreatureTexts::Intro2); }); break; case Path2: - _scheduler.Schedule(3s, [this](TaskContext) + _scheduler.Schedule(3s, [this](TaskContext const&) { me->GetMotionMaster()->MovePath(Path3, false); }); break; case Path3: - _scheduler.Schedule(5s, [this](TaskContext) + _scheduler.Schedule(5s, [this](TaskContext const&) { me->GetMotionMaster()->MovePath(Path4, false); }); diff --git a/src/server/scripts/Battlegrounds/EmpyreanDomain/arena_empyrean_domain.cpp b/src/server/scripts/Battlegrounds/EmpyreanDomain/arena_empyrean_domain.cpp index 6dc59224b74c6..8b714a5df56b3 100644 --- a/src/server/scripts/Battlegrounds/EmpyreanDomain/arena_empyrean_domain.cpp +++ b/src/server/scripts/Battlegrounds/EmpyreanDomain/arena_empyrean_domain.cpp @@ -138,7 +138,7 @@ struct arena_empyrean_domain : ArenaScript if (Creature* stalker = battlegroundMap->GetCreature(guid)) stalker->CastSpell(nullptr, EmpyreanDomain::Spells::WindDrift); - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { battlegroundMap->DoOnPlayers([&](Player* player) { diff --git a/src/server/scripts/Battlegrounds/EnigmaCrucible/arena_enigma_crucible.cpp b/src/server/scripts/Battlegrounds/EnigmaCrucible/arena_enigma_crucible.cpp index f8765e397696f..26f43777a30c9 100644 --- a/src/server/scripts/Battlegrounds/EnigmaCrucible/arena_enigma_crucible.cpp +++ b/src/server/scripts/Battlegrounds/EnigmaCrucible/arena_enigma_crucible.cpp @@ -104,7 +104,7 @@ struct arena_enigma_crucible : ArenaScript if (Creature const* creature = battlegroundMap->GetCreature(_zoSorgGUID)) creature->AI()->Talk(EnigmaCrucible::Texts::ZoSorg::Start); - _scheduler.Schedule(10s, [&](TaskContext context) + _scheduler.Schedule(10s, [&](TaskContext& context) { battlegroundMap->DoOnPlayers([&](Player* player) { @@ -143,7 +143,7 @@ struct arena_enigma_crucible : ArenaScript if (Creature const* creature = battlegroundMap->GetCreature(_zoSorgGUID)) creature->AI()->Talk(EnigmaCrucible::Texts::ZoSorg::Prepare); - _scheduler.Schedule(10s, [&](TaskContext) + _scheduler.Schedule(10s, [&](TaskContext const&) { if (Creature const* creature = battlegroundMap->GetCreature(_zoSorgGUID)) creature->AI()->Talk(EnigmaCrucible::Texts::ZoSorg::Prepare2); diff --git a/src/server/scripts/Battlegrounds/HookPoint/arena_hook_point.cpp b/src/server/scripts/Battlegrounds/HookPoint/arena_hook_point.cpp index bc30f3eb8b6d4..abbb82a3d4998 100644 --- a/src/server/scripts/Battlegrounds/HookPoint/arena_hook_point.cpp +++ b/src/server/scripts/Battlegrounds/HookPoint/arena_hook_point.cpp @@ -155,7 +155,7 @@ struct arena_hook_point : ArenaScript void OnPrepareStage1() override { - _scheduler.Schedule(20s, [&](TaskContext) + _scheduler.Schedule(20s, [&](TaskContext const&) { if (GameObject* slideDoor = battlegroundMap->GetGameObject(_slideDoorGUID)) slideDoor->UseDoorOrButton(); diff --git a/src/server/scripts/Battlegrounds/IsleOfConquest/battleground_isle_of_conquest.cpp b/src/server/scripts/Battlegrounds/IsleOfConquest/battleground_isle_of_conquest.cpp index fb48e23912952..477e7d42d1ae6 100644 --- a/src/server/scripts/Battlegrounds/IsleOfConquest/battleground_isle_of_conquest.cpp +++ b/src/server/scripts/Battlegrounds/IsleOfConquest/battleground_isle_of_conquest.cpp @@ -367,7 +367,7 @@ struct battleground_isle_of_conquest : BattlegroundScript gameobject->SetGoState(GO_STATE_ACTIVE); }); - _scheduler.Schedule(20s, [&](TaskContext) + _scheduler.Schedule(20s, [&](TaskContext const&) { for (ObjectGuid const& guid : _wallGUIDs) if (GameObject* gameobject = battlegroundMap->GetGameObject(guid)) diff --git a/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp b/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp index f2b8030a4e725..36e8f5b341b49 100644 --- a/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp +++ b/src/server/scripts/Battlegrounds/IsleOfConquest/isle_of_conquest.cpp @@ -165,7 +165,7 @@ struct go_ioc_contested_object : public go_ioc_capturable_object void Reset() override { go_ioc_capturable_object::Reset(); - _scheduler.Schedule(1min, [&](TaskContext) + _scheduler.Schedule(1min, [&](TaskContext const&) { if (ZoneScript* zonescript = me->GetZoneScript()) zonescript->DoAction(ACTION_IOC_CAPTURE_CAPTURABLE_OBJECT, me, me); diff --git a/src/server/scripts/Battlegrounds/NagrandArena/arena_nagrand_arena.cpp b/src/server/scripts/Battlegrounds/NagrandArena/arena_nagrand_arena.cpp index e3f83c6acb219..ca88bc93d3df6 100644 --- a/src/server/scripts/Battlegrounds/NagrandArena/arena_nagrand_arena.cpp +++ b/src/server/scripts/Battlegrounds/NagrandArena/arena_nagrand_arena.cpp @@ -60,7 +60,7 @@ struct arena_nagrand : ArenaScript } } - _scheduler.Schedule(1min, [&](TaskContext) + _scheduler.Schedule(1min, [&](TaskContext const&) { CreateObject(BG_NA_OBJECT_TYPE_BUFF_1, 4009.189941f, 2895.250000f, 13.052700f, -1.448624f, 0, 0, 0.6626201f, -0.7489557f); CreateObject(BG_NA_OBJECT_TYPE_BUFF_2, 4103.330078f, 2946.350098f, 13.051300f, -0.06981307f, 0, 0, 0.03489945f, -0.9993908f); diff --git a/src/server/scripts/Battlegrounds/NokhudonProvingGrounds/arena_nokhudon_proving_grounds.cpp b/src/server/scripts/Battlegrounds/NokhudonProvingGrounds/arena_nokhudon_proving_grounds.cpp index e681304f836ed..10d3dacea18ca 100644 --- a/src/server/scripts/Battlegrounds/NokhudonProvingGrounds/arena_nokhudon_proving_grounds.cpp +++ b/src/server/scripts/Battlegrounds/NokhudonProvingGrounds/arena_nokhudon_proving_grounds.cpp @@ -227,14 +227,14 @@ struct npc_nokhudon_proving_grounds_nokhud_combatant : ScriptedAI me->HandleEmoteCommand(EMOTE_ONESHOT_JUMPSTART); me->SetStandState(UNIT_STAND_STATE_STAND); - _scheduler.Schedule(2s, [&](TaskContext context) + _scheduler.Schedule(2s, [&](TaskContext& context) { me->HandleEmoteCommand(EMOTE_ONESHOT_CHEER); if (context.GetRepeatCounter() < 2) context.Repeat(1s); else { - context.Schedule(1s, [&](TaskContext) + context.Schedule(1s, [&](TaskContext const&) { me->SetStandState(UNIT_STAND_STATE_SIT); }); diff --git a/src/server/scripts/Battlegrounds/RingOfValor/arena_ring_of_valor.cpp b/src/server/scripts/Battlegrounds/RingOfValor/arena_ring_of_valor.cpp index 3c2dbdc473a86..43165296b0dd2 100644 --- a/src/server/scripts/Battlegrounds/RingOfValor/arena_ring_of_valor.cpp +++ b/src/server/scripts/Battlegrounds/RingOfValor/arena_ring_of_valor.cpp @@ -153,7 +153,7 @@ struct arena_ring_of_valor : ArenaScript _pillarCollision = true; TogglePillarCollision(); - _scheduler.Schedule(1min, [&](TaskContext) + _scheduler.Schedule(1min, [&](TaskContext const&) { CreateObject(BG_RV_OBJECT_TYPE_BUFF_1, 735.551819f, -284.794678f, 28.276682f, 0.034906f, 0.0f, 0.0f, 0.0f, 0.0f); CreateObject(BG_RV_OBJECT_TYPE_BUFF_2, 791.224487f, -284.794464f, 28.276682f, 2.600535f, 0.0f, 0.0f, 0.0f, 0.0f); diff --git a/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp b/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp index 7e3f5413b9ca1..01750456ef26e 100644 --- a/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp +++ b/src/server/scripts/Battlegrounds/SeethingShore/battleground_seething_shore.cpp @@ -210,7 +210,7 @@ struct battleground_seething_shore final : BattlegroundScript void OnPrepareStage3() override { - _scheduler.Schedule(2s, [this](TaskContext context) + _scheduler.Schedule(2s, [this](TaskContext& context) { if (_activeAzeriteNodes.size() < MAX_AZERITE_SPAWNS) { @@ -233,7 +233,7 @@ struct battleground_seething_shore final : BattlegroundScript } } - _scheduler.Schedule(30s, 2min, [this](TaskContext context) + _scheduler.Schedule(30s, 2min, [this](TaskContext& context) { SpawnBuffs(); context.Repeat(); @@ -774,7 +774,7 @@ struct npc_bg_seething_shore_air_supply_ground_dummy : ScriptedAI { if (actionId == SeethingShore::Actions::SpawnBuff) { - _scheduler.Schedule(5s, [&](TaskContext) + _scheduler.Schedule(5s, [&](TaskContext const&) { SpawnAirSupplyParachute(); }); @@ -866,13 +866,13 @@ struct npc_bg_seething_shore_commander : ScriptedAI { case SeethingShore::Actions::CommanderText1: Talk(SeethingShore::CommanderTexts::Intro1); - _scheduler.Schedule(30s, [this](TaskContext context) + _scheduler.Schedule(30s, [this](TaskContext& context) { Talk(SeethingShore::CommanderTexts::Intro2); - context.Schedule(15s, [this](TaskContext context2) + context.Schedule(15s, [this](TaskContext& context2) { Talk(SeethingShore::CommanderTexts::Intro3); - context2.Schedule(12s, [this](TaskContext) + context2.Schedule(12s, [this](TaskContext const&) { Talk(SeethingShore::CommanderTexts::Intro4); }); @@ -902,7 +902,7 @@ struct npc_bg_seething_shore_vignette_dummy : ScriptedAI void JustAppeared() override { - _scheduler.Schedule(38s, [this](TaskContext) + _scheduler.Schedule(38s, [this](TaskContext const&) { if (Creature* fissure = me->FindNearestCreature(SeethingShore::Creatures::AzeriteFissure, 5.0f)) me->SendPlaySpellVisual(fissure, SeethingShore::SpellVisuals::AzeriteBirth, 0, 0, 0.0f); diff --git a/src/server/scripts/Battlegrounds/SilvershardMines/battleground_silvershard_mines.cpp b/src/server/scripts/Battlegrounds/SilvershardMines/battleground_silvershard_mines.cpp index e23de84bab08e..10bb90d08a1e9 100644 --- a/src/server/scripts/Battlegrounds/SilvershardMines/battleground_silvershard_mines.cpp +++ b/src/server/scripts/Battlegrounds/SilvershardMines/battleground_silvershard_mines.cpp @@ -245,7 +245,7 @@ struct battleground_silvershard_mines final : BattlegroundScript void OnInit() override { // setup spawning of cosmetic carts - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { for (auto const& [pathId, spawnPosition] : SilvershardMines::SpawnPositions::CosmeticCartsSpawnPositions) { @@ -288,7 +288,7 @@ struct battleground_silvershard_mines final : BattlegroundScript } SpawnEasternMineCart(); - _scheduler.Schedule(2s, [&](TaskContext context) + _scheduler.Schedule(2s, [&](TaskContext& context) { uint32 const underAllianceControl = std::ranges::count_if(SilvershardMines::WorldStates::AllianceControlWorldStates, [&](int32 worldState) { @@ -645,7 +645,7 @@ class npc_bg_silvershard_mines_mine_cart final : public ScriptedAI DoCastSelf(SilvershardMines::Spells::DefendingCartAura, true); // give a bit of grace time for The Long Rider achievement (guessed behaviour) - _scheduler.Schedule(2s, [&](TaskContext context) + _scheduler.Schedule(2s, [&](TaskContext& context) { _theLongRidersSpawnTime = GameTime::GetGameTime(); @@ -657,7 +657,7 @@ class npc_bg_silvershard_mines_mine_cart final : public ScriptedAI }); // each second, check if eligible players are still inside - context.Schedule(1s, [&](TaskContext context2) + context.Schedule(1s, [&](TaskContext& context2) { if (GameObject const* controlZone = GetControlZone()) { diff --git a/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp b/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp index 46675b8d666b0..c9d39e1a06397 100644 --- a/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp +++ b/src/server/scripts/Battlegrounds/TempleOfKotmogu/battleground_temple_of_kotmogu.cpp @@ -239,7 +239,7 @@ struct battleground_temple_of_kotmogu final : BattlegroundScript void OnPrepareStage3() override { - _scheduler.Schedule(24s, [&](TaskContext) + _scheduler.Schedule(24s, [&](TaskContext const&) { for (ObjectGuid const& door : _walls) if (GameObject* gameObject = battlegroundMap->GetGameObject(door)) @@ -253,7 +253,7 @@ struct battleground_temple_of_kotmogu final : BattlegroundScript if (GameObject* gameObject = battlegroundMap->GetGameObject(door)) gameObject->UseDoorOrButton(); - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { for (ObjectGuid const& guid : _orbHolders) { @@ -393,7 +393,7 @@ struct battleground_temple_of_kotmogu final : BattlegroundScript player->CastSpell(player, TempleOfKotmogu::Spells::Restoration, true); trigger->Remove(); - _scheduler.Schedule(90s, [&, index](TaskContext) + _scheduler.Schedule(90s, [&, index](TaskContext const&) { SpawnHealingBuff(index); }); diff --git a/src/server/scripts/Battlegrounds/TheRobodrome/arena_the_robodrome.cpp b/src/server/scripts/Battlegrounds/TheRobodrome/arena_the_robodrome.cpp index b7e00b739695e..a516a29397153 100644 --- a/src/server/scripts/Battlegrounds/TheRobodrome/arena_the_robodrome.cpp +++ b/src/server/scripts/Battlegrounds/TheRobodrome/arena_the_robodrome.cpp @@ -70,7 +70,7 @@ struct arena_the_robodrome : ArenaScript } } - _scheduler.Schedule(5s, [&](TaskContext context) + _scheduler.Schedule(5s, [&](TaskContext& context) { for (ObjectGuid const& guid : _powerCoilGUIDs) if (Creature* coil = battlegroundMap->GetCreature(guid)) diff --git a/src/server/scripts/BrokenIsles/BlackRookHold/boss_amalgam_of_souls.cpp b/src/server/scripts/BrokenIsles/BlackRookHold/boss_amalgam_of_souls.cpp index 8199d24d3e8c6..8eedd70a4e60e 100644 --- a/src/server/scripts/BrokenIsles/BlackRookHold/boss_amalgam_of_souls.cpp +++ b/src/server/scripts/BrokenIsles/BlackRookHold/boss_amalgam_of_souls.cpp @@ -318,13 +318,13 @@ struct npc_amalgam_of_souls_lord_etheldrin_ravencrest : public ScriptedAI return; Milliseconds delay = 1s; - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { Talk(SAY_OUTRO); }); delay += 4s; - _scheduler.Schedule(delay, [this](TaskContext /*task*/) + _scheduler.Schedule(delay, [this](TaskContext const& /*task*/) { if (Creature* velandras = me->FindNearestCreature(NPC_LADY_VELANDRAS_RAVENCREST, 100.0f)) { @@ -343,7 +343,7 @@ struct npc_amalgam_of_souls_lord_etheldrin_ravencrest : public ScriptedAI }); delay += 6s; - _scheduler.Schedule(delay, [this](TaskContext /*task*/) + _scheduler.Schedule(delay, [this](TaskContext const& /*task*/) { if (GameObject* door = me->GetInstanceScript()->GetGameObject(DATA_BOSS_1_POST_BOSS_DOOR)) door->SetGoState(GO_STATE_ACTIVE); diff --git a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp index f65c8e52a3227..74a7c908b2583 100644 --- a/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp +++ b/src/server/scripts/BrokenIsles/MawOfSouls/boss_ymiron_the_fallen_king.cpp @@ -165,7 +165,7 @@ struct boss_ymiron_the_fallen_king : public BossAI me->RemoveAurasDueToSpell(SPELL_KNEELING); me->SetReactState(REACT_PASSIVE); - scheduler.Schedule(1600ms, [this](TaskContext /*task*/) + scheduler.Schedule(1600ms, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_AGGRESSIVE); }); @@ -245,7 +245,7 @@ struct boss_ymiron_the_fallen_king : public BossAI return; me->RemoveAurasDueToSpell(SPELL_KNEELING); - scheduler.Schedule(2s, [this](TaskContext /*task*/) + scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MoveJump(EVENT_JUMP, YmironIntroJumpPos, 24.0f, 2.0f); }); @@ -259,7 +259,7 @@ struct boss_ymiron_the_fallen_king : public BossAI if (pointId != EVENT_JUMP) return; - scheduler.Schedule(1500ms, [this](TaskContext /*task*/) + scheduler.Schedule(1500ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_INTRO_TOWARDS_SLAVES, false); }); @@ -270,11 +270,11 @@ struct boss_ymiron_the_fallen_king : public BossAI if (spell->Id != SPELL_SOUL_SIPHON_CHANNEL) return; - scheduler.Schedule(2s, [this](TaskContext task) + scheduler.Schedule(2s, [this](TaskContext& task) { Talk(SAY_INTRO2); - task.Schedule(5s, [this](TaskContext /*task*/) + task.Schedule(5s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_INTRO_AWAY_FROM_SLAVES, false); }); @@ -288,7 +288,7 @@ struct boss_ymiron_the_fallen_king : public BossAI if (pathId == PATH_INTRO_TOWARDS_SLAVES) { - scheduler.Schedule(2s, [this](TaskContext /*task*/) + scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { DoCastAOE(SPELL_SOUL_SIPHON_CHANNEL); Talk(SAY_INTRO1); @@ -679,14 +679,14 @@ struct npc_ymiron_the_fallen_king_risen_warrior : public ScriptedAI me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_ARISE_FALLEN, 4, 2000); me->SetReactState(REACT_PASSIVE); - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_AGGRESSIVE); }); DoZoneInCombat(); - _scheduler.Schedule(6s, [this](TaskContext task) + _scheduler.Schedule(6s, [this](TaskContext& task) { DoCastSelf(SPELL_VIGOR, true); task.Repeat(6s); diff --git a/src/server/scripts/BrokenIsles/NeltharionsLair/boss_rokmora.cpp b/src/server/scripts/BrokenIsles/NeltharionsLair/boss_rokmora.cpp index 3d28077650677..e4792db6cb63c 100644 --- a/src/server/scripts/BrokenIsles/NeltharionsLair/boss_rokmora.cpp +++ b/src/server/scripts/BrokenIsles/NeltharionsLair/boss_rokmora.cpp @@ -398,7 +398,7 @@ struct npc_rokmora_navarrogg_intro : public ScriptedAI { Seconds delay = 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { DoCastSelf(SPELL_JUMP_TO_GROUND_COSMETIC); me->GetMotionMaster()->MoveJump(POINT_NAVAROGG_JUMP, NavarroggJumpIntroPosition, 50.0f, 50.0f); @@ -406,14 +406,14 @@ struct npc_rokmora_navarrogg_intro : public ScriptedAI delay += 2s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { me->RemoveAurasDueToSpell(SPELL_JUMP_TO_GROUND_COSMETIC); }); delay += 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { if (Creature* ularogg = me->FindNearestCreature(NPC_ULAROGG, 50.0f)) { @@ -436,7 +436,7 @@ struct npc_rokmora_navarrogg_intro : public ScriptedAI delay += 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { if (Creature* ularogg = me->FindNearestCreature(NPC_ULAROGG, 50.0f)) ularogg->CastSpell(ularogg->GetPosition(), SPELL_BOSS_INTRO_CONVERSATION); diff --git a/src/server/scripts/BrokenIsles/zone_mardum.cpp b/src/server/scripts/BrokenIsles/zone_mardum.cpp index e3da96fd06abe..62bebde892238 100644 --- a/src/server/scripts/BrokenIsles/zone_mardum.cpp +++ b/src/server/scripts/BrokenIsles/zone_mardum.cpp @@ -187,7 +187,7 @@ struct npc_kayn_sunfury_invasion_begins : public ScriptedAI wrathWarrior->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_WRATH_WARRIOR_DIE, 0, 0); wrathWarrior->KillSelf(); - _scheduler.Schedule(600ms, [this](TaskContext /*context*/) + _scheduler.Schedule(600ms, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath(PATH_KAYN_AFTER_DEMON, false); }); @@ -562,7 +562,7 @@ struct npc_illidari_fighting_invasion_begins : public ScriptedAI void ScheduleTargetSelection() { - _oocScheduler.Schedule(200ms, [this](TaskContext context) + _oocScheduler.Schedule(200ms, [this](TaskContext& context) { Unit* target = GetNextTarget(); if (!target) @@ -696,7 +696,7 @@ struct npc_kayn_sunfury_ashtongue_intro_private : public ScriptedAI ObjectGuid korvasGuid = korvasObject->GetGUID(); - _scheduler.Schedule(1s, [this, korvasGuid](TaskContext task) + _scheduler.Schedule(1s, [this, korvasGuid](TaskContext& task) { Unit* privateObjectOwner = ObjectAccessor::GetUnit(*me, me->GetPrivateObjectOwner()); if (!privateObjectOwner) @@ -710,11 +710,11 @@ struct npc_kayn_sunfury_ashtongue_intro_private : public ScriptedAI me->CastSpell(privateObjectOwner, SPELL_TRACK_TARGET_IN_CHANNEL, false); korvas->CastSpell(privateObjectOwner, SPELL_TRACK_TARGET_IN_CHANNEL, false); - task.Schedule(6s, [this, korvasGuid](TaskContext task) + task.Schedule(6s, [this, korvasGuid](TaskContext& task) { Talk(SAY_KAYN_CUT_A_HOLE, me); - task.Schedule(6s, [this, korvasGuid](TaskContext task) + task.Schedule(6s, [this, korvasGuid](TaskContext& task) { Creature* korvas = ObjectAccessor::GetCreature(*me, korvasGuid); if (!korvas) @@ -729,7 +729,7 @@ struct npc_kayn_sunfury_ashtongue_intro_private : public ScriptedAI me->SetAIAnimKitId(ANIM_DH_RUN); me->DespawnOrUnsummon(10s); - task.Schedule(2s, [this, korvasGuid](TaskContext /*task*/) + task.Schedule(2s, [this, korvasGuid](TaskContext const& /*task*/) { Creature* korvas = ObjectAccessor::GetCreature(*me, korvasGuid); if (!korvas) @@ -797,16 +797,16 @@ struct npc_sevis_brightflame_ashtongue_gateway_private : public ScriptedAI void JustAppeared() override { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { Talk(SAY_SEVIS_SAY_FIND_ALLARI, me); - task.Schedule(2s, [this](TaskContext task) + task.Schedule(2s, [this](TaskContext& task) { me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_SEVIS_MOUNT, 0, 0); me->SetMountDisplayId(DISPLAY_ID_SEVIS_MOUNT); - task.Schedule(3s, [this](TaskContext /*task*/) + task.Schedule(3s, [this](TaskContext const& /*task*/) { me->InterruptNonMeleeSpells(true); me->GetMotionMaster()->MovePath(PATH_SEVIS_BRIGHTFLAME_GATEWAY, false); @@ -903,16 +903,16 @@ struct npc_sevis_brightflame_coilskar_gateway_private : public ScriptedAI me->SetFacingToObject(summoner); me->DespawnOrUnsummon(14s); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { Talk(SAY_SEVIS_SAY_MEET_AT_LAST_GATEWAY, me); - task.Schedule(2s, [this](TaskContext task) + task.Schedule(2s, [this](TaskContext& task) { me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_SEVIS_MOUNT, 0, 0); me->SetMountDisplayId(DISPLAY_ID_SEVIS_MOUNT); - task.Schedule(3s, [this](TaskContext /*task*/) + task.Schedule(3s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_SEVIS_BRIGHTFLAME_COILSKAR, false); }); @@ -1230,11 +1230,11 @@ struct npc_cyana_nightglaive_freed_private : public ScriptedAI { me->DespawnOrUnsummon(19s); - _scheduler.Schedule(2s + 500ms, [this](TaskContext task) + _scheduler.Schedule(2s + 500ms, [this](TaskContext& task) { Talk(SAY_CYANA_NIGHTGLAIVE_FREED, me); - task.Schedule(3s, [this](TaskContext /*task*/) + task.Schedule(3s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_CYANA_NIGHTGLAIVE_FREED, false); }); @@ -1266,11 +1266,11 @@ struct npc_izal_whitemoon_freed_private : public ScriptedAI { me->DespawnOrUnsummon(18s); - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { Talk(SAY_IZAL_WHITEMOON_FREED, me); - task.Schedule(3s, [this](TaskContext /*task*/) + task.Schedule(3s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_CYANA_NIGHTGLAIVE_FREED, false); }); @@ -1302,11 +1302,11 @@ struct npc_belath_dawnblade_freed_private : public ScriptedAI { me->DespawnOrUnsummon(5min); // wtf blizz - _scheduler.Schedule(3s, [this](TaskContext task) + _scheduler.Schedule(3s, [this](TaskContext& task) { Talk(SAY_BELATH_DAWNBLADE_FREED, me); - task.Schedule(6s, [this](TaskContext /*task*/) + task.Schedule(6s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_BELATH_DAWNBLADE_FREED, false); }); @@ -1338,11 +1338,11 @@ struct npc_mannethrel_darkstar_freed_private : public ScriptedAI { me->DespawnOrUnsummon(28s); - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { Talk(SAY_BELATH_DAWNBLADE_FREED, me); - task.Schedule(6s, [this](TaskContext /*task*/) + task.Schedule(6s, [this](TaskContext const& /*task*/) { me->SetAIAnimKitId(ANIM_DH_WALK_DAZED); me->GetMotionMaster()->MovePath(PATH_MANNETHREL_DARKSTAR_FREED, false); @@ -1472,12 +1472,12 @@ struct npc_sevis_brightflame_shivarra_gateway : public ScriptedAI me->PlayOneShotAnimKitId(ANIM_KIT_ONESHOT_GET_HIT); Talk(SAY_SEVIS_GET_SACRIFICED, me); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { me->KillSelf(); _soulMissileCounter = 0; - task.Schedule(2s, [this](TaskContext task) + task.Schedule(2s, [this](TaskContext& task) { DoCast(SPELL_SEVIS_SOUL_MISSILE_02); _soulMissileCounter++; @@ -1493,7 +1493,7 @@ struct npc_sevis_brightflame_shivarra_gateway : public ScriptedAI me->DespawnOrUnsummon(22s); Talk(SAY_SEVIS_PLAYER_SACRIFICE, me); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { TempSummon* summon = me->ToTempSummon(); if (!summon) @@ -1505,26 +1505,26 @@ struct npc_sevis_brightflame_shivarra_gateway : public ScriptedAI me->GetMotionMaster()->MoveCloserAndStop(POINT_SEVIS_GATEWAY_SHIVARRA, summoner, 2.0f); - task.Schedule(2s, [this](TaskContext task) + task.Schedule(2s, [this](TaskContext& task) { me->SendPlaySpellVisualKit(SPELL_VISUAL_SACRIFICE_PLAYER, 4, 1000); me->SetAIAnimKitId(ANIM_KIT_SWING_WEAPON); DoCast(SPELL_SEVIS_CHAOS_STRIKE); - task.Schedule(2s, [this](TaskContext task) + task.Schedule(2s, [this](TaskContext& task) { me->SetAIAnimKitId(ANIM_KIT_KNEEL); - task.Schedule(5s, [this](TaskContext task) + task.Schedule(5s, [this](TaskContext& task) { me->SetAIAnimKitId(ANIM_KIT_SALUTE); - task.Schedule(3s, [this](TaskContext task) + task.Schedule(3s, [this](TaskContext& task) { me->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_SEVIS_MOUNT, 0, 0); me->SetMountDisplayId(DISPLAY_ID_SEVIS_MOUNT); - task.Schedule(2s, [this](TaskContext /*task*/) + task.Schedule(2s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_SEVIS_GATEWAY_SHIVARRA, false); }); @@ -1785,7 +1785,7 @@ struct npc_jayce_darkweaver_cryptic_hollow_private : public ScriptedAI if (!shivarraClone) return; - _scheduler.Schedule(4s, [this, shivarraGuid = shivarraClone->GetGUID()](TaskContext task) + _scheduler.Schedule(4s, [this, shivarraGuid = shivarraClone->GetGUID()](TaskContext& task) { Creature* shivarraClone = ObjectAccessor::GetCreature(*me, shivarraGuid); if (!shivarraClone) @@ -1793,7 +1793,7 @@ struct npc_jayce_darkweaver_cryptic_hollow_private : public ScriptedAI shivarraClone->SendPlaySpellVisualKit(SPELL_VISUAL_KIT_SHIVARRA_TELEPORT, 4, 2000); shivarraClone->SetEmoteState(EMOTE_STATE_READY_SPELL_OMNI); - task.Schedule(3s, [this, shivarraGuid](TaskContext /*task*/) + task.Schedule(3s, [this, shivarraGuid](TaskContext const& /*task*/) { Creature* shivarraClone = ObjectAccessor::GetCreature(*me, shivarraGuid); if (!shivarraClone) @@ -1830,7 +1830,7 @@ struct npc_jayce_darkweaver_cryptic_hollow_private : public ScriptedAI player->KilledMonsterCredit(NPC_ROCKSLIDE_KILLCREDIT); Talk(SAY_JAYCE_ATTACK_ILLIDARI); - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePoint(POINT_JAYCE_DARKWEAVER_PREPARE_JUMP, JaycePrepareJump); for (ObjectGuid const& guid : _cloneGuids) @@ -1896,7 +1896,7 @@ struct npc_basic_hidden_no_more_private : public ScriptedAI { case ACTION_HIDDEN_NO_MORE_MOVE: { - _scheduler.Schedule(pathDelay->MoveDelay, [this, pathDelay](TaskContext /*task*/) + _scheduler.Schedule(pathDelay->MoveDelay, [this, pathDelay](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(pathDelay->PathId, false); me->DespawnOrUnsummon(6s); @@ -1942,7 +1942,7 @@ struct npc_demon_hunter_hidden_no_more_private : public npc_basic_hidden_no_more { case ACTION_HIDDEN_NO_MORE_EYEBEAM: { - _scheduler.Schedule(pathDelay->ActionDelay, [this](TaskContext /*task*/) + _scheduler.Schedule(pathDelay->ActionDelay, [this](TaskContext const& /*task*/) { me->CastSpell(me, (me->GetGender() == GENDER_FEMALE ? SPELL_COSMETIC_EYE_BEAM_01_FEMALE : SPELL_COSMETIC_EYE_BEAM_01_MALE), false); }); @@ -1951,7 +1951,7 @@ struct npc_demon_hunter_hidden_no_more_private : public npc_basic_hidden_no_more case ACTION_HIDDEN_NO_MORE_MOVE: { me->SetAIAnimKitId(ANIM_DH_RUN); - _scheduler.Schedule(pathDelay->MoveDelay, [this, pathDelay](TaskContext /*task*/) + _scheduler.Schedule(pathDelay->MoveDelay, [this, pathDelay](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(pathDelay->PathId, false); me->DespawnOrUnsummon(6s); diff --git a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp index 908b03979cb48..018ecf41f8616 100644 --- a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp +++ b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp @@ -132,7 +132,7 @@ struct npc_danica_the_reclaimer : public ScriptedAI me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); _summonerGuid = summoner->GetGUID(); - _scheduler.Schedule(2s, [this, summoner](TaskContext /*context*/) + _scheduler.Schedule(2s, [this, summoner](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath(DanicaPath01, false); Talk(SAY_FIRST_LINE, summoner); @@ -144,7 +144,7 @@ struct npc_danica_the_reclaimer : public ScriptedAI switch (pathId) { case POINT_FORGE_OF_ODYN: - _scheduler.Schedule(10s, [this](TaskContext /*context*/) + _scheduler.Schedule(10s, [this](TaskContext const& /*context*/) { Player* player = ObjectAccessor::GetPlayer(*me, _summonerGuid); me->GetMotionMaster()->MovePath(DanicaPath02, false); @@ -152,7 +152,7 @@ struct npc_danica_the_reclaimer : public ScriptedAI }); break; case POINT_INTRODUCE_MEAD_HALL: - _scheduler.Schedule(10s, [this](TaskContext /*context*/) + _scheduler.Schedule(10s, [this](TaskContext const& /*context*/) { Player* player = ObjectAccessor::GetPlayer(*me, _summonerGuid); me->GetMotionMaster()->MovePath(DanicaPath03, false); @@ -204,13 +204,13 @@ struct npc_feasting_valarjar : public ScriptedAI void Reset() override { - _scheduler.Schedule(5s, 30s, [this](TaskContext context) + _scheduler.Schedule(5s, 30s, [this](TaskContext& context) { Emote emoteID = Trinity::Containers::SelectRandomContainerElement(_randomEmotes); if (emoteID == EMOTE_ONESHOT_EAT_NO_SHEATHE) { me->SetVirtualItem(0, urand(0, 1) ? ITEM_MONSTER_ITEM_MUTTON_WITH_BITE : ITEM_MONSTER_ITEM_TANKARD_WOODEN); - _scheduler.Schedule(1s, [this](TaskContext /*context*/) + context.Schedule(1s, [this](TaskContext const& /*context*/) { me->SetVirtualItem(0, 0); if (roll_chance(85)) @@ -222,7 +222,7 @@ struct npc_feasting_valarjar : public ScriptedAI context.Repeat(); }); - _scheduler.Schedule(5min, 20min, [this](TaskContext /*context*/) + _scheduler.Schedule(5min, 20min, [this](TaskContext const& /*context*/) { float direction = me->GetOrientation() + M_PI; me->GetMotionMaster()->MovePoint(POINT_LEAVING, me->GetFirstCollisionPosition(5.0f, direction)); @@ -277,21 +277,21 @@ struct npc_valarjar_paying_respect_to_odyn : ScriptedAI switch (id) { case POINT_TABLE: - _scheduler.Schedule(3s, 6s, [this](TaskContext /*context*/) + _scheduler.Schedule(3s, 6s, [this](TaskContext const& /*context*/) { me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(_randomEmotes)); }); - _scheduler.Schedule(7s, 15s, [this](TaskContext /*context*/) + _scheduler.Schedule(7s, 15s, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath({ POINT_ODYN, { GetPathToOdyn().begin(), GetPathToOdyn().end() }, WaypointMoveType::Walk, WaypointPathFlags::ExactSplinePath }, false); }); break; case POINT_ODYN: - _scheduler.Schedule(1s, 3s, [this](TaskContext /*context*/) + _scheduler.Schedule(1s, 3s, [this](TaskContext& context) { me->PlayOneShotAnimKitId(1431); - _scheduler.Schedule(3s, 10s, [this](TaskContext /*context*/) + context.Schedule(3s, 10s, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath({ POINT_DESPAWN, { GetPathToDespawnPoint().begin(), GetPathToDespawnPoint().end() }, WaypointMoveType::Run, WaypointPathFlags::ExactSplinePath }, false); }); @@ -525,13 +525,13 @@ struct npc_spectating_valarjar : public ScriptedAI void Reset() override { - _scheduler.Schedule(5s, 30s, [this](TaskContext context) + _scheduler.Schedule(5s, 30s, [this](TaskContext& context) { me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(_randomEmotes)); context.Repeat(); }); - _scheduler.Schedule(5min, 20min, [this](TaskContext /*context*/) + _scheduler.Schedule(5min, 20min, [this](TaskContext const& /*context*/) { float direction = me->GetOrientation() + M_PI; me->GetMotionMaster()->MovePoint(0, me->GetFirstCollisionPosition(5.0f, direction)); @@ -572,7 +572,7 @@ struct npc_valkyr_of_odyn : public ScriptedAI { if (me->GetPositionZ() >= 100.0f) { - _scheduler.Schedule(3s, [this](TaskContext /*context*/) + _scheduler.Schedule(3s, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath({ POINT_JUMP, { GetPath().begin(), GetPath().end() }, WaypointMoveType::Run, WaypointPathFlags::FlyingPath }, false); }); @@ -591,7 +591,7 @@ struct npc_valkyr_of_odyn : public ScriptedAI switch (pathId) { case POINT_JUMP: - _scheduler.Schedule(250ms, [this](TaskContext /*context*/) + _scheduler.Schedule(250ms, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MoveJump(POINT_DESPAWN_JUMP, { 1107.84f, 7222.57f, 38.9725f, me->GetOrientation() }); }); @@ -795,18 +795,18 @@ struct npc_weapon_inspector_valarjar : public ScriptedAI void Reset() override { - _scheduler.Schedule(15s, 20s, [this](TaskContext context) + _scheduler.Schedule(15s, 20s, [this](TaskContext& context) { me->SetAIAnimKitId(0); std::pair weapons = Trinity::Containers::SelectRandomContainerElement(_randomWeapons); me->SetVirtualItem(0, weapons.first); me->SetVirtualItem(1, weapons.second); - context.Schedule(8s, 10s, [this](TaskContext context) + context.Schedule(8s, 10s, [this](TaskContext& context) { me->SetVirtualItem(0, 0); me->SetVirtualItem(1, 0); - context.Schedule(10s, [this](TaskContext /*context*/) + context.Schedule(10s, [this](TaskContext const& /*context*/) { me->SetAIAnimKitId(1583); }); diff --git a/src/server/scripts/Draenor/Auchindoun/auchindoun.cpp b/src/server/scripts/Draenor/Auchindoun/auchindoun.cpp index 6bbf61e3903c0..152472dc05f56 100644 --- a/src/server/scripts/Draenor/Auchindoun/auchindoun.cpp +++ b/src/server/scripts/Draenor/Auchindoun/auchindoun.cpp @@ -158,7 +158,7 @@ struct npc_auchindoun_auchenai_defender : public ScriptedAI { me->SetStandState(UNIT_STAND_STATE_STAND); - _scheduler.Schedule(1s + 300ms, [this](TaskContext /*task*/) + _scheduler.Schedule(1s + 300ms, [this](TaskContext const& /*task*/) { me->SetFacingTo(3.8194849f); Talk(SAY_NYAMI_AWAITS); @@ -186,11 +186,11 @@ struct npc_auchindoun_soulbinder_tuulani : public ScriptedAI { Talk(SAY_WELCOME_1); - _scheduler.Schedule(4s + 300ms, [this](TaskContext task) + _scheduler.Schedule(4s + 300ms, [this](TaskContext& task) { Talk(SAY_WELCOME_2); - task.Schedule(6s, [this](TaskContext /*task*/) + task.Schedule(6s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_BARRIER, false); }); @@ -205,20 +205,20 @@ struct npc_auchindoun_soulbinder_tuulani : public ScriptedAI Talk(SAY_BREAK_BARRIER_1); - _scheduler.Schedule(3s, [this](TaskContext task) + _scheduler.Schedule(3s, [this](TaskContext& task) { DoCast(SPELL_TUULANI_UNLOCK_VISUAL); - task.Schedule(4s, [this](TaskContext task) + task.Schedule(4s, [this](TaskContext& task) { if (GameObject* holyBarrier = me->GetInstanceScript()->GetGameObject(DATA_HOLY_BARRIER)) holyBarrier->SetGoState(GO_STATE_ACTIVE); - task.Schedule(2s + 300ms, [this](TaskContext task) + task.Schedule(2s + 300ms, [this](TaskContext& task) { Talk(SAY_BREAK_BARRIER_2); - task.Schedule(1s + 300ms, [this](TaskContext /*task*/) + task.Schedule(1s + 300ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_MOVE_TO_BOSS, false); }); @@ -236,7 +236,7 @@ struct npc_auchindoun_soulbinder_tuulani : public ScriptedAI { case POINT_TALK: { - _scheduler.Schedule(500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(500ms, [this](TaskContext const& /*task*/) { Talk(SAY_WELCOME_3); }); @@ -255,7 +255,7 @@ struct npc_auchindoun_soulbinder_tuulani : public ScriptedAI { if (waypointId == POINT_SOULS) { - _scheduler.Schedule(500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(500ms, [this](TaskContext const& /*task*/) { me->SetFacingTo(1.727875f); Talk(SAY_HEROES_SOULS); @@ -285,7 +285,7 @@ struct at_auchindoun_npc_reaction : AreaTriggerAI if (!unit->IsCreature() || unit->GetEmoteState() == EMOTE_STATE_READY1H_ALLOW_MOVEMENT || unit->GetEntry() == NPC_SOULBINDER_TUULANI) return; - _scheduler.Schedule(1500ms, [this, unitGUID = unit->GetGUID()](TaskContext task) + _scheduler.Schedule(1500ms, [this, unitGUID = unit->GetGUID()](TaskContext& task) { Creature* auchenaiDefender = ObjectAccessor::GetCreature(*at, unitGUID); if (!auchenaiDefender) @@ -295,7 +295,7 @@ struct at_auchindoun_npc_reaction : AreaTriggerAI auchenaiDefender->SetFacingToObject(caster); auchenaiDefender->HandleEmoteCommand(EMOTE_ONESHOT_SALUTE); - task.Schedule(4s, [this, unitGUID](TaskContext /*task*/) + task.Schedule(4s, [this, unitGUID](TaskContext const& /*task*/) { Creature* auchenaiDefender = ObjectAccessor::GetCreature(*at, unitGUID); if (!auchenaiDefender) diff --git a/src/server/scripts/DragonIsles/AberrusTheShadowedCrucible/boss_kazzara_the_hellforged.cpp b/src/server/scripts/DragonIsles/AberrusTheShadowedCrucible/boss_kazzara_the_hellforged.cpp index 203b871f8634b..6e8375a428c8e 100644 --- a/src/server/scripts/DragonIsles/AberrusTheShadowedCrucible/boss_kazzara_the_hellforged.cpp +++ b/src/server/scripts/DragonIsles/AberrusTheShadowedCrucible/boss_kazzara_the_hellforged.cpp @@ -65,7 +65,7 @@ struct boss_kazzara_the_hellforged : public BossAI DoCast(SPELL_DREAD_LANDING); DoCast(SPELL_KAZZARA_INTRO); - scheduler.Schedule(1s + 500ms, [this](TaskContext /*context*/) + scheduler.Schedule(1s + 500ms, [this](TaskContext const& /*context*/) { std::vector sunderedMobs; GetCreatureListWithOptionsInGrid(sunderedMobs, me, 50.0f, { .StringId = "sundered_mob" }); @@ -78,7 +78,7 @@ struct boss_kazzara_the_hellforged : public BossAI } }); - scheduler.Schedule(12s, [this](TaskContext /*context*/) + scheduler.Schedule(12s, [this](TaskContext const& /*context*/) { me->SetUninteractible(false); me->SetImmuneToAll(false); diff --git a/src/server/scripts/DragonIsles/AzureVault/boss_leymor.cpp b/src/server/scripts/DragonIsles/AzureVault/boss_leymor.cpp index 827089ce558d1..906e598b6001e 100644 --- a/src/server/scripts/DragonIsles/AzureVault/boss_leymor.cpp +++ b/src/server/scripts/DragonIsles/AzureVault/boss_leymor.cpp @@ -109,7 +109,7 @@ struct boss_leymor : public BossAI { if (action == ACTION_FINISH_LEYMOR_INTRO) { - scheduler.Schedule(1s, [this](TaskContext /*context*/) + scheduler.Schedule(1s, [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_STASIS); me->SetImmuneToAll(false); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp index f0f12d523ba54..738d37c70fe5e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp @@ -314,7 +314,7 @@ struct npc_coren_direbrew_sisters : public ScriptedAI { return !me->HasUnitState(UNIT_STATE_CASTING); }) - .Schedule(Seconds(2), [this](TaskContext mugChuck) + .Schedule(Seconds(2), [this](TaskContext& mugChuck) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, false, true, -SPELL_HAS_DARK_BREWMAIDENS_BREW)) DoCast(target, SPELL_CHUCK_MUG); @@ -396,12 +396,12 @@ class go_direbrew_mole_machine : public GameObjectScript { me->SetLootState(GO_READY); _scheduler - .Schedule(Seconds(1), [this](TaskContext /*context*/) + .Schedule(Seconds(1), [this](TaskContext const& /*context*/) { me->UseDoorOrButton(10000); me->CastSpell(nullptr, SPELL_MOLE_MACHINE_EMERGE, true); }) - .Schedule(Seconds(4), [this](TaskContext /*context*/) + .Schedule(Seconds(4), [this](TaskContext const& /*context*/) { if (GameObject* trap = me->GetLinkedTrap()) { diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp index 557b1100ae55a..412c3bda2b72c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp @@ -95,7 +95,7 @@ struct npc_firesworn : public ScriptedAI void ScheduleTasks() { // Timers for this are probably wrong - _scheduler.Schedule(4s, [this](TaskContext context) + _scheduler.Schedule(4s, [this](TaskContext& context) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_IMMOLATE); @@ -105,7 +105,7 @@ struct npc_firesworn : public ScriptedAI // Separation Anxiety - Periodically check if Garr is nearby // ...and enrage if he is not. - _scheduler.Schedule(3s, [this](TaskContext context) + _scheduler.Schedule(3s, [this](TaskContext& context) { if (!me->FindNearestCreature(NPC_GARR, 20.0f)) DoCastSelf(SPELL_SEPARATION_ANXIETY); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp index 4ac429ce7044b..5d0de97609bf9 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp @@ -124,7 +124,7 @@ struct npc_core_rager : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(7s, [this](TaskContext task) // These times are probably wrong + _scheduler.Schedule(7s, [this](TaskContext& task) // These times are probably wrong { DoCastVictim(SPELL_MANGLE); task.Repeat(10s); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp index e469f64e016b1..7ec0725b16360 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_curator.cpp @@ -160,7 +160,7 @@ class npc_curator_astral_flare : public CreatureScript void Reset() override { - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); me->SetUninteractible(false); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index 4a71fd3c4a1cd..e027849cba0fb 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -102,13 +102,13 @@ class boss_attumen : public CreatureScript void ScheduleTasks() override { - scheduler.Schedule(Seconds(15), Seconds(25), [this](TaskContext task) + scheduler.Schedule(Seconds(15), Seconds(25), [this](TaskContext& task) { DoCastVictim(SPELL_SHADOWCLEAVE); task.Repeat(Seconds(15), Seconds(25)); }); - scheduler.Schedule(Seconds(25), Seconds(45), [this](TaskContext task) + scheduler.Schedule(Seconds(25), Seconds(45), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target,SPELL_INTANGIBLE_PRESENCE); @@ -116,7 +116,7 @@ class boss_attumen : public CreatureScript task.Repeat(Seconds(25), Seconds(45)); }); - scheduler.Schedule(Seconds(30), Seconds(60), [this](TaskContext task) + scheduler.Schedule(Seconds(30), Seconds(60), [this](TaskContext& task) { Talk(SAY_RANDOM); task.Repeat(Seconds(30), Seconds(60)); @@ -170,7 +170,7 @@ class boss_attumen : public CreatureScript _phase = PHASE_MOUNTED; DoCastSelf(SPELL_SPAWN_SMOKE); - scheduler.Schedule(Seconds(10), Seconds(25), [this](TaskContext task) + scheduler.Schedule(Seconds(10), Seconds(25), [this](TaskContext& task) { Unit* target = nullptr; std::vector target_list; @@ -191,7 +191,7 @@ class boss_attumen : public CreatureScript task.Repeat(Seconds(10), Seconds(25)); }); - scheduler.Schedule(Seconds(25), Seconds(35), [this](TaskContext task) + scheduler.Schedule(Seconds(25), Seconds(35), [this](TaskContext& task) { DoCastVictim(SPELL_KNOCKDOWN); task.Repeat(Seconds(25), Seconds(35)); @@ -246,7 +246,7 @@ class boss_attumen : public CreatureScript me->GetMotionMaster()->MoveFollow(midnight, 2.0f, 0.0f); Talk(SAY_MOUNT); - scheduler.Schedule(Seconds(1), [this](TaskContext task) + scheduler.Schedule(Seconds(1), [this](TaskContext& task) { if (Creature* midnight = ObjectAccessor::GetCreature(*me, _midnightGUID)) { @@ -341,7 +341,7 @@ class boss_midnight : public CreatureScript { BossAI::JustEngagedWith(who); - scheduler.Schedule(Seconds(15), Seconds(25), [this](TaskContext task) + scheduler.Schedule(Seconds(15), Seconds(25), [this](TaskContext& task) { DoCastVictim(SPELL_KNOCKDOWN); task.Repeat(Seconds(15), Seconds(25)); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index a70f2022ae4af..c99b1c342057f 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -167,7 +167,7 @@ class npc_kilrek : public CreatureScript void Reset() override { - _scheduler.Schedule(Seconds(8), [this](TaskContext amplify) + _scheduler.Schedule(Seconds(8), [this](TaskContext& amplify) { DoCastVictim(SPELL_AMPLIFY_FLAMES); amplify.Repeat(Seconds(9)); @@ -240,7 +240,7 @@ class npc_fiendish_portal : public CreatureScript void Reset() override { - _scheduler.Schedule(Milliseconds(2400), Seconds(8), [this](TaskContext summonImp) + _scheduler.Schedule(Milliseconds(2400), Seconds(8), [this](TaskContext& summonImp) { DoCastAOE(SPELL_SUMMON_FIENDISH_IMP, true); summonImp.Repeat(); @@ -286,7 +286,7 @@ class npc_fiendish_imp : public CreatureScript void Reset() override { - _scheduler.Schedule(Seconds(2), [this](TaskContext firebolt) + _scheduler.Schedule(Seconds(2), [this](TaskContext& firebolt) { DoCastVictim(SPELL_FIREBOLT); firebolt.Repeat(Milliseconds(2400)); diff --git a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp index c382d8b0991ab..656fa7c801369 100644 --- a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp +++ b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp @@ -267,7 +267,7 @@ struct at_mana_devourer_loose_mana : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { if (Unit* caster = at->GetCaster()) { @@ -332,7 +332,7 @@ struct at_mana_devourer_energy_void : AreaTriggerAI _shrinkPeriodicActive = true; - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { at->SetTimeToTargetScale(1000); diff --git a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp index 73a7e8bf1b101..645586a7a6bdf 100644 --- a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp +++ b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_shade_of_medivh.cpp @@ -146,7 +146,7 @@ struct boss_shade_of_medivh : public BossAI me->SetPowerType(POWER_MANA); me->SetPower(POWER_MANA, 0); - scheduler.Schedule(2s, [this](TaskContext task) + scheduler.Schedule(2s, [this](TaskContext& task) { static constexpr uint8 VisualCount = 5; static constexpr float TravelSpeed = 8.0f; diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 5f74d0dcf44c7..dac68093b523c 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -647,7 +647,7 @@ struct npc_pulsing_pumpkin : public ScriptedAI if (id != ACTION_PUMPKIN_SPROUTING_FINISHED) return; - _scheduler.Schedule(1s, [this](TaskContext /*context*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_PUMPKIN_LIFE_CYCLE); me->SetDisableGravity(false); @@ -657,7 +657,7 @@ struct npc_pulsing_pumpkin : public ScriptedAI me->SetImmuneToNPC(true); me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); - }).Schedule(11s, [this](TaskContext squashSoul) + }).Schedule(11s, [this](TaskContext& squashSoul) { DoCastVictim(SPELL_SQUASH_SOUL); squashSoul.Repeat(10s); @@ -685,10 +685,10 @@ struct npc_flame_bunny : public PassiveAI void Reset() override { - _scheduler.Schedule(1s, [this](TaskContext /*context*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_HEADLESS_HORSEMAN_BURNING_COSMETIC_BASE); - }).Schedule(3s, [this](TaskContext grow) + }).Schedule(3s, [this](TaskContext& grow) { DoCastSelf(SPELL_HEADLESS_HORSEMAN_FIRE_SIZE_BIG); if (grow.GetRepeatCounter() < 2) @@ -715,7 +715,7 @@ struct npc_sir_thomas : public PassiveAI me->SetUninteractible(true); DoCastSelf(SPELL_HEADLESS_HORSEMAN_WISP_INVIS); - _scheduler.Schedule(9s, [this](TaskContext /*context*/) + _scheduler.Schedule(9s, [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_HEADLESS_HORSEMAN_WISP_FLIGHT_MISSILE); }); diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp index 13e82f35c67e7..557eb324e773d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp @@ -187,7 +187,7 @@ struct boss_scarlet_commander_mograine : public BossAI // Casted from Whitemane if (spellInfo->Id == SPELL_SCARLET_RESURRECTION) { - scheduler.Schedule(3s, [this](TaskContext /*context*/) + scheduler.Schedule(3s, [this](TaskContext const& /*context*/) { // Say text Talk(SAY_MO_RESURRECTED); @@ -196,7 +196,7 @@ struct boss_scarlet_commander_mograine : public BossAI me->SetStandState(UNIT_STAND_STATE_STAND); }); - scheduler.Schedule(5s, [this](TaskContext /*context*/) + scheduler.Schedule(5s, [this](TaskContext const& /*context*/) { // Schedule events after ressurrect events.ScheduleEvent(EVENT_CRUSADER_STRIKE, 10s, 15s); @@ -271,7 +271,7 @@ struct boss_high_inquisitor_whitemane : public ScriptedAI me->GetMotionMaster()->MoveIdle(); // Start events after 5 seconds - _scheduler.Schedule(5s, [this](TaskContext /*context*/) + _scheduler.Schedule(5s, [this](TaskContext const& /*context*/) { _events.ScheduleEvent(EVENT_HEAL, 10s); _events.ScheduleEvent(EVENT_POWER_WORD_SHIELD, 15s); @@ -387,7 +387,7 @@ struct boss_high_inquisitor_whitemane : public ScriptedAI me->SetFacingToObject(mograine); // After 3 seconds cast scarlet ressurection - _scheduler.Schedule(3s, [this](TaskContext /*context*/) + _scheduler.Schedule(3s, [this](TaskContext const& /*context*/) { if (Creature* mograine = _instance->GetCreature(DATA_MOGRAINE)) DoCast(mograine, SPELL_SCARLET_RESURRECTION); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index 41ef13b6b2130..48eed53d7d302 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -144,13 +144,13 @@ struct boss_entropius : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Milliseconds(2000), [this](TaskContext /*context*/) + scheduler.Schedule(Milliseconds(2000), [this](TaskContext const& /*context*/) { DoResetPortals(); DoCastAOE(SPELL_NEGATIVE_ENERGY_PERIODIC_E, true); }); - scheduler.Schedule(Seconds(15), [this](TaskContext context) + scheduler.Schedule(Seconds(15), [this](TaskContext& context) { DoCastAOE(SPELL_DARKNESS_E, true); DoCastAOE(SPELL_BLACKHOLE, true); @@ -242,7 +242,7 @@ struct boss_muru : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Minutes(10), [this](TaskContext /*context*/) + scheduler.Schedule(Minutes(10), [this](TaskContext const& /*context*/) { if (Creature* entropius = ObjectAccessor::GetCreature(*me, _entropiusGUID)) entropius->CastSpell(entropius, SPELL_ENRAGE); @@ -250,7 +250,7 @@ struct boss_muru : public BossAI _hasEnraged = true; }); - scheduler.Schedule(Seconds(10), [this](TaskContext /*context*/) + scheduler.Schedule(Seconds(10), [this](TaskContext const& /*context*/) { DoCast(me, SPELL_SUMMON_BLOOD_ELVES_SCRIPT, true); DoCast(me, SPELL_SUMMON_BLOOD_ELVES_PERIODIC, true); @@ -278,7 +278,7 @@ struct boss_muru : public BossAI DoCast(me, SPELL_OPEN_ALL_PORTALS, true); me->SetUninteractible(true); - scheduler.Schedule(Seconds(6), [this](TaskContext /*context*/) + scheduler.Schedule(Seconds(6), [this](TaskContext const& /*context*/) { DoCast(me, SPELL_SUMMON_ENTROPIUS, true); }); @@ -334,7 +334,7 @@ struct npc_muru_portal : public ScriptedAI break; case SPELL_OPEN_PORTAL_2: DoCastAOE(SPELL_OPEN_PORTAL, true); - _scheduler.Schedule(Seconds(6), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(6), [this](TaskContext const& /*context*/) { DoCastAOE(SPELL_SUMMON_VOID_SENTINEL_SUMMONER, true); }); @@ -366,7 +366,7 @@ struct npc_dark_fiend : public ScriptedAI me->SetReactState(REACT_PASSIVE); DoCast(me, SPELL_DARKFIEND_SKIN, true); - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); me->SetUninteractible(false); @@ -376,7 +376,7 @@ struct npc_dark_fiend : public ScriptedAI AttackStart(target); }); - _scheduler.Schedule(Seconds(3), [this](TaskContext context) + _scheduler.Schedule(Seconds(3), [this](TaskContext& context) { if (me->IsWithinDist(me->GetVictim(), 5.0f) && me->HasAura(SPELL_DARKFIEND_SKIN)) { @@ -425,7 +425,7 @@ struct npc_void_sentinel : public ScriptedAI { DoCast(me, SPELL_SHADOW_PULSE_PERIODIC, true); - _scheduler.Schedule(Seconds(45), [this](TaskContext context) + _scheduler.Schedule(Seconds(45), [this](TaskContext& context) { DoCastVictim(SPELL_VOID_BLAST, false); @@ -461,12 +461,12 @@ struct npc_blackhole : public ScriptedAI me->SetReactState(REACT_PASSIVE); DoCast(SPELL_BLACKHOLE_SUMMON_VISUAL); - _scheduler.Schedule(Seconds(15), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(15), [this](TaskContext const& /*context*/) { me->DisappearAndDie(); }); - _scheduler.Schedule(Seconds(1), [this](TaskContext context) + _scheduler.Schedule(Seconds(1), [this](TaskContext& context) { switch (context.GetRepeatCounter()) { diff --git a/src/server/scripts/EasternKingdoms/TheStockade/boss_hogger.cpp b/src/server/scripts/EasternKingdoms/TheStockade/boss_hogger.cpp index 48704d899b841..f128c8669017e 100644 --- a/src/server/scripts/EasternKingdoms/TheStockade/boss_hogger.cpp +++ b/src/server/scripts/EasternKingdoms/TheStockade/boss_hogger.cpp @@ -137,17 +137,17 @@ struct npc_warden_thelwater : public ScriptedAI if (id == POINT_FINISH) { - scheduler.Schedule(1s, [this](TaskContext /*context*/) + scheduler.Schedule(1s, [this](TaskContext const& /*context*/) { Talk(SAY_WARDEN_1); }); - scheduler.Schedule(5s, [this](TaskContext /*context*/) + scheduler.Schedule(5s, [this](TaskContext const& /*context*/) { Talk(SAY_WARDEN_2); }); - scheduler.Schedule(8s, [this](TaskContext /*context*/) + scheduler.Schedule(8s, [this](TaskContext const& /*context*/) { Talk(SAY_WARDEN_3); }); diff --git a/src/server/scripts/EasternKingdoms/TheStockade/boss_randolph_moloch.cpp b/src/server/scripts/EasternKingdoms/TheStockade/boss_randolph_moloch.cpp index b9e45a54389d0..4fb4581d09af3 100644 --- a/src/server/scripts/EasternKingdoms/TheStockade/boss_randolph_moloch.cpp +++ b/src/server/scripts/EasternKingdoms/TheStockade/boss_randolph_moloch.cpp @@ -164,12 +164,12 @@ struct npc_mortimer_moloch : public ScriptedAI if (id == POINT_FINISH) { - scheduler.Schedule(4s, [this](TaskContext /*context*/) + scheduler.Schedule(4s, [this](TaskContext const& /*context*/) { Talk(MORTIMER_MOLOCH_EMOTE); }); - scheduler.Schedule(7s, [this](TaskContext /*context*/) + scheduler.Schedule(7s, [this](TaskContext const& /*context*/) { Talk(MORTIMER_MOLOCH_DEATH); me->KillSelf(); diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp index bdacd1ba34c0c..d25d096b2b04d 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp @@ -71,7 +71,7 @@ struct boss_ironaya : public BossAI void JustEngagedWith(Unit* who) override { _JustEngagedWith(who); - scheduler.Schedule(3s, [this](TaskContext task) + scheduler.Schedule(3s, [this](TaskContext& task) { DoCastSelf(SPELL_ARCINGSMASH); task.Repeat(13s); diff --git a/src/server/scripts/EasternKingdoms/zone_abyssal_depths.cpp b/src/server/scripts/EasternKingdoms/zone_abyssal_depths.cpp index 272c325d1d00a..467e3ea883c29 100644 --- a/src/server/scripts/EasternKingdoms/zone_abyssal_depths.cpp +++ b/src/server/scripts/EasternKingdoms/zone_abyssal_depths.cpp @@ -68,7 +68,7 @@ struct npc_abyssal_depths_whirlpool_vehicle : public ScriptedAI { owner->CastSpell(me, Spells::RideVehicleHardcoded); - _scheduler.Schedule(3s + 500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(3s + 500ms, [this](TaskContext const& /*task*/) { me->SetAIAnimKitId(822); me->CastSpell(nullptr, Spells::TeleportUnderWhirlpool, CastSpellExtraArgsInit{ diff --git a/src/server/scripts/EasternKingdoms/zone_dun_morogh.cpp b/src/server/scripts/EasternKingdoms/zone_dun_morogh.cpp index 232c23194d564..3d5ba19e2ef2f 100644 --- a/src/server/scripts/EasternKingdoms/zone_dun_morogh.cpp +++ b/src/server/scripts/EasternKingdoms/zone_dun_morogh.cpp @@ -188,11 +188,11 @@ struct npc_sanitron_5000 : public NullCreatureAI ForceCastOnPassenger({ .CreatureId = NPC_DECONTAMINATION_BUNNY, .StringId = "DecontaminationStageThree" }, SPELL_DECONTAMINATE_STAGE_3); else if (waypointId == WAYPOINT_SANITRON_FINISH) { - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { Talk(SAY_SANITRON_DESTROY); DoCast(SPELL_SANITRON_COSMETIC_EXPLOSION); - task.Schedule(1s, [this](TaskContext /*task*/) + task.Schedule(1s, [this](TaskContext const& /*task*/) { if (Creature* technician = me->FindNearestCreatureWithOptions(30.0f, { .CreatureId = NPC_SAFE_TECHNICIAN, .StringId = "SafeTechnicianSanitron" })) technician->AI()->DoAction(ACTION_TECHNICIAN_START_EVENT); @@ -246,7 +246,7 @@ struct npc_safe_technician_sanitron : public NullCreatureAI _isEventStarted = true; me->SetEmoteState(EMOTE_STATE_NONE); me->SetFacingTo(0.2967f); - _scheduler.Schedule(2s + 500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(2s + 500ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePoint(POINT_SAFE_TECHNICIAN_SANITRON, SafeTechnicianSanitron); }); @@ -262,13 +262,13 @@ struct npc_safe_technician_sanitron : public NullCreatureAI if (pointId == POINT_SAFE_TECHNICIAN_SANITRON) { me->SetFacingTo(1.5009f); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { Talk(SAY_TECHNICIAN_SANITRON_DESTROY); - task.Schedule(2s, [this](TaskContext task) + task.Schedule(2s, [this](TaskContext& task) { me->SetEmoteState(EMOTE_STATE_USESTANDING); - task.Schedule(5s, [this](TaskContext /*task*/) + task.Schedule(5s, [this](TaskContext const& /*task*/) { me->SetWalk(true); me->SetEmoteState(EMOTE_STATE_NONE); diff --git a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp index e5763be0c6e86..7725849bd14c5 100644 --- a/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp +++ b/src/server/scripts/EasternKingdoms/zone_dun_morogh_area_coldridge_valley.cpp @@ -491,7 +491,7 @@ struct npc_joren_ironstock : public ScriptedAI void EnqueueInvader(Unit* invader, Seconds minTime = 1s, Seconds maxTime = 9s) { - _scheduler.Schedule(minTime, maxTime, [this, guid = invader->GetGUID()](TaskContext /*task*/) + _scheduler.Schedule(minTime, maxTime, [this, guid = invader->GetGUID()](TaskContext const& /*task*/) { _invadersToShoot.push(guid); }); @@ -499,7 +499,7 @@ struct npc_joren_ironstock : public ScriptedAI void JustAppeared() override { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { if (Creature* invader = me->SummonCreature(NPC_ROCKJAW_INVADER, Trinity::Containers::SelectRandomContainerElement(RockjawInvaderSpawnPoints), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 18s)) { @@ -512,7 +512,7 @@ struct npc_joren_ironstock : public ScriptedAI task.Repeat(3s, 20s); }); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { if (!_invadersToShoot.empty()) { diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp index 3c13a23c049ff..59983e11d9b4b 100644 --- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp @@ -115,7 +115,7 @@ class npc_dumpy_and_keeshan : public CreatureScript void Reset() override { - _scheduler.Schedule(Seconds(1), [this](TaskContext targetSearch) + _scheduler.Schedule(Seconds(1), [this](TaskContext& targetSearch) { std::list bigEarlList; me->GetCreatureListWithEntryInGrid(bigEarlList, NPC_BIGEARL, 5.0f); diff --git a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp index b2ea568a236de..70cb2c0b3fc44 100644 --- a/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp +++ b/src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp @@ -226,7 +226,7 @@ struct npc_jaina_proudmoore_tides_of_war : public ScriptedAI me->SetFacingTo(5.1164f); DoCastAOE(SPELL_JAINA_ARCANE_CHANNEL); - _scheduler.Schedule(14s, [this](TaskContext /*context*/) + _scheduler.Schedule(14s, [this](TaskContext const& /*context*/) { me->InterruptSpell(CURRENT_CHANNELED_SPELL); me->GetMotionMaster()->MovePath(PATH_JAINA_VISION_FINISH, false); @@ -240,13 +240,13 @@ struct npc_jaina_proudmoore_tides_of_war : public ScriptedAI { if (action == ACTION_JAINA_LEAVE_COUNCIL) { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { Talk(SAY_JAINA_LEAVE_COUNCIL, me); - task.Schedule(4s, [this](TaskContext task) + task.Schedule(4s, [this](TaskContext& task) { DoCastSelf(SPELL_JAINA_TELEPORT); - task.Schedule(2s, [this](TaskContext /*task*/) + task.Schedule(2s, [this](TaskContext const& /*task*/) { Unit* privateObjectOwner = ObjectAccessor::GetUnit(*me, me->GetPrivateObjectOwner()); if (!privateObjectOwner) @@ -409,7 +409,7 @@ struct npc_arkonarin_starshade_ancient_curses : public ScriptedAI { me->SetDisableGravity(true, true); me->SetMountDisplayId(DISPLAY_ID_STARSHADE_MOUNT); - _scheduler.Schedule(2s + 500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(2s + 500ms, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath(PATH_ARKONARIN_FLY_TO_FELWOOD, false); me->DespawnOrUnsummon(5s); @@ -437,7 +437,7 @@ struct npc_lysande_starshade_ancient_curses : public ScriptedAI { me->SetDisableGravity(true, true); me->SetMountDisplayId(DISPLAY_ID_STARSHADE_MOUNT); - _scheduler.Schedule(2s + 500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(2s + 500ms, [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePath(PATH_LYSANDER_FLY_TO_FELWOOD, false); me->DespawnOrUnsummon(5s); diff --git a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp index a4dd1fb7c3a49..fd8d99a044f2a 100644 --- a/src/server/scripts/ExilesReach/zone_exiles_reach.cpp +++ b/src/server/scripts/ExilesReach/zone_exiles_reach.cpp @@ -824,7 +824,7 @@ struct npc_crew_ship_private : public ScriptedAI void JustAppeared() override { _path = GetPathID(); - _scheduler.Schedule(Seconds(7), [this](TaskContext) + _scheduler.Schedule(Seconds(7), [this](TaskContext const&) { me->GetMotionMaster()->MovePath(_path, false); }); diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index d5b9ee9243fa7..0670ca889c520 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -133,31 +133,31 @@ struct boss_baleroc : public firelands_bossAI switch (phase) { case PHASE_ONE: - scheduler.Schedule(Milliseconds(8500), [this](TaskContext context) + scheduler.Schedule(Milliseconds(8500), [this](TaskContext & context) { me->AddAura(SPELL_INCENDIARY_SOUL, me); // No cast DoCastVictim(SPELL_BLAZE_OF_GLORY); context.Repeat(Milliseconds(11500)); }); - scheduler.Schedule(Seconds(5), [this](TaskContext context) + scheduler.Schedule(Seconds(5), [this](TaskContext& context) { DoCastAOE(SPELL_SHARDS_OF_TORMENT); context.Repeat(Seconds(34)); }); if (me->GetMap()->IsHeroic()) { - scheduler.Schedule(Seconds(26), [this](TaskContext context) + scheduler.Schedule(Seconds(26), [this](TaskContext& context) { DoCastAOE(SPELL_COUNTDOWN); context.Repeat(Seconds(48)); }); } - scheduler.Schedule(Milliseconds(30500), [this](TaskContext context) + scheduler.Schedule(Milliseconds(30500), [this](TaskContext& context) { DoCastSelf(SPELL_BLADES_OF_BALEROC); context.Repeat(Seconds(47)); }); - scheduler.Schedule(Minutes(6), [this](TaskContext) + scheduler.Schedule(Minutes(6), [this](TaskContext const&) { Talk(SAY_ENRAGE); Talk(EMOTE_ENRAGE); @@ -190,7 +190,7 @@ struct boss_baleroc : public firelands_bossAI _canYellKilledPlayer = false; Talk(SAY_KILL); - separateScheduler.Schedule(Seconds(8), [this](TaskContext) + separateScheduler.Schedule(Seconds(8), [this](TaskContext const&) { _canYellKilledPlayer = true; }); @@ -278,11 +278,11 @@ struct npc_shard_of_torment : public NullCreatureAI void IsSummonedBy(WorldObject* /*summoner*/) override { DoCastAOE(SPELL_TORMENT_PRE_VISUAL); - scheduler.Schedule(Milliseconds(4400), [this](TaskContext) + scheduler.Schedule(Milliseconds(4400), [this](TaskContext& context) { me->RemoveAurasDueToSpell(SPELL_TORMENT_PRE_VISUAL); DoCastAOE(SPELL_TORMENT_ACTIVE); - scheduler.Schedule(Milliseconds(1100), [this](TaskContext context) + context.Schedule(Milliseconds(1100), [this](TaskContext& context) { DoCastAOE(SPELL_WAVE_OF_TORMENT); context.Repeat(Seconds(1)); @@ -296,7 +296,7 @@ struct npc_shard_of_torment : public NullCreatureAI return; scheduler.CancelAll(); - scheduler.Schedule(Milliseconds(1100), [this](TaskContext context) + scheduler.Schedule(Milliseconds(1100), [this](TaskContext& context) { DoCastAOE(SPELL_WAVE_OF_TORMENT); context.Repeat(Seconds(1)); diff --git a/src/server/scripts/Kalimdor/Firelands/firelands.cpp b/src/server/scripts/Kalimdor/Firelands/firelands.cpp index 8fb40ff6420c7..cc31264c900d9 100644 --- a/src/server/scripts/Kalimdor/Firelands/firelands.cpp +++ b/src/server/scripts/Kalimdor/Firelands/firelands.cpp @@ -113,12 +113,12 @@ struct npc_firelands_flame_archon : public ScriptedAI void JustEngagedWith(Unit* /*attacker*/) override { - scheduler.Schedule(Seconds(10), Seconds(12), [this](TaskContext context) + scheduler.Schedule(Seconds(10), Seconds(12), [this](TaskContext& context) { DoCastAOE(SPELL_FLAME_TORRENT); context.Repeat(Seconds(15), Seconds(17)); }); - scheduler.Schedule(Seconds(25), [this](TaskContext context) + scheduler.Schedule(Seconds(25), [this](TaskContext& context) { DoCastAOE(SPELL_FIERY_TORMENT); context.Repeat(Seconds(45)); @@ -178,14 +178,14 @@ struct npc_firelands_molten_flamefather : public ScriptedAI void JustEngagedWith(Unit* /*attacker*/) override { - scheduler.Schedule(Seconds(5), [this](TaskContext context) + scheduler.Schedule(Seconds(5), [this](TaskContext& context) { DoCastAOE(SPELL_MAGMA_CONDUIT); if (Is25ManRaid()) DoCastAOE(SPELL_MAGMA_CONDUIT); context.Repeat(Seconds(25)); }); - scheduler.Schedule(Milliseconds(12800), [this](TaskContext context) + scheduler.Schedule(Milliseconds(12800), [this](TaskContext& context) { DoCastAOE(SPELL_EARTHQUAKE); context.Repeat(Milliseconds(32500)); diff --git a/src/server/scripts/Kalimdor/RagefireChasm/boss_adarogg.cpp b/src/server/scripts/Kalimdor/RagefireChasm/boss_adarogg.cpp index b6655854da85a..115e1041f1df8 100644 --- a/src/server/scripts/Kalimdor/RagefireChasm/boss_adarogg.cpp +++ b/src/server/scripts/Kalimdor/RagefireChasm/boss_adarogg.cpp @@ -150,17 +150,17 @@ struct boss_adarogg : public BossAI corruptedHoundmaster1->AI()->Talk(SAY_HOUNDMASTER_INTRO_0); corruptedHoundmaster2->AI()->Talk(SAY_HOUNDMASTER_INTRO_1); - scheduler.Schedule(2s, [this](TaskContext task) + scheduler.Schedule(2s, [this](TaskContext& task) { DoCast(SPELL_ADJULES_CHOW_TIME); me->GetMotionMaster()->MovePoint(0, AdaroggIntroPoints[0]); - task.Schedule(1s, [this](TaskContext task) + task.Schedule(1s, [this](TaskContext& task) { DoCast(SPELL_ADJULES_CHOW_TIME); me->GetMotionMaster()->MovePoint(0, AdaroggIntroPoints[1]); - task.Schedule(1s + 200ms, [this](TaskContext /*task*/) + task.Schedule(1s + 200ms, [this](TaskContext const& /*task*/) { DoCast(SPELL_ADJULES_CHOW_TIME); me->GetMotionMaster()->MovePath(PATH_INTRO, false); @@ -174,19 +174,19 @@ struct boss_adarogg : public BossAI switch (pathId) { case PATH_INTRO: - scheduler.Schedule(6148ms, [this](TaskContext /*task*/) + scheduler.Schedule(6148ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_INTRO2, false); }); break; case PATH_INTRO2: - scheduler.Schedule(6996ms, [this](TaskContext /*task*/) + scheduler.Schedule(6996ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_INTRO3, false); }); break; case PATH_INTRO3: - scheduler.Schedule(6148ms, [this](TaskContext /*task*/) + scheduler.Schedule(6148ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_INTRO2, false); }); @@ -196,7 +196,7 @@ struct boss_adarogg : public BossAI } _eatCounter = 0; - scheduler.Schedule(1s, [this](TaskContext task) + scheduler.Schedule(1s, [this](TaskContext& task) { if (_eatCounter >= 2) return; diff --git a/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp b/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp index 0cb2926943c70..9d7bf8afbfec9 100644 --- a/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp +++ b/src/server/scripts/Kalimdor/RagefireChasm/boss_lava_guard_gordoth.cpp @@ -150,7 +150,7 @@ struct boss_lava_guard_gordoth : public BossAI DoCastSelf(SPELL_JAIL_BREAK); me->GetMotionMaster()->MoveJump(POINT_JUMP, GordothJumpPos, 50.0f, 4.0f); - scheduler.Schedule(30ms, [this](TaskContext /*task*/) + scheduler.Schedule(30ms, [this](TaskContext const& /*task*/) { if (GameObject* go = GetClosestGameObjectWithEntry(me, GO_GORDOTH_CAGE, 50.0f)) go->SetGoState(GO_STATE_ACTIVE); diff --git a/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp b/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp index 81931820101a8..ca26268eb0dff 100644 --- a/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp +++ b/src/server/scripts/Karesh/EcoDomeAldani/boss_azhiccar.cpp @@ -191,12 +191,12 @@ struct boss_azhiccar : public BossAI me->SetAIAnimKitId(ANIMKIT_NONE); me->PlayOneShotAnimKitId(ANIMKIT_EMERGE); - scheduler.Schedule(2s + 170ms, [this](TaskContext context) + scheduler.Schedule(2s + 170ms, [this](TaskContext& context) { DoCastSelf(SPELL_KNOCKBACK); DoCastSelf(SPELL_DEVOUR_INTRO); - context.Schedule(7s, [this](TaskContext) + context.Schedule(7s, [this](TaskContext const&) { me->SetUninteractible(false); me->SetImmuneToAll(false); @@ -706,7 +706,7 @@ struct npc_azhiccar_intro_creature : public ScriptedAI { if (spellInfo->Id == SPELL_DEVOUR_INTRO_SELECTOR) { - _scheduler.Schedule(2000ms, 4500ms, [this](TaskContext) + _scheduler.Schedule(2000ms, 4500ms, [this](TaskContext const&) { me->SendPlayOrphanSpellVisual(OrphanSpellVisualPosition, me->GetPosition(), SPELL_VISUAL_DEVOURED, 45.0f, false); DoCastSelf(SPELL_DEVOUR_INSTAKILL); diff --git a/src/server/scripts/KhazAlgar/CityOfThreads/boss_orator_krix_vizk.cpp b/src/server/scripts/KhazAlgar/CityOfThreads/boss_orator_krix_vizk.cpp index fb7129faf172e..f328854dd04db 100644 --- a/src/server/scripts/KhazAlgar/CityOfThreads/boss_orator_krix_vizk.cpp +++ b/src/server/scripts/KhazAlgar/CityOfThreads/boss_orator_krix_vizk.cpp @@ -469,7 +469,7 @@ struct at_orator_krix_vizk_doubt : AreaTriggerAI at->InitSplines(path.GetPath()); _canHitOrigin = false; - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { _canHitOrigin = true; }); diff --git a/src/server/scripts/KhazAlgar/NerubarPalace/boss_ulgrax_the_devourer.cpp b/src/server/scripts/KhazAlgar/NerubarPalace/boss_ulgrax_the_devourer.cpp index 1506141977d98..5c9ba915228b3 100644 --- a/src/server/scripts/KhazAlgar/NerubarPalace/boss_ulgrax_the_devourer.cpp +++ b/src/server/scripts/KhazAlgar/NerubarPalace/boss_ulgrax_the_devourer.cpp @@ -83,11 +83,11 @@ struct boss_ulgrax_the_devourer : public BossAI { me->HandleEmoteCommand(EMOTE_ONESHOT_BATTLE_ROAR); - scheduler.Schedule(2s, [this](TaskContext context) + scheduler.Schedule(2s, [this](TaskContext& context) { DoCastSelf(SPELL_SWALLOWING_DARKNESS); - context.Schedule(11s, [this](TaskContext /*context*/) + context.Schedule(11s, [this](TaskContext const& /*context*/) { me->SetHomePosition(UlgraxStartCombatPosition); me->SetImmuneToAll(false); diff --git a/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp b/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp index a58a70b31b838..8b7c529e70254 100644 --- a/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp +++ b/src/server/scripts/KhazAlgar/TheStoneVault/boss_edna.cpp @@ -168,7 +168,7 @@ struct boss_edna : public BossAI return; Conversation::CreateConversation(CONVERSATION_INTRO, me, me->GetPosition(), ObjectGuid::Empty); - scheduler.Schedule(3s, [this](TaskContext /*context*/) + scheduler.Schedule(3s, [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_SKARDEN_SPAWN_PERIODIC); me->GetMotionMaster()->MovePoint(POINT_START_COMBAT, EdnaCombatPosition, true, {}, {}, MovementWalkRunSpeedSelectionMode::ForceWalk); @@ -183,7 +183,7 @@ struct boss_edna : public BossAI if (id != POINT_START_COMBAT) return; - scheduler.Schedule(1s, [this](TaskContext /*context*/) + scheduler.Schedule(1s, [this](TaskContext const& /*context*/) { instance->SetData(DATA_EDNA_INTRO_STATE, DONE); Talk(SAY_INTRO); @@ -316,7 +316,7 @@ struct npc_skardyn_invader : public ScriptedAI { DoCastSelf(SPELL_SHADOW_DISSOLVE_IN); - _scheduler.Schedule(2400ms, [this](TaskContext /*context*/) + _scheduler.Schedule(2400ms, [this](TaskContext const& /*context*/) { TempSummon* summon = me->ToTempSummon(); if (!summon) diff --git a/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp b/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp index 5d479e3be15ea..208cef53bee9b 100644 --- a/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp +++ b/src/server/scripts/KhazAlgar/campaign_visions_of_a_shadowed_sun.cpp @@ -138,7 +138,7 @@ struct npc_vereesa_windrunner_oztan_isle_private : public ScriptedAI me->RemoveNpcFlag(NPCFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER)); aratorClone->RemoveNpcFlag(NPCFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER)); - _scheduler.Schedule(1s, [this, aratorGuid = aratorClone->GetGUID()](TaskContext task) + _scheduler.Schedule(1s, [this, aratorGuid = aratorClone->GetGUID()](TaskContext& task) { Creature* aratorClone = ObjectAccessor::GetCreature(*me, aratorGuid); if (!aratorClone) @@ -146,7 +146,7 @@ struct npc_vereesa_windrunner_oztan_isle_private : public ScriptedAI me->SetMountDisplayId(Mounts::VereesaWindrunnerMount); aratorClone->SetMountDisplayId(Mounts::AratorMount); - task.Schedule(2s, [this, aratorGuid](TaskContext /*task*/) + task.Schedule(2s, [this, aratorGuid](TaskContext const& /*task*/) { Creature* aratorClone = ObjectAccessor::GetCreature(*me, aratorGuid); if (!aratorClone) diff --git a/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp b/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp index 5568b7d5852df..e04572208988a 100644 --- a/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp +++ b/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_1_the_final_effigy.cpp @@ -71,7 +71,7 @@ struct npc_helena_gentle_witch_hunt : public ScriptedAI void JustAppeared() override { - _oocScheduler.Schedule(0ms, [this](TaskContext context) + _oocScheduler.Schedule(0ms, [this](TaskContext& context) { if (Creature* hexboundSnarler = me->FindNearestCreatureWithOptions(50.0f, { .CreatureId = NPC_HEXBOUND_SNARLER, .StringId = "HelenaSummon", .IsAlive = FindCreatureAliveState::Alive })) { diff --git a/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_3_an_airtight_alibi.cpp b/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_3_an_airtight_alibi.cpp index 1022f2f58f19e..8436b85478811 100644 --- a/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_3_an_airtight_alibi.cpp +++ b/src/server/scripts/KulTiras/Drustvar/drustvar_chapter_3_an_airtight_alibi.cpp @@ -98,13 +98,13 @@ struct npc_drustvar_frightend_woodsman_private : public ScriptedAI me->SetUninteractible(true); me->SetImmuneToAll(true); - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { me->RemoveNpcFlag(UNIT_NPC_FLAG_SPELLCLICK); Talk(SAY_FRIGHTENDED_WOODSMAN_RALLIED); }); - _scheduler.Schedule(3s, [this](TaskContext /*task*/) + _scheduler.Schedule(3s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(GetPathId(), false); }); diff --git a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_aqusirr.cpp b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_aqusirr.cpp index 3c25f72d16f18..0afc202a63dec 100644 --- a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_aqusirr.cpp +++ b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_aqusirr.cpp @@ -333,49 +333,49 @@ struct npc_aqusirr_intro_lord_stormsong : public CreatureAI Milliseconds delay = 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { me->SetFacingTo(0.1939797f); }); delay += 3s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_AQUSIRR_INTRO_1); }); delay += 6s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_AQUSIRR_INTRO_2); }); delay += 6s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { DoCastSelf(SPELL_REQUIEM_OF_THE_ABYSS); }); delay += 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { DoCastSelf(SPELL_REQUIEM_OF_THE_ABYSS_PERIODIC, TRIGGERED_IGNORE_CAST_IN_PROGRESS); }); delay += 6s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { me->GetMap()->SpawnGroupSpawn(SPAWN_GROUP_ID_AQUSIRR); }); delay += 3800ms; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { DoCastSelf(SPELL_SPLASHING_WATERS); }); diff --git a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp index 683f206f23e50..220cf17f795c1 100644 --- a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp +++ b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_lord_stormsong.cpp @@ -159,7 +159,7 @@ struct boss_lord_stormsong : public BossAI me->SetEmoteState(EMOTE_ONESHOT_NONE); me->GetMap()->SummonCreature(instance->instance->GetTeamInInstance() == HORDE ? NPC_LORD_STORMSONG_REXXAR : NPC_LORD_STORMSONG_BROTHER_PIKE, IntroPosition); - scheduler.Schedule(11s, [this](TaskContext task) + scheduler.Schedule(11s, [this](TaskContext& task) { me->SetFacingTo(1.047197f); me->SetOrientation(me->GetOrientation()); @@ -169,11 +169,11 @@ struct boss_lord_stormsong : public BossAI azshara->DespawnOrUnsummon(); - task.Schedule(16s, [this](TaskContext task) + task.Schedule(16s, [this](TaskContext& task) { DoCastSelf(SPELL_DARK_BINDING); - task.Schedule(6s, [this](TaskContext) + task.Schedule(6s, [this](TaskContext const&) { me->SetImmuneToPC(false); me->SetEmoteState(EMOTE_STATE_READY1H); diff --git a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp index b036ff896b80a..503661237faba 100644 --- a/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp +++ b/src/server/scripts/KulTiras/ShrineOfTheStorm/boss_tidesage_council.cpp @@ -420,7 +420,7 @@ struct at_tidesage_council_reinforcing_ward : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { for (ObjectGuid const& guid : at->GetInsideUnits()) { diff --git a/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp b/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp index 980daec93cc37..698f053b43c71 100644 --- a/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp +++ b/src/server/scripts/KulTiras/WaycrestManor/boss_soulbound_goliath.cpp @@ -115,7 +115,7 @@ struct boss_soulbound_goliath : public BossAI { case ACTION_SOULBOUND_GOLIATH_INTRO: { - _scheduler.Schedule(1s + 500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(1s + 500ms, [this](TaskContext const& /*task*/) { me->SetAIAnimKitId(ANIMKIT_NONE); me->PlayOneShotAnimKitId(ANIMKIT_AWAKE); diff --git a/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp b/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp index 444508cdbf0b1..0b2f94e322834 100644 --- a/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp +++ b/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp @@ -286,7 +286,7 @@ struct at_waycrest_manor_organ_missiles : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(100ms, 300ms, [this](TaskContext task) + _scheduler.Schedule(100ms, 300ms, [this](TaskContext& task) { if (Unit* caster = at->GetCaster()) caster->CastSpell(at->GetPosition(), SPELL_ORGAN_MISSILES, TRIGGERED_IGNORE_CAST_IN_PROGRESS); diff --git a/src/server/scripts/KulTiras/zone_boralus.cpp b/src/server/scripts/KulTiras/zone_boralus.cpp index 484057728923b..fcc69bf19b589 100644 --- a/src/server/scripts/KulTiras/zone_boralus.cpp +++ b/src/server/scripts/KulTiras/zone_boralus.cpp @@ -701,10 +701,10 @@ struct npc_7th_legion_magus_sanctum_of_the_sages : public ScriptedAI if (pathId == PATH_MAGUS_OPEN_PORTAL_EXODAR) { DoCastAOE(SPELL_LEGION_MAGUS_ARCANE_CHANNEL); - _scheduler.Schedule(3s + 500ms, [this](TaskContext task) + _scheduler.Schedule(3s + 500ms, [this](TaskContext& task) { me->InterruptSpell(CURRENT_CHANNELED_SPELL); - task.Schedule(1s + 500ms, [this](TaskContext /*task*/) + task.Schedule(1s + 500ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_MAGUS_FINISH_PORTAL_EXODAR, false); }); @@ -713,10 +713,10 @@ struct npc_7th_legion_magus_sanctum_of_the_sages : public ScriptedAI else if (pathId == PATH_MAGUS_OPEN_PORTAL_IRONFORGE) { DoCastAOE(SPELL_LEGION_MAGUS_ARCANE_CHANNEL); - _scheduler.Schedule(3s + 500ms, [this](TaskContext task) + _scheduler.Schedule(3s + 500ms, [this](TaskContext& task) { me->InterruptSpell(CURRENT_CHANNELED_SPELL); - task.Schedule(1s + 500ms, [this](TaskContext /*task*/) + task.Schedule(1s + 500ms, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_MAGUS_FINISH_PORTAL_IRONFORGE, false); }); @@ -725,10 +725,10 @@ struct npc_7th_legion_magus_sanctum_of_the_sages : public ScriptedAI else if (pathId == PATH_MAGUS_OPEN_PORTAL_STORMWIND) { DoCastAOE(SPELL_LEGION_MAGUS_ARCANE_CHANNEL); - _scheduler.Schedule(3s + 500ms, [this](TaskContext task) + _scheduler.Schedule(3s + 500ms, [this](TaskContext& task) { me->InterruptSpell(CURRENT_CHANNELED_SPELL); - task.Schedule(1s + 500ms, [this](TaskContext /*task*/) + task.Schedule(1s + 500ms, [this](TaskContext const& /*task*/) { TempSummon* summon = me->ToTempSummon(); if (!summon) diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index 9b6896f705d71..ef19a1f9b6030 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -213,7 +213,7 @@ struct npc_amanitar_mushrooms : public ScriptedAI { DoCastSelf(SPELL_POISONOUS_MUSHROOM_VISUAL_AURA); - _scheduler.Schedule(1s, [this](TaskContext checkRangeContext) + _scheduler.Schedule(1s, [this](TaskContext& checkRangeContext) { std::vector playersNearby; GetPlayerListInGrid(playersNearby, me, 2.0f); @@ -226,7 +226,7 @@ struct npc_amanitar_mushrooms : public ScriptedAI DoCastAOE(SPELL_POISONOUS_MUSHROOM_POISON_CLOUD); - _scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(1), [this](TaskContext const& /*context*/) { me->SetObjectScale(0.1f); me->DespawnOrUnsummon(Seconds(4)); @@ -237,7 +237,7 @@ struct npc_amanitar_mushrooms : public ScriptedAI }); } - _scheduler.Schedule(Milliseconds(800), [this](TaskContext /*context*/) + _scheduler.Schedule(Milliseconds(800), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_GROW, true); }); diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index 0812891367b27..0c9962997f854 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -165,17 +165,17 @@ struct boss_volazj : public BossAI void ScheduleTasks() override { - scheduler.Schedule(8s, [this](TaskContext task) + scheduler.Schedule(8s, [this](TaskContext& task) { DoCastVictim(SPELL_MIND_FLAY); task.Repeat(20s); }) - .Schedule(5s, [this](TaskContext task) + .Schedule(5s, [this](TaskContext& task) { DoCastVictim(SPELL_SHADOW_BOLT_VOLLEY); task.Repeat(); }) - .Schedule(15s, [this](TaskContext task) + .Schedule(15s, [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_SHIVER); @@ -442,11 +442,11 @@ struct npc_twisted_visage : public ScriptedAI switch (ChrSpecialization(data)) { case ChrSpecialization::WarriorArms: - _scheduler.Schedule(3s, [this](TaskContext mortalStrike) + _scheduler.Schedule(3s, [this](TaskContext& mortalStrike) { DoCastVictim(SPELL_TWISTED_VISAGE_MORTAL_STRIKE); mortalStrike.Repeat(3s, 5s); - }).Schedule(5s, [this](TaskContext harmstring) + }).Schedule(5s, [this](TaskContext& harmstring) { DoCastVictim(SPELL_TWISTED_VISAGE_HAMSTRING); harmstring.Repeat(5s, 10s); @@ -454,7 +454,7 @@ struct npc_twisted_visage : public ScriptedAI break; default: case ChrSpecialization::WarriorFury: - _scheduler.Schedule(2s, [this](TaskContext intercept) + _scheduler.Schedule(2s, [this](TaskContext& intercept) { if (!me->IsWithinCombatRange(me->GetVictim(), 8.0f)) { @@ -463,18 +463,18 @@ struct npc_twisted_visage : public ScriptedAI } else intercept.Repeat(1s); - }).Schedule(3s, [this](TaskContext bloodthirst) + }).Schedule(3s, [this](TaskContext& bloodthirst) { DoCastVictim(SPELL_TWISTED_VISAGE_BLOODTHIRST); bloodthirst.Repeat(3s, 5s); }); break; case ChrSpecialization::WarriorProtection: - _scheduler.Schedule(5s, [this](TaskContext thunderClap) + _scheduler.Schedule(5s, [this](TaskContext& thunderClap) { DoCastSelf(SPELL_TWISTED_VISAGE_THUNDER_CLAP); thunderClap.Repeat(5s, 10s); - }).Schedule(3s, [this](TaskContext devastate) + }).Schedule(3s, [this](TaskContext& devastate) { DoCastVictim(SPELL_TWISTED_VISAGE_DEVASTATE); devastate.Repeat(3s, 5s); @@ -486,11 +486,11 @@ struct npc_twisted_visage : public ScriptedAI switch (ChrSpecialization(data)) { case ChrSpecialization::PaladinProtection: - _scheduler.Schedule(5s, [this](TaskContext consecration) + _scheduler.Schedule(5s, [this](TaskContext& consecration) { DoCastSelf(SPELL_TWISTED_VISAGE_CONSECRATION); consecration.Repeat(5s, 10s); - }).Schedule(2s, [this](TaskContext avengersShield) + }).Schedule(2s, [this](TaskContext& avengersShield) { DoCastVictim(SPELL_TWISTED_VISAGE_AVENGER__S_SHIELD); avengersShield.Repeat(5s, 10s); @@ -498,14 +498,14 @@ struct npc_twisted_visage : public ScriptedAI break; default: case ChrSpecialization::PaladinRetribution: - _scheduler.Schedule(5s, [this](TaskContext consecration) + _scheduler.Schedule(5s, [this](TaskContext& consecration) { DoCastSelf(SPELL_TWISTED_VISAGE_CONSECRATION); consecration.Repeat(5s, 10s); - }).Schedule(2s, [this](TaskContext /*sealCommand*/) + }).Schedule(2s, [this](TaskContext const& /*sealCommand*/) { DoCastSelf(SPELL_TWISTED_VISAGE_SEAL_OF_COMMAND); - }).Schedule(3s, [this](TaskContext judgementLight) + }).Schedule(3s, [this](TaskContext& judgementLight) { DoCastVictim(SPELL_TWISTED_VISAGE_JUDGEMENT_OF_LIGHT); judgementLight.Repeat(3s, 5s); @@ -514,11 +514,11 @@ struct npc_twisted_visage : public ScriptedAI } break; case CLASS_HUNTER: - _scheduler.Schedule(2s, [this](TaskContext shoot) + _scheduler.Schedule(2s, [this](TaskContext& shoot) { DoCastVictim(SPELL_TWISTED_VISAGE_SHOOT); shoot.Repeat(1s, 4s); - }).Schedule(5s, [this](TaskContext disengage) + }).Schedule(5s, [this](TaskContext& disengage) { if (me->IsWithinCombatRange(me->GetVictim(), 4.0f)) { @@ -531,11 +531,11 @@ struct npc_twisted_visage : public ScriptedAI break; case CLASS_ROGUE: me->SetCanDualWield(true); - _scheduler.Schedule(5s, [this](TaskContext eviscerate) + _scheduler.Schedule(5s, [this](TaskContext& eviscerate) { DoCastVictim(SPELL_TWISTED_VISAGE_EVISCERATE); eviscerate.Repeat(5s, 10s); - }).Schedule(2s, [this](TaskContext sinisterStrike) + }).Schedule(2s, [this](TaskContext& sinisterStrike) { DoCastVictim(SPELL_TWISTED_VISAGE_SINISTER_STRIKE); sinisterStrike.Repeat(3s, 5s); @@ -545,18 +545,18 @@ struct npc_twisted_visage : public ScriptedAI switch (ChrSpecialization(data)) { case ChrSpecialization::PriestShadow: - _scheduler.Schedule(5s, [this](TaskContext shadowWordPain) + _scheduler.Schedule(5s, [this](TaskContext& shadowWordPain) { DoCastVictim(SPELL_TWISTED_VISAGE_SHADOW_WORD_PAIN); shadowWordPain.Repeat(5s, 10s); - }).Schedule(2s, [this](TaskContext mindFlay) + }).Schedule(2s, [this](TaskContext& mindFlay) { DoCastVictim(SPELL_TWISTED_VISAGE_MIND_FLAY); mindFlay.Repeat(3s, 5s); }); break; default: - _scheduler.Schedule(2s, [this](TaskContext renew) + _scheduler.Schedule(2s, [this](TaskContext& renew) { if (Unit* target = DoSelectLowestHpFriendly(40.f)) { @@ -565,7 +565,7 @@ struct npc_twisted_visage : public ScriptedAI } else renew.Repeat(1s); - }).Schedule(4s, [this](TaskContext greaterHeal) + }).Schedule(4s, [this](TaskContext& greaterHeal) { if (Unit* target = DoSelectLowestHpFriendly(40.f)) { @@ -579,7 +579,7 @@ struct npc_twisted_visage : public ScriptedAI } break; case CLASS_DEATH_KNIGHT: - _scheduler.Schedule(5s, [this](TaskContext deathGrip) + _scheduler.Schedule(5s, [this](TaskContext& deathGrip) { if (!me->IsWithinCombatRange(me->GetVictim(), 3.0f)) { @@ -588,7 +588,7 @@ struct npc_twisted_visage : public ScriptedAI } else deathGrip.Repeat(1s); - }).Schedule(2s, [this](TaskContext plagueStrike) + }).Schedule(2s, [this](TaskContext& plagueStrike) { DoCastVictim(SPELL_TWISTED_VISAGE_PLAGUE_STRIKE); plagueStrike.Repeat(3s, 5s); @@ -599,25 +599,25 @@ struct npc_twisted_visage : public ScriptedAI { default: case ChrSpecialization::ShamanElemental: - _scheduler.Schedule(5s, [this](TaskContext thunderstorm) + _scheduler.Schedule(5s, [this](TaskContext& thunderstorm) { DoCastSelf(SPELL_TWISTED_VISAGE_THUNDERSTORM); thunderstorm.Repeat(5s, 10s); - }).Schedule(2s, [this](TaskContext lightningBolt) + }).Schedule(2s, [this](TaskContext& lightningBolt) { DoCastVictim(SPELL_TWISTED_VISAGE_LIGHTNING_BOLT); lightningBolt.Repeat(3s, 5s); }); break; case ChrSpecialization::ShamanEnhancement: - _scheduler.Schedule(2s, [this](TaskContext earthShock) + _scheduler.Schedule(2s, [this](TaskContext& earthShock) { DoCastVictim(SPELL_TWISTED_VISAGE_EARTH_SHOCK); earthShock.Repeat(3s, 5s); }); break; case ChrSpecialization::ShamanRestoration: - _scheduler.Schedule(2s, [this](TaskContext earthShield) + _scheduler.Schedule(2s, [this](TaskContext& earthShield) { if (Unit* target = DoSelectLowestHpFriendly(40.f)) { @@ -626,7 +626,7 @@ struct npc_twisted_visage : public ScriptedAI } else earthShield.Repeat(1s); - }).Schedule(4s, [this](TaskContext healingWave) + }).Schedule(4s, [this](TaskContext& healingWave) { if (Unit* target = DoSelectLowestHpFriendly(40.f)) { @@ -640,22 +640,22 @@ struct npc_twisted_visage : public ScriptedAI } break; case CLASS_MAGE: - _scheduler.Schedule(5s, [this](TaskContext frostNova) + _scheduler.Schedule(5s, [this](TaskContext& frostNova) { DoCastSelf(SPELL_TWISTED_VISAGE_FROST_NOVA); frostNova.Repeat(5s, 10s); - }).Schedule(2s, [this](TaskContext fireball) + }).Schedule(2s, [this](TaskContext& fireball) { DoCastVictim(SPELL_TWISTED_VISAGE_FIREBALL); fireball.Repeat(3s, 5s); }); break; case CLASS_WARLOCK: - _scheduler.Schedule(2s, [this](TaskContext corruption) + _scheduler.Schedule(2s, [this](TaskContext& corruption) { DoCastVictim(SPELL_TWISTED_VISAGE_CORRUPTION); corruption.Repeat(6s, 10s); - }).Schedule(3s, [this](TaskContext shadowBolt) + }).Schedule(3s, [this](TaskContext& shadowBolt) { DoCastVictim(SPELL_TWISTED_VISAGE_SHADOW_BOLT); shadowBolt.Repeat(3s, 5s); @@ -665,11 +665,11 @@ struct npc_twisted_visage : public ScriptedAI switch (ChrSpecialization(data)) { case ChrSpecialization::DruidBalance: - _scheduler.Schedule(2s, [this](TaskContext moonfire) + _scheduler.Schedule(2s, [this](TaskContext& moonfire) { DoCastVictim(SPELL_TWISTED_VISAGE_MOONFIRE); moonfire.Repeat(3s, 5s); - }).Schedule(3s, [this](TaskContext wrath) + }).Schedule(3s, [this](TaskContext& wrath) { DoCastVictim(SPELL_TWISTED_VISAGE_WRATH); wrath.Repeat(3s, 5s); @@ -677,14 +677,14 @@ struct npc_twisted_visage : public ScriptedAI break; case ChrSpecialization::DruidGuardian: case ChrSpecialization::DruidFeral: - _scheduler.Schedule(1ms, [this](TaskContext /*catForm*/) + _scheduler.Schedule(1ms, [this](TaskContext const& /*catForm*/) { DoCastSelf(SPELL_TWISTED_VISAGE_CAT_FORM); - }).Schedule(2s, [this](TaskContext mangle) + }).Schedule(2s, [this](TaskContext& mangle) { DoCastVictim(SPELL_TWISTED_VISAGE_MANGLE); mangle.Repeat(3s, 5s); - }).Schedule(3s, [this](TaskContext rip) + }).Schedule(3s, [this](TaskContext& rip) { DoCastVictim(SPELL_TWISTED_VISAGE_RIP); rip.Repeat(3s, 5s); @@ -692,7 +692,7 @@ struct npc_twisted_visage : public ScriptedAI break; default: case ChrSpecialization::DruidRestoration: - _scheduler.Schedule(2s, [this](TaskContext lifebloom) + _scheduler.Schedule(2s, [this](TaskContext& lifebloom) { if (Unit* target = DoSelectLowestHpFriendly(40.f)) { @@ -701,7 +701,7 @@ struct npc_twisted_visage : public ScriptedAI } else lifebloom.Repeat(1s); - }).Schedule(4s, [this](TaskContext nourish) + }).Schedule(4s, [this](TaskContext& nourish) { if (Unit* target = DoSelectLowestHpFriendly(40.f)) { diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp index c6bd4787e05d6..f3df0d69fab6d 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp @@ -441,7 +441,7 @@ struct npc_twilight_volunteer : public ScriptedAI jedoga->AI()->DoAction(ACTION_SACRIFICE); Talk(SAY_SACRIFICED); - _scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(3), [this](TaskContext const& /*context*/) { me->SetStandState(UNIT_STAND_STATE_DEAD); me->DespawnOrUnsummon(Seconds(5)); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index c4eaeef3df957..97e6258272d4c 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -485,7 +485,7 @@ struct npc_anubarak_anub_ar_assassin : public npc_anubarak_pet_template void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(6s, [this](TaskContext task) + _scheduler.Schedule(6s, [this](TaskContext& task) { if (me->GetVictim() && me->GetVictim()->isInBack(me)) DoCastVictim(SPELL_BACKSTAB); @@ -526,7 +526,7 @@ struct npc_anubarak_anub_ar_guardian : public npc_anubarak_pet_template void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(6s, [this](TaskContext task) + _scheduler.Schedule(6s, [this](TaskContext& task) { DoCastVictim(SPELL_SUNDER_ARMOR); task.Repeat(12s); @@ -556,7 +556,7 @@ struct npc_anubarak_anub_ar_venomancer : public npc_anubarak_pet_template void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(5s, [this](TaskContext task) + _scheduler.Schedule(5s, [this](TaskContext& task) { DoCastVictim(SPELL_POISON_BOLT); task.Repeat(2s, 3s); diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 5b5af02855b76..b30e99cef487b 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -937,7 +937,7 @@ class npc_orb_carrier : public CreatureScript if (northOrb && northOrb->GetTypeId() == TYPEID_UNIT) northOrb->ToCreature()->AI()->Talk(EMOTE_WARN_LASER); - scheduler.Schedule(Seconds(5), [this](TaskContext /*context*/) + scheduler.Schedule(Seconds(5), [this](TaskContext const& /*context*/) { DoAction(ACTION_SHOOT); }); @@ -1284,7 +1284,7 @@ class npc_living_inferno : public CreatureScript // SMSG_SPELL_GO for the living ember stuff isn't even sent to the client - Blizzard on drugs. if (me->GetMap()->GetDifficultyID() == DIFFICULTY_25_HC) - scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/) + scheduler.Schedule(Seconds(3), [this](TaskContext const& /*context*/) { me->CastSpell(me, SPELL_SPAWN_LIVING_EMBERS, true); }); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index 752879f7ad253..db1f7553be63b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -345,7 +345,7 @@ struct npc_fel_infernal : public ScriptedAI return !me->HasUnitState(UNIT_STATE_CASTING); }); - _scheduler.Schedule(Seconds(2), [this](TaskContext context) + _scheduler.Schedule(Seconds(2), [this](TaskContext& context) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true)) DoCast(target, SPELL_FEL_STREAK_VISUAL); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index affd9a0ee1a1b..260b385504694 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -646,7 +646,7 @@ struct npc_open_portal_target_toc : public ScriptedAI { if (spellInfo->Id == SPELL_OPEN_PORTAL) { - _scheduler.Schedule(2s, [this](TaskContext /*wilfredPortal*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*wilfredPortal*/) { DoCastSelf(SPELL_WILFRED_PORTAL); me->DespawnOrUnsummon(9s); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index 0372d88925c49..9d0edc6fd286d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -204,7 +204,7 @@ struct npc_pit_of_saron_icicle : public PassiveAI { _summonerGUID = summoner->GetGUID(); - _scheduler.Schedule(Milliseconds(3650), [this](TaskContext /*context*/) + _scheduler.Schedule(Milliseconds(3650), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_ICICLE_FALL_TRIGGER, true); DoCastSelf(SPELL_ICICLE_FALL_VISUAL); diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index a2a1ad294ea98..13ba3264ce8ac 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -362,12 +362,12 @@ struct npc_living_mojo : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { DoCastVictim(SPELL_MOJO_WAVE); task.Repeat(15s); }) - .Schedule(7s, [this](TaskContext task) + .Schedule(7s, [this](TaskContext& task) { DoCastVictim(SPELL_MOJO_PUDDLE); task.Repeat(18s); diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index d274c9d1162e5..bf7a73f842a42 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -110,18 +110,18 @@ struct boss_slad_ran : public BossAI void ScheduleTasks() override { scheduler - .Schedule(10s, [this](TaskContext task) + .Schedule(10s, [this](TaskContext& task) { DoCastVictim(SPELL_POISON_NOVA); Talk(EMOTE_NOVA); task.Repeat(15s); }) - .Schedule(3s, [this](TaskContext task) + .Schedule(3s, [this](TaskContext& task) { DoCastVictim(SPELL_POWERFULL_BITE); task.Repeat(10s); }) - .Schedule(15s, [this](TaskContext task) + .Schedule(15s, [this](TaskContext& task) { DoCastVictim(SPELL_VENOM_BOLT); task.Repeat(10s); @@ -143,7 +143,7 @@ struct boss_slad_ran : public BossAI Talk(SAY_SUMMON_SNAKES); _phase = Phase::PHASE_SNAKES; - scheduler.Schedule(5s, GROUP_SNAKES, [this](TaskContext task) + scheduler.Schedule(5s, GROUP_SNAKES, [this](TaskContext& task) { for (uint8 i = 0; i < DUNGEON_MODE(3, 5); ++i) me->SummonCreature(CREATURE_SNAKE, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20s); @@ -158,7 +158,7 @@ struct boss_slad_ran : public BossAI _phase = Phase::PHASE_CONSTRICTORS; scheduler.CancelGroup(GROUP_SNAKES); - scheduler.Schedule(5s, [this](TaskContext task) + scheduler.Schedule(5s, [this](TaskContext& task) { for (uint8 i = 0; i < DUNGEON_MODE(3, 5); ++i) me->SummonCreature(CREATURE_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20s); @@ -214,7 +214,7 @@ struct npc_slad_ran_constrictor : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { Unit* target = me->GetVictim(); @@ -260,7 +260,7 @@ struct npc_slad_ran_viper : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { DoCastVictim(SPELL_VENOMOUS_BITE); task.Repeat(10s); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 166e39964190d..9cd68ace8f08f 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -923,7 +923,7 @@ struct npc_ball_of_flame : public ScriptedAI { me->RemoveAurasDueToSpell(SPELL_BALL_OF_FLAMES_PERIODIC); DoCastSelf(SPELL_FLAMES); - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_FLAME_SPHERE_DEATH_EFFECT); }); @@ -1044,7 +1044,7 @@ struct npc_dark_nucleus : public ScriptedAI void JustEngagedWith(Unit* who) override { - _scheduler.Schedule(Seconds(1), [this](TaskContext targetAuraCheck) + _scheduler.Schedule(Seconds(1), [this](TaskContext& targetAuraCheck) { if (Unit* victim = me->GetVictim()) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index 7ac91ae5cf8ba..97928db3da586 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -242,7 +242,7 @@ struct boss_lady_deathwhisper : public BossAI Talk(SAY_INTRO_1); _phase = PHASE_INTRO; - scheduler.Schedule(Seconds(10), GROUP_INTRO, [this](TaskContext context) + scheduler.Schedule(Seconds(10), GROUP_INTRO, [this](TaskContext& context) { switch (context.GetRepeatCounter()) { @@ -299,19 +299,19 @@ struct boss_lady_deathwhisper : public BossAI scheduler.CancelGroup(GROUP_INTRO); // phase-independent events scheduler - .Schedule(Minutes(10), [this](TaskContext /*context*/) + .Schedule(Minutes(10), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_BERSERK); Talk(SAY_BERSERK); }) - .Schedule(Seconds(17), [this](TaskContext death_and_decay) + .Schedule(Seconds(17), [this](TaskContext& death_and_decay) { if (Unit* target = SelectTarget(SelectTargetMethod::Random)) DoCast(target, SPELL_DEATH_AND_DECAY); death_and_decay.Repeat(Seconds(22), Seconds(30)); }); if (GetDifficulty() != DIFFICULTY_10_N) - scheduler.Schedule(Seconds(27), [this](TaskContext dominate_mind) + scheduler.Schedule(Seconds(27), [this](TaskContext& dominate_mind) { Talk(SAY_DOMINATE_MIND); std::list targets; @@ -322,18 +322,18 @@ struct boss_lady_deathwhisper : public BossAI }); // phase one only scheduler - .Schedule(Seconds(5), GROUP_ONE, [this](TaskContext wave) + .Schedule(Seconds(5), GROUP_ONE, [this](TaskContext& wave) { SummonWaveP1(); wave.Repeat(Seconds(IsHeroic() ? 45 : 60)); }) - .Schedule(Seconds(2), GROUP_ONE, [this](TaskContext shadow_bolt) + .Schedule(Seconds(2), GROUP_ONE, [this](TaskContext& shadow_bolt) { if (Unit* target = SelectTarget(SelectTargetMethod::Random)) DoCast(target, SPELL_SHADOW_BOLT); shadow_bolt.Repeat(Milliseconds(2450), Milliseconds(3600)); }) - .Schedule(Seconds(15), GROUP_ONE, [this](TaskContext context) + .Schedule(Seconds(15), GROUP_ONE, [this](TaskContext& context) { DoImproveCultist(); context.Repeat(Seconds(25)); @@ -425,23 +425,23 @@ struct boss_lady_deathwhisper : public BossAI scheduler.CancelGroup(GROUP_ONE); scheduler - .Schedule(Seconds(12), GROUP_TWO, [this](TaskContext frostbolt) + .Schedule(Seconds(12), GROUP_TWO, [this](TaskContext& frostbolt) { DoCastVictim(SPELL_FROSTBOLT); frostbolt.Repeat(); }) - .Schedule(Seconds(20), GROUP_TWO, [this](TaskContext frostboldVolley) + .Schedule(Seconds(20), GROUP_TWO, [this](TaskContext& frostboldVolley) { DoCastAOE(SPELL_FROSTBOLT_VOLLEY); frostboldVolley.Repeat(); }) - .Schedule(Seconds(6), Seconds(9), GROUP_TWO, [this](TaskContext touch) + .Schedule(Seconds(6), Seconds(9), GROUP_TWO, [this](TaskContext& touch) { if (me->GetVictim()) me->AddAura(SPELL_TOUCH_OF_INSIGNIFICANCE, me->EnsureVictim()); touch.Repeat(); }) - .Schedule(Seconds(12), GROUP_TWO, [this](TaskContext summonShade) + .Schedule(Seconds(12), GROUP_TWO, [this](TaskContext& summonShade) { CastSpellExtraArgs args; args.AddSpellMod(SPELLVALUE_MAX_TARGETS, Is25ManRaid() ? 2 : 1); @@ -454,7 +454,7 @@ struct boss_lady_deathwhisper : public BossAI { me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true); - scheduler.Schedule(Seconds(), GROUP_TWO, [this](TaskContext context) + scheduler.Schedule(Seconds(), GROUP_TWO, [this](TaskContext& context) { SummonWaveP2(); context.Repeat(Seconds(45)); @@ -599,17 +599,17 @@ struct npc_cult_fanatic : public ScriptedAI { return !me->HasUnitState(UNIT_STATE_CASTING); }) - .Schedule(Seconds(17), [this](TaskContext vampiric_might) + .Schedule(Seconds(17), [this](TaskContext& vampiric_might) { DoCastSelf(SPELL_VAMPIRIC_MIGHT); vampiric_might.Repeat(Seconds(25)); }) - .Schedule(Seconds(12), [this](TaskContext shadow_cleave) + .Schedule(Seconds(12), [this](TaskContext& shadow_cleave) { DoCastVictim(SPELL_SHADOW_CLEAVE); shadow_cleave.Repeat(Seconds(14)); }) - .Schedule(Seconds(10), [this](TaskContext necrotic_strike) + .Schedule(Seconds(10), [this](TaskContext& necrotic_strike) { DoCastVictim(SPELL_NECROTIC_STRIKE); necrotic_strike.Repeat(Seconds(17)); @@ -639,7 +639,7 @@ struct npc_cult_fanatic : public ScriptedAI case SPELL_DARK_MARTYRDOM_FANATIC_10H: case SPELL_DARK_MARTYRDOM_FANATIC_25H: _scheduler - .Schedule(Seconds(2), [this](TaskContext /*context*/) + .Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->UpdateEntry(NPC_REANIMATED_FANATIC); DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH); @@ -647,7 +647,7 @@ struct npc_cult_fanatic : public ScriptedAI DoCastSelf(SPELL_FULL_HEAL, true); me->SetUninteractible(true); }) - .Schedule(Seconds(6), [this](TaskContext /*context*/) + .Schedule(Seconds(6), [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH); me->SetUninteractible(false); @@ -688,7 +688,7 @@ struct npc_cult_adherent : public ScriptedAI { return !me->HasUnitState(UNIT_STATE_CASTING); }) - .Schedule(Seconds(5), [this](TaskContext deathchill) + .Schedule(Seconds(5), [this](TaskContext& deathchill) { if (me->GetEntry() == NPC_EMPOWERED_ADHERENT) DoCastVictim(SPELL_DEATHCHILL_BLAST); @@ -696,12 +696,12 @@ struct npc_cult_adherent : public ScriptedAI DoCastVictim(SPELL_DEATHCHILL_BOLT); deathchill.Repeat(Milliseconds(2500)); }) - .Schedule(Seconds(15), [this](TaskContext shroud_of_the_occult) + .Schedule(Seconds(15), [this](TaskContext& shroud_of_the_occult) { DoCastSelf(SPELL_SHROUD_OF_THE_OCCULT); shroud_of_the_occult.Repeat(Seconds(10)); }) - .Schedule(Seconds(15), [this](TaskContext curse_of_torpor) + .Schedule(Seconds(15), [this](TaskContext& curse_of_torpor) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) DoCast(target, SPELL_CURSE_OF_TORPOR); @@ -727,7 +727,7 @@ struct npc_cult_adherent : public ScriptedAI case SPELL_DARK_MARTYRDOM_ADHERENT_10H: case SPELL_DARK_MARTYRDOM_ADHERENT_25H: _scheduler - .Schedule(Seconds(2), [this](TaskContext /*context*/) + .Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->UpdateEntry(NPC_REANIMATED_ADHERENT); DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH); @@ -735,7 +735,7 @@ struct npc_cult_adherent : public ScriptedAI DoCastSelf(SPELL_FULL_HEAL, true); me->SetUninteractible(true); }) - .Schedule(Seconds(6), [this](TaskContext /*context*/) + .Schedule(Seconds(6), [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH); me->SetUninteractible(false); @@ -775,12 +775,12 @@ struct npc_vengeful_shade : public ScriptedAI me->AddAura(SPELL_VENGEFUL_BLAST_PASSIVE, me); _scheduler - .Schedule(Seconds(2), [this](TaskContext /*context*/) + .Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); me->AI()->AttackStart(ObjectAccessor::GetUnit(*me, _targetGUID)); }) - .Schedule(Seconds(7), [this](TaskContext /*context*/) + .Schedule(Seconds(7), [this](TaskContext const& /*context*/) { me->KillSelf(); }); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index ff1e31d15adc9..46a82cd39887c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -661,7 +661,7 @@ struct npc_icc_orb_controller : public ScriptedAI void Reset() override { - _scheduler.Schedule(1s, [this](TaskContext /*initialize*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*initialize*/) { std::vector creatures; ICCOrbControllerMinionSearch check(me, false); @@ -683,7 +683,7 @@ struct npc_icc_orb_controller : public ScriptedAI void ScheduleVisualChannel(bool evading) { - _scheduler.Schedule(evading ? 5s : 1s, [this](TaskContext visual) + _scheduler.Schedule(evading ? 5s : 1s, [this](TaskContext& visual) { ObjectGuid guid = Trinity::Containers::SelectRandomContainerElement(_minionGuids); if (Unit* minion = ObjectAccessor::GetUnit(*me, guid)) @@ -783,7 +783,7 @@ struct DarkFallenAI : public ScriptedAI { return !me->HasUnitState(UNIT_STATE_CASTING); }) - .Schedule(1s, 10s, [this](TaskContext emote) + .Schedule(1s, 10s, [this](TaskContext& emote) { if (!IsDoingEmotes) return; @@ -800,7 +800,7 @@ struct DarkFallenAI : public ScriptedAI DoCast(friendly, SPELL_POLYMORPH_ALLY); } } - Scheduler.Schedule(1s, [this](TaskContext /*emote*/) + emote.Schedule(1s, [this](TaskContext& /*emote*/) { me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(DarkFallensEmotes)); }); @@ -861,16 +861,16 @@ struct npc_darkfallen_blood_knight : public DarkFallenAI void ScheduleSpells() override { - Scheduler.Schedule(500ms, [this](TaskContext /*context*/) + Scheduler.Schedule(500ms, [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_VAMPIRIC_AURA); }) - .Schedule(8s, [this](TaskContext unholyStrike) + .Schedule(8s, [this](TaskContext& unholyStrike) { DoCastVictim(SPELL_UNHOLY_STRIKE); unholyStrike.Repeat(8s, 9s); }) - .Schedule(6s, [this](TaskContext bloodMirror) + .Schedule(6s, [this](TaskContext& bloodMirror) { DoCastSelf(SPELL_BLOOD_MIRROR); bloodMirror.Repeat(34s); @@ -888,12 +888,12 @@ struct npc_darkfallen_noble : public DarkFallenAI void ScheduleSpells() override { AttackSpellId = SPELL_SHADOW_BOLT; - Scheduler.Schedule(500ms, [this](TaskContext /*context*/) + Scheduler.Schedule(500ms, [this](TaskContext const& /*context*/) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false, -SPELL_CHAINS_OF_SHADOW)) DoCast(target, SPELL_CHAINS_OF_SHADOW); }) - .Schedule(11s, [this](TaskContext summonVampiric) + .Schedule(11s, [this](TaskContext& summonVampiric) { // Vampiric should be summoned by 70647 but i have no idea what is miscB of summon effect if (Unit* target = me->GetVictim()) @@ -911,11 +911,11 @@ struct npc_vampiric_fiend : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { DoCastSelf(SPELL_DISEASE_CLOUD); - _scheduler.Schedule(9s, [this](TaskContext /*leechingRoot*/) + _scheduler.Schedule(9s, [this](TaskContext const& /*leechingRoot*/) { DoCastVictim(SPELL_LEECHING_ROOT); }) - .Schedule(38s, [this](TaskContext /*leechingRoot*/) + .Schedule(38s, [this](TaskContext const& /*leechingRoot*/) { me->DespawnOrUnsummon(); }); @@ -949,18 +949,18 @@ struct npc_darkfallen_archmage : public DarkFallenAI void ScheduleSpells() override { AttackSpellId = SPELL_FIREBALL; - Scheduler.Schedule(1s, [this](TaskContext amplifyMagic) + Scheduler.Schedule(1s, [this](TaskContext& amplifyMagic) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_AMPLIFY_MAGIC); amplifyMagic.Repeat(15s, 24s); }) - .Schedule(10s, [this](TaskContext blastWave) + .Schedule(10s, [this](TaskContext& blastWave) { DoCastSelf(SPELL_BLAST_WAVE); blastWave.Repeat(25s, 30s); }) - .Schedule(17s, [this](TaskContext polymorph) + .Schedule(17s, [this](TaskContext& polymorph) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false, -SPELL_POLYMORPH)) DoCast(target, SPELL_POLYMORPH); @@ -975,12 +975,12 @@ struct npc_darkfallen_advisor : public DarkFallenAI void ScheduleSpells() override { - Scheduler.Schedule(8s, [this](TaskContext lichSlap) + Scheduler.Schedule(8s, [this](TaskContext& lichSlap) { DoCastVictim(SPELL_LICH_SLAP); lichSlap.Repeat(12s); }) - .Schedule(50s, [this](TaskContext immunity) + .Schedule(50s, [this](TaskContext& immunity) { if (Unit* target = DoSelectLowestHpFriendly(40.0f)) DoCast(target, SPELL_SHROUD_OF_SPELL_WARDING); @@ -995,12 +995,12 @@ struct npc_darkfallen_tactician : public DarkFallenAI void ScheduleSpells() override { - Scheduler.Schedule(8s, [this](TaskContext unholyStrike) + Scheduler.Schedule(8s, [this](TaskContext& unholyStrike) { DoCastVictim(SPELL_UNHOLY_STRIKE); unholyStrike.Repeat(8s, 11s); }) - .Schedule(10s, [this](TaskContext shadowStep) + .Schedule(10s, [this](TaskContext& shadowStep) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, false)) { @@ -1133,7 +1133,7 @@ struct go_empowering_blood_orb : public GameObjectAI me->SetGoState(GO_STATE_DESTROYED); if (Creature* trigger = ObjectAccessor::GetCreature(*me, _triggerGuid)) trigger->DespawnOrUnsummon(); - _scheduler.Schedule(3s, [this](TaskContext /*context*/) + _scheduler.Schedule(3s, [this](TaskContext const& /*context*/) { me->Delete(); }); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index 1b9304fa4a74d..43621b0ef2b07 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -146,7 +146,7 @@ struct npc_fallout_slime : public ScriptedAI me->SetReactState(REACT_PASSIVE); DoCastSelf(SPELL_DISEASE_CLOUD); - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_AGGRESSIVE); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index a36f99be4a2fc..bf940a0d37afa 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -826,7 +826,7 @@ struct npc_kelthuzad_shadow_fissure : public ScriptedAI void JustAppeared() override { - _scheduler.Schedule(5s, [this](TaskContext /*task*/) + _scheduler.Schedule(5s, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_VOID_BLAST); }); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 5de5f9af3131f..ef18206888f0f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -417,7 +417,7 @@ struct npc_sapphiron_blizzard : public ScriptedAI void Reset() override { me->SetReactState(REACT_PASSIVE); - _scheduler.Schedule(Seconds(3), [this](TaskContext chill) + _scheduler.Schedule(Seconds(3), [this](TaskContext& chill) { DoCastSelf(me->m_spells[0], true); chill.Repeat(); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index f58c5c988c319..e006fc359e130 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -312,7 +312,7 @@ struct npc_malformed_ooze : public ScriptedAI me->GetMotionMaster()->MoveIdle(); me->GetMotionMaster()->MovePoint(POINT_COMBINE, creatureTarget->GetPosition()); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { Creature* combineTarget = ObjectAccessor::GetCreature(*me, _combineTarget); // Completely unclear what should happen in this case or in case when caster dies @@ -364,7 +364,7 @@ struct npc_iron_sludge : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { - _scheduler.Schedule(3s, 6s, [this](TaskContext task) + _scheduler.Schedule(3s, 6s, [this](TaskContext& task) { DoCastSelf(SPELL_TOXIC_VOLLEY); task.Repeat(3s, 6s); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index 53387896fc4d6..3e611cdf43eb9 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -475,7 +475,7 @@ struct npc_swarming_guardian : public ScriptedAI void Reset() override { me->SetReactState(REACT_PASSIVE); - _scheduler.Schedule(1s, [this](TaskContext /*context*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); DoCastSelf(SPELL_AGRO_CREATOR); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index e89993a116c32..d2bfb172c6319 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -932,7 +932,7 @@ struct npc_expedition_trapper : public ScriptedAI break; case ACTION_STOP_CAST: me->InterruptNonMeleeSpells(false); - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MoveTargetedHome(); }); @@ -989,7 +989,7 @@ struct npc_expedition_engineer : public ScriptedAI _canUpdateAI = true; if (_myPositionNumber == ENGINEER_EAST) Talk(SAY_AGGRO); - _scheduler.Schedule(Seconds(28), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(28), [this](TaskContext const& /*context*/) { HandleHarpoonMovement(); me->SetImmuneToNPC(false); @@ -999,7 +999,7 @@ struct npc_expedition_engineer : public ScriptedAI { if (_myPositionNumber == ENGINEER_EAST) Talk(SAY_AGGRO); - _scheduler.Schedule(Seconds(28), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(28), [this](TaskContext const& /*context*/) { HandleHarpoonMovement(); }); @@ -1008,7 +1008,7 @@ struct npc_expedition_engineer : public ScriptedAI void ChangeOrientation(float orientation) { - _scheduler.Schedule(Milliseconds(1), [this, orientation](TaskContext /*context*/) + _scheduler.Schedule(Milliseconds(1), [this, orientation](TaskContext const& /*context*/) { me->SetFacingTo(orientation); }); @@ -1165,11 +1165,11 @@ struct npc_expedition_engineer : public ScriptedAI commander->AI()->DoAction(ACTION_BUILD_HARPOON_1); _scheduler. - Schedule(Seconds(3), [this](TaskContext /*context*/) + Schedule(Seconds(3), [this](TaskContext const& /*context*/) { me->SetEmoteState(EMOTE_STATE_USE_STANDING); }) - .Schedule(Seconds(18), [this](TaskContext /*context*/) + .Schedule(Seconds(18), [this](TaskContext const& /*context*/) { HandleSecondHarpoonMovement(); }); @@ -1178,7 +1178,7 @@ struct npc_expedition_engineer : public ScriptedAI case POINT_HARPOON_2_25: if (Creature* commander = _instance->GetCreature(DATA_EXPEDITION_COMMANDER)) commander->AI()->DoAction(ACTION_BUILD_HARPOON_2); - _scheduler.Schedule(Seconds(18), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(18), [this](TaskContext const& /*context*/) { HandleThirdHarpoonMovement(); }); @@ -1186,7 +1186,7 @@ struct npc_expedition_engineer : public ScriptedAI case POINT_HARPOON_3: if (Creature* commander = _instance->GetCreature(DATA_EXPEDITION_COMMANDER)) commander->AI()->DoAction(ACTION_BUILD_HARPOON_3); - _scheduler.Schedule(Seconds(18), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(18), [this](TaskContext const& /*context*/) { HandleFourthHarpoonMovement(); }); @@ -1194,7 +1194,7 @@ struct npc_expedition_engineer : public ScriptedAI case POINT_HARPOON_4: if (Creature* commander = _instance->GetCreature(DATA_EXPEDITION_COMMANDER)) commander->AI()->DoAction(ACTION_BUILD_HARPOON_4); - _scheduler.Schedule(Seconds(18), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(18), [this](TaskContext const& /*context*/) { HandleBaseMovement(); }); @@ -1224,10 +1224,10 @@ struct npc_razorscale_spawner : public ScriptedAI me->SetFarVisible(true); me->SetReactState(REACT_PASSIVE); _scheduler. - Schedule(Seconds(1), [this](TaskContext /*context*/) + Schedule(Seconds(1), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_SUMMON_MOLE_MACHINE); - }).Schedule(Seconds(6), [this](TaskContext /*context*/) + }).Schedule(Seconds(6), [this](TaskContext const& /*context*/) { DoCastSelf(SummonMinionsSpells[urand(0, 3)]); }); @@ -1474,7 +1474,7 @@ class go_razorscale_harpoon : public GameObjectScript void Reset() override { - _scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(1), [this](TaskContext const& /*context*/) { if (Creature* controller = me->FindNearestCreature(NPC_RAZORSCALE_CONTROLLER, 5.0f)) controller->AI()->Talk(EMOTE_HARPOON); @@ -1544,11 +1544,11 @@ class go_razorscale_mole_machine : public GameObjectScript void Reset() override { me->SetFlag(GO_FLAG_NOT_SELECTABLE); - _scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(1), [this](TaskContext const& /*context*/) { me->UseDoorOrButton(); }); - _scheduler.Schedule(Seconds(10), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(10), [this](TaskContext const& /*context*/) { me->Delete(); }); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 183ee0868b030..b69f8f6fdb57d 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -396,7 +396,7 @@ struct boss_xt002 : public BossAI { me->SetEmoteState(EMOTE_STATE_SPELL_CHANNEL_OMNI); - scheduler.Schedule(11s, [this](TaskContext /*task*/) + scheduler.Schedule(11s, [this](TaskContext const& /*task*/) { me->SetEmoteState(EMOTE_ONESHOT_NONE); }); @@ -405,7 +405,7 @@ struct boss_xt002 : public BossAI { me->SetEmoteState(EMOTE_STATE_DANCE); - scheduler.Schedule(30s, [this](TaskContext /*task*/) + scheduler.Schedule(30s, [this](TaskContext const& /*task*/) { me->SetEmoteState(EMOTE_ONESHOT_NONE); }); @@ -479,19 +479,19 @@ struct npc_scrapbot : public ScriptedAI xt002->AI()->JustSummoned(me); _scheduler. - Schedule(2s, [this](TaskContext /*StartMove*/) + Schedule(2s, [this](TaskContext const& /*StartMove*/) { if (Creature* xt002 = _instance->GetCreature(DATA_XT002)) me->GetMotionMaster()->MoveFollow(xt002, 0.0f, 0.0f); }) - .Schedule(1s, [this](TaskContext checkXt002) + .Schedule(1s, [this](TaskContext& checkXt002) { if (Creature* xt002 = _instance->GetCreature(DATA_XT002)) { if (me->IsWithinMeleeRange(xt002)) { DoCast(xt002, SPELL_SCRAPBOT_RIDE_VEHICLE); - _scheduler.Schedule(1s, [this](TaskContext /*ScrapRepair*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*ScrapRepair*/) { if (Creature* xt002 = _instance->GetCreature(DATA_XT002)) xt002->CastSpell(me, SPELL_SCRAP_REPAIR, true); @@ -536,22 +536,22 @@ struct npc_pummeller : public ScriptedAI xt002->AI()->JustSummoned(me); _scheduler. - Schedule(1s, [this](TaskContext /*StartMove*/) + Schedule(1s, [this](TaskContext const& /*StartMove*/) { me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); }) - .Schedule(17s, [this](TaskContext trample) + .Schedule(17s, [this](TaskContext& trample) { DoCastSelf(SPELL_TRAMPLE); trample.Repeat(11s); }) - .Schedule(19s, [this](TaskContext arcingSmash) + .Schedule(19s, [this](TaskContext& arcingSmash) { DoCastSelf(SPELL_ARCING_SMASH); arcingSmash.Repeat(8s); }) - .Schedule(19s, [this](TaskContext upperCut) + .Schedule(19s, [this](TaskContext& upperCut) { DoCastVictim(SPELL_UPPERCUT); upperCut.Repeat(14s); @@ -592,13 +592,13 @@ struct npc_boombot : public ScriptedAI xt002->AI()->JustSummoned(me); _scheduler. - Schedule(4s, [this](TaskContext /*StartMove*/) + Schedule(4s, [this](TaskContext const& /*StartMove*/) { if (Creature* xt002 = _instance->GetCreature(DATA_XT002)) me->GetMotionMaster()->MoveFollow(xt002, 0.0f, 0.0f); }) - .Schedule(1s, [this](TaskContext checkXt002) + .Schedule(1s, [this](TaskContext& checkXt002) { if (Creature* xt002 = _instance->GetCreature(DATA_XT002)) { @@ -646,7 +646,7 @@ struct npc_life_spark : public ScriptedAI void JustEngagedWith(Unit* /*who*/) override { DoCastSelf(SPELL_STATIC_CHARGED); - _scheduler.Schedule(12s, [this](TaskContext spellShock) + _scheduler.Schedule(12s, [this](TaskContext& spellShock) { DoCastVictim(SPELL_SHOCK); spellShock.Repeat(); @@ -674,7 +674,7 @@ struct npc_xt_void_zone : public PassiveAI void JustAppeared() override { - _scheduler.Schedule(2500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(2500ms, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_CONSUMPTION); }); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 26280c7d9b2f3..230439f32045a 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -232,13 +232,13 @@ struct boss_skadi : public BossAI instance->TriggerGameEvent(ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI); scheduler - .Schedule(Seconds(6), [this](TaskContext resetCheck) + .Schedule(Seconds(6), [this](TaskContext& resetCheck) { if (Creature* resetTrigger = me->FindNearestCreature(NPC_TRIGGER_RESET, 200.0f)) resetTrigger->CastSpell(resetTrigger, SPELL_UTGARDE_PINNACLE_GUANTLET_RESET_CHECK, true); resetCheck.Repeat(); }) - .Schedule(Seconds(2), [this](TaskContext /*context*/) + .Schedule(Seconds(2), [this](TaskContext const& /*context*/) { if (Creature* grauf = instance->GetCreature(DATA_GRAUF)) DoCast(grauf, SPELL_RIDE_GRAUF); @@ -265,18 +265,18 @@ struct boss_skadi : public BossAI _phase = PHASE_GROUND; scheduler - .Schedule(Seconds(8), [this](TaskContext crush) + .Schedule(Seconds(8), [this](TaskContext& crush) { DoCastVictim(SPELL_CRUSH); crush.Repeat(); }) - .Schedule(Seconds(11), [this](TaskContext poisonedSpear) + .Schedule(Seconds(11), [this](TaskContext& poisonedSpear) { if (Unit* target = SelectTarget(SelectTargetMethod::Random)) DoCast(target, SPELL_POISONED_SPEAR); poisonedSpear.Repeat(); }) - .Schedule(Seconds(23), [this](TaskContext whirlwind) + .Schedule(Seconds(23), [this](TaskContext& whirlwind) { DoCast(SPELL_WHIRLWIND); whirlwind.Repeat(); @@ -356,7 +356,7 @@ struct npc_grauf : public ScriptedAI me->SetCanFly(true); me->SetDisableGravity(true); - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MoveAlongSplineChain(POINT_BREACH, SPLINE_CHAIN_INITIAL, false); }); @@ -371,12 +371,12 @@ struct npc_grauf : public ScriptedAI { case POINT_BREACH: _scheduler - .Schedule(Milliseconds(1), [this](TaskContext /*context*/) + .Schedule(Milliseconds(1), [this](TaskContext const& /*context*/) { me->SetFacingTo(BreachPoint); Talk(EMOTE_ON_RANGE); }) - .Schedule(Seconds(10), [this](TaskContext /*context*/) + .Schedule(Seconds(10), [this](TaskContext const& /*context*/) { if (RAND(POINT_LEFT, POINT_RIGHT) == POINT_LEFT) me->GetMotionMaster()->MoveAlongSplineChain(POINT_LEFT, SPLINE_CHAIN_BREACH_LEFT, false); @@ -386,38 +386,38 @@ struct npc_grauf : public ScriptedAI break; case POINT_LEFT: _scheduler - .Schedule(Milliseconds(1), [this](TaskContext /*context*/) + .Schedule(Milliseconds(1), [this](TaskContext const& /*context*/) { me->SetFacingTo(BreathPointLeft); Talk(EMOTE_BREATH); }) - .Schedule(Seconds(2), [this](TaskContext /*context*/) + .Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MoveAlongSplineChain(POINT_BREACH, SPLINE_CHAIN_LEFT, false); DoCast(SPELL_FREEZING_CLOUD_LEFT_PERIODIC); if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS)) skadi->AI()->DoAction(ACTION_DRAKE_BREATH); }) - .Schedule(Seconds(10), [this](TaskContext /*context*/) + .Schedule(Seconds(10), [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_FREEZING_CLOUD_LEFT_PERIODIC); }); break; case POINT_RIGHT: _scheduler - .Schedule(Milliseconds(1), [this](TaskContext /*context*/) + .Schedule(Milliseconds(1), [this](TaskContext const& /*context*/) { me->SetFacingTo(BreathPointRight); Talk(EMOTE_BREATH); }) - .Schedule(Seconds(2), [this](TaskContext /*context*/) + .Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MoveAlongSplineChain(POINT_BREACH, SPLINE_CHAIN_RIGHT, false); DoCast(SPELL_FREEZING_CLOUD_RIGHT_PERIODIC); if (Creature* skadi = _instance->GetCreature(DATA_SKADI_THE_RUTHLESS)) skadi->AI()->DoAction(ACTION_DRAKE_BREATH); }) - .Schedule(Seconds(10), [this](TaskContext /*context*/) + .Schedule(Seconds(10), [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_FREEZING_CLOUD_RIGHT_PERIODIC); }); @@ -479,7 +479,7 @@ struct npc_skadi_trashAI : public ScriptedAI me->SetEmoteState(me->GetEntry() == NPC_YMIRJAR_WARRIOR ? EMOTE_STATE_READY1H : EMOTE_STATE_READY2HL); break; case POINT_1: - _scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(1), [this](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePoint(POINT_2, SecondaryWavesFinalPoint); }); @@ -513,12 +513,12 @@ struct npc_ymirjar_warrior : public npc_skadi_trashAI void ScheduleTasks() override { _scheduler - .Schedule(Seconds(2), [this](TaskContext context) + .Schedule(Seconds(2), [this](TaskContext& context) { DoCastVictim(SPELL_HAMSTRING); context.Repeat(Seconds(11), Seconds(18)); }) - .Schedule(Seconds(9), [this](TaskContext context) + .Schedule(Seconds(9), [this](TaskContext& context) { DoCastVictim(SPELL_STRIKE); context.Repeat(Seconds(10), Seconds(13)); @@ -533,12 +533,12 @@ struct npc_ymirjar_witch_doctor : public npc_skadi_trashAI void ScheduleTasks() override { _scheduler - .Schedule(Seconds(2), [this](TaskContext shadowBolt) + .Schedule(Seconds(2), [this](TaskContext& shadowBolt) { DoCastVictim(SPELL_SHADOW_BOLT); shadowBolt.Repeat(); }) - .Schedule(Seconds(20), Seconds(34), [this](TaskContext shrink) + .Schedule(Seconds(20), Seconds(34), [this](TaskContext& shrink) { DoCastVictim(SPELL_SHRINK); shrink.Repeat(); @@ -553,13 +553,13 @@ struct npc_ymirjar_harpooner : public npc_skadi_trashAI void ScheduleTasks() override { _scheduler - .Schedule(Seconds(13), [this](TaskContext net) + .Schedule(Seconds(13), [this](TaskContext& net) { if (Unit* target = SelectTarget(SelectTargetMethod::MaxDistance, 0, 30, true)) DoCast(target, SPELL_NET); net.Repeat(); }) - .Schedule(Seconds(2), [this](TaskContext castThrow) + .Schedule(Seconds(2), [this](TaskContext& castThrow) { DoCastVictim(SPELL_THROW); castThrow.Repeat(); diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 58b119ffbadee..1e1f3728f87fa 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -77,26 +77,26 @@ struct boss_cyanigosa : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Seconds(10), [this](TaskContext task) + scheduler.Schedule(Seconds(10), [this](TaskContext& task) { DoCastAOE(SPELL_ARCANE_VACUUM); task.Repeat(); }); - scheduler.Schedule(Seconds(15), [this](TaskContext task) + scheduler.Schedule(Seconds(15), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 45.0f, true)) DoCast(target, SPELL_BLIZZARD); task.Repeat(); }); - scheduler.Schedule(Seconds(20), [this](TaskContext task) + scheduler.Schedule(Seconds(20), [this](TaskContext& task) { DoCastVictim(SPELL_TAIL_SWEEP); task.Repeat(); }); - scheduler.Schedule(Seconds(25), [this](TaskContext task) + scheduler.Schedule(Seconds(25), [this](TaskContext& task) { DoCastVictim(SPELL_UNCONTROLLABLE_ENERGY); task.Repeat(); @@ -104,7 +104,7 @@ struct boss_cyanigosa : public BossAI if (IsHeroic()) { - scheduler.Schedule(Seconds(30), [this](TaskContext task) + scheduler.Schedule(Seconds(30), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) DoCast(target, SPELL_MANA_DESTRUCTION); diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index f2f259e102bdb..0283daab6fc27 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -171,7 +171,7 @@ struct boss_erekem : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Seconds(20), [this](TaskContext task) + scheduler.Schedule(Seconds(20), [this](TaskContext& task) { if (Unit* ally = DoSelectLowestHpFriendly(30.0f)) DoCast(ally, SPELL_EARTH_SHIELD); @@ -179,13 +179,13 @@ struct boss_erekem : public BossAI task.Repeat(Seconds(20)); }); - scheduler.Schedule(Seconds(2), [this](TaskContext task) + scheduler.Schedule(Seconds(2), [this](TaskContext& task) { DoCast(SPELL_BLOODLUST); task.Repeat(Seconds(35), Seconds(45)); }); - scheduler.Schedule(Seconds(2), [this](TaskContext task) + scheduler.Schedule(Seconds(2), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f)) DoCast(target, SPELL_LIGHTNING_BOLT); @@ -193,7 +193,7 @@ struct boss_erekem : public BossAI task.Repeat(Milliseconds(2500)); }); - scheduler.Schedule(Seconds(10), [this](TaskContext task) + scheduler.Schedule(Seconds(10), [this](TaskContext& task) { if (Unit* ally = DoSelectLowestHpFriendly(40.0f)) DoCast(ally, SPELL_CHAIN_HEAL); @@ -204,13 +204,13 @@ struct boss_erekem : public BossAI task.Repeat(Seconds(8), Seconds(11)); }); - scheduler.Schedule(Seconds(2), Seconds(8), [this](TaskContext task) + scheduler.Schedule(Seconds(2), Seconds(8), [this](TaskContext& task) { DoCastVictim(SPELL_EARTH_SHOCK); task.Repeat(Seconds(8), Seconds(13)); }); - scheduler.Schedule(0s, [this](TaskContext task) + scheduler.Schedule(0s, [this](TaskContext& task) { for (uint32 i = DATA_EREKEM_GUARD_1; i <= DATA_EREKEM_GUARD_2; ++i) { @@ -262,19 +262,19 @@ struct npc_erekem_guard : public ScriptedAI void ScheduledTasks() { - scheduler.Schedule(Seconds(4), Seconds(8), [this](TaskContext task) + scheduler.Schedule(Seconds(4), Seconds(8), [this](TaskContext& task) { DoCastVictim(SPELL_STRIKE); task.Repeat(Seconds(4), Seconds(8)); }); - scheduler.Schedule(Seconds(8), Seconds(13), [this](TaskContext task) + scheduler.Schedule(Seconds(8), Seconds(13), [this](TaskContext& task) { DoCastAOE(SPELL_HOWLING_SCREECH); task.Repeat(Seconds(8), Seconds(13)); }); - scheduler.Schedule(Seconds(1), Seconds(3), [this](TaskContext task) + scheduler.Schedule(Seconds(1), Seconds(3), [this](TaskContext& task) { DoCastVictim(SPELL_GUSHING_WOUND); task.Repeat(Seconds(7), Seconds(12)); diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 4b86e483a0384..6a97cc1516383 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -204,13 +204,13 @@ struct boss_ichoron : public BossAI DoCast(me, SPELL_PROTECTIVE_BUBBLE); }); - scheduler.Schedule(Seconds(10), Seconds(15), [this](TaskContext task) + scheduler.Schedule(Seconds(10), Seconds(15), [this](TaskContext& task) { DoCastAOE(SPELL_WATER_BOLT_VOLLEY); task.Repeat(Seconds(10), Seconds(15)); }); - scheduler.Schedule(Seconds(6), Seconds(9), [this](TaskContext task) + scheduler.Schedule(Seconds(6), Seconds(9), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f)) DoCast(target, SPELL_WATER_BLAST); diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 8e2af4c38dba8..67e8d88e3aa41 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -58,20 +58,20 @@ struct boss_lavanthor : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Seconds(1), [this](TaskContext task) + scheduler.Schedule(Seconds(1), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true)) DoCast(target, SPELL_FIREBOLT); task.Repeat(Seconds(5), Seconds(13)); }); - scheduler.Schedule(Seconds(5), [this](TaskContext task) + scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastVictim(SPELL_FLAME_BREATH); task.Repeat(Seconds(10), Seconds(15)); }); - scheduler.Schedule(Seconds(10), [this](TaskContext task) + scheduler.Schedule(Seconds(10), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f)) DoCast(target, SPELL_LAVA_BURN); @@ -80,7 +80,7 @@ struct boss_lavanthor : public BossAI if (IsHeroic()) { - scheduler.Schedule(Seconds(3), [this](TaskContext task) + scheduler.Schedule(Seconds(3), [this](TaskContext& task) { DoCastAOE(SPELL_CAUTERIZING_FLAMES); task.Repeat(Seconds(10), Seconds(16)); diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index 016b7a8e570ea..d6f7e9704ee33 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -72,14 +72,14 @@ struct boss_moragg : public BossAI DoCast(me, SPELL_RAY_OF_SUFFERING); }); - scheduler.Schedule(Seconds(15), [this](TaskContext task) + scheduler.Schedule(Seconds(15), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 50.0f, true)) DoCast(target, SPELL_OPTIC_LINK); task.Repeat(Seconds(25)); }); - scheduler.Schedule(Seconds(5), [this](TaskContext task) + scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastVictim(SPELL_CORROSIVE_SALIVA); task.Repeat(Seconds(10)); diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index b5c8bf159270f..076b66de16ba6 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -133,20 +133,20 @@ struct boss_xevozz : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Seconds(8), Seconds(10), [this](TaskContext task) + scheduler.Schedule(Seconds(8), Seconds(10), [this](TaskContext& task) { DoCastAOE(SPELL_ARCANE_BARRAGE_VOLLEY); task.Repeat(Seconds(8), Seconds(10)); }); - scheduler.Schedule(Seconds(10), Seconds(11), [this](TaskContext task) + scheduler.Schedule(Seconds(10), Seconds(11), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 45.0f, true)) DoCast(target, SPELL_ARCANE_BUFFET); task.Repeat(Seconds(15), Seconds(20)); }); - scheduler.Schedule(Seconds(5), [this](TaskContext task) + scheduler.Schedule(Seconds(5), [this](TaskContext& task) { Talk(SAY_REPEAT_SUMMON); @@ -159,13 +159,13 @@ struct boss_xevozz : public BossAI if (IsHeroic()) { spell = Trinity::Containers::SelectRandomContainerElement(summonSpells); - task.Schedule(Milliseconds(2500), [this, spell](TaskContext /*task*/) + task.Schedule(Milliseconds(2500), [this, spell](TaskContext const& /*task*/) { DoCast(me, EtherealSphereHeroicSummonSpells[spell]); }); } - task.Schedule(Seconds(33), Seconds(35), [this](TaskContext /*task*/) + task.Schedule(Seconds(33), Seconds(35), [this](TaskContext const& /*task*/) { DummyEntryCheckPredicate pred; summons.DoAction(ACTION_SUMMON, pred); @@ -210,7 +210,7 @@ struct npc_ethereal_sphere : public ScriptedAI void ScheduledTasks() { - scheduler.Schedule(Seconds(1), [this](TaskContext task) + scheduler.Schedule(Seconds(1), [this](TaskContext& task) { if (Creature* xevozz = instance->GetCreature(DATA_XEVOZZ)) { diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index c98b520d5b685..34ade28c9d2ad 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -121,20 +121,20 @@ struct boss_zuramat : public BossAI void ScheduleTasks() override { - scheduler.Schedule(Seconds(4), [this](TaskContext task) + scheduler.Schedule(Seconds(4), [this](TaskContext& task) { DoCast(me, SPELL_SUMMON_VOID_SENTRY); task.Repeat(Seconds(7), Seconds(10)); }); - scheduler.Schedule(Seconds(9), [this](TaskContext task) + scheduler.Schedule(Seconds(9), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true)) DoCast(target, SPELL_VOID_SHIFT); task.Repeat(Seconds(15)); }); - scheduler.Schedule(Seconds(18), Seconds(20), [this](TaskContext task) + scheduler.Schedule(Seconds(18), Seconds(20), [this](TaskContext& task) { DoCast(me, SPELL_SHROUD_OF_DARKNESS); task.Repeat(Seconds(18), Seconds(20)); diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 9fff688255385..0c4e6b5a6aafa 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -386,7 +386,7 @@ class instance_violet_hold : public InstanceMapScript WaveCount = data; if (WaveCount) { - Scheduler.Schedule(Seconds(IsBossWave(WaveCount - 1) ? 45 : 5), [this](TaskContext /*task*/) + Scheduler.Schedule(Seconds(IsBossWave(WaveCount - 1) ? 45 : 5), [this](TaskContext const& /*task*/) { AddWave(); }); @@ -426,7 +426,7 @@ class instance_violet_hold : public InstanceMapScript if (GameObject* crystal = instance->GetGameObject(ActivationCrystalGUIDs[i])) crystal->RemoveFlag(GO_FLAG_NOT_SELECTABLE); - Scheduler.Schedule(Seconds(3), [this](TaskContext task) + Scheduler.Schedule(Seconds(3), [this](TaskContext& task) { CheckEventState(); task.Repeat(Seconds(3)); @@ -561,7 +561,7 @@ class instance_violet_hold : public InstanceMapScript switch (bossId) { case DATA_MORAGG: - Scheduler.Schedule(Seconds(2), [this](TaskContext task) + Scheduler.Schedule(Seconds(2), [this](TaskContext& task) { if (Creature* moragg = GetCreature(DATA_MORAGG)) { @@ -569,12 +569,12 @@ class instance_violet_hold : public InstanceMapScript moragg->CastSpell(moragg, SPELL_MORAGG_EMOTE_ROAR); } - task.Schedule(Seconds(3), [this](TaskContext task) + task.Schedule(Seconds(3), [this](TaskContext& task) { if (Creature* moragg = GetCreature(DATA_MORAGG)) moragg->GetMotionMaster()->MovePath(MoraggPath, false); - task.Schedule(Seconds(8), [this](TaskContext /*task*/) + task.Schedule(Seconds(8), [this](TaskContext const& /*task*/) { if (Creature* moragg = GetCreature(DATA_MORAGG)) { @@ -586,12 +586,12 @@ class instance_violet_hold : public InstanceMapScript }); break; case DATA_EREKEM: - Scheduler.Schedule(Seconds(3), [this](TaskContext task) + Scheduler.Schedule(Seconds(3), [this](TaskContext& task) { if (Creature* erekem = GetCreature(DATA_EREKEM)) erekem->AI()->Talk(SAY_EREKEM_SPAWN); - task.Schedule(Seconds(5), [this](TaskContext task) + task.Schedule(Seconds(5), [this](TaskContext& task) { if (Creature* erekem = GetCreature(DATA_EREKEM)) erekem->GetMotionMaster()->MovePath(ErekemPath, false); @@ -601,12 +601,12 @@ class instance_violet_hold : public InstanceMapScript if (Creature* guard = instance->GetCreature(GetGuidData(DATA_EREKEM_GUARD_2))) guard->GetMotionMaster()->MovePath(ErekemGuardRightPath, false); - task.Schedule(Seconds(6), [this](TaskContext task) + task.Schedule(Seconds(6), [this](TaskContext& task) { if (Creature* erekem = GetCreature(DATA_EREKEM)) erekem->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); - task.Schedule(Seconds(1), [this](TaskContext /*task*/) + task.Schedule(Seconds(1), [this](TaskContext const& /*task*/) { for (uint32 i = DATA_EREKEM_GUARD_1; i <= DATA_EREKEM_GUARD_2; ++i) { @@ -625,17 +625,17 @@ class instance_violet_hold : public InstanceMapScript }); break; case DATA_ICHORON: - Scheduler.Schedule(Seconds(2), [this](TaskContext task) + Scheduler.Schedule(Seconds(2), [this](TaskContext& task) { if (Creature* ichoron = GetCreature(DATA_ICHORON)) ichoron->AI()->Talk(SAY_ICHORON_SPAWN); - task.Schedule(Seconds(3), [this](TaskContext task) + task.Schedule(Seconds(3), [this](TaskContext& task) { if (Creature* ichoron = GetCreature(DATA_ICHORON)) ichoron->GetMotionMaster()->MovePath(IchoronPath, false); - task.Schedule(Seconds(14), [this](TaskContext /*task*/) + task.Schedule(Seconds(14), [this](TaskContext const& /*task*/) { if (Creature* ichoron = GetCreature(DATA_ICHORON)) { @@ -647,17 +647,17 @@ class instance_violet_hold : public InstanceMapScript }); break; case DATA_LAVANTHOR: - Scheduler.Schedule(Seconds(1), [this](TaskContext task) + Scheduler.Schedule(Seconds(1), [this](TaskContext& task) { if (Creature* lavanthor = GetCreature(DATA_LAVANTHOR)) lavanthor->CastSpell(lavanthor, SPELL_LAVANTHOR_SPECIAL_UNARMED); - task.Schedule(Seconds(3), [this](TaskContext task) + task.Schedule(Seconds(3), [this](TaskContext& task) { if (Creature* lavanthor = GetCreature(DATA_LAVANTHOR)) lavanthor->GetMotionMaster()->MovePath(LavanthorPath, false); - task.Schedule(Seconds(8), [this](TaskContext /*task*/) + task.Schedule(Seconds(8), [this](TaskContext const& /*task*/) { if (Creature* lavanthor = GetCreature(DATA_LAVANTHOR)) { @@ -669,22 +669,22 @@ class instance_violet_hold : public InstanceMapScript }); break; case DATA_XEVOZZ: - Scheduler.Schedule(Seconds(2), [this](TaskContext task) + Scheduler.Schedule(Seconds(2), [this](TaskContext& task) { if (Creature* xevozz = GetCreature(DATA_XEVOZZ)) xevozz->AI()->Talk(SAY_XEVOZZ_SPAWN); - task.Schedule(Seconds(3), [this](TaskContext task) + task.Schedule(Seconds(3), [this](TaskContext& task) { if (Creature* xevozz = GetCreature(DATA_XEVOZZ)) xevozz->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE); - task.Schedule(Seconds(4), [this](TaskContext task) + task.Schedule(Seconds(4), [this](TaskContext& task) { if (Creature* xevozz = GetCreature(DATA_XEVOZZ)) xevozz->GetMotionMaster()->MovePath(XevozzPath, false); - task.Schedule(Seconds(4), [this](TaskContext /*task*/) + task.Schedule(Seconds(4), [this](TaskContext const& /*task*/) { if (Creature* xevozz = GetCreature(DATA_XEVOZZ)) { @@ -697,7 +697,7 @@ class instance_violet_hold : public InstanceMapScript }); break; case DATA_ZURAMAT: - Scheduler.Schedule(Seconds(2), [this](TaskContext task) + Scheduler.Schedule(Seconds(2), [this](TaskContext& task) { if (Creature* zuramat = GetCreature(DATA_ZURAMAT)) { @@ -705,12 +705,12 @@ class instance_violet_hold : public InstanceMapScript zuramat->AI()->Talk(SAY_ZURAMAT_SPAWN); } - task.Schedule(Seconds(6), [this](TaskContext task) + task.Schedule(Seconds(6), [this](TaskContext& task) { if (Creature* zuramat = GetCreature(DATA_ZURAMAT)) zuramat->GetMotionMaster()->MovePath(ZuramatPath, false); - task.Schedule(Seconds(4), [this](TaskContext /*task*/) + task.Schedule(Seconds(4), [this](TaskContext const& /*task*/) { if (Creature* zuramat = GetCreature(DATA_ZURAMAT)) { @@ -906,17 +906,17 @@ class instance_violet_hold : public InstanceMapScript void ScheduleCyanigosaIntro() { - Scheduler.Schedule(Seconds(2), [this](TaskContext task) + Scheduler.Schedule(Seconds(2), [this](TaskContext& task) { if (Creature* cyanigosa = GetCreature(DATA_CYANIGOSA)) cyanigosa->AI()->Talk(SAY_CYANIGOSA_SPAWN); - task.Schedule(Seconds(6), [this](TaskContext task) + task.Schedule(Seconds(6), [this](TaskContext& task) { if (Creature* cyanigosa = GetCreature(DATA_CYANIGOSA)) cyanigosa->GetMotionMaster()->MoveJump(EVENT_JUMP, CyanigosaJumpLocation, {}, 8.0f); - task.Schedule(Seconds(7), [this](TaskContext /*task*/) + task.Schedule(Seconds(7), [this](TaskContext const& /*task*/) { if (Creature* cyanigosa = GetCreature(DATA_CYANIGOSA)) { diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index aa674a17e91e7..7e1a48be6a9b5 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -461,7 +461,7 @@ struct npc_sinclari_vh : public ScriptedAI void ScheduleIntro() { - _scheduler.Schedule(Seconds(1), [this](TaskContext task) + _scheduler.Schedule(Seconds(1), [this](TaskContext& task) { switch (task.GetRepeatCounter()) { @@ -479,7 +479,7 @@ struct npc_sinclari_vh : public ScriptedAI me->SetFacingTo(SinclariPositions[0].GetOrientation()); Talk(SAY_SINCLARI_INTRO_1); - task.Schedule(Seconds(1), [this](TaskContext /*task*/) + task.Schedule(Seconds(1), [this](TaskContext const& /*task*/) { std::list guardList; me->GetCreatureListWithEntryInGrid(guardList, NPC_VIOLET_HOLD_GUARD, 100.0f); @@ -503,7 +503,7 @@ struct npc_sinclari_vh : public ScriptedAI case 4: me->SetFacingTo(SinclariPositions[1].GetOrientation()); - task.Schedule(Seconds(1), [this](TaskContext /*task*/) + task.Schedule(Seconds(1), [this](TaskContext const& /*task*/) { std::list guardList; me->GetCreatureListWithEntryInGrid(guardList, NPC_VIOLET_HOLD_GUARD, 100.0f); @@ -545,12 +545,12 @@ struct npc_sinclari_vh : public ScriptedAI void ScheduleOutro() { - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { Talk(SAY_SINCLARI_OUTRO); me->GetMotionMaster()->MovePoint(0, SinclariPositions[3]); - task.Schedule(Seconds(10), [this](TaskContext /*task*/) + task.Schedule(Seconds(10), [this](TaskContext const& /*task*/) { me->SetNpcFlag(UNIT_NPC_FLAG_GOSSIP); }); @@ -616,7 +616,7 @@ struct npc_azure_saboteur : public ScriptedAI void Reset() override { _scheduler.CancelAll(); - _scheduler.Schedule(Seconds(2), [this](TaskContext /*task*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*task*/) { StartMovement(); }); @@ -626,7 +626,7 @@ struct npc_azure_saboteur : public ScriptedAI { if (pathId == POINT_INTRO) { - _scheduler.Schedule(0s, [this](TaskContext task) + _scheduler.Schedule(0s, [this](TaskContext& task) { me->CastSpell(me, SPELL_SHIELD_DISRUPTION, false); @@ -634,7 +634,7 @@ struct npc_azure_saboteur : public ScriptedAI task.Repeat(Seconds(1)); else { - task.Schedule(Seconds(2), [this](TaskContext /*task*/) + task.Schedule(Seconds(2), [this](TaskContext const& /*task*/) { _instance->SetData(DATA_START_BOSS_ENCOUNTER, 1); me->CastSpell(me, SPELL_TELEPORT_VISUAL, false); @@ -770,7 +770,7 @@ struct npc_violet_hold_teleportation_portal_elite : public npc_violet_hold_telep void ScheduleTasks() override { - _scheduler.Schedule(Seconds(15), [this](TaskContext task) + _scheduler.Schedule(Seconds(15), [this](TaskContext& task) { uint8 k = _instance->GetData(DATA_WAVE_COUNT) < 12 ? 3 : 4; while (k--) @@ -782,7 +782,7 @@ struct npc_violet_hold_teleportation_portal_elite : public npc_violet_hold_telep if (Creature* sinclariTrigger = _instance->GetCreature(DATA_SINCLARI_TRIGGER)) sinclariTrigger->AI()->Talk(SAY_SINCLARI_ELITE_SQUAD); - task.Schedule(Seconds(1), [this](TaskContext /*task*/) + task.Schedule(Seconds(1), [this](TaskContext const& /*task*/) { me->SetVisible(false); }); @@ -812,7 +812,7 @@ struct npc_violet_hold_teleportation_portal_intro : public npc_violet_hold_telep if (_instance->GetData(DATA_MAIN_EVENT_STATE) != NOT_STARTED) return; - _scheduler.Schedule(Seconds(15), [this](TaskContext task) + _scheduler.Schedule(Seconds(15), [this](TaskContext& task) { // Limit the number of current summons if (_summons.size() < 3) @@ -911,7 +911,7 @@ struct violet_hold_trashAI : public EscortAI { me->SetReactState(REACT_DEFENSIVE); DoCastAOE(SPELL_DESTROY_DOOR_SEAL); - _scheduler.Schedule(Seconds(2), [this](TaskContext destroyDoorCheck) + _scheduler.Schedule(Seconds(2), [this](TaskContext& destroyDoorCheck) { if (!me->HasAura(SPELL_DESTROY_DOOR_SEAL)) DoCastAOE(SPELL_DESTROY_DOOR_SEAL); @@ -957,13 +957,13 @@ struct npc_azure_invader : public violet_hold_trashAI { if (me->GetEntry() == NPC_AZURE_INVADER_1) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastVictim(SPELL_CLEAVE); task.Repeat(); }); - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { DoCastVictim(SPELL_IMPALE); task.Repeat(); @@ -971,13 +971,13 @@ struct npc_azure_invader : public violet_hold_trashAI } else if (me->GetEntry() == NPC_AZURE_INVADER_2) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastVictim(SPELL_BRUTAL_STRIKE); task.Repeat(); }); - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { DoCastVictim(SPELL_SUNDER_ARMOR); task.Repeat(Seconds(8), Seconds(10)); @@ -994,13 +994,13 @@ struct npc_azure_binder : public violet_hold_trashAI { if (me->GetEntry() == NPC_AZURE_BINDER_1) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastAOE(SPELL_ARCANE_EXPLOSION); task.Repeat(); }); - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f)) DoCast(target, SPELL_ARCANE_BARRAGE); @@ -1009,13 +1009,13 @@ struct npc_azure_binder : public violet_hold_trashAI } else if (me->GetEntry() == NPC_AZURE_BINDER_2) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastAOE(SPELL_FROST_NOVA); task.Repeat(); }); - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f)) DoCast(target, SPELL_FROSTBOLT); @@ -1033,7 +1033,7 @@ struct npc_azure_mage_slayer : public violet_hold_trashAI { if (me->GetEntry() == NPC_AZURE_MAGE_SLAYER_1) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCast(me, SPELL_ARCANE_EMPOWERMENT); task.Repeat(Seconds(14)); @@ -1041,7 +1041,7 @@ struct npc_azure_mage_slayer : public violet_hold_trashAI } else if (me->GetEntry() == NPC_AZURE_MAGE_SLAYER_2) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { // wrong spellid? if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f)) @@ -1058,13 +1058,13 @@ struct npc_azure_raider : public violet_hold_trashAI void ScheduledTasks() override { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastVictim(SPELL_CONCUSSION_BLOW); task.Repeat(); }); - _scheduler.Schedule(Seconds(8), [this](TaskContext task) + _scheduler.Schedule(Seconds(8), [this](TaskContext& task) { DoCast(me, SPELL_MAGIC_REFLECTION); task.Repeat(Seconds(10), Seconds(15)); @@ -1078,12 +1078,12 @@ struct npc_azure_stalker : public violet_hold_trashAI void ScheduledTasks() override { - _scheduler.Schedule(Seconds(8), [this](TaskContext task) + _scheduler.Schedule(Seconds(8), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f)) DoCast(target, SPELL_TACTICAL_BLINK); - task.Schedule(Milliseconds(1300), [this](TaskContext /*task*/) + task.Schedule(Milliseconds(1300), [this](TaskContext const& /*task*/) { if (Unit* target = SelectTarget(SelectTargetMethod::MinDistance, 0, 5.0f)) DoCast(target, SPELL_BACKSTAB); @@ -1102,14 +1102,14 @@ struct npc_azure_spellbreaker : public violet_hold_trashAI { if (me->GetEntry() == NPC_AZURE_SPELLBREAKER_1) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f)) DoCast(target, SPELL_ARCANE_BLAST); task.Repeat(Seconds(6)); }); - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f)) DoCast(target, SPELL_SLOW); @@ -1118,14 +1118,14 @@ struct npc_azure_spellbreaker : public violet_hold_trashAI } else if (me->GetEntry() == NPC_AZURE_SPELLBREAKER_2) { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f)) DoCast(target, SPELL_CHAINS_OF_ICE); task.Repeat(Seconds(7)); }); - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { DoCast(me, SPELL_CONE_OF_COLD); task.Repeat(Seconds(5)); @@ -1140,13 +1140,13 @@ struct npc_azure_captain : public violet_hold_trashAI void ScheduledTasks() override { - _scheduler.Schedule(Seconds(5), [this](TaskContext task) + _scheduler.Schedule(Seconds(5), [this](TaskContext& task) { DoCastVictim(SPELL_MORTAL_STRIKE); task.Repeat(); }); - _scheduler.Schedule(Seconds(8), [this](TaskContext task) + _scheduler.Schedule(Seconds(8), [this](TaskContext& task) { DoCast(me, SPELL_WHIRLWIND_OF_STEEL); task.Repeat(); @@ -1160,14 +1160,14 @@ struct npc_azure_sorceror : public violet_hold_trashAI void ScheduledTasks() override { - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 35.0f)) DoCast(target, SPELL_ARCANE_STREAM); task.Repeat(Seconds(5), Seconds(10)); }); - _scheduler.Schedule(Seconds(), Seconds(), [this](TaskContext task) + _scheduler.Schedule(Seconds(), Seconds(), [this](TaskContext& task) { DoCastAOE(SPELL_MANA_DETONATION); task.Repeat(Seconds(2), Seconds(6)); @@ -1187,7 +1187,7 @@ struct npc_violet_hold_defense_system : public ScriptedAI void ScheduledTasks() { - _scheduler.Schedule(Seconds(4), [this](TaskContext task) + _scheduler.Schedule(Seconds(4), [this](TaskContext& task) { DoCastAOE(SPELL_ARCANE_LIGHTNING_DAMAGE); DoCastAOE(SPELL_ARCANE_LIGHTNING_DUMMY); diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index ba10bf78cebdc..c78810eba070a 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -64,7 +64,7 @@ struct npc_daegarn : public ScriptedAI _scheduler.CancelAll(); _summons.DespawnAll(); - _scheduler.Schedule(40s, [this](TaskContext context) + _scheduler.Schedule(40s, [this](TaskContext& context) { Talk(SAY_TEXT); context.Repeat(40s); @@ -163,7 +163,7 @@ struct npc_daegarn : public ScriptedAI _scheduler.CancelAll(); _summons.DespawnAll(); - _scheduler.Schedule(20s, [this](TaskContext context) + _scheduler.Schedule(20s, [this](TaskContext& context) { bool reset = true; if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index c8769cdb65f0d..fabbfa03daf00 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -643,7 +643,7 @@ struct npc_wild_wyrm : public VehicleAI { me->GetMotionMaster()->MovePath(PATH_WILD_WYRM, true); }) - .Schedule(Milliseconds(500), [this](TaskContext context) + .Schedule(Milliseconds(500), [this](TaskContext& context) { if (_phase == PHASE_MOUTH) return; diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index 4f2d571df48a3..d323e76ac21ac 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -246,42 +246,42 @@ struct npc_stolen_soul : public ScriptedAI switch (_summonerClass) { case CLASS_WARRIOR: // - _scheduler.Schedule(5s, 10s, [this](TaskContext task) + _scheduler.Schedule(5s, 10s, [this](TaskContext& task) { DoCastVictim(SPELL_MORTAL_STRIKE); task.Repeat(5s, 10s); }); break; case CLASS_PALADIN: // video & sniff - _scheduler.Schedule(2s, 7s, [this](TaskContext task) + _scheduler.Schedule(2s, 7s, [this](TaskContext& task) { DoCastVictim(SPELL_HAMMER_OF_JUSTICE); task.Repeat(8s, 15s); }); break; case CLASS_HUNTER: // video - _scheduler.Schedule(5s, [this](TaskContext task) + _scheduler.Schedule(5s, [this](TaskContext& task) { DoCastSelf(SPELL_FREEZING_TRAP); task.Repeat(20s); }); break; case CLASS_ROGUE: // - _scheduler.Schedule(5s, [this](TaskContext task) + _scheduler.Schedule(5s, [this](TaskContext& task) { DoCastVictim(SPELL_HEMORRHAGE); task.Repeat(10s); }); break; case CLASS_PRIEST: // - _scheduler.Schedule(2s, [this](TaskContext task) + _scheduler.Schedule(2s, [this](TaskContext& task) { DoCastVictim(SPELL_MIND_FLAY); task.Repeat(3s, 5s); }); break; case CLASS_SHAMAN: // video - _scheduler.Schedule(0s, [this](TaskContext task) + _scheduler.Schedule(0s, [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 20.0f, true, true, -SPELL_FROST_SHOCK)) DoCast(target, SPELL_FROST_SHOCK); @@ -289,14 +289,14 @@ struct npc_stolen_soul : public ScriptedAI }); break; case CLASS_MAGE: // video - _scheduler.Schedule(0s, [this](TaskContext task) + _scheduler.Schedule(0s, [this](TaskContext& task) { DoCastVictim(SPELL_FIREBALL); task.Repeat(3s); }); break; case CLASS_WARLOCK: // video - _scheduler.Schedule(10s, [this](TaskContext task) + _scheduler.Schedule(10s, [this](TaskContext& task) { if (Unit* victim = me->GetVictim()) if (!victim->HasAura(SPELL_CURSE_OF_AGONY)) @@ -306,14 +306,14 @@ struct npc_stolen_soul : public ScriptedAI }); break; case CLASS_DRUID: // - _scheduler.Schedule(5s, [this](TaskContext task) + _scheduler.Schedule(5s, [this](TaskContext& task) { DoCastVictim(SPELL_MOONFIRE); task.Repeat(10s); }); break; case CLASS_DEATH_KNIGHT: // - _scheduler.Schedule(3s, 6s, [this](TaskContext task) + _scheduler.Schedule(3s, 6s, [this](TaskContext& task) { DoCastVictim(SPELL_PLAGUE_STRIKE); task.Repeat(6s, 12s); diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index d7efd77a5ea08..e05f7134e9af4 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -175,7 +175,7 @@ struct npc_voidwalker_summoner : public ScriptedAI void JustAppeared() override { - _scheduler.Schedule(10s, [this](TaskContext task) + _scheduler.Schedule(10s, [this](TaskContext& task) { DoCastSelf(Trinity::Containers::SelectRandomContainerElement(VoidwalkerSummonSpells)); task.Repeat(10s, 15s); @@ -206,7 +206,7 @@ struct npc_void_traveler : public ScriptedAI if (Creature* vorpil = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_GRANDMASTER_VORPIL))) me->GetMotionMaster()->MoveFollow(vorpil, 0, 0); - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { if (Creature* vorpil = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_GRANDMASTER_VORPIL))) { @@ -214,7 +214,7 @@ struct npc_void_traveler : public ScriptedAI { DoCastSelf(SPELL_SACRIFICE); - task.Schedule(1s, [this](TaskContext /*task*/) + task.Schedule(1s, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_EMPOWERING_SHADOWS); DoCastSelf(SPELL_SHADOW_NOVA); diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp index c2140e6c3a48d..3dcc0e04c112f 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp @@ -185,13 +185,13 @@ struct npc_angered_soul_fragment : public ScriptedAI { _scheduler.CancelAll(); - _scheduler.Schedule(Seconds(1), GROUP_OUT_OF_COMBAT, [this](TaskContext invi) + _scheduler.Schedule(Seconds(1), GROUP_OUT_OF_COMBAT, [this](TaskContext& invi) { DoCastSelf(SPELL_GREATER_INVISIBILITY); /* Workaround - On Retail creature appear and "vanish" again periodically, but i cant find packets with UPDATE_AURA on sniffs about it */ - _scheduler.Schedule(Seconds(5), Seconds(10), GROUP_OUT_OF_COMBAT, [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(5), Seconds(10), GROUP_OUT_OF_COMBAT, [this](TaskContext const& /*context*/) { me->RemoveAurasDueToSpell(SPELL_GREATER_INVISIBILITY); }); @@ -205,7 +205,7 @@ struct npc_angered_soul_fragment : public ScriptedAI me->RemoveAurasDueToSpell(SPELL_GREATER_INVISIBILITY); _scheduler.CancelGroup(GROUP_OUT_OF_COMBAT); - _scheduler.Schedule(Seconds(1), [this](TaskContext anger) + _scheduler.Schedule(Seconds(1), [this](TaskContext& anger) { Unit* target = me->GetVictim(); if (target && me->IsWithinMeleeRange(target)) diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 567a7742b08c0..3f11b667d1190 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -1383,7 +1383,7 @@ struct npc_parasitic_shadowfiend : public ScriptedAI if (Creature* illidan = _instance->GetCreature(DATA_ILLIDAN_STORMRAGE)) illidan->AI()->JustSummoned(me); me->SetReactState(REACT_PASSIVE); - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); @@ -1398,7 +1398,7 @@ struct npc_parasitic_shadowfiend : public ScriptedAI me->AttackStop(); } else if (action == ACTION_RESUME_COMBAT) - _scheduler.Schedule(Seconds(2), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(2), [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); @@ -1435,10 +1435,10 @@ struct npc_blade_of_azzinoth : public NullCreatureAI _flameGuid.Clear(); me->PlayDirectSound(WARGLAIVE_SPAWN_SOUND_ID); DoCastSelf(SPELL_BIRTH, true); - _scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(3), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_SUMMON_TEAR_OF_AZZINOTH); - _scheduler.Schedule(Milliseconds(500), [this](TaskContext /*context*/) + _scheduler.Schedule(Milliseconds(500), [this](TaskContext const& /*context*/) { if (Creature* flame = ObjectAccessor::GetCreature(*me, _flameGuid)) DoCast(flame, SPELL_AZZINOTH_CHANNEL); @@ -1577,7 +1577,7 @@ struct npc_shadow_demon : public PassiveAI DoCastSelf(SPELL_SHADOW_DEMON_PASSIVE); DoCastSelf(SPELL_FIND_TARGET); - _scheduler.Schedule(Seconds(1), [this](TaskContext checkTarget) + _scheduler.Schedule(Seconds(1), [this](TaskContext& checkTarget) { if (Unit* target = ObjectAccessor::GetUnit(*me, _targetGUID)) { @@ -1759,7 +1759,7 @@ struct npc_cage_trap_trigger : public PassiveAI void Reset() override { - _scheduler.Schedule(Seconds(1), [this](TaskContext checkTarget) + _scheduler.Schedule(Seconds(1), [this](TaskContext& checkTarget) { DoCastSelf(SPELL_CAGE_TRAP_PERIODIC); checkTarget.Repeat(); diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp index efa5f6b23c3d1..82426c33336cf 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp @@ -546,7 +546,7 @@ struct npc_veras_vanish_effect : public PassiveAI void Reset() override { DoCastSelf(SPELL_BIRTH, true); - _scheduler.Schedule(Seconds(1), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(1), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_ENVENOM_DUMMY, true); }); diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index 09dae5b99eda4..d9fabe46229a2 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -590,7 +590,7 @@ struct npc_enslaved_soul : public ScriptedAI DoCastSelf(SPELL_ENSLAVED_SOUL_PASSIVE, true); - _scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(3), [this](TaskContext const& /*context*/) { me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index a3c2499d8d965..1524c80dfe328 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -557,7 +557,7 @@ struct npc_ashtongue_channeler : public PassiveAI void Reset() override { - _scheduler.Schedule(Seconds(2), [this](TaskContext channel) + _scheduler.Schedule(Seconds(2), [this](TaskContext& channel) { if (Creature* shade = _instance->GetCreature(DATA_SHADE_OF_AKAMA)) { @@ -722,7 +722,7 @@ struct npc_ashtongue_sorcerer : public ScriptedAI me->GetMotionMaster()->Clear(); me->GetMotionMaster()->MovePoint(1, me->GetPositionX() + frand(-8.0f, 8.0f), me->GetPositionY() + frand(-8.0f, 8.0f), me->GetPositionZ()); - _scheduler.Schedule(Seconds(1) + Milliseconds(500), [this](TaskContext sorcer_channel) + _scheduler.Schedule(Seconds(1) + Milliseconds(500), [this](TaskContext& sorcer_channel) { if (Creature* shade = _instance->GetCreature(DATA_SHADE_OF_AKAMA)) { diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index b694beef55614..3cf0fa528c1d5 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -194,7 +194,7 @@ struct npc_volcano : public NullCreatureAI void Reset() override { - _scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(3), [this](TaskContext const& /*context*/) { DoCastSelf(SPELL_VOLCANIC_ERUPTION); }); diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index fa05e56fe8861..e0015fa8571d3 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -205,7 +205,7 @@ struct npc_doom_blossom : public NullCreatureAI DoCast(SPELL_SUMMON_BLOSSOM_MOVE_TARGET); _scheduler.CancelAll(); DoZoneInCombat(); - _scheduler.Schedule(Seconds(12), [this](TaskContext shadowBolt) + _scheduler.Schedule(Seconds(12), [this](TaskContext& shadowBolt) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_SHADOWBOLT); @@ -241,12 +241,12 @@ struct npc_shadowy_construct : public ScriptedAI targetGUID.Clear(); _scheduler.CancelAll(); - _scheduler.Schedule(Seconds(12), [this](TaskContext atrophy) + _scheduler.Schedule(Seconds(12), [this](TaskContext& atrophy) { DoCastVictim(SPELL_ATROPHY); atrophy.Repeat(Seconds(10), Seconds(12)); }); - _scheduler.Schedule(Milliseconds(200), [this](TaskContext checkPlayer) + _scheduler.Schedule(Milliseconds(200), [this](TaskContext& checkPlayer) { if (Unit* target = ObjectAccessor::GetUnit(*me, targetGUID)) { diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp index 3912f90507505..12e1c5a320694 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_ahune.cpp @@ -604,7 +604,7 @@ struct npc_ahune_ice_spear_bunny : public ScriptedAI DoCastSelf(SPELL_SUMMON_ICE_SPEAR_GO); DoCastSelf(SPELL_ICE_SPEAR_VISUAL); - _scheduler.Schedule(2500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(2500ms, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_ICE_SPEAR_DELAY); me->DespawnOrUnsummon(3500ms); @@ -626,7 +626,7 @@ struct go_ahune_ice_spear : public GameObjectAI void Reset() override { - _scheduler.Schedule(2500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(2500ms, [this](TaskContext const& /*context*/) { me->UseDoorOrButton(); me->DespawnOrUnsummon(3500ms); diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp index 9bea2aba958b2..c022abba4a368 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp @@ -53,7 +53,7 @@ struct boss_hungarfen : public BossAI void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); - _scheduler.Schedule(IsHeroic() ? 2500ms : 5s, [this](TaskContext task) + _scheduler.Schedule(IsHeroic() ? 2500ms : 5s, [this](TaskContext& task) { /// @todo cast here SPELL_PUTRID_MUSHROOM_PRIMER and do it in spell script if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) @@ -63,7 +63,7 @@ struct boss_hungarfen : public BossAI if (IsHeroic()) { - _scheduler.Schedule(3s, 5s, [this](TaskContext task) + _scheduler.Schedule(3s, 5s, [this](TaskContext& task) { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_ACID_GEYSER); @@ -97,7 +97,7 @@ struct boss_hungarfen : public BossAI _roared = true; me->SetReactState(REACT_PASSIVE); - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_FOUL_SPORES); me->SetReactState(REACT_AGGRESSIVE); @@ -121,7 +121,7 @@ struct npc_underbog_mushroom : public ScriptedAI DoCastSelf(SPELL_SHRINK); DoCastSelf(SPELL_PUTRID_MUSHROOM); - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { DoCastSelf(SPELL_GROW); @@ -132,11 +132,11 @@ struct npc_underbog_mushroom : public ScriptedAI task.Repeat(2s); else { - task.Schedule(1s, [this](TaskContext task) + task.Schedule(1s, [this](TaskContext& task) { DoCastSelf(SPELL_SPORE_CLOUD); - task.Schedule(4s, [this](TaskContext /*task*/) + task.Schedule(4s, [this](TaskContext const& /*task*/) { me->RemoveAurasDueToSpell(SPELL_GROW); me->DespawnOrUnsummon(4s); diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp index 14542c3a1dd24..a1e5dfd9cbcb7 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp @@ -142,7 +142,7 @@ struct boss_the_black_stalker : public BossAI if (waypointId == 2 || waypointId == 4 || waypointId == 6) { - scheduler.Schedule(2s, [this](TaskContext /*task*/) + scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { me->HandleEmoteCommand(EMOTE_ONESHOT_EAT); }); diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index 9e891fd95d73f..7fe35fa87395d 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -162,7 +162,7 @@ struct BroggokPrisionersAI : public ScriptedAI void Reset() override { scheduler.CancelAll(); - scheduler.Schedule(1s, 5s, [this](TaskContext emote) + scheduler.Schedule(1s, 5s, [this](TaskContext& emote) { me->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(PrisionersEmotes)); emote.Repeat(6s, 9s); @@ -207,11 +207,11 @@ struct npc_nascent_fel_orc : public BroggokPrisionersAI void ScheduleEvents() override { - scheduler.Schedule(15s, [this](TaskContext concussionBlow) + scheduler.Schedule(15s, [this](TaskContext& concussionBlow) { DoCastVictim(SPELL_CONCUSSION_BLOW); concussionBlow.Repeat(8s, 11s); - }).Schedule(7s, [this](TaskContext stomp) + }).Schedule(7s, [this](TaskContext& stomp) { DoCastVictim(SPELL_STOMP); stomp.Repeat(16s, 21s); @@ -226,11 +226,11 @@ struct npc_fel_orc_neophyte : public BroggokPrisionersAI void ScheduleEvents() override { - scheduler.Schedule(5s, [this](TaskContext charge) + scheduler.Schedule(5s, [this](TaskContext& charge) { DoCastVictim(SPELL_CHARGE); charge.Repeat(20s); - }).Schedule(1s, [this](TaskContext frenzy) + }).Schedule(1s, [this](TaskContext& frenzy) { DoCastSelf(SPELL_FRENZY); frenzy.Repeat(12s, 13s); diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index 1ca650aefd92c..3df29c31c63d3 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -413,7 +413,7 @@ struct npc_magtheridon_room : public PassiveAI { DoCastSelf(SPELL_DEBRIS_VISUAL); - _scheduler.Schedule(Seconds(5), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(5), [this](TaskContext const& /*context*/) { DoCastAOE(SPELL_DEBRIS_DAMAGE); }); diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index 1d0c05fa7b1ca..629359242ff98 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -166,7 +166,7 @@ struct npc_raging_flames : public ScriptedAI FixateRandomTarget(); - _scheduler.Schedule(15s, 25s, [this](TaskContext task) + _scheduler.Schedule(15s, 25s, [this](TaskContext& task) { DoCastSelf(SPELL_INFERNO); FixateRandomTarget(); diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp index fbebecf1b67e5..0f454f9de3ec3 100644 --- a/src/server/scripts/Outland/zone_nagrand.cpp +++ b/src/server/scripts/Outland/zone_nagrand.cpp @@ -509,12 +509,12 @@ class npc_nagrand_banner : public CreatureScript has_fled = false; interrupt_cooldown = 20000; scheduler - .Schedule(Seconds(0), [this](TaskContext ArcaneMissiles) + .Schedule(Seconds(0), [this](TaskContext& ArcaneMissiles) { DoCastVictim(SPELL_ARCANE_MISSILES); ArcaneMissiles.Repeat(Milliseconds(2400), Milliseconds(3800)); }) - .Schedule(Seconds(3), Seconds(6), [this](TaskContext ChainsOfIce) + .Schedule(Seconds(3), Seconds(6), [this](TaskContext& ChainsOfIce) { if (Unit* target = SelectTarget(SelectTargetMethod::Random)) DoCast(target, SPELL_CHAINS_OF_ICE, true); @@ -568,7 +568,7 @@ class npc_nagrand_banner : public CreatureScript void JustEngagedWith(Unit* /*who*/) override { scheduler - .Schedule(Milliseconds(4500), [this](TaskContext MindSear) + .Schedule(Milliseconds(4500), [this](TaskContext& MindSear) { DoCastVictim(SPELL_MIND_SEAR); MindSear.Repeat(Milliseconds(7000), Milliseconds(11000)); @@ -651,11 +651,11 @@ class npc_nagrand_banner : public CreatureScript { used_healing = false; scheduler - .Schedule(Seconds(2), [this](TaskContext /*SearingTotem*/) + .Schedule(Seconds(2), [this](TaskContext const& /*SearingTotem*/) { DoCast(SPELL_SCORCHING_TOTEM); }) - .Schedule(Seconds(6), [this](TaskContext FrostShock) + .Schedule(Seconds(6), [this](TaskContext& FrostShock) { DoCastVictim(SPELL_FROST_SHOCK); FrostShock.Repeat(Seconds(12)); diff --git a/src/server/scripts/Pandaria/zone_the_jade_forest.cpp b/src/server/scripts/Pandaria/zone_the_jade_forest.cpp index 9aaf4d76abf6d..4c74359ea2861 100644 --- a/src/server/scripts/Pandaria/zone_the_jade_forest.cpp +++ b/src/server/scripts/Pandaria/zone_the_jade_forest.cpp @@ -314,7 +314,7 @@ struct npc_rappelling_rope : public ScriptedAI if (apply) { passenger->SetDisableGravity(true); - _scheduler.Schedule(1500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(1500ms, [this](TaskContext const& /*context*/) { auto closestPosition = std::ranges::min_element(Positions::RappellingRopeDestinations, std::ranges::less(), [this](Position const& pos) { return me->GetDistance(pos); }); diff --git a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp index e6aaa54308986..e55fcfbbd1107 100644 --- a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp +++ b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp @@ -150,12 +150,12 @@ struct npc_tushui_huojin_trainee : public ScriptedAI me->SetImmuneToPC(true); me->CombatStop(); - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { Talk(SAY_FINISH_FIGHT); }); - _scheduler.Schedule(3s, [this](TaskContext /*task*/) + _scheduler.Schedule(3s, [this](TaskContext const& /*task*/) { Position currentPosition; float currentDist = 1000.0f; @@ -186,7 +186,7 @@ struct npc_tushui_huojin_trainee : public ScriptedAI void JustEngagedWith(Unit* /*attacker*/) override { - _scheduler.Schedule(4s, [this](TaskContext task) + _scheduler.Schedule(4s, [this](TaskContext& task) { if (me->GetVictim()) DoCastVictim(SPELL_BLACKOUT_KICK); @@ -276,7 +276,7 @@ struct npc_huojin_trainee : public npc_tushui_huojin_trainee _scheduler.CancelAll(); me->SetEmoteState(EMOTE_ONESHOT_NONE); - _scheduler.Schedule(1s, [this](TaskContext /*task*/ ) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/ ) { me->HandleEmoteCommand(EMOTE_ONESHOT_BOW); }); @@ -289,12 +289,12 @@ struct npc_huojin_trainee : public npc_tushui_huojin_trainee me->SetEmoteState(EMOTE_ONESHOT_NONE); me->HandleEmoteCommand(EMOTE_ONESHOT_BOW); - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { me->SetEmoteState(EMOTE_STATE_MONKOFFENSE_READYUNARMED); }); - _scheduler.Schedule(4s, [this](TaskContext task) + _scheduler.Schedule(4s, [this](TaskContext& task) { PlayRandomEmote(); task.Repeat(4s); @@ -313,7 +313,7 @@ struct npc_huojin_trainee : public npc_tushui_huojin_trainee void BeginSparringDelayed(ObjectGuid partnerGuid) { _partnerGuid = partnerGuid; - _scheduler.Schedule(1s, [this, partnerGuid](TaskContext /*task*/) + _scheduler.Schedule(1s, [this, partnerGuid](TaskContext const& /*task*/) { BeginSparring(partnerGuid); }); @@ -394,7 +394,7 @@ struct npc_tushui_leading_trainee : public npc_tushui_huojin_trainee void ScheduleEmoteExecution() { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { Emote emote = PlayRandomEmote(); HandleEmoteNearbyTushuiTrainees(me, emote); @@ -426,12 +426,12 @@ struct npc_instructor_zhi : public ScriptedAI void JustAppeared() override { - _scheduler.Schedule(6s, [this](TaskContext task) + _scheduler.Schedule(6s, [this](TaskContext& task) { Emote emote = Trinity::Containers::SelectRandomContainerElement(TraineeEmotes); me->HandleEmoteCommand(emote); - task.Schedule(1s, [this, emote](TaskContext /*task*/) + task.Schedule(1s, [this, emote](TaskContext const& /*task*/) { HandleEmoteNearbyTushuiTrainees(me, emote); }); @@ -592,7 +592,7 @@ struct npc_jaomin_ro_hawk : public ScriptedAI return; DoCast(SPELL_FORCE_SUMMONER_TO_RIDE); - _scheduler.Schedule(1s, [this, orientation = me->GetAbsoluteAngle(victim) - me->GetOrientation()](TaskContext /*context*/) + _scheduler.Schedule(1s, [this, orientation = me->GetAbsoluteAngle(victim) - me->GetOrientation()](TaskContext const& /*context*/) { me->GetMotionMaster()->MovePoint(POINT_RANDOM_DEST, me->GetFirstCollisionPosition(40.0f, orientation)); }); @@ -756,7 +756,7 @@ struct npc_min_dimwind_summon : public ScriptedAI amberleafScamp5->GetMotionMaster()->MovePoint(0, amberleafPos[4]); - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { Creature* amberleafScamp4 = me->FindNearestCreatureWithOptions(20.0f, { .StringId = "npc_amberleaf_scamp_4" }); @@ -767,7 +767,7 @@ struct npc_min_dimwind_summon : public ScriptedAI amberleafScamp4->GetMotionMaster()->MovePoint(0, amberleafPos[3]); }); - _scheduler.Schedule(5s, [this](TaskContext task) + _scheduler.Schedule(5s, [this](TaskContext& task) { Unit* summoner = me->ToTempSummon()->GetSummonerUnit(); @@ -777,11 +777,11 @@ struct npc_min_dimwind_summon : public ScriptedAI me->SetFacingToObject(summoner); Talk(SAY_MIN_DIMWIND_TEXT_0, summoner); - task.Schedule(4s, [this](TaskContext task) + task.Schedule(4s, [this](TaskContext& task) { Talk(SAY_MIN_DIMWIND_TEXT_1); - task.Schedule(4s, [this](TaskContext /*task*/) + task.Schedule(4s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MovePath(PATH_MOVE_RUN, false); }); @@ -816,7 +816,7 @@ struct npc_min_dimwind_summon : public ScriptedAI me->SetFacingTo(0.575958f); me->DespawnOrUnsummon(2s); - _scheduler.Schedule(1s, [this](TaskContext /*task*/) + _scheduler.Schedule(1s, [this](TaskContext const& /*task*/) { if (me->IsSummon()) { @@ -853,7 +853,7 @@ struct npc_amberleaf_scamp : public ScriptedAI { me->GetMotionMaster()->MoveRandom(10.0f); - _scheduler.Schedule(10s, [this](TaskContext /*task*/) + _scheduler.Schedule(10s, [this](TaskContext const& /*task*/) { if (!me->IsInCombat()) me->GetMotionMaster()->MoveTargetedHome(); @@ -905,15 +905,15 @@ struct npc_aysa_cloudsinger_summon : public ScriptedAI Talk(SAY_GO_CAVE, summoner); - _scheduler.Schedule(3s, [this](TaskContext task) + _scheduler.Schedule(3s, [this](TaskContext& task) { me->GetMotionMaster()->MoveJump(EVENT_JUMP, aysaJumpPos[0], 12.0f, {}, 5.0f); - task.Schedule(1700ms, [this](TaskContext task) + task.Schedule(1700ms, [this](TaskContext& task) { me->GetMotionMaster()->MoveJump(EVENT_JUMP, aysaJumpPos[1], 12.0f, {}, 5.0f); - task.Schedule(2s, [this](TaskContext /*task*/) + task.Schedule(2s, [this](TaskContext const& /*task*/) { me->GetMotionMaster()->MoveJump(POINT_JUMP, aysaJumpPos[2], 12.0f, {}, 5.0f); }); @@ -1080,35 +1080,35 @@ struct npc_master_li_fei_summon : public ScriptedAI Seconds delay = 23s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { FaceToPlayer(); }); delay += 2s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_TEXT_0); }); delay += 10s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_TEXT_1); }); delay += 12s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_TEXT_2); }); delay += 11s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { FaceToPlayer(); Talk(SAY_TEXT_3); @@ -1116,28 +1116,28 @@ struct npc_master_li_fei_summon : public ScriptedAI delay += 11s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_TEXT_4); }); delay += 9s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { FaceToPlayer(); }); delay += 2s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_TEXT_5); }); delay += 6s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Creature* aysa = me->FindNearestCreatureWithOptions(40.0f, { .StringId = "npc_aysa_quest_29414" }); diff --git a/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp b/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp index 73183afb1aa9e..1f580625f1d60 100644 --- a/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp +++ b/src/server/scripts/Shadowlands/SepulcherOfTheFirstOnes/boss_anduin_wrynn.cpp @@ -637,7 +637,7 @@ struct boss_anduin_wrynn : public BossAI { Talk(SAY_SLAY); _slayTextOnCooldown = true; - scheduler.Schedule(3s, [this](TaskContext /*task*/) + scheduler.Schedule(3s, [this](TaskContext const& /*task*/) { _slayTextOnCooldown = false; }); @@ -688,7 +688,7 @@ struct boss_anduin_wrynn : public BossAI summon->SetSpeedRate(MOVE_RUN, marchSpeed); summon->SetReactState(REACT_PASSIVE); summon->CastSpell(summon, SPELL_MARCH_OF_THE_DAMNED_AREATRIGGER, true); - scheduler.Schedule(1s, [summon](TaskContext /*task*/) + scheduler.Schedule(1s, [summon](TaskContext const& /*task*/) { Position exitPlatform = summon->GetFirstCollisionPosition(100.0f, summon->GetAbsoluteAngle(summon)); summon->GetMotionMaster()->MovePoint(POINT_MARCH_OF_THE_DAMNED, exitPlatform, false, summon->GetOrientation()); @@ -763,7 +763,7 @@ struct boss_anduin_wrynn : public BossAI case ACTION_START_INTRODUCTION: { instance->SetData(DATA_ANDUIN_WRYNN_INTRODUCTION, IN_PROGRESS); - scheduler.Schedule(1ms, [this](TaskContext /*task*/) + scheduler.Schedule(1ms, [this](TaskContext const& /*task*/) { Creature* uther = instance->GetCreature(DATA_UTHER_THE_LIGHTBRINGER_ANDUIN); if (!uther) @@ -787,7 +787,7 @@ struct boss_anduin_wrynn : public BossAI conversation->Start(); }); - scheduler.Schedule(35s, [this](TaskContext /*task*/) + scheduler.Schedule(35s, [this](TaskContext const& /*task*/) { instance->SetData(DATA_ANDUIN_WRYNN_INTRODUCTION, DONE); HandleIntroduction(); @@ -802,7 +802,7 @@ struct boss_anduin_wrynn : public BossAI if (Creature* thrall = me->GetInstanceScript()->GetCreature(DATA_THRALL_ANDUIN)) thrall->GetMotionMaster()->MovePath(PATH_OUTRODUCTION_THRALL, false); - scheduler.Schedule(10s, [this](TaskContext /*task*/) + scheduler.Schedule(10s, [this](TaskContext const& /*task*/) { MoveKnightsOnPlatform(); }); @@ -870,7 +870,7 @@ struct boss_anduin_wrynn : public BossAI if (_intermissionsDone == 0) { PhaseEvents(PHASE_TWO); - scheduler.Schedule(3s, [this](TaskContext /*task*/) + scheduler.Schedule(3s, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_AGGRESSIVE); }); @@ -878,7 +878,7 @@ struct boss_anduin_wrynn : public BossAI else if (_intermissionsDone == 1) { PhaseEvents(PHASE_THREE); - scheduler.Schedule(6s, [this](TaskContext /*task*/) + scheduler.Schedule(6s, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_AGGRESSIVE); }); @@ -1024,7 +1024,7 @@ struct boss_anduin_wrynn : public BossAI void StartIntermission(uint8 intermissionNum) { - auto SpawnRemnant = [this](TaskContext /*task*/) + auto SpawnRemnant = [this](TaskContext const& /*task*/) { if (Creature* arthas = instance->GetCreature(DATA_REMNANT_OF_A_FALLEN_KING)) me->CastSpell(arthas, SPELL_SPAWN_REMNANT); @@ -1032,24 +1032,24 @@ struct boss_anduin_wrynn : public BossAI Seconds timeOffset = intermissionNum * 1s; - scheduler.Schedule(1ms, [this](TaskContext /*task*/) + scheduler.Schedule(1ms, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_PASSIVE); me->CastSpell(DominationGraspCenter, SPELL_SHADESTEP); PrepareAssistersForIntermission(); }); - scheduler.Schedule(1204ms + timeOffset, [this, intermissionNum](TaskContext /*task*/) + scheduler.Schedule(1204ms + timeOffset, [this, intermissionNum](TaskContext const& /*task*/) { DoAction(intermissionNum == 0 ? ACTION_ARTHAS_INTERMISSION_UTHER : ACTION_ARTHAS_INTERMISSION_SYLVANAS); }); - scheduler.Schedule(2204ms + timeOffset, [this](TaskContext /*task*/) + scheduler.Schedule(2204ms + timeOffset, [this](TaskContext const& /*task*/) { me->SetFacingTo(1.626040f); }); - scheduler.Schedule(4s + timeOffset, [this](TaskContext /*task*/) + scheduler.Schedule(4s + timeOffset, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_FORCE_OF_WILL); DoCastSelf(SPELL_HOPEBREAKER_CLEAR); @@ -1068,7 +1068,7 @@ struct boss_anduin_wrynn : public BossAI scheduler.Schedule(7s + timeOffset, SpawnRemnant); - scheduler.Schedule(8s + timeOffset, [this, intermissionNum](TaskContext /*task*/) + scheduler.Schedule(8s + timeOffset, [this, intermissionNum](TaskContext const& /*task*/) { if (intermissionNum == 1 || IsMythic()) DoCastSelf(SPELL_MARCH_OF_THE_DAMNED_PERIODIC); @@ -1162,7 +1162,7 @@ struct boss_anduin_wrynn : public BossAI { me->RemoveAurasDueToSpell(SPELL_DOMINATION_GRASP_ROOT_AREATRIGGER); me->RemoveAurasDueToSpell(SPELL_MARCH_OF_THE_DAMNED_PERIODIC); - scheduler.Schedule(6s, [this](TaskContext /*task*/) + scheduler.Schedule(6s, [this](TaskContext const& /*task*/) { me->SetReactState(REACT_AGGRESSIVE); }); @@ -1216,7 +1216,7 @@ struct boss_anduin_wrynn : public BossAI chest->SetSpellVisualId(SPELL_VISUAL_CHEST_LOOT, ObjectGuid::Empty); } - scheduler.Schedule(5s, [this](TaskContext /*task*/) + scheduler.Schedule(5s, [this](TaskContext const& /*task*/) { instance->DoCastSpellOnPlayers(SPELL_FINAL_MOVIE); }); @@ -1511,14 +1511,14 @@ struct npc_anduin_wrynn_anduin_hope : public ScriptedAI if (IsHeroic() || IsMythic()) DoCastSelf(SPELL_GLOOM); - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { Position exitPlatform = me->GetFirstCollisionPosition(100.0f, 0); me->GetMotionMaster()->MovePoint(POINT_ESCAPE_PLATFORM, exitPlatform, false, me->GetOrientation()); }); me->SetHealth(1); - _scheduler.Schedule(40s, [this](TaskContext /*task*/) + _scheduler.Schedule(40s, [this](TaskContext const& /*task*/) { me->DespawnOrUnsummon(); }); @@ -1778,13 +1778,13 @@ struct boss_remnant_of_a_fallen_king : public ScriptedAI DoCastAOE(SPELL_DARK_PRESENCE); DoZoneInCombat(); - _scheduler.Schedule(1500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(1500ms, [this](TaskContext const& /*task*/) { _instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 2); me->SetUninteractible(false); }); - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_REMNANT_TIMER); _events.ScheduleEvent(EVENT_ARMY_OF_THE_DEAD, 1ms); @@ -1798,7 +1798,7 @@ struct boss_remnant_of_a_fallen_king : public ScriptedAI case ACTION_DESPAWN_REMNANT: { DoCastSelf(SPELL_SOUL_DESPAWN); - _scheduler.Schedule(500ms, [this](TaskContext /*task*/) + _scheduler.Schedule(500ms, [this](TaskContext const& /*task*/) { EnterEvadeMode(EvadeReason::Other); }); @@ -2389,14 +2389,14 @@ struct at_anduin_wrynn_befouled_barrier : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { float startRadius = 1.0f; UpdateSize(startRadius, BEFOULED_BARRIER_MAX_RADIUS); at->SetTimeToTargetScale(500); - task.Schedule(Milliseconds(at->GetTimeToTargetScale()), [this](TaskContext task) + task.Schedule(Milliseconds(at->GetTimeToTargetScale()), [this](TaskContext& task) { UpdateSizeBasedOnAbsorb(); task.Repeat(); @@ -2501,7 +2501,7 @@ struct at_anduin_wrynn_beacon_of_hope : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { float startRadius = 1.0f; float targetRadius = BEACON_OF_HOPE_MAX_RADIUS; @@ -2509,7 +2509,7 @@ struct at_anduin_wrynn_beacon_of_hope : AreaTriggerAI UpdateSize(startRadius, targetRadius); at->SetTimeToTargetScale(500); - task.Schedule(Milliseconds(at->GetTimeToTargetScale()), [this](TaskContext task) + task.Schedule(Milliseconds(at->GetTimeToTargetScale()), [this](TaskContext& task) { UpdateSizeBasedOnCharges(); task.Repeat(); diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index 60fb048e8e98e..f281070faf743 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -1434,7 +1434,7 @@ struct at_dh_glaive_tempest : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(0ms, [this](TaskContext task) + _scheduler.Schedule(0ms, [this](TaskContext& task) { FloatMilliseconds period = 500ms; // 500ms, affected by haste if (Unit* caster = at->GetCaster()) diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 8724fee69ffb8..c8232667a6df4 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1526,7 +1526,7 @@ struct at_dru_lunar_beam : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { if (Unit* caster = at->GetCaster()) { diff --git a/src/server/scripts/Spells/spell_evoker.cpp b/src/server/scripts/Spells/spell_evoker.cpp index 476747ef1ea1b..e951fae039c3f 100644 --- a/src/server/scripts/Spells/spell_evoker.cpp +++ b/src/server/scripts/Spells/spell_evoker.cpp @@ -439,7 +439,7 @@ struct at_evo_firestorm : AreaTriggerAI { _damageSpellCustomArg = creatingSpell->m_customArg; - _scheduler.Schedule(0ms, [this](TaskContext task) + _scheduler.Schedule(0ms, [this](TaskContext& task) { FloatMilliseconds period = 2s; // 2s, affected by haste if (Unit* caster = at->GetCaster()) diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 71640321e337a..0b03468e997bf 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -258,7 +258,7 @@ struct at_hun_binding_shot : AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { for (ObjectGuid const& guid : at->GetInsideUnits()) { diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index c2cd9b53bf150..bfcf79ceec2f9 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -890,7 +890,7 @@ struct at_mage_flame_patch : public AreaTriggerAI void OnCreate(Spell const* /*creatingSpell*/) override { - _scheduler.Schedule(1s, [this](TaskContext task) + _scheduler.Schedule(1s, [this](TaskContext& task) { if (Unit* caster = at->GetCaster()) caster->CastSpell(at->GetPosition(), SPELL_MAGE_FLAME_PATCH_DAMAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 3aa294453c806..589527d0759bc 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -1474,7 +1474,7 @@ struct areatrigger_pri_divine_star : AreaTriggerAI void ReturnToCaster() { - _scheduler.Schedule(0ms, [this](TaskContext task) + _scheduler.Schedule(0ms, [this](TaskContext& task) { Unit* caster = at->GetCaster(); if (!caster) @@ -1858,7 +1858,7 @@ struct areatrigger_pri_entropic_rift : public AreaTriggerAI caster->CastSpell(caster, SPELL_PRIEST_ENTROPIC_RIFT_PERIODIC, args); UpdateMovement(); - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { UpdateMovement(); task.Repeat(500ms); diff --git a/src/server/scripts/World/areatrigger_scripts.cpp b/src/server/scripts/World/areatrigger_scripts.cpp index 407262b888917..7789429eb839e 100644 --- a/src/server/scripts/World/areatrigger_scripts.cpp +++ b/src/server/scripts/World/areatrigger_scripts.cpp @@ -521,7 +521,7 @@ struct at_abyssal_portal_harbinger : AreaTriggerAI if (Unit* caster = at->GetCaster()) _remainingSummons = creatingSpell->GetSpellInfo()->GetEffect(EFFECT_0).CalcValueAsInt(caster); - _scheduler.Schedule(500ms, [this](TaskContext task) + _scheduler.Schedule(500ms, [this](TaskContext& task) { if (Unit* caster = at->GetCaster()) caster->CastSpell(at->GetRandomNearPosition(3.0f), SPELL_ABYSSAL_PORTAL_SUMMON, true); diff --git a/src/server/scripts/World/npc_guard.cpp b/src/server/scripts/World/npc_guard.cpp index 7d577c13bcfef..4f882ecbc0dc4 100644 --- a/src/server/scripts/World/npc_guard.cpp +++ b/src/server/scripts/World/npc_guard.cpp @@ -57,7 +57,7 @@ struct npc_guard_generic : public GuardAI { _scheduler.CancelAll(); _combatScheduler.CancelAll(); - _scheduler.Schedule(Seconds(1), [this](TaskContext context) + _scheduler.Schedule(Seconds(1), [this](TaskContext& context) { // Find a spell that targets friendly and applies an aura (these are generally buffs) if (SpellInfo const* spellInfo = SelectSpell(me, 0, 0, SELECT_TARGET_ANY_FRIEND, 0, 0, SELECT_EFFECT_AURA)) @@ -115,7 +115,7 @@ struct npc_guard_generic : public GuardAI if (me->GetEntry() == NPC_CENARION_HOLD_INFANTRY) Talk(SAY_GUARD_SIL_AGGRO, who); - _combatScheduler.Schedule(Seconds(1), [this](TaskContext meleeContext) + _combatScheduler.Schedule(Seconds(1), [this](TaskContext& meleeContext) { Unit* victim = me->GetVictim(); if (!me->isAttackReady() || !me->IsWithinMeleeRange(victim)) @@ -132,7 +132,7 @@ struct npc_guard_generic : public GuardAI } } meleeContext.Repeat(); - }).Schedule(Seconds(5), [this](TaskContext spellContext) + }).Schedule(Seconds(5), [this](TaskContext& spellContext) { bool healing = false; SpellInfo const* spellInfo = nullptr; @@ -206,14 +206,14 @@ struct npc_guard_shattrath_faction : public GuardAI void ScheduleVanish() { - _scheduler.Schedule(Seconds(5), [this](TaskContext banishContext) + _scheduler.Schedule(Seconds(5), [this](TaskContext& banishContext) { Unit* temp = me->GetVictim(); if (temp && temp->GetTypeId() == TYPEID_PLAYER) { DoCast(temp, me->GetEntry() == NPC_ALDOR_VINDICATOR ? SPELL_BANISHED_SHATTRATH_S : SPELL_BANISHED_SHATTRATH_A); ObjectGuid playerGUID = temp->GetGUID(); - banishContext.Schedule(Seconds(9), [this, playerGUID](TaskContext /*exileContext*/) + banishContext.Schedule(Seconds(9), [this, playerGUID](TaskContext const& /*exileContext*/) { if (Unit* temp = ObjectAccessor::GetUnit(*me, playerGUID)) { diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 0fab824a98d71..3b2bd8539088e 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -340,25 +340,25 @@ struct npc_dancing_flames : public ScriptedAI switch (emote) { case TEXT_EMOTE_KISS: - _scheduler.Schedule(1500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(1500ms, [this](TaskContext const& /*context*/) { me->HandleEmoteCommand(EMOTE_ONESHOT_SHY); }); break; case TEXT_EMOTE_WAVE: - _scheduler.Schedule(1500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(1500ms, [this](TaskContext const& /*context*/) { me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE); }); break; case TEXT_EMOTE_BOW: - _scheduler.Schedule(1500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(1500ms, [this](TaskContext const& /*context*/) { me->HandleEmoteCommand(EMOTE_ONESHOT_BOW); }); break; case TEXT_EMOTE_JOKE: - _scheduler.Schedule(1500ms, [this](TaskContext /*context*/) + _scheduler.Schedule(1500ms, [this](TaskContext const& /*context*/) { me->HandleEmoteCommand(EMOTE_ONESHOT_LAUGH); }); @@ -398,10 +398,10 @@ class npc_torch_tossing_target_bunny_controller : public CreatureScript void Reset() override { - _scheduler.Schedule(Seconds(2), [this](TaskContext context) + _scheduler.Schedule(Seconds(2), [this](TaskContext& context) { me->CastSpell(nullptr, SPELL_TORCH_TARGET_PICKER); - _scheduler.Schedule(Seconds(3), [this](TaskContext /*context*/) + _scheduler.Schedule(Seconds(3), [this](TaskContext const& /*context*/) { me->CastSpell(nullptr, SPELL_TORCH_TARGET_PICKER); }); @@ -2265,7 +2265,7 @@ struct npc_gen_void_zone : public ScriptedAI void JustAppeared() override { - _scheduler.Schedule(2s, [this](TaskContext /*task*/) + _scheduler.Schedule(2s, [this](TaskContext const& /*task*/) { DoCastSelf(SPELL_CONSUMPTION); }); diff --git a/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp b/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp index 6f6533c10474f..8e13684fc8981 100644 --- a/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp +++ b/src/server/scripts/Zandalar/AtalDazar/boss_priestess_alun_za.cpp @@ -259,7 +259,7 @@ struct npc_priestess_alun_za_corrupted_gold : public ScriptedAI me->GetMotionMaster()->MovePoint(POINT_DESPAWN, despawnPos, true, {}, 2.0f); // manually scheduling as regular timer is only scheduled on engaged unitsw - _scheduler.Schedule(2500ms, [this](TaskContext context) + _scheduler.Schedule(2500ms, [this](TaskContext& context) { CheckInRoom(); context.Repeat(); @@ -660,7 +660,7 @@ struct at_priestess_alun_za_tainted_blood : AreaTriggerAI } else if (unit->GetEntry() == NPC_SPIRIT_OF_GOLD && !unit->HasAura(SPELL_FATALLY_CORRUPTED)) { - _scheduler.Schedule(3s, [this](TaskContext /*task*/) + _scheduler.Schedule(3s, [this](TaskContext const& /*task*/) { at->Remove(); }); diff --git a/src/server/scripts/Zandalar/KingsRest/boss_golden_serpent.cpp b/src/server/scripts/Zandalar/KingsRest/boss_golden_serpent.cpp index 6fcf27796bde5..b49ea84557abb 100644 --- a/src/server/scripts/Zandalar/KingsRest/boss_golden_serpent.cpp +++ b/src/server/scripts/Zandalar/KingsRest/boss_golden_serpent.cpp @@ -229,7 +229,7 @@ struct npc_animated_gold : public ScriptedAI { if (spellInfo->Id == SPELL_LUCRES_CALL) { - _scheduler.Schedule(3s, [this](TaskContext) + _scheduler.Schedule(3s, [this](TaskContext const&) { if (!me->HasAura(SPELL_MOLTEN_GOLD_AURA)) { diff --git a/src/server/scripts/Zandalar/KingsRest/kings_rest.cpp b/src/server/scripts/Zandalar/KingsRest/kings_rest.cpp index 5ffa6554ebceb..b14e901d8bbce 100644 --- a/src/server/scripts/Zandalar/KingsRest/kings_rest.cpp +++ b/src/server/scripts/Zandalar/KingsRest/kings_rest.cpp @@ -288,7 +288,7 @@ struct go_kings_rest_serpentine_seal : public GameObjectAI bool OnGossipHello(Player* /*player*/) override { me->UseDoorOrButton(); - _scheduler.Schedule(3s, [this](TaskContext) + _scheduler.Schedule(3s, [this](TaskContext const&) { if (TempSummon* zul = me->SummonCreature(NPC_SHADOW_OF_ZUL, ShadowOfZulSerpentBossEventSpawnPosition)) zul->SetScriptStringId("SerpentBossEvent"); @@ -320,7 +320,7 @@ struct npc_kings_rest_shadow_of_zul : public ScriptedAI { Seconds delay = 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { Talk(SAY_ZUL_PRE_BOSS_EVENT_SPAWN); me->CastSpell(nullptr, SPELL_ZUL_TRASH_EVENT_STATE, false); @@ -334,7 +334,7 @@ struct npc_kings_rest_shadow_of_zul : public ScriptedAI delay += 9s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { std::vector spawnedCreatures; me->GetMap()->SpawnGroupSpawn(SPAWN_GROUP_PRE_FIRST_BOSS, false, false, &spawnedCreatures); @@ -350,14 +350,14 @@ struct npc_kings_rest_shadow_of_zul : public ScriptedAI delay += 5s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { me->RemoveAurasDueToSpell(SPELL_ZUL_SHADOWFORM); }); delay += 1s; - _scheduler.Schedule(delay, [this](TaskContext) + _scheduler.Schedule(delay, [this](TaskContext const&) { me->SetDisplayId(DISPLAY_INVISIBLE_ZUL); me->DespawnOrUnsummon(1s); From 5bd241a82679659d1343b056d0829864d42c2f0d Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 15 Apr 2026 00:02:59 +0200 Subject: [PATCH 057/175] Core/Auras: Update absorb aura priority ordering --- src/server/game/Entities/Unit/Unit.cpp | 11 +++++- .../game/Spells/Auras/SpellAuraEffects.h | 38 +------------------ 2 files changed, 11 insertions(+), 38 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 038af6515efcf..82bd3399bb5bf 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -998,6 +998,7 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit const* excludeCasterChannel if (damagetype != NODAMAGE && damagetype != SELF_DAMAGE && victim->HasAuraType(SPELL_AURA_SCHOOL_ABSORB_OVERKILL)) { AuraEffectVector vAbsorbOverkill = CopyAuraEffectList(victim->GetAuraEffectsByType(SPELL_AURA_SCHOOL_ABSORB_OVERKILL)); + std::ranges::stable_sort(vAbsorbOverkill, Trinity::AbsorbAuraOrderPred()); DamageInfo damageInfo = DamageInfo(attacker, victim, damageTaken, spellProto, damageSchoolMask, damagetype, cleanDamage ? cleanDamage->attackType : BASE_ATTACK); for (AuraEffect* absorbAurEff : vAbsorbOverkill) @@ -1011,7 +1012,12 @@ bool Unit::HasBreakableByDamageCrowdControlAura(Unit const* excludeCasterChannel continue; // cannot absorb over limit - if (damageTaken >= victim->CountPctFromMaxHealth(100 + absorbAurEff->GetMiscValueB())) + if (absorbAurEff->GetAmount() > 0) + { + if (damageTaken > absorbAurEff->GetAmount()) + continue; + } + else if (damageTaken >= victim->GetMaxHealth() * 2) continue; // absorb all damage by default @@ -1891,7 +1897,7 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit // We're going to call functions which can modify content of the list during iteration over it's elements // Let's copy the list so we can prevent iterator invalidation AuraEffectVector vSchoolAbsorbCopy = CopyAuraEffectList(damageInfo.GetVictim()->GetAuraEffectsByType(SPELL_AURA_SCHOOL_ABSORB)); - std::sort(vSchoolAbsorbCopy.begin(), vSchoolAbsorbCopy.end(), Trinity::AbsorbAuraOrderPred()); + std::ranges::stable_sort(vSchoolAbsorbCopy, Trinity::AbsorbAuraOrderPred()); // absorb without mana cost for (auto itr = vSchoolAbsorbCopy.begin(); (itr != vSchoolAbsorbCopy.end()) && (damageInfo.GetDamage() > 0); ++itr) @@ -2104,6 +2110,7 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit return; AuraEffectVector vHealAbsorb = CopyAuraEffectList(healInfo.GetTarget()->GetAuraEffectsByType(SPELL_AURA_SCHOOL_HEAL_ABSORB)); + std::ranges::stable_sort(vHealAbsorb, Trinity::AbsorbAuraOrderPred()); for (auto i = vHealAbsorb.begin(); i != vHealAbsorb.end() && healInfo.GetHeal() > 0; ++i) { AuraEffect* absorbAurEff = *i; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 4f02394b7118a..8bdccfb27c2b8 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -380,43 +380,9 @@ namespace Trinity class AbsorbAuraOrderPred { public: - AbsorbAuraOrderPred() { } - bool operator() (AuraEffect* aurEffA, AuraEffect* aurEffB) const + bool operator()(AuraEffect const* aurEffA, AuraEffect const* aurEffB) const { - SpellInfo const* spellProtoA = aurEffA->GetSpellInfo(); - SpellInfo const* spellProtoB = aurEffB->GetSpellInfo(); - - // Fel Blossom - if (spellProtoA->Id == 28527) - return true; - if (spellProtoB->Id == 28527) - return false; - - // Ice Barrier - if (spellProtoA->GetCategory() == 471) - return true; - if (spellProtoB->GetCategory() == 471) - return false; - - // Sacrifice - if (spellProtoA->Id == 7812) - return true; - if (spellProtoB->Id == 7812) - return false; - - // Cauterize (must be last) - if (spellProtoA->Id == 86949) - return false; - if (spellProtoB->Id == 86949) - return true; - - // Spirit of Redemption (must be last) - if (spellProtoA->Id == 20711) - return false; - if (spellProtoB->Id == 20711) - return true; - - return false; + return aurEffA->GetMiscValueB() < aurEffB->GetMiscValueB(); } }; } From a1105cc26a1f3ba73d63ff14af42ea9d5a386854 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Wed, 15 Apr 2026 18:58:00 +0300 Subject: [PATCH 058/175] Core/Misc: Update languages defines (#31794) --- src/server/game/Miscellaneous/SharedDefines.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index d6cff6931df20..86298c0519703 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1230,7 +1230,7 @@ enum CharacterRestrictionFlags : uint32 CHARACTER_RESTRICTION_FLAG_EXPANSION_TRIAL = 0x00080000, }; -// Languages.db2 (11.2.5.62687) +// Languages.db2 (12.0.1.66838) enum Language { LANG_UNIVERSAL = 0, @@ -1280,6 +1280,7 @@ enum Language LANG_EARTHEN = 304, LANG_NERUBIAN = 307, LANG_TONGUES_OF_SANCTUARY = 308, + LANG_HARANI = 309, }; enum TeamId From 2fa9207819644c550b8bf6a154982c895ce06b5d Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 16 Apr 2026 17:59:22 +0200 Subject: [PATCH 059/175] Core/Misc: Change Float*chrono* typedefs to double to match return type of chrono_literals --- src/common/Utilities/Duration.h | 8 ++++---- src/server/game/Spells/Auras/SpellAuras.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/common/Utilities/Duration.h b/src/common/Utilities/Duration.h index 8ad5be0a10bba..f30841794ee08 100644 --- a/src/common/Utilities/Duration.h +++ b/src/common/Utilities/Duration.h @@ -22,19 +22,19 @@ /// Milliseconds shorthand typedef. using Milliseconds = std::chrono::milliseconds; -using FloatMilliseconds = std::chrono::duration; +using FloatMilliseconds = std::chrono::duration; /// Seconds shorthand typedef. using Seconds = std::chrono::seconds; -using FloatSeconds = std::chrono::duration; +using FloatSeconds = std::chrono::duration; /// Minutes shorthand typedef. using Minutes = std::chrono::minutes; -using FloatMinutes = std::chrono::duration; +using FloatMinutes = std::chrono::duration; /// Hours shorthand typedef. using Hours = std::chrono::hours; -using FloatHours = std::chrono::duration; +using FloatHours = std::chrono::duration; /// time_point shorthand typedefs typedef std::chrono::steady_clock::time_point TimePoint; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 819f69257dbef..3bdbffe7692db 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -2046,8 +2046,8 @@ float Aura::CalcPPMProcChance(Unit* actor) const float averageProcInterval = 60.0f / ppm; TimePoint currentTime = GameTime::Now(); - float secondsSinceLastAttempt = std::min(duration_cast(currentTime - m_lastProcAttemptTime).count(), 10.0f); - float secondsSinceLastProc = std::min(duration_cast(currentTime - m_lastProcSuccessTime).count(), 1000.0f); + float secondsSinceLastAttempt = std::min(duration_cast(currentTime - m_lastProcAttemptTime).count(), 10.0); + float secondsSinceLastProc = std::min(duration_cast(currentTime - m_lastProcSuccessTime).count(), 1000.0); float chance = std::max(1.0f, 1.0f + ((secondsSinceLastProc / averageProcInterval - 1.5f) * 3.0f)) * ppm * secondsSinceLastAttempt / 60.0f; RoundToInterval(chance, 0.0f, 1.0f); From baad1511bb2c64a3a7d2529767db3b2a92511899 Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 17 Apr 2026 09:20:14 +0200 Subject: [PATCH 060/175] Core/PacketIO: Increase max packets allowed for CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID --- src/server/game/Server/WorldSession.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 2ab2959bc6542..754879db8a9a6 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -1722,6 +1722,12 @@ uint32 WorldSession::DosProtection::GetMaxPacketCounterAllowed(uint32 opcode) co maxPacketCounterAllowed = 1; break; } + case CMSG_CHECK_IS_ADVENTURE_MAP_POI_VALID: // not profiled + { + // 12.0.1: all entries of the db2 are sent + maxPacketCounterAllowed = sAdventureMapPOIStore.GetNumRows(); + break; + } default: { maxPacketCounterAllowed = 100; From aceba59386c40f02207955982596a811cf129937 Mon Sep 17 00:00:00 2001 From: Naddley Date: Fri, 17 Apr 2026 10:54:06 +0200 Subject: [PATCH 061/175] DB/Quest: Added queststarter for Quest: "A Voice from the Light" --- .../world/master/2026_04_17_00_world.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 sql/updates/world/master/2026_04_17_00_world.sql diff --git a/sql/updates/world/master/2026_04_17_00_world.sql b/sql/updates/world/master/2026_04_17_00_world.sql new file mode 100644 index 0000000000000..13bacbebcc67c --- /dev/null +++ b/sql/updates/world/master/2026_04_17_00_world.sql @@ -0,0 +1,22 @@ +-- Quest +DELETE FROM `quest_details` WHERE `ID`=88719; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(88719, 0, 0, 0, 0, 0, 0, 0, 0, 66838); -- A Voice from the Light + +DELETE FROM `creature_queststarter` WHERE (`id`=241677 AND `quest`=88719); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(241677, 88719, 66838); -- A Voice from the Light offered by Image of Lady Liadrin + +DELETE FROM `quest_template_addon` WHERE `ID` = 88719; +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `BreadcrumbForQuestId`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(88719, 0, 0, 0, 91281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); + +-- Gossip +UPDATE `gossip_menu` SET `VerifiedBuild`=66838 WHERE (`MenuID`=39008 AND `TextID`=610006); +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=39008 AND `OptionID`=3); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(39008, 133523, 3, 0, 'Please summon me to the Isle of Quel\'Danas.', 0, 0, 1, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 15) AND (`SourceGroup` IN (39008)); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES +(15, 39008, 3, 0, 0, 47, 0, 88719, 8, 0, '', 0, 'Player for which gossip text is shown has A Voice from the Light (88719) in state incomplete'); From 362fd32a6362fe43f4cd2d4b4fe4873076f8afc4 Mon Sep 17 00:00:00 2001 From: Naddley Date: Fri, 17 Apr 2026 10:55:46 +0200 Subject: [PATCH 062/175] DB/Silvermoon: Added Lor'themar and Scouting Map spawns --- .../world/master/2026_04_17_01_world.sql | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 sql/updates/world/master/2026_04_17_01_world.sql diff --git a/sql/updates/world/master/2026_04_17_01_world.sql b/sql/updates/world/master/2026_04_17_01_world.sql new file mode 100644 index 0000000000000..1c219c7081251 --- /dev/null +++ b/sql/updates/world/master/2026_04_17_01_world.sql @@ -0,0 +1,63 @@ +SET @CGUID := 11000752; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+2; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 240523, 0, 15969, 16333, '0', 0, 0, 0, 0, 8457.0634765625, -4616.673828125, 48.38300704956054687, 4.704249858856201171, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Scouting Map (Area: Sanctum of Light - Difficulty: 0) CreateObject1 (Auras: 1235365 - Quest Bang - Zone Choice Map) +(@CGUID+1, 244550, 0, 15969, 16333, '0', 0, 0, 0, 0, 8457.0634765625, -4616.673828125, 48.38300704956054687, 4.704249858856201171, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Scouting Map (Area: Sanctum of Light - Difficulty: 0) CreateObject1 +(@CGUID+2, 235787, 0, 15969, 16333, '0', 27428, 0, 0, 1, 8457.0390625, -4610.58154296875, 48.33489227294921875, 1.693117976188659667, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Lor'themar Theron (Area: Sanctum of Light - Difficulty: 0) CreateObject1 + +-- Template Addon +DELETE FROM `creature_template_addon` WHERE `entry` IN (240523,235787); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(240523, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '1235365'), -- 240523 (Scouting Map) - Quest Bang - Zone Choice Map +(235787, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); -- 235787 (Lor'themar Theron) + +-- Template +UPDATE `creature_template` SET `faction`=190, `npcflag`=2, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0x41008000 WHERE `entry`=244550; -- Scouting Map +UPDATE `creature_template` SET `faction`=190, `npcflag`=1, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0x41000000 WHERE `entry`=240523; -- Scouting Map +UPDATE `creature_template` SET `faction`=3526, `npcflag`=3, `BaseAttackTime`=2000, `unit_flags`=0x100, `unit_flags2`=0x4800 WHERE `entry`=235787; -- Lor'themar Theron + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321, `StaticFlags1`=0x20000100, `VerifiedBuild`=66838 WHERE (`Entry`=244550 AND `DifficultyID`=0); -- 244550 (Scouting Map) - Sessile, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321, `StaticFlags1`=0x20000100, `StaticFlags3`=0x2000000, `VerifiedBuild`=66838 WHERE (`Entry`=240523 AND `DifficultyID`=0); -- 240523 (Scouting Map) - Sessile, Floating - CannotTurn +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3313, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=235787 AND `DifficultyID`=0); -- 235787 (Lor'themar Theron) - CanSwim + +-- Phase +DELETE FROM `phase_name` WHERE `ID` = 27428; +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(27428, 'Cosmetic - Lor''themar Theron at the Sanctum of Light'); + +DELETE FROM `phase_area` WHERE `PhaseId` = 27428; +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(15969, 27428, 'Lor''themar Theron at the Sanctum of Light'); + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=240523 AND `MenuID`=38539); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(240523, 38539, 66838); -- Scouting Map + +DELETE FROM `gossip_menu` WHERE (`MenuID`=38539 AND `TextID`=34568); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(38539, 34568, 66838); -- 240523 (Scouting Map) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=38539 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(38539, 132746, 0, 31, 'Show me what missions you have prepared.', 95541, 0, 0, 0, 0, 58756, 0, 0, NULL, 0, NULL, NULL, 66838); -- OptionBroadcastTextID: 95541 - 96633 - 98823 + +-- Quest +DELETE FROM `quest_offer_reward` WHERE `ID`=94993; +INSERT INTO `quest_offer_reward` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `RewardText`, `VerifiedBuild`) VALUES +(94993, 0, 0, 0, 0, 0, 0, 0, 0, 'You have embarked on a campaign chapter using the Scouting Map. You may return to the Sanctum of Light to make another selection.', 66838); -- Adventuring in Midnight + +DELETE FROM `quest_details` WHERE `ID`=94993; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(94993, 0, 0, 0, 0, 0, 0, 0, 0, 66838); -- Adventuring in Midnight + +UPDATE `quest_poi` SET `VerifiedBuild`=66838 WHERE (`QuestID`=89402 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=89402 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=94993 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=56119 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=56119 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=50605 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=50601 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=48639 AND `BlobIndex`=0 AND `Idx1`=3) OR (`QuestID`=48639 AND `BlobIndex`=3 AND `Idx1`=2) OR (`QuestID`=48639 AND `BlobIndex`=2 AND `Idx1`=1) OR (`QuestID`=48639 AND `BlobIndex`=1 AND `Idx1`=0) OR (`QuestID`=43179 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=48641 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=48641 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=53436 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=53436 AND `BlobIndex`=0 AND `Idx1`=0); + +UPDATE `quest_poi_points` SET `VerifiedBuild`=66838 WHERE (`QuestID`=89402 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=89402 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=94993 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=56119 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=56119 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=50605 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=50601 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=3 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=43179 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=48641 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=48641 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=53436 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=53436 AND `Idx1`=0 AND `Idx2`=0); + +DELETE FROM `quest_details` WHERE `ID`=89402; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(89402, 0, 0, 0, 0, 0, 0, 0, 0, 66838); -- Harandar From 907b22168674719631fbc9bb5076b1b7935e6360 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 17 Apr 2026 11:03:11 +0200 Subject: [PATCH 063/175] Dep/gSOAP: Upgrade to 2.8.141 --- dep/PackageList.txt | 2 +- dep/gsoap/soapC.cpp | 89 +-- dep/gsoap/soapH.h | 4 +- dep/gsoap/soapServer.cpp | 6 +- dep/gsoap/soapStub.h | 9 +- dep/gsoap/stdsoap2.cpp | 1588 +++++++++++++++++++++++++++----------- dep/gsoap/stdsoap2.h | 131 ++-- 7 files changed, 1252 insertions(+), 577 deletions(-) diff --git a/dep/PackageList.txt b/dep/PackageList.txt index 76711319814c1..68b56816450aa 100644 --- a/dep/PackageList.txt +++ b/dep/PackageList.txt @@ -42,7 +42,7 @@ zlib (A Massively Spiffy Yet Delicately Unobtrusive Compression Library) gSOAP (a portable development toolkit for C and C++ XML Web services and XML data bindings) http://gsoap2.sourceforge.net/ - Version: 2.8.117 + Version: 2.8.141 recastnavigation (Recast is state of the art navigation mesh construction toolset for games) https://github.com/recastnavigation/recastnavigation diff --git a/dep/gsoap/soapC.cpp b/dep/gsoap/soapC.cpp index 943f2cc7a5b9e..54018cf737d22 100644 --- a/dep/gsoap/soapC.cpp +++ b/dep/gsoap/soapC.cpp @@ -1,8 +1,8 @@ /* soapC.cpp - Generated by gSOAP 2.8.117 for gsoap.stub + Generated by gSOAP 2.8.141 for gsoap.stub gSOAP XML Web services tools -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc. All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc. All Rights Reserved. The soapcpp2 tool and its generated software are released under the GPL. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. @@ -18,7 +18,7 @@ A commercial use license is available from Genivia Inc., contact@genivia.com #include "soapH.h" -SOAP_SOURCE_STAMP("@(#) soapC.cpp ver 2.8.117 2021-12-21 00:03:56 GMT") +SOAP_SOURCE_STAMP("@(#) soapC.cpp ver 2.8.141 2026-04-17 08:51:52 GMT") #ifndef WITH_NOGLOBAL @@ -115,8 +115,11 @@ SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_subcode(struct soap *soap) { - const char **s = soap_faultsubcode(soap); - return s ? *s : NULL; + if (!soap->fault) + return NULL; + if (soap->version == 2) + return soap->fault->SOAP_ENV__Code && soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode ? soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value : NULL; + return soap->fault->faultcode; } SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) @@ -563,7 +566,7 @@ SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, ch SOAP_FMAC3 char * SOAP_FMAC4 soap_new_byte(struct soap *soap, int n) { - char *a = static_cast(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(char))); + char *a = static_cast(soap_malloc(soap, (size_t)(n = (n < 0 ? 1 : n)) * sizeof(char))); for (char *p = a; p && n--; ++p) soap_default_byte(soap, p); return a; @@ -597,7 +600,7 @@ SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int SOAP_FMAC3 int * SOAP_FMAC4 soap_new_int(struct soap *soap, int n) { - int *a = static_cast(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(int))); + int *a = static_cast(soap_malloc(soap, (size_t)(n = (n < 0 ? 1 : n)) * sizeof(int))); for (int *p = a; p && n--; ++p) soap_default_int(soap, p); return a; @@ -778,7 +781,7 @@ SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault( (void)type; (void)arrayType; /* appease -Wall -Werror */ struct SOAP_ENV__Fault *p; size_t k = sizeof(struct SOAP_ENV__Fault); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Fault, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_SOAP_ENV__Fault, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -786,15 +789,11 @@ SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault( } else { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Fault, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Fault location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -887,7 +886,7 @@ SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reaso (void)type; (void)arrayType; /* appease -Wall -Werror */ struct SOAP_ENV__Reason *p; size_t k = sizeof(struct SOAP_ENV__Reason); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Reason, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_SOAP_ENV__Reason, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -895,15 +894,11 @@ SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reaso } else { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Reason, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Reason location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -1005,7 +1000,7 @@ SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detai (void)type; (void)arrayType; /* appease -Wall -Werror */ struct SOAP_ENV__Detail *p; size_t k = sizeof(struct SOAP_ENV__Detail); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Detail, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_SOAP_ENV__Detail, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -1013,15 +1008,11 @@ SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detai } else { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Detail, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Detail location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -1125,7 +1116,7 @@ SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(st (void)type; (void)arrayType; /* appease -Wall -Werror */ struct SOAP_ENV__Code *p; size_t k = sizeof(struct SOAP_ENV__Code); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Code, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_SOAP_ENV__Code, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -1133,15 +1124,11 @@ SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(st } else { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Code, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Code location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -1221,7 +1208,7 @@ SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Heade (void)type; (void)arrayType; /* appease -Wall -Werror */ struct SOAP_ENV__Header *p; size_t k = sizeof(struct SOAP_ENV__Header); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Header, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_SOAP_ENV__Header, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -1229,15 +1216,11 @@ SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Heade } else { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Header, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Header location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -1326,7 +1309,7 @@ SOAP_FMAC1 struct ns1__executeCommand * SOAP_FMAC2 soap_instantiate_ns1__execute (void)type; (void)arrayType; /* appease -Wall -Werror */ struct ns1__executeCommand *p; size_t k = sizeof(struct ns1__executeCommand); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_ns1__executeCommand, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_ns1__executeCommand, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -1334,15 +1317,11 @@ SOAP_FMAC1 struct ns1__executeCommand * SOAP_FMAC2 soap_instantiate_ns1__execute } else { p = SOAP_NEW_ARRAY(soap, struct ns1__executeCommand, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct ns1__executeCommand location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -1429,7 +1408,7 @@ SOAP_FMAC1 struct ns1__executeCommandResponse * SOAP_FMAC2 soap_instantiate_ns1_ (void)type; (void)arrayType; /* appease -Wall -Werror */ struct ns1__executeCommandResponse *p; size_t k = sizeof(struct ns1__executeCommandResponse); - struct soap_clist *cp = soap_link(soap, SOAP_TYPE_ns1__executeCommandResponse, n, soap_fdelete); + struct soap_clist *cp = soap_new_link(soap, SOAP_TYPE_ns1__executeCommandResponse, n, soap_fdelete); if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) return NULL; if (n < 0) @@ -1437,15 +1416,11 @@ SOAP_FMAC1 struct ns1__executeCommandResponse * SOAP_FMAC2 soap_instantiate_ns1_ } else { p = SOAP_NEW_ARRAY(soap, struct ns1__executeCommandResponse, n); - k *= n; + k *= (size_t)n; } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct ns1__executeCommandResponse location=%p n=%d\n", (void*)p, n)); if (size) *size = k; - if (!p) - soap->error = SOAP_EOM; - else if (cp) - cp->ptr = (void*)p; + soap_set_link(soap, cp, p); return p; } @@ -1750,7 +1725,7 @@ SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag SOAP_FMAC3 char * * SOAP_FMAC4 soap_new_string(struct soap *soap, int n) { - char * *a = static_cast(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(char *))); + char * *a = static_cast(soap_malloc(soap, (size_t)(n = (n < 0 ? 1 : n)) * sizeof(char *))); for (char * *p = a; p && n--; ++p) soap_default_string(soap, p); return a; diff --git a/dep/gsoap/soapH.h b/dep/gsoap/soapH.h index 8f521c1f0824e..c4c4f37fa54df 100644 --- a/dep/gsoap/soapH.h +++ b/dep/gsoap/soapH.h @@ -1,8 +1,8 @@ /* soapH.h - Generated by gSOAP 2.8.117 for gsoap.stub + Generated by gSOAP 2.8.141 for gsoap.stub gSOAP XML Web services tools -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc. All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc. All Rights Reserved. The soapcpp2 tool and its generated software are released under the GPL. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. diff --git a/dep/gsoap/soapServer.cpp b/dep/gsoap/soapServer.cpp index c457282350176..fa37a51fe59f7 100644 --- a/dep/gsoap/soapServer.cpp +++ b/dep/gsoap/soapServer.cpp @@ -1,8 +1,8 @@ /* soapServer.cpp - Generated by gSOAP 2.8.117 for gsoap.stub + Generated by gSOAP 2.8.141 for gsoap.stub gSOAP XML Web services tools -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc. All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc. All Rights Reserved. The soapcpp2 tool and its generated software are released under the GPL. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. @@ -17,7 +17,7 @@ A commercial use license is available from Genivia Inc., contact@genivia.com #endif #include "soapH.h" -SOAP_SOURCE_STAMP("@(#) soapServer.cpp ver 2.8.117 2021-12-21 00:03:56 GMT") +SOAP_SOURCE_STAMP("@(#) soapServer.cpp ver 2.8.141 2026-04-17 08:51:52 GMT") extern "C" SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap *soap) { #ifndef WITH_FASTCGI diff --git a/dep/gsoap/soapStub.h b/dep/gsoap/soapStub.h index c90078a9c4b55..e02b40bbedb9c 100644 --- a/dep/gsoap/soapStub.h +++ b/dep/gsoap/soapStub.h @@ -1,8 +1,8 @@ /* soapStub.h - Generated by gSOAP 2.8.117 for gsoap.stub + Generated by gSOAP 2.8.141 for gsoap.stub gSOAP XML Web services tools -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc. All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc. All Rights Reserved. The soapcpp2 tool and its generated software are released under the GPL. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. @@ -15,10 +15,11 @@ A commercial use license is available from Genivia Inc., contact@genivia.com #ifndef soapStub_H #define soapStub_H #include "stdsoap2.h" -#if GSOAP_VERSION != 208117 -# error "GSOAP VERSION 208117 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE" +#if GSOAP_VERSION != 208141 +# error "GSOAP VERSION 208141 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE" #endif +#include /******************************************************************************\ * * diff --git a/dep/gsoap/stdsoap2.cpp b/dep/gsoap/stdsoap2.cpp index e957a298cd5ea..be9cdceafd392 100644 --- a/dep/gsoap/stdsoap2.cpp +++ b/dep/gsoap/stdsoap2.cpp @@ -1,10 +1,10 @@ /* - stdsoap2.c[pp] 2.8.117 + stdsoap2.c[pp] 2.8.141 gSOAP runtime engine gSOAP XML Web services tools -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc., All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc., All Rights Reserved. This part of the software is released under ONE of the following licenses: GPL or the gSOAP public license. -------------------------------------------------------------------------------- @@ -25,7 +25,7 @@ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Initial Developer of the Original Code is Robert A. van Engelen. -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc., All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc., All Rights Reserved. -------------------------------------------------------------------------------- GPL license. @@ -52,10 +52,20 @@ A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ -#define GSOAP_LIB_VERSION 208117 +#define GSOAP_LIB_VERSION 208141 +/* silence GNU's warnings on format nonliteral strings and truncation (snprintf truncates on purpose for safety) */ +#ifdef __GNUC__ +# define GCC_VERSION_AT_LEAST(major, minor, patch) (GCC_VERSION >= (major * 10000 + minor * 100 + patch)) +# pragma GCC diagnostic ignored "-Wformat-nonliteral" +# if GCC_VERSION_AT_LEAST(7, 0, 0) +# pragma GCC diagnostic ignored "-Wformat-truncation" +# endif +#endif + +/* convert EBCDIC to ASCII */ #ifdef AS400 -# pragma convert(819) /* EBCDIC to ASCII */ +# pragma convert(819) #endif #if defined(__gnu_linux__) && !defined(_GNU_SOURCE) @@ -81,15 +91,15 @@ A commercial use license is available from Genivia, Inc., contact@genivia.com # else # pragma comment(lib, "Ws2_32.lib") # endif -# pragma warning(disable : 4996) /* disable deprecation warnings */ +# pragma warning(disable : 4996) /* disable visual studio POSIX deprecation warnings */ # endif #endif #ifdef __cplusplus -SOAP_SOURCE_STAMP("@(#) stdsoap2.cpp ver 2.8.117 2021-08-19 00:00:00 GMT") +SOAP_SOURCE_STAMP("@(#) stdsoap2.cpp ver 2.8.141 2026-04-08 00:00:00 GMT") extern "C" { #else -SOAP_SOURCE_STAMP("@(#) stdsoap2.c ver 2.8.117 2021-08-19 00:00:00 GMT") +SOAP_SOURCE_STAMP("@(#) stdsoap2.c ver 2.8.141 2026-04-08 00:00:00 GMT") #endif /* 8bit character representing unknown character entity or multibyte data */ @@ -113,24 +123,18 @@ SOAP_SOURCE_STAMP("@(#) stdsoap2.c ver 2.8.117 2021-08-19 00:00:00 GMT") #define soap_coblank(c) ((c)+1 > 0 && (c) <= 32) -#if defined(WIN32) && !defined(UNDER_CE) -#define soap_hash_ptr(p) ((size_t)((PtrToUlong(p) >> 3) & (SOAP_PTRHASH - 1))) -#else -#define soap_hash_ptr(p) ((size_t)(((unsigned long)(p) >> 3) & (SOAP_PTRHASH-1))) +#if !defined(WIN32) || defined(UNDER_CE) +#define PtrToUlong(p) ((unsigned long)p) #endif +#define soap_hash_ptr(p) ((size_t)((PtrToUlong(p) >> 3) & (SOAP_PTRHASH - 1))) + #ifdef SOAP_DEBUG static void soap_init_logs(struct soap*); static void soap_close_logfile(struct soap*, int); static void soap_set_logfile(struct soap*, int, const char*); #endif -#ifdef SOAP_MEM_DEBUG -static void soap_init_mht(struct soap*); -static void soap_free_mht(struct soap*); -static void soap_track_unlink(struct soap*, const void*); -#endif - static int soap_set_error(struct soap*, const char*, const char*, const char*, const char*, int); static int soap_copy_fault(struct soap*, const char*, const char*, const char*, const char*); static int soap_getattrval(struct soap*, char*, size_t*, soap_wchar); @@ -157,16 +161,21 @@ static void soap_free_iht(struct soap*); #endif static void soap_init_pht(struct soap*); static void soap_free_pht(struct soap*); +static void soap_init_cht(struct soap*); +static void soap_free_cht(struct soap*); #ifndef WITH_LEAN static const char *soap_set_validation_fault(struct soap*, const char*, const char*); static int soap_isnumeric(struct soap*, const char*); static struct soap_nlist *soap_push_ns(struct soap *soap, const char *id, const char *ns, short utilized, short isearly); static void soap_utilize_ns(struct soap *soap, const char *tag, short isearly); -static const wchar_t* soap_wstring(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern); static wchar_t* soap_wcollapse(struct soap *soap, wchar_t *s, int flag, int insitu); #endif +#ifndef WITH_LEANER +static const wchar_t* soap_wstring(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern); +#endif + static const char* soap_string(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern); static char* soap_collapse(struct soap *soap, char *s, int flag, int insitu); static const char* soap_QName(struct soap *soap, const char *s, long minlen, long maxlen, const char *pattern); @@ -194,7 +203,7 @@ static int soap_ssl_init_done = 0; static int ssl_auth_init(struct soap*); static int ssl_verify_callback(int, X509_STORE_CTX*); static int ssl_verify_callback_allow_expired_certificate(int, X509_STORE_CTX*); -static int ssl_password(char*, int, int, void *); +static int ssl_password(char*, int, int, void*); #endif #ifdef WITH_GNUTLS @@ -217,7 +226,16 @@ static const char *ssl_verify(struct soap *soap, const char *host); # endif #endif +#ifdef WITH_WOLFSSL +static int soap_ssl_init_done = 0; +static int ssl_auth_init(struct soap*); +static int ssl_verify_callback(int, WOLFSSL_X509_STORE_CTX*); +static int ssl_verify_callback_allow_expired_certificate(int, WOLFSSL_X509_STORE_CTX*); +static int ssl_password(char*, int, int, void*); +#endif + #ifdef WITH_SYSTEMSSL +static int soap_ssl_init_done = 0; static int ssl_auth_init(struct soap*); static int ssl_recv(int sk, void *s, int n, char *user); static int ssl_send(int sk, void *s, int n, char *user); @@ -286,12 +304,12 @@ static const char *soap_strerror(struct soap*); #define SOAP_SOCKBLOCK(fd) \ { \ u_long blocking = 0; \ - ioctl(fd, FIONBIO, (int)(&blocking)); \ + ioctl(fd, FIONBIO, (void*)(&blocking)); \ } #define SOAP_SOCKNONBLOCK(fd) \ { \ u_long nonblocking = 1; \ - ioctl(fd, FIONBIO, (int)(&nonblocking)); \ + ioctl(fd, FIONBIO, (void*)(&nonblocking)); \ } #elif defined(__VMS) #define SOAP_SOCKBLOCK(fd) \ @@ -340,7 +358,7 @@ static const char soap_indent[41] = "\n "; #endif #ifndef SOAP_CANARY -# define SOAP_CANARY (0xC0DE) +# define SOAP_CANARY (0x5AFEC0DE) #endif static const char soap_padding[4] = "\0\0\0"; @@ -610,6 +628,11 @@ fsend(struct soap *soap, const char *s, size_t n) r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL | SOAP_TCP_SELECT_PIP, soap->send_timeout); else #endif +#ifdef WITH_WOLFSSL + if (soap->ssl) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL | SOAP_TCP_SELECT_PIP, soap->send_timeout); + else +#endif #ifdef WITH_SYSTEMSSL if (soap->ssl) r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL | SOAP_TCP_SELECT_PIP, soap->send_timeout); @@ -632,6 +655,11 @@ fsend(struct soap *soap, const char *s, size_t n) r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL, soap->send_timeout); else #endif +#ifdef WITH_WOLFSSL + if (soap->ssl) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL, soap->send_timeout); + else +#endif #ifdef WITH_SYSTEMSSL if (soap->ssl) r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL, soap->send_timeout); @@ -671,6 +699,11 @@ fsend(struct soap *soap, const char *s, size_t n) nwritten = gnutls_record_send(soap->session, s, n); else #endif +#ifdef WITH_WOLFSSL + if (soap->ssl) + nwritten = wolfSSL_write(soap->ssl, s, n); + else +#endif #ifdef WITH_SYSTEMSSL if (soap->ssl) { @@ -747,17 +780,30 @@ fsend(struct soap *soap, const char *s, size_t n) else if (nwritten == GNUTLS_E_AGAIN) err = SOAP_EAGAIN; } +#endif +#ifdef WITH_WOLFSSL + if (soap->ssl && (r = wolfSSL_get_error(soap->ssl, nwritten)) != SSL_ERROR_NONE && r != SSL_ERROR_WANT_READ && r != SSL_ERROR_WANT_WRITE) + { + soap->errnum = err; + return SOAP_EOF; + } #endif if (err == SOAP_EWOULDBLOCK || err == SOAP_EAGAIN) { -#if defined(WITH_OPENSSL) +#ifdef WITH_OPENSSL if (soap->ssl && r == SSL_ERROR_WANT_READ) r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); else -#elif defined(WITH_GNUTLS) +#endif +#ifdef WITH_GNUTLS if (soap->session && !gnutls_record_get_direction(soap->session)) r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); else +#endif +#ifdef WITH_WOLFSSL + if (soap->ssl && r == SSL_ERROR_WANT_READ) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); + else #endif r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); if (!r && soap->send_timeout) @@ -927,7 +973,7 @@ soap_flush_raw(struct soap *soap, const char *s, size_t n) #ifndef WITH_LEANER if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) { - char t[24]; + char t[24]; /* note: actually the value of n <= SOAP_BUFLEN, which is 65536 or smaller */ (SOAP_SNPRINTF(t, sizeof(t), 20), &"\r\n%lX\r\n"[soap->chunksize ? 0 : 2], (unsigned long)n); DBGMSG(SENT, t, strlen(t)); soap->error = soap->fsend(soap, t, strlen(t)); @@ -936,7 +982,7 @@ soap_flush_raw(struct soap *soap, const char *s, size_t n) soap->chunksize += n; } DBGMSG(SENT, s, n); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Send %u bytes to socket=%d/fd=%d\n", (unsigned int)n, (int)soap->socket, soap->sendfd)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Send %lu bytes to socket=%d/fd=%d\n", (unsigned long)n, (int)soap->socket, soap->sendfd)); #endif return soap->error = soap->fsend(soap, s, n); } @@ -1223,6 +1269,15 @@ frecv(struct soap *soap, char *s, size_t n) } else #endif +#ifdef WITH_WOLFSSL + if (soap->ssl) + { + r = wolfSSL_read(soap->ssl, s, n); + if (r >= 0) + return (size_t)r; + } + else +#endif #ifdef WITH_SYSTEMSSL if (soap->ssl) { @@ -1238,7 +1293,7 @@ frecv(struct soap *soap, char *s, size_t n) #ifndef WITH_LEAN if ((soap->omode & SOAP_IO_UDP)) { - SOAP_SOCKLEN_T k = (SOAP_SOCKLEN_T)sizeof(soap->peer); + SOAP_SOCKLEN_T k = (SOAP_SOCKLEN_T)sizeof(soap->peer.addr); memset((void*)&soap->peer, 0, sizeof(soap->peer)); r = recvfrom(sk, s, (SOAP_WINSOCKINT)n, soap->socket_flags, &soap->peer.addr, &k); /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h, SOAP_WINSOCKINT cast is safe due to limited range of n in the engine (64K) */ soap->peerlen = (size_t)k; @@ -1276,6 +1331,11 @@ frecv(struct soap *soap, char *s, size_t n) if (soap->session && gnutls_record_get_direction(soap->session)) r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); else +#ifdef WITH_WOLFSSL + if (soap->ssl && err == SSL_ERROR_WANT_WRITE) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); + else +#endif #elif defined(WITH_SYSTEMSSL) if (soap->ssl && err == GSK_WOULD_BLOCK_WRITE) r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); @@ -1429,6 +1489,7 @@ soap_recv_raw(struct soap *soap) { soap_wchar c; char *t, tmp[17]; + unsigned long chunksize; if (soap->chunksize) { soap->buflen = ret = soap->frecv(soap, soap->buf, soap->chunksize > sizeof(soap->buf) ? sizeof(soap->buf) : soap->chunksize); @@ -1483,8 +1544,15 @@ soap_recv_raw(struct soap *soap) } *t = '\0'; DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunk size = %s (hex)\n", tmp)); - soap->chunksize = (size_t)soap_strtoul(tmp, &t, 16); - if (!soap->chunksize) + chunksize = soap_strtoul(tmp, &t, 16); + if (*t || chunksize > SOAP_MAXHTTPCHUNK || (soap->recv_maxlength && chunksize > soap->recv_maxlength)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunk size %lu exceeds max\n", chunksize)); + return soap->error = SOAP_HTTP_ERROR; + } + soap->chunksize = (size_t)chunksize; + soap->buflen = soap->bufidx + soap->chunksize; + if (soap->buflen <= soap->bufidx) { soap->bufidx = soap->buflen = soap->chunkbuflen = 0; DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of chunked message\n")); @@ -1492,7 +1560,6 @@ soap_recv_raw(struct soap *soap) soap->ahead = EOF; break; } - soap->buflen = soap->bufidx + soap->chunksize; DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Moving buf len to idx=%u len=%u (%s)\n", (unsigned int)soap->bufidx, (unsigned int)soap->buflen, tmp)); if (soap->buflen > soap->chunkbuflen) { @@ -1519,7 +1586,7 @@ soap_recv_raw(struct soap *soap) DBGMSG(RECV, soap->buf, ret); } #ifdef WITH_ZLIB - if ((soap->mode & SOAP_ENC_ZLIB)) + if ((soap->mode & SOAP_ENC_ZLIB) && soap->d_stream) { (void)soap_memcpy((void*)soap->z_buf, sizeof(soap->buf), (const void*)soap->buf, sizeof(soap->buf)); soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); @@ -1874,7 +1941,7 @@ soap_binary_search_string(const char **a, int n, const char *s) static soap_wchar soap_char(struct soap *soap) { - char tmp[8]; + char tmp[12]; int i; soap_wchar c; char *s = tmp; @@ -1889,8 +1956,12 @@ soap_char(struct soap *soap) if (*tmp == '#') { if (tmp[1] == 'x' || tmp[1] == 'X') - return (soap_wchar)soap_strtol(tmp + 2, NULL, 16); - return (soap_wchar)soap_strtol(tmp + 1, NULL, 10); + c = (soap_wchar)soap_strtoul(tmp + 2, NULL, 16); + else + c = (soap_wchar)soap_strtoul(tmp + 1, NULL, 10); + if (c > 0x10FFFF) + c = SOAP_UNKNOWN_CHAR; /* exceeds Unicode max */ + return c; } if (!strcmp(tmp, "lt")) return '<'; @@ -1905,7 +1976,7 @@ soap_char(struct soap *soap) #ifndef WITH_LEAN return (soap_wchar)soap_code_int(html_entity_codes, tmp, (LONG64)SOAP_UNKNOWN_CHAR); #else - return SOAP_UNKNOWN_CHAR; /* use this to represent unknown code */ + return SOAP_UNKNOWN_CHAR; /* unknown entity */ #endif } @@ -2112,6 +2183,7 @@ soap_getpi(struct soap *soap) s = strstr(buf, " encoding="); if (s && s[10]) { + int err; if (!soap_tag_cmp(s + 11, "iso-8859-*") || !soap_tag_cmp(s + 11, "latin*")) { @@ -2123,6 +2195,12 @@ soap_getpi(struct soap *soap) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Switching to utf-8 encoding\n")); soap->mode &= ~SOAP_ENC_LATIN; } + else if (soap->fencoding && ((err = soap->fencoding(soap, s + 11)) != SOAP_OK)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Callback fencoding returned %d\n", err)); + soap->error = err; + c = EOF; + } } } if ((int)c != EOF) @@ -3794,7 +3872,7 @@ soap_match_tag(struct soap *soap, const char *tag1, const char *tag2) { if (s) { - if (t[1] && SOAP_STRCMP(s + 1, t + 1)) + if (t[1] ? SOAP_STRCMP(s + 1, t + 1) : (soap->mode & SOAP_XML_IGNORENS)) return SOAP_TAG_MISMATCH; if (t != tag2 && !(soap->mode & SOAP_XML_IGNORENS)) { @@ -3944,7 +4022,7 @@ soap_rand() /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) SOAP_FMAC1 int SOAP_FMAC2 @@ -4014,10 +4092,19 @@ soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *key soap->xcred = NULL; } #endif +#ifdef WITH_WOLFSSL + (void)randfile; (void)sid; + if (!soap->fsslverify) + soap->fsslverify = ssl_verify_callback; + if (soap->ctx) + wolfSSL_CTX_free(soap->ctx); + soap->ctx = NULL; +#endif #ifdef WITH_SYSTEMSSL (void)randfile; (void)sid; if (soap->ctx) gsk_environment_close(&soap->ctx); + soap->ctx = NULL; #endif err = soap->fsslauth(soap); #ifdef WITH_OPENSSL @@ -4035,7 +4122,7 @@ soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *key /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) SOAP_FMAC1 int SOAP_FMAC2 @@ -4072,10 +4159,19 @@ soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *key soap->xcred = NULL; } #endif +#ifdef WITH_WOLFSSL + (void)randfile; + if (!soap->fsslverify) + soap->fsslverify = (flags & SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE) == 0 ? ssl_verify_callback : ssl_verify_callback_allow_expired_certificate; + if (soap->ctx) + wolfSSL_CTX_free(soap->ctx); + soap->ctx = NULL; +#endif #ifdef WITH_SYSTEMSSL (void)randfile; if (soap->ctx) gsk_environment_close(&soap->ctx); + soap->ctx = NULL; #endif return soap->fsslauth(soap); } @@ -4083,7 +4179,7 @@ soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *key /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) SOAP_FMAC1 int SOAP_FMAC2 @@ -4108,19 +4204,39 @@ soap_ssl_crl(struct soap *soap, const char *crlfile) #endif } else + { soap->crlfile = crlfile; /* activate later when store is available */ + } #endif #ifdef WITH_GNUTLS if (crlfile && soap->xcred) { if (*crlfile) + { if (gnutls_certificate_set_x509_crl_file(soap->xcred, crlfile, GNUTLS_X509_FMT_PEM) < 0) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CRL PEM file", SOAP_SSL_ERROR); + } } else { soap->crlfile = crlfile; /* activate later when xcred is available */ } +#endif +#ifdef WITH_WOLFSSL + if (crlfile && soap->ctx) + { + if (*crlfile) + { +#if defined(HAVE_CRL) && !defined(NO_FILESYSTEM) + if (wolfSSL_X509_load_crl_file(soap->ctx, crlfile) != SSL_SUCCESS) +#endif + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CRL PEM file", SOAP_SSL_ERROR); + } + } + else + { + soap->crlfile = crlfile; /* activate later when store is available */ + } #endif return SOAP_OK; } @@ -4128,7 +4244,7 @@ soap_ssl_crl(struct soap *soap, const char *crlfile) /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) SOAP_FMAC1 void SOAP_FMAC2 @@ -4146,7 +4262,7 @@ soap_ssl_init() SSL_load_error_strings(); #endif #endif -#if !defined(WIN32) && !defined(CYGWIN) && !defined(__MINGW32__) && !defined(__MINGW64__) +#if !defined(WIN32) && !defined(CYGWIN) && !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(VXWORKS) if (!RAND_load_file("/dev/urandom", 1024)) #else if (1) @@ -4186,6 +4302,9 @@ soap_ssl_init() # if GNUTLS_VERSION_NUMBER < 0x030300 gnutls_global_init(); # endif +#endif +#ifdef WITH_WOLFSSL + wolfSSL_Init(); #endif } } @@ -4193,7 +4312,7 @@ soap_ssl_init() /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) SOAP_FMAC1 void SOAP_FMAC2 @@ -4206,7 +4325,7 @@ soap_ssl_noinit() /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) SOAP_FMAC1 const char * SOAP_FMAC2 @@ -4261,6 +4380,10 @@ soap_ssl_error(struct soap *soap, int ret, int err) (void)err; return gnutls_strerror(ret); #endif +#ifdef WITH_WOLFSSL + err = wolfSSL_get_error(soap->ssl, ret); + return wolfSSL_ERR_error_string(err, soap->msgbuf); /* msgbuf size is at least 80 bytes (>=1024) */ +#endif } #endif @@ -4288,7 +4411,7 @@ ssl_send(int sk, void *s, int n, char *user) /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) static int ssl_auth_init(struct soap *soap) { @@ -4307,7 +4430,7 @@ ssl_auth_init(struct soap *soap) if (!soap->ctx) { #if OPENSSL_VERSION_NUMBER >= 0x10100000L - /* TLS_method: a TLS/SSL connection established may understand the SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols. */ + /* TLS_method: a TLS/SSL connection established may understand the SSLv3, TLSv1, TLSv1.1, TLSv1.2 and TLSv1.3 protocols. */ soap->ctx = SSL_CTX_new(TLS_method()); #else /* SSLv23_method: a TLS/SSL connection established may understand the SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols. */ @@ -4342,11 +4465,11 @@ ssl_auth_init(struct soap *soap) if (soap_ssl_crl(soap, soap->crlfile)) return soap->error; } -/* This code assumes a typical scenario with key and cert in one PEM file, see alternative code below */ +/* This code assumes a typical scenario with key and cert combined in one PEM file */ #if 1 if (soap->keyfile) { - if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile)) + if (SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile) != 1) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't find or read certificate in private key PEM file", SOAP_SSL_ERROR); if (soap->password) { @@ -4354,34 +4477,40 @@ ssl_auth_init(struct soap *soap) SSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); } #ifndef WM_SECURE_KEY_STORAGE - if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) + if (SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM) != 1) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); #endif } #else -/* Suggested alternative approach to check the key file for cert only when cafile==NULL */ +/* Alternative approach to check the key file for cert only when cafile==NULL */ +#ifndef WM_SECURE_KEY_STORAGE if (soap->password) { SSL_CTX_set_default_passwd_cb_userdata(soap->ctx, (void*)soap->password); SSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); } +#endif if (!soap->cafile) { if (soap->keyfile) { - if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile)) + if (SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile) != 1) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't find or read certificate in private key PEM file", SOAP_SSL_ERROR); - if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) +#ifndef WM_SECURE_KEY_STORAGE + if (SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM) != 1) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); +#endif } } - else /* use cafile for (server) cert and keyfile for (server) key */ + else /* use cafile for the root CA and (server) cert, and keyfile for (server) key */ { - if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->cafile)) + if (SSL_CTX_use_certificate_chain_file(soap->ctx, soap->cafile) != 1) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CA PEM file", SOAP_SSL_ERROR); +#ifndef WM_SECURE_KEY_STORAGE if (soap->keyfile) - if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) + if (SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM) != 1) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); +#endif } #endif #if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) @@ -4394,6 +4523,8 @@ ssl_auth_init(struct soap *soap) #endif if ((soap->ssl_flags & SOAP_SSL_RSA)) { + /* OpenSSL v3 deprecated low-level RSA key generation: ignore SOAP_SSL_RSA flag */ +#if OPENSSL_VERSION_NUMBER < 0x30000000L #if OPENSSL_VERSION_NUMBER >= 0x10002000L if (SSL_CTX_need_tmp_RSA(soap->ctx)) { @@ -4420,15 +4551,39 @@ ssl_auth_init(struct soap *soap) return soap_set_receiver_error(soap, "SSL/TLS error", "Can't generate RSA key", SOAP_SSL_ERROR); } RSA_free(rsa); +#endif #endif } else if (soap->dhfile) { - DH *dh = NULL; - char *s = NULL; + char *s = (char*)soap->dhfile; int n = (int)soap_strtoul(soap->dhfile, &s, 10); +#if OPENSSL_VERSION_NUMBER >= 0x30000000L + /* if dhfile is numeric, set auto DH selection regardless of the value of n */ + if (n >= 1 && *s == '\0') + { + if (!SSL_CTX_set_dh_auto(soap->ctx, 1)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't generate DH parameters", SOAP_SSL_ERROR); + } + else + { + EVP_PKEY *dh; + BIO *bio = BIO_new_file(soap->dhfile, "r"); + if (!bio) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read DH PEM file", SOAP_SSL_ERROR); + dh = PEM_read_bio_Parameters(bio, NULL); + BIO_free(bio); + if (!dh || !SSL_CTX_set0_tmp_dh_pkey(soap->ctx, dh)) + { + if (dh) + EVP_PKEY_free(dh); + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't set DH parameters", SOAP_SSL_ERROR); + } + } +#else + DH *dh = NULL; /* if dhfile is numeric, treat it as a key length to generate DH params which can take a while */ - if (n >= 512 && s && *s == '\0') + if (n >= 512 && *s == '\0') { #if OPENSSL_VERSION_NUMBER >= 0x10002000L dh = DH_new(); @@ -4453,13 +4608,14 @@ ssl_auth_init(struct soap *soap) dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); BIO_free(bio); } - if (!dh || DH_check(dh, &n) != 1 || SSL_CTX_set_tmp_dh(soap->ctx, dh) < 0) + if (!dh || !DH_check(dh, &n) || !SSL_CTX_set_tmp_dh(soap->ctx, dh)) { if (dh) DH_free(dh); return soap_set_receiver_error(soap, "SSL/TLS error", "Can't set DH parameters", SOAP_SSL_ERROR); } DH_free(dh); +#endif } /* enable all TSLv1 protocols and disable SSLv3 by default if no SSL/TLS flags are set */ if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == 0) @@ -4618,6 +4774,109 @@ ssl_auth_init(struct soap *soap) #endif } #endif +#ifdef WITH_WOLFSSL + WOLFSSL_METHOD *method = NULL; + int verify = WOLFSSL_VERIFY_PEER; + if (soap->ssl_flags & SOAP_SSL_CLIENT) + verify = (soap->ssl_flags & SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION) ? WOLFSSL_VERIFY_PEER : SSL_VERIFY_NONE; + else + verify = (soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION) ? SSL_VERIFY_PEER | WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT : SSL_VERIFY_NONE; + /* enable all TSLv1 protocols and disable SSLv3 by default if no SSL/TLS flags are set */ + if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == 0) + soap->ssl_flags |= SOAP_SSLv3_TLSv1; + if ((soap->ssl_flags & SOAP_SSL_CLIENT)) + { + if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == SOAP_SSLv3_TLSv1) + method = wolfSSLv23_client_method(); /* select all available protocols */ +#ifdef WOLFSSL_TLS13 + else if ((soap->ssl_flags & SOAP_TLSv1_3)) + method = wolfTLSv1_3_client_method(); /* TLSv1.3 only or upgrade to TLSv1.3 */ +#endif +#ifndef WOLFSSL_NO_TLS12 + else if ((soap->ssl_flags & SOAP_TLSv1_2)) + method = wolfTLSv1_2_client_method(); /* TLSv1.2 only or upgrade to TLSv1.2 */ +#endif +#ifndef NO_OLD_TLS + else if ((soap->ssl_flags & SOAP_TLSv1_1)) + method = wolfTLSv1_1_client_method(); /* TLSv1.1 only or upgrade to TLSv1.1 */ +#endif +#ifdef WOLFSSL_ALLOW_TLSV10 + else if ((soap->ssl_flags & SOAP_TLSv1_0)) + method = wolfTLSv1_client_method(); /* TLSv1.0 only or upgrade to TLSv1.0 */ +#endif +#ifdef WOLFSSL_ALLOW_SSLV3 + else if ((soap->ssl_flags & SOAP_SSLv3)) + method = wolfSSLv3_client_method(); /* SSLv3 only */ +#endif + } + else + { + if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == SOAP_SSLv3_TLSv1) + method = wolfSSLv23_server_method(); /* select all available protocols */ +#ifdef WOLFSSL_TLS13 + else if ((soap->ssl_flags & SOAP_TLSv1_3)) + method = wolfTLSv1_3_server_method(); /* TLSv1.3 only or upgrade to TLSv1.3 */ +#endif +#ifndef WOLFSSL_NO_TLS12 + else if ((soap->ssl_flags & SOAP_TLSv1_2)) + method = wolfTLSv1_2_server_method(); /* TLSv1.2 only or upgrade to TLSv1.2 */ +#endif +#ifndef NO_OLD_TLS + else if ((soap->ssl_flags & SOAP_TLSv1_1)) + method = wolfTLSv1_1_server_method(); /* TLSv1.1 only or upgrade to TLSv1.1 */ +#endif +#ifdef WOLFSSL_ALLOW_TLSV10 + else if ((soap->ssl_flags & SOAP_TLSv1_0)) + method = wolfTLSv1_server_method(); /* TLSv1.0 only or upgrade to TLSv1.0 */ +#endif +#ifdef WOLFSSL_ALLOW_SSLV3 + else if ((soap->ssl_flags & SOAP_SSLv3)) + method = wolfSSLv3_server_method(); /* SSLv3 only */ +#endif + } + if (!method) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't setup method, the specified TLS protocol is unsupported", SOAP_SSL_ERROR); + if (soap->ctx) + { + wolfSSL_CTX_free(soap->ctx); + soap->ctx = NULL; + } + soap->ctx = wolfSSL_CTX_new(method); + if (!soap->ctx) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't setup context", SOAP_SSL_ERROR); + if (soap->cafile || soap->capath) + { + if (wolfSSL_CTX_load_verify_locations(soap->ctx, soap->cafile, soap->capath) != SSL_SUCCESS) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CA PEM file", SOAP_SSL_ERROR); + } + if (soap->keyfile) + { + if (wolfSSL_CTX_use_certificate_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM) != SSL_SUCCESS) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read server CA PEM file", SOAP_SSL_ERROR); +#ifdef WOLFSSL_ENCRYPTED_KEYS + if (soap->password) + { + wolfSSL_CTX_set_default_passwd_cb_userdata(soap->ctx, (void*)soap->password); + wolfSSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); + } +#else +#warning "Encrypted private keys are not supported, define WOLFSSL_ENCRYPTED_KEYS in WolfSSL build settings to enable" +#endif + if (wolfSSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM) != SSL_SUCCESS) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); +#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) + /* post handshake authentication sets a flag in the ClientHello message, which is required for post-handshake authentication, only when we are connecting as a client */ + if ((soap->ssl_flags & SOAP_TLSv1_3) && (soap->ssl_flags & SOAP_SSL_CLIENT) && wolfSSL_CTX_allow_post_handshake_auth(soap->ctx)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't enable post-handshake authentication", SOAP_SSL_ERROR); +#endif + } + if (soap->crlfile) + { + if (soap_ssl_crl(soap, soap->crlfile)) + return soap->error; + } + wolfSSL_CTX_set_verify(soap->ctx, verify, soap->fsslverify); +#endif #ifdef WITH_SYSTEMSSL if (!soap->ctx) { @@ -4672,7 +4931,7 @@ ssl_auth_init(struct soap *soap) /******************************************************************************/ -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_WOLFSSL) static int ssl_password(char *buf, int num, int rwflag, void *userdata) { @@ -4694,31 +4953,38 @@ ssl_verify_callback(int ok, X509_STORE_CTX *store) #ifdef SOAP_DEBUG if (!ok) { - char buf[1024]; int err = X509_STORE_CTX_get_error(store); X509 *cert = X509_STORE_CTX_get_current_cert(store); fprintf(stderr, "\nDEBUG mode TLS/SSL warnings:\nSSL verify error %d or warning with certificate at depth %d: %s\n", err, X509_STORE_CTX_get_error_depth(store), X509_verify_cert_error_string(err)); - X509_NAME_oneline(X509_get_issuer_name(cert), buf, sizeof(buf)-1); - fprintf(stderr, " certificate issuer: %s\n", buf); - X509_NAME_oneline(X509_get_subject_name(cert), buf, sizeof(buf)-1); - fprintf(stderr, " certificate subject: %s\n", buf); - /* accept self-signed certificates and certificates out of date */ - switch (err) + if (cert) { - case X509_V_ERR_CERT_NOT_YET_VALID: - case X509_V_ERR_CERT_HAS_EXPIRED: - case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: - case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: - case X509_V_ERR_UNABLE_TO_GET_CRL: - case X509_V_ERR_CRL_NOT_YET_VALID: - case X509_V_ERR_CRL_HAS_EXPIRED: - X509_STORE_CTX_set_error(store, X509_V_OK); - ok = 1; - fprintf(stderr, "Initialize soap_ssl_client_context with SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE to allow this verification error to pass without DEBUG mode enabled\n"); + char buf[1024]; + X509_NAME_oneline(X509_get_issuer_name(cert), buf, sizeof(buf)-1); + fprintf(stderr, " certificate issuer: %s\n", buf); + X509_NAME_oneline(X509_get_subject_name(cert), buf, sizeof(buf)-1); + fprintf(stderr, " certificate subject: %s\n", buf); + /* accept self-signed certificates and certificates out of date */ + switch (err) + { + case X509_V_ERR_CERT_NOT_YET_VALID: + case X509_V_ERR_CERT_HAS_EXPIRED: + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + case X509_V_ERR_UNABLE_TO_GET_CRL: + case X509_V_ERR_CRL_NOT_YET_VALID: + case X509_V_ERR_CRL_HAS_EXPIRED: + X509_STORE_CTX_set_error(store, X509_V_OK); + ok = 1; + fprintf(stderr, "Initialize soap_ssl_client_context with SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE to allow this verification error to pass without DEBUG mode enabled\n"); + } + } + else + { + fprintf(stderr, " no certificate in store\n"); } } #endif - /* Note: return 1 to try to continue, but unsafe progress will be terminated by OpenSSL */ + /* Note: return 1 to continue, whether it is safe or not to do so is up to you to verify, or 0 to cancel the handshake */ return ok; } #endif @@ -4796,7 +5062,65 @@ ssl_verify(struct soap *soap, const char *host) /******************************************************************************/ -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#ifdef WITH_WOLFSSL +static int +ssl_verify_callback(int ok, WOLFSSL_X509_STORE_CTX *store) +{ + (void)store; +#ifdef SOAP_DEBUG + if (!ok) + { + int err = store->error; +#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) + WOLFSSL_X509 *cert = store->current_cert; + fprintf(stderr, "\nDEBUG mode TLS/SSL warnings:\nSSL verify error %d or warning with certificate at depth %d: %s\n", err, store->error_depth, wolfSSL_X509_verify_cert_error_string(err)); + if (cert) + { + char buf[1024]; + wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(cert), buf, sizeof(buf)-1); + fprintf(stderr, " certificate issuer: %s\n", buf); + wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_subject_name(cert), buf, sizeof(buf)-1); + fprintf(stderr, " certificate subject: %s\n", buf); + } + else + { + fprintf(stderr, " no certificate in store\n"); + } +#else + fprintf(stderr, "\nDEBUG mode TLS/SSL warnings:\nSSL verify error %d or warning with certificate at depth %d\n", err, store->error_depth); +#endif + } +#endif + /* Note: return 1 to continue, whether it is safe or not to do so is up to you to verify, or 0 to cancel the handshake */ + return ok; +} +#endif + +/******************************************************************************/ + +#ifdef WITH_WOLFSSL +static int +ssl_verify_callback_allow_expired_certificate(int ok, WOLFSSL_X509_STORE_CTX *store) +{ + ok = ssl_verify_callback(ok, store); + if (!ok) + { + /* accept expired certificates */ + switch (store->error) + { + case ASN_BEFORE_DATE_E: + case ASN_AFTER_DATE_E: + ok = 1; + } + } + /* Note: return 1 to continue, whether it is safe or not to do so is up to you to verify, or 0 to cancel the handshake */ + return ok; +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) #ifndef WITH_NOIO SOAP_FMAC1 int @@ -4945,6 +5269,63 @@ soap_ssl_accept(struct soap *soap) } } #endif +#ifdef WITH_WOLFSSL + int err = SSL_ERROR_NONE; + int retries, r, s; + if (!soap_valid_socket(sk)) + return soap_set_receiver_error(soap, "SSL/TLS error", "No socket in soap_ssl_accept()", SOAP_SSL_ERROR); + if (!soap->ssl) + { + soap->ssl = wolfSSL_new(soap->ctx); + if (!soap->ssl) + { + (void)soap_closesock(soap); + return soap_set_receiver_error(soap, "SSL/TLS error", "wolfSSL_new() failed in soap_ssl_accept()", SOAP_SSL_ERROR); + } + } + soap->ssl_flags &= ~SOAP_SSL_CLIENT; + /* default timeout: 10 sec retries, 100 times 0.1 sec */ + retries = 100; + if (soap->recv_timeout || soap->send_timeout) + { + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + } + wolfSSL_set_fd(soap->ssl, sk); + SOAP_SOCKNONBLOCK(sk) + while ((r = wolfSSL_accept(soap->ssl)) != SSL_SUCCESS) + { + err = wolfSSL_get_error(soap->ssl, r); + if (err == SSL_ERROR_WANT_ACCEPT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) + { + if (err == SSL_ERROR_WANT_READ) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + } + else + { + soap->errnum = soap_socket_errno; + break; + } + if (retries-- <= 0) + break; + } + if (!soap->recv_timeout && !soap->send_timeout) + SOAP_SOCKBLOCK(sk) + if (r != SSL_SUCCESS) + { + (void)soap_set_receiver_error(soap, soap_ssl_error(soap, r, 0), "SSL/TLS handshake failed", SOAP_SSL_ERROR); + return soap_closesock(soap); + } +#endif #ifdef WITH_SYSTEMSSL gsk_iocallback local_io = { ssl_recv, ssl_send, NULL, NULL, NULL, NULL }; int retries, r, s; @@ -5079,7 +5460,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, { #if (defined(_AIX43) || defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R) struct hostent_data ht_data; -#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) +#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && !defined(SUN_OS) && !defined(__QNX__) && !defined(QNX) && defined(HAVE_GETHOSTBYNAME_R) int r; char *tmpbuf = soap->tmpbuf; size_t tmplen = sizeof(soap->tmpbuf); @@ -5112,7 +5493,7 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, hostent = NULL; soap->errnum = h_errno; } -#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) +#elif (!defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && !defined(SUN_OS) && !defined(__QNX__) && !defined(QNX) && defined(HAVE_GETHOSTBYNAME_R) while ((r = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &hostent, &soap->errnum)) < 0) { if (tmpbuf != soap->tmpbuf) @@ -5141,13 +5522,23 @@ tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, soap->errnum = soap_errno; } #else + { + struct hostent *temp; #ifdef AS400 - hostent = gethostbyname((void*)addr); + temp = gethostbyname((void*)addr); #else - hostent = gethostbyname((char*)addr); + temp = gethostbyname((char*)addr); #endif - if (!hostent) - soap->errnum = h_errno; + if (!temp) + { + soap->errnum = h_errno; + hostent = NULL; + } + else + { + *hostent = *temp; + } + } #endif if (!hostent) { @@ -5207,7 +5598,7 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) #ifndef WITH_LEAN int set = 1; #endif -#if !defined(WITH_LEAN) || defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +#if !defined(WITH_LEAN) || defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) int retries; #endif soap->errnum = 0; @@ -5226,6 +5617,7 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) return soap->socket = SOAP_INVALID_SOCKET; } soap->peer.in.sin_port = htons((short)port); + soap->peer.in.sin_family = AF_INET; soap->errmode = 0; #else memset((void*)&hints, 0, sizeof(hints)); @@ -5809,7 +6201,7 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) soap->omode &= ~SOAP_ENC_SSL; if (endpoint && !soap_tag_cmp(endpoint, "https:*")) { -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) #ifdef WITH_OPENSSL BIO *bio; #endif @@ -5913,11 +6305,55 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) soap->session = NULL; } #if OPENSSL_VERSION_NUMBER >= 0x1000000aL - if (!(soap->ssl_flags & SOAP_SSLv3) && !SSL_set_tlsext_host_name(soap->ssl, host)) + if (!(soap->ssl_flags & SOAP_SSLv3)) { - (void)soap_set_receiver_error(soap, "SSL/TLS error", "SNI failed", SOAP_SSL_ERROR); - (void)soap->fclosesocket(soap, sk); - return soap->socket = SOAP_INVALID_SOCKET; + const char *name = host; + if ((soap->ssl_flags & SOAP_SSL_SNI_HOST_CHECK)) + { + /* do not use IP address with SNI (RFC 6066), perform a host check */ + const size_t MAX_LABEL_LEN = 63; + size_t i; + size_t len = strlen(host); + size_t label_len = 0; + int ip = 1; + for (i = 0; i < len && label_len < MAX_LABEL_LEN; ++i) + { + int c = host[i]; + if (c >= '0' && c <= '9') + { + label_len += 1; + continue; + } + if (i > 0 && i < len - 1) + { + if (c == '-') + { + label_len += 1; + continue; + } + if (c == '.' && host[i + 1] != '.' && host[i - 1] != '-' && host[i + 1] != '-') + { + label_len = 0; + continue; + } + } + if (c >= '\0' && c <= '@') + { + name = NULL; + break; + } + label_len += 1; + ip = 0; + } + if (ip || label_len >= MAX_LABEL_LEN) + name = NULL; + } + if (name != NULL && !SSL_set_tlsext_host_name(soap->ssl, name)) + { + (void)soap_set_receiver_error(soap, "SSL/TLS error", "SNI failed", SOAP_SSL_ERROR); + (void)soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } } #elif (OPENSSL_VERSION_NUMBER >= 0x0090800fL) && defined(SSL_CTRL_SET_TLSEXT_HOSTNAME) if (!SSL_ctrl(soap->ssl, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, (void*)host)) @@ -5997,7 +6433,7 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) } if (!(soap->ssl_flags & SOAP_SSL_SKIP_HOST_CHECK)) { - X509_NAME *subj; + const X509_NAME *subj; STACK_OF(CONF_VALUE) *val = NULL; #if OPENSSL_VERSION_NUMBER >= 0x0090800fL GENERAL_NAMES *names = NULL; @@ -6113,8 +6549,8 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) int i = -1; do { - ASN1_STRING *name; - i = X509_NAME_get_index_by_NID(subj, NID_commonName, i); + const ASN1_STRING *name; + i = X509_NAME_get_index_by_NID((X509_NAME*)subj, NID_commonName, i); if (i == -1) break; name = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, i)); @@ -6242,6 +6678,106 @@ tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) } } #endif +#ifdef WITH_WOLFSSL + soap->ssl_flags |= SOAP_SSL_CLIENT; + if (!soap->session && (soap->error = soap->fsslauth(soap)) != SOAP_OK) + { + (void)soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + if (!soap->ssl) + { + soap->ssl = wolfSSL_new(soap->ctx); + if (!soap->ssl) + { + (void)soap->fclosesocket(soap, sk); + soap->error = SOAP_SSL_ERROR; + return soap->socket = SOAP_INVALID_SOCKET; + } +#ifdef HAVE_SECURE_RENEGOTIATION +#warning "Client-side secure renegotiation not recommended, undefine HAVE_SECURE_RENEGOTIATION to disable" + if (wolfSSL_UseSecureRenegotiation(soap->ssl) != SSL_SUCCESS) + { + (void)soap->fclosesocket(soap, sk); + (void)soap_set_receiver_error(soap, "SSL/TLS error", "failed to enable secure renegotiation in soap_ssl_accept()", SOAP_SSL_ERROR); + wolfSSL_free(soap->ssl); + soap->ssl = NULL; + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif + /* Set the expected domain name so that the peer server's can be verified when we connect. */ + if (!(soap->ssl_flags & SOAP_SSL_SKIP_HOST_CHECK)) + { + if (wolfSSL_check_domain_name(soap->ssl, host) != SSL_SUCCESS) + { + (void)soap->fclosesocket(soap, sk); + (void)soap_set_receiver_error(soap, "SSL/TLS error", "wolfSSL_check_domain_name() failed in tcp_connect()", SOAP_TCP_ERROR); + wolfSSL_free(soap->ssl); + soap->ssl = NULL; + return soap->socket = SOAP_INVALID_SOCKET; + } + } + } + wolfSSL_set_fd(soap->ssl, sk); + if (soap->connect_timeout || soap->recv_timeout || soap->send_timeout) + { + /* Set SSL connect timeout and set SSL sockets to non-blocking */ + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (soap->connect_timeout > 0 && t < soap->connect_timeout) + t = soap->connect_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + SOAP_SOCKNONBLOCK(sk) + } + else + { + /* Set sockets to blocking */ + retries = 1; + SOAP_SOCKBLOCK(sk) + } + err = SSL_ERROR_NONE; + /* Try connecting until success or timeout */ + do + { + if ((r = wolfSSL_connect(soap->ssl)) <= 0) + { + err = wolfSSL_get_error(soap->ssl, r); + if (err == SSL_ERROR_WANT_CONNECT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) + { + int s; + if (err == SSL_ERROR_WANT_READ) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + if (s == 0 && retries-- <= 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL/TLS connect timeout\n")); + (void)soap_set_receiver_error(soap, "Timeout", "wolfSSL_connect() failed in tcp_connect()", SOAP_TCP_ERROR); + (void)soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else + { + soap->errnum = soap_socket_errno; + break; + } + } + } while (!wolfSSL_is_init_finished(soap->ssl)); + if (r != SSL_SUCCESS) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL_connect/select error in tcp_connect\n")); + (void)soap_set_receiver_error(soap, soap_ssl_error(soap, r, 0), "SSL/TLS handshake failed", SOAP_SSL_ERROR); + (void)soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif #ifdef WITH_SYSTEMSSL soap->ssl_flags |= SOAP_SSL_CLIENT; if (!soap->ctx && (soap->error = soap->fsslauth(soap)) != SOAP_OK) @@ -6546,9 +7082,10 @@ tcp_select(struct soap *soap, SOAP_SOCKET sk, int flags, int timeout) static SOAP_SOCKET tcp_accept(struct soap *soap, SOAP_SOCKET sk, struct sockaddr *addr, int *len) { + SOAP_SOCKLEN_T n = (SOAP_SOCKLEN_T)*len; SOAP_SOCKET s; (void)soap; - s = accept(sk, addr, (SOAP_SOCKLEN_T*)len); /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h */ + s = accept(sk, addr, &n); #ifdef WITH_SOCKET_CLOSE_ON_EXIT #ifdef WIN32 #ifndef UNDER_CE @@ -6664,6 +7201,13 @@ tcp_disconnect(struct soap *soap) soap->session = NULL; } #endif +#ifdef WITH_WOLFSSL + if (soap->ssl) + { + wolfSSL_free(soap->ssl); + soap->ssl = NULL; + } +#endif #ifdef WITH_SYSTEMSSL if (soap->ssl) { @@ -7230,7 +7774,7 @@ SOAP_FMAC2 soap_force_closesock(struct soap *soap) { soap->keep_alive = 0; - if (soap_valid_socket(soap->socket) && soap->fclosesocket) + if (soap_valid_socket(soap->socket)) { (void)soap->fclosesocket(soap, soap->socket); soap->socket = SOAP_INVALID_SOCKET; @@ -7283,19 +7827,6 @@ soap_done(struct soap *soap) return; DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Done with context%s\n", soap->state == SOAP_COPY ? " copy" : "")); soap_free_temp(soap); -#ifdef SOAP_DEBUG - if (soap->clist) - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Warning: managed C++ data was not deallocated with soap_destroy() from the heap managed by context %p\n", (void*)soap)); - if (soap->alist) - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Warning: managed C data was not deallocated with soap_end() from the heap managed by context %p\n", (void*)soap)); -#endif - soap->alist = NULL; - while (soap->clist) - { - struct soap_clist *p = soap->clist->next; - SOAP_FREE(soap, soap->clist); - soap->clist = p; - } if (soap->state == SOAP_INIT) soap->omode &= ~SOAP_IO_UDP; /* to force close the socket */ soap->keep_alive = 0; /* to force close the socket */ @@ -7310,7 +7841,8 @@ soap_done(struct soap *soap) struct soap_plugin *p = soap->plugins->next; DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Removing plugin '%s'\n", soap->plugins->id)); if (soap->plugins->fcopy || soap->state == SOAP_INIT) - soap->plugins->fdelete(soap, soap->plugins); + if (soap->plugins->fdelete) + soap->plugins->fdelete(soap, soap->plugins); SOAP_FREE(soap, soap->plugins); soap->plugins = p; } @@ -7367,6 +7899,7 @@ soap_done(struct soap *soap) #endif soap->fseterror = NULL; soap->fignore = NULL; + soap->fencoding = NULL; soap->fserveloop = NULL; #ifdef WITH_OPENSSL if (soap->session) @@ -7443,6 +7976,21 @@ soap_done(struct soap *soap) soap->session = NULL; } #endif +#ifdef WITH_WOLFSSL + if (soap->ssl) + { + wolfSSL_free(soap->ssl); + soap->ssl = NULL; + } + if (soap->state == SOAP_INIT) + { + if (soap->ctx) + { + wolfSSL_CTX_free(soap->ctx); + soap->ctx = NULL; + } + } +#endif #ifdef WITH_SYSTEMSSL if (soap->ssl) gsk_secure_socket_close(&soap->ssl); @@ -7481,9 +8029,7 @@ soap_done(struct soap *soap) close(soap->pipe_fd[0]); close(soap->pipe_fd[1]); #endif -#ifdef SOAP_MEM_DEBUG - soap_free_mht(soap); -#endif + soap_free_cht(soap); soap->state = SOAP_NONE; } @@ -7559,17 +8105,13 @@ http_parse(struct soap *soap) { char *t; *s = '\0'; - do - { - s++; - } while (*s && *s <= 32); - if (*s == '"') - s++; + while (*++s && *s <= 32) + continue; t = s + strlen(s) - 1; while (t > s && *t <= 32) t--; - if (t >= s && *t == '"') - t--; + if (t > s && *s == '"' && *t == '"') + s++,t--; t[1] = '\0'; soap->error = soap->fparsehdr(soap, header, s); if (soap->error) @@ -7666,7 +8208,7 @@ http_parse_header(struct soap *soap, const char *key, const char *val) { if (!soap_tag_cmp(key, "Host")) { -#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) if ((soap->imode & SOAP_ENC_SSL)) soap_strcpy(soap->endpoint, sizeof(soap->endpoint), "https://"); else @@ -8070,7 +8612,7 @@ http_post(struct soap *soap, const char *endpoint, const char *host, int port, c err = soap->fposthdr(soap, soap->tmpbuf, NULL); if (err) return err; -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_WOLFSSL) if ((soap->ssl && port != 443) || (!soap->ssl && port != 80)) #else if (port != 80) @@ -8140,7 +8682,7 @@ http_post(struct soap *soap, const char *endpoint, const char *host, int port, c if (soap->bearer) { l = strlen(soap->bearer); - (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l + 1), "Bearer %s", soap->bearer); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l + 7), "Bearer %s", soap->bearer); err = soap->fposthdr(soap, "Authorization", soap->tmpbuf); if (err) return err; @@ -8192,7 +8734,7 @@ http_post(struct soap *soap, const char *endpoint, const char *host, int port, c #endif #endif #ifdef WITH_COOKIES -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_WOLFSSL) if (soap_putcookies(soap, host, path, soap->ssl != NULL)) return soap->error; #else @@ -8894,7 +9436,7 @@ soap_putsetcookies(struct soap *soap) for (p = soap->cookies; p; p = p->next) { if ((p->modified -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_WOLFSSL) || (!p->env && !soap->ssl == !p->secure) #endif ) && p->name && p->value && *p->name && *p->value) @@ -8961,7 +9503,7 @@ soap_putsetcookies(struct soap *soap) #endif if (s-tmp < 4079 && (p->secure -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_WOLFSSL) || soap->ssl #endif )) @@ -9547,7 +10089,7 @@ soap_init_pht(struct soap *soap) int i; soap->pblk = NULL; soap->pidx = 0; - for (i = 0; i < (int)SOAP_PTRHASH; i++) + for (i = 0; i < SOAP_PTRHASH; i++) soap->pht[i] = NULL; } @@ -9609,7 +10151,7 @@ soap_free_pht(struct soap *soap) } soap->pblk = NULL; soap->pidx = 0; - for (i = 0; i < (int)SOAP_PTRHASH; i++) + for (i = 0; i < SOAP_PTRHASH; i++) soap->pht[i] = NULL; } @@ -10236,11 +10778,12 @@ soap_attachment(struct soap *soap, const char *tag, int id, const void *p, const return -1; } /* Add MTOM xop:Include element when necessary */ - /* TODO: this code to be obsoleted with new import/xop.h conventions */ if ((soap->omode & SOAP_ENC_MTOM) && strcmp(tag, "xop:Include")) { - if (soap_element_begin_out(soap, tag, 0, type) - || soap_element_href(soap, "xop:Include", 0, "xmlns:xop=\"http://www.w3.org/2004/08/xop/include\" href", aid) + if (soap_element(soap, tag, 0, type) + || soap_attribute(soap, "xmlns:xop", "http://www.w3.org/2004/08/xop/include") + || soap_element_start_end_out(soap, NULL) + || soap_element_href(soap, "xop:Include", 0, "href", aid) || soap_element_end_out(soap, tag)) return soap->error; } @@ -10395,70 +10938,107 @@ void* SOAP_FMAC2 soap_malloc(struct soap *soap, size_t n) { + struct soap_clist *cp; char *p; - size_t k = n; + size_t k; if (SOAP_MAXALLOCSIZE > 0 && n > SOAP_MAXALLOCSIZE) { - soap->error = SOAP_EOM; + if (soap) + soap->error = SOAP_EOM; return NULL; } if (!soap) return SOAP_MALLOC(soap, n); - n += sizeof(short); - n += (~n+1) & (sizeof(void*)-1); /* align at 4-, 8- or 16-byte boundary by rounding up */ - if (n + sizeof(void*) + sizeof(size_t) < k) + if (!soap->cblk || soap->cidx >= SOAP_PTRBLK) { - soap->error = SOAP_EOM; - return NULL; +#ifdef SOAP_MEM_DEBUG + struct soap_cblk *pb = (struct soap_cblk*)malloc(sizeof(struct soap_cblk)); +#else + struct soap_cblk *pb = (struct soap_cblk*)SOAP_MALLOC(soap, sizeof(struct soap_cblk)); +#endif + if (!pb) + { + soap->error = SOAP_EOM; + return 0; + } + pb->next = soap->cblk; + soap->cblk = pb; + soap->cidx = 0; } - p = (char*)SOAP_MALLOC(soap, n + sizeof(void*) + sizeof(size_t)); +#ifdef SOAP_MEM_DEBUG + p = (char*)malloc(n + sizeof(unsigned int)); +#else + p = (char*)SOAP_MALLOC(soap, n + sizeof(unsigned int)); +#endif if (!p) { soap->error = SOAP_EOM; return NULL; } - /* set a canary word to detect memory overruns and data corruption */ - *(unsigned short*)(p + n - sizeof(unsigned short)) = (unsigned short)SOAP_CANARY; - /* keep chain of alloced cells for destruction */ - *(void**)(p + n) = soap->alist; - *(size_t*)(p + n + sizeof(void*)) = n; - soap->alist = p + n; + *(unsigned int*)(p + n) = (unsigned int)(SOAP_CANARY ^ PtrToUlong(p)); + cp = &soap->cblk->clist[soap->cidx++]; + k = soap_hash_ptr(p); + cp->next = soap->cht[k]; + soap->cht[k] = cp; + cp->ptr = p; + cp->ref.fdelete = NULL; + cp->size = (LONG64)n; + cp->type = 0; return p; } /******************************************************************************/ -#ifdef SOAP_MEM_DEBUG static void -soap_init_mht(struct soap *soap) +soap_init_cht(struct soap *soap) { int i; - for (i = 0; i < (int)SOAP_PTRHASH; i++) - soap->mht[i] = NULL; + soap->cblk = NULL; + soap->cidx = 0; + for (i = 0; i < SOAP_PTRHASH; i++) + soap->cht[i] = NULL; } -#endif /******************************************************************************/ -#ifdef SOAP_MEM_DEBUG static void -soap_free_mht(struct soap *soap) +soap_free_cht(struct soap *soap) { + struct soap_cblk *pb, *next; +#ifdef SOAP_MEM_DEBUG int i; - struct soap_mlist *mp, *mq; - for (i = 0; i < (int)SOAP_PTRHASH; i++) + for (i = 0; i < SOAP_PTRHASH; i++) { - for (mp = soap->mht[i]; mp; mp = mq) + struct soap_clist *cp = soap->cht[i]; + while (cp) { - mq = mp->next; - if (mp->live) - fprintf(stderr, "%s(%d): malloc() = %p not freed (memory leak or forgot to call soap_end()?)\n", mp->file, mp->line, mp->ptr); - free(mp); + if (soap_is_unmanaged_mem(cp->type)) + { + if (cp->size >= 0) + fprintf(stderr, "%s(%d): malloc() = %p not freed (runtime engine memory leak!)\n", cp->ref.file, (int)cp->size, cp->ptr); + } + else + { + fprintf(stderr, "malloc() = %p not freed, please call soap_end() to delete managed memory\n", cp->ptr); + i = SOAP_PTRHASH; + break; + } + cp = cp->next; } - soap->mht[i] = NULL; } -} #endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free memory allocation hashtable\n")); + for (pb = soap->cblk; pb; pb = next) + { + next = pb->next; +#ifdef SOAP_MEM_DEBUG + free(pb); +#else + SOAP_FREE(soap, pb); +#endif + } + soap_init_cht(soap); +} /******************************************************************************/ @@ -10468,22 +11048,29 @@ void* SOAP_FMAC2 soap_track_malloc(struct soap *soap, const char *file, int line, size_t size) { - void *p = malloc(size); - if (soap) + struct soap_clist *cp; + void *p; + size_t k; + if (!soap) + return malloc(size); + if (!soap->cblk || soap->cidx >= SOAP_PTRBLK) { - size_t h = soap_hash_ptr(p); - struct soap_mlist *mp = (struct soap_mlist*)malloc(sizeof(struct soap_mlist)); - if (soap->fdebug[SOAP_INDEX_TEST]) - { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): malloc(%lu) = %p\n", file, line, (unsigned long)size, p)); - } - mp->next = soap->mht[h]; - mp->ptr = p; - mp->file = file; - mp->line = line; - mp->live = 1; - soap->mht[h] = mp; - } + struct soap_cblk *pb = (struct soap_cblk*)malloc(sizeof(struct soap_cblk)); + if (!pb) + return NULL; + pb->next = soap->cblk; + soap->cblk = pb; + soap->cidx = 0; + } + p = malloc(size); + cp = &soap->cblk->clist[soap->cidx++]; + k = soap_hash_ptr(p); + cp->next = soap->cht[k]; + soap->cht[k] = cp; + cp->ptr = p; + cp->ref.file = file; + cp->size = line; /* ugly reuse for type SOAP_TRACK_MALLOC in DEBUG mode (SOAP_MEM_DEBUG) */ + cp->type = SOAP_TRACK_MALLOC; return p; } #endif @@ -10496,112 +11083,132 @@ void SOAP_FMAC2 soap_track_free(struct soap *soap, const char *file, int line, void *p) { - if (!soap) + if (!p) + { + fprintf(stderr, "%s(%d): attempt to free() a NULL pointer\n", file, line); + } + else if (!soap) { free(p); } else { - size_t h = soap_hash_ptr(p); - struct soap_mlist *mp; - for (mp = soap->mht[h]; mp; mp = mp->next) - if (mp->ptr == p) - break; - if (mp) + struct soap_clist *cp = soap->cht[soap_hash_ptr(p)]; + while (cp) { - if (mp->live) + if (p == cp->ptr && soap_is_unmanaged_mem(cp->type)) { - if (soap->fdebug[SOAP_INDEX_TEST]) + if (cp->size >= 0) { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): free(%p)\n", file, line, p)); + if (soap->fdebug[SOAP_INDEX_TEST]) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): free(%p)\n", file, line, p)); + } + cp->size = -cp->size; + free(p); } - free(p); - mp->live = 0; - } - else - { - fprintf(stderr, "%s(%d): free(%p) double free of pointer malloced at %s(%d)\n", file, line, p, mp->file, mp->line); + else + { + fprintf(stderr, "%s(%d): free(%p) double free of memory allocated at %s(%d)\n", file, line, p, cp->ref.file, (int)-cp->size); + } + return; } + cp = cp->next; } - else - { - fprintf(stderr, "%s(%d): free(%p) pointer not malloced\n", file, line, p); - } + fprintf(stderr, "%s(%d): free(%p) pointer not allocated\n", file, line, p); } } #endif /******************************************************************************/ -#ifdef SOAP_MEM_DEBUG -static void -soap_track_unlink(struct soap *soap, const void *p) -{ - size_t h = soap_hash_ptr(p); - struct soap_mlist *mp; - for (mp = soap->mht[h]; mp; mp = mp->next) - if (mp->ptr == p) - break; - if (mp) - mp->live = 0; -} -#endif - -/******************************************************************************/ - SOAP_FMAC1 -void +int SOAP_FMAC2 soap_dealloc(struct soap *soap, void *p) { if (soap_check_state(soap)) - return; + return SOAP_OK; if (p) { - char **q; - for (q = (char**)(void*)&soap->alist; *q; q = *(char***)q) + struct soap_clist **q = &soap->cht[soap_hash_ptr(p)]; + struct soap_clist *cp = *q; + while (cp) { - if (*(unsigned short*)(char*)(*q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) + if (p == cp->ptr && !soap_is_unmanaged_mem(cp->type)) { + *q = cp->next; + if (cp->ref.fdelete) + { + cp->ref.fdelete(soap, cp); + } + else + { + if (*(unsigned int*)((char*)p + cp->size) != (unsigned int)(SOAP_CANARY ^ PtrToUlong(p))) + { #ifdef SOAP_MEM_DEBUG - fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); + fprintf(stderr, "Memory corruption detected at %p %zu bytes (see logs)\n", p, (size_t)cp->size); #endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); - DBGHEX(TEST, *q - 200, 200); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); - soap->error = SOAP_MOE; - return; - } - if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*)))) - { - *q = **(char***)q; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Freed data at %p\n", p)); - SOAP_FREE(soap, p); - return; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption at %p allocated %zu bytes:\n", p, (size_t)cp->size)); + return soap->error = SOAP_MOE; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free managed memory at %p\n", p)); +#ifdef SOAP_MEM_DEBUG + free(p); +#else + SOAP_FREE(soap, p); +#endif + } + cp->ptr = NULL; + return SOAP_OK; } + q = &cp->next; + cp = *q; } - soap_delete(soap, p); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cannot free memory at %p: address not in managed memory list\n", p)); } else { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free all soap_malloc() data\n")); - while (soap->alist) + int i; + for (i = 0; i < SOAP_PTRHASH; i++) { - char *q = (char*)soap->alist; - if (*(unsigned short*)(char*)(q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) + struct soap_clist **q = &soap->cht[i]; + struct soap_clist *cp = *q; + while (cp) { + p = cp->ptr; + if (p && !soap_is_unmanaged_mem(cp->type)) + { + *q = cp->next; + if (cp->ref.fdelete) + { + cp->ref.fdelete(soap, cp); + } + else + { + if (*(unsigned int*)((char*)p + cp->size) != (unsigned int)(SOAP_CANARY ^ PtrToUlong(p))) + { #ifdef SOAP_MEM_DEBUG - fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); + fprintf(stderr, "Memory corruption detected at %p %zu bytes (see logs)\n", p, (size_t)cp->size); #endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); - DBGHEX(TEST, q - 200, 200); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); - soap->error = SOAP_MOE; - return; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption at %p %zu bytes:\n", p, (size_t)cp->size)); + return soap->error = SOAP_MOE; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free managed memory at %p\n", p)); +#ifdef SOAP_MEM_DEBUG + free(p); +#else + SOAP_FREE(soap, p); +#endif + } + cp->ptr = NULL; + } + else + { + q = &cp->next; + } + cp = *q; } - soap->alist = *(void**)q; - q -= *(size_t*)(q + sizeof(void*)); - SOAP_FREE(soap, q); } /* assume these were deallocated: */ soap->http_content = NULL; @@ -10619,60 +11226,17 @@ soap_dealloc(struct soap *soap, void *p) soap_clr_mime(soap); #endif } + return SOAP_OK; } /******************************************************************************/ SOAP_FMAC1 -void +int SOAP_FMAC2 soap_delete(struct soap *soap, void *p) { - struct soap_clist **cp; - if (soap_check_state(soap)) - return; - cp = &soap->clist; - if (p) - { - while (*cp) - { - if (p == (*cp)->ptr) - { - struct soap_clist *q = *cp; - *cp = q->next; - if (q->fdelete(soap, q)) - { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: deletion callback failed for object type=%d\n", q->ptr, q->type)); -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "new(object type=%d) = %p not freed: deletion callback failed\n", q->type, q->ptr); -#endif - } - SOAP_FREE(soap, q); - return; - } - cp = &(*cp)->next; - } - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: address not in list\n", p)); - } - else - { - while (*cp) - { - struct soap_clist *q = *cp; - *cp = q->next; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Delete %p type=%d (cp=%p)\n", q->ptr, q->type, (void*)q)); - if (q->fdelete(soap, q)) - { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: deletion callback failed for object type=%d\n", q->ptr, q->type)); -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "new(object type=%d) = %p not freed: deletion callback failed\n", q->type, q->ptr); -#endif - } - SOAP_FREE(soap, q); - } - } - soap->fault = NULL; /* assume this was deallocated */ - soap->header = NULL; /* assume this was deallocated */ + return soap_dealloc(soap, p); } /******************************************************************************/ @@ -10682,76 +11246,103 @@ void SOAP_FMAC2 soap_delegate_deletion(struct soap *soap, struct soap *soap_to) { - struct soap_clist *cp; - char **q; -#ifdef SOAP_MEM_DEBUG - void *p; - struct soap_mlist **mp, *mq; - size_t h; -#endif - for (q = (char**)(void*)&soap->alist; *q; q = *(char***)q) + struct soap_cblk *pb = soap->cblk; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Delegating_managed memory deletion from context %p to %p\n", (void*)soap, (void*)soap_to)); + if (pb) { - if (*(unsigned short*)(char*)(*q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) - { -#ifdef SOAP_MEM_DEBUG - fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); -#endif - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); - DBGHEX(TEST, *q - 200, 200); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); - soap->error = SOAP_MOE; - return; - } + struct soap_cblk *qb = pb; + int ci = soap->cidx; + int i; #ifdef SOAP_MEM_DEBUG - p = (void*)(*q - *(size_t*)(*q + sizeof(void*))); - h = soap_hash_ptr(p); - for (mp = &soap->mht[h]; *mp; mp = &(*mp)->next) - { - if ((*mp)->ptr == p) - { - mq = *mp; - *mp = mq->next; - mq->next = soap_to->mht[h]; - soap_to->mht[h] = mq; - break; + /* when debugging memory, keep unmanaged memory allocations of this runtime state with this context */ + struct soap_clist *cht[SOAP_PTRHASH]; + struct soap_cblk *cblk = NULL; + int cidx = 0; + for (i = 0; i < SOAP_PTRHASH; i++) + cht[i] = NULL; + for (i = 0; i < SOAP_PTRHASH; i++) + { + struct soap_clist *cp = soap->cht[i], *prev = NULL; + while (cp) + { + if (soap_is_unmanaged_mem(cp->type) && cp->size >= 0) + { + struct soap_clist *cq; + int k; + /* unmanaged memory, i.e. used by this runtime state */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): do not delegate unmanaged %p\n", cp->ref.file, (int)cp->size, cp->ptr)); + if (!cblk || cidx >= SOAP_PTRBLK) + { + qb = (struct soap_cblk*)malloc(sizeof(struct soap_cblk)); + if (!qb) + { + /* soap_delegate_deletion normally never fails */ + /* but when debugging we have to allocate blocks and try to safely continue when we can't allocate */ + prev = cp; + cp = cp->next; + continue; + } + qb->next = cblk; + cblk = qb; + cidx = 0; + } + cq = &cblk->clist[cidx++]; + k = soap_hash_ptr(cp->ptr); + cq->next = cht[k]; + cht[k] = cq; + cq->ptr = cp->ptr; + cq->type = SOAP_TRACK_MALLOC; + cq->size = cp->size; + cq->ref.file = cp->ref.file; + if (prev) + prev->next = cp->next; + else + soap->cht[i] = cp->next; + } + else + { + prev = cp; + } + cp = cp->next; } } + qb = pb; #endif - } - *q = (char*)soap_to->alist; - soap_to->alist = soap->alist; - soap->alist = NULL; -#ifdef SOAP_MEM_DEBUG - cp = soap->clist; - while (cp) - { - h = soap_hash_ptr(cp); - for (mp = &soap->mht[h]; *mp; mp = &(*mp)->next) + while (qb->next) + qb = qb->next; + qb->next = soap_to->cblk; + soap_to->cblk = pb; + soap_to->cidx = ci; + for (i = 0; i < SOAP_PTRHASH; i++) { - if ((*mp)->ptr == cp) + struct soap_clist *cp = soap->cht[i]; + if (cp) { - mq = *mp; - *mp = mq->next; - mq->next = soap_to->mht[h]; - soap_to->mht[h] = mq; - break; + while (cp->next) + cp = cp->next; + cp->next = soap_to->cht[i]; + soap_to->cht[i] = soap->cht[i]; } } - cp = cp->next; - } +#ifdef SOAP_MEM_DEBUG + /* when debugging memory, keep unmanaged memory allocations of this runtime state with this context */ + for (i = 0; i < SOAP_PTRHASH; i++) + soap->cht[i] = cht[i]; + soap->cblk = cblk; + soap->cidx = cidx; +#else + soap_init_cht(soap); #endif - cp = soap_to->clist; - if (cp) - { - while (cp->next) - cp = cp->next; - cp->next = soap->clist; } else { - soap_to->clist = soap->clist; + int i; + soap_to->cblk = soap->cblk; + soap_to->cidx = soap->cidx; + for (i = 0; i < SOAP_PTRHASH; i++) + soap_to->cht[i] = soap->cht[i]; + soap_init_cht(soap); } - soap->clist = NULL; } /******************************************************************************/ @@ -10759,27 +11350,35 @@ soap_delegate_deletion(struct soap *soap, struct soap *soap_to) SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 -soap_link(struct soap *soap, int t, int n, int (*fdelete)(struct soap*, struct soap_clist*)) +soap_new_link(struct soap *soap, int t, int n, int (*fdelete)(struct soap*, struct soap_clist*)) { struct soap_clist *cp = NULL; if (soap) { if (n != SOAP_NO_LINK_TO_DELETE) { - cp = (struct soap_clist*)SOAP_MALLOC(soap, sizeof(struct soap_clist)); - if (!cp) + if (!soap->cblk || soap->cidx >= SOAP_PTRBLK) { - soap->error = SOAP_EOM; - } - else - { - cp->next = soap->clist; - cp->type = t; - cp->size = n; - cp->ptr = NULL; - cp->fdelete = fdelete; - soap->clist = cp; +#ifdef SOAP_MEM_DEBUG + struct soap_cblk *pb = (struct soap_cblk*)malloc(sizeof(struct soap_cblk)); +#else + struct soap_cblk *pb = (struct soap_cblk*)SOAP_MALLOC(soap, sizeof(struct soap_cblk)); +#endif + if (!pb) + { + soap->error = SOAP_EOM; + return NULL; + } + pb->next = soap->cblk; + soap->cblk = pb; + soap->cidx = 0; } + cp = &soap->cblk->clist[soap->cidx++]; + cp->next = NULL; + cp->ptr = NULL; + cp->ref.fdelete = fdelete; + cp->size = n; + cp->type = t; } soap->alloced = t; } @@ -10788,6 +11387,30 @@ soap_link(struct soap *soap, int t, int n, int (*fdelete)(struct soap*, struct s /******************************************************************************/ +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_link(struct soap *soap, struct soap_clist *cp, void *p) +{ + if (soap && cp) + { + if (p) + { + int k = soap_hash_ptr(p); + cp->ptr = p; + cp->next = soap->cht[k]; + soap->cht[k] = cp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", p)) + } + else + { + soap->error = SOAP_EOM; + } + } +} + +/******************************************************************************/ + SOAP_FMAC1 int SOAP_FMAC2 @@ -10795,30 +11418,18 @@ soap_unlink(struct soap *soap, const void *p) { if (soap && p) { - char **q; - struct soap_clist **cp; - for (q = (char**)(void*)&soap->alist; *q; q = *(char***)q) - { - if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*)))) - { - *q = **(char***)q; - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unlinked data %p\n", p)); -#ifdef SOAP_MEM_DEBUG - soap_track_unlink(soap, p); -#endif - return SOAP_OK; /* found and removed from dealloc chain */ - } - } - for (cp = &soap->clist; *cp; cp = &(*cp)->next) + struct soap_clist **q = &soap->cht[soap_hash_ptr(p)]; + struct soap_clist *cp = *q; + while (cp) { - if (p == (*cp)->ptr) + if (p == cp->ptr && !soap_is_unmanaged_mem(cp->type)) { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unlinked class instance %p\n", p)); - q = (char**)*cp; - *cp = (*cp)->next; - SOAP_FREE(soap, q); - return SOAP_OK; /* found and removed from dealloc chain */ + cp->ptr = NULL; + *q = cp->next; + return SOAP_OK; } + q = &cp->next; + cp = *q; } } return SOAP_ERR; @@ -11057,7 +11668,7 @@ soap_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const { if (finstantiate) { - p = finstantiate(soap, t, type, arrayType, &n); /* soap->alloced is set in soap_link() */ + p = finstantiate(soap, t, type, arrayType, &n); /* soap->alloced is set in soap_new_link() */ t = soap->alloced; } else @@ -11086,7 +11697,8 @@ soap_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const else if (ip->ptr) { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Multiply defined id='%s'\n", id)); - soap_strcpy(soap->id, sizeof(soap->id), id); + if (id != soap->id) + soap_strcpy(soap->id, sizeof(soap->id), id); /* set soap->id for error reporting, unless soap->id was passed as the id */ soap->error = SOAP_DUPLICATE_ID; return NULL; } @@ -11190,7 +11802,8 @@ soap_id_nullify(struct soap *soap, const char *id) ip->link = NULL; } } - soap_strcpy(soap->id, sizeof(soap->id), id); + if (id != soap->id) + soap_strcpy(soap->id, sizeof(soap->id), id); /* set soap->id for error reporting, unless soap->id was passed as the id */ return soap->error = SOAP_HREF; } #endif @@ -11361,7 +11974,7 @@ soap_end_send_flush(struct soap *soap) #endif } #ifdef WITH_TCPFIN -#if defined(WITH_OPENSSL) || defined(WITH_SYSTEMSSL) +#if defined(WITH_OPENSSL) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) if (!soap->ssl) #endif if (soap_valid_socket(soap->socket) && !soap->keep_alive && !(soap->omode & SOAP_IO_UDP)) @@ -11508,7 +12121,7 @@ soap_free_temp(struct soap *soap) struct soap_attribute *tp, *tq; struct Namespace *ns; soap_free_ns(soap); - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free any remaining temp blocks\n")); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free nested block allocation stack\n")); while (soap->blist) soap_end_block(soap, NULL); DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free attribute storage\n")); @@ -11722,9 +12335,6 @@ soap_copy_context(struct soap *copy, const struct soap *soap) struct soap_plugin *p = NULL; (void)soap_memcpy((void*)copy, sizeof(struct soap), (const void*)soap, sizeof(struct soap)); copy->state = SOAP_COPY; -#ifdef SOAP_MEM_DEBUG - soap_init_mht(copy); -#endif #ifdef SOAP_DEBUG soap_init_logs(copy); soap_set_test_logfile(copy, soap->logfile[SOAP_INDEX_TEST]); @@ -11741,8 +12351,6 @@ soap_copy_context(struct soap *copy, const struct soap *soap) #endif copy->nlist = NULL; copy->blist = NULL; - copy->clist = NULL; - copy->alist = NULL; copy->attributes = NULL; copy->labbuf = NULL; copy->lablen = 0; @@ -11759,6 +12367,9 @@ soap_copy_context(struct soap *copy, const struct soap *soap) copy->session_host[0] = '\0'; copy->session_port = 443; #endif +#ifdef WITH_WOLFSSL + copy->ssl = NULL; +#endif #ifdef WITH_GNUTLS copy->session = NULL; #endif @@ -11770,6 +12381,7 @@ soap_copy_context(struct soap *copy, const struct soap *soap) soap_init_iht(copy); #endif soap_init_pht(copy); + soap_init_cht(copy); copy->header = NULL; copy->fault = NULL; copy->action = NULL; @@ -11820,7 +12432,7 @@ void SOAP_FMAC2 soap_copy_stream(struct soap *copy, struct soap *soap) { - struct soap_attribute *tp = NULL, *tq; + struct soap_attribute *tp, *tq; if (copy == soap) return; copy->header = soap->header; @@ -11879,15 +12491,19 @@ soap_copy_stream(struct soap *copy, struct soap *soap) #endif #ifdef WITH_OPENSSL copy->bio = soap->bio; - copy->ctx = soap->ctx; copy->ssl = soap->ssl; + copy->ctx = soap->ctx; #endif #ifdef WITH_GNUTLS copy->session = soap->session; #endif -#ifdef WITH_SYSTEMSSL +#ifdef WITH_WOLFSSL + copy->ssl = soap->ssl; copy->ctx = soap->ctx; +#endif +#ifdef WITH_SYSTEMSSL copy->ssl = soap->ssl; + copy->ctx = soap->ctx; #endif #ifdef WITH_ZLIB copy->zlib_state = soap->zlib_state; @@ -11972,7 +12588,14 @@ soap_copy_stream(struct soap *copy, struct soap *soap) copy->mustUnderstand = soap->mustUnderstand; copy->level = soap->level; copy->peeked = soap->peeked; - /* copy attributes */ + /* copy attributes, delete old ones first */ + for (tp = copy->attributes; tp; tp = tq) + { + tq = tp->next; + if (tp->value) + SOAP_FREE(copy, tp->value); + SOAP_FREE(copy, tp); + } for (tq = soap->attributes; tq; tq = tq->next) { struct soap_attribute *tr = tp; @@ -12003,8 +12626,8 @@ soap_free_stream(struct soap *soap) soap->recvsk = SOAP_INVALID_SOCKET; #ifdef WITH_OPENSSL soap->bio = NULL; - soap->ctx = NULL; soap->ssl = NULL; + soap->ctx = NULL; #endif #ifdef WITH_GNUTLS soap->xcred = NULL; @@ -12014,9 +12637,13 @@ soap_free_stream(struct soap *soap) soap->dh_params = NULL; soap->rsa_params = NULL; #endif +#ifdef WITH_WOLFSSL + soap->ssl = NULL; + soap->ctx = NULL; +#endif #ifdef WITH_SYSTEMSSL - soap->ctx = (gsk_handle)NULL; soap->ssl = (gsk_handle)NULL; + soap->ctx = (gsk_handle)NULL; #endif #ifdef WITH_ZLIB if (soap->z_buf) @@ -12044,9 +12671,6 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) { size_t i; soap->state = SOAP_INIT; -#ifdef SOAP_MEM_DEBUG - soap_init_mht(soap); -#endif #ifdef SOAP_DEBUG soap_init_logs(soap); #endif @@ -12124,6 +12748,7 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) #endif soap->fseterror = NULL; soap->fignore = NULL; + soap->fencoding = NULL; soap->fserveloop = NULL; soap->fplugin = fplugin; #ifndef WITH_LEANER @@ -12216,8 +12841,6 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) soap->local_namespaces = NULL; soap->nlist = NULL; soap->blist = NULL; - soap->clist = NULL; - soap->alist = NULL; soap->shaky = 0; soap->attributes = NULL; soap->header = NULL; @@ -12299,6 +12922,7 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) soap_init_iht(soap); #endif soap_init_pht(soap); + soap_init_cht(soap); #ifdef WITH_OPENSSL if (!soap_ssl_init_done) soap_ssl_init(); @@ -12308,6 +12932,8 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) soap->ssl = NULL; soap->ctx = NULL; soap->session = NULL; + soap->dhfile = NULL; + soap->randfile = NULL; soap->session_host[0] = '\0'; soap->session_port = 443; soap->ssl_flags = SOAP_SSL_DEFAULT; @@ -12317,8 +12943,6 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) soap->cafile = NULL; soap->capath = NULL; soap->crlfile = NULL; - soap->dhfile = NULL; - soap->randfile = NULL; #endif #ifdef WITH_GNUTLS if (!soap_ssl_init_done) @@ -12329,6 +12953,26 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) soap->acred = NULL; soap->cache = NULL; soap->session = NULL; + soap->dh_params = NULL; + soap->rsa_params = NULL; + soap->ssl_flags = SOAP_SSL_DEFAULT; + soap->keyfile = NULL; + soap->keyid = NULL; + soap->password = NULL; + soap->cafile = NULL; + soap->capath = NULL; + soap->crlfile = NULL; +#endif +#ifdef WITH_WOLFSSL + if (!soap_ssl_init_done) + soap_ssl_init(); + soap->fsslauth = ssl_auth_init; + soap->fsslverify = NULL; + soap->ssl = NULL; + soap->ctx = NULL; + soap->session = NULL; + soap->dhfile = NULL; + soap->randfile = NULL; soap->ssl_flags = SOAP_SSL_DEFAULT; soap->keyfile = NULL; soap->keyid = NULL; @@ -12336,8 +12980,6 @@ soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) soap->cafile = NULL; soap->capath = NULL; soap->crlfile = NULL; - soap->dh_params = NULL; - soap->rsa_params = NULL; #endif #ifdef WITH_SYSTEMSSL soap->fsslauth = ssl_auth_init; @@ -12414,24 +13056,20 @@ soap_begin(struct soap *soap) /******************************************************************************/ SOAP_FMAC1 -void +int SOAP_FMAC2 soap_end(struct soap *soap) { + int err = SOAP_OK; if (soap_check_state(soap)) - return; + return SOAP_OK; soap_free_temp(soap); - soap_dealloc(soap, NULL); - while (soap->clist) - { - struct soap_clist *cp = soap->clist->next; - SOAP_FREE(soap, soap->clist); - soap->clist = cp; - } + err = soap_dealloc(soap, NULL); (void)soap_closesock(soap); #ifdef SOAP_DEBUG soap_close_logfiles(soap); #endif + return err; } /******************************************************************************/ @@ -12758,7 +13396,6 @@ soap_element(struct soap *soap, const char *tag, int id, const char *type) const char *s; #endif DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element begin tag='%s' level='%u' id='%d' type='%s'\n", tag, soap->level, id, type ? type : SOAP_STR_EOS)); -#ifdef WITH_DOM #ifndef WITH_LEAN if (soap_tagsearch(soap->wsuid, tag)) { @@ -12769,12 +13406,10 @@ soap_element(struct soap *soap, const char *tag, int id, const char *type) if (soap_set_attr(soap, "wsu:Id", soap->href, 1)) return soap->error; } -#endif #endif soap->level++; if (soap->level > soap->maxlevel) return soap->error = SOAP_LEVEL; -#ifdef WITH_DOM #ifndef WITH_LEAN if ((soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_DOM_ASIS)) { @@ -12792,12 +13427,14 @@ soap_element(struct soap *soap, const char *tag, int id, const char *type) struct soap_nlist *np1 = soap_push_ns(soap, np->id, np->ns, 1, 0); if (np1 && !p) np1->index = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reset binding %s='%s' utilized=%d to utilized=%d\n", np->id, np->ns ? np->ns : SOAP_STR_EOS, np->index, np1 ? np1->index : np->index)); } } soap->evlev = soap->level; } } #endif +#ifdef WITH_DOM if ((soap->mode & SOAP_XML_DOM)) { struct soap_dom_element *elt = (struct soap_dom_element*)soap_malloc(soap, sizeof(struct soap_dom_element)); @@ -12855,9 +13492,15 @@ soap_element(struct soap *soap, const char *tag, int id, const char *type) size_t n = 0; s = strchr(tag, ':'); if (s) + { n = s++ - tag; + if (type && !strncmp(type, tag, n + 1)) + type += n + 1; + } else + { s = tag; + } if (soap_send_raw(soap, "<", 1) || soap_send(soap, s)) return soap->error; @@ -13406,7 +14049,7 @@ soap_element_start_end_out(struct soap *soap, const char *tag) } else { - DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Binding (level=%u) %s='%s' utilized=%d\n", np->level, np->id, np->ns, np->index)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Binding (level=%u) %s='%s' utilized=%d\n", np->level, np->id, np->ns ? np->ns : SOAP_STR_EOS, np->index)); } } } @@ -14684,8 +15327,13 @@ soap_peek_element(struct soap *soap) } while (soap_coblank(c)); if (c != SOAP_QT && c != SOAP_AP) { + if ((soap->mode & SOAP_XML_STRICT)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unquoted attribute value in %s\n", soap->tag)); + return soap->error = SOAP_SYNTAX_ERROR; + } soap_unget(soap, c); - c = ' '; /* blank delimiter */ + c = ' '; /* allow blank delimiter for non-well formed XML like HTML */ } k = tp->size; if (soap_getattrval(soap, tp->value, &k, c)) @@ -14787,6 +15435,11 @@ soap_peek_element(struct soap *soap) } else { + if ((soap->mode & SOAP_XML_STRICT)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Attribute withput a value in %s\n", soap->tag)); + return soap->error = SOAP_SYNTAX_ERROR; + } tp->visible = 1; /* seen this attribute w/o value */ } #ifdef WITH_DOM @@ -16612,11 +17265,11 @@ soap_float2s(struct soap *soap, float n) _sprintf_s_l(soap->tmpbuf, _countof(soap->tmpbuf), soap->float_format, SOAP_LOCALE(soap), n); # else locale = uselocale(SOAP_LOCALE(soap)); - (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), soap->float_format, n); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 80), soap->float_format, n); uselocale(locale); # endif #else - (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), soap->float_format, n); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 80), soap->float_format, n); s = strchr(soap->tmpbuf, ','); /* convert decimal comma to DP */ if (s) *s = '.'; @@ -16823,11 +17476,11 @@ soap_double2s(struct soap *soap, double n) _sprintf_s_l(soap->tmpbuf, _countof(soap->tmpbuf), soap->double_format, SOAP_LOCALE(soap), n); # else locale = uselocale(SOAP_LOCALE(soap)); - (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 40), soap->double_format, n); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 80), soap->double_format, n); uselocale(locale); # endif #else - (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 40), soap->double_format, n); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 80), soap->double_format, n); s = strchr(soap->tmpbuf, ','); /* convert decimal comma to DP */ if (s) *s = '.'; @@ -17150,6 +17803,7 @@ soap_s2unsignedInt(struct soap *soap, const char *s, unsigned int *p) { if (s) { + unsigned long n; char *r; if (!*s) return soap->error = SOAP_EMPTY; @@ -17158,8 +17812,11 @@ soap_s2unsignedInt(struct soap *soap, const char *s, unsigned int *p) soap_reset_errno; #endif #endif - *p = (unsigned int)soap_strtoul(s, &r, 10); + n = soap_strtoul(s, &r, 10); if (s == r || *r +#ifndef WITH_LEAN + || n != (unsigned int)n +#endif #ifndef WITH_NOIO #ifndef WITH_LEAN || soap_errno == SOAP_ERANGE @@ -17168,9 +17825,10 @@ soap_s2unsignedInt(struct soap *soap, const char *s, unsigned int *p) ) soap->error = SOAP_TYPE; #ifdef HAVE_STRTOUL - if (*p > 0 && strchr(s, '-')) + if (n > 0 && strchr(s, '-')) return soap->error = SOAP_TYPE; #endif + *p = (unsigned int)n; } return soap->error; } @@ -17925,7 +18583,7 @@ soap_QName2s(struct soap *soap, const char *s) /******************************************************************************/ -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 int SOAP_FMAC2 @@ -17945,7 +18603,7 @@ soap_s2wchar(struct soap *soap, const char *s, wchar_t **t, int flag, long minle #ifndef WITH_COMPAT #ifdef __cplusplus -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 int SOAP_FMAC2 @@ -17965,7 +18623,7 @@ soap_s2stdwchar(struct soap *soap, const char *s, std::wstring *t, int flag, lon /******************************************************************************/ -#ifndef WITH_LEAN +#ifndef WITH_LEANER static const wchar_t* soap_wstring(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern) { @@ -18215,7 +18873,7 @@ soap_wcollapse(struct soap *soap, wchar_t *s, int flag, int insitu) /******************************************************************************/ -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 const char* SOAP_FMAC2 @@ -18563,7 +19221,7 @@ strftime(char *buf, size_t len, const char *format, const struct tm *pT) /******************************************************************************/ -#if !defined(WITH_LEAN) || defined(WITH_COOKIES) +#if !defined(WITH_LEANER) || defined(WITH_COOKIES) SOAP_FMAC1 time_t SOAP_FMAC2 @@ -18601,7 +19259,7 @@ soap_timegm(struct tm *T) /******************************************************************************/ -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 const char* SOAP_FMAC2 @@ -18726,7 +19384,7 @@ soap_outdateTime(struct soap *soap, const char *tag, int id, const time_t *p, co /******************************************************************************/ -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 int SOAP_FMAC2 @@ -21120,13 +21778,14 @@ soap_envelope_begin_in(struct soap *soap) { if (soap->error == SOAP_TAG_MISMATCH) { - if (!soap_element_begin_in(soap, "Envelope", 0, NULL)) - soap->error = SOAP_VERSIONMISMATCH; - else if (soap->status == 0 + if (!soap_element_begin_in(soap, ":Envelope", 0, NULL)) + return soap->error = SOAP_VERSIONMISMATCH; + if (soap->status == 0 || (soap->status >= 200 && soap->status <= 299) || soap->status == 400 - || soap->status == 500) - return SOAP_OK; /* allow non-SOAP (REST) XML content to be captured */ + || soap->status == 500 + || soap->status >= SOAP_POST) + return soap->error = SOAP_OK; /* allow non-SOAP (REST) XML content to be captured */ soap->error = soap->status; } else if (soap->status) @@ -21248,7 +21907,7 @@ soap_set_endpoint(struct soap *soap, const char *endpoint) soap->port = 80; if (!endpoint || !*endpoint) return; -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) if (!soap_tag_cmp(endpoint, "https:*")) soap->port = 443; #endif @@ -21737,10 +22396,10 @@ soap_base642s(struct soap *soap, const char *s, char *t, size_t l, int *n) soap_wchar c; unsigned long m; const char *p; + if (n) + *n = 0; if (!s || !*s) { - if (n) - *n = 0; if (soap->error) return NULL; return SOAP_NON_NULL; @@ -21753,8 +22412,6 @@ soap_base642s(struct soap *soap, const char *s, char *t, size_t l, int *n) if (!t) return NULL; p = t; - if (n) - *n = 0; for (i = 0; ; i += 3, l -= 3) { m = 0; @@ -21854,10 +22511,10 @@ SOAP_FMAC2 soap_hex2s(struct soap *soap, const char *s, char *t, size_t l, int *n) { const char *p; + if (n) + *n = 0; if (!s || !*s) { - if (n) - *n = 0; if (soap->error) return NULL; return SOAP_NON_NULL; @@ -22017,14 +22674,27 @@ soap_puthttphdr(struct soap *soap, int status, ULONG64 count) { const char *header = soap->http_extra_header; soap->http_extra_header = NULL; /* use http_extra_header once (assign new value before each call) */ - if (*header) - { - err = soap_send(soap, header); - if (err) - return err; - err = soap_send_raw(soap, "\r\n", 2); - if (err) - return err; + while (*header) + { + const char *s = strchr(header, ':'); + const char *t = strchr(header, '\n'); + if (t == NULL) + t = header + strlen(header); + if (s != NULL && s < t && t < header + sizeof(soap->tmpbuf)) + { + while (s < t && isspace(*(t - 1))) + --t; + soap_strncpy(soap->tmpbuf, sizeof(soap->tmpbuf), header, t - header); + soap->tmpbuf[s - header] = '\0'; + while (s < t && isspace(*++s)) + continue; + err = soap->fposthdr(soap, soap->tmpbuf, soap->tmpbuf + (s - header)); + if (err) + return err; + } + while (isspace(*t)) + ++t; + header = t; } } if (soap->keep_alive) @@ -22209,7 +22879,7 @@ soap_set_fault(struct soap *soap) *s = "An HTTP NTLM authentication error occurred"; break; case SOAP_SSL_ERROR: -#ifdef WITH_OPENSSL +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_WOLFSSL) || defined(WITH_SYSTEMSSL) *s = "SSL/TLS error"; #else *s = "OpenSSL not installed: recompile with -DWITH_OPENSSL"; @@ -22468,7 +23138,7 @@ soap_recv_fault(struct soap *soap, int check) /* if check>0 and no SOAP Fault is present and no HTTP error then just return to parse request */ if (check && (status == 0 || (status >= 200 && status <= 299)) - && ((soap->error == SOAP_TAG_MISMATCH && soap->level == 2) || soap->error == SOAP_NO_TAG)) + && ((soap->error == SOAP_TAG_MISMATCH && soap->level <= 2) || soap->error == SOAP_NO_TAG)) return soap->error = SOAP_OK; /* if check=0 and empty SOAP Body and encodingStyle is NULL and no HTTP error then just return */ if (!check @@ -22560,7 +23230,7 @@ soap_recv_empty_response(struct soap *soap) if (soap->status < SOAP_STOP) soap->error = soap->status; } - if (soap->error == 200 || soap->error == 201 || soap->error == 202) + if (soap->error == 200 || soap->error == 201 || soap->error == 202 || soap->error == 204) { soap->error = SOAP_OK; } @@ -22588,7 +23258,7 @@ soap_strerror(struct soap *soap) { #ifndef WIN32 # ifdef HAVE_STRERROR_R -# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))) +# if !defined(_GNU_SOURCE) || (!(~_GNU_SOURCE+1) && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600))) || defined(WITH_POSIX_STRERROR_R) err = strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */ if (err != 0) soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "unknown error"); @@ -22971,7 +23641,7 @@ soap_register_plugin_arg(struct soap *soap, int (*fcreate)(struct soap*, struct p->fcopy = NULL; p->fdelete = NULL; err = fcreate(soap, p, arg); - if (!err && p->fdelete && p->id) + if (!err && p->id) { if (!soap_lookup_plugin(soap, p->id)) { @@ -22981,6 +23651,8 @@ soap_register_plugin_arg(struct soap *soap, int (*fcreate)(struct soap*, struct return SOAP_OK; } DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not register plugin '%s': plugin with the same ID already registered\n", p->id)); + if (p->fdelete) + p->fdelete(soap, p); SOAP_FREE(soap, p); return SOAP_OK; } diff --git a/dep/gsoap/stdsoap2.h b/dep/gsoap/stdsoap2.h index 66f06210a8665..4e64156b7cbd7 100644 --- a/dep/gsoap/stdsoap2.h +++ b/dep/gsoap/stdsoap2.h @@ -1,10 +1,10 @@ /* - stdsoap2.h 2.8.117 + stdsoap2.h 2.8.141 gSOAP runtime engine gSOAP XML Web services tools -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc., All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc., All Rights Reserved. This part of the software is released under ONE of the following licenses: GPL or the gSOAP public license. -------------------------------------------------------------------------------- @@ -25,7 +25,7 @@ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Initial Developer of the Original Code is Robert A. van Engelen. -Copyright (C) 2000-2021, Robert van Engelen, Genivia Inc., All Rights Reserved. +Copyright (C) 2000-2026, Robert van Engelen, Genivia Inc., All Rights Reserved. -------------------------------------------------------------------------------- GPL license. @@ -52,7 +52,7 @@ A commercial use license is available from Genivia, Inc., contact@genivia.com -------------------------------------------------------------------------------- */ -#define GSOAP_VERSION 208117 +#define GSOAP_VERSION 208141 #ifdef WITH_SOAPDEFS_H # include "soapdefs.h" /* include user-defined stuff in soapdefs.h */ @@ -74,7 +74,7 @@ A commercial use license is available from Genivia, Inc., contact@genivia.com # endif #endif -/* for legacy purposes we use WIN32 macro, even when WIN64 is supported */ +/* legacy-related: we use WIN32 to detect Windows, even when WIN64 is supported */ #ifdef _WIN64 # ifndef WIN32 # define WIN32 @@ -397,6 +397,7 @@ extern intmax_t __strtoull(const char*, char**, int); # define SOAP_ULONG_FORMAT "%qu" # define HAVE_ISNAN # define HAVE_ISINF +# define HAVE_INTTYPES_H # define HAVE_LOCALE_H # define HAVE_XLOCALE_H # define HAVE_RANDOM @@ -574,6 +575,7 @@ extern intmax_t __strtoull(const char*, char**, int); # define HAVE_ASCTIME_R # define HAVE_LOCALTIME_R # define HAVE_STRERROR_R +# define HAVE_INTTYPES_H # define HAVE_LOCALE_H # endif #endif @@ -584,11 +586,11 @@ extern intmax_t __strtoull(const char*, char**, int); # endif #endif -/* gSOAP 2.7.15 and higher: always use FAST and retain CDATA in literal XML, unless WITH_LEAN or WITH_NOCDATA */ +/* gSOAP 2.7.15 and higher: always use FAST, retain CDATA in literal XML unless WITH_LEAN or WITH_NOCDATA */ +#ifndef WITH_FAST +# define WITH_FAST +#endif #ifndef WITH_LEAN -# ifndef WITH_FAST -# define WITH_FAST -# endif # ifndef WITH_NOCDATA # ifndef WITH_CDATA # define WITH_CDATA @@ -662,7 +664,7 @@ extern intmax_t __strtoull(const char*, char**, int); # include # endif # if !defined(HAVE_CONFIG_H) || defined(HAVE_LIMITS_H) -# include /* for MB_LEN_MAX */ +# include /* for MB_LEN_MAX strtol strtoll strtoul strtoull */ # endif # if !defined(HAVE_CONFIG_H) || defined(HAVE_FLOAT_H) # include /* for INFINITY */ @@ -930,6 +932,10 @@ extern intmax_t __strtoull(const char*, char**, int); # endif #endif +#ifdef WITH_WOLFSSL +# include +#endif + #ifdef WITH_SYSTEMSSL # include #endif @@ -1175,14 +1181,14 @@ extern "C" { # endif #endif #ifndef SOAP_LABLEN -# define SOAP_LABLEN (256) /* initial look-aside buffer length */ +# define SOAP_LABLEN (256) /* initial look-aside buffer length */ #endif #ifndef SOAP_PTRBLK -# define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */ +# define SOAP_PTRBLK (256) /* block allocations for hash table chains */ #endif #ifndef SOAP_PTRHASH # ifndef WITH_LEAN -# define SOAP_PTRHASH (4096) /* size of pointer analysis hash table (must be power of 2) */ +# define SOAP_PTRHASH (2048) /* size of pointer analysis hash table (must be power of 2) */ # else # define SOAP_PTRHASH (32) # endif @@ -1217,7 +1223,7 @@ extern "C" { #endif #ifndef SOAP_TMPLEN # ifndef WITH_LEAN -# define SOAP_TMPLEN (2048) /* maximum length of msgbuf and tmpbuf short message buffers, must be >=1024 */ +# define SOAP_TMPLEN (8192) /* maximum length of msgbuf and tmpbuf message buffers, must be >=1024 */ # else # define SOAP_TMPLEN (1024) # endif @@ -1238,7 +1244,7 @@ extern "C" { #endif #ifndef SOAP_MAXALLOCSIZE -# define SOAP_MAXALLOCSIZE (0) /* max size that malloc() can handle, zero for no limit */ +# define SOAP_MAXALLOCSIZE (0) /* max size that malloc() can handle, zero means unlimited */ #endif #ifndef SOAP_MAXLOGS @@ -1248,6 +1254,11 @@ extern "C" { # define SOAP_INDEX_TEST (2) #endif +/* max HTTP chunk size is 2GB by default, can be larger but not to exceed size_t range max */ +#ifndef SOAP_MAXHTTPCHUNK +# define SOAP_MAXHTTPCHUNK (2147483647) +#endif + /* Tag name of multiref elements in SOAP 1.1 encoding */ #ifndef SOAP_MULTIREFTAG # define SOAP_MULTIREFTAG "id" @@ -1751,6 +1762,7 @@ typedef soap_int32 soap_mode; #define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE (0x0008) /* allow self-signed and expired certificates and those w/o CRL */ #define SOAP_SSL_NO_DEFAULT_CA_PATH (0x0010) /* don't use SSL_CTX_set_default_verify_paths */ #define SOAP_SSL_RSA (0x0020) /* use RSA */ +#define SOAP_SSL_SNI_HOST_CHECK (0x0040) /* client SNI only with a valid hostname, reject IP */ #define SOAP_SSLv3 (0x0080) /* enable SSL v3 */ #define SOAP_TLSv1_0 (0x0100) /* enable TLS v1.0 */ #define SOAP_TLSv1_1 (0x0200) /* enable TLS v1.1 */ @@ -2054,26 +2066,24 @@ struct soap_pblk struct soap_plist plist[SOAP_PTRBLK]; }; -#ifdef SOAP_MEM_DEBUG -/* malloc/free tracking for debugging */ -struct soap_mlist +/* malloc and C++ class instance tracking */ +struct soap_clist { - struct soap_mlist *next; - const void *ptr; - const char *file; - int line; - short live; + struct soap_clist *next; + void *ptr; /* points to allocated memory */ + union { + int (*fdelete)(struct soap*, struct soap_clist*); /* C++ class instance deleter */ + const char *file; /* source location (of unmanaged memory alloc) */ + } ref; + LONG64 size; /* malloc() size or array size of C++ objects (-1 = single) or line number (unmanaged memory, <0 when freed) */ + int type; /* 0 (managed malloc) or SOAP_TRACK_UNMANAGED_MEM (unmanaged) or SOAP_TYPE C++ class instance type */ }; -#endif -/* class allocation list */ -struct soap_clist +/* block allocation for allocation management */ +struct soap_cblk { - struct soap_clist *next; - void *ptr; - int type; - int size; /* array size */ - int (*fdelete)(struct soap*, struct soap_clist*); + struct soap_cblk *next; + struct soap_clist clist[SOAP_PTRBLK]; }; /* attributes */ @@ -2402,10 +2412,12 @@ struct SOAP_CMAC soap_dom_attribute soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const wchar_t *str); soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const char *str); soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const wchar_t *str); +#ifndef WITH_COMPAT soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const std::string& str); soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const std::wstring& str); soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const std::string& str); soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const std::wstring& str); +#endif ~soap_dom_attribute(); soap_dom_attribute& set(const char *ns, const char *tag) { return *soap_att_set(this, ns, tag); } soap_dom_attribute& set(const char *ns, const wchar_t *tag) { return *soap_att_set_w(this, ns, tag); } @@ -2724,18 +2736,15 @@ struct SOAP_CMAC soap struct Namespace *local_namespaces; /* Local namespace mapping table */ struct soap_nlist *nlist; /* namespace stack */ struct soap_blist *blist; /* block allocation stack */ - struct soap_clist *clist; /* class instance allocation list */ - void *alist; /* memory allocation (malloc) list */ #if !defined(WITH_LEANER) || !defined(WITH_NOIDREF) struct soap_ilist *iht[SOAP_IDHASH]; #endif struct soap_plist *pht[SOAP_PTRHASH]; struct soap_pblk *pblk; /* plist block allocation */ - short pidx; /* plist block allocation */ - short shaky; /* objects in reallocatable containers are on shaky grounds */ + int idnum; + int pidx; /* plist block allocation */ struct SOAP_ENV__Header *header; struct SOAP_ENV__Fault *fault; - int idnum; void *user; /* for user to pass user-defined data to callbacks */ void *data[4]; /* extension data = {smdevp, mecevp, ...} */ struct soap_plugin *plugins; /* linked list of plug-in data */ @@ -2772,6 +2781,7 @@ struct SOAP_CMAC soap size_t (*frecv)(struct soap*, char*, size_t); int (*fpoll)(struct soap*); void (*fseterror)(struct soap*, const char **c, const char **s); + int (*fencoding)(struct soap*, const char*); int (*fignore)(struct soap*, const char*); int (*fserveloop)(struct soap*); void *(*fplugin)(struct soap*, const char*); @@ -2840,12 +2850,21 @@ struct SOAP_CMAC soap gnutls_session_t session; /* session pointer */ gnutls_dh_params_t dh_params; gnutls_rsa_params_t rsa_params; +#elif defined(WITH_WOLFSSL) /* WolfSSL */ + int (*fsslauth)(struct soap*); + VerifyCallback fsslverify; /* callback to verify certificates */ + void *bio; /* N/A */ + WOLFSSL *ssl; /* ssl socket */ + WOLFSSL_CTX *ctx; /* environment */ + void *session; /* N/A */ + const char *dhfile; /* N/A */ + const char *randfile; /* N/A */ #elif defined(WITH_SYSTEMSSL) /* SYSTEM SSL */ int (*fsslauth)(struct soap*); void *fsslverify; /* N/A */ void *bio; /* N/A */ - gsk_handle ctx; /* environment */ gsk_handle ssl; /* ssl socket */ + gsk_handle ctx; /* environment */ void *session; /* N/A */ const char *dhfile; /* N/A */ const char *randfile; /* N/A */ @@ -2859,13 +2878,13 @@ struct SOAP_CMAC soap void *dh_params; void *rsa_params; #endif - unsigned short ssl_flags; const char *keyfile; const char *keyid; const char *password; const char *cafile; const char *capath; const char *crlfile; + unsigned short ssl_flags; char session_host[SOAP_TAGLEN]; int session_port; size_t bufidx; /* index in soap.buf[] */ @@ -2895,6 +2914,7 @@ struct SOAP_CMAC soap int position; int positions[SOAP_MAXDIMS]; struct soap_attribute *attributes; /* attribute list */ + short shaky; /* objects in reallocatable containers are on shaky grounds */ short other; short root; short encoding; /* when set, output encodingStyle */ @@ -2913,10 +2933,10 @@ struct SOAP_CMAC soap char host[SOAP_TAGLEN]; char *action; /* SOAPAction string */ const char *prolog; /* XML declaration prolog */ + const char *override_host; /* to override the client-side host name/IP when connecting */ unsigned int ip; /* IP number retrieved from request */ unsigned int ip6[4]; /* same for IPv6: upper in ip6[0] to lower in ip6[3] requires WITH_IPV6 */ int port; /* port number */ - const char *override_host; /* to override the client-side host name/IP when connecting */ int override_port; /* to override client-side port number when connecting */ int keep_alive; /* connection should be kept open (-1, 0, or counts down) */ int tcp_keep_alive; /* enable SO_KEEPALIVE */ @@ -2924,9 +2944,9 @@ struct SOAP_CMAC soap unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */ unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */ int max_keep_alive; /* maximum keep-alive session (default=100) 0 to always keep open */ + int proxy_port; /* Proxy Server port (default = 8080) */ const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */ const char *proxy_host; /* Proxy Server host name */ - int proxy_port; /* Proxy Server port (default = 8080) */ const char *proxy_userid; /* Proxy Authorization user name */ const char *proxy_passwd; /* Proxy Authorization password */ const char *proxy_from; /* X-Forwarding-For header returned by proxy */ @@ -2950,7 +2970,9 @@ struct SOAP_CMAC soap #endif const char *logfile[SOAP_MAXLOGS]; FILE *fdebug[SOAP_MAXLOGS]; - struct soap_mlist *mht[SOAP_PTRHASH]; + struct soap_clist *cht[SOAP_PTRHASH]; + struct soap_cblk *cblk; /* clist block allocation */ + int cidx; /* clist block allocation */ #ifndef WITH_LEAN const char *wsuid; /* space-separated string of element tags */ const char *c14nexclude; /* space-separated string of prefixes for c14n exclusion */ @@ -3093,7 +3115,14 @@ SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*); #define soap_clr_mode(soap, n) ((soap)->mode &= ~(n), (soap)->imode &= ~(n), (soap)->omode &= ~(n)) #define soap_destroy(soap) soap_delete((soap), NULL) -#define SOAP_NO_LINK_TO_DELETE (-2) /* pass to soap_link() as size n: do not manage, smart pointers are self-managing */ +#define SOAP_NO_LINK_TO_DELETE (-2) /* pass to soap_new_link() as size n: do not manage, smart pointers are self-managing */ + +#ifdef SOAP_MEM_DEBUG +#define SOAP_TRACK_MALLOC (int)((unsigned int)-1 >> 1) +#define soap_is_unmanaged_mem(type) ((type) == SOAP_TRACK_MALLOC) +#else +#define soap_is_unmanaged_mem(type) (0) +#endif #ifdef HAVE_STRRCHR # define soap_strrchr(s, t) strrchr(s, t) @@ -3289,8 +3318,9 @@ SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*); SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*); SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t); -SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*); -SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, int, int, int (*fdelete)(struct soap*, struct soap_clist*)); +SOAP_FMAC1 int SOAP_FMAC2 soap_dealloc(struct soap*, void*); +SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_new_link(struct soap*, int, int, int (*fdelete)(struct soap*, struct soap_clist*)); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_link(struct soap*, struct soap_clist*, void*); SOAP_FMAC1 int SOAP_FMAC2 soap_unlink(struct soap*, const void*); SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*); SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*); @@ -3332,8 +3362,8 @@ SOAP_FMAC1 void SOAP_FMAC2 soap_initialize(struct soap*); SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*); SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*); SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*); -SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*); +SOAP_FMAC1 int SOAP_FMAC2 soap_end(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_delete(struct soap*, void*); SOAP_FMAC1 void SOAP_FMAC2 soap_delegate_deletion(struct soap*, struct soap*); #ifdef WITH_SELF_PIPE SOAP_FMAC1 void SOAP_FMAC2 soap_close_connection(struct soap*); @@ -3488,7 +3518,7 @@ SOAP_FMAC1 int SOAP_FMAC2 soap_s2stdwchar(struct soap*, const char*, std::wstrin #endif #endif -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**, int, long minlen, long maxlen, const char *pattern); SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*); #endif @@ -3510,7 +3540,7 @@ SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned lon SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64); SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*); -#ifndef WITH_LEAN +#ifndef WITH_LEANER SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*); SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t); #endif @@ -3537,11 +3567,8 @@ SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int); #endif -#if !defined(WITH_LEAN) || defined(WITH_COOKIES) +#if !defined(WITH_LEANER) || defined(WITH_COOKIES) SOAP_FMAC1 time_t SOAP_FMAC2 soap_timegm(struct tm*); -#endif - -#ifndef WITH_LEANER SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, int, long, long, const char*); SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p); #endif From e9cb7bed4331f57850b3f25b2902c4dbbe11f8e6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 17 Apr 2026 11:06:31 +0200 Subject: [PATCH 064/175] Dep/gSOAP: Disable unused openssl integration --- dep/gsoap/CMakeLists.txt | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/dep/gsoap/CMakeLists.txt b/dep/gsoap/CMakeLists.txt index 6a50b6b68c43a..6fdd4edb46f9f 100644 --- a/dep/gsoap/CMakeLists.txt +++ b/dep/gsoap/CMakeLists.txt @@ -26,15 +26,9 @@ target_sources(gsoap set_target_properties(gsoap PROPERTIES LINKER_LANGUAGE CXX) -target_compile_definitions(gsoap - PUBLIC - WITH_OPENSSL) - target_link_libraries(gsoap PRIVATE - trinity-dependency-interface - PUBLIC - openssl) + trinity-dependency-interface) set_target_properties(gsoap PROPERTIES From 6f8a815883e034d20b3de5c74675892dfe423f8d Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 17 Apr 2026 11:58:34 +0200 Subject: [PATCH 065/175] Core/Crypto: Support OpenSSL 4.0 --- src/server/bnetserver/Server/SslContext.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/bnetserver/Server/SslContext.cpp b/src/server/bnetserver/Server/SslContext.cpp index 7920238c16e5d..629c3a6588118 100644 --- a/src/server/bnetserver/Server/SslContext.cpp +++ b/src/server/bnetserver/Server/SslContext.cpp @@ -117,7 +117,7 @@ bool Battlenet::SslContext::Initialize() _usesDevWildcardCertificate = [&] { - X509_NAME* nm = X509_get_subject_name(cert); + X509_NAME const* nm = X509_get_subject_name(cert); int32 lastpos = -1; while (true) { @@ -125,11 +125,11 @@ bool Battlenet::SslContext::Initialize() if (lastpos == -1) break; - X509_NAME_ENTRY* e = X509_NAME_get_entry(nm, lastpos); + X509_NAME_ENTRY const* e = X509_NAME_get_entry(nm, lastpos); if (!e) continue; - ASN1_STRING* text = X509_NAME_ENTRY_get_data(e); + ASN1_STRING const* text = X509_NAME_ENTRY_get_data(e); if (!text) continue; From 71e48b58a05bf2f0bb690fda4898fde37b77448b Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 17 Apr 2026 12:53:39 +0200 Subject: [PATCH 066/175] CI/GitHub: Copy openssl dlls using pattern --- .github/workflows/win-x64-build.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/win-x64-build.yml b/.github/workflows/win-x64-build.yml index 8115178393f49..d5cc1ede9aa37 100644 --- a/.github/workflows/win-x64-build.yml +++ b/.github/workflows/win-x64-build.yml @@ -84,10 +84,8 @@ jobs: run: | cd ${{ steps.strings.outputs.build-output-dir }}/bin/${{ env.CMAKE_BUILD_TYPE }} copy "${{ env.MYSQL_ROOT_DIR }}/lib/libmysql.dll" libmysql.dll - copy "${{ env.OPENSSL_ROOT_DIR }}/bin/libssl-3-x64.dll" libssl-3-x64.dll - copy "${{ env.OPENSSL_ROOT_DIR }}/bin/libcrypto-3-x64.dll" libcrypto-3-x64.dll - copy "${{ env.OPENSSL_ROOT_DIR }}/bin/legacy.dll" legacy.dll - + Copy-Item -Path "${{ env.OPENSSL_ROOT_DIR }}/bin/*" -Include libcrypto*,libssl*,legacy* -Destination . + - name: Check binaries run: | cd ${{ steps.strings.outputs.build-output-dir }}/bin/${{ env.CMAKE_BUILD_TYPE }} From e5a3693f7897168c4fe5c3ff6131e0261269ff2a Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 17 Apr 2026 19:27:49 +0200 Subject: [PATCH 067/175] CI/GitHub: Copy possibly other version of openssl dlls required for libmysql.dll --- .github/workflows/win-x64-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/win-x64-build.yml b/.github/workflows/win-x64-build.yml index d5cc1ede9aa37..ca4dac62eebe2 100644 --- a/.github/workflows/win-x64-build.yml +++ b/.github/workflows/win-x64-build.yml @@ -84,6 +84,8 @@ jobs: run: | cd ${{ steps.strings.outputs.build-output-dir }}/bin/${{ env.CMAKE_BUILD_TYPE }} copy "${{ env.MYSQL_ROOT_DIR }}/lib/libmysql.dll" libmysql.dll + # mysql may depend on a different version of openssl so copy its dlls first (override later with openssl's own if same version) + Copy-Item -Path "${{ env.MYSQL_ROOT_DIR }}/bin/*" -Include libcrypto*,libssl* -Destination . Copy-Item -Path "${{ env.OPENSSL_ROOT_DIR }}/bin/*" -Include libcrypto*,libssl*,legacy* -Destination . - name: Check binaries From fbdc1a1ad9297c376f4ae3d690acbc43fa0bf62e Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:56:53 +0300 Subject: [PATCH 068/175] Core/Misc: Update SkillType enum for 12.0.1 (#31796) --- src/server/game/Miscellaneous/SharedDefines.h | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 86298c0519703..a75038ca330f9 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -5785,7 +5785,7 @@ constexpr uint8 ClassByQuestSort(int32 QuestSort) return 0; } -// SkillLine.db2 (11.2.5.62687) +// SkillLine.db2 (12.0.1.66838) enum SkillType { SKILL_NONE = 0, @@ -6165,7 +6165,25 @@ enum SkillType SKILL_LANG_EARTHEN = 2884, SKILL_SUPPLY_SHIPMENTS = 2886, SKILL_RACIAL_EARTHEN = 2895, - SKILL_ALL_WARBANDS = 2902 + SKILL_ALL_WARBANDS = 2902, + SKILL_MIDNIGHT_ALCHEMY = 2906, + SKILL_MIDNIGHT_BLACKSMITHING = 2907, + SKILL_MIDNIGHT_COOKING = 2908, + SKILL_MIDNIGHT_ENCHANTING = 2909, + SKILL_MIDNIGHT_ENGINEERING = 2910, + SKILL_MIDNIGHT_FISHING = 2911, + SKILL_MIDNIGHT_HERBALISM = 2912, + SKILL_MIDNIGHT_INSCRIPTION = 2913, + SKILL_MIDNIGHT_JEWELCRAFTING = 2914, + SKILL_MIDNIGHT_LEATHERWORKING = 2915, + SKILL_MIDNIGHT_MINING = 2916, + SKILL_MIDNIGHT_SKINNING = 2917, + SKILL_MIDNIGHT_TAILORING = 2918, + SKILL_RACIAL_HARANIR = 2930, + SKILL_ALCHEMY_RESEARCH = 2950, + SKILL_PET_EXOTIC_WHIPTAIL = 2961, + SKILL_DYE_CRAFTING = 2984, + SKILL_LANG_HARANI = 2987 }; constexpr SkillType SkillByLockType(LockType locktype) From afe55fe47616a241e8e0cde3be9b98cd54903928 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 18 Apr 2026 11:20:57 +0200 Subject: [PATCH 069/175] Core/Bnet: Fixed bnetserver getting stuck on shutdown when running as windows service --- src/server/bnetserver/Main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/bnetserver/Main.cpp b/src/server/bnetserver/Main.cpp index bc9004a6ba0c1..5f2d8d35e9686 100644 --- a/src/server/bnetserver/Main.cpp +++ b/src/server/bnetserver/Main.cpp @@ -379,7 +379,7 @@ void ServiceStatusWatcher(std::weak_ptr serviceSta { if (m_ServiceStatus == 0) { - ioContext->stop(); + Stopped = true; } else if (std::shared_ptr serviceStatusWatchTimer = serviceStatusWatchTimerRef.lock()) { From 3f3de8b532885dab4a489301583ebd407c923e30 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sat, 18 Apr 2026 16:17:50 +0300 Subject: [PATCH 070/175] DB/Valdrakken: Add ambient flying dragons scene (#31797) Co-authored-by: Naddley <64811442+Naddley@users.noreply.github.com> --- sql/updates/world/master/2026_04_18_00_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/master/2026_04_18_00_world.sql diff --git a/sql/updates/world/master/2026_04_18_00_world.sql b/sql/updates/world/master/2026_04_18_00_world.sql new file mode 100644 index 0000000000000..32e7530ca1e6c --- /dev/null +++ b/sql/updates/world/master/2026_04_18_00_world.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_area` WHERE `spell` = 388530 AND `area` IN (13862,13647); +INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `flags`, `quest_start_status`, `quest_end_status`) VALUES +(388530, 13862, 0, 0, 0, 0, 2, 3, 64, 11), +(388530, 13647, 0, 0, 0, 0, 2, 3, 64, 11); From 400617e42a1d6df0950e575938bf79f691e3244d Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sat, 18 Apr 2026 17:36:56 +0300 Subject: [PATCH 071/175] DB/EversongWoods: Added graveyards (#31798) --- .../world/master/2026_04_18_01_world.sql | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 sql/updates/world/master/2026_04_18_01_world.sql diff --git a/sql/updates/world/master/2026_04_18_01_world.sql b/sql/updates/world/master/2026_04_18_01_world.sql new file mode 100644 index 0000000000000..360c726a588f0 --- /dev/null +++ b/sql/updates/world/master/2026_04_18_01_world.sql @@ -0,0 +1,47 @@ +SET @CGUID := 11000755; + +SET @GGUID := 100109; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+10; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 0, 15968, 16173, '0', 0, 0, 0, 0, 9374.9423828125, -3907.795166015625, 48.11637115478515625, 2.47507643699645996, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Sunstrider Isle - Difficulty: 0) +(@CGUID+1, 6491, 0, 15968, 15993, '0', 0, 0, 0, 0, 7808.87060546875, -3426.479248046875, 61.69491195678710937, 3.483087539672851562, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: West Sanctum - Difficulty: 0) +(@CGUID+2, 6491, 0, 15968, 15996, '0', 0, 0, 0, 0, 6958.5400390625, -3633.835205078125, 73.06569671630859375, 1.600736141204833984, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Stillwhisper Pond - Difficulty: 0) +(@CGUID+3, 6491, 0, 15968, 16060, '0', 0, 0, 0, 0, 5930.875, -3486.4775390625, 9.671380043029785156, 1.591148734092712402, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Goldenmist Village - Difficulty: 0) +(@CGUID+4, 6491, 0, 15968, 16351, '0', 0, 0, 0, 0, 5366.66162109375, -4025.37158203125, 29.11220741271972656, 0.590485632419586181, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Sunsail Anchorage - Difficulty: 0) +(@CGUID+5, 6491, 0, 15968, 0, '0', 0, 0, 0, 0, 5221.38037109375, -5004.7900390625, 86.65317535400390625, 3.14746856689453125, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: 0 - Difficulty: 0) +(@CGUID+6, 6491, 0, 15968, 0, '0', 0, 0, 0, 0, 5911.12841796875, -5668.392578125, 217.1766815185546875, 3.399087190628051757, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: 0 - Difficulty: 0) +(@CGUID+7, 6491, 0, 15968, 16001, '0', 0, 0, 0, 0, 6204.53369140625, -4335.73779296875, 59.7386322021484375, 3.227775335311889648, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Fairbreeze Village - Difficulty: 0) +(@CGUID+8, 6491, 0, 15968, 0, '0', 0, 0, 0, 0, 7220.67626953125, -4342.4755859375, 119.2178878784179687, 3.954410076141357421, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: 0 - Difficulty: 0) +(@CGUID+9, 6491, 0, 15968, 16067, '0', 0, 0, 0, 0, 7573.66943359375, -5171.62841796875, 103.8119125366210937, 2.84320998191833496, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Farstrider Hold - Difficulty: 0) +(@CGUID+10, 6491, 0, 15968, 16073, '0', 0, 0, 0, 0, 8003.0771484375, -4471.73779296875, 27.25476264953613281, 2.608248710632324218, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Spirit Healer (Area: Dawnstar Spire - Difficulty: 0) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+10; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 15968, 'Eversong Woods - Sunstrider Isle'), +(@GGUID+1, 15968, 'Eversong Woods - West Sanctum'), +(@GGUID+2, 15968, 'Eversong Woods - Stillwhisper Pond'), +(@GGUID+3, 15968, 'Eversong Woods - Goldenmist Village'), +(@GGUID+4, 15968, 'Eversong Woods - Sunsail Anchorage'), +(@GGUID+5, 15968, 'Eversong Woods - South'), +(@GGUID+6, 15968, 'Eversong Woods - Far South'), +(@GGUID+7, 15968, 'Eversong Woods - Fairbreeze Village'), +(@GGUID+8, 15968, 'Eversong Woods - Central'), +(@GGUID+9, 15968, 'Eversong Woods - Farstrider Hold'), +(@GGUID+10, 15968, 'Eversong Woods - Dawnstar Spire'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+10; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 0, 9376.21, -3909.01, 48.2837, 5.611652374267578125 / (2 * PI() / 360), 'Eversong Woods - Sunstrider Isle GY'), +(@GGUID+1, 0, 7803.98, -3428.5105, 59.9622, 0.460378527641296386 / (2 * PI() / 360), 'Eversong Woods - West Sanctum GY'), +(@GGUID+2, 0, 6958.78, -3624.55, 70.2722, 4.69767618179321289 / (2 * PI() / 360), 'Eversong Woods - Stillwhisper Pond GY'), +(@GGUID+3, 0, 5930.8003, -3482.7795, 9.1327, 4.771708011627197265 / (2 * PI() / 360), 'Eversong Woods - Goldenmist Village GY'), +(@GGUID+4, 0, 5368.39, -4024.44, 27.75, 3.656412363052368164 / (2 * PI() / 360), 'Eversong Woods - Sunsail Anchorage GY'), +(@GGUID+5, 0, 5216.33, -5005.27, 86.502, 0.041590671986341476 / (2 * PI() / 360), 'Eversong Woods - South GY'), +(@GGUID+6, 0, 5905.02, -5670.85, 215.54, 0.305099248886108398 / (2 * PI() / 360), 'Eversong Woods - Far South GY'), +(@GGUID+7, 0, 6197.66, -4335.91, 58.1032, 0.049214273691177368 / (2 * PI() / 360), 'Eversong Woods - Fairbreeze Village GY'), +(@GGUID+8, 0, 7217.1484, -4345.8438, 118.03519, 0.707789361476898193 / (2 * PI() / 360), 'Eversong Woods - Central GY'), +(@GGUID+9, 0, 7569.73, -5170.35, 102.914, 5.989184379577636718 / (2 * PI() / 360), 'Eversong Woods - Farstrider Hold GY'), +(@GGUID+10, 0, 7997.83, -4469.37, 26.8877, 5.802923202514648437 / (2 * PI() / 360), 'Eversong Woods - Dawnstar Spire GY'); From bc8573210baa81ef44783b6036cc322ab4e11348 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sun, 19 Apr 2026 11:23:11 +0300 Subject: [PATCH 072/175] DB/Zul'Aman: Added graveyards (#31799) --- .../world/master/2026_04_19_00_world.sql | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 sql/updates/world/master/2026_04_19_00_world.sql diff --git a/sql/updates/world/master/2026_04_19_00_world.sql b/sql/updates/world/master/2026_04_19_00_world.sql new file mode 100644 index 0000000000000..d3e41589a0ffc --- /dev/null +++ b/sql/updates/world/master/2026_04_19_00_world.sql @@ -0,0 +1,35 @@ +SET @CGUID := 11000766; + +SET @GGUID := 100120; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+6; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 0, 15947, 16193, '0', 0, 0, 0, 0, 4322.298828125, -5850.21533203125, 316.27362060546875, 0, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384), -- Spirit Healer (Area: Revantusk Sedge - Difficulty: 0) +(@CGUID+1, 6491, 0, 15947, 16586, '0', 0, 0, 0, 0, 3785.23095703125, -6570.1162109375, 278.759765625, 6.261571884155273437, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384), -- Spirit Healer (Area: Torntusk Overlook - Difficulty: 0) +(@CGUID+2, 6491, 0, 15947, 16183, '0', 0, 0, 0, 0, 4016.4072265625, -7884.48974609375, 138.60888671875, 0.284975796937942504, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384), -- Spirit Healer (Area: Amani\'Zar Village - Difficulty: 0) +(@CGUID+3, 6491, 0, 15947, 16197, '0', 0, 0, 0, 0, 4895.703125, -7722.64599609375, 25.20861625671386718, 4.344826221466064453, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384), -- Spirit Healer (Area: Leech Bog - Difficulty: 0) +(@CGUID+4, 6491, 0, 15947, 16418, '0', 0, 0, 0, 0, 6311.267578125, -7594.8994140625, 110.4436492919921875, 5.562023639678955078, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384), -- Spirit Healer (Area: Shadebasin Watch - Difficulty: 0) +(@CGUID+5, 6491, 0, 15947, 16203, '0', 0, 0, 0, 0, 6896.072265625, -7908.24462890625, 18.76618385314941406, 5.394932746887207031, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384), -- Spirit Healer (Area: Camp Stonewash - Difficulty: 0) +(@CGUID+6, 6491, 0, 15947, 16202, '0', 0, 0, 0, 0, 6686.62158203125, -6895.94970703125, 228.8734283447265625, 3.161827325820922851, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66384); -- Spirit Healer (Area: Witherbark Bluffs - Difficulty: 0) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+6; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 15947, 'Zul\'Aman - Revantusk Sedge'), +(@GGUID+1, 15947, 'Zul\'Aman - Torntusk Overlook'), +(@GGUID+2, 15947, 'Zul\'Aman - Amani\'Zar Village'), +(@GGUID+3, 15947, 'Zul\'Aman - Leech Bog'), +(@GGUID+4, 15947, 'Zul\'Aman - Shadebasin Watch'), +(@GGUID+5, 15947, 'Zul\'Aman - Camp Stonewash'), +(@GGUID+6, 15947, 'Zul\'Aman - Witherbark Bluffs'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+6; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 0, 4327.963, -5850.1235, 315.71902, 3.139775 / (2 * PI() / 360), 'Zul\'Aman - Revantusk Sedge - GY'), +(@GGUID+1, 0, 3790.0547, -6569.9673, 278.44855, 3.119978 / (2 * PI() / 360), 'Zul\'Aman - Torntusk Overlook - GY'), +(@GGUID+2, 0, 4020.1667, -7882.382, 137.26036, 3.566720 / (2 * PI() / 360), 'Zul\'Aman - Amani\'Zar Village - GY'), +(@GGUID+3, 0, 4893.7847, -7728.405, 24.079035, 1.247167 / (2 * PI() / 360), 'Zul\'Aman - Leech Bog - GY'), +(@GGUID+4, 0, 6316.858, -7599.759, 109.01029, 2.394900 / (2 * PI() / 360), 'Zul\'Aman - Shadebasin Watch - GY'), +(@GGUID+5, 0, 6900.098, -7911.436, 17.159529, 2.420027 / (2 * PI() / 360), 'Zul\'Aman - Camp Stonewash - GY'), +(@GGUID+6, 0, 6680.788, -6894.6562, 228.4579, 6.124285 / (2 * PI() / 360), 'Zul\'Aman - Witherbark Bluffs - GY'); From a06e4f828902a0fc594dbd1abcb7f8478e63816b Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sun, 19 Apr 2026 11:44:33 +0300 Subject: [PATCH 073/175] DB/Harandar: Added graveyards (#31802) --- ...4_19_01_world.sql\342\200\216\342\200\216" | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 "sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" diff --git "a/sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" "b/sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" new file mode 100644 index 0000000000000..423cbdaa94b55 --- /dev/null +++ "b/sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" @@ -0,0 +1,50 @@ +SET @CGUID := 11000773; + +SET @GGUID := 100127; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+11; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 2694, 15355, 15936, '0', 0, 0, 0, 0, -27.244791030883789, -1053.673583984375, 833.57562255859375, 0.833971023559570312, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Vale of Mists - Difficulty: 0) +(@CGUID+1, 6491, 2694, 15355, 15919, '0', 0, 0, 0, 0, -601.53302001953125, -1082.625, 691.46820068359375, 4.485179901123046875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Rift of Aln - Difficulty: 0) +(@CGUID+2, 6491, 2694, 15355, 15918, '0', 0, 0, 0, 0, -915.6805419921875, -1994.482666015625, 973.13519287109375, 1.452231884002685546, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: The Grudge Pit - Difficulty: 0) +(@CGUID+3, 6491, 2694, 15355, 15922, '0', 0, 0, 0, 0, -180.078125, -1757.5399169921875, 1046.0924072265625, 3.823839187622070312, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Amirdrassil Roots - Difficulty: 0) +(@CGUID+4, 6491, 2694, 15355, 15924, '0', 0, 0, 0, 0, 1069.232666015625, -1232.2117919921875, 1071.973876953125, 3.327277421951293945, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Har\'kuai - Difficulty: 0) +(@CGUID+5, 6491, 2694, 15355, 15926, '0', 0, 0, 0, 0, 1019.31597900390625, -90.6180572509765625, 1211.1806640625, 4.397915363311767578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Fungal Cleft - Difficulty: 0) +(@CGUID+6, 6491, 2694, 15355, 16583, '0', 0, 0, 0, 0, 1294.6458740234375, 655.46527099609375, 1349.7320556640625, 2.389351844787597656, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Nai\'theren Grotto - Difficulty: 0) +(@CGUID+7, 6491, 2694, 15355, 15930, '0', 0, 0, 0, 0, -5.49652767181396484, 715.40106201171875, 1204.791015625, 4.418189525604248046, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Den of Echoes - Difficulty: 0) +(@CGUID+8, 6491, 2694, 15355, 15932, '0', 0, 0, 0, 0, -553.8211669921875, 1039.8646240234375, 1260.7052001953125, 3.541134357452392578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Har\'alnor - Difficulty: 0) +(@CGUID+9, 6491, 2694, 15355, 15934, '0', 0, 0, 0, 0, -1346.77783203125, 1436.625, 1117.765625, 4.209364891052246093, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: The Tangleknot - Difficulty: 0) +(@CGUID+10, 6491, 2694, 15355, 15931, '0', 0, 0, 0, 0, -1075.48095703125, 182.9930572509765625, 1173.6124267578125, 0.524458467960357666, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Fungara Village - Difficulty: 0) +(@CGUID+11, 6491, 2694, 15355, 16401, '0', 0, 0, 0, 0, -439.223968505859375, 120.9670181274414062, 1095.1474609375, 4.397915363311767578, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Spirit Healer (Area: Ahl\'ua Wetland - Difficulty: 0) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+11; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 15355, 'Harandar - Vale of Mists'), +(@GGUID+1, 15355, 'Harandar - Rift of Aln'), +(@GGUID+2, 15355, 'Harandar - The Grudge Pit'), +(@GGUID+3, 15355, 'Harandar - Amirdrassil Roots'), +(@GGUID+4, 15355, 'Harandar - Har\'kuai'), +(@GGUID+5, 15355, 'Harandar - Fungal Cleft'), +(@GGUID+6, 15355, 'Harandar - Nai\'theren Grotto'), +(@GGUID+7, 15355, 'Harandar - Den of Echoes'), +(@GGUID+8, 15355, 'Harandar - Har\'alnor'), +(@GGUID+9, 15355, 'Harandar - The Tangleknot'), +(@GGUID+10, 15355, 'Harandar - Fungara Village'), +(@GGUID+11, 15355, 'Harandar - Ahl\'ua Wetland'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+11; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 2694, -24.097223, -1049.9358, 832.8518, 3.989635 / (2 * PI() / 360), 'Harandar - Vale of Mists - GY'), +(@GGUID+1, 2694, -601.48267, -1085.4635, 690.5884, 1.354963 / (2 * PI() / 360), 'Harandar - Rift of Aln - GY'), +(@GGUID+2, 2694, -914.8941, -1988.0521, 971.7842, 4.589202 / (2 * PI() / 360), 'Harandar - The Grudge Pit - GY'), +(@GGUID+3, 2694, -184.98438, -1762.408, 1044.9977, 0.746800 / (2 * PI() / 360), 'Harandar - Amirdrassil Roots - GY'), +(@GGUID+4, 2694, 1063.7743, -1233.2778, 1070.9078, 0.136646 / (2 * PI() / 360), 'Harandar - Har\'kuai - GY'), +(@GGUID+5, 2694, 1017.7344, -97.829865, 1210.1818, 1.312315 / (2 * PI() / 360), 'Harandar - Fungal Cleft - GY'), +(@GGUID+6, 2694, 1291.0469, 657.8559, 1349.154, 5.585413 / (2 * PI() / 360), 'Harandar - Nai\'theren Grotto - GY'), +(@GGUID+7, 2694, -7.326389, 710.4132, 1204.3298, 1.226624 / (2 * PI() / 360), 'Harandar - Den of Echoes - GY'), +(@GGUID+8, 2694, -558.434, 1037.8629, 1259.4742, 0.407112 / (2 * PI() / 360), 'Harandar - Har\'alnor - GY'), +(@GGUID+9, 2694, -1348.6198, 1431.4601, 1117.3082, 1.221099 / (2 * PI() / 360), 'Harandar - The Tangleknot - GY'), +(@GGUID+10, 2694, -1073.1858, 185.0625, 1172.3722, 3.833610 / (2 * PI() / 360), 'Harandar - Fungara Village - GY'), +(@GGUID+11, 2694, -440.5816, 116.30556, 1094.4996, 1.277388 / (2 * PI() / 360), 'Harandar - Ahl\'ua Wetland - GY'); From 3aa2ac265460ca54eb9e04045ee6b9c06885965c Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sun, 19 Apr 2026 12:04:37 +0300 Subject: [PATCH 074/175] DB/Voidstorm: Added graveyards (#31801) --- .../2026_04_19_02_world.sql\342\200\216" | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 "sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" diff --git "a/sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" "b/sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" new file mode 100644 index 0000000000000..b17435e12699c --- /dev/null +++ "b/sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" @@ -0,0 +1,29 @@ +SET @CGUID := 11000785; + +SET @GGUID := 100139; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+4; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 2771, 15458, 15458, '0', 0, 0, 0, 0, 1593.9947509765625, -1172.859375, -177.20916748046875, 3.897336483001708984, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Voidstorm - Difficulty: 0) +(@CGUID+1, 6491, 2771, 15458, 15951, '0', 0, 0, 0, 0, 912.73089599609375, -750.0625, -175.531387329101562, 3.714858770370483398, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: The Howling Ridge - Difficulty: 0) +(@CGUID+2, 6491, 2771, 15458, 15458, '0', 0, 0, 0, 0, 1654.2899169921875, 500.239593505859375, -185.013275146484375, 3.932289361953735351, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: Voidstorm - Difficulty: 0) +(@CGUID+3, 6491, 2771, 15458, 15949, '0', 0, 0, 0, 0, 1662.6771240234375, 1442.3680419921875, 0.66917884349822998, 4.633355140686035156, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Spirit Healer (Area: The Ingress - Difficulty: 0) +(@CGUID+4, 6491, 2771, 15458, 15950, '0', 0, 0, 0, 0, 541.91143798828125, 674.857666015625, -276.0716552734375, 3.932289361953735351, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Spirit Healer (Area: Locus Point - Difficulty: 0) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+4; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 15458, 'Voidstorm - South'), +(@GGUID+1, 15458, 'Voidstorm - The Howling Ridge'), +(@GGUID+2, 15458, 'Voidstorm - Central'), +(@GGUID+3, 15458, 'Voidstorm - The Ingress'), +(@GGUID+4, 15458, 'Voidstorm - Locus Point'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+4; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 2771, 1587.07, -1179.55, -177.972, 0.777699 / (2 * PI() / 360), 'Voidstorm - South - GY'), +(@GGUID+1, 2771, 905.922, -754.808, -177.127, 0.619766 / (2 * PI() / 360), 'Voidstorm - The Howling Ridge - GY'), +(@GGUID+2, 2771, 1647.85, 493.361, -186.453, 0.815430 / (2 * PI() / 360), 'Voidstorm - Central - GY'), +(@GGUID+3, 2771, 1662.43, 1427.18, -0.0721218, 1.542986 / (2 * PI() / 360), 'Voidstorm - The Ingress - GY'), +(@GGUID+4, 2771, 537.378, 669.594, -277.217, 0.857011 / (2 * PI() / 360), 'Voidstorm - Locus Point - GY'); From 641fbfc841db797f4f22a743c093b782ced1f129 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 19 Apr 2026 11:53:30 +0200 Subject: [PATCH 075/175] Core/PacketIO: Add missing SMSG_DISPLAY_PLAYER_CHOICE bit --- .../updates/world/master/2026_04_19_01_world.sql | 0 .../updates/world/master/2026_04_19_02_world.sql | 0 sql/updates/world/master/2026_04_19_03_world.sql | 1 + src/server/game/Entities/Player/Player.cpp | 1 + src/server/game/Globals/ObjectMgr.cpp | 5 +++-- src/server/game/Globals/PlayerChoice.h | 1 + src/server/game/Handlers/TraitHandler.cpp | 2 +- src/server/game/Server/Packets/PacketUtilities.h | 7 +++---- src/server/game/Server/Packets/QuestPackets.cpp | 1 + src/server/game/Server/Packets/QuestPackets.h | 1 + 10 files changed, 12 insertions(+), 7 deletions(-) rename "sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" => sql/updates/world/master/2026_04_19_01_world.sql (100%) rename "sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" => sql/updates/world/master/2026_04_19_02_world.sql (100%) create mode 100644 sql/updates/world/master/2026_04_19_03_world.sql diff --git "a/sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" b/sql/updates/world/master/2026_04_19_01_world.sql similarity index 100% rename from "sql/updates/world/master/2026_04_19_01_world.sql\342\200\216\342\200\216" rename to sql/updates/world/master/2026_04_19_01_world.sql diff --git "a/sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" b/sql/updates/world/master/2026_04_19_02_world.sql similarity index 100% rename from "sql/updates/world/master/2026_04_19_02_world.sql\342\200\216" rename to sql/updates/world/master/2026_04_19_02_world.sql diff --git a/sql/updates/world/master/2026_04_19_03_world.sql b/sql/updates/world/master/2026_04_19_03_world.sql new file mode 100644 index 0000000000000..45fd6ec0dbf8a --- /dev/null +++ b/sql/updates/world/master/2026_04_19_03_world.sql @@ -0,0 +1 @@ +ALTER TABLE `playerchoice` ADD `RequiresSelection` tinyint(1) NOT NULL DEFAULT 0 AFTER `ForceDontShowChoicesAsList`; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e837c7e71e38b..6700d3ea56acf 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -30179,6 +30179,7 @@ void Player::SendPlayerChoice(ObjectGuid sender, int32 choiceId) displayPlayerChoice.KeepOpenAfterChoice = playerChoice->KeepOpenAfterChoice; displayPlayerChoice.ShowChoicesAsList = playerChoice->ShowChoicesAsList; displayPlayerChoice.ForceDontShowChoicesAsList = playerChoice->ForceDontShowChoicesAsList; + displayPlayerChoice.RequiresSelection = playerChoice->RequiresSelection; for (std::size_t i = 0; i < playerChoice->Responses.size() && (!playerChoice->MaxResponses || displayPlayerChoice.Responses.size() < *playerChoice->MaxResponses); ++i) { diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 38059da292902..df747a0ed6507 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -11045,7 +11045,7 @@ void ObjectMgr::LoadPlayerChoices() _playerChoices.clear(); QueryResult choices = WorldDatabase.Query("SELECT ChoiceId, UiTextureKitId, SoundKitId, CloseSoundKitId, Duration, Question, PendingChoiceText, " - "InfiniteRange, HideWarboardHeader, KeepOpenAfterChoice, ShowChoicesAsList, ForceDontShowChoicesAsList, MaxResponses, ScriptName FROM playerchoice"); + "InfiniteRange, HideWarboardHeader, KeepOpenAfterChoice, ShowChoicesAsList, ForceDontShowChoicesAsList, RequiresSelection, MaxResponses, ScriptName FROM playerchoice"); if (!choices) { TC_LOG_INFO("server.loading", ">> Loaded 0 player choices. DB table `playerchoice` is empty."); @@ -11064,7 +11064,7 @@ void ObjectMgr::LoadPlayerChoices() do { DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(ResultSet, (ChoiceId)(UiTextureKitId)(SoundKitId)(CloseSoundKitId)(Duration)(Question)(PendingChoiceText) - (InfiniteRange)(HideWarboardHeader)(KeepOpenAfterChoice)(ShowChoicesAsList)(ForceDontShowChoicesAsList)(MaxResponses)(ScriptName)) fields { *choices }; + (InfiniteRange)(HideWarboardHeader)(KeepOpenAfterChoice)(ShowChoicesAsList)(ForceDontShowChoicesAsList)(RequiresSelection)(MaxResponses)(ScriptName)) fields { *choices }; int32 choiceId = fields.ChoiceId().GetInt32(); @@ -11082,6 +11082,7 @@ void ObjectMgr::LoadPlayerChoices() choice.KeepOpenAfterChoice = fields.KeepOpenAfterChoice().GetBool(); choice.ShowChoicesAsList = fields.ShowChoicesAsList().GetBool(); choice.ForceDontShowChoicesAsList = fields.ForceDontShowChoicesAsList().GetBool(); + choice.RequiresSelection = fields.RequiresSelection().GetBool(); choice.MaxResponses = fields.MaxResponses().GetUInt32OrNull(); choice.ScriptId = GetScriptId(fields.ScriptName().GetStringView()); diff --git a/src/server/game/Globals/PlayerChoice.h b/src/server/game/Globals/PlayerChoice.h index 17504586b3582..942c32b59c88e 100644 --- a/src/server/game/Globals/PlayerChoice.h +++ b/src/server/game/Globals/PlayerChoice.h @@ -119,6 +119,7 @@ struct PlayerChoice bool KeepOpenAfterChoice = false; bool ShowChoicesAsList = false; bool ForceDontShowChoicesAsList = false; + bool RequiresSelection = false; Optional MaxResponses; diff --git a/src/server/game/Handlers/TraitHandler.cpp b/src/server/game/Handlers/TraitHandler.cpp index f26d04c75b64c..68cae5ccd89ed 100644 --- a/src/server/game/Handlers/TraitHandler.cpp +++ b/src/server/game/Handlers/TraitHandler.cpp @@ -201,7 +201,7 @@ void WorldSession::HandleClassTalentsRequestNewConfig(WorldPackets::Traits::Clas void WorldSession::HandleClassTalentsRenameConfig(WorldPackets::Traits::ClassTalentsRenameConfig& classTalentsRenameConfig) { - _player->RenameTraitConfig(classTalentsRenameConfig.ConfigID, classTalentsRenameConfig.Name.Move()); + _player->RenameTraitConfig(classTalentsRenameConfig.ConfigID, std::move(classTalentsRenameConfig.Name)); } void WorldSession::HandleClassTalentsDeleteConfig(WorldPackets::Traits::ClassTalentsDeleteConfig const& classTalentsDeleteConfig) diff --git a/src/server/game/Server/Packets/PacketUtilities.h b/src/server/game/Server/Packets/PacketUtilities.h index 97e0870264862..235adfb38e379 100644 --- a/src/server/game/Server/Packets/PacketUtilities.h +++ b/src/server/game/Server/Packets/PacketUtilities.h @@ -84,10 +84,9 @@ namespace WorldPackets char const* c_str() const { return _storage.c_str(); } operator std::string_view() const { return _storage; } - operator std::string&() { return _storage; } - operator std::string const&() const { return _storage; } - - std::string&& Move() { return std::move(_storage); } + operator std::string&() & { return _storage; } + operator std::string const&() const & { return _storage; } + operator std::string&&() && { return std::move(_storage); } friend ByteBuffer& operator>>(ByteBuffer& data, String& value) { diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index ed9eb27807cdd..8f1d5d5bb4c2d 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -852,6 +852,7 @@ WorldPacket const* DisplayPlayerChoice::Write() _worldPacket << Bits<1>(KeepOpenAfterChoice); _worldPacket << Bits<1>(ShowChoicesAsList); _worldPacket << Bits<1>(ForceDontShowChoicesAsList); + _worldPacket << Bits<1>(RequiresSelection); _worldPacket.FlushBits(); for (PlayerChoiceResponse const& response : Responses) diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 08ec1c6af9288..fe3d79ab8af70 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -801,6 +801,7 @@ namespace WorldPackets bool KeepOpenAfterChoice = false; bool ShowChoicesAsList = false; bool ForceDontShowChoicesAsList = false; + bool RequiresSelection = false; }; class ChoiceResponse final : public ClientPacket From 780174a5d52167b701d7f21b44998b160ee4d702 Mon Sep 17 00:00:00 2001 From: Naddley <64811442+Naddley@users.noreply.github.com> Date: Sun, 19 Apr 2026 13:02:00 +0200 Subject: [PATCH 076/175] Scripts/Silvermoon: Implement Intro skip for Midnight (#31804) --- .../world/master/2026_04_19_04_world.sql | 10 ++++ .../QuelThalas/quel_thalas_script_loader.cpp | 6 +++ .../zone_silvermoon_city_midnight.cpp | 53 +++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 sql/updates/world/master/2026_04_19_04_world.sql create mode 100644 src/server/scripts/QuelThalas/zone_silvermoon_city_midnight.cpp diff --git a/sql/updates/world/master/2026_04_19_04_world.sql b/sql/updates/world/master/2026_04_19_04_world.sql new file mode 100644 index 0000000000000..33c8b0ea6cad8 --- /dev/null +++ b/sql/updates/world/master/2026_04_19_04_world.sql @@ -0,0 +1,10 @@ +-- SpellScript +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_silvermoon_skip_midnight_intro'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(1278767, 'spell_silvermoon_skip_midnight_intro'); + +-- Serverside Quest +DELETE FROM `quest_template` WHERE `ID` IN (89196,90806); +INSERT INTO `quest_template` (`ID`, `QuestType`, `QuestPackageID`, `ContentTuningID`, `QuestSortID`, `QuestInfoID`, `SuggestedGroupNum`, `RewardNextQuest`, `RewardXPDifficulty`, `RewardXPMultiplier`, `RewardMoneyDifficulty`, `RewardMoneyMultiplier`, `RewardBonusMoney`, `RewardDisplaySpell1`, `RewardDisplaySpell2`, `RewardDisplaySpell3`, `RewardSpell`, `RewardHonor`, `RewardKillHonor`, `StartItem`, `RewardArtifactXPDifficulty`, `RewardArtifactXPMultiplier`, `RewardArtifactCategoryID`, `Flags`, `FlagsEx`, `FlagsEx2`, `FlagsEx3`, `RewardItem1`, `RewardAmount1`, `RewardItem2`, `RewardAmount2`, `RewardItem3`, `RewardAmount3`, `RewardItem4`, `RewardAmount4`, `ItemDrop1`, `ItemDropQuantity1`, `ItemDrop2`, `ItemDropQuantity2`, `ItemDrop3`, `ItemDropQuantity3`, `ItemDrop4`, `ItemDropQuantity4`, `RewardChoiceItemID1`, `RewardChoiceItemQuantity1`, `RewardChoiceItemDisplayID1`, `RewardChoiceItemID2`, `RewardChoiceItemQuantity2`, `RewardChoiceItemDisplayID2`, `RewardChoiceItemID3`, `RewardChoiceItemQuantity3`, `RewardChoiceItemDisplayID3`, `RewardChoiceItemID4`, `RewardChoiceItemQuantity4`, `RewardChoiceItemDisplayID4`, `RewardChoiceItemID5`, `RewardChoiceItemQuantity5`, `RewardChoiceItemDisplayID5`, `RewardChoiceItemID6`, `RewardChoiceItemQuantity6`, `RewardChoiceItemDisplayID6`, `POIContinent`, `POIx`, `POIy`, `POIPriority`, `RewardTitle`, `RewardArenaPoints`, `RewardSkillLineID`, `RewardNumSkillUps`, `PortraitGiver`, `PortraitGiverMount`, `PortraitGiverModelSceneID`, `PortraitTurnIn`, `RewardFactionID1`, `RewardFactionValue1`, `RewardFactionOverride1`, `RewardFactionCapIn1`, `RewardFactionID2`, `RewardFactionValue2`, `RewardFactionOverride2`, `RewardFactionCapIn2`, `RewardFactionID3`, `RewardFactionValue3`, `RewardFactionOverride3`, `RewardFactionCapIn3`, `RewardFactionID4`, `RewardFactionValue4`, `RewardFactionOverride4`, `RewardFactionCapIn4`, `RewardFactionID5`, `RewardFactionValue5`, `RewardFactionOverride5`, `RewardFactionCapIn5`, `RewardFactionFlags`, `RewardCurrencyID1`, `RewardCurrencyQty1`, `RewardCurrencyID2`, `RewardCurrencyQty2`, `RewardCurrencyID3`, `RewardCurrencyQty3`, `RewardCurrencyID4`, `RewardCurrencyQty4`, `AcceptedSoundKitID`, `CompleteSoundKitID`, `AreaGroupID`, `TimeAllowed`, `AllowableRaces`, `Expansion`, `ManagedWorldStateID`, `QuestSessionBonus`, `LogTitle`, `LogDescription`, `QuestDescription`, `AreaDescription`, `PortraitGiverText`, `PortraitGiverName`, `PortraitTurnInText`, `PortraitTurnInName`, `QuestCompletionLog`, `ResetByScheduler`, `VerifiedBuild`, `RewardFavor`) VALUES +(89196, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Selecting Midnight questzone', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0), +(90806, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 0x00000080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Completed Midnight Main Campaign', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0); diff --git a/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp b/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp index df7d68a978fdc..384bcfdccc1cf 100644 --- a/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp +++ b/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp @@ -17,6 +17,9 @@ // This is where scripts' loading functions should be declared: +// Silvermoon +void AddSC_silvermoon_city_midnight(); + // Murder Row void AddSC_boss_kystia_manaheart(); void AddSC_instance_murder_row(); @@ -25,6 +28,9 @@ void AddSC_instance_murder_row(); // void Add${NameOfDirectory}Scripts() void AddQuelThalasScripts() { + // Silvermoon + AddSC_silvermoon_city_midnight(); + // Murder Row AddSC_boss_kystia_manaheart(); AddSC_instance_murder_row(); diff --git a/src/server/scripts/QuelThalas/zone_silvermoon_city_midnight.cpp b/src/server/scripts/QuelThalas/zone_silvermoon_city_midnight.cpp new file mode 100644 index 0000000000000..466e0fc4d1075 --- /dev/null +++ b/src/server/scripts/QuelThalas/zone_silvermoon_city_midnight.cpp @@ -0,0 +1,53 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "Player.h" +#include "ScriptMgr.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" + +namespace Scripts::QuelThalas::SilvermoonCityMidnight +{ +namespace Quests +{ + static constexpr uint32 CompleteMidnightCampaign = 90806; +} + +// 1278767 - [DNT] Skip Midnight Intro - Flag Campaign +class spell_silvermoon_skip_midnight_intro : public SpellScript +{ + void HandleHitTarget(SpellEffIndex /*effIndex*/) + { + // HACK: This should be rewarded after completing the Intro which is nyi atm. + if (Player* player = GetCaster()->ToPlayer()) + player->CompleteQuest(Quests::CompleteMidnightCampaign); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_silvermoon_skip_midnight_intro::HandleHitTarget, EFFECT_0, SPELL_EFFECT_COMPLETE_CAMPAIGN); + } +}; +} + +void AddSC_silvermoon_city_midnight() +{ + using namespace Scripts::QuelThalas::SilvermoonCityMidnight; + + // Spells + RegisterSpellScript(spell_silvermoon_skip_midnight_intro); +} From 8f4e7accb751d81527b413b6191bc01abeec88ee Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 20 Apr 2026 11:31:02 +0200 Subject: [PATCH 077/175] Core/Misc: Support arrays in RaceMask util --- .../game/Achievements/CriteriaHandler.cpp | 2 +- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Miscellaneous/RaceMask.h | 179 ++++++++++++------ 3 files changed, 124 insertions(+), 59 deletions(-) diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index d625bde8b9cff..ba00920afe9c0 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -125,7 +125,7 @@ bool CriteriaData::IsValid(Criteria const* criteria) criteria->ID, criteria->Entry->Type, DataType, ClassRace.Class); return false; } - if (!Trinity::RaceMask{ RACEMASK_ALL_PLAYABLE }.HasRace(ClassRace.Race)) + if (!RACEMASK_ALL_PLAYABLE.HasRace(ClassRace.Race)) { TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: {} Type: {}) for data type CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE ({}) contains a non-existing race in value2 ({}), ignored.", criteria->ID, criteria->Entry->Type, DataType, ClassRace.Race); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 3d9c6badc195b..3112fa284e454 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1873,7 +1873,7 @@ class TC_GAME_API Player final : public Unit, public GridObject static bool IsValidGender(uint8 Gender) { return Gender <= GENDER_FEMALE; } static bool IsValidClass(uint8 Class) { return ((1 << (Class - 1)) & CLASSMASK_ALL_PLAYABLE) != 0; } - static bool IsValidRace(uint8 Race) { return Trinity::RaceMask{ RACEMASK_ALL_PLAYABLE }.HasRace(Race); } + static bool IsValidRace(uint8 Race) { return RACEMASK_ALL_PLAYABLE.HasRace(Race); } /*********************************************************/ /*** SAVE SYSTEM ***/ diff --git a/src/server/game/Miscellaneous/RaceMask.h b/src/server/game/Miscellaneous/RaceMask.h index 0db0033b59dec..9b84694e114d3 100644 --- a/src/server/game/Miscellaneous/RaceMask.h +++ b/src/server/game/Miscellaneous/RaceMask.h @@ -19,6 +19,7 @@ #define TRINITYCORE_RACE_MASK_H #include "Define.h" +#include #include // EnumUtils: DESCRIBE THIS @@ -94,7 +95,7 @@ struct RaceMask constexpr bool HasRace(uint32 raceId) const { - return (RawValue & GetMaskForRace(raceId)) != 0; + return (RawValue & GetMaskForRace(raceId).RawValue) != 0; } static constexpr int32 GetRaceBit(uint32 raceId) @@ -149,10 +150,10 @@ struct RaceMask return -1; } - static constexpr T GetMaskForRace(uint32 raceId) + static constexpr RaceMask GetMaskForRace(uint32 raceId) { int32 raceBit = GetRaceBit(raceId); - return raceBit >= 0 && uint32(raceBit) < sizeof(T) * 8 ? (T(1) << raceBit) : T(0); + return { .RawValue = raceBit >= 0 && uint32(raceBit) < sizeof(T) * 8 ? (T(1) << raceBit) : T(0) }; } constexpr bool IsEmpty() const { return RawValue == T(0); } @@ -161,61 +162,125 @@ struct RaceMask constexpr RaceMask operator|(RaceMask right) const { return { RawValue | right.RawValue }; } constexpr RaceMask operator~() const { return { ~RawValue }; } }; + +template +struct RaceMask> +{ + static_assert(std::is_integral_v, "RaceMask must be integral"); + + std::array RawValue; + + constexpr bool HasRace(uint32 raceId) const + { + int32 raceBit = RaceMask::GetRaceBit(raceId); + return raceBit >= 0 && uint32(raceBit) < sizeof(T) * 8 * N + && (RawValue[raceBit / (sizeof(T) * 8)] & (T(1) << (raceBit % (sizeof(T) * 8)))) != T(0); + } + + static constexpr RaceMask GetMaskForRace(uint32 raceId) + { + RaceMask result = { }; + int32 raceBit = RaceMask::GetRaceBit(raceId); + if (raceBit >= 0 && uint32(raceBit) < sizeof(T) * 8 * N) + result.RawValue[raceBit / (sizeof(T) * 8)] = T(1) << (raceBit % (sizeof(T) * 8)); + return result; + } + + constexpr bool IsEmpty() const + { + for (T rawValue : RawValue) + if (rawValue != T(0)) + return false; + return true; + } + + constexpr RaceMask operator&(RaceMask right) const + { + RaceMask result = { }; + for (std::size_t i = 0; i < N; ++i) + result.RawValue[i] = RawValue[i] & right.RawValue[i]; + return result; + } + + constexpr RaceMask operator|(RaceMask right) const + { + RaceMask result = { }; + for (std::size_t i = 0; i < N; ++i) + result.RawValue[i] = RawValue[i] | right.RawValue[i]; + return result; + } + + constexpr RaceMask operator~() const + { + RaceMask result = { }; + for (std::size_t i = 0; i < N; ++i) + result.RawValue[i] = ~RawValue[i]; + return result; + } +}; } -inline constexpr Trinity::RaceMask RACEMASK_ALL_PLAYABLE = { std::integral_constant::GetMaskForRace(RACE_HUMAN) | - Trinity::RaceMask::GetMaskForRace(RACE_ORC) | - Trinity::RaceMask::GetMaskForRace(RACE_DWARF) | - Trinity::RaceMask::GetMaskForRace(RACE_NIGHTELF) | - Trinity::RaceMask::GetMaskForRace(RACE_UNDEAD_PLAYER) | - Trinity::RaceMask::GetMaskForRace(RACE_TAUREN) | - Trinity::RaceMask::GetMaskForRace(RACE_GNOME) | - Trinity::RaceMask::GetMaskForRace(RACE_TROLL) | - Trinity::RaceMask::GetMaskForRace(RACE_BLOODELF) | - Trinity::RaceMask::GetMaskForRace(RACE_DRAENEI) | - Trinity::RaceMask::GetMaskForRace(RACE_GOBLIN) | - Trinity::RaceMask::GetMaskForRace(RACE_WORGEN) | - Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_NEUTRAL) | - Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_HORDE) | - Trinity::RaceMask::GetMaskForRace(RACE_NIGHTBORNE) | - Trinity::RaceMask::GetMaskForRace(RACE_HIGHMOUNTAIN_TAUREN) | - Trinity::RaceMask::GetMaskForRace(RACE_VOID_ELF) | - Trinity::RaceMask::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) | - Trinity::RaceMask::GetMaskForRace(RACE_ZANDALARI_TROLL) | - Trinity::RaceMask::GetMaskForRace(RACE_KUL_TIRAN) | - Trinity::RaceMask::GetMaskForRace(RACE_DARK_IRON_DWARF) | - Trinity::RaceMask::GetMaskForRace(RACE_VULPERA) | - Trinity::RaceMask::GetMaskForRace(RACE_MAGHAR_ORC) | - Trinity::RaceMask::GetMaskForRace(RACE_MECHAGNOME) | - Trinity::RaceMask::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_DRACTHYR_HORDE) | - Trinity::RaceMask::GetMaskForRace(RACE_EARTHEN_DWARF_HORDE) | - Trinity::RaceMask::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_HARANIR_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_HARANIR_HORDE)>::value }; - -inline constexpr Trinity::RaceMask RACEMASK_NEUTRAL = { std::integral_constant::GetMaskForRace(RACE_PANDAREN_NEUTRAL)>::value }; - -inline constexpr Trinity::RaceMask RACEMASK_ALLIANCE = { std::integral_constant::GetMaskForRace(RACE_HUMAN) | - Trinity::RaceMask::GetMaskForRace(RACE_DWARF) | - Trinity::RaceMask::GetMaskForRace(RACE_NIGHTELF) | - Trinity::RaceMask::GetMaskForRace(RACE_GNOME) | - Trinity::RaceMask::GetMaskForRace(RACE_DRAENEI) | - Trinity::RaceMask::GetMaskForRace(RACE_WORGEN) | - Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_VOID_ELF) | - Trinity::RaceMask::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) | - Trinity::RaceMask::GetMaskForRace(RACE_KUL_TIRAN) | - Trinity::RaceMask::GetMaskForRace(RACE_DARK_IRON_DWARF) | - Trinity::RaceMask::GetMaskForRace(RACE_MECHAGNOME) | - Trinity::RaceMask::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE) | - Trinity::RaceMask::GetMaskForRace(RACE_HARANIR_ALLIANCE)>::value }; - -inline constexpr Trinity::RaceMask RACEMASK_HORDE = { std::integral_constant::value }; +template +inline constexpr Trinity::RaceMask RACEMASK_ALL_PLAYABLE_v = + Trinity::RaceMask::GetMaskForRace(RACE_HUMAN) | + Trinity::RaceMask::GetMaskForRace(RACE_ORC) | + Trinity::RaceMask::GetMaskForRace(RACE_DWARF) | + Trinity::RaceMask::GetMaskForRace(RACE_NIGHTELF) | + Trinity::RaceMask::GetMaskForRace(RACE_UNDEAD_PLAYER) | + Trinity::RaceMask::GetMaskForRace(RACE_TAUREN) | + Trinity::RaceMask::GetMaskForRace(RACE_GNOME) | + Trinity::RaceMask::GetMaskForRace(RACE_TROLL) | + Trinity::RaceMask::GetMaskForRace(RACE_BLOODELF) | + Trinity::RaceMask::GetMaskForRace(RACE_DRAENEI) | + Trinity::RaceMask::GetMaskForRace(RACE_GOBLIN) | + Trinity::RaceMask::GetMaskForRace(RACE_WORGEN) | + Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_NEUTRAL) | + Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_HORDE) | + Trinity::RaceMask::GetMaskForRace(RACE_NIGHTBORNE) | + Trinity::RaceMask::GetMaskForRace(RACE_HIGHMOUNTAIN_TAUREN) | + Trinity::RaceMask::GetMaskForRace(RACE_VOID_ELF) | + Trinity::RaceMask::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) | + Trinity::RaceMask::GetMaskForRace(RACE_ZANDALARI_TROLL) | + Trinity::RaceMask::GetMaskForRace(RACE_KUL_TIRAN) | + Trinity::RaceMask::GetMaskForRace(RACE_DARK_IRON_DWARF) | + Trinity::RaceMask::GetMaskForRace(RACE_VULPERA) | + Trinity::RaceMask::GetMaskForRace(RACE_MAGHAR_ORC) | + Trinity::RaceMask::GetMaskForRace(RACE_MECHAGNOME) | + Trinity::RaceMask::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_DRACTHYR_HORDE) | + Trinity::RaceMask::GetMaskForRace(RACE_EARTHEN_DWARF_HORDE) | + Trinity::RaceMask::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_HARANIR_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_HARANIR_HORDE); + +template +inline constexpr Trinity::RaceMask RACEMASK_NEUTRAL_v = Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_NEUTRAL); + +template +inline constexpr Trinity::RaceMask RACEMASK_ALLIANCE_v = + Trinity::RaceMask::GetMaskForRace(RACE_HUMAN) | + Trinity::RaceMask::GetMaskForRace(RACE_DWARF) | + Trinity::RaceMask::GetMaskForRace(RACE_NIGHTELF) | + Trinity::RaceMask::GetMaskForRace(RACE_GNOME) | + Trinity::RaceMask::GetMaskForRace(RACE_DRAENEI) | + Trinity::RaceMask::GetMaskForRace(RACE_WORGEN) | + Trinity::RaceMask::GetMaskForRace(RACE_PANDAREN_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_VOID_ELF) | + Trinity::RaceMask::GetMaskForRace(RACE_LIGHTFORGED_DRAENEI) | + Trinity::RaceMask::GetMaskForRace(RACE_KUL_TIRAN) | + Trinity::RaceMask::GetMaskForRace(RACE_DARK_IRON_DWARF) | + Trinity::RaceMask::GetMaskForRace(RACE_MECHAGNOME) | + Trinity::RaceMask::GetMaskForRace(RACE_DRACTHYR_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_EARTHEN_DWARF_ALLIANCE) | + Trinity::RaceMask::GetMaskForRace(RACE_HARANIR_ALLIANCE); + +template +inline constexpr Trinity::RaceMask RACEMASK_HORDE_v = RACEMASK_ALL_PLAYABLE_v & ~(RACEMASK_NEUTRAL_v | RACEMASK_ALLIANCE_v); + +inline constexpr Trinity::RaceMask RACEMASK_ALL_PLAYABLE = RACEMASK_ALL_PLAYABLE_v; +inline constexpr Trinity::RaceMask RACEMASK_NEUTRAL = RACEMASK_NEUTRAL_v; +inline constexpr Trinity::RaceMask RACEMASK_ALLIANCE = RACEMASK_ALLIANCE_v; +inline constexpr Trinity::RaceMask RACEMASK_HORDE = RACEMASK_HORDE_v; #endif // TRINITYCORE_RACE_MASK_H From 20a27b129916cb12ed9d93d23fd1081bbb155bcc Mon Sep 17 00:00:00 2001 From: Naddley Date: Mon, 20 Apr 2026 17:16:40 +0200 Subject: [PATCH 078/175] DB/EversongWoods: Implement Quest: "Harandar" --- .../world/master/2026_04_20_00_world.sql | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 sql/updates/world/master/2026_04_20_00_world.sql diff --git a/sql/updates/world/master/2026_04_20_00_world.sql b/sql/updates/world/master/2026_04_20_00_world.sql new file mode 100644 index 0000000000000..9b4920b379e73 --- /dev/null +++ b/sql/updates/world/master/2026_04_20_00_world.sql @@ -0,0 +1,89 @@ +SET @CGUID := 11000790; + +SET @NPCTEXTID := 610017; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+1; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 236704, 0, 15968, 15995, '0', 26248, 0, 0, 1, 7307.37060546875, -4130.1474609375, 89.17822265625, 6.151532649993896484, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838), -- Orweyna (Area: Fairbreeze Village - Difficulty: 0) CreateObject1 (Auras: ) +(@CGUID+1, 240715, 0, 15968, 15995, '0', 26248, 0, 0, 1, 7308.93994140625, -4128.76416015625, 89.17822265625, 4.997533798217773437, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 66838); -- Halduron Brightwing (Area: Fairbreeze Village - Difficulty: 0) CreateObject1 +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+1; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); -- Orweyna + +-- Template +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=240715; -- Halduron Brightwing +UPDATE `creature_template` SET `faction`=35, `npcflag`=281474976710659, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=236704; -- Orweyna + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=236704 AND `DifficultyID`=0); -- 236704 (Orweyna) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3313, `StaticFlags1`=0x10000000, `VerifiedBuild`=66838 WHERE (`Entry`=240715 AND `DifficultyID`=0); -- 240715 (Halduron Brightwing) - CanSwim + +-- Phase +DELETE FROM `phase_name` WHERE `ID` = 26248; +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(26248, 'Cosmetic - See Orweyna and Halduron at Fairbreeze Village'); + +DELETE FROM `phase_area` WHERE `PhaseId` = 26248; +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(15995, 26248, 'See Orweyna and Halduron at Fairbreeze Village'); + +-- Conversation +DELETE FROM `conversation_template` WHERE `Id`=31006; +INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES +(31006, 85399, 0, 66838); + +DELETE FROM `conversation_actors` WHERE (`ConversationId`=31006 AND `Idx`=0); +INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `ConversationActorGuid`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES +(31006, 105463, 11000754, 0, 0, 0, 0, 0, 66838); -- Full: 0x203CC40000E642C0043900000065B6B7 Creature/0 R3889/S276736 Map: 0 (Eastern Kingdoms) Entry: 235787 (Lor'themar Theron) Low: 6665911 + +DELETE FROM `conversation_line_template` WHERE `Id` IN (85400, 85399); +INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES +(85400, 0, 0, 0, 0, 66838), +(85399, 0, 0, 0, 0, 66838); + +-- Quest +DELETE FROM `quest_details` WHERE `ID`=86899; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(86899, 1, 0, 0, 0, 0, 0, 0, 0, 66838); -- The Root Cause + +UPDATE `quest_description_conditional` SET `VerifiedBuild`=66838 WHERE (`QuestId`=93057 AND `PlayerConditionId`=923 AND `QuestgiverCreatureId`=0 AND `locale`='enUS'); + +DELETE FROM `creature_queststarter` WHERE (`id`=236704 AND `quest`=86899); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(236704, 86899, 66838); -- The Root Cause offered by Orweyna + +DELETE FROM `quest_template_addon` WHERE `ID` = 86899; +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `BreadcrumbForQuestId`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(86899, 0, 0, 0, 89402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=240715 AND `MenuID`=39207); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(240715, 39207, 66838); -- Halduron Brightwing + +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+2; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 289841, 0, 0, 0, 0, 0, 0, 0, 66838), -- 240715 (Halduron Brightwing) +(@NPCTEXTID+1, 1, 0, 0, 0, 0, 0, 0, 0, 289840, 0, 0, 0, 0, 0, 0, 0, 66838), -- 240715 (Halduron Brightwing) +(@NPCTEXTID+2, 1, 0, 0, 0, 0, 0, 0, 0, 289843, 0, 0, 0, 0, 0, 0, 0, 66838); -- 240715 (Halduron Brightwing) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=39206 AND `TextID`=@NPCTEXTID+0) OR (`MenuID`=39207 AND `TextID`=@NPCTEXTID+1) OR (`MenuID`=39208 AND `TextID`=@NPCTEXTID+2); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(39206, @NPCTEXTID+0, 66838), -- 240715 (Halduron Brightwing) +(39207, @NPCTEXTID+1, 66838), -- 240715 (Halduron Brightwing) +(39208, @NPCTEXTID+2, 66838); -- 240715 (Halduron Brightwing) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=39206 AND `OptionID`=0) OR (`MenuID`=39207 AND `OptionID` IN (0,1)); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(39206, 133756, 0, 0, 'I\'d like to ask something else.', 0, 0, 0, 39207, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838), +(39207, 133754, 0, 0, 'Who are you?', 25092, 0, 0, 39206, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838), -- OptionBroadcastTextID: 25092 - 38470 - 47091 - 47632 - 62792 - 65124 - 79414 - 97339 - 153888 - 161428 - 166571 - 176081 - 185133 - 224837 - 263541 - 298152 +(39207, 133755, 1, 0, 'Why are you coming along?', 0, 0, 0, 39208, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); + +-- Harandar +SET @ENTRY := 89402; +INSERT IGNORE INTO `quest_template_addon` (`ID`) VALUES (@ENTRY); +UPDATE `quest_template_addon` SET `ScriptName` = 'SmartQuest' WHERE `ID` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 5 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 5, 0, 0, 47, 0, 100, 0, 0, 0, 0, 0, 0, 143, 31006, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On quest accepted - Player who accepted: Start conversation 31006', ''); From ed2a08dc707808caaf5f4b876620dcb510706f96 Mon Sep 17 00:00:00 2001 From: Ovahlord <18347559+Ovahlord@users.noreply.github.com> Date: Tue, 21 Apr 2026 15:17:31 +0200 Subject: [PATCH 079/175] Core/Spells: improve random radius calculation by reducing the chance of hitting the center the closer we get (#31811) * Core/Spells: improve random radius calculation by reducing the chance of lower values the closer we get to the center * Make GCC happy --- src/server/game/Spells/SpellInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 92c9cc47f9123..fd896373b23a8 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -802,7 +802,7 @@ float SpellEffectInfo::CalcRadius(WorldObject* caster /*= nullptr*/, SpellTarget if (target.GetTarget() == TARGET_DEST_CASTER_RANDOM || target.GetTarget() == TARGET_DEST_TARGET_RANDOM || target.GetTarget() == TARGET_DEST_DEST_RANDOM) - radius += (entry->RadiusMax - radius) * rand_norm(); + radius += (entry->RadiusMax - radius) * std::sqrt(rand_norm()); else if (radius == 0.0f) radius = entry->RadiusMax; From 4c14988578603719c2107ddff3801a4a640ce709 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 22 Apr 2026 20:20:11 +0200 Subject: [PATCH 080/175] Core: Updated to 12.0.5 --- sql/base/auth_database.sql | 19 +- sql/base/characters_database.sql | 178 ++++- .../auth/master/2026_04_22_00_auth.sql | 23 + .../master/2026_04_22_00_characters.sql | 207 +++++ .../master/2026_04_22_00_hotfixes.sql | 120 +++ .../Implementation/CharacterDatabase.cpp | 48 +- .../Implementation/CharacterDatabase.h | 2 + .../Implementation/HotfixDatabase.cpp | 54 +- .../Database/Implementation/HotfixDatabase.h | 1 + src/server/game/DataStores/DB2LoadInfo.h | 86 ++- src/server/game/DataStores/DB2Metadata.h | 283 ++++--- src/server/game/DataStores/DB2Stores.cpp | 6 +- src/server/game/DataStores/DB2Structure.h | 22 +- src/server/game/DataStores/DBCEnums.h | 31 +- src/server/game/Entities/Item/ItemTemplate.h | 1 + .../game/Entities/Object/BaseEntity.cpp | 1 - .../Entities/Object/Updates/UpdateFields.cpp | 480 ++++++------ .../Entities/Object/Updates/UpdateFields.h | 231 +++--- .../Object/Updates/WowCSEntityDefinitions.h | 94 ++- src/server/game/Entities/Player/Player.cpp | 130 +++- src/server/game/Entities/Player/Player.h | 2 +- src/server/game/Entities/Unit/Unit.cpp | 125 +++- src/server/game/Entities/Unit/Unit.h | 4 + src/server/game/Globals/ObjectMgr.cpp | 9 +- src/server/game/Guilds/Guild.h | 2 +- src/server/game/Guilds/GuildMgr.cpp | 3 +- src/server/game/Handlers/CharacterHandler.cpp | 8 +- src/server/game/Handlers/ItemHandler.cpp | 10 +- src/server/game/Handlers/MiscHandler.cpp | 4 +- src/server/game/Miscellaneous/RaceMask.h | 8 + src/server/game/Miscellaneous/SharedDefines.h | 122 +-- src/server/game/Quests/QuestDef.cpp | 2 +- src/server/game/Quests/QuestDef.h | 4 +- .../game/Server/Packets/CalendarPackets.h | 2 +- .../game/Server/Packets/CharacterPackets.cpp | 59 +- .../game/Server/Packets/CharacterPackets.h | 1 + .../game/Server/Packets/GuildPackets.cpp | 3 +- src/server/game/Server/Packets/GuildPackets.h | 2 +- .../game/Server/Packets/MovementPackets.cpp | 1 + .../game/Server/Packets/MovementPackets.h | 1 + .../game/Server/Packets/QuestPackets.cpp | 3 +- src/server/game/Server/Packets/QuestPackets.h | 2 +- .../game/Server/Packets/SpellPackets.cpp | 2 + src/server/game/Server/Packets/SpellPackets.h | 2 + .../Packets/TransmogrificationPackets.cpp | 2 + .../Packets/TransmogrificationPackets.h | 2 + src/server/game/Server/Packets/WhoPackets.cpp | 3 +- src/server/game/Server/Packets/WhoPackets.h | 2 +- src/server/game/Server/Protocol/Opcodes.cpp | 24 +- src/server/game/Server/Protocol/Opcodes.h | 706 +++++++++--------- .../game/Spells/Auras/SpellAuraDefines.h | 6 + .../game/Spells/Auras/SpellAuraEffects.cpp | 6 + src/server/game/Spells/SpellMgr.cpp | 2 +- src/server/game/Tools/PlayerDump.cpp | 1 + src/server/game/Transmog/TransmogMgr.cpp | 25 + .../map_extractor/loadlib/DBFilesClientList.h | 2 + 56 files changed, 2083 insertions(+), 1096 deletions(-) create mode 100644 sql/updates/auth/master/2026_04_22_00_auth.sql create mode 100644 sql/updates/characters/master/2026_04_22_00_characters.sql create mode 100644 sql/updates/hotfixes/master/2026_04_22_00_hotfixes.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index d370e0421b0f4..6aff2b6637165 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1575,7 +1575,14 @@ INSERT INTO `build_auth_key` VALUES (66838,'Mac','x64','WoWC',0xF30391E577B93E4F405C12B7410DE4D2), (66838,'Win','A64','WoW',0x0BF2D8325ACDA262E4067CA94E9A74E2), (66838,'Win','x64','WoW',0x3311F0FE50F95B1F2FED73D88EBEF674), -(66838,'Win','x64','WoWC',0x16CB76E27B2953AD7155A9DBE924827F); +(66838,'Win','x64','WoWC',0x16CB76E27B2953AD7155A9DBE924827F), +(67088,'Mac','A64','WoW',0x33CE8730AD20F33963F7E76597385EFA), +(67088,'Mac','A64','WoWC',0x85FA523866710862D4F3B37112B5AE70), +(67088,'Mac','x64','WoW',0xB7A01B3F50CA147FED6A4C61992B9432), +(67088,'Mac','x64','WoWC',0xE52362D75762001B2961C76AE3967E8F), +(67088,'Win','A64','WoW',0x015B0FF86D65C231A5CD1E387EB2A524), +(67088,'Win','x64','WoW',0xD2B5473E8CF4825839F1688BBA3ED5B0), +(67088,'Win','x64','WoWC',0xD746049A30EB089597C443743D74847B); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2020,7 +2027,8 @@ INSERT INTO `build_info` VALUES (66562,12,0,1,NULL), (66666,12,0,1,NULL), (66709,12,0,1,NULL), -(66838,12,0,1,NULL); +(66838,12,0,1,NULL), +(67088,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3633,7 +3641,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '66838', + `gamebuild` int unsigned NOT NULL DEFAULT '67088', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3648,7 +3656,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,66838,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67088,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4208,7 +4216,8 @@ INSERT INTO `updates` VALUES ('2026_03_25_00_auth.sql','1407469EAE26B180ABA3A3802C429A031B241C67','RELEASED','2026-03-25 09:28:09',0), ('2026_03_26_00_auth.sql','85B672D6B69E3AF187F413B8D1788FF948744CDA','RELEASED','2026-03-26 21:31:03',0), ('2026_03_28_00_auth.sql','510B4485FF9865D7E2F6AEE8DFA8A50285362C8B','RELEASED','2026-03-28 01:05:32',0), -('2026_04_07_00_auth.sql','AE088A44CB5E1ECE7BC928B5471AD8D523074001','RELEASED','2026-04-07 09:20:28',0); +('2026_04_07_00_auth.sql','AE088A44CB5E1ECE7BC928B5471AD8D523074001','RELEASED','2026-04-07 09:20:28',0), +('2026_04_22_00_auth.sql','FA3426E1D920AD15ABA9F3B43630CAD4B3A73704','RELEASED','2026-04-22 18:42:10',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 97f3e5662bfee..21c501fe65b19 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1601,6 +1601,180 @@ LOCK TABLES `character_reputation` WRITE; /*!40000 ALTER TABLE `character_reputation` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `character_select_screen_equipment_cache` +-- + +DROP TABLE IF EXISTS `character_select_screen_equipment_cache`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `character_select_screen_equipment_cache` ( + `guid` bigint unsigned NOT NULL, + `headEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `headVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `headSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `headInvType` tinyint unsigned NOT NULL DEFAULT '0', + `headDisplayID` int unsigned NOT NULL DEFAULT '0', + `headDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `headSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `headSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `neckEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `neckVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `neckSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `neckInvType` tinyint unsigned NOT NULL DEFAULT '0', + `neckDisplayID` int unsigned NOT NULL DEFAULT '0', + `neckDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `neckSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `neckSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `shoulderVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `shoulderSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderInvType` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderDisplayID` int unsigned NOT NULL DEFAULT '0', + `shoulderDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `shoulderSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `shoulderSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `bodyEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `bodyVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `bodySubclass` tinyint unsigned NOT NULL DEFAULT '0', + `bodyInvType` tinyint unsigned NOT NULL DEFAULT '0', + `bodyDisplayID` int unsigned NOT NULL DEFAULT '0', + `bodyDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `bodySecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `bodySheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `chestEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `chestVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `chestSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `chestInvType` tinyint unsigned NOT NULL DEFAULT '0', + `chestDisplayID` int unsigned NOT NULL DEFAULT '0', + `chestDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `chestSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `chestSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `waistEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `waistVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `waistSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `waistInvType` tinyint unsigned NOT NULL DEFAULT '0', + `waistDisplayID` int unsigned NOT NULL DEFAULT '0', + `waistDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `waistSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `waistSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `legsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `legsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `legsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `legsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `legsDisplayID` int unsigned NOT NULL DEFAULT '0', + `legsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `legsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `legsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `feetEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `feetVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `feetSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `feetInvType` tinyint unsigned NOT NULL DEFAULT '0', + `feetDisplayID` int unsigned NOT NULL DEFAULT '0', + `feetDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `feetSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `feetSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `wristsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `wristsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `wristsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `wristsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `wristsDisplayID` int unsigned NOT NULL DEFAULT '0', + `wristsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `wristsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `wristsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `handsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `handsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `handsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `handsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `handsDisplayID` int unsigned NOT NULL DEFAULT '0', + `handsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `handsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `handsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `finger1EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `finger1VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `finger1Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `finger1InvType` tinyint unsigned NOT NULL DEFAULT '0', + `finger1DisplayID` int unsigned NOT NULL DEFAULT '0', + `finger1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `finger1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `finger1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `finger2EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `finger2VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `finger2Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `finger2InvType` tinyint unsigned NOT NULL DEFAULT '0', + `finger2DisplayID` int unsigned NOT NULL DEFAULT '0', + `finger2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `finger2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `finger2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `trinket1VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `trinket1Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1InvType` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1DisplayID` int unsigned NOT NULL DEFAULT '0', + `trinket1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `trinket1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `trinket1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `trinket2VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `trinket2Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2InvType` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2DisplayID` int unsigned NOT NULL DEFAULT '0', + `trinket2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `trinket2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `trinket2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `backEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `backVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `backSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `backInvType` tinyint unsigned NOT NULL DEFAULT '0', + `backDisplayID` int unsigned NOT NULL DEFAULT '0', + `backDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `backSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `backSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `mainHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `mainHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandInvType` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandDisplayID` int unsigned NOT NULL DEFAULT '0', + `mainHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `mainHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `mainHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `offHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `offHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `offHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `offHandInvType` tinyint unsigned NOT NULL DEFAULT '0', + `offHandDisplayID` int unsigned NOT NULL DEFAULT '0', + `offHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `offHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `offHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `rangedEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `rangedVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `rangedSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `rangedInvType` tinyint unsigned NOT NULL DEFAULT '0', + `rangedDisplayID` int unsigned NOT NULL DEFAULT '0', + `rangedDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `rangedSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `rangedSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `tabardEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `tabardVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `tabardSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `tabardInvType` tinyint unsigned NOT NULL DEFAULT '0', + `tabardDisplayID` int unsigned NOT NULL DEFAULT '0', + `tabardDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `tabardSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `tabardSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `character_select_screen_equipment_cache` +-- + +LOCK TABLES `character_select_screen_equipment_cache` WRITE; +/*!40000 ALTER TABLE `character_select_screen_equipment_cache` DISABLE KEYS */; +/*!40000 ALTER TABLE `character_select_screen_equipment_cache` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `character_skills` -- @@ -2110,7 +2284,6 @@ CREATE TABLE `characters` ( `activeTalentGroup` tinyint unsigned NOT NULL DEFAULT '0', `lootSpecId` int unsigned NOT NULL DEFAULT '0', `exploredZones` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `equipmentCache` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `knownTitles` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `actionBars` tinyint unsigned NOT NULL DEFAULT '0', `deleteInfos_Account` int unsigned DEFAULT NULL, @@ -3919,7 +4092,8 @@ INSERT INTO `updates` VALUES ('2026_01_28_00_characters.sql','807B6622970E81089806C3B45C6C7A32EF531BCA','ARCHIVED','2026-01-25 21:53:51',0), ('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0), ('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0), -('2026_04_08_00_characters.sql','5A7FC8264EBD524E4EBAACF53D1CE89C6FF0D255','RELEASED','2026-04-07 10:24:16',0); +('2026_04_08_00_characters.sql','5A7FC8264EBD524E4EBAACF53D1CE89C6FF0D255','RELEASED','2026-04-07 10:24:16',0), +('2026_04_22_00_characters.sql','B154E0D8408CCE5636596EDC9C5024FFE41F2CD6','RELEASED','2026-04-22 19:26:05',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_04_22_00_auth.sql b/sql/updates/auth/master/2026_04_22_00_auth.sql new file mode 100644 index 0000000000000..4af54fa22c913 --- /dev/null +++ b/sql/updates/auth/master/2026_04_22_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67088); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67088,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67088 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67088,'Mac','A64','WoW',0x33CE8730AD20F33963F7E76597385EFA), +(67088,'Mac','A64','WoWC',0x85FA523866710862D4F3B37112B5AE70), +(67088,'Mac','x64','WoW',0xB7A01B3F50CA147FED6A4C61992B9432), +(67088,'Mac','x64','WoWC',0xE52362D75762001B2961C76AE3967E8F), +(67088,'Win','A64','WoW',0x015B0FF86D65C231A5CD1E387EB2A524), +(67088,'Win','x64','WoW',0xD2B5473E8CF4825839F1688BBA3ED5B0), +(67088,'Win','x64','WoWC',0xD746049A30EB089597C443743D74847B); + +UPDATE `realmlist` SET `gamebuild`=67088 WHERE `gamebuild`=66838; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67088'; diff --git a/sql/updates/characters/master/2026_04_22_00_characters.sql b/sql/updates/characters/master/2026_04_22_00_characters.sql new file mode 100644 index 0000000000000..086786e429ad1 --- /dev/null +++ b/sql/updates/characters/master/2026_04_22_00_characters.sql @@ -0,0 +1,207 @@ + +-- Fill new situations +DELETE FROM `character_transmog_outfit_situation` WHERE `situationID` BETWEEN 32 AND 41; + +-- All Weather +INSERT INTO `character_transmog_outfit_situation` +SELECT `guid`, `transmogOutfitId`, 32, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + +-- All Times +INSERT INTO `character_transmog_outfit_situation` +SELECT `guid`, `transmogOutfitId`, 37, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + +ALTER TABLE `character_transmog_outfit_slot` ADD `sheatheCategory` tinyint UNSIGNED AFTER `slotOption`; +UPDATE `character_transmog_outfit_slot` SET `sheatheCategory` = 0; +ALTER TABLE `character_transmog_outfit_slot` MODIFY `sheatheCategory` tinyint UNSIGNED NOT NULL AFTER `slotOption`; + +DROP FUNCTION IF EXISTS `get_nth_token`; +CREATE FUNCTION `get_nth_token`(x TEXT, delim VARCHAR(16), pos INT) RETURNS TEXT NO SQL +RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ''); + +-- +-- Table structure for table `character_select_screen_equipment_cache` +-- +DROP TABLE IF EXISTS `character_select_screen_equipment_cache`; +CREATE TABLE `character_select_screen_equipment_cache` ( + `guid` bigint unsigned NOT NULL, + `headEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `headVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `headSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `headInvType` tinyint unsigned NOT NULL DEFAULT '0', + `headDisplayID` int unsigned NOT NULL DEFAULT '0', + `headDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `headSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `headSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `neckEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `neckVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `neckSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `neckInvType` tinyint unsigned NOT NULL DEFAULT '0', + `neckDisplayID` int unsigned NOT NULL DEFAULT '0', + `neckDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `neckSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `neckSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `shoulderVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `shoulderSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderInvType` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderDisplayID` int unsigned NOT NULL DEFAULT '0', + `shoulderDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `shoulderSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `shoulderSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `bodyEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `bodyVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `bodySubclass` tinyint unsigned NOT NULL DEFAULT '0', + `bodyInvType` tinyint unsigned NOT NULL DEFAULT '0', + `bodyDisplayID` int unsigned NOT NULL DEFAULT '0', + `bodyDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `bodySecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `bodySheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `chestEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `chestVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `chestSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `chestInvType` tinyint unsigned NOT NULL DEFAULT '0', + `chestDisplayID` int unsigned NOT NULL DEFAULT '0', + `chestDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `chestSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `chestSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `waistEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `waistVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `waistSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `waistInvType` tinyint unsigned NOT NULL DEFAULT '0', + `waistDisplayID` int unsigned NOT NULL DEFAULT '0', + `waistDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `waistSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `waistSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `legsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `legsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `legsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `legsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `legsDisplayID` int unsigned NOT NULL DEFAULT '0', + `legsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `legsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `legsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `feetEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `feetVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `feetSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `feetInvType` tinyint unsigned NOT NULL DEFAULT '0', + `feetDisplayID` int unsigned NOT NULL DEFAULT '0', + `feetDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `feetSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `feetSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `wristsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `wristsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `wristsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `wristsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `wristsDisplayID` int unsigned NOT NULL DEFAULT '0', + `wristsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `wristsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `wristsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `handsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `handsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `handsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `handsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `handsDisplayID` int unsigned NOT NULL DEFAULT '0', + `handsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `handsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `handsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `finger1EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `finger1VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `finger1Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `finger1InvType` tinyint unsigned NOT NULL DEFAULT '0', + `finger1DisplayID` int unsigned NOT NULL DEFAULT '0', + `finger1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `finger1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `finger1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `finger2EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `finger2VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `finger2Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `finger2InvType` tinyint unsigned NOT NULL DEFAULT '0', + `finger2DisplayID` int unsigned NOT NULL DEFAULT '0', + `finger2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `finger2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `finger2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `trinket1VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `trinket1Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1InvType` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1DisplayID` int unsigned NOT NULL DEFAULT '0', + `trinket1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `trinket1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `trinket1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `trinket2VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `trinket2Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2InvType` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2DisplayID` int unsigned NOT NULL DEFAULT '0', + `trinket2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `trinket2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `trinket2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `backEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `backVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `backSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `backInvType` tinyint unsigned NOT NULL DEFAULT '0', + `backDisplayID` int unsigned NOT NULL DEFAULT '0', + `backDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `backSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `backSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `mainHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `mainHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandInvType` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandDisplayID` int unsigned NOT NULL DEFAULT '0', + `mainHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `mainHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `mainHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `offHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `offHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `offHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `offHandInvType` tinyint unsigned NOT NULL DEFAULT '0', + `offHandDisplayID` int unsigned NOT NULL DEFAULT '0', + `offHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `offHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `offHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `rangedEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `rangedVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `rangedSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `rangedInvType` tinyint unsigned NOT NULL DEFAULT '0', + `rangedDisplayID` int unsigned NOT NULL DEFAULT '0', + `rangedDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `rangedSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `rangedSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `tabardEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `tabardVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `tabardSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `tabardInvType` tinyint unsigned NOT NULL DEFAULT '0', + `tabardDisplayID` int unsigned NOT NULL DEFAULT '0', + `tabardDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `tabardSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `tabardSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +INSERT INTO `character_select_screen_equipment_cache` SELECT guid, + -- equipped item id | visible item id | subclass | inventory type | display id | enchant | secondary appearance | sheathe category + /* head */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 4) , get_nth_token(`equipmentCache`,' ', 1) , get_nth_token(`equipmentCache`,' ', 2) , get_nth_token(`equipmentCache`,' ', 3) , get_nth_token(`equipmentCache`,' ', 5) , 0, + /* neck */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 9) , get_nth_token(`equipmentCache`,' ', 6) , get_nth_token(`equipmentCache`,' ', 7) , get_nth_token(`equipmentCache`,' ', 8) , get_nth_token(`equipmentCache`,' ',10) , 0, + /* shoulders */ 0 , 0 , get_nth_token(`equipmentCache`,' ',14) , get_nth_token(`equipmentCache`,' ',11) , get_nth_token(`equipmentCache`,' ',12) , get_nth_token(`equipmentCache`,' ',13) , get_nth_token(`equipmentCache`,' ',15) , 0, + /* body */ 0 , 0 , get_nth_token(`equipmentCache`,' ',19) , get_nth_token(`equipmentCache`,' ',16) , get_nth_token(`equipmentCache`,' ',17) , get_nth_token(`equipmentCache`,' ',18) , get_nth_token(`equipmentCache`,' ',20) , 0, + /* chest */ 0 , 0 , get_nth_token(`equipmentCache`,' ',24) , get_nth_token(`equipmentCache`,' ',21) , get_nth_token(`equipmentCache`,' ',22) , get_nth_token(`equipmentCache`,' ',23) , get_nth_token(`equipmentCache`,' ',25) , 0, + /* waist */ 0 , 0 , get_nth_token(`equipmentCache`,' ',29) , get_nth_token(`equipmentCache`,' ',26) , get_nth_token(`equipmentCache`,' ',27) , get_nth_token(`equipmentCache`,' ',28) , get_nth_token(`equipmentCache`,' ',30) , 0, + /* legs */ 0 , 0 , get_nth_token(`equipmentCache`,' ',34) , get_nth_token(`equipmentCache`,' ',31) , get_nth_token(`equipmentCache`,' ',32) , get_nth_token(`equipmentCache`,' ',33) , get_nth_token(`equipmentCache`,' ',35) , 0, + /* feet */ 0 , 0 , get_nth_token(`equipmentCache`,' ',39) , get_nth_token(`equipmentCache`,' ',36) , get_nth_token(`equipmentCache`,' ',37) , get_nth_token(`equipmentCache`,' ',38) , get_nth_token(`equipmentCache`,' ',40) , 0, + /* wrists */ 0 , 0 , get_nth_token(`equipmentCache`,' ',44) , get_nth_token(`equipmentCache`,' ',41) , get_nth_token(`equipmentCache`,' ',42) , get_nth_token(`equipmentCache`,' ',43) , get_nth_token(`equipmentCache`,' ',45) , 0, + /* hands */ 0 , 0 , get_nth_token(`equipmentCache`,' ',49) , get_nth_token(`equipmentCache`,' ',46) , get_nth_token(`equipmentCache`,' ',47) , get_nth_token(`equipmentCache`,' ',48) , get_nth_token(`equipmentCache`,' ',50) , 0, + /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',54) , get_nth_token(`equipmentCache`,' ',51) , get_nth_token(`equipmentCache`,' ',52) , get_nth_token(`equipmentCache`,' ',53) , get_nth_token(`equipmentCache`,' ',55) , 0, + /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',59) , get_nth_token(`equipmentCache`,' ',56) , get_nth_token(`equipmentCache`,' ',57) , get_nth_token(`equipmentCache`,' ',58) , get_nth_token(`equipmentCache`,' ',60) , 0, + /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',64) , get_nth_token(`equipmentCache`,' ',61) , get_nth_token(`equipmentCache`,' ',62) , get_nth_token(`equipmentCache`,' ',63) , get_nth_token(`equipmentCache`,' ',65) , 0, + /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',69) , get_nth_token(`equipmentCache`,' ',66) , get_nth_token(`equipmentCache`,' ',67) , get_nth_token(`equipmentCache`,' ',68) , get_nth_token(`equipmentCache`,' ',70) , 0, + /* back */ 0 , 0 , get_nth_token(`equipmentCache`,' ',74) , get_nth_token(`equipmentCache`,' ',71) , get_nth_token(`equipmentCache`,' ',72) , get_nth_token(`equipmentCache`,' ',73) , get_nth_token(`equipmentCache`,' ',75) , 0, + /* main hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',79) , get_nth_token(`equipmentCache`,' ',76) , get_nth_token(`equipmentCache`,' ',77) , get_nth_token(`equipmentCache`,' ',78) , get_nth_token(`equipmentCache`,' ',80) , 0, + /* off hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',84) , get_nth_token(`equipmentCache`,' ',81) , get_nth_token(`equipmentCache`,' ',82) , get_nth_token(`equipmentCache`,' ',83) , get_nth_token(`equipmentCache`,' ',85) , 0, + /* ranged */ 0 , 0 , get_nth_token(`equipmentCache`,' ',89) , get_nth_token(`equipmentCache`,' ',86) , get_nth_token(`equipmentCache`,' ',87) , get_nth_token(`equipmentCache`,' ',88) , get_nth_token(`equipmentCache`,' ',90) , 0, + /* tabard */ 0 , 0 , get_nth_token(`equipmentCache`,' ',94) , get_nth_token(`equipmentCache`,' ',91) , get_nth_token(`equipmentCache`,' ',92) , get_nth_token(`equipmentCache`,' ',93) , get_nth_token(`equipmentCache`,' ',95) , 0 +FROM `characters`; + +DROP FUNCTION IF EXISTS `get_nth_token` + +ALTER TABLE `characters` DROP `equipmentCache`; diff --git a/sql/updates/hotfixes/master/2026_04_22_00_hotfixes.sql b/sql/updates/hotfixes/master/2026_04_22_00_hotfixes.sql new file mode 100644 index 0000000000000..ba788cc0bcda5 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_22_00_hotfixes.sql @@ -0,0 +1,120 @@ +ALTER TABLE `character_loadout` + ADD `RaceMask_1` int NOT NULL DEFAULT 0 AFTER `ItemContext`, + ADD `RaceMask_2` int NOT NULL DEFAULT 0 AFTER `RaceMask_1`; + +UPDATE `character_loadout` SET + `RaceMask_1` = IF((`RaceMask` >> 0) & 0x80000000, CAST(((`RaceMask` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 0) & 0xFFFFFFFF), + `RaceMask_2` = IF((`RaceMask` >> 32) & 0x80000000, CAST(((`RaceMask` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `chr_customization_req` + ADD `RaceMask_1` int NOT NULL DEFAULT 0 AFTER `ItemModifiedAppearanceID`, + ADD `RaceMask_2` int NOT NULL DEFAULT 0 AFTER `RaceMask_1`; + +UPDATE `chr_customization_req` SET + `RaceMask_1` = IF((`RaceMask` >> 0) & 0x80000000, CAST(((`RaceMask` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 0) & 0xFFFFFFFF), + `RaceMask_2` = IF((`RaceMask` >> 32) & 0x80000000, CAST(((`RaceMask` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `emotes` + ADD `RaceMask_1` int NOT NULL DEFAULT 0 AFTER `ClassMask`, + ADD `RaceMask_2` int NOT NULL DEFAULT 0 AFTER `RaceMask_1`; + +UPDATE `emotes` SET + `RaceMask_1` = IF((`RaceMask` >> 0) & 0x80000000, CAST(((`RaceMask` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 0) & 0xFFFFFFFF), + `RaceMask_2` = IF((`RaceMask` >> 32) & 0x80000000, CAST(((`RaceMask` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `faction` + ADD `ReputationRaceMask1_1` int NOT NULL DEFAULT 0 AFTER `ParentFactionCap2`, + ADD `ReputationRaceMask1_2` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask1_1`, + ADD `ReputationRaceMask2_1` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask1_2`, + ADD `ReputationRaceMask2_2` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask2_1`, + ADD `ReputationRaceMask3_1` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask2_2`, + ADD `ReputationRaceMask3_2` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask3_1`, + ADD `ReputationRaceMask4_1` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask3_2`, + ADD `ReputationRaceMask4_2` int NOT NULL DEFAULT 0 AFTER `ReputationRaceMask4_1`; + +UPDATE `faction` SET + `ReputationRaceMask1_1` = IF((`ReputationRaceMask1` >> 0) & 0x80000000, CAST(((`ReputationRaceMask1` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask1` >> 0) & 0xFFFFFFFF), + `ReputationRaceMask1_2` = IF((`ReputationRaceMask1` >> 32) & 0x80000000, CAST(((`ReputationRaceMask1` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask1` >> 32) & 0xFFFFFFFF), + `ReputationRaceMask2_1` = IF((`ReputationRaceMask2` >> 0) & 0x80000000, CAST(((`ReputationRaceMask2` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask2` >> 0) & 0xFFFFFFFF), + `ReputationRaceMask2_2` = IF((`ReputationRaceMask2` >> 32) & 0x80000000, CAST(((`ReputationRaceMask2` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask2` >> 32) & 0xFFFFFFFF), + `ReputationRaceMask3_1` = IF((`ReputationRaceMask3` >> 0) & 0x80000000, CAST(((`ReputationRaceMask3` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask3` >> 0) & 0xFFFFFFFF), + `ReputationRaceMask3_2` = IF((`ReputationRaceMask3` >> 32) & 0x80000000, CAST(((`ReputationRaceMask3` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask3` >> 32) & 0xFFFFFFFF), + `ReputationRaceMask4_1` = IF((`ReputationRaceMask4` >> 0) & 0x80000000, CAST(((`ReputationRaceMask4` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask4` >> 0) & 0xFFFFFFFF), + `ReputationRaceMask4_2` = IF((`ReputationRaceMask4` >> 32) & 0x80000000, CAST(((`ReputationRaceMask4` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`ReputationRaceMask4` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `item_extended_cost` ADD `Money` bigint UNSIGNED NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `item_search_name` + ADD `AllowableRace_1` int NOT NULL DEFAULT 0 AFTER `Flags5`, + ADD `AllowableRace_2` int NOT NULL DEFAULT 0 AFTER `AllowableRace_1`; + +UPDATE `item_search_name` SET + `AllowableRace_1` = IF((`AllowableRace` >> 0) & 0x80000000, CAST(((`AllowableRace` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`AllowableRace` >> 0) & 0xFFFFFFFF), + `AllowableRace_2` = IF((`AllowableRace` >> 32) & 0x80000000, CAST(((`AllowableRace` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`AllowableRace` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `item_sparse` + ADD `AllowableRace_1` int NOT NULL DEFAULT 0 AFTER `RequiredAbility`, + ADD `AllowableRace_2` int NOT NULL DEFAULT 0 AFTER `AllowableRace_1`; + +UPDATE `item_sparse` SET + `AllowableRace_1` = IF((`AllowableRace` >> 0) & 0x80000000, CAST(((`AllowableRace` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`AllowableRace` >> 0) & 0xFFFFFFFF), + `AllowableRace_2` = IF((`AllowableRace` >> 32) & 0x80000000, CAST(((`AllowableRace` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`AllowableRace` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `movie` ADD `Summary` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL AFTER `ID`; + +-- +-- Table structure for table `movie_locale` +-- +DROP TABLE IF EXISTS `movie_locale`; +CREATE TABLE `movie_locale` ( + `ID` int unsigned NOT NULL DEFAULT '0', + `locale` varchar(4) NOT NULL, + `Summary_lang` text, + `VerifiedBuild` int NOT NULL DEFAULT '0', + PRIMARY KEY (`ID`,`locale`,`VerifiedBuild`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci +PARTITION BY LIST COLUMNS(locale) +(PARTITION deDE VALUES IN ('deDE') ENGINE = InnoDB, + PARTITION esES VALUES IN ('esES') ENGINE = InnoDB, + PARTITION esMX VALUES IN ('esMX') ENGINE = InnoDB, + PARTITION frFR VALUES IN ('frFR') ENGINE = InnoDB, + PARTITION itIT VALUES IN ('itIT') ENGINE = InnoDB, + PARTITION koKR VALUES IN ('koKR') ENGINE = InnoDB, + PARTITION ptBR VALUES IN ('ptBR') ENGINE = InnoDB, + PARTITION ruRU VALUES IN ('ruRU') ENGINE = InnoDB, + PARTITION zhCN VALUES IN ('zhCN') ENGINE = InnoDB, + PARTITION zhTW VALUES IN ('zhTW') ENGINE = InnoDB); + +ALTER TABLE `path_node` MODIFY `PathID` int NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `path_property` MODIFY `PathID` int NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `player_condition` + ADD `RaceMask_1` int NOT NULL DEFAULT 0 AFTER `MovementFlags2`, + ADD `RaceMask_2` int NOT NULL DEFAULT 0 AFTER `RaceMask_1`; + +UPDATE `player_condition` SET + `RaceMask_1` = IF((`RaceMask` >> 0) & 0x80000000, CAST(((`RaceMask` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 0) & 0xFFFFFFFF), + `RaceMask_2` = IF((`RaceMask` >> 32) & 0x80000000, CAST(((`RaceMask` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `scenario` ADD `UiScenarioDisplayInfoID` int UNSIGNED NOT NULL DEFAULT 0 AFTER `UiTextureKitID`; + +ALTER TABLE `skill_line_ability` + ADD `RaceMask_1` int NOT NULL DEFAULT 0 AFTER `SkillupSkillLineID`, + ADD `RaceMask_2` int NOT NULL DEFAULT 0 AFTER `RaceMask_1`; + +UPDATE `skill_line_ability` SET + `RaceMask_1` = IF((`RaceMask` >> 0) & 0x80000000, CAST(((`RaceMask` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 0) & 0xFFFFFFFF), + `RaceMask_2` = IF((`RaceMask` >> 32) & 0x80000000, CAST(((`RaceMask` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `skill_race_class_info` + ADD `RaceMask_1` int NOT NULL DEFAULT 0 AFTER `SkillTierID`, + ADD `RaceMask_2` int NOT NULL DEFAULT 0 AFTER `RaceMask_1`; + +UPDATE `skill_race_class_info` SET + `RaceMask_1` = IF((`RaceMask` >> 0) & 0x80000000, CAST(((`RaceMask` >> 0) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 0) & 0xFFFFFFFF), + `RaceMask_2` = IF((`RaceMask` >> 32) & 0x80000000, CAST(((`RaceMask` >> 32) & 0xFFFFFFFF) | 0xFFFFFFFF00000000 AS SIGNED), (`RaceMask` >> 32) & 0xFFFFFFFF); + +ALTER TABLE `taxi_path_node` MODIFY COLUMN `PathID` int unsigned NOT NULL DEFAULT 0 AFTER `ID`; + +ALTER TABLE `transmog_outfit_entry` ADD `OutfitIndex` int NOT NULL DEFAULT 0 AFTER `OverrideCostModifier`; diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index def6ab00b4b80..64677bc75c89f 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -31,6 +31,21 @@ void CharacterDatabaseConnection::DoPrepareStatements() "ig.gemItemId1, ig.gemBonuses1, ig.gemContext1, ig.gemScalingLevel1, ig.gemItemId2, ig.gemBonuses2, ig.gemContext2, ig.gemScalingLevel2, ig.gemItemId3, ig.gemBonuses3, ig.gemContext3, ig.gemScalingLevel3, " \ "im.fixedScalingLevel, im.artifactKnowledgeLevel" +#define CharacterSelectEquipmentSlot(table_alias, slot_name) \ + table_alias slot_name "EquippedItemID," table_alias slot_name "VisibleItemID," \ + table_alias slot_name "Subclass," table_alias slot_name "InvType," \ + table_alias slot_name "DisplayID," table_alias slot_name "DisplayEnchantID," \ + table_alias slot_name "SecondaryItemModifiedAppearanceID," table_alias slot_name "SheatheCategory" + +#define CharacterSelectEquipment(table_alias) \ + CharacterSelectEquipmentSlot(table_alias, "head") "," CharacterSelectEquipmentSlot(table_alias, "neck") "," CharacterSelectEquipmentSlot(table_alias, "shoulder") "," \ + CharacterSelectEquipmentSlot(table_alias, "body") "," CharacterSelectEquipmentSlot(table_alias, "chest") "," CharacterSelectEquipmentSlot(table_alias, "waist") "," \ + CharacterSelectEquipmentSlot(table_alias, "legs") "," CharacterSelectEquipmentSlot(table_alias, "feet") "," CharacterSelectEquipmentSlot(table_alias, "wrists") "," \ + CharacterSelectEquipmentSlot(table_alias, "hands") "," CharacterSelectEquipmentSlot(table_alias, "finger1") "," CharacterSelectEquipmentSlot(table_alias, "finger2") "," \ + CharacterSelectEquipmentSlot(table_alias, "trinket1") "," CharacterSelectEquipmentSlot(table_alias, "trinket2") "," CharacterSelectEquipmentSlot(table_alias, "back") "," \ + CharacterSelectEquipmentSlot(table_alias, "mainHand") "," CharacterSelectEquipmentSlot(table_alias, "offHand") "," CharacterSelectEquipmentSlot(table_alias, "ranged") "," \ + CharacterSelectEquipmentSlot(table_alias, "tabard") + PrepareStatement(CHAR_DEL_POOL_QUEST_SAVE, "DELETE FROM pool_quest_save WHERE pool_id = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_POOL_QUEST_SAVE, "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES (?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM, "DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?", CONNECTION_ASYNC); @@ -51,33 +66,41 @@ void CharacterDatabaseConnection::DoPrepareStatements() "subject, deliver_time, expire_time, money, has_items FROM mail WHERE receiver = ? ", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_MAIL_LIST_ITEMS, "SELECT itemEntry,count FROM item_instance WHERE guid = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_SEL_ENUM, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, " - "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level AS cpLevel, c.equipmentCache, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " - "c.personalTabardEmblemStyle, c.personalTabardEmblemColor, c.personalTabardBorderStyle, c.personalTabardBorderColor, c.personalTabardBackgroundColor " + "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level AS cpLevel, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " + "c.personalTabardEmblemStyle, c.personalTabardEmblemColor, c.personalTabardBorderStyle, c.personalTabardBorderColor, c.personalTabardBackgroundColor, " + CharacterSelectEquipment("ceq.") " " "FROM characters AS c LEFT JOIN character_pet AS cp ON c.summonedPetNumber = cp.id LEFT JOIN guild_member AS gm ON c.guid = gm.guid " "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 " + "LEFT JOIN character_select_screen_equipment_cache ceq ON c.guid = ceq.guid " "WHERE c.account = ? AND c.deleteInfos_Name IS NULL", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_ENUM_DECLINED_NAME, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, " - "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level AS cpLevel, c.equipmentCache, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " + "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level AS cpLevel, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " "c.personalTabardEmblemStyle, c.personalTabardEmblemColor, c.personalTabardBorderStyle, c.personalTabardBorderColor, c.personalTabardBackgroundColor, " + CharacterSelectEquipment("ceq.") ", " "cd.genitive " "FROM characters AS c LEFT JOIN character_pet AS cp ON c.summonedPetNumber = cp.id LEFT JOIN guild_member AS gm ON c.guid = gm.guid " "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 " + "LEFT JOIN character_select_screen_equipment_cache ceq ON c.guid = ceq.guid " "LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid " "WHERE c.account = ? AND c.deleteInfos_Name IS NULL", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_ENUM_CUSTOMIZATIONS, "SELECT cc.guid, cc.chrCustomizationOptionID, cc.chrCustomizationChoiceID FROM character_customizations cc " "LEFT JOIN characters c ON cc.guid = c.guid WHERE c.account = ? AND c.deleteInfos_Name IS NULL ORDER BY cc.guid, cc.chrCustomizationOptionID", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_UNDELETE_ENUM, "SELECT c.guid, c.deleteInfos_Name, c.race, c.class, c.gender, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, " - "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level AS cpLevel, c.equipmentCache, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " - "c.personalTabardEmblemStyle, c.personalTabardEmblemColor, c.personalTabardBorderStyle, c.personalTabardBorderColor, c.personalTabardBackgroundColor " + "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level AS cpLevel, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " + "c.personalTabardEmblemStyle, c.personalTabardEmblemColor, c.personalTabardBorderStyle, c.personalTabardBorderColor, c.personalTabardBackgroundColor, " + CharacterSelectEquipment("ceq.") " " "FROM characters AS c LEFT JOIN character_pet AS cp ON c.summonedPetNumber = cp.id LEFT JOIN guild_member AS gm ON c.guid = gm.guid " "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 " + "LEFT JOIN character_select_screen_equipment_cache ceq ON c.guid = ceq.guid " "WHERE c.deleteInfos_Account = ? AND c.deleteInfos_Name IS NOT NULL", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_UNDELETE_ENUM_DECLINED_NAME, "SELECT c.guid, c.deleteInfos_Name, c.race, c.class, c.gender, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, " - "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level as cpLevel, c.equipmentCache, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " + "gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level as cpLevel, cb.guid AS cbGuid, c.slot, c.createTime, c.logout_time, c.activeTalentGroup, c.lastLoginBuild, " "c.personalTabardEmblemStyle, c.personalTabardEmblemColor, c.personalTabardBorderStyle, c.personalTabardBorderColor, c.personalTabardBackgroundColor, " + CharacterSelectEquipment("ceq.") ", " "cd.genitive " "FROM characters AS c LEFT JOIN character_pet AS cp ON c.summonedPetNumber = cp.id LEFT JOIN guild_member AS gm ON c.guid = gm.guid " "LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 " + "LEFT JOIN character_select_screen_equipment_cache ceq ON c.guid = ceq.guid " "LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid " "WHERE c.deleteInfos_Account = ? AND c.deleteInfos_Name IS NOT NULL", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_UNDELETE_ENUM_CUSTOMIZATIONS, "SELECT cc.guid, cc.chrCustomizationOptionID, cc.chrCustomizationChoiceID FROM character_customizations cc " @@ -152,7 +175,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() "appearance17, appearance18, mainHandEnchant, offHandEnchant FROM character_transmog_outfits WHERE guid = ? ORDER BY setindex", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT, "SELECT transmogOutfitId, name, icon, situationsEnabled FROM character_transmog_outfit WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SITUATION, "SELECT transmogOutfitId, situationID, specID, loadoutID, equipmentSetID FROM character_transmog_outfit_situation WHERE guid = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SLOT, "SELECT transmogOutfitId, slot, slotOption, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags FROM character_transmog_outfit_slot WHERE guid = ? ORDER BY transmogOutfitId, slot, slotOption", CONNECTION_ASYNC); + PrepareStatement(CHAR_SEL_CHARACTER_TRANSMOG_OUTFIT_SLOT, "SELECT transmogOutfitId, slot, slotOption, sheatheCategory, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags FROM character_transmog_outfit_slot WHERE guid = ? ORDER BY transmogOutfitId, slot, slotOption", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_BGDATA, "SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell, queueId FROM character_battleground_data WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_GLYPHS, "SELECT talentGroup, glyphId FROM character_glyphs WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_SEL_CHARACTER_TALENTS, "SELECT talentId, talentGroup FROM character_talent WHERE guid = ?", CONNECTION_ASYNC); @@ -367,7 +390,7 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT_2, "DELETE FROM character_transmog_outfit WHERE guid = ? AND transmogOutfitId = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_TRANSMOG_OUTFIT_SITUATION, "INSERT INTO character_transmog_outfit_situation (guid, transmogOutfitId, situationID, specID, loadoutID, equipmentSetID) VALUES (?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT_SITUATION, "DELETE FROM character_transmog_outfit_situation WHERE guid = ? AND transmogOutfitId = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_INS_TRANSMOG_OUTFIT_SLOT, "INSERT INTO character_transmog_outfit_slot (guid, transmogOutfitId, slot, slotOption, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_TRANSMOG_OUTFIT_SLOT, "INSERT INTO character_transmog_outfit_slot (guid, transmogOutfitId, slot, slotOption, sheatheCategory, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_TRANSMOG_OUTFIT_SLOT, "DELETE FROM character_transmog_outfit_slot WHERE guid = ? AND transmogOutfitId = ?", CONNECTION_ASYNC); // Auras @@ -492,16 +515,16 @@ void CharacterDatabaseConnection::DoPrepareStatements() "extra_flags, summonedPetNumber, at_login, " "death_expire_time, taxi_path, totalKills, todayKills, yesterdayKills, chosenTitle, watchedFaction, drunk, health, " "power1, power2, power3, power4, power5, power6, power7, power8, power9, power10, " - "latency, activeTalentGroup, lootSpecId, exploredZones, equipmentCache, knownTitles, actionBars, lastLoginBuild, " + "latency, activeTalentGroup, lootSpecId, exploredZones, knownTitles, actionBars, lastLoginBuild, " "personalTabardEmblemStyle, personalTabardEmblemColor, personalTabardBorderStyle, personalTabardBorderColor, personalTabardBackgroundColor, transmogOutfitEquippedId, transmogOutfitLocked) VALUES " - "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC); + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_CHARACTER, "UPDATE characters SET name=?,race=?,class=?,gender=?,level=?,xp=?,money=?,inventorySlots=?,inventoryBagFlags=?,bagSlotFlags1=?,bagSlotFlags2=?,bagSlotFlags3=?,bagSlotFlags4=?,bagSlotFlags5=?," "bankSlots=?,bankTabs=?,bankBagFlags=?,restState=?,playerFlags=?,playerFlagsEx=?," "map=?,instance_id=?,dungeonDifficulty=?,raidDifficulty=?,legacyRaidDifficulty=?,position_x=?,position_y=?,position_z=?,orientation=?,trans_x=?,trans_y=?,trans_z=?,trans_o=?,transguid=?,taximask=?,cinematic=?,totaltime=?,leveltime=?,rest_bonus=?," "logout_time=?,is_logout_resting=?,resettalents_cost=?,resettalents_time=?,numRespecs=?,primarySpecialization=?,extra_flags=?,summonedPetNumber=?,at_login=?,zone=?,death_expire_time=?,taxi_path=?," "totalKills=?,todayKills=?,yesterdayKills=?,chosenTitle=?," "watchedFaction=?,drunk=?,health=?,power1=?,power2=?,power3=?,power4=?,power5=?,power6=?,power7=?,power8=?,power9=?,power10=?,latency=?,activeTalentGroup=?,lootSpecId=?,exploredZones=?," - "equipmentCache=?,knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=?," + "knownTitles=?,actionBars=?,online=?,honor=?,honorLevel=?,honorRestState=?,honorRestBonus=?,lastLoginBuild=?," "personalTabardEmblemStyle=?,personalTabardEmblemColor=?,personalTabardBorderStyle=?,personalTabardBorderColor=?,personalTabardBackgroundColor=?,transmogOutfitEquippedId=?,transmogOutfitLocked=? WHERE guid=?", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_ADD_AT_LOGIN_FLAG, "UPDATE characters SET at_login = at_login | ? WHERE guid = ?", CONNECTION_ASYNC); @@ -513,6 +536,9 @@ void CharacterDatabaseConnection::DoPrepareStatements() PrepareStatement(CHAR_UPD_ACCOUNT_ONLINE, "UPDATE characters SET online = 0 WHERE account = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_CHARACTER_CUSTOMIZATION, "INSERT INTO character_customizations (guid, chrCustomizationOptionID, chrCustomizationChoiceID) VALUES (?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_CHARACTER_CUSTOMIZATIONS, "DELETE FROM character_customizations WHERE guid = ?", CONNECTION_ASYNC); + PrepareStatement(CHAR_INS_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS, "INSERT INTO character_select_screen_equipment_cache (guid," CharacterSelectEquipment("") ") VALUES" + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", CONNECTION_ASYNC); + PrepareStatement(CHAR_DEL_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS, "DELETE FROM character_select_screen_equipment_cache WHERE guid = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_GROUP, "INSERT INTO `groups` (guid, leaderGuid, lootMethod, looterGuid, lootThreshold, icon1, icon2, icon3, icon4, icon5, icon6, icon7, icon8, groupType, difficulty, raidDifficulty, legacyRaidDifficulty, masterLooterGuid, pingRestriction) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_INS_GROUP_MEMBER, "INSERT INTO group_member (guid, memberGuid, memberFlags, subgroup, roles) VALUES(?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_GROUP_MEMBER, "DELETE FROM group_member WHERE memberGuid = ?", CONNECTION_ASYNC); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 4838f2c85fbed..31a25e9921840 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -383,6 +383,8 @@ enum CharacterDatabaseStatements : uint32 CHAR_UPD_ACCOUNT_ONLINE, CHAR_INS_CHARACTER_CUSTOMIZATION, CHAR_DEL_CHARACTER_CUSTOMIZATIONS, + CHAR_INS_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS, + CHAR_DEL_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS, CHAR_INS_GROUP, CHAR_INS_GROUP_MEMBER, CHAR_DEL_GROUP_MEMBER, diff --git a/src/server/database/Database/Implementation/HotfixDatabase.cpp b/src/server/database/Database/Implementation/HotfixDatabase.cpp index eafaf95c7b954..616a5d9f8a860 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.cpp +++ b/src/server/database/Database/Implementation/HotfixDatabase.cpp @@ -338,8 +338,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() " AND locale = ?", CONNECTION_SYNCH); // CharacterLoadout.db2 - PrepareStatement(HOTFIX_SEL_CHARACTER_LOADOUT, "SELECT ID, RaceMask, ChrClassID, Purpose, ItemContext FROM character_loadout" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_CHARACTER_LOADOUT, "SELECT ID, RaceMask, ChrClassID, Purpose, ItemContext, RaceMask_1, RaceMask_2" + " FROM character_loadout WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHARACTER_LOADOUT, "SELECT MAX(ID) + 1 FROM character_loadout", CONNECTION_SYNCH); // CharacterLoadoutItem.db2 @@ -408,7 +408,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ChrCustomizationReq.db2 PrepareStatement(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, RaceMask, ReqSource, Flags, ClassMask, RegionGroupMask, AchievementID, QuestID, " - "OverrideArchive, ItemModifiedAppearanceID FROM chr_customization_req WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "OverrideArchive, ItemModifiedAppearanceID, RaceMask_1, RaceMask_2 FROM chr_customization_req WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT MAX(ID) + 1 FROM chr_customization_req", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_CHR_CUSTOMIZATION_REQ, "SELECT ID, ReqSource_lang FROM chr_customization_req_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -619,7 +619,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // Emotes.db2 PrepareStatement(HOTFIX_SEL_EMOTES, "SELECT ID, RaceMask, EmoteSlashCommand, AnimID, EmoteFlags, EmoteSpecProc, EmoteSpecProcParam, EventSoundID, " - "SpellVisualKitID, ClassMask FROM emotes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "SpellVisualKitID, ClassMask, RaceMask_1, RaceMask_2 FROM emotes WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_EMOTES, "SELECT MAX(ID) + 1 FROM emotes", CONNECTION_SYNCH); // EmotesText.db2 @@ -648,8 +648,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() "Description, ReputationIndex, ParentFactionID, Expansion, FriendshipRepID, Flags, ParagonFactionID, RenownFactionID, RenownCurrencyID, " "ReputationClassMask1, ReputationClassMask2, ReputationClassMask3, ReputationClassMask4, ReputationFlags1, ReputationFlags2, " "ReputationFlags3, ReputationFlags4, ReputationBase1, ReputationBase2, ReputationBase3, ReputationBase4, ReputationMax1, ReputationMax2, " - "ReputationMax3, ReputationMax4, ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2 FROM faction" - " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "ReputationMax3, ReputationMax4, ParentFactionMod1, ParentFactionMod2, ParentFactionCap1, ParentFactionCap2, ReputationRaceMask1_1, " + "ReputationRaceMask1_2, ReputationRaceMask2_1, ReputationRaceMask2_2, ReputationRaceMask3_1, ReputationRaceMask3_2, ReputationRaceMask4_1, " + "ReputationRaceMask4_2 FROM faction WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_FACTION, "SELECT MAX(ID) + 1 FROM faction", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_FACTION, "SELECT ID, Name_lang, Description_lang FROM faction_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -981,7 +982,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_EFFECT, "SELECT MAX(ID) + 1 FROM item_effect", CONNECTION_SYNCH); // ItemExtendedCost.db2 - PrepareStatement(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT ID, RequiredArenaRating, ArenaBracket, Flags, MinFactionID, MinReputation, " + PrepareStatement(HOTFIX_SEL_ITEM_EXTENDED_COST, "SELECT ID, Money, RequiredArenaRating, ArenaBracket, Flags, MinFactionID, MinReputation, " "RequiredAchievement, ItemID1, ItemID2, ItemID3, ItemID4, ItemID5, ItemCount1, ItemCount2, ItemCount3, ItemCount4, ItemCount5, CurrencyID1, " "CurrencyID2, CurrencyID3, CurrencyID4, CurrencyID5, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, CurrencyCount5" " FROM item_extended_cost WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); @@ -1044,8 +1045,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() // ItemSearchName.db2 PrepareStatement(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, AllowableRace, Display, OverallQualityID, ExpansionID, MinFactionID, MinReputation, " - "AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4, Flags5" - " FROM item_search_name WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "AllowableClass, RequiredLevel, RequiredSkill, RequiredSkillRank, RequiredAbility, ItemLevel, Flags1, Flags2, Flags3, Flags4, Flags5, " + "AllowableRace_1, AllowableRace_2 FROM item_search_name WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT MAX(ID) + 1 FROM item_search_name", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SEARCH_NAME, "SELECT ID, Display_lang FROM item_search_name_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1070,13 +1071,14 @@ void HotfixDatabaseConnection::DoPrepareStatements() "StatPercentEditor3, StatPercentEditor4, StatPercentEditor5, StatPercentEditor6, StatPercentEditor7, StatPercentEditor8, StatPercentEditor9, " "StatPercentEditor10, StatModifierBonusStat1, StatModifierBonusStat2, StatModifierBonusStat3, StatModifierBonusStat4, StatModifierBonusStat5, " "StatModifierBonusStat6, StatModifierBonusStat7, StatModifierBonusStat8, StatModifierBonusStat9, StatModifierBonusStat10, Stackable, " - "MaxCount, MinReputation, RequiredAbility, SellPrice, BuyPrice, VendorStackCount, PriceVariance, PriceRandomValue, Flags1, Flags2, Flags3, " - "Flags4, Flags5, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, PlayerLevelToItemLevelCurveID, ItemLevelOffsetCurveID, " - "ItemLevelOffsetItemLevel, ItemSquishEraID, ItemNameDescriptionID, RequiredTransmogHoliday, RequiredHoliday, GemProperties, " - "SocketMatchEnchantmentId, TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, ItemSet, LockID, PageID, ItemDelay, MinFactionID, " - "RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ArtifactID, SpellWeight, SpellWeightCategory, SocketType1, SocketType2, " - "SocketType3, SheatheType, Material, PageMaterialID, Bonding, DamageDamageType, ContainerSlots, RequiredPVPMedal, RequiredPVPRank, " - "RequiredLevel, InventoryType, OverallQualityID FROM item_sparse WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "MaxCount, MinReputation, RequiredAbility, AllowableRace_1, AllowableRace_2, SellPrice, BuyPrice, VendorStackCount, PriceVariance, " + "PriceRandomValue, Flags1, Flags2, Flags3, Flags4, Flags5, FactionRelated, ModifiedCraftingReagentItemID, ContentTuningID, " + "PlayerLevelToItemLevelCurveID, ItemLevelOffsetCurveID, ItemLevelOffsetItemLevel, ItemSquishEraID, ItemNameDescriptionID, " + "RequiredTransmogHoliday, RequiredHoliday, GemProperties, SocketMatchEnchantmentId, TotemCategoryID, InstanceBound, ZoneBound1, ZoneBound2, " + "ItemSet, LockID, PageID, ItemDelay, MinFactionID, RequiredSkillRank, RequiredSkill, ItemLevel, AllowableClass, ArtifactID, SpellWeight, " + "SpellWeightCategory, SocketType1, SocketType2, SocketType3, SheatheType, Material, PageMaterialID, Bonding, DamageDamageType, " + "ContainerSlots, RequiredPVPMedal, RequiredPVPRank, RequiredLevel, InventoryType, OverallQualityID FROM item_sparse" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT MAX(ID) + 1 FROM item_sparse", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_ITEM_SPARSE, "SELECT ID, Description_lang, Display3_lang, Display2_lang, Display1_lang, Display_lang" " FROM item_sparse_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1266,9 +1268,10 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOUNT_X_DISPLAY, "SELECT MAX(ID) + 1 FROM mount_x_display", CONNECTION_SYNCH); // Movie.db2 - PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Volume, KeyID, AudioFileDataID, SubtitleFileDataID, SubtitleFileFormat FROM movie" + PrepareStatement(HOTFIX_SEL_MOVIE, "SELECT ID, Summary, Volume, KeyID, AudioFileDataID, SubtitleFileDataID, SubtitleFileFormat FROM movie" " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_MOVIE, "SELECT MAX(ID) + 1 FROM movie", CONNECTION_SYNCH); + PREPARE_LOCALE_STMT(HOTFIX_SEL_MOVIE, "SELECT ID, Summary_lang FROM movie_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); // MythicPlusSeason.db2 PrepareStatement(HOTFIX_SEL_MYTHIC_PLUS_SEASON, "SELECT ID, MilestoneSeason, StartTimeEvent, ExpansionLevel, HeroicLFGDungeonMinGear" @@ -1350,9 +1353,9 @@ void HotfixDatabaseConnection::DoPrepareStatements() "LfgStatus1, LfgStatus2, LfgStatus3, LfgStatus4, LfgCompare1, LfgCompare2, LfgCompare3, LfgCompare4, LfgValue1, LfgValue2, LfgValue3, " "LfgValue4, CurrencyID1, CurrencyID2, CurrencyID3, CurrencyID4, CurrencyCount1, CurrencyCount2, CurrencyCount3, CurrencyCount4, " "QuestKillMonster1, QuestKillMonster2, QuestKillMonster3, QuestKillMonster4, QuestKillMonster5, QuestKillMonster6, MovementFlags1, " - "MovementFlags2, TraitNodeEntryID1, TraitNodeEntryID2, TraitNodeEntryID3, TraitNodeEntryID4, TraitNodeEntryMinRank1, TraitNodeEntryMinRank2, " - "TraitNodeEntryMinRank3, TraitNodeEntryMinRank4, TraitNodeEntryMaxRank1, TraitNodeEntryMaxRank2, TraitNodeEntryMaxRank3, " - "TraitNodeEntryMaxRank4 FROM player_condition WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "MovementFlags2, RaceMask_1, RaceMask_2, TraitNodeEntryID1, TraitNodeEntryID2, TraitNodeEntryID3, TraitNodeEntryID4, TraitNodeEntryMinRank1, " + "TraitNodeEntryMinRank2, TraitNodeEntryMinRank3, TraitNodeEntryMinRank4, TraitNodeEntryMaxRank1, TraitNodeEntryMaxRank2, " + "TraitNodeEntryMaxRank3, TraitNodeEntryMaxRank4 FROM player_condition WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT MAX(ID) + 1 FROM player_condition", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_PLAYER_CONDITION, "SELECT ID, FailureDescription_lang FROM player_condition_locale WHERE (`VerifiedBuild` > 0) = ?" " AND locale = ?", CONNECTION_SYNCH); @@ -1491,7 +1494,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_REWARD_PACK_X_ITEM, "SELECT MAX(ID) + 1 FROM reward_pack_x_item", CONNECTION_SYNCH); // Scenario.db2 - PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Type, Flags, UiTextureKitID FROM scenario WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SCENARIO, "SELECT ID, Name, AreaTableID, Type, Flags, UiTextureKitID, UiScenarioDisplayInfoID FROM scenario" + " WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SCENARIO, "SELECT MAX(ID) + 1 FROM scenario", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SCENARIO, "SELECT ID, Name_lang FROM scenario_locale WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1535,7 +1539,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() // SkillLineAbility.db2 PrepareStatement(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT RaceMask, AbilityVerb, AbilityAllVerb, ID, SkillLine, Spell, MinSkillLineRank, ClassMask, " "SupercedesSpell, AcquireMethod, TrivialSkillLineRankHigh, TrivialSkillLineRankLow, Flags, NumSkillUps, UniqueBit, TradeSkillCategoryID, " - "SkillupSkillLineID FROM skill_line_ability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + "SkillupSkillLineID, RaceMask_1, RaceMask_2 FROM skill_line_ability WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT MAX(ID) + 1 FROM skill_line_ability", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_SKILL_LINE_ABILITY, "SELECT ID, AbilityVerb_lang, AbilityAllVerb_lang FROM skill_line_ability_locale" " WHERE (`VerifiedBuild` > 0) = ? AND locale = ?", CONNECTION_SYNCH); @@ -1546,8 +1550,8 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_LINE_X_TRAIT_TREE, "SELECT MAX(ID) + 1 FROM skill_line_x_trait_tree", CONNECTION_SYNCH); // SkillRaceClassInfo.db2 - PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, ClassMask, Flags, Availability, MinLevel, SkillTierID" - " FROM skill_race_class_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); + PrepareStatement(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT ID, RaceMask, SkillID, ClassMask, Flags, Availability, MinLevel, SkillTierID, " + "RaceMask_1, RaceMask_2 FROM skill_race_class_info WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_SKILL_RACE_CLASS_INFO, "SELECT MAX(ID) + 1 FROM skill_race_class_info", CONNECTION_SYNCH); // SoulbindConduitRank.db2 @@ -1998,7 +2002,7 @@ void HotfixDatabaseConnection::DoPrepareStatements() PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_ILLUSION, "SELECT MAX(ID) + 1 FROM transmog_illusion", CONNECTION_SYNCH); // TransmogOutfitEntry.db2 - PrepareStatement(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT Cost, Name, ID, OrderIndex, Source, Flags, SetType, OverrideCostModifier" + PrepareStatement(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT Cost, Name, ID, OrderIndex, Source, Flags, SetType, OverrideCostModifier, OutfitIndex" " FROM transmog_outfit_entry WHERE (`VerifiedBuild` > 0) = ?", CONNECTION_SYNCH); PREPARE_MAX_ID_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT MAX(ID) + 1 FROM transmog_outfit_entry", CONNECTION_SYNCH); PREPARE_LOCALE_STMT(HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY, "SELECT ID, Name_lang FROM transmog_outfit_entry_locale WHERE (`VerifiedBuild` > 0) = ?" diff --git a/src/server/database/Database/Implementation/HotfixDatabase.h b/src/server/database/Database/Implementation/HotfixDatabase.h index d3a50924b5eac..5af1292b04644 100644 --- a/src/server/database/Database/Implementation/HotfixDatabase.h +++ b/src/server/database/Database/Implementation/HotfixDatabase.h @@ -727,6 +727,7 @@ enum HotfixDatabaseStatements : uint32 HOTFIX_SEL_MOVIE, HOTFIX_SEL_MOVIE_MAX_ID, + HOTFIX_SEL_MOVIE_LOCALE, HOTFIX_SEL_MYTHIC_PLUS_SEASON, HOTFIX_SEL_MYTHIC_PLUS_SEASON_MAX_ID, diff --git a/src/server/game/DataStores/DB2LoadInfo.h b/src/server/game/DataStores/DB2LoadInfo.h index b41ffab613a76..67a87438f4fa5 100644 --- a/src/server/game/DataStores/DB2LoadInfo.h +++ b/src/server/game/DataStores/DB2LoadInfo.h @@ -923,16 +923,18 @@ struct CharTitlesLoadInfo struct CharacterLoadoutLoadInfo { - static constexpr DB2FieldMeta Fields[5] = + static constexpr DB2FieldMeta Fields[7] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "RaceMask" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "ChrClassID" }, { .IsSigned = true, .Type = FT_INT, .Name = "Purpose" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "ItemContext" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 5, &CharacterLoadoutMeta::Instance, HOTFIX_SEL_CHARACTER_LOADOUT }; + static constexpr DB2LoadInfo Instance{ Fields, 7, &CharacterLoadoutMeta::Instance, HOTFIX_SEL_CHARACTER_LOADOUT }; }; struct CharacterLoadoutItemLoadInfo @@ -1122,7 +1124,7 @@ struct ChrCustomizationOptionLoadInfo struct ChrCustomizationReqLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[12] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "RaceMask" }, @@ -1134,9 +1136,11 @@ struct ChrCustomizationReqLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "QuestID" }, { .IsSigned = true, .Type = FT_INT, .Name = "OverrideArchive" }, { .IsSigned = true, .Type = FT_INT, .Name = "ItemModifiedAppearanceID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &ChrCustomizationReqMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_REQ }; + static constexpr DB2LoadInfo Instance{ Fields, 12, &ChrCustomizationReqMeta::Instance, HOTFIX_SEL_CHR_CUSTOMIZATION_REQ }; }; struct ChrCustomizationReqChoiceLoadInfo @@ -1850,7 +1854,7 @@ struct DurabilityQualityLoadInfo struct EmotesLoadInfo { - static constexpr DB2FieldMeta Fields[10] = + static constexpr DB2FieldMeta Fields[12] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "RaceMask" }, @@ -1862,9 +1866,11 @@ struct EmotesLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "EventSoundID" }, { .IsSigned = false, .Type = FT_INT, .Name = "SpellVisualKitID" }, { .IsSigned = true, .Type = FT_INT, .Name = "ClassMask" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 10, &EmotesMeta::Instance, HOTFIX_SEL_EMOTES }; + static constexpr DB2LoadInfo Instance{ Fields, 12, &EmotesMeta::Instance, HOTFIX_SEL_EMOTES }; }; struct EmotesTextLoadInfo @@ -1937,7 +1943,7 @@ struct ExpectedStatModLoadInfo struct FactionLoadInfo { - static constexpr DB2FieldMeta Fields[35] = + static constexpr DB2FieldMeta Fields[43] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "ReputationRaceMask1" }, @@ -1974,9 +1980,17 @@ struct FactionLoadInfo { .IsSigned = false, .Type = FT_FLOAT, .Name = "ParentFactionMod2" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "ParentFactionCap1" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "ParentFactionCap2" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask1_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask1_2" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask2_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask2_2" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask3_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask3_2" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask4_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "ReputationRaceMask4_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 35, &FactionMeta::Instance, HOTFIX_SEL_FACTION }; + static constexpr DB2LoadInfo Instance{ Fields, 43, &FactionMeta::Instance, HOTFIX_SEL_FACTION }; }; struct FactionTemplateLoadInfo @@ -3096,9 +3110,10 @@ struct ItemEffectLoadInfo struct ItemExtendedCostLoadInfo { - static constexpr DB2FieldMeta Fields[27] = + static constexpr DB2FieldMeta Fields[28] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = false, .Type = FT_LONG, .Name = "Money" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "RequiredArenaRating" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "ArenaBracket" }, { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, @@ -3127,7 +3142,7 @@ struct ItemExtendedCostLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "CurrencyCount5" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 27, &ItemExtendedCostMeta::Instance, HOTFIX_SEL_ITEM_EXTENDED_COST }; + static constexpr DB2LoadInfo Instance{ Fields, 28, &ItemExtendedCostMeta::Instance, HOTFIX_SEL_ITEM_EXTENDED_COST }; }; struct ItemLevelSelectorLoadInfo @@ -3279,7 +3294,7 @@ struct ItemScalingConfigLoadInfo struct ItemSearchNameLoadInfo { - static constexpr DB2FieldMeta Fields[18] = + static constexpr DB2FieldMeta Fields[20] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "AllowableRace" }, @@ -3299,9 +3314,11 @@ struct ItemSearchNameLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "Flags3" }, { .IsSigned = true, .Type = FT_INT, .Name = "Flags4" }, { .IsSigned = true, .Type = FT_INT, .Name = "Flags5" }, + { .IsSigned = true, .Type = FT_INT, .Name = "AllowableRace_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "AllowableRace_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 18, &ItemSearchNameMeta::Instance, HOTFIX_SEL_ITEM_SEARCH_NAME }; + static constexpr DB2LoadInfo Instance{ Fields, 20, &ItemSearchNameMeta::Instance, HOTFIX_SEL_ITEM_SEARCH_NAME }; }; struct ItemSetLoadInfo @@ -3352,7 +3369,7 @@ struct ItemSetSpellLoadInfo struct ItemSparseLoadInfo { - static constexpr DB2FieldMeta Fields[102] = + static constexpr DB2FieldMeta Fields[104] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "AllowableRace" }, @@ -3404,6 +3421,8 @@ struct ItemSparseLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "MaxCount" }, { .IsSigned = true, .Type = FT_INT, .Name = "MinReputation" }, { .IsSigned = false, .Type = FT_INT, .Name = "RequiredAbility" }, + { .IsSigned = true, .Type = FT_INT, .Name = "AllowableRace_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "AllowableRace_2" }, { .IsSigned = false, .Type = FT_INT, .Name = "SellPrice" }, { .IsSigned = false, .Type = FT_INT, .Name = "BuyPrice" }, { .IsSigned = false, .Type = FT_INT, .Name = "VendorStackCount" }, @@ -3458,7 +3477,7 @@ struct ItemSparseLoadInfo { .IsSigned = true, .Type = FT_BYTE, .Name = "OverallQualityID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 102, &ItemSparseMeta::Instance, HOTFIX_SEL_ITEM_SPARSE }; + static constexpr DB2LoadInfo Instance{ Fields, 104, &ItemSparseMeta::Instance, HOTFIX_SEL_ITEM_SPARSE }; }; struct ItemSpecLoadInfo @@ -4144,9 +4163,10 @@ struct MountXDisplayLoadInfo struct MovieLoadInfo { - static constexpr DB2FieldMeta Fields[6] = + static constexpr DB2FieldMeta Fields[7] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, + { .IsSigned = false, .Type = FT_STRING, .Name = "Summary" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "Volume" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "KeyID" }, { .IsSigned = false, .Type = FT_INT, .Name = "AudioFileDataID" }, @@ -4154,7 +4174,7 @@ struct MovieLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "SubtitleFileFormat" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 6, &MovieMeta::Instance, HOTFIX_SEL_MOVIE }; + static constexpr DB2LoadInfo Instance{ Fields, 7, &MovieMeta::Instance, HOTFIX_SEL_MOVIE }; }; struct MythicPlusSeasonLoadInfo @@ -4290,7 +4310,7 @@ struct PathNodeLoadInfo static constexpr DB2FieldMeta Fields[4] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, - { .IsSigned = false, .Type = FT_SHORT, .Name = "PathID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "PathID" }, { .IsSigned = true, .Type = FT_SHORT, .Name = "Sequence" }, { .IsSigned = true, .Type = FT_INT, .Name = "LocationID" }, }; @@ -4303,7 +4323,7 @@ struct PathPropertyLoadInfo static constexpr DB2FieldMeta Fields[4] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, - { .IsSigned = false, .Type = FT_SHORT, .Name = "PathID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "PathID" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "PropertyIndex" }, { .IsSigned = true, .Type = FT_INT, .Name = "Value" }, }; @@ -4352,7 +4372,7 @@ struct PhaseXPhaseGroupLoadInfo struct PlayerConditionLoadInfo { - static constexpr DB2FieldMeta Fields[162] = + static constexpr DB2FieldMeta Fields[164] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "RaceMask" }, @@ -4504,6 +4524,8 @@ struct PlayerConditionLoadInfo { .IsSigned = false, .Type = FT_INT, .Name = "QuestKillMonster6" }, { .IsSigned = true, .Type = FT_INT, .Name = "MovementFlags1" }, { .IsSigned = true, .Type = FT_INT, .Name = "MovementFlags2" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_2" }, { .IsSigned = true, .Type = FT_INT, .Name = "TraitNodeEntryID1" }, { .IsSigned = true, .Type = FT_INT, .Name = "TraitNodeEntryID2" }, { .IsSigned = true, .Type = FT_INT, .Name = "TraitNodeEntryID3" }, @@ -4518,7 +4540,7 @@ struct PlayerConditionLoadInfo { .IsSigned = false, .Type = FT_SHORT, .Name = "TraitNodeEntryMaxRank4" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 162, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION }; + static constexpr DB2LoadInfo Instance{ Fields, 164, &PlayerConditionMeta::Instance, HOTFIX_SEL_PLAYER_CONDITION }; }; struct PlayerDataElementAccountLoadInfo @@ -4942,7 +4964,7 @@ struct RewardPackXItemLoadInfo struct ScenarioLoadInfo { - static constexpr DB2FieldMeta Fields[6] = + static constexpr DB2FieldMeta Fields[7] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, @@ -4950,9 +4972,10 @@ struct ScenarioLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "Type" }, { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = false, .Type = FT_INT, .Name = "UiTextureKitID" }, + { .IsSigned = false, .Type = FT_INT, .Name = "UiScenarioDisplayInfoID" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 6, &ScenarioMeta::Instance, HOTFIX_SEL_SCENARIO }; + static constexpr DB2LoadInfo Instance{ Fields, 7, &ScenarioMeta::Instance, HOTFIX_SEL_SCENARIO }; }; struct ScenarioStepLoadInfo @@ -5063,7 +5086,7 @@ struct SkillLineLoadInfo struct SkillLineAbilityLoadInfo { - static constexpr DB2FieldMeta Fields[17] = + static constexpr DB2FieldMeta Fields[19] = { { .IsSigned = true, .Type = FT_LONG, .Name = "RaceMask" }, { .IsSigned = false, .Type = FT_STRING, .Name = "AbilityVerb" }, @@ -5082,9 +5105,11 @@ struct SkillLineAbilityLoadInfo { .IsSigned = true, .Type = FT_SHORT, .Name = "UniqueBit" }, { .IsSigned = true, .Type = FT_SHORT, .Name = "TradeSkillCategoryID" }, { .IsSigned = true, .Type = FT_SHORT, .Name = "SkillupSkillLineID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 17, &SkillLineAbilityMeta::Instance, HOTFIX_SEL_SKILL_LINE_ABILITY }; + static constexpr DB2LoadInfo Instance{ Fields, 19, &SkillLineAbilityMeta::Instance, HOTFIX_SEL_SKILL_LINE_ABILITY }; }; struct SkillLineXTraitTreeLoadInfo @@ -5102,7 +5127,7 @@ struct SkillLineXTraitTreeLoadInfo struct SkillRaceClassInfoLoadInfo { - static constexpr DB2FieldMeta Fields[8] = + static constexpr DB2FieldMeta Fields[10] = { { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, { .IsSigned = true, .Type = FT_LONG, .Name = "RaceMask" }, @@ -5112,9 +5137,11 @@ struct SkillRaceClassInfoLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "Availability" }, { .IsSigned = true, .Type = FT_BYTE, .Name = "MinLevel" }, { .IsSigned = true, .Type = FT_SHORT, .Name = "SkillTierID" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_1" }, + { .IsSigned = true, .Type = FT_INT, .Name = "RaceMask_2" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 8, &SkillRaceClassInfoMeta::Instance, HOTFIX_SEL_SKILL_RACE_CLASS_INFO }; + static constexpr DB2LoadInfo Instance{ Fields, 10, &SkillRaceClassInfoMeta::Instance, HOTFIX_SEL_SKILL_RACE_CLASS_INFO }; }; struct SoulbindConduitRankLoadInfo @@ -6141,7 +6168,7 @@ struct TaxiPathNodeLoadInfo { .IsSigned = false, .Type = FT_FLOAT, .Name = "LocY" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "LocZ" }, { .IsSigned = false, .Type = FT_INT, .Name = "ID" }, - { .IsSigned = false, .Type = FT_SHORT, .Name = "PathID" }, + { .IsSigned = false, .Type = FT_INT, .Name = "PathID" }, { .IsSigned = true, .Type = FT_INT, .Name = "NodeIndex" }, { .IsSigned = false, .Type = FT_SHORT, .Name = "ContinentID" }, { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, @@ -6581,7 +6608,7 @@ struct TransmogIllusionLoadInfo struct TransmogOutfitEntryLoadInfo { - static constexpr DB2FieldMeta Fields[8] = + static constexpr DB2FieldMeta Fields[9] = { { .IsSigned = false, .Type = FT_LONG, .Name = "Cost" }, { .IsSigned = false, .Type = FT_STRING, .Name = "Name" }, @@ -6591,9 +6618,10 @@ struct TransmogOutfitEntryLoadInfo { .IsSigned = true, .Type = FT_INT, .Name = "Flags" }, { .IsSigned = false, .Type = FT_BYTE, .Name = "SetType" }, { .IsSigned = false, .Type = FT_FLOAT, .Name = "OverrideCostModifier" }, + { .IsSigned = true, .Type = FT_INT, .Name = "OutfitIndex" }, }; - static constexpr DB2LoadInfo Instance{ Fields, 8, &TransmogOutfitEntryMeta::Instance, HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY }; + static constexpr DB2LoadInfo Instance{ Fields, 9, &TransmogOutfitEntryMeta::Instance, HOTFIX_SEL_TRANSMOG_OUTFIT_ENTRY }; }; struct TransmogOutfitSlotInfoLoadInfo diff --git a/src/server/game/DataStores/DB2Metadata.h b/src/server/game/DataStores/DB2Metadata.h index 46a9095860e6f..c18f20463a2fa 100644 --- a/src/server/game/DataStores/DB2Metadata.h +++ b/src/server/game/DataStores/DB2Metadata.h @@ -276,8 +276,9 @@ struct AdventureMapPOIMeta struct AlliedRaceMeta { - static constexpr DB2MetaField Fields[8] = + static constexpr DB2MetaField Fields[9] = { + { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -293,9 +294,9 @@ struct AlliedRaceMeta .FileDataId = 1710672, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 8, - .FileFieldCount = 8, - .LayoutHash = 0x979EBCE5, + .FieldCount = 9, + .FileFieldCount = 9, + .LayoutHash = 0x5A623B82, .Fields = Fields }; }; @@ -806,7 +807,7 @@ struct AreaGroupMemberMeta struct AreaPOIMeta { - static constexpr DB2MetaField Fields[21] = + static constexpr DB2MetaField Fields[22] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -815,6 +816,7 @@ struct AreaPOIMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -835,10 +837,10 @@ struct AreaPOIMeta { .FileDataId = 1000630, .IndexField = 2, - .ParentIndexField = 12, - .FieldCount = 21, - .FileFieldCount = 21, - .LayoutHash = 0x5F5EE2EF, + .ParentIndexField = 13, + .FieldCount = 22, + .FileFieldCount = 22, + .LayoutHash = 0xA8930CBB, .Fields = Fields }; }; @@ -2395,12 +2397,13 @@ struct BoneWindModifiersMeta struct BonusRollMeta { - static constexpr DB2MetaField Fields[4] = + static constexpr DB2MetaField Fields[5] = { { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, }; static constexpr DB2Meta Instance = @@ -2408,9 +2411,9 @@ struct BonusRollMeta .FileDataId = 1983274, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 4, - .FileFieldCount = 4, - .LayoutHash = 0x567FCB5C, + .FieldCount = 5, + .FileFieldCount = 5, + .LayoutHash = 0x8012475D, .Fields = Fields }; }; @@ -3200,12 +3203,13 @@ struct CharacterFacialHairStylesMeta struct CharacterLoadoutMeta { - static constexpr DB2MetaField Fields[4] = + static constexpr DB2MetaField Fields[5] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -3213,9 +3217,9 @@ struct CharacterLoadoutMeta .FileDataId = 1344281, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 4, - .FileFieldCount = 4, - .LayoutHash = 0x3367E385, + .FieldCount = 5, + .FileFieldCount = 5, + .LayoutHash = 0xA8A1533F, .Fields = Fields }; }; @@ -3933,7 +3937,7 @@ struct ChrCustomizationOptionMeta struct ChrCustomizationReqMeta { - static constexpr DB2MetaField Fields[9] = + static constexpr DB2MetaField Fields[10] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -3944,6 +3948,7 @@ struct ChrCustomizationReqMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -3951,9 +3956,9 @@ struct ChrCustomizationReqMeta .FileDataId = 3450453, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 9, - .FileFieldCount = 9, - .LayoutHash = 0xEFC66872, + .FieldCount = 10, + .FileFieldCount = 10, + .LayoutHash = 0x216BEF26, .Fields = Fields }; }; @@ -5811,7 +5816,7 @@ struct CreatureDisplayInfoMeta struct CreatureDisplayInfoCondMeta { - static constexpr DB2MetaField Fields[8] = + static constexpr DB2MetaField Fields[9] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, @@ -5820,6 +5825,7 @@ struct CreatureDisplayInfoCondMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 4, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -5827,10 +5833,10 @@ struct CreatureDisplayInfoCondMeta { .FileDataId = 1332686, .IndexField = 1, - .ParentIndexField = 7, - .FieldCount = 8, - .FileFieldCount = 7, - .LayoutHash = 0xD6D105AE, + .ParentIndexField = 8, + .FieldCount = 9, + .FileFieldCount = 8, + .LayoutHash = 0x6D63BCC2, .Fields = Fields }; }; @@ -6376,7 +6382,7 @@ struct CriteriaTreeXEffectMeta { static constexpr DB2MetaField Fields[2] = { - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -6387,7 +6393,7 @@ struct CriteriaTreeXEffectMeta .ParentIndexField = 1, .FieldCount = 2, .FileFieldCount = 1, - .LayoutHash = 0xA95C5FCA, + .LayoutHash = 0x5766D2AA, .Fields = Fields }; }; @@ -7229,7 +7235,7 @@ struct EdgeGlowEffectMeta struct EmotesMeta { - static constexpr DB2MetaField Fields[9] = + static constexpr DB2MetaField Fields[10] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING_NOT_LOCALIZED, .ArraySize = 1, .IsSigned = true }, @@ -7240,6 +7246,7 @@ struct EmotesMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -7247,9 +7254,9 @@ struct EmotesMeta .FileDataId = 1343602, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 9, - .FileFieldCount = 9, - .LayoutHash = 0x590311E0, + .FieldCount = 10, + .FileFieldCount = 10, + .LayoutHash = 0xB573B98C, .Fields = Fields }; }; @@ -7537,7 +7544,7 @@ struct ExpectedStatModMeta struct ExteriorComponentMeta { - static constexpr DB2MetaField Fields[13] = + static constexpr DB2MetaField Fields[14] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true }, @@ -7552,16 +7559,17 @@ struct ExteriorComponentMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = { .FileDataId = 6931305, .IndexField = 2, - .ParentIndexField = 12, - .FieldCount = 13, - .FileFieldCount = 12, - .LayoutHash = 0x027A2F44, + .ParentIndexField = 13, + .FieldCount = 14, + .FileFieldCount = 13, + .LayoutHash = 0x53EA0925, .Fields = Fields }; }; @@ -7721,7 +7729,7 @@ struct ExtraAbilityInfoMeta struct FactionMeta { - static constexpr DB2MetaField Fields[17] = + static constexpr DB2MetaField Fields[21] = { { .Type = FT_LONG, .ArraySize = 4, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -7740,6 +7748,10 @@ struct FactionMeta { .Type = FT_INT, .ArraySize = 4, .IsSigned = true }, { .Type = FT_FLOAT, .ArraySize = 2, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 2, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -7747,9 +7759,9 @@ struct FactionMeta .FileDataId = 1361972, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 17, - .FileFieldCount = 17, - .LayoutHash = 0xCD0F0C19, + .FieldCount = 21, + .FileFieldCount = 21, + .LayoutHash = 0x8119728D, .Fields = Fields }; }; @@ -10315,12 +10327,13 @@ struct GroupFinderActivityXPvpBracketMeta struct GroupFinderCategoryMeta { - static constexpr DB2MetaField Fields[4] = + static constexpr DB2MetaField Fields[5] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -10328,9 +10341,9 @@ struct GroupFinderCategoryMeta .FileDataId = 974812, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 4, - .FileFieldCount = 4, - .LayoutHash = 0x039D6BF9, + .FieldCount = 5, + .FileFieldCount = 5, + .LayoutHash = 0x0D5F1625, .Fields = Fields }; }; @@ -10859,11 +10872,13 @@ struct HouseDecorThemeSetMeta struct HouseExteriorWmoDataMeta { - static constexpr DB2MetaField Fields[3] = + static constexpr DB2MetaField Fields[5] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -10871,9 +10886,9 @@ struct HouseExteriorWmoDataMeta .FileDataId = 6931309, .IndexField = 1, .ParentIndexField = -1, - .FieldCount = 3, - .FileFieldCount = 3, - .LayoutHash = 0x6E03D8C8, + .FieldCount = 5, + .FileFieldCount = 5, + .LayoutHash = 0x95E7A088, .Fields = Fields }; }; @@ -10925,7 +10940,7 @@ struct HouseLevelRewardInfoMeta struct HouseRoomMeta { - static constexpr DB2MetaField Fields[7] = + static constexpr DB2MetaField Fields[8] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, @@ -10934,6 +10949,7 @@ struct HouseRoomMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -10941,9 +10957,9 @@ struct HouseRoomMeta .FileDataId = 5163003, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 7, - .FileFieldCount = 7, - .LayoutHash = 0xDA77DDD3, + .FieldCount = 8, + .FileFieldCount = 8, + .LayoutHash = 0xFC6C2118, .Fields = Fields }; }; @@ -12129,8 +12145,9 @@ struct ItemEffectMeta struct ItemExtendedCostMeta { - static constexpr DB2MetaField Fields[10] = + static constexpr DB2MetaField Fields[11] = { + { .Type = FT_LONG, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -12148,9 +12165,9 @@ struct ItemExtendedCostMeta .FileDataId = 801681, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 10, - .FileFieldCount = 10, - .LayoutHash = 0x6F3FC018, + .FieldCount = 11, + .FileFieldCount = 11, + .LayoutHash = 0x22331DAB, .Fields = Fields }; }; @@ -12689,7 +12706,7 @@ struct ItemScalingConfigMeta struct ItemSearchNameMeta { - static constexpr DB2MetaField Fields[13] = + static constexpr DB2MetaField Fields[14] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -12704,6 +12721,7 @@ struct ItemSearchNameMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 5, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -12711,9 +12729,9 @@ struct ItemSearchNameMeta .FileDataId = 1273408, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 13, - .FileFieldCount = 13, - .LayoutHash = 0x40C3317A, + .FieldCount = 14, + .FileFieldCount = 14, + .LayoutHash = 0xA010A221, .Fields = Fields }; }; @@ -12766,7 +12784,7 @@ struct ItemSetSpellMeta struct ItemSparseMeta { - static constexpr DB2MetaField Fields[67] = + static constexpr DB2MetaField Fields[68] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -12790,6 +12808,7 @@ struct ItemSparseMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, @@ -12842,9 +12861,9 @@ struct ItemSparseMeta .FileDataId = 1572924, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 67, - .FileFieldCount = 67, - .LayoutHash = 0xABF517CD, + .FieldCount = 68, + .FileFieldCount = 68, + .LayoutHash = 0x88109EDA, .Fields = Fields }; }; @@ -14049,7 +14068,7 @@ struct LoadingScreenTaxiSplinesMeta { static constexpr DB2MetaField Fields[5] = { - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_FLOAT, .ArraySize = 10, .IsSigned = true }, @@ -14063,7 +14082,7 @@ struct LoadingScreenTaxiSplinesMeta .ParentIndexField = -1, .FieldCount = 5, .FileFieldCount = 5, - .LayoutHash = 0x7B0D052E, + .LayoutHash = 0x877DB13E, .Fields = Fields }; }; @@ -15250,8 +15269,9 @@ struct MountXSpellVisualKitPickerMeta struct MovieMeta { - static constexpr DB2MetaField Fields[5] = + static constexpr DB2MetaField Fields[6] = { + { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, @@ -15264,9 +15284,9 @@ struct MovieMeta .FileDataId = 1332556, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 5, - .FileFieldCount = 5, - .LayoutHash = 0x2C44DB9A, + .FieldCount = 6, + .FileFieldCount = 6, + .LayoutHash = 0xF53888FA, .Fields = Fields }; }; @@ -16134,7 +16154,7 @@ struct OccluderNodeMeta { static constexpr DB2MetaField Fields[3] = { - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -16146,7 +16166,7 @@ struct OccluderNodeMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0xC1037415, + .LayoutHash = 0x5F2092E5, .Fields = Fields }; }; @@ -16497,7 +16517,7 @@ struct PathNodeMeta { static constexpr DB2MetaField Fields[3] = { - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -16509,7 +16529,7 @@ struct PathNodeMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0xC1037415, + .LayoutHash = 0x5F2092E5, .Fields = Fields }; }; @@ -16518,7 +16538,7 @@ struct PathNodePropertyMeta { static constexpr DB2MetaField Fields[4] = { - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -16531,7 +16551,7 @@ struct PathNodePropertyMeta .ParentIndexField = -1, .FieldCount = 4, .FileFieldCount = 4, - .LayoutHash = 0x4C0E1D44, + .LayoutHash = 0xBFE87314, .Fields = Fields }; }; @@ -16540,7 +16560,7 @@ struct PathPropertyMeta { static constexpr DB2MetaField Fields[3] = { - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; @@ -16552,7 +16572,7 @@ struct PathPropertyMeta .ParentIndexField = -1, .FieldCount = 3, .FileFieldCount = 3, - .LayoutHash = 0x27A2BE5C, + .LayoutHash = 0xEE64C24C, .Fields = Fields }; }; @@ -17032,7 +17052,7 @@ struct PlayerCompanionInfoMeta struct PlayerConditionMeta { - static constexpr DB2MetaField Fields[86] = + static constexpr DB2MetaField Fields[87] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -17117,6 +17137,7 @@ struct PlayerConditionMeta { .Type = FT_INT, .ArraySize = 4, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 6, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 4, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 4, .IsSigned = false }, { .Type = FT_SHORT, .ArraySize = 4, .IsSigned = false }, @@ -17127,9 +17148,9 @@ struct PlayerConditionMeta .FileDataId = 1045411, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 86, - .FileFieldCount = 86, - .LayoutHash = 0x2060B1E8, + .FieldCount = 87, + .FileFieldCount = 87, + .LayoutHash = 0xC44FB18A, .Fields = Fields }; }; @@ -18298,7 +18319,7 @@ struct QuestV2Meta struct QuestV2CliTaskMeta { - static constexpr DB2MetaField Fields[24] = + static constexpr DB2MetaField Fields[25] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -18324,6 +18345,7 @@ struct QuestV2CliTaskMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 3, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 3, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -18331,9 +18353,9 @@ struct QuestV2CliTaskMeta .FileDataId = 1028735, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 24, - .FileFieldCount = 24, - .LayoutHash = 0x5F34001B, + .FieldCount = 25, + .FileFieldCount = 25, + .LayoutHash = 0x4CDD3037, .Fields = Fields }; }; @@ -19157,13 +19179,14 @@ struct SSAOSettingsMeta struct ScenarioMeta { - static constexpr DB2MetaField Fields[5] = + static constexpr DB2MetaField Fields[6] = { { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, }; static constexpr DB2Meta Instance = @@ -19171,9 +19194,9 @@ struct ScenarioMeta .FileDataId = 1139062, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 5, - .FileFieldCount = 5, - .LayoutHash = 0x64D88505, + .FieldCount = 6, + .FileFieldCount = 6, + .LayoutHash = 0xB7C9ECF5, .Fields = Fields }; }; @@ -19571,7 +19594,7 @@ struct SkillLineMeta struct SkillLineAbilityMeta { - static constexpr DB2MetaField Fields[17] = + static constexpr DB2MetaField Fields[18] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -19590,6 +19613,7 @@ struct SkillLineAbilityMeta { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -19597,9 +19621,9 @@ struct SkillLineAbilityMeta .FileDataId = 1266278, .IndexField = 3, .ParentIndexField = 4, - .FieldCount = 17, - .FileFieldCount = 17, - .LayoutHash = 0xC070825E, + .FieldCount = 18, + .FileFieldCount = 18, + .LayoutHash = 0x0E85F43A, .Fields = Fields }; }; @@ -19627,7 +19651,7 @@ struct SkillLineXTraitTreeMeta struct SkillRaceClassInfoMeta { - static constexpr DB2MetaField Fields[7] = + static constexpr DB2MetaField Fields[8] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, @@ -19636,6 +19660,7 @@ struct SkillRaceClassInfoMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -19643,9 +19668,9 @@ struct SkillRaceClassInfoMeta .FileDataId = 1240406, .IndexField = -1, .ParentIndexField = 1, - .FieldCount = 7, - .FileFieldCount = 7, - .LayoutHash = 0x7BCD9960, + .FieldCount = 8, + .FileFieldCount = 8, + .LayoutHash = 0x61E9040C, .Fields = Fields }; }; @@ -21214,7 +21239,7 @@ struct SpellEquippedItemsMeta struct SpellFlyoutMeta { - static constexpr DB2MetaField Fields[6] = + static constexpr DB2MetaField Fields[7] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = true }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -21222,6 +21247,7 @@ struct SpellFlyoutMeta { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 2, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -21229,9 +21255,9 @@ struct SpellFlyoutMeta .FileDataId = 1146819, .IndexField = -1, .ParentIndexField = -1, - .FieldCount = 6, - .FileFieldCount = 6, - .LayoutHash = 0x380879DE, + .FieldCount = 7, + .FileFieldCount = 7, + .LayoutHash = 0x6EC60EBA, .Fields = Fields }; }; @@ -22853,7 +22879,7 @@ struct TaxiPathNodeMeta { { .Type = FT_FLOAT, .ArraySize = 3, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = false }, - { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_SHORT, .ArraySize = 1, .IsSigned = false }, { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, @@ -22869,7 +22895,7 @@ struct TaxiPathNodeMeta .ParentIndexField = 2, .FieldCount = 9, .FileFieldCount = 9, - .LayoutHash = 0xB70D1EE0, + .LayoutHash = 0xFE362E70, .Fields = Fields }; }; @@ -23834,7 +23860,7 @@ struct TransmogIllusionMeta struct TransmogOutfitEntryMeta { - static constexpr DB2MetaField Fields[8] = + static constexpr DB2MetaField Fields[9] = { { .Type = FT_LONG, .ArraySize = 1, .IsSigned = false }, { .Type = FT_STRING, .ArraySize = 1, .IsSigned = true }, @@ -23844,6 +23870,7 @@ struct TransmogOutfitEntryMeta { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, { .Type = FT_BYTE, .ArraySize = 1, .IsSigned = false }, { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, }; static constexpr DB2Meta Instance = @@ -23851,9 +23878,9 @@ struct TransmogOutfitEntryMeta .FileDataId = 7320164, .IndexField = 2, .ParentIndexField = -1, - .FieldCount = 8, - .FileFieldCount = 8, - .LayoutHash = 0xD6AF6580, + .FieldCount = 9, + .FileFieldCount = 9, + .LayoutHash = 0x91D51304, .Fields = Fields }; }; @@ -24557,6 +24584,25 @@ struct UIModifiedInstanceMeta }; }; +struct UIScenarioDisplayInfoMeta +{ + static constexpr DB2MetaField Fields[1] = + { + { .Type = FT_INT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 7725784, + .IndexField = -1, + .ParentIndexField = -1, + .FieldCount = 1, + .FileFieldCount = 1, + .LayoutHash = 0x1BD175A4, + .Fields = Fields + }; +}; + struct UIScriptedAnimationEffectMeta { static constexpr DB2MetaField Fields[26] = @@ -26726,6 +26772,25 @@ struct WindSettingsMeta }; }; +struct WmoMaxScaleMeta +{ + static constexpr DB2MetaField Fields[1] = + { + { .Type = FT_FLOAT, .ArraySize = 1, .IsSigned = true }, + }; + + static constexpr DB2Meta Instance = + { + .FileDataId = 7836461, + .IndexField = -1, + .ParentIndexField = -1, + .FieldCount = 1, + .FileFieldCount = 1, + .LayoutHash = 0x83D2EFFC, + .Fields = Fields + }; +}; + struct WorldBossLockoutMeta { static constexpr DB2MetaField Fields[2] = diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index ced4b66d33a8c..2c5f9163ba147 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -1489,6 +1489,9 @@ void DB2Manager::IndexLoadedStores() ASSERT(entry->RangeIndex < MAX_BATTLEGROUND_BRACKETS, "PvpDifficulty bracket (%d) exceeded max allowed value (%d)", entry->RangeIndex, MAX_BATTLEGROUND_BRACKETS); } + for (PVPStatEntry const* pvpStat : sPVPStatStore) + _pvpStatIdsByMap[pvpStat->MapID].insert(pvpStat->ID); + for (PvpTalentSlotUnlockEntry const* talentUnlock : sPvpTalentSlotUnlockStore) { ASSERT(talentUnlock->Slot < (1 << MAX_PVP_TALENT_SLOTS)); @@ -1706,9 +1709,6 @@ void DB2Manager::IndexLoadedStores() sOldContinentsNodesMask[field] |= submask; } - for (PVPStatEntry const* pvpStat : sPVPStatStore) - _pvpStatIdsByMap[pvpStat->MapID].insert(pvpStat->ID); - TC_LOG_INFO("server.loading", ">> Indexed DB2 data stores in {} ms", GetMSTimeDiffToNow(oldMSTime)); } diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index d4cf2268e315d..989a595e8188a 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -660,6 +660,7 @@ struct CharacterLoadoutEntry int8 ChrClassID; int32 Purpose; uint8 ItemContext; + Trinity::RaceMask> RaceMask_; bool IsForNewCharacter() const { return Purpose == 9; } }; @@ -818,6 +819,7 @@ struct ChrCustomizationReqEntry int32 QuestID; int32 OverrideArchive; // -1: allow any, otherwise must match OverrideArchive cvar int32 ItemModifiedAppearanceID; + Trinity::RaceMask> RaceMask_; EnumFlag GetFlags() const { return static_cast(Flags); } }; @@ -1620,6 +1622,7 @@ struct EmotesEntry uint32 EventSoundID; uint32 SpellVisualKitID; int32 ClassMask; + Trinity::RaceMask> RaceMask_; }; struct EmotesTextEntry @@ -1690,6 +1693,10 @@ struct FactionEntry std::array ReputationMax; std::array ParentFactionMod; // Faction outputs rep * ParentFactionModOut as spillover reputation std::array ParentFactionCap; // The highest rank the faction will profit from incoming spillover + Trinity::RaceMask> ReputationRaceMask1_; + Trinity::RaceMask> ReputationRaceMask2_; + Trinity::RaceMask> ReputationRaceMask3_; + Trinity::RaceMask> ReputationRaceMask4_; // helpers bool CanHaveReputation() const @@ -2440,6 +2447,7 @@ struct ItemEffectEntry struct ItemExtendedCostEntry { uint32 ID; + uint64 Money; uint16 RequiredArenaRating; int8 ArenaBracket; // arena slot restrictions (min slot value) int32 Flags; @@ -2560,6 +2568,7 @@ struct ItemSearchNameEntry uint32 RequiredAbility; uint16 ItemLevel; std::array Flags; + Trinity::RaceMask> AllowableRace_; }; #define MAX_ITEM_SET_ITEMS 17 @@ -2609,6 +2618,7 @@ struct ItemSparseEntry int32 MaxCount; int32 MinReputation; uint32 RequiredAbility; + Trinity::RaceMask> AllowableRace_; uint32 SellPrice; uint32 BuyPrice; uint32 VendorStackCount; @@ -3126,6 +3136,7 @@ struct MountXDisplayEntry struct MovieEntry { uint32 ID; + LocalizedString Summary; uint8 Volume; uint8 KeyID; uint32 AudioFileDataID; @@ -3212,7 +3223,7 @@ struct PathEntry struct PathNodeEntry { uint32 ID; - uint16 PathID; + int32 PathID; int16 Sequence; int32 LocationID; }; @@ -3220,7 +3231,7 @@ struct PathNodeEntry struct PathPropertyEntry { uint32 ID; - uint16 PathID; + int32 PathID; uint8 PropertyIndex; int32 Value; @@ -3339,6 +3350,7 @@ struct PlayerConditionEntry std::array CurrencyCount; std::array QuestKillMonster; std::array MovementFlags; + Trinity::RaceMask> RaceMask_; std::array TraitNodeEntryID; std::array TraitNodeEntryMinRank; std::array TraitNodeEntryMaxRank; @@ -3605,6 +3617,7 @@ struct ScenarioEntry int32 Type; int32 Flags; uint32 UiTextureKitID; + uint32 UiScenarioDisplayInfoID; }; struct ScenarioStepEntry @@ -3705,6 +3718,7 @@ struct SkillLineAbilityEntry int16 UniqueBit; int16 TradeSkillCategoryID; int16 SkillupSkillLineID; + Trinity::RaceMask> RaceMask_; SkillLineAbilityAcquireMethod GetAcquireMethod() const { return static_cast(AcquireMethod); } EnumFlag GetFlags() const { return static_cast(Flags); } @@ -3728,6 +3742,7 @@ struct SkillRaceClassInfoEntry int32 Availability; int8 MinLevel; int16 SkillTierID; + Trinity::RaceMask> RaceMask_; }; struct SoulbindConduitRankEntry @@ -4394,7 +4409,7 @@ struct TaxiPathNodeEntry { DBCPosition3D Loc; uint32 ID; - uint16 PathID; + uint32 PathID; int32 NodeIndex; uint16 ContinentID; int32 Flags; @@ -4706,6 +4721,7 @@ struct TransmogOutfitEntryEntry int32 Flags; uint8 SetType; float OverrideCostModifier; + int32 OutfitIndex; TransmogOutfitEntrySource GetSource() const { return static_cast(Source); } bool HasFlag(TransmogOutfitEntryFlags flag) const { return EnumFlag(static_cast(Flags)).HasFlag(flag); } diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index b7e897b2fbcb8..5c85d44cc42a1 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -802,7 +802,7 @@ enum class CriteriaType : int16 RemoveDecor = 271, /*NYI*/ // Remove any decor CollectUniqueDecor = 272, /*NYI*/ // Collect Unique Decor - Count = 283 + Count = 284 }; enum class CriteriaTreeFlags : uint16 @@ -1514,6 +1514,25 @@ enum ItemSetFlags ITEM_SET_FLAG_LEGACY_INACTIVE = 0x01, }; +enum class ItemSheatheType : uint8 +{ + None = 0, + Shoulder = 1, + Inverted = 2, + Hip = 3, + Shield = 4, + Crossbow = 5, + ShoulderInvis = 6, + InvertedInvis = 7, + HipInvis = 8, + ShieldInvis = 9, + CrossbowInvis = 10, + InvertedDualWield = 11, + InvertedDualWieldInvis = 12, + + Max +}; + enum ItemSpecStat { ITEM_SPEC_STAT_INTELLECT = 0, @@ -2626,6 +2645,16 @@ enum class TransmogOutfitSlotOptionFlags : int32 DEFINE_ENUM_FLAG(TransmogOutfitSlotOptionFlags); +enum class TransmogOutfitSlotOptionSheatheCategory : uint8 +{ + Default = 0, + Back = 1, + Side = 2, + Hide = 3, + + Max +}; + enum class TransmogSituation : int8 { AllSpecs = 0, diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index 3a8757407e692..f1deda3040b88 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -850,6 +850,7 @@ struct TC_GAME_API ItemTemplate uint32 GetId() const { return BasicData->ID; } uint32 GetClass() const { return BasicData->ClassID; } uint32 GetSubClass() const { return BasicData->SubclassID; } + ItemSheatheType GetSheatheType() const { return static_cast(BasicData->SheatheType); } uint32 GetQuality() const { return ExtendedData->OverallQualityID; } uint32 GetOtherFactionItemId() const { return ExtendedData->FactionRelated; } float GetPriceRandomValue() const { return ExtendedData->PriceRandomValue; } diff --git a/src/server/game/Entities/Object/BaseEntity.cpp b/src/server/game/Entities/Object/BaseEntity.cpp index ea0ca37684239..8c92b90085bec 100644 --- a/src/server/game/Entities/Object/BaseEntity.cpp +++ b/src/server/game/Entities/Object/BaseEntity.cpp @@ -41,7 +41,6 @@ struct FragmentInfoInitializer EntityFragmentInfos::Register(EntityFragment::FHousingRoomComponentMesh_C, WowCS::FragmentSerializationTraits{}); EntityFragmentInfos::Register(EntityFragment::FHousingPlayerHouse_C, WowCS::FragmentSerializationTraits{}); EntityFragmentInfos::Register(EntityFragment::FJamHousingCornerstone_C, WowCS::FragmentSerializationTraits{}); - EntityFragmentInfos::Register(EntityFragment::FHousingPlotAreaTrigger_C, WowCS::FragmentSerializationTraits{}); EntityFragmentInfos::Register(EntityFragment::FNeighborhoodMirrorData_C, WowCS::FragmentSerializationTraits{}); EntityFragmentInfos::Register(EntityFragment::FMirroredPositionData_C, WowCS::FragmentSerializationTraits{}); EntityFragmentInfos::Register(EntityFragment::PlayerHouseInfoComponent_C, WowCS::FragmentSerializationTraits{}); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 0b8f82c65be81..29587b3997d13 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -883,6 +883,7 @@ void VisibleItem::WriteCreate(ByteBuffer& data, Player const* receiver, Unit con data << uint16(ItemVisual); data << uint32(ItemModifiedAppearanceID); data << uint8(TransmogSlotOption); + data << uint8(SheatheCategory); data.WriteBit(HasTransmog); data.WriteBit(HasIllusion); data.FlushBits(); @@ -894,7 +895,7 @@ void VisibleItem::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player c if (ignoreChangesMask) changesMask.SetAll(); - data.WriteBits(changesMask.GetBlock(0), 10); + data.WriteBits(changesMask.GetBlock(0), 11); if (changesMask[0]) { @@ -938,6 +939,10 @@ void VisibleItem::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player c { data << uint8(TransmogSlotOption); } + if (changesMask[10]) + { + data << uint8(SheatheCategory); + } } data.FlushBits(); } @@ -953,6 +958,7 @@ void VisibleItem::ClearChangesMask() Base::ClearChangesMask(ItemVisual); Base::ClearChangesMask(ItemModifiedAppearanceID); Base::ClearChangesMask(TransmogSlotOption); + Base::ClearChangesMask(SheatheCategory); _changesMask.ResetAll(); } @@ -2582,6 +2588,7 @@ void PlayerData::WriteCreate(EnumFlag fieldVisibilityFlags, Byt { QuestLog[i].WriteCreate(data, receiver, owner); } + WriteMapFieldCreate(QuestLogQuestIdToIndex, data, receiver, owner); data << uint32(QuestSessionQuestLog.size()); } data << int32(PlayerTitle); @@ -2674,7 +2681,7 @@ void PlayerData::WriteCreate(EnumFlag fieldVisibilityFlags, Byt static constexpr void PlayerDataAppendAllowedFieldsMaskForFlag(PlayerData::Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::PartyMember)) - allowedMaskForTarget |= std::array{ 0x00000022u, 0xFFF00000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000000Fu, 0x00000000u, 0x00000000u, 0x00000000u }; + allowedMaskForTarget |= std::array{ 0x02000022u, 0xFFE00000u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000001Fu, 0x00000000u, 0x00000000u, 0x00000000u }; } void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) @@ -2684,14 +2691,14 @@ void PlayerData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, Enum void PlayerData::FilterDisallowedFieldsMaskForFlag(Mask& changesMask, EnumFlag fieldVisibilityFlags) { - Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x000FFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFF0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000001Fu }); + Mask allowedMaskForTarget({ 0xFDFFFFDDu, 0x001FFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFE0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000003Fu }); PlayerDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); changesMask &= allowedMaskForTarget; } void PlayerData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const { - Mask allowedMaskForTarget({ 0xFFFFFFDDu, 0x000FFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFF0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000001Fu }); + Mask allowedMaskForTarget({ 0xFDFFFFDDu, 0x001FFFFFu, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0x00000000u, 0xFFFFFFE0u, 0xFFFFFFFFu, 0xFFFFFFFFu, 0x0000003Fu }); PlayerDataAppendAllowedFieldsMaskForFlag(allowedMaskForTarget, fieldVisibilityFlags); WriteUpdate(_changesMask & allowedMaskForTarget, data, receiver, owner, false); } @@ -2889,102 +2896,106 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } if (changesMask[25]) { - data << int32(PlayerTitle); + WriteMapFieldUpdate(QuestLogQuestIdToIndex, ignoreNestedChangesMask, data, receiver, owner); } if (changesMask[26]) { - data << int32(FakeInebriation); + data << int32(PlayerTitle); } if (changesMask[27]) { - data << uint32(VirtualPlayerRealm); + data << int32(FakeInebriation); } if (changesMask[28]) { - data << uint32(CurrentSpecID); + data << uint32(VirtualPlayerRealm); } if (changesMask[29]) { - data << int32(CurrentCombatTraitConfigSubTreeID); + data << uint32(CurrentSpecID); } if (changesMask[30]) { - data << int32(TaxiMountAnimKitID); + data << int32(CurrentCombatTraitConfigSubTreeID); } if (changesMask[31]) { - data << uint8(CurrentBattlePetBreedQuality); + data << int32(TaxiMountAnimKitID); } } if (changesMask[32]) { if (changesMask[33]) { - data << int32(HonorLevel); + data << uint8(CurrentBattlePetBreedQuality); } if (changesMask[34]) + { + data << int32(HonorLevel); + } + if (changesMask[35]) { data << int64(LogoutTime); } - if (changesMask[36]) + if (changesMask[37]) { data << int32(OfferedAdvJournalQuestID); } - if (changesMask[37]) + if (changesMask[38]) { data << int32(OfferedScriptQuestID); } - if (changesMask[38]) + if (changesMask[39]) { data << int32(CurrentBattlePetSpeciesID); } - if (changesMask[39]) + if (changesMask[40]) { CtrOptions->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[40]) + if (changesMask[41]) { data << int32(CovenantID); } - if (changesMask[41]) + if (changesMask[42]) { data << int32(SoulbindID); } - if (changesMask[44]) + if (changesMask[45]) { data << *SpectateTarget; } - if (changesMask[45]) + if (changesMask[46]) { data << int32(WorldLootObjectInventorySwapSlot); } - if (changesMask[47]) + if (changesMask[48]) { PersonalTabard->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[48]) + if (changesMask[49]) { NpcAsPlayerInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[35]) + if (changesMask[36]) { data.WriteBits(Name->size(), 6); } data.WriteBits(DeclinedNames.has_value(), 1); data.FlushBits(); - if (changesMask[42]) + if (changesMask[43]) { data << *DungeonScore; } - if (changesMask[35]) + if (changesMask[36]) { data << WorldPackets::SizedString::Data(*Name); } - if (changesMask[43]) + if (changesMask[44]) { LeaverInfo->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[46]) + if (changesMask[47]) { if (DeclinedNames.has_value()) { @@ -2992,21 +3003,21 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } - if (changesMask[49]) + if (changesMask[50]) { for (uint32 i = 0; i < 2; ++i) { - if (changesMask[50 + i]) + if (changesMask[51 + i]) { data << uint8(PartyType[i]); } } } - if (changesMask[52]) + if (changesMask[53]) { for (uint32 i = 0; i < 175; ++i) { - if (changesMask[53 + i]) + if (changesMask[54 + i]) { if (noQuestLogChangesMask) QuestLog[i].WriteCreate(data, receiver, owner); @@ -3015,51 +3026,51 @@ void PlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player c } } } - if (changesMask[248]) + if (changesMask[249]) { for (uint32 i = 0; i < 6; ++i) { - if (changesMask[249 + i]) + if (changesMask[250 + i]) { data << float(AvgItemLevel[i]); } } } - if (changesMask[255]) + if (changesMask[256]) { for (uint32 i = 0; i < 32; ++i) { - if (changesMask[256 + i]) + if (changesMask[257 + i]) { ForcedReactions[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } } - if (changesMask[305]) + if (changesMask[306]) { for (uint32 i = 0; i < 19; ++i) { - if (changesMask[306 + i]) + if (changesMask[307 + i]) { data << uint32(PlunderstormItemDisplayID[i]); } } } - if (changesMask[228]) + if (changesMask[229]) { for (uint32 i = 0; i < 19; ++i) { - if (changesMask[229 + i]) + if (changesMask[230 + i]) { VisibleItems[i].WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } } - if (changesMask[288]) + if (changesMask[289]) { for (uint32 i = 0; i < 16; ++i) { - if (changesMask[289 + i]) + if (changesMask[290 + i]) { data << VisibleEquipableSpells[i]; } @@ -3094,6 +3105,7 @@ void PlayerData::ClearChangesMask() Base::ClearChangesMask(ArenaFaction); Base::ClearChangesMask(DuelTeam); Base::ClearChangesMask(GuildTimeStamp); + Base::ClearChangesMask(QuestLogQuestIdToIndex); Base::ClearChangesMask(PlayerTitle); Base::ClearChangesMask(FakeInebriation); Base::ClearChangesMask(VirtualPlayerRealm); @@ -4889,112 +4901,79 @@ void BankTabSettings::ClearChangesMask() void WalkInData::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { data << int32(MapID); - data << int64(Field_8); - data << Field_18; - data.WriteBits(Type, 1); + data << int64(InstanceID); + data << WalkInPartyGUID; + data.WriteBits(WalkInInstanceType, 1); data.FlushBits(); } void WalkInData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const { data << int32(MapID); - data << int64(Field_8); - data << Field_18; - data.WriteBits(Type, 1); + data << int64(InstanceID); + data << WalkInPartyGUID; + data.WriteBits(WalkInInstanceType, 1); data.FlushBits(); } bool WalkInData::operator==(WalkInData const& right) const { return MapID == right.MapID - && Field_8 == right.Field_8 - && Type == right.Type - && Field_18 == right.Field_18; + && InstanceID == right.InstanceID + && WalkInInstanceType == right.WalkInInstanceType + && WalkInPartyGUID == right.WalkInPartyGUID; } void DelveData::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << int32(Field_0); - data << uint64(Field_8); - data << int32(Field_10); - data << int32(SpellID); - data << uint32(Owners.size()); - for (uint32 i = 0; i < Owners.size(); ++i) + data << int32(MapID); + data << int32(Tier); + data << uint64(InstanceID); + data << uint32(PlayersEligibleForRewards.size()); + data << uint32(ActiveOptionalAffixIDs.size()); + data << int32(EntranceType); + for (uint32 i = 0; i < PlayersEligibleForRewards.size(); ++i) { - data << Owners[i]; + data << PlayersEligibleForRewards[i]; } - data.WriteBits(Started, 1); - data.FlushBits(); -} - -void DelveData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ - data.FlushBits(); - data << int32(Field_0); - data << uint64(Field_8); - data << int32(Field_10); - data << int32(SpellID); - data << uint32(Owners.size()); - for (uint32 i = 0; i < Owners.size(); ++i) + for (uint32 i = 0; i < ActiveOptionalAffixIDs.size(); ++i) { - data << Owners[i]; + data << int32(ActiveOptionalAffixIDs[i]); } - data.WriteBits(Started, 1); + data.WriteBits(RestrictingRewardPlayers, 1); data.FlushBits(); } -bool DelveData::operator==(DelveData const& right) const -{ - return Owners == right.Owners - && Field_0 == right.Field_0 - && Field_8 == right.Field_8 - && Field_10 == right.Field_10 - && SpellID == right.SpellID - && Started == right.Started; -} - -void ChallengeModeData::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const +void DelveData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << int32(MapID); - data << int32(InitialPlayerCount); - data << uint64(InstanceID); - data << int64(StartTime); - data << KeystoneOwnerGUID; - data << LeaverGUID; - data << int64(InstanceAbandonVoteCooldown); - data.WriteBits(IsActive, 1); - data.WriteBits(HasRestrictions, 1); - data.WriteBits(CanVoteAbandon, 1); data.FlushBits(); -} - -void ChallengeModeData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const -{ data << int32(MapID); - data << int32(InitialPlayerCount); + data << int32(Tier); data << uint64(InstanceID); - data << int64(StartTime); - data << KeystoneOwnerGUID; - data << LeaverGUID; - data << int64(InstanceAbandonVoteCooldown); - data.WriteBits(IsActive, 1); - data.WriteBits(HasRestrictions, 1); - data.WriteBits(CanVoteAbandon, 1); + data << uint32(PlayersEligibleForRewards.size()); + data << uint32(ActiveOptionalAffixIDs.size()); + data << int32(EntranceType); + for (uint32 i = 0; i < PlayersEligibleForRewards.size(); ++i) + { + data << PlayersEligibleForRewards[i]; + } + for (uint32 i = 0; i < ActiveOptionalAffixIDs.size(); ++i) + { + data << int32(ActiveOptionalAffixIDs[i]); + } + data.WriteBits(RestrictingRewardPlayers, 1); data.FlushBits(); } -bool ChallengeModeData::operator==(ChallengeModeData const& right) const +bool DelveData::operator==(DelveData const& right) const { - return MapID == right.MapID - && InitialPlayerCount == right.InitialPlayerCount + return PlayersEligibleForRewards == right.PlayersEligibleForRewards + && ActiveOptionalAffixIDs == right.ActiveOptionalAffixIDs + && MapID == right.MapID + && Tier == right.Tier && InstanceID == right.InstanceID - && StartTime == right.StartTime - && KeystoneOwnerGUID == right.KeystoneOwnerGUID - && LeaverGUID == right.LeaverGUID - && InstanceAbandonVoteCooldown == right.InstanceAbandonVoteCooldown - && IsActive == right.IsActive - && HasRestrictions == right.HasRestrictions - && CanVoteAbandon == right.CanVoteAbandon; + && EntranceType == right.EntranceType + && RestrictingRewardPlayers == right.RestrictingRewardPlayers; } void TransmogOutfitDataInfo::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const @@ -5094,6 +5073,7 @@ void TransmogOutfitSlotData::WriteCreate(ByteBuffer& data, Player const* receive { data << int8(Slot); data << uint8(SlotOption); + data << uint8(SheatheCategory); data << uint32(ItemModifiedAppearanceID); data << uint8(AppearanceDisplayType); data << uint32(SpellItemEnchantmentID); @@ -5107,36 +5087,49 @@ void TransmogOutfitSlotData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& dat if (ignoreChangesMask) changesMask.SetAll(); - data.WriteBits(changesMask.GetBlock(0), 7); + data.WriteBits(changesMask.GetBlock(0), 11); data.FlushBits(); if (changesMask[0]) { - data << int8(Slot); - } - if (changesMask[1]) - { - data << uint8(SlotOption); - } - if (changesMask[2]) - { - data << uint32(ItemModifiedAppearanceID); - } - if (changesMask[3]) - { - data << uint8(AppearanceDisplayType); + if (changesMask[1]) + { + data << int8(Slot); + } + if (changesMask[2]) + { + data << uint8(SlotOption); + } + if (changesMask[3]) + { + data << uint8(SheatheCategory); + } } if (changesMask[4]) { - data << uint32(SpellItemEnchantmentID); - } - if (changesMask[5]) - { - data << uint8(IllusionDisplayType); + if (changesMask[5]) + { + data << uint32(ItemModifiedAppearanceID); + } + if (changesMask[6]) + { + data << uint8(AppearanceDisplayType); + } + if (changesMask[7]) + { + data << uint32(SpellItemEnchantmentID); + } } - if (changesMask[6]) + if (changesMask[8]) { - data << uint32(Flags); + if (changesMask[9]) + { + data << uint8(IllusionDisplayType); + } + if (changesMask[10]) + { + data << uint32(Flags); + } } } @@ -5144,6 +5137,7 @@ void TransmogOutfitSlotData::ClearChangesMask() { Base::ClearChangesMask(Slot); Base::ClearChangesMask(SlotOption); + Base::ClearChangesMask(SheatheCategory); Base::ClearChangesMask(ItemModifiedAppearanceID); Base::ClearChangesMask(AppearanceDisplayType); Base::ClearChangesMask(SpellItemEnchantmentID); @@ -5236,6 +5230,50 @@ void TransmogOutfitData::ClearChangesMask() _changesMask.ResetAll(); } +void ChallengeModeData::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const +{ + data << int32(MapID); + data << int32(InitialPlayerCount); + data << uint64(InstanceID); + data << int64(StartTime); + data << KeystoneOwnerGUID; + data << LeaverGUID; + data << int64(InstanceAbandonVoteCooldown); + data.WriteBits(IsActive, 1); + data.WriteBits(HasRestrictions, 1); + data.WriteBits(CanVoteAbandon, 1); + data.FlushBits(); +} + +void ChallengeModeData::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const +{ + data << int32(MapID); + data << int32(InitialPlayerCount); + data << uint64(InstanceID); + data << int64(StartTime); + data << KeystoneOwnerGUID; + data << LeaverGUID; + data << int64(InstanceAbandonVoteCooldown); + data.WriteBits(IsActive, 1); + data.WriteBits(HasRestrictions, 1); + data.WriteBits(CanVoteAbandon, 1); + data.FlushBits(); +} + +bool ChallengeModeData::operator==(ChallengeModeData const& right) const +{ + return MapID == right.MapID + && InitialPlayerCount == right.InitialPlayerCount + && InstanceID == right.InstanceID + && StartTime == right.StartTime + && KeystoneOwnerGUID == right.KeystoneOwnerGUID + && LeaverGUID == right.LeaverGUID + && InstanceAbandonVoteCooldown == right.InstanceAbandonVoteCooldown + && IsActive == right.IsActive + && HasRestrictions == right.HasRestrictions + && CanVoteAbandon == right.CanVoteAbandon; +} + void TransmogOutfitMetadata::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { data << uint8(SituationTrigger); @@ -5639,7 +5677,6 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag data.WriteBits(CharacterBankTabSettings.size(), 3); data.WriteBits(AccountBankTabSettings.size(), 3); data.WriteBits(WalkInData.has_value(), 1); - data.WriteBits(DelveData.has_value(), 1); data.WriteBits(ChallengeModeData.has_value(), 1); data.FlushBits(); ResearchHistory->WriteCreate(data, receiver, owner); @@ -5651,6 +5688,7 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag LevelLinkInfo->WriteCreate(data, receiver, owner); data << *DungeonScore; WriteMapFieldCreate(TraitConfigs, data, receiver, owner); + WriteMapFieldCreate(DelveData, data, receiver, owner); WriteMapFieldCreate(TransmogOutfits, data, receiver, owner); ViewedOutfit->WriteCreate(data, receiver, owner); TransmogMetadata->WriteCreate(data, receiver, owner); @@ -5682,10 +5720,6 @@ void ActivePlayerData::WriteCreate(EnumFlag fieldVisibilityFlag { WalkInData->WriteCreate(data, receiver, owner); } - if (DelveData.has_value()) - { - DelveData->WriteCreate(data, receiver, owner); - } if (ChallengeModeData.has_value()) { ChallengeModeData->WriteCreate(data, receiver, owner); @@ -6929,7 +6963,6 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl data.WriteBits(QuestSession.has_value(), 1); data.WriteBits(PetStable.has_value(), 1); data.WriteBits(WalkInData.has_value(), 1); - data.WriteBits(DelveData.has_value(), 1); data.WriteBits(ChallengeModeData.has_value(), 1); } data.FlushBits(); @@ -6962,7 +6995,11 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl { WriteMapFieldUpdate(TraitConfigs, ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[159]) + if (changesMask[157]) + { + WriteMapFieldUpdate(DelveData, ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[158]) { WriteMapFieldUpdate(TransmogOutfits, ignoreNestedChangesMask, data, receiver, owner); } @@ -6988,14 +7025,7 @@ void ActivePlayerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pl WalkInData->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } - if (changesMask[157]) - { - if (DelveData.has_value()) - { - DelveData->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); - } - } - if (changesMask[158]) + if (changesMask[159]) { if (ChallengeModeData.has_value()) { @@ -7278,8 +7308,8 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(RequiredMountCapabilityFlags); Base::ClearChangesMask(WalkInData); Base::ClearChangesMask(DelveData); - Base::ClearChangesMask(ChallengeModeData); Base::ClearChangesMask(TransmogOutfits); + Base::ClearChangesMask(ChallengeModeData); Base::ClearChangesMask(ViewedOutfit); Base::ClearChangesMask(TransmogMetadata); Base::ClearChangesMask(InvSlots); @@ -8447,6 +8477,7 @@ void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags data << uint32(TimeToTargetScale); data << uint32(TimeToTargetExtraScale); data << uint32(TimeToTargetPos); + data << uint32(TimeToTargetUnk1205Curve); data << int32(SpellID); data << int32(SpellForVisuals); SpellVisual->WriteCreate(data, receiver, owner); @@ -8511,6 +8542,7 @@ void AreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags } OverrideMoveCurveY->WriteCreate(data, receiver, owner); OverrideMoveCurveZ->WriteCreate(data, receiver, owner); + Unk1205Curve->WriteCreate(data, receiver, owner); VisualAnim->WriteCreate(data, receiver, owner); if (PathType == 0) { @@ -8530,7 +8562,7 @@ void AreaTriggerData::WriteUpdate(EnumFlag fieldVisibilityFlags void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner, bool ignoreNestedChangesMask) const { data << uint32(changesMask.GetBlock(0)); - data.WriteBits(changesMask.GetBlock(1), 5); + data.WriteBits(changesMask.GetBlock(1), 7); data.FlushBits(); if (changesMask[0]) @@ -8539,125 +8571,129 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla { OverrideScaleCurve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[6]) + if (changesMask[7]) { data << *Caster; } - if (changesMask[7]) + if (changesMask[8]) { data << uint32(Duration); } - if (changesMask[8]) + if (changesMask[9]) { data << uint32(TimeToTarget); } - if (changesMask[9]) + if (changesMask[10]) { data << uint32(TimeToTargetScale); } - if (changesMask[10]) + if (changesMask[11]) { data << uint32(TimeToTargetExtraScale); } - if (changesMask[11]) + if (changesMask[12]) { data << uint32(TimeToTargetPos); } - if (changesMask[12]) + if (changesMask[13]) + { + data << uint32(TimeToTargetUnk1205Curve); + } + if (changesMask[14]) { data << int32(SpellID); } - if (changesMask[13]) + if (changesMask[15]) { data << int32(SpellForVisuals); } - if (changesMask[14]) + if (changesMask[16]) { SpellVisual->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[15]) + if (changesMask[17]) { data << float(BoundsRadius2D); } - if (changesMask[16]) + if (changesMask[18]) { data << uint32(DecalPropertiesID); } - if (changesMask[17]) + if (changesMask[19]) { data << *CreatingEffectGUID; } - if (changesMask[18]) + if (changesMask[20]) { data << *OrbitPathTarget; } - if (changesMask[19]) + if (changesMask[21]) { data << *RollPitchYaw; } - if (changesMask[20]) + if (changesMask[22]) { data << int32(PositionalSoundKitID); } - if (changesMask[21]) + if (changesMask[23]) { data << uint32(MovementStartTime); } - if (changesMask[22]) + if (changesMask[24]) { data << uint32(CreationTime); } - if (changesMask[23]) + if (changesMask[25]) { data << float(ZOffset); } - if (changesMask[25]) + if (changesMask[27]) { data << uint32(Flags); } - if (changesMask[27]) + if (changesMask[29]) { data << uint32(ScaleCurveId); } - if (changesMask[28]) + if (changesMask[30]) { data << uint32(FacingCurveId); } - if (changesMask[29]) + if (changesMask[31]) { data << uint32(MorphCurveId); } - if (changesMask[30]) + } + if (changesMask[32]) + { + if (changesMask[33]) { data << uint32(MoveCurveId); } - if (changesMask[31]) + if (changesMask[34]) { data << float(Facing); } - } - if (changesMask[32]) - { - if (changesMask[34]) + if (changesMask[36]) { data << int32(PathType); } - if (changesMask[35]) + if (changesMask[37]) { data << uint8(ShapeType); } - if (changesMask[36]) + if (changesMask[38]) { PeriodModifier->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[34]) + if (changesMask[36]) { if (PathType == 3) { PathData.Get()->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } - if (changesMask[35]) + if (changesMask[37]) { if (ShapeType == 0) { @@ -8708,7 +8744,7 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla { OverrideMoveCurveX->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[24]) + if (changesMask[26]) { if (TargetRollPitchYaw.has_value()) { @@ -8718,7 +8754,7 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla } if (changesMask[32]) { - if (changesMask[33]) + if (changesMask[35]) { if (ForcedPositionAndRotation.has_value()) { @@ -8736,14 +8772,18 @@ void AreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Pla { OverrideMoveCurveZ->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[26]) + if (changesMask[6]) + { + Unk1205Curve->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); + } + if (changesMask[28]) { VisualAnim->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } } if (changesMask[32]) { - if (changesMask[34]) + if (changesMask[36]) { if (PathType == 0) { @@ -8764,12 +8804,14 @@ void AreaTriggerData::ClearChangesMask() Base::ClearChangesMask(OverrideMoveCurveX); Base::ClearChangesMask(OverrideMoveCurveY); Base::ClearChangesMask(OverrideMoveCurveZ); + Base::ClearChangesMask(Unk1205Curve); Base::ClearChangesMask(Caster); Base::ClearChangesMask(Duration); Base::ClearChangesMask(TimeToTarget); Base::ClearChangesMask(TimeToTargetScale); Base::ClearChangesMask(TimeToTargetExtraScale); Base::ClearChangesMask(TimeToTargetPos); + Base::ClearChangesMask(TimeToTargetUnk1205Curve); Base::ClearChangesMask(SpellID); Base::ClearChangesMask(SpellForVisuals); Base::ClearChangesMask(SpellVisual); @@ -9584,54 +9626,6 @@ void HousingCornerstoneData::ClearChangesMask() _changesMask.ResetAll(); } -void HousingPlotAreaTriggerData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const -{ - data << uint32(PlotID); - data << *HouseOwnerGUID; - data << *HouseGUID; - data << *HouseOwnerBnetAccountGUID; -} - -void HousingPlotAreaTriggerData::WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const -{ - WriteUpdate(_changesMask, data, receiver, owner, false); -} - -void HousingPlotAreaTriggerData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner, bool ignoreNestedChangesMask) const -{ - data.WriteBits(changesMask.GetBlock(0), 5); - - data.FlushBits(); - if (changesMask[0]) - { - if (changesMask[1]) - { - data << uint32(PlotID); - } - if (changesMask[2]) - { - data << *HouseOwnerGUID; - } - if (changesMask[3]) - { - data << *HouseGUID; - } - if (changesMask[4]) - { - data << *HouseOwnerBnetAccountGUID; - } - } -} - -void HousingPlotAreaTriggerData::ClearChangesMask() -{ - Base::ClearChangesMask(PlotID); - Base::ClearChangesMask(HouseOwnerGUID); - Base::ClearChangesMask(HouseGUID); - Base::ClearChangesMask(HouseOwnerBnetAccountGUID); - _changesMask.ResetAll(); -} - void PlayerHouseInfo::WriteCreate(ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const { data << HouseGUID; @@ -9975,6 +9969,7 @@ void PlayerHouseInfoComponentData::WriteCreate(EnumFlag fieldVi data << uint32(Field_C0.size()); data << uint32(Field_F8.size()); data << uint8(EditorMode); + data << *CurrentHouse; for (uint32 i = 0; i < Field_8.size(); ++i) { data << Field_8[i]; @@ -10006,7 +10001,7 @@ void PlayerHouseInfoComponentData::WriteCreate(EnumFlag fieldVi static constexpr void PlayerHouseInfoComponentDataAppendAllowedFieldsMaskForFlag(PlayerHouseInfoComponentData::Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) { if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) - allowedMaskForTarget |= std::array{ 0x000001FAu }; + allowedMaskForTarget |= std::array{ 0x000003FAu }; } void PlayerHouseInfoComponentData::AppendAllowedFieldsMaskForFlag(Mask& allowedMaskForTarget, EnumFlag fieldVisibilityFlags) @@ -10030,7 +10025,7 @@ void PlayerHouseInfoComponentData::WriteUpdate(EnumFlag fieldVi void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, Player const* owner, bool ignoreNestedChangesMask) const { - data.WriteBits(changesMask.GetBlock(0), 9); + data.WriteBits(changesMask.GetBlock(0), 10); if (changesMask[0]) { @@ -10127,11 +10122,15 @@ void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuff { data << uint8(EditorMode); } + if (changesMask[8]) + { + data << *CurrentHouse; + } if (changesMask[6]) { Charter->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[8]) + if (changesMask[9]) { NeighborhoodOwnershipTransfer->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } @@ -10147,6 +10146,7 @@ void PlayerHouseInfoComponentData::ClearChangesMask() Base::ClearChangesMask(Field_F8); Base::ClearChangesMask(Charter); Base::ClearChangesMask(EditorMode); + Base::ClearChangesMask(CurrentHouse); Base::ClearChangesMask(NeighborhoodOwnershipTransfer); _changesMask.ResetAll(); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 2f51ad0ade422..426d8e6526271 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -252,7 +252,7 @@ struct UnitChannel : public IsUpdateFieldStructureTag bool operator!=(UnitChannel const& right) const { return !(*this == right); } }; -struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<10> +struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<11> { UpdateField HasTransmog; UpdateField HasIllusion; @@ -263,6 +263,7 @@ struct VisibleItem : public IsUpdateFieldStructureTag, public HasChangesMask<10> UpdateField ItemVisual; UpdateField ItemModifiedAppearanceID; UpdateField TransmogSlotOption; + UpdateField SheatheCategory; using OwnerObject = Unit; void WriteCreate(ByteBuffer& data, Player const* receiver, Unit const* owner) const; @@ -605,7 +606,7 @@ struct NPCAsPlayerInfo : public IsUpdateFieldStructureTag bool operator!=(NPCAsPlayerInfo const& right) const { return !(*this == right); } }; -struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<325> +struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<326> { UpdateField HasQuestSession; UpdateField HasLevelLink; @@ -631,36 +632,37 @@ struct PlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<325> UpdateField ArenaFaction; UpdateField DuelTeam; UpdateField GuildTimeStamp; - UpdateField PlayerTitle; - UpdateField FakeInebriation; - UpdateField VirtualPlayerRealm; - UpdateField CurrentSpecID; - UpdateField CurrentCombatTraitConfigSubTreeID; - UpdateField TaxiMountAnimKitID; - UpdateField CurrentBattlePetBreedQuality; - UpdateField HonorLevel; - UpdateField LogoutTime; - UpdateField Name; - UpdateField OfferedAdvJournalQuestID; - UpdateField OfferedScriptQuestID; - UpdateField CurrentBattlePetSpeciesID; - UpdateField CtrOptions; - UpdateField CovenantID; - UpdateField SoulbindID; - UpdateField DungeonScore; - UpdateField LeaverInfo; - UpdateField SpectateTarget; - UpdateField WorldLootObjectInventorySwapSlot; - OptionalUpdateField DeclinedNames; - UpdateField PersonalTabard; - UpdateField NpcAsPlayerInfo; - UpdateFieldArray PartyType; - UpdateFieldArray QuestLog; - UpdateFieldArray VisibleItems; - UpdateFieldArray AvgItemLevel; - UpdateFieldArray ForcedReactions; - UpdateFieldArray VisibleEquipableSpells; - UpdateFieldArray PlunderstormItemDisplayID; + MapUpdateField QuestLogQuestIdToIndex; + UpdateField PlayerTitle; + UpdateField FakeInebriation; + UpdateField VirtualPlayerRealm; + UpdateField CurrentSpecID; + UpdateField CurrentCombatTraitConfigSubTreeID; + UpdateField TaxiMountAnimKitID; + UpdateField CurrentBattlePetBreedQuality; + UpdateField HonorLevel; + UpdateField LogoutTime; + UpdateField Name; + UpdateField OfferedAdvJournalQuestID; + UpdateField OfferedScriptQuestID; + UpdateField CurrentBattlePetSpeciesID; + UpdateField CtrOptions; + UpdateField CovenantID; + UpdateField SoulbindID; + UpdateField DungeonScore; + UpdateField LeaverInfo; + UpdateField SpectateTarget; + UpdateField WorldLootObjectInventorySwapSlot; + OptionalUpdateField DeclinedNames; + UpdateField PersonalTabard; + UpdateField NpcAsPlayerInfo; + UpdateFieldArray PartyType; + UpdateFieldArray QuestLog; + UpdateFieldArray VisibleItems; + UpdateFieldArray AvgItemLevel; + UpdateFieldArray ForcedReactions; + UpdateFieldArray VisibleEquipableSpells; + UpdateFieldArray PlunderstormItemDisplayID; using OwnerObject = Player; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const; @@ -1149,9 +1151,9 @@ struct BankTabSettings : public IsUpdateFieldStructureTag, public HasChangesMask struct WalkInData : public IsUpdateFieldStructureTag { int32 MapID = 0; - int64 Field_8 = 0; - uint32 Type = 0; - ObjectGuid Field_18; + int64 InstanceID = 0; + uint32 WalkInInstanceType = 0; + ObjectGuid WalkInPartyGUID; using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; @@ -1162,38 +1164,19 @@ struct WalkInData : public IsUpdateFieldStructureTag struct DelveData : public IsUpdateFieldStructureTag { - std::vector Owners; - int32 Field_0 = 0; - uint64 Field_8 = 0; - int32 Field_10 = 0; - int32 SpellID = 0; - uint32 Started = 0; // Restricts rewards to players in m_owners if set to true. Intended to prevent rewarwding players that join in-progress delve? - - using OwnerObject = Player; - void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; - void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; - bool operator==(DelveData const& right) const; - bool operator!=(DelveData const& right) const { return !(*this == right); } -}; - -struct ChallengeModeData : public IsUpdateFieldStructureTag -{ + std::vector PlayersEligibleForRewards; + std::vector ActiveOptionalAffixIDs; int32 MapID = 0; - int32 InitialPlayerCount = 0; + int32 Tier = 0; uint64 InstanceID = 0; - int64 StartTime = 0; - ObjectGuid KeystoneOwnerGUID; - ObjectGuid LeaverGUID; - int64 InstanceAbandonVoteCooldown = 0; - uint32 IsActive = 0; - uint32 HasRestrictions = 0; - uint32 CanVoteAbandon = 0; + int32 EntranceType = 0; + uint32 RestrictingRewardPlayers = 0; // Restricts rewards to players in m_owners if set to true. Intended to prevent rewarwding players that join in-progress delve? using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; - bool operator==(ChallengeModeData const& right) const; - bool operator!=(ChallengeModeData const& right) const { return !(*this == right); } + bool operator==(DelveData const& right) const; + bool operator!=(DelveData const& right) const { return !(*this == right); } }; struct TransmogOutfitDataInfo : public IsUpdateFieldStructureTag, public HasChangesMask<4> @@ -1222,15 +1205,16 @@ struct TransmogOutfitSituationInfo : public IsUpdateFieldStructureTag, public Ha void ClearChangesMask(); }; -struct TransmogOutfitSlotData : public IsUpdateFieldStructureTag, public HasChangesMask<7> +struct TransmogOutfitSlotData : public IsUpdateFieldStructureTag, public HasChangesMask<8> { UpdateField Slot; UpdateField SlotOption; - UpdateField ItemModifiedAppearanceID; - UpdateField AppearanceDisplayType; - UpdateField SpellItemEnchantmentID; - UpdateField IllusionDisplayType; - UpdateField Flags; + UpdateField SheatheCategory; + UpdateField ItemModifiedAppearanceID; + UpdateField AppearanceDisplayType; + UpdateField SpellItemEnchantmentID; + UpdateField IllusionDisplayType; + UpdateField Flags; using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; @@ -1252,6 +1236,26 @@ struct TransmogOutfitData : public IsUpdateFieldStructureTag, public HasChangesM void ClearChangesMask(); }; +struct ChallengeModeData : public IsUpdateFieldStructureTag +{ + int32 MapID = 0; + int32 InitialPlayerCount = 0; + uint64 InstanceID = 0; + int64 StartTime = 0; + ObjectGuid KeystoneOwnerGUID; + ObjectGuid LeaverGUID; + int64 InstanceAbandonVoteCooldown = 0; + uint32 IsActive = 0; + uint32 HasRestrictions = 0; + uint32 CanVoteAbandon = 0; + + using OwnerObject = Player; + void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; + void WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const; + bool operator==(ChallengeModeData const& right) const; + bool operator!=(ChallengeModeData const& right) const { return !(*this == right); } +}; + struct TransmogOutfitMetadata : public IsUpdateFieldStructureTag { bool Locked = false; @@ -1430,9 +1434,9 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas OptionalUpdateField PetStable; UpdateField RequiredMountCapabilityFlags; OptionalUpdateField WalkInData; - OptionalUpdateField DelveData; - OptionalUpdateField ChallengeModeData; - MapUpdateField TransmogOutfits; + MapUpdateField DelveData; + MapUpdateField TransmogOutfits; + OptionalUpdateField ChallengeModeData; UpdateField ViewedOutfit; UpdateField TransmogMetadata; UpdateFieldArray InvSlots; @@ -1721,45 +1725,47 @@ struct AreaTriggerBoundedPlane : public IsUpdateFieldStructureTag, public HasCha void ClearChangesMask(); }; -struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<37> +struct AreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<39> { UpdateField OverrideScaleCurve; UpdateField ExtraScaleCurve; UpdateField OverrideMoveCurveX; UpdateField OverrideMoveCurveY; UpdateField OverrideMoveCurveZ; - UpdateField Caster; - UpdateField Duration; - UpdateField TimeToTarget; - UpdateField TimeToTargetScale; - UpdateField TimeToTargetExtraScale; - UpdateField TimeToTargetPos; // Linked to m_overrideMoveCurve - UpdateField SpellID; - UpdateField SpellForVisuals; - UpdateField SpellVisual; - UpdateField BoundsRadius2D; - UpdateField DecalPropertiesID; - UpdateField CreatingEffectGUID; - UpdateField OrbitPathTarget; - UpdateField, 0, 19> RollPitchYaw; - UpdateField PositionalSoundKitID; - UpdateField MovementStartTime; - UpdateField CreationTime; - UpdateField ZOffset; - OptionalUpdateField, 0, 24> TargetRollPitchYaw; - UpdateField Flags; - UpdateField VisualAnim; - UpdateField ScaleCurveId; - UpdateField FacingCurveId; - UpdateField MorphCurveId; - UpdateField MoveCurveId; - UpdateField Facing; - OptionalUpdateField ForcedPositionAndRotation; - UpdateField PathType; - UpdateField ShapeType; - UpdateField PeriodModifier; - VariantUpdateField<32, 34, UF::AreaTriggerSplineCalculator, UF::AreaTriggerOrbit, UF::AreaTriggerMovementScript> PathData; - VariantUpdateField<32, 35, UF::AreaTriggerSphere, UF::AreaTriggerBox, UF::AreaTriggerPolygon, UF::AreaTriggerCylinder, UF::AreaTriggerDisk, UF::AreaTriggerBoundedPlane> ShapeData; + UpdateField Unk1205Curve; + UpdateField Caster; + UpdateField Duration; + UpdateField TimeToTarget; + UpdateField TimeToTargetScale; + UpdateField TimeToTargetExtraScale; + UpdateField TimeToTargetPos; // Linked to m_overrideMoveCurve + UpdateField TimeToTargetUnk1205Curve; // Linked to m_unk1205Curve + UpdateField SpellID; + UpdateField SpellForVisuals; + UpdateField SpellVisual; + UpdateField BoundsRadius2D; + UpdateField DecalPropertiesID; + UpdateField CreatingEffectGUID; + UpdateField OrbitPathTarget; + UpdateField, 0, 21> RollPitchYaw; + UpdateField PositionalSoundKitID; + UpdateField MovementStartTime; + UpdateField CreationTime; + UpdateField ZOffset; + OptionalUpdateField, 0, 26> TargetRollPitchYaw; + UpdateField Flags; + UpdateField VisualAnim; + UpdateField ScaleCurveId; + UpdateField FacingCurveId; + UpdateField MorphCurveId; + UpdateField MoveCurveId; + UpdateField Facing; + OptionalUpdateField ForcedPositionAndRotation; + UpdateField PathType; + UpdateField ShapeType; + UpdateField PeriodModifier; + VariantUpdateField<32, 36, UF::AreaTriggerSplineCalculator, UF::AreaTriggerOrbit, UF::AreaTriggerMovementScript> PathData; + VariantUpdateField<32, 37, UF::AreaTriggerSphere, UF::AreaTriggerBox, UF::AreaTriggerPolygon, UF::AreaTriggerCylinder, UF::AreaTriggerDisk, UF::AreaTriggerBoundedPlane> ShapeData; using OwnerObject = AreaTrigger; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; @@ -1977,20 +1983,6 @@ struct HousingCornerstoneData : public IsUpdateFieldStructureTag, public HasChan void ClearChangesMask(); }; -struct HousingPlotAreaTriggerData : public IsUpdateFieldStructureTag, public HasChangesMask<5> -{ - UpdateField PlotID; // PlotIndex, not id from NeighborhoodPlot.db2 - UpdateField HouseOwnerGUID; - UpdateField HouseGUID; - UpdateField HouseOwnerBnetAccountGUID; - - using OwnerObject = AreaTrigger; - void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; - void WriteUpdate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner) const; - void WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, AreaTrigger const* owner, bool ignoreNestedChangesMask) const; - void ClearChangesMask(); -}; - struct PlayerHouseInfo : public IsUpdateFieldStructureTag { ObjectGuid HouseGUID; @@ -2110,7 +2102,7 @@ struct NeighborhoodOwnershipTransfer : public IsUpdateFieldStructureTag bool operator!=(NeighborhoodOwnershipTransfer const& right) const { return !(*this == right); } }; -struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public HasChangesMask<9> +struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public HasChangesMask<10> { DynamicUpdateField Field_8; DynamicUpdateField Houses; @@ -2119,7 +2111,8 @@ struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public H DynamicUpdateField Field_F8; UpdateField Charter; UpdateField EditorMode; - UpdateField NeighborhoodOwnershipTransfer; + UpdateField CurrentHouse; + UpdateField NeighborhoodOwnershipTransfer; using OwnerObject = Player; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const; diff --git a/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h b/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h index c24f2db086746..5d3b21fe5a596 100644 --- a/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h +++ b/src/server/game/Entities/Object/Updates/WowCSEntityDefinitions.h @@ -35,52 +35,52 @@ namespace WowCS { enum class EntityFragment : uint8 { - FEntityPosition = 1, - CGObject = 2, // UPDATEABLE, INDIRECT, - FTransportLink = 5, - FPlayerOwnershipLink = 13, // INDIRECT, - CActor = 15, // INDIRECT, - FVendor_C = 17, // UPDATEABLE, - FMirroredObject_C = 18, - FMeshObjectData_C = 19, // UPDATEABLE, - FHousingDecor_C = 20, // UPDATEABLE, - FHousingRoom_C = 21, // UPDATEABLE, - FHousingRoomComponentMesh_C = 22, // UPDATEABLE, - FHousingPlayerHouse_C = 23, // UPDATEABLE, - FJamHousingCornerstone_C = 27, // UPDATEABLE, - FHousingDecorActor_C = 28, - FHousingPlotAreaTrigger_C = 29, // UPDATEABLE, - FNeighborhoodMirrorData_C = 30, // UPDATEABLE, - FMirroredPositionData_C = 31, // UPDATEABLE, - PlayerHouseInfoComponent_C = 32, // UPDATEABLE, INDIRECT, - FHousingStorage_C = 33, // UPDATEABLE, - FHousingFixture_C = 34, // UPDATEABLE, - PlayerInitiativeComponent_C = 37, // UPDATEABLE, INDIRECT, - Tag_Item = 200, // TAG, - Tag_Container = 201, // TAG, - Tag_AzeriteEmpoweredItem = 202, // TAG, - Tag_AzeriteItem = 203, // TAG, - Tag_Unit = 204, // TAG, - Tag_Player = 205, // TAG, - Tag_GameObject = 206, // TAG, - Tag_DynamicObject = 207, // TAG, - Tag_Corpse = 208, // TAG, - Tag_AreaTrigger = 209, // TAG, - Tag_SceneObject = 210, // TAG, - Tag_Conversation = 211, // TAG, - Tag_AIGroup = 212, // TAG, - Tag_Scenario = 213, // TAG, - Tag_LootObject = 214, // TAG, - Tag_ActivePlayer = 215, // TAG, - Tag_ActiveClient_S = 216, // TAG, - Tag_ActiveObject_C = 217, // TAG, - Tag_VisibleObject_C = 218, // TAG, - Tag_UnitVehicle = 219, // TAG, - Tag_HousingRoom = 220, // TAG, - Tag_MeshObject = 221, // TAG, - Tag_HouseExteriorPiece = 224, // TAG, - Tag_HouseExteriorRoot = 225, // TAG, - End = 255, + FEntityPosition = 1, + CGObject = 2, // UPDATEABLE, INDIRECT, + FTransportLink = 5, + FPlayerOwnershipLink = 13, + CActor = 15, // INDIRECT, + FVendor_C = 17, // UPDATEABLE, + FMirroredObject_C = 18, + FMeshObjectData_C = 19, // UPDATEABLE, + FHousingDecor_C = 20, // UPDATEABLE, + FHousingRoom_C = 21, // UPDATEABLE, + FHousingRoomComponentMesh_C = 22, // UPDATEABLE, + FHousingPlayerHouse_C = 23, // UPDATEABLE, + FJamHousingCornerstone_C = 27, // UPDATEABLE, + FHousingDecorActor_C = 28, + FNeighborhoodMirrorData_C = 30, // UPDATEABLE, + FMirroredPositionData_C = 31, // UPDATEABLE, + PlayerHouseInfoComponent_C = 32, // UPDATEABLE, INDIRECT, + FHousingStorage_C = 33, // UPDATEABLE, + FHousingFixture_C = 34, // UPDATEABLE, + PlayerInitiativeComponent_C = 37, // UPDATEABLE, INDIRECT, + Tag_Item = 200, // TAG, + Tag_Container = 201, // TAG, + Tag_AzeriteEmpoweredItem = 202, // TAG, + Tag_AzeriteItem = 203, // TAG, + Tag_Unit = 204, // TAG, + Tag_Player = 205, // TAG, + Tag_GameObject = 206, // TAG, + Tag_DynamicObject = 207, // TAG, + Tag_Corpse = 208, // TAG, + Tag_AreaTrigger = 209, // TAG, + Tag_SceneObject = 210, // TAG, + Tag_Conversation = 211, // TAG, + Tag_AIGroup = 212, // TAG, + Tag_Scenario = 213, // TAG, + Tag_LootObject = 214, // TAG, + Tag_ActivePlayer = 215, // TAG, + Tag_ActiveClient_S = 216, // TAG, + Tag_ActiveObject_C = 217, // TAG, + Tag_VisibleObject_C = 218, // TAG, + Tag_UnitVehicle = 219, // TAG, + Tag_HousingRoom = 220, // TAG, + Tag_MeshObject = 221, // TAG, + Tag_HouseExteriorPiece = 224, // TAG, + Tag_HouseExteriorRoot = 225, // TAG, + Tag_HousingDecorProxyGameObject = 226, // TAG, + End = 255, }; inline constexpr bool IsUpdateableFragment(EntityFragment frag) @@ -93,7 +93,6 @@ inline constexpr bool IsUpdateableFragment(EntityFragment frag) || frag == EntityFragment::FHousingRoomComponentMesh_C || frag == EntityFragment::FHousingPlayerHouse_C || frag == EntityFragment::FJamHousingCornerstone_C - || frag == EntityFragment::FHousingPlotAreaTrigger_C || frag == EntityFragment::FNeighborhoodMirrorData_C || frag == EntityFragment::FMirroredPositionData_C || frag == EntityFragment::PlayerHouseInfoComponent_C @@ -105,7 +104,6 @@ inline constexpr bool IsUpdateableFragment(EntityFragment frag) inline constexpr bool IsIndirectFragment(EntityFragment frag) { return frag == EntityFragment::CGObject - || frag == EntityFragment::FPlayerOwnershipLink || frag == EntityFragment::CActor || frag == EntityFragment::PlayerHouseInfoComponent_C || frag == EntityFragment::PlayerInitiativeComponent_C; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6700d3ea56acf..27808a4361f4d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -3974,6 +3974,10 @@ void Player::DeleteFromDB(ObjectGuid playerguid, uint32 accountId, bool updateRe stmt->setUInt64(0, guid); trans->Append(stmt); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS); + stmt->setUInt64(0, guid); + trans->Append(stmt); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_ACCOUNT_DATA); stmt->setUInt64(0, guid); trans->Append(stmt); @@ -11827,7 +11831,7 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) { auto setVisibleItemSlot = [this](uint32 slot, int32 itemId, int32 secondaryItemModifiedAppearanceId, int32 conditionalItemAppearanceId, uint16 itemAppearanceModId, uint16 itemVisual, uint32 itemModifiedAppearanceId, TransmogOutfitSlotOption transmogSlotOption, - bool hasTransmog, bool hasIllusion) + TransmogOutfitSlotOptionSheatheCategory sheatheCategory, bool hasTransmog, bool hasIllusion) { auto itemField = m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::VisibleItems, slot); SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemID), itemId); @@ -11837,6 +11841,7 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemVisual), itemVisual); SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::ItemModifiedAppearanceID), itemModifiedAppearanceId); SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::TransmogSlotOption), AsUnderlyingType(transmogSlotOption)); + SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::SheatheCategory), AsUnderlyingType(sheatheCategory)); SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::HasTransmog), hasTransmog); SetUpdateFieldValue(itemField.ModifyValue(&UF::VisibleItem::HasIllusion), hasIllusion); @@ -11859,6 +11864,7 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) uint16 itemAppearanceModId = item->GetVisibleAppearanceModId(this); uint16 itemVisual = item->GetVisibleItemVisual(this); uint32 itemModifiedAppearanceId = item->GetVisibleModifiedAppearanceId(this); + TransmogOutfitSlotOptionSheatheCategory sheatheCategory = TransmogOutfitSlotOptionSheatheCategory::Default; bool hasTransmog = false; bool hasIllusion = false; @@ -11900,6 +11906,7 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) itemId = itemModifiedAppearance->ItemID; itemAppearanceModId = itemModifiedAppearance->ItemAppearanceModifierID; itemModifiedAppearanceId = itemModifiedAppearance->ID; + sheatheCategory = static_cast(*transmogOutfitItem.SheatheCategory); hasTransmog = true; } } @@ -11942,10 +11949,10 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) } setVisibleItemSlot(slot, itemId, secondaryItemModifiedAppearanceId, conditionalItemAppearanceId, itemAppearanceModId, - itemVisual, itemModifiedAppearanceId, transmogSlotOption, hasTransmog, hasIllusion); + itemVisual, itemModifiedAppearanceId, transmogSlotOption, sheatheCategory, hasTransmog, hasIllusion); } else - setVisibleItemSlot(slot, 0, 0, 0, 0, 0, 0, TransmogOutfitSlotOption::None, false, false); + setVisibleItemSlot(slot, 0, 0, 0, 0, 0, 0, TransmogOutfitSlotOption::None, TransmogOutfitSlotOptionSheatheCategory::Default, false, false); } void Player::VisualizeItem(uint8 slot, Item* pItem) @@ -16375,11 +16382,8 @@ void Player::AdjustQuestObjectiveProgress(Quest const* quest) uint16 Player::FindQuestSlot(uint32 quest_id) const { - for (uint16 i = 0; i < MAX_QUEST_LOG_SIZE; ++i) - if (GetQuestSlotQuestId(i) == quest_id) - return i; - - return MAX_QUEST_LOG_SIZE; + auto itr = m_QuestStatus.find(quest_id); + return itr != m_QuestStatus.end() ? itr->second.Slot : MAX_QUEST_LOG_SIZE; } uint32 Player::GetQuestSlotQuestId(uint16 slot) const @@ -16448,13 +16452,19 @@ int32 Player::GetQuestObjectiveData(uint32 questId, uint32 objectiveId) const void Player::SetQuestSlot(uint16 slot, uint32 quest_id) { - auto questLogField = m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::QuestLog, slot); + auto playerData = m_values.ModifyValue(&Player::m_playerData); + auto questLogField = playerData.ModifyValue(&UF::PlayerData::QuestLog, slot); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::QuestID), quest_id); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::StateFlags), 0); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::EndTime), 0); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::ObjectiveFlags), 0); for (uint32 i = 0; i < MAX_QUEST_COUNTS; ++i) SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::ObjectiveProgress, i), 0); + + if (quest_id) + SetUpdateFieldValue(playerData.ModifyValue(&UF::PlayerData::QuestLogQuestIdToIndex, quest_id), slot); + else + RemoveMapUpdateFieldValue(playerData.ModifyValue(&UF::PlayerData::QuestLogQuestIdToIndex), quest_id); } void Player::SetQuestSlotCounter(uint16 slot, uint8 counter, uint16 count) @@ -17747,12 +17757,12 @@ void Player::_LoadTransmogOutfits(PreparedQueryResult setsResult, PreparedQueryR } while (situationsResult->NextRow()); } - // SELECT transmogOutfitId, slot, slotOption, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags FROM character_transmog_outfit_slot guid = ? + // SELECT transmogOutfitId, slot, slotOption, sheatheCategory, itemModifiedAppearanceID, appearanceDisplayType, spellItemEnchantmentID, illusionDisplayType, flags FROM character_transmog_outfit_slot guid = ? if (slotsResult) { do { - DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(PreparedResultSet, (transmogOutfitId)(slot)(slotOption)(itemModifiedAppearanceID)(appearanceDisplayType) + DEFINE_FIELD_ACCESSOR_CACHE_ANONYMOUS(PreparedResultSet, (transmogOutfitId)(slot)(slotOption)(sheatheCategory)(itemModifiedAppearanceID)(appearanceDisplayType) (spellItemEnchantmentID)(illusionDisplayType)(flags)) fields { *slotsResult }; uint32 transmogOutfitId = fields.transmogOutfitId().GetUInt32(); @@ -17760,6 +17770,7 @@ void Player::_LoadTransmogOutfits(PreparedQueryResult setsResult, PreparedQueryR WorldPackets::Transmogrification::TransmogOutfitSlotData& slot = sets[transmogOutfitId].slots.emplace_back(); slot.Slot = static_cast(fields.slot().GetInt8()); slot.SlotOption = static_cast(fields.slotOption().GetUInt8()); + slot.SheatheCategory = static_cast(fields.sheatheCategory().GetUInt8()); slot.ItemModifiedAppearanceID = fields.itemModifiedAppearanceID().GetUInt32(); slot.AppearanceDisplayType = static_cast(fields.appearanceDisplayType().GetUInt8()); slot.SpellItemEnchantmentID = fields.spellItemEnchantmentID().GetUInt32(); @@ -17819,6 +17830,7 @@ void Player::_LoadTransmogOutfits(PreparedQueryResult setsResult, PreparedQueryR auto slot = transmogOutfit.ModifyValue(&UF::TransmogOutfitData::Slots, slotInfo->SlotIndex); SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::Slot), AsUnderlyingType(slotData.Slot)); SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::SlotOption), AsUnderlyingType(slotData.SlotOption)); + SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::SheatheCategory), AsUnderlyingType(slotData.SheatheCategory)); SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::ItemModifiedAppearanceID), slotData.ItemModifiedAppearanceID); SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::AppearanceDisplayType), AsUnderlyingType(slotData.AppearanceDisplayType)); SetUpdateFieldValue(slot.ModifyValue(&UF::TransmogOutfitSlotData::SpellItemEnchantmentID), slotData.SpellItemEnchantmentID); @@ -20569,8 +20581,6 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba } stmt->setString(index++, ss.str()); - stmt->setString(index++, GetCharacterSelectOutfit()); - ss.str(""); for (uint32 i = 0; i < m_activePlayerData->KnownTitles.size(); ++i) { @@ -20716,8 +20726,6 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba } stmt->setString(index++, ss.str()); - stmt->setString(index++, GetCharacterSelectOutfit()); - ss.str(""); for (uint32 i = 0; i < m_activePlayerData->KnownTitles.size(); ++i) { @@ -20786,6 +20794,7 @@ void Player::SaveToDB(LoginDatabaseTransaction loginTransaction, CharacterDataba m_questObjectiveCriteriaMgr->SaveToDB(trans); _SaveEquipmentSets(trans); _SaveTransmogOutfits(trans); + _SaveCharacterSelectOutfit(trans); GetSession()->SaveTutorialsData(trans); // changed only while character in game _SaveInstanceTimeRestrictions(trans); _SaveCurrency(trans); @@ -23577,6 +23586,7 @@ bool Player::BuyCurrencyFromVendorSlot(ObjectGuid vendorGuid, uint32 vendorSlot, return false; } + uint64 price = 0; uint32 stacks = count / crItem->maxcount; ItemExtendedCostEntry const* iece; if (crItem->ExtendedCost) @@ -23588,6 +23598,24 @@ bool Player::BuyCurrencyFromVendorSlot(ObjectGuid vendorGuid, uint32 vendorSlot, return false; } + if (iece->Money) + { + uint64 maxStacks = MAX_MONEY_AMOUNT / crItem->maxcount; + if (uint64(stacks) > maxStacks) + { + TC_LOG_ERROR("entities.player.cheat", "Player::BuyCurrencyFromVendorSlot: Player '{}' ({}) tried to buy currency (ItemID: {}, Count: {}), causing money overflow", + GetName(), GetGUID(), currency, count); + count = uint32(maxStacks * crItem->maxcount); + stacks = maxStacks; + } + price = uint64(iece->Money * count); //it should not exceed MAX_MONEY_AMOUNT + if (!HasEnoughMoney(price)) + { + SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, creature, currency, 0); + return false; + } + } + for (uint8 i = 0; i < MAX_ITEM_EXT_COST_ITEMS; ++i) { if (iece->ItemID[i] && !HasItemCount(iece->ItemID[i], (iece->ItemCount[i] * stacks))) @@ -23657,6 +23685,8 @@ bool Player::BuyCurrencyFromVendorSlot(ObjectGuid vendorGuid, uint32 vendorSlot, AddCurrency(currency, count, CurrencyGainSource::Vendor); if (iece) { + ModifyMoney(-int64(price)); + for (uint8 i = 0; i < MAX_ITEM_EXT_COST_ITEMS; ++i) { if (!iece->ItemID[i]) @@ -23769,6 +23799,7 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin return false; } + uint64 basePrice = pProto->GetBuyPrice(); if (crItem->ExtendedCost) { // Can only buy full stacks for extended cost @@ -23844,12 +23875,14 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin SendEquipError(EQUIP_ERR_VENDOR_MISSING_TURNINS, nullptr, nullptr); // Find correct error return false; } + + basePrice = iece->Money; } uint64 price = 0; - if (pProto->GetBuyPrice() > 0) //Assume price cannot be negative (do not know why it is int32) + if (basePrice > 0) //Assume price cannot be negative (do not know why it is int32) { - double buyPricePerItem = double(pProto->GetBuyPrice()) / pProto->GetBuyCount(); + double buyPricePerItem = double(basePrice) / pProto->GetBuyCount(); uint64 maxCount = MAX_MONEY_AMOUNT / buyPricePerItem; if (uint64(count) > maxCount) { @@ -23861,7 +23894,8 @@ bool Player::BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uin // reputation discount price = uint64(floor(price * GetReputationPriceDiscount(creature))); - price = pProto->GetBuyPrice() > 0 ? std::max(uint64(1), price) : price; + if (basePrice > 0) + price = std::max(uint64(1), price); if (float priceMod = GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) price -= CalculatePct(price, priceMod); @@ -28341,11 +28375,12 @@ void Player::_SaveTransmogOutfits(CharacterDatabaseTransaction trans) stmt->setUInt32(1, transmogOutfitId); stmt->setInt8(2, *slot.Slot); stmt->setUInt8(3, *slot.SlotOption); - stmt->setUInt32(4, *slot.ItemModifiedAppearanceID); - stmt->setUInt8(5, *slot.AppearanceDisplayType); - stmt->setUInt32(6, *slot.SpellItemEnchantmentID); - stmt->setUInt8(7, *slot.IllusionDisplayType); - stmt->setUInt32(8, *slot.Flags); + stmt->setUInt8(4, *slot.SheatheCategory); + stmt->setUInt32(5, *slot.ItemModifiedAppearanceID); + stmt->setUInt8(6, *slot.AppearanceDisplayType); + stmt->setUInt32(7, *slot.SpellItemEnchantmentID); + stmt->setUInt8(8, *slot.IllusionDisplayType); + stmt->setUInt32(9, *slot.Flags); trans->Append(stmt); } } @@ -31314,6 +31349,7 @@ void Player::UpdateTransmogOutfitSlots(uint32 id, std::span(*slot.Slot), static_cast(*slot.SlotOption))->SlotIndex; auto viewedOutfitSlot = viewedOutfit.ModifyValue(&UF::TransmogOutfitData::Slots, slotIndex); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SheatheCategory), slot.SheatheCategory); if (static_cast(*slot.AppearanceDisplayType) != TransmogOutfitDisplayType::Unassigned) { SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::ItemModifiedAppearanceID), slot.ItemModifiedAppearanceID); @@ -31364,6 +31401,7 @@ void Player::EquipTransmogOutfit(uint32 id, TransmogSituationTrigger trigger, Op TransmogOutfitSlotOption slotOption = slotInfo.SlotOption ? slotInfo.SlotOption->GetOption() : TransmogOutfitSlotOption::None; SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SlotOption), AsUnderlyingType(slotOption)); + SetUpdateFieldValue(viewedOutfitSlot.ModifyValue(&UF::TransmogOutfitSlotData::SheatheCategory), AsUnderlyingType(TransmogOutfitSlotOptionSheatheCategory::Default)); if (Item const* item = GetItemByPos(INVENTORY_SLOT_BAG_0, slotInfo.Slot->InventorySlotEnum)) { @@ -31400,7 +31438,7 @@ void Player::EquipTransmogOutfit(uint32 id, TransmogSituationTrigger trigger, Op SetVisibleItemSlot(equipSlot, GetItemByPos(INVENTORY_SLOT_BAG_0, equipSlot)); } -std::string Player::GetCharacterSelectOutfit() const +void Player::_SaveCharacterSelectOutfit(CharacterDatabaseTransaction trans) const { std::vector outfits; for (auto const& [_, transmogOutfit] : m_activePlayerData->TransmogOutfits) @@ -31428,7 +31466,13 @@ std::string Player::GetCharacterSelectOutfit() const return displayType == TransmogOutfitDisplayType::Assigned || displayType == TransmogOutfitDisplayType::Hidden; }; - std::string result; + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS); + stmt->setUInt64(0, GetGUID().GetCounter()); + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_SELECT_EQUIPMENT_CACHE_CUSTOMIZATIONS); + stmt->setUInt64(0, GetGUID().GetCounter()); + for (EquipmentSlots i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; i = EquipmentSlots(i + 1)) { TransmogOutfitSlotOption transmogSlotOption = TransmogOutfitSlotOption::None; @@ -31444,6 +31488,15 @@ std::string Player::GetCharacterSelectOutfit() const break; } + uint32 itemId = 0; + uint32 visibleItemId = 0; + uint8 subClass = 0; + InventoryType inventoryType = INVTYPE_NON_EQUIP; + int32 displayId = 0; + uint16 itemVisual = 0; + int32 secondaryItemModifiedAppearanceId = 0; + uint8 sheatheCategory = 0; + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* slotInfo = TransmogMgr::GetSlotAndOption(i, transmogSlotOption)) { UF::TransmogOutfitSlotData const& transmogOutfitSlot = outfit->Slots[slotInfo->SlotIndex]; @@ -31452,11 +31505,9 @@ std::string Player::GetCharacterSelectOutfit() const if (!isTransmogDisplayed(static_cast(*transmogOutfitSlot.AppearanceDisplayType))) itemModifiedAppearanceId = m_playerData->VisibleItems[i].ItemModifiedAppearanceID; - InventoryType inventoryType = INVTYPE_NON_EQUIP; - int32 displayId = 0; - uint16 itemVisual = 0; - uint8 subClass = 0; - uint32 secondaryItemModifiedAppearanceId = 0; + if (Item const* item = GetItemByPos(INVENTORY_SLOT_BAG_0, i)) + itemId = item->GetEntry(); + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(itemModifiedAppearanceId)) { TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); @@ -31464,6 +31515,7 @@ std::string Player::GetCharacterSelectOutfit() const { if (ItemEntry const* item = sItemStore.LookupEntry(itemModifiedAppearance->ItemID)) { + visibleItemId = item->ID; subClass = item->SubclassID; inventoryType = static_cast(item->InventoryType); } @@ -31496,16 +31548,20 @@ std::string Player::GetCharacterSelectOutfit() const } } - Trinity::StringFormatTo(std::back_inserter(result), "{} {} {} {} {} ", inventoryType, displayId, itemVisual, subClass, secondaryItemModifiedAppearanceId); + sheatheCategory = transmogOutfitSlot.SheatheCategory; } - else - result += "0 0 0 0 0 "sv; - } - for (uint32 i = EQUIPMENT_SLOT_END; i < REAGENT_BAG_SLOT_END; ++i) - result += "0 0 0 0 0 "sv; + stmt->setUInt32(1 + (i * 8) + 0, itemId); + stmt->setUInt32(1 + (i * 8) + 1, visibleItemId); + stmt->setUInt8(1 + (i * 8) + 2, subClass); + stmt->setUInt8(1 + (i * 8) + 3, inventoryType); + stmt->setUInt32(1 + (i * 8) + 4, displayId); + stmt->setUInt32(1 + (i * 8) + 5, itemVisual); + stmt->setInt32(1 + (i * 8) + 6, secondaryItemModifiedAppearanceId); + stmt->setUInt8(1 + (i * 8) + 7, sheatheCategory); + } - return result; + trans->Append(stmt); } void Player::OnPhaseChange() diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 3112fa284e454..5de64e9e19462 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -3060,7 +3060,6 @@ class TC_GAME_API Player final : public Unit, public GridObject void UpdateTransmogOutfitSituations(uint32 id, bool situationsEnabled, std::span situations); void UpdateTransmogOutfitSlots(uint32 id, std::span slots); void EquipTransmogOutfit(uint32 id, TransmogSituationTrigger trigger, Optional locked); - std::string GetCharacterSelectOutfit() const; std::string GetDebugInfo() const override; @@ -3184,6 +3183,7 @@ class TC_GAME_API Player final : public Unit, public GridObject void _SaveStoredAuraTeleportLocations(CharacterDatabaseTransaction trans); void _SaveEquipmentSets(CharacterDatabaseTransaction trans); void _SaveTransmogOutfits(CharacterDatabaseTransaction trans); + void _SaveCharacterSelectOutfit(CharacterDatabaseTransaction trans) const; void _SaveBGData(CharacterDatabaseTransaction trans); void _SaveGlyphs(CharacterDatabaseTransaction trans) const; void _SaveTalents(CharacterDatabaseTransaction trans); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 82bd3399bb5bf..3a0fbbf9f4215 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13684,11 +13684,70 @@ bool Unit::SetCollision(bool disable) return true; } -bool Unit::SetEnableFullSpeedTurning(bool enable) +bool Unit::SetStrafingDisabled(bool disable) { - if (GetTypeId() != TYPEID_PLAYER) + if (disable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE)) return false; + if (disable) + AddExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE); + else + RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_NO_STRAFE); + + static OpcodeServer const disableStrafingOpcodeTable[2] = + { + SMSG_MOVE_ENABLE_STRAFING, + SMSG_MOVE_DISABLE_STRAFING, + }; + + if (Player* playerMover = GetPlayerMovingMe()) + { + WorldPackets::Movement::MoveSetFlag packet(disableStrafingOpcodeTable[disable]); + packet.MoverGUID = GetGUID(); + packet.SequenceIndex = m_movementCounter++; + playerMover->SendDirectMessage(packet.Write()); + + WorldPackets::Movement::MoveUpdate moveUpdate; + moveUpdate.Status = &m_movementInfo; + SendMessageToSet(moveUpdate.Write(), playerMover); + } + + return true; +} + +bool Unit::SetJumpingDisabled(bool disable) +{ + if (disable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING)) + return false; + + if (disable) + AddExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING); + else + RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_NO_JUMPING); + + static OpcodeServer const disableJumpingOpcodeTable[2] = + { + SMSG_MOVE_ENABLE_JUMPING, + SMSG_MOVE_DISABLE_JUMPING, + }; + + if (Player* playerMover = GetPlayerMovingMe()) + { + WorldPackets::Movement::MoveSetFlag packet(disableJumpingOpcodeTable[disable]); + packet.MoverGUID = GetGUID(); + packet.SequenceIndex = m_movementCounter++; + playerMover->SendDirectMessage(packet.Write()); + + WorldPackets::Movement::MoveUpdate moveUpdate; + moveUpdate.Status = &m_movementInfo; + SendMessageToSet(moveUpdate.Write(), playerMover); + } + + return true; +} + +bool Unit::SetEnableFullSpeedTurning(bool enable) +{ if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_TURNING)) return false; @@ -13718,6 +13777,68 @@ bool Unit::SetEnableFullSpeedTurning(bool enable) return true; } +bool Unit::SetEnableFullSpeedPitching(bool enable) +{ + if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING)) + return false; + + if (enable) + AddExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING); + else + RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_FULL_SPEED_PITCHING); + + static constexpr OpcodeServer fullSpeedPitchingOpcodeTable[2] = + { + SMSG_MOVE_DISABLE_FULL_SPEED_PITCHING, + SMSG_MOVE_ENABLE_FULL_SPEED_PITCHING + }; + + if (Player* playerMover = GetPlayerMovingMe()) + { + WorldPackets::Movement::MoveSetFlag packet(fullSpeedPitchingOpcodeTable[enable]); + packet.MoverGUID = GetGUID(); + packet.SequenceIndex = m_movementCounter++; + playerMover->SendDirectMessage(packet.Write()); + + WorldPackets::Movement::MoveUpdate moveUpdate; + moveUpdate.Status = &m_movementInfo; + SendMessageToSet(moveUpdate.Write(), playerMover); + } + + return true; +} + +bool Unit::SetAlwaysAllowPitching(bool enable) +{ + if (enable == HasExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING)) + return false; + + if (enable) + AddExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING); + else + RemoveExtraUnitMovementFlag(MOVEMENTFLAG2_ALWAYS_ALLOW_PITCHING); + + static constexpr OpcodeServer alwaysAllowPitchingOpcodeTable[2] = + { + SMSG_MOVE_UNSET_ALWAYS_ALLOW_PITCHING, + SMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING + }; + + if (Player* playerMover = GetPlayerMovingMe()) + { + WorldPackets::Movement::MoveSetFlag packet(alwaysAllowPitchingOpcodeTable[enable]); + packet.MoverGUID = GetGUID(); + packet.SequenceIndex = m_movementCounter++; + playerMover->SendDirectMessage(packet.Write()); + + WorldPackets::Movement::MoveUpdate moveUpdate; + moveUpdate.Status = &m_movementInfo; + SendMessageToSet(moveUpdate.Write(), playerMover); + } + + return true; +} + bool Unit::SetCanTransitionBetweenSwimAndFly(bool enable) { if (GetTypeId() != TYPEID_PLAYER) diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 37cfd540e104e..b07fe173342f6 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1158,7 +1158,11 @@ class TC_GAME_API Unit : public WorldObject bool SetFeatherFall(bool enable); bool SetHover(bool enable, bool updateAnimTier = true); bool SetCollision(bool disable); + bool SetStrafingDisabled(bool disable); + bool SetJumpingDisabled(bool disable); bool SetEnableFullSpeedTurning(bool enable); + bool SetEnableFullSpeedPitching(bool enable); + bool SetAlwaysAllowPitching(bool enable); bool SetCanTransitionBetweenSwimAndFly(bool enable); bool SetCanTurnWhileFalling(bool enable); bool SetCanDoubleJump(bool enable); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index df747a0ed6507..e5bc58b3e47cf 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4829,12 +4829,13 @@ void ObjectMgr::LoadQuests() } } // AllowableRaces, can be -1/RACEMASK_ALL_PLAYABLE to allow any race - if (qinfo->_allowableRaces.RawValue != uint64(-1)) + if (qinfo->_allowableRaces != RACEMASK_ALL_v>) { - if (!qinfo->_allowableRaces.IsEmpty() && (qinfo->_allowableRaces & RACEMASK_ALL_PLAYABLE).IsEmpty()) + if (!qinfo->_allowableRaces.IsEmpty() && (qinfo->_allowableRaces & RACEMASK_ALL_PLAYABLE_v>).IsEmpty()) { - TC_LOG_ERROR("sql.sql", "Quest {} does not contain any playable races in `AllowableRaces` ({}), value set to -1 (all races).", qinfo->GetQuestId(), qinfo->_allowableRaces.RawValue); - qinfo->_allowableRaces.RawValue = uint64(-1); + TC_LOG_ERROR("sql.sql", "Quest {} does not contain any playable races in `AllowableRaces` (0x{:X}{:08X}), value set to -1 (all races).", + qinfo->GetQuestId(), qinfo->_allowableRaces.RawValue[1], qinfo->_allowableRaces.RawValue[0]); + qinfo->_allowableRaces = RACEMASK_ALL_v>; } } // RequiredSkillId, can be 0 diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h index 8f7a396ea9dba..d973afde3371b 100644 --- a/src/server/game/Guilds/Guild.h +++ b/src/server/game/Guilds/Guild.h @@ -252,7 +252,7 @@ struct GuildReward { uint32 ItemID; uint8 MinGuildRep; - Trinity::RaceMask RaceMask; + Trinity::RaceMask> RaceMask; uint64 Cost; std::vector AchievementsRequired; }; diff --git a/src/server/game/Guilds/GuildMgr.cpp b/src/server/game/Guilds/GuildMgr.cpp index 69edae2c52f13..8b90826cc44a8 100644 --- a/src/server/game/Guilds/GuildMgr.cpp +++ b/src/server/game/Guilds/GuildMgr.cpp @@ -24,6 +24,7 @@ #include "ObjectMgr.h" #include "Util.h" #include "World.h" +#include GuildMgr::GuildMgr() : NextGuildId(UI64LIT(1)) { @@ -512,7 +513,7 @@ void GuildMgr::LoadGuildRewards() Field* fields = result->Fetch(); reward.ItemID = fields[0].GetUInt32(); reward.MinGuildRep = fields[1].GetUInt8(); - reward.RaceMask.RawValue = fields[2].GetUInt64(); + reward.RaceMask = { advstd::bit_cast>(fields[2].GetUInt64()) }; reward.Cost = fields[3].GetUInt64(); if (!sObjectMgr->GetItemTemplate(reward.ItemID)) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index d9f29ada31dda..b76d7a3a6a0d9 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -542,7 +542,7 @@ bool WorldSession::MeetsChrCustomizationReq(ChrCustomizationReqEntry const* req, if (req->ClassMask && !(req->ClassMask & (1 << (playerClass - 1)))) return false; - if (race != RACE_NONE && !req->RaceMask.IsEmpty() && req->RaceMask.RawValue != -1 && !req->RaceMask.HasRace(race)) + if (race != RACE_NONE && !req->RaceMask.IsEmpty() && req->RaceMask != RACEMASK_ALL_v && !req->RaceMask.HasRace(race)) return false; if (req->AchievementID /*&& !HasAchieved(req->AchievementID)*/) @@ -2552,8 +2552,10 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptrGetQuestTemplates(); for (auto const& [questId, quest] : questTemplates) { - Trinity::RaceMask newRaceMask = (newTeamId == TEAM_ALLIANCE) ? RACEMASK_ALLIANCE : RACEMASK_HORDE; - if (quest->GetAllowableRaces().RawValue != uint64(-1) && (quest->GetAllowableRaces() & newRaceMask).IsEmpty()) + Trinity::RaceMask> newRaceMask = newTeamId == TEAM_ALLIANCE + ? RACEMASK_ALLIANCE_v> + : RACEMASK_HORDE_v>; + if (quest->GetAllowableRaces() != RACEMASK_ALL_v> && (quest->GetAllowableRaces() & newRaceMask).IsEmpty()) { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_QUESTSTATUS_REWARDED_ACTIVE_BY_QUEST); stmt->setUInt64(0, lowGuid); diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 6553dd05ba141..70859460335b4 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -643,12 +643,18 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) continue; } - uint64 price = uint64(floor(itemTemplate->GetBuyPrice() * discountMod)); - price = itemTemplate->GetBuyPrice() > 0 ? std::max(uint64(1), price) : price; + uint64 basePrice = itemTemplate->GetBuyPrice(); + if (ItemExtendedCostEntry const* iece = sItemExtendedCostStore.LookupEntry(vendorItem->ExtendedCost)) + basePrice = iece->Money; + + uint64 price = uint64(floor(basePrice * discountMod)); if (float priceMod = _player->GetTotalAuraModifier(SPELL_AURA_MOD_VENDOR_ITEMS_PRICES)) price -= CalculatePct(price, priceMod); + if (basePrice > 0) + price = std::max(uint64(1), price); + item.MuID = slot + 1; // client expects counting to start at 1 item.ExtendedCostID = vendorItem->ExtendedCost; item.Type = vendorItem->Type; diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index b2c6ef8cbf67f..4abafed8bb7da 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -87,9 +87,9 @@ void WorldSession::HandleWhoOpcode(WorldPackets::Who::WhoRequestPkt& whoRequest) { WorldPackets::Who::WhoRequest& request = whoRequest.Request; - TC_LOG_DEBUG("network", "WorldSession::HandleWhoOpcode: MinLevel: {}, MaxLevel: {}, Name: {} (VirtualRealmName: {}), Guild: {} (GuildVirtualRealmName: {}), RaceFilter: {}, ClassFilter: {}, Areas: {}, Words: {}.", + TC_LOG_DEBUG("network", "WorldSession::HandleWhoOpcode: MinLevel: {}, MaxLevel: {}, Name: {} (VirtualRealmName: {}), Guild: {} (GuildVirtualRealmName: {}), RaceFilter: 0x{:X}{:08X}, ClassFilter: {}, Areas: {}, Words: {}.", request.MinLevel, request.MaxLevel, request.Name, request.VirtualRealmName, request.Guild, request.GuildVirtualRealmName, - request.RaceFilter.RawValue, request.ClassFilter, whoRequest.Areas.size(), request.Words.size()); + request.RaceFilter.RawValue[1], request.RaceFilter.RawValue[0], request.ClassFilter, whoRequest.Areas.size(), request.Words.size()); // zones count, client limit = 10 (2.0.10) // can't be received from real client or broken packet diff --git a/src/server/game/Miscellaneous/RaceMask.h b/src/server/game/Miscellaneous/RaceMask.h index 9b84694e114d3..ea144c7b537d0 100644 --- a/src/server/game/Miscellaneous/RaceMask.h +++ b/src/server/game/Miscellaneous/RaceMask.h @@ -156,6 +156,8 @@ struct RaceMask return { .RawValue = raceBit >= 0 && uint32(raceBit) < sizeof(T) * 8 ? (T(1) << raceBit) : T(0) }; } + constexpr bool operator==(RaceMask const&) const = default; + constexpr bool IsEmpty() const { return RawValue == T(0); } constexpr RaceMask operator&(RaceMask right) const { return { RawValue & right.RawValue }; } @@ -186,6 +188,8 @@ struct RaceMask> return result; } + constexpr bool operator==(RaceMask const&) const = default; + constexpr bool IsEmpty() const { for (T rawValue : RawValue) @@ -220,6 +224,9 @@ struct RaceMask> }; } +template +inline constexpr Trinity::RaceMask RACEMASK_ALL_v = ~Trinity::RaceMask{}; + template inline constexpr Trinity::RaceMask RACEMASK_ALL_PLAYABLE_v = Trinity::RaceMask::GetMaskForRace(RACE_HUMAN) | @@ -278,6 +285,7 @@ inline constexpr Trinity::RaceMask RACEMASK_ALLIANCE_v = template inline constexpr Trinity::RaceMask RACEMASK_HORDE_v = RACEMASK_ALL_PLAYABLE_v & ~(RACEMASK_NEUTRAL_v | RACEMASK_ALLIANCE_v); +inline constexpr Trinity::RaceMask RACEMASK_ALL = RACEMASK_ALL_v; inline constexpr Trinity::RaceMask RACEMASK_ALL_PLAYABLE = RACEMASK_ALL_PLAYABLE_v; inline constexpr Trinity::RaceMask RACEMASK_NEUTRAL = RACEMASK_NEUTRAL_v; inline constexpr Trinity::RaceMask RACEMASK_ALLIANCE = RACEMASK_ALLIANCE_v; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index a75038ca330f9..abf8bb0970ba4 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -6775,6 +6775,7 @@ enum ResponseCodes CHAR_NAME_RUSSIAN_CONSECUTIVE_SILENT_CHARACTERS = 109, CHAR_NAME_RUSSIAN_SILENT_CHARACTER_AT_BEGINNING_OR_END = 110, CHAR_NAME_DECLENSION_DOESNT_MATCH_BASE_NAME = 111, + CHAR_NAME_SPACES_DISALLOWED = 112, }; enum CharacterUndeleteResult @@ -8607,65 +8608,68 @@ enum class GameError : uint32 ERR_BANK_TAB_INVALID_NAME = 1175, ERR_BANK_TAB_INVALID_TEXT = 1176, ERR_CHARACTER_BANK_NOT_CONVERTED = 1177, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1178, - ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1179, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1180, - ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1181, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1182, - ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1183, - ERR_WOW_LABS_SET_WOW_LABS_AREA_ID_FAILED = 1184, - ERR_PLUNDERSTORM_CANNOT_QUEUE = 1185, - ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1186, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1187, - ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1188, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1189, - ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1190, - ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1191, - ERR_REMIX_INVALID_TRANSFER_REQUEST = 1192, - ERR_CURRENCY_TRANSFER_INVALID_CHARACTER = 1193, - ERR_CURRENCY_TRANSFER_INVALID_CURRENCY = 1194, - ERR_CURRENCY_TRANSFER_INSUFFICIENT_CURRENCY = 1195, - ERR_CURRENCY_TRANSFER_MAX_QUANTITY = 1196, - ERR_CURRENCY_TRANSFER_NO_VALID_SOURCE = 1197, - ERR_CURRENCY_TRANSFER_CHARACTER_LOGGED_IN = 1198, - ERR_CURRENCY_TRANSFER_SERVER_ERROR = 1199, - ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1200, - ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1201, - ERR_CURRENCY_TRANSFER_DISABLED = 1202, - ERR_NO_OWNED_HOUSE_IN_THIS_NEIGHBORHOOD_MAP = 1203, - ERR_HOUSING_RESULT_NEIGHBORHOOD_NOT_FOUND = 1204, - ERR_INVITED_TO_NEIGHBORHOOD = 1205, - ERR_NEIGHBORHOOD_OWNER_TRANSFERRED_S = 1206, - ERR_NOT_WHILE_HOUSE_EDIT = 1207, - ERR_NEW_PARTY_NEIGHBORHOOD_RESERVATION = 1208, - ERR_HOUSE_MOVED = 1209, - ERR_CHARTER_SIGNATURE_REQUEST_SENT = 1210, - ERR_CHARTER_SIGNATURE_RECEIVED = 1211, - ERR_CHARTER_SIGNATURE_REQUEST_FAILED_MISSING_EXPANSION = 1212, - ERR_CHARTER_SIGNATURE_REQUEST_FAILED_DUPLICATE_SIGNATURE = 1213, - ERR_CHARTER_SIGNATURE_REQUEST_FAILED_GENERIC = 1214, - ERR_CHARTER_SYSTEM_REQUEST_FAILED_GENERIC = 1215, - ERR_HOUSING_ACTION_UNAVAILABLE = 1216, - ERR_HOUSING_EXTERIOR_FAILSAFE_RESET = 1217, - ERR_HOUSING_RESULT_MISSING_EXPANSION_ACCESS = 1218, - ERR_HOUSING_RESULT_PERMISSION_DENIED = 1219, - ERR_GUILD_NEIGHBORHOOD_BUILT_HOUSE_S = 1220, - ERR_GUILD_NEIGHBORHOOD_SOLD_HOUSE_S = 1221, - ERR_GUILD_NEIGHBORHOOD_NEW_SUBDIVISION = 1222, - ERR_GUILD_NEIGHBORHOOD_RENAME_S = 1223, - ERR_CHARTER_NEIGHBORHOOD_RENAME = 1224, - ERR_CHARTER_SIGNATURE_REMOVED = 1225, - ERR_ENDEAVOR_REWARD_AVAILABLE = 1226, - ERR_HOUSING_RESULT_COSMETIC_OWNER_NOT_IN_GUILD = 1227, - ERR_HOUSING_RESULT_PLOT_NOT_VACANT = 1228, - ERR_HOUSING_RESULT_PLOT_RESERVED = 1229, - ERR_HOUSING_RESULT_MISSING_PRIVATE_NEIGHBORHOOD_INVITE = 1230, - ERR_CHARTER_NEIGHBORHOOD_OWNERSHIP_TRANSFER_SUCCESS = 1231, - ERR_CHARTER_NEIGHBORHOOD_RENAME_NOTIFICATION_S = 1232, - ERR_RECENT_ALLY_PIN_SERVER_ERROR = 1233, - ERR_PVP_TRAINING_GROUNDS_DISABLED = 1234, - ERR_SOLO_JOIN_TRAINING_GROUND = 1235, - ERR_LFG_JOINED_TRAINING_GROUNDS_QUEUE = 1236, + ERR_NO_SALVAGED_ITEMS_IN_ACCOUNT_BANK = 1178, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_IS_FULL = 1179, + ERR_WOW_LABS_PARTY_ERROR_TYPE_MAX_INVITE_SENT = 1180, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PLAYER_ALREADY_INVITED = 1181, + ERR_WOW_LABS_PARTY_ERROR_TYPE_PARTY_INVITE_INVALID = 1182, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_ENTER_QUEUE_FAILED = 1183, + ERR_WOW_LABS_LOBBY_MATCHMAKER_ERROR_LEAVE_QUEUE_FAILED = 1184, + ERR_WOW_LABS_SET_WOW_LABS_AREA_ID_FAILED = 1185, + ERR_PLUNDERSTORM_CANNOT_QUEUE = 1186, + ERR_TARGET_IS_SELF_FOUND_CANNOT_TRADE = 1187, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_TRADE = 1188, + ERR_MAIL_RECEPIENT_IS_SELF_FOUND_CANNOT_RECEIVE_MAIL = 1189, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_SEND_MAIL = 1190, + ERR_PLAYER_IS_SELF_FOUND_CANNOT_USE_AUCTION_HOUSE = 1191, + ERR_MAIL_TARGET_CANNOT_RECEIVE_MAIL = 1192, + ERR_REMIX_INVALID_TRANSFER_REQUEST = 1193, + ERR_CURRENCY_TRANSFER_INVALID_CHARACTER = 1194, + ERR_CURRENCY_TRANSFER_INVALID_CURRENCY = 1195, + ERR_CURRENCY_TRANSFER_INSUFFICIENT_CURRENCY = 1196, + ERR_CURRENCY_TRANSFER_MAX_QUANTITY = 1197, + ERR_CURRENCY_TRANSFER_NO_VALID_SOURCE = 1198, + ERR_CURRENCY_TRANSFER_CHARACTER_LOGGED_IN = 1199, + ERR_CURRENCY_TRANSFER_SERVER_ERROR = 1200, + ERR_CURRENCY_TRANSFER_UNMET_REQUIREMENTS = 1201, + ERR_CURRENCY_TRANSFER_TRANSACTION_IN_PROGRESS = 1202, + ERR_CURRENCY_TRANSFER_DISABLED = 1203, + ERR_NO_OWNED_HOUSE_IN_THIS_NEIGHBORHOOD_MAP = 1204, + ERR_HOUSING_RESULT_NEIGHBORHOOD_NOT_FOUND = 1205, + ERR_INVITED_TO_NEIGHBORHOOD = 1206, + ERR_NEIGHBORHOOD_OWNER_TRANSFERRED_S = 1207, + ERR_NOT_WHILE_HOUSE_EDIT = 1208, + ERR_NOT_WHILE_HOUSE_INSPECT_MODE = 1209, + ERR_NEW_PARTY_NEIGHBORHOOD_RESERVATION = 1210, + ERR_HOUSE_MOVED = 1211, + ERR_CHARTER_SIGNATURE_REQUEST_SENT = 1212, + ERR_CHARTER_SIGNATURE_RECEIVED = 1213, + ERR_CHARTER_SIGNATURE_REQUEST_FAILED_MISSING_EXPANSION = 1214, + ERR_CHARTER_SIGNATURE_REQUEST_FAILED_DUPLICATE_SIGNATURE = 1215, + ERR_CHARTER_SIGNATURE_REQUEST_FAILED_GENERIC = 1216, + ERR_CHARTER_SYSTEM_REQUEST_FAILED_GENERIC = 1217, + ERR_HOUSING_ACTION_UNAVAILABLE = 1218, + ERR_HOUSING_EXTERIOR_FAILSAFE_RESET = 1219, + ERR_HOUSING_RESULT_MISSING_EXPANSION_ACCESS = 1220, + ERR_HOUSING_RESULT_PERMISSION_DENIED = 1221, + ERR_HOUSING_ACTION_NOENTRY = 1222, + ERR_GUILD_NEIGHBORHOOD_BUILT_HOUSE_S = 1223, + ERR_GUILD_NEIGHBORHOOD_SOLD_HOUSE_S = 1224, + ERR_GUILD_NEIGHBORHOOD_NEW_SUBDIVISION = 1225, + ERR_GUILD_NEIGHBORHOOD_RENAME_S = 1226, + ERR_CHARTER_NEIGHBORHOOD_RENAME = 1227, + ERR_CHARTER_SIGNATURE_REMOVED = 1228, + ERR_ENDEAVOR_REWARD_AVAILABLE = 1229, + ERR_HOUSING_RESULT_COSMETIC_OWNER_NOT_IN_GUILD = 1230, + ERR_HOUSING_RESULT_PLOT_NOT_VACANT = 1231, + ERR_HOUSING_RESULT_PLOT_RESERVED = 1232, + ERR_HOUSING_RESULT_MISSING_PRIVATE_NEIGHBORHOOD_INVITE = 1233, + ERR_CHARTER_NEIGHBORHOOD_OWNERSHIP_TRANSFER_SUCCESS = 1234, + ERR_CHARTER_NEIGHBORHOOD_RENAME_NOTIFICATION_SS = 1235, + ERR_RECENT_ALLY_PIN_SERVER_ERROR = 1236, + ERR_PVP_TRAINING_GROUNDS_DISABLED = 1237, + ERR_SOLO_JOIN_TRAINING_GROUND = 1238, + ERR_LFG_JOINED_TRAINING_GROUNDS_QUEUE = 1239, }; enum class MountResult : uint32 diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index bab0407ba5e6d..bc601021d26df 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -128,7 +128,7 @@ Quest::Quest(QuestTemplateQueryResult const& questRecord) : _soundTurnIn(questRecord.CompleteSoundKitID().GetUInt32()), _areaGroupID(questRecord.AreaGroupID().GetUInt32()), _limitTime(questRecord.TimeAllowed().GetInt64()), - _allowableRaces({ .RawValue = questRecord.AllowableRaces().GetUInt64() }), + _allowableRaces({ .RawValue = advstd::bit_cast>(questRecord.AllowableRaces().GetUInt64()) }), _expansion(questRecord.Expansion().GetInt32()), _managedWorldStateID(questRecord.ManagedWorldStateID().GetInt32()), _questSessionBonus(questRecord.QuestSessionBonus().GetInt32()), diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 3f0a116ea5f46..829ca81492fce 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -642,7 +642,7 @@ class TC_GAME_API Quest uint32 GetMaxLevel() const { return _maxLevel; } uint32 GetQuestInfoID() const { return _questInfoID; } uint32 GetAllowableClasses() const { return _allowableClasses; } - Trinity::RaceMask GetAllowableRaces() const { return _allowableRaces; } + Trinity::RaceMask> GetAllowableRaces() const { return _allowableRaces; } uint32 GetRequiredSkill() const { return _requiredSkillId; } uint32 GetRequiredSkillValue() const { return _requiredSkillPoints; } uint32 GetRequiredMinRepFaction() const { return _requiredMinRepFaction; } @@ -828,7 +828,7 @@ class TC_GAME_API Quest uint32 _soundTurnIn = 0; uint32 _areaGroupID = 0; int64 _limitTime = 0; - Trinity::RaceMask _allowableRaces; + Trinity::RaceMask> _allowableRaces; std::vector _treasurePickerID; int32 _expansion = 0; int32 _managedWorldStateID = 0; diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h index 452f72c5e682b..da5cf0e839e86 100644 --- a/src/server/game/Server/Packets/CalendarPackets.h +++ b/src/server/game/Server/Packets/CalendarPackets.h @@ -78,7 +78,7 @@ namespace WorldPackets uint8 EventType = 0; int32 TextureID = 0; WowTime Time; - uint32 Flags = 0; + uint16 Flags = 0; Array Invites; }; diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp index e1c374aaaefbf..7b22d9a60310b 100644 --- a/src/server/game/Server/Packets/CharacterPackets.cpp +++ b/src/server/game/Server/Packets/CharacterPackets.cpp @@ -22,7 +22,6 @@ #include "ObjectMgr.h" #include "PacketOperators.h" #include "Player.h" -#include "StringConvert.h" #include "World.h" namespace UF @@ -84,13 +83,14 @@ EnumCharactersResult::CharacterInfoBasic::CharacterInfoBasic(Field const* fields // "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.level, " // 6 7 8 9 10 // "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, " - // 11 12 13 14 15 16 17 - // "guild_member.guildid, characters.playerFlags, characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, " - // 18 19 20 21 22 23 + // 11 12 13 14 15 16 + // "guild_member.guildid, characters.playerFlags, characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, " + // 17 18 19 20 21 22 // "character_banned.guid, characters.slot, characters.createTime, characters.logout_time, characters.activeTalentGroup, characters.lastLoginBuild, " - // 24 25 26 27 28 + // 23 24 25 26 27 // "characters.personalTabardEmblemStyle, characters.personalTabardEmblemColor, characters.personalTabardBorderStyle, characters.personalTabardBorderColor, characters.personalTabardBackgroundColor " - // 29 + // 19 * 8 fields of equipment cache... + // 180 // "character_declinedname.genitive" Guid = ObjectGuid::Create(fields[0].GetUInt64()); @@ -126,10 +126,10 @@ EnumCharactersResult::CharacterInfoBasic::CharacterInfoBasic(Field const* fields if (atLoginFlags & AT_LOGIN_RENAME) Flags |= CHARACTER_FLAG_RENAME; - if (fields[18].GetUInt64()) + if (fields[17].GetUInt64()) Flags |= CHARACTER_FLAG_LOCKED_BY_BILLING; - if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[29].GetStringView().empty()) + if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) && !fields[180].GetStringView().empty()) Flags |= CHARACTER_FLAG_DECLINED; if (atLoginFlags & AT_LOGIN_CUSTOMIZE) @@ -170,31 +170,33 @@ EnumCharactersResult::CharacterInfoBasic::CharacterInfoBasic(Field const* fields ProfessionIds[0] = 0; ProfessionIds[1] = 0; - std::vector equipment = Trinity::Tokenize(fields[17].GetStringView(), ' ', false); - ListPosition = fields[19].GetUInt8(); - CreateTime = fields[20].GetInt64(); - LastActiveTime = fields[21].GetInt64(); - if (ChrSpecializationEntry const* spec = sDB2Manager.GetChrSpecializationByIndex(ClassID, fields[22].GetUInt8())) + ListPosition = fields[18].GetUInt8(); + CreateTime = fields[19].GetInt64(); + LastActiveTime = fields[20].GetInt64(); + if (ChrSpecializationEntry const* spec = sDB2Manager.GetChrSpecializationByIndex(ClassID, fields[21].GetUInt8())) SpecID = spec->ID; - LastLoginVersion = fields[23].GetUInt32(); + LastLoginVersion = fields[22].GetUInt32(); - PersonalTabard.EmblemStyle = fields[24].GetInt32(); - PersonalTabard.EmblemColor = fields[25].GetInt32(); - PersonalTabard.BorderStyle = fields[26].GetInt32(); - PersonalTabard.BorderColor = fields[27].GetInt32(); - PersonalTabard.BackgroundColor = fields[28].GetInt32(); + PersonalTabard.EmblemStyle = fields[23].GetInt32(); + PersonalTabard.EmblemColor = fields[24].GetInt32(); + PersonalTabard.BorderStyle = fields[25].GetInt32(); + PersonalTabard.BorderColor = fields[26].GetInt32(); + PersonalTabard.BackgroundColor = fields[27].GetInt32(); - constexpr std::size_t equipmentFieldsPerSlot = 5; - - for (std::size_t slot = 0; slot < VisualItems.size() && (slot + 1) * equipmentFieldsPerSlot <= equipment.size(); ++slot) + for (std::size_t slot = 0; slot < VisualItems.size(); ++slot) { - std::size_t visualBase = slot * equipmentFieldsPerSlot; - VisualItems[slot].InvType = Trinity::StringTo(equipment[visualBase + 0]).value_or(0); - VisualItems[slot].DisplayID = Trinity::StringTo(equipment[visualBase + 1]).value_or(0); - VisualItems[slot].DisplayEnchantID = Trinity::StringTo(equipment[visualBase + 2]).value_or(0); - VisualItems[slot].Subclass = Trinity::StringTo(equipment[visualBase + 3]).value_or(0); - VisualItems[slot].SecondaryItemModifiedAppearanceID = Trinity::StringTo(equipment[visualBase + 4]).value_or(0); + constexpr std::size_t equipmentFieldsPerSlot = 8; + + std::size_t visualBase = 28 + slot * equipmentFieldsPerSlot; + VisualItems[slot].ItemID = fields[visualBase + 0].GetUInt32(); + VisualItems[slot].TransmogrifiedItemID = fields[visualBase + 1].GetUInt32(); + VisualItems[slot].Subclass = fields[visualBase + 2].GetUInt8(); + VisualItems[slot].InvType = fields[visualBase + 3].GetUInt8(); + VisualItems[slot].DisplayID = fields[visualBase + 4].GetUInt32(); + VisualItems[slot].DisplayEnchantID = fields[visualBase + 5].GetUInt32(); + VisualItems[slot].SecondaryItemModifiedAppearanceID = fields[visualBase + 6].GetInt32(); + VisualItems[slot].SheatheCategory = fields[visualBase + 7].GetUInt8(); } } @@ -207,6 +209,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EnumCharactersResult::CharacterInfoBasi data << uint32(visualItem.DisplayID); data << uint32(visualItem.DisplayEnchantID); data << int32(visualItem.SecondaryItemModifiedAppearanceID); + data << uint8(visualItem.SheatheCategory); return data; } diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h index 6e4299badc015..88fe85eff0682 100644 --- a/src/server/game/Server/Packets/CharacterPackets.h +++ b/src/server/game/Server/Packets/CharacterPackets.h @@ -189,6 +189,7 @@ namespace WorldPackets uint32 TransmogrifiedItemID = 0; uint8 Subclass = 0; uint8 InvType = 0; + uint8 SheatheCategory = 0; uint32 DisplayID = 0; uint32 DisplayEnchantID = 0; int32 SecondaryItemModifiedAppearanceID = 0; // also -1 is some special value diff --git a/src/server/game/Server/Packets/GuildPackets.cpp b/src/server/game/Server/Packets/GuildPackets.cpp index 881a4db55075b..b1753812000d0 100644 --- a/src/server/game/Server/Packets/GuildPackets.cpp +++ b/src/server/game/Server/Packets/GuildPackets.cpp @@ -531,7 +531,8 @@ ByteBuffer& operator<<(ByteBuffer& data, GuildRewardItem const& rewardItem) data << uint32(rewardItem.ItemID); data << uint32(rewardItem.AchievementLogic); data << Size(rewardItem.AchievementsRequired); - data << uint64(rewardItem.RaceMask.RawValue); + for (int32 raceMask : rewardItem.RaceMask.RawValue) + data << int32(raceMask); data << int32(rewardItem.MinGuildLevel); data << int32(rewardItem.MinGuildRep); data << uint64(rewardItem.Cost); diff --git a/src/server/game/Server/Packets/GuildPackets.h b/src/server/game/Server/Packets/GuildPackets.h index 186a29805e845..bc5ca9636e491 100644 --- a/src/server/game/Server/Packets/GuildPackets.h +++ b/src/server/game/Server/Packets/GuildPackets.h @@ -681,7 +681,7 @@ namespace WorldPackets uint32 ItemID = 0; uint32 AchievementLogic = 0; std::vector AchievementsRequired; - Trinity::RaceMask RaceMask = { }; + Trinity::RaceMask> RaceMask = { }; int32 MinGuildLevel = 0; int32 MinGuildRep = 0; uint64 Cost = 0; diff --git a/src/server/game/Server/Packets/MovementPackets.cpp b/src/server/game/Server/Packets/MovementPackets.cpp index 97e8ac4a849e8..cd0ed36e09603 100644 --- a/src/server/game/Server/Packets/MovementPackets.cpp +++ b/src/server/game/Server/Packets/MovementPackets.cpp @@ -781,6 +781,7 @@ WorldPacket const* NewWorld::Write() _worldPacket << uint32(Reason); _worldPacket << MovementOffset; _worldPacket << int32(Counter); + _worldPacket << uint64(InstanceID); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index 19de8a4ccdc10..acdc5a10fa5b0 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -316,6 +316,7 @@ namespace WorldPackets TeleportLocation Loc; TaggedPosition MovementOffset; // Adjusts all pending movement events by this offset int32 Counter = 0; + uint64 InstanceID = 0u; // Required for damageMeterResetOnNewInstance cvar to function }; class WorldPortResponse final : public ClientPacket diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 8f1d5d5bb4c2d..b80f816f98633 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -167,7 +167,8 @@ WorldPacket const* QueryQuestInfoResponse::Write() _worldPacket << int64(Info.TimeAllowed); _worldPacket << Size(Info.Objectives); - _worldPacket << uint64(Info.AllowableRaces.RawValue); + for (int32 allowableRaces : Info.AllowableRaces.RawValue) + _worldPacket << int32(allowableRaces); _worldPacket << Size(Info.TreasurePickerID); _worldPacket << Size(Info.NonDisplayableTreasurePickerIDs); _worldPacket << int32(Info.Expansion); diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index fe3d79ab8af70..e5c88aa017bb2 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -173,7 +173,7 @@ namespace WorldPackets float POIx = 0.0f; float POIy = 0.0f; int32 POIPriority = 0; - Trinity::RaceMask AllowableRaces = { UI64LIT(0xFFFFFFFFFFFFFFFF) }; + Trinity::RaceMask> AllowableRaces = RACEMASK_ALL_v>; std::string LogTitle; std::string LogDescription; std::string QuestDescription; diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp index 1f11c30e83a76..195dd8e0f0992 100644 --- a/src/server/game/Server/Packets/SpellPackets.cpp +++ b/src/server/game/Server/Packets/SpellPackets.cpp @@ -494,6 +494,7 @@ WorldPacket const* LearnedSpells::Write() _worldPacket << Size(ClientLearnedSpellData); _worldPacket << uint32(SpecializationID); _worldPacket << Bits<1>(SuppressMessaging); + _worldPacket << Bits<1>(TraitGrantedByAura); _worldPacket.FlushBits(); for (LearnedSpellInfo const& spell : ClientLearnedSpellData) @@ -594,6 +595,7 @@ WorldPacket const* UnlearnedSpells::Write() _worldPacket << uint32(spellId); _worldPacket << Bits<1>(SuppressMessaging); + _worldPacket << Bits<1>(TraitGrantedByAura); _worldPacket.FlushBits(); return &_worldPacket; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index c9be01434f94e..17c5134fba31f 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -422,6 +422,7 @@ namespace WorldPackets std::vector ClientLearnedSpellData; uint32 SpecializationID = 0; bool SuppressMessaging = false; + bool TraitGrantedByAura = false; }; class SupercededSpells final : public ServerPacket @@ -525,6 +526,7 @@ namespace WorldPackets std::vector SpellID; bool SuppressMessaging = false; + bool TraitGrantedByAura = false; }; class CooldownEvent final : public ServerPacket diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp index 8d507ac68d87c..abbab82a18646 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp +++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp @@ -146,6 +146,7 @@ ByteBuffer& operator>>(ByteBuffer& data, TransmogOutfitSlotData& transmogOutfitS { data >> As(transmogOutfitSlotData.Slot); data >> As(transmogOutfitSlotData.SlotOption); + data >> As(transmogOutfitSlotData.SheatheCategory); data >> transmogOutfitSlotData.ItemModifiedAppearanceID; data >> As(transmogOutfitSlotData.AppearanceDisplayType); data >> transmogOutfitSlotData.SpellItemEnchantmentID; @@ -159,6 +160,7 @@ ByteBuffer& operator<<(ByteBuffer& data, TransmogOutfitSlotData const& transmogO { data << As(transmogOutfitSlotData.Slot); data << As(transmogOutfitSlotData.SlotOption); + data << As(transmogOutfitSlotData.SheatheCategory); data << uint32(transmogOutfitSlotData.ItemModifiedAppearanceID); data << As(transmogOutfitSlotData.AppearanceDisplayType); data << uint32(transmogOutfitSlotData.SpellItemEnchantmentID); diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.h b/src/server/game/Server/Packets/TransmogrificationPackets.h index 12f9a859fa354..d72aca8f967d8 100644 --- a/src/server/game/Server/Packets/TransmogrificationPackets.h +++ b/src/server/game/Server/Packets/TransmogrificationPackets.h @@ -27,6 +27,7 @@ enum class TransmogOutfitEntrySource : uint8; enum class TransmogOutfitSetType : uint8; enum class TransmogOutfitSlot : int8; enum class TransmogOutfitSlotOption : uint8; +enum class TransmogOutfitSlotOptionSheatheCategory : uint8; namespace WorldPackets { @@ -147,6 +148,7 @@ namespace WorldPackets { TransmogOutfitSlot Slot = { }; TransmogOutfitSlotOption SlotOption = { }; + TransmogOutfitSlotOptionSheatheCategory SheatheCategory = { }; TransmogOutfitDisplayType AppearanceDisplayType = { }; TransmogOutfitDisplayType IllusionDisplayType = { }; uint32 ItemModifiedAppearanceID = 0; diff --git a/src/server/game/Server/Packets/WhoPackets.cpp b/src/server/game/Server/Packets/WhoPackets.cpp index 04bf792055d74..c9f4da071241e 100644 --- a/src/server/game/Server/Packets/WhoPackets.cpp +++ b/src/server/game/Server/Packets/WhoPackets.cpp @@ -58,7 +58,8 @@ ByteBuffer& operator>>(ByteBuffer& data, WhoRequest& request) { data >> request.MinLevel; data >> request.MaxLevel; - data >> request.RaceFilter.RawValue; + for (int32& rawValue : request.RaceFilter.RawValue) + data >> rawValue; data >> request.ClassFilter; data >> SizedString::BitsSize<6>(request.Name); data >> SizedString::BitsSize<9>(request.VirtualRealmName); diff --git a/src/server/game/Server/Packets/WhoPackets.h b/src/server/game/Server/Packets/WhoPackets.h index d72ac19535095..a93edbb576109 100644 --- a/src/server/game/Server/Packets/WhoPackets.h +++ b/src/server/game/Server/Packets/WhoPackets.h @@ -67,7 +67,7 @@ namespace WorldPackets std::string VirtualRealmName; std::string Guild; std::string GuildVirtualRealmName; - Trinity::RaceMask RaceFilter = { SI64LIT(0) }; + Trinity::RaceMask> RaceFilter = { 0, 0 }; int32 ClassFilter = -1; std::vector Words; bool ShowEnemies = false; diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 52ebf06b6d666..5a804e77fde42 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -566,7 +566,6 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSE_INTERIOR_LEAVE_HOUSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); - DEFINE_HANDLER(CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE_BY_ID, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_LOCK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_MOVE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_HOUSING_DECOR_PLACE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); @@ -701,9 +700,12 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_MOVE_CHANGE_VEHICLE_SEATS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveChangeVehicleSeats); DEFINE_HANDLER(CMSG_MOVE_COLLISION_DISABLE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_COLLISION_ENABLE_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); + DEFINE_HANDLER(CMSG_MOVE_DISABLE_JUMPING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); + DEFINE_HANDLER(CMSG_MOVE_DISABLE_STRAFING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_DISMISS_VEHICLE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveDismissVehicle); DEFINE_HANDLER(CMSG_MOVE_DOUBLE_JUMP, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); DEFINE_HANDLER(CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); + DEFINE_HANDLER(CMSG_MOVE_ENABLE_FULL_SPEED_PITCHING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_FALL_LAND, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementOpcodes); @@ -749,6 +751,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSetAdvFlyingSpeedRangeAck); DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSetAdvFlyingSpeedAck); DEFINE_HANDLER(CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSetAdvFlyingSpeedRangeAck); + DEFINE_HANDLER(CMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_SET_CANNOT_SWIM_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_SET_CAN_ADV_FLY_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMovementAckMessage); DEFINE_HANDLER(CMSG_MOVE_SET_CAN_DRIVE_ACK, STATUS_UNHANDLED, PROCESS_THREADSAFE, &WorldSession::Handle_NULL); @@ -988,6 +991,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_SCENE_PLAYBACK_COMPLETE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleScenePlaybackComplete); DEFINE_HANDLER(CMSG_SCENE_TRIGGER_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSceneTriggerEvent); DEFINE_HANDLER(CMSG_SEAMLESS_TRANSFER_COMPLETE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SELECT_DELVE_ENTRANCE_TIER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELECT_WOW_LABS_AREA, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SELF_RES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSelfResOpcode); DEFINE_HANDLER(CMSG_SELL_ALL_JUNK_ITEMS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSellAllJunkItems); @@ -1058,6 +1062,8 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_SORT_BANK_BAGS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSortBankBags); DEFINE_HANDLER(CMSG_SPAWN_TRACKING_UPDATE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSpawnTrackingUpdate); DEFINE_HANDLER(CMSG_SPECTATE_CHANGE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SPECTATE_END, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); + DEFINE_HANDLER(CMSG_SPECTATE_SET_NEXT_TARGET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_SPELL_CLICK, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleSpellClick); DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RELEASE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSpellEmpowerRelease); DEFINE_HANDLER(CMSG_SPELL_EMPOWER_RESTART, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleSpellEmpowerRestart); @@ -1089,6 +1095,7 @@ void OpcodeTable::InitializeClientOpcodes() DEFINE_HANDLER(CMSG_TAXI_NODE_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiNodeStatusQueryOpcode); DEFINE_HANDLER(CMSG_TAXI_QUERY_AVAILABLE_NODES, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiQueryAvailableNodesOpcode); DEFINE_HANDLER(CMSG_TAXI_REQUEST_EARLY_LANDING, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTaxiRequestEarlyLanding); + DEFINE_HANDLER(CMSG_TIERED_ENTRANCE_OPEN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TIME_ADJUSTMENT_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); DEFINE_HANDLER(CMSG_TIME_SYNC_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleTimeSyncResponse); DEFINE_HANDLER(CMSG_TIME_SYNC_RESPONSE_DROPPED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL); @@ -1775,6 +1782,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_HOUSE_FINDER_FORCE_REFRESH, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NEIGHBORHOOD_OWNERSHIP_TRANSFERRED_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_NOTIFY_PERMISSIONS_FAILURE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -1929,15 +1937,21 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_APPLY_MOVEMENT_FORCE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_DOUBLE_JUMP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_FULL_SPEED_PITCHING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_FULL_SPEED_TURNING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_INERTIA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_JUMPING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_STRAFING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_COLLISION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_DOUBLE_JUMP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_FULL_SPEED_PITCHING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_FULL_SPEED_TURNING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_GRAVITY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_INERTIA, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_JUMPING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_STRAFING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_KNOCK_BACK, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); @@ -1959,6 +1973,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CANNOT_SWIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_ADV_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SET_CAN_DRIVE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -2014,6 +2029,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_SPLINE_UNSET_HOVER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_TELEPORT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNROOT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_ALWAYS_ALLOW_PITCHING, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CANNOT_SWIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_ADV_FLY, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_MOVE_UNSET_CAN_DRIVE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -2069,12 +2085,9 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_MOVE_HOUSE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_OFFER_OWNERSHIP_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_PLAYER_ENTER_PLOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_PLAYER_GET_INVITE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_PLAYER_LEAVE_PLOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_ROSTER_RESIDENT_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); - DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEIGHBORHOOD_UPDATE_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_NEW_DATA_BUILD, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); @@ -2379,7 +2392,9 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_SOCKET_GEMS_SUCCESS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECIAL_MOUNT_ANIM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECTATE_END, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECTATE_NEXT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECTATE_PLAYER, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPECTATE_RESET, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPEC_INVOLUNTARILY_CHANGED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ABSORB_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_CATEGORY_COOLDOWN, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE); @@ -2438,6 +2453,7 @@ void OpcodeTable::InitializeServerOpcodes() DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_CLEAR, STATUS_NEVER, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_REMOVE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); DEFINE_SERVER_OPCODE_HANDLER(SMSG_THREAT_UPDATE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); + DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIERED_ENTRANCE_OPEN_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIMERUNNING_SEASON_ENDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_ADJUSTMENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM); DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_SYNC_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index b70ec0317e374..6d4777ee40dc8 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -41,12 +41,12 @@ enum OpcodeClient : uint32 CMSG_ACCEPT_SOCIAL_CONTRACT = 0x400177, CMSG_ACCEPT_TRADE = 0x3A0004, CMSG_ACCEPT_WARGAME_INVITE = 0x40000C, - CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3A02E6, - CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3A02E7, + CMSG_ACCOUNT_BANK_DEPOSIT_MONEY = 0x3A02E7, + CMSG_ACCOUNT_BANK_WITHDRAW_MONEY = 0x3A02E8, CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED = 0x400163, CMSG_ACCOUNT_STORE_BEGIN_PURCHASE_OR_REFUND = 0x4000C1, CMSG_ACTIVATE_SOULBIND = 0x3A0293, - CMSG_ACTIVATE_TAXI = 0x3B003E, + CMSG_ACTIVATE_TAXI = 0x3B003F, CMSG_ADDON_LIST = 0x400004, CMSG_ADD_ACCOUNT_COSMETIC = 0x3A0179, CMSG_ADD_BATTLENET_FRIEND = 0x400086, @@ -56,9 +56,9 @@ enum OpcodeClient : uint32 CMSG_ADVENTURE_JOURNAL_OPEN_QUEST = 0x3A00BB, CMSG_ADVENTURE_JOURNAL_UPDATE_SUGGESTIONS = 0x3A0296, CMSG_ADVENTURE_MAP_START_QUEST = 0x3A0236, - CMSG_ALTER_APPEARANCE = 0x3B008D, - CMSG_AREA_SPIRIT_HEALER_QUERY = 0x3B0043, - CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x3B0044, + CMSG_ALTER_APPEARANCE = 0x3B008E, + CMSG_AREA_SPIRIT_HEALER_QUERY = 0x3B0044, + CMSG_AREA_SPIRIT_HEALER_QUEUE = 0x3B0045, CMSG_AREA_TRIGGER = 0x3A008D, CMSG_ARTIFACT_ADD_POWER = 0x3A005C, CMSG_ARTIFACT_SET_APPEARANCE = 0x3A005E, @@ -67,48 +67,48 @@ enum OpcodeClient : uint32 CMSG_ATTACK_SWING = 0x3A0124, CMSG_AUCTIONABLE_TOKEN_SELL = 0x400116, CMSG_AUCTIONABLE_TOKEN_SELL_AT_MARKET_PRICE = 0x400117, - CMSG_AUCTION_BROWSE_QUERY = 0x3B0061, - CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x3B0069, - CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x3B0068, - CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x3B0067, - CMSG_AUCTION_HELLO_REQUEST = 0x3B005C, - CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x3B0065, - CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x3B0066, - CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x3B0062, - CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x3B0063, - CMSG_AUCTION_LIST_OWNED_ITEMS = 0x3B0064, - CMSG_AUCTION_PLACE_BID = 0x3B0060, - CMSG_AUCTION_REMOVE_ITEM = 0x3B005E, - CMSG_AUCTION_REPLICATE_ITEMS = 0x3B005F, - CMSG_AUCTION_SELL_COMMODITY = 0x3B006A, - CMSG_AUCTION_SELL_ITEM = 0x3B005D, + CMSG_AUCTION_BROWSE_QUERY = 0x3B0062, + CMSG_AUCTION_CANCEL_COMMODITIES_PURCHASE = 0x3B006A, + CMSG_AUCTION_CONFIRM_COMMODITIES_PURCHASE = 0x3B0069, + CMSG_AUCTION_GET_COMMODITY_QUOTE = 0x3B0068, + CMSG_AUCTION_HELLO_REQUEST = 0x3B005D, + CMSG_AUCTION_LIST_BIDDED_ITEMS = 0x3B0066, + CMSG_AUCTION_LIST_BUCKETS_BY_BUCKET_KEYS = 0x3B0067, + CMSG_AUCTION_LIST_ITEMS_BY_BUCKET_KEY = 0x3B0063, + CMSG_AUCTION_LIST_ITEMS_BY_ITEM_ID = 0x3B0064, + CMSG_AUCTION_LIST_OWNED_ITEMS = 0x3B0065, + CMSG_AUCTION_PLACE_BID = 0x3B0061, + CMSG_AUCTION_REMOVE_ITEM = 0x3B005F, + CMSG_AUCTION_REPLICATE_ITEMS = 0x3B0060, + CMSG_AUCTION_SELL_COMMODITY = 0x3B006B, + CMSG_AUCTION_SELL_ITEM = 0x3B005E, CMSG_AUCTION_SET_FAVORITE_ITEM = 0x400164, CMSG_AUTH_CONTINUED_SESSION = 0x410003, CMSG_AUTH_SESSION = 0x410001, CMSG_AUTOBANK_ITEM = 0x3D0003, CMSG_AUTOSTORE_BANK_ITEM = 0x3D0002, - CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3A02F0, - CMSG_AUTO_DEPOSIT_CHARACTER_BANK = 0x3A02FA, + CMSG_AUTO_DEPOSIT_ACCOUNT_BANK = 0x3A02F1, + CMSG_AUTO_DEPOSIT_CHARACTER_BANK = 0x3A02FB, CMSG_AUTO_EQUIP_ITEM = 0x3D0004, CMSG_AUTO_EQUIP_ITEM_SLOT = 0x3D0009, - CMSG_AUTO_GUILD_BANK_ITEM = 0x3B0048, + CMSG_AUTO_GUILD_BANK_ITEM = 0x3B0049, CMSG_AUTO_STORE_BAG_ITEM = 0x3D0005, - CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x3B0051, + CMSG_AUTO_STORE_GUILD_BANK_ITEM = 0x3B0052, CMSG_AZERITE_EMPOWERED_ITEM_SELECT_POWER = 0x3A0262, CMSG_AZERITE_EMPOWERED_ITEM_VIEWED = 0x3A0242, CMSG_AZERITE_ESSENCE_ACTIVATE_ESSENCE = 0x3A0264, CMSG_AZERITE_ESSENCE_UNLOCK_MILESTONE = 0x3A0263, - CMSG_BANKER_ACTIVATE = 0x3B0046, + CMSG_BANKER_ACTIVATE = 0x3B0047, CMSG_BATTLEFIELD_LEAVE = 0x3A001F, CMSG_BATTLEFIELD_LIST = 0x3A002A, - CMSG_BATTLEFIELD_PORT = 0x3B00C4, + CMSG_BATTLEFIELD_PORT = 0x3B00C5, CMSG_BATTLEMASTER_HELLO = 0x3A0197, - CMSG_BATTLEMASTER_JOIN = 0x3B00BA, - CMSG_BATTLEMASTER_JOIN_ARENA = 0x3B00BB, - CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3B00C1, - CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3B00BD, - CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3B00BC, - CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3B00BE, + CMSG_BATTLEMASTER_JOIN = 0x3B00BB, + CMSG_BATTLEMASTER_JOIN_ARENA = 0x3B00BC, + CMSG_BATTLEMASTER_JOIN_BRAWL = 0x3B00C2, + CMSG_BATTLEMASTER_JOIN_RATED_BG_BLITZ = 0x3B00BE, + CMSG_BATTLEMASTER_JOIN_RATED_SOLO_SHUFFLE = 0x3B00BD, + CMSG_BATTLEMASTER_JOIN_SKIRMISH = 0x3B00BF, CMSG_BATTLENET_CHALLENGE_RESPONSE = 0x400103, CMSG_BATTLENET_REQUEST = 0x400124, CMSG_BATTLE_PAY_ACK_FAILED_RESPONSE = 0x4000FC, @@ -133,18 +133,18 @@ enum OpcodeClient : uint32 CMSG_BATTLE_PET_UPDATE_DISPLAY_NOTIFY = 0x3A0097, CMSG_BATTLE_PET_UPDATE_NOTIFY = 0x3A0096, CMSG_BEGIN_TRADE = 0x3A0001, - CMSG_BINDER_ACTIVATE = 0x3B0045, - CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3B00CC, - CMSG_BLACK_MARKET_OPEN = 0x3B00CA, - CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3B00CB, + CMSG_BINDER_ACTIVATE = 0x3B0046, + CMSG_BLACK_MARKET_BID_ON_ITEM = 0x3B00CD, + CMSG_BLACK_MARKET_OPEN = 0x3B00CB, + CMSG_BLACK_MARKET_REQUEST_ITEMS = 0x3B00CC, CMSG_BONUS_ROLL = 0x3A0265, CMSG_BUG_REPORT = 0x4000B1, CMSG_BULK_PURCHASE = 0x290032, CMSG_BULK_REFUND = 0x290033, CMSG_BUSY_TRADE = 0x3A0002, - CMSG_BUY_ACCOUNT_BANK_TAB = 0x3B0124, - CMSG_BUY_BACK_ITEM = 0x3B0037, - CMSG_BUY_ITEM = 0x3B0036, + CMSG_BUY_ACCOUNT_BANK_TAB = 0x3B0126, + CMSG_BUY_BACK_ITEM = 0x3B0038, + CMSG_BUY_ITEM = 0x3B0037, CMSG_CAGE_BATTLE_PET = 0x3A00AA, CMSG_CALENDAR_ADD_EVENT = 0x4000A9, CMSG_CALENDAR_COMMUNITY_INVITE = 0x40009D, @@ -162,7 +162,7 @@ enum OpcodeClient : uint32 CMSG_CALENDAR_STATUS = 0x4000A1, CMSG_CALENDAR_UPDATE_EVENT = 0x4000AA, CMSG_CANCEL_AURA = 0x3A0060, - CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x3B007F, + CMSG_CANCEL_AUTO_REPEAT_SPELL = 0x3B0080, CMSG_CANCEL_CAST = 0x3A017F, CMSG_CANCEL_CHANNELLING = 0x3A0140, CMSG_CANCEL_GROWTH_AURA = 0x3A0148, @@ -170,7 +170,7 @@ enum OpcodeClient : uint32 CMSG_CANCEL_MOD_SPEED_NO_CONTROL_AURAS = 0x3A005F, CMSG_CANCEL_MOUNT_AURA = 0x3A015B, CMSG_CANCEL_QUEUED_SPELL = 0x3A002B, - CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3B008A, + CMSG_CANCEL_TEMP_ENCHANTMENT = 0x3B008B, CMSG_CANCEL_TRADE = 0x3A0006, CMSG_CAN_DUEL = 0x40008E, CMSG_CAN_REDEEM_TOKEN_FOR_BALANCE = 0x400134, @@ -247,8 +247,8 @@ enum OpcodeClient : uint32 CMSG_CLEAR_NEW_APPEARANCE = 0x290005, CMSG_CLEAR_RAID_MARKER = 0x3A0058, CMSG_CLEAR_TRADE_ITEM = 0x3A0008, - CMSG_CLIENT_PORT_GRAVEYARD = 0x3B00C6, - CMSG_CLOSE_INTERACTION = 0x3B0025, + CMSG_CLIENT_PORT_GRAVEYARD = 0x3B00C7, + CMSG_CLOSE_INTERACTION = 0x3B0026, CMSG_CLOSE_QUEST_CHOICE = 0x3A0185, CMSG_CLOSE_RUNEFORGE_INTERACTION = 0x3A029A, CMSG_CLOSE_TRAIT_SYSTEM_INTERACTION = 0x3A02D0, @@ -276,8 +276,8 @@ enum OpcodeClient : uint32 CMSG_COMMERCE_TOKEN_GET_LOG = 0x40011E, CMSG_COMMERCE_TOKEN_GET_MARKET_PRICE = 0x400115, CMSG_COMPLAINT = 0x400098, - CMSG_COMPLETE_CINEMATIC = 0x3B00E4, - CMSG_COMPLETE_MOVIE = 0x3B0075, + CMSG_COMPLETE_CINEMATIC = 0x3B00E5, + CMSG_COMPLETE_MOVIE = 0x3B0076, CMSG_CONFIRM_ARTIFACT_RESPEC = 0x3A005D, CMSG_CONFIRM_PROFESSION_RESPEC = 0x3A00CE, CMSG_CONFIRM_RESPEC_WIPE = 0x3A00CD, @@ -287,35 +287,35 @@ enum OpcodeClient : uint32 CMSG_CONSUMABLE_TOKEN_CAN_VETERAN_BUY = 0x400118, CMSG_CONSUMABLE_TOKEN_REDEEM = 0x40011C, CMSG_CONSUMABLE_TOKEN_REDEEM_CONFIRMATION = 0x40011D, - CMSG_CONTENT_TRACKING_START_TRACKING = 0x3A02DF, - CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3A02E0, - CMSG_CONTRIBUTION_CONTRIBUTE = 0x3B00FC, - CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3B00FD, - CMSG_CONVERSATION_CINEMATIC_READY = 0x3B00E6, - CMSG_CONVERSATION_LINE_STARTED = 0x3B00E5, - CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3A02EF, + CMSG_CONTENT_TRACKING_START_TRACKING = 0x3A02E0, + CMSG_CONTENT_TRACKING_STOP_TRACKING = 0x3A02E1, + CMSG_CONTRIBUTION_CONTRIBUTE = 0x3B00FD, + CMSG_CONTRIBUTION_LAST_UPDATE_REQUEST = 0x3B00FE, + CMSG_CONVERSATION_CINEMATIC_READY = 0x3B00E7, + CMSG_CONVERSATION_LINE_STARTED = 0x3B00E6, + CMSG_CONVERT_ITEM_TO_BIND_TO_ACCOUNT = 0x3A02F0, CMSG_CONVERT_RAID = 0x40007A, CMSG_CONVERT_TIMERUNNING_CHARACTER = 0x40018D, - CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3B0110, - CMSG_CRAFTING_ORDER_CANCEL = 0x3B011C, - CMSG_CRAFTING_ORDER_CLAIM = 0x3B0119, - CMSG_CRAFTING_ORDER_CREATE = 0x3B0115, - CMSG_CRAFTING_ORDER_FULFILL = 0x3B011B, - CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO = 0x3B0118, - CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3B0117, - CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3B0116, - CMSG_CRAFTING_ORDER_REJECT = 0x3B011D, - CMSG_CRAFTING_ORDER_RELEASE = 0x3B011A, - CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3B011E, - CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3B011F, + CMSG_COVENANT_RENOWN_REQUEST_CATCHUP_STATE = 0x3B0111, + CMSG_CRAFTING_ORDER_CANCEL = 0x3B011E, + CMSG_CRAFTING_ORDER_CLAIM = 0x3B011B, + CMSG_CRAFTING_ORDER_CREATE = 0x3B0117, + CMSG_CRAFTING_ORDER_FULFILL = 0x3B011D, + CMSG_CRAFTING_ORDER_GET_NPC_REWARD_INFO = 0x3B011A, + CMSG_CRAFTING_ORDER_LIST_CRAFTER_ORDERS = 0x3B0119, + CMSG_CRAFTING_ORDER_LIST_MY_ORDERS = 0x3B0118, + CMSG_CRAFTING_ORDER_REJECT = 0x3B011F, + CMSG_CRAFTING_ORDER_RELEASE = 0x3B011C, + CMSG_CRAFTING_ORDER_REPORT_PLAYER = 0x3B0120, + CMSG_CRAFTING_ORDER_UPDATE_IGNORE_LIST = 0x3B0121, CMSG_CREATE_CHARACTER = 0x400070, CMSG_CREATE_SHIPMENT = 0x3A01E5, CMSG_DB_QUERY_BULK = 0x400010, - CMSG_DECLINE_GUILD_INVITES = 0x3B00B7, - CMSG_DECLINE_NEIGHBORHOOD_INVITES = 0x3B0130, - CMSG_DECLINE_PETITION = 0x3B00D3, - CMSG_DELETE_EQUIPMENT_SET = 0x3B00A3, - CMSG_DELVE_TELEPORT_OUT = 0x3B012C, + CMSG_DECLINE_GUILD_INVITES = 0x3B00B8, + CMSG_DECLINE_NEIGHBORHOOD_INVITES = 0x3B0132, + CMSG_DECLINE_PETITION = 0x3B00D4, + CMSG_DELETE_EQUIPMENT_SET = 0x3B00A4, + CMSG_DELVE_TELEPORT_OUT = 0x3B012E, CMSG_DEL_FRIEND = 0x400101, CMSG_DEL_IGNORE = 0x400105, CMSG_DESTROY_ITEM = 0x3A0172, @@ -330,25 +330,25 @@ enum OpcodeClient : uint32 CMSG_DF_SET_ROLES = 0x400043, CMSG_DF_TELEPORT = 0x400045, CMSG_DISCARDED_TIME_SYNC_ACKS = 0x3E0060, - CMSG_DISMISS_CRITTER = 0x3B0091, + CMSG_DISMISS_CRITTER = 0x3B0092, CMSG_DO_COUNTDOWN = 0x400146, CMSG_DO_MASTER_LOOT_ROLL = 0x3A00D3, CMSG_DO_READY_CHECK = 0x40005E, - CMSG_DUEL_RESPONSE = 0x3B007A, + CMSG_DUEL_RESPONSE = 0x3B007B, CMSG_EJECT_PASSENGER = 0x3A010B, - CMSG_EMOTE = 0x3B00E0, + CMSG_EMOTE = 0x3B00E1, CMSG_ENABLE_NAGLE = 0x410009, - CMSG_ENABLE_TAXI_NODE = 0x3B003C, - CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE = 0x3A030A, + CMSG_ENABLE_TAXI_NODE = 0x3B003D, + CMSG_ENCOUNTER_JOURNAL_START_ARATHI_RPE = 0x3A030B, CMSG_ENGINE_SURVEY = 0x400113, CMSG_ENTER_ENCRYPTED_MODE_ACK = 0x410005, CMSG_ENUM_CHARACTERS = 0x400014, CMSG_ENUM_CHARACTERS_DELETED_BY_CLIENT = 0x40010D, - CMSG_FAR_SIGHT = 0x3B0080, + CMSG_FAR_SIGHT = 0x3B0081, CMSG_GAME_EVENT_DEBUG_DISABLE = 0x3A0064, CMSG_GAME_EVENT_DEBUG_ENABLE = 0x3A0063, - CMSG_GAME_OBJ_REPORT_USE = 0x3B0087, - CMSG_GAME_OBJ_USE = 0x3B0086, + CMSG_GAME_OBJ_REPORT_USE = 0x3B0088, + CMSG_GAME_OBJ_USE = 0x3B0087, CMSG_GARRISON_ADD_FOLLOWER_HEALTH = 0x3A01E0, CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING = 0x3A01C6, CMSG_GARRISON_CANCEL_CONSTRUCTION = 0x3A01B2, @@ -386,7 +386,7 @@ enum OpcodeClient : uint32 CMSG_GET_DECOR_REFUND_LIST = 0x290031, CMSG_GET_GARRISON_INFO = 0x3A01A8, CMSG_GET_INITIATIVE_ACTIVITY_LOG_REQUEST = 0x380004, - CMSG_GET_ITEM_PURCHASE_DATA = 0x3B00CE, + CMSG_GET_ITEM_PURCHASE_DATA = 0x3B00CF, CMSG_GET_LANDING_PAGE_SHIPMENTS = 0x3A01E4, CMSG_GET_LAST_CATALOG_FETCH = 0x290036, CMSG_GET_MIRROR_IMAGE_DATA = 0x3A0176, @@ -401,21 +401,21 @@ enum OpcodeClient : uint32 CMSG_GM_TICKET_ACKNOWLEDGE_SURVEY = 0x4000BD, CMSG_GM_TICKET_GET_CASE_STATUS = 0x4000BC, CMSG_GM_TICKET_GET_SYSTEM_STATUS = 0x4000BB, - CMSG_GOSSIP_REFRESH_OPTIONS = 0x3B010F, - CMSG_GOSSIP_SELECT_OPTION = 0x3B0026, + CMSG_GOSSIP_REFRESH_OPTIONS = 0x3B0110, + CMSG_GOSSIP_SELECT_OPTION = 0x3B0027, CMSG_GUILD_ADD_BATTLENET_FRIEND = 0x2D0020, CMSG_GUILD_ADD_RANK = 0x2D0005, CMSG_GUILD_ASSIGN_MEMBER_RANK = 0x2D0002, - CMSG_GUILD_BANK_ACTIVATE = 0x3B0047, - CMSG_GUILD_BANK_BUY_TAB = 0x3B0055, - CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x3B0057, + CMSG_GUILD_BANK_ACTIVATE = 0x3B0048, + CMSG_GUILD_BANK_BUY_TAB = 0x3B0056, + CMSG_GUILD_BANK_DEPOSIT_MONEY = 0x3B0058, CMSG_GUILD_BANK_LOG_QUERY = 0x2D0019, - CMSG_GUILD_BANK_QUERY_TAB = 0x3B0054, + CMSG_GUILD_BANK_QUERY_TAB = 0x3B0055, CMSG_GUILD_BANK_REMAINING_WITHDRAW_MONEY_QUERY = 0x2D001A, CMSG_GUILD_BANK_SET_TAB_TEXT = 0x2D001D, CMSG_GUILD_BANK_TEXT_QUERY = 0x2D001E, - CMSG_GUILD_BANK_UPDATE_TAB = 0x3B0056, - CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x3B0058, + CMSG_GUILD_BANK_UPDATE_TAB = 0x3B0057, + CMSG_GUILD_BANK_WITHDRAW_MONEY = 0x3B0059, CMSG_GUILD_CHALLENGE_UPDATE_REQUEST = 0x2D0017, CMSG_GUILD_CHANGE_NAME_REQUEST = 0x2D0018, CMSG_GUILD_DECLINE_INVITATION = 0x40002A, @@ -450,14 +450,13 @@ enum OpcodeClient : uint32 CMSG_GUILD_SHIFT_RANK = 0x2D0007, CMSG_GUILD_UPDATE_INFO_TEXT = 0x2D0016, CMSG_GUILD_UPDATE_MOTD_TEXT = 0x2D0015, - CMSG_HEARTH_AND_RESURRECT = 0x3B009F, + CMSG_HEARTH_AND_RESURRECT = 0x3B00A0, CMSG_HIDE_QUEST_CHOICE = 0x3A0186, CMSG_HOTFIX_REQUEST = 0x400011, CMSG_HOUSE_EXTERIOR_LOCK = 0x2E0000, CMSG_HOUSE_EXTERIOR_SET_HOUSE_POSITION = 0x2E0001, CMSG_HOUSE_INTERIOR_LEAVE_HOUSE = 0x2F0001, CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE = 0x300009, - CMSG_HOUSING_DECOR_DELETE_FROM_STORAGE_BY_ID = 0x30000A, CMSG_HOUSING_DECOR_LOCK = 0x300004, CMSG_HOUSING_DECOR_MOVE = 0x300002, CMSG_HOUSING_DECOR_PLACE = 0x300001, @@ -487,32 +486,32 @@ enum OpcodeClient : uint32 CMSG_HOUSING_ROOM_SET_COMPONENT_THEME = 0x320005, CMSG_HOUSING_ROOM_SET_DOOR_TYPE = 0x320007, CMSG_HOUSING_ROOM_SET_LAYOUT_EDIT_MODE = 0x320000, - CMSG_HOUSING_SVCS_ACCEPT_NEIGHBORHOOD_OWNERSHIP = 0x33001C, - CMSG_HOUSING_SVCS_DELETE_ALL_NEIGHBORHOOD_INVITES = 0x330023, - CMSG_HOUSING_SVCS_GET_BNET_FRIEND_NEIGHBORHOODS = 0x330021, - CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_INFO = 0x33001F, - CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_NEIGHBORHOOD = 0x330020, - CMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO = 0x330011, - CMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS = 0x33001E, + CMSG_HOUSING_SVCS_ACCEPT_NEIGHBORHOOD_OWNERSHIP = 0x33001E, + CMSG_HOUSING_SVCS_DELETE_ALL_NEIGHBORHOOD_INVITES = 0x330025, + CMSG_HOUSING_SVCS_GET_BNET_FRIEND_NEIGHBORHOODS = 0x330023, + CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_INFO = 0x330021, + CMSG_HOUSING_SVCS_GET_HOUSE_FINDER_NEIGHBORHOOD = 0x330022, + CMSG_HOUSING_SVCS_GET_PLAYER_HOUSES_INFO = 0x330013, + CMSG_HOUSING_SVCS_GET_POTENTIAL_HOUSE_OWNERS = 0x330020, CMSG_HOUSING_SVCS_GUILD_CREATE_NEIGHBORHOOD = 0x330001, - CMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT = 0x330006, - CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_BNET_ACCOUNT = 0x33000F, - CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_PLAYER = 0x33000E, - CMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP = 0x33001D, - CMSG_HOUSING_SVCS_RELINQUISH_HOUSE = 0x330009, - CMSG_HOUSING_SVCS_START_TUTORIAL = 0x330018, - CMSG_HOUSING_SVCS_TELEPORT_TO_PLOT = 0x330017, - CMSG_HOUSING_SVCS_UPDATE_HOUSE_SETTINGS = 0x33000A, + CMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT = 0x330007, + CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_BNET_ACCOUNT = 0x330011, + CMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_BY_PLAYER = 0x330010, + CMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP = 0x33001F, + CMSG_HOUSING_SVCS_RELINQUISH_HOUSE = 0x33000A, + CMSG_HOUSING_SVCS_START_TUTORIAL = 0x33001A, + CMSG_HOUSING_SVCS_TELEPORT_TO_PLOT = 0x330019, + CMSG_HOUSING_SVCS_UPDATE_HOUSE_SETTINGS = 0x33000B, CMSG_IGNORE_TRADE = 0x3A0003, CMSG_INITIATE_ROLE_POLL = 0x400006, CMSG_INITIATE_TRADE = 0x3A0000, CMSG_INITIATIVE_UPDATE_ACTIVE_NEIGHBORHOOD = 0x3C0000, - CMSG_INSPECT = 0x3B00C8, + CMSG_INSPECT = 0x3B00C9, CMSG_INSTANCE_ABANDON_VOTE_RESPONSE = 0x400061, - CMSG_INSTANCE_LOCK_RESPONSE = 0x3B00A4, + CMSG_INSTANCE_LOCK_RESPONSE = 0x3B00A5, CMSG_INVITE_PLAYER_TO_NEIGHBORHOOD = 0x40019B, CMSG_ISLAND_QUEUE = 0x3A026B, - CMSG_ITEM_PURCHASE_REFUND = 0x3B00CF, + CMSG_ITEM_PURCHASE_REFUND = 0x3B00D0, CMSG_ITEM_TEXT_QUERY = 0x3A0218, CMSG_JOIN_PET_BATTLE_QUEUE = 0x3A0094, CMSG_JOIN_RATED_BATTLEGROUND = 0x3A0025, @@ -520,8 +519,8 @@ enum OpcodeClient : uint32 CMSG_KEYBOUND_OVERRIDE = 0x3A00E9, CMSG_KIOSK_ENABLE_GOD_MODE = 0x3A009E, CMSG_LATENCY_REPORT = 0x41000F, - CMSG_LEARN_PVP_TALENTS = 0x3B00FB, - CMSG_LEARN_TALENTS = 0x3B00F9, + CMSG_LEARN_PVP_TALENTS = 0x3B00FC, + CMSG_LEARN_TALENTS = 0x3B00FA, CMSG_LEAVE_GROUP = 0x400075, CMSG_LEAVE_PET_BATTLE_QUEUE = 0x3A0095, CMSG_LFG_LIST_APPLY_TO_GROUP = 0x40003B, @@ -535,7 +534,7 @@ enum OpcodeClient : uint32 CMSG_LFG_LIST_SEARCH = 0x40003A, CMSG_LFG_LIST_UPDATE_REQUEST = 0x3A0260, CMSG_LFG_LOREWALKING_UPDATE_REQUEST = 0x3A0261, - CMSG_LIST_INVENTORY = 0x3B0033, + CMSG_LIST_INVENTORY = 0x3B0034, CMSG_LIVE_REGION_ACCOUNT_RESTORE = 0x4000E7, CMSG_LIVE_REGION_CHARACTER_COPY = 0x4000E6, CMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST = 0x4000E5, @@ -553,10 +552,10 @@ enum OpcodeClient : uint32 CMSG_LOBBY_MATCHMAKER_REJECT_PARTY_INVITE = 0x40016D, CMSG_LOBBY_MATCHMAKER_SET_PARTY_PLAYLIST_ENTRY = 0x400170, CMSG_LOBBY_MATCHMAKER_SET_PLAYER_READY = 0x400171, - CMSG_LOGOUT_CANCEL = 0x3B0070, - CMSG_LOGOUT_INSTANT = 0x3B0071, - CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3B0123, - CMSG_LOGOUT_REQUEST = 0x3B006F, + CMSG_LOGOUT_CANCEL = 0x3B0071, + CMSG_LOGOUT_INSTANT = 0x3B0072, + CMSG_LOGOUT_LOBBY_MATCHMAKER = 0x3B0125, + CMSG_LOGOUT_REQUEST = 0x3B0070, CMSG_LOG_DISCONNECT = 0x410007, CMSG_LOG_STREAMING_ERROR = 0x41000B, CMSG_LOOT_ITEM = 0x3A00D1, @@ -565,36 +564,39 @@ enum OpcodeClient : uint32 CMSG_LOOT_ROLL = 0x3A00D6, CMSG_LOOT_UNIT = 0x3A00CF, CMSG_LOW_LEVEL_RAID1 = 0x4000CF, - CMSG_LOW_LEVEL_RAID2 = 0x3B00AB, - CMSG_MAIL_CREATE_TEXT_ITEM = 0x3B00DA, + CMSG_LOW_LEVEL_RAID2 = 0x3B00AC, + CMSG_MAIL_CREATE_TEXT_ITEM = 0x3B00DB, CMSG_MAIL_DELETE = 0x3A00EB, - CMSG_MAIL_GET_LIST = 0x3B00D5, - CMSG_MAIL_MARK_AS_READ = 0x3B00D9, + CMSG_MAIL_GET_LIST = 0x3B00D6, + CMSG_MAIL_MARK_AS_READ = 0x3B00DA, CMSG_MAIL_RETURN_TO_SENDER = 0x400081, - CMSG_MAIL_TAKE_ITEM = 0x3B00D7, - CMSG_MAIL_TAKE_MONEY = 0x3B00D6, + CMSG_MAIL_TAKE_ITEM = 0x3B00D8, + CMSG_MAIL_TAKE_MONEY = 0x3B00D7, CMSG_MAKE_CONTITIONAL_APPEARANCE_PERMANENT = 0x3A00EC, CMSG_MASTER_LOOT_ITEM = 0x3A00D2, - CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3B0052, - CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x3B004F, - CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004D, + CMSG_MERGE_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3B0053, + CMSG_MERGE_GUILD_BANK_ITEM_WITH_ITEM = 0x3B0050, + CMSG_MERGE_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004E, CMSG_MESSAGE_WHISPER = 0x410011, CMSG_MINIMAP_PING = 0x400077, CMSG_MISSILE_TRAJECTORY_COLLISION = 0x3A0036, CMSG_MOUNT_CLEAR_FANFARE = 0x290003, CMSG_MOUNT_SET_FAVORITE = 0x40005C, CMSG_MOUNT_SPECIAL_ANIM = 0x3A015C, - CMSG_MOVE_ADD_IMPULSE_ACK = 0x3E006F, - CMSG_MOVE_APPLY_INERTIA_ACK = 0x3E006D, + CMSG_MOVE_ADD_IMPULSE_ACK = 0x3E006E, + CMSG_MOVE_APPLY_INERTIA_ACK = 0x3E006C, CMSG_MOVE_APPLY_MOVEMENT_FORCE_ACK = 0x3E0033, CMSG_MOVE_CHANGE_TRANSPORT = 0x3E004E, CMSG_MOVE_CHANGE_VEHICLE_SEATS = 0x3E0053, CMSG_MOVE_COLLISION_DISABLE_ACK = 0x3E0058, CMSG_MOVE_COLLISION_ENABLE_ACK = 0x3E0059, + CMSG_MOVE_DISABLE_JUMPING_ACK = 0x3E0086, + CMSG_MOVE_DISABLE_STRAFING_ACK = 0x3E0087, CMSG_MOVE_DISMISS_VEHICLE = 0x3E0052, CMSG_MOVE_DOUBLE_JUMP = 0x3E0007, CMSG_MOVE_ENABLE_DOUBLE_JUMP_ACK = 0x3E003C, - CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x3E0085, + CMSG_MOVE_ENABLE_FULL_SPEED_PITCHING_ACK = 0x3E0085, + CMSG_MOVE_ENABLE_FULL_SPEED_TURNING_ACK = 0x3E0084, CMSG_MOVE_ENABLE_SWIM_TO_FLY_TRANS_ACK = 0x3E0042, CMSG_MOVE_FALL_LAND = 0x3E0017, CMSG_MOVE_FALL_RESET = 0x3E0037, @@ -613,40 +615,41 @@ enum OpcodeClient : uint32 CMSG_MOVE_FORCE_WALK_SPEED_CHANGE_ACK = 0x3E003F, CMSG_MOVE_GRAVITY_DISABLE_ACK = 0x3E0054, CMSG_MOVE_GRAVITY_ENABLE_ACK = 0x3E0055, - CMSG_MOVE_GUILD_BANK_ITEM = 0x3B004C, + CMSG_MOVE_GUILD_BANK_ITEM = 0x3B004D, CMSG_MOVE_HEARTBEAT = 0x3E002E, CMSG_MOVE_HOVER_ACK = 0x3E0031, CMSG_MOVE_INERTIA_DISABLE_ACK = 0x3E0056, CMSG_MOVE_INERTIA_ENABLE_ACK = 0x3E0057, - CMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE_ACK = 0x3E0084, - CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3E0065, + CMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE_ACK = 0x3E0083, + CMSG_MOVE_INIT_ACTIVE_MOVER_COMPLETE = 0x3E0064, CMSG_MOVE_JUMP = 0x3E0006, CMSG_MOVE_KNOCK_BACK_ACK = 0x3E0030, - CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3E006E, + CMSG_MOVE_REMOVE_INERTIA_ACK = 0x3E006D, CMSG_MOVE_REMOVE_MOVEMENT_FORCES = 0x3E0035, CMSG_MOVE_REMOVE_MOVEMENT_FORCE_ACK = 0x3E0034, - CMSG_MOVE_SET_ADV_FLY = 0x3E0071, - CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x3E0079, - CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x3E0074, - CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x3E007A, - CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x3E0077, - CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x3E0078, - CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x3E0081, - CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x3E0076, - CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x3E0075, - CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x3E007F, - CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x3E007B, - CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x3E007C, - CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x3E007E, - CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x3E007D, + CMSG_MOVE_SET_ADV_FLY = 0x3E0070, + CMSG_MOVE_SET_ADV_FLYING_ADD_IMPULSE_MAX_SPEED_ACK = 0x3E0078, + CMSG_MOVE_SET_ADV_FLYING_AIR_FRICTION_ACK = 0x3E0073, + CMSG_MOVE_SET_ADV_FLYING_BANKING_RATE_ACK = 0x3E0079, + CMSG_MOVE_SET_ADV_FLYING_DOUBLE_JUMP_VEL_MOD_ACK = 0x3E0076, + CMSG_MOVE_SET_ADV_FLYING_GLIDE_START_MIN_HEIGHT_ACK = 0x3E0077, + CMSG_MOVE_SET_ADV_FLYING_LAUNCH_SPEED_COEFFICIENT_ACK = 0x3E0080, + CMSG_MOVE_SET_ADV_FLYING_LIFT_COEFFICIENT_ACK = 0x3E0075, + CMSG_MOVE_SET_ADV_FLYING_MAX_VEL_ACK = 0x3E0074, + CMSG_MOVE_SET_ADV_FLYING_OVER_MAX_DECELERATION_ACK = 0x3E007E, + CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_DOWN_ACK = 0x3E007A, + CMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP_ACK = 0x3E007B, + CMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION_ACK = 0x3E007D, + CMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD_ACK = 0x3E007C, + CMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING_ACK = 0x3E0088, CMSG_MOVE_SET_CANNOT_SWIM_ACK = 0x3E0046, - CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x3E0070, - CMSG_MOVE_SET_CAN_DRIVE_ACK = 0x3E0072, + CMSG_MOVE_SET_CAN_ADV_FLY_ACK = 0x3E006F, + CMSG_MOVE_SET_CAN_DRIVE_ACK = 0x3E0071, CMSG_MOVE_SET_CAN_FLY_ACK = 0x3E0045, CMSG_MOVE_SET_CAN_TURN_WHILE_FALLING_ACK = 0x3E0043, CMSG_MOVE_SET_COLLISION_HEIGHT_ACK = 0x3E005A, CMSG_MOVE_SET_FACING = 0x3E0027, - CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3E0080, + CMSG_MOVE_SET_FACING_HEARTBEAT = 0x3E007F, CMSG_MOVE_SET_FLY = 0x3E0047, CMSG_MOVE_SET_IGNORE_MOVEMENT_FORCES_ACK = 0x3E0044, CMSG_MOVE_SET_MOD_MOVEMENT_FORCE_MAGNITUDE_ACK = 0x3E0061, @@ -659,7 +662,7 @@ enum OpcodeClient : uint32 CMSG_MOVE_START_ASCEND = 0x3E0048, CMSG_MOVE_START_BACKWARD = 0x3E0001, CMSG_MOVE_START_DESCEND = 0x3E004F, - CMSG_MOVE_START_DRIVE_FORWARD = 0x3E0073, + CMSG_MOVE_START_DRIVE_FORWARD = 0x3E0072, CMSG_MOVE_START_FORWARD = 0x3E0000, CMSG_MOVE_START_PITCH_DOWN = 0x3E000C, CMSG_MOVE_START_PITCH_UP = 0x3E000B, @@ -702,18 +705,18 @@ enum OpcodeClient : uint32 CMSG_NEIGHBORHOOD_SET_PUBLIC_FLAG = 0x390001, CMSG_NEIGHBORHOOD_UPDATE_NAME = 0x390000, CMSG_NEUTRAL_PLAYER_SELECT_FACTION = 0x3A008A, - CMSG_NEXT_CINEMATIC_CAMERA = 0x3B00E3, - CMSG_NPC_CRAFTING_ORDER_REQUEST = 0x3B012D, + CMSG_NEXT_CINEMATIC_CAMERA = 0x3B00E4, + CMSG_NPC_CRAFTING_ORDER_REQUEST = 0x3B012F, CMSG_OBJECT_UPDATE_FAILED = 0x3A002C, CMSG_OBJECT_UPDATE_RESCUED = 0x3A002D, CMSG_OFFER_PETITION = 0x3A0291, - CMSG_OPENING_CINEMATIC = 0x3B00E2, + CMSG_OPENING_CINEMATIC = 0x3B00E3, CMSG_OPEN_ITEM = 0x3A0219, CMSG_OPEN_MISSION_NPC = 0x3A01DA, CMSG_OPEN_SHIPMENT_NPC = 0x3A01E2, CMSG_OPEN_TRADESKILL_NPC = 0x3A01ED, - CMSG_OPT_OUT_OF_LOOT = 0x3B008E, - CMSG_OVERRIDE_SCREEN_FLASH = 0x3B00B8, + CMSG_OPT_OUT_OF_LOOT = 0x3B008F, + CMSG_OVERRIDE_SCREEN_FLASH = 0x3B00B9, CMSG_PARTY_INVITE = 0x400030, CMSG_PARTY_INVITE_RESPONSE = 0x400032, CMSG_PARTY_UNINVITE = 0x400073, @@ -726,13 +729,13 @@ enum OpcodeClient : uint32 CMSG_PERKS_PROGRAM_REQUEST_REFUND = 0x3A02BD, CMSG_PERKS_PROGRAM_SET_FROZEN_VENDOR_ITEM = 0x3A02BE, CMSG_PERKS_PROGRAM_STATUS_REQUEST = 0x3A02BA, - CMSG_PETITION_BUY = 0x3B005A, + CMSG_PETITION_BUY = 0x3B005B, CMSG_PETITION_RENAME_GUILD = 0x4000F8, - CMSG_PETITION_SHOW_LIST = 0x3B0059, - CMSG_PETITION_SHOW_SIGNATURES = 0x3B005B, - CMSG_PET_ABANDON = 0x3B001E, - CMSG_PET_ABANDON_BY_NUMBER = 0x3B001F, - CMSG_PET_ACTION = 0x3B001C, + CMSG_PETITION_SHOW_LIST = 0x3B005A, + CMSG_PETITION_SHOW_SIGNATURES = 0x3B005C, + CMSG_PET_ABANDON = 0x3B001F, + CMSG_PET_ABANDON_BY_NUMBER = 0x3B0020, + CMSG_PET_ACTION = 0x3B001D, CMSG_PET_BATTLE_FINAL_NOTIFY = 0x3A0099, CMSG_PET_BATTLE_INPUT = 0x40006D, CMSG_PET_BATTLE_QUEUE_PROPOSE_MATCH_RESULT = 0x3A00EA, @@ -742,15 +745,15 @@ enum OpcodeClient : uint32 CMSG_PET_BATTLE_REQUEST_UPDATE = 0x3A0093, CMSG_PET_BATTLE_REQUEST_WILD = 0x3A0090, CMSG_PET_BATTLE_SCRIPT_ERROR_NOTIFY = 0x3A009A, - CMSG_PET_CANCEL_AURA = 0x3B0020, + CMSG_PET_CANCEL_AURA = 0x3B0021, CMSG_PET_CAST_SPELL = 0x3A017B, CMSG_PET_RENAME = 0x4000B0, - CMSG_PET_SET_ACTION = 0x3B001B, - CMSG_PET_SPELL_AUTOCAST = 0x3B0021, - CMSG_PET_STOP_ATTACK = 0x3B001D, + CMSG_PET_SET_ACTION = 0x3B001C, + CMSG_PET_SPELL_AUTOCAST = 0x3B0022, + CMSG_PET_STOP_ATTACK = 0x3B001E, CMSG_PING = 0x410006, CMSG_PLAYER_LOGIN = 0x400016, - CMSG_PUSH_QUEST_TO_PARTY = 0x3B0031, + CMSG_PUSH_QUEST_TO_PARTY = 0x3B0032, CMSG_PVP_LOG_DATA = 0x3A0028, CMSG_QUERY_BATTLE_PET_NAME = 0x3A014F, CMSG_QUERY_CORPSE_LOCATION_FROM_CLIENT = 0x40008C, @@ -760,9 +763,9 @@ enum OpcodeClient : uint32 CMSG_QUERY_GAME_OBJECT = 0x3A014A, CMSG_QUERY_GARRISON_PET_NAME = 0x3A0150, CMSG_QUERY_GUILD_INFO = 0x4000B6, - CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3B0098, + CMSG_QUERY_INSPECT_ACHIEVEMENTS = 0x3B0099, CMSG_QUERY_NEIGHBORHOOD_INFO = 0x4000B7, - CMSG_QUERY_NEXT_MAIL_TIME = 0x3B00D8, + CMSG_QUERY_NEXT_MAIL_TIME = 0x3B00D9, CMSG_QUERY_NPC_TEXT = 0x3A014B, CMSG_QUERY_PAGE_TEXT = 0x3A014D, CMSG_QUERY_PETITION = 0x3A0151, @@ -775,24 +778,24 @@ enum OpcodeClient : uint32 CMSG_QUERY_QUEST_ITEM_USABILITY = 0x3A0022, CMSG_QUERY_REALM_NAME = 0x4000B5, CMSG_QUERY_SCENARIO_POI = 0x400082, - CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3A02F6, - CMSG_QUERY_TIME = 0x3B006E, + CMSG_QUERY_SELECTED_WOW_LABS_AREA = 0x3A02F7, + CMSG_QUERY_TIME = 0x3B006F, CMSG_QUERY_TREASURE_PICKER = 0x3A023D, - CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3A02F7, - CMSG_QUEST_CONFIRM_ACCEPT = 0x3B0030, - CMSG_QUEST_DRIVEN_SCENARIO_STATE_CHANGE = 0x3A02F2, - CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3B002A, - CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x3B002C, - CMSG_QUEST_GIVER_CLOSE_QUEST = 0x3B00E9, - CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3B002B, - CMSG_QUEST_GIVER_HELLO = 0x3B0028, - CMSG_QUEST_GIVER_QUERY_QUEST = 0x3B0029, - CMSG_QUEST_GIVER_REQUEST_REWARD = 0x3B002D, - CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x3B002F, - CMSG_QUEST_GIVER_STATUS_QUERY = 0x3B002E, - CMSG_QUEST_LOG_REMOVE_QUEST = 0x3B00CD, + CMSG_QUERY_WOW_LABS_AREA_INFO = 0x3A02F8, + CMSG_QUEST_CONFIRM_ACCEPT = 0x3B0031, + CMSG_QUEST_DRIVEN_SCENARIO_STATE_CHANGE = 0x3A02F3, + CMSG_QUEST_GIVER_ACCEPT_QUEST = 0x3B002B, + CMSG_QUEST_GIVER_CHOOSE_REWARD = 0x3B002D, + CMSG_QUEST_GIVER_CLOSE_QUEST = 0x3B00EA, + CMSG_QUEST_GIVER_COMPLETE_QUEST = 0x3B002C, + CMSG_QUEST_GIVER_HELLO = 0x3B0029, + CMSG_QUEST_GIVER_QUERY_QUEST = 0x3B002A, + CMSG_QUEST_GIVER_REQUEST_REWARD = 0x3B002E, + CMSG_QUEST_GIVER_STATUS_MULTIPLE_QUERY = 0x3B0030, + CMSG_QUEST_GIVER_STATUS_QUERY = 0x3B002F, + CMSG_QUEST_LOG_REMOVE_QUEST = 0x3B00CE, CMSG_QUEST_POI_QUERY = 0x4000DE, - CMSG_QUEST_PUSH_RESULT = 0x3B0032, + CMSG_QUEST_PUSH_RESULT = 0x3B0033, CMSG_QUEST_SESSION_BEGIN_RESPONSE = 0x3A0283, CMSG_QUEST_SESSION_REQUEST_START = 0x3A0282, CMSG_QUEST_SESSION_REQUEST_STOP = 0x40015B, @@ -802,7 +805,7 @@ enum OpcodeClient : uint32 CMSG_QUICK_JOIN_REQUEST_INVITE_WITH_CONFIRMATION = 0x400160, CMSG_QUICK_JOIN_RESPOND_TO_INVITE = 0x400130, CMSG_QUICK_JOIN_SIGNAL_TOAST_DISPLAYED = 0x40012F, - CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3B009C, + CMSG_RAF_CLAIM_ACTIVITY_REWARD = 0x3B009D, CMSG_RAF_CLAIM_NEXT_REWARD = 0x400151, CMSG_RAF_GENERATE_RECRUITMENT_LINK = 0x400153, CMSG_RAF_RECRUIT_PRESENCE_SUBSCRIBE = 0x400127, @@ -812,16 +815,16 @@ enum OpcodeClient : uint32 CMSG_READ_ITEM = 0x3A021A, CMSG_RECENT_ALLY_REQUEST_DATA = 0x400198, CMSG_RECENT_ALLY_SET_NOTE = 0x400199, - CMSG_RECLAIM_CORPSE = 0x3B0073, + CMSG_RECLAIM_CORPSE = 0x3B0074, CMSG_REFRESH_ENTITLEMENTS_ON_ORDER_COMPLETE = 0x40019C, CMSG_REGISTER_FAST_LOGIN = 0x400172, CMSG_REMOVE_NEW_ITEM = 0x3A0241, CMSG_REMOVE_RAF_RECRUIT = 0x400154, CMSG_REORDER_CHARACTERS = 0x400015, - CMSG_REPAIR_ITEM = 0x3B0084, + CMSG_REPAIR_ITEM = 0x3B0085, CMSG_REPLACE_TROPHY = 0x3A01FB, - CMSG_REPOP_REQUEST = 0x3B00C5, - CMSG_REPORT_PVP_PLAYER_AFK = 0x3B008C, + CMSG_REPOP_REQUEST = 0x3B00C6, + CMSG_REPORT_PVP_PLAYER_AFK = 0x3B008D, CMSG_REPORT_SERVER_LAG = 0x3A027B, CMSG_REPORT_STUCK_IN_COMBAT = 0x3A027C, CMSG_REQUEST_ACCOUNT_DATA = 0x4000C3, @@ -831,7 +834,7 @@ enum OpcodeClient : uint32 CMSG_REQUEST_CHARACTER_GUILD_FOLLOW_INFO = 0x4000B8, CMSG_REQUEST_CHAT_LOGIN = 0x400028, CMSG_REQUEST_COVENANT_CALLINGS = 0x3A026D, - CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3B00C9, + CMSG_REQUEST_CROWD_CONTROL_SPELL = 0x3B00CA, CMSG_REQUEST_CURRENCY_DATA_FOR_ACCOUNT_CHARACTERS = 0x29001E, CMSG_REQUEST_GARRISON_TALENT_WORLD_QUEST_UNLOCKS = 0x3A02A6, CMSG_REQUEST_GUILD_PARTY_STATE = 0x3A005A, @@ -841,10 +844,10 @@ enum OpcodeClient : uint32 CMSG_REQUEST_LFG_LIST_BLACKLIST = 0x3A0187, CMSG_REQUEST_MYTHIC_PLUS_AFFIXES = 0x3A00BF, CMSG_REQUEST_MYTHIC_PLUS_SEASON_DATA = 0x3A00C0, - CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3A02F3, + CMSG_REQUEST_PARTY_ELIGIBILITY_FOR_DELVE_TIERS = 0x3A02F4, CMSG_REQUEST_PARTY_JOIN_UPDATES = 0x400023, CMSG_REQUEST_PARTY_MEMBER_STATS = 0x40007F, - CMSG_REQUEST_PET_INFO = 0x3B0022, + CMSG_REQUEST_PET_INFO = 0x3B0023, CMSG_REQUEST_PLAYED_TIME = 0x3A0154, CMSG_REQUEST_PVP_REWARDS = 0x3A0041, CMSG_REQUEST_RAID_INFO = 0x4000F9, @@ -852,10 +855,10 @@ enum OpcodeClient : uint32 CMSG_REQUEST_REALM_GUILD_MASTER_INFO = 0x400196, CMSG_REQUEST_SCHEDULED_AREA_POI_UPDATE = 0x3A0240, CMSG_REQUEST_SCHEDULED_PVP_INFO = 0x3A0042, - CMSG_REQUEST_STABLED_PETS = 0x3B0023, + CMSG_REQUEST_STABLED_PETS = 0x3B0024, CMSG_REQUEST_STORE_FRONT_INFO_UPDATE = 0x290023, - CMSG_REQUEST_SURVEY = 0x3A0309, - CMSG_REQUEST_TREASURE_PUNCH_LIST_ITEMS = 0x3A030D, + CMSG_REQUEST_SURVEY = 0x3A030A, + CMSG_REQUEST_TREASURE_PUNCH_LIST_ITEMS = 0x3A030E, CMSG_REQUEST_VEHICLE_EXIT = 0x3A0106, CMSG_REQUEST_VEHICLE_NEXT_SEAT = 0x3A0108, CMSG_REQUEST_VEHICLE_PREV_SEAT = 0x3A0107, @@ -870,31 +873,32 @@ enum OpcodeClient : uint32 CMSG_RIDE_VEHICLE_INTERACT = 0x3A010A, CMSG_SAVE_ACCOUNT_DATA_EXPORT = 0x40017B, CMSG_SAVE_CUF_PROFILES = 0x3A0037, - CMSG_SAVE_EQUIPMENT_SET = 0x3B00A2, + CMSG_SAVE_EQUIPMENT_SET = 0x3B00A3, CMSG_SAVE_GUILD_EMBLEM = 0x3A018C, CMSG_SAVE_PERSONAL_EMBLEM = 0x3A018D, CMSG_SCENE_PLAYBACK_CANCELED = 0x3A00E6, CMSG_SCENE_PLAYBACK_COMPLETE = 0x3A00E5, CMSG_SCENE_TRIGGER_EVENT = 0x3A00E7, - CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3A02E2, - CMSG_SELECT_WOW_LABS_AREA = 0x3A02F8, - CMSG_SELF_RES = 0x3B00D0, - CMSG_SELL_ALL_JUNK_ITEMS = 0x3B0035, - CMSG_SELL_ITEM = 0x3B0034, + CMSG_SEAMLESS_TRANSFER_COMPLETE = 0x3A02E3, + CMSG_SELECT_DELVE_ENTRANCE_TIER = 0x3B0134, + CMSG_SELECT_WOW_LABS_AREA = 0x3A02F9, + CMSG_SELF_RES = 0x3B00D1, + CMSG_SELL_ALL_JUNK_ITEMS = 0x3B0036, + CMSG_SELL_ITEM = 0x3B0035, CMSG_SEND_CHARACTER_CLUB_INVITATION = 0x400128, CMSG_SEND_CONTACT_LIST = 0x4000FF, CMSG_SEND_MAIL = 0x400026, - CMSG_SEND_PING_UNIT = 0x3A02E4, - CMSG_SEND_PING_WORLD_POINT = 0x3A02E5, - CMSG_SEND_TEXT_EMOTE = 0x3B0019, + CMSG_SEND_PING_UNIT = 0x3A02E5, + CMSG_SEND_PING_WORLD_POINT = 0x3A02E6, + CMSG_SEND_TEXT_EMOTE = 0x3B001A, CMSG_SERVER_TIME_OFFSET_REQUEST = 0x4000CA, CMSG_SERVER_VALIDATION_SIGNATURE_REQUEST = 0x400197, CMSG_SETUP_WARBAND_GROUPS = 0x40018F, - CMSG_SET_ACTION_BAR_TOGGLES = 0x3B00D1, + CMSG_SET_ACTION_BAR_TOGGLES = 0x3B00D2, CMSG_SET_ACTION_BUTTON = 0x400062, CMSG_SET_ACTIVE_MOVER = 0x3E005B, CMSG_SET_ADVANCED_COMBAT_LOGGING = 0x3A019B, - CMSG_SET_ALLOW_RECENT_ALLIES_SEE_LOCATION = 0x3A030B, + CMSG_SET_ALLOW_RECENT_ALLIES_SEE_LOCATION = 0x3A030C, CMSG_SET_ASSISTANT_LEADER = 0x40007B, CMSG_SET_BACKPACK_AUTOSORT_DISABLED = 0x3A021D, CMSG_SET_BACKPACK_SELL_JUNK_DISABLED = 0x3A021E, @@ -906,13 +910,13 @@ enum OpcodeClient : uint32 CMSG_SET_EMPOWER_MIN_HOLD_STAGE_PERCENT = 0x3A0143, CMSG_SET_EVERYONE_IS_ASSISTANT = 0x400046, CMSG_SET_EXCLUDED_CHAT_CENSOR_SOURCES = 0x400133, - CMSG_SET_FACTION_AT_WAR = 0x3B0076, - CMSG_SET_FACTION_INACTIVE = 0x3B0078, - CMSG_SET_FACTION_NOT_AT_WAR = 0x3B0077, + CMSG_SET_FACTION_AT_WAR = 0x3B0077, + CMSG_SET_FACTION_INACTIVE = 0x3B0079, + CMSG_SET_FACTION_NOT_AT_WAR = 0x3B0078, CMSG_SET_GAME_EVENT_DEBUG_VIEW_STATE = 0x3A006B, CMSG_SET_INSERT_ITEMS_LEFT_TO_RIGHT = 0x3A0221, CMSG_SET_LOOT_METHOD = 0x400074, - CMSG_SET_LOOT_SPECIALIZATION = 0x3B00DE, + CMSG_SET_LOOT_SPECIALIZATION = 0x3B00DF, CMSG_SET_PARTY_ASSIGNMENT = 0x40007D, CMSG_SET_PARTY_LEADER = 0x400076, CMSG_SET_PET_FAVORITE = 0x3A0012, @@ -925,42 +929,44 @@ enum OpcodeClient : uint32 CMSG_SET_RESTRICT_PINGS_TO_ASSISTANTS = 0x400047, CMSG_SET_ROLE = 0x400005, CMSG_SET_SAVED_INSTANCE_EXTEND = 0x4000B2, - CMSG_SET_SELECTION = 0x3B00C7, - CMSG_SET_SHEATHED = 0x3B001A, + CMSG_SET_SELECTION = 0x3B00C8, + CMSG_SET_SHEATHED = 0x3B001B, CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT = 0x3A0220, CMSG_SET_STOP_CONVERSATION = 0x3A0226, - CMSG_SET_TAXI_BENCHMARK_MODE = 0x3B008B, + CMSG_SET_TAXI_BENCHMARK_MODE = 0x3B008C, CMSG_SET_TITLE = 0x3A015A, CMSG_SET_TRADE_CURRENCY = 0x3A000A, CMSG_SET_TRADE_GOLD = 0x3A0009, CMSG_SET_TRADE_ITEM = 0x3A0007, CMSG_SET_USING_PARTY_GARRISON = 0x3A01DC, CMSG_SET_WAR_MODE = 0x3A0192, - CMSG_SET_WATCHED_FACTION = 0x3B0079, + CMSG_SET_WATCHED_FACTION = 0x3B007A, CMSG_SHOW_TRADE_SKILL = 0x4000F1, - CMSG_SIGN_PETITION = 0x3B00D2, + CMSG_SIGN_PETITION = 0x3B00D3, CMSG_SILENCE_PARTY_TALKER = 0x40007E, CMSG_SOCIAL_CONTRACT_REQUEST = 0x400176, - CMSG_SOCKET_GEMS = 0x3B0083, - CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3A02E8, + CMSG_SOCKET_GEMS = 0x3B0084, + CMSG_SORT_ACCOUNT_BANK_BAGS = 0x3A02E9, CMSG_SORT_BAGS = 0x3A0222, CMSG_SORT_BANK_BAGS = 0x3A0223, CMSG_SPAWN_TRACKING_UPDATE = 0x3A016F, CMSG_SPECTATE_CHANGE = 0x3A02DB, - CMSG_SPELL_CLICK = 0x3B0027, + CMSG_SPECTATE_END = 0x3A02DD, + CMSG_SPECTATE_SET_NEXT_TARGET = 0x3A02DC, + CMSG_SPELL_CLICK = 0x3B0028, CMSG_SPELL_EMPOWER_RELEASE = 0x3A0141, CMSG_SPELL_EMPOWER_RESTART = 0x3A0142, - CMSG_SPIRIT_HEALER_ACTIVATE = 0x3B0042, - CMSG_SPLIT_GUILD_BANK_ITEM = 0x3B0053, - CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x3B0050, + CMSG_SPIRIT_HEALER_ACTIVATE = 0x3B0043, + CMSG_SPLIT_GUILD_BANK_ITEM = 0x3B0054, + CMSG_SPLIT_GUILD_BANK_ITEM_TO_INVENTORY = 0x3B0051, CMSG_SPLIT_ITEM = 0x3D0008, - CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x3B004E, + CMSG_SPLIT_ITEM_TO_GUILD_BANK = 0x3B004F, CMSG_STAND_STATE_CHANGE = 0x3A0035, - CMSG_START_CHALLENGE_MODE = 0x3B00EA, + CMSG_START_CHALLENGE_MODE = 0x3B00EB, CMSG_START_INSTANCE_ABANDON_VOTE = 0x400060, CMSG_START_SPECTATOR_WAR_GAME = 0x40000B, CMSG_START_WAR_GAME = 0x40000A, - CMSG_STORE_GUILD_BANK_ITEM = 0x3B0049, + CMSG_STORE_GUILD_BANK_ITEM = 0x3B004A, CMSG_SUBMIT_USER_FEEDBACK = 0x4000C2, CMSG_SUBSCRIPTION_INTERSTITIAL_RESPONSE = 0x3A029B, CMSG_SUMMON_RESPONSE = 0x400096, @@ -968,44 +974,45 @@ enum OpcodeClient : uint32 CMSG_SURRENDER_ARENA = 0x3A0020, CMSG_SUSPEND_COMMS_ACK = 0x410000, CMSG_SUSPEND_TOKEN_RESPONSE = 0x410008, - CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004B, + CMSG_SWAP_GUILD_BANK_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004C, CMSG_SWAP_INV_ITEM = 0x3D0007, CMSG_SWAP_ITEM = 0x3D0006, - CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004A, + CMSG_SWAP_ITEM_WITH_GUILD_BANK_ITEM = 0x3B004B, CMSG_SWAP_SUB_GROUPS = 0x400079, CMSG_TABARD_VENDOR_ACTIVATE = 0x3A018E, - CMSG_TALK_TO_GOSSIP = 0x3B0024, - CMSG_TAXI_NODE_STATUS_QUERY = 0x3B003B, - CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x3B003D, - CMSG_TAXI_REQUEST_EARLY_LANDING = 0x3B003F, + CMSG_TALK_TO_GOSSIP = 0x3B0025, + CMSG_TAXI_NODE_STATUS_QUERY = 0x3B003C, + CMSG_TAXI_QUERY_AVAILABLE_NODES = 0x3B003E, + CMSG_TAXI_REQUEST_EARLY_LANDING = 0x3B0040, + CMSG_TIERED_ENTRANCE_OPEN = 0x3B0133, CMSG_TIME_ADJUSTMENT_RESPONSE = 0x3E005F, CMSG_TIME_SYNC_RESPONSE = 0x3E005C, CMSG_TIME_SYNC_RESPONSE_DROPPED = 0x3E005E, CMSG_TIME_SYNC_RESPONSE_FAILED = 0x3E005D, CMSG_TOGGLE_DIFFICULTY = 0x400083, CMSG_TOGGLE_PVP = 0x3A0190, - CMSG_TOTEM_DESTROYED = 0x3B0090, + CMSG_TOTEM_DESTROYED = 0x3B0091, CMSG_TOY_CLEAR_FANFARE = 0x290004, CMSG_TRADE_SKILL_SET_FAVORITE = 0x3A023C, - CMSG_TRAINER_BUY_SPELL = 0x3B0041, - CMSG_TRAINER_LIST = 0x3B0040, - CMSG_TRAINING_GROUNDS_JOIN = 0x3B00C3, + CMSG_TRAINER_BUY_SPELL = 0x3B0042, + CMSG_TRAINER_LIST = 0x3B0041, + CMSG_TRAINING_GROUNDS_JOIN = 0x3B00C4, CMSG_TRAITS_COMMIT_CONFIG = 0x3A02C4, CMSG_TRAITS_TALENT_TEST_UNLEARN_SPELLS = 0x3A02C2, - CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3A02F1, + CMSG_TRANSFER_CURRENCY_FROM_ACCOUNT_CHARACTER = 0x3A02F2, CMSG_TRANSMOG_OUTFIT_NEW = 0x3A0044, CMSG_TRANSMOG_OUTFIT_UPDATE_INFO = 0x3A0045, CMSG_TRANSMOG_OUTFIT_UPDATE_SITUATIONS = 0x3A0046, CMSG_TRANSMOG_OUTFIT_UPDATE_SLOTS = 0x3A0047, - CMSG_TURN_IN_PETITION = 0x3B00D4, + CMSG_TURN_IN_PETITION = 0x3B00D5, CMSG_TUTORIAL = 0x40010C, CMSG_UI_MAP_QUEST_LINES_REQUEST = 0x3A026C, CMSG_UNACCEPT_TRADE = 0x3A0005, CMSG_UNDELETE_CHARACTER = 0x40010E, - CMSG_UNLEARN_SKILL = 0x3B007D, + CMSG_UNLEARN_SKILL = 0x3B007E, CMSG_UNLEARN_SPECIALIZATION = 0x3A0057, CMSG_UPDATE_AADC_STATUS = 0x400166, - CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x3B012B, + CMSG_UPDATE_ACCOUNT_BANK_TAB_SETTINGS = 0x3B012D, CMSG_UPDATE_ACCOUNT_DATA = 0x4000C4, CMSG_UPDATE_AREA_TRIGGER_VISUAL = 0x3A017E, CMSG_UPDATE_CRAFTING_NPC_RECIPES = 0x3A01EE, @@ -1031,7 +1038,7 @@ enum OpcodeClient : uint32 CMSG_WARDEN3_DATA = 0x400018, CMSG_WHO = 0x4000AD, CMSG_WHO_IS = 0x4000AC, - CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3A02DE, + CMSG_WORLD_LOOT_OBJECT_CLICK = 0x3A02DF, CMSG_WORLD_PORT_RESPONSE = 0x400025, CMSG_WRAP_ITEM = 0x3D0000, @@ -1042,7 +1049,7 @@ enum OpcodeClient : uint32 CMSG_TRANSMOGRIFY_ITEMS = CMSG_REQUEST_SCHEDULED_PVP_INFO + 1, }; -inline constexpr std::size_t NUM_CMSG_OPCODES = 1938; +inline constexpr std::size_t NUM_CMSG_OPCODES = 1948; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) { @@ -1058,18 +1065,18 @@ inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) case 0x30: return idInGroup < 17 ? idInGroup + 152 : -1; case 0x31: return idInGroup < 8 ? idInGroup + 169 : -1; case 0x32: return idInGroup < 9 ? idInGroup + 177 : -1; - case 0x33: return idInGroup < 36 ? idInGroup + 186 : -1; - case 0x35: return idInGroup < 9 ? idInGroup + 222 : -1; - case 0x37: return idInGroup < 8 ? idInGroup + 231 : -1; - case 0x38: return idInGroup < 16 ? idInGroup + 239 : -1; - case 0x39: return idInGroup < 16 ? idInGroup + 255 : -1; - case 0x3A: return idInGroup < 782 ? idInGroup + 271 : -1; - case 0x3B: return idInGroup < 305 ? idInGroup + 1053 : -1; - case 0x3C: return idInGroup < 1 ? idInGroup + 1358 : -1; - case 0x3D: return idInGroup < 10 ? idInGroup + 1359 : -1; - case 0x3E: return idInGroup < 134 ? idInGroup + 1369 : -1; - case 0x40: return idInGroup < 417 ? idInGroup + 1503 : -1; - case 0x41: return idInGroup < 18 ? idInGroup + 1920 : -1; + case 0x33: return idInGroup < 38 ? idInGroup + 186 : -1; + case 0x35: return idInGroup < 9 ? idInGroup + 224 : -1; + case 0x37: return idInGroup < 8 ? idInGroup + 233 : -1; + case 0x38: return idInGroup < 16 ? idInGroup + 241 : -1; + case 0x39: return idInGroup < 16 ? idInGroup + 257 : -1; + case 0x3A: return idInGroup < 783 ? idInGroup + 273 : -1; + case 0x3B: return idInGroup < 309 ? idInGroup + 1056 : -1; + case 0x3C: return idInGroup < 1 ? idInGroup + 1365 : -1; + case 0x3D: return idInGroup < 10 ? idInGroup + 1366 : -1; + case 0x3E: return idInGroup < 137 ? idInGroup + 1376 : -1; + case 0x40: return idInGroup < 417 ? idInGroup + 1513 : -1; + case 0x41: return idInGroup < 18 ? idInGroup + 1930 : -1; default: return -1; } } @@ -1077,8 +1084,8 @@ inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeClient opcode) enum OpcodeServer : uint32 { SMSG_ABORT_NEW_WORLD = 0x420030, - SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x420350, - SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x420355, + SMSG_ACCOUNT_CHARACTER_CURRENCY_LISTS = 0x420353, + SMSG_ACCOUNT_CONVERSION_STATE_UPDATE = 0x420358, SMSG_ACCOUNT_COSMETIC_ADDED = 0x420311, SMSG_ACCOUNT_CRITERIA_UPDATE = 0x4202F9, SMSG_ACCOUNT_DATA_TIMES = 0x4201B4, @@ -1086,7 +1093,7 @@ enum OpcodeServer : uint32 SMSG_ACCOUNT_EXTERIOR_FIXTURE_COLLECTION_UPDATE = 0x420054, SMSG_ACCOUNT_HEIRLOOM_UPDATE = 0x420049, SMSG_ACCOUNT_HOUSE_TYPE_COLLECTION_UPDATE = 0x420057, - SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x42035B, + SMSG_ACCOUNT_ITEM_COLLECTION_DATA = 0x42035E, SMSG_ACCOUNT_MOUNT_REMOVED = 0x420047, SMSG_ACCOUNT_MOUNT_UPDATE = 0x420046, SMSG_ACCOUNT_NOTIFICATIONS_RESPONSE = 0x420310, @@ -1230,9 +1237,9 @@ enum OpcodeServer : uint32 SMSG_BROADCAST_ACHIEVEMENT = 0x470012, SMSG_BROADCAST_SUMMON_CAST = 0x4202D9, SMSG_BROADCAST_SUMMON_RESPONSE = 0x4202DA, - SMSG_BULK_PURCHASE_RESPONSE = 0x420373, - SMSG_BULK_PURCHASE_UPDATE_RESPONSE = 0x420374, - SMSG_BULK_REFUND_RESPONSE = 0x420375, + SMSG_BULK_PURCHASE_RESPONSE = 0x420376, + SMSG_BULK_PURCHASE_UPDATE_RESPONSE = 0x420377, + SMSG_BULK_REFUND_RESPONSE = 0x420378, SMSG_BUY_FAILED = 0x420170, SMSG_BUY_SUCCEEDED = 0x42016F, SMSG_CACHE_INFO = 0x46000F, @@ -1272,8 +1279,8 @@ enum OpcodeServer : uint32 SMSG_CAST_FAILED = 0x62004A, SMSG_CAS_REFRESH_REMOTE_DATA = 0x420120, SMSG_CATALOG_SHOP_LICENSE_DATA = 0x4202BF, - SMSG_CATALOG_SHOP_OBTAIN_LICENSE = 0x420369, - SMSG_CATALOG_SHOP_OPEN_CHECKOUT_RESULT = 0x42035C, + SMSG_CATALOG_SHOP_OBTAIN_LICENSE = 0x42036C, + SMSG_CATALOG_SHOP_OPEN_CHECKOUT_RESULT = 0x42035F, SMSG_CAUTIONARY_CHANNEL_MESSAGE = 0x470009, SMSG_CAUTIONARY_CHAT_MESSAGE = 0x470008, SMSG_CHAIN_MISSILE_BOUNCE = 0x42006B, @@ -1327,7 +1334,7 @@ enum OpcodeServer : uint32 SMSG_CLEAR_BOSS_EMOTES = 0x42005E, SMSG_CLEAR_COOLDOWN = 0x420164, SMSG_CLEAR_COOLDOWNS = 0x620015, - SMSG_CLEAR_INITIATIVE_TASK_CRITERIA_PROGRESS = 0x420364, + SMSG_CLEAR_INITIATIVE_TASK_CRITERIA_PROGRESS = 0x420367, SMSG_CLEAR_RESURRECT = 0x420013, SMSG_CLEAR_SPELL_CHARGES = 0x620017, SMSG_CLEAR_TARGET = 0x480022, @@ -1390,8 +1397,8 @@ enum OpcodeServer : uint32 SMSG_CRITERIA_DELETED = 0x420190, SMSG_CRITERIA_UPDATE = 0x42018A, SMSG_CROSSED_INEBRIATION_THRESHOLD = 0x42016B, - SMSG_CURRENCY_TRANSFER_LOG = 0x420352, - SMSG_CURRENCY_TRANSFER_RESULT = 0x420351, + SMSG_CURRENCY_TRANSFER_LOG = 0x420355, + SMSG_CURRENCY_TRANSFER_RESULT = 0x420354, SMSG_CUSTOM_LOAD_SCREEN = 0x42006E, SMSG_DAILY_QUESTS_RESET = 0x600000, SMSG_DAMAGE_CALC_LOG = 0x620056, @@ -1401,7 +1408,7 @@ enum OpcodeServer : uint32 SMSG_DEFENSE_MESSAGE = 0x47000C, SMSG_DELETE_CHAR = 0x4201AB, SMSG_DELETE_EXPIRED_MISSIONS_RESULT = 0x4C0022, - SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x420357, + SMSG_DELVES_ACCOUNT_DATA_ELEMENT_CHANGED = 0x42035A, SMSG_DESTROY_ARENA_UNIT = 0x4201EA, SMSG_DESTRUCTIBLE_BUILDING_DAMAGE = 0x4201A2, SMSG_DIFFERENT_INSTANCE_FROM_PARTY = 0x420020, @@ -1543,14 +1550,14 @@ enum OpcodeServer : uint32 SMSG_GENERATE_RANDOM_CHARACTER_NAME_RESULT = 0x42001C, SMSG_GENERATE_SSO_TOKEN_RESPONSE = 0x4202C5, SMSG_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x420209, - SMSG_GET_ALL_LICENSED_DECOR_QUANTITIES_RESPONSE = 0x420377, - SMSG_GET_DECOR_REFUND_LIST_RESPONSE = 0x420372, + SMSG_GET_ALL_LICENSED_DECOR_QUANTITIES_RESPONSE = 0x42037A, + SMSG_GET_DECOR_REFUND_LIST_RESPONSE = 0x420375, SMSG_GET_GARRISON_INFO_RESULT = 0x4C0000, - SMSG_GET_INITIATIVE_ACTIVITY_LOG_RESULT = 0x420366, - SMSG_GET_INITIATIVE_REWARDS_RESULT = 0x420367, + SMSG_GET_INITIATIVE_ACTIVITY_LOG_RESULT = 0x420369, + SMSG_GET_INITIATIVE_REWARDS_RESULT = 0x42036A, SMSG_GET_LANDING_PAGE_SHIPMENTS_RESPONSE = 0x420248, - SMSG_GET_PLAYER_INITIATIVE_INFO_RESULT = 0x420365, - SMSG_GET_REALM_HIDDEN_RESULT = 0x420347, + SMSG_GET_PLAYER_INITIATIVE_INFO_RESULT = 0x420368, + SMSG_GET_REALM_HIDDEN_RESULT = 0x42034A, SMSG_GET_REMAINING_GAME_TIME_RESPONSE = 0x420282, SMSG_GET_SELECTED_TROPHY_ID_RESPONSE = 0x42026F, SMSG_GET_SHIPMENTS_OF_TYPE_RESPONSE = 0x420247, @@ -1634,7 +1641,7 @@ enum OpcodeServer : uint32 SMSG_GUILD_REWARD_LIST = 0x4E0008, SMSG_GUILD_ROSTER = 0x4E0003, SMSG_GUILD_SEND_RANK_CHANGE = 0x4E0001, - SMSG_HARDCORE_DEATH_ALERT = 0x42034F, + SMSG_HARDCORE_DEATH_ALERT = 0x420352, SMSG_HEALTH_UPDATE = 0x42017B, SMSG_HIGHEST_THREAT_UPDATE = 0x420183, SMSG_HOTFIX_CONNECT = 0x460003, @@ -1663,8 +1670,8 @@ enum OpcodeServer : uint32 SMSG_HOUSING_GET_CURRENT_HOUSE_INFO_RESPONSE = 0x550001, SMSG_HOUSING_GET_PLAYER_PERMISSIONS_RESPONSE = 0x550006, SMSG_HOUSING_HOUSE_STATUS_RESPONSE = 0x550000, - SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_CLEARED_RESULT = 0x42037C, - SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_RESULT = 0x42037B, + SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_CLEARED_RESULT = 0x420380, + SMSG_HOUSING_PHOTO_SHARING_AUTHORIZATION_RESULT = 0x42037F, SMSG_HOUSING_REDEEM_DEFERRED_DECOR_RESPONSE = 0x510009, SMSG_HOUSING_RESET_KIOSK_MODE_RESPONSE = 0x550007, SMSG_HOUSING_ROOM_ADD_RESPONSE = 0x530001, @@ -1695,6 +1702,7 @@ enum OpcodeServer : uint32 SMSG_HOUSING_SVCS_HOUSE_FINDER_FORCE_REFRESH = 0x54001F, SMSG_HOUSING_SVCS_NEIGHBORHOOD_OWNERSHIP_TRANSFERRED_RESPONSE = 0x540019, SMSG_HOUSING_SVCS_NEIGHBORHOOD_RESERVE_PLOT_RESPONSE = 0x540004, + SMSG_HOUSING_SVCS_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION = 0x540023, SMSG_HOUSING_SVCS_NOTIFY_PERMISSIONS_FAILURE = 0x540000, SMSG_HOUSING_SVCS_PLAYER_VIEW_HOUSES_RESPONSE = 0x54000C, SMSG_HOUSING_SVCS_REJECT_NEIGHBORHOOD_OWNERSHIP_RESPONSE = 0x540018, @@ -1704,10 +1712,10 @@ enum OpcodeServer : uint32 SMSG_HOUSING_SVC_REQUEST_PLAYER_RELOAD_DATA = 0x540020, SMSG_INITIALIZE_FACTIONS = 0x4201CC, SMSG_INITIAL_SETUP = 0x420014, - SMSG_INITIATIVE_COMPLETE = 0x420363, - SMSG_INITIATIVE_REWARD_AVAILABLE = 0x420368, - SMSG_INITIATIVE_SERVICE_STATUS = 0x420361, - SMSG_INITIATIVE_TASK_COMPLETE = 0x420362, + SMSG_INITIATIVE_COMPLETE = 0x420366, + SMSG_INITIATIVE_REWARD_AVAILABLE = 0x42036B, + SMSG_INITIATIVE_SERVICE_STATUS = 0x420364, + SMSG_INITIATIVE_TASK_COMPLETE = 0x420365, SMSG_INIT_WORLD_STATES = 0x4201EE, SMSG_INSPECT_RESULT = 0x4200D9, SMSG_INSTANCE_ABANDON_VOTE_COMPLETED = 0x42009D, @@ -1760,7 +1768,7 @@ enum OpcodeServer : uint32 SMSG_ITEM_PUSH_RESULT = 0x4200CB, SMSG_ITEM_TIME_UPDATE = 0x4201FC, SMSG_KICK_REASON = 0x420133, - SMSG_LAST_CATALOG_FETCH_RESPONSE = 0x42037A, + SMSG_LAST_CATALOG_FETCH_RESPONSE = 0x42037E, SMSG_LATENCY_REPORT_PING = 0x420312, SMSG_LEARNED_SPELLS = 0x620040, SMSG_LEARN_PVP_TALENT_FAILED = 0x420077, @@ -1797,7 +1805,7 @@ enum OpcodeServer : uint32 SMSG_LFG_SUSPEND_LOREWALKING = 0x560021, SMSG_LFG_TELEPORT_DENIED = 0x560016, SMSG_LFG_UPDATE_STATUS = 0x560008, - SMSG_LICENSED_DECOR_QUANTITIES_UPDATE = 0x420378, + SMSG_LICENSED_DECOR_QUANTITIES_UPDATE = 0x42037B, SMSG_LIVE_REGION_ACCOUNT_RESTORE_RESULT = 0x420217, SMSG_LIVE_REGION_CHARACTER_COPY_RESULT = 0x420216, SMSG_LIVE_REGION_GET_ACCOUNT_CHARACTER_LIST_RESULT = 0x42020A, @@ -1838,7 +1846,7 @@ enum OpcodeServer : uint32 SMSG_MINIMAP_PING = 0x420178, SMSG_MIRROR_IMAGE_COMPONENTED_DATA = 0x620004, SMSG_MIRROR_IMAGE_CREATURE_DATA = 0x620003, - SMSG_MIRROR_VARS = 0x42036A, + SMSG_MIRROR_VARS = 0x42036D, SMSG_MISSILE_CANCEL = 0x42006A, SMSG_MODIFY_COOLDOWN = 0x42020C, SMSG_MOTD = 0x470003, @@ -1849,15 +1857,21 @@ enum OpcodeServer : uint32 SMSG_MOVE_APPLY_MOVEMENT_FORCE = 0x5A0047, SMSG_MOVE_DISABLE_COLLISION = 0x5A0043, SMSG_MOVE_DISABLE_DOUBLE_JUMP = 0x5A002D, + SMSG_MOVE_DISABLE_FULL_SPEED_PITCHING = 0x5A0079, SMSG_MOVE_DISABLE_FULL_SPEED_TURNING = 0x5A0077, SMSG_MOVE_DISABLE_GRAVITY = 0x5A003F, SMSG_MOVE_DISABLE_INERTIA = 0x5A0041, + SMSG_MOVE_DISABLE_JUMPING = 0x5A007C, + SMSG_MOVE_DISABLE_STRAFING = 0x5A007E, SMSG_MOVE_DISABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x5A003E, SMSG_MOVE_ENABLE_COLLISION = 0x5A0044, SMSG_MOVE_ENABLE_DOUBLE_JUMP = 0x5A002C, + SMSG_MOVE_ENABLE_FULL_SPEED_PITCHING = 0x5A0078, SMSG_MOVE_ENABLE_FULL_SPEED_TURNING = 0x5A0076, SMSG_MOVE_ENABLE_GRAVITY = 0x5A0040, SMSG_MOVE_ENABLE_INERTIA = 0x5A0042, + SMSG_MOVE_ENABLE_JUMPING = 0x5A007D, + SMSG_MOVE_ENABLE_STRAFING = 0x5A007F, SMSG_MOVE_ENABLE_TRANSITION_BETWEEN_SWIM_AND_FLY = 0x5A003D, SMSG_MOVE_INITIAL_OBJECT_UPDATE_COMPLETE = 0x5A0075, SMSG_MOVE_KNOCK_BACK = 0x5A0033, @@ -1879,9 +1893,10 @@ enum OpcodeServer : uint32 SMSG_MOVE_SET_ADV_FLYING_PITCHING_RATE_UP = 0x5A0070, SMSG_MOVE_SET_ADV_FLYING_SURFACE_FRICTION = 0x5A0072, SMSG_MOVE_SET_ADV_FLYING_TURN_VELOCITY_THRESHOLD = 0x5A0071, + SMSG_MOVE_SET_ALWAYS_ALLOW_PITCHING = 0x5A0080, SMSG_MOVE_SET_CANNOT_SWIM = 0x5A0037, SMSG_MOVE_SET_CAN_ADV_FLY = 0x5A0066, - SMSG_MOVE_SET_CAN_DRIVE = 0x5A0078, + SMSG_MOVE_SET_CAN_DRIVE = 0x5A007A, SMSG_MOVE_SET_CAN_FLY = 0x5A0035, SMSG_MOVE_SET_CAN_TURN_WHILE_FALLING = 0x5A0039, SMSG_MOVE_SET_COLLISION_HEIGHT = 0x5A0045, @@ -1934,9 +1949,10 @@ enum OpcodeServer : uint32 SMSG_MOVE_SPLINE_UNSET_HOVER = 0x5A0054, SMSG_MOVE_TELEPORT = 0x5A0034, SMSG_MOVE_UNROOT = 0x5A002A, + SMSG_MOVE_UNSET_ALWAYS_ALLOW_PITCHING = 0x5A0081, SMSG_MOVE_UNSET_CANNOT_SWIM = 0x5A0038, SMSG_MOVE_UNSET_CAN_ADV_FLY = 0x5A0067, - SMSG_MOVE_UNSET_CAN_DRIVE = 0x5A0079, + SMSG_MOVE_UNSET_CAN_DRIVE = 0x5A007B, SMSG_MOVE_UNSET_CAN_FLY = 0x5A0036, SMSG_MOVE_UNSET_CAN_TURN_WHILE_FALLING = 0x5A003A, SMSG_MOVE_UNSET_HOVERING = 0x5A0032, @@ -1968,36 +1984,33 @@ enum OpcodeServer : uint32 SMSG_MYTHIC_PLUS_CURRENT_AFFIXES = 0x4200B4, SMSG_MYTHIC_PLUS_NEW_WEEK_RECORD = 0x4200BA, SMSG_MYTHIC_PLUS_SEASON_DATA = 0x4200B3, - SMSG_NEIGHBORHOOD_ADD_SECONDARY_OWNER_RESPONSE = 0x5C0006, - SMSG_NEIGHBORHOOD_BUY_HOUSE_RESPONSE = 0x5C0008, - SMSG_NEIGHBORHOOD_CANCEL_INVITATION_RESPONSE = 0x5C000C, + SMSG_NEIGHBORHOOD_ADD_SECONDARY_OWNER_RESPONSE = 0x5C0003, + SMSG_NEIGHBORHOOD_BUY_HOUSE_RESPONSE = 0x5C0005, + SMSG_NEIGHBORHOOD_CANCEL_INVITATION_RESPONSE = 0x5C0009, SMSG_NEIGHBORHOOD_CHARTER_ADD_SIGNATURE_RESPONSE = 0x5B0003, SMSG_NEIGHBORHOOD_CHARTER_OPEN_CONFIRMATION_UI_RESPONSE = 0x5B0004, SMSG_NEIGHBORHOOD_CHARTER_OPEN_UI_RESPONSE = 0x5B0001, SMSG_NEIGHBORHOOD_CHARTER_SIGNATURE_REMOVED_NOTIFICATION = 0x5B0005, SMSG_NEIGHBORHOOD_CHARTER_SIGN_REQUEST = 0x5B0002, SMSG_NEIGHBORHOOD_CHARTER_UPDATE_RESPONSE = 0x5B0000, - SMSG_NEIGHBORHOOD_DECLINE_INVITATION_RESPONSE = 0x5C000D, - SMSG_NEIGHBORHOOD_EVICT_PLAYER = 0x5C0002, - SMSG_NEIGHBORHOOD_EVICT_PLOT_NOTICE = 0x5C0016, - SMSG_NEIGHBORHOOD_EVICT_PLOT_RESPONSE = 0x5C0015, - SMSG_NEIGHBORHOOD_GET_INVITES_RESPONSE = 0x5C000F, - SMSG_NEIGHBORHOOD_GET_ROSTER_RESPONSE = 0x5C0012, - SMSG_NEIGHBORHOOD_INVITE_NAME_LOOKUP_RESULT = 0x5C0014, - SMSG_NEIGHBORHOOD_INVITE_NOTIFICATION = 0x5C0010, - SMSG_NEIGHBORHOOD_INVITE_RESIDENT_RESPONSE = 0x5C000B, - SMSG_NEIGHBORHOOD_MOVE_HOUSE_RESPONSE = 0x5C0009, - SMSG_NEIGHBORHOOD_OFFER_OWNERSHIP_RESPONSE = 0x5C0011, - SMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI_RESPONSE = 0x5C000A, - SMSG_NEIGHBORHOOD_PLAYER_ENTER_PLOT = 0x5C0000, - SMSG_NEIGHBORHOOD_PLAYER_GET_INVITE_RESPONSE = 0x5C000E, - SMSG_NEIGHBORHOOD_PLAYER_LEAVE_PLOT = 0x5C0001, - SMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER_RESPONSE = 0x5C0007, - SMSG_NEIGHBORHOOD_ROSTER_RESIDENT_UPDATE = 0x5C0013, - SMSG_NEIGHBORHOOD_UPDATE_NAME_NOTIFICATION = 0x5C0004, - SMSG_NEIGHBORHOOD_UPDATE_NAME_RESPONSE = 0x5C0003, + SMSG_NEIGHBORHOOD_DECLINE_INVITATION_RESPONSE = 0x5C000A, + SMSG_NEIGHBORHOOD_EVICT_PLAYER = 0x5C0000, + SMSG_NEIGHBORHOOD_EVICT_PLOT_NOTICE = 0x5C0013, + SMSG_NEIGHBORHOOD_EVICT_PLOT_RESPONSE = 0x5C0012, + SMSG_NEIGHBORHOOD_GET_INVITES_RESPONSE = 0x5C000C, + SMSG_NEIGHBORHOOD_GET_ROSTER_RESPONSE = 0x5C000F, + SMSG_NEIGHBORHOOD_INVITE_NAME_LOOKUP_RESULT = 0x5C0011, + SMSG_NEIGHBORHOOD_INVITE_NOTIFICATION = 0x5C000D, + SMSG_NEIGHBORHOOD_INVITE_RESIDENT_RESPONSE = 0x5C0008, + SMSG_NEIGHBORHOOD_MOVE_HOUSE_RESPONSE = 0x5C0006, + SMSG_NEIGHBORHOOD_OFFER_OWNERSHIP_RESPONSE = 0x5C000E, + SMSG_NEIGHBORHOOD_OPEN_CORNERSTONE_UI_RESPONSE = 0x5C0007, + SMSG_NEIGHBORHOOD_PLAYER_GET_INVITE_RESPONSE = 0x5C000B, + SMSG_NEIGHBORHOOD_REMOVE_SECONDARY_OWNER_RESPONSE = 0x5C0004, + SMSG_NEIGHBORHOOD_ROSTER_RESIDENT_UPDATE = 0x5C0010, + SMSG_NEIGHBORHOOD_UPDATE_NAME_RESPONSE = 0x5C0001, SMSG_NEUTRAL_PLAYER_FACTION_SELECT_RESULT = 0x42007E, - SMSG_NEW_DATA_BUILD = 0x420346, + SMSG_NEW_DATA_BUILD = 0x420349, SMSG_NEW_TAXI_PATH = 0x420128, SMSG_NEW_WORLD = 0x42002B, SMSG_NOTIFY_DEST_LOC_SPELL_CAST = 0x620036, @@ -2015,7 +2028,7 @@ enum OpcodeServer : uint32 SMSG_OVERRIDE_LIGHT = 0x420165, SMSG_PAGE_TEXT = 0x4201C3, SMSG_PARTY_COMMAND_RESULT = 0x42023E, - SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x42035A, + SMSG_PARTY_ELIGIBILITY_FOR_DELVE_TIERS_RESPONSE = 0x42035D, SMSG_PARTY_INVITE = 0x420060, SMSG_PARTY_KILL_LOG = 0x420202, SMSG_PARTY_MEMBER_FULL_STATE = 0x420201, @@ -2185,11 +2198,11 @@ enum OpcodeServer : uint32 SMSG_REATTACH_RESURRECT = 0x4201F3, SMSG_RECEIVE_PING_UNIT = 0x420039, SMSG_RECEIVE_PING_WORLD_POINT = 0x42003A, - SMSG_RECENT_ALLY_DATA_RESPONSE = 0x42035D, - SMSG_RECENT_ALLY_NOTE_UPDATED = 0x42035E, + SMSG_RECENT_ALLY_DATA_RESPONSE = 0x420360, + SMSG_RECENT_ALLY_NOTE_UPDATED = 0x420361, SMSG_RECRAFT_ITEM_RESULT = 0x420339, SMSG_RECRUIT_A_FRIEND_FAILURE = 0x42016A, - SMSG_REFETCH_TACT_KEYS = 0x420371, + SMSG_REFETCH_TACT_KEYS = 0x420374, SMSG_REFRESH_COMPONENT = 0x4200F8, SMSG_REGIONWIDE_CHARACTER_MAIL_DATA = 0x42001A, SMSG_REGIONWIDE_CHARACTER_RESTRICTIONS_DATA = 0x420019, @@ -2259,7 +2272,7 @@ enum OpcodeServer : uint32 SMSG_SET_AI_ANIM_KIT = 0x4201D8, SMSG_SET_ANIM_TIER = 0x4201DC, SMSG_SET_CHR_UPGRADE_TIER = 0x420081, - SMSG_SET_CTR_OPTIONS = 0x42036E, + SMSG_SET_CTR_OPTIONS = 0x420371, SMSG_SET_CURRENCY = 0x420008, SMSG_SET_DF_FAST_LAUNCH_RESULT = 0x560012, SMSG_SET_DUNGEON_DIFFICULTY = 0x42014E, @@ -2269,7 +2282,7 @@ enum OpcodeServer : uint32 SMSG_SET_FACTION_VISIBLE = 0x4201D2, SMSG_SET_FLAT_SPELL_MODIFIER = 0x620027, SMSG_SET_FLAT_SPELL_PVP_MODIFIER = 0x620029, - SMSG_SET_INSTANCE_LEAVER = 0x42036B, + SMSG_SET_INSTANCE_LEAVER = 0x42036E, SMSG_SET_ITEM_PURCHASE_DATA = 0x420033, SMSG_SET_LOOT_METHOD_FAILED = 0x420278, SMSG_SET_MAX_WEEKLY_QUANTITY = 0x420036, @@ -2288,8 +2301,8 @@ enum OpcodeServer : uint32 SMSG_SET_VEHICLE_REC_ID = 0x4201A0, SMSG_SHADOWLANDS_CAPACITANCE_UPDATE = 0x420317, SMSG_SHIPMENT_FACTION_UPDATE_RESULT = 0x4C003B, - SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x420358, - SMSG_SHOW_DELVES_DISPLAY_UI = 0x420356, + SMSG_SHOW_DELVES_COMPANION_CONFIGURATION_UI = 0x42035B, + SMSG_SHOW_DELVES_DISPLAY_UI = 0x420359, SMSG_SHOW_NEUTRAL_PLAYER_FACTION_SELECT_UI = 0x42007D, SMSG_SHOW_QUEST_COMPLETION_TEXT = 0x600015, SMSG_SHOW_TAXI_NODES = 0x420177, @@ -2298,8 +2311,10 @@ enum OpcodeServer : uint32 SMSG_SOCKET_GEMS_FAILURE = 0x4201D0, SMSG_SOCKET_GEMS_SUCCESS = 0x4201CF, SMSG_SPECIAL_MOUNT_ANIM = 0x420149, - SMSG_SPECTATE_END = 0x420345, - SMSG_SPECTATE_PLAYER = 0x420344, + SMSG_SPECTATE_END = 0x420348, + SMSG_SPECTATE_NEXT = 0x420347, + SMSG_SPECTATE_PLAYER = 0x420345, + SMSG_SPECTATE_RESET = 0x420344, SMSG_SPEC_INVOLUNTARILY_CHANGED = 0x4201C2, SMSG_SPELL_ABSORB_LOG = 0x62000C, SMSG_SPELL_CATEGORY_COOLDOWN = 0x620006, @@ -2348,7 +2363,7 @@ enum OpcodeServer : uint32 SMSG_SUMMON_RAID_MEMBER_VALIDATE_FAILED = 0x420023, SMSG_SUMMON_REQUEST = 0x4201CA, SMSG_SUPERCEDED_SPELLS = 0x62003F, - SMSG_SURVEY_DELIVERED = 0x420360, + SMSG_SURVEY_DELIVERED = 0x420363, SMSG_SUSPEND_COMMS = 0x490005, SMSG_SUSPEND_TOKEN = 0x420040, SMSG_SYNC_WOW_ENTITLEMENTS = 0x4202FC, @@ -2358,7 +2373,8 @@ enum OpcodeServer : uint32 SMSG_THREAT_CLEAR = 0x420186, SMSG_THREAT_REMOVE = 0x420185, SMSG_THREAT_UPDATE = 0x420184, - SMSG_TIMERUNNING_SEASON_ENDED = 0x420359, + SMSG_TIERED_ENTRANCE_OPEN_RESPONSE = 0x42037C, + SMSG_TIMERUNNING_SEASON_ENDED = 0x42035C, SMSG_TIME_ADJUSTMENT = 0x5A0001, SMSG_TIME_SYNC_REQUEST = 0x5A0000, SMSG_TITLE_EARNED = 0x420181, @@ -2379,7 +2395,7 @@ enum OpcodeServer : uint32 SMSG_TRANSMOG_OUTFIT_SITUATIONS_UPDATED = 0x42004C, SMSG_TRANSMOG_OUTFIT_SLOTS_UPDATED = 0x42004D, SMSG_TREASURE_PICKER_RESPONSE = 0x460011, - SMSG_TREASURE_PUNCH_LIST_ITEMS_RESPONSE = 0x420379, + SMSG_TREASURE_PUNCH_LIST_ITEMS_RESPONSE = 0x42037D, SMSG_TRIGGER_CINEMATIC = 0x420272, SMSG_TRIGGER_MOVIE = 0x420175, SMSG_TURN_IN_PETITION_RESULT = 0x4201F6, @@ -2388,10 +2404,10 @@ enum OpcodeServer : uint32 SMSG_UI_MAP_QUEST_LINES_RESPONSE = 0x600023, SMSG_UNDELETE_CHARACTER_RESPONSE = 0x420273, SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE = 0x420274, - SMSG_UNIT_DIMINISHING_RETURN_START = 0x420376, + SMSG_UNIT_DIMINISHING_RETURN_START = 0x420379, SMSG_UNLEARNED_SPELLS = 0x620041, SMSG_UNLOAD_CHILD_MAP = 0x42000E, - SMSG_UNSET_INSTANCE_LEAVER = 0x42036C, + SMSG_UNSET_INSTANCE_LEAVER = 0x42036F, SMSG_UPDATE_AADC_STATUS_RESPONSE = 0x420314, SMSG_UPDATE_ACCOUNT_DATA = 0x4201B2, SMSG_UPDATE_ACCOUNT_DATA_COMPLETE = 0x4201B3, @@ -2466,39 +2482,39 @@ enum OpcodeServer : uint32 SMSG_ARENA_TEAM_STATS = UNKNOWN_OPCODE, }; -inline constexpr std::size_t NUM_SMSG_OPCODES = 1638; +inline constexpr std::size_t NUM_SMSG_OPCODES = 1650; inline constexpr std::ptrdiff_t GetOpcodeArrayIndex(OpcodeServer opcode) { uint32 idInGroup = opcode & 0xFFFF; switch (opcode >> 16) { - case 0x42: return idInGroup < 893 ? idInGroup + 0 : -1; - case 0x43: return idInGroup < 5 ? idInGroup + 893 : -1; - case 0x46: return idInGroup < 20 ? idInGroup + 898 : -1; - case 0x47: return idInGroup < 36 ? idInGroup + 918 : -1; - case 0x48: return idInGroup < 49 ? idInGroup + 954 : -1; - case 0x49: return idInGroup < 14 ? idInGroup + 1003 : -1; - case 0x4A: return idInGroup < 12 ? idInGroup + 1017 : -1; - case 0x4C: return idInGroup < 82 ? idInGroup + 1029 : -1; - case 0x4E: return idInGroup < 72 ? idInGroup + 1111 : -1; - case 0x50: return idInGroup < 2 ? idInGroup + 1183 : -1; - case 0x51: return idInGroup < 11 ? idInGroup + 1185 : -1; - case 0x52: return idInGroup < 8 ? idInGroup + 1196 : -1; - case 0x53: return idInGroup < 8 ? idInGroup + 1204 : -1; - case 0x54: return idInGroup < 35 ? idInGroup + 1212 : -1; - case 0x55: return idInGroup < 8 ? idInGroup + 1247 : -1; - case 0x56: return idInGroup < 34 ? idInGroup + 1255 : -1; - case 0x58: return idInGroup < 1 ? idInGroup + 1289 : -1; - case 0x5A: return idInGroup < 122 ? idInGroup + 1290 : -1; - case 0x5B: return idInGroup < 6 ? idInGroup + 1412 : -1; - case 0x5C: return idInGroup < 23 ? idInGroup + 1418 : -1; - case 0x5E: return idInGroup < 8 ? idInGroup + 1441 : -1; - case 0x5F: return idInGroup < 52 ? idInGroup + 1449 : -1; - case 0x60: return idInGroup < 41 ? idInGroup + 1501 : -1; - case 0x62: return idInGroup < 87 ? idInGroup + 1542 : -1; - case 0x63: return idInGroup < 8 ? idInGroup + 1629 : -1; - case 0x65: return idInGroup < 1 ? idInGroup + 1637 : -1; + case 0x42: return idInGroup < 899 ? idInGroup + 0 : -1; + case 0x43: return idInGroup < 5 ? idInGroup + 899 : -1; + case 0x46: return idInGroup < 20 ? idInGroup + 904 : -1; + case 0x47: return idInGroup < 36 ? idInGroup + 924 : -1; + case 0x48: return idInGroup < 49 ? idInGroup + 960 : -1; + case 0x49: return idInGroup < 14 ? idInGroup + 1009 : -1; + case 0x4A: return idInGroup < 12 ? idInGroup + 1023 : -1; + case 0x4C: return idInGroup < 82 ? idInGroup + 1035 : -1; + case 0x4E: return idInGroup < 72 ? idInGroup + 1117 : -1; + case 0x50: return idInGroup < 2 ? idInGroup + 1189 : -1; + case 0x51: return idInGroup < 11 ? idInGroup + 1191 : -1; + case 0x52: return idInGroup < 8 ? idInGroup + 1202 : -1; + case 0x53: return idInGroup < 8 ? idInGroup + 1210 : -1; + case 0x54: return idInGroup < 36 ? idInGroup + 1218 : -1; + case 0x55: return idInGroup < 8 ? idInGroup + 1254 : -1; + case 0x56: return idInGroup < 34 ? idInGroup + 1262 : -1; + case 0x58: return idInGroup < 1 ? idInGroup + 1296 : -1; + case 0x5A: return idInGroup < 130 ? idInGroup + 1297 : -1; + case 0x5B: return idInGroup < 6 ? idInGroup + 1427 : -1; + case 0x5C: return idInGroup < 20 ? idInGroup + 1433 : -1; + case 0x5E: return idInGroup < 8 ? idInGroup + 1453 : -1; + case 0x5F: return idInGroup < 52 ? idInGroup + 1461 : -1; + case 0x60: return idInGroup < 41 ? idInGroup + 1513 : -1; + case 0x62: return idInGroup < 87 ? idInGroup + 1554 : -1; + case 0x63: return idInGroup < 8 ? idInGroup + 1641 : -1; + case 0x65: return idInGroup < 1 ? idInGroup + 1649 : -1; default: return -1; } } diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index ac2e641deb3e0..1e4e0e862686c 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -740,6 +740,12 @@ enum AuraType : uint32 SPELL_AURA_653 = 653, SPELL_AURA_654 = 654, SPELL_AURA_MOD_TRANSMOG_OUTFIT_UPDATE_COST = 655, + SPELL_AURA_656 = 656, + SPELL_AURA_657 = 657, + SPELL_AURA_658 = 658, + SPELL_AURA_659 = 659, + SPELL_AURA_660 = 660, + SPELL_AURA_ALTERED_FORM_IN_COMBAT = 661, TOTAL_AURAS }; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 714710a5216a2..dd4dfe4cf790c 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -725,6 +725,12 @@ NonDefaultConstructible AuraEffectHandler[TOTAL_AURAS]= &AuraEffect::HandleNULL, //653 &AuraEffect::HandleNULL, //654 &AuraEffect::HandleNULL, //655 SPELL_AURA_MOD_TRANSMOG_OUTFIT_UPDATE_COST + &AuraEffect::HandleNULL, //656 + &AuraEffect::HandleNULL, //657 + &AuraEffect::HandleNULL, //658 + &AuraEffect::HandleNULL, //659 + &AuraEffect::HandleNULL, //660 + &AuraEffect::HandleNULL, //661 SPELL_AURA_ALTERED_FORM_IN_COMBAT }; AuraEffect::AuraEffect(Aura* base, SpellEffectInfo const& spellEfffectInfo, SpellEffectValue const* baseAmount, Unit* caster) : diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index ce8d545b5fa27..0dccd110ef6b2 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2322,7 +2322,7 @@ void SpellMgr::LoadSpellAreas() spellArea.questEndStatus = fields[4].GetUInt32(); spellArea.questEnd = fields[5].GetUInt32(); spellArea.auraSpell = fields[6].GetInt32(); - spellArea.raceMask.RawValue = fields[7].GetUInt64(); + spellArea.raceMask = { fields[7].GetUInt64() }; spellArea.gender = Gender(fields[8].GetUInt8()); spellArea.flags = fields[9].GetUInt8(); diff --git a/src/server/game/Tools/PlayerDump.cpp b/src/server/game/Tools/PlayerDump.cpp index c15833f90d980..ed17d4589d5de 100644 --- a/src/server/game/Tools/PlayerDump.cpp +++ b/src/server/game/Tools/PlayerDump.cpp @@ -121,6 +121,7 @@ DumpTable const DumpTables[] = { "character_queststatus_seasonal", DTT_CHAR_TABLE }, { "character_queststatus_weekly", DTT_CHAR_TABLE }, { "character_reputation", DTT_CHAR_TABLE }, + { "character_select_screen_equipment_cache", DTT_CHAR_TABLE }, { "character_skills", DTT_CHAR_TABLE }, { "character_spell", DTT_CHAR_TABLE }, { "character_spell_charges", DTT_CHAR_TABLE }, diff --git a/src/server/game/Transmog/TransmogMgr.cpp b/src/server/game/Transmog/TransmogMgr.cpp index 22dd3edebeba6..e78ddce91dba6 100644 --- a/src/server/game/Transmog/TransmogMgr.cpp +++ b/src/server/game/Transmog/TransmogMgr.cpp @@ -62,6 +62,23 @@ std::array Sl std::array SlotInfoByInvSlot; std::vector DefaultSituations; +constexpr ItemSheatheType TransmogSheatheMappingByCategoryAndSheatheType[AsUnderlyingType(ItemSheatheType::Max)][AsUnderlyingType(TransmogOutfitSlotOptionSheatheCategory::Max)] = +{ + { ItemSheatheType::None, ItemSheatheType::None, ItemSheatheType::None, ItemSheatheType::None }, + { ItemSheatheType::Shoulder, ItemSheatheType::Shoulder, ItemSheatheType::None, ItemSheatheType::ShoulderInvis }, + { ItemSheatheType::Inverted, ItemSheatheType::Inverted, ItemSheatheType::None, ItemSheatheType::InvertedInvis }, + { ItemSheatheType::Hip, ItemSheatheType::Shoulder, ItemSheatheType::Hip, ItemSheatheType::HipInvis }, + { ItemSheatheType::Shield, ItemSheatheType::Shield, ItemSheatheType::None, ItemSheatheType::ShieldInvis }, + { ItemSheatheType::Crossbow, ItemSheatheType::Crossbow, ItemSheatheType::None, ItemSheatheType::CrossbowInvis }, + { ItemSheatheType::ShoulderInvis, ItemSheatheType::Shoulder, ItemSheatheType::None, ItemSheatheType::ShoulderInvis }, + { ItemSheatheType::InvertedInvis, ItemSheatheType::Inverted, ItemSheatheType::None, ItemSheatheType::InvertedInvis }, + { ItemSheatheType::HipInvis, ItemSheatheType::Shoulder, ItemSheatheType::Hip, ItemSheatheType::HipInvis }, + { ItemSheatheType::ShieldInvis, ItemSheatheType::Shield, ItemSheatheType::None, ItemSheatheType::ShieldInvis }, + { ItemSheatheType::CrossbowInvis, ItemSheatheType::Crossbow, ItemSheatheType::None, ItemSheatheType::CrossbowInvis }, + { ItemSheatheType::InvertedDualWield, ItemSheatheType::InvertedDualWield, ItemSheatheType::None, ItemSheatheType::InvertedDualWieldInvis }, + { ItemSheatheType::InvertedDualWieldInvis, ItemSheatheType::InvertedDualWield, ItemSheatheType::None, ItemSheatheType::InvertedDualWieldInvis } +}; + constexpr bool IsArtifactTransmogOutfitSlotOption(TransmogOutfitSlotOption option) { return option == TransmogOutfitSlotOption::ArtifactSpecOne @@ -379,6 +396,9 @@ bool TransmogMgr::ValidateSlots(std::span= TransmogOutfitSlotOption::Max) return false; + if (slot.SheatheCategory >= TransmogOutfitSlotOptionSheatheCategory::Max) + return false; + if (slot.AppearanceDisplayType >= TransmogOutfitDisplayType::Max) return false; @@ -406,6 +426,11 @@ bool TransmogMgr::ValidateSlots(std::spanGetSheatheType() >= ItemSheatheType::Max || + TransmogSheatheMappingByCategoryAndSheatheType[AsUnderlyingType(itemTemplate->GetSheatheType())][AsUnderlyingType(slot.SheatheCategory)] == ItemSheatheType::None)) + return false; } if (slot.SpellItemEnchantmentID && !TransmogIllusionBySpellItemEnchantment.contains(slot.SpellItemEnchantmentID)) diff --git a/src/tools/map_extractor/loadlib/DBFilesClientList.h b/src/tools/map_extractor/loadlib/DBFilesClientList.h index f6d937298c5ab..5ddb6c835225d 100644 --- a/src/tools/map_extractor/loadlib/DBFilesClientList.h +++ b/src/tools/map_extractor/loadlib/DBFilesClientList.h @@ -1048,6 +1048,7 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 4861207, .Name = "UIGenericWidgetDisplay.db2" }, { .FileDataId = 6237800, .Name = "UIMapPinInfo.db2" }, { .FileDataId = 4530951, .Name = "UIModifiedInstance.db2" }, + { .FileDataId = 7725784, .Name = "UIScenarioDisplayInfo.db2" }, { .FileDataId = 3556601, .Name = "UIScriptedAnimationEffect.db2" }, { .FileDataId = 2960122, .Name = "UISplashScreen.db2" }, { .FileDataId = 3055924, .Name = "UiCamFbackTalkingHeadChrRace.db2" }, @@ -1133,6 +1134,7 @@ constexpr DB2FileInfo DBFilesClientList[] = { .FileDataId = 5390446, .Name = "WeeklyRewardChestActivityTier.db2" }, { .FileDataId = 3580962, .Name = "WeeklyRewardChestThreshold.db2" }, { .FileDataId = 943871, .Name = "WindSettings.db2" }, + { .FileDataId = 7836461, .Name = "WmoMaxScale.db2" }, { .FileDataId = 975279, .Name = "WorldBossLockout.db2" }, { .FileDataId = 1267069, .Name = "WorldChunkSounds.db2" }, { .FileDataId = 1343312, .Name = "WorldEffect.db2" }, From a23aeafde7d9a08d468b0ad2b4765b40970bb93e Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 22 Apr 2026 21:09:45 +0200 Subject: [PATCH 081/175] SQL: Fix missing ; --- sql/base/characters_database.sql | 2 +- .../master/2026_04_22_00_characters.sql | 409 +++++++++--------- 2 files changed, 212 insertions(+), 199 deletions(-) diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 21c501fe65b19..a42ab6ca6503b 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -4093,7 +4093,7 @@ INSERT INTO `updates` VALUES ('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0), ('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0), ('2026_04_08_00_characters.sql','5A7FC8264EBD524E4EBAACF53D1CE89C6FF0D255','RELEASED','2026-04-07 10:24:16',0), -('2026_04_22_00_characters.sql','B154E0D8408CCE5636596EDC9C5024FFE41F2CD6','RELEASED','2026-04-22 19:26:05',0); +('2026_04_22_00_characters.sql','7EA266122924A3F8940D1D2E62F7C1BBC1D10333','RELEASED','2026-04-22 19:26:05',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2026_04_22_00_characters.sql b/sql/updates/characters/master/2026_04_22_00_characters.sql index 086786e429ad1..8be3a1f5d5395 100644 --- a/sql/updates/characters/master/2026_04_22_00_characters.sql +++ b/sql/updates/characters/master/2026_04_22_00_characters.sql @@ -1,207 +1,220 @@ +DROP FUNCTION IF EXISTS `get_nth_token`; +CREATE FUNCTION `get_nth_token`(x TEXT, delim VARCHAR(16), pos INT) RETURNS TEXT NO SQL +RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ''); --- Fill new situations -DELETE FROM `character_transmog_outfit_situation` WHERE `situationID` BETWEEN 32 AND 41; +DELIMITER ;; +CREATE PROCEDURE apply_if_not_exists_2026_04_22_00() BEGIN --- All Weather -INSERT INTO `character_transmog_outfit_situation` -SELECT `guid`, `transmogOutfitId`, 32, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + -- Fill new situations + DELETE FROM `character_transmog_outfit_situation` WHERE `situationID` BETWEEN 32 AND 41; --- All Times -INSERT INTO `character_transmog_outfit_situation` -SELECT `guid`, `transmogOutfitId`, 37, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + -- All Weather + INSERT INTO `character_transmog_outfit_situation` + SELECT `guid`, `transmogOutfitId`, 32, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; -ALTER TABLE `character_transmog_outfit_slot` ADD `sheatheCategory` tinyint UNSIGNED AFTER `slotOption`; -UPDATE `character_transmog_outfit_slot` SET `sheatheCategory` = 0; -ALTER TABLE `character_transmog_outfit_slot` MODIFY `sheatheCategory` tinyint UNSIGNED NOT NULL AFTER `slotOption`; + -- All Times + INSERT INTO `character_transmog_outfit_situation` + SELECT `guid`, `transmogOutfitId`, 37, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; -DROP FUNCTION IF EXISTS `get_nth_token`; -CREATE FUNCTION `get_nth_token`(x TEXT, delim VARCHAR(16), pos INT) RETURNS TEXT NO SQL -RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ''); + IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='character_transmog_outfit_slot' AND `column_name`='sheatheCategory') THEN + ALTER TABLE `character_transmog_outfit_slot` ADD `sheatheCategory` tinyint UNSIGNED AFTER `slotOption`; + UPDATE `character_transmog_outfit_slot` SET `sheatheCategory` = 0; + ALTER TABLE `character_transmog_outfit_slot` MODIFY `sheatheCategory` tinyint UNSIGNED NOT NULL AFTER `slotOption`; + END IF; + + IF EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='characters' AND `column_name`='equipmentCache') THEN + -- + -- Table structure for table `character_select_screen_equipment_cache` + -- + DROP TABLE IF EXISTS `character_select_screen_equipment_cache`; + CREATE TABLE `character_select_screen_equipment_cache` ( + `guid` bigint unsigned NOT NULL, + `headEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `headVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `headSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `headInvType` tinyint unsigned NOT NULL DEFAULT '0', + `headDisplayID` int unsigned NOT NULL DEFAULT '0', + `headDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `headSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `headSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `neckEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `neckVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `neckSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `neckInvType` tinyint unsigned NOT NULL DEFAULT '0', + `neckDisplayID` int unsigned NOT NULL DEFAULT '0', + `neckDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `neckSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `neckSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `shoulderVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `shoulderSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderInvType` tinyint unsigned NOT NULL DEFAULT '0', + `shoulderDisplayID` int unsigned NOT NULL DEFAULT '0', + `shoulderDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `shoulderSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `shoulderSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `bodyEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `bodyVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `bodySubclass` tinyint unsigned NOT NULL DEFAULT '0', + `bodyInvType` tinyint unsigned NOT NULL DEFAULT '0', + `bodyDisplayID` int unsigned NOT NULL DEFAULT '0', + `bodyDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `bodySecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `bodySheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `chestEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `chestVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `chestSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `chestInvType` tinyint unsigned NOT NULL DEFAULT '0', + `chestDisplayID` int unsigned NOT NULL DEFAULT '0', + `chestDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `chestSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `chestSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `waistEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `waistVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `waistSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `waistInvType` tinyint unsigned NOT NULL DEFAULT '0', + `waistDisplayID` int unsigned NOT NULL DEFAULT '0', + `waistDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `waistSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `waistSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `legsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `legsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `legsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `legsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `legsDisplayID` int unsigned NOT NULL DEFAULT '0', + `legsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `legsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `legsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `feetEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `feetVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `feetSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `feetInvType` tinyint unsigned NOT NULL DEFAULT '0', + `feetDisplayID` int unsigned NOT NULL DEFAULT '0', + `feetDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `feetSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `feetSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `wristsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `wristsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `wristsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `wristsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `wristsDisplayID` int unsigned NOT NULL DEFAULT '0', + `wristsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `wristsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `wristsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `handsEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `handsVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `handsSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `handsInvType` tinyint unsigned NOT NULL DEFAULT '0', + `handsDisplayID` int unsigned NOT NULL DEFAULT '0', + `handsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `handsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `handsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `finger1EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `finger1VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `finger1Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `finger1InvType` tinyint unsigned NOT NULL DEFAULT '0', + `finger1DisplayID` int unsigned NOT NULL DEFAULT '0', + `finger1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `finger1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `finger1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `finger2EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `finger2VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `finger2Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `finger2InvType` tinyint unsigned NOT NULL DEFAULT '0', + `finger2DisplayID` int unsigned NOT NULL DEFAULT '0', + `finger2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `finger2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `finger2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `trinket1VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `trinket1Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1InvType` tinyint unsigned NOT NULL DEFAULT '0', + `trinket1DisplayID` int unsigned NOT NULL DEFAULT '0', + `trinket1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `trinket1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `trinket1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2EquippedItemID` int unsigned NOT NULL DEFAULT '0', + `trinket2VisibleItemID` int unsigned NOT NULL DEFAULT '0', + `trinket2Subclass` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2InvType` tinyint unsigned NOT NULL DEFAULT '0', + `trinket2DisplayID` int unsigned NOT NULL DEFAULT '0', + `trinket2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `trinket2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `trinket2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `backEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `backVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `backSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `backInvType` tinyint unsigned NOT NULL DEFAULT '0', + `backDisplayID` int unsigned NOT NULL DEFAULT '0', + `backDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `backSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `backSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `mainHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `mainHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandInvType` tinyint unsigned NOT NULL DEFAULT '0', + `mainHandDisplayID` int unsigned NOT NULL DEFAULT '0', + `mainHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `mainHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `mainHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `offHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `offHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `offHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `offHandInvType` tinyint unsigned NOT NULL DEFAULT '0', + `offHandDisplayID` int unsigned NOT NULL DEFAULT '0', + `offHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `offHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `offHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `rangedEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `rangedVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `rangedSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `rangedInvType` tinyint unsigned NOT NULL DEFAULT '0', + `rangedDisplayID` int unsigned NOT NULL DEFAULT '0', + `rangedDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `rangedSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `rangedSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + `tabardEquippedItemID` int unsigned NOT NULL DEFAULT '0', + `tabardVisibleItemID` int unsigned NOT NULL DEFAULT '0', + `tabardSubclass` tinyint unsigned NOT NULL DEFAULT '0', + `tabardInvType` tinyint unsigned NOT NULL DEFAULT '0', + `tabardDisplayID` int unsigned NOT NULL DEFAULT '0', + `tabardDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', + `tabardSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', + `tabardSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + + INSERT INTO `character_select_screen_equipment_cache` SELECT guid, + -- equipped item id | visible item id | subclass | inventory type | display id | enchant | secondary appearance | sheathe category + /* head */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 4) , get_nth_token(`equipmentCache`,' ', 1) , get_nth_token(`equipmentCache`,' ', 2) , get_nth_token(`equipmentCache`,' ', 3) , get_nth_token(`equipmentCache`,' ', 5) , 0, + /* neck */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 9) , get_nth_token(`equipmentCache`,' ', 6) , get_nth_token(`equipmentCache`,' ', 7) , get_nth_token(`equipmentCache`,' ', 8) , get_nth_token(`equipmentCache`,' ',10) , 0, + /* shoulders */ 0 , 0 , get_nth_token(`equipmentCache`,' ',14) , get_nth_token(`equipmentCache`,' ',11) , get_nth_token(`equipmentCache`,' ',12) , get_nth_token(`equipmentCache`,' ',13) , get_nth_token(`equipmentCache`,' ',15) , 0, + /* body */ 0 , 0 , get_nth_token(`equipmentCache`,' ',19) , get_nth_token(`equipmentCache`,' ',16) , get_nth_token(`equipmentCache`,' ',17) , get_nth_token(`equipmentCache`,' ',18) , get_nth_token(`equipmentCache`,' ',20) , 0, + /* chest */ 0 , 0 , get_nth_token(`equipmentCache`,' ',24) , get_nth_token(`equipmentCache`,' ',21) , get_nth_token(`equipmentCache`,' ',22) , get_nth_token(`equipmentCache`,' ',23) , get_nth_token(`equipmentCache`,' ',25) , 0, + /* waist */ 0 , 0 , get_nth_token(`equipmentCache`,' ',29) , get_nth_token(`equipmentCache`,' ',26) , get_nth_token(`equipmentCache`,' ',27) , get_nth_token(`equipmentCache`,' ',28) , get_nth_token(`equipmentCache`,' ',30) , 0, + /* legs */ 0 , 0 , get_nth_token(`equipmentCache`,' ',34) , get_nth_token(`equipmentCache`,' ',31) , get_nth_token(`equipmentCache`,' ',32) , get_nth_token(`equipmentCache`,' ',33) , get_nth_token(`equipmentCache`,' ',35) , 0, + /* feet */ 0 , 0 , get_nth_token(`equipmentCache`,' ',39) , get_nth_token(`equipmentCache`,' ',36) , get_nth_token(`equipmentCache`,' ',37) , get_nth_token(`equipmentCache`,' ',38) , get_nth_token(`equipmentCache`,' ',40) , 0, + /* wrists */ 0 , 0 , get_nth_token(`equipmentCache`,' ',44) , get_nth_token(`equipmentCache`,' ',41) , get_nth_token(`equipmentCache`,' ',42) , get_nth_token(`equipmentCache`,' ',43) , get_nth_token(`equipmentCache`,' ',45) , 0, + /* hands */ 0 , 0 , get_nth_token(`equipmentCache`,' ',49) , get_nth_token(`equipmentCache`,' ',46) , get_nth_token(`equipmentCache`,' ',47) , get_nth_token(`equipmentCache`,' ',48) , get_nth_token(`equipmentCache`,' ',50) , 0, + /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',54) , get_nth_token(`equipmentCache`,' ',51) , get_nth_token(`equipmentCache`,' ',52) , get_nth_token(`equipmentCache`,' ',53) , get_nth_token(`equipmentCache`,' ',55) , 0, + /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',59) , get_nth_token(`equipmentCache`,' ',56) , get_nth_token(`equipmentCache`,' ',57) , get_nth_token(`equipmentCache`,' ',58) , get_nth_token(`equipmentCache`,' ',60) , 0, + /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',64) , get_nth_token(`equipmentCache`,' ',61) , get_nth_token(`equipmentCache`,' ',62) , get_nth_token(`equipmentCache`,' ',63) , get_nth_token(`equipmentCache`,' ',65) , 0, + /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',69) , get_nth_token(`equipmentCache`,' ',66) , get_nth_token(`equipmentCache`,' ',67) , get_nth_token(`equipmentCache`,' ',68) , get_nth_token(`equipmentCache`,' ',70) , 0, + /* back */ 0 , 0 , get_nth_token(`equipmentCache`,' ',74) , get_nth_token(`equipmentCache`,' ',71) , get_nth_token(`equipmentCache`,' ',72) , get_nth_token(`equipmentCache`,' ',73) , get_nth_token(`equipmentCache`,' ',75) , 0, + /* main hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',79) , get_nth_token(`equipmentCache`,' ',76) , get_nth_token(`equipmentCache`,' ',77) , get_nth_token(`equipmentCache`,' ',78) , get_nth_token(`equipmentCache`,' ',80) , 0, + /* off hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',84) , get_nth_token(`equipmentCache`,' ',81) , get_nth_token(`equipmentCache`,' ',82) , get_nth_token(`equipmentCache`,' ',83) , get_nth_token(`equipmentCache`,' ',85) , 0, + /* ranged */ 0 , 0 , get_nth_token(`equipmentCache`,' ',89) , get_nth_token(`equipmentCache`,' ',86) , get_nth_token(`equipmentCache`,' ',87) , get_nth_token(`equipmentCache`,' ',88) , get_nth_token(`equipmentCache`,' ',90) , 0, + /* tabard */ 0 , 0 , get_nth_token(`equipmentCache`,' ',94) , get_nth_token(`equipmentCache`,' ',91) , get_nth_token(`equipmentCache`,' ',92) , get_nth_token(`equipmentCache`,' ',93) , get_nth_token(`equipmentCache`,' ',95) , 0 + FROM `characters`; + + ALTER TABLE `characters` DROP `equipmentCache`; + END IF; +END;; --- --- Table structure for table `character_select_screen_equipment_cache` --- -DROP TABLE IF EXISTS `character_select_screen_equipment_cache`; -CREATE TABLE `character_select_screen_equipment_cache` ( - `guid` bigint unsigned NOT NULL, - `headEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `headVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `headSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `headInvType` tinyint unsigned NOT NULL DEFAULT '0', - `headDisplayID` int unsigned NOT NULL DEFAULT '0', - `headDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `headSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `headSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `neckEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `neckVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `neckSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `neckInvType` tinyint unsigned NOT NULL DEFAULT '0', - `neckDisplayID` int unsigned NOT NULL DEFAULT '0', - `neckDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `neckSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `neckSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `shoulderEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `shoulderVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `shoulderSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `shoulderInvType` tinyint unsigned NOT NULL DEFAULT '0', - `shoulderDisplayID` int unsigned NOT NULL DEFAULT '0', - `shoulderDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `shoulderSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `shoulderSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `bodyEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `bodyVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `bodySubclass` tinyint unsigned NOT NULL DEFAULT '0', - `bodyInvType` tinyint unsigned NOT NULL DEFAULT '0', - `bodyDisplayID` int unsigned NOT NULL DEFAULT '0', - `bodyDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `bodySecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `bodySheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `chestEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `chestVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `chestSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `chestInvType` tinyint unsigned NOT NULL DEFAULT '0', - `chestDisplayID` int unsigned NOT NULL DEFAULT '0', - `chestDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `chestSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `chestSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `waistEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `waistVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `waistSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `waistInvType` tinyint unsigned NOT NULL DEFAULT '0', - `waistDisplayID` int unsigned NOT NULL DEFAULT '0', - `waistDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `waistSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `waistSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `legsEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `legsVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `legsSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `legsInvType` tinyint unsigned NOT NULL DEFAULT '0', - `legsDisplayID` int unsigned NOT NULL DEFAULT '0', - `legsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `legsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `legsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `feetEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `feetVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `feetSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `feetInvType` tinyint unsigned NOT NULL DEFAULT '0', - `feetDisplayID` int unsigned NOT NULL DEFAULT '0', - `feetDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `feetSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `feetSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `wristsEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `wristsVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `wristsSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `wristsInvType` tinyint unsigned NOT NULL DEFAULT '0', - `wristsDisplayID` int unsigned NOT NULL DEFAULT '0', - `wristsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `wristsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `wristsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `handsEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `handsVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `handsSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `handsInvType` tinyint unsigned NOT NULL DEFAULT '0', - `handsDisplayID` int unsigned NOT NULL DEFAULT '0', - `handsDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `handsSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `handsSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `finger1EquippedItemID` int unsigned NOT NULL DEFAULT '0', - `finger1VisibleItemID` int unsigned NOT NULL DEFAULT '0', - `finger1Subclass` tinyint unsigned NOT NULL DEFAULT '0', - `finger1InvType` tinyint unsigned NOT NULL DEFAULT '0', - `finger1DisplayID` int unsigned NOT NULL DEFAULT '0', - `finger1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `finger1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `finger1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `finger2EquippedItemID` int unsigned NOT NULL DEFAULT '0', - `finger2VisibleItemID` int unsigned NOT NULL DEFAULT '0', - `finger2Subclass` tinyint unsigned NOT NULL DEFAULT '0', - `finger2InvType` tinyint unsigned NOT NULL DEFAULT '0', - `finger2DisplayID` int unsigned NOT NULL DEFAULT '0', - `finger2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `finger2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `finger2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `trinket1EquippedItemID` int unsigned NOT NULL DEFAULT '0', - `trinket1VisibleItemID` int unsigned NOT NULL DEFAULT '0', - `trinket1Subclass` tinyint unsigned NOT NULL DEFAULT '0', - `trinket1InvType` tinyint unsigned NOT NULL DEFAULT '0', - `trinket1DisplayID` int unsigned NOT NULL DEFAULT '0', - `trinket1DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `trinket1SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `trinket1SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `trinket2EquippedItemID` int unsigned NOT NULL DEFAULT '0', - `trinket2VisibleItemID` int unsigned NOT NULL DEFAULT '0', - `trinket2Subclass` tinyint unsigned NOT NULL DEFAULT '0', - `trinket2InvType` tinyint unsigned NOT NULL DEFAULT '0', - `trinket2DisplayID` int unsigned NOT NULL DEFAULT '0', - `trinket2DisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `trinket2SecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `trinket2SheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `backEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `backVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `backSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `backInvType` tinyint unsigned NOT NULL DEFAULT '0', - `backDisplayID` int unsigned NOT NULL DEFAULT '0', - `backDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `backSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `backSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `mainHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `mainHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `mainHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `mainHandInvType` tinyint unsigned NOT NULL DEFAULT '0', - `mainHandDisplayID` int unsigned NOT NULL DEFAULT '0', - `mainHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `mainHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `mainHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `offHandEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `offHandVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `offHandSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `offHandInvType` tinyint unsigned NOT NULL DEFAULT '0', - `offHandDisplayID` int unsigned NOT NULL DEFAULT '0', - `offHandDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `offHandSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `offHandSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `rangedEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `rangedVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `rangedSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `rangedInvType` tinyint unsigned NOT NULL DEFAULT '0', - `rangedDisplayID` int unsigned NOT NULL DEFAULT '0', - `rangedDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `rangedSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `rangedSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - `tabardEquippedItemID` int unsigned NOT NULL DEFAULT '0', - `tabardVisibleItemID` int unsigned NOT NULL DEFAULT '0', - `tabardSubclass` tinyint unsigned NOT NULL DEFAULT '0', - `tabardInvType` tinyint unsigned NOT NULL DEFAULT '0', - `tabardDisplayID` int unsigned NOT NULL DEFAULT '0', - `tabardDisplayEnchantID` int unsigned NOT NULL DEFAULT '0', - `tabardSecondaryItemModifiedAppearanceID` int NOT NULL DEFAULT '0', - `tabardSheatheCategory` tinyint unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +DELIMITER ; -INSERT INTO `character_select_screen_equipment_cache` SELECT guid, - -- equipped item id | visible item id | subclass | inventory type | display id | enchant | secondary appearance | sheathe category - /* head */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 4) , get_nth_token(`equipmentCache`,' ', 1) , get_nth_token(`equipmentCache`,' ', 2) , get_nth_token(`equipmentCache`,' ', 3) , get_nth_token(`equipmentCache`,' ', 5) , 0, - /* neck */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 9) , get_nth_token(`equipmentCache`,' ', 6) , get_nth_token(`equipmentCache`,' ', 7) , get_nth_token(`equipmentCache`,' ', 8) , get_nth_token(`equipmentCache`,' ',10) , 0, - /* shoulders */ 0 , 0 , get_nth_token(`equipmentCache`,' ',14) , get_nth_token(`equipmentCache`,' ',11) , get_nth_token(`equipmentCache`,' ',12) , get_nth_token(`equipmentCache`,' ',13) , get_nth_token(`equipmentCache`,' ',15) , 0, - /* body */ 0 , 0 , get_nth_token(`equipmentCache`,' ',19) , get_nth_token(`equipmentCache`,' ',16) , get_nth_token(`equipmentCache`,' ',17) , get_nth_token(`equipmentCache`,' ',18) , get_nth_token(`equipmentCache`,' ',20) , 0, - /* chest */ 0 , 0 , get_nth_token(`equipmentCache`,' ',24) , get_nth_token(`equipmentCache`,' ',21) , get_nth_token(`equipmentCache`,' ',22) , get_nth_token(`equipmentCache`,' ',23) , get_nth_token(`equipmentCache`,' ',25) , 0, - /* waist */ 0 , 0 , get_nth_token(`equipmentCache`,' ',29) , get_nth_token(`equipmentCache`,' ',26) , get_nth_token(`equipmentCache`,' ',27) , get_nth_token(`equipmentCache`,' ',28) , get_nth_token(`equipmentCache`,' ',30) , 0, - /* legs */ 0 , 0 , get_nth_token(`equipmentCache`,' ',34) , get_nth_token(`equipmentCache`,' ',31) , get_nth_token(`equipmentCache`,' ',32) , get_nth_token(`equipmentCache`,' ',33) , get_nth_token(`equipmentCache`,' ',35) , 0, - /* feet */ 0 , 0 , get_nth_token(`equipmentCache`,' ',39) , get_nth_token(`equipmentCache`,' ',36) , get_nth_token(`equipmentCache`,' ',37) , get_nth_token(`equipmentCache`,' ',38) , get_nth_token(`equipmentCache`,' ',40) , 0, - /* wrists */ 0 , 0 , get_nth_token(`equipmentCache`,' ',44) , get_nth_token(`equipmentCache`,' ',41) , get_nth_token(`equipmentCache`,' ',42) , get_nth_token(`equipmentCache`,' ',43) , get_nth_token(`equipmentCache`,' ',45) , 0, - /* hands */ 0 , 0 , get_nth_token(`equipmentCache`,' ',49) , get_nth_token(`equipmentCache`,' ',46) , get_nth_token(`equipmentCache`,' ',47) , get_nth_token(`equipmentCache`,' ',48) , get_nth_token(`equipmentCache`,' ',50) , 0, - /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',54) , get_nth_token(`equipmentCache`,' ',51) , get_nth_token(`equipmentCache`,' ',52) , get_nth_token(`equipmentCache`,' ',53) , get_nth_token(`equipmentCache`,' ',55) , 0, - /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',59) , get_nth_token(`equipmentCache`,' ',56) , get_nth_token(`equipmentCache`,' ',57) , get_nth_token(`equipmentCache`,' ',58) , get_nth_token(`equipmentCache`,' ',60) , 0, - /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',64) , get_nth_token(`equipmentCache`,' ',61) , get_nth_token(`equipmentCache`,' ',62) , get_nth_token(`equipmentCache`,' ',63) , get_nth_token(`equipmentCache`,' ',65) , 0, - /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',69) , get_nth_token(`equipmentCache`,' ',66) , get_nth_token(`equipmentCache`,' ',67) , get_nth_token(`equipmentCache`,' ',68) , get_nth_token(`equipmentCache`,' ',70) , 0, - /* back */ 0 , 0 , get_nth_token(`equipmentCache`,' ',74) , get_nth_token(`equipmentCache`,' ',71) , get_nth_token(`equipmentCache`,' ',72) , get_nth_token(`equipmentCache`,' ',73) , get_nth_token(`equipmentCache`,' ',75) , 0, - /* main hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',79) , get_nth_token(`equipmentCache`,' ',76) , get_nth_token(`equipmentCache`,' ',77) , get_nth_token(`equipmentCache`,' ',78) , get_nth_token(`equipmentCache`,' ',80) , 0, - /* off hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',84) , get_nth_token(`equipmentCache`,' ',81) , get_nth_token(`equipmentCache`,' ',82) , get_nth_token(`equipmentCache`,' ',83) , get_nth_token(`equipmentCache`,' ',85) , 0, - /* ranged */ 0 , 0 , get_nth_token(`equipmentCache`,' ',89) , get_nth_token(`equipmentCache`,' ',86) , get_nth_token(`equipmentCache`,' ',87) , get_nth_token(`equipmentCache`,' ',88) , get_nth_token(`equipmentCache`,' ',90) , 0, - /* tabard */ 0 , 0 , get_nth_token(`equipmentCache`,' ',94) , get_nth_token(`equipmentCache`,' ',91) , get_nth_token(`equipmentCache`,' ',92) , get_nth_token(`equipmentCache`,' ',93) , get_nth_token(`equipmentCache`,' ',95) , 0 -FROM `characters`; +CALL apply_if_not_exists_2026_04_22_00(); -DROP FUNCTION IF EXISTS `get_nth_token` +DROP PROCEDURE apply_if_not_exists_2026_04_22_00; -ALTER TABLE `characters` DROP `equipmentCache`; +DROP FUNCTION `get_nth_token`; From def2ecbb70f3b96476a9d0e2f7f34b9432d460f4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Apr 2026 00:17:15 +0200 Subject: [PATCH 082/175] Core/Players: Fixed use after free in loading transmog outfit slots --- src/server/game/Entities/Player/Player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 27808a4361f4d..419e58063ee22 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -17799,7 +17799,7 @@ void Player::_LoadTransmogOutfits(PreparedQueryResult setsResult, PreparedQueryR WorldPackets::Transmogrification::TransmogOutfitDataInfo outfitInfo; outfitInfo.SetType = transmogOutfitEntry->GetSetType(); - outfitInfo.Name = fields.name().GetString(); + outfitInfo.Name = fields.name().GetStringView(); outfitInfo.Icon = fields.icon().GetUInt32(); outfitInfo.SituationsEnabled = fields.situationsEnabled().GetBool(); From f8823d6b1a5632a3ce65ef4b45b0558f030f92f0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Apr 2026 00:22:41 +0200 Subject: [PATCH 083/175] Core/Network: Build fix for boost 1.91 --- src/common/Asio/ExpectedCompletionHandler.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/common/Asio/ExpectedCompletionHandler.h b/src/common/Asio/ExpectedCompletionHandler.h index d03c101118ce2..6876f998a0701 100644 --- a/src/common/Asio/ExpectedCompletionHandler.h +++ b/src/common/Asio/ExpectedCompletionHandler.h @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include #include @@ -165,7 +165,8 @@ class AsExpectedHandler template inline bool asio_handler_is_continuation(AsExpectedHandler* this_handler) { - return boost_asio_handler_cont_helpers::is_continuation(this_handler->handler_); + using boost::asio::asio_handler_is_continuation; + return asio_handler_is_continuation(std::addressof(this_handler->handler_)); } template From 5423f36b4d7d0a9830be91c310a19329f57a1cce Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Apr 2026 12:43:11 +0200 Subject: [PATCH 084/175] Core/Misc: Apply random position selection improvements from ed2a08dc707808caaf5f4b876620dcb510706f96 to WorldObject::GetRandomPoint and WorldObject::GetRandomNearPosition --- src/server/game/Entities/Object/Object.cpp | 37 +++++++------------ src/server/game/Entities/Object/Object.h | 3 +- .../instance_culling_of_stratholme.cpp | 5 +-- .../KulTiras/WaycrestManor/waycrest_manor.cpp | 5 +-- .../AzjolNerub/AzjolNerub/boss_anubarak.cpp | 13 ++----- .../Northrend/Naxxramas/boss_kelthuzad.cpp | 12 +----- 6 files changed, 21 insertions(+), 54 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index eed1bcd518849..f748f2be9c565 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -682,32 +682,23 @@ bool WorldObject::isInBack(WorldObject const* target, float arc) const return !HasInArc(2 * float(M_PI) - arc, target); } -void WorldObject::GetRandomPoint(Position const& pos, float distance, float& rand_x, float& rand_y, float& rand_z) const +Position WorldObject::GetRandomPoint(Position const& srcPos, float distance, float minDistance /*= 0.0f*/) const { - if (!distance) + float x, y, z; + srcPos.GetPosition(x, y, z); + if (distance) { - pos.GetPosition(rand_x, rand_y, rand_z); - return; - } + // angle to face `obj` to `this` + float angle = rand_norm() * static_cast(2 * M_PI); + float new_dist = minDistance + (distance - minDistance) * std::sqrt(rand_norm()); - // angle to face `obj` to `this` - float angle = rand_norm() * static_cast(2 * M_PI); - float new_dist = rand_norm() + rand_norm(); - new_dist = distance * (new_dist > 1 ? new_dist - 2 : new_dist); + x += new_dist * std::cos(angle); + y += new_dist * std::sin(angle); - rand_x = pos.m_positionX + new_dist * std::cos(angle); - rand_y = pos.m_positionY + new_dist * std::sin(angle); - rand_z = pos.m_positionZ; - - Trinity::NormalizeMapCoord(rand_x); - Trinity::NormalizeMapCoord(rand_y); - UpdateGroundPositionZ(rand_x, rand_y, rand_z); // update to LOS height if available -} - -Position WorldObject::GetRandomPoint(Position const& srcPos, float distance) const -{ - float x, y, z; - GetRandomPoint(srcPos, distance, x, y, z); + Trinity::NormalizeMapCoord(x); + Trinity::NormalizeMapCoord(y); + UpdateGroundPositionZ(x, y, z); // update to LOS height if available + } return Position(x, y, z, GetOrientation()); } @@ -2805,7 +2796,7 @@ Position WorldObject::GetFirstCollisionPosition(float dist, float angle) Position WorldObject::GetRandomNearPosition(float radius) { Position pos = GetPosition(); - MovePosition(pos, radius * rand_norm(), rand_norm() * static_cast(2 * M_PI)); + MovePosition(pos, radius * std::sqrt(rand_norm()), rand_norm() * static_cast(2 * M_PI)); return pos; } diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index af641e62ace97..053822e065ff4 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -303,8 +303,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void UpdateGroundPositionZ(float x, float y, float &z) const; void UpdateAllowedPositionZ(float x, float y, float &z, float* groundZ = nullptr) const; - void GetRandomPoint(Position const& srcPos, float distance, float& rand_x, float& rand_y, float& rand_z) const; - Position GetRandomPoint(Position const& srcPos, float distance) const; + Position GetRandomPoint(Position const& srcPos, float distance, float minDistance = 0.0f) const; uint32 GetInstanceId() const { return m_InstanceId; } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp index 2ccf5686aacac..30fc63a5796a8 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp @@ -403,10 +403,7 @@ class instance_culling_of_stratholme : public InstanceMapScript if (player->GetGUID() == guid || !player->IsGameMaster()) { player->CombatStop(true); - constexpr float offsetDist = 10.0f; - float myAngle = rand_norm() * static_cast(2.0f * M_PI); - Position myTarget(target.GetPositionX() + std::sin(myAngle) * offsetDist, target.GetPositionY() + std::sin(myAngle) * offsetDist, target.GetPositionZ(), myAngle + M_PI); - player->NearTeleportTo(myTarget); + player->NearTeleportTo(player->GetRandomPoint(target, 10.0f)); } } break; diff --git a/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp b/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp index 0b2f94e322834..dec09d8a3c031 100644 --- a/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp +++ b/src/server/scripts/KulTiras/WaycrestManor/waycrest_manor.cpp @@ -211,10 +211,7 @@ class spell_waycrest_manor_wildfire : public AuraScript { static constexpr Position CircleCenterPos = { -422.13f, -258.28f, 233.8286f, 0.0f }; - Position randomPos = CircleCenterPos; - GetTarget()->MovePosition(randomPos, 30.0f * rand_norm(), rand_norm() * static_cast(2 * M_PI)); - - return randomPos; + return GetTarget()->GetRandomPoint(CircleCenterPos, 30.0f); } Position GetRandomPositionInRectangle() diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 97e6258272d4c..c6316474afadc 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -455,14 +455,6 @@ struct npc_anubarak_anub_ar_assassin : public npc_anubarak_pet_template { npc_anubarak_anub_ar_assassin(Creature* creature) : npc_anubarak_pet_template(creature, false){ } - Position GetRandomPositionAround(Creature* anubarak) - { - static float DISTANCE_MIN = 10.0f; - static float DISTANCE_MAX = 30.0f; - double angle = rand_norm() * 2.0 * M_PI; - return { anubarak->GetPositionX() + (float)(frand(DISTANCE_MIN, DISTANCE_MAX)*std::sin(angle)), anubarak->GetPositionY() + (float)(frand(DISTANCE_MIN, DISTANCE_MAX)*std::cos(angle)), anubarak->GetPositionZ() }; - } - void InitializeAI() override { npc_anubarak_pet_template::InitializeAI(); @@ -470,9 +462,10 @@ struct npc_anubarak_anub_ar_assassin : public npc_anubarak_pet_template if (Creature* anubarak = _instance->GetCreature(DATA_ANUBARAK)) { Position jumpTo; + uint32 attempts = 0; do - jumpTo = GetRandomPositionAround(anubarak); - while (!CreatureAI::IsInBounds(*boundary, &jumpTo)); + jumpTo = anubarak->GetRandomPoint(anubarak->GetPosition(), 10.f, 30.0f); + while (!CreatureAI::IsInBounds(*boundary, &jumpTo) && attempts < 10); me->GetMotionMaster()->MoveJump(EVENT_JUMP, jumpTo, 24.0f, 20.0f, 30.0f); DoCastSelf(SPELL_ASSASSIN_VISUAL, true); } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index bf940a0d37afa..ae872cece1189 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -156,16 +156,6 @@ static inline Position const& GetRandomMinionSpawnPoint() return minionSpawnPoints[urand(0, nMinionSpawnPoints - 1)]; } -// uniformly distribute on the circle -static Position GetRandomPositionOnCircle(Position const& center, float radius) -{ - float angle = float(M_PI * rand_norm() * 2.0); - float relDistance = rand_norm() + rand_norm(); - if (relDistance > 1) - relDistance = 1 - relDistance; - return Position(center.GetPositionX() + std::sin(angle) * relDistance * radius, center.GetPositionY() + std::cos(angle) * relDistance * radius, center.GetPositionZ()); -} - class KelThuzadCharmedPlayerAI : public SimpleCharmedPlayerAI { public: @@ -664,7 +654,7 @@ struct npc_kelthuzad_minionAI : public ScriptedAI if (_movementTimer <= diff) { _movementTimer = 0; - me->GetMotionMaster()->MovePoint(MOVEMENT_MINION_RANDOM, GetRandomPositionOnCircle(_home, 3.0f)); + me->GetMotionMaster()->MovePoint(MOVEMENT_MINION_RANDOM, me->GetRandomPoint(_home, 3.0f)); } else _movementTimer -= diff; From fdcf1d7f085d08e3388f7a4ba63ce65242052e78 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Apr 2026 13:12:11 +0200 Subject: [PATCH 085/175] Core/Quests: Fix adding and removing quests Closes #31812 --- src/server/game/Entities/Player/Player.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 419e58063ee22..8e5195cd9eefd 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14830,7 +14830,9 @@ bool Player::CanRewardQuest(Quest const* quest, LootItemType rewardType, uint32 void Player::AddQuest(Quest const* quest, Object* questGiver) { - uint16 log_slot = FindQuestSlot(0); + uint16 log_slot = 0; + while (GetQuestSlotQuestId(log_slot) && log_slot < MAX_QUEST_LOG_SIZE) + ++log_slot; if (log_slot >= MAX_QUEST_LOG_SIZE) // Player does not have any free slot in the quest log return; @@ -15488,8 +15490,9 @@ bool Player::SatisfyQuestMaxLevel(Quest const* qInfo, bool msg) const bool Player::SatisfyQuestLog(bool msg) const { // exist free slot - if (FindQuestSlot(0) < MAX_QUEST_LOG_SIZE) - return true; + for (uint32 log_slot = 0; log_slot < MAX_QUEST_LOG_SIZE; ++log_slot) + if (!GetQuestSlotQuestId(log_slot)) + return true; if (msg) { @@ -16454,7 +16457,9 @@ void Player::SetQuestSlot(uint16 slot, uint32 quest_id) { auto playerData = m_values.ModifyValue(&Player::m_playerData); auto questLogField = playerData.ModifyValue(&UF::PlayerData::QuestLog, slot); - SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::QuestID), quest_id); + auto questLogQuestIdField = questLogField.ModifyValue(&UF::QuestLog::QuestID); + uint32 oldQuestId = questLogQuestIdField.GetValue(); + SetUpdateFieldValue(questLogQuestIdField, quest_id); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::StateFlags), 0); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::EndTime), 0); SetUpdateFieldValue(questLogField.ModifyValue(&UF::QuestLog::ObjectiveFlags), 0); @@ -16463,8 +16468,8 @@ void Player::SetQuestSlot(uint16 slot, uint32 quest_id) if (quest_id) SetUpdateFieldValue(playerData.ModifyValue(&UF::PlayerData::QuestLogQuestIdToIndex, quest_id), slot); - else - RemoveMapUpdateFieldValue(playerData.ModifyValue(&UF::PlayerData::QuestLogQuestIdToIndex), quest_id); + if (oldQuestId) + RemoveMapUpdateFieldValue(playerData.ModifyValue(&UF::PlayerData::QuestLogQuestIdToIndex), oldQuestId); } void Player::SetQuestSlotCounter(uint16 slot, uint8 counter, uint16 count) From d551e5b37172bec4204a0f2f050515db444f574f Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 23 Apr 2026 18:46:18 +0200 Subject: [PATCH 086/175] Core: Updated allowed build to 12.0.5.67114 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_04_23_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_04_23_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 6aff2b6637165..5c1dbef46f669 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1582,7 +1582,14 @@ INSERT INTO `build_auth_key` VALUES (67088,'Mac','x64','WoWC',0xE52362D75762001B2961C76AE3967E8F), (67088,'Win','A64','WoW',0x015B0FF86D65C231A5CD1E387EB2A524), (67088,'Win','x64','WoW',0xD2B5473E8CF4825839F1688BBA3ED5B0), -(67088,'Win','x64','WoWC',0xD746049A30EB089597C443743D74847B); +(67088,'Win','x64','WoWC',0xD746049A30EB089597C443743D74847B), +(67114,'Mac','A64','WoW',0x1A1662F9D15F926D6A85DF91BCE79DF1), +(67114,'Mac','A64','WoWC',0xD28D8D2C35FA6FE4C3C0D76894431F46), +(67114,'Mac','x64','WoW',0x59407231B082F7587562AC40C6992613), +(67114,'Mac','x64','WoWC',0x02E25F13D33F7486F2267D23D527D0FE), +(67114,'Win','A64','WoW',0x275017EC612F2E13305A0FA0C16A5FA8), +(67114,'Win','x64','WoW',0x43F598C4E67C9D2F644A560369C0DF41), +(67114,'Win','x64','WoWC',0x1F88AE965BD17EE37189BD736C5F7D7B); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2028,7 +2035,8 @@ INSERT INTO `build_info` VALUES (66666,12,0,1,NULL), (66709,12,0,1,NULL), (66838,12,0,1,NULL), -(67088,12,0,5,NULL); +(67088,12,0,5,NULL), +(67114,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3641,7 +3649,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67088', + `gamebuild` int unsigned NOT NULL DEFAULT '67114', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3656,7 +3664,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67088,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67114,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4217,7 +4225,8 @@ INSERT INTO `updates` VALUES ('2026_03_26_00_auth.sql','85B672D6B69E3AF187F413B8D1788FF948744CDA','RELEASED','2026-03-26 21:31:03',0), ('2026_03_28_00_auth.sql','510B4485FF9865D7E2F6AEE8DFA8A50285362C8B','RELEASED','2026-03-28 01:05:32',0), ('2026_04_07_00_auth.sql','AE088A44CB5E1ECE7BC928B5471AD8D523074001','RELEASED','2026-04-07 09:20:28',0), -('2026_04_22_00_auth.sql','FA3426E1D920AD15ABA9F3B43630CAD4B3A73704','RELEASED','2026-04-22 18:42:10',0); +('2026_04_22_00_auth.sql','FA3426E1D920AD15ABA9F3B43630CAD4B3A73704','RELEASED','2026-04-22 18:42:10',0), +('2026_04_23_00_auth.sql','7FF5A1098DDB029004A8822D2A1545878F269D25','RELEASED','2026-04-23 18:44:59',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_04_23_00_auth.sql b/sql/updates/auth/master/2026_04_23_00_auth.sql new file mode 100644 index 0000000000000..4f5f407e7872d --- /dev/null +++ b/sql/updates/auth/master/2026_04_23_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67114); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67114,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67114 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67114,'Mac','A64','WoW',0x1A1662F9D15F926D6A85DF91BCE79DF1), +(67114,'Mac','A64','WoWC',0xD28D8D2C35FA6FE4C3C0D76894431F46), +(67114,'Mac','x64','WoW',0x59407231B082F7587562AC40C6992613), +(67114,'Mac','x64','WoWC',0x02E25F13D33F7486F2267D23D527D0FE), +(67114,'Win','A64','WoW',0x275017EC612F2E13305A0FA0C16A5FA8), +(67114,'Win','x64','WoW',0x43F598C4E67C9D2F644A560369C0DF41), +(67114,'Win','x64','WoWC',0x1F88AE965BD17EE37189BD736C5F7D7B); + +UPDATE `realmlist` SET `gamebuild`=67114 WHERE `gamebuild`=67088; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67114'; From 4590f44f838456f83451bb74d0a0ba23ec111203 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 24 Apr 2026 00:06:14 +0200 Subject: [PATCH 087/175] Core/PacketIO: Fix some housing updatefield structures --- .../Entities/Object/Updates/UpdateFields.cpp | 37 +++++++++------- .../Entities/Object/Updates/UpdateFields.h | 44 +++++++++---------- 2 files changed, 42 insertions(+), 39 deletions(-) diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 29587b3997d13..09cbcc7cfb08c 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -9515,6 +9515,7 @@ void HousingRoomComponentMeshData::ClearChangesMask() void HousingPlayerHouseData::WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const { data << *BnetAccount; + data << *CosmeticOwner; data << int32(PlotIndex); data << uint32(Level); data << uint64(Favor); @@ -9532,7 +9533,7 @@ void HousingPlayerHouseData::WriteUpdate(EnumFlag fieldVisibili void HousingPlayerHouseData::WriteUpdate(Mask const& changesMask, ByteBuffer& data, Player const* receiver, BaseEntity const* owner, bool ignoreNestedChangesMask) const { - data.WriteBits(changesMask.GetBlock(0), 10); + data.WriteBits(changesMask.GetBlock(0), 11); data.FlushBits(); if (changesMask[0]) @@ -9543,33 +9544,37 @@ void HousingPlayerHouseData::WriteUpdate(Mask const& changesMask, ByteBuffer& da } if (changesMask[2]) { - data << int32(PlotIndex); + data << *CosmeticOwner; } if (changesMask[3]) { - data << uint32(Level); + data << int32(PlotIndex); } if (changesMask[4]) { - data << uint64(Favor); + data << uint32(Level); } if (changesMask[5]) { - data << uint32(InteriorDecorPlacementBudget); + data << uint64(Favor); } if (changesMask[6]) { - data << uint32(ExteriorDecorPlacementBudget); + data << uint32(InteriorDecorPlacementBudget); } if (changesMask[7]) { - data << uint32(ExteriorFixtureBudget); + data << uint32(ExteriorDecorPlacementBudget); } if (changesMask[8]) { - data << uint32(RoomPlacementBudget); + data << uint32(ExteriorFixtureBudget); } if (changesMask[9]) + { + data << uint32(RoomPlacementBudget); + } + if (changesMask[10]) { data << *EntityGUID; } @@ -9579,6 +9584,7 @@ void HousingPlayerHouseData::WriteUpdate(Mask const& changesMask, ByteBuffer& da void HousingPlayerHouseData::ClearChangesMask() { Base::ClearChangesMask(BnetAccount); + Base::ClearChangesMask(CosmeticOwner); Base::ClearChangesMask(PlotIndex); Base::ClearChangesMask(Level); Base::ClearChangesMask(Favor); @@ -9847,36 +9853,33 @@ void MirroredPositionData::ClearChangesMask() void PlayerMirrorHouse::WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << Guid; + data << HouseGUID; data << NeighborhoodGUID; data << uint32(Level); data << uint32(Favor); data << uint32(InitiativeFavor); - data << int32(InitiativeCycleID); data << int32(MapID); data << int32(PlotID); } void PlayerMirrorHouse::WriteUpdate(bool ignoreChangesMask, ByteBuffer& data, Player const* receiver, Player const* owner) const { - data << Guid; + data << HouseGUID; data << NeighborhoodGUID; data << uint32(Level); data << uint32(Favor); data << uint32(InitiativeFavor); - data << int32(InitiativeCycleID); data << int32(MapID); data << int32(PlotID); } bool PlayerMirrorHouse::operator==(PlayerMirrorHouse const& right) const { - return Guid == right.Guid + return HouseGUID == right.HouseGUID && NeighborhoodGUID == right.NeighborhoodGUID && Level == right.Level && Favor == right.Favor && InitiativeFavor == right.InitiativeFavor - && InitiativeCycleID == right.InitiativeCycleID && MapID == right.MapID && PlotID == right.PlotID; } @@ -10122,7 +10125,7 @@ void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuff { data << uint8(EditorMode); } - if (changesMask[8]) + if (changesMask[9]) { data << *CurrentHouse; } @@ -10130,7 +10133,7 @@ void PlayerHouseInfoComponentData::WriteUpdate(Mask const& changesMask, ByteBuff { Charter->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } - if (changesMask[9]) + if (changesMask[8]) { NeighborhoodOwnershipTransfer->WriteUpdate(ignoreNestedChangesMask, data, receiver, owner); } @@ -10146,8 +10149,8 @@ void PlayerHouseInfoComponentData::ClearChangesMask() Base::ClearChangesMask(Field_F8); Base::ClearChangesMask(Charter); Base::ClearChangesMask(EditorMode); - Base::ClearChangesMask(CurrentHouse); Base::ClearChangesMask(NeighborhoodOwnershipTransfer); + Base::ClearChangesMask(CurrentHouse); _changesMask.ResetAll(); } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 426d8e6526271..c067b3d18cb6c 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -1205,16 +1205,16 @@ struct TransmogOutfitSituationInfo : public IsUpdateFieldStructureTag, public Ha void ClearChangesMask(); }; -struct TransmogOutfitSlotData : public IsUpdateFieldStructureTag, public HasChangesMask<8> +struct TransmogOutfitSlotData : public IsUpdateFieldStructureTag, public HasChangesMask<11> { - UpdateField Slot; - UpdateField SlotOption; - UpdateField SheatheCategory; - UpdateField ItemModifiedAppearanceID; - UpdateField AppearanceDisplayType; - UpdateField SpellItemEnchantmentID; - UpdateField IllusionDisplayType; - UpdateField Flags; + UpdateField Slot; + UpdateField SlotOption; + UpdateField SheatheCategory; + UpdateField ItemModifiedAppearanceID; + UpdateField AppearanceDisplayType; + UpdateField SpellItemEnchantmentID; + UpdateField IllusionDisplayType; + UpdateField Flags; using OwnerObject = Player; void WriteCreate(ByteBuffer& data, Player const* receiver, Player const* owner) const; @@ -1952,17 +1952,18 @@ struct HousingRoomComponentMeshData : public IsUpdateFieldStructureTag, public H void ClearChangesMask(); }; -struct HousingPlayerHouseData : public IsUpdateFieldStructureTag, public HasChangesMask<10> +struct HousingPlayerHouseData : public IsUpdateFieldStructureTag, public HasChangesMask<11> { UpdateField BnetAccount; - UpdateField PlotIndex; - UpdateField Level; - UpdateField Favor; - UpdateField InteriorDecorPlacementBudget; - UpdateField ExteriorDecorPlacementBudget; - UpdateField ExteriorFixtureBudget; - UpdateField RoomPlacementBudget; - UpdateField EntityGUID; + UpdateField CosmeticOwner; + UpdateField PlotIndex; + UpdateField Level; + UpdateField Favor; + UpdateField InteriorDecorPlacementBudget; + UpdateField ExteriorDecorPlacementBudget; + UpdateField ExteriorFixtureBudget; + UpdateField RoomPlacementBudget; + UpdateField EntityGUID; using OwnerObject = BaseEntity; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, BaseEntity const* owner) const; @@ -2048,12 +2049,11 @@ struct MirroredPositionData : public IsUpdateFieldStructureTag, public HasChange struct PlayerMirrorHouse : public IsUpdateFieldStructureTag { - ObjectGuid Guid; + ObjectGuid HouseGUID; ObjectGuid NeighborhoodGUID; uint32 Level = 0; uint32 Favor = 0; uint32 InitiativeFavor = 0; - int32 InitiativeCycleID = 0; int32 MapID = 0; int32 PlotID = 0; @@ -2111,8 +2111,8 @@ struct PlayerHouseInfoComponentData : public IsUpdateFieldStructureTag, public H DynamicUpdateField Field_F8; UpdateField Charter; UpdateField EditorMode; - UpdateField CurrentHouse; - UpdateField NeighborhoodOwnershipTransfer; + UpdateField NeighborhoodOwnershipTransfer; + UpdateField CurrentHouse; using OwnerObject = Player; void WriteCreate(EnumFlag fieldVisibilityFlags, ByteBuffer& data, Player const* receiver, Player const* owner) const; From c5f21379fd67c4e84f6d9f08e32d9f82707ff93b Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 24 Apr 2026 09:46:26 +0200 Subject: [PATCH 088/175] Core: Updated allowed build to 12.0.5.67186 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_04_24_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_04_24_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 5c1dbef46f669..3c5bbcbfe64a5 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1589,7 +1589,14 @@ INSERT INTO `build_auth_key` VALUES (67114,'Mac','x64','WoWC',0x02E25F13D33F7486F2267D23D527D0FE), (67114,'Win','A64','WoW',0x275017EC612F2E13305A0FA0C16A5FA8), (67114,'Win','x64','WoW',0x43F598C4E67C9D2F644A560369C0DF41), -(67114,'Win','x64','WoWC',0x1F88AE965BD17EE37189BD736C5F7D7B); +(67114,'Win','x64','WoWC',0x1F88AE965BD17EE37189BD736C5F7D7B), +(67186,'Mac','A64','WoW',0x0A0433C230A5895C449D8ABE99CF052A), +(67186,'Mac','A64','WoWC',0x47996D60D76FF43568834B90CC3F548E), +(67186,'Mac','x64','WoW',0x1DF32222DD9B14301166008F3DC97873), +(67186,'Mac','x64','WoWC',0x0A718FA5FFE7C1BDE3CE590D178F3EF2), +(67186,'Win','A64','WoW',0xA77179F88A613F96E96F9C5D01278390), +(67186,'Win','x64','WoW',0xBB01E8BE61269F022557F8E3D51A93D7), +(67186,'Win','x64','WoWC',0x564D029956263E4861450F664717ED7C); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2036,7 +2043,8 @@ INSERT INTO `build_info` VALUES (66709,12,0,1,NULL), (66838,12,0,1,NULL), (67088,12,0,5,NULL), -(67114,12,0,5,NULL); +(67114,12,0,5,NULL), +(67186,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3649,7 +3657,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67114', + `gamebuild` int unsigned NOT NULL DEFAULT '67186', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3664,7 +3672,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67114,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67186,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4226,7 +4234,8 @@ INSERT INTO `updates` VALUES ('2026_03_28_00_auth.sql','510B4485FF9865D7E2F6AEE8DFA8A50285362C8B','RELEASED','2026-03-28 01:05:32',0), ('2026_04_07_00_auth.sql','AE088A44CB5E1ECE7BC928B5471AD8D523074001','RELEASED','2026-04-07 09:20:28',0), ('2026_04_22_00_auth.sql','FA3426E1D920AD15ABA9F3B43630CAD4B3A73704','RELEASED','2026-04-22 18:42:10',0), -('2026_04_23_00_auth.sql','7FF5A1098DDB029004A8822D2A1545878F269D25','RELEASED','2026-04-23 18:44:59',0); +('2026_04_23_00_auth.sql','7FF5A1098DDB029004A8822D2A1545878F269D25','RELEASED','2026-04-23 18:44:59',0), +('2026_04_24_00_auth.sql','8C1C15C9672C557D91E2AE61521F8063F6030F14','RELEASED','2026-04-24 09:39:50',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_04_24_00_auth.sql b/sql/updates/auth/master/2026_04_24_00_auth.sql new file mode 100644 index 0000000000000..f6b37906825dd --- /dev/null +++ b/sql/updates/auth/master/2026_04_24_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67186); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67186,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67186 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67186,'Mac','A64','WoW',0x0A0433C230A5895C449D8ABE99CF052A), +(67186,'Mac','A64','WoWC',0x47996D60D76FF43568834B90CC3F548E), +(67186,'Mac','x64','WoW',0x1DF32222DD9B14301166008F3DC97873), +(67186,'Mac','x64','WoWC',0x0A718FA5FFE7C1BDE3CE590D178F3EF2), +(67186,'Win','A64','WoW',0xA77179F88A613F96E96F9C5D01278390), +(67186,'Win','x64','WoW',0xBB01E8BE61269F022557F8E3D51A93D7), +(67186,'Win','x64','WoWC',0x564D029956263E4861450F664717ED7C); + +UPDATE `realmlist` SET `gamebuild`=67186 WHERE `gamebuild`=67114; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67186'; From 9f9dd2a289e4200253aaa2b0405f883edafb98ce Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sat, 25 Apr 2026 17:13:23 +0300 Subject: [PATCH 089/175] Core/Misc: Update QuestInfo enum for (#31806) --- src/server/game/Miscellaneous/SharedDefines.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index abf8bb0970ba4..4710d2af48cac 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -5492,7 +5492,7 @@ enum QuestType QUEST_TYPE_TASK_IN_PROGRESS = 5 }; -// QuestInfo.dbc (11.2.5.62687) +// QuestInfo.dbc (12.0.1.66838) enum QuestInfo { QUEST_INFO_GROUP = 1, @@ -5575,7 +5575,8 @@ enum QuestInfo QUEST_INFO_DELVE = 288, QUEST_INFO_WORLD_BOSS = 289, QUEST_INFO_HIDDEN = 291, - QUEST_INFO_IMPORTANT_QUEST_NO_ABANDON = 292 + QUEST_INFO_IMPORTANT_QUEST_NO_ABANDON = 292, + QUEST_INFO_PREY_WORLD_QUEST = 295 }; // QuestSort.dbc (11.2.5.62687) From 9f638c5464015d2dd6007461db699b45ed5646dc Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sat, 25 Apr 2026 17:19:07 +0300 Subject: [PATCH 090/175] Core/Misc: Update Emote and TextEmotes enums for 12.0.5 (#31814) --- src/server/game/Miscellaneous/SharedDefines.h | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 4710d2af48cac..fcc31445ecb74 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -3288,7 +3288,7 @@ enum GameObjectDestructibleState GO_DESTRUCTIBLE_REBUILDING = 3 }; -// EmotesText.db2 (11.2.5.62687) +// EmotesText.db2 (12.0.5.67186) enum TextEmotes { TEXT_EMOTE_AGREE = 1, @@ -3558,10 +3558,10 @@ enum TextEmotes TEXT_EMOTE_IMPRESSED = 625, TEXT_EMOTE_MAGNIFICENT = 626, TEXT_EMOTE_QUACK = 627, - TEXT_EMOTE_LEAN = 628, + TEXT_EMOTE_LEAN = 633, }; -// Emotes.db2 (10.1.5.50232) +// Emotes.db2 (12.0.5.67186) // EnumUtils: DESCRIBE THIS enum Emote : uint32 { @@ -3825,6 +3825,8 @@ enum Emote : uint32 EMOTE_STATE_WORK_CHOPWOOD4 = 614, EMOTE_STATE_CUSTOMSPELL02 = 615, EMOTE_STATE_READ_AND_SIT = 616, + EMOTE_STATE_READYSPELLDIRECTED = 617, + EMOTE_STATE_READYTHROWN_NO_SOUND = 618, EMOTE_STATE_PARRY_UNARMED = 619, EMOTE_STATE_BLOCK_SHIELD = 620, EMOTE_STATE_SIT_GROUND_2 = 621, @@ -3976,6 +3978,7 @@ enum Emote : uint32 EMOTE_ONESHOT_TALK_SUBDUED = 1005, EMOTE_STATE_EMOTETALK = 1006, EMOTE_STATE_WAINTERACTION = 1007, + EMOTE_STATE_WORK_CHOPWOOD_LUMBER_AXE2 = 1008, EMOTE_ONESHOT_TAKE_OFF_START = 1009, EMOTE_ONESHOT_BATTLEROAR_NO_SOUND = 1010, EMOTE_STATE_WAWEAPONSHARPEN = 1011, @@ -4021,9 +4024,33 @@ enum Emote : uint32 EMOTE_ONESHOT_DANCE_VAR2 = 1075, EMOTE_STATE_KNEEL_INTERACT_INTERRUPT = 1081, EMOTE_STATE_WA2HIDLE_UNSHEATH = 1082, + EMOTE_STATE_SHOVEL = 1083, EMOTE_STATE_LEAN = 1084, + EMOTE_STATE_READYSPELLOMNI_INTERRUPTABLE = 1089, EMOTE_ONESHOT_WALEAN01_VAR1 = 1093, EMOTE_ONESHOT_WALEAN01_VAR0 = 1094, + EMOTE_STATE_FLYCHANNELCASTOMNI2 = 1097, + EMOTE_STATE_ARTOFFLOOP_HIDES_WEAPON = 1100, + EMOTE_STATE_WORK_HERBALISM_HARANIR_PAINTING = 1101, + EMOTE_STATE_SPELL_CHANNEL_OMNI_UP = 1103, + EMOTE_STATE_WAARMSCROSSED = 1110, + EMOTE_ONESHOT_PARRY_FIST1H = 1111, + EMOTE_STATE_WAHANG02 = 1112, + EMOTE_STATE_WORK_HOUSING_HAMMER_SOUND = 1113, + EMOTE_STATE_WACRADLE = 1115, + EMOTE_STATE_WACRATEHOLD2 = 1116, + EMOTE_STATE_WORK_HAMMER_HARANIR_PAINTING = 1117, + EMOTE_STATE_WORK_HERBALISM_HOUSING_SCYTHE = 1118, + EMOTE_STATE_WORK_MINING_HOUSING = 1119, + EMOTE_ONESHOT_TALK_SUBDUED_NO_SHEATHE = 1120, + EMOTE_STATE_WALEAN02_NO_INTERRUPT = 1121, + EMOTE_STATE_WORK_BLUNT_IMPACT = 1122, + EMOTE_ONESHOT_ARTDUALLOOP = 1125, + EMOTE_STATE_ARTDUALLOOP = 1126, + EMOTE_STATE_WORK_ZULAMAN_CHOPPING_WOOD = 1128, + EMOTE_STATE_WORK_ZULAMAN_BLACKSMITTING = 1129, + EMOTE_STATE_WORK_ZULAMAN_HAMMERING_SOUND = 1131, + EMOTE_ATTACK1H_ZONE2_BREAKING_STUFF_SOUND = 1132, }; // AnimationData.db2 (6.0.2.18988) From 20bccaf49ada11d85a589cb1e8f7b2af33963a13 Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Sun, 26 Apr 2026 00:45:22 +0200 Subject: [PATCH 091/175] Scripts/Spells: Implement Reap (#31735) Co-authored-by: Shauren --- .../world/master/2026_04_25_00_world.sql | 5 + src/server/game/Spells/SpellMgr.cpp | 12 ++ src/server/scripts/Spells/spell_dh.cpp | 111 +++++++++++++++++- 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 sql/updates/world/master/2026_04_25_00_world.sql diff --git a/sql/updates/world/master/2026_04_25_00_world.sql b/sql/updates/world/master/2026_04_25_00_world.sql new file mode 100644 index 0000000000000..2fefc29dab19d --- /dev/null +++ b/sql/updates/world/master/2026_04_25_00_world.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dh_eradicate','spell_dh_reap','spell_dh_cull'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(1225826, 'spell_dh_eradicate'), +(1226019, 'spell_dh_reap'), +(1245453, 'spell_dh_cull'); diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 0dccd110ef6b2..14948d4835679 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5216,6 +5216,12 @@ void SpellMgr::LoadSpellInfoCorrections() }); }); + // Eradicate, Reap, Cull + ApplySpellFix({ 1225826, 1226019, 1245453 }, [](SpellInfo* spellInfo) + { + spellInfo->NegativeEffects[EFFECT_0] = true; + }); + // Collective Anguish channel hack (triggered by another channel) ApplySpellFix({ 391057, 393831 }, [](SpellInfo* spellInfo) { @@ -5526,6 +5532,12 @@ void SpellMgr::LoadSpellInfoTargetCaps() spellInfo->_LoadSqrtTargetLimit(5, 0, 1265357, EFFECT_0, {}, {}); }); + // Eradicate + ApplySpellFix({ 1225827, 1279200 }, [](SpellInfo* spellInfo) + { + spellInfo->_LoadSqrtTargetLimit(5, 0, 1226033, EFFECT_0, {}, {}); + }); + TC_LOG_INFO("server.loading", ">> Loaded SpellInfo target caps in {} ms", GetMSTimeDiffToNow(oldMSTime)); } diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index f281070faf743..a986ea2b2bc1d 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -73,6 +73,7 @@ enum DemonHunterSpells SPELL_DH_CONSUME_SOUL_VENGEANCE_DEMON = 210050, SPELL_DH_CONSUME_SOUL_VENGEANCE_LESSER = 208014, SPELL_DH_CONSUME_SOUL_VENGEANCE_SHATTERED = 210047, + SPELL_DH_CULL_DAMAGE = 1245455, SPELL_DH_CYCLE_OF_HATRED_TALENT = 258887, SPELL_DH_CYCLE_OF_HATRED_COOLDOWN_REDUCTION = 1214887, SPELL_DH_CYCLE_OF_HATRED_REMOVE_STACKS = 1214890, @@ -95,6 +96,8 @@ enum DemonHunterSpells SPELL_DH_ELYSIAN_DECREE = 306830, SPELL_DH_ELYSIAN_DECREE_AOE = 307046, SPELL_DH_ENDURING_TORMENT_BUFF = 453314, + SPELL_DH_ERADICATE_DAMAGE = 1225827, + SPELL_DH_ERADICATE_DAMAGE_METAMORPHOSIS = 1279200, SPELL_DH_ESSENCE_BREAK_DEBUFF = 320338, SPELL_DH_EYE_BEAM = 198013, SPELL_DH_EYE_BEAM_DAMAGE = 198030, @@ -174,6 +177,7 @@ enum DemonHunterSpells SPELL_DH_RAIN_OF_CHAOS = 205628, SPELL_DH_RAIN_OF_CHAOS_IMPACT = 232538, SPELL_DH_RAZOR_SPIKES = 210003, + SPELL_DH_REAP_DAMAGE = 1225823, SPELL_DH_REPEAT_DECREE_CONDUIT = 339895, SPELL_DH_RESTLESS_HUNTER_TALENT = 390142, SPELL_DH_RESTLESS_HUNTER_BUFF = 390212, @@ -248,6 +252,7 @@ enum DemonHunterSpells SPELL_DH_VOIDBLADE_DAMAGE = 1245414, SPELL_DH_VOIDGLARE_BOON_ENERGIZE = 1241922, SPELL_DH_VOIDGLARE_BOON_TALENT = 1240202, + SPELL_DH_VOID_METAMORPHOSIS_BUFF = 1217607, SPELL_DH_VOID_RAY_DAMAGE = 1213649, SPELL_DH_WAVE_OF_DEBILITATION_TALENT = 452403, SPELL_DH_WAVE_OF_DEBILITATION_SLOW = 453263, @@ -646,6 +651,28 @@ class spell_dh_critical_chaos : public AuraScript } }; +// 1226019 - Reap +class spell_dh_cull : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_CULL_DAMAGE }); + } + + void HandleDamage(SpellEffIndex /*effIndex*/) const + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_DH_CULL_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dh_cull::HandleDamage, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + // 389718 - Cycle of Binding class spell_dh_cycle_of_binding : public AuraScript { @@ -1153,6 +1180,30 @@ class spell_dh_elysian_decree : public SpellScript int32 _fragmentsToCreate = 0; }; +// 1225826 - Eradicate +class spell_dh_eradicate : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_ERADICATE_DAMAGE, SPELL_DH_ERADICATE_DAMAGE_METAMORPHOSIS, SPELL_DH_VOID_METAMORPHOSIS_BUFF }); + } + + void HandleDamage(SpellEffIndex /*effIndex*/) const + { + Unit* caster = GetCaster(); + caster->CastSpell(GetHitUnit(), caster->HasAura(SPELL_DH_VOID_METAMORPHOSIS_BUFF) + ? SPELL_DH_ERADICATE_DAMAGE_METAMORPHOSIS : SPELL_DH_ERADICATE_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dh_eradicate::HandleDamage, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + // 258860 - Essence Break class spell_dh_essence_break : public SpellScript { @@ -1818,6 +1869,28 @@ class spell_dh_glide_timer : public AuraScript } }; +// 1226019 - Reap +class spell_dh_reap : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_REAP_DAMAGE }); + } + + void HandleDamage(SpellEffIndex /*effIndex*/) const + { + GetCaster()->CastSpell(GetHitUnit(), SPELL_DH_REAP_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_dh_reap::HandleDamage, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + // 339895 - Repeat Decree (attached to 307046 - Elysian Decree and 389860 - Sigil of Spite) class spell_dh_repeat_decree_conduit : public SpellScript { @@ -2005,7 +2078,8 @@ class spell_dh_shattered_souls_devourer : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return spell_dh_shattered_souls_base_lesser::Validate(); + return spell_dh_shattered_souls_base_lesser::Validate() + && ValidateSpellInfo({ SPELL_DH_SOUL_FRAGMENT_DEVOURER }); } static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) @@ -2013,15 +2087,47 @@ class spell_dh_shattered_souls_devourer : public AuraScript return roll_chance(aurEff->GetAmount()); } + static bool CheckReapSoulGatheringProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) + { + // Eradicate, Reap and Cull + return eventInfo.GetSpellInfo()->IsAffected(SPELLFAMILY_DEMON_HUNTER, { 0x0, 0x0, 0x0, 0x40 }); + } + static void HandleProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) { spell_dh_shattered_souls_base_lesser::CreateFragments(eventInfo.GetActionTarget(), eventInfo.GetActor(), 1); } + static void HandleSoulsGathering(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) + { + Unit* caster = eventInfo.GetActor(); + float range = eventInfo.GetSpellInfo()->GetMaxRange(); + + std::vector soulFragments = caster->GetAreaTriggers(SPELL_DH_SOUL_FRAGMENT_DEVOURER); + Trinity::Containers::EraseIf(soulFragments, [caster, range](AreaTrigger const* at) { return !at->IsWithinDist(caster, range); }); + if (soulFragments.empty()) + return; + + uint32 maxTargets = aurEff->GetAmountAsInt(); + if (soulFragments.size() > maxTargets) + soulFragments.resize(maxTargets); + + for (AreaTrigger* soulFragment : soulFragments) + { + caster->CastSpell(soulFragment->GetPosition(), SPELL_DH_CONSUME_SOUL_DEVOURER, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = eventInfo.GetProcSpell() + }); + soulFragment->Remove(); + } + } + void Register() override { DoCheckEffectProc += AuraCheckEffectProcFn(spell_dh_shattered_souls_devourer::CheckProc, EFFECT_0, SPELL_AURA_DUMMY); + DoCheckEffectProc += AuraCheckEffectProcFn(spell_dh_shattered_souls_devourer::CheckReapSoulGatheringProc, EFFECT_1, SPELL_AURA_DUMMY); OnEffectProc += AuraEffectProcFn(spell_dh_shattered_souls_devourer::HandleProc, EFFECT_0, SPELL_AURA_DUMMY); + OnEffectProc += AuraEffectProcFn(spell_dh_shattered_souls_devourer::HandleSoulsGathering, EFFECT_1, SPELL_AURA_DUMMY); } }; @@ -2666,6 +2772,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterSpellScript(spell_dh_consume_energize); RegisterSpellScript(spell_dh_consume_soul_vengeance_lesser); RegisterSpellScript(spell_dh_critical_chaos); + RegisterSpellScript(spell_dh_cull); RegisterSpellScript(spell_dh_cycle_of_binding); RegisterSpellScript(spell_dh_cycle_of_hatred); RegisterSpellScript(spell_dh_cycle_of_hatred_remove_stacks); @@ -2683,6 +2790,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterAreaTriggerAI(at_dh_elysian_decree); RegisterSpellScript(spell_dh_enduring_torment); RegisterSpellScript(spell_dh_enduring_torment_buff); + RegisterSpellScript(spell_dh_eradicate); RegisterSpellScript(spell_dh_essence_break); RegisterSpellScript(spell_dh_eye_beam); RegisterSpellScript(spell_dh_feast_of_souls); @@ -2701,6 +2809,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterSpellScript(spell_dh_monster_rising); RegisterSpellScript(spell_dh_painbringer); RegisterSpellScript(spell_dh_painbringer_reduce_damage); + RegisterSpellScript(spell_dh_reap); RegisterSpellScript(spell_dh_repeat_decree_conduit); RegisterSpellScript(spell_dh_restless_hunter); RegisterSpellScript(spell_dh_retaliation); From 0c51d8353da471cf1344725c83a78563a8f3cba4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 26 Apr 2026 01:20:43 +0200 Subject: [PATCH 092/175] Core/Players: Move loading transmog outfits before loading items and rewarded quests Closes #31816 --- src/server/game/Entities/Player/Player.cpp | 127 ++++++++++----------- 1 file changed, 62 insertions(+), 65 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8e5195cd9eefd..cca76a641509e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -515,6 +515,8 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac ab.SetActionAndType(action_itr->action, ActionButtonType(action_itr->type)); } + EquipTransmogOutfit(0, TransmogSituationTrigger::Manual, false); + // original items for (PlayerCreateInfoItem initialItem : info->item) StoreNewItemInBestSlots(initialItem.item_id, initialItem.item_amount, info->itemContext); @@ -558,8 +560,6 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac GetThreatManager().Initialize(); - EquipTransmogOutfit(0, TransmogSituationTrigger::Manual, false); - return true; } @@ -11868,83 +11868,80 @@ void Player::SetVisibleItemSlot(uint8 slot, Item const* item) bool hasTransmog = false; bool hasIllusion = false; - if (!m_activePlayerData->ViewedOutfit->Slots.empty()) + TransmogMgr::TransmogOutfitSlotAndOptionInfo const* slotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), transmogSlotOption); + if (transmogSlotOption != TransmogOutfitSlotOption::None) { - TransmogMgr::TransmogOutfitSlotAndOptionInfo const* slotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), transmogSlotOption); - if (transmogSlotOption != TransmogOutfitSlotOption::None) + // check if artifact override is active + static constexpr int32 MaxArtifactSpecializations = AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecFour) - AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + 1; + int32 specIndex = GetPrimarySpecializationEntry()->OrderIndex; + if (specIndex >= 0 && specIndex < MaxArtifactSpecializations) { - // check if artifact override is active - static constexpr int32 MaxArtifactSpecializations = AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecFour) - AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + 1; - int32 specIndex = GetPrimarySpecializationEntry()->OrderIndex; - if (specIndex >= 0 && specIndex < MaxArtifactSpecializations) + TransmogOutfitSlotOption artifactOption = static_cast(AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + specIndex); + TransmogMgr::TransmogOutfitSlotAndOptionInfo const* artifactSlotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), artifactOption); + if (artifactSlotInfo && static_cast(*m_activePlayerData->ViewedOutfit->Slots[artifactSlotInfo->SlotIndex].AppearanceDisplayType) == TransmogOutfitDisplayType::Assigned) { - TransmogOutfitSlotOption artifactOption = static_cast(AsUnderlyingType(TransmogOutfitSlotOption::ArtifactSpecOne) + specIndex); - TransmogMgr::TransmogOutfitSlotAndOptionInfo const* artifactSlotInfo = TransmogMgr::GetSlotAndOption(EquipmentSlots(slot), artifactOption); - if (artifactSlotInfo && static_cast(*m_activePlayerData->ViewedOutfit->Slots[artifactSlotInfo->SlotIndex].AppearanceDisplayType) == TransmogOutfitDisplayType::Assigned) - { - transmogSlotOption = artifactOption; - slotInfo = artifactSlotInfo; - } + transmogSlotOption = artifactOption; + slotInfo = artifactSlotInfo; } } + } - if (slotInfo) + if (slotInfo) + { + auto isTransmogDisplayed = [](TransmogOutfitDisplayType displayType) { - auto isTransmogDisplayed = [](TransmogOutfitDisplayType displayType) - { - return displayType == TransmogOutfitDisplayType::Assigned || displayType == TransmogOutfitDisplayType::Hidden; - }; + return displayType == TransmogOutfitDisplayType::Assigned || displayType == TransmogOutfitDisplayType::Hidden; + }; - UF::TransmogOutfitSlotData const& transmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex]; - if (isTransmogDisplayed(static_cast(*transmogOutfitItem.AppearanceDisplayType))) + UF::TransmogOutfitSlotData const& transmogOutfitItem = m_activePlayerData->ViewedOutfit->Slots[slotInfo->SlotIndex]; + if (isTransmogDisplayed(static_cast(*transmogOutfitItem.AppearanceDisplayType))) + { + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(transmogOutfitItem.ItemModifiedAppearanceID)) { - if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(transmogOutfitItem.ItemModifiedAppearanceID)) + TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); + if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) { - TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); - if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) - { - itemId = itemModifiedAppearance->ItemID; - itemAppearanceModId = itemModifiedAppearance->ItemAppearanceModifierID; - itemModifiedAppearanceId = itemModifiedAppearance->ID; - sheatheCategory = static_cast(*transmogOutfitItem.SheatheCategory); - hasTransmog = true; - } + itemId = itemModifiedAppearance->ItemID; + itemAppearanceModId = itemModifiedAppearance->ItemAppearanceModifierID; + itemModifiedAppearanceId = itemModifiedAppearance->ID; + sheatheCategory = static_cast(*transmogOutfitItem.SheatheCategory); + hasTransmog = true; } } + } - auto getSecondaryItemModifiedAppearance = [isTransmogDisplayed](UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem) -> int32 + auto getSecondaryItemModifiedAppearance = [isTransmogDisplayed](UF::TransmogOutfitSlotData const& secondaryTransmogOutfitItem) -> int32 + { + if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) + || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) { - if (isTransmogDisplayed(static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType)) - || static_cast(*secondaryTransmogOutfitItem.AppearanceDisplayType) == TransmogOutfitDisplayType::Equipped) + if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(secondaryTransmogOutfitItem.ItemModifiedAppearanceID)) { - if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(secondaryTransmogOutfitItem.ItemModifiedAppearanceID)) - { - TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); - if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) - return secondaryTransmogOutfitItem.ItemModifiedAppearanceID; - } + TransmogHolidayEntry const* transmogHoliday = sTransmogHolidayStore.LookupEntry(itemModifiedAppearance->ItemID); + if (!transmogHoliday || IsHolidayActive(static_cast(transmogHoliday->RequiredTransmogHoliday))) + return secondaryTransmogOutfitItem.ItemModifiedAppearanceID; } - return 0; - }; + } + return 0; + }; - if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) - if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) - secondaryItemModifiedAppearanceId = getSecondaryItemModifiedAppearance(m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]); + if (TransmogOutfitSlotInfoEntry const* secondarySlot = sTransmogOutfitSlotInfoStore.LookupEntry(slotInfo->Slot->SecondarySlotID)) + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(secondarySlot->GetSlot(), transmogSlotOption)) + secondaryItemModifiedAppearanceId = getSecondaryItemModifiedAppearance(m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]); - if (TransmogOutfitSlotOptionEntry const* secondarySlotOption = sTransmogOutfitSlotOptionInfoStore.LookupEntry(slotInfo->SlotOption ? slotInfo->SlotOption->SecondaryOptionID : 0)) - if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(slotInfo->Slot->GetSlot(), secondarySlotOption->GetOption())) - secondaryItemModifiedAppearanceId = getSecondaryItemModifiedAppearance(m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]); + if (TransmogOutfitSlotOptionEntry const* secondarySlotOption = sTransmogOutfitSlotOptionInfoStore.LookupEntry(slotInfo->SlotOption ? slotInfo->SlotOption->SecondaryOptionID : 0)) + if (TransmogMgr::TransmogOutfitSlotAndOptionInfo const* secondarySlotInfo = TransmogMgr::GetSlotAndOption(slotInfo->Slot->GetSlot(), secondarySlotOption->GetOption())) + secondaryItemModifiedAppearanceId = getSecondaryItemModifiedAppearance(m_activePlayerData->ViewedOutfit->Slots[secondarySlotInfo->SlotIndex]); - if (secondaryItemModifiedAppearanceId) - hasTransmog = true; + if (secondaryItemModifiedAppearanceId) + hasTransmog = true; - if (isTransmogDisplayed(static_cast(*transmogOutfitItem.IllusionDisplayType))) - { - if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(transmogOutfitItem.SpellItemEnchantmentID)) - itemVisual = spellItemEnchantment->ItemVisual; + if (isTransmogDisplayed(static_cast(*transmogOutfitItem.IllusionDisplayType))) + { + if (SpellItemEnchantmentEntry const* spellItemEnchantment = sSpellItemEnchantmentStore.LookupEntry(transmogOutfitItem.SpellItemEnchantmentID)) + itemVisual = spellItemEnchantment->ItemVisual; - hasIllusion = true; - } + hasIllusion = true; } } @@ -18663,6 +18660,13 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol // Load spell locations - must be after loading auras _LoadStoredAuraTeleportLocations(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_AURA_STORED_LOCATIONS)); + _LoadEquipmentSets(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS)); + _LoadTransmogCustomSets(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS)); + _LoadTransmogOutfits(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT), + holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SITUATION), + holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SLOT), + fields.transmogOutfitEquippedId, fields.transmogOutfitLocked); + // after spell load, learn rewarded spell if need also _LoadQuestStatus(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS)); _LoadQuestStatusObjectives(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_QUEST_STATUS_OBJECTIVES)); @@ -18836,13 +18840,6 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol _LoadDeclinedNames(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DECLINED_NAMES)); - _LoadEquipmentSets(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_EQUIPMENT_SETS)); - _LoadTransmogCustomSets(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFITS)); - _LoadTransmogOutfits(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT), - holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SITUATION), - holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_TRANSMOG_OUTFIT_SLOT), - fields.transmogOutfitEquippedId, fields.transmogOutfitLocked); - _LoadCUFProfiles(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_CUF_PROFILES)); _LoadPlayerData(holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DATA_ELEMENTS), holder.GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_DATA_FLAGS)); From 16755f2987d89d3cc80d16837b060c79ea71bf4b Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 26 Apr 2026 16:27:52 +0200 Subject: [PATCH 093/175] Scripts/Azjol-Nerub: Fixed Anub'ar Assassin jump pos selection after 5423f36b4d7d0a9830be91c310a19329f57a1cce --- .../scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index c6316474afadc..616f575b4e30d 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -464,7 +464,7 @@ struct npc_anubarak_anub_ar_assassin : public npc_anubarak_pet_template Position jumpTo; uint32 attempts = 0; do - jumpTo = anubarak->GetRandomPoint(anubarak->GetPosition(), 10.f, 30.0f); + jumpTo = anubarak->GetRandomPoint(anubarak->GetPosition(), 30.0f, 10.f); while (!CreatureAI::IsInBounds(*boundary, &jumpTo) && attempts < 10); me->GetMotionMaster()->MoveJump(EVENT_JUMP, jumpTo, 24.0f, 20.0f, 30.0f); DoCastSelf(SPELL_ASSASSIN_VISUAL, true); From f02ac750073fd07c14bf86f7ddc3e72a7b83d59b Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 26 Apr 2026 16:27:52 +0200 Subject: [PATCH 094/175] Core/Spells: Add SpellRange structure to replace std::pair in spell range checks --- src/server/game/AI/CoreAI/CombatAI.cpp | 11 +++++--- src/server/game/AI/CoreAI/UnitAICommon.cpp | 12 ++++---- .../game/AI/ScriptedAI/ScriptedCreature.cpp | 7 +++-- .../game/Entities/GameObject/GameObject.cpp | 2 +- src/server/game/Entities/Object/Object.cpp | 28 ++----------------- src/server/game/Entities/Object/Object.h | 3 +- src/server/game/Spells/Spell.cpp | 28 +++++++++---------- src/server/game/Spells/Spell.h | 2 +- src/server/game/Spells/SpellDefines.h | 6 ++++ src/server/game/Spells/SpellEffects.cpp | 3 +- src/server/game/Spells/SpellInfo.cpp | 16 ++++++++++- src/server/game/Spells/SpellInfo.h | 3 +- .../ReturnToKarazhan/boss_mana_devourer.cpp | 3 +- .../ScarletEnclave/chapter1.cpp | 5 ++-- .../Northrend/Ulduar/Ulduar/boss_thorim.cpp | 3 +- src/server/scripts/Spells/spell_shaman.cpp | 2 +- 16 files changed, 67 insertions(+), 67 deletions(-) diff --git a/src/server/game/AI/CoreAI/CombatAI.cpp b/src/server/game/AI/CoreAI/CombatAI.cpp index 502ed6df62b0b..9ca91adb6cf87 100644 --- a/src/server/game/AI/CoreAI/CombatAI.cpp +++ b/src/server/game/AI/CoreAI/CombatAI.cpp @@ -188,14 +188,17 @@ void CasterAI::UpdateAI(uint32 diff) // TurretAI ////////////// -TurretAI::TurretAI(Creature* creature, uint32 scriptId) noexcept : CreatureAI(creature, scriptId) +TurretAI::TurretAI(Creature* creature, uint32 scriptId) noexcept : CreatureAI(creature, scriptId), _minimumRange(0.0f) { if (!creature->m_spells[0]) TC_LOG_ERROR("scripts.ai", "TurretAI set for creature with spell1 = 0. AI will do nothing ({})", creature->GetGUID().ToString()); - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(creature->m_spells[0], creature->GetMap()->GetDifficultyID()); - _minimumRange = spellInfo ? spellInfo->GetMinRange(false) : 0; - creature->m_CombatDistance = spellInfo ? spellInfo->GetMaxRange(false) : 0; + if (SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(creature->m_spells[0], creature->GetMap()->GetDifficultyID())) + { + auto [minRange, maxRange] = spellInfo->GetMinMaxRange(false); + _minimumRange = minRange; + creature->m_CombatDistance = maxRange; + } creature->m_SightDistance = creature->m_CombatDistance; creature->SetCanMelee(false); } diff --git a/src/server/game/AI/CoreAI/UnitAICommon.cpp b/src/server/game/AI/CoreAI/UnitAICommon.cpp index 51b60ed64f43b..14433d07f0a85 100644 --- a/src/server/game/AI/CoreAI/UnitAICommon.cpp +++ b/src/server/game/AI/CoreAI/UnitAICommon.cpp @@ -102,8 +102,9 @@ bool SpellTargetSelector::operator()(Unit const* target) const meleeRange = std::max(meleeRange, NOMINAL_MELEE_RANGE); } - minRange = _caster->GetSpellMinRangeForTarget(target, _spellInfo) + meleeRange; - maxRange = _caster->GetSpellMaxRangeForTarget(target, _spellInfo); + SpellRange range = _caster->GetSpellMinMaxRangeForTarget(target, _spellInfo); + minRange = range.Min + meleeRange; + maxRange = range.Max; rangeMod = _caster->GetCombatReach(); rangeMod += target->GetCombatReach(); @@ -119,15 +120,12 @@ bool SpellTargetSelector::operator()(Unit const* target) const maxRange += rangeMod; - minRange *= minRange; - maxRange *= maxRange; - if (target != _caster) { - if (_caster->GetExactDistSq(target) > maxRange) + if (!_caster->IsInDist(target, maxRange)) return false; - if (minRange > 0.0f && _caster->GetExactDistSq(target) < minRange) + if (minRange > 0.0f && _caster->IsInDist(target, minRange)) return false; } diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 6b29dfa074f68..4b11200905295 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -394,13 +394,14 @@ SpellInfo const* ScriptedAI::SelectSpell(Unit* target, uint32 school, uint32 mec continue; // Check if the spell meets our range requirements - if (rangeMin && me->GetSpellMinRangeForTarget(target, tempSpell) < rangeMin) + SpellRange spellRange = me->GetSpellMinMaxRangeForTarget(target, tempSpell); + if (rangeMin && spellRange.Min < rangeMin) continue; - if (rangeMax && me->GetSpellMaxRangeForTarget(target, tempSpell) > rangeMax) + if (rangeMax && spellRange.Max > rangeMax) continue; // Check if our target is in range - if (me->IsWithinDistInMap(target, float(me->GetSpellMinRangeForTarget(target, tempSpell))) || !me->IsWithinDistInMap(target, float(me->GetSpellMaxRangeForTarget(target, tempSpell)))) + if (me->IsWithinDistInMap(target, spellRange.Min) || !me->IsWithinDistInMap(target, spellRange.Max)) continue; // All good so lets add it to the spell list diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index ff5bcffb715e6..4ecb2fc01719d 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -4605,7 +4605,7 @@ bool GameObject::IsAtInteractDistance(Player const* player, SpellInfo const* spe float maxRange = spell->GetMaxRange(spell->IsPositive()); if (GetGoType() == GAMEOBJECT_TYPE_SPELL_FOCUS) - return maxRange * maxRange >= GetExactDistSq(player); + return IsInDist(player, maxRange); if (sGameObjectDisplayInfoStore.LookupEntry(GetGOInfo()->displayId)) return IsAtInteractDistance(*player, maxRange); diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index f748f2be9c565..e05cdb65ec7a1 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1667,32 +1667,10 @@ Player* WorldObject::GetSpellModOwner() const return nullptr; } -float WorldObject::GetSpellMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const +SpellRange WorldObject::GetSpellMinMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const { - if (!spellInfo->RangeEntry) - return 0.f; - - if (spellInfo->RangeEntry->RangeMax[0] == spellInfo->RangeEntry->RangeMax[1]) - return spellInfo->GetMaxRange(); - - if (!target) - return spellInfo->GetMaxRange(true); - - return spellInfo->GetMaxRange(!IsHostileTo(target)); -} - -float WorldObject::GetSpellMinRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const -{ - if (!spellInfo->RangeEntry) - return 0.f; - - if (spellInfo->RangeEntry->RangeMin[0] == spellInfo->RangeEntry->RangeMin[1]) - return spellInfo->GetMinRange(); - - if (!target) - return spellInfo->GetMinRange(true); - - return spellInfo->GetMinRange(!IsHostileTo(target)); + bool positive = target ? !IsHostileTo(target) : true; + return spellInfo->GetMinMaxRange(positive); } SpellEffectValue WorldObject::ApplyEffectModifiers(SpellInfo const* spellInfo, uint8 effIndex, SpellEffectValue value) const diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 053822e065ff4..a7e72cc6d1e04 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -448,8 +448,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation Player* GetSpellModOwner() const; // target dependent range checks - float GetSpellMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const; - float GetSpellMinRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const; + SpellRange GetSpellMinMaxRangeForTarget(Unit const* target, SpellInfo const* spellInfo) const; SpellEffectValue ApplyEffectModifiers(SpellInfo const* spellInfo, uint8 effIndex, SpellEffectValue value) const; int32 CalcSpellDuration(SpellInfo const* spellInfo, std::vector const* powerCosts) const; diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index e609d987fbbfb..bae012934e7e5 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1480,8 +1480,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn break; case TARGET_DEST_CASTER_FISHING: { - float minDist = m_spellInfo->GetMinRange(true); - float maxDist = m_spellInfo->GetMaxRange(true); + auto [minDist, maxDist] = m_spellInfo->GetMinMaxRange(true); float dist = frand(minDist, maxDist); float x, y, z; float angle = rand_norm() * static_cast(M_PI * 35.0f / 180.0f) - static_cast(M_PI * 17.5f / 180.0f); @@ -2240,7 +2239,7 @@ void Spell::SearchChainTargets(std::list& targets, uint32 chainTar float searchRadius = [&]() { if (m_spellInfo->HasAttribute(SPELL_ATTR2_CHAIN_FROM_CASTER)) - return GetMinMaxRange(false).second; + return GetMinMaxRange(false).Max; if (spellEffectInfo.EffectAttributes.HasFlag(SpellEffectAttributes::ChainFromInitialTarget)) return jumpRadius; @@ -7397,14 +7396,13 @@ bool Spell::CanIncreaseRangeByMovement(Unit const* unit) && !unit->IsWalking(); } -std::pair Spell::GetMinMaxRange(bool strict) const +SpellRange Spell::GetMinMaxRange(bool strict) const { float rangeMod = 0.0f; - float minRange = 0.0f; - float maxRange = 0.0f; + SpellRange range; if (strict && m_spellInfo->IsNextMeleeSwingSpell()) - return { 0.0f, 100.0f }; + return range; Unit* unitCaster = m_caster->ToUnit(); if (m_spellInfo->RangeEntry) @@ -7426,15 +7424,15 @@ std::pair Spell::GetMinMaxRange(bool strict) const meleeRange = unitCaster->GetMeleeRange(target ? target : unitCaster); } - minRange = m_caster->GetSpellMinRangeForTarget(target, m_spellInfo) + meleeRange; - maxRange = m_caster->GetSpellMaxRangeForTarget(target, m_spellInfo); + range = m_caster->GetSpellMinMaxRangeForTarget(target, m_spellInfo); + range.Min += meleeRange; if (target || m_targets.GetCorpseTarget()) { rangeMod = m_caster->GetCombatReach() + (target ? target->GetCombatReach() : m_caster->GetCombatReach()); - if (minRange > 0.0f && !(m_spellInfo->RangeEntry->Flags & SPELL_RANGE_RANGED)) - minRange += rangeMod; + if (range.Min > 0.0f && !(m_spellInfo->RangeEntry->Flags & SPELL_RANGE_RANGED)) + range.Min += rangeMod; } } @@ -7445,14 +7443,14 @@ std::pair Spell::GetMinMaxRange(bool strict) const if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) && m_caster->GetTypeId() == TYPEID_PLAYER) if (Item* ranged = m_caster->ToPlayer()->GetWeaponForAttack(RANGED_ATTACK, true)) - maxRange *= ranged->GetTemplate()->GetRangedModRange() * 0.01f; + range.Max *= ranged->GetTemplate()->GetRangedModRange() * 0.01f; if (Player* modOwner = m_caster->GetSpellModOwner()) - modOwner->ApplySpellMod(m_spellInfo, SpellModOp::Range, maxRange, const_cast(this)); + modOwner->ApplySpellMod(m_spellInfo, SpellModOp::Range, range.Max, const_cast(this)); - maxRange += rangeMod; + range.Max += rangeMod; - return { minRange, maxRange }; + return range; } SpellCastResult Spell::CheckPower() const diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 28ce4960de898..4cf3a3a01aef0 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -734,7 +734,7 @@ class TC_GAME_API Spell static bool CanIncreaseRangeByMovement(Unit const* unit); - std::pair GetMinMaxRange(bool strict) const; + SpellRange GetMinMaxRange(bool strict) const; protected: bool HasGlobalCooldown() const; diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 50fa4eca45685..c83b09a6dbefa 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -343,6 +343,12 @@ enum SpellCastTargetFlags : uint32 TARGET_FLAG_ITEM_MASK = TARGET_FLAG_TRADE_ITEM | TARGET_FLAG_ITEM | TARGET_FLAG_GAMEOBJECT_ITEM }; +struct SpellRange +{ + float Min = 0.0f; + float Max = 0.0f; +}; + struct TC_GAME_API SpellDestination { SpellDestination() { } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 01442399f1440..f296e0cd13986 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4487,8 +4487,7 @@ void Spell::EffectTransmitted() else { //GO is always friendly to it's creator, get range for friends - float min_dis = m_spellInfo->GetMinRange(true); - float max_dis = m_spellInfo->GetMaxRange(true); + auto [min_dis, max_dis] = m_spellInfo->GetMinMaxRange(true); float dis = rand_norm() * (max_dis - min_dis) + min_dis; unitCaster->GetClosePoint(fx, fy, fz, DEFAULT_PLAYER_BOUNDING_RADIUS, dis); diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index fd896373b23a8..7b7119677143b 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3962,7 +3962,7 @@ float SpellInfo::GetMinRange(bool positive /*= false*/) const return RangeEntry->RangeMin[positive ? 1 : 0]; } -float SpellInfo::GetMaxRange(bool positive /*= false*/, WorldObject* caster /*= nullptr*/, Spell* spell /*= nullptr*/) const +float SpellInfo::GetMaxRange(bool positive /*= false*/, WorldObject const* caster /*= nullptr*/, Spell* spell /*= nullptr*/) const { if (!RangeEntry) return 0.0f; @@ -3974,6 +3974,20 @@ float SpellInfo::GetMaxRange(bool positive /*= false*/, WorldObject* caster /*= return range; } +SpellRange SpellInfo::GetMinMaxRange(bool positive, WorldObject const* caster, Spell* spell) const +{ + SpellRange range; + if (!RangeEntry) + return range; + + range = { .Min = RangeEntry->RangeMin[positive ? 1 : 0], .Max = RangeEntry->RangeMax[positive ? 1 : 0] }; + if (caster) + if (Player* modOwner = caster->GetSpellModOwner()) + modOwner->ApplySpellMod(this, SpellModOp::Range, range.Max, spell); + + return range; +} + int32 SpellInfo::CalcDuration(WorldObject const* caster /*= nullptr*/) const { int32 duration = GetDuration(); diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index aeb4f58bd1dca..348b80ec34d90 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -555,7 +555,8 @@ class TC_GAME_API SpellInfo SpellSpecificType GetSpellSpecific() const; float GetMinRange(bool positive = false) const; - float GetMaxRange(bool positive = false, WorldObject* caster = nullptr, Spell* spell = nullptr) const; + float GetMaxRange(bool positive = false, WorldObject const* caster = nullptr, Spell* spell = nullptr) const; + SpellRange GetMinMaxRange(bool positive = false, WorldObject const* caster = nullptr, Spell* spell = nullptr) const; int32 CalcDuration(WorldObject const* caster = nullptr) const; int32 GetDuration() const; diff --git a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp index 656fa7c801369..3511f52adc32c 100644 --- a/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp +++ b/src/server/scripts/EasternKingdoms/ReturnToKarazhan/boss_mana_devourer.cpp @@ -211,10 +211,11 @@ class spell_mana_devourer_energy_discharge : public SpellScript void HandleCast() { + auto [minDist, maxDist] = GetSpellInfo()->GetMinMaxRange(); for (uint8 i = 0; i < 40; ++i) { float randomAngle = frand(0.0f, 2.0f * float(M_PI)); - float randomDist = frand(GetSpellInfo()->GetMinRange(), GetSpellInfo()->GetMaxRange()); + float randomDist = minDist + (maxDist - minDist) * std::sqrt(rand_norm()); Unit* caster = GetCaster(); Position pos = caster->GetPosition(); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 5e2fd5062f283..9972e83893241 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -1220,11 +1220,12 @@ struct npc_hearthglen_crusader : public ScriptedAI if (!spellInfo) return; - _minimumRange = spellInfo->GetMinRange(false); + auto [minRange, maxRange] = spellInfo->GetMinMaxRange(false); + _minimumRange = minRange; if (!_minimumRange) _minimumRange = MELEE_RANGE; - creature->m_CombatDistance = spellInfo->GetMaxRange(false); + creature->m_CombatDistance = maxRange; creature->m_SightDistance = creature->m_CombatDistance; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index ce96d3e673d55..798b1bfeee3ec 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1053,7 +1053,8 @@ struct npc_thorim_trashAI : public ScriptedAI if (_info->Type == MERCENARY_SOLDIER) { bool allowMove = true; - if (me->IsInRange(target, spellInfo->GetMinRange(), spellInfo->GetMaxRange())) + auto [minRange, maxRange] = spellInfo->GetMinMaxRange(); + if (me->IsInRange(target, minRange, maxRange)) allowMove = false; if (IsCombatMovementAllowed() != allowMove) diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 8deb01eeaeb37..8091935bbc1ad 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -2423,7 +2423,7 @@ class spell_sha_primordial_wave : public SpellScript { Unit* shaman = GetCaster(); std::vector targets; - FireNovaTargetCheck check{ .MaxSearchRange = GetSpell()->GetMinMaxRange(false).second, .Shaman = shaman }; + FireNovaTargetCheck check{ .MaxSearchRange = GetSpell()->GetMinMaxRange(false).Max, .Shaman = shaman }; Trinity::UnitListSearcher searcher(shaman, targets, check); Cell::VisitAllObjects(shaman, searcher, check.MaxSearchRange); From 7ac98ef88aa9eb706616e34f197c0cfb7105af21 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 26 Apr 2026 16:27:52 +0200 Subject: [PATCH 095/175] Core/Spells: Implemented RadiusMin (targets must be between RadiusMin and RadiusMax) --- src/server/game/Entities/Object/Object.cpp | 15 ++--- src/server/game/Entities/Object/Object.h | 4 +- src/server/game/Spells/Auras/SpellAuras.cpp | 10 +-- src/server/game/Spells/Spell.cpp | 49 ++++++++------- src/server/game/Spells/Spell.h | 10 +-- src/server/game/Spells/SpellDefines.h | 3 + src/server/game/Spells/SpellEffects.cpp | 18 +++--- src/server/game/Spells/SpellInfo.cpp | 63 +++++-------------- src/server/game/Spells/SpellInfo.h | 3 +- .../HallsOfReflection/halls_of_reflection.cpp | 2 +- .../IcecrownCitadel/boss_lord_marrowgar.cpp | 2 +- .../Nexus/EyeOfEternity/boss_malygos.cpp | 2 +- .../Ulduar/HallsOfStone/boss_krystallus.cpp | 4 +- .../Ulduar/Ulduar/boss_flame_leviathan.cpp | 5 +- .../scripts/Outland/GruulsLair/boss_gruul.cpp | 4 +- src/server/scripts/Spells/spell_druid.cpp | 8 +-- src/server/scripts/Spells/spell_mage.cpp | 13 ++-- src/server/scripts/Spells/spell_priest.cpp | 16 ++--- src/server/scripts/Spells/spell_quest.cpp | 2 +- src/server/scripts/Spells/spell_shaman.cpp | 2 +- 20 files changed, 103 insertions(+), 132 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index e05cdb65ec7a1..b95d16ac6b5ff 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -417,7 +417,7 @@ bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool Position const* thisOrTransport = this; Position const* objOrObjTransport = obj; - if (GetTransport() && obj->GetTransport() && obj->GetTransport()->GetTransportGUID() == GetTransport()->GetTransportGUID()) + if (GetTransport() && GetTransport() == obj->GetTransport()) { thisOrTransport = &m_movementInfo.transport.pos; objOrObjTransport = &obj->m_movementInfo.transport.pos; @@ -614,11 +614,9 @@ bool WorldObject::IsInRange(WorldObject const* obj, float minRange, float maxRan return distsq < maxdist * maxdist; } -bool WorldObject::IsInRange2d(float x, float y, float minRange, float maxRange) const +bool WorldObject::IsInRange2d(Position const* pos, float minRange, float maxRange) const { - float dx = GetPositionX() - x; - float dy = GetPositionY() - y; - float distsq = dx*dx + dy*dy; + float distsq = GetExactDist2dSq(pos); float sizefactor = GetCombatReach(); @@ -634,12 +632,9 @@ bool WorldObject::IsInRange2d(float x, float y, float minRange, float maxRange) return distsq < maxdist * maxdist; } -bool WorldObject::IsInRange3d(float x, float y, float z, float minRange, float maxRange) const +bool WorldObject::IsInRange3d(Position const* pos, float minRange, float maxRange) const { - float dx = GetPositionX() - x; - float dy = GetPositionY() - y; - float dz = GetPositionZ() - z; - float distsq = dx*dx + dy*dy + dz*dz; + float distsq = GetExactDistSq(pos); float sizefactor = GetCombatReach(); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index a7e72cc6d1e04..ea29ee9d1d2c8 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -366,8 +366,8 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation void GetHitSpherePointFor(Position const& dest, float& x, float& y, float& z) const; bool GetDistanceOrder(WorldObject const* obj1, WorldObject const* obj2, bool is3D = true) const; bool IsInRange(WorldObject const* obj, float minRange, float maxRange, bool is3D = true) const; - bool IsInRange2d(float x, float y, float minRange, float maxRange) const; - bool IsInRange3d(float x, float y, float z, float minRange, float maxRange) const; + bool IsInRange2d(Position const* pos, float minRange, float maxRange) const; + bool IsInRange3d(Position const* pos, float minRange, float maxRange) const; bool isInFront(WorldObject const* target, float arc = float(M_PI)) const; bool isInBack(WorldObject const* target, float arc = float(M_PI)) const; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 3bdbffe7692db..2eb98b475e443 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -2586,7 +2586,7 @@ void UnitAura::FillTargetMap(std::unordered_map& targets, Unit* c std::vector units; ConditionContainer* condList = spellEffectInfo.ImplicitTargetConditions.get(); - float radius = spellEffectInfo.CalcRadius(ref); + SpellRange radius = spellEffectInfo.CalcRadius(ref); float extraSearchRadius = 0.0f; SpellTargetCheckTypes selectionType = TARGET_CHECK_DEFAULT; @@ -2604,7 +2604,7 @@ void UnitAura::FillTargetMap(std::unordered_map& targets, Unit* c break; case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY: selectionType = TARGET_CHECK_ENEMY; - extraSearchRadius = radius > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; + extraSearchRadius = radius.Max > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; break; case SPELL_EFFECT_APPLY_AREA_AURA_PET: if (!condList || sConditionMgr->IsObjectMeetToConditions(unitOwner, ref, *condList)) @@ -2613,7 +2613,7 @@ void UnitAura::FillTargetMap(std::unordered_map& targets, Unit* c case SPELL_EFFECT_APPLY_AREA_AURA_OWNER: { if (Unit* owner = unitOwner->GetCharmerOrOwner()) - if (unitOwner->IsWithinDistInMap(owner, radius)) + if (owner->IsInWorld() && unitOwner->InSamePhase(owner) && unitOwner->IsInRange3d(owner, radius.Min, radius.Max)) if (!condList || sConditionMgr->IsObjectMeetToConditions(owner, ref, *condList)) units.push_back(owner); break; @@ -2643,7 +2643,7 @@ void UnitAura::FillTargetMap(std::unordered_map& targets, Unit* c { Trinity::WorldObjectSpellAreaTargetCheck check(radius, unitOwner, ref, unitOwner, m_spellInfo, selectionType, condList, TARGET_OBJECT_TYPE_UNIT); Trinity::UnitListSearcher searcher(PhasingHandler::GetAlwaysVisiblePhaseShift(), units, check); - Spell::SearchTargets(searcher, containerTypeMask, unitOwner, unitOwner, radius + extraSearchRadius); + Spell::SearchTargets(searcher, containerTypeMask, unitOwner, unitOwner, radius.Max + extraSearchRadius); // by design WorldObjectSpellAreaTargetCheck allows not-in-world units (for spells) but for auras it is not acceptable Trinity::Containers::EraseIf(units, [unitOwner](Unit const* unit) { return !unit->IsSelfOrInSameMap(unitOwner); }); @@ -2733,7 +2733,7 @@ void DynObjAura::FillTargetMap(std::unordered_map& targets, Unit* std::vector units; ConditionContainer* condList = spellEffectInfo.ImplicitTargetConditions.get(); - Trinity::WorldObjectSpellAreaTargetCheck check(radius, dynObjOwner, dynObjOwnerCaster, dynObjOwnerCaster, m_spellInfo, selectionType, condList, TARGET_OBJECT_TYPE_UNIT); + Trinity::WorldObjectSpellAreaTargetCheck check({ .Max = radius }, dynObjOwner, dynObjOwnerCaster, dynObjOwnerCaster, m_spellInfo, selectionType, condList, TARGET_OBJECT_TYPE_UNIT); Trinity::UnitListSearcher searcher(dynObjOwner, units, check); Cell::VisitAllObjects(dynObjOwner, searcher, radius); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index bae012934e7e5..d3603def63681 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1152,7 +1152,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, dest = st->GetPosition(); else { - float randomRadius = spellEffectInfo.CalcRadius(m_caster, targetIndex); + float randomRadius = spellEffectInfo.CalcRadius(m_caster, targetIndex).Max; if (randomRadius > 0.0f) MovePosition(dest._position, m_caster, randomRadius, targetType.CalcDirectionAngle()); } @@ -1178,7 +1178,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, { target = m_caster; // radius is only meant to be randomized when using caster fallback - randomRadius = spellEffectInfo.CalcRadius(m_caster, targetIndex); + randomRadius = spellEffectInfo.CalcRadius(m_caster, targetIndex).Max; } break; default: @@ -1281,14 +1281,14 @@ void Spell::SelectImplicitConeTargets(SpellEffectInfo const& spellEffectInfo, Sp SpellTargetObjectTypes objectType = targetType.GetObjectType(); SpellTargetCheckTypes selectionType = targetType.GetCheckType(); ConditionContainer* condList = spellEffectInfo.ImplicitTargetConditions.get(); - float radius = spellEffectInfo.CalcRadius(m_caster, targetIndex) * m_spellValue->RadiusMod; + SpellRange radius = spellEffectInfo.CalcRadius(m_caster, targetIndex) * m_spellValue->RadiusMod; if (uint32 containerTypeMask = GetSearcherTypeMask(m_spellInfo, spellEffectInfo, objectType, condList)) { - float extraSearchRadius = radius > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; + float extraSearchRadius = radius.Max > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; Trinity::WorldObjectSpellConeTargetCheck check(*m_caster, DegToRad(coneAngle), m_spellInfo->Width ? m_spellInfo->Width : m_caster->GetCombatReach(), radius, m_caster, m_spellInfo, selectionType, condList, objectType); Trinity::WorldObjectListSearcher searcher(m_caster, targets, check, containerTypeMask); - SearchTargets >(searcher, containerTypeMask, m_caster, m_caster, radius + extraSearchRadius); + SearchTargets >(searcher, containerTypeMask, m_caster, m_caster, radius.Max + extraSearchRadius); CallScriptObjectAreaTargetSelectHandlers(targets, spellEffectInfo.EffectIndex, targetType); @@ -1366,7 +1366,7 @@ void Spell::SelectImplicitAreaTargets(SpellEffectInfo const& spellEffectInfo, Sp return; } - float radius = spellEffectInfo.CalcRadius(m_caster, targetIndex) * m_spellValue->RadiusMod; + SpellRange radius = spellEffectInfo.CalcRadius(m_caster, targetIndex) * m_spellValue->RadiusMod; std::list targets; switch (targetType.GetTarget()) { @@ -1518,7 +1518,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn if (!unitCaster) break; - float dist = spellEffectInfo.CalcRadius(unitCaster, targetIndex); + float dist = spellEffectInfo.CalcRadius(unitCaster, targetIndex).Max; float angle = targetType.CalcDirectionAngle(); if (targetType.GetTarget() == TARGET_DEST_CASTER_MOVEMENT_DIRECTION) { @@ -1574,10 +1574,10 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn break; case TARGET_DEST_NEARBY_DB: { - Optional> radiusBounds = spellEffectInfo.CalcRadiusBounds(m_caster, targetIndex, this); + SpellRange radius = spellEffectInfo.CalcRadius(m_caster, targetIndex, this); std::vector positionsInRange; for (auto const& [_, position] : sSpellMgr->GetSpellTargetPositions(m_spellInfo->Id, spellEffectInfo.EffectIndex)) - if (m_caster->GetMapId() == position.GetMapId() && (!radiusBounds || (!m_caster->IsInDist(position, radiusBounds->first) && m_caster->IsInDist(position, radiusBounds->second)))) + if (m_caster->GetMapId() == position.GetMapId() && m_caster->IsInRange3d(&position, radius.Min, radius.Max)) positionsInRange.push_back(&position); if (positionsInRange.empty()) @@ -1593,7 +1593,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn } default: { - float dist = spellEffectInfo.CalcRadius(m_caster, targetIndex); + float dist = spellEffectInfo.CalcRadius(m_caster, targetIndex).Max; float angle = targetType.CalcDirectionAngle(); float objSize = m_caster->GetCombatReach(); @@ -1658,7 +1658,7 @@ void Spell::SelectImplicitTargetDestTargets(SpellEffectInfo const& spellEffectIn default: { float angle = targetType.CalcDirectionAngle(); - float dist = spellEffectInfo.CalcRadius(nullptr, targetIndex); + float dist = spellEffectInfo.CalcRadius(nullptr, targetIndex).Max; Position pos = dest._position.GetPosition(); MovePosition(pos, target, dist, angle); @@ -1697,7 +1697,7 @@ void Spell::SelectImplicitDestDestTargets(SpellEffectInfo const& spellEffectInfo break; case TARGET_DEST_DEST_TARGET_TOWARDS_CASTER: { - float dist = spellEffectInfo.CalcRadius(m_caster, targetIndex); + float dist = spellEffectInfo.CalcRadius(m_caster, targetIndex).Max; Position pos = dest._position.GetPosition(); float angle = pos.GetAbsoluteAngle(m_caster) - m_caster->GetOrientation(); @@ -1710,7 +1710,7 @@ void Spell::SelectImplicitDestDestTargets(SpellEffectInfo const& spellEffectInfo default: { float angle = targetType.CalcDirectionAngle(); - float dist = spellEffectInfo.CalcRadius(m_caster, targetIndex); + float dist = spellEffectInfo.CalcRadius(m_caster, targetIndex).Max; Position pos = dest._position.GetPosition(); MovePosition(pos, m_caster, dist, angle); @@ -1975,13 +1975,13 @@ void Spell::SelectImplicitLineTargets(SpellEffectInfo const& spellEffectInfo, Sp } ConditionContainer* condList = spellEffectInfo.ImplicitTargetConditions.get(); - float radius = spellEffectInfo.CalcRadius(m_caster, targetIndex) * m_spellValue->RadiusMod; + SpellRange radius = spellEffectInfo.CalcRadius(m_caster, targetIndex) * m_spellValue->RadiusMod; if (uint32 containerTypeMask = GetSearcherTypeMask(m_spellInfo, spellEffectInfo, objectType, condList)) { Trinity::WorldObjectSpellLineTargetCheck check(m_caster, dst, m_spellInfo->Width ? m_spellInfo->Width : m_caster->GetCombatReach(), radius, m_caster, m_spellInfo, selectionType, condList, objectType); Trinity::WorldObjectListSearcher searcher(m_caster, targets, check, containerTypeMask); - SearchTargets>(searcher, containerTypeMask, m_caster, m_caster, radius); + SearchTargets>(searcher, containerTypeMask, m_caster, m_caster, radius.Max); CallScriptObjectAreaTargetSelectHandlers(targets, spellEffectInfo.EffectIndex, targetType); @@ -2192,7 +2192,7 @@ WorldObject* Spell::SearchNearbyTarget(SpellEffectInfo const& spellEffectInfo, f return target; } -void Spell::SearchAreaTargets(std::list& targets, SpellEffectInfo const& spellEffectInfo, float range, Position const* position, WorldObject* referer, +void Spell::SearchAreaTargets(std::list& targets, SpellEffectInfo const& spellEffectInfo, SpellRange range, Position const* position, WorldObject* referer, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, Trinity::WorldObjectSpellAreaTargetSearchReason searchReason) { @@ -2200,10 +2200,10 @@ void Spell::SearchAreaTargets(std::list& targets, SpellEffectInfo if (!containerTypeMask) return; - float extraSearchRadius = range > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; + float extraSearchRadius = range.Max > 0.0f ? EXTRA_CELL_SEARCH_RADIUS : 0.0f; Trinity::WorldObjectSpellAreaTargetCheck check(range, position, m_caster, referer, m_spellInfo, selectionType, condList, objectType, searchReason); Trinity::WorldObjectListSearcher searcher(PhasingHandler::GetAlwaysVisiblePhaseShift(), targets, check, containerTypeMask); - SearchTargets(searcher, containerTypeMask, m_caster, position, range + extraSearchRadius); + SearchTargets(searcher, containerTypeMask, m_caster, position, range.Max + extraSearchRadius); } void Spell::SearchChainTargets(std::list& targets, uint32 chainTargets, WorldObject* target, SpellTargetObjectTypes objectType, @@ -2249,7 +2249,7 @@ void Spell::SearchChainTargets(std::list& targets, uint32 chainTar WorldObject* chainSource = m_spellInfo->HasAttribute(SPELL_ATTR2_CHAIN_FROM_CASTER) ? m_caster : target; std::list tempTargets; - SearchAreaTargets(tempTargets, spellEffectInfo, searchRadius, chainSource, m_caster, objectType, selectType, spellEffectInfo.ImplicitTargetConditions.get(), + SearchAreaTargets(tempTargets, spellEffectInfo, { 0.0f, searchRadius }, chainSource, m_caster, objectType, selectType, spellEffectInfo.ImplicitTargetConditions.get(), Trinity::WorldObjectSpellAreaTargetSearchReason::Chain); tempTargets.remove(target); @@ -9474,7 +9474,7 @@ bool WorldObjectSpellNearbyTargetCheck::operator()(WorldObject* target) return false; } -WorldObjectSpellAreaTargetCheck::WorldObjectSpellAreaTargetCheck(float range, Position const* position, WorldObject* caster, +WorldObjectSpellAreaTargetCheck::WorldObjectSpellAreaTargetCheck(SpellRange range, Position const* position, WorldObject* caster, WorldObject* referer, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType, WorldObjectSpellAreaTargetSearchReason searchReason /*= Area*/) : WorldObjectSpellTargetCheck(caster, referer, spellInfo, selectionType, condList, objectType), _range(range), _position(position), _searchReason(searchReason) { } @@ -9484,13 +9484,14 @@ bool WorldObjectSpellAreaTargetCheck::operator()(WorldObject* target) const if (GameObject* gameObjectTarget = target->ToGameObject()) { // isInRange including the dimension of the GO - bool isInRange = gameObjectTarget->IsInRange(_position->GetPositionX(), _position->GetPositionY(), _position->GetPositionZ(), _range); + bool isInRange = gameObjectTarget->IsInRange(_position->GetPositionX(), _position->GetPositionY(), _position->GetPositionZ(), _range.Max) + && (_range.Min <= 0.0f || !gameObjectTarget->IsInRange(_position->GetPositionX(), _position->GetPositionY(), _position->GetPositionZ(), _range.Min)); if (!isInRange) return false; } else { - bool isInsideCylinder = target->IsWithinDist2d(_position, _range) && std::abs(target->GetPositionZ() - _position->GetPositionZ()) <= _range; + bool isInsideCylinder = target->IsInRange2d(_position, _range.Min, _range.Max) && std::abs(target->GetPositionZ() - _position->GetPositionZ()) <= _range.Max; if (!isInsideCylinder) return false; @@ -9515,7 +9516,7 @@ bool WorldObjectSpellAreaTargetCheck::operator()(WorldObject* target) const return WorldObjectSpellTargetCheck::operator ()(target); } -WorldObjectSpellConeTargetCheck::WorldObjectSpellConeTargetCheck(Position const& coneSrc, float coneAngle, float lineWidth, float range, WorldObject* caster, +WorldObjectSpellConeTargetCheck::WorldObjectSpellConeTargetCheck(Position const& coneSrc, float coneAngle, float lineWidth, SpellRange range, WorldObject* caster, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType) : WorldObjectSpellAreaTargetCheck(range, caster, caster, caster, spellInfo, selectionType, condList, objectType), _coneSrc(coneSrc), _coneAngle(coneAngle), _lineWidth(lineWidth) { } @@ -9557,7 +9558,7 @@ bool WorldObjectSpellTrajTargetCheck::operator()(WorldObject* target) const return WorldObjectSpellTargetCheck::operator ()(target); } -WorldObjectSpellLineTargetCheck::WorldObjectSpellLineTargetCheck(Position const* srcPosition, Position const* dstPosition, float lineWidth, float range, WorldObject* caster, +WorldObjectSpellLineTargetCheck::WorldObjectSpellLineTargetCheck(Position const* srcPosition, Position const* dstPosition, float lineWidth, SpellRange range, WorldObject* caster, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType) : WorldObjectSpellAreaTargetCheck(range, caster, caster, caster, spellInfo, selectionType, condList, objectType), _position(*srcPosition), _lineWidth(lineWidth) { diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 4cf3a3a01aef0..55180451c5386 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -495,7 +495,7 @@ class TC_GAME_API Spell template static void SearchTargets(SEARCHER& searcher, uint32 containerMask, WorldObject* referer, Position const* pos, float radius); WorldObject* SearchNearbyTarget(SpellEffectInfo const& spellEffectInfo, float range, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionContainer const* condList = nullptr); - void SearchAreaTargets(std::list& targets, SpellEffectInfo const& spellEffectInfo, float range, Position const* position, WorldObject* referer, + void SearchAreaTargets(std::list& targets, SpellEffectInfo const& spellEffectInfo, SpellRange range, Position const* position, WorldObject* referer, SpellTargetObjectTypes objectType, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, Trinity::WorldObjectSpellAreaTargetSearchReason searchReason); void SearchChainTargets(std::list& targets, uint32 chainTargets, WorldObject* target, SpellTargetObjectTypes objectType, @@ -1043,10 +1043,10 @@ namespace Trinity struct TC_GAME_API WorldObjectSpellAreaTargetCheck : public WorldObjectSpellTargetCheck { - float _range; + SpellRange _range; Position const* _position; WorldObjectSpellAreaTargetSearchReason _searchReason; - WorldObjectSpellAreaTargetCheck(float range, Position const* position, WorldObject* caster, + WorldObjectSpellAreaTargetCheck(SpellRange range, Position const* position, WorldObject* caster, WorldObject* referer, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType, WorldObjectSpellAreaTargetSearchReason searchReason = WorldObjectSpellAreaTargetSearchReason::Area); @@ -1058,7 +1058,7 @@ namespace Trinity Position _coneSrc; float _coneAngle; float _lineWidth; - WorldObjectSpellConeTargetCheck(Position const& coneSrc, float coneAngle, float lineWidth, float range, WorldObject* caster, + WorldObjectSpellConeTargetCheck(Position const& coneSrc, float coneAngle, float lineWidth, SpellRange range, WorldObject* caster, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType); bool operator()(WorldObject* target) const; @@ -1078,7 +1078,7 @@ namespace Trinity { Position _position; float _lineWidth; - WorldObjectSpellLineTargetCheck(Position const* srcPosition, Position const* dstPosition, float lineWidth, float range, WorldObject* caster, + WorldObjectSpellLineTargetCheck(Position const* srcPosition, Position const* dstPosition, float lineWidth, SpellRange range, WorldObject* caster, SpellInfo const* spellInfo, SpellTargetCheckTypes selectionType, ConditionContainer const* condList, SpellTargetObjectTypes objectType); bool operator()(WorldObject* target) const; diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index c83b09a6dbefa..259e39868a3aa 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -347,6 +347,9 @@ struct SpellRange { float Min = 0.0f; float Max = 0.0f; + + constexpr SpellRange operator*(float mul) const { return { Min * mul, Max * mul }; } + bool operator==(SpellRange const&) const = default; }; struct TC_GAME_API SpellDestination diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index f296e0cd13986..d85a1ed9085a0 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1537,7 +1537,7 @@ void Spell::EffectPersistentAA() { SpellEffectInfo const& spellEffectInfo = m_spellInfo->GetEffect(SpellEffIndex(i)); if (spellEffectInfo.IsEffect(SPELL_EFFECT_PERSISTENT_AREA_AURA)) - radius = std::max(radius, spellEffectInfo.CalcRadius(unitCaster)); + radius = std::max(radius, spellEffectInfo.CalcRadius(unitCaster).Max); } DynamicObject* dynObj = new DynamicObject(false); @@ -1999,7 +1999,7 @@ void Spell::EffectSummonType() } default: { - float radius = effectInfo->CalcRadius(); + SpellRange radius = effectInfo->CalcRadius(); TempSummonType summonType = TEMPSUMMON_TIMED_DESPAWN; if (duration == 0ms) @@ -2013,10 +2013,10 @@ void Spell::EffectSummonType() { Position pos; if (count == 0) - pos = *destTarget; + pos = destTarget->GetPosition(); else // randomize position for multiple summons - pos = caster->GetRandomPoint(*destTarget, radius); + pos = caster->GetRandomPoint(*destTarget, radius.Max, radius.Min); summon = caster->GetMap()->SummonCreature(entry, pos, properties, duration, unitCaster, m_spellInfo->Id, 0, privateObjectOwner); if (!summon) @@ -2307,7 +2307,7 @@ void Spell::EffectAddFarsight() if (!player) return; - float radius = effectInfo->CalcRadius(); + float radius = effectInfo->CalcRadius().Max; int32 duration = m_spellInfo->CalcDuration(m_caster); // Caster not in world, might be spell triggered from aura removal if (!player->IsInWorld()) @@ -3148,7 +3148,7 @@ void Spell::EffectScriptEffect() case 45151: { //Workaround for Range ... should be global for every ScriptEffect - float radius = effectInfo->CalcRadius(nullptr, SpellTargetIndex::TargetB); + float radius = effectInfo->CalcRadius(nullptr, SpellTargetIndex::TargetB).Max; if (unitTarget && unitTarget->GetTypeId() == TYPEID_PLAYER && unitTarget->GetDistance(m_caster) >= radius && !unitTarget->HasAura(46394) && unitTarget != m_caster) unitTarget->CastSpell(unitTarget, 46394, this); @@ -3160,9 +3160,9 @@ void Spell::EffectScriptEffect() if (!m_targets.HasDst()) return; - float radius = effectInfo->CalcRadius(); + SpellRange radius = effectInfo->CalcRadius(); for (uint8 i = 0; i < 15; ++i) - m_caster->CastSpell(m_caster->GetRandomPoint(*destTarget, radius), 54522, this); + m_caster->CastSpell(m_caster->GetRandomPoint(*destTarget, radius.Max, radius.Min), 54522, this); break; } case 52173: // Coyote Spirit Despawn @@ -4480,7 +4480,7 @@ void Spell::EffectTransmitted() //FIXME: this can be better check for most objects but still hack else if (effectInfo->HasRadius(SpellTargetIndex::TargetA) && m_spellInfo->Speed == 0) { - float dis = effectInfo->CalcRadius(unitCaster); + float dis = effectInfo->CalcRadius(unitCaster).Min; unitCaster->GetClosePoint(fx, fy, fz, DEFAULT_PLAYER_BOUNDING_RADIUS, dis); fo = unitCaster->GetOrientation(); } diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 7b7119677143b..f4d9824f1293a 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -779,7 +779,7 @@ bool SpellEffectInfo::HasRadius(SpellTargetIndex targetIndex) const } } -float SpellEffectInfo::CalcRadius(WorldObject* caster /*= nullptr*/, SpellTargetIndex targetIndex /*=SpellTargetIndex::TargetA*/, Spell* spell /*= nullptr*/) const +SpellRange SpellEffectInfo::CalcRadius(WorldObject const* caster /*= nullptr*/, SpellTargetIndex targetIndex /*=SpellTargetIndex::TargetA*/, Spell* spell /*= nullptr*/) const { // TargetA -> TargetARadiusEntry // TargetB -> TargetBRadiusEntry @@ -792,69 +792,38 @@ float SpellEffectInfo::CalcRadius(WorldObject* caster /*= nullptr*/, SpellTarget entry = TargetBRadiusEntry; } + SpellRange radius; if (!entry) - return 0.0f; - - float radius = entry->RadiusMin; + return radius; - // Random targets use random value between RadiusMin and RadiusMax - // For other cases, client uses RadiusMax if RadiusMin is 0 - if (target.GetTarget() == TARGET_DEST_CASTER_RANDOM || - target.GetTarget() == TARGET_DEST_TARGET_RANDOM || - target.GetTarget() == TARGET_DEST_DEST_RANDOM) - radius += (entry->RadiusMax - radius) * std::sqrt(rand_norm()); - else if (radius == 0.0f) - radius = entry->RadiusMax; + radius = { .Min = entry->RadiusMin, .Max = entry->RadiusMax }; if (caster) { if (Unit const* casterUnit = caster->ToUnit()) - radius += entry->RadiusPerLevel * casterUnit->GetLevel(); - - radius = std::min(radius, entry->RadiusMax); + radius.Max = std::min(entry->Radius + entry->RadiusPerLevel * casterUnit->GetLevel(), radius.Max); if (Player* modOwner = caster->GetSpellModOwner()) - modOwner->ApplySpellMod(_spellInfo, SpellModOp::Radius, radius, spell); - - if (!_spellInfo->HasAttribute(SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS)) - if (Unit const* casterUnit = caster->ToUnit(); casterUnit && Spell::CanIncreaseRangeByMovement(casterUnit)) - radius += 2.0f; - } - - return radius; -} - -Optional> SpellEffectInfo::CalcRadiusBounds(WorldObject* caster, SpellTargetIndex targetIndex, Spell* spell) const -{ - // TargetA -> TargetARadiusEntry - // TargetB -> TargetBRadiusEntry - // Aura effects have TargetARadiusEntry == TargetBRadiusEntry (mostly) - SpellRadiusEntry const* entry = TargetARadiusEntry; - if (targetIndex == SpellTargetIndex::TargetB && HasRadius(targetIndex)) - entry = TargetBRadiusEntry; - - Optional> bounds; - if (!entry) - return bounds; - - bounds.emplace(entry->RadiusMin, entry->RadiusMax); - - if (caster) - { - if (Player* modOwner = caster->GetSpellModOwner()) - modOwner->ApplySpellMod(_spellInfo, SpellModOp::Radius, bounds->second, spell); + modOwner->ApplySpellMod(_spellInfo, SpellModOp::Radius, radius.Max, spell); if (!_spellInfo->HasAttribute(SPELL_ATTR9_NO_MOVEMENT_RADIUS_BONUS)) { if (Unit const* casterUnit = caster->ToUnit(); casterUnit && Spell::CanIncreaseRangeByMovement(casterUnit)) { - bounds->first = std::max(bounds->first - 2.0f, 0.0f); - bounds->second += 2.0f; + radius.Min = std::max(radius.Min - 2.0f, 0.0f); + radius.Max += 2.0f; } } } - return bounds; + // Random targets use random value between RadiusMin and RadiusMax + // For other cases, client uses RadiusMax if RadiusMin is 0 + if (target.GetTarget() == TARGET_DEST_CASTER_RANDOM || + target.GetTarget() == TARGET_DEST_TARGET_RANDOM || + target.GetTarget() == TARGET_DEST_DEST_RANDOM) + radius.Max = (radius.Max - radius.Min) * std::sqrt(rand_norm()); + + return radius; } uint32 SpellEffectInfo::GetProvidedTargetMask() const diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 348b80ec34d90..fda07e05142d4 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -273,8 +273,7 @@ class TC_GAME_API SpellEffectInfo float CalcDamageMultiplier(WorldObject* caster, Spell* spell = nullptr) const; bool HasRadius(SpellTargetIndex targetIndex) const; - float CalcRadius(WorldObject* caster = nullptr, SpellTargetIndex targetIndex = SpellTargetIndex::TargetA, Spell* spell = nullptr) const; - Optional> CalcRadiusBounds(WorldObject* caster, SpellTargetIndex targetIndex, Spell* spell) const; + SpellRange CalcRadius(WorldObject const* caster = nullptr, SpellTargetIndex targetIndex = SpellTargetIndex::TargetA, Spell* spell = nullptr) const; uint32 GetProvidedTargetMask() const; uint32 GetMissingTargetMask(bool srcSet = false, bool dstSet = false, uint32 mask = 0) const; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index ec50bba82d2c2..ad86e07222183 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -2780,7 +2780,7 @@ class spell_hor_evasion : public SpellScriptLoader return; float angle = pos.GetAbsoluteAngle(&home); - float dist = GetEffectInfo().CalcRadius(GetCaster()); + float dist = GetEffectInfo().CalcRadius(GetCaster()).Max; target->MovePosition(pos, dist, angle); dest.Relocate(pos); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index c1a4ea1327c55..1a1e2d0351b60 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -532,7 +532,7 @@ class spell_marrowgar_coldflame_damage : public AuraScript if (target->HasAura(SPELL_IMPALED)) return false; - if (target->GetExactDist2d(GetOwner()) > GetEffectInfo(EFFECT_0).CalcRadius()) + if (target->GetExactDist2d(GetOwner()) > GetEffectInfo(EFFECT_0).CalcRadius().Max) return false; if (Aura* aur = target->GetAura(GetId())) diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 4479fc4bef6f7..92931e791e83c 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -1687,7 +1687,7 @@ class spell_arcane_overload : public SpellScript { Creature* arcaneOverload = GetCaster()->ToCreature(); targets.remove_if(ExactDistanceCheck(arcaneOverload, - GetEffectInfo(EFFECT_0).CalcRadius(arcaneOverload) * arcaneOverload->GetObjectScale())); + GetEffectInfo(EFFECT_0).CalcRadius(arcaneOverload).Max * arcaneOverload->GetObjectScale())); } void Register() override diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index f73b345778996..08bef1ba404ec 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -160,8 +160,8 @@ class spell_krystallus_shatter_effect : public SpellScript if (!GetHitUnit()) return; - float radius = GetEffectInfo(EFFECT_0).CalcRadius(GetCaster(), SpellTargetIndex::TargetB); - if (!radius) + float radius = GetEffectInfo(EFFECT_0).CalcRadius(GetCaster(), SpellTargetIndex::TargetB).Max; + if (radius <= 0.0f) return; float distance = GetCaster()->GetDistance2d(GetHitUnit()); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index f5332de0374d7..e97b6219194ff 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1724,7 +1724,7 @@ class spell_vehicle_throw_passenger : public SpellScriptLoader { // use 99 because it is 3d search std::list targetList; - Trinity::WorldObjectSpellAreaTargetCheck check(99, GetExplTargetDest(), GetCaster(), GetCaster(), GetSpellInfo(), TARGET_CHECK_DEFAULT, nullptr, TARGET_OBJECT_TYPE_UNIT); + Trinity::WorldObjectSpellAreaTargetCheck check({ .Min = 0.0f, .Max = 99.0f }, GetExplTargetDest(), GetCaster(), GetCaster(), GetSpellInfo(), TARGET_CHECK_DEFAULT, nullptr, TARGET_OBJECT_TYPE_UNIT); Trinity::WorldObjectListSearcher searcher(GetCaster(), targetList, check); Cell::VisitAllObjects(GetCaster(), searcher, 99.0f); float minDist = 99 * 99; @@ -1746,7 +1746,8 @@ class spell_vehicle_throw_passenger : public SpellScriptLoader } } } - if (target && target->IsWithinDist2d(targets.GetDstPos(), GetEffectInfo().CalcRadius() * 2)) // now we use *2 because the location of the seat is not correct + SpellRange radius = GetEffectInfo().CalcRadius(); + if (target && target->IsInRange2d(targets.GetDstPos(), radius.Min, radius.Max * 2)) // now we use *2 because the location of the seat is not correct passenger->EnterVehicle(target, 0); else { diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index 8dfa2b32769d7..73d503595a243 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -317,8 +317,8 @@ class spell_gruul_shatter_effect : public SpellScriptLoader if (!GetHitUnit()) return; - float radius = GetEffectInfo(EFFECT_0).CalcRadius(GetCaster(), SpellTargetIndex::TargetB); - if (!radius) + float radius = GetEffectInfo(EFFECT_0).CalcRadius(GetCaster(), SpellTargetIndex::TargetB).Max; + if (radius <= 0.0f) return; float distance = GetCaster()->GetDistance2d(GetHitUnit()); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index c8232667a6df4..36ee648ae1a29 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1612,12 +1612,12 @@ class spell_dru_luxuriant_soil : public AuraScript Unit* rejuvCaster = GetTarget(); // let's use the ProcSpell's max. range. - float spellRange = eventInfo.GetSpellInfo()->GetMaxRange(); + SpellRange spellRange = eventInfo.GetSpellInfo()->GetMinMaxRange(); std::vector targetList; Trinity::WorldObjectSpellAreaTargetCheck check(spellRange, rejuvCaster, rejuvCaster, rejuvCaster, eventInfo.GetSpellInfo(), TARGET_CHECK_ALLY, nullptr, TARGET_OBJECT_TYPE_UNIT); Trinity::UnitListSearcher searcher(rejuvCaster, targetList, check); - Cell::VisitAllObjects(rejuvCaster, searcher, spellRange); + Cell::VisitAllObjects(rejuvCaster, searcher, spellRange.Max); if (targetList.empty()) return; @@ -1910,7 +1910,7 @@ class spell_dru_power_of_the_archdruid : public AuraScript float spellRange = aurEff->GetAmount(); std::vector targetList; - Trinity::WorldObjectSpellAreaTargetCheck checker(spellRange, procTarget, druid, druid, eventInfo.GetSpellInfo(), TARGET_CHECK_ALLY, nullptr, TARGET_OBJECT_TYPE_UNIT); + Trinity::WorldObjectSpellAreaTargetCheck checker({ .Max = spellRange }, procTarget, druid, druid, eventInfo.GetSpellInfo(), TARGET_CHECK_ALLY, nullptr, TARGET_OBJECT_TYPE_UNIT); Trinity::UnitListSearcher searcher(procTarget, targetList, checker); Cell::VisitAllObjects(procTarget, searcher, spellRange); std::erase(targetList, procTarget); @@ -2870,7 +2870,7 @@ class spell_dru_twin_moonfire : public SpellScript float maxRange = sSpellMgr->AssertSpellInfo(SPELL_DRUID_TWIN_MOONS, GetCastDifficulty())->GetEffect(EFFECT_0).CalcValue(caster); std::list targets; - Trinity::WorldObjectSpellAreaTargetCheck check(maxRange, hitUnit, caster, caster, moonfireSpellInfo, TARGET_CHECK_ENEMY, nullptr, TARGET_OBJECT_TYPE_UNIT); + Trinity::WorldObjectSpellAreaTargetCheck check({ .Max = maxRange }, hitUnit, caster, caster, moonfireSpellInfo, TARGET_CHECK_ENEMY, nullptr, TARGET_OBJECT_TYPE_UNIT); Trinity::UnitListSearcher searcher(hitUnit, targets, check); Cell::VisitAllObjects(hitUnit, searcher, maxRange); diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index bfcf79ceec2f9..9c8ac7e84bb9a 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -1842,21 +1842,24 @@ class spell_mage_ring_of_frost_freeze : public SpellScript bool Validate(SpellInfo const* /*spellInfo*/) override { return ValidateSpellInfo({ SPELL_MAGE_RING_OF_FROST_SUMMON, SPELL_MAGE_RING_OF_FROST_FREEZE }) - && ValidateSpellEffect({ { SPELL_MAGE_RING_OF_FROST_SUMMON, EFFECT_0 } }); + && ValidateSpellEffect({ { SPELL_MAGE_RING_OF_FROST_SUMMON, EFFECT_2 } }); } void FilterTargets(std::list& targets) { WorldLocation const* dest = GetExplTargetDest(); - float outRadius = sSpellMgr->AssertSpellInfo(SPELL_MAGE_RING_OF_FROST_SUMMON, GetCastDifficulty())->GetEffect(EFFECT_0).CalcRadius(nullptr, SpellTargetIndex::TargetB); - float inRadius = 6.5f; + SpellEffectInfo const& spellEffectInfo = sSpellMgr->AssertSpellInfo(SPELL_MAGE_RING_OF_FROST_SUMMON, GetCastDifficulty())->GetEffect(EFFECT_2); + SpellRange radius = { + .Min = spellEffectInfo.CalcRadius(nullptr, SpellTargetIndex::TargetA).Max, + .Max = spellEffectInfo.CalcRadius(nullptr, SpellTargetIndex::TargetB).Max + }; - targets.remove_if([dest, outRadius, inRadius](WorldObject* target) + targets.remove_if([dest, radius](WorldObject* target) { Unit* unit = target->ToUnit(); if (!unit) return true; - return unit->HasAura(SPELL_MAGE_RING_OF_FROST_DUMMY) || unit->HasAura(SPELL_MAGE_RING_OF_FROST_FREEZE) || unit->GetExactDist(dest) > outRadius || unit->GetExactDist(dest) < inRadius; + return unit->HasAura(SPELL_MAGE_RING_OF_FROST_DUMMY) || unit->HasAura(SPELL_MAGE_RING_OF_FROST_FREEZE) || !unit->IsInRange3d(dest, radius.Min, radius.Max); }); } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 589527d0759bc..a3def63ef137e 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -384,10 +384,10 @@ class spell_pri_angelic_feather_trigger : public SpellScript void HandleEffectDummy(SpellEffIndex /*effIndex*/) const { Position destPos = GetHitDest()->GetPosition(); - float radius = GetEffectInfo().CalcRadius(); + SpellRange radius = GetEffectInfo().CalcRadius(); // Caster is prioritary - if (GetCaster()->IsWithinDist2d(&destPos, radius)) + if (GetCaster()->IsInRange2d(&destPos, radius.Min, radius.Max)) { GetCaster()->CastSpell(GetCaster(), SPELL_PRIEST_ANGELIC_FEATHER_AURA, true); } @@ -1851,7 +1851,7 @@ struct areatrigger_pri_entropic_rift : public AreaTriggerAI if (ObjectGuid const* targetGUID = std::any_cast(&creatingSpell->m_customArg)) at->SetPathTarget(*targetGUID); - _searchRadius = creatingSpell->GetSpellInfo()->GetMaxRange(); + _searchRadius = creatingSpell->GetSpellInfo()->GetMinMaxRange(); } caster->CastSpell(caster, SPELL_PRIEST_ENTROPIC_RIFT_AURA, args); @@ -1911,7 +1911,7 @@ struct areatrigger_pri_entropic_rift : public AreaTriggerAI { std::vector targets; Trinity::UnitListSearcher searcher(at, targets, check); - Spell::SearchTargets(searcher, GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER, caster, caster, _searchRadius); + Spell::SearchTargets(searcher, GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER, caster, caster, _searchRadius.Max); Trinity::Containers::EraseIf(targets, [caster](Unit const* target) { return !caster->IsInCombatWith(target); }); if (!targets.empty()) target = Trinity::Containers::SelectRandomContainerElement(targets); @@ -1923,7 +1923,7 @@ struct areatrigger_pri_entropic_rift : public AreaTriggerAI private: TaskScheduler _scheduler; float _movementSpeed = 12.0f; - float _searchRadius = 0.0f; + SpellRange _searchRadius; }; // 414553 - Epiphany @@ -5061,11 +5061,11 @@ class spell_pri_ultimate_penitence_channel : public AuraScript { Unit* caster = GetTarget(); - float maxRange = spellInfo->GetMaxRange(true, caster); + SpellRange range = spellInfo->GetMinMaxRange(true, caster); - Trinity::WorldObjectSpellAreaTargetCheck check(maxRange, caster, caster, caster, spellInfo, checkType, spellEffect.ImplicitTargetConditions.get(), TARGET_OBJECT_TYPE_UNIT); + Trinity::WorldObjectSpellAreaTargetCheck check(range, caster, caster, caster, spellInfo, checkType, spellEffect.ImplicitTargetConditions.get(), TARGET_OBJECT_TYPE_UNIT); Trinity::WorldObjectListSearcher searcher(caster->GetPhaseShift(), targets, check, containerTypeMask); - Spell::SearchTargets(searcher, containerTypeMask, caster, caster, maxRange + EXTRA_CELL_SEARCH_RADIUS); + Spell::SearchTargets(searcher, containerTypeMask, caster, caster, range.Max + EXTRA_CELL_SEARCH_RADIUS); } return targets; diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index b383a51847044..079a27dd229e3 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -1183,7 +1183,7 @@ class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScript { void ModDest(SpellDestination& dest) { - float dist = GetEffectInfo(EFFECT_0).CalcRadius(GetCaster()); + float dist = GetEffectInfo(EFFECT_0).CalcRadius(GetCaster()).Max; float angle = frand(0.75f, 1.25f) * float(M_PI); Position pos = GetCaster()->GetNearPosition(dist, angle); diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index 8091935bbc1ad..8e9754989ba0e 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -2253,7 +2253,7 @@ class spell_sha_molten_assault : public SpellScript float range = 10.0f; std::vector targets; - Trinity::WorldObjectSpellAreaTargetCheck check(range, lavaLashTarget, caster, caster, sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_FLAME_SHOCK, DIFFICULTY_NONE), + Trinity::WorldObjectSpellAreaTargetCheck check({ .Max = range }, lavaLashTarget, caster, caster, sSpellMgr->AssertSpellInfo(SPELL_SHAMAN_FLAME_SHOCK, DIFFICULTY_NONE), TARGET_CHECK_ENEMY, nullptr, TARGET_OBJECT_TYPE_UNIT, Trinity::WorldObjectSpellAreaTargetSearchReason::Area); Trinity::WorldObjectListSearcher searcher(caster, targets, check, GRID_MAP_TYPE_MASK_CREATURE | GRID_MAP_TYPE_MASK_PLAYER); Cell::VisitAllObjects(lavaLashTarget, searcher, range + EXTRA_CELL_SEARCH_RADIUS); From f4c0cc8254876890f8f3f3b765f57e6586ea58e6 Mon Sep 17 00:00:00 2001 From: Aqua Deus <95978183+aquadeus@users.noreply.github.com> Date: Sun, 26 Apr 2026 20:53:06 +0200 Subject: [PATCH 096/175] Scripts/Spells: Implement demon hunter talent "Moment of Craving" (#31731) --- .../world/master/2026_04_26_00_world.sql | 7 ++++ src/server/scripts/Spells/spell_dh.cpp | 33 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 sql/updates/world/master/2026_04_26_00_world.sql diff --git a/sql/updates/world/master/2026_04_26_00_world.sql b/sql/updates/world/master/2026_04_26_00_world.sql new file mode 100644 index 0000000000000..0435039cb6f49 --- /dev/null +++ b/sql/updates/world/master/2026_04_26_00_world.sql @@ -0,0 +1,7 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_dh_moment_of_craving'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(473728, 'spell_dh_moment_of_craving'); + +DELETE FROM `spell_proc` WHERE `SpellId` IN (1238495); +INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES +(1238495,0x00,107,0x00000000,0x00000000,0x00000000,0x00000008,0x0,0x0,0x1,0x2,0x0,0x12,0x0,0,0,0,0); -- Moment of Craving diff --git a/src/server/scripts/Spells/spell_dh.cpp b/src/server/scripts/Spells/spell_dh.cpp index a986ea2b2bc1d..b07ebee793025 100644 --- a/src/server/scripts/Spells/spell_dh.cpp +++ b/src/server/scripts/Spells/spell_dh.cpp @@ -160,6 +160,8 @@ enum DemonHunterSpells SPELL_DH_METAMORPHOSIS_TRANSFORM = 162264, SPELL_DH_METAMORPHOSIS_VENGEANCE_TRANSFORM = 187827, SPELL_DH_MOMENTUM = 208628, + SPELL_DH_MOMENT_OF_CRAVING_TALENT = 1238488, + SPELL_DH_MOMENT_OF_CRAVING_BUFF = 1238495, SPELL_DH_MONSTER_RISING_AGILITY = 452550, SPELL_DH_NEMESIS_ABERRATIONS = 208607, SPELL_DH_NEMESIS_BEASTS = 208608, @@ -177,6 +179,7 @@ enum DemonHunterSpells SPELL_DH_RAIN_OF_CHAOS = 205628, SPELL_DH_RAIN_OF_CHAOS_IMPACT = 232538, SPELL_DH_RAZOR_SPIKES = 210003, + SPELL_DH_REAP = 1226019, SPELL_DH_REAP_DAMAGE = 1225823, SPELL_DH_REPEAT_DECREE_CONDUIT = 339895, SPELL_DH_RESTLESS_HUNTER_TALENT = 390142, @@ -1624,6 +1627,35 @@ class spell_dh_last_resort : public AuraScript } }; +// 1238488 - Moment of Craving (attached to 473728 - Void Ray) +class spell_dh_moment_of_craving : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DH_MOMENT_OF_CRAVING_TALENT, SPELL_DH_MOMENT_OF_CRAVING_BUFF, SPELL_DH_REAP }); + } + + bool Load() override + { + return GetUnitOwner()->HasAura(SPELL_DH_MOMENT_OF_CRAVING_TALENT); + } + + void HandleAfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) const + { + if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) + return; + + Unit* target = GetTarget(); + target->GetSpellHistory()->RestoreCharge(sSpellMgr->AssertSpellInfo(SPELL_DH_REAP, GetCastDifficulty())->ChargeCategoryId); + target->CastSpell(target, SPELL_DH_MOMENT_OF_CRAVING_BUFF, TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_dh_moment_of_craving::HandleAfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL, AURA_EFFECT_HANDLE_REAL); + } +}; + // 452414 - Monster Rising class spell_dh_monster_rising : public AuraScript { @@ -2806,6 +2838,7 @@ void AddSC_demon_hunter_spell_scripts() RegisterAreaTriggerAI(at_dh_inner_demon); RegisterSpellScript(spell_dh_know_your_enemy); RegisterSpellScript(spell_dh_last_resort); + RegisterSpellScript(spell_dh_moment_of_craving); RegisterSpellScript(spell_dh_monster_rising); RegisterSpellScript(spell_dh_painbringer); RegisterSpellScript(spell_dh_painbringer_reduce_damage); From 8577c2e9fcf081f6b373dc63dc7861498d804a67 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 27 Apr 2026 19:37:48 +0200 Subject: [PATCH 097/175] Core/Players: Fixed crash happening on character creation when StartPlayerLevel is set to a value greater than 10 --- src/server/game/Entities/Player/Player.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index cca76a641509e..41ca64766fed6 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -515,6 +515,12 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac ab.SetActionAndType(action_itr->action, ActionButtonType(action_itr->type)); } + if (ChrSpecializationEntry const* defaultSpec = sDB2Manager.GetDefaultChrSpecializationForClass(GetClass())) + { + SetActiveTalentGroup(defaultSpec->OrderIndex); + SetPrimarySpecialization(defaultSpec->ID); + } + EquipTransmogOutfit(0, TransmogSituationTrigger::Manual, false); // original items @@ -552,12 +558,6 @@ bool Player::Create(ObjectGuid::LowType guidlow, WorldPackets::Character::Charac } // all item positions resolved - if (ChrSpecializationEntry const* defaultSpec = sDB2Manager.GetDefaultChrSpecializationForClass(GetClass())) - { - SetActiveTalentGroup(defaultSpec->OrderIndex); - SetPrimarySpecialization(defaultSpec->ID); - } - GetThreatManager().Initialize(); return true; From 97a2b42fdf37415500c46d51d0e1670082efb153 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 28 Apr 2026 00:18:00 +0200 Subject: [PATCH 098/175] Core/Players:: Improve trait config validation and implement new condition type used for apex talents --- src/server/game/DataStores/DBCEnums.h | 3 +- src/server/game/Spells/TraitMgr.cpp | 114 ++++++++++++++++++++------ 2 files changed, 90 insertions(+), 27 deletions(-) diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 5c85d44cc42a1..571154cf977c3 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -2843,7 +2843,8 @@ enum class TraitConditionType : int32 Visible = 1, Granted = 2, Increased = 3, - DisplayError = 4 + DisplayError = 4, + RanksAllowed = 5 }; enum class TraitConfigType : int32 diff --git a/src/server/game/Spells/TraitMgr.cpp b/src/server/game/Spells/TraitMgr.cpp index 835f74a77ebb7..c59f4b74c3411 100644 --- a/src/server/game/Spells/TraitMgr.cpp +++ b/src/server/game/Spells/TraitMgr.cpp @@ -569,6 +569,36 @@ std::span GetSubTreeCurrency(int32 traitSubTree return subTree->Currencies; } +struct TraitNodeRankCounts +{ + int32 Group = 0; + int32 Node = 0; + int32 Entry = 0; +}; + +TraitNodeRankCounts CountTraitNodeRanks(WorldPackets::Traits::TraitConfig const& traitConfig, int32 traitNodeGroupId, int32 traitNodeId, int32 traitNodeEntryId) +{ + TraitNodeRankCounts ranks; + for (WorldPackets::Traits::TraitEntry const& traitEntry : traitConfig.Entries) + { + Node const* node = Trinity::Containers::MapGetValuePtr(_traitNodes, traitEntry.TraitNodeID); + if (traitNodeGroupId) + { + auto groupItr = std::ranges::find(node->Groups, uint32(traitNodeGroupId), [](NodeGroup const* group) { return group->Data->ID; }); + if (groupItr != node->Groups.end()) + ranks.Group += traitEntry.Rank; + } + + if (traitNodeId == traitEntry.TraitNodeID) + ranks.Node += traitEntry.Rank; + + if (traitNodeEntryId == traitEntry.TraitNodeEntryID) + ranks.Entry += traitEntry.Rank; + } + + return ranks; +} + bool MeetsTraitCondition(WorldPackets::Traits::TraitConfig const& traitConfig, PlayerDataAccessor player, TraitCondEntry const* condition, Optional>& cachedCurrencies) { @@ -588,7 +618,7 @@ bool MeetsTraitCondition(WorldPackets::Traits::TraitConfig const& traitConfig, P return false; } - if (condition->TraitCurrencyID && condition->SpentAmountRequired) + if (sTraitCurrencyStore.HasRecord(condition->TraitCurrencyID)) { if (!cachedCurrencies) FillSpentCurrenciesMap(traitConfig.Entries, cachedCurrencies.emplace()); @@ -606,6 +636,17 @@ bool MeetsTraitCondition(WorldPackets::Traits::TraitConfig const& traitConfig, P return false; } } + else + { + if (condition->TraitNodeGroupID || condition->TraitNodeID || condition->TraitNodeEntryID) + { + TraitNodeRankCounts ranks = CountTraitNodeRanks(traitConfig, condition->TraitNodeGroupID, condition->TraitNodeID, condition->TraitNodeEntryID); + if (ranks.Group != condition->SpentAmountRequired + && ranks.Node != condition->SpentAmountRequired + && ranks.Entry != condition->SpentAmountRequired) + return false; + } + } if (condition->RequiredLevel && player.GetLevel() < condition->RequiredLevel) return false; @@ -637,19 +678,31 @@ bool MeetsTraitCondition(WorldPackets::Traits::TraitConfig const& traitConfig, P bool NodeMeetsTraitConditions(WorldPackets::Traits::TraitConfig const& traitConfig, Node const* node, uint32 traitNodeEntryId, PlayerDataAccessor player, Optional>& spentCurrencies) { - auto meetsConditions = [&](std::vector const& conditions, TraitConditionType conditionType) + struct ConditionCheckResult { - struct - { - bool IsSufficient = false; - bool HasFailedConditions = false; - } result; + bool IsSufficient = false; + bool HasFailedConditions = false; + }; + + auto meetsConditions = [&traitConfig, player, &spentCurrencies] RankSupplier>(std::vector const& conditions, TraitConditionType conditionType, RankSupplier getRank) -> ConditionCheckResult + { + ConditionCheckResult result; + Optional rank; for (TraitCondEntry const* condition : conditions) { if (condition->GetCondType() != conditionType) continue; + if (conditionType == TraitConditionType::RanksAllowed) + { + if (!rank.has_value()) + rank = getRank(); + + if (*rank < condition->GrantedRanks) + continue; + } + if (!MeetsTraitCondition(traitConfig, player, condition, spentCurrencies)) { result.HasFailedConditions = true; @@ -669,36 +722,42 @@ bool NodeMeetsTraitConditions(WorldPackets::Traits::TraitConfig const& traitConf auto meetsConditionsOfType = [&](TraitConditionType conditionType) { bool hasFailedConditions = false; - if (auto [IsSufficient, HasFailedConditions] = meetsConditions(node->Conditions, conditionType); IsSufficient) + ConditionCheckResult result = meetsConditions(node->Conditions, conditionType, [&] { return CountTraitNodeRanks(traitConfig, 0, node->Data->ID, traitNodeEntryId).Node; }); + if (result.IsSufficient) return true; - else if (HasFailedConditions) + else if (result.HasFailedConditions) hasFailedConditions = true; for (NodeGroup const* group : node->Groups) { - auto [IsSufficient, HasFailedConditions] = meetsConditions(group->Conditions, conditionType); - if (IsSufficient) + if (group->Conditions.empty()) + continue; + + result = meetsConditions(group->Conditions, conditionType, [&]{ return CountTraitNodeRanks(traitConfig, group->Data->ID, node->Data->ID, traitNodeEntryId).Group; }); + if (result.IsSufficient) return true; - if (HasFailedConditions) + if (result.HasFailedConditions) hasFailedConditions = true; } for (NodeEntry const& entry : node->Entries) { - if (entry.Data->ID == traitNodeEntryId) - { - auto [IsSufficient, HasFailedConditions] = meetsConditions(entry.Conditions, conditionType); - if (IsSufficient) - return true; - if (HasFailedConditions) - hasFailedConditions = true; - } + if (entry.Data->ID != traitNodeEntryId || entry.Conditions.empty()) + continue; + + result = meetsConditions(entry.Conditions, conditionType, [&] { return CountTraitNodeRanks(traitConfig, 0, node->Data->ID, traitNodeEntryId).Entry; }); + if (result.IsSufficient) + return true; + if (result.HasFailedConditions) + hasFailedConditions = true; } return !hasFailedConditions; }; - return meetsConditionsOfType(TraitConditionType::Visible) && meetsConditionsOfType(TraitConditionType::Available); + return meetsConditionsOfType(TraitConditionType::Visible) + && meetsConditionsOfType(TraitConditionType::Available) + && meetsConditionsOfType(TraitConditionType::RanksAllowed); } std::vector GetGrantedTraitEntriesForConfig(WorldPackets::Traits::TraitConfig const& traitConfig, PlayerDataAccessor player) @@ -734,20 +793,23 @@ std::vector GetGrantedTraitEntriesForConfig(WorldPackets::Traits for (Node const* node : tree->Nodes) { for (NodeEntry const& entry : node->Entries) - for (TraitCondEntry const* condition : entry.Conditions) - if (condition->GetCondType() == TraitConditionType::Granted && MeetsTraitCondition(traitConfig, player, condition, cachedCurrencies)) - addGrantedRankToEntry(node->Data->ID, entry, condition->GrantedRanks); + if (NodeMeetsTraitConditions(traitConfig, node, entry.Data->ID, player, cachedCurrencies)) + for (TraitCondEntry const* condition : entry.Conditions) + if (condition->GetCondType() == TraitConditionType::Granted && MeetsTraitCondition(traitConfig, player, condition, cachedCurrencies)) + addGrantedRankToEntry(node->Data->ID, entry, condition->GrantedRanks); for (TraitCondEntry const* condition : node->Conditions) if (condition->GetCondType() == TraitConditionType::Granted && MeetsTraitCondition(traitConfig, player, condition, cachedCurrencies)) for (NodeEntry const& entry : node->Entries) - addGrantedRankToEntry(node->Data->ID, entry, condition->GrantedRanks); + if (NodeMeetsTraitConditions(traitConfig, node, entry.Data->ID, player, cachedCurrencies)) + addGrantedRankToEntry(node->Data->ID, entry, condition->GrantedRanks); for (NodeGroup const* group : node->Groups) for (TraitCondEntry const* condition : group->Conditions) if (condition->GetCondType() == TraitConditionType::Granted && MeetsTraitCondition(traitConfig, player, condition, cachedCurrencies)) for (NodeEntry const& entry : node->Entries) - addGrantedRankToEntry(node->Data->ID, entry, condition->GrantedRanks); + if (NodeMeetsTraitConditions(traitConfig, node, entry.Data->ID, player, cachedCurrencies)) + addGrantedRankToEntry(node->Data->ID, entry, condition->GrantedRanks); } } From 14f2802596ee827c76096f374fec25b05d6bd88f Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:17:54 +0200 Subject: [PATCH 099/175] DB/Hotfixes: Updated hotfixes to 12.0.5.67186 --- .../master/2026_04_29_00_hotfixes_enUS.sql | 13443 ++++++++++++++++ 1 file changed, 13443 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_00_hotfixes_enUS.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_00_hotfixes_enUS.sql b/sql/updates/hotfixes/master/2026_04_29_00_hotfixes_enUS.sql new file mode 100644 index 0000000000000..9a16db9c0360a --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_00_hotfixes_enUS.sql @@ -0,0 +1,13443 @@ +-- +DELETE FROM `achievement` WHERE `VerifiedBuild`>0 AND `ID` IN (62773, 61883, 61887, 61886, 61882, 61881, 61880, 61879, 61878, 61793, 61792, 63263, 63097, 61594, 61593, 61592, 61591, 61590, 61589, 61588, 61587, 61259, 61253, 61252, 61251, 61250, 61249, 61248, 61247, 61246, 61245, 61244, 61243, 61242, 61241, 61240, 61239, 61237, 61236, 61235, 61233, 12009, 12005, 12004, 9036, 9035, 9034, 9033, 4525, 4524, 62814, 62813, 62812, 62811, 62296, 42769); +INSERT INTO `achievement` (`Description`, `Title`, `Reward`, `ID`, `InstanceID`, `Faction`, `Supercedes`, `Category`, `MinimumCriteria`, `Points`, `Flags`, `UiOrder`, `IconFileID`, `RewardItemID`, `CriteriaTree`, `SharesCriteria`, `CovenantID`, `HiddenBeforeDisplaySeason`, `LegacyAfterTimeEvent`, `VerifiedBuild`) VALUES +('Complete each of the Abyss Anglers Achievements listed.', 'Abyss Anglers: Jeju\'s New Rival', '', 62773, -1, -1, 0, 15553, 0, 10, 131072, 101, 236572, 0, 225614, 0, 0, 0, 0, 67186), +('Don\'t get tagged in the first minute of Decor Duel (x3).', 'Now You Don\'t See Me...', '', 61883, -1, -1, 0, 15574, 0, 10, 131072, 8, 1392559, 0, 220966, 0, 0, 0, 0, 67186), +('Complete all the Decor Duel Achievements.', 'Disguised to the Nines', '', 61887, -1, -1, 0, 15574, 0, 10, 131072, 10, 1392559, 0, 220970, 0, 0, 0, 0, 67186), +('Acquire access to all Kit Upgrades in Decor Duel.', 'The Whole Kit and Caboodle', '', 61886, -1, -1, 0, 15574, 0, 10, 131072, 9, 1392559, 0, 220968, 0, 0, 0, 0, 67186), +('Successfully lose the Found status without being tagged in Decor Duel.', 'Null and Avoided', '', 61882, -1, -1, 0, 15574, 0, 10, 131072, 7, 1392559, 0, 220964, 0, 0, 0, 0, 67186), +('Be the last untagged hider on your team in Decor Duel.', 'Hide and Peekless', '', 61881, -1, -1, 0, 15574, 0, 10, 131072, 6, 1392559, 0, 220962, 0, 0, 0, 0, 67186), +('Hide and stay unfound for one and a half consecutive minutes in Decor Duel.', 'It\'s Cold Here in This Shadow', '', 61880, -1, -1, 0, 15574, 0, 10, 131072, 5, 1392559, 0, 220960, 0, 0, 0, 0, 67186), +('Win a round as a Seeker with all hiders getting tagged within two minutes in Decor Duel.', 'You\'re It', '', 61879, -1, -1, 0, 15574, 0, 10, 131072, 4, 1392559, 0, 220958, 0, 0, 0, 0, 67186), +('Successfully tag opposing players as an Arcane Ranger in Decor Duel.', 'Tagged and Bagged', '', 61878, -1, -1, 0, 15574, 0, 10, 131072, 3, 1392559, 0, 220956, 0, 0, 0, 0, 67186), +('Successfully tag opposing players as a Nullifier in Decor Duel.', 'Deployed to the Void', '', 61793, -1, -1, 0, 15574, 0, 10, 131072, 2, 1392559, 0, 220954, 0, 0, 0, 0, 67186), +('Successfully tag opposing players as a Spellbreaker in Decor Duel.', 'T-A-G that spells \"Gotcha!\"', '', 61792, -1, -1, 0, 15574, 0, 10, 131072, 1, 1392559, 0, 220724, 0, 0, 0, 0, 67186), +('', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 63263, -1, -1, 0, 15272, 0, 0, 9437188, 227, 136243, 0, 228514, 0, 0, 0, 0, 67186), +('Attain a Mythic+ Rating of at least 3400 during Midnight Season One.', 'Midnight Keystone Myth: Season One', 'Title: The Umbral Contender & Item: Timelost Saddle', 63097, -1, -1, 61258, 15272, 0, 0, 133120, 189, 648753, 0, 229048, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Skyreach.', 'Keystone Victor: Skyreach', '', 61594, -1, -1, 0, 15272, 0, 0, 6144, 217, 1002596, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Seat of the Triumvirate.', 'Keystone Victor: Seat of the Triumvirate', '', 61593, -1, -1, 0, 15272, 0, 0, 6144, 216, 1711340, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Pit of Saron.', 'Keystone Victor: Pit of Saron', '', 61592, -1, -1, 0, 15272, 0, 0, 6144, 215, 343641, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Algeth\'ar Academy.', 'Keystone Victor: Algeth\'ar Academy', '', 61591, -1, -1, 0, 15272, 0, 0, 6144, 214, 4578414, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Windrunner Spire.', 'Keystone Victor: Windrunner Spire', '', 61590, -1, -1, 0, 15272, 0, 0, 6144, 213, 7266215, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Nexus-Point Xenas.', 'Keystone Victor: Nexus-Point Xenas', '', 61589, -1, -1, 0, 15272, 0, 0, 6144, 212, 7439626, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Maisara Caverns.', 'Keystone Victor: Maisara Caverns', '', 61588, -1, -1, 0, 15272, 0, 0, 6144, 211, 7322719, 0, 0, 0, 0, 0, 0, 67186), +('Attain a region-best keystone dungeon completion for Magisters\' Terrace (Midnight).', 'Keystone Victor: Magisters\' Terrace (Midnight)', '', 61587, -1, -1, 0, 15272, 0, 0, 6144, 210, 7439625, 0, 0, 0, 0, 0, 0, 67186), +('End Midnight Mythic+ Season 1 with a Mythic+ Rating in the top 0.1% of all players in your region.', 'Umbral Hero: Midnight Season One', 'Title: The Umbral Hero', 61259, -1, -1, 0, 15272, 0, 0, 14336, 190, 618859, 0, 216634, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 30 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 30', 'Keystones will no longer deplete below level 30 during Midnight Season 1.', 61253, -1, -1, 0, 15272, 0, 0, 2048, 209, 648754, 0, 216615, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 29 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 29', 'Keystones will no longer deplete below level 29 during Midnight Season 1.', 61252, -1, -1, 0, 15272, 0, 0, 2048, 208, 648754, 0, 216606, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 28 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 28', 'Keystones will no longer deplete below level 28 during Midnight Season 1.', 61251, -1, -1, 0, 15272, 0, 0, 2048, 207, 648754, 0, 216597, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 27 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 27', 'Keystones will no longer deplete below level 27 during Midnight Season 1.', 61250, -1, -1, 0, 15272, 0, 0, 2048, 206, 648754, 0, 216588, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 26 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 26', 'Keystones will no longer deplete below level 26 during Midnight Season 1.', 61249, -1, -1, 0, 15272, 0, 0, 2048, 205, 648754, 0, 216579, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 25 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 25', 'Keystones will no longer deplete below level 25 during Midnight Season 1.', 61248, -1, -1, 0, 15272, 0, 0, 2048, 204, 648754, 0, 216570, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 24 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 24', 'Keystones will no longer deplete below level 24 during Midnight Season 1.', 61247, -1, -1, 0, 15272, 0, 0, 2048, 203, 648754, 0, 216561, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 23 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 23', 'Keystones will no longer deplete below level 23 during Midnight Season 1.', 61246, -1, -1, 0, 15272, 0, 0, 2048, 202, 648754, 0, 216552, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 22 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 22', 'Keystones will no longer deplete below level 22 during Midnight Season 1.', 61245, -1, -1, 0, 15272, 0, 0, 2048, 201, 648754, 0, 216543, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 21 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 21', 'Keystones will no longer deplete below level 21 during Midnight Season 1.', 61244, -1, -1, 0, 15272, 0, 0, 2048, 200, 648754, 0, 216534, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 20 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 20', 'Keystones will no longer deplete below level 20 during Midnight Season 1.', 61243, -1, -1, 0, 15272, 0, 0, 2048, 199, 648754, 0, 216525, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 19 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 19', 'Keystones will no longer deplete below level 19 during Midnight Season 1.', 61242, -1, -1, 0, 15272, 0, 0, 2048, 198, 648754, 0, 216516, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 18 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 18', 'Keystones will no longer deplete below level 18 during Midnight Season 1.', 61241, -1, -1, 0, 15272, 0, 0, 2048, 197, 648754, 0, 216507, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 17 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 17', 'Keystones will no longer deplete below level 17 during Midnight Season 1.', 61240, -1, -1, 0, 15272, 0, 0, 2048, 196, 648754, 0, 216498, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 16 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 16', 'Keystones will no longer deplete below level 16 during Midnight Season 1.', 61239, -1, -1, 0, 15272, 0, 0, 2048, 195, 648754, 0, 216489, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 15 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 15', 'Keystones will no longer deplete below level 15 during Midnight Season 1.', 61237, -1, -1, 0, 15272, 0, 0, 2048, 194, 648754, 0, 216478, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 14 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 14', 'Keystones will no longer deplete below level 14 during Midnight Season 1.', 61236, -1, -1, 0, 15272, 0, 0, 2048, 193, 648754, 0, 216464, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 13 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 13', 'Keystones will no longer deplete below level 13 during Midnight Season 1.', 61235, -1, -1, 0, 15272, 0, 0, 2048, 192, 648754, 0, 216455, 0, 0, 0, 0, 67186), +('Complete all Mythic+ dungeons within the time limit at keystone level 12 during Midnight Season One.', 'Midnight Season 1: Resilient Keystone 12', 'Keystones will no longer deplete below level 12 during Midnight Season 1.', 61233, -1, -1, 0, 15272, 0, 0, 2048, 191, 648754, 0, 216446, 0, 0, 0, 0, 67186), +('Defeat L\'ura in Seat of the Triumvirate with all party members affected by Crushing Darkness on Mythic Difficulty.', 'Darker Side', '', 12009, 1753, -1, 0, 15272, 0, 0, 2048, 222, 1711336, 0, 60674, 0, 0, 0, 0, 67186), +('Have Darkfang destroy 4 Sealed Void Caches using Shadow Pounce, then defeat Saprish in Seat of the Triumvirate on Mythic Difficulty.', 'Let it All Out', '', 12005, 1753, -1, 0, 15272, 0, 0, 2048, 221, 1097742, 0, 60658, 0, 0, 0, 0, 67186), +('Bring Urjad from the void realm using Void Tear, then defeat him and Zuraal the Ascended in Seat of the Triumvirate on Mythic Difficulty.', 'Welcome the Void', '', 12004, 1753, -1, 0, 15272, 0, 0, 2048, 220, 136221, 0, 60653, 0, 0, 0, 0, 67186), +('Defeat High Sage Viryx without killing any of the Shield Constructs in Skyreach on Heroic difficulty.', 'Monomania', '', 9036, 1209, -1, 0, 15272, 0, 0, 2048, 224, 136158, 0, 36920, 0, 0, 0, 0, 67186), +('Cause three Piles of Ash to form Solar Flares at the same time during the Rukhran encounter in Skyreach on Heroic difficulty.', 'I Saw Solis', '', 9035, 1209, -1, 0, 15272, 0, 0, 2048, 226, 133250, 0, 36848, 0, 0, 0, 0, 67186), +('Defeat the Empowered Construct in Skyreach on Heroic difficulty.', 'Magnify... Enhance', '', 9034, 1209, -1, 0, 15272, 0, 0, 2048, 225, 134442, 0, 36846, 0, 0, 0, 0, 67186), +('Defeat Ranjit without taking damage from any of the following abilities in Skyreach on Heroic difficulty: Spinning Blade, Windwall, Four Winds, Lens Flare.', 'Ready for Raiding IV', '', 9033, 1209, -1, 0, 15272, 0, 0, 2048, 223, 237554, 0, 36833, 0, 0, 0, 0, 67186), +('Clear the hallway before Scourgelord Tyrannus in The Pit of Saron on Heroic Difficulty without anyone taking icicle damage on the first try.', 'Don\'t Look Up', '', 4525, 658, -1, 0, 15272, 0, 0, 2048, 218, 341764, 0, 14697, 0, 0, 0, 0, 67186), +('Defeat Forgemaster Garfrost in The Pit of Saron on Heroic Difficulty before any player gets 11 stacks of Permafrost.', 'Doesn\'t Go to Eleven', '', 4524, 658, -1, 0, 15272, 0, 0, 2048, 219, 342914, 0, 17395, 0, 0, 0, 0, 67186), +('', '[PH] JZB Test Achievement 04', '', 62814, -1, -1, 62813, 15268, 0, 0, 133120, 113, 4635200, 0, 225670, 0, 0, 0, 0, 67186), +('', '[PH] JZB Test Achievement 03', '', 62813, -1, -1, 62812, 15268, 0, 0, 133120, 112, 4635196, 0, 225668, 0, 0, 0, 0, 67186), +('', '[PH] JZB Test Achievement 02', '', 62812, -1, -1, 62811, 15268, 0, 0, 133120, 111, 4635197, 0, 225666, 0, 0, 0, 0, 67186), +('[PH] Description 01', '[PH] JZB Test Achievement 01', '', 62811, -1, -1, 0, 15268, 0, 0, 133120, 110, 4635199, 0, 225664, 0, 0, 0, 0, 67186), +('', 'Myth Dawncrests earned', '', 62296, -1, -1, 0, 130, 0, 0, 1, 75, 136243, 0, 223209, 0, 0, 0, 0, 67186), +('Outgrow the use of Hero Dawncrests during Midnight Season 1.', 'Hero of the Dawn', 'Character Unlock: Trade Hero for Myth Dawncrests', 42769, -1, -1, 42768, 81, 0, 0, 2048, 227, 7639522, 0, 212358, 0, 0, 0, 0, 67186); + +UPDATE `achievement` SET `Description`='Catch a Mythic creature 3 times from Abyss Anglers dives.', `Points`=5, `Flags`=131072, `UiOrder`=111, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62342; +UPDATE `achievement` SET `Description`='Earn 250,000 points in cumulative Abyss Anglers dives.', `Reward`='Reward: Gain an adventurous dive companion', `Flags`=131072, `UiOrder`=113, `IconFileID`=633007, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62272; +UPDATE `achievement` SET `Description`='Catch 100 fish during Abyss Anglers dives.', `Flags`=131072, `UiOrder`=102, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62271; +UPDATE `achievement` SET `Description`='Use your Surface! ability during an Abyss Anglers diver with less than 10 seconds of breath remaining.', `Flags`=131072, `UiOrder`=96, `IconFileID`=136148, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62220; +UPDATE `achievement` SET `Description`='Get forcibly removed from an Abyss Anglers dive while attempting to swim beyond the trench.', `Flags`=131072, `UiOrder`=94, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62219; +UPDATE `achievement` SET `Flags`=131072, `UiOrder`=92, `IconFileID`=132322, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62218; +UPDATE `achievement` SET `Reward`='Reward: Unlock Idol of the Depths for purchase from Depthdiver Tu\'nakit', `Flags`=131072, `UiOrder`=91, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62217; +UPDATE `achievement` SET `UiOrder`=90, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62216; +UPDATE `achievement` SET `UiOrder`=89, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62215; +UPDATE `achievement` SET `Description`='Discover 10 Ancient Relics throughout your Abyss Anglers dives, and acquire the Shallows Net upgrade.', `Reward`='Reward: Unlock Triple-Thread Net for purchase from Depthdiver Jeju', `Flags`=131072, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62214; +UPDATE `achievement` SET `Description`='Discover 50 Sunken Relics throughout your Abyss Anglers dives.', `Reward`='Reward: Unlock Shallows Net for purchase from Depthdiver Jeju', `Flags`=131072, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62213; +UPDATE `achievement` SET `Description`='Collect each of the creatures listed below during Abyss Anglers dives, and acquire teh Fathom-Tested Tank.', `Reward`='Reward: Unlock Nalorakk\'s Breath Tank for purchase from Depthdiver Jeju', `Flags`=131072, `UiOrder`=82, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62212; +UPDATE `achievement` SET `Description`='Collect each of the creatures listed below during Abyss Anglers dives, and acquire the Depthdiver\'s Used Tank upgrade.', `Reward`='Reward: Unlock Fathom-Tested Tank for purchase from Depthdiver Jeju', `Flags`=131072, `UiOrder`=81, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62211; +UPDATE `achievement` SET `Description`='Collect each of the creatures listed below during Abyss Anglers dives.', `Reward`='Reward: Unlock Depthdiver\'s Used Tank for purchase from Depthdiver Jeju', `Flags`=131072, `UiOrder`=80, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62210; +UPDATE `achievement` SET `Description`='Catch at least 500 fish from Abyss Angler dives, and acquire the Depth Grease upgrade.', `Reward`='Reward: Unlock Pahk Trench Fins for purchase from Depthdiver Jeju', `Flags`=131072, `UiOrder`=79, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62209; +UPDATE `achievement` SET `Description`='Catch at least 25 fish during a single Abyss Anglers dive, and acquire the Reinforced Joints upgrade.', `Reward`='Reward: Unlock Depth Grease for purchase from Depthdiver Jeju', `Flags`=131072, `UiOrder`=78, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62208; +UPDATE `achievement` SET `Description`='Catch at least 3 fish during Abyss Anglers dives.', `Reward`='Reward: Unlock Reinforced Joints for purchase from Depthdiver Jeju', `Flags`=131072, `UiOrder`=77, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=62207; +DELETE FROM `area_group_member` WHERE `VerifiedBuild`>0 AND `ID` IN (42555, 42554); +INSERT INTO `area_group_member` (`ID`, `AreaID`, `AreaGroupID`, `VerifiedBuild`) VALUES +(42555, 9657, 9126, 67186), +(42554, 8961, 9126, 67186); + +DELETE FROM `area_trigger_action_set` WHERE `VerifiedBuild`>0 AND `ID` IN (42116, 42115, 42112); +INSERT INTO `area_trigger_action_set` (`ID`, `Flags`, `VerifiedBuild`) VALUES +(42116, 16, 67186), +(42115, 16, 67186), +(42112, 16, 67186); + +UPDATE `area_trigger_action_set` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=42970; +DELETE FROM `battle_pet_species` WHERE `VerifiedBuild`>0 AND `ID`=5065; +INSERT INTO `battle_pet_species` (`Description`, `SourceText`, `ID`, `CreatureID`, `SummonSpellID`, `IconFileDataID`, `PetTypeEnum`, `Flags`, `SourceTypeEnum`, `CardUIModelSceneID`, `LoadoutUIModelSceneID`, `CovenantID`, `VerifiedBuild`) VALUES +('A true Abyss Angler, certified by Depthdiver Jeju himself.', '|cFFFFD200Vendor: |rDepthdiver Tu\'nakit|n|cFFFFD200Zone: |rZul\'Aman|n|cFFFFD200Cost: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 5065, 264933, 1293499, 2205592, 4, 154, 10, 6, 7, 0, 67186); + +DELETE FROM `broadcast_text` WHERE `VerifiedBuild`>0 AND `ID` IN (309753, 289969); +INSERT INTO `broadcast_text` (`Text`, `Text1`, `ID`, `LanguageID`, `ConditionID`, `EmotesID`, `Flags`, `ChatBubbleDurationMs`, `VoiceOverPriorityID`, `SoundKitID1`, `SoundKitID2`, `EmoteID1`, `EmoteID2`, `EmoteID3`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `VerifiedBuild`) VALUES +('Which stat would you like to measure?', 'Which stat would you like to measure?', 309753, 0, 0, 0, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +('I have lost enough of my own kin at the hands of the Silver Covenant. \n\nIt was war, they tell me. Both sides took losses, they say. My Sunreavers never purged anyone from Dalaran. \n\nOne Windrunner met her justice for purging a city. The other faces me today.', '', 289969, 0, 0, 0, 256, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +UPDATE `broadcast_text` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (308983, 308778, 308501, 307197, 306852, 306851, 305742, 305450, 304509, 304508, 304505, 303990, 303988, 303870, 303530, 303469, 302008, 301005, 300642, 300632, 299668, 299666, 298821, 296530, 296471, 296185, 296020, 295738, 295405, 295258, 293787, 293774, 293748, 293576, 292410, 291754, 291236, 289399, 288359, 288133, 287914, 287852, 287847, 287600, 286257, 247439, 239474, 273277, 272911, 295984, 308821, 301657, 299055, 297004, 296930, 295985, 295318, 294283, 294167, 293822, 291856, 291853, 291585, 290937, 288987, 283177, 273965); +DELETE FROM `char_titles` WHERE `VerifiedBuild`>0 AND `ID` IN (1306, 1307); +INSERT INTO `char_titles` (`ID`, `Name`, `Name1`, `MaskID`, `Flags`, `VerifiedBuild`) VALUES +(1306, 'Void Breacher %s', 'Void Breacher %s', 772, 0, 67186), +(1307, '%s the Umbral Contender', '%s the Umbral Contender', 773, 0, 67186); + +DELETE FROM `chr_customization_choice` WHERE `VerifiedBuild`>0 AND `ID` IN (62822, 62821, 62820, 62819, 62818, 62817); +INSERT INTO `chr_customization_choice` (`Name`, `ID`, `ChrCustomizationOptionID`, `ChrCustomizationReqID`, `ChrCustomizationVisReqID`, `SortOrder`, `UiOrderIndex`, `Flags`, `AddedInPatch`, `SoundKitID`, `SwatchColor1`, `SwatchColor2`, `VerifiedBuild`) VALUES +('', 62822, 579, 4602, 0, 143, 105, 0, 120100, 0, -16747025, 0, 67186), +('', 62821, 578, 4601, 0, 143, 105, 0, 120100, 0, -16747025, 0, 67186), +('', 62820, 572, 668, 0, 152, 105, 0, 120100, 0, -16747025, 0, 67186), +('', 62819, 571, 664, 0, 152, 105, 0, 120100, 0, -16747025, 0, 67186), +('', 62818, 683, 657, 0, 150, 72, 0, 120100, 0, -16747025, 0, 67186), +('', 62817, 682, 647, 0, 150, 73, 0, 120100, 0, -16747025, 0, 67186); + +DELETE FROM `chr_customization_element` WHERE `VerifiedBuild`>0 AND `ID` IN (205384, 206050, 206049, 206048, 206047, 206046); +INSERT INTO `chr_customization_element` (`ID`, `ChrCustomizationChoiceID`, `RelatedChrCustomizationChoiceID`, `ChrCustomizationGeosetID`, `ChrCustomizationSkinnedModelID`, `ChrCustomizationMaterialID`, `ChrCustomizationBoneSetID`, `ChrCustomizationCondModelID`, `ChrCustomizationDisplayInfoID`, `ChrCustItemGeoModifyID`, `ChrCustomizationVoiceID`, `AnimKitID`, `ParticleColorID`, `ChrCustGeoComponentLinkID`, `VerifiedBuild`) VALUES +(205384, 795, 0, 0, 0, 104975, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(206050, 62518, 0, 0, 0, 104737, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(206049, 62517, 0, 0, 0, 104736, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(206048, 62516, 0, 0, 0, 104735, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(206047, 62515, 0, 0, 0, 104734, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(206046, 62514, 0, 0, 0, 104733, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `chr_customization_option` WHERE `VerifiedBuild`>0 AND `ID` IN (8960, 8959, 8958, 8957, 8956, 8955, 8954, 8953); +INSERT INTO `chr_customization_option` (`Name`, `ID`, `SecondaryID`, `Flags`, `ChrModelID`, `SortIndex`, `ChrCustomizationCategoryID`, `OptionType`, `BarberShopCostModifier`, `ChrCustomizationID`, `ChrCustomizationReqID`, `UiOrderIndex`, `AddedInPatch`, `VerifiedBuild`) VALUES +('Tattoo Color', 8960, 1478, 11, 58, 24, 5, 0, 0, 35, 0, 16, 120000, 67186), +('Tattoo', 8959, 1477, 9, 58, 23, 5, 0, 0, 34, 0, 15, 120000, 67186), +('Blindfold', 8958, 1476, 8, 58, 7, 23, 0, 0, 8, 0, 14, 120000, 67186), +('Horns', 8957, 1475, 8, 58, 5, 23, 0, 0, 7, 0, 13, 120000, 67186), +('Tattoo Color', 8956, 1474, 11, 57, 12, 5, 0, 0, 35, 0, 15, 120000, 67186), +('Tattoo', 8955, 1473, 9, 57, 11, 5, 0, 0, 34, 0, 14, 120000, 67186), +('Blindfold', 8954, 1472, 8, 57, 9, 23, 0, 0, 8, 0, 13, 120000, 67186), +('Horns', 8953, 1471, 8, 57, 8, 23, 0, 0, 7, 0, 12, 120000, 67186); + +DELETE FROM `content_tuning` WHERE `VerifiedBuild`>0 AND `ID` IN (6069, 442, 7357); +INSERT INTO `content_tuning` (`ID`, `Flags`, `ExpansionID`, `HealthItemLevelCurveID`, `DamageItemLevelCurveID`, `HealthPrimaryStatCurveID`, `DamagePrimaryStatCurveID`, `PrimaryStatScalingModPlayerDataElementCharacterID`, `PrimaryStatScalingModPlayerDataElementCharacterMultiplier`, `MinLevel`, `MaxLevel`, `MinLevelType`, `MaxLevelType`, `TargetLevelDelta`, `TargetLevelMaxDelta`, `TargetLevelMin`, `TargetLevelMax`, `MinItemLevel`, `QuestXpMultiplier`, `VerifiedBuild`) VALUES +(6069, 0, 11, 0, 0, 0, 0, 0, 0, 10, 0, 0, 2, 0, 0, 0, 0, 0, 1, 67186), +(442, 0, 4, 0, 0, 86539, 87161, 0, 0, 10, 0, 0, 2, 0, 0, 0, 0, 0, 1, 67186), +(7357, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 67186); + +DELETE FROM `conversation_line` WHERE `VerifiedBuild`>0 AND `ID` IN (73622, 73621); +INSERT INTO `conversation_line` (`ID`, `BroadcastTextID`, `Unused1020`, `SpellVisualKitID`, `AdditionalDuration`, `NextConversationLineID`, `AnimKitID`, `SpeechType`, `StartAnimation`, `EndAnimation`, `VerifiedBuild`) VALUES +(73622, 273277, 0, 0, 1000, 11586, 36361, 0, 60, 60, 67186), +(73621, 273276, 0, 0, 1000, 0, 36361, 0, 60, 60, 67186); + +DELETE FROM `creature_display_info` WHERE `VerifiedBuild`>0 AND `ID` IN (144756, 144755, 144754, 144753, 144752, 144636, 144347, 144489); +INSERT INTO `creature_display_info` (`ID`, `ModelID`, `SoundID`, `SizeClass`, `CreatureModelScale`, `CreatureModelAlpha`, `BloodID`, `ExtendedDisplayInfoID`, `NPCSoundID`, `ParticleColorID`, `PortraitCreatureDisplayInfoID`, `PortraitTextureFileDataID`, `ObjectEffectPackageID`, `AnimReplacementSetID`, `Flags`, `StateSpellVisualKitID`, `PlayerOverrideScale`, `PetInstanceScale`, `UnarmedWeaponType`, `MountPoofSpellVisualKitID`, `DissolveEffectID`, `Gender`, `DissolveOutEffectID`, `CreatureModelMinLod`, `ConditionalCreatureModelID`, `Unknown_1100_1`, `Unknown_1100_2`, `TextureVariationFileDataID1`, `TextureVariationFileDataID2`, `TextureVariationFileDataID3`, `TextureVariationFileDataID4`, `VerifiedBuild`) VALUES +(144756, 15506, 0, 1, 1.20000004768371582, 255, 0, 0, 0, 0, 0, 0, 2320, 0, 0, 0, 0, 1, -1, 0, 0, 2, 0, 0, 0, 45, 0, 6363056, 6363057, 6363058, 0, 67186), +(144755, 15506, 0, 1, 1.20000004768371582, 255, 0, 0, 0, 0, 0, 0, 2320, 0, 0, 0, 0, 1, -1, 0, 0, 2, 0, 0, 0, 45, 0, 6363050, 6363051, 6363052, 0, 67186), +(144754, 15506, 0, 1, 1.20000004768371582, 255, 0, 0, 0, 0, 0, 0, 2320, 0, 0, 0, 0, 1, -1, 0, 0, 2, 0, 0, 0, 45, 0, 6363047, 6363048, 6363049, 0, 67186), +(144753, 15506, 0, 1, 1.20000004768371582, 255, 0, 0, 0, 0, 0, 0, 2320, 0, 0, 0, 0, 1, -1, 0, 0, 2, 0, 0, 0, 45, 0, 6363044, 6363045, 6363046, 0, 67186), +(144752, 15104, 0, 1, 1, 255, 0, 0, 0, 0, 0, 0, 2217, 0, 0, 0, 0, 0.699999988079071044, -1, 0, 0, 2, 0, 0, 0, 45, 0, 5862942, 5862945, 5862948, 5862951, 67186), +(144636, 16335, 10508, 0, 0.800000011920928955, 255, 0, 0, 0, 2558, 0, 0, 0, 0, 0, 0, 0, 0.699999988079071044, -1, 0, 0, 2, 0, 0, 0, 45, 0, 7151948, 7151954, 7151960, 0, 67186), +(144347, 8575, 0, 1, 1, 255, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, -1, 0, 0, 2, 0, 0, 0, 45, 0, 1859596, 0, 0, 0, 67186), +(144489, 17543, 0, 0, 1.5, 255, 0, 0, 0, 0, 0, 0, 2839, 0, 0, 0, 0, 1, -1, 0, 0, 2, 0, 0, 0, 45, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `creature_display_info_extra` WHERE `VerifiedBuild`>0 AND `ID`=164599; +INSERT INTO `creature_display_info_extra` (`ID`, `DisplayRaceID`, `DisplaySexID`, `DisplayClassID`, `Flags`, `BakeMaterialResourcesID`, `HDBakeMaterialResourcesID`, `VerifiedBuild`) VALUES +(164599, 2, 0, 0, 8, 0, 1106099, 67186); + +DELETE FROM `creature_label` WHERE `VerifiedBuild`>0 AND `ID` IN (90974, 89888); +INSERT INTO `creature_label` (`ID`, `LabelID`, `CreatureDifficultyID`, `VerifiedBuild`) VALUES +(90974, 5963, 350549, 67186), +(89888, 6367, 326924, 67186); + +DELETE FROM `criteria` WHERE `VerifiedBuild`>0 AND `ID` IN (114956, 114964, 114923, 109029, 113757, 113756, 113755, 113015, 112725, 112724, 112723, 112722, 112721, 113465, 114135, 114063, 114062, 114061, 114060, 114059, 114058, 114057, 114056, 114055, 114054, 114053, 114052, 113880, 113879, 113878, 108810, 108809, 108808, 113655, 113654, 112986, 112855, 112740, 112622, 112294, 112293, 112271, 112182, 112160, 111564, 111563, 111249, 111248, 110483, 109959, 109866, 109864, 109799, 109791, 109754, 109668, 109259, 109258, 109105, 108726, 107805, 114029, 114028, 113821, 113946); +INSERT INTO `criteria` (`ID`, `Type`, `Asset`, `ModifierTreeId`, `StartEvent`, `StartAsset`, `StartTimer`, `FailEvent`, `FailAsset`, `Flags`, `EligibilityWorldStateID`, `EligibilityWorldStateValue`, `VerifiedBuild`) VALUES +(114956, 28, 271400, 449815, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114964, 8, 63263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114923, 8, 63097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109029, 230, 0, 414835, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113757, 92, 103756, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113756, 92, 103754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113755, 92, 103755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113015, 92, 102980, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112725, 165, 3180, 30518, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112724, 165, 3178, 30518, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112723, 165, 3179, 30518, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112722, 165, 3177, 30518, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112721, 165, 3176, 30518, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113465, 203, 0, 449167, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114135, 0, 264929, 189609, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114063, 29, 1288771, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114062, 29, 1277090, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114061, 29, 1256869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114060, 29, 1256868, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114059, 29, 1256521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114058, 29, 1288768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114057, 29, 1288766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114056, 29, 1288763, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114055, 29, 1256873, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114054, 29, 1256872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114053, 29, 1256871, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114052, 28, 1277091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113880, 0, 239519, 6708, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113879, 0, 239521, 6708, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113878, 0, 254187, 6708, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(108810, 0, 251551, 6708, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(108809, 0, 252689, 6708, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(108808, 0, 252688, 6708, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113655, 92, 103658, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113654, 92, 100035, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112986, 92, 102930, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112855, 252, 6325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112740, 252, 6306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112622, 92, 102580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112294, 92, 102243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112293, 92, 102242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112271, 92, 102172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112182, 92, 102142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(112160, 92, 102131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(111564, 92, 101891, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(111563, 92, 101783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(111249, 252, 5970, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(111248, 252, 5971, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(110483, 92, 101595, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109959, 92, 101188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109866, 92, 101135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109864, 92, 101134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109799, 0, 259721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109791, 92, 101025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109754, 92, 103018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109668, 0, 254747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109259, 92, 100442, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109258, 92, 100441, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(109105, 92, 100179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(108726, 92, 99963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(107805, 92, 101195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114029, 0, 259387, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(114028, 96, 61087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113821, 273, 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(113946, 11, 15969, 35583, 0, 0, 0, 0, 0, 32, 0, 0, 67186); + +DELETE FROM `criteria_tree` WHERE `VerifiedBuild`>0 AND `ID` IN (229126, 224842, 224840, 224838, 223318, 223121, 223119, 222479, 222477, 222475, 222466, 222453, 222438, 222436, 222434, 222432, 222430, 222428, 222426, 222424, 222422, 222416, 222290, 220967, 220603, 220574, 220573, 212256, 212255, 229140, 229139, 229048, 225427, 225426, 223423, 223697, 223696, 223695, 223693, 219734, 209802, 170782, 228515, 228514, 227753, 227677, 227676, 227675, 227674, 227673, 227672, 227671, 225639, 225638, 225637, 225636, 225635, 225634, 225611, 225610, 225609, 220963, 220961, 220959, 220958, 220957, 220955, 220725, 227430, 223818, 216419, 216418, 216417, 227429, 227428, 225732, 224745, 222969, 222803, 221550, 219955, 219466, 225670, 225668, 225666, 225664, 227206, 223209, 212362); +INSERT INTO `criteria_tree` (`ID`, `Description`, `Parent`, `Amount`, `Operator`, `CriteriaID`, `OrderIndex`, `Flags`, `VerifiedBuild`) VALUES +(229126, '', 222664, 1, 0, 114956, 2, 1, 67186), +(224842, 'Decor Duels Completed', 0, 10, 5, 0, 0, 8193, 67186), +(224840, 'Decor Duels Completed', 0, 5, 5, 0, 0, 8193, 67186), +(224838, 'Decor Duels Completed', 0, 0, 4, 0, 0, 8193, 67186), +(223318, 'Abyss Anglers: The Finest of Fish (3 Mythics)', 0, 0, 4, 0, 0, 1, 67186), +(223121, 'Abyss Anglers: Certified Depthdiver', 0, 0, 4, 0, 0, 0, 67186), +(223119, 'Abyss Anglers: Trench Berserker', 0, 0, 4, 0, 0, 0, 67186), +(222479, 'Abyss Anglers: Proper Procedure', 0, 0, 4, 0, 0, 0, 67186), +(222477, 'Abyss Anglers: No Sea Can Hold Me', 0, 0, 4, 0, 0, 0, 67186), +(222475, 'Abyss Anglers: Even The Best', 0, 0, 4, 0, 0, 0, 67186), +(222466, 'Abyss Anglers: Idol of the Depths', 0, 0, 4, 0, 0, 0, 67186), +(222453, 'Abyss Anglers: Hollowcore Harpoon Turret', 0, 0, 4, 0, 0, 0, 67186), +(222438, 'Abyss Anglers: Heavy Harpoon Cannon', 0, 0, 4, 0, 0, 0, 67186), +(222436, 'Abyss Anglers: Triple-Thread Net', 0, 0, 4, 0, 0, 1, 67186), +(222434, 'Abyss Anglers: Shallows Net', 0, 0, 4, 0, 0, 1, 67186), +(222432, 'Abyss Anglers: Nalorakk\'s Breath Tank', 0, 0, 4, 0, 0, 0, 67186), +(222430, 'Abyss Anglers: Fathom-Tested Tank', 0, 0, 4, 0, 0, 1, 67186), +(222428, 'Abyss Anglers: Depthdiver\'s Used Tank', 0, 0, 4, 0, 0, 0, 67186), +(222426, 'Abyss Anglers: Pahk Trench Fins', 0, 0, 4, 0, 0, 1, 67186), +(222424, 'Abyss Anglers: Depth Grease', 0, 0, 4, 0, 0, 1, 67186), +(222422, 'Abyss Anglers: Reinforced Joints', 0, 0, 4, 0, 0, 1, 67186), +(222416, 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 0, 0, 4, 0, 0, 1, 67186), +(222290, 'Kreynna\'s Khadgar\'s Imitation', 222265, 1, 0, 111958, 2, 0, 67186), +(220967, 'Don\'t get tagged in the first minute of Decor Duel.', 220966, 3, 0, 111215, 0, 2048, 67186), +(220603, 'Bombing Run', 220600, 0, 0, 110987, 2, 16, 67186), +(220574, 'Trapped!', 220572, 0, 0, 111007, 1, 16, 67186), +(220573, 'Party Crasher', 220572, 0, 0, 111006, 0, 16, 67186), +(212256, 'Abyss Angler event completed', 212255, 5, 0, 106325, 0, 1, 67186), +(212255, 'Complete the Abyss Angler event', 0, 0, 4, 0, 0, 0, 67186), +(229140, '', 228514, 0, 1, 114923, 1, 0, 67186), +(229139, '', 229048, 1, 0, 114964, 0, 0, 67186), +(229048, 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 0, 0, 4, 0, 0, 0, 67186), +(225427, 'Defeat Hal\'Hadar forces', 223422, 3, 0, 113757, 2, 32, 67186), +(225426, 'Defeat Hal\'Hadar forces', 223422, 2, 0, 113756, 3, 32, 67186), +(223423, 'Spiritpaw Freed', 223422, 565, 0, 113015, 0, 32, 67186), +(223697, '', 219733, 1, 0, 110480, 5, 2, 67186), +(223696, '', 219733, 1, 0, 112725, 4, 2, 67186), +(223695, '', 219733, 1, 0, 112724, 3, 2, 67186), +(223693, '', 219733, 1, 0, 112722, 1, 2, 67186), +(219734, '', 219733, 1, 0, 112721, 0, 2, 67186), +(209802, 'Equip a Combat Curio to your companion', 0, 1, 8, 0, 0, 4096, 67186), +(170782, 'Equip a Combat Curio to your companion', 0, 1, 8, 0, 0, 4096, 67186), +(228515, 'Rating Requirement', 228514, 3400, 0, 109029, 0, 2, 67186), +(228514, 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 0, 0, 4, 0, 0, 0, 67186), +(227753, '', 222692, 1, 0, 114135, 1, 0, 67186), +(227677, '', 225634, 1, 0, 114063, 11, 32, 67186), +(227676, '', 225634, 1, 0, 114062, 9, 32, 67186), +(227675, '', 225634, 1, 0, 114058, 8, 32, 67186), +(227674, '', 225634, 1, 0, 114057, 7, 32, 67186), +(227673, '', 225634, 1, 0, 114056, 6, 32, 67186), +(227672, '', 225634, 1, 0, 114061, 5, 32, 67186), +(227671, '', 225634, 1, 0, 114052, 10, 32, 67186), +(225639, '', 225634, 1, 0, 114059, 3, 32, 67186), +(225638, '', 225634, 1, 0, 114060, 4, 32, 67186), +(225637, '', 225634, 1, 0, 114053, 0, 32, 67186), +(225636, '', 225634, 1, 0, 114054, 1, 32, 67186), +(225635, '', 225634, 1, 0, 114055, 2, 32, 67186), +(225634, 'Abyss Anglers: Pearls to the Abyss', 0, 0, 4, 0, 0, 0, 67186), +(225611, '', 225609, 1, 0, 112060, 1, 1, 67186), +(225610, '', 225609, 1, 0, 112059, 0, 1, 67186), +(225609, 'Abyss Anglers: Vintage Collector', 0, 250, 5, 0, 0, 8193, 67186), +(220963, 'Play a round without getting tagged.', 220962, 1, 0, 111213, 0, 2050, 67186), +(220961, 'Stay unfound for an uninterrupted 90 seconds.', 220960, 1, 0, 111212, 0, 2050, 67186), +(220959, 'Seeker-Win within Two Minutes.', 220958, 1, 0, 111211, 0, 2050, 67186), +(220958, '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 0, 0, 4, 0, 0, 0, 67186), +(220957, 'Tag a Found Hider as an Arcane Ranger.', 220956, 5, 0, 111210, 0, 2048, 67186), +(220955, 'Tag a Found Hider as a Nullifier.', 220954, 5, 0, 111209, 0, 2048, 67186), +(220725, 'Tag a Found Hider as a Spellbreaker', 220724, 5, 0, 111076, 0, 2064, 67186), +(227430, '', 216383, 1, 0, 114029, 16, 0, 67186), +(223818, '', 216383, 1, 0, 112857, 17, 0, 67186), +(216419, '', 216383, 9999, 0, 48468, 20, 0, 67186), +(216418, '', 216383, 58, 0, 50192, 19, 0, 67186), +(216417, '', 216383, 6, 0, 50191, 18, 0, 67186), +(227429, '', 227428, 1, 0, 114028, 0, 0, 67186), +(227428, 'Has a Sun Darter Hatchling Pet', 0, 0, 4, 0, 0, 0, 67186), +(225732, 'Shallows Net upgrade acquired', 222436, 1, 0, 113838, 1, 0, 67186), +(224745, 'Sentry activated', 224744, 5, 0, 112851, 0, 0, 67186), +(222969, 'Stillwhisper defended', 217039, 10000, 9, 0, 0, 0, 67186), +(222803, 'Barriers damaged', 222449, 10000, 9, 0, 1, 0, 67186), +(221550, 'Animated Scourgeshard Slain', 221549, 3, 0, 111297, 0, 0, 67186), +(219955, 'Siphoid Hive Seer slain', 219954, 1, 0, 110295, 0, 32, 67186), +(219466, 'Siphoid Hive Seer slain', 219465, 1, 0, 110295, 0, 32, 67186), +(225670, 'JZB Test Achievement 04', 0, 36, 5, 0, 0, 8193, 67186), +(225668, 'JZB Test Achievement 03', 0, 24, 5, 0, 0, 8193, 67186), +(225666, 'JZB Test Achievement 02', 0, 12, 5, 0, 0, 8193, 67186), +(225664, 'JZB Test Achievement 01', 0, 9, 5, 0, 0, 8193, 67186), +(227206, '', 219450, 1, 0, 113946, 7, 0, 67186), +(223209, 'Statistic: Myth Dawncrests earned', 0, 0, 4, 0, 0, 0, 67186), +(212362, 'Obtain an average item level of 285 during Midnight Season 1. (Outgrow Myth Dawncrests)', 0, 1, 8, 0, 0, 0, 67186); + +UPDATE `criteria_tree` SET `Flags`=2, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=223694; +DELETE FROM `currency_types` WHERE `VerifiedBuild`>0 AND `ID` IN (3513, 3347, 3346, 3345, 3344, 3343, 3342, 3341, 3418, 3391, 3383, 3348); +INSERT INTO `currency_types` (`ID`, `Name`, `Description`, `CategoryID`, `InventoryIconFileID`, `SpellWeight`, `SpellCategory`, `MaxQty`, `MaxEarnablePerWeek`, `Quality`, `FactionID`, `ItemGroupSoundsID`, `XpQuestDifficulty`, `AwardConditionID`, `MaxQtyWorldStateID`, `RechargingAmountPerCycle`, `RechargingCycleDurationMS`, `AccountTransferPercentage`, `OrderIndex`, `RecraftReagentCountPercentage`, `OrderSource`, `MCRCurrencyID`, `Flags1`, `Flags2`, `VerifiedBuild`) VALUES +(3513, 'Nebulous Voidcore', 'Transmutable into powerful equipment upon defeating powerful foes in Midnight Season 1 raids or completing Mythic+ dungeons, Bountiful Delves and Prey Hunts on Nightmare difficulty.', 142, 7658128, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37748738, 0, 67186), +(3347, 'Myth Dawncrest', 'Used to upgrade Myth equipment in Midnight Season 1 up to item levels 276-289. \n\nWhen used for crafting, sets the item level of the resulting item to 272-285 based on Quality.\n\nEarned from the following activities:\n\n- Mythic Voidspire, The Dreamrift, March On Quel\'Danas\n- Mythic Keystone Dungeons (+9 and up)', 268, 7639523, 0, 0, 100, 0, 4, 0, 0, 0, 142972, 29185, 0, 0, 0, 5, 0, 0, 8, 35913922, 1, 67186), +(3346, 'Hero Dawncrest', 'Used to upgrade Hero equipment in Midnight Season 1 up to item levels 263-276. Earned from the following activities:\n\n- Heroic Voidspire, The Dreamrift, March On Quel\'Danas\n- Mythic Keystone Dungeons (+4 to +8)\n- Delves (Tier 11)\n- Trovehunter\'s Bounty (Tier 8+)\n- Prey Hunts (Nightmare)', 142, 7639521, 0, 0, 0, 0, 4, 0, 0, 0, 142972, 0, 0, 0, 0, 0, 0, 0, 0, 33554434, 0, 67186), +(3345, 'Hero Dawncrest', 'Used to upgrade Hero equipment in Midnight Season 1 up to item levels 263-276. \n\nWhen used for crafting, sets the item level of the resulting item to 259-272 based on Quality.\n\nEarned from the following activities:\n\n- Heroic Voidspire, The Dreamrift, March On Quel\'Danas\n- Mythic Keystone Dungeons (+4 to +8)\n- Delves (Tier 11)\n- Trovehunter\'s Bounty (Tier 8+)\n- Prey Hunts (Nightmare)', 268, 7639521, 0, 0, 100, 0, 4, 0, 0, 0, 142972, 29185, 0, 0, 0, 4, 0, 0, 7, 35913922, 1, 67186), +(3344, 'Champion Dawncrest', 'Used to upgrade Champion equipment in Midnight Season 1 up to item levels 250-263. Earned from the following activities:\n\n- Weekly Outdoor Events\n- Normal Voidspire, The Dreamrift, March On Quel\'Danas\n- Mythic Season Dungeons\n- Mythic Keystone Dungeons (+2 to +3)\n- Delves (Tiers 7 to 10)\n- Trovehunter\'s Bounty (Tiers 6 to 7)\n- Prey Hunts (Nightmare)', 142, 7639519, 0, 0, 0, 0, 4, 0, 0, 0, 142396, 0, 0, 0, 0, 0, 0, 0, 0, 33554434, 0, 67186), +(3343, 'Champion Dawncrest', 'Used to upgrade Champion equipment in Midnight Season 1 up to item levels 250-263. Earned from the following activities:\n\n- Weekly Outdoor Events\n- Normal Voidspire, The Dreamrift, March On Quel\'Danas\n- Mythic Season Dungeons\n- Mythic Keystone Dungeons (+2 to +3)\n- Delves (Tiers 7 to 10)\n- Trovehunter\'s Bounty (Tiers 6 to 7)\n- Prey Hunts (Nightmare)', 268, 7639519, 0, 0, 100, 0, 4, 0, 0, 0, 142396, 29184, 0, 0, 0, 3, 0, 0, 6, 35913922, 1, 67186), +(3342, 'Veteran Dawncrest', 'Used to upgrade Veteran equipment in Midnight Season 1 up to item levels 237-250. Earned from the following activities:\n\n- Repeatable Outdoor Events\n- Raid Finder Voidspire, The Dreamrift, March On Quel\'Danas\n- Heroic Season Dungeons\n- Delves (Tiers 5 to 6)\n- Trovehunter\'s Bounty (Tiers 4 to 5)\n- Prey Hunts (Hard)', 142, 7639525, 0, 0, 0, 0, 4, 0, 0, 0, 142396, 0, 0, 0, 0, 0, 0, 0, 0, 33554434, 0, 67186), +(3341, 'Veteran Dawncrest', 'Used to upgrade Veteran equipment in Midnight Season 1 up to item levels 237-250. \n\nWhen used for crafting, sets the item level of the resulting item to 233-246 based on Quality.\n\nEarned from the following activities:\n\n- Repeatable Outdoor Events\n- Raid Finder Voidspire, The Dreamrift, March On Quel\'Danas\n- Heroic Season Dungeons\n- Delves (Tiers 5 to 6)\n- Trovehunter\'s Bounty (Tiers 4 to 5)\n- Prey Hunts (Hard)', 268, 7639525, 0, 0, 100, 0, 4, 0, 0, 0, 142396, 29184, 0, 0, 0, 2, 0, 0, 5, 35913922, 1, 67186), +(3418, 'Nebulous Voidcore', 'Transmutable into powerful equipment upon defeating powerful foes in Midnight Season 1 raids or completing Mythic+ dungeons, Bountiful Delves and Prey Hunts on Nightmare difficulty.', 268, 7658128, 0, 0, 0, 0, 4, 0, 0, 0, 0, 30744, 0, 0, 0, 0, 0, 0, 0, 33816706, 1, 67186), +(3391, 'Adventurer Dawncrest', 'Used to upgrade Adventurer equipment in Midnight Season 1 up to item levels 224-237. Earned from the following activities:\n\n- Repeatable Outdoor Events\n- Tier 4 Delves\n- Prey Hunts (Normal)', 142, 7639517, 0, 0, 0, 0, 3, 0, 0, 0, 142396, 0, 0, 0, 0, 0, 0, 0, 0, 33554434, 0, 67186), +(3383, 'Adventurer Dawncrest', 'Used to upgrade Adventurer equipment in Midnight Season 1 up to item levels 224-237. \n\nWhen used for crafting, sets the item level of the resulting item to 220-233 based on Quality.\n\nEarned from the following activities:\n\n- Repeatable Outdoor Events\n- Tier 4 Delves\n- Prey Hunts (Normal)', 268, 7639517, 0, 0, 100, 0, 3, 0, 0, 0, 142396, 29184, 0, 0, 0, 1, 0, 0, 4, 35913922, 1, 67186), +(3348, 'Myth Dawncrest', 'Used to upgrade Myth equipment in Midnight Season 1 up to item levels 276-289. Earned from the following activities:\n\n- Heroic Voidspire, The Dreamrift, March On Quel\'Danas\n- Mythic Keystone Dungeons (+9 and up)', 142, 7639523, 0, 0, 0, 0, 4, 0, 0, 0, 142972, 0, 0, 0, 0, 0, 0, 0, 0, 33554434, 0, 67186); + +DELETE FROM `curve` WHERE `VerifiedBuild`>0 AND `ID` IN (104598, 104595, 104569, 100921, 100917, 87161, 86539, 103681, 103680, 103679, 103678, 103677, 94972, 58948, 100336); +INSERT INTO `curve` (`ID`, `Type`, `Flags`, `VerifiedBuild`) VALUES +(104598, 0, 0, 67186), +(104595, 0, 0, 67186), +(104569, 0, 0, 67186), +(100921, 0, 0, 67186), +(100917, 0, 0, 67186), +(87161, 0, 0, 67186), +(86539, 0, 0, 67186), +(103681, 0, 0, 67186), +(103680, 0, 0, 67186), +(103679, 0, 0, 67186), +(103678, 0, 0, 67186), +(103677, 0, 0, 67186), +(94972, 0, 0, 67186), +(58948, 0, 0, 67186), +(100336, 0, 0, 67186); + +DELETE FROM `curve_point` WHERE `VerifiedBuild`>0 AND `ID` IN (313083, 313082, 313081, 313078, 313077, 314215, 257479, 257478, 257477, 257476, 257475, 257474, 257473, 257472, 257471, 257470, 257469, 257468, 257467, 257466, 257465, 257464, 257463, 257462, 257461, 257460, 257459, 257458, 257457, 257456, 257455, 257454, 257453, 257452, 257449, 257448, 257447, 257446, 257445, 257444, 257443, 257442, 257441, 257440, 313093, 313092, 313091, 313090, 313089, 313088, 313087, 313086, 313085, 313084, 313080, 313079, 313076, 313075, 313074, 313073, 313072, 313071, 313070, 313069, 285616, 285615, 164008, 164007); +INSERT INTO `curve_point` (`PosX`, `PosY`, `PreSLSquishPosX`, `PreSLSquishPosY`, `ID`, `CurveID`, `OrderIndex`, `VerifiedBuild`) VALUES +(40, 50, 0, 0, 313083, 103679, 4, 67186), +(20, 55, 0, 0, 313082, 103679, 3, 67186), +(10, 65, 0, 0, 313081, 103679, 2, 67186), +(40, 60, 0, 0, 313078, 103678, 4, 67186), +(20, 70, 0, 0, 313077, 103678, 3, 67186), +(4, 1.759610176086425781, 0, 0, 314215, 87161, 40, 67186), +(3.90000009536743164, 1.72445380687713623, 0, 0, 257479, 87161, 39, 67186), +(3.799999952316284179, 1.690000057220458984, 0, 0, 257478, 87161, 38, 67186), +(3.70000004768371582, 1.656234502792358398, 0, 0, 257477, 87161, 37, 67186), +(3.599999904632568359, 1.623143672943115234, 0, 0, 257476, 87161, 36, 67186), +(3.5, 1.590713977813720703, 0, 0, 257475, 87161, 35, 67186), +(3.40000009536743164, 1.558932185173034667, 0, 0, 257474, 87161, 34, 67186), +(3.299999952316284179, 1.527785301208496093, 0, 0, 257473, 87161, 33, 67186), +(3.20000004768371582, 1.497260808944702148, 0, 0, 257472, 87161, 32, 67186), +(3.099999904632568359, 1.46734619140625, 0, 0, 257471, 87161, 31, 67186), +(3, 1.438029289245605468, 0, 0, 257470, 87161, 30, 67186), +(2.90000009536743164, 1.409298062324523925, 0, 0, 257469, 87161, 29, 67186), +(2.799999952316284179, 1.381140828132629394, 0, 0, 257468, 87161, 28, 67186), +(2.70000004768371582, 1.35354626178741455, 0, 0, 257467, 87161, 27, 67186), +(2.599999904632568359, 1.326502919197082519, 0, 0, 257466, 87161, 26, 67186), +(2.5, 1.299999952316284179, 0, 0, 257465, 87161, 25, 67186), +(2.40000009536743164, 1.27402651309967041, 0, 0, 257464, 87161, 24, 67186), +(2.299999952316284179, 1.248571991920471191, 0, 0, 257463, 87161, 23, 67186), +(2.20000004768371582, 1.223626136779785156, 0, 0, 257462, 87161, 22, 67186), +(2.099999904632568359, 1.199178576469421386, 0, 0, 257461, 87161, 21, 67186), +(2, 1.175219535827636718, 0, 0, 257460, 87161, 20, 67186), +(1.899999976158142089, 1.151739120483398437, 0, 0, 257459, 87161, 19, 67186), +(1.799999952316284179, 1.12872779369354248, 0, 0, 257458, 87161, 18, 67186), +(1.70000004768371582, 1.106176376342773437, 0, 0, 257457, 87161, 17, 67186), +(1.60000002384185791, 1.084075450897216796, 0, 0, 257456, 87161, 16, 67186), +(1.5, 1.06241607666015625, 0, 0, 257455, 87161, 15, 67186), +(1.399999976158142089, 1.041189432144165039, 0, 0, 257454, 87161, 14, 67186), +(1.299999952316284179, 1.020386934280395507, 0, 0, 257453, 87161, 13, 67186), +(1.20000004768371582, 1, 0, 0, 257452, 87161, 12, 67186), +(0.899999976158142089, 0.910000026226043701, 0, 0, 257449, 87161, 9, 67186), +(0.800000011920928955, 0.819999992847442626, 0, 0, 257448, 87161, 8, 67186), +(0.699999988079071044, 0.730000019073486328, 0, 0, 257447, 87161, 7, 67186), +(0.60000002384185791, 0.639999985694885253, 0, 0, 257446, 87161, 6, 67186), +(0.5, 0.550000011920928955, 0, 0, 257445, 87161, 5, 67186), +(0.400000005960464477, 0.460000008344650268, 0, 0, 257444, 87161, 4, 67186), +(0.300000011920928955, 0.370000004768371582, 0, 0, 257443, 87161, 3, 67186), +(0.200000002980232238, 0.280000001192092895, 0, 0, 257442, 87161, 2, 67186), +(0.100000001490116119, 0.189999997615814208, 0, 0, 257441, 87161, 1, 67186), +(0, 0.100000001490116119, 0, 0, 257440, 87161, 0, 67186), +(40, 50, 0, 0, 313093, 103681, 4, 67186), +(20, 90, 0, 0, 313092, 103681, 3, 67186), +(10, 120, 0, 0, 313091, 103681, 2, 67186), +(5, 180, 0, 0, 313090, 103681, 1, 67186), +(1, 450, 0, 0, 313089, 103681, 0, 67186), +(40, 20, 0, 0, 313088, 103680, 4, 67186), +(20, 28, 0, 0, 313087, 103680, 3, 67186), +(10, 42, 0, 0, 313086, 103680, 2, 67186), +(5, 75, 0, 0, 313085, 103680, 1, 67186), +(1, 277, 0, 0, 313084, 103680, 0, 67186), +(5, 120, 0, 0, 313080, 103679, 1, 67186), +(1, 278, 0, 0, 313079, 103679, 0, 67186), +(10, 80, 0, 0, 313076, 103678, 2, 67186), +(5, 160, 0, 0, 313075, 103678, 1, 67186), +(1, 278, 0, 0, 313074, 103678, 0, 67186), +(40, 60, 0, 0, 313073, 103677, 4, 67186), +(20, 80, 0, 0, 313072, 103677, 3, 67186), +(10, 120, 0, 0, 313071, 103677, 2, 67186), +(5, 160, 0, 0, 313070, 103677, 1, 67186), +(1, 400, 0, 0, 313069, 103677, 0, 67186), +(2, 40, 0, 0, 285616, 94972, 1, 67186), +(1, 20, 0, 0, 285615, 94972, 0, 67186), +(2, 12, 0, 0, 164008, 58948, 1, 67186), +(1, 6, 0, 0, 164007, 58948, 0, 67186); + +DELETE FROM `dungeon_encounter` WHERE `VerifiedBuild`>0 AND `ID`=1700; +INSERT INTO `dungeon_encounter` (`Name`, `ID`, `MapID`, `DifficultyID`, `OrderIndex`, `CompleteWorldStateID`, `Bit`, `Flags`, `SpellIconFileID`, `Faction`, `Unknown1115`, `VerifiedBuild`) VALUES +('Rukhran', 1700, 1209, 0, 2000, 0, 2, 4, 0, -1, 0, 67186); + +DELETE FROM `expected_stat_mod` WHERE `VerifiedBuild`>0 AND `ID`=302; +INSERT INTO `expected_stat_mod` (`ID`, `CreatureHealthMod`, `PlayerHealthMod`, `CreatureAutoAttackDPSMod`, `CreatureArmorMod`, `PlayerManaMod`, `PlayerPrimaryStatMod`, `PlayerSecondaryStatMod`, `ArmorConstantMod`, `CreatureSpellDamageMod`, `VerifiedBuild`) VALUES +(302, 1.10000002384185791, 1, 0.973500013351440429, 1, 1, 1, 1, 1, 0.973500013351440429, 67186); + +DELETE FROM `gameobject_label` WHERE `VerifiedBuild`>0 AND `ID` IN (3695, 3694, 3693, 3692, 3691, 3690, 3689, 3688, 3687, 3686, 3685, 3684, 3683, 3682, 3681, 3680, 3679, 3678, 3677, 3676, 3675, 3674, 3673, 3672, 3671, 3670, 3669, 3668, 3667, 3666, 3665, 3664, 3663, 3662, 3661, 3660, 3659, 3658, 3657, 3656, 3655, 3654, 3653, 3652, 3651, 3650, 3649, 3648, 3647, 3646, 3645, 3644, 3643, 3642, 3641, 3640, 3639, 3638, 3637, 3636, 3635, 3634, 3633, 3632, 3631, 3630, 3629, 3628, 3627, 3626, 3625, 3624, 3623, 3622, 3621, 3620, 3619, 3618, 3617, 3616, 3615, 3614, 3613, 3612, 3611, 3610, 3609, 3608, 3607, 3606, 3605, 3604, 3603, 3602, 3601, 3600, 3599, 3598, 3597, 3596, 3595, 3594, 3593, 3591, 3590); +INSERT INTO `gameobject_label` (`ID`, `LabelID`, `GameObjectID`, `VerifiedBuild`) VALUES +(3695, 1632, 520311, 67186), +(3694, 2857, 520311, 67186), +(3693, 4132, 520311, 67186), +(3692, 1632, 520309, 67186), +(3691, 2857, 520309, 67186), +(3690, 4132, 520309, 67186), +(3689, 1632, 520308, 67186), +(3688, 2857, 520308, 67186), +(3687, 4132, 520308, 67186), +(3686, 1632, 520306, 67186), +(3685, 2857, 520306, 67186), +(3684, 4132, 520306, 67186), +(3683, 1632, 520305, 67186), +(3682, 2857, 520305, 67186), +(3681, 4132, 520305, 67186), +(3680, 1632, 520304, 67186), +(3679, 2857, 520304, 67186), +(3678, 4132, 520304, 67186), +(3677, 1632, 385553, 67186), +(3676, 2857, 385553, 67186), +(3675, 4132, 385553, 67186), +(3674, 1632, 385552, 67186), +(3673, 2857, 385552, 67186), +(3672, 4132, 385552, 67186), +(3671, 1632, 385551, 67186), +(3670, 2857, 385551, 67186), +(3669, 4132, 385551, 67186), +(3668, 1632, 385550, 67186), +(3667, 2857, 385550, 67186), +(3666, 4132, 385550, 67186), +(3665, 1632, 385549, 67186), +(3664, 2857, 385549, 67186), +(3663, 4132, 385549, 67186), +(3662, 1632, 385548, 67186), +(3661, 2857, 385548, 67186), +(3660, 4132, 385548, 67186), +(3659, 1632, 385547, 67186), +(3658, 2857, 385547, 67186), +(3657, 4132, 385547, 67186), +(3656, 1632, 385546, 67186), +(3655, 2857, 385546, 67186), +(3654, 4132, 385546, 67186), +(3653, 1632, 385545, 67186), +(3652, 2857, 385545, 67186), +(3651, 4132, 385545, 67186), +(3650, 1632, 385544, 67186), +(3649, 2857, 385544, 67186), +(3648, 4132, 385544, 67186), +(3647, 1632, 385543, 67186), +(3646, 2857, 385543, 67186), +(3645, 4132, 385543, 67186), +(3644, 1632, 385542, 67186), +(3643, 2857, 385542, 67186), +(3642, 4132, 385542, 67186), +(3641, 1632, 385541, 67186), +(3640, 2857, 385541, 67186), +(3639, 4132, 385541, 67186), +(3638, 1632, 355518, 67186), +(3637, 2857, 355518, 67186), +(3636, 4132, 355518, 67186), +(3635, 1632, 353192, 67186), +(3634, 2857, 353192, 67186), +(3633, 4132, 353192, 67186), +(3632, 1632, 268888, 67186), +(3631, 2857, 268888, 67186), +(3630, 4132, 268888, 67186), +(3629, 1632, 268887, 67186), +(3628, 2857, 268887, 67186), +(3627, 4132, 268887, 67186), +(3626, 1632, 268886, 67186), +(3625, 2857, 268886, 67186), +(3624, 4132, 268886, 67186), +(3623, 1632, 268885, 67186), +(3622, 2857, 268885, 67186), +(3621, 4132, 268885, 67186), +(3620, 1632, 268884, 67186), +(3619, 2857, 268884, 67186), +(3618, 4132, 268884, 67186), +(3617, 1632, 268883, 67186), +(3616, 2857, 268883, 67186), +(3615, 4132, 268883, 67186), +(3614, 1632, 266869, 67186), +(3613, 2857, 266869, 67186), +(3612, 4132, 266869, 67186), +(3611, 1632, 245190, 67186), +(3610, 2857, 245190, 67186), +(3609, 1632, 241596, 67186), +(3608, 2857, 241596, 67186), +(3607, 4132, 241596, 67186), +(3606, 1632, 241595, 67186), +(3605, 2857, 241595, 67186), +(3604, 4132, 241595, 67186), +(3603, 1632, 241594, 67186), +(3602, 2857, 241594, 67186), +(3601, 4132, 241594, 67186), +(3600, 1632, 241593, 67186), +(3599, 2857, 241593, 67186), +(3598, 4132, 241593, 67186), +(3597, 1632, 241592, 67186), +(3596, 2857, 241592, 67186), +(3595, 4132, 241592, 67186), +(3594, 1632, 35591, 67186), +(3593, 2857, 35591, 67186), +(3591, 4132, 245190, 67186), +(3590, 4132, 35591, 67186); + +DELETE FROM `gossip_npc_option` WHERE `VerifiedBuild`>0 AND `ID`=61038; +INSERT INTO `gossip_npc_option` (`ID`, `GossipNpcOption`, `LFGDungeonsID`, `TrainerID`, `GarrFollowerTypeID`, `CharShipmentID`, `GarrTalentTreeID`, `UiMapID`, `UiItemInteractionID`, `Unknown_1000_8`, `Unknown_1000_9`, `CovenantID`, `GossipOptionID`, `TraitTreeID`, `ProfessionID`, `Unknown_1002_14`, `NeighborhoodMapID`, `SkillLineID`, `VerifiedBuild`) VALUES +(61038, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140067, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `item` WHERE `VerifiedBuild`>0 AND `ID` IN (210174, 206969, 206968, 206967, 204977, 204568, 204567, 204565, 201321, 201320, 201319, 201318, 201317, 201316, 201315, 201314, 201313, 201312, 201311, 201310, 200616, 200615, 200614, 245345, 243343, 243302, 274267, 255157, 239563, 223245, 267009, 267007, 264717, 264342, 264338, 264336, 264332, 264330, 264329, 264258, 263238, 263233, 263230, 263042, 263036, 256683, 253451, 251967, 245938, 245560, 241044, 264914, 275447, 275446, 275445, 275444, 275442, 275440, 275436, 248248, 247822, 237141, 235549, 226357, 213438, 209060, 204798, 199412, 192557, 187682, 187525, 182717, 174836, 257741, 257735, 255844, 255843, 248592, 248135, 274427, 267643, 267642, 267641, 267640, 267639, 267638, 267607, 267606, 267605, 267604, 267482, 267481, 267480, 267479, 266432, 266431, 266430, 266429, 265740, 265739, 264507, 263269, 263268, 263267, 263265, 270562, 249497, 272961, 272960, 272318, 272317, 272316, 271631, 19355, 274578, 268455, 268122, 272338, 272337, 272336, 272321, 272320, 268481, 268456, 273874, 263970, 263969, 263968, 263967, 263966, 263963, 263960, 263959, 263956, 263954, 263952, 263950, 263949, 263946, 263943, 263942, 263941, 263707, 263706, 263705, 263704, 263703, 263702, 263701, 263700, 263699, 263698, 263697, 263696, 263695, 263694, 263693, 263692, 263691, 263690, 263689, 263688, 263687, 263686, 263685, 263684, 263683, 263682, 263681, 263680, 263679, 263678, 263677, 263676, 263675, 263674, 263673, 263672, 263671, 263670, 263669, 263668, 263667, 263666, 263665, 263664, 263663, 263662, 263661, 263660, 263659, 263658, 263657, 263656, 263655, 263654, 263653, 263652, 263651, 263650, 263649, 263648, 263647, 263646, 263645, 263644, 263643, 263642, 263641, 263640, 263639, 263638, 263637, 263636, 263635, 263634, 263633, 263632, 263631, 263630, 263629, 263628, 263627, 263626, 263625, 263624, 263623, 263622, 263621, 263620, 263619, 263618, 263617, 263616, 263615, 263614, 263613, 263612, 263611, 263610, 263609, 263608, 263607, 263606, 263605, 263604, 263603, 263602, 263601, 263600, 263599, 263598, 263597, 263596, 263595, 263594, 263593, 263592, 263591, 263590, 263589, 263588, 263587, 263586, 263585, 251161, 133494, 49810, 264323, 264322, 264321, 264320, 264319, 264318, 264317, 264316, 264315, 264314, 256700, 250445, 250360, 250443, 272125, 263286, 273307, 265790, 246753, 255627, 266969, 253582); +INSERT INTO `item` (`ID`, `ClassID`, `SubclassID`, `Material`, `InventoryType`, `SheatheType`, `SoundOverrideSubclassID`, `IconFileDataID`, `ItemGroupSoundsID`, `ContentTuningID`, `ModifiedCraftingReagentItemID`, `Unknown1200`, `CraftingQualityID`, `ItemSquishEraID`, `RecraftReagentCountPercentage`, `OrderSource`, `VerifiedBuild`) VALUES +(210174, 9, 8, 0, 0, 0, -1, 237019, 20, 0, 0, 0, 0, 0, 0, 0, 67186), +(206969, 8, 2, 8, 0, 0, -1, 4549183, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(206968, 8, 2, 8, 0, 0, -1, 4549183, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(206967, 8, 2, 8, 0, 0, -1, 4549183, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(204977, 9, 8, 0, 0, 0, -1, 237019, 20, 0, 0, 0, 0, 0, 0, 0, 67186), +(204568, 8, 2, 8, 0, 0, -1, 4624726, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(204567, 8, 2, 8, 0, 0, -1, 4624726, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(204565, 8, 2, 8, 0, 0, -1, 4624726, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(201321, 8, 2, 8, 0, 0, -1, 4549113, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(201320, 8, 2, 8, 0, 0, -1, 4549113, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(201319, 8, 2, 8, 0, 0, -1, 4549113, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(201318, 8, 2, 8, 0, 0, -1, 4549115, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(201317, 8, 2, 8, 0, 0, -1, 4549115, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(201316, 8, 2, 8, 0, 0, -1, 4549115, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(201315, 8, 2, 8, 0, 0, -1, 4549116, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(201314, 8, 2, 8, 0, 0, -1, 4549116, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(201313, 8, 2, 8, 0, 0, -1, 4549116, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(201312, 8, 2, 8, 0, 0, -1, 4549114, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(201311, 8, 2, 8, 0, 0, -1, 4549114, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(201310, 8, 2, 8, 0, 0, -1, 4549114, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(200616, 8, 2, 8, 0, 0, -1, 4549112, 20, 0, 0, 0, 3, 0, 0, 0, 67186), +(200615, 8, 2, 8, 0, 0, -1, 4549112, 20, 0, 0, 0, 2, 0, 0, 0, 67186), +(200614, 8, 2, 8, 0, 0, -1, 4549112, 20, 0, 0, 0, 1, 0, 0, 0, 67186), +(245345, 7, 11, 0, 0, 0, -1, 237556, 24, 0, 0, 0, 0, 0, 0, 0, 67186), +(243343, 15, 4, 4, 0, 0, -1, 132886, 24, 0, 0, 0, 0, 0, 0, 0, 67186), +(243302, 15, 4, 4, 0, 0, -1, 5931164, 24, 0, 0, 0, 0, 0, 0, 0, 67186), +(274267, 7, 11, 0, 0, 0, -1, 237556, 24, 0, 0, 0, 0, 2, 0, 0, 67186), +(255157, 0, 8, 0, 0, 0, -1, 3615516, 7, 3615, 0, 0, 0, 0, 0, 0, 67186), +(239563, 15, 5, 7, 0, 0, -1, 136202, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(223245, 0, 8, 0, 0, 0, -1, 5728024, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(267009, 20, 0, 0, 0, 0, -1, 7557341, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(267007, 20, 0, 0, 0, 0, -1, 7568384, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264717, 20, 0, 0, 0, 0, -1, 7517838, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264342, 20, 0, 0, 0, 0, -1, 7509067, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264338, 20, 0, 0, 0, 0, -1, 7509095, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264336, 20, 0, 0, 0, 0, -1, 7509075, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264332, 20, 0, 0, 0, 0, -1, 7509044, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264330, 20, 0, 0, 0, 0, -1, 7509033, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264329, 20, 0, 0, 0, 0, -1, 7509029, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264258, 20, 0, 0, 0, 0, -1, 7506628, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(263238, 20, 0, 0, 0, 0, -1, 7494519, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(263233, 20, 0, 0, 0, 0, -1, 7494527, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(263230, 20, 0, 0, 0, 0, -1, 7494535, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(263042, 20, 0, 0, 0, 0, -1, 7491990, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(263036, 20, 0, 0, 0, 0, -1, 7491986, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(256683, 20, 0, 0, 0, 0, -1, 7425933, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(253451, 20, 0, 0, 0, 0, -1, 7416517, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(251967, 20, 0, 0, 0, 0, -1, 7424745, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(245938, 20, 0, 0, 0, 0, -1, 7422175, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(245560, 20, 0, 0, 0, 0, -1, 7422011, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(241044, 20, 0, 0, 0, 0, -1, 7416341, 241, 0, 0, 0, 0, 0, 0, 0, 67186), +(264914, 0, 8, 0, 0, 0, -1, 1542848, 9, 0, 0, 0, 0, 2, 0, 0, 67186), +(275447, 15, 5, 0, 0, 0, -1, 6331355, 9, 872, 0, 0, 0, 2, 0, 0, 67186), +(275446, 15, 5, 0, 0, 0, -1, 6331355, 9, 872, 0, 0, 0, 2, 0, 0, 67186), +(275445, 15, 5, 0, 0, 0, -1, 6331355, 9, 872, 0, 0, 0, 2, 0, 0, 67186), +(275444, 15, 5, 0, 0, 0, -1, 6331355, 9, 872, 0, 0, 0, 2, 0, 0, 67186), +(275442, 15, 5, 7, 0, 0, -1, 5862954, 7, 872, 0, 0, 0, 2, 0, 0, 67186), +(275440, 15, 5, 0, 0, 0, -1, 3614354, 7, 872, 0, 0, 0, 2, 0, 0, 67186), +(275436, 0, 8, 7, 0, 0, -1, 134326, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(248248, 15, 5, 1, 0, 0, -1, 6891211, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(247822, 15, 5, 1, 0, 0, -1, 6891211, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(237141, 15, 5, 0, 0, 0, -1, 6331355, 9, 872, 0, 0, 0, 0, 0, 0, 67186), +(235549, 15, 5, 0, 0, 0, -1, 6331355, 9, 872, 0, 0, 0, 0, 0, 0, 67186), +(226357, 15, 5, 7, 0, 0, -1, 5862955, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(213438, 15, 5, 7, 0, 0, -1, 5319110, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(209060, 15, 5, 7, 0, 0, -1, 5243074, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(204798, 15, 5, 7, 0, 0, -1, 4690917, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(199412, 15, 5, 7, 0, 0, -1, 4546375, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(192557, 15, 5, 0, 0, 0, -1, 4556548, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(187682, 15, 5, 0, 0, 0, -1, 4216843, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(187525, 15, 5, 0, 0, 0, -1, 3614355, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(182717, 15, 5, 0, 0, 0, -1, 3614351, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(174836, 15, 5, 0, 0, 0, -1, 3005318, 7, 872, 0, 0, 0, 0, 0, 0, 67186), +(257741, 7, 18, 2, 0, 0, -1, 5242296, 13, 0, 677, 0, 14, 2, 0, 0, 67186), +(257735, 7, 18, 2, 0, 0, -1, 5242296, 13, 0, 677, 0, 13, 2, 0, 0, 67186), +(255844, 7, 18, 2, 0, 0, -1, 1567068, 13, 0, 671, 0, 14, 2, 0, 0, 67186), +(255843, 7, 18, 2, 0, 0, -1, 1567068, 13, 0, 671, 0, 13, 2, 0, 0, 67186), +(248592, 7, 18, 7, 0, 0, -1, 1336885, 20, 0, 659, 0, 14, 2, 0, 0, 67186), +(248135, 7, 18, 7, 0, 0, -1, 1336885, 20, 0, 659, 0, 13, 2, 0, 0, 67186), +(274427, 15, 0, 4, 0, 0, -1, 7834744, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(267643, 4, 0, 3, 2, 0, -1, 7636653, 14, 0, 0, 0, 0, 2, 0, 0, 67186), +(267642, 4, 0, 3, 2, 0, -1, 7636654, 14, 0, 0, 0, 0, 2, 0, 0, 67186), +(267641, 4, 4, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(267640, 4, 3, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(267639, 4, 2, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(267638, 4, 1, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(267607, 4, 1, 7, 10, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(267606, 4, 2, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(267605, 4, 3, 5, 10, 0, -1, 0, 10, 0, 0, 0, 0, 2, 0, 0, 67186), +(267604, 4, 4, 6, 10, 0, -1, 0, 11, 0, 0, 0, 0, 2, 0, 0, 67186), +(267482, 4, 4, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 2, 0, 0, 67186), +(267481, 4, 3, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 2, 0, 0, 67186), +(267480, 4, 2, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 2, 0, 0, 67186), +(267479, 4, 1, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 2, 0, 0, 67186), +(266432, 4, 4, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(266431, 4, 3, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(266430, 4, 2, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(266429, 4, 1, 7, 1, 0, -1, 0, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(265740, 4, 0, 3, 2, 0, -1, 7636653, 14, 0, 0, 0, 0, 2, 0, 0, 67186), +(265739, 4, 0, 3, 2, 0, -1, 7636654, 14, 0, 0, 0, 0, 2, 0, 0, 67186), +(264507, 4, 0, 4, 12, 0, -1, 7137517, 14, 0, 0, 0, 0, 2, 0, 0, 67186), +(263269, 4, 4, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 67186), +(263268, 4, 3, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 67186), +(263267, 4, 2, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 67186), +(263265, 4, 1, 5, 6, 0, -1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 67186), +(270562, 12, 0, 0, 0, 0, -1, 136133, 246, 0, 0, 0, 0, 2, 0, 0, 67186), +(249497, 12, 0, 8, 0, 0, -1, 133967, 16, 0, 0, 0, 0, 0, 0, 0, 67186), +(272961, 2, 10, 1, 17, 2, -1, 2202281, 9, 0, 0, 0, 0, 2, 0, 0, 67186), +(272960, 4, 6, 6, 14, 4, -1, 2398168, 9, 0, 0, 0, 0, 2, 0, 0, 67186), +(272318, 2, 7, 1, 13, 2, -1, 7139837, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(272317, 2, 9, 1, 13, 1, -1, 7428050, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(272316, 2, 6, 1, 17, 2, -1, 6358709, 9, 0, 0, 0, 0, 2, 0, 0, 67186), +(271631, 15, 0, 4, 0, 0, -1, 1708500, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(19355, 2, 10, 2, 17, 2, -1, 135150, 13, 0, 0, 0, 0, 0, 0, 0, 67186), +(274578, 0, 8, 0, 0, 0, -1, 5041801, 22, 0, 0, 0, 0, 2, 0, 0, 67186), +(268455, 15, 4, 3, 0, 0, -1, 525134, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(268122, 15, 4, 4, 0, 0, -1, 463521, 244, 0, 0, 0, 0, 2, 0, 0, 67186), +(272338, 2, 8, 1, 17, 1, -1, 7118838, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(272337, 2, 7, 1, 13, 3, -1, 7428050, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(272336, 2, 5, 1, 17, 1, -1, 0, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(272321, 2, 2, 1, 15, 4, -1, 0, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(272320, 2, 10, 1, 17, 2, -1, 0, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(268481, 15, 5, 7, 0, 0, -1, 3066348, 7, 872, 0, 0, 0, 2, 0, 0, 67186), +(268456, 15, 4, 2, 0, 0, -1, 1392559, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(273874, 2, 6, 1, 17, 1, -1, 0, 8, 0, 0, 0, 0, 2, 0, 0, 67186), +(263970, 2, 13, 1, 13, 8, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263969, 2, 19, 2, 26, 3, -1, 0, 21, 0, 0, 0, 0, 0, 0, 0, 67186), +(263968, 2, 19, 2, 26, 3, -1, 0, 21, 0, 0, 0, 0, 0, 0, 0, 67186), +(263967, 2, 2, 2, 15, 4, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263966, 2, 8, 1, 17, 1, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263963, 2, 7, 1, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263960, 2, 7, 1, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263959, 4, 0, 1, 23, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263956, 2, 4, 1, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263954, 2, 10, 1, 17, 2, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263952, 2, 10, 1, 17, 2, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263950, 2, 6, 1, 17, 1, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263949, 4, 6, 6, 14, 4, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263946, 2, 4, 1, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263943, 2, 15, 2, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263942, 2, 15, 2, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263941, 2, 3, 1, 26, 1, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263707, 4, 4, 7, 9, 0, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263706, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263705, 4, 4, 8, 6, 0, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(263704, 4, 4, 8, 3, 0, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263703, 4, 4, 8, 7, 0, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263702, 4, 4, 8, 1, 0, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263701, 4, 4, 8, 10, 0, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263700, 4, 4, 8, 8, 0, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263699, 4, 4, 8, 5, 0, -1, 0, 9, 0, 0, 0, 0, 0, 0, 0, 67186), +(263698, 4, 1, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263697, 4, 1, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263696, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263695, 4, 1, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263694, 4, 1, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263693, 4, 1, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263692, 4, 1, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263691, 4, 1, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263690, 4, 1, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263689, 4, 1, 8, 20, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263688, 4, 3, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263687, 4, 3, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263686, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263685, 4, 3, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263684, 4, 3, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263683, 4, 3, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263682, 4, 3, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263681, 4, 3, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263680, 4, 3, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263679, 4, 3, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263678, 4, 2, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263677, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263676, 4, 2, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263675, 4, 2, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263674, 4, 2, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263673, 4, 2, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263672, 4, 2, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263671, 4, 2, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263670, 4, 2, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263669, 4, 1, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263668, 4, 1, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263667, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263666, 4, 1, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263665, 4, 1, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263664, 4, 1, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263663, 4, 1, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263662, 4, 1, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263661, 4, 1, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263660, 4, 1, 8, 20, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263659, 4, 4, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263658, 4, 4, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263657, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263656, 4, 4, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263655, 4, 4, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263654, 4, 4, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263653, 4, 4, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263652, 4, 4, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263651, 4, 4, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263650, 4, 4, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263649, 4, 2, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263648, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263647, 4, 2, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263646, 4, 2, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263645, 4, 2, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263644, 4, 2, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263643, 4, 2, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263642, 4, 2, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263641, 4, 2, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263640, 4, 1, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263639, 4, 1, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263638, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263637, 4, 1, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263636, 4, 1, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263635, 4, 1, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263634, 4, 1, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263633, 4, 1, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263632, 4, 1, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263631, 4, 1, 8, 20, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263630, 4, 3, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263629, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263628, 4, 3, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263627, 4, 3, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263626, 4, 3, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263625, 4, 3, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263624, 4, 3, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263623, 4, 3, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263622, 4, 3, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263621, 4, 3, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263620, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263619, 4, 3, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263618, 4, 3, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263617, 4, 3, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263616, 4, 3, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263615, 4, 3, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263614, 4, 3, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263613, 4, 3, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263612, 4, 2, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263611, 4, 2, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263610, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263609, 4, 2, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263608, 4, 2, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263607, 4, 2, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263606, 4, 2, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263605, 4, 2, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263604, 4, 2, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263603, 4, 2, 8, 20, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263602, 4, 2, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263601, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263600, 4, 2, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186); + +INSERT INTO `item` (`ID`, `ClassID`, `SubclassID`, `Material`, `InventoryType`, `SheatheType`, `SoundOverrideSubclassID`, `IconFileDataID`, `ItemGroupSoundsID`, `ContentTuningID`, `ModifiedCraftingReagentItemID`, `Unknown1200`, `CraftingQualityID`, `ItemSquishEraID`, `RecraftReagentCountPercentage`, `OrderSource`, `VerifiedBuild`) VALUES +(263599, 4, 2, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263598, 4, 2, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263597, 4, 2, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263596, 4, 2, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263595, 4, 2, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263594, 4, 2, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263593, 4, 4, 7, 9, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263592, 4, 1, 2, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263591, 4, 4, 8, 6, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263590, 4, 4, 8, 3, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263589, 4, 4, 8, 7, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263588, 4, 4, 8, 1, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263587, 4, 4, 8, 10, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263586, 4, 4, 8, 8, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(263585, 4, 4, 8, 5, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(251161, 4, 1, 7, 16, 0, -1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 67186), +(133494, 4, 3, 5, 6, 0, -1, 342513, 10, 0, 0, 0, 0, 0, 0, 0, 67186), +(49810, 4, 3, 5, 6, 0, -1, 342513, 10, 0, 0, 0, 0, 0, 0, 0, 67186), +(264323, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264322, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264321, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264320, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264319, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264318, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264317, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264316, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264315, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(264314, 15, 4, 1, 0, 0, -1, 1708500, 13, 0, 0, 0, 0, 2, 0, 0, 67186), +(256700, 9, 10, 0, 0, 0, -1, 4549189, 20, 0, 0, 0, 0, 0, 0, 0, 67186), +(250445, 15, 4, 0, 0, 0, -1, 4624727, 20, 0, 0, 0, 0, 0, 0, 0, 67186), +(250360, 15, 4, 0, 0, 0, -1, 4625108, 20, 0, 0, 0, 0, 0, 0, 0, 67186), +(250443, 15, 4, 0, 0, 0, -1, 4624733, 20, 0, 0, 0, 0, 0, 0, 0, 67186), +(272125, 0, 8, 0, 0, 0, -1, 348520, 9, 0, 0, 0, 0, 2, 0, 0, 67186), +(263286, 4, 6, 1, 14, 4, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(273307, 0, 5, 0, 0, 0, -1, 609895, 16, 0, 0, 0, 0, 2, 0, 0, 67186), +(265790, 0, 8, 0, 0, 0, -1, 6011923, 18, 0, 0, 0, 0, 2, 0, 0, 67186), +(246753, 15, 4, 0, 0, 0, -1, 7639524, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(255627, 2, 4, 1, 13, 3, -1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 67186), +(266969, 0, 8, 0, 0, 0, -1, 7127505, 7, 0, 0, 0, 0, 2, 0, 0, 67186), +(253582, 2, 4, 8, 13, 3, -1, 0, 15, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `item_bonus` WHERE `VerifiedBuild`>0 AND `ID` IN (31223, 30634, 29370, 29368, 29367, 29366, 31212, 31211, 31210); +INSERT INTO `item_bonus` (`ID`, `Value1`, `Value2`, `Value3`, `Value4`, `ParentItemBonusListID`, `Type`, `OrderIndex`, `VerifiedBuild`) VALUES +(31223, 0, 0, 0, 0, 13760, 0, 0, 67186), +(30634, 298, -1, 0, 0, 13656, 43, 0, 67186), +(29370, 263, 1, 0, 0, 13451, 43, 0, 67186), +(29368, 276, 1, 0, 0, 13449, 43, 0, 67186), +(29367, 289, 0, 0, 0, 13448, 43, 0, 67186), +(29366, 276, 1, 0, 0, 13447, 43, 0, 67186), +(31212, 96502, 0, 0, 0, 6499, 27, 1, 67186), +(31211, 96502, 0, 0, 0, 13609, 27, 2, 67186), +(31210, 96502, 0, 0, 0, 13608, 27, 1, 67186); + +DELETE FROM `item_bonus_tree_node` WHERE `VerifiedBuild`>0 AND `ID` IN (29515, 29457, 29456, 29455, 29453, 29452); +INSERT INTO `item_bonus_tree_node` (`ID`, `ItemContext`, `ChildItemBonusTreeID`, `ChildItemBonusListID`, `ChildItemLevelSelectorID`, `ChildItemBonusListGroupID`, `IblGroupPointsModSetID`, `MinMythicPlusLevel`, `MaxMythicPlusLevel`, `ItemCreationContextGroupID`, `Flags`, `ParentItemBonusTreeID`, `VerifiedBuild`) VALUES +(29515, 0, 5523, 0, 0, 0, 0, 0, 0, 0, 0, 5884, 67186), +(29457, 108, 0, 0, 0, 609, 4142, 0, 4, 0, 0, 5916, 67186), +(29456, 108, 0, 0, 0, 610, 4691, 5, 7, 0, 0, 5916, 67186), +(29455, 108, 0, 0, 0, 611, 4144, 8, 13, 0, 0, 5916, 67186), +(29453, 0, 6052, 0, 0, 0, 0, 0, 0, 0, 0, 5168, 67186), +(29452, 0, 0, 13760, 0, 0, 0, 0, 0, 0, 0, 6052, 67186); + +UPDATE `item_bonus_tree_node` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=29165; +DELETE FROM `item_creation_context` WHERE `VerifiedBuild`>0 AND `ID` IN (257, 256, 255); +INSERT INTO `item_creation_context` (`ID`, `ItemContext`, `ItemCreationContextGroupID`, `VerifiedBuild`) VALUES +(257, 163, 7, 67186), +(256, 164, 7, 67186), +(255, 162, 7, 67186); + +DELETE FROM `item_currency_cost` WHERE `VerifiedBuild`>0 AND `ID` IN (103622, 106105, 106104, 106103, 106101, 106099, 106098, 106097, 106096, 106095, 106045, 106043, 106042, 106041, 106040, 107008, 107007, 107006, 107005, 107004, 107003, 107002, 107001, 107000, 106999, 106998, 106997, 106996, 106995, 106994, 106993, 106992, 106991, 106990, 106989); +INSERT INTO `item_currency_cost` (`ID`, `ItemID`, `VerifiedBuild`) VALUES +(103622, 265534, 67186), +(106105, 272446, 67186), +(106104, 272444, 67186), +(106103, 272445, 67186), +(106101, 272441, 67186), +(106099, 269641, 67186), +(106098, 268457, 67186), +(106097, 269613, 67186), +(106096, 269614, 67186), +(106095, 269636, 67186), +(106045, 268457, 67186), +(106043, 269613, 67186), +(106042, 269614, 67186), +(106041, 269636, 67186), +(106040, 269641, 67186), +(107008, 275447, 67186), +(107007, 275446, 67186), +(107006, 275445, 67186), +(107005, 275444, 67186), +(107004, 275442, 67186), +(107003, 275440, 67186), +(107002, 248248, 67186), +(107001, 247822, 67186), +(107000, 235549, 67186), +(106999, 237141, 67186), +(106998, 226357, 67186), +(106997, 213438, 67186), +(106996, 209060, 67186), +(106995, 204798, 67186), +(106994, 199412, 67186), +(106993, 192557, 67186), +(106992, 187682, 67186), +(106991, 187525, 67186), +(106990, 182717, 67186), +(106989, 174836, 67186); + +DELETE FROM `item_effect` WHERE `VerifiedBuild`>0 AND `ID` IN (211569, 207359, 234409, 234408, 234407, 234406, 234405, 234404, 234403, 234402, 234400, 234399, 234396, 234395, 230451, 209845); +INSERT INTO `item_effect` (`ID`, `LegacySlotIndex`, `TriggerType`, `Charges`, `CoolDownMSec`, `CategoryCoolDownMSec`, `SpellCategoryID`, `SpellID`, `ChrSpecializationID`, `PlayerConditionID`, `VerifiedBuild`) VALUES +(211569, 2, 0, -1, -1, -1, 0, 1237942, 0, 0, 67186), +(207359, 1, 0, -1, -1, -1, 0, 1235216, 0, 0, 67186), +(234409, 1, 6, 0, -1, -1, 0, 1296760, 0, 0, 67186), +(234408, 0, 0, -1, -1, 3000, 330, 55884, 0, 0, 67186), +(234407, 1, 6, 0, -1, -1, 0, 1296759, 0, 0, 67186), +(234406, 0, 0, -1, -1, 3000, 330, 55884, 0, 0, 67186), +(234405, 1, 6, 0, -1, -1, 0, 1296758, 0, 0, 67186), +(234404, 0, 0, -1, -1, 3000, 330, 55884, 0, 0, 67186), +(234403, 1, 6, 0, -1, -1, 0, 1296756, 0, 0, 67186), +(234402, 0, 0, -1, -1, 3000, 330, 55884, 0, 0, 67186), +(234400, 1, 6, 0, -1, -1, 0, 1296734, 0, 0, 67186), +(234399, 0, 0, -1, -1, 3000, 330, 55884, 0, 0, 67186), +(234396, 1, 6, 0, -1, -1, 0, 1296731, 0, 0, 67186), +(234395, 0, 0, -1, -1, 3000, 330, 55884, 0, 0, 67186), +(230451, 0, 0, -1, -1, 3000, 330, 1295508, 0, 0, 67186), +(209845, 0, 0, -1, -1, -1, 0, 1233749, 0, 0, 67186); + +DELETE FROM `item_extended_cost` WHERE `VerifiedBuild`>0 AND `ID` IN (11605, 11604, 11603, 11602, 11601, 11600, 11547, 11546, 11541, 11540, 11539, 11533, 11029, 11028, 11027, 11026, 11574, 11542, 11525, 11521, 11520, 11519, 11400, 11269, 11268, 11267, 11266, 11139, 11138); +INSERT INTO `item_extended_cost` (`ID`, `Money`, `RequiredArenaRating`, `ArenaBracket`, `Flags`, `MinFactionID`, `MinReputation`, `RequiredAchievement`, `ItemID1`, `ItemID2`, `ItemID3`, `ItemID4`, `ItemID5`, `ItemCount1`, `ItemCount2`, `ItemCount3`, `ItemCount4`, `ItemCount5`, `CurrencyID1`, `CurrencyID2`, `CurrencyID3`, `CurrencyID4`, `CurrencyID5`, `CurrencyCount1`, `CurrencyCount2`, `CurrencyCount3`, `CurrencyCount4`, `CurrencyCount5`, `VerifiedBuild`) VALUES +(11605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 20, 0, 0, 0, 0, 67186), +(11604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 100, 0, 0, 0, 0, 67186), +(11603, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 60, 0, 0, 0, 0, 67186), +(11602, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 50, 0, 0, 0, 0, 67186), +(11601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 30, 0, 0, 0, 0, 67186), +(11600, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 15, 0, 0, 0, 0, 67186), +(11547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 120, 0, 0, 0, 0, 67186), +(11546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 10, 0, 0, 0, 0, 67186), +(11541, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 240, 0, 0, 0, 0, 67186), +(11540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 30, 0, 0, 0, 0, 67186), +(11539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 40, 0, 0, 0, 0, 67186), +(11533, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 150, 0, 0, 0, 0, 67186), +(11029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 20, 0, 0, 0, 0, 67186), +(11028, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 500, 0, 0, 0, 0, 67186), +(11027, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 200, 0, 0, 0, 0, 67186), +(11026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3393, 0, 0, 0, 0, 20, 0, 0, 0, 0, 67186), +(11574, 0, 0, 0, 0, 0, 0, 0, 275436, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(11542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 250, 0, 0, 0, 0, 67186), +(11525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 150, 0, 0, 0, 0, 67186), +(11521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 1800, 0, 0, 0, 0, 67186), +(11520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 1800, 0, 0, 0, 0, 67186), +(11519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 4500, 0, 0, 0, 0, 67186), +(11400, 0, 0, 0, 0, 0, 0, 0, 267051, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(11269, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 6000, 0, 0, 0, 0, 67186), +(11268, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3316, 0, 0, 0, 0, 500, 0, 0, 0, 0, 67186), +(11267, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3405, 3316, 0, 0, 0, 10, 200, 0, 0, 0, 67186), +(11266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3405, 3316, 0, 0, 0, 5, 150, 0, 0, 0, 67186), +(11139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3405, 0, 0, 0, 0, 500, 0, 0, 0, 0, 67186), +(11138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3405, 0, 0, 0, 0, 75, 0, 0, 0, 0, 67186); + +DELETE FROM `item_modified_appearance` WHERE `VerifiedBuild`>0 AND `ID` IN (308378, 308377, 307926, 307925, 307924, 298160, 76787, 24387); +INSERT INTO `item_modified_appearance` (`ID`, `ItemID`, `ItemAppearanceModifierID`, `ItemAppearanceID`, `OrderIndex`, `TransmogSourceTypeEnum`, `Flags`, `VerifiedBuild`) VALUES +(308378, 272961, 0, 130312, 0, 3, 0, 67186), +(308377, 272960, 0, 39148, 0, 3, 0, 67186), +(307926, 272318, 0, 130309, 0, 3, 4, 67186), +(307925, 272317, 0, 130308, 0, 3, 4, 67186), +(307924, 272316, 0, 130312, 0, 3, 0, 67186), +(298160, 251161, 0, 123088, 0, 1, 0, 67186), +(76787, 133494, 0, 12174, 0, 5, 0, 67186), +(24387, 49810, 0, 12174, 0, 1, 0, 67186); + +DELETE FROM `item_search_name` WHERE `VerifiedBuild`>0 AND `ID` IN (267007, 264717, 264338, 264336, 264332, 263238, 263230, 256683, 253451, 245938, 245560, 241044, 267641, 267640, 267639, 267638, 267607, 267606, 267605, 267604, 267482, 267481, 267480, 267479, 266432, 266431, 266430, 266429, 263269, 263268, 263267, 263265, 272961, 272960, 272318, 272317, 272316, 19355, 272338, 272337, 272336, 272321, 272320, 273874, 263970, 263969, 263968, 263967, 263966, 263963, 263960, 263959, 263956, 263954, 263952, 263950, 263949, 263946, 263943, 263942, 263941, 263707, 263706, 263705, 263704, 263703, 263702, 263701, 263700, 263699, 263698, 263697, 263696, 263695, 263694, 263693, 263692, 263691, 263690, 263689, 263688, 263687, 263686, 263685, 263684, 263683, 263682, 263681, 263680, 263679, 263678, 263677, 263676, 263675, 263674, 263673, 263672, 263671, 263670, 263669, 263668, 263667, 263666, 263665, 263664, 263663, 263662, 263661, 263660, 263659, 263658, 263657, 263656, 263655, 263654, 263653, 263652, 263651, 263650, 263649, 263648, 263647, 263646, 263645, 263644, 263643, 263642, 263641, 263640, 263639, 263638, 263637, 263636, 263635, 263634, 263633, 263632, 263631, 263630, 263629, 263628, 263627, 263626, 263625, 263624, 263623, 263622, 263621, 263620, 263619, 263618, 263617, 263616, 263615, 263614, 263613, 263612, 263611, 263610, 263609, 263608, 263607, 263606, 263605, 263604, 263603, 263602, 263601, 263600, 263599, 263598, 263597, 263596, 263595, 263594, 263593, 263592, 263591, 263590, 263589, 263588, 263587, 263586, 263585, 251161, 133494, 49810, 263286, 255627, 253582); +INSERT INTO `item_search_name` (`ID`, `AllowableRace`, `Display`, `OverallQualityID`, `ExpansionID`, `MinFactionID`, `MinReputation`, `AllowableClass`, `RequiredLevel`, `RequiredSkill`, `RequiredSkillRank`, `RequiredAbility`, `ItemLevel`, `Flags1`, `Flags2`, `Flags3`, `Flags4`, `Flags5`, `AllowableRace_1`, `AllowableRace_2`, `VerifiedBuild`) VALUES +(267007, -1, 'Eye of Acherus', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134217792, 139264, 0, 0, 0, -1, -1, 67186), +(264717, -1, 'Amani Warding Hex', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(264338, -1, 'Domanaar Control Console', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(264336, -1, 'Voidlight Brazier', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(264332, -1, 'Amani Ritual Altar', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134221888, 139264, 0, 0, 0, -1, -1, 67186), +(263238, -1, 'Illicit Long Table', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134221888, 139264, 0, 0, 0, -1, -1, 67186), +(263230, -1, 'Magister\'s Bookshelf', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(256683, -1, 'Silvermoon Training Dummy', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(253451, -1, 'Veilroot Fountain', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134221888, 139264, 0, 0, 0, -1, -1, 67186), +(245938, -1, 'Overgrown Arathi Trellis', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(245560, -1, 'Meadery Ochre Window', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(241044, -1, 'Argussian Crate', 2, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134287424, 139264, 0, 0, 0, -1, -1, 67186), +(267641, -1, 'Tarnished Silvermoon Suncrest', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267640, -1, 'Tarnished Silvermoon Sunveil', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267639, -1, 'Tarnished Silvermoon Sunguard', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267638, -1, 'Tarnished Silvermoon Sunspire', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267607, -1, 'Hazy Penumbral Handwraps', 2, 11, 0, 0, -1, 80, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267606, -1, 'Gloves of Infinite Gravity', 2, 11, 0, 0, -1, 80, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267605, -1, 'Neverending Vortex Grasps', 2, 11, 0, 0, -1, 80, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267604, -1, 'Clutches of the Colossal Behemoths', 2, 11, 0, 0, -1, 80, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267482, -1, 'Aspiring Hara\'ti Defender\'s Greatbelt', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267481, -1, 'Aspiring Hara\'ti Defender\'s Belt', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267480, -1, 'Aspiring Hara\'ti Defender\'s Cord', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(267479, -1, 'Aspiring Hara\'ti Defender\'s Sash', 3, 11, 0, 0, -1, 81, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(266432, -1, 'Silvermoon Suncrest', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 0, 24576, 0, 0, 0, -1, -1, 67186), +(266431, -1, 'Silvermoon Sunveil', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 0, 24576, 0, 0, 0, -1, -1, 67186), +(266430, -1, 'Silvermoon Sunguard', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 0, 24576, 0, 0, 0, -1, -1, 67186), +(266429, -1, 'Silvermoon Sunspire', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 0, 24576, 0, 0, 0, -1, -1, 67186), +(263269, -1, 'Hara\'ti Defender\'s Greatbelt', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(263268, -1, 'Hara\'ti Defender\'s Belt', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(263267, -1, 'Hara\'ti Defender\'s Cord', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(263265, -1, 'Hara\'ti Defender\'s Sash', 3, 11, 0, 0, -1, 90, 0, 0, 0, 100, 36864, 24576, 0, 0, 0, -1, -1, 67186), +(272961, -1, 'Spellbreaker\'s Bladestaff', 3, 11, 0, 0, -1, 1, 0, 0, 0, 1, 134221824, 155648, 0, 0, 0, -1, -1, 67186), +(272960, -1, 'Spellbreaker\'s Shieldwall', 3, 11, 0, 0, -1, 1, 0, 0, 0, 1, 134221824, 155648, 0, 0, 0, -1, -1, 67186), +(272318, -1, 'Spellbreaker\'s Phoenixblade', 3, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(272317, -1, 'Spellbreaker\'s Phoenixglaive', 3, 11, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(272316, -1, 'Spellbreaker\'s Bladelance', 3, 11, 0, 0, -1, 1, 0, 0, 0, 1, 134221824, 155648, 0, 0, 0, -1, -1, 67186), +(19355, -1, 'Shadow Wing Focus Staff', 4, 0, 0, 0, -1, 25, 0, 0, 0, 29, 0, 8704, 0, 0, 0, -1, -1, 67186), +(272338, -1, 'Mage Guard\'s Spellsteel', 3, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(272337, -1, 'Mage Guard\'s Spellblade', 3, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(272336, -1, 'Nullbeacon Rift Smasher', 3, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(272321, -1, 'Arcane Ranger\'s Spellbow', 3, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(272320, -1, 'Nullbeacon Rift Channeler', 3, -3, 0, 0, -1, 1, 0, 0, 0, 1, 134254592, 139264, 0, 65536, 0, -1, -1, 67186), +(273874, -1, 'Void-Touched Sunfury Poleaxe', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263970, -1, 'Void-Touched Glaiveblade', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263969, -1, 'Void-Touched Greatwand', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 25088, 0, 65536, 0, -1, -1, 67186), +(263968, -1, 'Void-Touched Foci', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 25088, 0, 65536, 0, -1, -1, 67186), +(263967, -1, 'Void-Touched Greatbow', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263966, -1, 'Void-Touched Greatblade', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263963, -1, 'Void-Touched Dueling Blade', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263960, -1, 'Void-Touched Flaredblade', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263959, -1, 'Void-Touched Tome', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263956, -1, 'Void-Touched Smasher', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263954, -1, 'Void-Touched Battle Baton', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263952, -1, 'Void-Touched Sunfury Stave', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263950, -1, 'Void-Touched Spade', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263949, -1, 'Void-Touched Bulwark', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263946, -1, 'Void-Touched Basher', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263943, -1, 'Void-Touched Gutter', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263942, -1, 'Void-Touched Fang', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263941, -1, 'Void-Touched Rifle', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263707, -1, 'Bracelets of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263706, -1, 'Cloak of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263705, -1, 'Waistband of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263704, -1, 'Pauldrons of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263703, -1, 'Legplates of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263702, -1, 'Helm of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263701, -1, 'Gauntlets of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263700, -1, 'Sabatons of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263699, -1, 'Breastplate of Voidwrath', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263698, -1, 'Void Nemesis\' Blouse', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263697, -1, 'Void Nemesis\' Bracers', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263696, -1, 'Void Nemesis\' Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263695, -1, 'Void Nemesis\' Belt', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263694, -1, 'Void Nemesis\' Spaulders', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263693, -1, 'Void Nemesis\' Leggings', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263692, -1, 'Void Nemesis\' Skullcap', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263691, -1, 'Void Nemesis\' Gloves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263690, -1, 'Void Nemesis\' Boots', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263689, -1, 'Void Nemesis\' Robes', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263688, -1, 'Greaves of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263687, -1, 'Bracers of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263686, -1, 'Cloak of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263685, -1, 'Belt of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263684, -1, 'Epaulets of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263683, -1, 'Kilt of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263682, -1, 'Helmet of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263681, -1, 'Gauntlets of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263680, -1, 'Sabatons of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263679, -1, 'Breastplate of Void Storms', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263678, -1, 'Voidfang Bracers', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263677, -1, 'Voidfang Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263676, -1, 'Voidfang Belt', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263675, -1, 'Voidfang Spaulders', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263674, -1, 'Voidfang Pants', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263673, -1, 'Voidfang Hood', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263672, -1, 'Voidfang Gloves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263671, -1, 'Voidfang Boots', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263670, -1, 'Voidfang Chestpiece', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263669, -1, 'Blouse of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263668, -1, 'Bindings of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263667, -1, 'Cloak of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263666, -1, 'Belt of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263665, -1, 'Pauldrons of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263664, -1, 'Leggings of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263663, -1, 'Halo of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263662, -1, 'Handguards of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263661, -1, 'Boots of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263660, -1, 'Robes of Voidcendence', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263659, -1, 'Void\'s Judgment Greaves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263658, -1, 'Void\'s Judgment Bindings', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263657, -1, 'Void\'s Judgment Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263656, -1, 'Void\'s Judgment Belt', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263655, -1, 'Void\'s Judgment Spaulders', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263654, -1, 'Void\'s Judgment Legplates', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263653, -1, 'Void\'s Judgment Crown', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263652, -1, 'Void\'s Judgment Gauntlets', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263651, -1, 'Void\'s Judgment Sabatons', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263650, -1, 'Void\'s Judgment Breastplate', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263649, -1, 'Bindings of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263648, -1, 'Cloak of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263647, -1, 'Cord of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263646, -1, 'Spaulders of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263645, -1, 'Pants of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263644, -1, 'Helm of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263643, -1, 'Grips of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263642, -1, 'Talons of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263641, -1, 'Vest of the Void Acolyte', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263640, -1, 'Voidwind Blouse', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263639, -1, 'Voidwind Bindings', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263638, -1, 'Voidwind Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263637, -1, 'Voidwind Belt', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263636, -1, 'Voidwind Mantle', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263635, -1, 'Voidwind Pants', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263634, -1, 'Voidwind Crown', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263633, -1, 'Voidwind Gloves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263632, -1, 'Voidwind Boots', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263631, -1, 'Voidwind Robes', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263630, -1, 'Voidstalker\'s Bracers', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263629, -1, 'Voidstalker\'s Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263628, -1, 'Voidstalker\'s Belt', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263627, -1, 'Voidstalker\'s Spaulders', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263626, -1, 'Voidstalker\'s Legguards', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263625, -1, 'Voidstalker\'s Helm', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263624, -1, 'Voidstalker\'s Gauntlets', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263623, -1, 'Voidstalker\'s Greaves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263622, -1, 'Voidstalker\'s Breastplate', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263621, -1, 'Void-Warder\'s Vambraces', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263620, -1, 'Void-Warder\'s Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263619, -1, 'Void-Warder\'s Girdle', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263618, -1, 'Void-Warder\'s Pauldrons', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263617, -1, 'Void-Warder\'s Legplates', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263616, -1, 'Void-Warder\'s Crown', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263615, -1, 'Void-Warder\'s Claws', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263614, -1, 'Void-Warder\'s Talons', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263613, -1, 'Void-Warder\'s Breastplate', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263612, -1, 'Voidrage Chestguard', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263611, -1, 'Voidrage Bracers', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263610, -1, 'Voidrage Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263609, -1, 'Voidrage Belt', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263608, -1, 'Voidrage Pauldrons', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263607, -1, 'Voidrage Legguards', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263606, -1, 'Voidrage Cover', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263605, -1, 'Voidrage Handguards', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263604, -1, 'Voidrage Boots', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263603, -1, 'Voidrage Robe', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263602, -1, 'Voidwalker\'s Bracers', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263601, -1, 'Voidwalker\'s Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263600, -1, 'Voidwalker\'s Cord', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263599, -1, 'Voidwalker\'s Shoulderblades', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263598, -1, 'Voidwalker\'s Leggings', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263597, -1, 'Voidwalker\'s Skullcap', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263596, -1, 'Voidwalker\'s Gloves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263595, -1, 'Voidwalker\'s Sandals', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263594, -1, 'Voidwalker\'s Harness', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263593, -1, 'Void Rider\'s Vambraces', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263592, -1, 'Void Rider\'s Cloak', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(263591, -1, 'Void Rider\'s Girdle', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263590, -1, 'Void Rider\'s Pauldrons', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263589, -1, 'Void Rider\'s Leggings', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263588, -1, 'Void Rider\'s Helm', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263587, -1, 'Void Rider\'s Gloves', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263586, -1, 'Void Rider\'s Sabatons', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 36864, 24576, 0, 65536, 0, -1, -1, 67186), +(263585, -1, 'Void Rider\'s Breastplate', 4, 11, 0, 0, -1, 80, 0, 0, 0, 1, 32768, 24576, 0, 65536, 0, -1, -1, 67186), +(251161, -1, 'Shroud of the Soulhunter', 3, 11, 0, 0, -1, 78, 0, 0, 0, 108, 0, 8192, 0, 0, 0, -1, -1, 67186), +(133494, -1, 'Scabrous Zombie Belt', 3, 2, 0, 0, -1, 30, 0, 0, 0, 35, 0, 24576, 8388608, 0, 0, -1, -1, 67186), +(49810, -1, 'Scabrous Zombie Belt', 4, 2, 0, 0, -1, 30, 0, 0, 0, 35, 0, 24576, 0, 0, 0, -1, -1, 67186), +(263286, -1, 'Repurposed Fungarian Gong', 3, 11, 0, 0, -1, 1, 0, 0, 0, 1, 134250496, 143360, 0, 65536, 0, -1, -1, 67186), +(255627, -1, 'Galactic Gladiator\'s Hammer', 4, 11, 0, 0, -1, 90, 0, 0, 0, 197, 4096, 8192, 0, 0, 0, -1, -1, 67186), +(253582, -1, 'Fangfin Flailer', 3, 11, 0, 0, -1, 1, 0, 0, 0, 1, 134250496, 139264, 8388608, 65536, 0, -1, -1, 67186); + +DELETE FROM `item_sparse` WHERE `VerifiedBuild`>0 AND `ID` IN (203932, 210174, 206969, 206968, 206967, 204977, 204568, 204567, 204565, 201321, 201320, 201319, 201318, 201317, 201316, 201315, 201314, 201313, 201312, 201311, 201310, 200616, 200615, 200614, 245345, 243343, 243302, 274267, 255157, 239563, 223245, 267009, 267007, 264717, 264342, 264338, 264336, 264332, 264330, 264329, 264258, 263238, 263233, 263230, 263042, 263036, 256683, 253451, 251967, 245938, 245560, 241044, 264914, 275447, 275446, 275445, 275444, 275442, 275440, 275436, 248248, 247822, 237141, 235549, 226357, 213438, 209060, 204798, 199412, 192557, 187682, 187525, 182717, 174836, 257741, 257735, 255844, 255843, 248592, 248135, 274427, 267643, 267642, 267641, 267640, 267639, 267638, 267607, 267606, 267605, 267604, 267482, 267481, 267480, 267479, 266432, 266431, 266430, 266429, 265740, 265739, 264507, 263269, 263268, 263267, 263265, 270562, 249497, 272961, 272960, 272318, 272317, 272316, 271631, 19355, 274578, 268455, 268122, 272338, 272337, 272336, 272321, 272320, 268481, 268456, 273874, 263970, 263969, 263968, 263967, 263966, 263963, 263960, 263959, 263956, 263954, 263952, 263950, 263949, 263946, 263943, 263942, 263941, 263707, 263706, 263705, 263704, 263703, 263702, 263701, 263700, 263699, 263698, 263697, 263696, 263695, 263694, 263693, 263692, 263691, 263690, 263689, 263688, 263687, 263686, 263685, 263684, 263683, 263682, 263681, 263680, 263679, 263678, 263677, 263676, 263675, 263674, 263673, 263672, 263671, 263670, 263669, 263668, 263667, 263666, 263665, 263664, 263663, 263662, 263661, 263660, 263659, 263658, 263657, 263656, 263655, 263654, 263653, 263652, 263651, 263650, 263649, 263648, 263647, 263646, 263645, 263644, 263643, 263642, 263641, 263640, 263639, 263638, 263637, 263636, 263635, 263634, 263633, 263632, 263631, 263630, 263629, 263628, 263627, 263626, 263625, 263624, 263623, 263622, 263621, 263620, 263619, 263618, 263617, 263616, 263615, 263614, 263613, 263612, 263611, 263610, 263609, 263608, 263607, 263606, 263605, 263604, 263603, 263602, 263601, 263600, 263599, 263598, 263597, 263596, 263595, 263594, 263593, 263592, 263591, 263590, 263589, 263588, 263587, 263586, 263585, 251161, 133494, 49810, 264323, 264322, 264321, 264320, 264319, 264318, 264317, 264316, 264315, 264314, 256700, 250445, 250360, 250443, 272125, 263286, 273307, 265790, 246753, 255627, 266969, 253582); +INSERT INTO `item_sparse` (`ID`, `AllowableRace`, `Description`, `Display3`, `Display2`, `Display1`, `Display`, `ExpansionID`, `DmgVariance`, `LimitCategory`, `DurationInInventory`, `QualityModifier`, `BagFamily`, `StartQuestID`, `LanguageID`, `ItemRange`, `StatPercentageOfSocket1`, `StatPercentageOfSocket2`, `StatPercentageOfSocket3`, `StatPercentageOfSocket4`, `StatPercentageOfSocket5`, `StatPercentageOfSocket6`, `StatPercentageOfSocket7`, `StatPercentageOfSocket8`, `StatPercentageOfSocket9`, `StatPercentageOfSocket10`, `StatPercentEditor1`, `StatPercentEditor2`, `StatPercentEditor3`, `StatPercentEditor4`, `StatPercentEditor5`, `StatPercentEditor6`, `StatPercentEditor7`, `StatPercentEditor8`, `StatPercentEditor9`, `StatPercentEditor10`, `Stackable`, `MaxCount`, `MinReputation`, `RequiredAbility`, `AllowableRace_1`, `AllowableRace_2`, `SellPrice`, `BuyPrice`, `VendorStackCount`, `PriceVariance`, `PriceRandomValue`, `Flags1`, `Flags2`, `Flags3`, `Flags4`, `Flags5`, `FactionRelated`, `ModifiedCraftingReagentItemID`, `ContentTuningID`, `PlayerLevelToItemLevelCurveID`, `ItemLevelOffsetCurveID`, `ItemLevelOffsetItemLevel`, `ItemSquishEraID`, `ItemNameDescriptionID`, `RequiredTransmogHoliday`, `RequiredHoliday`, `GemProperties`, `SocketMatchEnchantmentId`, `TotemCategoryID`, `InstanceBound`, `ZoneBound1`, `ZoneBound2`, `ItemSet`, `LockID`, `PageID`, `ItemDelay`, `MinFactionID`, `RequiredSkillRank`, `RequiredSkill`, `ItemLevel`, `AllowableClass`, `ArtifactID`, `SpellWeight`, `SpellWeightCategory`, `SocketType1`, `SocketType2`, `SocketType3`, `SheatheType`, `Material`, `PageMaterialID`, `Bonding`, `DamageDamageType`, `StatModifierBonusStat1`, `StatModifierBonusStat2`, `StatModifierBonusStat3`, `StatModifierBonusStat4`, `StatModifierBonusStat5`, `StatModifierBonusStat6`, `StatModifierBonusStat7`, `StatModifierBonusStat8`, `StatModifierBonusStat9`, `StatModifierBonusStat10`, `ContainerSlots`, `RequiredPVPMedal`, `RequiredPVPRank`, `RequiredLevel`, `InventoryType`, `OverallQualityID`, `VerifiedBuild`) VALUES +(203932, -1, 'This disturbing little book is bound in some kind of purple skin, stitched from many irregular pieces.', '', '', '', 'Sentient Book', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.034000039100646972, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8722, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 1, 67186), +(210174, -1, 'Teaches you how to perform the Illusory Adornment: Dreams enchantment.', '', '', '', 'Formula: Illusory Adornment: Dreams', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 2000000, 1, 1, 1.012400031089782714, 64, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 2825, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(206969, -1, '', '', '', '', 'Illusory Adornment: Dreams', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.982500016689300537, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(206968, -1, '', '', '', '', 'Illusory Adornment: Dreams', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.952400028705596923, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(206967, -1, '', '', '', '', 'Illusory Adornment: Dreams', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.048799991607666015, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(204977, -1, 'Teaches you how to perform the Illusory Adornment: Spores enchantment.', '', '', '', 'Formula: Illusory Adornment: Spores', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 2000000, 1, 1, 0.989600002765655517, 4160, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 2825, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(204568, -1, '', '', '', '', 'Illusory Adornment: Spores', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.000399947166442871, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(204567, -1, '', '', '', '', 'Illusory Adornment: Spores', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.996699988842010498, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(204565, -1, '', '', '', '', 'Illusory Adornment: Spores', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.989400029182434082, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201321, -1, '', '', '', '', 'Illusory Adornment: Order', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.036999940872192382, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201320, -1, '', '', '', '', 'Illusory Adornment: Order', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.03340005874633789, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201319, -1, '', '', '', '', 'Illusory Adornment: Order', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.029700040817260742, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201318, -1, '', '', '', '', 'Illusory Adornment: Air', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.026000022888183593, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201317, -1, '', '', '', '', 'Illusory Adornment: Air', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.02240002155303955, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201316, -1, '', '', '', '', 'Illusory Adornment: Air', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.018700003623962402, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201315, -1, '', '', '', '', 'Illusory Adornment: Earth', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.014999985694885253, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201314, -1, '', '', '', '', 'Illusory Adornment: Earth', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.011299967765808105, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201313, -1, '', '', '', '', 'Illusory Adornment: Earth', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.007699966430664062, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201312, -1, '', '', '', '', 'Illusory Adornment: Frost', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.003999948501586914, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201311, -1, '', '', '', '', 'Illusory Adornment: Frost', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 1.000300049781799316, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(201310, -1, '', '', '', '', 'Illusory Adornment: Frost', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.970099985599517822, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(200616, -1, '', '', '', '', 'Illusory Adornment: Fire', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.985000014305114746, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 415, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(200615, -1, '', '', '', '', 'Illusory Adornment: Fire', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.981299996376037597, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 400, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(200614, -1, '', '', '', '', 'Illusory Adornment: Fire', 9, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, -1, -1, 50000, 200000, 1, 1, 0.977599978446960449, 268435520, 24576, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 60, 0, 1, 67186), +(245345, -1, 'A coalesced mote of pure, primal energy. Acquired by purchase from Abundance Vendor Chel the Chip or Abyss Angler Depthdiver Tu\'nakit.', '', '', '', 'Fused Vitality', 11, 0, 0, 0, 0, 123733208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, -1, -1, 2000, 10000, 1, 1, 1.006100058555603027, 0, -2147459072, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(243343, -1, 'A window into something much, much more.', '', '', '', 'Angler\'s Anomaly', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, -1, -1, 25000, 125000, 1, 1, 0.976400017738342285, 134284352, 155648, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(243302, -1, 'An overwhelming catalyst of growth.', '', '', '', 'Aquarius Bloom', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, -1, -1, 25000, 125000, 1, 1, 1.046599984169006347, 134284352, 155648, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(274267, -1, 'A coalesced mote of pure, primal energy. Acquired by purchase from Abundance Vendor Chel the Chip or Abyss Angler Depthdiver Tu\'nakit.', '', '', '', 'Fused Vitality', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.995599985122680664, 0, -2147459072, 67108864, 268435456, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(255157, -1, '', '', '', '', 'Abyss Angler\'s Fish Log', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.989199995994567871, 134218816, 135168, 67375104, 16384, 0, 0, 0, 3615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 3, 67186), +(239563, -1, 'Teaches you how to summon the Void-Scarred Lynx. This mount changes depending on your Riding skill and location.', '', '', '', 'Shadowbound Leash', 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 33388, -1, -1, 0, 0, 1, 1, 0.956900000572204589, 36864, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(223245, -1, '', '', '', '', 'Ensemble: Abyss Angler', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.00300002098083496, 134217792, 139264, 0, 16384, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 4, 67186), +(267009, -1, '', '', '', '', 'Amani Training Dummy', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134217792, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(267007, -1, '', '', '', '', 'Eye of Acherus', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134217792, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264717, -1, '', '', '', '', 'Amani Warding Hex', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264342, -1, '', '', '', '', 'Cosmic Void Cache', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264338, -1, '', '', '', '', 'Domanaar Control Console', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264336, -1, '', '', '', '', 'Voidlight Brazier', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264332, -1, '', '', '', '', 'Amani Ritual Altar', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134221888, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264330, -1, '', '', '', '', 'Amani Hanging Brazier', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264329, -1, '', '', '', '', 'Amani Dining Table', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264258, -1, '', '', '', '', 'Blossoming Forge', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(263238, -1, '', '', '', '', 'Illicit Long Table', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134221888, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(263233, -1, '', '', '', '', 'Sin\'dorei Spinning Library', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(263230, -1, '', '', '', '', 'Magister\'s Bookshelf', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(263042, -1, '', '', '', '', 'Rootlight Lamppost', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(263036, -1, '', '', '', '', 'Hanging Dawnflower', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(256683, -1, '', '', '', '', 'Silvermoon Training Dummy', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(253451, -1, '', '', '', '', 'Veilroot Fountain', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134221888, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(251967, -1, '', '', '', '', 'Fungarian Banner', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(245938, -1, '', '', '', '', 'Overgrown Arathi Trellis', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(245560, -1, '', '', '', '', 'Meadery Ochre Window', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(241044, -1, '', '', '', '', 'Argussian Crate', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 10000, 100000, 1, 1, 1, 134287424, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 2, 67186), +(264914, -1, 'Cache containing Field Accolades, Relic Coffer Key shards, materials for upgrading gear, gold, and more.', '', '', '', 'Ranger\'s Cache', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.964500010013580322, 65540, 8192, 1073872896, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 0, 4, 67186), +(275447, -1, 'Teaches you how to summon this mount.', '', '', '', 'Speculative Shreddertank', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.95840001106262207, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(275446, -1, 'Teaches you how to summon this mount.', '', '', '', 'High-Yield Shreddertank', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.954699993133544921, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(275445, -1, 'Teaches you how to summon this mount.', '', '', '', 'Profit-Green Shreddertank', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.951099991798400878, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(275444, -1, 'Teaches you how to summon this mount.', '', '', '', 'Blue-Chip Shreddertank', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 1.047500014305114746, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(275442, -1, 'Teaches you how to summon this mount.', '', '', '', 'Amethyst Mechsuit', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 33388, -1, -1, 0, 0, 1, 1, 1.040099978446960449, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(275440, -1, 'Teaches you how to summon this mount.', '', '', '', 'Cerulean Deathwalker', -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 33388, -1, -1, 0, 1, 1, 1, 1.032799959182739257, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(275436, -1, 'Granted by the Midnight Keystone Myth: Season One achievement. Lindormi, in Silvermoon or the Timeways, would be interested in trading for this. Expires at the end of the season.', '', '', '', 'Timelost Saddle', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.991599977016448974, 134283296, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 4, 67186), +(248248, -1, 'Teaches you how to summon this mount.', '', '', '', 'Azure Void Flyer', 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 33388, -1, -1, 0, 0, 1, 1, 0.951099991798400878, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(247822, -1, 'Teaches you how to summon this mount.', '', '', '', 'Scarlet Void Flyer', 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 33388, -1, -1, 0, 0, 1, 1, 0.972999989986419677, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(237141, -1, 'Teaches you how to summon this mount.', '', '', '', 'Enterprising Shreddertank', 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.997699975967407226, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(235549, -1, 'Teaches you how to summon this mount.', '', '', '', 'Crimson Shreddertank', 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 1.034600019454956054, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(226357, -1, 'Teaches you how to summon this mount.', '', '', '', 'Diamond Mechsuit', 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 33388, -1, -1, 0, 0, 1, 1, 0.959100008010864257, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(213438, -1, 'Teaches you how to summon this mount.', '', '', '', 'Infinite Armoredon', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.964600026607513427, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(209060, -1, 'Teaches you how to summon this mount.', '', '', '', 'Verdant Armoredon', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.997600018978118896, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(204798, -1, 'Teaches you how to summon this mount.', '', '', '', 'Inferno Armoredon', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 1.015100002288818359, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(199412, -1, 'Teaches you how to summon this mount.', '', '', '', 'Hailstorm Armoredon', 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 33388, -1, -1, 0, 0, 1, 1, 0.981000006198883056, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(192557, -1, 'Teaches you how to summon this mount.', '', '', '', 'Restoration Deathwalker', 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 33388, -1, -1, 0, 1, 1, 1, 1.047099947929382324, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(187682, -1, 'Teaches you how to summon this mount.', '', '', '', 'Wastewarped Deathwalker', 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 33388, -1, -1, 0, 1, 1, 1, 1.035500049591064453, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(187525, -1, 'Teaches you how to summon this mount.', '', '', '', 'Soultwisted Deathwalker', 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 33388, -1, -1, 0, 1, 1, 1, 0.99449998140335083, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(182717, -1, 'Teaches you how to summon this mount.', '', '', '', 'Sintouched Deathwalker', 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 33388, -1, -1, 0, 1, 1, 1, 1.03470003604888916, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(174836, -1, 'Teaches you how to summon this mount.', '', '', '', 'Awakened Mindborer', 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 33388, -1, -1, 0, 1, 1, 1, 1.014700055122375488, 4096, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(257741, -1, 'Can be bought and sold on the Auction House.', '', '', '', 'B0P, Curator of Booms', 11, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, -1, -1, 86525, 432625, 1, 1, 1.007599949836730957, 0, -2147459072, 67108864, 0, 0, 0, 677, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(257735, -1, 'Can be bought and sold on the Auction House.', '', '', '', 'B0P, Curator of Booms', 11, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, -1, -1, 86525, 432625, 1, 1, 0.985599994659423828, 0, -2147459072, 67108864, 0, 0, 0, 677, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(255844, -1, 'Can be bought and sold on the Auction House.', '', '', '', 'HU5H, Nonchalant Pup', 11, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, -1, -1, 86525, 432625, 1, 1, 1.022199988365173339, 0, -2147459072, 67108864, 0, 0, 0, 671, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(255843, -1, 'Can be bought and sold on the Auction House.', '', '', '', 'HU5H, Nonchalant Pup', 11, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, -1, -1, 86525, 432625, 1, 1, 1.018599987030029296, 0, -2147459072, 67108864, 0, 0, 0, 671, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(248592, -1, 'Summons B1P, Scorcher of Souls. Created by players with the Engineering skill. Can be bought and sold on the Auction House.', '', '', '', 'B1P, Scorcher of Souls', 11, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, -1, -1, 87302, 436512, 1, 1, 0.969399988651275634, 64, -2147459072, 0, 0, 0, 0, 659, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(248135, -1, 'Summons Bip, Soul Scorcher. Created by players with the Engineering skill. Can be bought and sold on the Auction House.', '', '', '', 'B1P, Scorcher of Souls', 11, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0, 0, 0, -1, -1, 86525, 432625, 1, 1, 0.951099991798400878, 64, -2147459072, 0, 0, 0, 0, 659, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 372, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(274427, -1, 'NOTE: Not Guaranteed to Contain an Actual Mount', '', '', '', 'Sha Loot Box', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.047500014305114746, 98368, 12288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 4, 67186), +(267643, -1, '', '', '', '', 'Worn Amani Totemstring', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7889, 9250, 8250, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.979900002479553222, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, -1, 7, 49, 40, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 2, 3, 67186), +(267642, -1, '', '', '', '', 'Worn Amani Heartstring Pendant', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7889, 9250, 8250, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.049800038337707519, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, -1, 7, 36, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 2, 3, 67186), +(267641, -1, '', '', '', '', 'Tarnished Silvermoon Suncrest', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.046100020408630371, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 74, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 1, 3, 67186), +(267640, -1, '', '', '', '', 'Tarnished Silvermoon Sunveil', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.042400002479553222, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 73, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 1, 3, 67186), +(267639, -1, '', '', '', '', 'Tarnished Silvermoon Sunguard', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.038800001144409179, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 73, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 1, 3, 67186), +(267638, -1, '', '', '', '', 'Tarnished Silvermoon Sunspire', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.035099983215332031, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 5, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 1, 3, 67186), +(267607, -1, '', '', '', '', 'Hazy Penumbral Handwraps', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.9682999849319458, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 5, 7, 36, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 2, 67186), +(267606, -1, '', '', '', '', 'Gloves of Infinite Gravity', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3800, 3200, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.964699983596801757, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 73, 7, 32, 40, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 2, 67186), +(267605, -1, '', '', '', '', 'Neverending Vortex Grasps', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.961000025272369384, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 36, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 2, 67186), +(267604, -1, '', '', '', '', 'Clutches of the Colossal Behemoths', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.957300007343292236, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1, 0, 74, 7, 49, 40, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 2, 67186), +(267482, -1, '', '', '', '', 'Aspiring Hara\'ti Defender\'s Greatbelt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.997799992561340332, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 74, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 6, 3, 67186), +(267481, -1, '', '', '', '', 'Aspiring Hara\'ti Defender\'s Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.994199991226196289, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 6, 3, 67186), +(267480, -1, '', '', '', '', 'Aspiring Hara\'ti Defender\'s Cord', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.99049997329711914, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 6, 3, 67186), +(267479, -1, '', '', '', '', 'Aspiring Hara\'ti Defender\'s Sash', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.986800014972686767, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 5, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 81, 6, 3, 67186), +(266432, -1, '', '', '', '', 'Silvermoon Suncrest', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.023800015449523925, 0, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 74, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 1, 3, 67186), +(266431, -1, '', '', '', '', 'Silvermoon Sunveil', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.020200014114379882, 0, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 73, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 1, 3, 67186), +(266430, -1, '', '', '', '', 'Silvermoon Sunguard', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.016499996185302734, 0, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 73, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 1, 3, 67186), +(266429, -1, '', '', '', '', 'Silvermoon Sunspire', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.012799978256225585, 0, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 5, 7, 49, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 1, 3, 67186), +(265740, -1, '', '', '', '', 'Amani Totemstring', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7889, 9250, 8250, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5877, 1, 1, 1.046000003814697265, 32768, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, -1, 7, 49, 40, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 2, 3, 67186), +(265739, -1, '', '', '', '', 'Amani Heartstring Pendant', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7889, 9250, 8250, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5877, 1, 1, 1.042299985885620117, 32768, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, -1, 7, 36, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 2, 3, 67186), +(264507, -1, '', '', '', '', 'Crucible of Erratic Energies', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.982699990272521972, 561216, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 12, 4, 67186), +(263269, -1, '', '', '', '', 'Hara\'ti Defender\'s Greatbelt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 1.001000046730041503, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 74, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 6, 3, 67186), +(263268, -1, '', '', '', '', 'Hara\'ti Defender\'s Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.997399985790252685, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 6, 3, 67186), +(263267, -1, '', '', '', '', 'Hara\'ti Defender\'s Cord', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.993700027465820312, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 6, 3, 67186), +(263265, -1, '', '', '', '', 'Hara\'ti Defender\'s Sash', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 5, 1, 1, 0.986299991607666015, 36864, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 5, 7, 49, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 6, 3, 67186), +(270562, -1, 'A strangely tainted bone sample. Lady Darkglen might be interested in this.', '', '', '', 'Tainted Sample', 11, 0, 0, 0, 0, 0, 95548, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 0.983600020408630371, 64, 12288, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 1, 67186), +(249497, -1, 'Peppers so hot that the Sunwell blocks their entry.', '', '', '', 'Ghostland Pepper', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.999599993228912353, 2048, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 4, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 1, 67186), +(272961, -1, '', '', '', '', 'Spellbreaker\'s Bladestaff', 11, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.031999945640563964, 134221824, 155648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 17, 3, 67186), +(272960, -1, '', '', '', '', 'Spellbreaker\'s Shieldwall', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.028399944305419921, 134221824, 155648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 4, 6, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 14, 3, 67186), +(272318, -1, '', '', '', '', 'Spellbreaker\'s Phoenixblade', -3, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.013399958610534667, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 13, 3, 67186), +(272317, -1, '', '', '', '', 'Spellbreaker\'s Phoenixglaive', 11, 0.449999988079071044, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.009699940681457519, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 13, 3, 67186), +(272316, -1, '', '', '', '', 'Spellbreaker\'s Bladelance', 11, 0.60000002384185791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.006100058555603027, 134221824, 155648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 17, 3, 67186), +(271631, -1, 'NOTE: Not Guaranteed to Contain an Actual Mount', '', '', '', 'Light Guardian\'s Reward', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.980400025844573974, 98368, 12288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(19355, -1, '', '', '', '', 'Shadow Wing Focus Staff', 0, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3148, 0, 0, 18121, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 94830, 474152, 1, 1, 0.956399977207183837, 0, 8704, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 29, -1, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, 0, 5, 7, 40, -1, -1, 5, 0, 0, 0, 0, 0, 0, 0, 25, 17, 4, 67186), +(274578, -1, 'A small benevolence from Dundun, Loa of Abundance, containing 4500 Unalloyed Abundance.', '', '', '', 'Offering of Unalloyed Abundance', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.039899945259094238, 134217732, 139264, 131072, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(268455, -1, '', '', '', '', 'Enchanted Hourglass', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 0, 0.98339998722076416, 32832, 8192, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 3, 67186), +(268122, -1, 'Your coins have been dispelled. Participate more in the next match.', '', '', '', 'Dispelled Coins', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 1, 1, 1, 1, 1.005399942398071289, 65536, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 1, 67186), +(272338, -1, '', '', '', '', 'Mage Guard\'s Spellsteel', -3, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.039800047874450683, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 17, 3, 67186), +(272337, -1, '', '', '', '', 'Mage Guard\'s Spellblade', -3, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.036100029945373535, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 13, 3, 67186), +(272336, -1, '', '', '', '', 'Nullbeacon Rift Smasher', -3, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.005900025367736816, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 17, 3, 67186), +(272321, -1, '', '', '', '', 'Arcane Ranger\'s Spellbow', -3, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.950800001621246337, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3000, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 15, 3, 67186), +(272320, -1, '', '', '', '', 'Nullbeacon Rift Channeler', -3, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.020799994468688964, 134254592, 139264, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 17, 3, 67186), +(268481, -1, 'Teaches you how to summon the Breaker Bee. This mount changes depending on your Riding skill and location.', '', '', '', 'Magister\'s Spell Bee Comb', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 33388, -1, -1, 0, 0, 1, 1, 1.031800031661987304, 32768, 8192, 0, 16384, 0, 0, 0, 872, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 10, 0, 4, 67186), +(268456, -1, '', '', '', '', 'Animated Bench', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 0, 0.987100005149841308, 64, 8192, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 3, 67186), +(273874, -1, '', '', '', '', 'Void-Touched Sunfury Poleaxe', 11, 0.60000002384185791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.991500020027160644, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 17, 4, 67186), +(263970, -1, '', '', '', '', 'Void-Touched Glaiveblade', 11, 0.349999994039535522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.038400053977966308, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 8, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263969, -1, '', '', '', '', 'Void-Touched Greatwand', 11, 0.5, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.03470003604888916, 36864, 25088, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 2, 0, 1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 26, 4, 67186), +(263968, -1, '', '', '', '', 'Void-Touched Foci', 11, 0.5, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.031100034713745117, 36864, 25088, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 2, 0, 1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 26, 4, 67186), +(263967, -1, '', '', '', '', 'Void-Touched Greatbow', 11, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.027400016784667968, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3000, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 4, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 15, 4, 67186), +(263966, -1, '', '', '', '', 'Void-Touched Greatblade', 11, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.02369999885559082, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 17, 4, 67186), +(263963, -1, '', '', '', '', 'Void-Touched Dueling Blade', 11, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.01269996166229248, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263960, -1, '', '', '', '', 'Void-Touched Flaredblade', 11, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.975199997425079345, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263959, -1, '', '', '', '', 'Void-Touched Tome', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.971499979496002197, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 23, 4, 67186), +(263956, -1, '', '', '', '', 'Void-Touched Smasher', 11, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.960500001907348632, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263954, -1, '', '', '', '', 'Void-Touched Battle Baton', 11, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.953100025653839111, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 17, 4, 67186), +(263952, -1, '', '', '', '', 'Void-Touched Sunfury Stave', 11, 0.300000011920928955, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.04589998722076416, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 17, 4, 67186), +(263950, -1, '', '', '', '', 'Void-Touched Spade', 11, 0.60000002384185791, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.038499951362609863, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 17, 4, 67186), +(263949, -1, '', '', '', '', 'Void-Touched Bulwark', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.03489995002746582, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 4, 6, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 14, 4, 67186), +(263946, -1, '', '', '', '', 'Void-Touched Basher', 11, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.997399985790252685, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263943, -1, '', '', '', '', 'Void-Touched Gutter', 11, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.986299991607666015, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1800, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263942, -1, '', '', '', '', 'Void-Touched Fang', 11, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.982699990272521972, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1800, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 13, 4, 67186), +(263941, -1, '', '', '', '', 'Void-Touched Rifle', 11, 0.60000002384185791, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.978999972343444824, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3000, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 26, 4, 67186), +(263707, -1, '', '', '', '', 'Bracelets of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.049700021743774414, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263706, -1, '', '', '', '', 'Cloak of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.046000003814697265, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263705, -1, '', '', '', '', 'Waistband of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.015900015830993652, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263704, -1, '', '', '', '', 'Pauldrons of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.012199997901916503, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263703, -1, '', '', '', '', 'Legplates of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.008499979972839355, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263702, -1, '', '', '', '', 'Helm of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.004799962043762207, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263701, -1, '', '', '', '', 'Gauntlets of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.001199960708618164, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263700, -1, '', '', '', '', 'Sabatons of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.997500002384185791, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263699, -1, '', '', '', '', 'Breastplate of Voidwrath', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.993799984455108642, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263698, -1, '', '', '', '', 'Void Nemesis\' Blouse', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.990100026130676269, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263697, -1, '', '', '', '', 'Void Nemesis\' Bracers', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.986500024795532226, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263696, -1, '', '', '', '', 'Void Nemesis\' Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.982800006866455078, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263695, -1, '', '', '', '', 'Void Nemesis\' Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.979099988937377929, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263694, -1, '', '', '', '', 'Void Nemesis\' Spaulders', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.975399971008300781, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263693, -1, '', '', '', '', 'Void Nemesis\' Leggings', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.971800029277801513, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263692, -1, '', '', '', '', 'Void Nemesis\' Skullcap', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.968100011348724365, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263691, -1, '', '', '', '', 'Void Nemesis\' Gloves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.964399993419647216, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263690, -1, '', '', '', '', 'Void Nemesis\' Boots', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.960799992084503173, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263689, -1, '', '', '', '', 'Void Nemesis\' Robes', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.957099974155426025, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 20, 4, 67186), +(263688, -1, '', '', '', '', 'Greaves of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.026999950408935546, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263687, -1, '', '', '', '', 'Bracers of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.023300051689147949, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263686, -1, '', '', '', '', 'Cloak of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.019700050354003906, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263685, -1, '', '', '', '', 'Belt of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.016000032424926757, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263684, -1, '', '', '', '', 'Epaulets of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.012300014495849609, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263683, -1, '', '', '', '', 'Kilt of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.00859999656677246, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263682, -1, '', '', '', '', 'Helmet of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.004999995231628417, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263681, -1, '', '', '', '', 'Gauntlets of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.001299977302551269, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263680, -1, '', '', '', '', 'Sabatons of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.997600018978118896, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263679, -1, '', '', '', '', 'Breastplate of Void Storms', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.993900001049041748, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263678, -1, '', '', '', '', 'Voidfang Bracers', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.990299999713897705, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263677, -1, '', '', '', '', 'Voidfang Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.986599981784820556, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263676, -1, '', '', '', '', 'Voidfang Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.982900023460388183, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263675, -1, '', '', '', '', 'Voidfang Spaulders', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.97930002212524414, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263674, -1, '', '', '', '', 'Voidfang Pants', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.975600004196166992, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263673, -1, '', '', '', '', 'Voidfang Hood', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.971899986267089843, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263672, -1, '', '', '', '', 'Voidfang Gloves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.04180002212524414, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263671, -1, '', '', '', '', 'Voidfang Boots', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.038200020790100097, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263670, -1, '', '', '', '', 'Voidfang Chestpiece', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.034500002861022949, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263669, -1, '', '', '', '', 'Blouse of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.0307999849319458, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263668, -1, '', '', '', '', 'Bindings of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.027099967002868652, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263667, -1, '', '', '', '', 'Cloak of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.023499965667724609, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263666, -1, '', '', '', '', 'Belt of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.01979994773864746, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263665, -1, '', '', '', '', 'Pauldrons of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.016100049018859863, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263664, -1, '', '', '', '', 'Leggings of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.012400031089782714, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263663, -1, '', '', '', '', 'Halo of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.008800029754638671, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263662, -1, '', '', '', '', 'Handguards of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.005100011825561523, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263661, -1, '', '', '', '', 'Boots of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.001399993896484375, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263660, -1, '', '', '', '', 'Robes of Voidcendence', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.997799992561340332, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 20, 4, 67186), +(263659, -1, '', '', '', '', 'Void\'s Judgment Greaves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.994099974632263183, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263658, -1, '', '', '', '', 'Void\'s Judgment Bindings', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.99040001630783081, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263657, -1, '', '', '', '', 'Void\'s Judgment Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.986699998378753662, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263656, -1, '', '', '', '', 'Void\'s Judgment Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.956600010395050048, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263655, -1, '', '', '', '', 'Void\'s Judgment Spaulders', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.9528999924659729, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263654, -1, '', '', '', '', 'Void\'s Judgment Legplates', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.049299955368041992, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263653, -1, '', '', '', '', 'Void\'s Judgment Crown', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.045599937438964843, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263652, -1, '', '', '', '', 'Void\'s Judgment Gauntlets', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.042000055313110351, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263651, -1, '', '', '', '', 'Void\'s Judgment Sabatons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.038300037384033203, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263650, -1, '', '', '', '', 'Void\'s Judgment Breastplate', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.034600019454956054, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263649, -1, '', '', '', '', 'Bindings of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.030900001525878906, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263648, -1, '', '', '', '', 'Cloak of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.027300000190734863, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263647, -1, '', '', '', '', 'Cord of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.023599982261657714, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263646, -1, '', '', '', '', 'Spaulders of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.019899964332580566, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263645, -1, '', '', '', '', 'Pants of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.016199946403503417, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263644, -1, '', '', '', '', 'Helm of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.012599945068359375, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263643, -1, '', '', '', '', 'Grips of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.008900046348571777, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263642, -1, '', '', '', '', 'Talons of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.005200028419494628, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263641, -1, '', '', '', '', 'Vest of the Void Acolyte', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.001600027084350585, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263640, -1, '', '', '', '', 'Voidwind Blouse', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.971400022506713867, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263639, -1, '', '', '', '', 'Voidwind Bindings', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.967700004577636718, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263638, -1, '', '', '', '', 'Voidwind Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.96399998664855957, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263637, -1, '', '', '', '', 'Voidwind Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.960399985313415527, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263636, -1, '', '', '', '', 'Voidwind Mantle', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.956700026988983154, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263635, -1, '', '', '', '', 'Voidwind Pants', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.953000009059906005, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263634, -1, '', '', '', '', 'Voidwind Crown', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.049399971961975097, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263633, -1, '', '', '', '', 'Voidwind Gloves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.045799970626831054, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263632, -1, '', '', '', '', 'Voidwind Boots', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.042099952697753906, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263631, -1, '', '', '', '', 'Voidwind Robes', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.038400053977966308, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 20, 4, 67186), +(263630, -1, '', '', '', '', 'Voidstalker\'s Bracers', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.03470003604888916, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263629, -1, '', '', '', '', 'Voidstalker\'s Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.031100034713745117, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263628, -1, '', '', '', '', 'Voidstalker\'s Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.027400016784667968, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263627, -1, '', '', '', '', 'Voidstalker\'s Spaulders', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.02369999885559082, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263626, -1, '', '', '', '', 'Voidstalker\'s Legguards', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.020099997520446777, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263625, -1, '', '', '', '', 'Voidstalker\'s Helm', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.016399979591369628, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263624, -1, '', '', '', '', 'Voidstalker\'s Gauntlets', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.98619997501373291, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263623, -1, '', '', '', '', 'Voidstalker\'s Greaves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.982500016689300537, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263622, -1, '', '', '', '', 'Voidstalker\'s Breastplate', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.978900015354156494, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263621, -1, '', '', '', '', 'Void-Warder\'s Vambraces', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.975199997425079345, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263620, -1, '', '', '', '', 'Void-Warder\'s Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.971499979496002197, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263619, -1, '', '', '', '', 'Void-Warder\'s Girdle', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.967800021171569824, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263618, -1, '', '', '', '', 'Void-Warder\'s Pauldrons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.964200019836425781, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263617, -1, '', '', '', '', 'Void-Warder\'s Legplates', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.960500001907348632, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263616, -1, '', '', '', '', 'Void-Warder\'s Crown', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.956799983978271484, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263615, -1, '', '', '', '', 'Void-Warder\'s Claws', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.953100025653839111, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263614, -1, '', '', '', '', 'Void-Warder\'s Talons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.049600005149841308, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263613, -1, '', '', '', '', 'Void-Warder\'s Breastplate', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.04589998722076416, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263612, -1, '', '', '', '', 'Voidrage Chestguard', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.042199969291687011, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263611, -1, '', '', '', '', 'Voidrage Bracers', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.038599967956542968, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263610, -1, '', '', '', '', 'Voidrage Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.03489995002746582, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263609, -1, '', '', '', '', 'Voidrage Belt', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.031200051307678222, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263608, -1, '', '', '', '', 'Voidrage Pauldrons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.001000046730041503, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263607, -1, '', '', '', '', 'Voidrage Legguards', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.997399985790252685, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263606, -1, '', '', '', '', 'Voidrage Cover', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.993700027465820312, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263605, -1, '', '', '', '', 'Voidrage Handguards', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.990000009536743164, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263604, -1, '', '', '', '', 'Voidrage Boots', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.986299991607666015, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263603, -1, '', '', '', '', 'Voidrage Robe', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.982699990272521972, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 20, 4, 67186), +(263602, -1, '', '', '', '', 'Voidwalker\'s Bracers', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.978999972343444824, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263601, -1, '', '', '', '', 'Voidwalker\'s Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.975300014019012451, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186); + +INSERT INTO `item_sparse` (`ID`, `AllowableRace`, `Description`, `Display3`, `Display2`, `Display1`, `Display`, `ExpansionID`, `DmgVariance`, `LimitCategory`, `DurationInInventory`, `QualityModifier`, `BagFamily`, `StartQuestID`, `LanguageID`, `ItemRange`, `StatPercentageOfSocket1`, `StatPercentageOfSocket2`, `StatPercentageOfSocket3`, `StatPercentageOfSocket4`, `StatPercentageOfSocket5`, `StatPercentageOfSocket6`, `StatPercentageOfSocket7`, `StatPercentageOfSocket8`, `StatPercentageOfSocket9`, `StatPercentageOfSocket10`, `StatPercentEditor1`, `StatPercentEditor2`, `StatPercentEditor3`, `StatPercentEditor4`, `StatPercentEditor5`, `StatPercentEditor6`, `StatPercentEditor7`, `StatPercentEditor8`, `StatPercentEditor9`, `StatPercentEditor10`, `Stackable`, `MaxCount`, `MinReputation`, `RequiredAbility`, `AllowableRace_1`, `AllowableRace_2`, `SellPrice`, `BuyPrice`, `VendorStackCount`, `PriceVariance`, `PriceRandomValue`, `Flags1`, `Flags2`, `Flags3`, `Flags4`, `Flags5`, `FactionRelated`, `ModifiedCraftingReagentItemID`, `ContentTuningID`, `PlayerLevelToItemLevelCurveID`, `ItemLevelOffsetCurveID`, `ItemLevelOffsetItemLevel`, `ItemSquishEraID`, `ItemNameDescriptionID`, `RequiredTransmogHoliday`, `RequiredHoliday`, `GemProperties`, `SocketMatchEnchantmentId`, `TotemCategoryID`, `InstanceBound`, `ZoneBound1`, `ZoneBound2`, `ItemSet`, `LockID`, `PageID`, `ItemDelay`, `MinFactionID`, `RequiredSkillRank`, `RequiredSkill`, `ItemLevel`, `AllowableClass`, `ArtifactID`, `SpellWeight`, `SpellWeightCategory`, `SocketType1`, `SocketType2`, `SocketType3`, `SheatheType`, `Material`, `PageMaterialID`, `Bonding`, `DamageDamageType`, `StatModifierBonusStat1`, `StatModifierBonusStat2`, `StatModifierBonusStat3`, `StatModifierBonusStat4`, `StatModifierBonusStat5`, `StatModifierBonusStat6`, `StatModifierBonusStat7`, `StatModifierBonusStat8`, `StatModifierBonusStat9`, `StatModifierBonusStat10`, `ContainerSlots`, `RequiredPVPMedal`, `RequiredPVPRank`, `RequiredLevel`, `InventoryType`, `OverallQualityID`, `VerifiedBuild`) VALUES +(263600, -1, '', '', '', '', 'Voidwalker\'s Cord', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.971599996089935302, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263599, -1, '', '', '', '', 'Voidwalker\'s Shoulderblades', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.967999994754791259, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263598, -1, '', '', '', '', 'Voidwalker\'s Leggings', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.964299976825714111, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263597, -1, '', '', '', '', 'Voidwalker\'s Skullcap', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.960600018501281738, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263596, -1, '', '', '', '', 'Voidwalker\'s Gloves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.956900000572204589, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263595, -1, '', '', '', '', 'Voidwalker\'s Sandals', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.953299999237060546, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263594, -1, '', '', '', '', 'Voidwalker\'s Harness', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.049700021743774414, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(263593, -1, '', '', '', '', 'Void Rider\'s Vambraces', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.046000003814697265, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 9, 4, 67186), +(263592, -1, '', '', '', '', 'Void Rider\'s Cloak', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.015900015830993652, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 16, 4, 67186), +(263591, -1, '', '', '', '', 'Void Rider\'s Girdle', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.012199997901916503, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 6, 4, 67186), +(263590, -1, '', '', '', '', 'Void Rider\'s Pauldrons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.008499979972839355, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 3, 4, 67186), +(263589, -1, '', '', '', '', 'Void Rider\'s Leggings', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.004799962043762207, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 7, 4, 67186), +(263588, -1, '', '', '', '', 'Void Rider\'s Helm', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 1.001199960708618164, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 1, 4, 67186), +(263587, -1, '', '', '', '', 'Void Rider\'s Gloves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.997500002384185791, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 10, 4, 67186), +(263586, -1, '', '', '', '', 'Void Rider\'s Sabatons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.993799984455108642, 36864, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 8, 4, 67186), +(263585, -1, '', '', '', '', 'Void Rider\'s Breastplate', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500, 2000, 1, 1, 0.990100026130676269, 32768, 24576, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 5, 4, 67186), +(251161, -1, 'A relic of the twisted rituals secret to the Vilebranch.', '', '', '', 'Shroud of the Soulhunter', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 4400, 2600, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.032899975776672363, 0, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, -1, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 71, 7, 40, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 78, 16, 3, 67186), +(133494, -1, '', '', '', '', 'Scabrous Zombie Belt', 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3506, 3494, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 7421, 37106, 1, 1, 1.009099960327148437, 0, 24576, 8388608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 32, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 30, 6, 3, 67186), +(49810, -1, '', '', '', '', 'Scabrous Zombie Belt', 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 3650, 3350, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 7421, 37106, 1, 1, 0.986699998378753662, 0, 24576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, -1, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 73, 7, 32, 36, -1, -1, -1, -1, -1, -1, 0, 0, 0, 30, 6, 4, 67186), +(264323, -1, 'Contains a cosmetic Void-Touched weapon you do not have in your collection.', '', '', '', 'Cache of Void-Touched Weapons', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.016199946403503417, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264322, -1, 'Contains cosmetic Void-Touched boots you do not have in your collection.', '', '', '', 'Cache of Void-Touched Boots', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.012599945068359375, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264321, -1, 'Contains cosmetic Void-Touched legwear you do not have in your collection.', '', '', '', 'Cache of Void-Touched Legwear', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.008900046348571777, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264320, -1, 'Contains cosmetic Void-Touched belts you do not have in your collection.', '', '', '', 'Cache of Void-Touched Belts', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.005200028419494628, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264319, -1, 'Contains cosmetic Void-Touched gloves you do not have in your collection.', '', '', '', 'Cache of Void-Touched Gloves', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.00150001049041748, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264318, -1, 'Contains cosmetic Void-Touched bracers you do not have in your collection.', '', '', '', 'Cache of Void-Touched Bracers', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.997900009155273437, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264317, -1, 'Contains a cosmetic Void-Touched chestpiece you do not have in your collection.', '', '', '', 'Cache of Void-Touched Chestpieces', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.994199991226196289, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264316, -1, 'Contains a cosmetic Void-Touched cloak you do not have in your collection.', '', '', '', 'Cache of Void-Touched Cloaks', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.99049997329711914, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264315, -1, 'Contains a cosmetic Void-Touched shoulders you do not have in your collection.', '', '', '', 'Cache of Void-Touched Shoulderwear', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.960399985313415527, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(264314, -1, 'Contains a cosmetic Void-Touched helm you do not have in your collection.', '', '', '', 'Cache of Void-Touched Headgear', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.956700026988983154, 4100, 8192, 131072, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 4, 67186), +(256700, -1, 'Teaches you how to craft Signet of Azerothian Blessings.', '', '', '', 'Design: Signet of Azerothian Blessings', 11, 0, 0, 0, 0, 16777216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 500000, 2500000, 1, 1, 0.993099987506866455, 134221888, 139264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 2914, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(250445, -1, '', '', '', '', 'Echo of Abundance: Enchanting', 11, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 1.0140000581741333, 4160, 12288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 2909, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(250360, -1, '', '', '', '', 'Echo of Abundance: Skinning', 11, 0, 0, 0, 0, 33554432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 0.969699978828430175, 4192, 12288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 2917, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(250443, -1, '', '', '', '', 'Echo of Abundance: Herbalism', 11, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 1, 1, 1.006700038909912109, 4160, 12288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 2912, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 3, 67186), +(272125, -1, 'Contains Gold, Voidlight Marl, and an item for your current specialization acknowledging your acumen in the field.', '', '', '', 'Recruit\'s Cache', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.987399995326995849, 65540, 8192, 1073872896, 512, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 80, 0, 3, 67186), +(263286, -1, '', '', '', '', 'Repurposed Fungarian Gong', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 14, 74, 1, 1, 0.989899992942810058, 134250496, 143360, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 4, 1, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 14, 3, 67186), +(273307, -1, 'Freshly squeezed by an intrepid entrepreneur! Glittering with sugar crystals... or mana crystals?', '', '', '', 'Vial of Intrepid Lemonade', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -1, -1, 10, 200, 1, 1, 0.984099984169006347, 229440, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 1, 67186), +(265790, -1, 'A satchel containing 10 Hero and Myth Dawncrests.', '', '', '', 'Cache of Dawncrests', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.008900046348571777, 4096, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 4, 67186), +(246753, -1, '', '', '', '', 'Glorious Cluster of Myth Dawncrests', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.00279998779296875, 64, 8192, 0, 16384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 0, 4, 67186), +(255627, -1, '', '', '', '', 'Galactic Gladiator\'s Hammer', 11, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5259, 7889, 4850, 2150, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 266070, 1330354, 1, 1, 0.981700003147125244, 4096, 8192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 197, -1, 0, 0, 0, 0, 0, 0, 3, 1, 0, 1, 0, 4, 7, 40, 32, -1, -1, -1, -1, -1, -1, 0, 0, 0, 90, 13, 4, 67186), +(266969, -1, '', '', '', '', 'Ensemble: Depthdiver Vestments', 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0.994599997997283935, 134217792, 139264, 0, 16384, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, 4, 67186), +(253582, -1, '', '', '', '', 'Fangfin Flailer', 11, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1.014899969100952148, 134250496, 139264, 8388608, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2600, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 8, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 13, 3, 67186); + +UPDATE `item_sparse` SET `Material`=7, `Bonding`=1, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=242709; +DELETE FROM `item_spec_override` WHERE `VerifiedBuild`>0 AND `ID` IN (159167, 159166, 159165, 159164, 159163, 159162, 159161, 159160, 159159, 159158, 159157, 159156, 159042, 159041, 159040, 159039, 159038, 159037, 152783, 152782, 152781, 152780, 152779, 152778, 152777, 152776, 152775, 152774, 152773, 152772, 152771, 152770, 152769); +INSERT INTO `item_spec_override` (`ID`, `SpecID`, `ItemID`, `VerifiedBuild`) VALUES +(159167, 1473, 255924, 67186), +(159166, 1468, 255924, 67186), +(159165, 1467, 255924, 67186), +(159164, 1473, 255345, 67186), +(159163, 1468, 255345, 67186), +(159162, 1467, 255345, 67186), +(159161, 1473, 255622, 67186), +(159160, 1468, 255622, 67186), +(159159, 1467, 255622, 67186), +(159158, 1473, 255631, 67186), +(159157, 1468, 255631, 67186), +(159156, 1467, 255631, 67186), +(159042, 581, 249344, 67186), +(159041, 577, 249344, 67186), +(159040, 269, 249344, 67186), +(159039, 268, 249344, 67186), +(159038, 263, 249344, 67186), +(159037, 261, 249344, 67186), +(152783, 260, 249344, 67186), +(152782, 259, 249344, 67186), +(152781, 255, 249344, 67186), +(152780, 254, 249344, 67186), +(152779, 253, 249344, 67186), +(152778, 252, 249344, 67186), +(152777, 251, 249344, 67186), +(152776, 250, 249344, 67186), +(152775, 104, 249344, 67186), +(152774, 103, 249344, 67186), +(152773, 73, 249344, 67186), +(152772, 72, 249344, 67186), +(152771, 71, 249344, 67186), +(152770, 70, 249344, 67186), +(152769, 66, 249344, 67186); + +DELETE FROM `item_x_bonus_tree` WHERE `VerifiedBuild`>0 AND `ID`=330713; +INSERT INTO `item_x_bonus_tree` (`ID`, `ItemBonusTreeID`, `ItemID`, `VerifiedBuild`) VALUES +(330713, 5916, 268969, 67186); + +DELETE FROM `item_x_item_effect` WHERE `VerifiedBuild`>0 AND `ID` IN (166582, 166581, 166580, 166579, 166578, 166577, 166576, 166575, 166573, 166572, 166569, 166568); +INSERT INTO `item_x_item_effect` (`ID`, `ItemEffectID`, `ItemID`, `VerifiedBuild`) VALUES +(166582, 234409, 275447, 67186), +(166581, 234408, 275447, 67186), +(166580, 234407, 275446, 67186), +(166579, 234406, 275446, 67186), +(166578, 234405, 275445, 67186), +(166577, 234404, 275445, 67186), +(166576, 234403, 275444, 67186), +(166575, 234402, 275444, 67186), +(166573, 234400, 275442, 67186), +(166572, 234399, 275442, 67186), +(166569, 234396, 275440, 67186), +(166568, 234395, 275440, 67186); + +DELETE FROM `journal_encounter_section` WHERE `VerifiedBuild`>0 AND `ID` IN (32672, 32669, 31527, 31282, 31281, 31280, 35862, 35353, 34751, 34733, 34732, 34731, 34730, 34727, 34725, 34722, 34720, 35809, 35491, 35490, 35489, 35488, 35477, 35476, 35475, 35474, 35473, 35472, 35471, 35470, 35469, 35468, 35467, 35466, 35465, 35464, 35463, 35462, 35461, 35460, 35459, 35458, 35457, 35456, 35455, 35454, 35453, 35452, 35451, 35450, 35449, 35448, 35447, 35446, 35445, 35444, 35443, 35442, 35441, 35440, 35439, 35438, 35435, 35434, 35418, 35373, 35371, 35366, 35361, 35360, 35357, 35344, 35343, 35342, 35341, 35340, 35339, 35338, 35336, 35328, 35327, 35326, 35325, 35324, 35319, 35317, 35316, 35315, 35314, 35311, 35309, 35274, 35273, 35272, 35131, 35106, 35068, 35067, 35041, 35040, 35038, 35037, 35036, 34847, 34846, 34845, 34844, 34474, 34456, 34450, 34243, 34242, 34001, 34000, 33990, 33989, 33983, 33982, 33981, 33975, 33924, 33742, 33741, 33740, 33739, 33738, 33737, 33640, 33638); +INSERT INTO `journal_encounter_section` (`ID`, `Title`, `BodyText`, `JournalEncounterID`, `OrderIndex`, `ParentSectionID`, `FirstChildSectionID`, `NextSiblingSectionID`, `Type`, `IconCreatureDisplayInfoID`, `UiModelSceneID`, `SpellID`, `IconFileDataID`, `Flags`, `IconFlags`, `DifficultyMask`, `VerifiedBuild`) VALUES +(32672, 'Tanks', '$bullet; The Hoardmonger gathers from the nearest resource pile during |cFF2959D3|Hspell:1235072|h[Resourceful Measures]|h|r.\n$bullet; Rotten Mushrooms apply |cFF2959D3|Hspell:1234846|h[Toxic Spores]|h|r upon contact, preventing them from detonating in a |cFF2959D3|Hspell:1245593|h[Putrid Burst]|h|r.\n$bullet; |cFF2959D3|Hspell:1234681|h[Ravenous Bellow]|h|r and |cFF2959D3|Hspell:1235125|h[Hearty Bellow]|h|r inflict high damage to all players.', 2776, 4, 32669, 0, 0, 3, 0, 0, 0, 0, 0, 1, -1, 67186), +(32669, 'Overview', 'The Hoardmonger prevents his reserves from being pilfered at all costs, casting |cFF2959D3|Hspell:1235072|h[Resourceful Measures]|h|r upon reaching 90%, 60%, and 30% health, empowering one of his abilities.\n\nUpon reaching 100 energy, he tosses |cFF2959D3|Hspell:1234233|h[Spoiled Supplies]|h|r throughout the arena, growing Rotten Mushrooms for 12 seconds. Upon contact, these apply |cFF2959D3|Hspell:1234846|h[Toxic Spores]|h|r destroying the fungi, preventing |cFF2959D3|Hspell:1245593|h[Putrid Burst]|h|r.', 2776, 1, 0, 32670, 32673, 3, 0, 0, 0, 0, 0, 0, -1, 67186), +(31527, 'Forbidden Freight', 'A shipment meant to be kept hidden from prying eyes. Provides an excellent source of cover.', 2680, 7, 31526, 34475, 0, 1, 137176, 0, 0, 0, 0, 0, -1, 67186), +(31282, 'Tank', '$bullet; Kystia turns Nibbles hostile to players with |cFF2959D3|Hspell:1230289|h[Illicit Infusion]|h|r.\n$bullet; Avoid Nibbles\' |cFF2959D3|Hspell:1253811|h[Fel Spray]|h|r.\n$bullet; Interrupt Kystia\'s |cFF2959D3|Hspell:1264095|h[Mirror Images]|h|r.', 2679, 4, 31279, 0, 0, 3, 0, 0, 0, 0, 0, 1, -1, 67186), +(31281, 'Healers', '$bullet; Kystia turns Nibbles hostile to players with |cFF2959D3|Hspell:1230289|h[Illicit Infusion]|h|r.\n$bullet; Avoid Nibbles\' |cFF2959D3|Hspell:1253811|h[Fel Spray]|h|r.\n$bullet; Kystia inflicts heavy damage to all players while |cFF2959D3|Hspell:1265412|h[Destabilized]|h|r.', 2679, 3, 31279, 0, 31282, 3, 0, 0, 0, 0, 0, 4, -1, 67186), +(31280, 'Damage Dealers', '$bullet; Kystia turns Nibbles hostile to players with |cFF2959D3|Hspell:1230289|h[Illicit Infusion]|h|r.\n$bullet; Avoid Nibbles\' |cFF2959D3|Hspell:1253811|h[Fel Spray]|h|r.\n$bullet; Interrupt Kystia\'s |cFF2959D3|Hspell:1264095|h[Mirror Images]|h|r.', 2679, 2, 31279, 0, 31281, 3, 0, 0, 0, 0, 0, 2, -1, 67186), +(35862, 'Section 18', '', 2870, 9, 35353, 0, 0, 2, 0, 0, 1295986, 0, 1, 0, -1, 67186), +(35353, 'Section 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 2870, 8, 0, 35862, 34729, 2, 0, 0, 1284818, 0, 1, 0, -1, 67186), +(34751, 'Section 17', '', 2870, 11, 34729, 0, 34722, 2, 140396, 0, 1272893, 0, 0, 0, -1, 67186), +(34733, 'Xal\'atath\'s Guile', 'Xal\'atath betrays players, revoking her bargains while making deaths subtract 15 seconds from time remaining.', 2870, 18, 0, 0, 0, 2, 0, 0, 0, 1723989, 1, 0, -1, 67186), +(34732, 'Fortified', 'Non-boss enemies have 20% more health and inflict up to 20% increased damage.', 2870, 17, 34730, 0, 0, 2, 0, 0, 0, 463829, 0, 0, -1, 67186), +(34731, 'Tyrannical', 'Bosses have 25% more health. Bosses and their minions inflict up to 15% increased damage.', 2870, 16, 34730, 0, 34732, 2, 0, 0, 0, 236401, 0, 0, -1, 67186), +(34730, 'Tyrannical and Fortified', 'These affixes further empower enemies in Mythic Keystone dungeons. One becomes active at Mythic Level 7 and the other at Mythic Level 10, rotating each week.', 2870, 15, 0, 34731, 34733, 2, 0, 0, 0, 135901, 1, 0, -1, 67186), +(34727, 'Xal\'atath\'s Bargain: Devour', '', 2870, 14, 34729, 0, 0, 2, 140398, 0, 1272896, 7137506, 0, 0, -1, 67186), +(34725, 'Xal\'atath\'s Bargain: Voidbound', '', 2870, 13, 34729, 0, 34727, 2, 141116, 0, 1272895, 4913234, 0, 0, -1, 67186), +(34722, 'Xal\'atath\'s Bargain: Pulsar', '', 2870, 12, 34729, 0, 34725, 2, 141206, 0, 1272894, 4914667, 0, 0, -1, 67186), +(34720, 'Mythic Level 6', '$bullet;|cFF2959D3|Hspell:1284818|h[Lindormi\'s Guidance]|h|r is removed.\n\nCharacters with a tank specialization can speak with Lindormi near the The Timeways portal or at the end of a Keystone Dungeon to gain |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r, which will continue to highlight enemy forces.', 2870, 7, 34716, 0, 0, 3, 0, 0, 0, 0, 0, 0, -1, 67186), +(35809, 'Section 158', '', 2740, 13, 35322, 0, 0, 2, 0, 0, 1295191, 0, 2, 0, 0, 67186), +(35491, 'Section 69', '', 2740, 91, 35490, 0, 0, 2, 0, 0, 1282373, 0, 0, 16, -1, 67186), +(35490, 'Section 70', '', 2740, 90, 35488, 35491, 0, 2, 0, 0, 1282249, 0, 0, 0, -1, 67186), +(35489, 'Section 76', '', 2740, 89, 35488, 0, 35490, 2, 0, 0, 1285827, 0, 0, 8, -1, 67186), +(35488, 'Section 67', '$[!15,16\nOn Heroic difficulty and above, Galvanize discharges an Overkill Current.$]', 2740, 88, 35273, 35489, 35314, 2, 0, 0, 1284525, 0, 2, 8, 0, 67186), +(35477, 'Section 22', '', 2740, 115, 35472, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35476, 'Section 31', '', 2740, 114, 35472, 0, 35477, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35475, 'Section 30', '', 2740, 113, 35474, 0, 0, 2, 0, 0, 1254256, 0, 0, 16, -1, 67186), +(35474, 'Section 29', '', 2740, 112, 35472, 35475, 35476, 2, 0, 0, 1254262, 0, 0, 8, -1, 67186), +(35473, 'Section 31', '', 2740, 111, 35472, 0, 35474, 2, 0, 0, 1284699, 0, 0, 4112, -1, 67186), +(35472, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.\n$[!16\nOn Mythic difficulty, Dawn Crystals are at risk of Light\'s End.$]', 2740, 110, 33638, 35473, 33990, 1, 137188, 0, 0, 0, 2, 4096, 0, 67186), +(35471, 'Section 22', '', 2740, 109, 35467, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35470, 'Section 31', '', 2740, 108, 35467, 0, 35471, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35469, 'Section 30', '', 2740, 107, 35468, 0, 0, 2, 0, 0, 1254256, 0, 0, 16, -1, 67186), +(35468, 'Section 29', '', 2740, 106, 35467, 35469, 35470, 2, 0, 0, 1254262, 0, 0, 8, -1, 67186), +(35467, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.\n$[!15\nOn Heroic difficulty, Dawn Crystals may shed Tears of L\'ura.$]', 2740, 105, 33638, 35468, 35472, 1, 137188, 0, 0, 0, 2, 8, 0, 67186), +(35466, 'Section 22', '', 2740, 104, 35464, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35465, 'Section 31', '', 2740, 103, 35464, 0, 35466, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35464, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.', 2740, 102, 33638, 35465, 35467, 1, 137188, 0, 0, 0, 2, 32, 0, 67186), +(35463, 'Section 22', '', 2740, 78, 35458, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35462, 'Section 31', '', 2740, 77, 35458, 0, 35463, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35461, 'Section 30', '', 2740, 76, 35460, 0, 0, 2, 0, 0, 1254256, 0, 0, 16, -1, 67186), +(35460, 'Section 29', '', 2740, 75, 35458, 35461, 35462, 2, 0, 0, 1254262, 0, 0, 8, -1, 67186), +(35459, 'Section 31', '', 2740, 74, 35458, 0, 35460, 2, 0, 0, 1284699, 0, 0, 4112, -1, 67186), +(35458, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.\n$[!16\nOn Mythic difficulty, Dawn Crystals are at risk of Light\'s End.$]', 2740, 73, 35036, 35459, 35418, 1, 137188, 0, 0, 0, 2, 4096, 0, 67186), +(35457, 'Section 22', '', 2740, 72, 35453, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35456, 'Section 31', '', 2740, 71, 35453, 0, 35457, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35455, 'Section 30', '', 2740, 70, 35454, 0, 0, 2, 0, 0, 1254256, 0, 0, 16, -1, 67186), +(35454, 'Section 29', '', 2740, 69, 35453, 35455, 35456, 2, 0, 0, 1254262, 0, 0, 8, -1, 67186), +(35453, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.\n$[!15\nOn Heroic difficulty, Dawn Crystals may shed Tears of L\'ura.$]', 2740, 68, 35036, 35454, 35458, 1, 137188, 0, 0, 0, 2, 8, 0, 67186), +(35452, 'Section 22', '', 2740, 67, 35450, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35451, 'Section 31', '', 2740, 66, 35450, 0, 35452, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35450, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.', 2740, 65, 35036, 35451, 35453, 1, 137188, 0, 0, 0, 2, 0, 0, 67186), +(35449, 'Section 22', '', 2740, 54, 35444, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35448, 'Section 31', '', 2740, 53, 35444, 0, 35449, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35447, 'Section 30', '', 2740, 52, 35446, 0, 0, 2, 0, 0, 1254256, 0, 0, 16, -1, 67186), +(35446, 'Section 29', '', 2740, 51, 35444, 35447, 35448, 2, 0, 0, 1254262, 0, 0, 8, -1, 67186), +(35445, 'Section 31', '', 2740, 50, 35444, 0, 35446, 2, 0, 0, 1284699, 0, 0, 4112, -1, 67186), +(35444, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.\n$[!16\nOn Mythic difficulty, Dawn Crystals are at risk of Light\'s End.$]', 2740, 49, 33741, 35445, 0, 1, 137188, 0, 0, 0, 0, 4096, -1, 67186), +(35443, 'Section 22', '', 2740, 34, 35441, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35442, 'Section 31', '', 2740, 33, 35441, 0, 35443, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35441, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.', 2740, 32, 35339, 35442, 35360, 1, 137188, 0, 0, 0, 2, 32, 0, 67186), +(35440, 'Section 108', '', 2740, 98, 35106, 0, 35439, 2, 0, 0, 1282373, 0, 2, 0, 0, 67186), +(35439, 'Section 108', '', 2740, 99, 35106, 0, 0, 2, 0, 0, 1282373, 0, 2, 16, 0, 67186), +(35438, 'Section 107', '', 2740, 118, 33638, 0, 0, 2, 0, 0, 1249796, 0, 0, 4, -1, 67186), +(35435, 'Section 105', '', 2740, 63, 35037, 0, 0, 2, 0, 0, 1285685, 0, 0, 0, -1, 67186), +(35434, 'Section 104', '', 2740, 62, 35037, 0, 35435, 2, 0, 0, 1262055, 0, 0, 4, -1, 67186), +(35418, 'Section 108', '', 2740, 79, 35036, 0, 0, 2, 0, 0, 1249796, 0, 0, 4, -1, 67186), +(35373, 'Section 30', '', 2740, 37, 35371, 0, 0, 2, 0, 0, 1254256, 0, 0, 16, -1, 67186), +(35371, 'Section 29', '', 2740, 36, 35360, 35373, 35366, 2, 0, 0, 1254262, 0, 0, 8, -1, 67186), +(35366, 'Section 31', '', 2740, 38, 35360, 0, 35361, 2, 0, 0, 1282458, 0, 0, 16, -1, 67186), +(35361, 'Section 22', '', 2740, 39, 35360, 0, 0, 2, 0, 0, 1254398, 0, 0, 0, -1, 67186), +(35360, 'Dawn Crystal', 'A purified Naaru fragment that can be held by players.\n$[!15\nOn Heroic difficulty, Dawn Crystals may shed Tears of L\'ura.$]', 2740, 35, 35339, 35371, 0, 1, 137188, 0, 0, 0, 2, 8, 0, 67186), +(35357, 'Section 106', '', 2740, 18, 32197, 34844, 35336, 2, 0, 0, 1284980, 0, 2, 4096, 0, 67186), +(35344, 'Section 23', '', 2740, 31, 35343, 0, 0, 2, 0, 0, 1251807, 0, 0, 16, -1, 67186), +(35343, 'Section 22', '', 2740, 30, 35342, 35344, 0, 2, 0, 0, 1252974, 0, 0, 0, -1, 67186), +(35342, 'Dusk Crystal', 'A dimming Naaru fragment that may be restored.', 2740, 29, 35339, 35343, 35441, 1, 136357, 0, 0, 0, 0, 4, -1, 67186), +(35341, 'Section 24', '', 2740, 28, 35340, 0, 0, 2, 0, 0, 1251789, 0, 0, 16, -1, 67186), +(35340, 'Midnight Crystal', 'A dark Naaru fragment beyond saving.', 2740, 27, 35339, 35341, 35342, 1, 136356, 0, 0, 0, 0, 2, -1, 67186), +(35339, 'Section 19', '', 2740, 26, 35336, 35340, 0, 2, 0, 0, 1251649, 0, 1, 0, -1, 67186), +(35338, 'Section 18', '', 2740, 25, 35337, 0, 0, 2, 0, 0, 1251392, 0, 0, 192, -1, 67186), +(35336, 'Section 16', '', 2740, 23, 32197, 35337, 33737, 2, 0, 0, 1251386, 0, 2, 32, 0, 67186), +(35328, 'Section 11', '', 2740, 17, 35326, 0, 0, 2, 0, 0, 1249584, 0, 0, 16, -1, 67186), +(35327, 'Section 10', '', 2740, 16, 35326, 0, 35328, 2, 0, 0, 1249582, 0, 0, 0, -1, 67186), +(35326, 'Section 9', '', 2740, 15, 35325, 35327, 0, 2, 0, 0, 1249609, 0, 0, 0, -1, 67186), +(35325, 'Section 8', '$[!15\nOn Heroic difficulty, the number of notes increases with each melody.$]', 2740, 14, 32197, 35326, 35357, 2, 0, 0, 1244412, 0, 2, 8, 0, 67186), +(35324, 'Section 11', '', 2740, 12, 35322, 0, 35809, 2, 0, 0, 1249584, 0, 2, 16, 0, 67186), +(35319, 'Section 80', '', 2740, 95, 35274, 0, 35311, 2, 0, 0, 1281184, 0, 0, 4096, -1, 67186), +(35317, 'Section 69', '', 2740, 87, 35316, 0, 0, 2, 0, 0, 1282373, 0, 0, 0, -1, 67186), +(35316, 'Section 70', '', 2740, 86, 35272, 35317, 0, 2, 0, 0, 1282249, 0, 0, 0, -1, 67186), +(35315, 'Section 76', '', 2740, 93, 35314, 0, 35274, 2, 0, 0, 1285827, 0, 0, 8, -1, 67186), +(35314, 'Section 67', '$[!15,16\nOn Heroic difficulty and above, Galvanize discharges an Overkill Current.$]', 2740, 92, 35273, 35315, 35106, 2, 0, 0, 1284525, 0, 2, 4096, 0, 67186), +(35311, 'Section 69', '', 2740, 96, 35274, 0, 0, 2, 0, 0, 1282373, 0, 0, 16, -1, 67186), +(35309, 'Section 74', '', 2740, 101, 34243, 0, 0, 2, 0, 0, 1284638, 0, 0, 16, -1, 67186), +(35274, 'Section 70', '$[!16\nOn Mythic difficulty, Cosmic Fission reaches Criticality.$]', 2740, 94, 35314, 35319, 0, 2, 0, 0, 1282249, 0, 0, 4096, -1, 67186), +(35273, 'Section 69', '', 2740, 84, 33638, 35272, 35464, 2, 0, 0, 1282246, 0, 1, 0, -1, 67186), +(35272, 'Section 67', '', 2740, 85, 35273, 35316, 35488, 2, 0, 0, 1284525, 0, 2, 0, 0, 67186), +(35131, 'Section 13', '', 2740, 124, 33639, 0, 33975, 2, 0, 0, 1266622, 0, 0, 16, -1, 67186), +(35106, 'Section 67', '', 2740, 97, 35273, 35440, 34243, 2, 0, 0, 1282412, 0, 0, 4, -1, 67186), +(35068, 'Section 64', '', 2740, 83, 35067, 0, 0, 2, 0, 0, 1282008, 0, 0, 0, -1, 67186), +(35067, 'Section 63', '', 2740, 81, 33638, 34242, 35273, 2, 0, 0, 1282034, 0, 0, 32, -1, 67186), +(35041, 'Section 35', '', 2740, 59, 35036, 0, 35040, 2, 0, 0, 1282027, 0, 0, 16, -1, 67186), +(35040, 'Section 51', '', 2740, 60, 35036, 0, 35037, 2, 0, 0, 1285561, 0, 0, 16, -1, 67186), +(35038, 'Section 14', '', 2740, 64, 35036, 0, 35450, 2, 0, 0, 1282441, 0, 0, 0, -1, 67186), +(35037, 'Section 14', '', 2740, 61, 35036, 35434, 35038, 2, 0, 0, 1260261, 0, 0, 32, -1, 67186), +(35036, 'Intermission: Total Eclipse', 'Witness the light fade and fracture.', 2740, 58, 0, 35041, 33638, 0, 0, 0, 0, 0, 0, 0, -1, 67186), +(34847, 'Section 11', '', 2740, 22, 34845, 0, 0, 2, 0, 0, 1249584, 0, 0, 16, -1, 67186), +(34846, 'Section 10', '', 2740, 21, 34845, 0, 34847, 2, 0, 0, 1249582, 0, 0, 0, -1, 67186), +(34845, 'Section 9', '', 2740, 20, 34844, 34846, 0, 2, 0, 0, 1249609, 0, 0, 0, -1, 67186), +(34844, 'Section 8', '', 2740, 19, 35357, 34845, 0, 2, 0, 0, 1244412, 0, 0, 0, -1, 67186), +(34474, 'Section 44', '', 2740, 123, 33740, 0, 0, 2, 0, 0, 1263253, 0, 0, 16, -1, 67186), +(34456, 'Section 45', '', 2740, 117, 33990, 0, 0, 2, 0, 0, 1265842, 0, 0, 0, -1, 67186), +(34450, 'Section 46', '', 2740, 56, 33989, 0, 0, 2, 0, 0, 1265842, 0, 0, 0, -1, 67186), +(34243, 'Section 14', '', 2740, 100, 35273, 35309, 0, 2, 0, 0, 1281194, 0, 0, 32, -1, 67186), +(34242, 'Section 14', '', 2740, 82, 35067, 0, 35068, 2, 0, 0, 1279463, 0, 0, 16, -1, 67186), +(34001, 'Section 38', '', 2740, 121, 34000, 0, 0, 2, 0, 0, 1254642, 0, 0, 4, -1, 67186), +(34000, 'Section 35', '', 2740, 120, 33639, 34001, 33740, 2, 0, 0, 1282027, 0, 0, 16, -1, 67186), +(33990, 'Section 32', '', 2740, 116, 33638, 34456, 35438, 2, 0, 0, 1263970, 0, 0, 1, -1, 67186), +(33989, 'Section 32', '', 2740, 55, 32197, 34450, 33640, 2, 0, 0, 1263970, 0, 0, 1, -1, 67186), +(33983, 'Section 23', '', 2740, 48, 33982, 0, 0, 2, 0, 0, 1251807, 0, 0, 16, -1, 67186), +(33982, 'Section 22', '', 2740, 47, 33981, 33983, 0, 2, 0, 0, 1252974, 0, 0, 0, -1, 67186), +(33981, 'Dusk Crystal', 'A dimming Naaru fragment that may be restored.', 2740, 46, 33741, 33982, 35444, 1, 136357, 0, 0, 0, 0, 4, -1, 67186), +(33975, 'Section 25', '', 2740, 125, 33639, 0, 34900, 2, 0, 0, 1266388, 0, 0, 16, -1, 67186), +(33924, 'Section 24', '', 2740, 45, 33742, 0, 0, 2, 0, 0, 1251789, 0, 0, 16, -1, 67186), +(33742, 'Midnight Crystal', 'A dark Naaru fragment beyond saving.', 2740, 44, 33741, 33924, 33981, 1, 136356, 0, 0, 0, 0, 2, -1, 67186), +(33741, 'Section 19', '', 2740, 43, 33737, 33742, 0, 2, 0, 0, 1251649, 0, 1, 0, -1, 67186), +(33740, 'Section 15', '', 2740, 122, 33639, 34474, 35131, 2, 0, 0, 1250898, 0, 0, 16, -1, 67186), +(33739, 'Section 18', '', 2740, 42, 33738, 0, 0, 2, 0, 0, 1284934, 0, 0, 80, -1, 67186), +(33738, 'Termination Matrix', '', 2740, 41, 33737, 33739, 33741, 1, 142715, 0, 0, 0, 1, 0, -1, 67186), +(33737, 'Section 16', '', 2740, 40, 32197, 33738, 33989, 2, 0, 0, 1284931, 0, 2, 4096, 0, 67186), +(33640, 'Section 12', '', 2740, 57, 32197, 0, 0, 2, 0, 0, 1249796, 0, 0, 4, -1, 67186), +(33638, 'Stage Two: The Dark Reactor', 'Venture into the engine of desolation.', 2740, 80, 0, 35067, 33639, 0, 0, 0, 0, 0, 0, 0, -1, 67186); + +UPDATE `journal_encounter_section` SET `OrderIndex`=127, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35537; +UPDATE `journal_encounter_section` SET `OrderIndex`=10, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34729; +UPDATE `journal_encounter_section` SET `OrderIndex`=142, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35487; +UPDATE `journal_encounter_section` SET `OrderIndex`=137, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35486; +UPDATE `journal_encounter_section` SET `OrderIndex`=150, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35485; +UPDATE `journal_encounter_section` SET `OrderIndex`=147, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35484; +UPDATE `journal_encounter_section` SET `OrderIndex`=146, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35483; +UPDATE `journal_encounter_section` SET `OrderIndex`=145, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35482; +UPDATE `journal_encounter_section` SET `OrderIndex`=144, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35481; +UPDATE `journal_encounter_section` SET `OrderIndex`=143, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35480; +UPDATE `journal_encounter_section` SET `OrderIndex`=141, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35479; +UPDATE `journal_encounter_section` SET `OrderIndex`=138, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35478; +UPDATE `journal_encounter_section` SET `OrderIndex`=139, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35370; +UPDATE `journal_encounter_section` SET `OrderIndex`=140, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35368; +UPDATE `journal_encounter_section` SET `OrderIndex`=136, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35367; +UPDATE `journal_encounter_section` SET `OrderIndex`=24, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35337; +UPDATE `journal_encounter_section` SET `OrderIndex`=154, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35312; +UPDATE `journal_encounter_section` SET `OrderIndex`=149, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35132; +UPDATE `journal_encounter_section` SET `OrderIndex`=157, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35070; +UPDATE `journal_encounter_section` SET `OrderIndex`=156, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=35069; +UPDATE `journal_encounter_section` SET `OrderIndex`=129, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34902; +UPDATE `journal_encounter_section` SET `OrderIndex`=128, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34901; +UPDATE `journal_encounter_section` SET `OrderIndex`=126, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34900; +UPDATE `journal_encounter_section` SET `OrderIndex`=132, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34555; +UPDATE `journal_encounter_section` SET `OrderIndex`=135, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34498; +UPDATE `journal_encounter_section` SET `OrderIndex`=134, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34497; +UPDATE `journal_encounter_section` SET `OrderIndex`=158, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34496; +UPDATE `journal_encounter_section` SET `OrderIndex`=153, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34428; +UPDATE `journal_encounter_section` SET `OrderIndex`=152, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34426; +UPDATE `journal_encounter_section` SET `OrderIndex`=155, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34424; +UPDATE `journal_encounter_section` SET `OrderIndex`=151, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34423; +UPDATE `journal_encounter_section` SET `OrderIndex`=148, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=34422; +UPDATE `journal_encounter_section` SET `OrderIndex`=119, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=33639; +UPDATE `journal_encounter_section` SET `OrderIndex`=133, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=33637; +UPDATE `journal_encounter_section` SET `OrderIndex`=131, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=33635; +UPDATE `journal_encounter_section` SET `OrderIndex`=130, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=33634; +DELETE FROM `mail_template` WHERE `VerifiedBuild`>0 AND `ID`=659; +INSERT INTO `mail_template` (`ID`, `Body`, `VerifiedBuild`) VALUES +(659, 'Greetings, acolyte!\n\nBehold the wonder of this domain overflowing with GLORIOUS ABUNDANCE! It surges, it swells, it rejects all containment!\n\nYour devotion to my divine self is deserving of some small benevolence. This time, in the form of Unalloyed Abundance!\n\nAnd take note, gracious acolyte: Certain offerings, such as Fused Vitality, will now appear amongst other purveyors. Perhaps you will encounter them, should your escapades ever pass near the Zul\'Aman Depths.\n\nMarvelous harvests to you,\n\n-Dundun, Loa of Abundance', 67186); + +DELETE FROM `map` WHERE `VerifiedBuild`>0 AND `ID`=2907; +INSERT INTO `map` (`ID`, `Directory`, `MapName`, `MapDescription0`, `MapDescription1`, `PvpShortDescription`, `PvpLongDescription`, `CorpseX`, `CorpseY`, `MapType`, `InstanceType`, `ExpansionID`, `AreaTableID`, `LoadingScreenID`, `TimeOfDayOverride`, `ParentMapID`, `CosmeticParentMapID`, `TimeOffset`, `MinimapIconScale`, `CorpseMapID`, `MaxPlayers`, `WindSettingsID`, `ZmpFileDataID`, `WdtFileDataID`, `NavigationMaxDistance`, `PreloadFileDataID`, `Flags1`, `Flags2`, `Flags3`, `VerifiedBuild`) VALUES +(2907, '2907', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 0, 0, 1, 5, 11, 0, 679, -1, -1, 0, 0, 1, -1, 0, 12, 0, 6642274, 0, 0, 142614109, 1040, 100, 67186); + +DELETE FROM `map_challenge_mode` WHERE `VerifiedBuild`>0 AND `ID`=402; +INSERT INTO `map_challenge_mode` (`Name`, `ID`, `MapID`, `Flags`, `MaxMedals`, `ExpansionLevel`, `RequiredWorldStateID`, `CriteriaCount1`, `CriteriaCount2`, `CriteriaCount3`, `CriteriaCount4`, `CriteriaCount5`, `FirstRewardQuestID1`, `FirstRewardQuestID2`, `FirstRewardQuestID3`, `FirstRewardQuestID4`, `FirstRewardQuestID5`, `FirstRewardQuestID6`, `RewardQuestID1`, `RewardQuestID2`, `RewardQuestID3`, `RewardQuestID4`, `RewardQuestID5`, `RewardQuestID6`, `VerifiedBuild`) VALUES +('Algeth\'ar Academy', 402, 2526, 0, 3, 9, 29696, 1800, 1440, 1080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `modified_crafting_item` WHERE `VerifiedBuild`>0 AND `ID` IN (206969, 206968, 206967, 204568, 204567, 204565, 201321, 201320, 201319, 201318, 201317, 201316, 201315, 201314, 201313, 201312, 201311, 201310, 200616, 200615, 200614, 257741, 257735, 255844, 255843, 248592, 248135); +INSERT INTO `modified_crafting_item` (`ID`, `ModifiedCraftingReagentItemID`, `CraftingQualityID`, `VerifiedBuild`) VALUES +(206969, 0, 3, 67186), +(206968, 0, 2, 67186), +(206967, 0, 1, 67186), +(204568, 0, 1, 67186), +(204567, 0, 3, 67186), +(204565, 0, 2, 67186), +(201321, 0, 1, 67186), +(201320, 0, 2, 67186), +(201319, 0, 3, 67186), +(201318, 0, 1, 67186), +(201317, 0, 2, 67186), +(201316, 0, 3, 67186), +(201315, 0, 1, 67186), +(201314, 0, 2, 67186), +(201313, 0, 3, 67186), +(201312, 0, 1, 67186), +(201311, 0, 2, 67186), +(201310, 0, 3, 67186), +(200616, 0, 3, 67186), +(200615, 0, 2, 67186), +(200614, 0, 1, 67186), +(257741, 677, 14, 67186), +(257735, 677, 13, 67186), +(255844, 671, 14, 67186), +(255843, 671, 13, 67186), +(248592, 659, 14, 67186), +(248135, 659, 13, 67186); + +DELETE FROM `modifier_tree` WHERE `VerifiedBuild`>0 AND `ID` IN (449909, 449908, 449907, 449906, 449905, 449904, 449903, 449902, 449871, 449870, 431360, 431359, 449835, 449834, 449833, 449832, 449831, 449830, 449829, 449828, 449827, 449826, 449825, 449824, 449823, 449822, 449821, 449820, 449819, 449818, 449817, 449816, 449815, 449799, 449798, 449797, 449796, 449655, 449654, 449653, 449652, 421491, 421487, 449743, 449742, 449741, 449694, 449693, 449692, 449601, 449600, 449599, 449598, 449597, 449596, 449595, 449594, 449593, 449592, 449591, 449590, 449589, 449588, 449587, 449586, 416540, 449169, 449168, 449167, 444989, 442229, 448965, 448964, 448804, 448803, 448802, 448801, 448800, 448799, 448798, 448797, 448796, 448795, 448794, 448793, 448792, 448791, 448790, 448789, 448788, 448787, 448786, 448785, 448784, 448783, 448782, 448781, 448780, 448779, 448778, 448777, 448776, 448775, 448774, 448773, 448772, 448771, 448770, 448769, 448768, 448767, 448766, 448765, 447286, 447285, 427170, 427168, 427166, 444030, 444027, 429262, 446825, 446824, 446823, 446822, 446821, 446820, 446816, 446608, 446592, 446591, 446590, 446589, 446588, 446587, 446586, 446037, 446276, 446275, 446274, 446273, 446272, 446271, 446270, 446269, 421256, 421255, 446268, 446267, 446266, 443814, 443812, 443534, 443528, 443525, 443522, 443519, 443516, 443513, 443510, 443507, 443504, 446213, 446212, 446265, 446264, 446263, 446262, 446261, 446260, 446259, 446258, 446257, 446062, 446061, 427219, 427216, 427213, 427210, 427204, 427195, 426834, 426831, 426819, 446036, 446035, 446034, 397284, 445975, 445968, 445967, 445966, 445965, 427702, 427700, 427692, 427689, 445862, 445455, 445454, 445453); +INSERT INTO `modifier_tree` (`ID`, `Parent`, `Operator`, `Amount`, `Type`, `Asset`, `SecondaryAsset`, `TertiaryAsset`, `VerifiedBuild`) VALUES +(449909, 449908, 3, 1, 2, 147876, 0, 0, 67186), +(449908, 264484, 4, 1, 0, 0, 0, 0, 67186), +(449907, 449902, 3, 1, 2, 147876, 0, 0, 67186), +(449906, 449903, 3, 1, 2, 147876, 0, 0, 67186), +(449905, 449904, 3, 1, 2, 147876, 0, 0, 67186), +(449904, 265170, 4, 1, 0, 0, 0, 0, 67186), +(449903, 265176, 4, 1, 0, 0, 0, 0, 67186), +(449902, 265179, 4, 1, 0, 0, 0, 0, 67186), +(449871, 449870, 2, 1, 271, 92326, 0, 0, 67186), +(449870, 0, 4, 1, 0, 0, 0, 0, 67186), +(431360, 431359, 2, 1, 282, 1704, 0, 0, 67186), +(431359, 0, 4, 1, 0, 0, 0, 0, 67186), +(449835, 449833, 2, 1, 17, 16194, 0, 0, 67186), +(449834, 449833, 2, 1, 245, 0, 0, 0, 67186), +(449833, 449817, 4, 1, 0, 0, 0, 0, 67186), +(449832, 449830, 2, 1, 17, 15959, 0, 0, 67186), +(449831, 449830, 2, 1, 245, 0, 0, 0, 67186), +(449830, 449817, 4, 1, 0, 0, 0, 0, 67186), +(449829, 449827, 2, 1, 17, 15458, 0, 0, 67186), +(449828, 449827, 2, 1, 245, 0, 0, 0, 67186), +(449827, 449817, 4, 1, 0, 0, 0, 0, 67186), +(449826, 449824, 2, 1, 17, 15947, 0, 0, 67186), +(449825, 449824, 2, 1, 245, 0, 0, 0, 67186), +(449824, 449817, 4, 1, 0, 0, 0, 0, 67186), +(449823, 449821, 2, 1, 17, 15355, 0, 0, 67186), +(449822, 449821, 2, 1, 245, 0, 0, 0, 67186), +(449821, 449817, 4, 1, 0, 0, 0, 0, 67186), +(449820, 449818, 2, 1, 17, 15968, 0, 0, 67186), +(449819, 449818, 2, 1, 245, 0, 0, 0, 67186), +(449818, 449817, 4, 1, 0, 0, 0, 0, 67186), +(449817, 449815, 8, 1, 0, 0, 0, 0, 67186), +(449816, 449815, 2, 1, 339, 0, 0, 0, 67186), +(449815, 0, 8, 1, 0, 0, 0, 0, 67186), +(449799, 449796, 2, 1, 104, 3363, 0, 0, 67186), +(449798, 449796, 2, 1, 114, 260916, 1, 0, 67186), +(449797, 449796, 2, 1, 114, 268730, 1, 0, 67186), +(449796, 0, 8, 1, 0, 0, 0, 0, 67186), +(449655, 421491, 3, 1, 111, 92722, 0, 0, 67186), +(449654, 421491, 3, 1, 111, 92721, 0, 0, 67186), +(449653, 421487, 2, 1, 84, 92722, 0, 0, 67186), +(449652, 421487, 2, 1, 84, 92721, 0, 0, 67186), +(421491, 421486, 4, 1, 0, 0, 0, 0, 67186), +(421487, 421486, 8, 1, 0, 0, 0, 0, 67186), +(449743, 449741, 3, 1, 289, 1867, 0, 0, 67186), +(449742, 449741, 2, 1, 289, 1901, 0, 0, 67186), +(449741, 0, 4, 1, 0, 0, 0, 0, 67186), +(449694, 449692, 3, 1, 86, 63097, 0, 0, 67186), +(449693, 449692, 2, 1, 250, 17, 0, 0, 67186), +(449692, 0, 4, 1, 0, 0, 0, 0, 67186), +(449601, 449599, 3, 1, 359, 12667, 0, 0, 67186), +(449600, 449599, 3, 1, 359, 13534, 0, 0, 67186), +(449599, 449586, 4, 1, 0, 0, 0, 0, 67186), +(449598, 449596, 2, 1, 364, 6, 0, 0, 67186), +(449597, 449596, 2, 1, 364, 1, 0, 0, 67186), +(449596, 449586, 8, 1, 0, 0, 0, 0, 67186), +(449595, 449587, 2, 1, 359, 12792, 0, 0, 67186), +(449594, 449587, 2, 1, 359, 12791, 0, 0, 67186), +(449593, 449587, 2, 1, 359, 12790, 0, 0, 67186), +(449592, 449587, 2, 1, 359, 12789, 0, 0, 67186), +(449591, 449587, 2, 1, 359, 12788, 0, 0, 67186), +(449590, 449587, 2, 1, 359, 12787, 0, 0, 67186), +(449589, 449587, 2, 1, 359, 12786, 0, 0, 67186), +(449588, 449587, 2, 1, 359, 12785, 0, 0, 67186), +(449587, 449586, 8, 1, 0, 0, 0, 0, 67186), +(449586, 0, 4, 1, 0, 0, 0, 0, 67186), +(416540, 416539, 2, 1, 391, 176, 1, 2, 67186), +(449169, 449167, 2, 1, 372, 6666, 0, 0, 67186), +(449168, 449167, 2, 1, 339, 0, 0, 0, 67186), +(449167, 0, 4, 1, 0, 0, 0, 0, 67186), +(444989, 442228, 4, 1, 0, 0, 0, 0, 67186), +(442229, 442228, 2, 1, 67, 47216, 0, 0, 67186), +(448965, 448964, 2, 1, 2, 150776, 0, 0, 67186), +(448964, 0, 4, 1, 0, 0, 0, 0, 67186), +(448804, 448803, 3, 1, 183, 3005, 0, 0, 67186), +(448803, 0, 4, 1, 0, 0, 0, 0, 67186), +(448802, 448801, 3, 1, 183, 2633, 0, 0, 67186), +(448801, 0, 4, 1, 0, 0, 0, 0, 67186), +(448800, 448799, 3, 1, 183, 2631, 0, 0, 67186), +(448799, 0, 4, 1, 0, 0, 0, 0, 67186), +(448798, 448797, 3, 1, 183, 3009, 0, 0, 67186), +(448797, 0, 4, 1, 0, 0, 0, 0, 67186), +(448796, 448795, 3, 1, 183, 3010, 0, 0, 67186), +(448795, 0, 4, 1, 0, 0, 0, 0, 67186), +(448794, 448793, 3, 1, 183, 3008, 0, 0, 67186), +(448793, 0, 4, 1, 0, 0, 0, 0, 67186), +(448792, 448791, 3, 1, 183, 3007, 0, 0, 67186), +(448791, 0, 4, 1, 0, 0, 0, 0, 67186), +(448790, 448789, 3, 1, 183, 2480, 0, 0, 67186), +(448789, 0, 4, 1, 0, 0, 0, 0, 67186), +(448788, 448787, 3, 1, 183, 2508, 0, 0, 67186), +(448787, 0, 4, 1, 0, 0, 0, 0, 67186), +(448786, 448785, 3, 1, 183, 3006, 0, 0, 67186), +(448785, 0, 4, 1, 0, 0, 0, 0, 67186), +(448784, 448783, 3, 1, 183, 2244, 0, 0, 67186), +(448783, 0, 4, 1, 0, 0, 0, 0, 67186), +(448782, 448781, 3, 1, 183, 2055, 0, 0, 67186), +(448781, 0, 4, 1, 0, 0, 0, 0, 67186), +(448780, 448779, 3, 1, 183, 1801, 0, 0, 67186), +(448779, 0, 4, 1, 0, 0, 0, 0, 67186), +(448778, 448777, 3, 1, 183, 1725, 0, 0, 67186), +(448777, 0, 4, 1, 0, 0, 0, 0, 67186), +(448776, 448775, 3, 1, 183, 1681, 0, 0, 67186), +(448775, 0, 4, 1, 0, 0, 0, 0, 67186), +(448774, 448773, 3, 1, 183, 1405, 0, 0, 67186), +(448773, 0, 4, 1, 0, 0, 0, 0, 67186), +(448772, 448771, 3, 1, 183, 1544, 0, 0, 67186), +(448771, 0, 4, 1, 0, 0, 0, 0, 67186), +(448770, 448769, 3, 1, 183, 1520, 0, 0, 67186), +(448769, 0, 4, 1, 0, 0, 0, 0, 67186), +(448768, 448767, 3, 1, 183, 1419, 0, 0, 67186), +(448767, 0, 4, 1, 0, 0, 0, 0, 67186), +(448766, 448765, 3, 1, 183, 1326, 0, 0, 67186), +(448765, 0, 4, 1, 0, 0, 0, 0, 67186), +(447286, 447285, 2, 1, 359, 12245, 0, 0, 67186), +(447285, 0, 4, 1, 0, 0, 0, 0, 67186), +(427170, 427169, 2, 1, 390, 83, 5000, 9999, 67186), +(427168, 427167, 2, 1, 390, 83, 999, 4999, 67186), +(427166, 427165, 2, 1, 390, 83, 10000, 10000000, 67186), +(444030, 444029, 2, 1, 382, 86722, 0, 0, 67186), +(444027, 444026, 2, 1, 382, 86722, 0, 0, 67186), +(429262, 429261, 2, 1, 382, 86722, 0, 0, 67186), +(446825, 446820, 2, 1, 271, 92689, 0, 0, 67186), +(446824, 446822, 2, 1, 381, 257736, 1, 566, 67186), +(446823, 446822, 2, 1, 199, 257736, 0, 0, 67186), +(446822, 446820, 8, 1, 0, 0, 0, 0, 67186), +(446821, 446820, 3, 1, 110, 88710, 0, 0, 67186), +(446820, 0, 4, 1, 0, 0, 0, 0, 67186), +(446816, 423070, 2, 1, 110, 92322, 0, 0, 67186), +(446608, 446588, 3, 1, 111, 88710, 0, 0, 67186), +(446592, 446591, 2, 1, 199, 257736, 0, 0, 67186), +(446591, 446588, 8, 1, 0, 0, 0, 0, 67186), +(446590, 446591, 2, 1, 381, 257736, 1, 566, 67186), +(446589, 446588, 3, 1, 110, 88710, 0, 0, 67186), +(446588, 0, 4, 1, 0, 0, 0, 0, 67186), +(446587, 446586, 3, 1, 418, 2517, 0, 0, 67186), +(446586, 0, 4, 1, 0, 0, 0, 0, 67186), +(446037, 397284, 3, 1, 110, 88710, 0, 0, 67186), +(446276, 446273, 3, 1, 74, 3117, 0, 0, 67186), +(446275, 446273, 3, 1, 74, 3147, 0, 0, 67186), +(446274, 446273, 3, 1, 74, 3148, 0, 0, 67186), +(446273, 0, 4, 1, 0, 0, 0, 0, 67186), +(446272, 446271, 2, 1, 74, 3204, 0, 0, 67186), +(446271, 0, 4, 1, 0, 0, 0, 0, 67186), +(446270, 421255, 3, 1, 74, 3194, 0, 0, 67186), +(446269, 421255, 3, 1, 74, 3201, 0, 0, 67186), +(421256, 421255, 3, 1, 74, 3204, 0, 0, 67186), +(421255, 0, 4, 1, 0, 0, 0, 0, 67186), +(446268, 446266, 2, 1, 86, 62886, 0, 0, 67186), +(446267, 446266, 2, 1, 382, 48022, 0, 0, 67186), +(446266, 0, 8, 1, 0, 0, 0, 0, 67186), +(443814, 443813, 3, 1, 391, 176, 2, 4, 67186), +(443812, 443811, 3, 1, 391, 176, 1, 4, 67186), +(443534, 443532, 2, 1, 391, 176, 1, 4, 67186), +(443528, 443526, 2, 1, 391, 173, 3, 4, 67186), +(443525, 443523, 2, 1, 391, 173, 2, 4, 67186), +(443522, 443520, 2, 1, 391, 173, 1, 4, 67186), +(443519, 443517, 2, 1, 391, 174, 3, 4, 67186), +(443516, 443514, 2, 1, 391, 174, 2, 4, 67186), +(443513, 443511, 2, 1, 391, 174, 1, 4, 67186), +(443510, 443508, 2, 1, 391, 240, 1, 4, 67186), +(443507, 443505, 2, 1, 391, 240, 3, 4, 67186), +(443504, 443502, 2, 1, 391, 240, 2, 4, 67186), +(446213, 446212, 3, 1, 112, 462462, 0, 0, 67186), +(446212, 0, 4, 1, 0, 0, 0, 0, 67186), +(446265, 446257, 2, 1, 8, 1289396, 0, 0, 67186), +(446264, 446257, 2, 1, 8, 1271615, 0, 0, 67186), +(446263, 446257, 2, 1, 8, 1271614, 0, 0, 67186), +(446262, 446257, 2, 1, 8, 1271613, 0, 0, 67186), +(446261, 446257, 2, 1, 8, 1224700, 0, 0, 67186), +(446260, 446257, 2, 1, 8, 1253017, 0, 0, 67186), +(446259, 446257, 2, 1, 8, 1225598, 0, 0, 67186), +(446258, 446257, 2, 1, 102, 25961, 0, 0, 67186), +(446257, 0, 8, 1, 0, 0, 0, 0, 67186), +(446062, 427203, 2, 1, 67, 50742, 0, 0, 67186), +(446061, 427200, 2, 1, 67, 50743, 0, 0, 67186), +(427219, 427215, 2, 1, 67, 50743, 0, 0, 67186), +(427216, 427212, 2, 1, 67, 50741, 0, 0, 67186), +(427213, 427218, 2, 1, 67, 50742, 0, 0, 67186), +(427210, 427209, 2, 1, 67, 50744, 0, 0, 67186), +(427204, 427197, 2, 1, 67, 50741, 0, 0, 67186), +(427195, 427194, 2, 1, 67, 50744, 0, 0, 67186), +(426834, 426832, 3, 1, 67, 50742, 0, 0, 67186), +(426831, 426829, 3, 1, 67, 50743, 0, 0, 67186), +(426819, 426817, 3, 1, 67, 50744, 0, 0, 67186), +(446036, 446034, 3, 1, 241, 5796, 0, 0, 67186), +(446035, 446034, 2, 1, 110, 88710, 0, 0, 67186), +(446034, 397284, 4, 1, 0, 0, 0, 0, 67186), +(397284, 397282, 8, 1, 0, 0, 0, 0, 67186), +(445975, 148782, 2, 1, 32, 2799, 0, 0, 67186), +(445968, 427701, 2, 1, 200, 296168, 0, 0, 67186), +(445967, 427699, 2, 1, 200, 296171, 0, 0, 67186), +(445966, 427691, 2, 1, 200, 297283, 0, 0, 67186), +(445965, 427688, 2, 1, 200, 297284, 0, 0, 67186), +(427702, 427701, 2, 1, 200, 297278, 0, 0, 67186), +(427700, 427699, 2, 1, 200, 297285, 0, 0, 67186), +(427692, 427691, 2, 1, 200, 296169, 0, 0, 67186), +(427689, 427688, 2, 1, 200, 296170, 0, 0, 67186), +(445862, 445453, 3, 1, 289, 1867, 0, 0, 67186), +(445455, 445453, 2, 1, 86, 61941, 0, 0, 67186), +(445454, 445453, 3, 1, 378, 88, 0, 0, 67186), +(445453, 0, 4, 1, 0, 0, 0, 0, 67186); + +DELETE FROM `mount` WHERE `VerifiedBuild`>0 AND `ID` IN (3010, 3009, 3008, 3007, 3006, 3005, 2535); +INSERT INTO `mount` (`Name`, `SourceText`, `Description`, `ID`, `MountTypeID`, `Flags`, `SourceTypeEnum`, `SourceSpellID`, `PlayerConditionID`, `MountFlyRideHeight`, `UiModelSceneID`, `MountSpecialRiderAnimKitID`, `MountSpecialSpellVisualKitID`, `VerifiedBuild`) VALUES +('High-Yield Shreddertank', '|cFFFFD200Vendor:|r Lindormi|n', '', 3010, 424, 0, 2, 1296759, 0, 0, 4, 0, 0, 67186), +('Speculative Shreddertank', '|cFFFFD200Vendor:|r Lindormi|n', '', 3009, 424, 0, 2, 1296760, 0, 0, 4, 0, 0, 67186), +('Profit-Green Shreddertank', '|cFFFFD200Vendor:|r Lindormi|n', '', 3008, 424, 0, 2, 1296758, 0, 0, 4, 0, 0, 67186), +('Blue-Chip Shreddertank', '|cFFFFD200Vendor:|r Lindormi|n', '', 3007, 424, 0, 2, 1296756, 0, 0, 4, 0, 0, 67186), +('Amethyst Mechsuit', '|cFFFFD200Vendor:|r Lindormi|n', '', 3006, 424, 0, 2, 1296734, 0, 0, 4, 0, 0, 67186), +('Cerulean Deathwalker', '|cFFFFD200Vendor:|r Lindormi|n', '', 3005, 424, 0, 2, 1296731, 0, 0, 4, 0, 0, 67186), +('Void-Scarred Lynx', '|cFFFFD200Drop:|r Confiscated Cultist\'s Bag', 'Taming lynxes is a practice that the Arathi have honed for years. While the Nightfall cultists remain devoted to their cause, they are still ones for passing that tradition along.', 2535, 230, 0, -1, 1228865, 0, 0, 4, 0, 0, 67186); + +DELETE FROM `mount_x_display` WHERE `VerifiedBuild`>0 AND `ID` IN (3655, 3654, 3653, 3652, 3651, 3650); +INSERT INTO `mount_x_display` (`ID`, `CreatureDisplayInfoID`, `PlayerConditionID`, `Unknown1100`, `MountID`, `VerifiedBuild`) VALUES +(3655, 144756, 0, 0, 3010, 67186), +(3654, 144755, 0, 0, 3009, 67186), +(3653, 144754, 0, 0, 3008, 67186), +(3652, 144753, 0, 0, 3007, 67186), +(3651, 144752, 0, 0, 3006, 67186), +(3650, 102061, 0, 0, 3005, 67186); + +DELETE FROM `perks_activity` WHERE `VerifiedBuild`>0 AND `ID`=918; +INSERT INTO `perks_activity` (`ActivityName`, `Description`, `ID`, `CriteriaTreeID`, `ThresholdContributionAmount`, `Supersedes`, `Priority`, `VerifiedBuild`) VALUES +('Catch Fish With Abyss Anglers', 'Speak to Depthdiver Jeju on the Zul\'Aman Depths shore to begin catching fish.', 918, 222692, 50, 0, 0, 67186); + +DELETE FROM `phase` WHERE `VerifiedBuild`>0 AND `ID`=29202; +INSERT INTO `phase` (`ID`, `Flags`, `VerifiedBuild`) VALUES +(29202, 20, 67186); + +DELETE FROM `player_condition` WHERE `VerifiedBuild`>0 AND `ID` IN (150305, 158259, 158261, 156069, 151169, 151168, 151167, 151166, 151165, 151161, 151160, 151159, 151158, 151157, 151155, 155979, 157695, 157666, 157603, 154160, 154159, 154158, 154157, 154156, 154155, 154154, 154153, 154152, 154151, 157668, 155203, 155192, 155185, 154642, 156525, 156524, 151196, 157003, 157002, 156957, 156933, 151162, 156816, 154472, 151164, 151163, 142975, 156592, 156591, 156536, 156537); +INSERT INTO `player_condition` (`ID`, `RaceMask`, `FailureDescription`, `MinLevel`, `MaxLevel`, `ClassMask`, `SkillLogic`, `LanguageID`, `MinLanguage`, `MaxLanguage`, `MaxFactionID`, `MaxReputation`, `ReputationLogic`, `CurrentPvpFaction`, `PvpMedal`, `PrevQuestLogic`, `CurrQuestLogic`, `CurrentCompletedQuestLogic`, `SpellLogic`, `ItemLogic`, `ItemFlags`, `AuraSpellLogic`, `WorldStateExpressionID`, `WeatherID`, `PartyStatus`, `LifetimeMaxPVPRank`, `AchievementLogic`, `Gender`, `NativeGender`, `AreaLogic`, `LfgLogic`, `CurrencyLogic`, `QuestKillID`, `QuestKillLogic`, `MinExpansionLevel`, `MaxExpansionLevel`, `MinAvgItemLevel`, `MaxAvgItemLevel`, `MinAvgEquippedItemLevel`, `MaxAvgEquippedItemLevel`, `PhaseUseFlags`, `PhaseID`, `PhaseGroupID`, `Flags`, `ChrSpecializationIndex`, `ChrSpecializationRole`, `ModifierTreeID`, `PowerType`, `PowerTypeComp`, `PowerTypeValue`, `WeaponSubclassMask`, `MaxGuildLevel`, `MinGuildLevel`, `MaxExpansionTier`, `MinExpansionTier`, `MinPVPRank`, `MaxPVPRank`, `ContentTuningID`, `CovenantID`, `TraitNodeEntryLogic`, `SkillID1`, `SkillID2`, `SkillID3`, `SkillID4`, `MinSkill1`, `MinSkill2`, `MinSkill3`, `MinSkill4`, `MaxSkill1`, `MaxSkill2`, `MaxSkill3`, `MaxSkill4`, `MinFactionID1`, `MinFactionID2`, `MinFactionID3`, `MinReputation1`, `MinReputation2`, `MinReputation3`, `PrevQuestID1`, `PrevQuestID2`, `PrevQuestID3`, `PrevQuestID4`, `CurrQuestID1`, `CurrQuestID2`, `CurrQuestID3`, `CurrQuestID4`, `CurrentCompletedQuestID1`, `CurrentCompletedQuestID2`, `CurrentCompletedQuestID3`, `CurrentCompletedQuestID4`, `SpellID1`, `SpellID2`, `SpellID3`, `SpellID4`, `ItemID1`, `ItemID2`, `ItemID3`, `ItemID4`, `ItemCount1`, `ItemCount2`, `ItemCount3`, `ItemCount4`, `Explored1`, `Explored2`, `Time1`, `Time2`, `AuraSpellID1`, `AuraSpellID2`, `AuraSpellID3`, `AuraSpellID4`, `AuraStacks1`, `AuraStacks2`, `AuraStacks3`, `AuraStacks4`, `Achievement1`, `Achievement2`, `Achievement3`, `Achievement4`, `AreaID1`, `AreaID2`, `AreaID3`, `AreaID4`, `LfgStatus1`, `LfgStatus2`, `LfgStatus3`, `LfgStatus4`, `LfgCompare1`, `LfgCompare2`, `LfgCompare3`, `LfgCompare4`, `LfgValue1`, `LfgValue2`, `LfgValue3`, `LfgValue4`, `CurrencyID1`, `CurrencyID2`, `CurrencyID3`, `CurrencyID4`, `CurrencyCount1`, `CurrencyCount2`, `CurrencyCount3`, `CurrencyCount4`, `QuestKillMonster1`, `QuestKillMonster2`, `QuestKillMonster3`, `QuestKillMonster4`, `QuestKillMonster5`, `QuestKillMonster6`, `MovementFlags1`, `MovementFlags2`, `RaceMask_1`, `RaceMask_2`, `TraitNodeEntryID1`, `TraitNodeEntryID2`, `TraitNodeEntryID3`, `TraitNodeEntryID4`, `TraitNodeEntryMinRank1`, `TraitNodeEntryMinRank2`, `TraitNodeEntryMinRank3`, `TraitNodeEntryMinRank4`, `TraitNodeEntryMaxRank1`, `TraitNodeEntryMaxRank2`, `TraitNodeEntryMaxRank3`, `TraitNodeEntryMaxRank4`, `VerifiedBuild`) VALUES +(150305, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 65536, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 4609, -1, -1, 428338, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1256798, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(158259, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(158261, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 449796, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156069, 0, 'Requires Achievement:|nAngler\'s Abyss: All Blue Angler', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1293499, 0, 0, 0, 274266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151169, 0, 'Requires Achievement:|nAbyss Anglers: Idol of the Depths', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151168, 0, 'Requires Achievement:|nAbyss Anglers: Triple-Thread Net', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443532, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151167, 0, 'Requires Achievement:|nAbyss Anglers: Shallows Net', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443529, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151166, 0, 'Requires Achievement: Angler\'s Abyss: Hollowcore Harpoon Turret', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151165, 0, 'Requires Achievement: Angler\'s Abyss: Heavy Harpoon Cannon', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151161, 0, 'Requires Achievement:|nAbyss Anglers: Pahk Trench Fins', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443517, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151160, 0, 'Requires Achievement:|nAbyss Anglers: Depth Grease', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443514, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151159, 0, 'Requires Achievement:|nAbyss Anglers: Reinforced Joints', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443511, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151158, 0, 'Requires Achievement:|nAbyss Anglers: Nalorakk\'s Breath Tank', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443526, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151157, 0, 'Requires Achievement:|nAbyss Anglers: Fathom-Tested Tank', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443523, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151155, 0, 'Requires Achievement:|nAbyss Anglers: Depthdiver\'s Used Tank', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443520, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(155979, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 11, -1, 0, 0, 0, 0, 0, 0, 0, 33, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 6069, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(157695, 0, 'Only available inside Tier 11 Delves.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 458762, 0, 0, 0, 0, 0, 0, 43042, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93935, 93936, 93937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3317, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(157666, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 33, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 4240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90806, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(157603, 0, 'Unlocked by progressing the Season 1 Delver\'s Journey.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3317, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154160, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439200, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264323, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154159, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439186, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264318, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154158, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439172, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264315, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154157, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439156, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264321, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154156, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439142, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264314, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154155, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439128, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264319, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154154, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439082, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264322, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154153, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439114, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264316, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154152, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439096, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264317, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154151, 0, 'You have collected all of the transmog looks contained in this cache.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 32, -1, -1, 439068, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264320, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(157668, 0, 'You don\'t have a Timelost Saddle. You cannot purchase this item.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 275436, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(155203, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 442099, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(155192, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 442087, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(155185, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 440597, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154642, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 440597, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156525, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51114, 0, 0, 0, 0, -1, -1, 65536, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 33, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156524, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50697, 0, 0, 0, 0, -1, -1, 65536, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 33, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 3313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16939, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151196, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51114, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(157003, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 4097, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96388, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(157002, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 446820, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156957, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88710, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156933, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 446588, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151162, 0, 'Requires Achievement:|nAbyss Anglers: Finnow Chum', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443508, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156816, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 446257, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(154472, 0, 'Requires Achievement:|nAbyss Anglers: Pressurized Eyeglass', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151164, 0, 'Requires Achievement:|nAbyss Anglers: Murkskimmer Meat', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443505, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(151163, 0, 'Requires Achievement:|nAbyss Anglers: Plecofin Bait', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 443502, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(142975, 0, 'You cannot earn 10 Myth Dawncrests right now.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 406587, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156592, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1241163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156591, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1241162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156536, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52287, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(156537, 0, '', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88769, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `player_data_element_character` WHERE `VerifiedBuild`>0 AND `ID` IN (441, 402, 401, 400, 305, 304, 302, 297, 296, 295, 294, 293, 292, 291, 285, 284, 283, 282, 279, 278, 277, 276, 275, 274, 271, 268); +INSERT INTO `player_data_element_character` (`ID`, `StorageIndex`, `Type`, `Unknown1125`, `VerifiedBuild`) VALUES +(441, 431, 0, 0, 67186), +(402, 392, 0, 0, 67186), +(401, 391, 0, 0, 67186), +(400, 390, 0, 0, 67186), +(305, 298, 0, 0, 67186), +(304, 297, 0, 0, 67186), +(302, 295, 0, 0, 67186), +(297, 293, 0, 0, 67186), +(296, 292, 0, 0, 67186), +(295, 291, 0, 0, 67186), +(294, 290, 0, 0, 67186), +(293, 289, 0, 0, 67186), +(292, 288, 0, 0, 67186), +(291, 287, 0, 0, 67186), +(285, 281, 0, 0, 67186), +(284, 280, 0, 0, 67186), +(283, 279, 0, 0, 67186), +(282, 278, 0, 0, 67186), +(279, 275, 0, 0, 67186), +(278, 274, 0, 0, 67186), +(277, 273, 0, 0, 67186), +(276, 272, 0, 0, 67186), +(275, 271, 0, 0, 67186), +(274, 270, 0, 0, 67186), +(271, 267, 1, 0, 67186), +(268, 264, 0, 0, 67186); + +DELETE FROM `player_data_flag_account` WHERE `VerifiedBuild`>0 AND `ID`=88; +INSERT INTO `player_data_flag_account` (`ID`, `StorageIndex`, `Unknown1107`, `Unknown1125`, `VerifiedBuild`) VALUES +(88, 79, 0, 0, 67186); + +DELETE FROM `quest_v2` WHERE `VerifiedBuild`>0 AND `ID` IN (95549, 96388, 93870, 93816, 96936, 93714, 93713, 93712, 93711, 93710, 93709, 93708, 93707, 93706, 93705, 93704, 93703, 93702, 93701, 93700, 93699, 93698, 93697, 93696, 93695, 93694, 93693, 93692, 93691, 93690, 93891, 92809, 92808, 92807, 92806, 92805, 92804, 92803, 92801, 92800, 92799, 92798, 92797, 92796, 92795, 92794, 92793, 92792, 92791, 92790, 92789, 92788, 92787, 92786, 92785, 92784, 92783, 92782, 92781, 92780, 92779, 92778, 92777, 92776, 92775, 92774, 92773, 92772, 92771, 92770, 92769, 92768, 92767, 92766, 92765, 92764, 92763, 92762, 92761, 92760, 92759, 92758, 92756, 92093, 92092, 92091, 92090, 92089, 92088, 92087, 86899, 91843, 85884, 85027, 84371, 53371, 53347, 50553, 50504, 50493, 50359, 50264, 50168, 50165, 50162, 50161, 95554, 95553, 95552, 95551, 95550, 95548, 95547, 94386, 94385, 96080, 94380, 88710, 84996, 48022, 94382, 93049, 91389, 86722, 86721, 86715, 86712, 86711, 86710, 96527, 94920, 94383, 93719, 91044, 90818, 89324, 89323, 89012, 87457, 86903, 86827, 86733, 82483); +INSERT INTO `quest_v2` (`ID`, `UniqueBitFlag`, `UiQuestDetailsTheme`, `VerifiedBuild`) VALUES +(95549, 68886, 0, 67186), +(96388, 69801, 0, 67186), +(93870, 67719, 0, 67186), +(93816, 67668, 0, 67186), +(96936, 70307, 0, 67186), +(93714, 67571, 36, 67186), +(93713, 67570, 36, 67186), +(93712, 67569, 36, 67186), +(93711, 67568, 36, 67186), +(93710, 67567, 36, 67186), +(93709, 67566, 45, 67186), +(93708, 67565, 45, 67186), +(93707, 67564, 45, 67186), +(93706, 67563, 45, 67186), +(93705, 67562, 45, 67186), +(93704, 67561, 34, 67186), +(93703, 67560, 34, 67186), +(93702, 67559, 34, 67186), +(93701, 67558, 34, 67186), +(93700, 67557, 34, 67186), +(93699, 67556, 40, 67186), +(93698, 67555, 40, 67186), +(93697, 67554, 40, 67186), +(93696, 67553, 37, 67186), +(93695, 67552, 44, 67186), +(93694, 67551, 43, 67186), +(93693, 67550, 42, 67186), +(93692, 67549, 35, 67186), +(93691, 67548, 33, 67186), +(93690, 67547, 38, 67186), +(93891, 67601, 0, 67186), +(92809, 66766, 0, 67186), +(92808, 66765, 0, 67186), +(92807, 66764, 0, 67186), +(92806, 66763, 0, 67186), +(92805, 66762, 0, 67186), +(92804, 66761, 0, 67186), +(92803, 66760, 0, 67186), +(92801, 66758, 0, 67186), +(92800, 66757, 0, 67186), +(92799, 66756, 0, 67186), +(92798, 66755, 0, 67186), +(92797, 66754, 0, 67186), +(92796, 66753, 0, 67186), +(92795, 66752, 0, 67186), +(92794, 66751, 0, 67186), +(92793, 66750, 0, 67186), +(92792, 66749, 0, 67186), +(92791, 66748, 0, 67186), +(92790, 66747, 0, 67186), +(92789, 66746, 0, 67186), +(92788, 66745, 0, 67186), +(92787, 66744, 0, 67186), +(92786, 66743, 0, 67186), +(92785, 66742, 0, 67186), +(92784, 66741, 0, 67186), +(92783, 66740, 0, 67186), +(92782, 66739, 0, 67186), +(92781, 66738, 0, 67186), +(92780, 66737, 0, 67186), +(92779, 66736, 0, 67186), +(92778, 66735, 0, 67186), +(92777, 66734, 0, 67186), +(92776, 66733, 0, 67186), +(92775, 66732, 0, 67186), +(92774, 66731, 0, 67186), +(92773, 66730, 0, 67186), +(92772, 66729, 0, 67186), +(92771, 66728, 0, 67186), +(92770, 66727, 0, 67186), +(92769, 66726, 0, 67186), +(92768, 66725, 0, 67186), +(92767, 66724, 0, 67186), +(92766, 66723, 0, 67186), +(92765, 66722, 0, 67186), +(92764, 66721, 0, 67186), +(92763, 66720, 0, 67186), +(92762, 66719, 0, 67186), +(92761, 66718, 0, 67186), +(92760, 66717, 0, 67186), +(92759, 66716, 0, 67186), +(92758, 66715, 0, 67186), +(92756, 66713, 0, 67186), +(92093, 66048, 0, 67186), +(92092, 66047, 0, 67186), +(92091, 66046, 0, 67186), +(92090, 66045, 0, 67186), +(92089, 66044, 0, 67186), +(92088, 66043, 0, 67186), +(92087, 66042, 0, 67186), +(86899, 61797, 0, 67186), +(91843, 65823, 0, 67186), +(85884, 60928, 0, 67186), +(85027, 60131, 0, 67186), +(84371, 61107, 0, 67186), +(53371, 33297, 0, 67186), +(53347, 33276, 0, 67186), +(50553, 31026, 0, 67186), +(50504, 30975, 0, 67186), +(50493, 30963, 0, 67186), +(50359, 30835, 0, 67186), +(50264, 30741, 0, 67186), +(50168, 30653, 0, 67186), +(50165, 30650, 0, 67186), +(50162, 30647, 0, 67186), +(50161, 30646, 0, 67186), +(95554, 68891, 0, 67186), +(95553, 68890, 0, 67186), +(95552, 68889, 0, 67186), +(95551, 68888, 0, 67186), +(95550, 68887, 0, 67186), +(95548, 68885, 0, 67186), +(95547, 68884, 0, 67186), +(94386, 67900, 0, 67186), +(94385, 67899, 0, 67186), +(96080, 69520, 0, 67186), +(94380, 67894, 0, 67186), +(88710, 63426, 0, 67186), +(84996, 60097, 0, 67186), +(48022, 28922, 0, 67186), +(94382, 67896, 0, 67186), +(93049, 66983, 0, 67186), +(91389, 65414, 0, 67186), +(86722, 61617, 0, 67186), +(86721, 61616, 0, 67186), +(86715, 61610, 0, 67186), +(86712, 61607, 0, 67186), +(86711, 61606, 0, 67186), +(86710, 61605, 0, 67186), +(96527, 69932, 0, 67186), +(94920, 68361, 0, 67186), +(94383, 67897, 0, 67186), +(93719, 67576, 0, 67186), +(91044, 65106, 0, 67186), +(90818, 64894, 0, 67186), +(89324, 63973, 0, 67186), +(89323, 63972, 0, 67186), +(89012, 63671, 0, 67186), +(87457, 62302, 0, 67186), +(86903, 61801, 0, 67186), +(86827, 61725, 0, 67186), +(86733, 61627, 0, 67186), +(82483, 57758, 0, 67186); + +UPDATE `quest_v2` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=93048; +DELETE FROM `scenario` WHERE `VerifiedBuild`>0 AND `ID` IN (3181, 3389, 3308, 3291, 3280, 3251, 3245, 3234, 3233, 3229, 3209, 3206, 3180, 3174); +INSERT INTO `scenario` (`ID`, `Name`, `AreaTableID`, `Type`, `Flags`, `UiTextureKitID`, `UiScenarioDisplayInfoID`, `VerifiedBuild`) VALUES +(3181, 'Abyss Anglers', 0, 0, 2, 5704, 0, 67186), +(3389, 'Pylon Strike: Scintilas Falls', 0, 0, 162, 5704, 0, 67186), +(3308, 'Void Rift: Sunset Strand', 0, 0, 162, 5704, 0, 67186), +(3291, 'Power Vacuum', 0, 0, 160, 5704, 0, 67186), +(3280, 'Wayward Waygate', 0, 0, 160, 5704, 0, 67186), +(3251, 'Void Ritual: Grizzly', 0, 0, 160, 5704, 0, 67186), +(3245, 'Toil & Trouble', 0, 0, 160, 0, 0, 67186), +(3234, 'Defiled Relics of the Sedge', 0, 0, 160, 5704, 0, 67186), +(3233, 'While We\'re Down', 0, 0, 160, 5704, 0, 67186), +(3229, 'Voidstrider Isle', 0, 0, 160, 5704, 0, 67186), +(3209, '[DNT] Example Scenario', 0, 0, 160, 0, 0, 67186), +(3206, 'Template Scenario', 0, 0, 160, 0, 0, 67186), +(3180, 'A Reinforced Ritual', 0, 0, 160, 5704, 0, 67186), +(3174, 'Void Incursion', 0, 0, 162, 5704, 0, 67186); + +DELETE FROM `scenario_step` WHERE `VerifiedBuild`>0 AND `ID` IN (16092, 16090, 16088, 16441, 16376); +INSERT INTO `scenario_step` (`Description`, `Title`, `ID`, `ScenarioID`, `Criteriatreeid`, `RewardQuestID`, `RelatedStep`, `Supersedes`, `OrderIndex`, `Flags`, `VisibilityPlayerConditionID`, `WidgetSetID`, `VerifiedBuild`) VALUES +('Catch aquatic life and uncover treasures within the Zul\'Aman Depths.', 'Abyss Anglers', 16092, 3181, 216236, 0, 0, 0, 0, 0, 0, 0, 67186), +('', 'Seek Phase', 16090, 3179, 0, 0, 0, 0, 2, 0, 0, 0, 67186), +('', 'Hide Phase', 16088, 3179, 0, 0, 0, 0, 1, 0, 0, 0, 67186), +('Collect Arcane Sparks from the Naga and their siphons and bring the sparks to the Pylons.', 'Powering the Pylons', 16441, 3253, 219747, 0, 0, 0, 0, 16, 0, 0, 67186), +('Defeat the Domanaar Commander.', 'Break the Falx', 16376, 3229, 218526, 92589, 0, 0, 1, 16, 0, 0, 67186); + +DELETE FROM `skill_line_ability` WHERE `VerifiedBuild`>0 AND `ID` IN (58556, 58555, 58554, 58553, 58545, 58544); +INSERT INTO `skill_line_ability` (`RaceMask`, `AbilityVerb`, `AbilityAllVerb`, `ID`, `SkillLine`, `Spell`, `MinSkillLineRank`, `ClassMask`, `SupercedesSpell`, `AcquireMethod`, `TrivialSkillLineRankHigh`, `TrivialSkillLineRankLow`, `Flags`, `NumSkillUps`, `UniqueBit`, `TradeSkillCategoryID`, `SkillupSkillLineID`, `RaceMask_1`, `RaceMask_2`, `VerifiedBuild`) VALUES +(0, '', '', 58556, 777, 1296760, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 67186), +(0, '', '', 58555, 777, 1296759, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 67186), +(0, '', '', 58554, 777, 1296758, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 67186), +(0, '', '', 58553, 777, 1296756, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 67186), +(0, '', '', 58545, 777, 1296734, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 67186), +(0, '', '', 58544, 777, 1296731, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `sound_kit` WHERE `VerifiedBuild`>0 AND `ID` IN (23199, 25249, 26684, 7518, 3325, 24055, 28712, 332176, 332175, 325839, 325429, 324387, 324014, 313283, 289292, 350186, 350185, 350177, 350176, 350169, 350167, 350166, 349021); +INSERT INTO `sound_kit` (`ID`, `SoundType`, `VolumeFloat`, `Flags`, `MinDistance`, `DistanceCutoff`, `EAXDef`, `SoundKitAdvancedID`, `VolumeVariationPlus`, `VolumeVariationMinus`, `PitchVariationPlus`, `PitchVariationMinus`, `DialogType`, `PitchAdjust`, `BusOverwriteID`, `MaxInstances`, `SoundMixGroupID`, `VerifiedBuild`) VALUES +(23199, 1, 1, 0, 8, 45, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(25249, 1, 0.409999996423721313, 512, 8, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(26684, 1, 0.379999995231628417, 0, 8, 45, 2, 87407, 0, 0, 0.149999991059303283, 0.149999991059303283, 0, 0, 0, 0, 0, 67186), +(7518, 1, 0.158489316701889038, 0, 4, 10, 0, 154082, 0, 0, 0.122462153434753417, 0.109101362526416778, 0, 0, 0, 0, 0, 67186), +(3325, 1, 0.800000011920928955, 0, 8, 45, 2, 54105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(24055, 1, 0.707945764064788818, 0, 10, 50, 0, 156662, 0, 0, 0.059463143348693847, 0.109101362526416778, 0, 0, 0, 0, 0, 67186), +(28712, 1, 0.649999976158142089, 0, 8, 45, 0, 81580, 0, 0, 0.149999991059303283, 0.149999991059303283, 0, 0, 0, 0, 0, 67186), +(332176, 1, 0.022387212142348289, 512, 5, 35, 0, 295855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(332175, 1, 0.125892534852027893, 512, 5, 35, 0, 295854, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, 0, 0, 0, 0, 67186), +(325839, 1, 0.031622774899005889, 512, 5, 10, 2, 289521, 0, 0, 0, 0, 0, 0.25992131233215332, 0, 0, 0, 67186), +(325429, 1, 0.50118720531463623, 0, 5, 40, 0, 289116, 0, 0, 0.122462153434753417, 0.109101362526416778, 0, 0, 14, 0, 821, 67186), +(324387, 1, 0.251188635826110839, 0, 5, 40, 0, 288072, 0, 0, 0.122462153434753417, 0.109101362526416778, 0, 0, 14, 0, 821, 67186), +(324014, 1, 0.223872095346450805, 0, 5, 20, 0, 287705, 0, 0, 0.122462153434753417, 0.109101362526416778, 0, 0.587401628494262695, 0, 1, 821, 67186), +(313283, 1, 1, 512, 10, 40, 0, 277374, 0, 0, 0.189207315444946289, 0.159103691577911376, 0, 0.414213895797729492, 0, 0, 0, 67186), +(289292, 50, 0.50118720531463623, 1792, 5, 20, 0, 253483, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, 0.25992131233215332, 0, 0, 0, 67186), +(350186, 1, 0.251188635826110839, 0, 8, 45, 0, 314117, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, 0, 193, 0, 0, 67186), +(350185, 1, 0.251188635826110839, 0, 8, 45, 0, 314116, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, 1.378415822982788085, 193, 0, 0, 67186), +(350177, 2, 0.549540877342224121, 4096, 8, 45, 0, 314108, 0, 0, 0, 0, 0, 0.414213895797729492, 0, 0, 0, 67186), +(350176, 1, 0.50118720531463623, 4096, 8, 45, 0, 314110, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, 0.414213895797729492, 193, 0, 0, 67186), +(350169, 1, 0.354813367128372192, 0, 5, 20, 0, 314101, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, -0.10910136252641677, 0, 0, 0, 67186), +(350167, 1, 0.199526235461235046, 512, 5, 25, 0, 314099, 0, 0, 0, 0, 0, -0.10910136252641677, 0, 0, 0, 67186), +(350166, 1, 0.158489316701889038, 512, 5, 25, 0, 314098, 0, 0, 0.059463143348693847, 0.056125760078430175, 0, 0, 0, 0, 0, 67186), +(349021, 10, 0.707945764064788818, 1, 10, 60, 0, 312954, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +UPDATE `sound_kit` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (327695, 327694, 313284, 313282); +UPDATE `sound_kit` SET `MaxInstances`=3, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=313280; +DELETE FROM `spell_aura_options` WHERE `VerifiedBuild`>0 AND `ID` IN (243741, 244464, 243447, 240548, 22036, 243101, 245831, 244260, 219959); +INSERT INTO `spell_aura_options` (`ID`, `DifficultyID`, `CumulativeAura`, `ProcCategoryRecovery`, `ProcChance`, `ProcCharges`, `SpellProcsPerMinuteID`, `ProcTypeMask1`, `ProcTypeMask2`, `SpellID`, `VerifiedBuild`) VALUES +(243741, 0, 3, 0, 101, 0, 0, 0, 4, 1260269, 67186), +(244464, 0, 5, 0, 101, 0, 0, 0, 0, 1270294, 67186), +(243447, 0, 0, 0, 101, 0, 148, 2446676, 0, 1255278, 67186), +(240548, 0, 0, 0, 100, 0, 0, 256, 0, 1219616, 67186), +(22036, 0, 0, 0, 100, 0, 0, 81920, 0, 215768, 67186), +(243101, 0, 0, 3000, 100, 0, 0, 139944, 0, 1248452, 67186), +(245831, 0, 7, 0, 101, 0, 0, 0, 0, 1292124, 67186), +(244260, 0, 15, 0, 101, 0, 0, 0, 0, 1266350, 67186), +(219959, 0, 0, 0, 100, 1, 0, 0, 4, 375229, 67186); + +DELETE FROM `spell_aura_restrictions` WHERE `VerifiedBuild`>0 AND `ID` IN (24602, 23751); +INSERT INTO `spell_aura_restrictions` (`ID`, `DifficultyID`, `CasterAuraState`, `TargetAuraState`, `ExcludeCasterAuraState`, `ExcludeTargetAuraState`, `CasterAuraSpell`, `TargetAuraSpell`, `ExcludeCasterAuraSpell`, `ExcludeTargetAuraSpell`, `CasterAuraType`, `TargetAuraType`, `ExcludeCasterAuraType`, `ExcludeTargetAuraType`, `SpellID`, `VerifiedBuild`) VALUES +(24602, 0, 0, 0, 0, 0, 0, 0, 1280123, 1280123, 0, 0, 0, 0, 1280123, 67186), +(23751, 0, 0, 0, 0, 0, 0, 0, 1265480, 1265480, 0, 0, 0, 0, 1265480, 67186); + +DELETE FROM `spell_casting_requirements` WHERE `VerifiedBuild`>0 AND `ID`=231942; +INSERT INTO `spell_casting_requirements` (`ID`, `SpellID`, `FacingCasterFlags`, `MinFactionID`, `MinReputation`, `RequiredAreasID`, `RequiredAuraVision`, `RequiresSpellFocus`, `VerifiedBuild`) VALUES +(231942, 1241218, 0, 0, 0, 8628, 0, 0, 67186); + +DELETE FROM `spell_categories` WHERE `VerifiedBuild`>0 AND `ID` IN (159884, 184531, 184530, 184529, 184528, 184521, 184519, 184419, 177661, 184146, 183982, 155980); +INSERT INTO `spell_categories` (`ID`, `DifficultyID`, `Category`, `DefenseType`, `DiminishType`, `DispelType`, `Mechanic`, `PreventionType`, `StartRecoveryCategory`, `ChargeCategory`, `SpellID`, `VerifiedBuild`) VALUES +(159884, 0, 0, 0, 0, 0, 0, 1, 0, 0, 441587, 67186), +(184531, 0, 0, 0, 0, 0, 21, 0, 330, 0, 1296760, 67186), +(184530, 0, 0, 0, 0, 0, 21, 0, 330, 0, 1296759, 67186), +(184529, 0, 0, 0, 0, 0, 21, 0, 330, 0, 1296758, 67186), +(184528, 0, 0, 0, 0, 0, 21, 0, 330, 0, 1296756, 67186), +(184521, 0, 0, 0, 0, 0, 21, 0, 0, 0, 1296734, 67186), +(184519, 0, 0, 0, 0, 0, 21, 0, 0, 0, 1296731, 67186), +(184419, 0, 1152, 0, 0, 0, 0, 0, 133, 0, 1296168, 67186), +(177661, 0, 0, 1, 0, 1, 5, 0, 0, 0, 1259443, 67186), +(184146, 0, 0, 0, 0, 0, 9, 0, 0, 0, 1295191, 67186), +(183982, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1294776, 67186), +(155980, 0, 0, 0, 0, 0, 0, 0, 133, 0, 428402, 67186); + +DELETE FROM `spell_class_options` WHERE `VerifiedBuild`>0 AND `ID` IN (83782, 79283, 80583, 16713, 16300, 1906, 83426); +INSERT INTO `spell_class_options` (`ID`, `SpellID`, `ModalNextSpell`, `SpellClassSet`, `SpellClassMask1`, `SpellClassMask2`, `SpellClassMask3`, `SpellClassMask4`, `VerifiedBuild`) VALUES +(83782, 1298446, 0, 9, 0, 0, 0, 0, 67186), +(79283, 1223323, 0, 9, 0, 0, 0, 0, 67186), +(80583, 1244347, 0, 15, 0, 0, 0, 0, 67186), +(16713, 125174, 0, 53, 0, 0, 0, 0, 67186), +(16300, 122470, 0, 53, 0, 0, 512, 0, 67186), +(1906, 23920, 0, 4, 2048, 2, 0, 0, 67186), +(83426, 1291636, 0, 224, 4, 8192, 67108864, 0, 67186); + +DELETE FROM `spell_cooldowns` WHERE `VerifiedBuild`>0 AND `ID` IN (99989, 94510, 94321, 99433, 99730, 99639); +INSERT INTO `spell_cooldowns` (`ID`, `DifficultyID`, `CategoryRecoveryTime`, `RecoveryTime`, `StartRecoveryTime`, `AuraSpellID`, `SpellID`, `VerifiedBuild`) VALUES +(99989, 0, 0, 1, 0, 0, 1293502, 67186), +(94510, 0, 0, 1000, 0, 0, 1237942, 67186), +(94321, 0, 0, 1000, 0, 0, 1235216, 67186), +(99433, 0, 0, 15000, 0, 0, 1293593, 67186), +(99730, 0, 0, 5000, 1500, 0, 1296168, 67186), +(99639, 0, 0, 5000, 0, 0, 1256191, 67186); + +DELETE FROM `spell_duration` WHERE `VerifiedBuild`>0 AND `ID`=1569; +INSERT INTO `spell_duration` (`ID`, `Duration`, `MaxDuration`, `DurationPerResource`, `VerifiedBuild`) VALUES +(1569, 450000, 450000, 0, 67186); + +DELETE FROM `spell_effect` WHERE `VerifiedBuild`>0 AND `ID` IN (1322330, 1322283, 1322282, 1322112, 1321581, 1275185, 1263781, 1263777, 1282546, 1239845, 756024, 1315651, 1315650, 1311981, 1289933, 1266351, 1264705, 1218764, 1218763, 1218762, 1218761, 1218760, 1218759, 1218758, 1218757, 1218756, 1218755, 1218754, 1218753, 1218752, 1218751, 1218750, 1218749, 1218748, 1218747, 1218746, 1218745, 1218744, 1218743, 1218742, 1218741, 1218740, 1218739, 1218738, 1218737, 1218736, 1218735, 1217076, 1217075, 1217074, 1217073, 1217072, 1217002, 1217001, 1216999, 1216998, 1216179, 1322003, 1281336, 1230827, 1214317, 1317295, 1264335, 1236566, 1282244, 1321667, 1321559, 260927, 191087, 191086, 191085, 1321497, 170709, 158092, 154256, 1051086, 1026943, 1026957, 1026956, 1294472, 1320656, 206265, 1308103, 1288396, 1317304, 1317303, 1285926, 1285925, 1283220, 1266878, 1266354, 1265430, 1264885, 1264704, 1264673, 1264658, 1210529, 1031561, 1317268, 1317267, 1317259, 1317253, 1280836, 1266346, 1266345, 1263763, 1247641, 1026102, 68093, 1252830, 1274849, 1274848, 1306885, 1271571, 1319670, 1314377, 1264811, 1235034, 1235033, 1235032, 1081540, 1079597, 298593, 295730, 1307596, 1307595, 1032350, 1032349, 876349, 876348, 290380, 1319367, 1308336, 896892, 1244971, 1319512, 1319511, 1319509, 1319507, 1319463, 1319457, 1316373, 1214968, 896453, 890886, 1319202, 1319201, 1319200, 1319005, 1319104, 1284187, 349470, 298412, 260932, 260931, 260930, 191104, 191084, 179713, 179708, 132060, 129048, 86331, 1266430, 1264711, 260998, 260997, 191049, 191048, 191047, 191046, 179723, 1319047, 1318955, 1189889, 1318722, 1318721, 1318706, 1318642, 1318641, 1248742, 1311365, 1284429, 1318975, 1275771, 1273839, 1273077, 1314559, 1245026, 1231028, 1311612, 1279209, 1156794, 1156793, 1004615, 1318368, 1318341, 1318340, 1318336, 1318335, 1318291, 1318284, 1268558, 1300823, 1281488, 1269008, 1318124, 1318025, 1318024, 36562, 33703, 1156060, 1197410, 1176322, 1276369, 1317749, 1035394, 1035393, 1317597, 1317596, 1317572, 1245242, 1317559, 1287681, 1317414, 1289007, 1032419, 1029059, 737871, 191091, 301124, 1317394, 1273067, 1252594, 1249259, 1135777, 1096991, 898195, 261018, 44107, 280, 1273712, 844836, 318967, 318965, 315254, 306731, 1311598, 1262767, 1262766, 1262765, 1265754, 1265753, 1265752, 1265725, 1317300, 1317299, 1262843, 1317298, 1317297, 1317296, 1257585, 1213821, 1213820, 1172978, 1166446, 287112, 274038, 129143, 129139, 21916, 21915, 1317284, 1317283, 1317286, 1311547, 1311546, 1296248, 1289584, 1262639, 1248749, 1227866, 1227811, 1271172, 1317269, 1317258, 1317257, 1312948, 1312947, 1312946, 1312945, 1294586, 1293533, 1264218, 99544, 99543, 1317291, 1262398, 1261218, 1317244, 1317243, 1317242, 1317241, 1317231, 1315543, 1291655, 1291652, 1276232, 1276229, 1240276, 1240201, 1308402, 1308401, 1308400, 1308399, 1308396, 1299643, 1317217, 1262538, 480070, 1193929, 1000723, 191169, 1317160, 1317159, 1317151, 1284204, 1267125, 1317117, 1317106, 1317085, 1317081, 1288667, 1288663, 1288661, 1288654, 1288649, 1288647, 1288637, 1288621, 1288617, 1288614, 1288612, 1288609, 1288605, 1288602, 1288601, 1288582, 1288577, 1317084, 1253880, 1248346, 1245729, 1240247, 1228685, 1317083, 1314442, 1308040, 1303905, 1303893, 1303718, 1244805, 1290231, 1291027, 1316796, 1281775, 1281773, 1317079, 1317077, 1317076, 1316671, 1270869, 1270868, 1175511, 1174064, 1172673, 1029516, 997947, 1312065, 1311944, 1290588, 1290587, 1290586, 1288417, 1288414, 1288412, 1279494, 1272084, 1261150, 1253558, 1293212, 1316385, 1315315, 1314429, 1310393, 1310392, 1276211, 1276138, 1316388, 1316352, 1308161, 1263436, 1316338, 1316337, 1316336, 1316335, 1316334, 1316333, 1316332, 1316331); +INSERT INTO `spell_effect` (`ID`, `EffectAura`, `DifficultyID`, `EffectIndex`, `Effect`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `ScalingClass`, `TargetNodeGraph`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`, `SpellID`, `VerifiedBuild`) VALUES +(1322330, 218, 0, 8, 174, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0, 7, 6704, 12, 12, 0, 0, 0, 0, 120, 0, 440040, 67186), +(1322283, 0, 0, 1, 98, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1298568, 67186), +(1322282, 12, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1298568, 67186), +(1322112, 87, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 5, 0, 1298446, 67186), +(1321581, 226, 0, 0, 6, 0, 0, 60000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1298074, 67186), +(1275185, 107, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0, 32, 0, 0, 0, 0, 0, 512, 0, 1, 0, 1253415, 67186), +(1263781, 107, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0, 32, 0, 0, 0, 0, 0, 512, 0, 1, 0, 1256312, 67186), +(1263777, 107, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0, 12, 0, 0, 0, 4194304, 0, 0, 0, 1, 0, 1256312, 67186), +(1282546, 9, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1270491, 67186), +(1239845, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -35, 0, 0, 19, 0, 0, 0, 0, 256, 8192, 0, 1, 0, 1241077, 67186), +(756024, 395, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 16075, 0, 0, 0, 0, 0, 0, 0, 1, 0, 290577, 67186), +(1315651, 647, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 1, 0, 0, 0, 2048, 0, 134217728, 0, 1, 0, 1256940, 67186), +(1315650, 647, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 2048, 0, 134217728, 0, 1, 0, 1256940, 67186), +(1311981, 4, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 260240, 67186), +(1289933, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1277548, 67186), +(1266351, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1024, 1, 0, 1256940, 67186), +(1264705, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 1, 0, 1256940, 67186), +(1218764, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227990, 67186), +(1218763, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89438, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227990, 67186), +(1218762, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227989, 67186), +(1218761, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89437, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227989, 67186), +(1218760, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227988, 67186), +(1218759, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89436, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227988, 67186), +(1218758, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227987, 67186), +(1218757, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89435, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227987, 67186), +(1218756, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227986, 67186), +(1218755, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89434, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227986, 67186), +(1218754, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227985, 67186), +(1218753, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89433, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227985, 67186), +(1218752, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227984, 67186), +(1218751, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89432, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227984, 67186), +(1218750, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227983, 67186), +(1218749, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89431, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227983, 67186), +(1218748, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227982, 67186), +(1218747, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89425, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227982, 67186), +(1218746, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227981, 67186), +(1218745, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89429, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227981, 67186), +(1218744, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227980, 67186), +(1218743, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89428, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227980, 67186), +(1218742, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227979, 67186), +(1218741, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89427, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227979, 67186), +(1218740, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227978, 67186), +(1218739, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89426, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227978, 67186), +(1218738, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227977, 67186), +(1218737, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89430, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227977, 67186), +(1218736, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227976, 67186), +(1218735, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89424, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1227976, 67186), +(1217076, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226921, 67186), +(1217075, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226922, 67186), +(1217074, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226923, 67186), +(1217073, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226920, 67186), +(1217072, 0, 0, 1, 90, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 241313, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226397, 67186), +(1217002, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89283, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226923, 67186), +(1217001, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89282, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226922, 67186), +(1216999, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89281, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226921, 67186), +(1216998, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89280, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226920, 67186), +(1216179, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 89279, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1226397, 67186), +(1322003, 0, 0, 1, 24, 0, 0, 0, 1, 1, 0, 243302, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1235484, 67186), +(1281336, 511, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 150, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1269475, 67186), +(1230827, 0, 0, 0, 3, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1235484, 67186), +(1214317, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1225245, 67186), +(1317295, 0, 16, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.120000004768371582, 50.625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1239095, 67186), +(1264335, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.120000004768371582, 24.94799995422363281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1239095, 67186), +(1236566, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.120000004768371582, 24.94799995422363281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1239095, 67186), +(1282244, 87, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1270294, 67186), +(1321667, 12, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1263439, 67186), +(1321559, 120, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1252773, 67186), +(260927, 531, 0, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137029, 67186), +(191087, 429, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137029, 67186), +(191086, 108, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 22, 0, 0, 0, 0, 0, 2, 0, 1, 0, 137029, 67186), +(191085, 108, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 137029, 67186), +(1321497, 226, 0, 2, 6, 0, 0, 1000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1266113, 67186), +(170709, 34, 7, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 227.152435302734375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 122516, 67186), +(158092, 34, 4, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 14310.603515625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 122516, 67186), +(154256, 34, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 4770.201171875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 122516, 67186), +(1051086, 4, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 390260, 67186), +(1026943, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 12, 12, 0, 0, 0, 0, 1, 0, 390260, 67186), +(1026957, 61, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 390264, 67186), +(1026956, 79, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 21, 0, 390264, 67186), +(1294472, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1281397, 67186), +(1320656, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 22, 7, 1297413, 67186), +(206265, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1297413, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 149981, 67186), +(1308103, 301, 16, 0, 6, 0, 512, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 8.100000381469726562, 0, 0, 127, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1262055, 67186), +(1288396, 0, 16, 0, 2, 0, 0, 0, 0, 1, 0, 0, 33, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 6.300000190734863281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1254398, 67186), +(1317304, 647, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 1, 0, 1256919, 67186), +(1317303, 647, 0, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 1256919, 67186), +(1285926, 107, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 10, 0, 0, 32, 0, 0, 0, 0, 0, 8192, 0, 1, 0, 1272678, 67186), +(1285925, 107, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 10, 0, 0, 12, 0, 0, 0, 0, 0, 8192, 0, 1, 0, 1272678, 67186), +(1283220, 107, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.150000005960464477, 0, 0, 0, 1, 100, 0, 0, 7, 0, 0, 0, 33554432, 512, 0, 0, 1, 0, 1270846, 67186), +(1266878, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 128, 1, 0, 1222923, 67186), +(1266354, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1024, 1, 0, 1256939, 67186), +(1265430, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 0, 1, 0, 0, 0, 512, 0, 0, 0, 1, 0, 1256919, 67186), +(1264885, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 0, 1, 0, 0, 0, 0, 131072, 0, 0, 1, 0, 1256906, 67186), +(1264704, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1024, 1, 0, 1256939, 67186), +(1264673, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 24, 0, 0, 0, 0, 0, 0, 512, 0, 0, 0, 1, 0, 1256919, 67186), +(1264658, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 29, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 1, 0, 1256906, 67186), +(1210529, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 1, 0, 1222923, 67186), +(1031561, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 392959, 67186), +(1317268, 647, 0, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 1, 0, 1256936, 67186), +(1317267, 647, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 0, 0, 1, 0, 1256936, 67186), +(1317259, 649, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0, 5, 6594, 0, 0, 0, 0, 0, 0, 1, 0, 1256964, 67186), +(1317253, 648, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -20, 0, 0, 5, 6285, 0, 0, 0, 0, 0, 0, 1, 0, 1256964, 67186), +(1280836, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0.75, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1269175, 67186), +(1266346, 647, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 1, 0, 0, 0, 0, 16384, 0, 0, 1, 0, 1256936, 67186), +(1266345, 647, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 0, 1, 0, 1256936, 67186), +(1263763, 0, 0, 0, 2, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.899999976158142089, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 87, 16, 1256305, 67186), +(1247641, 0, 0, 0, 2, 0, 0, 0, 6.25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.800000011920928955, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 18, 16, 1246160, 67186), +(1026102, 87, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.666999995708465576, 0, 0, 0, 1, -3, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 1, 0, 389696, 67186), +(68093, 0, 0, 0, 10, 0, 0, 0, 13.64579963684082031, 0.200000002980232238, 0, 0, 0, 0, 0, 0, 0, 0, 1.820000052452087402, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 77472, 67186), +(1252830, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1249361, 67186), +(1274849, 4, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 303.481964111328125, 0, 0, 1, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1255278, 67186), +(1274848, 4, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 18.51911354064941406, 0, 0, 1, 0, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1255278, 67186), +(1306885, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 262980, 64, 503, 0, 0, 0, 0, 0, 86, 0, 1288767, 67186), +(1271571, 4, 0, 0, 6, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1249625, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1261724, 67186), +(1319670, 108, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0, 24, 0, 0, 0, 0, 0, 67108864, 0, 1, 0, 1237978, 67186), +(1314377, 647, 0, 11, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0, 0, 0, 0, 0, 0, 2048, 1048576, 0, 0, 1, 0, 1256903, 67186), +(1264811, 647, 0, 9, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1256903, 67186), +(1235034, 647, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1238052, 67186), +(1235033, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1073741824, 1, 0, 1238052, 67186), +(1235032, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 1, 0, 1238052, 67186), +(1081540, 108, 0, 20, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 149, 0, 0, 24, 0, 0, 0, 1, 0, 0, 0, 1, 0, 137032, 67186), +(1079597, 108, 0, 18, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 76, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 0, 1, 0, 137032, 67186), +(298593, 0, 0, 1, 10, 0, 0, 0, 5.75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1.120000004768371582, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 132, 31, 194509, 67186), +(295730, 0, 0, 0, 10, 1, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.800000011920928955, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 200829, 67186), +(1307596, 108, 0, 24, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 62, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 1, 0, 137012, 67186), +(1307595, 108, 0, 23, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 62, 0, 0, 22, 0, 0, 0, 0, 0, 268435456, 0, 1, 0, 137012, 67186), +(1032350, 108, 0, 12, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 135, 0, 0, 0, 0, 0, 0, 0, 0, 33554432, 0, 1, 0, 137012, 67186), +(1032349, 108, 0, 11, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 277, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 137012, 67186), +(876349, 108, 0, 10, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, -2147483648, 1, 0, 137012, 67186), +(876348, 108, 0, 9, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2147483648, 1, 0, 137012, 67186), +(290380, 0, 0, 0, 2, 0, 0, 0, 0.930000007152557373, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 53, 16, 197628, 67186), +(1319367, 0, 24, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0.200803220272064208, 0, 1, 10, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 63, 8, 113645, 67186), +(1308336, 332, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1293563, 0, 0, 1289789, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1289789, 67186), +(896892, 332, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 384590, 0, 0, 360022, 3, 0, 0, 0, 0, 0, 0, 1, 0, 360022, 67186), +(1244971, 219, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1000, 0, 0, 1, 5312, 0, 0, 0, 0, 0, 0, 1, 0, 1244295, 67186), +(1319512, 78, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296760, 67186), +(1319511, 78, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296759, 67186), +(1319509, 78, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296758, 67186), +(1319507, 78, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296756, 67186), +(1319463, 78, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296734, 67186), +(1319457, 78, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 73780, 248, 0, 0, 0, 0, 0, 0, 1, 0, 1296731, 67186), +(1316373, 454, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -15, 0, 0, 2448, 0, 12, 0, 0, 0, 0, 0, 118, 0, 381741, 67186), +(1214968, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 240679, 6703, 388, 0, 0, 0, 0, 0, 72, 0, 1225653, 67186), +(896453, 108, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.800000011920928955, 0, 0, 0, 1, -20, 0, 0, 22, 0, 0, 0, 2, 0, 0, 0, 1, 0, 356810, 67186), +(890886, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.800000011920928955, 0, 0, 0, 1, -20, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 356810, 67186), +(1319202, 108, 0, 7, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 22, 0, 0, 0, 0, 0, 0, 8388608, 1, 0, 1265547, 67186), +(1319201, 108, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 22, 0, 0, 0, 0, 33554432, 0, 0, 1, 0, 1265547, 67186), +(1319200, 108, 0, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 22, 0, 0, 0, 0, 768, 0, 0, 1, 0, 1265547, 67186), +(1319005, 218, 0, 8, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 80, 0, 0, 32, 3134, 0, 0, 0, 0, 0, 0, 1, 0, 434153, 67186), +(1319104, 330, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 7, 0, 0, 0, 67108864, 0, 32768, 262144, 1, 0, 115175, 67186), +(1284187, 0, 0, 4, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 399491, 67186), +(349470, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.371399998664855957, 0, 0, 0, 1, 483, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 231644, 67186), +(298412, 453, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.666999995708465576, 0, 0, 0, 1, -45000, 0, 0, 2198, 0, 0, 0, 0, 0, 0, 0, 1, 0, 202424, 67186), +(260932, 108, 0, 10, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.689999997615814208, 0, 0, 0, 1, 115, 0, 0, 22, 0, 0, 0, 0, 0, 33554432, 0, 1, 0, 137029, 67186), +(260931, 108, 0, 9, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.790000021457672119, 0, 0, 0, 1, 390, 0, 0, 0, 0, 0, 0, 0, 0, 33554432, 0, 1, 0, 137029, 67186), +(260930, 108, 0, 8, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.778999984264373779, 0, 0, 0, 1, 312, 0, 0, 0, 0, 0, 0, 0, 0, 16384, 0, 1, 0, 137029, 67186), +(191104, 108, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 22, 0, 0, 0, 0, 65536, 0, 0, 1, 0, 137024, 67186), +(191084, 108, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 22, 0, 0, 0, 0, 16384, 0, 0, 1, 0, 137029, 67186), +(179713, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16448, 67108864, 0, 1, 0, 137029, 67186), +(179708, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 1, 0, 137024, 67186), +(132060, 69, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.97500002384185791, 0, 0, 0, 1, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 21, 0, 116849, 67186), +(129048, 24, 0, 0, 6, 0, 0, 500, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.028799999505281448, 0, 0, 1, 3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 115294, 67186), +(86331, 0, 0, 0, 10, 0, 0, 0, 4.406400203704833984, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.833299994468688964, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 22, 30, 85222, 67186), +(1266430, 647, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -21, 0, 0, 1, 0, 0, 0, 0, 512, 0, 0, 1, 0, 1256945, 67186), +(1264711, 647, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -21, 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 1, 0, 1256945, 67186), +(260998, 531, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137039, 67186), +(260997, 429, 0, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137039, 67186), +(191049, 108, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 22, 0, 0, 0, 0, 128, 0, 0, 1, 0, 137039, 67186), +(191048, 108, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 1, 0, 137039, 67186), +(191047, 218, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 0, 24, 5683, 0, 0, 0, 0, 0, 0, 1, 0, 137039, 67186), +(191046, 108, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 0, 22, 0, 0, 0, 0, 512, 0, 0, 1, 0, 137039, 67186), +(179723, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0, 512, 0, 0, 1, 0, 137039, 67186), +(1319047, 0, 0, 0, 254, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1221, 0, 0, 0, 0, 0, 0, 0, 87, 138, 1296448, 67186), +(1318955, 226, 0, 2, 6, 0, 0, 500, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1283247, 67186), +(1189889, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 472053, 67186), +(1318722, 0, 0, 1, 5, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1296214, 67186), +(1318721, 0, 0, 0, 223, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 6052, 5922, 0, 0, 0, 0, 0, 0, 0, 0, 1296214, 67186), +(1318706, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296205, 67186), +(1318642, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 266004, 64, 0, 13, 0, 0, 0, 0, 87, 86, 1296169, 67186), +(1318641, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1296169, 0, 1, 0, 0, 0, 1, 1296169, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 18, 16, 1296168, 67186), +(1248742, 33, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1246914, 67186), +(1311365, 0, 0, 1, 144, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, 50, 0, 26, 0, 0, 0, 0, 0, 16, 0, 1291770, 67186), +(1284429, 0, 0, 1, 2, 0, 0, 0, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 16, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 16, 0, 1271623, 67186), +(1318975, 0, 0, 0, 203, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 153954, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1296406, 67186), +(1275771, 226, 0, 0, 6, 0, 0, 500, 0, 1, 0, 0, 0, 0, 0, 0, 1264431, 0, 1, 0, 0, 0, 1, 0, 0, 0, 303768, 764, 0, 0, 0, 0, 0, 0, 1, 0, 1264427, 67186), +(1273839, 0, 0, 0, 254, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1622, 224, 0, 0, 0, 0, 0, 0, 53, 138, 1263282, 67186), +(1273077, 0, 0, 0, 77, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 303268, 764, 0, 28, 0, 0, 0, 0, 22, 7, 1262666, 67186), +(1314559, 4, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1244331, 67186), +(1245026, 4, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1244331, 67186), +(1231028, 69, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 304.266204833984375, 0, 0, 1, 0, -9, 0, 127, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1235568, 67186), +(1311612, 133, 16, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1241280, 67186), +(1279209, 118, 0, 1, 129, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -5, 0, 0, 127, 0, 88, 88, 0, 0, 0, 0, 1, 0, 1262573, 67186), +(1156794, 0, 2, 0, 2, 0, 0, 0, 0, 1, 0, 0, 35, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 53, 16, 377009, 67186), +(1156793, 0, 1, 0, 2, 0, 0, 0, 0, 1, 0, 0, 35, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 377009, 67186), +(1004615, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 35, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 53, 16, 377009, 67186), +(1318368, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295986, 67186), +(1318341, 0, 0, 1, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1295959, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1295932, 67186), +(1318340, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 1295959, 67186), +(1318336, 0, 0, 1, 64, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1295957, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1295927, 67186), +(1318335, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 1295957, 67186), +(1318291, 0, 0, 0, 203, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1295927, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295932, 67186), +(1318284, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295927, 67186), +(1268558, 7, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1259443, 67186), +(1300823, 218, 0, 8, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 200, 0, 0, 0, 5185, 0, 0, 0, 0, 0, 0, 1, 0, 137044, 67186), +(1281488, 108, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.285714000463485717, 0, 0, 0, 1, 35, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 0, 1, 0, 1266799, 67186), +(1269008, 3, 0, 1, 6, 0, 0, 2000, 0.629917025566101074, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1.149999976158142089, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1259790, 67186), +(1318124, 4, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 444769, 67186), +(1318025, 219, 0, 10, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0, 3, 6049, 0, 0, 0, 0, 0, 0, 1, 0, 1213636, 67186), +(1318024, 219, 0, 9, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -4, 0, 0, 3, 6518, 0, 0, 0, 0, 0, 0, 1, 0, 1213636, 67186), +(36562, 0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 44614, 67186), +(33703, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.207244157791137695, 0, 0, 0, 1, 0, 1.435582876205444335, 0, 1, 244.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 42069, 67186), +(1156060, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 15, 0, 12, 0, 0, 131072, 0, 0, 120, 0, 453908, 67186), +(1197410, 218, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 40, 0, 0, 12, 4263, 0, 0, 0, 0, 0, 0, 1, 0, 440671, 67186), +(1176322, 218, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 40, 0, 0, 3, 4263, 0, 0, 0, 0, 0, 0, 1, 0, 440671, 67186), +(1276369, 0, 0, 0, 30, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 2, 0, 12, 0, 0, 0, 0, 0, 120, 0, 1264783, 67186), +(1317749, 0, 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 88710, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1295592, 67186), +(1035394, 540, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 30, 0, 0, 0, 0, 18, 31, 395152, 67186), +(1035393, 226, 0, 0, 6, 0, 0, 1000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 18, 31, 395152, 67186), +(1317597, 0, 0, 1, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 95176, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295508, 67186), +(1317596, 0, 0, 0, 36, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0.25, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295508, 67186), +(1317572, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1295497, 67186), +(1245242, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1244470, 67186), +(1317559, 0, 0, 0, 203, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 464291, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 18, 16, 1295486, 67186), +(1287681, 300, 0, 0, 6, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1276062, 67186), +(1317414, 648, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 5, 2589, 0, 0, 0, 0, 0, 0, 1, 0, 1256936, 67186), +(1289007, 107, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -12, 0, 0, 23, 0, 0, 0, 0, 0, 0, 2048, 1, 0, 1276945, 67186), +(1032419, 219, 0, 15, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 3, 2589, 0, 0, 0, 0, 0, 0, 1, 0, 137028, 67186), +(1029059, 4, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 378405, 67186), +(737871, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 280373, 67186), +(191091, 344, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.569999992847442626, 0, 0, 0, 1, 350, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137028, 67186), +(301124, 107, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0, 32, 0, 0, 0, 0, 256, 0, 0, 1, 0, 204053, 67186), +(1317394, 219, 0, 18, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0, 3, 6596, 0, 0, 0, 0, 0, 0, 1, 0, 137023, 67186), +(1273067, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1262659, 67186), +(1252594, 107, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 12, 0, 0, 0, 0, 2048, 0, 0, 1, 0, 1249215, 67186), +(1249259, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1.10000002384185791, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 22, 15, 1247227, 67186), +(1135777, 219, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 23, 3303, 0, 0, 0, 0, 0, 0, 1, 0, 441367, 67186), +(1096991, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 421976, 67186), +(898195, 3, 0, 0, 6, 0, 0, 2000, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0.451499998569488525, 0.85000002384185791, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 360830, 67186), +(261018, 108, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 70, 0, 0, 22, 0, 0, 0, 1048576, 0, 0, 0, 1, 0, 137037, 67186), +(44107, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1.058799982070922851, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 22, 15, 51723, 67186), +(280, 3, 0, 0, 6, 0, 0, 2000, 0, 1, 0, 0, 15, 0, 0, 0, 0, 0.451499998569488525, 0.85000002384185791, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 703, 67186), +(1273712, 0, 0, 0, 2, 0, 0, 0, 0.905499994754791259, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.910000026226043701, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 53, 16, 1263137, 67186), +(844836, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 343207, 67186), +(318967, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4.635000228881835937, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 214743, 67186), +(318965, 0, 0, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4.635000228881835937, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 207407, 67186), +(315254, 344, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 212613, 67186), +(306731, 3, 0, 0, 6, 0, 0, 1000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 207407, 67186), +(1311598, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1249135, 67186), +(1262767, 0, 14, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1249135, 67186), +(1262766, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1249135, 67186); + +INSERT INTO `spell_effect` (`ID`, `EffectAura`, `DifficultyID`, `EffectIndex`, `Effect`, `EffectAmplitude`, `EffectAttributes`, `EffectAuraPeriod`, `EffectBonusCoefficient`, `EffectChainAmplitude`, `EffectChainTargets`, `EffectItemType`, `EffectMechanic`, `EffectPointsPerResource`, `EffectPosFacing`, `EffectRealPointsPerLevel`, `EffectTriggerSpell`, `BonusCoefficientFromAP`, `PvpMultiplier`, `Coefficient`, `Variance`, `ResourceCoefficient`, `GroupSizeBasePointsCoefficient`, `EffectBasePoints`, `ScalingClass`, `TargetNodeGraph`, `EffectMiscValue1`, `EffectMiscValue2`, `EffectRadiusIndex1`, `EffectRadiusIndex2`, `EffectSpellClassMask1`, `EffectSpellClassMask2`, `EffectSpellClassMask3`, `EffectSpellClassMask4`, `ImplicitTarget1`, `ImplicitTarget2`, `SpellID`, `VerifiedBuild`) VALUES +(1262765, 0, 16, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1249135, 67186), +(1265754, 23, 0, 1, 6, 0, 0, 500, 0, 1, 0, 0, 0, 0, 0, 0, 1257736, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1257722, 67186), +(1265753, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1257722, 67186), +(1265752, 0, 0, 0, 254, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1586, 0, 0, 26, 0, 0, 0, 0, 87, 148, 1257721, 67186), +(1265725, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1257721, 1257722, 0, 0, 0, 0, 0, 0, 6, 0, 1257701, 67186), +(1317300, 0, 14, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1245417, 0, 1, 0, 0, 0, 1, 3, 0, 0, 240578, 330, 0, 0, 0, 0, 0, 0, 25, 0, 1245391, 67186), +(1317299, 0, 17, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1245417, 0, 1, 0, 0, 0, 1, 4, 0, 0, 240578, 330, 0, 0, 0, 0, 0, 0, 25, 0, 1245391, 67186), +(1262843, 0, 15, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1245417, 0, 1, 0, 0, 0, 1, 4, 0, 0, 240578, 330, 0, 0, 0, 0, 0, 0, 25, 0, 1245391, 67186), +(1317298, 647, 0, 12, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -13, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 1, 0, 1214207, 67186), +(1317297, 649, 0, 11, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -9, 0, 0, 0, 4620, 0, 0, 0, 0, 0, 0, 1, 0, 1214207, 67186), +(1317296, 649, 0, 10, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0, 0, 0, 1183, 0, 0, 0, 0, 0, 0, 1, 0, 1214207, 67186), +(1257585, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0.918085992336273193, 1.799999952316284179, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1252431, 67186), +(1213821, 647, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1214207, 67186), +(1213820, 647, 0, 5, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 86, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1214207, 67186), +(1172978, 108, 0, 24, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -14, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 137041, 67186), +(1166446, 108, 0, 23, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -22, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 137041, 67186), +(287112, 0, 0, 0, 2, 0, 133120, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0.977591991424560546, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 104, 0, 195592, 67186), +(274038, 0, 0, 0, 2, 0, 133184, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1.836169958114624023, 1.799999952316284179, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 104, 0, 187874, 67186), +(129143, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3.342220067977905273, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 115360, 67186), +(129139, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3.342220067977905273, 1, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 115357, 67186), +(21916, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3.063689947128295898, 1.669999957084655761, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32176, 67186), +(21915, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3.063689947128295898, 1.669999957084655761, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 32175, 67186), +(1317284, 647, 0, 3, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 1, 0, 1256915, 67186), +(1317283, 647, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -13, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 1, 0, 1256915, 67186), +(1317286, 4, 220, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1246918, 67186), +(1311547, 4, 14, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.10000002384185791, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1246918, 67186), +(1311546, 4, 15, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.10000002384185791, 9.899999618530273437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1246918, 67186), +(1296248, 301, 17, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 190, 0, 0, 127, 0, 0, 22, 0, 0, 0, 0, 22, 7, 1233865, 67186), +(1289584, 301, 14, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 152, 0, 0, 127, 0, 0, 22, 0, 0, 0, 0, 22, 7, 1233865, 67186), +(1262639, 301, 15, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 228, 0, 0, 127, 0, 0, 22, 0, 0, 0, 0, 22, 7, 1233865, 67186), +(1248749, 4, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.10000002384185791, 13.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1246918, 67186), +(1227866, 301, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 228, 0, 0, 127, 0, 0, 22, 0, 0, 0, 0, 22, 7, 1233865, 67186), +(1227811, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 22, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.10000002384185791, 21.60000038146972656, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 87, 8, 1233826, 67186), +(1271172, 101, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 100, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1261414, 67186), +(1317269, 4, 0, 6, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 444088, 67186), +(1317258, 219, 0, 20, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 3, 3303, 0, 0, 0, 0, 0, 0, 1, 0, 137035, 67186), +(1317257, 219, 0, 19, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0, 3, 3303, 0, 0, 0, 0, 0, 0, 1, 0, 137035, 67186), +(1312948, 531, 0, 11, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137036, 67186), +(1312947, 429, 0, 10, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137036, 67186), +(1312946, 108, 0, 9, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -19, 0, 0, 22, 0, 0, 0, 0, 4194304, 0, 0, 1, 0, 137036, 67186), +(1312945, 108, 0, 8, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -19, 0, 0, 0, 0, 0, 0, 0, 4194304, 0, 0, 1, 0, 137036, 67186), +(1294586, 108, 0, 7, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 33554432, 0, 262144, 536870912, 1, 0, 137036, 67186), +(1293533, 107, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 20, 0, 0, 33, 0, 0, 0, 0, 128, 0, 0, 1, 0, 1256630, 67186), +(1264218, 107, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0, 1, 20, 0, 0, 32, 0, 0, 0, 0, 128, 0, 0, 1, 0, 1256630, 67186), +(99544, 0, 0, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1.149999976158142089, 2, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 27576, 67186), +(99543, 0, 0, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1.149999976158142089, 2, 0, 0.050000000745058059, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 5374, 67186), +(1317291, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 18, 16, 1295319, 67186), +(1262398, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 12, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 87, 16, 1255503, 67186), +(1261218, 128, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1254689, 67186), +(1317244, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 33, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1241646, 67186), +(1317243, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1265781, 67186), +(1317242, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 33, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1241676, 67186), +(1317241, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1265793, 67186), +(1317231, 79, 17, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1260826, 67186), +(1315543, 0, 16, 4, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 75, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 18, 16, 1263412, 67186), +(1291655, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3.099999904632568359, 500, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 1241291, 67186), +(1291652, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3.099999904632568359, 500, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 1241340, 67186), +(1276232, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1242996, 67186), +(1276229, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1242991, 67186), +(1240276, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3.099999904632568359, 400, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 1241340, 67186), +(1240201, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3.099999904632568359, 400, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, 0, 1241291, 67186), +(1308402, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1278775, 67186), +(1308401, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1278772, 67186), +(1308400, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1278773, 67186), +(1308399, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1278780, 67186), +(1308396, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1282714, 67186), +(1299643, 0, 0, 0, 166, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0, 3405, 5, 0, 0, 0, 0, 0, 0, 1, 0, 1284514, 67186), +(1317217, 61, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 40, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295278, 67186), +(1262538, 61, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 50, 0, 0, 500, 2, 0, 0, 0, 0, 0, 0, 25, 0, 1255612, 67186), +(480070, 0, 0, 5, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 113656, 67186), +(1193929, 108, 0, 9, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -50, 0, 0, 11, 0, 0, 0, 128, 0, 0, 0, 1, 0, 107574, 67186), +(1000723, 142, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 45, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 374721, 67186), +(191169, 344, 0, 4, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 137008, 67186), +(1317160, 226, 0, 1, 6, 0, 0, 500, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295243, 67186), +(1317159, 61, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295243, 67186), +(1317151, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295237, 67186), +(1284204, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 22, 15, 1271479, 67186), +(1267125, 61, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 1258448, 67186), +(1317117, 23, 0, 2, 6, 0, 0, 1000, 0, 1, 0, 0, 0, 0, 0, 0, 1260252, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1253158, 67186), +(1317106, 0, 0, 1, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 39695, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1276471, 67186), +(1317085, 0, 0, 1, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 39695, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1276718, 67186), +(1317081, 0, 0, 1, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 39695, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1276340, 67186), +(1288667, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276714, 67186), +(1288663, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276712, 67186), +(1288661, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276711, 67186), +(1288654, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276708, 67186), +(1288649, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276705, 67186), +(1288647, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276704, 67186), +(1288637, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276698, 67186), +(1288621, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276691, 67186), +(1288617, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276688, 67186), +(1288614, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276687, 67186), +(1288612, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276686, 67186), +(1288609, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276685, 67186), +(1288605, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276683, 67186), +(1288602, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276682, 67186), +(1288601, 42, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1276683, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1276682, 67186), +(1288582, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276669, 67186), +(1288577, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1277389, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276666, 67186), +(1317084, 0, 0, 0, 203, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1241218, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1295194, 67186), +(1253880, 0, 0, 3, 137, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -100, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1241320, 67186), +(1248346, 285, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1243217, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1241320, 67186), +(1245729, 56, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 246766, 10, 0, 0, 0, 0, 0, 0, 1, 0, 1241320, 67186), +(1240247, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 296567, 748, 0, 0, 0, 0, 0, 0, 1, 0, 1241320, 67186), +(1228685, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 289662, 749, 0, 22, 0, 0, 0, 0, 22, 7, 1234346, 67186), +(1317083, 0, 0, 5, 160, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1286830, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1286822, 67186), +(1314442, 0, 0, 1, 140, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1293618, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 120, 0, 1293619, 67186), +(1308040, 0, 0, 4, 142, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1293619, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1286822, 67186), +(1303905, 0, 0, 0, 3, 0, 5376000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 27, 27, 0, 0, 0, 0, 32, 8, 1286830, 67186), +(1303893, 0, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1.428571462631225585, 0, 1, 0, 0, 0, 0, 0, 20, 469, 0, 0, 0, 0, 25, 0, 1286822, 67186), +(1303718, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 261797, 5180, 0, 0, 0, 0, 0, 0, 22, 46, 1286703, 67186), +(1244805, 226, 0, 1, 6, 0, 0, 100, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1243217, 67186), +(1290231, 0, 0, 0, 140, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1294631, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1277796, 67186), +(1291027, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1278272, 67186), +(1316796, 0, 0, 1, 16, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 96527, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1231802, 67186), +(1281775, 0, 0, 1, 166, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 3028, 9, 0, 0, 0, 0, 0, 0, 1, 0, 1269906, 67186), +(1281773, 0, 0, 1, 166, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 3028, 9, 0, 0, 0, 0, 0, 0, 1, 0, 1269905, 67186), +(1317079, 0, 17, 7, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1249663, 67186), +(1317077, 61, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1295191, 67186), +(1317076, 60, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1295191, 67186), +(1316671, 4, 17, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1253031, 67186), +(1270869, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 40145, 0, 0, 0, 0, 0, 0, 0, 18, 0, 1261218, 67186), +(1270868, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 40144, 0, 0, 0, 0, 0, 0, 0, 18, 0, 1261217, 67186), +(1175511, 472, 0, 1, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 18, 16, 464291, 67186), +(1174064, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 229536, 5266, 0, 0, 0, 0, 0, 0, 87, 0, 463410, 67186), +(1172673, 0, 0, 0, 28, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 229537, 64, 0, 0, 0, 0, 0, 0, 87, 0, 462671, 67186), +(1029516, 108, 0, 2, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 22, 0, 0, 0, 32768, 0, 0, 0, 1, 0, 373003, 67186), +(997947, 108, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 0, 32768, 0, 0, 0, 1, 0, 373003, 67186), +(1312065, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 3.5, 0, 0, 0, 0, 88, 88, 0, 0, 0, 0, 46, 16, 1254644, 67186), +(1311944, 0, 17, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 5, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1249797, 67186), +(1290588, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1266810, 67186), +(1290587, 0, 220, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1266810, 67186), +(1290586, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 5, 0, 0, 0, 0, 88, 88, 0, 0, 0, 0, 46, 16, 1254644, 67186), +(1288417, 0, 14, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 1.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1266810, 67186), +(1288414, 0, 14, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 3.5, 0, 0, 0, 0, 88, 88, 0, 0, 0, 0, 46, 16, 1254644, 67186), +(1288412, 0, 14, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 5, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1249797, 67186), +(1279494, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 1266810, 67186), +(1272084, 301, 0, 0, 6, 0, 512, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 6, 0, 0, 127, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1262055, 67186), +(1261150, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 5, 0, 0, 0, 0, 88, 88, 0, 0, 0, 0, 46, 16, 1254644, 67186), +(1253558, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1.20000004768371582, 7, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1249797, 67186), +(1293212, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 53, 16, 1280307, 67186), +(1316385, 0, 0, 0, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 5601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294776, 67186), +(1315315, 0, 17, 0, 2, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1264650, 67186), +(1314429, 0, 14, 0, 2, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1264650, 67186), +(1310393, 0, 14, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 15, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 18, 16, 1241932, 67186), +(1310392, 0, 15, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 25, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 18, 16, 1241932, 67186), +(1276211, 0, 15, 0, 2, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1264650, 67186), +(1276138, 0, 0, 0, 2, 0, 64, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1264650, 67186), +(1316388, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1294779, 67186), +(1316352, 4, 0, 0, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1294759, 67186), +(1308161, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 252552, 0, 0, 46, 0, 0, 0, 0, 18, 91, 1289670, 67186), +(1263436, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0, 252552, 0, 0, 46, 0, 0, 0, 0, 18, 91, 1256108, 67186), +(1316338, 0, 0, 7, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316337, 0, 0, 6, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316336, 0, 0, 5, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316335, 0, 0, 4, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316334, 0, 0, 3, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316333, 0, 0, 2, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316332, 0, 0, 1, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1294752, 67186), +(1316331, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 22, 15, 1294752, 67186); + +UPDATE `spell_effect` SET `EffectAura`=332, `EffectBasePoints`=208173, `EffectMiscValue1`=205630, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=307986; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.120000004768371582, `EffectBasePoints`=44.54999923706054687, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1305071; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.120000004768371582, `EffectBasePoints`=39.20400238037109375, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1263833; +UPDATE `spell_effect` SET `EffectBasePoints`=9.449999809265136718, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1288411; +UPDATE `spell_effect` SET `PvpMultiplier`=2, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=623125; +UPDATE `spell_effect` SET `PvpMultiplier`=4, `EffectBasePoints`=-3, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (191140, 191139); +UPDATE `spell_effect` SET `EffectBasePoints`=18, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (1266631, 1264720); +UPDATE `spell_effect` SET `EffectBonusCoefficient`=17.8125, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=271185; +UPDATE `spell_effect` SET `EffectBasePoints`=22, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (191077, 191076, 179715); +UPDATE `spell_effect` SET `PvpMultiplier`=1.789999961853027343, `EffectBasePoints`=28, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=135203; +UPDATE `spell_effect` SET `EffectBonusCoefficient`=6.737500190734863281, `PvpMultiplier`=0.908999979496002197, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=15852; +UPDATE `spell_effect` SET `PvpMultiplier`=0.5, `EffectBasePoints`=100, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1280841; +UPDATE `spell_effect` SET `EffectBasePoints`=332, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=191059; +UPDATE `spell_effect` SET `EffectBasePoints`=56, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (191058, 191057, 191056, 179720); +UPDATE `spell_effect` SET `EffectBasePoints`=28, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=136652; +UPDATE `spell_effect` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=280158; +UPDATE `spell_effect` SET `BonusCoefficientFromAP`=1.184409976005554199, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (1275170, 815754); +UPDATE `spell_effect` SET `BonusCoefficientFromAP`=0.800080001354217529, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (1275169, 1275166, 331344, 60372); +UPDATE `spell_effect` SET `BonusCoefficientFromAP`=0.856980025768280029, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1219457; +UPDATE `spell_effect` SET `BonusCoefficientFromAP`=1.320590019226074218, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=815761; +UPDATE `spell_effect` SET `BonusCoefficientFromAP`=0.928718984127044677, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (331347, 60368); +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.10000002384185791, `EffectBasePoints`=36, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1305055; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.10000002384185791, `EffectBasePoints`=15.30000019073486328, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1297422; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.10000002384185791, `EffectBasePoints`=45, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1262027; +UPDATE `spell_effect` SET `EffectBasePoints`=150, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1275546; +UPDATE `spell_effect` SET `EffectBasePoints`=85, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (1307395, 1307394); +UPDATE `spell_effect` SET `EffectBasePoints`=600, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (1291654, 1291651); +UPDATE `spell_effect` SET `EffectBasePoints`=20, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1270371; +UPDATE `spell_effect` SET `EffectBasePoints`=169, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1191490; +UPDATE `spell_effect` SET `EffectBasePoints`=180, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=286506; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.20000004768371582, `EffectBasePoints`=6, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1304833; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.20000004768371582, `EffectBasePoints`=4, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1290519; +UPDATE `spell_effect` SET `GroupSizeBasePointsCoefficient`=1.20000004768371582, `EffectBasePoints`=7, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=1290448; +DELETE FROM `spell_interrupts` WHERE `VerifiedBuild`>0 AND `ID` IN (243658, 234909, 243552, 243551, 238873, 243243, 233076, 243236, 243235, 243234, 243233, 243222, 243220, 243176, 242842, 242841, 242836, 212299, 242769, 234753, 242668, 242642); +INSERT INTO `spell_interrupts` (`ID`, `DifficultyID`, `InterruptFlags`, `AuraInterruptFlags1`, `AuraInterruptFlags2`, `ChannelInterruptFlags1`, `ChannelInterruptFlags2`, `SpellID`, `VerifiedBuild`) VALUES +(243658, 0, 0, 4718592, 0, 0, 0, 1298568, 67186), +(234909, 0, 45, 4194304, 4194304, 0, 0, 1269056, 67186), +(243552, 0, 0, 4718592, 0, 0, 0, 1278156, 67186), +(243551, 0, 0, 4718592, 0, 0, 0, 1295986, 67186), +(238873, 0, 0, 541065216, 0, 0, 0, 1258124, 67186), +(243243, 0, 0, 4718592, 28480, 0, 0, 210824, 67186), +(233076, 0, 41, 0, 0, 12, 0, 1262509, 67186), +(243236, 0, 31, 0, 0, 0, 0, 1296760, 67186), +(243235, 0, 31, 0, 0, 0, 0, 1296759, 67186), +(243234, 0, 31, 0, 0, 0, 0, 1296758, 67186), +(243233, 0, 31, 0, 0, 0, 0, 1296756, 67186), +(243222, 0, 31, 0, 0, 0, 0, 1296734, 67186), +(243220, 0, 31, 0, 0, 0, 0, 1296731, 67186), +(243176, 0, 0, 0, 16777216, 0, 0, 1250759, 67186), +(242842, 0, 15, 0, 0, 0, 0, 1295508, 67186), +(242841, 0, 0, 4718592, 25165824, 0, 0, 1295497, 67186), +(242836, 0, 0, 4718592, 0, 0, 0, 464291, 67186), +(212299, 0, 40, 4718592, 0, 0, 0, 462508, 67186), +(242769, 0, 0, 4718592, 512, 0, 0, 1295191, 67186), +(234753, 0, 0, 1614418051, 2100402, 0, 0, 1268667, 67186), +(242668, 0, 0, 4718592, 128, 0, 0, 1231327, 67186), +(242642, 0, 15, 0, 0, 131080, 32, 1294776, 67186); + +UPDATE `spell_interrupts` SET `AuraInterruptFlags2`=4194304, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=240246; +DELETE FROM `spell_item_enchantment` WHERE `VerifiedBuild`>0 AND `ID` IN (7526, 8555, 8554, 5001, 4216, 4215, 3748, 2714, 1704, 463, 43); +INSERT INTO `spell_item_enchantment` (`ID`, `Name`, `HordeName`, `Duration`, `EffectArg1`, `EffectArg2`, `EffectArg3`, `EffectScalingPoints1`, `EffectScalingPoints2`, `EffectScalingPoints3`, `IconFileDataID`, `MinItemLevel`, `MaxItemLevel`, `TransmogUseConditionID`, `TransmogCost`, `EffectPointsMin1`, `EffectPointsMin2`, `EffectPointsMin3`, `ItemVisual`, `Flags`, `RequiredSkillID`, `RequiredSkillRank`, `ItemLevel`, `Charges`, `Effect1`, `Effect2`, `Effect3`, `ScalingClass`, `ScalingClassRestricted`, `ConditionID`, `MinLevel`, `MaxLevel`, `VerifiedBuild`) VALUES +(7526, 'Algari Weaverline', '', 0, 455832, 0, 0, 0, 0, 0, 0, 2066208, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 80, 67186), +(8555, '+$k1 Primary Stat and +$k2 Armor', '', 0, 71, 0, 0, 0, 0.68388301134109497, 0.38654300570487976, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 4, 0, -1, 0, 0, 0, 80, 67186), +(8554, '+$k1 Primary Stat and +$k2 Armor', '', 0, 71, 0, 0, 0, 0.535212993621826171, 0.297340989112854003, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 4, 0, -1, 0, 0, 0, 80, 67186), +(5001, 'Ghost Iron Spike', '', 0, 131465, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 50, 67186), +(4216, 'Pyrium Spike', '', 0, 92436, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 27, 50, 67186), +(4215, 'Elementium Spike', '', 0, 92432, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 27, 50, 67186), +(3748, 'Titanium Spike', '', 0, 56355, 0, 0, 0, 0, 0, 0, 0, 10, 80, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 3, 0, 0, 0, 0, 0, 27, 50, 67186), +(2714, 'Felsteel Spike', '', 0, 29455, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 50, 67186), +(1704, 'Thorium Spike', '', 0, 16624, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 50, 67186), +(463, 'Mithril Spike', '', 0, 9782, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 50, 67186), +(43, 'Iron Spike', '', 0, 9784, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 50, 67186); + +DELETE FROM `spell_label` WHERE `VerifiedBuild`>0 AND `ID` IN (206624, 206621, 206620, 206619, 206617, 206079, 204762, 205684, 205683, 205682, 205681, 205669, 205665, 204875, 204772); +INSERT INTO `spell_label` (`ID`, `LabelID`, `SpellID`, `VerifiedBuild`) VALUES +(206624, 6704, 1278047, 67186), +(206621, 292, 1298446, 67186), +(206620, 16, 1298446, 67186), +(206619, 23, 1298446, 67186), +(206617, 2857, 455830, 67186), +(206079, 5572, 1256221, 67186), +(204762, 6594, 389696, 67186), +(205684, 3497, 1296760, 67186), +(205683, 3497, 1296759, 67186), +(205682, 3497, 1296758, 67186), +(205681, 3497, 1296756, 67186), +(205669, 3098, 1296734, 67186), +(205665, 3098, 1296731, 67186), +(204875, 2391, 1240913, 67186), +(204772, 6596, 451230, 67186); + +DELETE FROM `spell_levels` WHERE `VerifiedBuild`>0 AND `ID` IN (152337, 152336, 152335, 152334, 152332); +INSERT INTO `spell_levels` (`ID`, `DifficultyID`, `MaxLevel`, `MaxPassiveAuraLevel`, `BaseLevel`, `SpellLevel`, `SpellID`, `VerifiedBuild`) VALUES +(152337, 0, 0, 0, 0, 0, 1296760, 67186), +(152336, 0, 0, 0, 0, 0, 1296759, 67186), +(152335, 0, 0, 0, 0, 0, 1296758, 67186), +(152334, 0, 0, 0, 0, 0, 1296756, 67186), +(152332, 0, 0, 0, 0, 0, 1296731, 67186); + +DELETE FROM `spell_misc` WHERE `VerifiedBuild`>0 AND `ID` IN (382856, 836412, 836410, 836408, 836405, 825885, 825884, 810686, 810685, 810684, 810682, 810681, 810346, 841037, 834394, 829714, 704996, 816216, 845899, 845785, 127640, 795659, 809704, 809703, 478568, 782503, 782502, 782501, 782500, 782499, 782498, 782497, 782496, 782495, 782494, 782493, 782492, 782491, 782490, 782489, 781453, 781452, 781451, 781450, 781448, 467787, 99214, 96496, 10890, 825842, 770397, 821365, 816369, 770147, 845416, 843354, 826786, 433001, 96543, 649056, 831405, 831163, 830576, 828085, 827689, 844775, 123954, 820954, 820953, 820950, 820949, 820941, 820940, 832619, 803588, 774010, 759555, 700456, 173456, 87208, 793688, 827267, 184847, 268, 809484, 837954, 835449, 835342, 833148, 832887, 831935, 831244, 830635, 830559, 829935, 829931, 829929, 828708, 828041, 827071, 826391, 824124, 823737, 823729, 823728, 823718, 820925, 818246, 815888, 813833, 811416, 810189, 810186, 810178, 807716, 815569, 844027, 837375, 474637, 844105, 844104, 844103, 844101, 844079, 844076, 804911, 804907, 780179, 88185, 843802, 830875, 764851, 843580, 843566, 843538, 843537, 801212, 839257, 839254, 843754, 824543, 824542, 824534, 818771, 815712, 809806, 808307, 151457, 128030, 127836, 801812, 843341, 843339, 843317, 843312, 818744, 831871, 815424, 815423, 815418, 803125, 1568, 831103, 810873, 842983, 798878, 842899, 842888, 842877, 757076, 829794, 769597, 769572, 811397, 811396, 811376, 826098, 826097, 826096, 804965, 802597, 842710, 809379, 808638, 808637, 127779, 842699, 842698, 842697, 822271, 842672, 838394, 833943, 831819, 826976, 842643, 842634, 822521, 807169, 842596, 433206, 795903, 788892, 841708, 664030, 841043, 834506, 797087, 842021, 826471, 826900, 842594, 819393, 819392, 818615, 807889, 841951, 841949, 841948, 841947, 841946, 841945, 841944, 841943, 814421, 814420, 796253, 796216, 796412, 795876, 784657, 783557, 783554, 777641, 819182, 819173, 798885, 798882, 756188, 815140, 631726, 813459, 837256, 809948, 828341, 828329, 655550, 647815, 647695, 635798, 219551, 833396, 803852, 842175, 824098, 842178, 842158, 842150, 835750); +INSERT INTO `spell_misc` (`ID`, `Attributes1`, `Attributes2`, `Attributes3`, `Attributes4`, `Attributes5`, `Attributes6`, `Attributes7`, `Attributes8`, `Attributes9`, `Attributes10`, `Attributes11`, `Attributes12`, `Attributes13`, `Attributes14`, `Attributes15`, `Attributes16`, `Attributes17`, `DifficultyID`, `CastingTimeIndex`, `DurationIndex`, `PvPDurationIndex`, `RangeIndex`, `SchoolMask`, `Speed`, `LaunchDelay`, `MinDuration`, `SpellIconFileDataID`, `ActiveIconFileDataID`, `ContentTuningID`, `ShowFutureSpellPlayerConditionID`, `SpellVisualScript`, `ActiveSpellVisualScript`, `SpellID`, `VerifiedBuild`) VALUES +(382856, -1384120064, 2088, 67649537, 1075052544, 1050752, 393224, 4096, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 21, 0, 6, 1, 0, 0, 0, 236353, 0, 0, 0, 0, 0, 308312, 67186), +(836412, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 4631357, 0, 0, 0, 0, 0, 1288771, 67186), +(836410, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 351505, 0, 0, 0, 0, 0, 1288768, 67186), +(836408, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 237340, 0, 0, 0, 0, 0, 1288766, 67186), +(836405, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 461135, 0, 0, 0, 0, 0, 1288763, 67186), +(825885, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 2124986, 0, 0, 0, 0, 0, 1277091, 67186), +(825884, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 2124986, 0, 0, 0, 0, 0, 1277090, 67186), +(810686, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5727887, 0, 0, 0, 0, 0, 1256873, 67186), +(810685, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5727887, 0, 0, 0, 0, 0, 1256872, 67186), +(810684, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5727887, 0, 0, 0, 0, 0, 1256871, 67186), +(810682, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5727887, 0, 0, 0, 0, 0, 1256869, 67186), +(810681, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5727887, 0, 0, 0, 0, 0, 1256868, 67186), +(810346, 696254464, 1056, 273170437, 269484544, 2097280, 393224, 12800, 0, 0, 1048576, 1, 0, 1048832, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5727887, 0, 0, 0, 0, 0, 1256521, 67186), +(841037, 965017616, 553649188, 138952709, 269484544, 32896, 393224, 12800, 0, 0, 1048576, 1, 8, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 14, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1293613, 67186), +(834394, 965017600, 553649188, 138952709, 269484544, 2130048, 393224, 12800, 0, 0, 1048576, 1, 8, 1048576, 0, 0, 0, 0, 0, 1, 31, 0, 14, 1, 0, 0, 0, 4620674, 0, 0, 0, 0, 0, 1286703, 67186), +(829714, 698613760, 1192, 273170437, 273088512, 8396929, 917768, 16781312, 64, 160, 1050624, 71303168, 67108864, 0, 33554434, 16, 4194304, 0, 0, 1, 0, 0, 13, 106, 0, 0, 0, 1408832, 0, 0, 0, 0, 0, 1282028, 67186), +(704996, 0, 1024, 4194308, 67305984, 8388608, 0, 0, 0, 0, 0, 8192, 8, 0, 1, 0, 0, 0, 0, 1, 29, 0, 1, 64, 0, 0, 0, 1387356, 0, 0, 0, 0, 0, 414664, 67186), +(816216, 0, 0, 4, 0, 0, 0, 65536, 0, 134217728, 1, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6, 32, 0, 0, 0, 132886, 0, 0, 0, 0, 0, 1263282, 67186), +(845899, 757071872, 1056, 273170436, 459264, 1082130560, 917768, 4608, 0, 0, 1048576, 0, 0, 4, 0, 0, 0, 0, 0, 1, 8, 0, 1, 1, 0, 0, 0, 135860, 0, 0, 0, 0, 0, 1298568, 67186), +(845785, 128, 0, 0, 1073741824, 32768, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 6, 8, 0, 0, 0, 236202, 0, 0, 0, 0, 0, 1298446, 67186), +(127640, 69206016, 0, 4, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 0, 5, 32, 0, 6, 1, 0, 0, 0, 236273, 0, 0, 0, 0, 0, 153757, 67186), +(795659, 16, 0, 4, 1074004096, 8421376, 0, 0, 0, 4096, 0, 1, 0, 0, 129, 0, 1024, 0, 0, 1, 63, 0, 13, 32, 0, 0, 0, 3997563, 0, 0, 0, 0, 0, 1241077, 67186), +(809704, -1946157056, 32, 0, 1048576, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 2103823, 0, 3615, 0, 0, 0, 1255857, 67186), +(809703, -1946157056, 32, 0, 1048576, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 1073741824, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 2103823, 0, 3615, 0, 0, 0, 1255856, 67186), +(478568, 65536, 0, 0, 1140850688, 0, 0, 0, 0, 4096, 0, 8192, 0, 0, 129, 0, 2048, 1, 0, 1, 29, 0, 187, 12, 0, 0, 0, 1394891, 0, 0, 0, 0, 0, 363916, 67186), +(782503, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227990, 67186), +(782502, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227989, 67186), +(782501, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227988, 67186), +(782500, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227987, 67186), +(782499, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227986, 67186), +(782498, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227985, 67186), +(782497, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227984, 67186), +(782496, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227983, 67186), +(782495, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227982, 67186), +(782494, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227981, 67186), +(782493, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227980, 67186), +(782492, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227979, 67186), +(782491, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227978, 67186), +(782490, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227977, 67186), +(782489, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1227976, 67186), +(781453, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1226923, 67186), +(781452, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1226922, 67186), +(781451, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1226921, 67186), +(781450, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1226920, 67186), +(781448, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1226397, 67186), +(467787, 151257088, 1024, 260, 1073741824, 1081472, 0, 0, 0, 4096, 0, 1, 0, 0, 1, 0, 2048, 0, 0, 1, 39, 0, 6, 1, 0, 0, 0, 1020466, 0, 0, 0, 0, 0, 353319, 67186), +(99214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 13, 1, 0, 0, 0, 651728, 0, 0, 0, 0, 0, 125174, 67186), +(96496, 2424848, 134218240, 536870912, 1024, 0, 142606336, 541065216, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 3, 1, 0, 0, 0, 651728, 0, 0, 0, 0, 0, 122470, 67186), +(10890, 134545424, 1024, 0, 67108866, 524288, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2048, 0, 0, 1, 28, 0, 1, 1, 0, 0, 0, 132361, 0, 0, 0, 0, 0, 23920, 67186), +(825842, 0, 1024, 272629764, 268632576, 8396800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 64, 0, 0, 0, 132284, 0, 4898, 0, 0, 0, 1277033, 67186), +(770397, 220463104, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 1073741824, 1048576, 0, 0, 0, 0, 0, 393216, 0, 0, 1, 387, 0, 13, 32, 0, 0, 0, 4914666, 0, 0, 0, 0, 0, 1215897, 67186), +(821365, 0, 0, 0, 0, 1073741824, 0, 0, 0, 134221824, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 15, 18, 0, 6, 64, 0, 0, 0, 252267, 0, 0, 0, 0, 0, 1270294, 67186), +(816369, 765460864, 3240, 273170437, 269943296, 10494081, 393224, 16790016, 0, 176, 1048576, 67108865, 0, 1048576, 0, 0, 0, 0, 0, 1, 36, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1263439, 67186), +(770147, 765460864, 3240, 273170437, 269943296, 10494081, 393224, 16855552, 0, 176, 9437184, 67108865, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 181, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1215649, 67186), +(845416, 696254848, 3104, 273170437, 269681152, 8388736, 393224, 4608, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 134520, 0, 0, 0, 0, 0, 1298074, 67186), +(843354, 690225408, 1192, 273170436, 5701632, 8388737, 917896, 4096, 64, 32, 1048576, 4194304, 67108864, 0, 2, 0, 2048, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 450908, 0, 0, 0, 0, 0, 1295986, 67186), +(826786, 150994944, 32, 268976128, 1048576, 129, 917640, 4096, 0, 32, 1048576, 4194304, 67108864, 0, 2, 0, 2048, 0, 0, 1, 21, 0, 1, 64, 0, 0, 0, 4640479, 0, 0, 0, 0, 127017, 1278156, 67186), +(433001, -1610612736, 0, 4, 268435456, 0, 0, 16777216, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, 21, 0, 181, 1, 0, 0, 0, 132850, 0, 2002, 0, 0, 0, 122516, 67186), +(96543, -1610612736, 0, 4, 268435456, 0, 0, 16777216, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 181, 1, 0, 0, 0, 132850, 0, 1033, 0, 0, 0, 122516, 67186), +(649056, 0, 0, 256, 1074790400, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 9, 0, 6, 1, 0, 0, 0, 136159, 0, 0, 0, 0, 0, 390264, 67186), +(831405, 8388736, 0, 0, 268435456, 128, 0, 0, 0, 4096, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 135, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1283789, 67186), +(831163, 8388736, 0, 0, 268435456, 128, 0, 0, 0, 4096, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 135, 1, 0, 0, 0, 136101, 0, 0, 0, 0, 0, 1283548, 67186), +(830576, 8388736, 0, 0, 268435456, 128, 0, 0, 0, 4096, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 135, 1, 0, 0, 0, 136101, 0, 0, 0, 0, 0, 1282940, 67186), +(828085, 8388736, 0, 0, 268435456, 128, 0, 0, 0, 4096, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 135, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1280164, 67186), +(827689, 8388736, 0, 0, 268435456, 128, 0, 0, 0, 4096, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 135, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1279774, 67186), +(844775, 128, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1297413, 67186), +(123954, 128, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 149981, 67186), +(820954, 262160, 0, 0, 0, 0, 0, 0, 0, 4096, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 135768, 0, 0, 0, 0, 0, 1269655, 67186), +(820953, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 135768, 0, 0, 0, 0, 0, 1269654, 67186), +(820950, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 135768, 0, 0, 0, 0, 0, 1269651, 67186), +(820949, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 135768, 0, 0, 0, 0, 0, 1269650, 67186), +(820941, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 135768, 0, 0, 0, 0, 0, 1269641, 67186), +(820940, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 135768, 0, 0, 0, 0, 0, 1269640, 67186), +(832619, 153354240, 1064, 273170436, 196608, 8388632, 393472, 4096, 536870976, 0, 262160, 0, 0, 0, 33554432, 0, 2048, 0, 0, 5, 0, 0, 13, 106, 0, 0, 0, 3565717, 0, 0, 0, 0, 0, 1284934, 67186), +(803588, -2147483520, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 7195162, 0, 0, 0, 0, 0, 1249361, 67186), +(774010, -2147418112, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 8192, 0, 0, 129, 0, 2048, 0, 0, 1, 8, 0, 1, 4, 0, 0, 0, 135791, 0, 0, 0, 0, 0, 1219480, 67186), +(759555, 16, 512, 0, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2048, 0, 0, 1, 31, 0, 2, 1, 0, 0, 0, 1035054, 0, 0, 0, 0, 0, 466772, 67186), +(700456, 0, 136, 8388736, 256, 32768, 0, 0, 0, 1073741824, 0, 0, 0, 0, 32769, 0, 0, 0, 0, 1, 35, 0, 1, 2, 0, 0, 0, 5260436, 0, 0, 0, 0, 0, 410201, 67186), +(173456, -2147155968, 655360, 256, 0, 0, 0, 71303168, 0, 4096, 0, 268435456, 269221888, 0, 1, 0, 2048, 1, 0, 1, 32, 0, 5, 2, 0, 0, 0, 135966, 0, 0, 0, 0, 0, 199448, 67186), +(87208, -2147418112, 0, 0, 0, 0, 0, 0, 0, 4096, 4194304, 8192, 0, 0, 129, 0, 2048, 0, 0, 1, 8, 0, 1, 8, 0, 0, 0, 135791, 0, 0, 0, 0, 0, 114051, 67186), +(793688, 757071872, 168, 268451844, 1074004224, 129, 918536, 0, 0, 1073741856, 1048576, 0, 0, 0, 33554432, 1048576, 0, 0, 0, 1, 6, 0, 187, 1, 50, 0, 0, 463284, 0, 0, 0, 0, 0, 1239111, 67186), +(827267, 256, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 36, 0, 0, 0, 236297, 0, 0, 0, 0, 0, 1279211, 67186), +(184847, 0, 0, 0, 1140850816, 4, 0, 0, 0, 4096, 0, 0, 0, 0, 129, 0, 0, 0, 0, 1, 29, 0, 6, 64, 0, 0, 0, 6035311, 0, 0, 0, 0, 0, 210824, 67186), +(268, 327680, 32768, 2097416, 0, 0, 4, 67108864, 0, 0, 0, 8192, 0, 0, 1, 0, 524288, 1, 0, 1, 1, 0, 5, 2, 0, 0, 0, 135964, 0, 0, 0, 0, 0, 1022, 67186), +(809484, 765722624, 1192, 273170436, 1078394880, 8388736, 917512, 4096, 64, 32, 1048576, 0, 0, 0, 33554432, 0, 512, 0, 0, 1, 64, 0, 13, 32, 0, 0, 0, 132857, 0, 0, 0, 0, 0, 1255629, 67186), +(837954, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1290372, 67186), +(835449, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1287782, 67186), +(835342, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1287674, 67186), +(833148, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1285466, 67186), +(832887, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1285208, 67186), +(831935, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1284301, 67186), +(831244, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1283624, 67186), +(830635, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1283000, 67186), +(830559, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1282923, 67186), +(829935, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1282261, 67186), +(829931, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1282257, 67186), +(829929, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1282255, 67186), +(828708, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1280956, 67186), +(828041, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1280123, 67186), +(827071, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1278981, 67186), +(826391, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1277703, 67186), +(824124, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1273397, 67186), +(823737, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1272807, 67186), +(823729, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1272799, 67186), +(823728, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1272798, 67186), +(823718, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1272788, 67186), +(820925, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1269626, 67186), +(818246, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1265480, 67186), +(815888, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1262864, 67186), +(813833, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1260580, 67186), +(811416, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1257741, 67186), +(810189, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1256350, 67186), +(810186, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1256346, 67186), +(810178, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1256337, 67186), +(807716, -1451228792, 3104, 273170565, 1075012352, 10494080, 394248, 12801, 131072, 0, 1081352, 268435465, 269484040, 0, 33554432, 524296, 0, 0, 0, 1, 5, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1253708, 67186), +(815569, 0, 4, 4, 256, 0, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 32, 0, 322, 32, 0, 0, 0, 135834, 0, 0, 0, 0, 0, 1262509, 67186), +(844027, 159383552, 268435488, 536887300, 537133312, 128, 8781832, 1024, 0, 32, 1048576, 65536, 2097152, 0, 0, 0, 0, 0, 24, 1, 39, 0, 13, 4, 0, 0, 0, 133713, 0, 1134, 0, 0, 0, 113645, 67186), +(837375, 545259520, 268567688, 268435457, 1245184, 10485824, 0, 4, 0, 12352, 0, 8388608, 0, 1049088, 301989888, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 4696175, 0, 0, 0, 0, 0, 1289789, 67186), +(474637, 545259520, 268567688, 268435457, 1245184, 10485824, 0, 4, 0, 12352, 0, 8388608, 0, 1049088, 301989888, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 4622482, 0, 0, 0, 0, 0, 360022, 67186), +(844105, 269582608, 0, 0, 0, 0, 0, 131072, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 1, 0, 0, 0, 6331355, 0, 0, 0, 0, 0, 1296760, 67186), +(844104, 269582608, 0, 0, 0, 0, 0, 131072, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 1, 0, 0, 0, 6331355, 0, 0, 0, 0, 0, 1296759, 67186), +(844103, 269582608, 0, 0, 0, 0, 0, 131072, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 1, 0, 0, 0, 6331355, 0, 0, 0, 0, 0, 1296758, 67186), +(844101, 269582608, 0, 0, 0, 0, 0, 131072, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 1, 0, 0, 0, 6331355, 0, 0, 0, 0, 0, 1296756, 67186), +(844079, 269582608, 0, 0, 0, 0, 0, 131072, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 1, 0, 0, 0, 5862954, 0, 0, 0, 0, 0, 1296734, 67186), +(844076, 269844752, 0, 0, 536870912, 0, 0, 131072, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 21, 0, 1, 1, 0, 0, 0, 3614354, 0, 0, 0, 0, 0, 1296731, 67186), +(804911, 698614144, 1192, 273170436, 5701632, 8388736, 393480, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1250759, 67186), +(804907, 698614144, 1192, 273170436, 5701888, 8388736, 393224, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1250755, 67186), +(780179, 384, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1300, 0, 1, 8, 0, 0, 0, 236166, 0, 0, 0, 0, 0, 1225653, 67186), +(88185, 65536, 536870980, 1073742080, 0, 0, 134225920, 0, 0, 16912896, 0, 0, 0, 0, 1048577, 0, 67108864, 0, 0, 1, 31, 0, 5, 8, 0, 0, 0, 606550, 0, 0, 0, 0, 0, 115175, 67186), +(843802, 553648256, 32, 4, 1073741824, 0, 262152, 0, 0, 134217728, 1048576, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 157, 1, 0, 0, 0, 236171, 0, 0, 0, 0, 0, 1296448, 67186), +(830875, 606339072, 1160, 272629764, 1078394880, 8388608, 0, 16, 66, 0, 0, 0, 0, 0, 33554432, 1048576, 0, 0, 0, 1, 1, 0, 13, 1, 0, 0, 0, 236171, 0, 0, 0, 0, 0, 1283247, 67186), +(764851, 553648128, 32, 4, 1073741824, 0, 262152, 0, 0, 134217728, 1048576, 67108864, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 157, 1, 0, 0, 0, 236171, 0, 0, 0, 0, 0, 472053, 67186), +(843580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1296214, 67186), +(843566, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 1, 0, 0, 0, 0, 0, 0, 19, 0, 0, 1, 1, 0, 0, 0, 537079, 0, 0, 0, 0, 0, 1296205, 67186), +(843538, 690225536, 1192, 273170436, 4653056, 8388736, 393480, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 105, 0, 6, 1, 0, 0, 0, 136014, 0, 0, 0, 0, 0, 1296169, 67186), +(843537, 690225536, 1192, 273170436, 4653056, 8388736, 393480, 4096, 64, 0, 1048576, 0, 0, 8388608, 0, 0, 0, 0, 0, 1, 0, 0, 1, 8, 0, 0, 0, 136014, 0, 0, 0, 0, 0, 1296168, 67186), +(801212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 4, 32, 0, 0, 0, 615099, 0, 0, 0, 0, 0, 1246914, 67186), +(839257, 150994944, 168, 540672, 0, 1073741952, 917768, 4096, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 32, 0, 0, 0, 7658125, 0, 0, 0, 0, 0, 1291770, 67186), +(839254, 0, 268435524, 0, 0, 0, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 28, 0, 1, 32, 0, 0, 0, 7658125, 0, 0, 0, 0, 0, 1291767, 67186), +(843754, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1296406, 67186), +(824543, 698614144, 1192, 273170437, 5701632, 8388736, 917768, 4096, 64, 0, 1048577, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1275574, 67186), +(824542, 698614144, 1192, 273170437, 5701632, 8388736, 917768, 4096, 64, 0, 1048577, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1275573, 67186), +(824534, 698614144, 1192, 273170437, 5701632, 8388736, 917768, 4096, 64, 0, 1048577, 0, 0, 0, 0, 0, 0, 0, 0, 1, 36, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1275563, 67186), +(818771, 0, 16524, 4, 262144, 0, 768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 4, 18, 0, 6, 32, 0, 0, 0, 4914666, 0, 0, 0, 0, 0, 1265999, 67186), +(815712, 690225536, 1192, 273170436, 459008, 8388736, 393224, 4096, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 4914667, 0, 0, 0, 0, 0, 1262666, 67186), +(809806, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 8, 0, 0, 0, 1850550, 0, 0, 0, 0, 0, 1255966, 67186), +(808307, 150994944, 524320, 540672, 0, 128, 917768, 4096, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 4, 0, 0, 0, 524795, 0, 0, 0, 0, 0, 1254330, 67186), +(151457, 0, 1028, 4, 536879104, 0, 1536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, 29, 0, 6, 1, 0, 0, 0, 1029582, 0, 0, 0, 0, 0, 154149, 67186), +(128030, 0, 1028, 4, 536879104, 0, 1536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 29, 0, 6, 1, 0, 0, 0, 1029582, 0, 0, 0, 0, 0, 154149, 67186), +(127836, 0, 0, 0, 256, 0, 1024, 0, 0, 134217728, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 6, 1, 0, 0, 0, 1029578, 0, 0, 0, 0, 0, 153954, 67186), +(801812, 0, 268435524, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 1, 32, 0, 1, 32, 0, 0, 0, 4914671, 0, 0, 0, 0, 0, 1247556, 67186), +(843341, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 7, 1, 0, 0, 0, 450908, 0, 0, 0, 0, 0, 1295959, 67186), +(843339, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 7, 1, 0, 0, 0, 450908, 0, 0, 0, 0, 0, 1295957, 67186), +(843317, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 450908, 0, 0, 0, 0, 0, 1295932, 67186), +(843312, -1457258240, 1192, 273170436, 5701632, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 450908, 0, 0, 0, 0, 0, 1295927, 67186), +(818744, 192, 0, 0, 68157440, 2097152, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1390946, 0, 0, 0, 0, 0, 1265971, 67186), +(831871, 688128000, 1192, 273170436, 1074200576, 8388736, 917768, 4096, 0, 0, 1048576, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 9, 0, 6, 32, 0, 0, 0, 7554214, 0, 0, 0, 0, 0, 1284229, 67186), +(815424, -1988100096, -1879048160, 540677, 1048576, 524416, 393481, 135168, 0, 4128, 1050624, 13500416, 67108866, 0, 2050, 16, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 2178482, 0, 0, 0, 0, 0, 1262365, 67186), +(815423, -1988100096, -1879048160, 540677, 1048576, 524416, 393481, 135168, 0, 4128, 1050624, 13500416, 67108866, 0, 2050, 16, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 2178482, 0, 0, 0, 0, 0, 1262364, 67186), +(815418, -1988100096, -1879048160, 540677, 1048576, 524416, 393481, 135168, 0, 4128, 1050624, 13500416, 67108866, 0, 2050, 16, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 2178482, 0, 0, 0, 0, 0, 1262359, 67186), +(803125, -1988100096, -1879048160, 540677, 1048576, 524416, 393481, 135168, 0, 4128, 1050624, 13500416, 67108866, 0, 2050, 16, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 2178482, 0, 0, 0, 0, 0, 1248927, 67186), +(1568, 0, 136, 16777220, 1073872896, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 6, 8, 0, 0, 0, 136066, 0, 0, 0, 0, 0, 5760, 67186), +(831103, 0, 0, 0, 1048576, 65536, 0, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 42, 0, 1, 1, 0, 0, 0, 7414435, 0, 0, 0, 0, 0, 1283490, 67186), +(810873, 142606336, 32, 1, 0, 128, 917512, 0, 0, 32, 1050640, 4194304, 67108864, 0, 2, 0, 0, 0, 0, 1, 225, 0, 1, 1, 0.5, 0, 0, 7137519, 0, 0, 0, 0, 0, 1257124, 67186), +(842983, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1295592, 67186), +(798878, 0, 0, 536870912, 0, 0, 32, 0, 0, 0, 16777216, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 8, 0, 0, 0, 1408837, 0, 0, 0, 0, 0, 1244341, 67186), +(842899, 256, 132096, 0, 0, 0, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 1, 1, 0, 0, 0, 135740, 0, 0, 0, 0, 0, 1295508, 67186), +(842888, 218103936, 17580, 4210692, 0, 128, 917545, 4096, 0, 32, 1048576, 0, 64, 0, 0, 0, 0, 0, 0, 1, 36, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1295497, 67186), +(842877, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1295486, 67186), +(757076, 690225536, 1192, 273170437, 1079443456, 8388736, 917768, 4096, 64, 0, 1048576, 0, 1, 0, 0, 0, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 464291, 67186), +(829794, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 135, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1282100, 67186), +(769597, 754975104, 168, 268451844, 1074003968, 129, 917512, 0, 0, 32, 1048576, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 31, 0, 135, 1, 0, 0, 0, 4914668, 0, 0, 0, 0, 0, 1215101, 67186), +(769572, 128, 0, 0, 0, 128, 0, 0, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 570, 0, 135, 1, 0, 0, 0, 4914668, 0, 0, 0, 0, 0, 1215076, 67186), +(811397, 754974848, 537411756, 16388, 262144, 134217729, 393736, 0, 0, 134217760, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 327, 0, 6, 1, 0, 0, 0, 5764906, 0, 0, 0, 0, 0, 1257722, 67186), +(811396, 538968192, 136, 268435460, 262144, 128, 0, 65536, 0, 0, 1048577, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 6, 1, 0, 0, 0, 5852174, 0, 0, 0, 0, 0, 1257721, 67186), +(811376, 538968064, 1160, 268435460, 1074004224, 0, 256, 4, 0, 0, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 14, 0, 0, 6, 1, 0, 0, 0, 135973, 0, 0, 0, 0, 0, 1257701, 67186), +(826098, 67108864, 136, 4, 256, 128, 524544, 0, 0, 0, 1048576, 0, 0, -2147483648, 0, 0, 0, 0, 14, 1, 27, 0, 187, 2, 0, 0, 0, 135975, 0, 0, 0, 0, 0, 1250812, 67186), +(826097, 67108864, 136, 4, 256, 128, 524544, 0, 0, 0, 1048576, 0, 0, -2147483648, 0, 0, 0, 0, 15, 1, 35, 0, 187, 2, 0, 0, 0, 135975, 0, 0, 0, 0, 0, 1250812, 67186), +(826096, 67108864, 136, 4, 256, 128, 524544, 0, 0, 0, 1048576, 0, 0, -2147483648, 0, 0, 0, 0, 16, 1, 28, 0, 187, 2, 0, 0, 0, 135975, 0, 0, 0, 0, 0, 1250812, 67186), +(804965, 67108864, 136, 4, 256, 128, 524544, 0, 0, 0, 1048576, 0, 0, -2147483648, 0, 0, 0, 0, 0, 1, 35, 0, 187, 2, 0, 0, 0, 135975, 0, 0, 0, 0, 0, 1250812, 67186), +(802597, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 0, 1024, 0, -2147483648, 0, 0, 0, 0, 0, 1, 21, 0, 5, 2, 0, 0, 0, 135975, 0, 0, 0, 0, 0, 1248452, 67186), +(842710, 690225536, 1192, 273170436, 4653312, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 35, 0, 6, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1295319, 67186), +(809379, 150994944, 168, 268451844, 1073741824, 128, 917512, 0, 0, 32, 1048576, 0, 0, 16388, 33554432, 0, 0, 0, 0, 1, 32, 0, 13, 2, 0, 0, 0, 571558, 0, 0, 0, 0, 0, 1255503, 67186), +(808638, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 132122, 0, 0, 0, 0, 0, 1254690, 67186), +(808637, 2097152, 140, 0, 0, 0, 1, 0, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 6, 1, 0, 0, 0, 841383, 0, 0, 0, 0, 0, 1254689, 67186), +(127779, 0, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 225, 0, 6, 1, 0, 0, 0, 132372, 0, 0, 0, 0, 0, 153896, 67186), +(842699, 150994944, 160, 540672, 256, 2752672, 393225, 135680, 0, 32, 1067008, 4194432, 201326592, 0, 268435458, 1048576, 0, 2, 17, 1, 1, 0, 187, 32, 0, 0, 0, 4914671, 0, 0, 0, 0, 0, 1242815, 67186), +(842698, 150994944, 160, 540672, 256, 2752672, 393225, 135680, 0, 32, 1067008, 4194432, 201326592, 0, 268435458, 1048576, 0, 2, 17, 1, 1, 0, 187, 2, 0, 0, 0, 5764909, 0, 0, 0, 0, 0, 1242803, 67186), +(842697, 218103808, 160, 540672, 1073741824, 2752672, 917513, 135680, 0, 32, 1067008, 4194432, 201326592, 0, 301989890, 0, 0, 2, 17, 1, 1, 0, 187, 34, 0, 0, 0, 7636523, 0, 0, 0, 0, 0, 1243866, 67186), +(822271, -2147483648, 0, 0, 0, 32768, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 0, 1, 1, 0, 0, 0, 237530, 0, 0, 0, 0, 0, 1271199, 67186), +(842672, 757334400, 1192, 810041348, 1078394880, 8396929, 918792, 536875008, 64, 32, 1074790400, 65536, 0, 0, 33554432, 0, 0, 0, 0, 1, 18, 0, 13, 1, 0, 0, 0, 1029744, 0, 0, 0, 0, 0, 1295278, 67186), +(838394, 671088768, 1024, 273170436, 268632576, 8454272, 393224, 8704, 0, 0, 1048576, 1, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290816, 67186), +(833943, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1286250, 67186), +(831819, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1284178, 67186), +(826976, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1278876, 67186), +(842643, 690225536, 1192, 273170436, 1078394880, 8388736, 934152, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 2048, 0, 0, 1, 21, 0, 1, 64, 0, 0, 0, 1041233, 0, 0, 0, 0, 0, 1295243, 67186), +(842634, 690225536, 1192, 273170436, 1078394880, 8388736, 934152, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 2048, 0, 0, 1, 21, 0, 1, 64, 0, 0, 0, 1041233, 0, 0, 0, 0, 0, 1295237, 67186), +(822521, 0, 0, 4, 1073741824, 0, 16640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, 6, 0, 0, 1, 64, 0, 0, 0, 1041233, 0, 0, 0, 0, 0, 1271479, 67186), +(807169, 696254848, 3104, 273170437, 269681152, 10485888, 393736, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 28, 0, 2, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1253158, 67186), +(842596, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1295194, 67186), +(433206, 687866240, 32, 540672, 0, 0, 393224, 4096, 0, 32, 2048, 4194304, 67108864, 0, 3, 0, 0, 0, 0, 1, 592, 0, 1, 1, 0, 0, 0, 895886, 0, 0, 0, 0, 0, 336136, 67186), +(795903, 159383552, 268435556, 540677, 1048576, 2752544, 393225, 135680, 0, 32, 18432, 4194432, 201326656, 0, 268435458, 0, 0, 0, 0, 1, 225, 0, 1, 1, 0, 0, 0, 7636524, 0, 0, 0, 0, 0, 1241320, 67186), +(788892, 696254848, 268436648, 273170437, 269681152, 11141280, 393225, 135680, 0, 32, 1067008, 4194432, 201326592, 0, 268435458, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 7448210, 0, 0, 0, 0, 0, 1234346, 67186), +(841708, -2147483648, 1024, 805306368, 1245184, 8388864, 524288, 536875008, 536870912, 4352, 0, 268435456, 134217728, 1048576, 33554432, 0, 0, 0, 0, 1, 0, 0, 134, 32, 0, 0, 0, 4913234, 0, 0, 0, 0, 0, 1294288, 67186), +(664030, 262144, 1024, 256, 67108864, 128, 0, 0, 0, 4096, 1048576, 0, 0, 0, 1, 0, 67108864, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 134912, 0, 0, 0, 0, 0, 405189, 67186), +(841043, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 274944, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 161, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1293619, 67186), +(834506, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 37, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1286830, 67186), +(797087, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1242540, 67186), +(842021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 27, 0, 134, 1, 0, 0, 0, 4914670, 0, 0, 0, 0, 0, 1294631, 67186), +(826471, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 37, 1, 30, 0, 0, 4914670, 0, 0, 0, 0, 0, 1277796, 67186), +(826900, 16777344, 32, 4, 196608, 8388736, 0, 4096, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 64, 0, 0, 0, 135752, 0, 0, 0, 0, 0, 1278272, 67186), +(842594, 690225152, 168, 4734980, 5701632, 8388736, 918280, 12288, 64, 1073741824, 1048576, 0, 0, 0, 0, 1048576, 0, 2, 0, 1, 28, 0, 13, 106, 0, 0, 0, 7127726, 0, 0, 0, 0, 0, 1295191, 67186), +(819393, 538968192, 136, 5, 1075249152, 8388736, 524288, 0, 0, 1073745920, 1048592, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 63, 0, 13, 106, 0, 0, 0, 136158, 0, 0, 0, 0, 0, 1266621, 67186), +(819392, 687865984, 32, 16385, 65536, 8321, 393224, 0, 0, 32, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 106, 100, 0, 0, 1728724, 0, 0, 0, 0, 0, 1266620, 67186), +(818615, 538968064, 136, 5, 1075249152, 8388736, 524288, 0, 0, 1073745920, 1048592, 0, 0, 0, 33554432, 1048576, 0, 0, 0, 1, 63, 0, 13, 106, 0, 0, 0, 136158, 0, 0, 0, 0, 0, 1265842, 67186), +(807889, 2097152, 136, 5, 1074790400, 128, 524288, 0, 0, 4096, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 13, 106, 0, 0, 0, 1728724, 0, 0, 0, 0, 0, 1253878, 67186), +(841951, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 0, 0, 33554432, 0, 0, 0, 16, 655, 0, 0, 187, 32, 0, 0, 0, 631503, 0, 0, 0, 0, 0, 1261218, 67186), +(841949, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 1, 0, 33554432, 0, 0, 0, 15, 654, 0, 0, 187, 34, 0, 0, 0, 7636521, 0, 0, 0, 0, 0, 1241678, 67186), +(841948, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 1, 0, 33554432, 0, 0, 0, 16, 655, 0, 0, 187, 34, 0, 0, 0, 7636521, 0, 0, 0, 0, 0, 1241678, 67186), +(841947, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 1, 0, 33554432, 0, 0, 0, 15, 654, 0, 0, 187, 34, 0, 0, 0, 7636521, 0, 0, 0, 0, 0, 1241640, 67186), +(841946, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 1, 0, 33554432, 0, 0, 0, 16, 655, 0, 0, 187, 34, 0, 0, 0, 7636521, 0, 0, 0, 0, 0, 1241640, 67186), +(841945, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 0, 0, 33554432, 0, 0, 0, 15, 654, 0, 0, 187, 32, 0, 0, 0, 631503, 0, 0, 0, 0, 0, 1261218, 67186), +(841944, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 0, 0, 33554432, 0, 0, 0, 15, 654, 0, 0, 187, 2, 0, 0, 0, 612098, 0, 0, 0, 0, 0, 1261217, 67186), +(841943, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 0, 0, 33554432, 0, 0, 0, 16, 655, 0, 0, 187, 2, 0, 0, 0, 612098, 0, 0, 0, 0, 0, 1261217, 67186), +(814421, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 0, 0, 33554432, 0, 0, 0, 0, 639, 0, 0, 187, 32, 0, 0, 0, 631503, 0, 0, 0, 0, 0, 1261218, 67186), +(814420, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 0, 0, 33554432, 0, 0, 0, 0, 639, 0, 0, 187, 2, 0, 0, 0, 612098, 0, 0, 0, 0, 0, 1261217, 67186), +(796253, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 1, 0, 33554432, 0, 0, 0, 0, 639, 0, 0, 187, 34, 0, 0, 0, 7636521, 0, 0, 0, 0, 0, 1241678, 67186), +(796216, 262144, 128, 16388, 1073741824, 0, 1073741824, 0, 25198592, 134217856, 0, 67108864, 1, 0, 33554432, 0, 0, 0, 0, 639, 0, 0, 187, 34, 0, 0, 0, 7636521, 0, 0, 0, 0, 0, 1241640, 67186), +(796412, 8388736, 0, 5, 1048832, 0, 0, 65536, 0, 128, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 187, 32, 0, 0, 0, 4007138, 0, 0, 0, 0, 0, 1241834, 67186), +(795876, 8388736, 0, 5, 1048832, 0, 0, 65536, 0, 128, 0, 67108864, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 187, 2, 0, 0, 0, 4007141, 0, 0, 0, 0, 0, 1241293, 67186), +(784657, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 8, 0, 161, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1230119, 67186), +(783557, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 8, 0, 161, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1229029, 67186), +(783554, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 8, 0, 161, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1229026, 67186), +(777641, 696254848, 1056, 273170437, 269681152, 10485888, 393224, 12800, 0, 0, 1048576, 1, 0, 1048576, 0, 0, 0, 0, 0, 1, 8, 0, 161, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1223127, 67186), +(819182, 218103808, 168, 268976132, 0, 2752673, 917513, 135680, 0, 32, 1067024, 4194432, 201326592, 0, 268435458, 0, 0, 0, 0, 1, 0, 0, 245, 32, 0.550000011920928955, 0, 0, 4914666, 0, 0, 0, 0, 0, 1266413, 67186), +(819173, 218103808, 168, 540676, 1073742080, 0, 918016, 4096, 0, 1073745952, 0, 0, 524288, 0, 33554432, 1048576, 0, 0, 0, 1, 21, 0, 187, 32, 0, 0, 0, 4913234, 0, 0, 0, 0, 0, 1266404, 67186), +(798885, 218103808, 168, 540676, 1073742080, 0, 918016, 4096, 0, 1073745952, 0, 0, 524288, 0, 33554432, 1048576, 0, 0, 0, 1, 21, 0, 187, 2, 0, 0, 0, 5764903, 0, 0, 0, 0, 0, 1244348, 67186), +(798882, 218103808, 168, 268976132, 0, 2752673, 917513, 135680, 0, 32, 1067024, 4194432, 201326592, 0, 268435458, 0, 0, 0, 0, 1, 0, 0, 245, 2, 0.550000011920928955, 0, 0, 5764904, 0, 0, 0, 0, 0, 1244345, 67186), +(756188, 690225536, 1192, 273170436, 4653056, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 86, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 463410, 67186), +(815140, 2048, 268435460, 4, 1073741824, 0, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 6, 551, 0, 13, 16, 0, 0, 0, 609814, 0, 0, 0, 0, 0, 1262029, 67186), +(631726, 192, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 32, 0, 0, 0, 132291, 0, 0, 0, 0, 0, 373003, 67186), +(813459, 67108864, 136, 4, 0, 0, 0, 0, 2, 0, 0, 65536, 0, 0, 0, 1048576, 0, 0, 0, 1, 1, 0, 187, 32, 0, 0, 0, 5767152, 0, 0, 0, 0, 0, 1260027, 67186), +(837256, 128, 0, 0, 0, 0, 524288, 0, 0, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 203, 1, 0, 0, 0, 135888, 0, 0, 0, 0, 0, 1289670, 67186), +(809948, 218103936, 168, 268451844, 1073741824, 129, 917512, 0, 0, 32, 1048576, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 0, 0, 203, 1, 0, 0, 0, 135888, 0, 0, 0, 0, 0, 1256108, 67186), +(828341, -1450901104, 268436512, 336084997, 1245184, 8388736, 917512, 12292, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 27, 0, 13, 1, 0, 0, 0, 136080, 0, 0, 0, 0, 0, 1280470, 67186), +(828329, 65536, 536887428, 524288, 0, 0, 0, 8388608, 0, 0, 0, 0, 0, 0, 1048577, 0, 0, 0, 0, 1, 1, 0, 170, 32, 0, 0, 0, 237565, 0, 0, 0, 0, 0, 1280457, 67186), +(655550, 220200960, 168, 16388, 0, 129, 918024, 0, 0, 32, 1048576, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 3, 0, 1, 1, 0, 0, 0, 4547635, 0, 0, 0, 0, 0, 396716, 67186), +(647815, 218103808, 168, 16388, 1073741824, 129, 917512, 0, 0, 32, 1048576, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 105, 0, 7, 8, 0, 0, 0, 132106, 0, 0, 0, 0, 0, 389033, 67186), +(647695, 67108864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 32, 0, 5, 1, 0, 0, 0, 132155, 0, 0, 0, 0, 0, 388912, 67186), +(635798, 67108864, 0, 0, 262144, 0, 0, 0, 25165840, 0, 0, 0, 0, 0, 0, 0, 65536, 0, 0, 14, 1, 0, 6, 1, 0, 0, 0, 1508520, 0, 0, 0, 0, 0, 376997, 67186); + +INSERT INTO `spell_misc` (`ID`, `Attributes1`, `Attributes2`, `Attributes3`, `Attributes4`, `Attributes5`, `Attributes6`, `Attributes7`, `Attributes8`, `Attributes9`, `Attributes10`, `Attributes11`, `Attributes12`, `Attributes13`, `Attributes14`, `Attributes15`, `Attributes16`, `Attributes17`, `DifficultyID`, `CastingTimeIndex`, `DurationIndex`, `PvPDurationIndex`, `RangeIndex`, `SchoolMask`, `Speed`, `LaunchDelay`, `MinDuration`, `SpellIconFileDataID`, `ActiveIconFileDataID`, `ContentTuningID`, `ShowFutureSpellPlayerConditionID`, `SpellVisualScript`, `ActiveSpellVisualScript`, `SpellID`, `VerifiedBuild`) VALUES +(219551, 67108864, 0, 0, 256, 0, 256, 0, 0, 0, 0, 0, 0, 4, 0, 0, 131072, 0, 0, 1, 835, 0, 6, 1, 0, 0, 0, 132142, 0, 0, 0, 0, 0, 245742, 67186), +(833396, 0, 805306436, 0, 0, 0, 0, 0, 32768, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 14, 551, 0, 13, 106, 0, 0, 0, 7454100, 0, 0, 0, 0, 0, 1285708, 67186), +(803852, 0, 805306436, 0, 0, 0, 0, 0, 32768, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 14, 551, 0, 13, 106, 0, 0, 0, 7448204, 0, 0, 0, 0, 0, 1249620, 67186), +(842175, 159383680, 32, 540673, 196608, 8388736, 393224, 4096, 0, 32, 135268352, 12582912, 67108864, 0, 2, 16, 0, 0, 0, 1, 0, 0, 1, 32, 0, 0, 0, 876916, 0, 0, 0, 0, 0, 1294776, 67186), +(824098, 67108864, 0, 0, 196608, 8388609, 0, 0, 0, 0, 0, 0, 0, 0, 134217728, 0, 0, 0, 0, 6, 0, 0, 1, 32, 0, 0, 0, 876916, 0, 0, 0, 0, 0, 1273357, 67186), +(842178, 690225536, 1192, 273170436, 458752, 8388736, 393224, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1294779, 67186), +(842158, 690225536, 1192, 273170436, 458752, 8388736, 393224, 4096, 64, 0, 1048576, 0, 0, 0, 0, 0, 0, 0, 0, 1, 21, 0, 13, 1, 0, 0, 0, 136243, 0, 0, 0, 0, 0, 1294759, 67186), +(842150, 690225536, 1192, 273170436, 1074200832, 8388736, 917768, 4096, 64, 0, 1048576, 0, 0, 0, 33554432, 0, 0, 0, 0, 1, 0, 0, 13, 106, 0, 0, 0, 7454100, 0, 0, 0, 0, 0, 1294752, 67186), +(835750, 0, 0, 0, 0, 1, 0, 0, 0, 1073741824, 0, 0, 0, 0, 0, 0, 458752, 1, 0, 1, 21, 0, 13, 1, 0, 0, 0, 4914666, 0, 0, 0, 0, 0, 1288077, 67186); + +UPDATE `spell_misc` SET `Attributes10`=5242880, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=179701; +UPDATE `spell_misc` SET `DurationIndex`=0, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=825025; +UPDATE `spell_misc` SET `Attributes17`=1, `PvPDurationIndex`=32, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=178035; +UPDATE `spell_misc` SET `Attributes6`=918280, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=835570; +UPDATE `spell_misc` SET `Attributes6`=393481, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=815438; +UPDATE `spell_misc` SET `Attributes6`=393481, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=815437; +UPDATE `spell_misc` SET `Attributes6`=393481, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=815436; +UPDATE `spell_misc` SET `Attributes6`=393481, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=803129; +UPDATE `spell_misc` SET `Attributes6`=918280, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=825297; +UPDATE `spell_misc` SET `Attributes4`=1310720, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=834749; +UPDATE `spell_misc` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=806145; +DELETE FROM `spell_name` WHERE `VerifiedBuild`>0 AND `ID` IN (1298568, 1253377, 1270444, 441587, 441429, 1298446, 1223323, 1293502, 1270491, 1241077, 458128, 363916, 353319, 125174, 122470, 23920, 1237942, 1235216, 1225245, 1295986, 1278156, 1298074, 390264, 390260, 1297413, 149981, 1289789, 1283168, 1282778, 1264876, 1255629, 447444, 210824, 1280123, 1296760, 1296759, 1296758, 1296756, 1296734, 1296731, 466930, 1291739, 1281946, 1270634, 1270085, 1270079, 1258411, 1258410, 1258336, 1257809, 1257729, 1257728, 1257716, 1257505, 1256189, 1255966, 1253337, 1253336, 1253194, 1253193, 1253185, 1253064, 1252431, 1241032, 1241023, 1235076, 1235075, 1235072, 1235067, 1235066, 1235065, 1235037, 1233865, 1228865, 1225598, 1225322, 1225281, 1225277, 1225273, 1225272, 444803, 1250759, 1276894, 1296448, 472053, 1296214, 1296205, 1296169, 1296168, 1291767, 1296406, 1295959, 1295957, 1295932, 1295927, 1265971, 444769, 1256191, 1272821, 1244331, 441845, 243435, 221562, 205630, 198158, 108194, 1291860, 1291859, 1291858, 1291857, 1291856, 1291855, 1291854, 1291853, 1291852, 1291851, 1291850, 1291849, 1291848, 1291847, 1291846, 1291845, 1291844, 1291843, 1291842, 1291841, 1291840, 1291839, 1291838, 1291837, 1291831, 1291828, 1291827, 1291826, 1291825, 1291824, 1291822, 1291791, 1290929, 1290926, 1290925, 1289221, 1286537, 1286536, 1286535, 1282100, 1282018, 1277461, 1269922, 1269921, 1269920, 1269919, 1269918, 1269917, 1269916, 1232065, 1295592, 1244341, 1262378, 1262377, 1262376, 1262365, 1262364, 1262359, 1248931, 1248927, 1277796, 1256862, 1256861, 1256860, 1256010, 1295508, 1295497, 1295486, 464291, 1243616, 1243615, 1243613, 1243605, 1243602, 1243588, 1243586, 1257701, 444088, 1295319, 1295191, 1295278, 1295243, 1295237, 1226037, 442615, 1295194, 1241218, 1294288, 1286830, 1236092, 1293613, 1286820, 1286703, 1253159, 1277169, 1243683, 190784, 1292124, 1266413, 1244345, 1231327, 436358, 1292071, 1294776, 1273357, 1294727, 1294726, 1294720, 1294703, 1294669, 1294633, 1294563, 1277795, 1272179, 1269655, 1269654, 1269650, 1269641, 1269640, 1264545, 1259647, 1258362, 1256009, 1251813, 1294779, 1294759, 1294752); +INSERT INTO `spell_name` (`ID`, `Name`, `VerifiedBuild`) VALUES +(1298568, 'Stunned', 67186), +(1253377, 'Meteoric Rise', 67186), +(1270444, 'Untethered Rage', 67186), +(441587, 'Cloud Cover', 67186), +(441429, 'Cloud Cover', 67186), +(1298446, 'Unbreakable Bond', 67186), +(1223323, 'Unbreakable Bond', 67186), +(1293502, '[DNT] Fused Vitality', 67186), +(1270491, 'Unholy Devotion', 67186), +(1241077, 'Festering Scythe', 67186), +(458128, 'Festering Scythe', 67186), +(363916, 'Obsidian Scales', 67186), +(353319, 'Peaceweaver', 67186), +(125174, 'Touch of Karma', 67186), +(122470, 'Touch of Karma', 67186), +(23920, 'Spell Reflection', 67186), +(1237942, 'Chum', 67186), +(1235216, 'Midnight Perception', 67186), +(1225245, 'Sin\'dorei Swarmer', 67186), +(1295986, 'Lindormi\'s Glow', 67186), +(1278156, 'Lindormi\'s Guidance', 67186), +(1298074, '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'Commander of the Dead', 67186), +(390260, 'Commander of the Dead', 67186), +(1297413, 'Taunt Skeletons', 67186), +(149981, 'Taunt Skeletons', 67186), +(1289789, 'Battle Visage', 67186), +(1283168, 'Combine Ascendant Voidshards', 67186), +(1282778, 'Ascendant Voidcore', 67186), +(1264876, 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'Spectral Residue', 67186), +(447444, 'Entropic Rift', 67186), +(210824, 'Touch of the Magi', 67186), +(1280123, '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'Speculative Shreddertank', 67186), +(1296759, 'High-Yield Shreddertank', 67186), +(1296758, 'Profit-Green Shreddertank', 67186), +(1296756, 'Blue-Chip Shreddertank', 67186), +(1296734, 'Amethyst Mechsuit', 67186), +(1296731, 'Cerulean Deathwalker', 67186), +(466930, 'Black Arrow', 67186), +(1291739, 'Malevolent Boon', 67186), +(1281946, 'Abyss Angler', 67186), +(1270634, 'Overflow Diverter', 67186), +(1270085, 'Grim Ward', 67186), +(1270079, 'Grim Ward', 67186), +(1258411, 'Kryenna\'s Khadgar\'s Imitation', 67186), +(1258410, 'Kryenna\'s Khadgar\'s Imitation', 67186), +(1258336, 'Final Warning', 67186), +(1257809, 'Kryenna\'s Khadgar\'s Imitation', 67186), +(1257729, 'Reanimation', 67186), +(1257728, 'Reanimation', 67186), +(1257716, 'Reanimation', 67186), +(1257505, 'Grim Ward', 67186), +(1256189, 'Abyss Angler', 67186), +(1255966, 'Regeneratin\'', 67186), +(1253337, 'Kryenna\'s Khadgar\'s Imitation', 67186), +(1253336, 'Kryenna\'s Khadgar\'s Imitation', 67186), +(1253194, 'Resourceful Measures', 67186), +(1253193, 'Resourceful Measures', 67186), +(1253185, 'Resourceful Measures', 67186), +(1253064, 'Abyss Angler', 67186), +(1252431, 'Crash Lightning (Unleashed)', 67186), +(1241032, 'Final Warning', 67186), +(1241023, 'Final Warning', 67186), +(1235076, 'Resourceful Measures', 67186), +(1235075, 'Resourceful Measures', 67186), +(1235072, 'Resourceful Measures', 67186), +(1235067, 'Resourceful Measures', 67186), +(1235066, 'Resourceful Measures', 67186), +(1235065, 'Resourceful Measures', 67186), +(1235037, 'Resourceful Measures', 67186), +(1233865, 'Null Corona', 67186), +(1228865, 'Void-Scarred Lynx', 67186), +(1225598, 'Abyss Angler', 67186), +(1225322, 'Eversong Woods', 67186), +(1225281, 'Tender Lumifin', 67186), +(1225277, 'Restored Songfish', 67186), +(1225273, 'Ominous Octopus', 67186), +(1225272, 'Shimmer Spinefish', 67186), +(444803, 'Awoken Coelacanth', 67186), +(1250759, 'Darkmote', 67186), +(1276894, 'Transmute Elemental Voidcore', 67186), +(1296448, 'Reckless Leap', 67186), +(472053, 'Reckless Leap', 67186), +(1296214, 'Galactic Void Matrix', 67186), +(1296205, 'Triplicate', 67186), +(1296169, 'Storm Cloud', 67186), +(1296168, 'Storm Cloud', 67186), +(1291767, 'Meteor Shower', 67186), +(1296406, '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'Lindormi\'s Glow', 67186), +(1265971, 'Unholy Armaments', 67186), +(444769, 'Imminent Demise', 67186), +(1256191, 'End Dive', 67186), +(1272821, 'Wisdom of the Wall', 67186), +(1244331, 'Everbloom', 67186), +(441845, 'Strike for the Heart', 67186), +(243435, 'Fortifying Brew', 67186), +(221562, 'Asphyxiate', 67186), +(205630, 'Illidan\'s Grasp', 67186), +(198158, 'Mass Invisibility', 67186), +(108194, 'Asphyxiate', 67186), +(1291860, 'Food & Drink', 67186), +(1291859, 'Food & Drink', 67186), +(1291858, 'Food & Drink', 67186), +(1291857, 'Food & Drink', 67186), +(1291856, 'Food & Drink', 67186), +(1291855, 'Food & Drink', 67186), +(1291854, 'Food & Drink', 67186), +(1291853, 'Food & Drink', 67186), +(1291852, 'Food & Drink', 67186), +(1291851, 'Food & Drink', 67186), +(1291850, 'Food & Drink', 67186), +(1291849, 'Food & Drink', 67186), +(1291848, 'Food', 67186), +(1291847, 'Food', 67186), +(1291846, 'Food', 67186), +(1291845, 'Food', 67186), +(1291844, 'Food', 67186), +(1291843, 'Food', 67186), +(1291842, 'Food', 67186), +(1291841, 'Food', 67186), +(1291840, 'Food', 67186), +(1291839, 'Food', 67186), +(1291838, 'Food', 67186), +(1291837, 'Food', 67186), +(1291831, 'Drink', 67186), +(1291828, 'Food', 67186), +(1291827, 'Food', 67186), +(1291826, 'Food', 67186), +(1291825, 'Food', 67186), +(1291824, 'Food', 67186), +(1291822, 'Food', 67186), +(1291791, 'Drink', 67186), +(1290929, 'Drink', 67186), +(1290926, 'Food', 67186), +(1290925, 'Food', 67186), +(1289221, 'Light Guardian\'s Reward', 67186), +(1286537, 'Food & Drink', 67186), +(1286536, 'Drink', 67186), +(1286535, 'Food', 67186), +(1282100, 'Animated Bench', 67186), +(1282018, 'Animated Bench', 67186), +(1277461, 'Drink', 67186), +(1269922, 'Food', 67186), +(1269921, 'Food', 67186), +(1269920, 'Food', 67186), +(1269919, 'Drink', 67186), +(1269918, 'Drink', 67186), +(1269917, 'Food & Drink', 67186), +(1269916, 'Food & Drink', 67186), +(1232065, 'Food & Drink', 67186), +(1295592, '[DNT] Clear Voidspire', 67186), +(1244341, 'Everbloom', 67186), +(1262378, 'Ebon Crown of Subjugation', 67186), +(1262377, 'Ebon Crown of Subjugation', 67186), +(1262376, 'Ebon Crown of Subjugation', 67186), +(1262365, 'Mandate of Sacred Death', 67186), +(1262364, 'Mandate of Sacred Death', 67186), +(1262359, 'Mandate of Sacred Death', 67186), +(1248931, 'Ebon Crown of Subjugation', 67186), +(1248927, 'Mandate of Sacred Death', 67186), +(1277796, 'Nullify Magic', 67186), +(1256862, 'Anti-Magic Arrow', 67186), +(1256861, 'Dispelling Leap', 67186), +(1256860, 'Dispelling Focus', 67186), +(1256010, 'Nullification Field', 67186), +(1295508, 'Learning', 67186), +(1295497, 'Nerubian', 67186), +(1295486, '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'Dark Prayer', 67186), +(1243616, 'Unstable Void Essence', 67186), +(1243615, 'Unstable Void Essence', 67186), +(1243613, 'Unstable Void Essence', 67186), +(1243605, 'Unstable Void Essence', 67186), +(1243602, 'Unstable Void Essence', 67186), +(1243588, 'Unstable Void Essence', 67186), +(1243586, 'Unstable Void Essence', 67186), +(1257701, 'Searing Rend', 67186), +(444088, 'Consume Flame', 67186), +(1295319, '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'Dissonance', 67186), +(1295278, 'Smashing Frenzy Target', 67186), +(1295243, 'Netherburst', 67186), +(1295237, 'Netherburst', 67186), +(1226037, 'Carve Meat', 67186), +(442615, 'Carve Meat', 67186), +(1295194, '[DNT] Cancel Aura', 67186), +(1241218, '[DNT] Vision of Self', 67186), +(1294288, 'Strength in Shadows', 67186), +(1286830, 'Ping Fishing Bubble - Despawn', 67186), +(1236092, 'Enchant Tool - Sin\'dorei Deftness', 67186), +(1293613, 'Abyss Angler Fishing', 67186), +(1286820, 'Abyss Angler Fishing', 67186), +(1286703, 'Abyss Angler Fishing', 67186), +(1253159, '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'Open the Cache', 67186), +(1243683, 'Glorious Cluster of Myth Dawncrests', 67186), +(190784, 'Divine Steed', 67186), +(1292124, '[DNT] Material Creation - Health', 67186), +(1266413, 'Void Burn', 67186), +(1244345, 'Light Burn', 67186), +(1231327, 'Consuming Void', 67186), +(436358, 'Demolish', 67186), +(1292071, 'Phalanx', 67186), +(1294776, 'Gleaming Sunmote', 67186), +(1273357, 'Gleaming Sunmote', 67186), +(1294727, 'Well Fed', 67186), +(1294726, 'Roast Marshmallow', 67186), +(1294720, 'Shoot', 67186), +(1294703, 'Shoot', 67186), +(1294669, 'Charge', 67186), +(1294633, 'Fire Spit', 67186), +(1294563, 'Broken Shield', 67186), +(1277795, 'Nullify Magic', 67186), +(1272179, 'Eccentro-Magic Pulse - Unpurchased', 67186), +(1269655, 'Stealth', 67186), +(1269654, 'Clockwork Sentinel', 67186), +(1269650, 'Dispelling Leap', 67186), +(1269641, 'Riftwalk', 67186), +(1269640, 'Nullification Field', 67186), +(1264545, 'Swap', 67186), +(1259647, 'W-47CH D0G', 67186), +(1258362, 'Trap: Song Bird', 67186), +(1256009, 'Nullify Magic', 67186), +(1251813, 'Lingering Dread', 67186), +(1294779, 'DNT', 67186), +(1294759, 'DNT', 67186), +(1294752, 'Grim Symphony', 67186); + +UPDATE `spell_name` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (1276487, 406157, 1284994); +DELETE FROM `spell_power` WHERE `VerifiedBuild`>0 AND `ID` IN (232526, 312822); +INSERT INTO `spell_power` (`ID`, `OrderIndex`, `ManaCost`, `ManaCostPerLevel`, `ManaPerSecond`, `PowerDisplayID`, `AltPowerBarID`, `PowerCostPct`, `PowerCostMaxPct`, `OptionalCostPct`, `PowerPctPerSecond`, `PowerType`, `RequiredAuraSpellID`, `OptionalCost`, `SpellID`, `VerifiedBuild`) VALUES +(232526, 0, 0, 0, 0, 0, 0, 2.40000009536743164, 0, 0, 0, 0, 356810, 0, 360995, 67186), +(312822, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1277796, 67186); + +DELETE FROM `spell_reagents` WHERE `VerifiedBuild`>0 AND `ID`=38861; +INSERT INTO `spell_reagents` (`ID`, `SpellID`, `Reagent1`, `Reagent2`, `Reagent3`, `Reagent4`, `Reagent5`, `Reagent6`, `Reagent7`, `Reagent8`, `ReagentCount1`, `ReagentCount2`, `ReagentCount3`, `ReagentCount4`, `ReagentCount5`, `ReagentCount6`, `ReagentCount7`, `ReagentCount8`, `ReagentRecraftCount1`, `ReagentRecraftCount2`, `ReagentRecraftCount3`, `ReagentRecraftCount4`, `ReagentRecraftCount5`, `ReagentRecraftCount6`, `ReagentRecraftCount7`, `ReagentRecraftCount8`, `ReagentSource1`, `ReagentSource2`, `ReagentSource3`, `ReagentSource4`, `ReagentSource5`, `ReagentSource6`, `ReagentSource7`, `ReagentSource8`, `VerifiedBuild`) VALUES +(38861, 1296214, 271342, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `spell_shapeshift` WHERE `VerifiedBuild`>0 AND `ID`=57437; +INSERT INTO `spell_shapeshift` (`ID`, `SpellID`, `StanceBarOrder`, `ShapeshiftExclude1`, `ShapeshiftExclude2`, `ShapeshiftMask1`, `ShapeshiftMask2`, `VerifiedBuild`) VALUES +(57437, 1295508, -1, 0, 0, 0, 0, 67186); + +DELETE FROM `spell_target_restrictions` WHERE `VerifiedBuild`>0 AND `ID` IN (345687, 342077, 352446, 352383, 352377, 352376, 352242, 352215, 352171, 352061, 350151); +INSERT INTO `spell_target_restrictions` (`ID`, `DifficultyID`, `ConeDegrees`, `MaxTargets`, `MaxTargetLevel`, `TargetCreatureType`, `Targets`, `Width`, `SpellID`, `VerifiedBuild`) VALUES +(345687, 0, 0, 0, 0, 0, 64, 5, 1257574, 67186), +(342077, 0, 0, 0, 0, 0, 64, 5, 1237727, 67186), +(352446, 0, 0, 0, 0, 0, 64, 0, 1296448, 67186), +(352383, 0, 0, 0, 0, 0, 16, 0, 1296214, 67186), +(352377, 0, 0, 0, 0, 0, 64, 0, 1296169, 67186), +(352376, 0, 0, 10, 0, 0, 0, 0, 1296168, 67186), +(352242, 0, 0, 6, 0, 0, 0, 0, 1244341, 67186), +(352215, 0, 0, 1, 0, 0, 0, 0, 1295497, 67186), +(352171, 0, 0, 1, 0, 0, 0, 0, 1286830, 67186), +(352061, 0, 0, 6, 0, 0, 0, 0, 1294752, 67186), +(350151, 0, 0, 5, 0, 0, 0, 0, 1284994, 67186); + +DELETE FROM `spell_visual` WHERE `VerifiedBuild`>0 AND `ID` IN (184042, 141015, 182748, 183512, 183511, 161173, 161066, 174064, 166308, 182831, 182830, 182822, 182815, 179582, 168788, 182368, 182367, 182366, 169070, 182353, 182329, 164641, 164639, 182011, 182214, 164230, 182326); +INSERT INTO `spell_visual` (`ID`, `MissileCastOffset1`, `MissileCastOffset2`, `MissileCastOffset3`, `MissileImpactOffset1`, `MissileImpactOffset2`, `MissileImpactOffset3`, `StateKit`, `AnimEventSoundID`, `Flags`, `MissileAttachment`, `MissileDestinationAttachment`, `MissileCastPositionerID`, `MissileImpactPositionerID`, `MissileTargetingKit`, `HostileSpellVisualID`, `CasterSpellVisualID`, `SpellVisualMissileSetID`, `DamageNumberDelay`, `LowViolenceSpellVisualID`, `RaidSpellVisualMissileSetID`, `ReducedUnexpectedCameraMovementSpellVisualID`, `VerifiedBuild`) VALUES +(184042, 0, 0, 0, 0, 0, 0, 227164, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(141015, 0, 0, 0, 0, 0, 0, 0, 0, 2048, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182748, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(183512, 0, 0, 0, 0, 0, 0, 267429, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(183511, 0, 0, 0, 0, 0, 0, 267426, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(161173, 0, 0, 0, 0, 0, 0, 255468, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183512, 67186), +(161066, 0, 0, 0, 0, 0, 0, 230629, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183511, 67186), +(174064, 0, 0, 0, 0, 0, 0, 251943, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(166308, 0, 0, 0, 0, 0, 0, 266439, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182831, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182830, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182822, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182815, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(179582, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(168788, 0, 0, 0, 0, 0, 0, 220436, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182368, 0, 0, 0, 0, 0, 0, 265598, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182367, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182366, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(169070, 0, 0, 0, 0, 0, 0, 243593, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182353, 0, 0, 0, 0, 0, 0, 265568, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182329, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(164641, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 22993, 0, 0, 0, 0, 67186), +(164639, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 22992, 0, 0, 0, 0, 67186), +(182011, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182214, 0, 0, 0, 0, 0, 0, 159814, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(164230, 0, 0, 0, 0, 0, 0, 159814, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(182326, 0, 0, 0, 0, 0, 0, 265529, 0, 0, -1, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `spell_visual_effect_name` WHERE `VerifiedBuild`>0 AND `ID` IN (55914, 55913, 55912); +INSERT INTO `spell_visual_effect_name` (`ID`, `ModelFileDataID`, `BaseMissileSpeed`, `Scale`, `MinAllowedScale`, `MaxAllowedScale`, `Alpha`, `Flags`, `TextureFileDataID`, `EffectRadius`, `Type`, `GenericID`, `RibbonQualityID`, `DissolveEffectID`, `ModelPosition`, `Unknown901`, `Unknown1100`, `VerifiedBuild`) VALUES +(55914, 7455384, 0, 1, 0.5, 1.5, 1, 128, 0, 0, 0, 0, 0, 0, -1, 0, 0, 67186), +(55913, 6197881, 0, 1, 0.5, 1.5, 0.5, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 67186), +(55912, 6197881, 0, 1, 0.5, 1.5, 1, 128, 0, 0, 0, 0, 0, 0, -1, 0, 0, 67186); + +DELETE FROM `spell_visual_kit` WHERE `VerifiedBuild`>0 AND `ID` IN (268392, 268391, 210491, 197159, 197158, 264392, 266284, 267429, 267427, 267426, 266439, 238952, 266425, 266423, 266408, 266397, 266213, 242706, 239930, 265629, 265598, 265597, 265596, 265595, 265594, 265568, 257125, 235995, 265412, 265322, 235511, 265535, 265529, 239993); +INSERT INTO `spell_visual_kit` (`ID`, `ClutterLevel`, `FallbackSpellVisualKitId`, `DelayMin`, `DelayMax`, `MinimumSpellVisualDensityFilterType`, `MinimumSpellVisualDensityFilterParam`, `ReducedSpellVisualDensityFilterType`, `ReducedSpellVisualDensityFilterParam`, `Flags1`, `Flags2`, `VerifiedBuild`) VALUES +(268392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(268391, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(210491, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(197159, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(197158, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(264392, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(266284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(267429, 0, 0, 0, 0, 0, 0, 0, 0, 4325376, 0, 67186), +(267427, 0, 0, 0, 0, 0, 0, 0, 0, 135168, 0, 67186), +(267426, 4, 0, 0, 0, 0, 0, 0, 0, 2097152, 0, 67186), +(266439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(238952, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(266425, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(266423, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(266408, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(266397, 0, 0, 0, 0, 0, 0, 0, 0, 4096, 0, 67186), +(266213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(242706, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(239930, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 67186), +(265629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265597, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265595, 0, 0, 0, 0, 0, 0, 0, 0, 8192, 0, 67186), +(265594, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265568, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(257125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(235995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265412, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 67186), +(265322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(235511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(265535, 0, 0, 0, 0, 0, 0, 0, 0, 131072, 0, 67186), +(265529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(239993, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +UPDATE `spell_visual_kit` SET `ClutterLevel`=4, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=260059; +DELETE FROM `spell_x_spell_visual` WHERE `VerifiedBuild`>0 AND `ID` IN (521390, 519908, 519907, 519906, 519905, 519890, 519886, 519430, 519428, 519417, 519411, 519090, 495238, 518949, 518948, 518947, 518926, 518924, 513301, 507472, 518729, 486476, 518894, 518550, 518549, 518548, 518547, 518546, 518529); +INSERT INTO `spell_x_spell_visual` (`ID`, `DifficultyID`, `SpellVisualID`, `Probability`, `Flags`, `Priority`, `SpellIconFileID`, `ActiveIconFileID`, `ViewerUnitConditionID`, `ViewerPlayerConditionID`, `CasterUnitConditionID`, `CasterPlayerConditionID`, `SpellID`, `VerifiedBuild`) VALUES +(521390, 0, 184042, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1298568, 67186), +(519908, 0, 157825, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1296760, 67186), +(519907, 0, 157825, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1296759, 67186), +(519906, 0, 157825, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1296758, 67186), +(519905, 0, 157825, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1296756, 67186), +(519890, 0, 147132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1296734, 67186), +(519886, 0, 102465, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1296731, 67186), +(519430, 0, 182831, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295959, 67186), +(519428, 0, 182830, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295957, 67186), +(519417, 0, 182822, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295932, 67186), +(519411, 0, 182815, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295927, 67186), +(519090, 0, 222, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295508, 67186), +(495238, 0, 168787, 1, 1, 0, 0, 0, 9550, 0, 0, 0, 1254690, 67186), +(518949, 0, 182368, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295278, 67186), +(518948, 0, 182367, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1281850, 67186), +(518947, 0, 182366, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1243914, 67186), +(518926, 0, 182353, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295243, 67186), +(518924, 0, 182353, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295237, 67186), +(513301, 0, 178806, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1286704, 67186), +(507472, 0, 182061, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1277796, 67186), +(518729, 0, 182214, 1, 1, 1, 0, 0, 0, 156592, 0, 0, 1242091, 67186), +(486476, 0, 164230, 1, 1, 1, 0, 0, 0, 156591, 0, 0, 1242091, 67186), +(518894, 0, 182326, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1295191, 67186), +(518550, 0, 178954, 1, 1, 1, 0, 0, 9362, 153886, 0, 0, 1294779, 67186), +(518549, 0, 171484, 1, 1, 1, 0, 0, 9362, 147227, 0, 0, 1294779, 67186), +(518548, 0, 167909, 1, 1, 1, 0, 0, 9362, 144786, 0, 0, 1294779, 67186), +(518547, 0, 167513, 1, 1, 1, 0, 0, 9362, 144545, 0, 0, 1294779, 67186), +(518546, 0, 167378, 1, 1, 1, 0, 0, 9362, 144547, 0, 0, 1294779, 67186), +(518529, 0, 167379, 1, 1, 0, 0, 0, 0, 156536, 0, 0, 1294759, 67186); + +UPDATE `spell_x_spell_visual` SET `SpellVisualID`=182748, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=513834; +DELETE FROM `summon_properties` WHERE `VerifiedBuild`>0 AND `ID`=6686; +INSERT INTO `summon_properties` (`ID`, `Control`, `Faction`, `Title`, `Slot`, `Flags1`, `Flags2`, `VerifiedBuild`) VALUES +(6686, 1, 0, 3, 0, 4719106, 0, 67186); + +DELETE FROM `tact_key` WHERE `VerifiedBuild`>0 AND `ID` IN (8118, 8086, 8092, 8107, 8095, 8058, 8034, 8094, 7923, 8156, 7922, 7924, 8179, 8152, 8093, 8207, 8059); +INSERT INTO `tact_key` (`ID`, `Key1`, `Key2`, `Key3`, `Key4`, `Key5`, `Key6`, `Key7`, `Key8`, `Key9`, `Key10`, `Key11`, `Key12`, `Key13`, `Key14`, `Key15`, `Key16`, `VerifiedBuild`) VALUES +(8118, 163, 5, 116, 151, 111, 17, 44, 239, 236, 245, 220, 190, 150, 216, 164, 49, 67186), +(8086, 233, 248, 140, 33, 213, 182, 46, 220, 47, 127, 60, 115, 126, 127, 194, 109, 67186), +(8092, 3, 53, 89, 99, 21, 62, 139, 105, 236, 159, 215, 116, 166, 140, 72, 12, 67186), +(8107, 147, 119, 84, 42, 150, 117, 206, 160, 238, 188, 34, 123, 92, 190, 32, 241, 67186), +(8095, 24, 53, 145, 244, 151, 84, 78, 194, 82, 223, 169, 221, 186, 27, 53, 109, 67186), +(8058, 203, 43, 230, 62, 96, 35, 173, 251, 128, 82, 21, 236, 3, 208, 37, 83, 67186), +(8034, 28, 242, 195, 240, 135, 52, 16, 121, 251, 17, 147, 208, 113, 91, 112, 249, 67186), +(8094, 180, 167, 198, 187, 110, 1, 73, 155, 194, 128, 83, 172, 44, 179, 81, 28, 67186), +(7923, 103, 148, 133, 165, 159, 220, 169, 144, 251, 174, 215, 23, 209, 250, 45, 180, 67186), +(8156, 42, 62, 135, 92, 184, 254, 168, 100, 216, 196, 6, 247, 28, 134, 151, 194, 67186), +(7922, 115, 83, 104, 120, 83, 191, 136, 129, 95, 191, 227, 97, 198, 229, 48, 104, 67186), +(7924, 116, 186, 29, 46, 53, 73, 132, 202, 214, 9, 248, 179, 111, 156, 213, 240, 67186), +(8179, 4, 160, 143, 42, 73, 46, 135, 54, 244, 121, 235, 169, 226, 209, 80, 45, 67186), +(8152, 176, 16, 78, 118, 93, 225, 13, 166, 107, 117, 176, 19, 237, 36, 4, 13, 67186), +(8093, 235, 73, 211, 106, 135, 100, 29, 123, 211, 14, 241, 3, 197, 116, 137, 250, 67186), +(8207, 7, 169, 187, 218, 237, 127, 121, 48, 104, 2, 35, 155, 175, 239, 193, 206, 67186), +(8059, 236, 247, 248, 58, 96, 155, 131, 38, 43, 16, 156, 91, 165, 48, 42, 98, 67186); + +UPDATE `tact_key` SET `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID` IN (8047, 8068, 8075, 8055, 8065, 8146, 8041, 8111, 8061, 7962, 8051, 7958, 8081, 7963, 8113, 8063, 8069, 8150, 8073, 8148, 417, 8031, 8054, 8110, 7718, 8052, 8064, 8048, 7964, 8079, 8070, 8067, 8008, 8060, 8045, 7996, 8049, 7961, 8066, 7960, 8071, 8078, 8009, 8030, 8007, 8077, 7946, 8053, 8096, 8074, 8062, 7990, 8076, 8006, 8080, 8085, 8143, 8005, 8072); +DELETE FROM `trait_currency_source` WHERE `VerifiedBuild`>0 AND `ID` IN (37074, 37073, 37072, 37065, 37064, 37063, 37050, 37049, 37048, 36911, 35166, 35165, 35164); +INSERT INTO `trait_currency_source` (`Requirement`, `ID`, `TraitCurrencyID`, `Amount`, `QuestID`, `AchievementID`, `PlayerLevel`, `TraitNodeEntryID`, `OrderIndex`, `VerifiedBuild`) VALUES +('', 37074, 2986, 0, 93625, 0, 0, 0, 0, 67186), +('', 37073, 2987, 0, 93625, 0, 0, 0, 0, 67186), +('', 37072, 2988, 0, 93625, 0, 0, 0, 0, 67186), +('', 37065, 2988, 0, 93622, 0, 0, 0, 0, 67186), +('', 37064, 2987, 0, 93622, 0, 0, 0, 0, 67186), +('', 37063, 2986, 0, 93622, 0, 0, 0, 0, 67186), +('', 37050, 2986, 0, 93619, 0, 0, 0, 0, 67186), +('', 37049, 2987, 0, 93619, 0, 0, 0, 0, 67186), +('', 37048, 2988, 0, 93619, 0, 0, 0, 0, 67186), +('', 36911, 4185, 0, 82571, 0, 0, 0, 0, 67186), +('', 35166, 2988, 0, 82571, 0, 0, 0, 0, 67186), +('', 35165, 2987, 0, 82571, 0, 0, 0, 0, 67186), +('', 35164, 2986, 0, 82571, 0, 0, 0, 0, 67186); + +DELETE FROM `trait_definition` WHERE `VerifiedBuild`>0 AND `ID` IN (137688, 137685, 137681, 133669); +INSERT INTO `trait_definition` (`OverrideName`, `OverrideSubtext`, `OverrideDescription`, `ID`, `SpellID`, `OverrideIcon`, `OverridesSpellID`, `VisibleSpellID`, `VerifiedBuild`) VALUES +('Multicrafting Meticulously', '', 'Improve at your Enchanting matrices, increasing your probability of producing additional items when crafting illusions or consumables. Additionally, you will gain +$ev1 $en1 per point in this Specialization.', 137688, 0, 915852, 0, 0, 67186), +('', '', 'Multicraft grants up to +$ev1% additional goods when crafting consumables.', 137685, 0, 0, 0, 0, 67186), +('', '', 'Multicraft grants up to +$ev1% additional goods when crafting consumables.', 137681, 0, 0, 0, 0, 67186), +('', '', 'Gain +$ev1 $en1 when crafting alloys.|n|nUnlock the ability to use finishing reagents when crafting alloys.', 133669, 0, 0, 0, 0, 67186); + +DELETE FROM `trait_definition_effect_points` WHERE `VerifiedBuild`>0 AND `ID`=24401; +INSERT INTO `trait_definition_effect_points` (`ID`, `TraitDefinitionID`, `EffectIndex`, `OperationType`, `CurveID`, `VerifiedBuild`) VALUES +(24401, 141784, 0, 0, 94972, 67186); + +DELETE FROM `trait_tree` WHERE `VerifiedBuild`>0 AND `ID`=720; +INSERT INTO `trait_tree` (`TitleText`, `ID`, `TraitSystemID`, `BaseNodeGroup`, `FirstTraitNodeID`, `PlayerConditionID`, `Flags`, `MinZoom`, `MaxZoom`, `UiTextureKitID`, `VerifiedBuild`) VALUES +('', 720, 0, 0, 0, 0, 0, 0.949999988079071044, 0.949999988079071044, 0, 67186); + +DELETE FROM `trait_tree_loadout` WHERE `VerifiedBuild`>0 AND `ID`=960; +INSERT INTO `trait_tree_loadout` (`ID`, `TraitTreeID`, `ChrSpecializationID`, `VerifiedBuild`) VALUES +(960, 720, 267, 67186); + +DELETE FROM `trait_tree_loadout_entry` WHERE `VerifiedBuild`>0 AND `ID` IN (56832, 56831, 56830, 56829, 56828, 56827, 56826, 56825, 56824, 56823, 56822, 56821, 56820, 56819, 56818, 56817, 56816, 56815, 56814, 56813, 56812, 56811, 56810, 56809, 56808, 56807, 56806, 56805, 56804, 56803, 56802, 56801, 56800, 56799, 56798, 56797, 56796, 56795, 56794, 56793, 56792, 56791, 56790, 56789, 56788, 56787, 56786, 56785, 56784, 56783, 56782, 56781, 56780, 56779, 56778, 56777, 56776, 56775, 56774, 56773, 56772, 56771, 56770, 56769, 56768, 56767, 56766, 56765); +INSERT INTO `trait_tree_loadout_entry` (`ID`, `TraitTreeLoadoutID`, `SelectedTraitNodeID`, `SelectedTraitNodeEntryID`, `NumPoints`, `OrderIndex`, `VerifiedBuild`) VALUES +(56832, 960, 71952, 0, 1, 1, 67186), +(56831, 960, 71952, 0, 2, 2, 67186), +(56830, 960, 71950, 0, 1, 3, 67186), +(56829, 960, 71950, 0, 2, 4, 67186), +(56828, 960, 71930, 0, 1, 5, 67186), +(56827, 960, 71922, 0, 1, 6, 67186), +(56826, 960, 109844, 0, 1, 7, 67186), +(56825, 960, 71931, 0, 1, 8, 67186), +(56824, 960, 109847, 0, 1, 9, 67186), +(56823, 960, 110071, 0, 1, 10, 67186), +(56822, 960, 109840, 0, 1, 11, 67186), +(56821, 960, 109843, 0, 1, 12, 67186), +(56820, 960, 110072, 0, 1, 13, 67186), +(56819, 960, 71923, 0, 1, 14, 67186), +(56818, 960, 110076, 0, 1, 15, 67186), +(56817, 960, 110074, 0, 1, 16, 67186), +(56816, 960, 110073, 0, 1, 17, 67186), +(56815, 960, 71949, 0, 1, 18, 67186), +(56814, 960, 71917, 0, 1, 19, 67186), +(56813, 960, 100941, 0, 1, 20, 67186), +(56812, 960, 110075, 0, 1, 21, 67186), +(56811, 960, 71936, 0, 1, 22, 67186), +(56810, 960, 71937, 91445, 1, 23, 67186), +(56809, 960, 71955, 0, 1, 24, 67186), +(56808, 960, 109842, 0, 1, 25, 67186), +(56807, 960, 109842, 0, 2, 26, 67186), +(56806, 960, 71924, 0, 1, 27, 67186), +(56805, 960, 71924, 0, 2, 28, 67186), +(56804, 960, 71926, 0, 1, 29, 67186), +(56803, 960, 109848, 136108, 1, 30, 67186), +(56802, 960, 71947, 91457, 1, 31, 67186), +(56801, 960, 71941, 0, 1, 32, 67186), +(56800, 960, 71956, 91467, 1, 33, 67186), +(56799, 960, 71918, 0, 1, 34, 67186), +(56798, 960, 110282, 0, 1, 35, 67186), +(56797, 960, 72069, 128601, 1, 36, 67186), +(56796, 960, 72068, 0, 1, 37, 67186), +(56795, 960, 72067, 0, 1, 38, 67186), +(56794, 960, 72059, 0, 1, 39, 67186), +(56793, 960, 71979, 91494, 1, 40, 67186), +(56792, 960, 72065, 0, 1, 41, 67186), +(56791, 960, 71973, 0, 1, 42, 67186), +(56790, 960, 108680, 0, 1, 43, 67186), +(56789, 960, 71969, 0, 1, 44, 67186), +(56788, 960, 71969, 0, 2, 45, 67186), +(56787, 960, 71983, 0, 1, 46, 67186), +(56786, 960, 71983, 0, 2, 47, 67186), +(56785, 960, 71985, 0, 1, 48, 67186), +(56784, 960, 71960, 91473, 1, 49, 67186), +(56783, 960, 71972, 0, 1, 50, 67186), +(56782, 960, 72062, 0, 1, 51, 67186), +(56781, 960, 71971, 91484, 1, 52, 67186), +(56780, 960, 71980, 91496, 1, 53, 67186), +(56779, 960, 72061, 0, 1, 54, 67186), +(56778, 960, 72066, 0, 1, 55, 67186), +(56777, 960, 72066, 0, 2, 56, 67186), +(56776, 960, 110281, 0, 1, 57, 67186), +(56775, 960, 110281, 0, 2, 58, 67186), +(56774, 960, 108681, 128600, 1, 59, 67186), +(56773, 960, 110280, 0, 1, 60, 67186), +(56772, 960, 71968, 0, 1, 61, 67186), +(56771, 960, 101992, 0, 1, 62, 67186), +(56770, 960, 71964, 0, 1, 63, 67186), +(56769, 960, 71965, 0, 1, 64, 67186), +(56768, 960, 110406, 136986, 1, 65, 67186), +(56767, 960, 110406, 136985, 1, 66, 67186), +(56766, 960, 110406, 136985, 2, 67, 67186), +(56765, 960, 110406, 136984, 1, 68, 67186); + +DELETE FROM `transmog_set` WHERE `VerifiedBuild`>0 AND `ID` IN (4271, 5646); +INSERT INTO `transmog_set` (`Name`, `ID`, `ClassMask`, `TrackingQuestID`, `Flags`, `TransmogSetGroupID`, `ItemNameDescriptionID`, `ParentTransmogSetID`, `Unknown810`, `ExpansionID`, `PatchID`, `UiOrder`, `PlayerConditionID`, `VerifiedBuild`) VALUES +('Forest Dweller\'s Garden Attire', 4271, 0, 86871, 258, 304, 13968, 0, 1, 10, 110100, 10, 0, 67186), +('Depthdiver Vestments', 5646, 0, 94942, 1, 344, 14015, 0, 1, 11, 120000, 10, 0, 67186); + +DELETE FROM `unit_condition` WHERE `VerifiedBuild`>0 AND `ID` IN (9594, 9590, 9571, 9209, 9569, 9281, 9551, 9550); +INSERT INTO `unit_condition` (`ID`, `Flags`, `Variable1`, `Variable2`, `Variable3`, `Variable4`, `Variable5`, `Variable6`, `Variable7`, `Variable8`, `Op1`, `Op2`, `Op3`, `Op4`, `Op5`, `Op6`, `Op7`, `Op8`, `Value1`, `Value2`, `Value3`, `Value4`, `Value5`, `Value6`, `Value7`, `Value8`, `VerifiedBuild`) VALUES +(9594, 0, 74, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 251358, 0, 0, 0, 0, 0, 0, 0, 67186), +(9590, 0, 59, 31, 63, 0, 0, 0, 0, 0, 5, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 67186), +(9571, 0, 102, 76, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 566, 58984, 0, 0, 0, 0, 0, 0, 67186), +(9209, 1, 75, 77, 75, 75, 75, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 113710, 1, 107603, 107604, 107605, 0, 0, 0, 67186), +(9569, 0, 76, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1261460, 0, 0, 0, 0, 0, 0, 0, 67186), +(9281, 0, 86, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 6367, 0, 0, 0, 0, 0, 0, 0, 67186), +(9551, 0, 76, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1295319, 0, 0, 0, 0, 0, 0, 0, 67186), +(9550, 0, 76, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1254687, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `vehicle` WHERE `VerifiedBuild`>0 AND `ID` IN (9351, 8975); +INSERT INTO `vehicle` (`ID`, `Flags`, `FlagsB`, `TurnSpeed`, `PitchSpeed`, `PitchMin`, `PitchMax`, `MouseLookOffsetPitch`, `CameraFadeDistScalarMin`, `CameraFadeDistScalarMax`, `CameraPitchOffset`, `FacingLimitRight`, `FacingLimitLeft`, `CameraYawOffset`, `VehicleUIIndicatorID`, `MissileTargetingID`, `VehiclePOITypeID`, `SeatID1`, `SeatID2`, `SeatID3`, `SeatID4`, `SeatID5`, `SeatID6`, `SeatID7`, `SeatID8`, `PowerDisplayID1`, `PowerDisplayID2`, `PowerDisplayID3`, `VerifiedBuild`) VALUES +(9351, 1073872896, 0, 3.141592741012573242, 3.141592741012573242, 0, 0, 0.78539818525314331, 1, 1.5, 0, 0, 0, 0, 0, 0, 0, 26113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(8975, 1073745959, 0, 3.141592741012573242, 3.141592741012573242, 0, 0, 0.78539818525314331, 1, 1.5, 0, 0, 0, 0, 0, 0, 0, 25293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `vehicle_seat` WHERE `VerifiedBuild`>0 AND `ID` IN (26113, 25552, 25293); +INSERT INTO `vehicle_seat` (`ID`, `AttachmentOffsetX`, `AttachmentOffsetY`, `AttachmentOffsetZ`, `CameraOffsetX`, `CameraOffsetY`, `CameraOffsetZ`, `Flags`, `FlagsB`, `FlagsC`, `AttachmentID`, `EnterPreDelay`, `EnterSpeed`, `EnterGravity`, `EnterMinDuration`, `EnterMaxDuration`, `EnterMinArcHeight`, `EnterMaxArcHeight`, `EnterAnimStart`, `EnterAnimLoop`, `RideAnimStart`, `RideAnimLoop`, `RideUpperAnimStart`, `RideUpperAnimLoop`, `ExitPreDelay`, `ExitSpeed`, `ExitGravity`, `ExitMinDuration`, `ExitMaxDuration`, `ExitMinArcHeight`, `ExitMaxArcHeight`, `ExitAnimStart`, `ExitAnimLoop`, `ExitAnimEnd`, `VehicleEnterAnim`, `VehicleEnterAnimBone`, `VehicleExitAnim`, `VehicleExitAnimBone`, `VehicleRideAnimLoop`, `VehicleRideAnimLoopBone`, `PassengerAttachmentID`, `PassengerYaw`, `PassengerPitch`, `PassengerRoll`, `VehicleEnterAnimDelay`, `VehicleExitAnimDelay`, `VehicleAbilityDisplay`, `EnterUISoundID`, `ExitUISoundID`, `UiSkinFileDataID`, `CameraEnteringDelay`, `CameraEnteringDuration`, `CameraExitingDelay`, `CameraExitingDuration`, `CameraPosChaseRate`, `CameraFacingChaseRate`, `CameraEnteringZoom`, `CameraSeatZoomMin`, `CameraSeatZoomMax`, `EnterAnimKitID`, `RideAnimKitID`, `ExitAnimKitID`, `VehicleEnterAnimKitID`, `VehicleRideAnimKitID`, `VehicleExitAnimKitID`, `CameraModeID`, `VerifiedBuild`) VALUES +(26113, 0, 0, 1.5, 0, 0, 0, 7, 33554432, 81920, 13, 0, 7, 19.29000091552734375, 0, 0, 1, 4, 37, 38, 42, 42, 42, 42, 0, 7, 19.29000091552734375, 0, 0, 1, 4, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(25552, 0, 0, 0, 0, 0, 0, -536868858, -2113863676, 1065497, 2, 0, 7, 19.29000091552734375, 0, 0, 1, 4, 37, 38, -1, 102, 128, 123, 0, 7, 19.29000091552734375, 0, 0, 1, 4, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 13836, 13834, 534041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67186), +(25293, 0, 0, 0, 0, 0, 0, 1073741830, -2146434872, 520, 13, 0, 7, 19.29000091552734375, 0, 0, 1, 4, 37, 38, -1, 474, -1, 474, 0, 7, 19.29000091552734375, 0, 0, 1, 4, 37, 38, 39, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1345, 67186); + +UPDATE `vehicle_seat` SET `Flags`=-2147425233, `FlagsC`=2097160, `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=13671; +DELETE FROM `vignette` WHERE `VerifiedBuild`>0 AND `ID` IN (7615, 7698, 7693); +INSERT INTO `vignette` (`ID`, `Name`, `PlayerConditionID`, `VisibleTrackingQuestID`, `QuestFeedbackEffectID`, `Flags`, `MaxHeight`, `MinHeight`, `VignetteType`, `RewardQuestID`, `UiWidgetSetID`, `UiMapPinInfoID`, `ObjectiveType`, `VerifiedBuild`) VALUES +(7615, 'Apprentice Kurgsbane', 0, 0, 1384, 263170, 0, 0, 0, 0, 0, 0, 0, 67186), +(7698, 'Decor Duel Vendor', 0, 0, 1391, 1026, 0, 0, 0, 0, 0, 0, 0, 67186), +(7693, 'Chest', 150904, 0, 88, 0, 45, -45, 0, 0, 0, 0, 0, 67186); + +DELETE FROM `world_effect` WHERE `VerifiedBuild`>0 AND `ID` IN (33727, 32071, 33306, 33417, 33506, 33505, 33504, 33503); +INSERT INTO `world_effect` (`ID`, `QuestFeedbackEffectID`, `WhenToDisplay`, `TargetType`, `TargetAsset`, `PlayerConditionID`, `CombatConditionID`, `VerifiedBuild`) VALUES +(33727, 104, 1, 1, 244731, 0, 0, 67186), +(32071, 1331, 1, 0, 0, 0, 7367, 67186), +(33306, 206, 1, 1, 260571, 0, 0, 67186), +(33417, 152, 1, 1, 259036, 0, 0, 67186), +(33506, 601, 1, 1, 252688, 0, 0, 67186), +(33505, 601, 1, 1, 239519, 0, 0, 67186), +(33504, 601, 1, 1, 252689, 0, 0, 67186), +(33503, 601, 1, 1, 239521, 0, 0, 67186); + +DELETE FROM `world_state_expression` WHERE `VerifiedBuild`>0 AND `ID` IN (50367, 49339, 50526, 48956, 48950, 47336, 47211, 52361, 52330, 52328, 51369, 52304, 52297, 50744, 50743, 50742, 50741, 52287); +INSERT INTO `world_state_expression` (`ID`, `Expression`, `VerifiedBuild`) VALUES +(50367, '010258730000000101020000000001028776000000010101000000000102B27900000001010100000000', 67186), +(49339, '01025873000000010101000000000102E973000000010101000000000102B27900000001010100000000', 67186), +(50526, '0102956E0000000101010000000002031600000001BDC600000000010101000000000202E37600000001010100000000', 67186), +(48956, '01028B72000000010100000000000102E3760000000101000000000000', 67186), +(48950, '01028B72000000010101000000000202F36F000000010101000000000202E37600000001010100000000', 67186), +(47336, '0102F26F000000010101000000000202F36F0000000101010000000000', 67186), +(47211, '01031600000001ADBF00000000010101000000000103160000000136BF000000000101010000000000', 67186), +(52361, '0102227B0000000101010000000000', 67186), +(52330, '010258730000000201020000000002020475000000020101000000000202D87500000002010100000000', 67186), +(52328, '010258730000000201010000000002025973000000020105000000000202F87400000002010100000000', 67186), +(51369, '010258730000000201010000000002025973000000020102000000000202A37700000002010100000000', 67186), +(52304, '0102EA7A0000000101000000000000', 67186), +(52297, '01021C730000000402247600000000', 67186), +(50744, '0102247600000103160000000149CC0000000101010000000000', 67186), +(50743, '0102247600000103160000000149CC0000000101030000000000', 67186), +(50742, '0102247600000103160000000149CC0000000101040000000000', 67186), +(50741, '0102247600000103160000000149CC0000000101020000000000', 67186), +(52287, '0102A9730000000201030000000000', 67186); + +UPDATE `world_state_expression` SET `Expression`='01032600000001CA060000000001010100000000010316000000013CC6000000000101010000000000', `VerifiedBuild`=67186 WHERE `VerifiedBuild`>0 AND `ID`=50318; + +DELETE FROM `hotfix_data` WHERE (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=210174) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=210174) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=210174) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=210174) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=210174) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=210174) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=206969) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=206969) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=206969) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=206969) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=206969) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=206969) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=206968) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=206968) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=206968) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=206968) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=206968) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=206968) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=206967) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=206967) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=206967) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=206967) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=206967) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=206967) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=204977) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=204977) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=204977) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=204977) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=204977) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=204977) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=204568) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=204568) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=204568) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=204568) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=204568) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=204568) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=204567) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=204567) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=204567) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=204567) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=204567) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=204567) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=204565) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=204565) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=204565) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=204565) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=204565) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=204565) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201321) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201321) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201321) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201321) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201321) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201321) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201320) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201320) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201320) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201320) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201320) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201320) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201319) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201319) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201319) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201319) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201319) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201319) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201318) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201318) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201318) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201318) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201318) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201318) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201317) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201317) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201317) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201317) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201317) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201317) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201316) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201316) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201316) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201316) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201316) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201316) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201315) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201315) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201315) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201315) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201315) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201315) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201314) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201314) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201314) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201314) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201314) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201314) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201313) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201313) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201313) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201313) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201313) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201313) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201312) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201312) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201312) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201312) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201312) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201312) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201311) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201311) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201311) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201311) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201311) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201311) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=201310) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=201310) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=201310) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=201310) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=201310) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=201310) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=200616) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=200616) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=200616) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=200616) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=200616) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=200616) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=200615) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=200615) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=200615) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=200615) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=200615) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=200615) OR (`Id`=108348 AND `TableHash`=1344507586 AND `RecordId`=200614) OR (`Id`=108348 AND `TableHash`=428746933 AND `RecordId`=200614) OR (`Id`=108348 AND `TableHash`=2442913102 AND `RecordId`=200614) OR (`Id`=108348 AND `TableHash`=3465080266 AND `RecordId`=200614) OR (`Id`=108348 AND `TableHash`=3037505077 AND `RecordId`=200614) OR (`Id`=108348 AND `TableHash`=1417785224 AND `RecordId`=200614) OR (`Id`=108331 AND `TableHash`=3571931810 AND `RecordId`=43230) OR (`Id`=108331 AND `TableHash`=1548466975 AND `RecordId`=43925) OR (`Id`=108329 AND `TableHash`=1163127287 AND `RecordId`=33901) OR (`Id`=108328 AND `TableHash`=3322146344 AND `RecordId`=382856) OR (`Id`=108322 AND `TableHash`=1163127287 AND `RecordId`=117890) OR (`Id`=108322 AND `TableHash`=3386943305 AND `RecordId`=93844) OR (`Id`=108322 AND `TableHash`=3386943305 AND `RecordId`=76580) OR (`Id`=108322 AND `TableHash`=3386943305 AND `RecordId`=76579) OR (`Id`=108322 AND `TableHash`=3386943305 AND `RecordId`=72672) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=836412) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=836410) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=836408) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=836405) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=825885) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=825884) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=810686) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=810685) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=810684) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=810682) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=810681) OR (`Id`=108321 AND `TableHash`=3322146344 AND `RecordId`=810346) OR (`Id`=108320 AND `TableHash`=1163127287 AND `RecordId`=128843) OR (`Id`=108320 AND `TableHash`=1163127287 AND `RecordId`=119849) OR (`Id`=108319 AND `TableHash`=3322146344 AND `RecordId`=841037) OR (`Id`=108319 AND `TableHash`=3322146344 AND `RecordId`=834394) OR (`Id`=108318 AND `TableHash`=1163127287 AND `RecordId`=123041) OR (`Id`=108318 AND `TableHash`=1163127287 AND `RecordId`=119664) OR (`Id`=108318 AND `TableHash`=1163127287 AND `RecordId`=119657) OR (`Id`=108318 AND `TableHash`=1163127287 AND `RecordId`=119653) OR (`Id`=108317 AND `TableHash`=813076512 AND `RecordId`=206624) OR (`Id`=108317 AND `TableHash`=4030871717 AND `RecordId`=1322330) OR (`Id`=108314 AND `TableHash`=1163127287 AND `RecordId`=125570) OR (`Id`=108314 AND `TableHash`=1163127287 AND `RecordId`=125563) OR (`Id`=108314 AND `TableHash`=4096770149 AND `RecordId`=243741) OR (`Id`=108313 AND `TableHash`=1163127287 AND `RecordId`=118205) OR (`Id`=108313 AND `TableHash`=3322146344 AND `RecordId`=829714) OR (`Id`=108310 AND `TableHash`=3322146344 AND `RecordId`=704996) OR (`Id`=108308 AND `TableHash`=1274215428 AND `RecordId`=161249) OR (`Id`=108308 AND `TableHash`=1274215428 AND `RecordId`=161182) OR (`Id`=108308 AND `TableHash`=1789921167 AND `RecordId`=17247) OR (`Id`=108308 AND `TableHash`=1789921167 AND `RecordId`=16918) OR (`Id`=108308 AND `TableHash`=1789921167 AND `RecordId`=16917) OR (`Id`=108307 AND `TableHash`=3322146344 AND `RecordId`=816216) OR (`Id`=108296 AND `TableHash`=312611497 AND `RecordId`=27659) OR (`Id`=108296 AND `TableHash`=312611497 AND `RecordId`=21853) OR (`Id`=108296 AND `TableHash`=312611497 AND `RecordId`=21852) OR (`Id`=108295 AND `TableHash`=666345498 AND `RecordId`=521390) OR (`Id`=108295 AND `TableHash`=4033975491 AND `RecordId`=623425) OR (`Id`=108295 AND `TableHash`=4033975491 AND `RecordId`=623424) OR (`Id`=108295 AND `TableHash`=1181150530 AND `RecordId`=759052) OR (`Id`=108295 AND `TableHash`=1181150530 AND `RecordId`=759048) OR (`Id`=108295 AND `TableHash`=4102286043 AND `RecordId`=268392) OR (`Id`=108295 AND `TableHash`=4102286043 AND `RecordId`=268391) OR (`Id`=108295 AND `TableHash`=3425193231 AND `RecordId`=549526) OR (`Id`=108295 AND `TableHash`=3425193231 AND `RecordId`=549525) OR (`Id`=108295 AND `TableHash`=3425193231 AND `RecordId`=549524) OR (`Id`=108295 AND `TableHash`=4146370265 AND `RecordId`=184042) OR (`Id`=108295 AND `TableHash`=3764692828 AND `RecordId`=352796) OR (`Id`=108295 AND `TableHash`=3322146344 AND `RecordId`=845899) OR (`Id`=108295 AND `TableHash`=1720692227 AND `RecordId`=243658) OR (`Id`=108295 AND `TableHash`=4030871717 AND `RecordId`=1322283) OR (`Id`=108295 AND `TableHash`=4030871717 AND `RecordId`=1322282) OR (`Id`=108295 AND `TableHash`=1187407512 AND `RecordId`=1298568) OR (`Id`=108295 AND `TableHash`=3776013982 AND `RecordId`=1298568) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=331841) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=331840) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=331821) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=331820) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=331817) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=331816) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=276832) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=276831) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=276830) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=276829) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=225747) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=224306) OR (`Id`=108295 AND `TableHash`=3386943305 AND `RecordId`=220539) OR (`Id`=108295 AND `TableHash`=3571931810 AND `RecordId`=43222) OR (`Id`=108295 AND `TableHash`=1548466975 AND `RecordId`=43917) OR (`Id`=108295 AND `TableHash`=1548466975 AND `RecordId`=30618) OR (`Id`=108293 AND `TableHash`=1163127287 AND `RecordId`=115695) OR (`Id`=108293 AND `TableHash`=1163127287 AND `RecordId`=40240) OR (`Id`=108293 AND `TableHash`=1163127287 AND `RecordId`=39715) OR (`Id`=108293 AND `TableHash`=1163127287 AND `RecordId`=39427) OR (`Id`=108293 AND `TableHash`=1163127287 AND `RecordId`=39423) OR (`Id`=108292 AND `TableHash`=312611497 AND `RecordId`=27470) OR (`Id`=108292 AND `TableHash`=312611497 AND `RecordId`=27469) OR (`Id`=108292 AND `TableHash`=1163127287 AND `RecordId`=89345) OR (`Id`=108287 AND `TableHash`=312611497 AND `RecordId`=28277) OR (`Id`=108287 AND `TableHash`=312611497 AND `RecordId`=28276) OR (`Id`=108287 AND `TableHash`=1163127287 AND `RecordId`=117748) OR (`Id`=108286 AND `TableHash`=3322146344 AND `RecordId`=845785) OR (`Id`=108286 AND `TableHash`=4030871717 AND `RecordId`=1322112) OR (`Id`=108285 AND `TableHash`=1163127287 AND `RecordId`=128660) OR (`Id`=108285 AND `TableHash`=4030871717 AND `RecordId`=1321581) OR (`Id`=108281 AND `TableHash`=3322146344 AND `RecordId`=179701) OR (`Id`=108281 AND `TableHash`=4030871717 AND `RecordId`=307986) OR (`Id`=108276 AND `TableHash`=2534422486 AND `RecordId`=3918) OR (`Id`=108276 AND `TableHash`=2534422486 AND `RecordId`=3917) OR (`Id`=108274 AND `TableHash`=1163127287 AND `RecordId`=70019) OR (`Id`=108272 AND `TableHash`=312611497 AND `RecordId`=25418) OR (`Id`=108272 AND `TableHash`=312611497 AND `RecordId`=25417) OR (`Id`=108272 AND `TableHash`=1163127287 AND `RecordId`=36118) OR (`Id`=108272 AND `TableHash`=1720692227 AND `RecordId`=243632) OR (`Id`=108272 AND `TableHash`=1187407512 AND `RecordId`=1253377) OR (`Id`=108272 AND `TableHash`=3776013982 AND `RecordId`=1253377) OR (`Id`=108271 AND `TableHash`=4030871717 AND `RecordId`=1275185) OR (`Id`=108271 AND `TableHash`=4030871717 AND `RecordId`=1263781) OR (`Id`=108271 AND `TableHash`=4030871717 AND `RecordId`=1263777) OR (`Id`=108269 AND `TableHash`=1187407512 AND `RecordId`=1270444) OR (`Id`=108269 AND `TableHash`=3776013982 AND `RecordId`=1270444) OR (`Id`=108268 AND `TableHash`=4102286043 AND `RecordId`=210491) OR (`Id`=108268 AND `TableHash`=4102286043 AND `RecordId`=197159) OR (`Id`=108268 AND `TableHash`=4102286043 AND `RecordId`=197158) OR (`Id`=108268 AND `TableHash`=4146370265 AND `RecordId`=141015) OR (`Id`=108267 AND `TableHash`=3571931810 AND `RecordId`=43201) OR (`Id`=108266 AND `TableHash`=1163127287 AND `RecordId`=127343) OR (`Id`=108266 AND `TableHash`=2124448848 AND `RecordId`=306428) OR (`Id`=108266 AND `TableHash`=2712461791 AND `RecordId`=306428) OR (`Id`=108266 AND `TableHash`=3689412649 AND `RecordId`=159884) OR (`Id`=108266 AND `TableHash`=1187407512 AND `RecordId`=441587) OR (`Id`=108266 AND `TableHash`=3776013982 AND `RecordId`=441587) OR (`Id`=108266 AND `TableHash`=1187407512 AND `RecordId`=441429) OR (`Id`=108266 AND `TableHash`=3776013982 AND `RecordId`=441429) OR (`Id`=108265 AND `TableHash`=3893700160 AND `RecordId`=445) OR (`Id`=108265 AND `TableHash`=3893700160 AND `RecordId`=443) OR (`Id`=108265 AND `TableHash`=3893700160 AND `RecordId`=442) OR (`Id`=108264 AND `TableHash`=1163127287 AND `RecordId`=35536) OR (`Id`=108263 AND `TableHash`=666345498 AND `RecordId`=521303) OR (`Id`=108263 AND `TableHash`=666345498 AND `RecordId`=462620) OR (`Id`=108263 AND `TableHash`=1163127287 AND `RecordId`=128784) OR (`Id`=108263 AND `TableHash`=1163127287 AND `RecordId`=128656) OR (`Id`=108263 AND `TableHash`=813076512 AND `RecordId`=206621) OR (`Id`=108263 AND `TableHash`=813076512 AND `RecordId`=206620) OR (`Id`=108263 AND `TableHash`=813076512 AND `RecordId`=206619) OR (`Id`=108263 AND `TableHash`=4030871717 AND `RecordId`=1211841) OR (`Id`=108263 AND `TableHash`=680438657 AND `RecordId`=83782) OR (`Id`=108263 AND `TableHash`=680438657 AND `RecordId`=79283) OR (`Id`=108263 AND `TableHash`=3689412649 AND `RecordId`=170516) OR (`Id`=108263 AND `TableHash`=1187407512 AND `RecordId`=1298446) OR (`Id`=108263 AND `TableHash`=3776013982 AND `RecordId`=1298446) OR (`Id`=108263 AND `TableHash`=1187407512 AND `RecordId`=1223323) OR (`Id`=108263 AND `TableHash`=3776013982 AND `RecordId`=1223323) OR (`Id`=108262 AND `TableHash`=3108775943 AND `RecordId`=13755) OR (`Id`=108262 AND `TableHash`=3108775943 AND `RecordId`=13532) OR (`Id`=108262 AND `TableHash`=3108775943 AND `RecordId`=10557) OR (`Id`=108262 AND `TableHash`=3108775943 AND `RecordId`=10556) OR (`Id`=108262 AND `TableHash`=3108775943 AND `RecordId`=10404) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449909) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449908) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449907) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449906) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449905) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449904) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449903) OR (`Id`=108262 AND `TableHash`=2120822102 AND `RecordId`=449902) OR (`Id`=108261 AND `TableHash`=3468628616 AND `RecordId`=1818) OR (`Id`=108261 AND `TableHash`=1710383997 AND `RecordId`=1818) OR (`Id`=108258 AND `TableHash`=312611497 AND `RecordId`=28599) OR (`Id`=108258 AND `TableHash`=312611497 AND `RecordId`=28598) OR (`Id`=108257 AND `TableHash`=1163127287 AND `RecordId`=18555) OR (`Id`=108255 AND `TableHash`=1163127287 AND `RecordId`=20974) OR (`Id`=108253 AND `TableHash`=3664936999 AND `RecordId`=33727) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=198696) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=183589) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108729) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108728) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108727) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108726) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108722) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108677) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=108676) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=107291) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=107245) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=107200) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=106540) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=106538) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=106493) OR (`Id`=108252 AND `TableHash`=1274215428 AND `RecordId`=91851) OR (`Id`=108252 AND `TableHash`=1789921167 AND `RecordId`=17246) OR (`Id`=108252 AND `TableHash`=1789921167 AND `RecordId`=16263) OR (`Id`=108251 AND `TableHash`=3249862272 AND `RecordId`=94988) OR (`Id`=108251 AND `TableHash`=3249862272 AND `RecordId`=81161) OR (`Id`=108251 AND `TableHash`=3249862272 AND `RecordId`=27342) OR (`Id`=108249 AND `TableHash`=35137211 AND `RecordId`=309199) OR (`Id`=108248 AND `TableHash`=3571931810 AND `RecordId`=43193) OR (`Id`=108247 AND `TableHash`=3322146344 AND `RecordId`=127640) OR (`Id`=108246 AND `TableHash`=3108775943 AND `RecordId`=158282) OR (`Id`=108246 AND `TableHash`=4040235363 AND `RecordId`=29202) OR (`Id`=108246 AND `TableHash`=2120822102 AND `RecordId`=449871) OR (`Id`=108246 AND `TableHash`=2120822102 AND `RecordId`=449870) OR (`Id`=108246 AND `TableHash`=157446066 AND `RecordId`=42555) OR (`Id`=108246 AND `TableHash`=157446066 AND `RecordId`=42554) OR (`Id`=108244 AND `TableHash`=1548466975 AND `RecordId`=42860) OR (`Id`=108240 AND `TableHash`=3108775943 AND `RecordId`=150305) OR (`Id`=108238 AND `TableHash`=1163127287 AND `RecordId`=128770) OR (`Id`=108235 AND `TableHash`=1163127287 AND `RecordId`=128769) OR (`Id`=108235 AND `TableHash`=4193483863 AND `RecordId`=99989) OR (`Id`=108235 AND `TableHash`=4193483863 AND `RecordId`=99988) OR (`Id`=108235 AND `TableHash`=4193483863 AND `RecordId`=99441) OR (`Id`=108235 AND `TableHash`=1187407512 AND `RecordId`=1293502) OR (`Id`=108235 AND `TableHash`=3776013982 AND `RecordId`=1293502) OR (`Id`=108235 AND `TableHash`=3108775943 AND `RecordId`=158273) OR (`Id`=108235 AND `TableHash`=1344507586 AND `RecordId`=245345) OR (`Id`=108235 AND `TableHash`=428746933 AND `RecordId`=245345) OR (`Id`=108235 AND `TableHash`=2442913102 AND `RecordId`=245345) OR (`Id`=108235 AND `TableHash`=3465080266 AND `RecordId`=245345) OR (`Id`=108235 AND `TableHash`=3037505077 AND `RecordId`=245345) OR (`Id`=108235 AND `TableHash`=1417785224 AND `RecordId`=245345) OR (`Id`=108234 AND `TableHash`=1876974313 AND `RecordId`=103622) OR (`Id`=108231 AND `TableHash`=2120822102 AND `RecordId`=431360) OR (`Id`=108231 AND `TableHash`=2120822102 AND `RecordId`=431359) OR (`Id`=108230 AND `TableHash`=3386943305 AND `RecordId`=192794) OR (`Id`=108230 AND `TableHash`=3386291891 AND `RecordId`=171383) OR (`Id`=108229 AND `TableHash`=1163127287 AND `RecordId`=128761) OR (`Id`=108229 AND `TableHash`=1163127287 AND `RecordId`=121095) OR (`Id`=108227 AND `TableHash`=3386943305 AND `RecordId`=334165) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449835) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449834) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449833) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449832) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449831) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449830) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449829) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449828) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449827) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449826) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449825) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449824) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449823) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449822) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449821) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449820) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449819) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449818) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449817) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449816) OR (`Id`=108225 AND `TableHash`=2120822102 AND `RecordId`=449815) OR (`Id`=108225 AND `TableHash`=1255424668 AND `RecordId`=229126) OR (`Id`=108225 AND `TableHash`=4012104832 AND `RecordId`=114956) OR (`Id`=108224 AND `TableHash`=3386943305 AND `RecordId`=328492) OR (`Id`=108224 AND `TableHash`=3386943305 AND `RecordId`=328449) OR (`Id`=108223 AND `TableHash`=356071576 AND `RecordId`=4271) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=123798) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=122046) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=114183) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=114135) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=114134) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=114037) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=114007) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=114001) OR (`Id`=108222 AND `TableHash`=1163127287 AND `RecordId`=99965) OR (`Id`=108222 AND `TableHash`=3322146344 AND `RecordId`=795659) OR (`Id`=108222 AND `TableHash`=4030871717 AND `RecordId`=1282546) OR (`Id`=108222 AND `TableHash`=4030871717 AND `RecordId`=1245144) OR (`Id`=108222 AND `TableHash`=4030871717 AND `RecordId`=1239845) OR (`Id`=108222 AND `TableHash`=4030871717 AND `RecordId`=756024) OR (`Id`=108222 AND `TableHash`=680438657 AND `RecordId`=80583) OR (`Id`=108222 AND `TableHash`=1187407512 AND `RecordId`=1270491) OR (`Id`=108222 AND `TableHash`=3776013982 AND `RecordId`=1270491) OR (`Id`=108222 AND `TableHash`=1187407512 AND `RecordId`=1241077) OR (`Id`=108222 AND `TableHash`=3776013982 AND `RecordId`=1241077) OR (`Id`=108222 AND `TableHash`=1187407512 AND `RecordId`=458128) OR (`Id`=108222 AND `TableHash`=3776013982 AND `RecordId`=458128) OR (`Id`=108221 AND `TableHash`=4030871717 AND `RecordId`=1315651) OR (`Id`=108221 AND `TableHash`=4030871717 AND `RecordId`=1315650) OR (`Id`=108221 AND `TableHash`=4030871717 AND `RecordId`=1311981) OR (`Id`=108221 AND `TableHash`=4030871717 AND `RecordId`=1289933) OR (`Id`=108221 AND `TableHash`=4030871717 AND `RecordId`=1266351) OR (`Id`=108221 AND `TableHash`=4030871717 AND `RecordId`=1264705) OR (`Id`=108220 AND `TableHash`=3322146344 AND `RecordId`=809704) OR (`Id`=108220 AND `TableHash`=3322146344 AND `RecordId`=809703) OR (`Id`=108220 AND `TableHash`=3899321669 AND `RecordId`=5919) OR (`Id`=108220 AND `TableHash`=3899321669 AND `RecordId`=5918) OR (`Id`=108220 AND `TableHash`=3899321669 AND `RecordId`=5917) OR (`Id`=108220 AND `TableHash`=3899321669 AND `RecordId`=5916) OR (`Id`=108219 AND `TableHash`=3386943305 AND `RecordId`=330038) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37074) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37073) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37072) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37065) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37064) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37063) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37050) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37049) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=37048) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=36911) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=35166) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=35165) OR (`Id`=108215 AND `TableHash`=2493836603 AND `RecordId`=35164) OR (`Id`=108213 AND `TableHash`=3322146344 AND `RecordId`=478568) OR (`Id`=108213 AND `TableHash`=1187407512 AND `RecordId`=363916) OR (`Id`=108213 AND `TableHash`=3776013982 AND `RecordId`=363916) OR (`Id`=108212 AND `TableHash`=312611497 AND `RecordId`=28058) OR (`Id`=108212 AND `TableHash`=312611497 AND `RecordId`=28057) OR (`Id`=108212 AND `TableHash`=1163127287 AND `RecordId`=120048) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782503) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782502) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782501) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782500) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782499) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782498) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782497) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782496) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782495) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782494) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782493) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782492) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782491) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782490) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=782489) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=781453) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=781452) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=781451) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=781450) OR (`Id`=108211 AND `TableHash`=3322146344 AND `RecordId`=781448) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218764) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218763) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218762) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218761) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218760) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218759) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218758) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218757) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218756) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218755) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218754) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218753) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218752) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218751) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218750) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218749) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218748) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218747) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218746) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218745) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218744) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218743) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218742) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218741) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218740) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218739) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218738) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218737) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218736) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1218735) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217076) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217075) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217074) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217073) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217072) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217002) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1217001) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1216999) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1216998) OR (`Id`=108211 AND `TableHash`=4030871717 AND `RecordId`=1216179) OR (`Id`=108211 AND `TableHash`=3108775943 AND `RecordId`=158259) OR (`Id`=108210 AND `TableHash`=4033975491 AND `RecordId`=589353) OR (`Id`=108209 AND `TableHash`=1163127287 AND `RecordId`=126258) OR (`Id`=108209 AND `TableHash`=1163127287 AND `RecordId`=126255) OR (`Id`=108208 AND `TableHash`=240389885 AND `RecordId`=9594) OR (`Id`=108208 AND `TableHash`=3571931810 AND `RecordId`=43195) OR (`Id`=108208 AND `TableHash`=1548466975 AND `RecordId`=43894) OR (`Id`=108207 AND `TableHash`=3322146344 AND `RecordId`=467787) OR (`Id`=108207 AND `TableHash`=3322146344 AND `RecordId`=99214) OR (`Id`=108207 AND `TableHash`=3322146344 AND `RecordId`=96496) OR (`Id`=108207 AND `TableHash`=3322146344 AND `RecordId`=10890) OR (`Id`=108207 AND `TableHash`=680438657 AND `RecordId`=16713) OR (`Id`=108207 AND `TableHash`=680438657 AND `RecordId`=16300) OR (`Id`=108207 AND `TableHash`=680438657 AND `RecordId`=1906) OR (`Id`=108207 AND `TableHash`=3899321669 AND `RecordId`=5915) OR (`Id`=108207 AND `TableHash`=3899321669 AND `RecordId`=5914) OR (`Id`=108207 AND `TableHash`=1187407512 AND `RecordId`=353319) OR (`Id`=108207 AND `TableHash`=3776013982 AND `RecordId`=353319) OR (`Id`=108207 AND `TableHash`=1187407512 AND `RecordId`=125174) OR (`Id`=108207 AND `TableHash`=3776013982 AND `RecordId`=125174) OR (`Id`=108207 AND `TableHash`=1187407512 AND `RecordId`=122470) OR (`Id`=108207 AND `TableHash`=3776013982 AND `RecordId`=122470) OR (`Id`=108207 AND `TableHash`=1187407512 AND `RecordId`=23920) OR (`Id`=108207 AND `TableHash`=3776013982 AND `RecordId`=23920) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=190484) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171483) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171482) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171418) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171417) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171416) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171415) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171414) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171413) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171412) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171348) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171284) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=171169) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=168967) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133730) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133729) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133728) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133727) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133679) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133631) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133583) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=133441) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=132900) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=132769) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=132721) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=132299) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=131072) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=130897) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=130803) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=130470) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=92736) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=92735) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=92734) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=84355) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=84354) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=84352) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=84351) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=63262) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=63185) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=63146) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=63107) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=33527) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=26230) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18823) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18822) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18820) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18818) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18813) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18812) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18809) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18808) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18807) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18805) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18804) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18803) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18802) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18801) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18800) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18798) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18797) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18796) OR (`Id`=108205 AND `TableHash`=1274215428 AND `RecordId`=18794) OR (`Id`=108204 AND `TableHash`=1274215428 AND `RecordId`=133780) OR (`Id`=108204 AND `TableHash`=1274215428 AND `RecordId`=133777) OR (`Id`=108203 AND `TableHash`=3764692828 AND `RecordId`=352568) OR (`Id`=108203 AND `TableHash`=813076512 AND `RecordId`=206617) OR (`Id`=108203 AND `TableHash`=3764045193 AND `RecordId`=7526) OR (`Id`=108203 AND `TableHash`=4030871717 AND `RecordId`=1322003) OR (`Id`=108203 AND `TableHash`=4030871717 AND `RecordId`=1281336) OR (`Id`=108203 AND `TableHash`=4030871717 AND `RecordId`=1230827) OR (`Id`=108203 AND `TableHash`=4030871717 AND `RecordId`=1214317) OR (`Id`=108203 AND `TableHash`=4193483863 AND `RecordId`=94510) OR (`Id`=108203 AND `TableHash`=4193483863 AND `RecordId`=94321) OR (`Id`=108203 AND `TableHash`=3689412649 AND `RecordId`=173135) OR (`Id`=108203 AND `TableHash`=3689412649 AND `RecordId`=172639) OR (`Id`=108203 AND `TableHash`=1187407512 AND `RecordId`=1237942) OR (`Id`=108203 AND `TableHash`=3776013982 AND `RecordId`=1237942) OR (`Id`=108203 AND `TableHash`=1187407512 AND `RecordId`=1235216) OR (`Id`=108203 AND `TableHash`=3776013982 AND `RecordId`=1235216) OR (`Id`=108203 AND `TableHash`=1187407512 AND `RecordId`=1225245) OR (`Id`=108203 AND `TableHash`=3776013982 AND `RecordId`=1225245) OR (`Id`=108203 AND `TableHash`=778162198 AND `RecordId`=397) OR (`Id`=108203 AND `TableHash`=3108775943 AND `RecordId`=158261) OR (`Id`=108203 AND `TableHash`=2120822102 AND `RecordId`=449799) OR (`Id`=108203 AND `TableHash`=2120822102 AND `RecordId`=449798) OR (`Id`=108203 AND `TableHash`=2120822102 AND `RecordId`=449797) OR (`Id`=108203 AND `TableHash`=2120822102 AND `RecordId`=449796) OR (`Id`=108203 AND `TableHash`=1073915313 AND `RecordId`=211569) OR (`Id`=108203 AND `TableHash`=1073915313 AND `RecordId`=207359) OR (`Id`=108203 AND `TableHash`=1344507586 AND `RecordId`=243343) OR (`Id`=108203 AND `TableHash`=428746933 AND `RecordId`=243343) OR (`Id`=108203 AND `TableHash`=2442913102 AND `RecordId`=243343) OR (`Id`=108203 AND `TableHash`=3465080266 AND `RecordId`=243343) OR (`Id`=108203 AND `TableHash`=3037505077 AND `RecordId`=243343) OR (`Id`=108203 AND `TableHash`=1417785224 AND `RecordId`=243343) OR (`Id`=108203 AND `TableHash`=1344507586 AND `RecordId`=243302) OR (`Id`=108203 AND `TableHash`=428746933 AND `RecordId`=243302) OR (`Id`=108203 AND `TableHash`=2442913102 AND `RecordId`=243302) OR (`Id`=108203 AND `TableHash`=3465080266 AND `RecordId`=243302) OR (`Id`=108203 AND `TableHash`=3037505077 AND `RecordId`=243302) OR (`Id`=108203 AND `TableHash`=1417785224 AND `RecordId`=243302) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3695) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3694) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3693) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3692) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3691) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3690) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3689) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3688) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3687) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3686) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3685) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3684) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3683) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3682) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3681) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3680) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3679) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3678) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3677) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3676) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3675) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3674) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3673) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3672) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3671) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3670) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3669) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3668) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3667) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3666) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3665) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3664) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3663) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3662) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3661) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3660) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3659) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3658) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3657) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3656) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3655) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3654) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3653) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3652) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3651) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3650) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3649) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3648) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3647) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3646) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3645) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3644) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3643) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3642) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3641) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3640) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3639) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3638) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3637) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3636) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3635) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3634) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3633) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3632) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3631) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3630) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3629) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3628) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3627) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3626) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3625) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3624) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3623) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3622) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3621) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3620) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3619) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3618) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3617) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3616) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3615) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3614) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3613) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3612) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3611) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3610) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3609) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3608) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3607) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3606) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3605) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3604) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3603) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3602) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3601) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3600) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3599) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3598) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3597) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3596) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3595) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3594) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3593) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3591) OR (`Id`=108203 AND `TableHash`=1440114855 AND `RecordId`=3590) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315862) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315861) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315850) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315849) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315848) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315847) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315771) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=315770) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=304852) OR (`Id`=108203 AND `TableHash`=1880017466 AND `RecordId`=304836) OR (`Id`=108203 AND `TableHash`=1272569722 AND `RecordId`=104598) OR (`Id`=108203 AND `TableHash`=1272569722 AND `RecordId`=104595) OR (`Id`=108203 AND `TableHash`=1272569722 AND `RecordId`=104569) OR (`Id`=108203 AND `TableHash`=1272569722 AND `RecordId`=100921) OR (`Id`=108203 AND `TableHash`=1272569722 AND `RecordId`=100917) OR (`Id`=108200 AND `TableHash`=1163127287 AND `RecordId`=128730) OR (`Id`=108200 AND `TableHash`=1163127287 AND `RecordId`=124151) OR (`Id`=108200 AND `TableHash`=1163127287 AND `RecordId`=124143) OR (`Id`=108200 AND `TableHash`=1163127287 AND `RecordId`=124142) OR (`Id`=108200 AND `TableHash`=1163127287 AND `RecordId`=124141) OR (`Id`=108198 AND `TableHash`=312611497 AND `RecordId`=21623) OR (`Id`=108198 AND `TableHash`=312611497 AND `RecordId`=14470) OR (`Id`=108198 AND `TableHash`=312611497 AND `RecordId`=14469) OR (`Id`=108198 AND `TableHash`=1163127287 AND `RecordId`=125313) OR (`Id`=108197 AND `TableHash`=4102286043 AND `RecordId`=264392) OR (`Id`=108196 AND `TableHash`=2120822102 AND `RecordId`=404078) OR (`Id`=108195 AND `TableHash`=3571931810 AND `RecordId`=43196) OR (`Id`=108195 AND `TableHash`=1225579890 AND `RecordId`=3980) OR (`Id`=108195 AND `TableHash`=1548466975 AND `RecordId`=43895) OR (`Id`=108193 AND `TableHash`=1163127287 AND `RecordId`=47071) OR (`Id`=108192 AND `TableHash`=312611497 AND `RecordId`=13477) OR (`Id`=108192 AND `TableHash`=312611497 AND `RecordId`=13476) OR (`Id`=108191 AND `TableHash`=3386943305 AND `RecordId`=342177) OR (`Id`=108189 AND `TableHash`=4030871717 AND `RecordId`=1317295) OR (`Id`=108189 AND `TableHash`=4030871717 AND `RecordId`=1305071) OR (`Id`=108189 AND `TableHash`=4030871717 AND `RecordId`=1264335) OR (`Id`=108189 AND `TableHash`=4030871717 AND `RecordId`=1263833) OR (`Id`=108189 AND `TableHash`=4030871717 AND `RecordId`=1236566) OR (`Id`=108188 AND `TableHash`=1163127287 AND `RecordId`=128792) OR (`Id`=108188 AND `TableHash`=1163127287 AND `RecordId`=128758) OR (`Id`=108188 AND `TableHash`=3322146344 AND `RecordId`=825842) OR (`Id`=108187 AND `TableHash`=3322146344 AND `RecordId`=770397) OR (`Id`=108186 AND `TableHash`=1163127287 AND `RecordId`=128720) OR (`Id`=108186 AND `TableHash`=3571931810 AND `RecordId`=43194) OR (`Id`=108186 AND `TableHash`=1548466975 AND `RecordId`=43893) OR (`Id`=108183 AND `TableHash`=261693969 AND `RecordId`=95549) OR (`Id`=108183 AND `TableHash`=986198281 AND `RecordId`=95549) OR (`Id`=108180 AND `TableHash`=1163127287 AND `RecordId`=128714) OR (`Id`=108180 AND `TableHash`=1548466975 AND `RecordId`=43891) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264434) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264429) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264428) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264427) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264426) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264425) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264424) OR (`Id`=108179 AND `TableHash`=2202435563 AND `RecordId`=1264423) OR (`Id`=108178 AND `TableHash`=1163127287 AND `RecordId`=128360) OR (`Id`=108178 AND `TableHash`=1163127287 AND `RecordId`=128359) OR (`Id`=108178 AND `TableHash`=1163127287 AND `RecordId`=128349) OR (`Id`=108178 AND `TableHash`=1163127287 AND `RecordId`=80692) OR (`Id`=108178 AND `TableHash`=3322146344 AND `RecordId`=821365) OR (`Id`=108178 AND `TableHash`=4030871717 AND `RecordId`=1282244) OR (`Id`=108178 AND `TableHash`=4096770149 AND `RecordId`=244464) OR (`Id`=108175 AND `TableHash`=3386943305 AND `RecordId`=93847) OR (`Id`=108175 AND `TableHash`=3386943305 AND `RecordId`=87653) OR (`Id`=108175 AND `TableHash`=3386943305 AND `RecordId`=76582) OR (`Id`=108175 AND `TableHash`=3386943305 AND `RecordId`=76581) OR (`Id`=108175 AND `TableHash`=3386943305 AND `RecordId`=72650) OR (`Id`=108172 AND `TableHash`=4021368146 AND `RecordId`=7615) OR (`Id`=108172 AND `TableHash`=336222293 AND `RecordId`=22633) OR (`Id`=108172 AND `TableHash`=978178762 AND `RecordId`=405) OR (`Id`=108172 AND `TableHash`=2523372402 AND `RecordId`=16092) OR (`Id`=108172 AND `TableHash`=2198813286 AND `RecordId`=3181) OR (`Id`=108172 AND `TableHash`=261693969 AND `RecordId`=96388) OR (`Id`=108172 AND `TableHash`=986198281 AND `RecordId`=96388) OR (`Id`=108172 AND `TableHash`=261693969 AND `RecordId`=93870) OR (`Id`=108172 AND `TableHash`=986198281 AND `RecordId`=93870) OR (`Id`=108172 AND `TableHash`=261693969 AND `RecordId`=93816) OR (`Id`=108172 AND `TableHash`=986198281 AND `RecordId`=93816) OR (`Id`=108172 AND `TableHash`=20077728 AND `RecordId`=472577) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=156069) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151169) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151168) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151167) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151166) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151165) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151161) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151160) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151159) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151158) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151157) OR (`Id`=108172 AND `TableHash`=3108775943 AND `RecordId`=151155) OR (`Id`=108172 AND `TableHash`=3319676509 AND `RecordId`=918) OR (`Id`=108172 AND `TableHash`=1344507586 AND `RecordId`=274267) OR (`Id`=108172 AND `TableHash`=428746933 AND `RecordId`=274267) OR (`Id`=108172 AND `TableHash`=2442913102 AND `RecordId`=274267) OR (`Id`=108172 AND `TableHash`=3465080266 AND `RecordId`=274267) OR (`Id`=108172 AND `TableHash`=3037505077 AND `RecordId`=274267) OR (`Id`=108172 AND `TableHash`=1417785224 AND `RecordId`=274267) OR (`Id`=108172 AND `TableHash`=1344507586 AND `RecordId`=255157) OR (`Id`=108172 AND `TableHash`=428746933 AND `RecordId`=255157) OR (`Id`=108172 AND `TableHash`=2442913102 AND `RecordId`=255157) OR (`Id`=108172 AND `TableHash`=3465080266 AND `RecordId`=255157) OR (`Id`=108172 AND `TableHash`=3037505077 AND `RecordId`=255157) OR (`Id`=108172 AND `TableHash`=1417785224 AND `RecordId`=255157) OR (`Id`=108172 AND `TableHash`=1344507586 AND `RecordId`=239563) OR (`Id`=108172 AND `TableHash`=428746933 AND `RecordId`=239563) OR (`Id`=108172 AND `TableHash`=2442913102 AND `RecordId`=239563) OR (`Id`=108172 AND `TableHash`=3465080266 AND `RecordId`=239563) OR (`Id`=108172 AND `TableHash`=3037505077 AND `RecordId`=239563) OR (`Id`=108172 AND `TableHash`=1417785224 AND `RecordId`=239563) OR (`Id`=108172 AND `TableHash`=1344507586 AND `RecordId`=223245) OR (`Id`=108172 AND `TableHash`=428746933 AND `RecordId`=223245) OR (`Id`=108172 AND `TableHash`=2442913102 AND `RecordId`=223245) OR (`Id`=108172 AND `TableHash`=3465080266 AND `RecordId`=223245) OR (`Id`=108172 AND `TableHash`=3037505077 AND `RecordId`=223245) OR (`Id`=108172 AND `TableHash`=1417785224 AND `RecordId`=223245) OR (`Id`=108172 AND `TableHash`=1400098795 AND `RecordId`=174) OR (`Id`=108172 AND `TableHash`=1400098795 AND `RecordId`=74) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=224842) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=224840) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=224838) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=223318) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=223121) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=223119) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222479) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222477) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222475) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222466) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222453) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222438) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222436) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222434) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222432) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222430) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222428) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222426) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222424) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222422) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222416) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=222290) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=220967) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=220603) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=220574) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=220573) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=212256) OR (`Id`=108172 AND `TableHash`=1255424668 AND `RecordId`=212255) OR (`Id`=108172 AND `TableHash`=3386291891 AND `RecordId`=264056) OR (`Id`=108172 AND `TableHash`=3386291891 AND `RecordId`=255959) OR (`Id`=108172 AND `TableHash`=3386291891 AND `RecordId`=255412) OR (`Id`=108172 AND `TableHash`=3386291891 AND `RecordId`=255384) OR (`Id`=108172 AND `TableHash`=3386291891 AND `RecordId`=240195) OR (`Id`=108172 AND `TableHash`=1821637041 AND `RecordId`=5065) OR (`Id`=108172 AND `TableHash`=3745449290 AND `RecordId`=8584) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62773) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62342) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62272) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62271) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62220) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62219) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62218) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62217) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62216) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62215) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62214) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62213) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62212) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62211) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62210) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62209) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62208) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=62207) OR (`Id`=108172 AND `TableHash`=3538824359 AND `RecordId`=61883) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1817) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1817) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1816) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1816) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1815) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1815) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1814) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1814) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1813) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1813) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1812) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1812) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1811) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1811) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1810) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1810) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1809) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1809) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1808) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1808) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1807) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1807) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1806) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1806) OR (`Id`=108169 AND `TableHash`=3468628616 AND `RecordId`=1805) OR (`Id`=108169 AND `TableHash`=1710383997 AND `RecordId`=1805) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=267009) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=267009) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=267009) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=267009) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=267009) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=267009) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=267007) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=267007) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=267007) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=267007) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=267007) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=267007) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264717) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264717) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264717) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264717) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264717) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264717) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264342) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264342) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264342) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264342) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264342) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264342) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264338) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264338) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264338) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264338) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264338) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264338) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264336) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264336) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264336) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264336) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264336) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264336) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264332) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264332) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264332) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264332) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264332) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264332) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264330) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264330) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264330) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264330) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264330) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264330) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264329) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264329) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264329) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264329) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264329) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264329) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=264258) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=264258) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=264258) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=264258) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=264258) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=264258) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=263238) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=263238) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=263238) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=263238) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=263238) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=263238) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=263233) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=263233) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=263233) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=263233) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=263233) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=263233) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=263230) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=263230) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=263230) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=263230) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=263230) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=263230) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=263042) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=263042) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=263042) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=263042) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=263042) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=263042) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=263036) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=263036) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=263036) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=263036) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=263036) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=263036) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=256683) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=256683) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=256683) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=256683) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=256683) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=256683) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=253451) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=253451) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=253451) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=253451) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=253451) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=253451) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=251967) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=251967) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=251967) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=251967) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=251967) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=251967) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=245938) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=245938) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=245938) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=245938) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=245938) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=245938) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=245560) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=245560) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=245560) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=245560) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=245560) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=245560) OR (`Id`=108166 AND `TableHash`=1344507586 AND `RecordId`=241044) OR (`Id`=108166 AND `TableHash`=428746933 AND `RecordId`=241044) OR (`Id`=108166 AND `TableHash`=2442913102 AND `RecordId`=241044) OR (`Id`=108166 AND `TableHash`=3465080266 AND `RecordId`=241044) OR (`Id`=108166 AND `TableHash`=3037505077 AND `RecordId`=241044) OR (`Id`=108166 AND `TableHash`=1417785224 AND `RecordId`=241044) OR (`Id`=108166 AND `TableHash`=326190544 AND `RecordId`=1749) OR (`Id`=108163 AND `TableHash`=3322146344 AND `RecordId`=816369) OR (`Id`=108163 AND `TableHash`=3322146344 AND `RecordId`=770147) OR (`Id`=108163 AND `TableHash`=4030871717 AND `RecordId`=1321667) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=23199) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=25249) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=26684) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=7518) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=3325) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=24055) OR (`Id`=108162 AND `TableHash`=908293937 AND `RecordId`=28712) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=42450) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=46738) OR (`Id`=108162 AND `TableHash`=3232102598 AND `RecordId`=87407) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=49404) OR (`Id`=108162 AND `TableHash`=3232102598 AND `RecordId`=154082) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=8259) OR (`Id`=108162 AND `TableHash`=3232102598 AND `RecordId`=54105) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=4720) OR (`Id`=108162 AND `TableHash`=3232102598 AND `RecordId`=156662) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=44546) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=44545) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=44544) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=44543) OR (`Id`=108162 AND `TableHash`=3232102598 AND `RecordId`=81580) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=54691) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=54690) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=54689) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=54688) OR (`Id`=108162 AND `TableHash`=3266400455 AND `RecordId`=54687) OR (`Id`=108159 AND `TableHash`=1720692227 AND `RecordId`=240246) OR (`Id`=108159 AND `TableHash`=1720692227 AND `RecordId`=234909) OR (`Id`=108157 AND `TableHash`=3664936999 AND `RecordId`=32071) OR (`Id`=108157 AND `TableHash`=240389885 AND `RecordId`=9590) OR (`Id`=108157 AND `TableHash`=1720692227 AND `RecordId`=243552) OR (`Id`=108157 AND `TableHash`=1720692227 AND `RecordId`=243551) OR (`Id`=108157 AND `TableHash`=1187407512 AND `RecordId`=1295986) OR (`Id`=108157 AND `TableHash`=3776013982 AND `RecordId`=1295986) OR (`Id`=108157 AND `TableHash`=1187407512 AND `RecordId`=1278156) OR (`Id`=108157 AND `TableHash`=3776013982 AND `RecordId`=1278156) OR (`Id`=108157 AND `TableHash`=368401261 AND `RecordId`=7367) OR (`Id`=108156 AND `TableHash`=1163127287 AND `RecordId`=117896) OR (`Id`=108152 AND `TableHash`=1720692227 AND `RecordId`=238873) OR (`Id`=108151 AND `TableHash`=312611497 AND `RecordId`=28865) OR (`Id`=108151 AND `TableHash`=312611497 AND `RecordId`=28864) OR (`Id`=108151 AND `TableHash`=312611497 AND `RecordId`=28863) OR (`Id`=108151 AND `TableHash`=312611497 AND `RecordId`=28862) OR (`Id`=108151 AND `TableHash`=1163127287 AND `RecordId`=110257) OR (`Id`=108151 AND `TableHash`=1163127287 AND `RecordId`=109010) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61887) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61886) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61882) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61881) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61880) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61879) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61878) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61793) OR (`Id`=108150 AND `TableHash`=3538824359 AND `RecordId`=61792) OR (`Id`=108149 AND `TableHash`=4030871717 AND `RecordId`=1321559) OR (`Id`=108148 AND `TableHash`=4030871717 AND `RecordId`=260927) OR (`Id`=108148 AND `TableHash`=4030871717 AND `RecordId`=191087) OR (`Id`=108148 AND `TableHash`=4030871717 AND `RecordId`=191086) OR (`Id`=108148 AND `TableHash`=4030871717 AND `RecordId`=191085) OR (`Id`=108146 AND `TableHash`=3388959798 AND `RecordId`=17707) OR (`Id`=108146 AND `TableHash`=1691321978 AND `RecordId`=1362) OR (`Id`=108145 AND `TableHash`=3359787322 AND `RecordId`=31154) OR (`Id`=108144 AND `TableHash`=3495286709 AND `RecordId`=24475) OR (`Id`=108144 AND `TableHash`=3495286709 AND `RecordId`=24474) OR (`Id`=108144 AND `TableHash`=3495286709 AND `RecordId`=24473) OR (`Id`=108144 AND `TableHash`=3495286709 AND `RecordId`=24472) OR (`Id`=108144 AND `TableHash`=3495286709 AND `RecordId`=24471) OR (`Id`=108143 AND `TableHash`=3603976684 AND `RecordId`=205385) OR (`Id`=108143 AND `TableHash`=3603976684 AND `RecordId`=205384) OR (`Id`=108142 AND `TableHash`=1163127287 AND `RecordId`=128647) OR (`Id`=108142 AND `TableHash`=4030871717 AND `RecordId`=1321497) OR (`Id`=108140 AND `TableHash`=3322146344 AND `RecordId`=845416) OR (`Id`=108140 AND `TableHash`=1187407512 AND `RecordId`=1298074) OR (`Id`=108140 AND `TableHash`=3776013982 AND `RecordId`=1298074) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=42450) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=42449) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=42448) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=42447) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=42446) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=42445) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=40690) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=40233) OR (`Id`=108140 AND `TableHash`=3247720076 AND `RecordId`=40232) OR (`Id`=108140 AND `TableHash`=3386291891 AND `RecordId`=251310) OR (`Id`=108139 AND `TableHash`=2120822102 AND `RecordId`=449655) OR (`Id`=108139 AND `TableHash`=2120822102 AND `RecordId`=449654) OR (`Id`=108139 AND `TableHash`=2120822102 AND `RecordId`=449653) OR (`Id`=108139 AND `TableHash`=2120822102 AND `RecordId`=449652) OR (`Id`=108139 AND `TableHash`=2120822102 AND `RecordId`=421491) OR (`Id`=108139 AND `TableHash`=2120822102 AND `RecordId`=421487) OR (`Id`=108138 AND `TableHash`=1163127287 AND `RecordId`=73663) OR (`Id`=108135 AND `TableHash`=3322146344 AND `RecordId`=845569) OR (`Id`=108135 AND `TableHash`=4030871717 AND `RecordId`=1321797) OR (`Id`=108135 AND `TableHash`=1187407512 AND `RecordId`=1298224) OR (`Id`=108135 AND `TableHash`=3776013982 AND `RecordId`=1298224) OR (`Id`=108135 AND `TableHash`=261693969 AND `RecordId`=96936) OR (`Id`=108135 AND `TableHash`=986198281 AND `RecordId`=96936) OR (`Id`=108135 AND `TableHash`=2202435563 AND `RecordId`=1303134) OR (`Id`=108135 AND `TableHash`=2202435563 AND `RecordId`=1303133) OR (`Id`=108135 AND `TableHash`=2921112328 AND `RecordId`=576994) OR (`Id`=108135 AND `TableHash`=2921112328 AND `RecordId`=576993) OR (`Id`=108135 AND `TableHash`=3108775943 AND `RecordId`=158235) OR (`Id`=108135 AND `TableHash`=3108775943 AND `RecordId`=158234) OR (`Id`=108135 AND `TableHash`=2120822102 AND `RecordId`=449743) OR (`Id`=108135 AND `TableHash`=2120822102 AND `RecordId`=449742) OR (`Id`=108135 AND `TableHash`=2120822102 AND `RecordId`=449741) OR (`Id`=108135 AND `TableHash`=2120822102 AND `RecordId`=449694) OR (`Id`=108135 AND `TableHash`=2120822102 AND `RecordId`=449693) OR (`Id`=108135 AND `TableHash`=2120822102 AND `RecordId`=449692) OR (`Id`=108135 AND `TableHash`=1255424668 AND `RecordId`=229140) OR (`Id`=108135 AND `TableHash`=1255424668 AND `RecordId`=229139) OR (`Id`=108135 AND `TableHash`=1255424668 AND `RecordId`=229050) OR (`Id`=108135 AND `TableHash`=1255424668 AND `RecordId`=229049) OR (`Id`=108135 AND `TableHash`=1255424668 AND `RecordId`=229048) OR (`Id`=108135 AND `TableHash`=1255424668 AND `RecordId`=229047) OR (`Id`=108135 AND `TableHash`=4012104832 AND `RecordId`=114964) OR (`Id`=108135 AND `TableHash`=4012104832 AND `RecordId`=114924) OR (`Id`=108135 AND `TableHash`=4012104832 AND `RecordId`=114923) OR (`Id`=108135 AND `TableHash`=4012104832 AND `RecordId`=109029) OR (`Id`=108135 AND `TableHash`=2014779773 AND `RecordId`=207) OR (`Id`=108135 AND `TableHash`=2014779773 AND `RecordId`=206) OR (`Id`=108135 AND `TableHash`=3538824359 AND `RecordId`=63263) OR (`Id`=108135 AND `TableHash`=3538824359 AND `RecordId`=63249) OR (`Id`=108135 AND `TableHash`=3538824359 AND `RecordId`=63097) OR (`Id`=108134 AND `TableHash`=3322146344 AND `RecordId`=843354) OR (`Id`=108134 AND `TableHash`=3322146344 AND `RecordId`=826786) OR (`Id`=108133 AND `TableHash`=3322146344 AND `RecordId`=433001) OR (`Id`=108133 AND `TableHash`=3322146344 AND `RecordId`=96543) OR (`Id`=108133 AND `TableHash`=4030871717 AND `RecordId`=170709) OR (`Id`=108133 AND `TableHash`=4030871717 AND `RecordId`=158092) OR (`Id`=108133 AND `TableHash`=4030871717 AND `RecordId`=154256) OR (`Id`=108131 AND `TableHash`=492039028 AND `RecordId`=50367) OR (`Id`=108131 AND `TableHash`=492039028 AND `RecordId`=49339) OR (`Id`=108130 AND `TableHash`=1163127287 AND `RecordId`=128632) OR (`Id`=108130 AND `TableHash`=1163127287 AND `RecordId`=127316) OR (`Id`=108130 AND `TableHash`=1163127287 AND `RecordId`=116786) OR (`Id`=108130 AND `TableHash`=3322146344 AND `RecordId`=649056) OR (`Id`=108130 AND `TableHash`=4030871717 AND `RecordId`=1051086) OR (`Id`=108130 AND `TableHash`=4030871717 AND `RecordId`=1026943) OR (`Id`=108130 AND `TableHash`=1187407512 AND `RecordId`=390264) OR (`Id`=108130 AND `TableHash`=3776013982 AND `RecordId`=390264) OR (`Id`=108130 AND `TableHash`=1187407512 AND `RecordId`=390260) OR (`Id`=108130 AND `TableHash`=3776013982 AND `RecordId`=390260) OR (`Id`=108129 AND `TableHash`=312611497 AND `RecordId`=28676) OR (`Id`=108129 AND `TableHash`=312611497 AND `RecordId`=28675) OR (`Id`=108124 AND `TableHash`=261693969 AND `RecordId`=95304) OR (`Id`=108124 AND `TableHash`=986198281 AND `RecordId`=95304) OR (`Id`=108124 AND `TableHash`=261693969 AND `RecordId`=95290) OR (`Id`=108124 AND `TableHash`=986198281 AND `RecordId`=95290) OR (`Id`=108124 AND `TableHash`=261693969 AND `RecordId`=95279) OR (`Id`=108124 AND `TableHash`=986198281 AND `RecordId`=95279) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=28555) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=28554) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=27881) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=27447) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=27408) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=27393) OR (`Id`=108123 AND `TableHash`=312611497 AND `RecordId`=27392) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=123902) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=123070) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=123069) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=123056) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=122929) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=121296) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=121295) OR (`Id`=108123 AND `TableHash`=1163127287 AND `RecordId`=117716) OR (`Id`=108114 AND `TableHash`=1880017466 AND `RecordId`=313083) OR (`Id`=108114 AND `TableHash`=1880017466 AND `RecordId`=313082) OR (`Id`=108114 AND `TableHash`=1880017466 AND `RecordId`=313081) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449601) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449600) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449599) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449598) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449597) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449596) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449595) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449594) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449593) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449592) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449591) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449590) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449589) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449588) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449587) OR (`Id`=108113 AND `TableHash`=2120822102 AND `RecordId`=449586) OR (`Id`=108113 AND `TableHash`=3653642729 AND `RecordId`=377) OR (`Id`=108113 AND `TableHash`=1673391669 AND `RecordId`=145) OR (`Id`=108113 AND `TableHash`=2791084701 AND `RecordId`=142) OR (`Id`=108113 AND `TableHash`=2793276977 AND `RecordId`=29515) OR (`Id`=108108 AND `TableHash`=1880017466 AND `RecordId`=313078) OR (`Id`=108108 AND `TableHash`=1880017466 AND `RecordId`=313077) OR (`Id`=108108 AND `TableHash`=4012104832 AND `RecordId`=113757) OR (`Id`=108108 AND `TableHash`=4012104832 AND `RecordId`=113756) OR (`Id`=108108 AND `TableHash`=4012104832 AND `RecordId`=113755) OR (`Id`=108106 AND `TableHash`=3386943305 AND `RecordId`=229626) OR (`Id`=108103 AND `TableHash`=4030871717 AND `RecordId`=1026957) OR (`Id`=108103 AND `TableHash`=4030871717 AND `RecordId`=1026956) OR (`Id`=108102 AND `TableHash`=1255424668 AND `RecordId`=225427) OR (`Id`=108102 AND `TableHash`=1255424668 AND `RecordId`=225426) OR (`Id`=108102 AND `TableHash`=1255424668 AND `RecordId`=223423) OR (`Id`=108102 AND `TableHash`=4012104832 AND `RecordId`=113015) OR (`Id`=108101 AND `TableHash`=3386943305 AND `RecordId`=340484) OR (`Id`=108101 AND `TableHash`=3386943305 AND `RecordId`=340483) OR (`Id`=108101 AND `TableHash`=3386943305 AND `RecordId`=340479) OR (`Id`=108101 AND `TableHash`=3386943305 AND `RecordId`=336398) OR (`Id`=108101 AND `TableHash`=3571931810 AND `RecordId`=43166) OR (`Id`=108099 AND `TableHash`=4030871717 AND `RecordId`=1294472) OR (`Id`=108098 AND `TableHash`=2120822102 AND `RecordId`=416540) OR (`Id`=108096 AND `TableHash`=813076512 AND `RecordId`=206079) OR (`Id`=108096 AND `TableHash`=4193483863 AND `RecordId`=99433) OR (`Id`=108095 AND `TableHash`=600565378 AND `RecordId`=667023) OR (`Id`=108095 AND `TableHash`=1870074897 AND `RecordId`=90974) OR (`Id`=108095 AND `TableHash`=3386943305 AND `RecordId`=350549) OR (`Id`=108095 AND `TableHash`=3386291891 AND `RecordId`=266934) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247638) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247638) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247637) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247637) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247621) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247621) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247620) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247620) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247619) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247619) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247618) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247618) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247617) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247617) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247616) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247616) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247615) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247615) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247614) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247614) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247613) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247613) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247612) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247612) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247611) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247611) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247610) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247610) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247561) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247561) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247560) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247560) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247559) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247559) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247558) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247558) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247555) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247555) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247554) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247554) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247553) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247553) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247552) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247552) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247551) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247551) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247550) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247550) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247549) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247549) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247548) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247548) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247547) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247547) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247546) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247546) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247545) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247545) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247544) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247544) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247543) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247543) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247542) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247542) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247541) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247541) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247540) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247540) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247539) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247539) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247538) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247538) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247537) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247537) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247536) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247536) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247535) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247535) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247534) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247534) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247533) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247533) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247532) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247532) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247531) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247531) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247530) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247530) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247529) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247529) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247528) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247528) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247527) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247527) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247526) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247526) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247525) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247525) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247524) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247524) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247523) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247523) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247522) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247522) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247521) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247521) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247520) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247520) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247519) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247519) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247518) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247518) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247517) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247517) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247516) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247516) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247515) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247515) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247514) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247514) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247513) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247513) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247512) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247512) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247511) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247511) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247510) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247510) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247509) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247509) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247508) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247508) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247507) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247507) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247506) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247506) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247505) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247505) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247504) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247504) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247503) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247503) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247502) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247502) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247501) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247501) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247500) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247500) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247499) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247499) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247498) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247498) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247497) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247497) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247496) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247496) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247495) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247495) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247494) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247494) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247493) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247493) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247492) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247492) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247421) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247421) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247420) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247420) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247419) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247419) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247418) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247418) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247417) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247417) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247416) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247416) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247415) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247415) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247414) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247414) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247413) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247413) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247412) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247412) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247411) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247411) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247410) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247410) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247409) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247409) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247408) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247408) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247407) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247407) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247406) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247406) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247405) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247405) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247404) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247404) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247403) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247403) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247402) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247402) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247401) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247401) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247400) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247400) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247295) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247295) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247294) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247294) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247293) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247293) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247292) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247292) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247291) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247291) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247290) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247290) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247289) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247289) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247288) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247288) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247287) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247287) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247286) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247286) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247285) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247285) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247284) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247284) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247283) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247283) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247282) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247282) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247281) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247281) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247280) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247280) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247279) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247279) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247278) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247278) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247277) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247277) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247276) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247276) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247275) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247275) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247274) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247274) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247273) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247273) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247272) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247272) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247271) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247271) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247270) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247270) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247269) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247269) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247268) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247268) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247267) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247267) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247266) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247266) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247265) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247265) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247264) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247264) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247263) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247263) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247262) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247262) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247261) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247261) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247260) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247260) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247259) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247259) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247258) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247258) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247257) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247257) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247256) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247256) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247255) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247255) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247254) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247254) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247253) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247253) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247252) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247252) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247199) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247199) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247198) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247198) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247197) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247197) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247196) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247196) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247195) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247195) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247194) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247194) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247193) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247193) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247192) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247192) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247191) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247191) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247190) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247190) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247189) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247189) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247188) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247188) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247187) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247187) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247186) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247186) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247185) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247185) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247184) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247184) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247183) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247183) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247182) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247182) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247181) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247181) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247180) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247180) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247179) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247179) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247178) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247178) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247177) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247177) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247176) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247176) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247175) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247175) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247174) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247174) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247173) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247173) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247172) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247172) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247171) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247171) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247170) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247170) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247169) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247169) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247168) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247168) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247167) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247167) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247166) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247166) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247165) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247165) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247164) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247164) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247163) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247163) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247162) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247162) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247161) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247161) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247160) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247160) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247159) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247159) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247158) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247158) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247157) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247157) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247156) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247156) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247155) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247155) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247154) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247154) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247153) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247153) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247152) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247152) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247001) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247001) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=247000) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=247000) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=246999) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=246999) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=246998) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=246998) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=246997) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=246997) OR (`Id`=108095 AND `TableHash`=1408785804 AND `RecordId`=246996) OR (`Id`=108095 AND `TableHash`=1122246768 AND `RecordId`=246996) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180853) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180852) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180851) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180850) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180849) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180848) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180847) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180845) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180844) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180842) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180841) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180840) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180839) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180838) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180837) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180836) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180835) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180834) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180833) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180832) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180831) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180830) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180829) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180828) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180827) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180826) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180825) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180824) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180823) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180822) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180821) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180820) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180819) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180818) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180817) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180816) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180815) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180814) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180813) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180812) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180811) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180810) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180809) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180808) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180807) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180806) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180805) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180804) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180803) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180802) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180801) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180800) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180799) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180798) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180797) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180796) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180795) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180794) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180793) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180792) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180791) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180790) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180789) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180788) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180787) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180786) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180785) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180784) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180783) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180782) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180781) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180780) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180779) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180778) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180777) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180776) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180775) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180774) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180773) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180772) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180771) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180770) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180769) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180768) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180767) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180766) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180765) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180764) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180763) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180762) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180761) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180760) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180759) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180758) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180757) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180756) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180755) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180754) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180752) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180751) OR (`Id`=108095 AND `TableHash`=4014102324 AND `RecordId`=180750) OR (`Id`=108093 AND `TableHash`=2948698321 AND `RecordId`=8207) OR (`Id`=108093 AND `TableHash`=3744420815 AND `RecordId`=8207) OR (`Id`=108091 AND `TableHash`=312611497 AND `RecordId`=27763) OR (`Id`=108091 AND `TableHash`=312611497 AND `RecordId`=27762) OR (`Id`=108085 AND `TableHash`=3322146344 AND `RecordId`=831405) OR (`Id`=108085 AND `TableHash`=3322146344 AND `RecordId`=831163) OR (`Id`=108085 AND `TableHash`=3322146344 AND `RecordId`=830576) OR (`Id`=108085 AND `TableHash`=3322146344 AND `RecordId`=828085) OR (`Id`=108085 AND `TableHash`=3322146344 AND `RecordId`=827689) OR (`Id`=108072 AND `TableHash`=1255424668 AND `RecordId`=223697) OR (`Id`=108072 AND `TableHash`=1255424668 AND `RecordId`=223696) OR (`Id`=108072 AND `TableHash`=1255424668 AND `RecordId`=223695) OR (`Id`=108072 AND `TableHash`=1255424668 AND `RecordId`=223694) OR (`Id`=108072 AND `TableHash`=1255424668 AND `RecordId`=223693) OR (`Id`=108072 AND `TableHash`=1255424668 AND `RecordId`=219734) OR (`Id`=108072 AND `TableHash`=4012104832 AND `RecordId`=112725) OR (`Id`=108072 AND `TableHash`=4012104832 AND `RecordId`=112724) OR (`Id`=108072 AND `TableHash`=4012104832 AND `RecordId`=112723) OR (`Id`=108072 AND `TableHash`=4012104832 AND `RecordId`=112722) OR (`Id`=108072 AND `TableHash`=4012104832 AND `RecordId`=112721) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8960) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8959) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8958) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8957) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8956) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8955) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8954) OR (`Id`=108069 AND `TableHash`=800559195 AND `RecordId`=8953) OR (`Id`=108068 AND `TableHash`=1163127287 AND `RecordId`=121886) OR (`Id`=108068 AND `TableHash`=1163127287 AND `RecordId`=39075) OR (`Id`=108068 AND `TableHash`=1163127287 AND `RecordId`=38701) OR (`Id`=108067 AND `TableHash`=1344507586 AND `RecordId`=264914) OR (`Id`=108067 AND `TableHash`=428746933 AND `RecordId`=264914) OR (`Id`=108067 AND `TableHash`=2442913102 AND `RecordId`=264914) OR (`Id`=108067 AND `TableHash`=3465080266 AND `RecordId`=264914) OR (`Id`=108067 AND `TableHash`=3037505077 AND `RecordId`=264914) OR (`Id`=108067 AND `TableHash`=1417785224 AND `RecordId`=264914) OR (`Id`=108066 AND `TableHash`=3495286709 AND `RecordId`=24817) OR (`Id`=108063 AND `TableHash`=671580526 AND `RecordId`=155) OR (`Id`=108063 AND `TableHash`=3174446591 AND `RecordId`=6069) OR (`Id`=108062 AND `TableHash`=1163127287 AND `RecordId`=128500) OR (`Id`=108062 AND `TableHash`=1163127287 AND `RecordId`=117785) OR (`Id`=108060 AND `TableHash`=1163127287 AND `RecordId`=124052) OR (`Id`=108060 AND `TableHash`=1163127287 AND `RecordId`=124012) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93714) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93714) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93713) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93713) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93712) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93712) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93711) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93711) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93710) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93710) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93709) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93709) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93708) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93708) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93707) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93707) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93706) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93706) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93705) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93705) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93704) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93704) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93703) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93703) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93702) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93702) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93701) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93701) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93700) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93700) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93699) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93699) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93698) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93698) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93697) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93697) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93696) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93696) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93695) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93695) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93694) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93694) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93693) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93693) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93692) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93692) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93691) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93691) OR (`Id`=108059 AND `TableHash`=261693969 AND `RecordId`=93690) OR (`Id`=108059 AND `TableHash`=986198281 AND `RecordId`=93690) OR (`Id`=108058 AND `TableHash`=3322146344 AND `RecordId`=844775) OR (`Id`=108058 AND `TableHash`=3322146344 AND `RecordId`=123954) OR (`Id`=108058 AND `TableHash`=4030871717 AND `RecordId`=1320656) OR (`Id`=108058 AND `TableHash`=4030871717 AND `RecordId`=206265) OR (`Id`=108058 AND `TableHash`=1187407512 AND `RecordId`=1297413) OR (`Id`=108058 AND `TableHash`=3776013982 AND `RecordId`=1297413) OR (`Id`=108058 AND `TableHash`=1187407512 AND `RecordId`=149981) OR (`Id`=108058 AND `TableHash`=3776013982 AND `RecordId`=149981) OR (`Id`=108057 AND `TableHash`=2523372402 AND `RecordId`=16090) OR (`Id`=108057 AND `TableHash`=2523372402 AND `RecordId`=16088) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=347231) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=345843) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=345583) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=343989) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=343564) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=342439) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=342187) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=342125) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=341945) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=340962) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=340958) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=340416) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=340414) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=340413) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=339649) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=339355) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=336425) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=336418) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=336417) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=335663) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=333449) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=333189) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=332247) OR (`Id`=108056 AND `TableHash`=3386943305 AND `RecordId`=330635) OR (`Id`=108056 AND `TableHash`=3386291891 AND `RecordId`=259259) OR (`Id`=108054 AND `TableHash`=3322146344 AND `RecordId`=820954) OR (`Id`=108054 AND `TableHash`=3322146344 AND `RecordId`=820953) OR (`Id`=108054 AND `TableHash`=3322146344 AND `RecordId`=820950) OR (`Id`=108054 AND `TableHash`=3322146344 AND `RecordId`=820949) OR (`Id`=108054 AND `TableHash`=3322146344 AND `RecordId`=820941) OR (`Id`=108054 AND `TableHash`=3322146344 AND `RecordId`=820940) OR (`Id`=108052 AND `TableHash`=3330775162 AND `RecordId`=1897) OR (`Id`=108052 AND `TableHash`=3330775162 AND `RecordId`=1896) OR (`Id`=108052 AND `TableHash`=3330775162 AND `RecordId`=1895) OR (`Id`=108052 AND `TableHash`=3330775162 AND `RecordId`=1894) OR (`Id`=108052 AND `TableHash`=3330775162 AND `RecordId`=1893) OR (`Id`=108052 AND `TableHash`=3330775162 AND `RecordId`=1892) OR (`Id`=108052 AND `TableHash`=2120822102 AND `RecordId`=449169) OR (`Id`=108052 AND `TableHash`=2120822102 AND `RecordId`=449168) OR (`Id`=108052 AND `TableHash`=2120822102 AND `RecordId`=449167) OR (`Id`=108052 AND `TableHash`=1255424668 AND `RecordId`=224860) OR (`Id`=108052 AND `TableHash`=1255424668 AND `RecordId`=224859) OR (`Id`=108052 AND `TableHash`=1255424668 AND `RecordId`=224858) OR (`Id`=108052 AND `TableHash`=4012104832 AND `RecordId`=113465) OR (`Id`=108048 AND `TableHash`=4033975491 AND `RecordId`=615947) OR (`Id`=108045 AND `TableHash`=3386943305 AND `RecordId`=344481) OR (`Id`=108045 AND `TableHash`=3386943305 AND `RecordId`=343526) OR (`Id`=108044 AND `TableHash`=800559195 AND `RecordId`=9182) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=206050) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=206049) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=206048) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=206047) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=206046) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=204884) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=204883) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=204882) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=204881) OR (`Id`=108044 AND `TableHash`=3603976684 AND `RecordId`=204880) OR (`Id`=108044 AND `TableHash`=1746734909 AND `RecordId`=62523) OR (`Id`=108044 AND `TableHash`=1746734909 AND `RecordId`=62522) OR (`Id`=108044 AND `TableHash`=1746734909 AND `RecordId`=62521) OR (`Id`=108044 AND `TableHash`=1746734909 AND `RecordId`=62520) OR (`Id`=108044 AND `TableHash`=1746734909 AND `RecordId`=62519) OR (`Id`=108042 AND `TableHash`=3108775943 AND `RecordId`=155979) OR (`Id`=108038 AND `TableHash`=2533050585 AND `RecordId`=1552) OR (`Id`=108038 AND `TableHash`=2930840720 AND `RecordId`=5104) OR (`Id`=108038 AND `TableHash`=2930840720 AND `RecordId`=5103) OR (`Id`=108038 AND `TableHash`=2930840720 AND `RecordId`=5102) OR (`Id`=108038 AND `TableHash`=21457424 AND `RecordId`=1575) OR (`Id`=108038 AND `TableHash`=2524150337 AND `RecordId`=2832) OR (`Id`=108036 AND `TableHash`=3072882582 AND `RecordId`=54147) OR (`Id`=108036 AND `TableHash`=2381039112 AND `RecordId`=7763) OR (`Id`=108036 AND `TableHash`=2381039112 AND `RecordId`=7762) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5850) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5849) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5848) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5847) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5846) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5845) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5844) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5843) OR (`Id`=108035 AND `TableHash`=3855640965 AND `RecordId`=5842) OR (`Id`=108034 AND `TableHash`=312611497 AND `RecordId`=28242) OR (`Id`=108034 AND `TableHash`=312611497 AND `RecordId`=28241) OR (`Id`=108034 AND `TableHash`=312611497 AND `RecordId`=27934) OR (`Id`=108034 AND `TableHash`=312611497 AND `RecordId`=27933) OR (`Id`=108034 AND `TableHash`=1163127287 AND `RecordId`=124565) OR (`Id`=108034 AND `TableHash`=1163127287 AND `RecordId`=120111) OR (`Id`=108034 AND `TableHash`=1163127287 AND `RecordId`=118141) OR (`Id`=108034 AND `TableHash`=1163127287 AND `RecordId`=118108) OR (`Id`=108034 AND `TableHash`=1163127287 AND `RecordId`=116921) OR (`Id`=108034 AND `TableHash`=3322146344 AND `RecordId`=832619) OR (`Id`=108034 AND `TableHash`=3322146344 AND `RecordId`=825025) OR (`Id`=108034 AND `TableHash`=4030871717 AND `RecordId`=1308103) OR (`Id`=108034 AND `TableHash`=4030871717 AND `RecordId`=1288411) OR (`Id`=108034 AND `TableHash`=4030871717 AND `RecordId`=1288396) OR (`Id`=108034 AND `TableHash`=3386943305 AND `RecordId`=341302) OR (`Id`=108034 AND `TableHash`=3386943305 AND `RecordId`=341053) OR (`Id`=108034 AND `TableHash`=3386943305 AND `RecordId`=341051) OR (`Id`=108034 AND `TableHash`=3386291891 AND `RecordId`=261963) OR (`Id`=108033 AND `TableHash`=492039028 AND `RecordId`=50526) OR (`Id`=108033 AND `TableHash`=492039028 AND `RecordId`=48956) OR (`Id`=108033 AND `TableHash`=492039028 AND `RecordId`=48950) OR (`Id`=108033 AND `TableHash`=492039028 AND `RecordId`=47336) OR (`Id`=108033 AND `TableHash`=492039028 AND `RecordId`=47211) OR (`Id`=108033 AND `TableHash`=666345498 AND `RecordId`=513834) OR (`Id`=108033 AND `TableHash`=4033975491 AND `RecordId`=620445) OR (`Id`=108033 AND `TableHash`=1181150530 AND `RecordId`=753105) OR (`Id`=108033 AND `TableHash`=1181150530 AND `RecordId`=753104) OR (`Id`=108033 AND `TableHash`=4102286043 AND `RecordId`=266284) OR (`Id`=108033 AND `TableHash`=3425193231 AND `RecordId`=547256) OR (`Id`=108033 AND `TableHash`=3425193231 AND `RecordId`=547255) OR (`Id`=108033 AND `TableHash`=3425193231 AND `RecordId`=547254) OR (`Id`=108033 AND `TableHash`=4146370265 AND `RecordId`=182748) OR (`Id`=108033 AND `TableHash`=2120822102 AND `RecordId`=446905) OR (`Id`=108033 AND `TableHash`=2120822102 AND `RecordId`=444989) OR (`Id`=108033 AND `TableHash`=2120822102 AND `RecordId`=442229) OR (`Id`=108033 AND `TableHash`=600565378 AND `RecordId`=665079) OR (`Id`=108033 AND `TableHash`=600565378 AND `RecordId`=665078) OR (`Id`=108033 AND `TableHash`=600565378 AND `RecordId`=665075) OR (`Id`=108033 AND `TableHash`=1870074897 AND `RecordId`=89911) OR (`Id`=108033 AND `TableHash`=1870074897 AND `RecordId`=89910) OR (`Id`=108033 AND `TableHash`=1870074897 AND `RecordId`=89909) OR (`Id`=108033 AND `TableHash`=3386943305 AND `RecordId`=349443) OR (`Id`=108033 AND `TableHash`=3386943305 AND `RecordId`=349442) OR (`Id`=108033 AND `TableHash`=3386943305 AND `RecordId`=349440) OR (`Id`=108033 AND `TableHash`=3386291891 AND `RecordId`=265873) OR (`Id`=108033 AND `TableHash`=3386291891 AND `RecordId`=265872) OR (`Id`=108033 AND `TableHash`=3386291891 AND `RecordId`=265870) OR (`Id`=108032 AND `TableHash`=261693969 AND `RecordId`=93891) OR (`Id`=108032 AND `TableHash`=986198281 AND `RecordId`=93891) OR (`Id`=108031 AND `TableHash`=1408785804 AND `RecordId`=249390) OR (`Id`=108031 AND `TableHash`=1122246768 AND `RecordId`=249390) OR (`Id`=108031 AND `TableHash`=1408785804 AND `RecordId`=249389) OR (`Id`=108031 AND `TableHash`=1122246768 AND `RecordId`=249389) OR (`Id`=108031 AND `TableHash`=1408785804 AND `RecordId`=249388) OR (`Id`=108031 AND `TableHash`=1122246768 AND `RecordId`=249388) OR (`Id`=108031 AND `TableHash`=1408785804 AND `RecordId`=249387) OR (`Id`=108031 AND `TableHash`=1122246768 AND `RecordId`=249387) OR (`Id`=108031 AND `TableHash`=1408785804 AND `RecordId`=249386) OR (`Id`=108031 AND `TableHash`=1122246768 AND `RecordId`=249386) OR (`Id`=108031 AND `TableHash`=1408785804 AND `RecordId`=249385) OR (`Id`=108031 AND `TableHash`=1122246768 AND `RecordId`=249385) OR (`Id`=108031 AND `TableHash`=4014102324 AND `RecordId`=181600) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1317304) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1317303) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1285926) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1285925) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1283220) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1266878) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1266354) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1265430) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1264885) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1264704) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1264673) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1264658) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1210529) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=1031561) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=623125) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=191140) OR (`Id`=108030 AND `TableHash`=4030871717 AND `RecordId`=191139) OR (`Id`=108029 AND `TableHash`=813076512 AND `RecordId`=204762) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1317268) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1317267) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1317259) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1317253) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1280836) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1266631) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1266346) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1266345) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1264720) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1263763) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1247641) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=1026102) OR (`Id`=108029 AND `TableHash`=4030871717 AND `RecordId`=68093) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622091) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622090) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622089) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622088) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622087) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622081) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622079) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622078) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=622077) OR (`Id`=108028 AND `TableHash`=4033975491 AND `RecordId`=588487) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=756006) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=756005) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=756003) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=756002) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=756001) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755995) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755994) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755992) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755991) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755990) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755989) OR (`Id`=108028 AND `TableHash`=1181150530 AND `RecordId`=755988) OR (`Id`=108028 AND `TableHash`=4102286043 AND `RecordId`=267429) OR (`Id`=108028 AND `TableHash`=4102286043 AND `RecordId`=267427) OR (`Id`=108028 AND `TableHash`=4102286043 AND `RecordId`=267426) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=548452) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=548451) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=548450) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=548449) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=533963) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=503686) OR (`Id`=108028 AND `TableHash`=3425193231 AND `RecordId`=503500) OR (`Id`=108028 AND `TableHash`=48336690 AND `RecordId`=55914) OR (`Id`=108028 AND `TableHash`=48336690 AND `RecordId`=55913) OR (`Id`=108028 AND `TableHash`=48336690 AND `RecordId`=55912) OR (`Id`=108028 AND `TableHash`=4146370265 AND `RecordId`=183512) OR (`Id`=108028 AND `TableHash`=4146370265 AND `RecordId`=183511) OR (`Id`=108028 AND `TableHash`=4146370265 AND `RecordId`=161173) OR (`Id`=108028 AND `TableHash`=4146370265 AND `RecordId`=161066) OR (`Id`=108027 AND `TableHash`=3764045193 AND `RecordId`=8555) OR (`Id`=108027 AND `TableHash`=3764045193 AND `RecordId`=8554) OR (`Id`=108026 AND `TableHash`=312611497 AND `RecordId`=17327) OR (`Id`=108026 AND `TableHash`=312611497 AND `RecordId`=17326) OR (`Id`=108025 AND `TableHash`=312611497 AND `RecordId`=26981) OR (`Id`=108025 AND `TableHash`=312611497 AND `RecordId`=26980) OR (`Id`=108025 AND `TableHash`=1163127287 AND `RecordId`=72007) OR (`Id`=108025 AND `TableHash`=3322146344 AND `RecordId`=803588) OR (`Id`=108025 AND `TableHash`=4030871717 AND `RecordId`=1252830) OR (`Id`=108024 AND `TableHash`=3322146344 AND `RecordId`=774010) OR (`Id`=108024 AND `TableHash`=3322146344 AND `RecordId`=759555) OR (`Id`=108024 AND `TableHash`=3322146344 AND `RecordId`=700456) OR (`Id`=108024 AND `TableHash`=3322146344 AND `RecordId`=173456) OR (`Id`=108024 AND `TableHash`=3322146344 AND `RecordId`=87208) OR (`Id`=108024 AND `TableHash`=3386943305 AND `RecordId`=187661) OR (`Id`=108023 AND `TableHash`=312611497 AND `RecordId`=28282) OR (`Id`=108023 AND `TableHash`=312611497 AND `RecordId`=28281) OR (`Id`=108023 AND `TableHash`=1163127287 AND `RecordId`=121343) OR (`Id`=108022 AND `TableHash`=3322146344 AND `RecordId`=793688) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11605) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11604) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11603) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11602) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11601) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11600) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11547) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11546) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11541) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11540) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11539) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11533) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11029) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11028) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11027) OR (`Id`=108021 AND `TableHash`=3146089301 AND `RecordId`=11026) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106105) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106104) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106103) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106101) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106099) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106098) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106097) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106096) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106095) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106045) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106043) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106042) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106041) OR (`Id`=108021 AND `TableHash`=1876974313 AND `RecordId`=106040) OR (`Id`=108019 AND `TableHash`=600565378 AND `RecordId`=664106) OR (`Id`=108019 AND `TableHash`=600565378 AND `RecordId`=613522) OR (`Id`=108019 AND `TableHash`=3386291891 AND `RecordId`=246605) OR (`Id`=108018 AND `TableHash`=1163127287 AND `RecordId`=122543) OR (`Id`=108018 AND `TableHash`=2120822102 AND `RecordId`=445905) OR (`Id`=108018 AND `TableHash`=2120822102 AND `RecordId`=445883) OR (`Id`=108018 AND `TableHash`=2120822102 AND `RecordId`=445848) OR (`Id`=108017 AND `TableHash`=1163127287 AND `RecordId`=77038) OR (`Id`=108017 AND `TableHash`=1163127287 AND `RecordId`=39484) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92809) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92809) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92808) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92808) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92807) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92807) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92806) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92806) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92805) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92805) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92804) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92804) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92803) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92803) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92801) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92801) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92800) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92800) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92799) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92799) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92798) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92798) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92797) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92797) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92796) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92796) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92795) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92795) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92794) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92794) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92793) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92793) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92792) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92792) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92791) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92791) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92790) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92790) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92789) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92789) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92788) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92788) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92787) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92787) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92786) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92786) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92785) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92785) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92784) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92784) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92783) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92783) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92782) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92782) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92781) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92781) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92780) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92780) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92779) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92779) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92778) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92778) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92777) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92777) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92776) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92776) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92775) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92775) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92774) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92774) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92773) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92773) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92772) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92772) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92771) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92771) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92770) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92770) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92769) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92769) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92768) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92768) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92767) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92767) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92766) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92766) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92765) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92765) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92764) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92764) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92763) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92763) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92762) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92762) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92761) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92761) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92760) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92760) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92759) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92759) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92758) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92758) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92756) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92756) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92093) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92093) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92092) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92092) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92091) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92091) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92090) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92090) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92089) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92089) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92088) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92088) OR (`Id`=108016 AND `TableHash`=261693969 AND `RecordId`=92087) OR (`Id`=108016 AND `TableHash`=986198281 AND `RecordId`=92087) OR (`Id`=108015 AND `TableHash`=1163127287 AND `RecordId`=127975) OR (`Id`=108014 AND `TableHash`=326190544 AND `RecordId`=14433) OR (`Id`=108014 AND `TableHash`=326190544 AND `RecordId`=14432) OR (`Id`=108013 AND `TableHash`=1187407512 AND `RecordId`=1289789) OR (`Id`=108013 AND `TableHash`=3776013982 AND `RecordId`=1289789) OR (`Id`=108013 AND `TableHash`=1187407512 AND `RecordId`=1283168) OR (`Id`=108013 AND `TableHash`=3776013982 AND `RecordId`=1283168) OR (`Id`=108013 AND `TableHash`=1187407512 AND `RecordId`=1282778) OR (`Id`=108013 AND `TableHash`=3776013982 AND `RecordId`=1282778) OR (`Id`=108013 AND `TableHash`=1187407512 AND `RecordId`=1264876) OR (`Id`=108013 AND `TableHash`=3776013982 AND `RecordId`=1264876) OR (`Id`=108013 AND `TableHash`=1187407512 AND `RecordId`=1255629) OR (`Id`=108013 AND `TableHash`=3776013982 AND `RecordId`=1255629) OR (`Id`=108012 AND `TableHash`=4030871717 AND `RecordId`=1274849) OR (`Id`=108012 AND `TableHash`=4030871717 AND `RecordId`=1274848) OR (`Id`=108012 AND `TableHash`=4096770149 AND `RecordId`=243447) OR (`Id`=108010 AND `TableHash`=356071576 AND `RecordId`=5688) OR (`Id`=108010 AND `TableHash`=1187407512 AND `RecordId`=1292255) OR (`Id`=108010 AND `TableHash`=3776013982 AND `RecordId`=1292255) OR (`Id`=108010 AND `TableHash`=1187407512 AND `RecordId`=1291009) OR (`Id`=108010 AND `TableHash`=3776013982 AND `RecordId`=1291009) OR (`Id`=108010 AND `TableHash`=1187407512 AND `RecordId`=1291008) OR (`Id`=108010 AND `TableHash`=3776013982 AND `RecordId`=1291008) OR (`Id`=108010 AND `TableHash`=1187407512 AND `RecordId`=447444) OR (`Id`=108010 AND `TableHash`=3776013982 AND `RecordId`=447444) OR (`Id`=108010 AND `TableHash`=20077728 AND `RecordId`=467979) OR (`Id`=108010 AND `TableHash`=20077728 AND `RecordId`=461551) OR (`Id`=108010 AND `TableHash`=20077728 AND `RecordId`=456808) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270222) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270222) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270222) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270222) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270222) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270222) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270221) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270221) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270221) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270221) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270221) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270221) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270220) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270220) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270220) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270220) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270220) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270220) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270219) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270219) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270219) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270219) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270219) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270219) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270218) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270218) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270218) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270218) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270218) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270218) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270217) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270217) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270217) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270217) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270217) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270217) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270216) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270216) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270216) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270216) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270216) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270216) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270215) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270215) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270215) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270215) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270215) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270215) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270213) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270213) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270213) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270213) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270213) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270213) OR (`Id`=108010 AND `TableHash`=1344507586 AND `RecordId`=270212) OR (`Id`=108010 AND `TableHash`=428746933 AND `RecordId`=270212) OR (`Id`=108010 AND `TableHash`=2442913102 AND `RecordId`=270212) OR (`Id`=108010 AND `TableHash`=3465080266 AND `RecordId`=270212) OR (`Id`=108010 AND `TableHash`=3037505077 AND `RecordId`=270212) OR (`Id`=108010 AND `TableHash`=1417785224 AND `RecordId`=270212) OR (`Id`=108010 AND `TableHash`=326190544 AND `RecordId`=22775) OR (`Id`=108010 AND `TableHash`=326190544 AND `RecordId`=21948) OR (`Id`=108010 AND `TableHash`=326190544 AND `RecordId`=21947) OR (`Id`=108010 AND `TableHash`=331613093 AND `RecordId`=649953) OR (`Id`=108010 AND `TableHash`=1255424668 AND `RecordId`=209802) OR (`Id`=108010 AND `TableHash`=1255424668 AND `RecordId`=170782) OR (`Id`=108010 AND `TableHash`=3386291891 AND `RecordId`=264163) OR (`Id`=108007 AND `TableHash`=4030871717 AND `RecordId`=1306885) OR (`Id`=108006 AND `TableHash`=372281185 AND `RecordId`=38) OR (`Id`=108006 AND `TableHash`=372281185 AND `RecordId`=37) OR (`Id`=108005 AND `TableHash`=3108775943 AND `RecordId`=157759) OR (`Id`=108005 AND `TableHash`=2120822102 AND `RecordId`=448965) OR (`Id`=108005 AND `TableHash`=2120822102 AND `RecordId`=448964) OR (`Id`=108001 AND `TableHash`=1746734909 AND `RecordId`=62822) OR (`Id`=108001 AND `TableHash`=1746734909 AND `RecordId`=62821) OR (`Id`=108001 AND `TableHash`=1746734909 AND `RecordId`=62820) OR (`Id`=108001 AND `TableHash`=1746734909 AND `RecordId`=62819) OR (`Id`=108001 AND `TableHash`=1746734909 AND `RecordId`=62818) OR (`Id`=108001 AND `TableHash`=1746734909 AND `RecordId`=62817) OR (`Id`=108000 AND `TableHash`=2707547180 AND `RecordId`=137739) OR (`Id`=107998 AND `TableHash`=3108775943 AND `RecordId`=157695) OR (`Id`=107997 AND `TableHash`=2921112328 AND `RecordId`=561713) OR (`Id`=107997 AND `TableHash`=20077728 AND `RecordId`=474235) OR (`Id`=107997 AND `TableHash`=20077728 AND `RecordId`=464529) OR (`Id`=107997 AND `TableHash`=3108775943 AND `RecordId`=157679) OR (`Id`=107997 AND `TableHash`=331613093 AND `RecordId`=607115) OR (`Id`=107996 AND `TableHash`=3495286709 AND `RecordId`=24488) OR (`Id`=107996 AND `TableHash`=3495286709 AND `RecordId`=24487) OR (`Id`=107996 AND `TableHash`=3495286709 AND `RecordId`=24486) OR (`Id`=107996 AND `TableHash`=3495286709 AND `RecordId`=24485) OR (`Id`=107996 AND `TableHash`=3495286709 AND `RecordId`=24484) OR (`Id`=107995 AND `TableHash`=1163127287 AND `RecordId`=125561) OR (`Id`=107992 AND `TableHash`=240389885 AND `RecordId`=9571) OR (`Id`=107990 AND `TableHash`=1163127287 AND `RecordId`=128389) OR (`Id`=107990 AND `TableHash`=3322146344 AND `RecordId`=827267) OR (`Id`=107989 AND `TableHash`=3108775943 AND `RecordId`=157666) OR (`Id`=107985 AND `TableHash`=4030871717 AND `RecordId`=1271571) OR (`Id`=107983 AND `TableHash`=4030871717 AND `RecordId`=1319670) OR (`Id`=107983 AND `TableHash`=680438657 AND `RecordId`=83426) OR (`Id`=107982 AND `TableHash`=1163127287 AND `RecordId`=89559) OR (`Id`=107981 AND `TableHash`=3322146344 AND `RecordId`=184847) OR (`Id`=107981 AND `TableHash`=1720692227 AND `RecordId`=243243) OR (`Id`=107981 AND `TableHash`=3689412649 AND `RecordId`=184538) OR (`Id`=107981 AND `TableHash`=1187407512 AND `RecordId`=210824) OR (`Id`=107981 AND `TableHash`=3776013982 AND `RecordId`=210824) OR (`Id`=107980 AND `TableHash`=3322146344 AND `RecordId`=178035) OR (`Id`=107980 AND `TableHash`=3322146344 AND `RecordId`=268) OR (`Id`=107979 AND `TableHash`=261693969 AND `RecordId`=86899) OR (`Id`=107979 AND `TableHash`=986198281 AND `RecordId`=86899) OR (`Id`=107979 AND `TableHash`=3108775943 AND `RecordId`=157603) OR (`Id`=107979 AND `TableHash`=2246024846 AND `RecordId`=1306) OR (`Id`=107976 AND `TableHash`=240389885 AND `RecordId`=9209) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=28537) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27984) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27944) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27898) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27897) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27892) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27371) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27357) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27350) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27349) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27160) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27159) OR (`Id`=107976 AND `TableHash`=312611497 AND `RecordId`=27158) OR (`Id`=107976 AND `TableHash`=1163127287 AND `RecordId`=124014) OR (`Id`=107976 AND `TableHash`=1163127287 AND `RecordId`=121996) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=332898) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=323747) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=323746) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=323745) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=320187) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=320070) OR (`Id`=107976 AND `TableHash`=3386943305 AND `RecordId`=319752) OR (`Id`=107974 AND `TableHash`=2202435563 AND `RecordId`=1189289) OR (`Id`=107974 AND `TableHash`=2921112328 AND `RecordId`=537648) OR (`Id`=107973 AND `TableHash`=3664936999 AND `RecordId`=33306) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154160) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154159) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154158) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154157) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154156) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154155) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154154) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154153) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154152) OR (`Id`=107972 AND `TableHash`=3108775943 AND `RecordId`=154151) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1314377) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1264811) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1235034) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1235033) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1235032) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1081540) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=1079597) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=298593) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=295730) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=271185) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=191077) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=191076) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=179715) OR (`Id`=107971 AND `TableHash`=4030871717 AND `RecordId`=135203) OR (`Id`=107970 AND `TableHash`=3247720076 AND `RecordId`=42425) OR (`Id`=107970 AND `TableHash`=3247720076 AND `RecordId`=42424) OR (`Id`=107969 AND `TableHash`=3322146344 AND `RecordId`=809484) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=837954) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=835449) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=835342) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=833148) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=832887) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=831935) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=831244) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=830635) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=830559) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=829935) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=829931) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=829929) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=828708) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=828041) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=827071) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=826391) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=824124) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=823737) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=823729) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=823728) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=823718) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=820925) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=818246) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=815888) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=813833) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=811416) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=810189) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=810186) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=810178) OR (`Id`=107967 AND `TableHash`=3322146344 AND `RecordId`=807716) OR (`Id`=107967 AND `TableHash`=3130494798 AND `RecordId`=24602) OR (`Id`=107967 AND `TableHash`=3130494798 AND `RecordId`=23751) OR (`Id`=107967 AND `TableHash`=1187407512 AND `RecordId`=1280123) OR (`Id`=107967 AND `TableHash`=3776013982 AND `RecordId`=1280123) OR (`Id`=107966 AND `TableHash`=3322146344 AND `RecordId`=815569) OR (`Id`=107966 AND `TableHash`=1720692227 AND `RecordId`=233076) OR (`Id`=107964 AND `TableHash`=1163127287 AND `RecordId`=92732) OR (`Id`=107963 AND `TableHash`=261693969 AND `RecordId`=91843) OR (`Id`=107963 AND `TableHash`=986198281 AND `RecordId`=91843) OR (`Id`=107963 AND `TableHash`=261693969 AND `RecordId`=85884) OR (`Id`=107963 AND `TableHash`=986198281 AND `RecordId`=85884) OR (`Id`=107963 AND `TableHash`=261693969 AND `RecordId`=85235) OR (`Id`=107963 AND `TableHash`=986198281 AND `RecordId`=85235) OR (`Id`=107963 AND `TableHash`=261693969 AND `RecordId`=85027) OR (`Id`=107963 AND `TableHash`=986198281 AND `RecordId`=85027) OR (`Id`=107963 AND `TableHash`=261693969 AND `RecordId`=84371) OR (`Id`=107963 AND `TableHash`=986198281 AND `RecordId`=84371) OR (`Id`=107962 AND `TableHash`=1163127287 AND `RecordId`=128327) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=1307596) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=1307595) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=1032350) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=1032349) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=876349) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=876348) OR (`Id`=107959 AND `TableHash`=4030871717 AND `RecordId`=290380) OR (`Id`=107958 AND `TableHash`=3205218938 AND `RecordId`=54794) OR (`Id`=107958 AND `TableHash`=3205218938 AND `RecordId`=22339) OR (`Id`=107958 AND `TableHash`=3205218938 AND `RecordId`=22338) OR (`Id`=107958 AND `TableHash`=3205218938 AND `RecordId`=22331) OR (`Id`=107958 AND `TableHash`=3205218938 AND `RecordId`=22330) OR (`Id`=107958 AND `TableHash`=3205218938 AND `RecordId`=22329) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=53371) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=53371) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=53347) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=53347) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50553) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50553) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50504) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50504) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50493) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50493) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50359) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50359) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50264) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50264) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50168) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50168) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50165) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50165) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50162) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50162) OR (`Id`=107957 AND `TableHash`=261693969 AND `RecordId`=50161) OR (`Id`=107957 AND `TableHash`=986198281 AND `RecordId`=50161) OR (`Id`=107956 AND `TableHash`=3322146344 AND `RecordId`=844027) OR (`Id`=107956 AND `TableHash`=4030871717 AND `RecordId`=1319367) OR (`Id`=107956 AND `TableHash`=671633915 AND `RecordId`=302) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=314215) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257479) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257478) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257477) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257476) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257475) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257474) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257473) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257472) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257471) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257470) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257469) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257468) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257467) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257466) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257465) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257464) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257463) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257462) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257461) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257460) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257459) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257458) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257457) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257456) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257455) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257454) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257453) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257452) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257449) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257448) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257447) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257446) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257445) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257444) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257443) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257442) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257441) OR (`Id`=107956 AND `TableHash`=1880017466 AND `RecordId`=257440) OR (`Id`=107956 AND `TableHash`=1272569722 AND `RecordId`=87161) OR (`Id`=107956 AND `TableHash`=1272569722 AND `RecordId`=86539) OR (`Id`=107956 AND `TableHash`=3174446591 AND `RecordId`=442) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=128306) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=94908) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=86322) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=80263) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=74642) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=74052) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=74048) OR (`Id`=107955 AND `TableHash`=1163127287 AND `RecordId`=69849) OR (`Id`=107955 AND `TableHash`=3322146344 AND `RecordId`=837375) OR (`Id`=107955 AND `TableHash`=3322146344 AND `RecordId`=474637) OR (`Id`=107955 AND `TableHash`=4030871717 AND `RecordId`=1308336) OR (`Id`=107955 AND `TableHash`=4030871717 AND `RecordId`=896892) OR (`Id`=107952 AND `TableHash`=4030871717 AND `RecordId`=1244971) OR (`Id`=107952 AND `TableHash`=4030871717 AND `RecordId`=1229372) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276526) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276525) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276524) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276523) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276522) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276521) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276520) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276519) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276518) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276517) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276516) OR (`Id`=107951 AND `TableHash`=2202435563 AND `RecordId`=1276515) OR (`Id`=107950 AND `TableHash`=793851790 AND `RecordId`=3513) OR (`Id`=107948 AND `TableHash`=666345498 AND `RecordId`=519908) OR (`Id`=107948 AND `TableHash`=666345498 AND `RecordId`=519907) OR (`Id`=107948 AND `TableHash`=666345498 AND `RecordId`=519906) OR (`Id`=107948 AND `TableHash`=666345498 AND `RecordId`=519905) OR (`Id`=107948 AND `TableHash`=666345498 AND `RecordId`=519890) OR (`Id`=107948 AND `TableHash`=666345498 AND `RecordId`=519886) OR (`Id`=107948 AND `TableHash`=3322146344 AND `RecordId`=844105) OR (`Id`=107948 AND `TableHash`=3322146344 AND `RecordId`=844104) OR (`Id`=107948 AND `TableHash`=3322146344 AND `RecordId`=844103) OR (`Id`=107948 AND `TableHash`=3322146344 AND `RecordId`=844101) OR (`Id`=107948 AND `TableHash`=3322146344 AND `RecordId`=844079) OR (`Id`=107948 AND `TableHash`=3322146344 AND `RecordId`=844076) OR (`Id`=107948 AND `TableHash`=501138918 AND `RecordId`=152337) OR (`Id`=107948 AND `TableHash`=501138918 AND `RecordId`=152336) OR (`Id`=107948 AND `TableHash`=501138918 AND `RecordId`=152335) OR (`Id`=107948 AND `TableHash`=501138918 AND `RecordId`=152334) OR (`Id`=107948 AND `TableHash`=501138918 AND `RecordId`=152332) OR (`Id`=107948 AND `TableHash`=813076512 AND `RecordId`=205684) OR (`Id`=107948 AND `TableHash`=813076512 AND `RecordId`=205683) OR (`Id`=107948 AND `TableHash`=813076512 AND `RecordId`=205682) OR (`Id`=107948 AND `TableHash`=813076512 AND `RecordId`=205681) OR (`Id`=107948 AND `TableHash`=813076512 AND `RecordId`=205669) OR (`Id`=107948 AND `TableHash`=813076512 AND `RecordId`=205665) OR (`Id`=107948 AND `TableHash`=1720692227 AND `RecordId`=243236) OR (`Id`=107948 AND `TableHash`=1720692227 AND `RecordId`=243235) OR (`Id`=107948 AND `TableHash`=1720692227 AND `RecordId`=243234) OR (`Id`=107948 AND `TableHash`=1720692227 AND `RecordId`=243233) OR (`Id`=107948 AND `TableHash`=1720692227 AND `RecordId`=243222) OR (`Id`=107948 AND `TableHash`=1720692227 AND `RecordId`=243220) OR (`Id`=107948 AND `TableHash`=4030871717 AND `RecordId`=1319512) OR (`Id`=107948 AND `TableHash`=4030871717 AND `RecordId`=1319511) OR (`Id`=107948 AND `TableHash`=4030871717 AND `RecordId`=1319509) OR (`Id`=107948 AND `TableHash`=4030871717 AND `RecordId`=1319507) OR (`Id`=107948 AND `TableHash`=4030871717 AND `RecordId`=1319463) OR (`Id`=107948 AND `TableHash`=4030871717 AND `RecordId`=1319457) OR (`Id`=107948 AND `TableHash`=3689412649 AND `RecordId`=184531) OR (`Id`=107948 AND `TableHash`=3689412649 AND `RecordId`=184530) OR (`Id`=107948 AND `TableHash`=3689412649 AND `RecordId`=184529) OR (`Id`=107948 AND `TableHash`=3689412649 AND `RecordId`=184528) OR (`Id`=107948 AND `TableHash`=3689412649 AND `RecordId`=184521) OR (`Id`=107948 AND `TableHash`=3689412649 AND `RecordId`=184519) OR (`Id`=107948 AND `TableHash`=1187407512 AND `RecordId`=1296760) OR (`Id`=107948 AND `TableHash`=3776013982 AND `RecordId`=1296760) OR (`Id`=107948 AND `TableHash`=1187407512 AND `RecordId`=1296759) OR (`Id`=107948 AND `TableHash`=3776013982 AND `RecordId`=1296759) OR (`Id`=107948 AND `TableHash`=1187407512 AND `RecordId`=1296758) OR (`Id`=107948 AND `TableHash`=3776013982 AND `RecordId`=1296758) OR (`Id`=107948 AND `TableHash`=1187407512 AND `RecordId`=1296756) OR (`Id`=107948 AND `TableHash`=3776013982 AND `RecordId`=1296756) OR (`Id`=107948 AND `TableHash`=1187407512 AND `RecordId`=1296734) OR (`Id`=107948 AND `TableHash`=3776013982 AND `RecordId`=1296734) OR (`Id`=107948 AND `TableHash`=1187407512 AND `RecordId`=1296731) OR (`Id`=107948 AND `TableHash`=3776013982 AND `RecordId`=1296731) OR (`Id`=107948 AND `TableHash`=4282664694 AND `RecordId`=58556) OR (`Id`=107948 AND `TableHash`=4282664694 AND `RecordId`=58555) OR (`Id`=107948 AND `TableHash`=4282664694 AND `RecordId`=58554) OR (`Id`=107948 AND `TableHash`=4282664694 AND `RecordId`=58553) OR (`Id`=107948 AND `TableHash`=4282664694 AND `RecordId`=58545) OR (`Id`=107948 AND `TableHash`=4282664694 AND `RecordId`=58544) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157668) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157653) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157644) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157643) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157642) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157641) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157640) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157639) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157638) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157637) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157636) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157635) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157634) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157633) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157632) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157631) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157630) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157629) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157628) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157627) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157626) OR (`Id`=107948 AND `TableHash`=3108775943 AND `RecordId`=157625) OR (`Id`=107948 AND `TableHash`=2030087241 AND `RecordId`=3655) OR (`Id`=107948 AND `TableHash`=2030087241 AND `RecordId`=3654) OR (`Id`=107948 AND `TableHash`=2030087241 AND `RecordId`=3653) OR (`Id`=107948 AND `TableHash`=2030087241 AND `RecordId`=3652) OR (`Id`=107948 AND `TableHash`=2030087241 AND `RecordId`=3651) OR (`Id`=107948 AND `TableHash`=2030087241 AND `RecordId`=3650) OR (`Id`=107948 AND `TableHash`=2524150337 AND `RecordId`=3010) OR (`Id`=107948 AND `TableHash`=2524150337 AND `RecordId`=3009) OR (`Id`=107948 AND `TableHash`=2524150337 AND `RecordId`=3008) OR (`Id`=107948 AND `TableHash`=2524150337 AND `RecordId`=3007) OR (`Id`=107948 AND `TableHash`=2524150337 AND `RecordId`=3006) OR (`Id`=107948 AND `TableHash`=2524150337 AND `RecordId`=3005) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448804) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448803) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448802) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448801) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448800) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448799) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448798) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448797) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448796) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448795) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448794) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448793) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448792) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448791) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448790) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448789) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448788) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448787) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448786) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448785) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448784) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448783) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448782) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448781) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448780) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448779) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448778) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448777) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448776) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448775) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448774) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448773) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448772) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448771) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448770) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448769) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448768) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448767) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448766) OR (`Id`=107948 AND `TableHash`=2120822102 AND `RecordId`=448765) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166582) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166581) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166580) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166579) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166578) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166577) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166576) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166575) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166573) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166572) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166569) OR (`Id`=107948 AND `TableHash`=13330255 AND `RecordId`=166568) OR (`Id`=107948 AND `TableHash`=3146089301 AND `RecordId`=11574) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234409) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234408) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234407) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234406) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234405) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234404) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234403) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234402) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234400) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234399) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234396) OR (`Id`=107948 AND `TableHash`=1073915313 AND `RecordId`=234395) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107008) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107007) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107006) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107005) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107004) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107003) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107002) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107001) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=107000) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106999) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106998) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106997) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106996) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106995) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106994) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106993) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106992) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106991) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106990) OR (`Id`=107948 AND `TableHash`=1876974313 AND `RecordId`=106989) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275447) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275447) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275447) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275447) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275447) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275447) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275446) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275446) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275446) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275446) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275446) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275446) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275445) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275445) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275445) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275445) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275445) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275445) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275444) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275444) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275444) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275444) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275444) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275444) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275442) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275442) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275442) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275442) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275442) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275442) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275440) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275440) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275440) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275440) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275440) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275440) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=275436) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=275436) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=275436) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=275436) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=275436) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=275436) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=248248) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=248248) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=248248) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=248248) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=248248) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=248248) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=247822) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=247822) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=247822) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=247822) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=247822) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=247822) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=237141) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=237141) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=237141) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=237141) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=237141) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=237141) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=235549) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=235549) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=235549) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=235549) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=235549) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=235549) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=226357) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=226357) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=226357) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=226357) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=226357) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=226357) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=213438) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=213438) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=213438) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=213438) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=213438) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=213438) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=209060) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=209060) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=209060) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=209060) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=209060) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=209060) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=204798) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=204798) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=204798) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=204798) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=204798) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=204798) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=199412) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=199412) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=199412) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=199412) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=199412) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=199412) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=192557) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=192557) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=192557) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=192557) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=192557) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=192557) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=187682) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=187682) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=187682) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=187682) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=187682) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=187682) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=187525) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=187525) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=187525) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=187525) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=187525) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=187525) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=182717) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=182717) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=182717) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=182717) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=182717) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=182717) OR (`Id`=107948 AND `TableHash`=1344507586 AND `RecordId`=174836) OR (`Id`=107948 AND `TableHash`=428746933 AND `RecordId`=174836) OR (`Id`=107948 AND `TableHash`=2442913102 AND `RecordId`=174836) OR (`Id`=107948 AND `TableHash`=3465080266 AND `RecordId`=174836) OR (`Id`=107948 AND `TableHash`=3037505077 AND `RecordId`=174836) OR (`Id`=107948 AND `TableHash`=1417785224 AND `RecordId`=174836) OR (`Id`=107948 AND `TableHash`=2472642809 AND `RecordId`=61038) OR (`Id`=107948 AND `TableHash`=1255424668 AND `RecordId`=228515) OR (`Id`=107948 AND `TableHash`=1255424668 AND `RecordId`=228514) OR (`Id`=107948 AND `TableHash`=3218799089 AND `RecordId`=144756) OR (`Id`=107948 AND `TableHash`=3218799089 AND `RecordId`=144755) OR (`Id`=107948 AND `TableHash`=3218799089 AND `RecordId`=144754) OR (`Id`=107948 AND `TableHash`=3218799089 AND `RecordId`=144753) OR (`Id`=107948 AND `TableHash`=3218799089 AND `RecordId`=144752) OR (`Id`=107948 AND `TableHash`=3386943305 AND `RecordId`=329877) OR (`Id`=107948 AND `TableHash`=3386943305 AND `RecordId`=226061) OR (`Id`=107948 AND `TableHash`=3386291891 AND `RecordId`=250285) OR (`Id`=107948 AND `TableHash`=3386291891 AND `RecordId`=197711) OR (`Id`=107948 AND `TableHash`=2246024846 AND `RecordId`=1307) OR (`Id`=107948 AND `TableHash`=35137211 AND `RecordId`=315977) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61594) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61593) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61592) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61591) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61590) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61589) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61588) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61587) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61259) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61253) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61252) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61251) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61250) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61249) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61248) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61247) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61246) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61245) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61244) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61243) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61242) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61241) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61240) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61239) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61237) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61236) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61235) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=61233) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=12009) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=12005) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=12004) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=9036) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=9035) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=9034) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=9033) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=4525) OR (`Id`=107948 AND `TableHash`=3538824359 AND `RecordId`=4524) OR (`Id`=107947 AND `TableHash`=312611497 AND `RecordId`=28080) OR (`Id`=107947 AND `TableHash`=312611497 AND `RecordId`=28079) OR (`Id`=107947 AND `TableHash`=1163127287 AND `RecordId`=121341) OR (`Id`=107946 AND `TableHash`=312611497 AND `RecordId`=26859) OR (`Id`=107946 AND `TableHash`=312611497 AND `RecordId`=26858) OR (`Id`=107946 AND `TableHash`=1163127287 AND `RecordId`=47801) OR (`Id`=107946 AND `TableHash`=1163127287 AND `RecordId`=36268) OR (`Id`=107946 AND `TableHash`=1163127287 AND `RecordId`=18719) OR (`Id`=107946 AND `TableHash`=4096770149 AND `RecordId`=240548) OR (`Id`=107946 AND `TableHash`=1187407512 AND `RecordId`=466930) OR (`Id`=107946 AND `TableHash`=3776013982 AND `RecordId`=466930) OR (`Id`=107946 AND `TableHash`=3386943305 AND `RecordId`=322624) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95554) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95554) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95553) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95553) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95552) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95552) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95551) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95551) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95550) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95550) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95548) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95548) OR (`Id`=107945 AND `TableHash`=261693969 AND `RecordId`=95547) OR (`Id`=107945 AND `TableHash`=986198281 AND `RecordId`=95547) OR (`Id`=107943 AND `TableHash`=1163127287 AND `RecordId`=98186) OR (`Id`=107942 AND `TableHash`=1163127287 AND `RecordId`=103312) OR (`Id`=107942 AND `TableHash`=1163127287 AND `RecordId`=32391) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1291739) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1291739) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1281946) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1281946) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1277647) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1277647) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1277645) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1277645) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1270634) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1270634) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1270085) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1270085) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1270079) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1270079) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1258411) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1258411) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1258410) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1258410) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1258336) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1258336) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1257809) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1257809) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1257729) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1257729) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1257728) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1257728) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1257716) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1257716) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1257505) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1257505) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1256189) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1256189) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1255966) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1255966) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1253337) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1253337) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1253336) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1253336) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1253194) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1253194) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1253193) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1253193) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1253185) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1253185) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1253064) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1253064) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1252431) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1252431) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1241032) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1241032) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1241023) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1241023) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235076) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235076) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235075) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235075) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235072) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235072) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235067) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235067) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235066) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235066) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235065) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235065) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1235037) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1235037) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1233865) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1233865) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1228865) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1228865) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1225598) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1225598) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1225322) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1225322) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1225281) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1225281) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1225277) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1225277) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1225273) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1225273) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=1225272) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=1225272) OR (`Id`=107941 AND `TableHash`=1187407512 AND `RecordId`=444803) OR (`Id`=107941 AND `TableHash`=3776013982 AND `RecordId`=444803) OR (`Id`=107941 AND `TableHash`=2524150337 AND `RecordId`=2535) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=35537) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=32672) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=32669) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=31527) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=31282) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=31281) OR (`Id`=107941 AND `TableHash`=2035710060 AND `RecordId`=31280) OR (`Id`=107941 AND `TableHash`=3205218938 AND `RecordId`=56772) OR (`Id`=107941 AND `TableHash`=3205218938 AND `RecordId`=56771) OR (`Id`=107941 AND `TableHash`=3205218938 AND `RecordId`=56770) OR (`Id`=107941 AND `TableHash`=3205218938 AND `RecordId`=22337) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3347) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3346) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3345) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3344) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3343) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3342) OR (`Id`=107941 AND `TableHash`=793851790 AND `RecordId`=3341) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=309753) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=309750) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=309106) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=308983) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=308778) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=308501) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=307565) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=307197) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=306852) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=306851) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=306762) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=306157) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=305742) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=305450) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=304923) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=304524) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=304509) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=304508) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=304505) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=303990) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=303988) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=303870) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=303530) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=303469) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=302008) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=301212) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=301005) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=300642) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=300632) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=299668) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=299666) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=298821) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=296530) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=296471) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=296185) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=296020) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=296015) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=295738) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=295405) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=295258) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=293787) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=293774) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=293748) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=293576) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=293014) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=292680) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=292548) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=292410) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=291754) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=291658) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=291236) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=290529) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=289969) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=289399) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=288359) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=288136) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=288133) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=287914) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=287852) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=287847) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=287600) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=286257) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=282160) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=247439) OR (`Id`=107941 AND `TableHash`=35137211 AND `RecordId`=239474) OR (`Id`=107940 AND `TableHash`=4030871717 AND `RecordId`=1316373) OR (`Id`=107936 AND `TableHash`=3322146344 AND `RecordId`=804911) OR (`Id`=107936 AND `TableHash`=3322146344 AND `RecordId`=804907) OR (`Id`=107936 AND `TableHash`=1720692227 AND `RecordId`=243176) OR (`Id`=107936 AND `TableHash`=1187407512 AND `RecordId`=1250759) OR (`Id`=107936 AND `TableHash`=3776013982 AND `RecordId`=1250759) OR (`Id`=107932 AND `TableHash`=1010104591 AND `RecordId`=26054) OR (`Id`=107932 AND `TableHash`=1010104591 AND `RecordId`=26049) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=16231) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=11499) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=10852) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=8989) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=5689) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=5115) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=1801) OR (`Id`=107932 AND `TableHash`=326190544 AND `RecordId`=1261) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=651779) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=651727) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=651722) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=619183) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=602676) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=584571) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=574562) OR (`Id`=107932 AND `TableHash`=331613093 AND `RecordId`=567311) OR (`Id`=107931 AND `TableHash`=331613093 AND `RecordId`=629752) OR (`Id`=107930 AND `TableHash`=3322146344 AND `RecordId`=780179) OR (`Id`=107930 AND `TableHash`=4030871717 AND `RecordId`=1214968) OR (`Id`=107930 AND `TableHash`=3386943305 AND `RecordId`=319886) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5841) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5840) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5839) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5838) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5837) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5836) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5835) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5834) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5833) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5832) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5831) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5830) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5829) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5828) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5827) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5826) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5825) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5824) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5823) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5822) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5821) OR (`Id`=107928 AND `TableHash`=3855640965 AND `RecordId`=5820) OR (`Id`=107925 AND `TableHash`=2995956864 AND `RecordId`=137688) OR (`Id`=107925 AND `TableHash`=2995956864 AND `RecordId`=137685) OR (`Id`=107925 AND `TableHash`=2995956864 AND `RecordId`=137681) OR (`Id`=107925 AND `TableHash`=3699769440 AND `RecordId`=31063) OR (`Id`=107925 AND `TableHash`=3699769440 AND `RecordId`=31061) OR (`Id`=107925 AND `TableHash`=3699769440 AND `RecordId`=31059) OR (`Id`=107925 AND `TableHash`=3699769440 AND `RecordId`=31057) OR (`Id`=107924 AND `TableHash`=3386943305 AND `RecordId`=333205) OR (`Id`=107924 AND `TableHash`=3386943305 AND `RecordId`=333201) OR (`Id`=107924 AND `TableHash`=3386943305 AND `RecordId`=333197) OR (`Id`=107923 AND `TableHash`=1344507586 AND `RecordId`=257741) OR (`Id`=107923 AND `TableHash`=428746933 AND `RecordId`=257741) OR (`Id`=107923 AND `TableHash`=2442913102 AND `RecordId`=257741) OR (`Id`=107923 AND `TableHash`=3465080266 AND `RecordId`=257741) OR (`Id`=107923 AND `TableHash`=3037505077 AND `RecordId`=257741) OR (`Id`=107923 AND `TableHash`=1417785224 AND `RecordId`=257741) OR (`Id`=107923 AND `TableHash`=1344507586 AND `RecordId`=257735) OR (`Id`=107923 AND `TableHash`=428746933 AND `RecordId`=257735) OR (`Id`=107923 AND `TableHash`=2442913102 AND `RecordId`=257735) OR (`Id`=107923 AND `TableHash`=3465080266 AND `RecordId`=257735) OR (`Id`=107923 AND `TableHash`=3037505077 AND `RecordId`=257735) OR (`Id`=107923 AND `TableHash`=1417785224 AND `RecordId`=257735) OR (`Id`=107923 AND `TableHash`=1344507586 AND `RecordId`=255844) OR (`Id`=107923 AND `TableHash`=428746933 AND `RecordId`=255844) OR (`Id`=107923 AND `TableHash`=2442913102 AND `RecordId`=255844) OR (`Id`=107923 AND `TableHash`=3465080266 AND `RecordId`=255844) OR (`Id`=107923 AND `TableHash`=3037505077 AND `RecordId`=255844) OR (`Id`=107923 AND `TableHash`=1417785224 AND `RecordId`=255844) OR (`Id`=107923 AND `TableHash`=1344507586 AND `RecordId`=255843) OR (`Id`=107923 AND `TableHash`=428746933 AND `RecordId`=255843) OR (`Id`=107923 AND `TableHash`=2442913102 AND `RecordId`=255843) OR (`Id`=107923 AND `TableHash`=3465080266 AND `RecordId`=255843) OR (`Id`=107923 AND `TableHash`=3037505077 AND `RecordId`=255843) OR (`Id`=107923 AND `TableHash`=1417785224 AND `RecordId`=255843) OR (`Id`=107923 AND `TableHash`=1344507586 AND `RecordId`=248592) OR (`Id`=107923 AND `TableHash`=428746933 AND `RecordId`=248592) OR (`Id`=107923 AND `TableHash`=2442913102 AND `RecordId`=248592) OR (`Id`=107923 AND `TableHash`=3465080266 AND `RecordId`=248592) OR (`Id`=107923 AND `TableHash`=3037505077 AND `RecordId`=248592) OR (`Id`=107923 AND `TableHash`=1417785224 AND `RecordId`=248592) OR (`Id`=107923 AND `TableHash`=1344507586 AND `RecordId`=248135) OR (`Id`=107923 AND `TableHash`=428746933 AND `RecordId`=248135) OR (`Id`=107923 AND `TableHash`=2442913102 AND `RecordId`=248135) OR (`Id`=107923 AND `TableHash`=3465080266 AND `RecordId`=248135) OR (`Id`=107923 AND `TableHash`=3037505077 AND `RecordId`=248135) OR (`Id`=107923 AND `TableHash`=1417785224 AND `RecordId`=248135) OR (`Id`=107922 AND `TableHash`=1274215428 AND `RecordId`=869) OR (`Id`=107921 AND `TableHash`=3764692828 AND `RecordId`=345687) OR (`Id`=107921 AND `TableHash`=3764692828 AND `RecordId`=342077) OR (`Id`=107921 AND `TableHash`=1163127287 AND `RecordId`=119492) OR (`Id`=107921 AND `TableHash`=1163127287 AND `RecordId`=112947) OR (`Id`=107921 AND `TableHash`=3386943305 AND `RecordId`=334188) OR (`Id`=107921 AND `TableHash`=3386943305 AND `RecordId`=334175) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=331958) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=331954) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=326150) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=326149) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=326148) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=325147) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=325146) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=325145) OR (`Id`=107920 AND `TableHash`=3386943305 AND `RecordId`=325144) OR (`Id`=107919 AND `TableHash`=2124448848 AND `RecordId`=232526) OR (`Id`=107919 AND `TableHash`=2712461791 AND `RecordId`=232526) OR (`Id`=107919 AND `TableHash`=4030871717 AND `RecordId`=896453) OR (`Id`=107919 AND `TableHash`=4030871717 AND `RecordId`=890886) OR (`Id`=107918 AND `TableHash`=1163127287 AND `RecordId`=121243) OR (`Id`=107918 AND `TableHash`=3386943305 AND `RecordId`=172189) OR (`Id`=107917 AND `TableHash`=3179597154 AND `RecordId`=2907) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=21946) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=21945) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=21061) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=21060) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=17750) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=16102) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=16101) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=16100) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=16099) OR (`Id`=107916 AND `TableHash`=326190544 AND `RecordId`=16098) OR (`Id`=107914 AND `TableHash`=1163127287 AND `RecordId`=120099) OR (`Id`=107914 AND `TableHash`=1163127287 AND `RecordId`=120077) OR (`Id`=107913 AND `TableHash`=1187407512 AND `RecordId`=1276894) OR (`Id`=107913 AND `TableHash`=3776013982 AND `RecordId`=1276894) OR (`Id`=107913 AND `TableHash`=261693969 AND `RecordId`=94625) OR (`Id`=107913 AND `TableHash`=986198281 AND `RecordId`=94625) OR (`Id`=107913 AND `TableHash`=793851790 AND `RecordId`=3418) OR (`Id`=107912 AND `TableHash`=1163127287 AND `RecordId`=100784) OR (`Id`=107912 AND `TableHash`=1163127287 AND `RecordId`=92847) OR (`Id`=107912 AND `TableHash`=1163127287 AND `RecordId`=92759) OR (`Id`=107912 AND `TableHash`=4030871717 AND `RecordId`=1319202) OR (`Id`=107912 AND `TableHash`=4030871717 AND `RecordId`=1319201) OR (`Id`=107912 AND `TableHash`=4030871717 AND `RecordId`=1319200) OR (`Id`=107912 AND `TableHash`=4030871717 AND `RecordId`=1319005) OR (`Id`=107908 AND `TableHash`=1163127287 AND `RecordId`=114352) OR (`Id`=107905 AND `TableHash`=844464874 AND `RecordId`=330713) OR (`Id`=107905 AND `TableHash`=844464874 AND `RecordId`=327196) OR (`Id`=107905 AND `TableHash`=2527642838 AND `RecordId`=1008) OR (`Id`=107905 AND `TableHash`=2527642838 AND `RecordId`=1007) OR (`Id`=107905 AND `TableHash`=2793276977 AND `RecordId`=29457) OR (`Id`=107905 AND `TableHash`=2793276977 AND `RecordId`=29456) OR (`Id`=107905 AND `TableHash`=2793276977 AND `RecordId`=29455) OR (`Id`=107905 AND `TableHash`=2793276977 AND `RecordId`=28843) OR (`Id`=107905 AND `TableHash`=2793276977 AND `RecordId`=28842) OR (`Id`=107905 AND `TableHash`=1512352357 AND `RecordId`=243) OR (`Id`=107905 AND `TableHash`=1512352357 AND `RecordId`=242) OR (`Id`=107904 AND `TableHash`=1163127287 AND `RecordId`=128520) OR (`Id`=107904 AND `TableHash`=1163127287 AND `RecordId`=128519) OR (`Id`=107904 AND `TableHash`=1163127287 AND `RecordId`=18513) OR (`Id`=107904 AND `TableHash`=1163127287 AND `RecordId`=18358) OR (`Id`=107904 AND `TableHash`=3322146344 AND `RecordId`=88185) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=1319104) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=1284187) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=349470) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=298412) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=260932) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=260931) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=260930) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=191104) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=191084) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=179713) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=179708) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=132060) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=129048) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=86331) OR (`Id`=107904 AND `TableHash`=4030871717 AND `RecordId`=15852) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=1266430) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=1264711) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=260998) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=260997) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=191049) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=191048) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=191047) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=191046) OR (`Id`=107903 AND `TableHash`=4030871717 AND `RecordId`=179723) OR (`Id`=107901 AND `TableHash`=1163127287 AND `RecordId`=128220) OR (`Id`=107901 AND `TableHash`=1163127287 AND `RecordId`=116321) OR (`Id`=107901 AND `TableHash`=1163127287 AND `RecordId`=116320) OR (`Id`=107900 AND `TableHash`=2524150337 AND `RecordId`=2837) OR (`Id`=107899 AND `TableHash`=1163127287 AND `RecordId`=122008) OR (`Id`=107898 AND `TableHash`=3108775943 AND `RecordId`=157422) OR (`Id`=107898 AND `TableHash`=3108775943 AND `RecordId`=157421) OR (`Id`=107896 AND `TableHash`=4033975491 AND `RecordId`=608057) OR (`Id`=107896 AND `TableHash`=4033975491 AND `RecordId`=552672) OR (`Id`=107896 AND `TableHash`=1181150530 AND `RecordId`=754613) OR (`Id`=107896 AND `TableHash`=1181150530 AND `RecordId`=754387) OR (`Id`=107896 AND `TableHash`=1181150530 AND `RecordId`=724924) OR (`Id`=107896 AND `TableHash`=1181150530 AND `RecordId`=603949) OR (`Id`=107896 AND `TableHash`=760092799 AND `RecordId`=236) OR (`Id`=107896 AND `TableHash`=760092799 AND `RecordId`=235) OR (`Id`=107896 AND `TableHash`=3764692828 AND `RecordId`=352446) OR (`Id`=107896 AND `TableHash`=3764692828 AND `RecordId`=352421) OR (`Id`=107896 AND `TableHash`=1163127287 AND `RecordId`=128257) OR (`Id`=107896 AND `TableHash`=1163127287 AND `RecordId`=128244) OR (`Id`=107896 AND `TableHash`=1163127287 AND `RecordId`=128216) OR (`Id`=107896 AND `TableHash`=1163127287 AND `RecordId`=128215) OR (`Id`=107896 AND `TableHash`=1163127287 AND `RecordId`=128214) OR (`Id`=107896 AND `TableHash`=3322146344 AND `RecordId`=843802) OR (`Id`=107896 AND `TableHash`=3322146344 AND `RecordId`=843748) OR (`Id`=107896 AND `TableHash`=3322146344 AND `RecordId`=830875) OR (`Id`=107896 AND `TableHash`=3322146344 AND `RecordId`=764851) OR (`Id`=107896 AND `TableHash`=4030871717 AND `RecordId`=1319047) OR (`Id`=107896 AND `TableHash`=4030871717 AND `RecordId`=1318967) OR (`Id`=107896 AND `TableHash`=4030871717 AND `RecordId`=1318959) OR (`Id`=107896 AND `TableHash`=4030871717 AND `RecordId`=1318955) OR (`Id`=107896 AND `TableHash`=4030871717 AND `RecordId`=1189889) OR (`Id`=107896 AND `TableHash`=1187407512 AND `RecordId`=1296448) OR (`Id`=107896 AND `TableHash`=3776013982 AND `RecordId`=1296448) OR (`Id`=107896 AND `TableHash`=1187407512 AND `RecordId`=1296396) OR (`Id`=107896 AND `TableHash`=3776013982 AND `RecordId`=1296396) OR (`Id`=107896 AND `TableHash`=1187407512 AND `RecordId`=472053) OR (`Id`=107896 AND `TableHash`=3776013982 AND `RecordId`=472053) OR (`Id`=107895 AND `TableHash`=1344507586 AND `RecordId`=274427) OR (`Id`=107895 AND `TableHash`=428746933 AND `RecordId`=274427) OR (`Id`=107895 AND `TableHash`=2442913102 AND `RecordId`=274427) OR (`Id`=107895 AND `TableHash`=3465080266 AND `RecordId`=274427) OR (`Id`=107895 AND `TableHash`=3037505077 AND `RecordId`=274427) OR (`Id`=107895 AND `TableHash`=1417785224 AND `RecordId`=274427) OR (`Id`=107894 AND `TableHash`=1163127287 AND `RecordId`=119698) OR (`Id`=107894 AND `TableHash`=1163127287 AND `RecordId`=119697) OR (`Id`=107892 AND `TableHash`=3571931810 AND `RecordId`=39140) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=37931) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=37930) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=35858) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=35857) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=35110) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=34936) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=34560) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=31234) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=31233) OR (`Id`=107891 AND `TableHash`=736158310 AND `RecordId`=31232) OR (`Id`=107891 AND `TableHash`=3232102598 AND `RecordId`=287705) OR (`Id`=107891 AND `TableHash`=3232102598 AND `RecordId`=277374) OR (`Id`=107891 AND `TableHash`=3232102598 AND `RecordId`=277372) OR (`Id`=107891 AND `TableHash`=3232102598 AND `RecordId`=277371) OR (`Id`=107891 AND `TableHash`=3232102598 AND `RecordId`=253483) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=332176) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=332175) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=327695) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=327694) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=325839) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=325429) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=324387) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=324014) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=313284) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=313283) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=313282) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=313280) OR (`Id`=107891 AND `TableHash`=908293937 AND `RecordId`=289292) OR (`Id`=107891 AND `TableHash`=2445379776 AND `RecordId`=10028) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267643) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267643) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267643) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267643) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267643) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267643) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267642) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267642) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267642) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267642) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267642) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267642) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267641) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267641) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267641) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267641) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267641) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267641) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267640) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267640) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267640) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267640) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267640) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267640) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267639) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267639) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267639) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267639) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267639) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267639) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267638) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267638) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267638) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267638) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267638) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267638) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267607) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267607) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267607) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267607) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267607) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267607) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267606) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267606) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267606) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267606) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267606) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267606) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267605) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267605) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267605) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267605) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267605) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267605) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267604) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267604) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267604) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267604) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267604) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267604) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267482) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267482) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267482) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267482) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267482) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267482) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267481) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267481) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267481) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267481) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267481) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267481) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267480) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267480) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267480) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267480) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267480) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267480) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=267479) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=267479) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=267479) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=267479) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=267479) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=267479) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=266432) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=266432) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=266432) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=266432) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=266432) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=266432) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=266431) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=266431) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=266431) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=266431) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=266431) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=266431) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=266430) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=266430) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=266430) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=266430) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=266430) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=266430) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=266429) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=266429) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=266429) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=266429) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=266429) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=266429) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=265740) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=265740) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=265740) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=265740) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=265740) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=265740) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=265739) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=265739) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=265739) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=265739) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=265739) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=265739) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=264507) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=264507) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=264507) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=264507) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=264507) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=264507) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=263269) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=263269) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=263269) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=263269) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=263269) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=263269) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=263268) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=263268) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=263268) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=263268) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=263268) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=263268) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=263267) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=263267) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=263267) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=263267) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=263267) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=263267) OR (`Id`=107889 AND `TableHash`=1344507586 AND `RecordId`=263265) OR (`Id`=107889 AND `TableHash`=428746933 AND `RecordId`=263265) OR (`Id`=107889 AND `TableHash`=2442913102 AND `RecordId`=263265) OR (`Id`=107889 AND `TableHash`=3465080266 AND `RecordId`=263265) OR (`Id`=107889 AND `TableHash`=3037505077 AND `RecordId`=263265) OR (`Id`=107889 AND `TableHash`=1417785224 AND `RecordId`=263265) OR (`Id`=107888 AND `TableHash`=3386943305 AND `RecordId`=93761) OR (`Id`=107888 AND `TableHash`=3386943305 AND `RecordId`=87654) OR (`Id`=107888 AND `TableHash`=3386943305 AND `RecordId`=76855) OR (`Id`=107888 AND `TableHash`=3386943305 AND `RecordId`=76854) OR (`Id`=107888 AND `TableHash`=3386943305 AND `RecordId`=76853) OR (`Id`=107887 AND `TableHash`=3764692828 AND `RecordId`=352383) OR (`Id`=107887 AND `TableHash`=1163127287 AND `RecordId`=125955) OR (`Id`=107887 AND `TableHash`=2875640223 AND `RecordId`=38861) OR (`Id`=107887 AND `TableHash`=3322146344 AND `RecordId`=843580) OR (`Id`=107887 AND `TableHash`=4030871717 AND `RecordId`=1318722) OR (`Id`=107887 AND `TableHash`=4030871717 AND `RecordId`=1318721) OR (`Id`=107887 AND `TableHash`=1187407512 AND `RecordId`=1296214) OR (`Id`=107887 AND `TableHash`=3776013982 AND `RecordId`=1296214) OR (`Id`=107887 AND `TableHash`=2120822102 AND `RecordId`=447286) OR (`Id`=107887 AND `TableHash`=2120822102 AND `RecordId`=447285) OR (`Id`=107887 AND `TableHash`=3653642729 AND `RecordId`=376) OR (`Id`=107887 AND `TableHash`=1673391669 AND `RecordId`=141) OR (`Id`=107887 AND `TableHash`=2791084701 AND `RecordId`=138) OR (`Id`=107887 AND `TableHash`=2793276977 AND `RecordId`=29453) OR (`Id`=107887 AND `TableHash`=2793276977 AND `RecordId`=29452) OR (`Id`=107887 AND `TableHash`=962617990 AND `RecordId`=13760) OR (`Id`=107887 AND `TableHash`=2518885667 AND `RecordId`=13760) OR (`Id`=107887 AND `TableHash`=312962813 AND `RecordId`=13760) OR (`Id`=107887 AND `TableHash`=2199425034 AND `RecordId`=31223) OR (`Id`=107887 AND `TableHash`=2199425034 AND `RecordId`=30634) OR (`Id`=107887 AND `TableHash`=2199425034 AND `RecordId`=29370) OR (`Id`=107887 AND `TableHash`=2199425034 AND `RecordId`=29368) OR (`Id`=107887 AND `TableHash`=2199425034 AND `RecordId`=29367) OR (`Id`=107887 AND `TableHash`=2199425034 AND `RecordId`=29366) OR (`Id`=107886 AND `TableHash`=3322146344 AND `RecordId`=843566) OR (`Id`=107886 AND `TableHash`=4030871717 AND `RecordId`=1318706) OR (`Id`=107886 AND `TableHash`=1187407512 AND `RecordId`=1296205) OR (`Id`=107886 AND `TableHash`=3776013982 AND `RecordId`=1296205) OR (`Id`=107886 AND `TableHash`=2575642838 AND `RecordId`=760) OR (`Id`=107885 AND `TableHash`=261693969 AND `RecordId`=94456) OR (`Id`=107885 AND `TableHash`=986198281 AND `RecordId`=94456) OR (`Id`=107885 AND `TableHash`=261693969 AND `RecordId`=94386) OR (`Id`=107885 AND `TableHash`=986198281 AND `RecordId`=94386) OR (`Id`=107885 AND `TableHash`=261693969 AND `RecordId`=94385) OR (`Id`=107885 AND `TableHash`=986198281 AND `RecordId`=94385) OR (`Id`=107885 AND `TableHash`=261693969 AND `RecordId`=92589) OR (`Id`=107885 AND `TableHash`=986198281 AND `RecordId`=92589) OR (`Id`=107883 AND `TableHash`=1163127287 AND `RecordId`=123279) OR (`Id`=107881 AND `TableHash`=3386943305 AND `RecordId`=93885) OR (`Id`=107881 AND `TableHash`=3386943305 AND `RecordId`=88159) OR (`Id`=107881 AND `TableHash`=3386943305 AND `RecordId`=76641) OR (`Id`=107881 AND `TableHash`=3386943305 AND `RecordId`=76640) OR (`Id`=107881 AND `TableHash`=3386943305 AND `RecordId`=72408) OR (`Id`=107877 AND `TableHash`=476847390 AND `RecordId`=192) OR (`Id`=107876 AND `TableHash`=3764692828 AND `RecordId`=352377) OR (`Id`=107876 AND `TableHash`=3764692828 AND `RecordId`=352376) OR (`Id`=107876 AND `TableHash`=3322146344 AND `RecordId`=843538) OR (`Id`=107876 AND `TableHash`=3322146344 AND `RecordId`=843537) OR (`Id`=107876 AND `TableHash`=813076512 AND `RecordId`=205021) OR (`Id`=107876 AND `TableHash`=813076512 AND `RecordId`=205020) OR (`Id`=107876 AND `TableHash`=4030871717 AND `RecordId`=1318642) OR (`Id`=107876 AND `TableHash`=4030871717 AND `RecordId`=1318641) OR (`Id`=107876 AND `TableHash`=4193483863 AND `RecordId`=99730) OR (`Id`=107876 AND `TableHash`=3689412649 AND `RecordId`=184419) OR (`Id`=107876 AND `TableHash`=1187407512 AND `RecordId`=1296169) OR (`Id`=107876 AND `TableHash`=3776013982 AND `RecordId`=1296169) OR (`Id`=107876 AND `TableHash`=1187407512 AND `RecordId`=1296168) OR (`Id`=107876 AND `TableHash`=3776013982 AND `RecordId`=1296168) OR (`Id`=107876 AND `TableHash`=600565378 AND `RecordId`=665351) OR (`Id`=107876 AND `TableHash`=600565378 AND `RecordId`=665333) OR (`Id`=107876 AND `TableHash`=3386943305 AND `RecordId`=349580) OR (`Id`=107876 AND `TableHash`=3386291891 AND `RecordId`=266004) OR (`Id`=107875 AND `TableHash`=1163127287 AND `RecordId`=116828) OR (`Id`=107874 AND `TableHash`=3322146344 AND `RecordId`=801212) OR (`Id`=107874 AND `TableHash`=4030871717 AND `RecordId`=1248742) OR (`Id`=107873 AND `TableHash`=4150907485 AND `RecordId`=1224) OR (`Id`=107872 AND `TableHash`=240389885 AND `RecordId`=9569) OR (`Id`=107872 AND `TableHash`=240389885 AND `RecordId`=9568) OR (`Id`=107872 AND `TableHash`=312611497 AND `RecordId`=27641) OR (`Id`=107872 AND `TableHash`=312611497 AND `RecordId`=27640) OR (`Id`=107872 AND `TableHash`=1163127287 AND `RecordId`=122982) OR (`Id`=107872 AND `TableHash`=368401261 AND `RecordId`=7360) OR (`Id`=107872 AND `TableHash`=368401261 AND `RecordId`=7355) OR (`Id`=107872 AND `TableHash`=368401261 AND `RecordId`=7354) OR (`Id`=107871 AND `TableHash`=3322146344 AND `RecordId`=839257) OR (`Id`=107871 AND `TableHash`=3322146344 AND `RecordId`=839254) OR (`Id`=107871 AND `TableHash`=4030871717 AND `RecordId`=1318610) OR (`Id`=107871 AND `TableHash`=4030871717 AND `RecordId`=1311365) OR (`Id`=107871 AND `TableHash`=3689412649 AND `RecordId`=184416) OR (`Id`=107871 AND `TableHash`=1187407512 AND `RecordId`=1291767) OR (`Id`=107871 AND `TableHash`=3776013982 AND `RecordId`=1291767) OR (`Id`=107870 AND `TableHash`=1163127287 AND `RecordId`=56348) OR (`Id`=107869 AND `TableHash`=3425193231 AND `RecordId`=529585) OR (`Id`=107869 AND `TableHash`=4146370265 AND `RecordId`=174064) OR (`Id`=107869 AND `TableHash`=4030871717 AND `RecordId`=1284429) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=198541) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=186947) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=180201) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=141535) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=129090) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=101767) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=101419) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=101260) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100977) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100778) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100777) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100776) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100775) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100774) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=100773) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96485) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96408) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96407) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96406) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96405) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96404) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96403) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96359) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96358) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=96357) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92808) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92807) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92806) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92805) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92804) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92803) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92802) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=92801) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=83325) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=83324) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=83323) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=83126) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=83125) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=83123) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=62410) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=62409) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=62408) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=49020) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=35941) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=26820) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=7614) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3664) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3644) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3604) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3584) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3521) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3471) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3453) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3452) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=3436) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2583) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2569) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2568) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2567) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2467) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2466) OR (`Id`=107867 AND `TableHash`=1274215428 AND `RecordId`=2465) OR (`Id`=107864 AND `TableHash`=1163127287 AND `RecordId`=126250) OR (`Id`=107864 AND `TableHash`=1163127287 AND `RecordId`=64648) OR (`Id`=107860 AND `TableHash`=3108775943 AND `RecordId`=155203) OR (`Id`=107860 AND `TableHash`=3108775943 AND `RecordId`=155192) OR (`Id`=107860 AND `TableHash`=3108775943 AND `RecordId`=155185) OR (`Id`=107860 AND `TableHash`=3108775943 AND `RecordId`=154642) OR (`Id`=107859 AND `TableHash`=3664936999 AND `RecordId`=33417) OR (`Id`=107859 AND `TableHash`=3898252553 AND `RecordId`=11663) OR (`Id`=107859 AND `TableHash`=3898252553 AND `RecordId`=11662) OR (`Id`=107859 AND `TableHash`=3898252553 AND `RecordId`=11661) OR (`Id`=107859 AND `TableHash`=3898252553 AND `RecordId`=11616) OR (`Id`=107857 AND `TableHash`=3108775943 AND `RecordId`=156525) OR (`Id`=107857 AND `TableHash`=3108775943 AND `RecordId`=156524) OR (`Id`=107857 AND `TableHash`=3108775943 AND `RecordId`=151196) OR (`Id`=107857 AND `TableHash`=3745449290 AND `RecordId`=8614) OR (`Id`=107856 AND `TableHash`=261693969 AND `RecordId`=96080) OR (`Id`=107856 AND `TableHash`=986198281 AND `RecordId`=96080) OR (`Id`=107856 AND `TableHash`=261693969 AND `RecordId`=94380) OR (`Id`=107856 AND `TableHash`=986198281 AND `RecordId`=94380) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=5001) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=4216) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=4215) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=3748) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=2714) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=1704) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=463) OR (`Id`=107855 AND `TableHash`=3764045193 AND `RecordId`=43) OR (`Id`=107854 AND `TableHash`=3567803627 AND `RecordId`=13671) OR (`Id`=107854 AND `TableHash`=1163127287 AND `RecordId`=128229) OR (`Id`=107854 AND `TableHash`=1163127287 AND `RecordId`=128170) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=843754) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=835570) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=824543) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=824542) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=824534) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=818771) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=815712) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=809806) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=808307) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=151457) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=128030) OR (`Id`=107854 AND `TableHash`=3322146344 AND `RecordId`=127836) OR (`Id`=107854 AND `TableHash`=4030871717 AND `RecordId`=1318975) OR (`Id`=107854 AND `TableHash`=4030871717 AND `RecordId`=1318536) OR (`Id`=107854 AND `TableHash`=4030871717 AND `RecordId`=1275771) OR (`Id`=107854 AND `TableHash`=4030871717 AND `RecordId`=1273839) OR (`Id`=107854 AND `TableHash`=4030871717 AND `RecordId`=1273077) OR (`Id`=107854 AND `TableHash`=1187407512 AND `RecordId`=1296406) OR (`Id`=107854 AND `TableHash`=3776013982 AND `RecordId`=1296406) OR (`Id`=107854 AND `TableHash`=2575642838 AND `RecordId`=765) OR (`Id`=107854 AND `TableHash`=2575642838 AND `RecordId`=764) OR (`Id`=107854 AND `TableHash`=3386943305 AND `RecordId`=328245) OR (`Id`=107854 AND `TableHash`=3386943305 AND `RecordId`=322377) OR (`Id`=107854 AND `TableHash`=1548466975 AND `RecordId`=42116) OR (`Id`=107854 AND `TableHash`=1548466975 AND `RecordId`=42115) OR (`Id`=107854 AND `TableHash`=1548466975 AND `RecordId`=42112) OR (`Id`=107854 AND `TableHash`=1548466975 AND `RecordId`=30616) OR (`Id`=107853 AND `TableHash`=3386943305 AND `RecordId`=342088) OR (`Id`=107851 AND `TableHash`=1163127287 AND `RecordId`=105053) OR (`Id`=107851 AND `TableHash`=1163127287 AND `RecordId`=92259) OR (`Id`=107849 AND `TableHash`=191387957 AND `RecordId`=1320) OR (`Id`=107849 AND `TableHash`=191387957 AND `RecordId`=1315) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=1008) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=1007) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=1006) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=1005) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=946) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=834) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=833) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=810) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=745) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=712) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=641) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=640) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=568) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=426) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=48) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=18) OR (`Id`=107848 AND `TableHash`=378810315 AND `RecordId`=8) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=10778) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=10542) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=10327) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=8993) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=8877) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=2605) OR (`Id`=107845 AND `TableHash`=326190544 AND `RecordId`=2299) OR (`Id`=107843 AND `TableHash`=3764692828 AND `RecordId`=352242) OR (`Id`=107843 AND `TableHash`=4030871717 AND `RecordId`=1314559) OR (`Id`=107843 AND `TableHash`=4030871717 AND `RecordId`=1245026) OR (`Id`=107842 AND `TableHash`=4030871717 AND `RecordId`=1231028) OR (`Id`=107841 AND `TableHash`=312611497 AND `RecordId`=28420) OR (`Id`=107841 AND `TableHash`=312611497 AND `RecordId`=28419) OR (`Id`=107841 AND `TableHash`=1163127287 AND `RecordId`=121447) OR (`Id`=107841 AND `TableHash`=1163127287 AND `RecordId`=121076) OR (`Id`=107841 AND `TableHash`=4030871717 AND `RecordId`=1311612) OR (`Id`=107841 AND `TableHash`=4030871717 AND `RecordId`=1279209) OR (`Id`=107840 AND `TableHash`=1181150530 AND `RecordId`=753589) OR (`Id`=107840 AND `TableHash`=1181150530 AND `RecordId`=672480) OR (`Id`=107840 AND `TableHash`=4102286043 AND `RecordId`=266439) OR (`Id`=107840 AND `TableHash`=4102286043 AND `RecordId`=238952) OR (`Id`=107840 AND `TableHash`=3425193231 AND `RecordId`=547448) OR (`Id`=107840 AND `TableHash`=859088734 AND `RecordId`=430627) OR (`Id`=107840 AND `TableHash`=859088734 AND `RecordId`=420727) OR (`Id`=107840 AND `TableHash`=4146370265 AND `RecordId`=166308) OR (`Id`=107840 AND `TableHash`=3322146344 AND `RecordId`=801812) OR (`Id`=107837 AND `TableHash`=4030871717 AND `RecordId`=1156794) OR (`Id`=107837 AND `TableHash`=4030871717 AND `RecordId`=1156793) OR (`Id`=107837 AND `TableHash`=4030871717 AND `RecordId`=1004615) OR (`Id`=107835 AND `TableHash`=3359787322 AND `RecordId`=31558) OR (`Id`=107835 AND `TableHash`=666345498 AND `RecordId`=519430) OR (`Id`=107835 AND `TableHash`=666345498 AND `RecordId`=519428) OR (`Id`=107835 AND `TableHash`=666345498 AND `RecordId`=519417) OR (`Id`=107835 AND `TableHash`=666345498 AND `RecordId`=519411) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620663) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620660) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620644) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620643) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620642) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620640) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620630) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620629) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620627) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620612) OR (`Id`=107835 AND `TableHash`=4033975491 AND `RecordId`=620611) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753547) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753546) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753541) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753540) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753510) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753509) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753508) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753507) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753506) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753505) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753504) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753500) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753490) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753489) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753488) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753485) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753484) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753450) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753449) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753448) OR (`Id`=107835 AND `TableHash`=1181150530 AND `RecordId`=753447) OR (`Id`=107835 AND `TableHash`=4102286043 AND `RecordId`=266425) OR (`Id`=107835 AND `TableHash`=4102286043 AND `RecordId`=266423) OR (`Id`=107835 AND `TableHash`=4102286043 AND `RecordId`=266408) OR (`Id`=107835 AND `TableHash`=4102286043 AND `RecordId`=266397) OR (`Id`=107835 AND `TableHash`=3425193231 AND `RecordId`=547444) OR (`Id`=107835 AND `TableHash`=3425193231 AND `RecordId`=547442) OR (`Id`=107835 AND `TableHash`=3425193231 AND `RecordId`=547424) OR (`Id`=107835 AND `TableHash`=3425193231 AND `RecordId`=547406) OR (`Id`=107835 AND `TableHash`=859088734 AND `RecordId`=430618) OR (`Id`=107835 AND `TableHash`=859088734 AND `RecordId`=430616) OR (`Id`=107835 AND `TableHash`=859088734 AND `RecordId`=430613) OR (`Id`=107835 AND `TableHash`=859088734 AND `RecordId`=430612) OR (`Id`=107835 AND `TableHash`=859088734 AND `RecordId`=430610) OR (`Id`=107835 AND `TableHash`=859088734 AND `RecordId`=430603) OR (`Id`=107835 AND `TableHash`=4146370265 AND `RecordId`=182831) OR (`Id`=107835 AND `TableHash`=4146370265 AND `RecordId`=182830) OR (`Id`=107835 AND `TableHash`=4146370265 AND `RecordId`=182822) OR (`Id`=107835 AND `TableHash`=4146370265 AND `RecordId`=182815) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=28750) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=28305) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=24429) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=22360) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=22254) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=19828) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=19827) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=19157) OR (`Id`=107835 AND `TableHash`=312611497 AND `RecordId`=19156) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=128162) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=128141) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=128140) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=128138) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=126765) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=126763) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=126761) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=126634) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=126631) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=126629) OR (`Id`=107835 AND `TableHash`=1163127287 AND `RecordId`=124864) OR (`Id`=107835 AND `TableHash`=3322146344 AND `RecordId`=843341) OR (`Id`=107835 AND `TableHash`=3322146344 AND `RecordId`=843339) OR (`Id`=107835 AND `TableHash`=3322146344 AND `RecordId`=843317) OR (`Id`=107835 AND `TableHash`=3322146344 AND `RecordId`=843312) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318368) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318341) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318340) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318336) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318335) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318291) OR (`Id`=107835 AND `TableHash`=4030871717 AND `RecordId`=1318284) OR (`Id`=107835 AND `TableHash`=1187407512 AND `RecordId`=1295959) OR (`Id`=107835 AND `TableHash`=3776013982 AND `RecordId`=1295959) OR (`Id`=107835 AND `TableHash`=1187407512 AND `RecordId`=1295957) OR (`Id`=107835 AND `TableHash`=3776013982 AND `RecordId`=1295957) OR (`Id`=107835 AND `TableHash`=1187407512 AND `RecordId`=1295932) OR (`Id`=107835 AND `TableHash`=3776013982 AND `RecordId`=1295932) OR (`Id`=107835 AND `TableHash`=1187407512 AND `RecordId`=1295927) OR (`Id`=107835 AND `TableHash`=3776013982 AND `RecordId`=1295927) OR (`Id`=107835 AND `TableHash`=3108775943 AND `RecordId`=157082) OR (`Id`=107835 AND `TableHash`=3108775943 AND `RecordId`=157080) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=35862) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=35353) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34751) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34733) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34732) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34731) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34730) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34729) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34727) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34725) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34722) OR (`Id`=107835 AND `TableHash`=2035710060 AND `RecordId`=34720) OR (`Id`=107835 AND `TableHash`=35137211 AND `RecordId`=315808) OR (`Id`=107835 AND `TableHash`=35137211 AND `RecordId`=315641) OR (`Id`=107835 AND `TableHash`=35137211 AND `RecordId`=315639) OR (`Id`=107817 AND `TableHash`=3322146344 AND `RecordId`=818744) OR (`Id`=107817 AND `TableHash`=4096770149 AND `RecordId`=244217) OR (`Id`=107817 AND `TableHash`=1187407512 AND `RecordId`=1265971) OR (`Id`=107817 AND `TableHash`=3776013982 AND `RecordId`=1265971) OR (`Id`=107811 AND `TableHash`=4030871717 AND `RecordId`=1268558) OR (`Id`=107811 AND `TableHash`=3689412649 AND `RecordId`=177661) OR (`Id`=107809 AND `TableHash`=1163127287 AND `RecordId`=79836) OR (`Id`=107806 AND `TableHash`=336222293 AND `RecordId`=22784) OR (`Id`=107805 AND `TableHash`=4030871717 AND `RecordId`=1300823) OR (`Id`=107805 AND `TableHash`=4030871717 AND `RecordId`=1281488) OR (`Id`=107805 AND `TableHash`=4030871717 AND `RecordId`=1269008) OR (`Id`=107804 AND `TableHash`=312611497 AND `RecordId`=28713) OR (`Id`=107804 AND `TableHash`=312611497 AND `RecordId`=28712) OR (`Id`=107804 AND `TableHash`=1163127287 AND `RecordId`=96462) OR (`Id`=107804 AND `TableHash`=4030871717 AND `RecordId`=1318124) OR (`Id`=107804 AND `TableHash`=1187407512 AND `RecordId`=444769) OR (`Id`=107804 AND `TableHash`=3776013982 AND `RecordId`=444769) OR (`Id`=107801 AND `TableHash`=1163127287 AND `RecordId`=126921) OR (`Id`=107800 AND `TableHash`=2120822102 AND `RecordId`=427170) OR (`Id`=107800 AND `TableHash`=2120822102 AND `RecordId`=427168) OR (`Id`=107800 AND `TableHash`=2120822102 AND `RecordId`=427166) OR (`Id`=107799 AND `TableHash`=1255424668 AND `RecordId`=227753) OR (`Id`=107799 AND `TableHash`=4012104832 AND `RecordId`=114135) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=977) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=976) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=975) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=969) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=956) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=907) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=906) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=897) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=896) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=895) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=894) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=893) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=892) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=891) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=889) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=888) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=887) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=886) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=884) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=882) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=881) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=876) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=875) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=874) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=873) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=872) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=871) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=870) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=869) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=868) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=867) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=864) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=863) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=859) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=857) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=856) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=854) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=853) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=848) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=847) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=842) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=841) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=835) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=831) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=829) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=828) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=826) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=825) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=822) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=819) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=817) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=753) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=741) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=735) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=731) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=730) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=729) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=727) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=725) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=724) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=723) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=721) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=717) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=709) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=708) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=706) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=705) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=704) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=703) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=698) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=697) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=694) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=688) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=686) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=685) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=683) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=681) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=678) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=677) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=675) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=672) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=671) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=669) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=667) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=666) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=665) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=660) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=659) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=656) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=655) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=653) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=635) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=574) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=573) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=559) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=441) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=439) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=437) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=436) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=434) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=425) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=424) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=422) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=411) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=410) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=405) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=403) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=397) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=394) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=393) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=391) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=390) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=385) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=384) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=383) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=375) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=374) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=371) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=370) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=369) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=366) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=365) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=362) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=361) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=358) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=355) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=354) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=347) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=344) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=341) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=336) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=335) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=331) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=328) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=327) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=225) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=221) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=220) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=217) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=215) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=212) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=210) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=209) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=206) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=204) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=199) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=197) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=172) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=171) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=170) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=167) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=163) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=161) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=157) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=155) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=148) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=144) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=143) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=139) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=137) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=136) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=134) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=132) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=131) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=123) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=119) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=118) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=115) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=111) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=110) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=109) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=108) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=106) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=99) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=98) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=94) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=92) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=91) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=90) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=87) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=86) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=79) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=75) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=74) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=71) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=65) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=64) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=62) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=59) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=58) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=55) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=54) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=42) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=36) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=31) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=29) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=23) OR (`Id`=107797 AND `TableHash`=378810315 AND `RecordId`=6) OR (`Id`=107795 AND `TableHash`=1163127287 AND `RecordId`=68774) OR (`Id`=107795 AND `TableHash`=4096770149 AND `RecordId`=22036) OR (`Id`=107794 AND `TableHash`=1147030165 AND `RecordId`=257) OR (`Id`=107794 AND `TableHash`=1147030165 AND `RecordId`=256) OR (`Id`=107794 AND `TableHash`=1147030165 AND `RecordId`=255) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159167) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159166) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159165) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159164) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159163) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159162) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159161) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159160) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159159) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159158) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159157) OR (`Id`=107793 AND `TableHash`=345681529 AND `RecordId`=159156) OR (`Id`=107792 AND `TableHash`=439113017 AND `RecordId`=3299) OR (`Id`=107791 AND `TableHash`=3108775943 AND `RecordId`=157003) OR (`Id`=107789 AND `TableHash`=2120822102 AND `RecordId`=444030) OR (`Id`=107789 AND `TableHash`=2120822102 AND `RecordId`=444027) OR (`Id`=107789 AND `TableHash`=2120822102 AND `RecordId`=429262) OR (`Id`=107788 AND `TableHash`=4193483863 AND `RecordId`=99639) OR (`Id`=107788 AND `TableHash`=1187407512 AND `RecordId`=1256191) OR (`Id`=107788 AND `TableHash`=3776013982 AND `RecordId`=1256191) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227677) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227676) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227675) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227674) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227673) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227672) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=227671) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=225639) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=225638) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=225637) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=225636) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=225635) OR (`Id`=107787 AND `TableHash`=1255424668 AND `RecordId`=225634) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114063) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114062) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114061) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114060) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114059) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114058) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114057) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114056) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114055) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114054) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114053) OR (`Id`=107787 AND `TableHash`=4012104832 AND `RecordId`=114052) OR (`Id`=107785 AND `TableHash`=312611497 AND `RecordId`=26063) OR (`Id`=107785 AND `TableHash`=312611497 AND `RecordId`=26062) OR (`Id`=107783 AND `TableHash`=4030871717 AND `RecordId`=1318025) OR (`Id`=107783 AND `TableHash`=4030871717 AND `RecordId`=1318024) OR (`Id`=107783 AND `TableHash`=1789921167 AND `RecordId`=16916) OR (`Id`=107782 AND `TableHash`=1163127287 AND `RecordId`=122566) OR (`Id`=107782 AND `TableHash`=261693969 AND `RecordId`=88710) OR (`Id`=107782 AND `TableHash`=986198281 AND `RecordId`=88710) OR (`Id`=107782 AND `TableHash`=3108775943 AND `RecordId`=157002) OR (`Id`=107782 AND `TableHash`=2120822102 AND `RecordId`=446825) OR (`Id`=107782 AND `TableHash`=2120822102 AND `RecordId`=446824) OR (`Id`=107782 AND `TableHash`=2120822102 AND `RecordId`=446823) OR (`Id`=107782 AND `TableHash`=2120822102 AND `RecordId`=446822) OR (`Id`=107782 AND `TableHash`=2120822102 AND `RecordId`=446821) OR (`Id`=107782 AND `TableHash`=2120822102 AND `RecordId`=446820) OR (`Id`=107781 AND `TableHash`=1255424668 AND `RecordId`=225611) OR (`Id`=107781 AND `TableHash`=1255424668 AND `RecordId`=225610) OR (`Id`=107781 AND `TableHash`=1255424668 AND `RecordId`=225609) OR (`Id`=107780 AND `TableHash`=666345498 AND `RecordId`=519301) OR (`Id`=107780 AND `TableHash`=666345498 AND `RecordId`=519300) OR (`Id`=107780 AND `TableHash`=1181150530 AND `RecordId`=752915) OR (`Id`=107780 AND `TableHash`=1181150530 AND `RecordId`=752881) OR (`Id`=107780 AND `TableHash`=1181150530 AND `RecordId`=738063) OR (`Id`=107780 AND `TableHash`=4102286043 AND `RecordId`=266224) OR (`Id`=107780 AND `TableHash`=4102286043 AND `RecordId`=266213) OR (`Id`=107780 AND `TableHash`=3425193231 AND `RecordId`=547186) OR (`Id`=107780 AND `TableHash`=3425193231 AND `RecordId`=547176) OR (`Id`=107780 AND `TableHash`=4146370265 AND `RecordId`=182720) OR (`Id`=107780 AND `TableHash`=4146370265 AND `RecordId`=179582) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577780) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577429) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577428) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577406) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577405) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577381) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577380) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577379) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577378) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577377) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577376) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577375) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577374) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577363) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577362) OR (`Id`=107780 AND `TableHash`=3266400455 AND `RecordId`=1577361) OR (`Id`=107780 AND `TableHash`=736158310 AND `RecordId`=43623) OR (`Id`=107780 AND `TableHash`=736158310 AND `RecordId`=43619) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314117) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314116) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314110) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314108) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314101) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314099) OR (`Id`=107780 AND `TableHash`=3232102598 AND `RecordId`=314098) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350186) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350185) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350177) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350176) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350169) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350167) OR (`Id`=107780 AND `TableHash`=908293937 AND `RecordId`=350166) OR (`Id`=107780 AND `TableHash`=1344507586 AND `RecordId`=270562) OR (`Id`=107780 AND `TableHash`=428746933 AND `RecordId`=270562) OR (`Id`=107780 AND `TableHash`=2442913102 AND `RecordId`=270562) OR (`Id`=107780 AND `TableHash`=3465080266 AND `RecordId`=270562) OR (`Id`=107780 AND `TableHash`=3037505077 AND `RecordId`=270562) OR (`Id`=107780 AND `TableHash`=1417785224 AND `RecordId`=270562) OR (`Id`=107779 AND `TableHash`=2120822102 AND `RecordId`=446816) OR (`Id`=107778 AND `TableHash`=3348406326 AND `RecordId`=73622) OR (`Id`=107778 AND `TableHash`=3348406326 AND `RecordId`=73621) OR (`Id`=107778 AND `TableHash`=35137211 AND `RecordId`=273277) OR (`Id`=107778 AND `TableHash`=35137211 AND `RecordId`=272911) OR (`Id`=107776 AND `TableHash`=492039028 AND `RecordId`=52361) OR (`Id`=107776 AND `TableHash`=3359787322 AND `RecordId`=31522) OR (`Id`=107776 AND `TableHash`=1163127287 AND `RecordId`=128099) OR (`Id`=107775 AND `TableHash`=1187407512 AND `RecordId`=1272821) OR (`Id`=107775 AND `TableHash`=3776013982 AND `RecordId`=1272821) OR (`Id`=107775 AND `TableHash`=1187407512 AND `RecordId`=1244331) OR (`Id`=107775 AND `TableHash`=3776013982 AND `RecordId`=1244331) OR (`Id`=107775 AND `TableHash`=1187407512 AND `RecordId`=441845) OR (`Id`=107775 AND `TableHash`=3776013982 AND `RecordId`=441845) OR (`Id`=107775 AND `TableHash`=1344507586 AND `RecordId`=249497) OR (`Id`=107775 AND `TableHash`=428746933 AND `RecordId`=249497) OR (`Id`=107775 AND `TableHash`=2442913102 AND `RecordId`=249497) OR (`Id`=107775 AND `TableHash`=3465080266 AND `RecordId`=249497) OR (`Id`=107775 AND `TableHash`=3037505077 AND `RecordId`=249497) OR (`Id`=107775 AND `TableHash`=1417785224 AND `RecordId`=249497) OR (`Id`=107775 AND `TableHash`=3205218938 AND `RecordId`=57068) OR (`Id`=107775 AND `TableHash`=3205218938 AND `RecordId`=23377) OR (`Id`=107775 AND `TableHash`=3205218938 AND `RecordId`=22841) OR (`Id`=107775 AND `TableHash`=331613093 AND `RecordId`=568477) OR (`Id`=107775 AND `TableHash`=793851790 AND `RecordId`=3391) OR (`Id`=107775 AND `TableHash`=793851790 AND `RecordId`=3383) OR (`Id`=107775 AND `TableHash`=793851790 AND `RecordId`=3348) OR (`Id`=107775 AND `TableHash`=35137211 AND `RecordId`=295984) OR (`Id`=107775 AND `TableHash`=3745449290 AND `RecordId`=8459) OR (`Id`=107775 AND `TableHash`=3745449290 AND `RecordId`=8447) OR (`Id`=107772 AND `TableHash`=3322146344 AND `RecordId`=831871) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17310) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17309) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17308) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17307) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17306) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17305) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17304) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17303) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17302) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17301) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17300) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17299) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17298) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17297) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17296) OR (`Id`=107771 AND `TableHash`=3495286709 AND `RecordId`=17295) OR (`Id`=107770 AND `TableHash`=331613093 AND `RecordId`=633652) OR (`Id`=107769 AND `TableHash`=312611497 AND `RecordId`=17624) OR (`Id`=107769 AND `TableHash`=312611497 AND `RecordId`=17623) OR (`Id`=107769 AND `TableHash`=1163127287 AND `RecordId`=64940) OR (`Id`=107768 AND `TableHash`=1163127287 AND `RecordId`=119707) OR (`Id`=107768 AND `TableHash`=1163127287 AND `RecordId`=119672) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=815438) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=815437) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=815436) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=815424) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=815423) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=815418) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=803129) OR (`Id`=107768 AND `TableHash`=3322146344 AND `RecordId`=803125) OR (`Id`=107767 AND `TableHash`=240389885 AND `RecordId`=9281) OR (`Id`=107767 AND `TableHash`=1870074897 AND `RecordId`=89888) OR (`Id`=107766 AND `TableHash`=736158310 AND `RecordId`=33217) OR (`Id`=107766 AND `TableHash`=736158310 AND `RecordId`=33187) OR (`Id`=107766 AND `TableHash`=736158310 AND `RecordId`=33185) OR (`Id`=107766 AND `TableHash`=736158310 AND `RecordId`=30214) OR (`Id`=107766 AND `TableHash`=736158310 AND `RecordId`=30213) OR (`Id`=107766 AND `TableHash`=600565378 AND `RecordId`=644762) OR (`Id`=107766 AND `TableHash`=600565378 AND `RecordId`=644760) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63297) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63296) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63295) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63294) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63293) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63292) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63291) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63290) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63289) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63288) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63287) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63286) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63285) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63284) OR (`Id`=107766 AND `TableHash`=995606689 AND `RecordId`=63283) OR (`Id`=107766 AND `TableHash`=2445379776 AND `RecordId`=10508) OR (`Id`=107766 AND `TableHash`=2445379776 AND `RecordId`=9849) OR (`Id`=107766 AND `TableHash`=3218799089 AND `RecordId`=144636) OR (`Id`=107766 AND `TableHash`=3386943305 AND `RecordId`=340334) OR (`Id`=107766 AND `TableHash`=3386291891 AND `RecordId`=257268) OR (`Id`=107766 AND `TableHash`=3386291891 AND `RecordId`=257266) OR (`Id`=107765 AND `TableHash`=1303856102 AND `RecordId`=256) OR (`Id`=107765 AND `TableHash`=943410215 AND `RecordId`=402) OR (`Id`=107764 AND `TableHash`=3322146344 AND `RecordId`=1568) OR (`Id`=107764 AND `TableHash`=813076512 AND `RecordId`=204875) OR (`Id`=107763 AND `TableHash`=1163127287 AND `RecordId`=121877) OR (`Id`=107762 AND `TableHash`=3247720076 AND `RecordId`=39887) OR (`Id`=107760 AND `TableHash`=3322146344 AND `RecordId`=831103) OR (`Id`=107759 AND `TableHash`=3386943305 AND `RecordId`=336497) OR (`Id`=107759 AND `TableHash`=3386943305 AND `RecordId`=336478) OR (`Id`=107759 AND `TableHash`=3386943305 AND `RecordId`=336109) OR (`Id`=107759 AND `TableHash`=3386943305 AND `RecordId`=335879) OR (`Id`=107759 AND `TableHash`=3386943305 AND `RecordId`=332706) OR (`Id`=107757 AND `TableHash`=3386943305 AND `RecordId`=345008) OR (`Id`=107757 AND `TableHash`=3386943305 AND `RecordId`=345007) OR (`Id`=107757 AND `TableHash`=3386943305 AND `RecordId`=341885) OR (`Id`=107757 AND `TableHash`=3386943305 AND `RecordId`=333679) OR (`Id`=107757 AND `TableHash`=3386943305 AND `RecordId`=332218) OR (`Id`=107757 AND `TableHash`=3386943305 AND `RecordId`=332174) OR (`Id`=107757 AND `TableHash`=3386291891 AND `RecordId`=252826) OR (`Id`=107755 AND `TableHash`=331613093 AND `RecordId`=622120) OR (`Id`=107753 AND `TableHash`=3322146344 AND `RecordId`=810873) OR (`Id`=107752 AND `TableHash`=4030871717 AND `RecordId`=36562) OR (`Id`=107751 AND `TableHash`=1163127287 AND `RecordId`=123175) OR (`Id`=107751 AND `TableHash`=1548466975 AND `RecordId`=42062) OR (`Id`=107750 AND `TableHash`=4030871717 AND `RecordId`=33703) OR (`Id`=107750 AND `TableHash`=1187407512 AND `RecordId`=243435) OR (`Id`=107750 AND `TableHash`=3776013982 AND `RecordId`=243435) OR (`Id`=107750 AND `TableHash`=1187407512 AND `RecordId`=221562) OR (`Id`=107750 AND `TableHash`=3776013982 AND `RecordId`=221562) OR (`Id`=107750 AND `TableHash`=1187407512 AND `RecordId`=205630) OR (`Id`=107750 AND `TableHash`=3776013982 AND `RecordId`=205630) OR (`Id`=107750 AND `TableHash`=1187407512 AND `RecordId`=198158) OR (`Id`=107750 AND `TableHash`=3776013982 AND `RecordId`=198158) OR (`Id`=107750 AND `TableHash`=1187407512 AND `RecordId`=108194) OR (`Id`=107750 AND `TableHash`=3776013982 AND `RecordId`=108194) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=1004) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=1003) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=1001) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=1000) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=999) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=998) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=997) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=996) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=995) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=994) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=993) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=992) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=990) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=989) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=988) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=987) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=986) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=985) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=984) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=983) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=982) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=981) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=980) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=979) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=978) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=974) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=973) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=972) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=971) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=970) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=968) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=967) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=966) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=965) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=964) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=963) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=962) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=961) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=960) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=959) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=958) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=957) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=955) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=954) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=953) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=952) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=951) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=950) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=949) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=948) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=947) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=945) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=944) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=943) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=942) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=941) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=938) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=937) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=936) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=935) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=934) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=933) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=932) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=931) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=930) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=929) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=928) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=927) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=926) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=925) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=924) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=923) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=922) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=921) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=920) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=918) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=917) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=916) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=913) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=912) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=905) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=904) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=903) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=902) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=901) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=900) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=899) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=898) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=885) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=879) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=878) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=877) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=865) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=861) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=860) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=858) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=855) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=846) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=843) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=839) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=830) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=824) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=823) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=821) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=813) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=808) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=807) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=755) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=754) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=752) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=750) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=744) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=742) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=739) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=738) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=736) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=720) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=719) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=718) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=715) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=714) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=713) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=710) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=700) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=692) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=691) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=690) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=687) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=682) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=679) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=676) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=674) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=673) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=670) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=668) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=664) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=663) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=662) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=661) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=658) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=657) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=654) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=651) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=648) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=639) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=638) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=637) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=636) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=576) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=575) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=572) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=571) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=563) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=561) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=560) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=558) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=456) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=455) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=453) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=452) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=451) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=450) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=449) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=448) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=447) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=440) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=431) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=428) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=427) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=421) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=420) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=419) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=418) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=416) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=415) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=412) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=409) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=408) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=407) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=406) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=402) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=401) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=389) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=388) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=387) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=386) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=382) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=377) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=372) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=368) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=367) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=363) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=360) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=359) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=353) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=352) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=350) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=349) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=348) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=346) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=345) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=343) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=342) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=339) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=338) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=337) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=333) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=332) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=330) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=329) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=224) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=223) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=222) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=219) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=218) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=214) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=213) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=208) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=207) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=205) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=201) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=198) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=196) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=195) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=194) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=193) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=189) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=187) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=183) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=176) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=169) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=166) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=165) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=164) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=160) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=159) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=158) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=156) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=154) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=153) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=152) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=150) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=149) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=147) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=145) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=142) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=141) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=138) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=135) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=133) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=125) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=124) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=122) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=121) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=120) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=117) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=116) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=114) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=113) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=112) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=107) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=105) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=104) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=103) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=102) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=101) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=100) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=97) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=96) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=95) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=89) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=88) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=85) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=84) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=83) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=82) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=81) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=78) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=77) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=76) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=73) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=72) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=70) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=69) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=68) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=66) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=63) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=61) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=60) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=57) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=53) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=51) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=45) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=44) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=40) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=39) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=38) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=37) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=35) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=34) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=33) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=32) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=28) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=27) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=26) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=21) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=20) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=17) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=16) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=14) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=12) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=10) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=9) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=7) OR (`Id`=107750 AND `TableHash`=378810315 AND `RecordId`=3) OR (`Id`=107749 AND `TableHash`=312611497 AND `RecordId`=21871) OR (`Id`=107749 AND `TableHash`=312611497 AND `RecordId`=21870) OR (`Id`=107749 AND `TableHash`=1163127287 AND `RecordId`=122302) OR (`Id`=107749 AND `TableHash`=1163127287 AND `RecordId`=105052) OR (`Id`=107749 AND `TableHash`=1163127287 AND `RecordId`=100476) OR (`Id`=107749 AND `TableHash`=4030871717 AND `RecordId`=1304166) OR (`Id`=107749 AND `TableHash`=4030871717 AND `RecordId`=1156060) OR (`Id`=107748 AND `TableHash`=3386943305 AND `RecordId`=347243) OR (`Id`=107748 AND `TableHash`=3386943305 AND `RecordId`=341024) OR (`Id`=107748 AND `TableHash`=3386943305 AND `RecordId`=333448) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=263912) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=260782) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=258808) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=257932) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=256589) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=252609) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=252608) OR (`Id`=107748 AND `TableHash`=3386291891 AND `RecordId`=251439) OR (`Id`=107747 AND `TableHash`=1163127287 AND `RecordId`=100433) OR (`Id`=107747 AND `TableHash`=1163127287 AND `RecordId`=35858) OR (`Id`=107745 AND `TableHash`=3386943305 AND `RecordId`=340239) OR (`Id`=107744 AND `TableHash`=4030871717 AND `RecordId`=1197410) OR (`Id`=107744 AND `TableHash`=4030871717 AND `RecordId`=1176322) OR (`Id`=107741 AND `TableHash`=1163127287 AND `RecordId`=77332) OR (`Id`=107741 AND `TableHash`=4030871717 AND `RecordId`=1276369) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291860) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291860) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291859) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291859) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291858) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291858) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291857) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291857) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291856) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291856) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291855) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291855) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291854) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291854) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291853) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291853) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291852) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291852) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291851) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291851) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291850) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291850) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291849) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291849) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291848) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291848) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291847) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291847) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291846) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291846) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291845) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291845) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291844) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291844) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291843) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291843) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291842) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291842) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291841) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291841) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291840) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291840) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291839) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291839) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291838) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291838) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291837) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291837) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291831) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291831) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291828) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291828) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291827) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291827) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291826) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291826) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291825) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291825) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291824) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291824) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291822) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291822) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1291791) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1291791) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1290929) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1290929) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1290926) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1290926) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1290925) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1290925) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1289221) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1289221) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1287542) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1287542) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1286537) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1286537) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1286536) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1286536) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1286535) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1286535) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1282100) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1282100) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1282018) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1282018) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1277461) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1277461) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269922) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269922) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269921) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269921) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269920) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269920) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269919) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269919) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269918) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269918) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269917) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269917) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1269916) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1269916) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1266982) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1266982) OR (`Id`=107740 AND `TableHash`=1187407512 AND `RecordId`=1232065) OR (`Id`=107740 AND `TableHash`=3776013982 AND `RecordId`=1232065) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=273640) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=273640) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=273640) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=273640) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=273640) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=273640) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272961) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272961) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272961) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272961) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272961) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272961) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272960) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272960) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272960) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272960) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272960) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272960) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272356) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272356) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272356) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272356) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272356) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272356) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272355) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272355) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272355) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272355) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272355) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272355) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272318) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272318) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272318) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272318) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272318) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272318) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272317) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272317) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272317) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272317) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272317) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272317) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=272316) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=272316) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=272316) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=272316) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=272316) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=272316) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=271631) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=271631) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=271631) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=271631) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=271631) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=271631) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=269659) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=269659) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=269659) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=269659) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=269659) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=269659) OR (`Id`=107740 AND `TableHash`=1344507586 AND `RecordId`=19355) OR (`Id`=107740 AND `TableHash`=428746933 AND `RecordId`=19355) OR (`Id`=107740 AND `TableHash`=2442913102 AND `RecordId`=19355) OR (`Id`=107740 AND `TableHash`=3465080266 AND `RecordId`=19355) OR (`Id`=107740 AND `TableHash`=3037505077 AND `RecordId`=19355) OR (`Id`=107740 AND `TableHash`=1417785224 AND `RecordId`=19355) OR (`Id`=107738 AND `TableHash`=2948698321 AND `RecordId`=8059) OR (`Id`=107738 AND `TableHash`=3744420815 AND `RecordId`=8059) OR (`Id`=107737 AND `TableHash`=3322146344 AND `RecordId`=842983) OR (`Id`=107737 AND `TableHash`=4030871717 AND `RecordId`=1317749) OR (`Id`=107737 AND `TableHash`=1187407512 AND `RecordId`=1295592) OR (`Id`=107737 AND `TableHash`=3776013982 AND `RecordId`=1295592) OR (`Id`=107737 AND `TableHash`=3108775943 AND `RecordId`=156957) OR (`Id`=107737 AND `TableHash`=3108775943 AND `RecordId`=156933) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446627) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446626) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446625) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446608) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446593) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446592) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446591) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446590) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446589) OR (`Id`=107737 AND `TableHash`=2120822102 AND `RecordId`=446588) OR (`Id`=107735 AND `TableHash`=261693969 AND `RecordId`=84996) OR (`Id`=107735 AND `TableHash`=986198281 AND `RecordId`=84996) OR (`Id`=107735 AND `TableHash`=3108775943 AND `RecordId`=156932) OR (`Id`=107735 AND `TableHash`=2120822102 AND `RecordId`=446587) OR (`Id`=107735 AND `TableHash`=2120822102 AND `RecordId`=446586) OR (`Id`=107733 AND `TableHash`=3386943305 AND `RecordId`=347264) OR (`Id`=107733 AND `TableHash`=3386943305 AND `RecordId`=341303) OR (`Id`=107731 AND `TableHash`=3386943305 AND `RecordId`=342078) OR (`Id`=107730 AND `TableHash`=3386291891 AND `RecordId`=244580) OR (`Id`=107729 AND `TableHash`=3664936999 AND `RecordId`=33506) OR (`Id`=107729 AND `TableHash`=3664936999 AND `RecordId`=33505) OR (`Id`=107729 AND `TableHash`=3664936999 AND `RecordId`=33504) OR (`Id`=107729 AND `TableHash`=3664936999 AND `RecordId`=33503) OR (`Id`=107729 AND `TableHash`=3898252553 AND `RecordId`=11633) OR (`Id`=107729 AND `TableHash`=3898252553 AND `RecordId`=11632) OR (`Id`=107729 AND `TableHash`=3898252553 AND `RecordId`=11631) OR (`Id`=107729 AND `TableHash`=3898252553 AND `RecordId`=11630) OR (`Id`=107729 AND `TableHash`=4012104832 AND `RecordId`=113880) OR (`Id`=107729 AND `TableHash`=4012104832 AND `RecordId`=113879) OR (`Id`=107729 AND `TableHash`=4012104832 AND `RecordId`=113878) OR (`Id`=107729 AND `TableHash`=4012104832 AND `RecordId`=108810) OR (`Id`=107729 AND `TableHash`=4012104832 AND `RecordId`=108809) OR (`Id`=107729 AND `TableHash`=4012104832 AND `RecordId`=108808) OR (`Id`=107728 AND `TableHash`=3386943305 AND `RecordId`=340532) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3389) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3308) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3291) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3280) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3251) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3245) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3234) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3233) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3229) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3209) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3206) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3180) OR (`Id`=107727 AND `TableHash`=2198813286 AND `RecordId`=3174) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313093) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313092) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313091) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313090) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313089) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313088) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313087) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313086) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313085) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313084) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313080) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313079) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313076) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313075) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313074) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313073) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313072) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313071) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313070) OR (`Id`=107726 AND `TableHash`=1880017466 AND `RecordId`=313069) OR (`Id`=107726 AND `TableHash`=1272569722 AND `RecordId`=103681) OR (`Id`=107726 AND `TableHash`=1272569722 AND `RecordId`=103680) OR (`Id`=107726 AND `TableHash`=1272569722 AND `RecordId`=103679) OR (`Id`=107726 AND `TableHash`=1272569722 AND `RecordId`=103678) OR (`Id`=107726 AND `TableHash`=1272569722 AND `RecordId`=103677);DELETE FROM `hotfix_data` WHERE (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=113655) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=113654) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112986) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112855) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112740) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112622) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112294) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112293) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112271) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112182) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=112160) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=111564) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=111563) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=111249) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=111248) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=110483) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109959) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109866) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109864) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109799) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109791) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109754) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109668) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109259) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109258) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=109105) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=108726) OR (`Id`=107726 AND `TableHash`=4012104832 AND `RecordId`=107805) OR (`Id`=107725 AND `TableHash`=1163127287 AND `RecordId`=127488) OR (`Id`=107725 AND `TableHash`=3322146344 AND `RecordId`=798878) OR (`Id`=107725 AND `TableHash`=1187407512 AND `RecordId`=1244341) OR (`Id`=107725 AND `TableHash`=3776013982 AND `RecordId`=1244341) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352239) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352238) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352237) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352236) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352235) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352234) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352233) OR (`Id`=107722 AND `TableHash`=3764692828 AND `RecordId`=352232) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1262378) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1262378) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1262377) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1262377) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1262376) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1262376) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1262365) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1262365) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1262364) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1262364) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1262359) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1262359) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1248931) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1248931) OR (`Id`=107722 AND `TableHash`=1187407512 AND `RecordId`=1248927) OR (`Id`=107722 AND `TableHash`=3776013982 AND `RecordId`=1248927) OR (`Id`=107715 AND `TableHash`=4030871717 AND `RecordId`=1035394) OR (`Id`=107715 AND `TableHash`=4030871717 AND `RecordId`=1035393) OR (`Id`=107713 AND `TableHash`=492039028 AND `RecordId`=52330) OR (`Id`=107713 AND `TableHash`=492039028 AND `RecordId`=52328) OR (`Id`=107713 AND `TableHash`=492039028 AND `RecordId`=51369) OR (`Id`=107713 AND `TableHash`=4033975491 AND `RecordId`=611033) OR (`Id`=107713 AND `TableHash`=4033975491 AND `RecordId`=611032) OR (`Id`=107713 AND `TableHash`=1181150530 AND `RecordId`=732560) OR (`Id`=107713 AND `TableHash`=1181150530 AND `RecordId`=732559) OR (`Id`=107713 AND `TableHash`=3571931810 AND `RecordId`=41403) OR (`Id`=107713 AND `TableHash`=3571931810 AND `RecordId`=41284) OR (`Id`=107712 AND `TableHash`=1163127287 AND `RecordId`=119417) OR (`Id`=107711 AND `TableHash`=3072882582 AND `RecordId`=54341) OR (`Id`=107711 AND `TableHash`=1163127287 AND `RecordId`=123633) OR (`Id`=107711 AND `TableHash`=1163127287 AND `RecordId`=123630) OR (`Id`=107711 AND `TableHash`=1163127287 AND `RecordId`=123628) OR (`Id`=107711 AND `TableHash`=1163127287 AND `RecordId`=123626) OR (`Id`=107711 AND `TableHash`=1163127287 AND `RecordId`=123615) OR (`Id`=107710 AND `TableHash`=1163127287 AND `RecordId`=120886) OR (`Id`=107709 AND `TableHash`=1163127287 AND `RecordId`=96141) OR (`Id`=107708 AND `TableHash`=1187407512 AND `RecordId`=1277796) OR (`Id`=107708 AND `TableHash`=3776013982 AND `RecordId`=1277796) OR (`Id`=107708 AND `TableHash`=1187407512 AND `RecordId`=1256862) OR (`Id`=107708 AND `TableHash`=3776013982 AND `RecordId`=1256862) OR (`Id`=107708 AND `TableHash`=1187407512 AND `RecordId`=1256861) OR (`Id`=107708 AND `TableHash`=3776013982 AND `RecordId`=1256861) OR (`Id`=107708 AND `TableHash`=1187407512 AND `RecordId`=1256860) OR (`Id`=107708 AND `TableHash`=3776013982 AND `RecordId`=1256860) OR (`Id`=107708 AND `TableHash`=1187407512 AND `RecordId`=1256010) OR (`Id`=107708 AND `TableHash`=3776013982 AND `RecordId`=1256010) OR (`Id`=107705 AND `TableHash`=4021368146 AND `RecordId`=7698) OR (`Id`=107705 AND `TableHash`=3386291891 AND `RecordId`=256084) OR (`Id`=107704 AND `TableHash`=1344507586 AND `RecordId`=274578) OR (`Id`=107704 AND `TableHash`=428746933 AND `RecordId`=274578) OR (`Id`=107704 AND `TableHash`=2442913102 AND `RecordId`=274578) OR (`Id`=107704 AND `TableHash`=3465080266 AND `RecordId`=274578) OR (`Id`=107704 AND `TableHash`=3037505077 AND `RecordId`=274578) OR (`Id`=107704 AND `TableHash`=1417785224 AND `RecordId`=274578) OR (`Id`=107703 AND `TableHash`=1344507586 AND `RecordId`=268455) OR (`Id`=107703 AND `TableHash`=428746933 AND `RecordId`=268455) OR (`Id`=107703 AND `TableHash`=2442913102 AND `RecordId`=268455) OR (`Id`=107703 AND `TableHash`=3465080266 AND `RecordId`=268455) OR (`Id`=107703 AND `TableHash`=3037505077 AND `RecordId`=268455) OR (`Id`=107703 AND `TableHash`=1417785224 AND `RecordId`=268455) OR (`Id`=107698 AND `TableHash`=1344507586 AND `RecordId`=268122) OR (`Id`=107698 AND `TableHash`=428746933 AND `RecordId`=268122) OR (`Id`=107698 AND `TableHash`=2442913102 AND `RecordId`=268122) OR (`Id`=107698 AND `TableHash`=3465080266 AND `RecordId`=268122) OR (`Id`=107698 AND `TableHash`=3037505077 AND `RecordId`=268122) OR (`Id`=107698 AND `TableHash`=1417785224 AND `RecordId`=268122) OR (`Id`=107697 AND `TableHash`=3108775943 AND `RecordId`=126005) OR (`Id`=107697 AND `TableHash`=1408785804 AND `RecordId`=249319) OR (`Id`=107697 AND `TableHash`=1122246768 AND `RecordId`=249319) OR (`Id`=107697 AND `TableHash`=1408785804 AND `RecordId`=249318) OR (`Id`=107697 AND `TableHash`=1122246768 AND `RecordId`=249318) OR (`Id`=107697 AND `TableHash`=1408785804 AND `RecordId`=249317) OR (`Id`=107697 AND `TableHash`=1122246768 AND `RecordId`=249317) OR (`Id`=107697 AND `TableHash`=1408785804 AND `RecordId`=249316) OR (`Id`=107697 AND `TableHash`=1122246768 AND `RecordId`=249316) OR (`Id`=107697 AND `TableHash`=1408785804 AND `RecordId`=249315) OR (`Id`=107697 AND `TableHash`=1122246768 AND `RecordId`=249315) OR (`Id`=107697 AND `TableHash`=1408785804 AND `RecordId`=249314) OR (`Id`=107697 AND `TableHash`=1122246768 AND `RecordId`=249314) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220963) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220961) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220959) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220958) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220957) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220955) OR (`Id`=107695 AND `TableHash`=1255424668 AND `RecordId`=220725) OR (`Id`=107694 AND `TableHash`=666345498 AND `RecordId`=519090) OR (`Id`=107694 AND `TableHash`=3163679255 AND `RecordId`=57437) OR (`Id`=107694 AND `TableHash`=3322146344 AND `RecordId`=842899) OR (`Id`=107694 AND `TableHash`=1720692227 AND `RecordId`=242842) OR (`Id`=107694 AND `TableHash`=4030871717 AND `RecordId`=1317597) OR (`Id`=107694 AND `TableHash`=4030871717 AND `RecordId`=1317596) OR (`Id`=107694 AND `TableHash`=1187407512 AND `RecordId`=1295508) OR (`Id`=107694 AND `TableHash`=3776013982 AND `RecordId`=1295508) OR (`Id`=107694 AND `TableHash`=1073915313 AND `RecordId`=230451) OR (`Id`=107693 AND `TableHash`=3108775943 AND `RecordId`=152529) OR (`Id`=107691 AND `TableHash`=3764692828 AND `RecordId`=352215) OR (`Id`=107691 AND `TableHash`=1163127287 AND `RecordId`=119574) OR (`Id`=107691 AND `TableHash`=3322146344 AND `RecordId`=842888) OR (`Id`=107691 AND `TableHash`=1720692227 AND `RecordId`=242841) OR (`Id`=107691 AND `TableHash`=4030871717 AND `RecordId`=1317572) OR (`Id`=107691 AND `TableHash`=1187407512 AND `RecordId`=1295497) OR (`Id`=107691 AND `TableHash`=3776013982 AND `RecordId`=1295497) OR (`Id`=107690 AND `TableHash`=1344507586 AND `RecordId`=272338) OR (`Id`=107690 AND `TableHash`=428746933 AND `RecordId`=272338) OR (`Id`=107690 AND `TableHash`=2442913102 AND `RecordId`=272338) OR (`Id`=107690 AND `TableHash`=3465080266 AND `RecordId`=272338) OR (`Id`=107690 AND `TableHash`=3037505077 AND `RecordId`=272338) OR (`Id`=107690 AND `TableHash`=1417785224 AND `RecordId`=272338) OR (`Id`=107690 AND `TableHash`=1344507586 AND `RecordId`=272337) OR (`Id`=107690 AND `TableHash`=428746933 AND `RecordId`=272337) OR (`Id`=107690 AND `TableHash`=2442913102 AND `RecordId`=272337) OR (`Id`=107690 AND `TableHash`=3465080266 AND `RecordId`=272337) OR (`Id`=107690 AND `TableHash`=3037505077 AND `RecordId`=272337) OR (`Id`=107690 AND `TableHash`=1417785224 AND `RecordId`=272337) OR (`Id`=107690 AND `TableHash`=1344507586 AND `RecordId`=272336) OR (`Id`=107690 AND `TableHash`=428746933 AND `RecordId`=272336) OR (`Id`=107690 AND `TableHash`=2442913102 AND `RecordId`=272336) OR (`Id`=107690 AND `TableHash`=3465080266 AND `RecordId`=272336) OR (`Id`=107690 AND `TableHash`=3037505077 AND `RecordId`=272336) OR (`Id`=107690 AND `TableHash`=1417785224 AND `RecordId`=272336) OR (`Id`=107690 AND `TableHash`=1344507586 AND `RecordId`=272321) OR (`Id`=107690 AND `TableHash`=428746933 AND `RecordId`=272321) OR (`Id`=107690 AND `TableHash`=2442913102 AND `RecordId`=272321) OR (`Id`=107690 AND `TableHash`=3465080266 AND `RecordId`=272321) OR (`Id`=107690 AND `TableHash`=3037505077 AND `RecordId`=272321) OR (`Id`=107690 AND `TableHash`=1417785224 AND `RecordId`=272321) OR (`Id`=107690 AND `TableHash`=1344507586 AND `RecordId`=272320) OR (`Id`=107690 AND `TableHash`=428746933 AND `RecordId`=272320) OR (`Id`=107690 AND `TableHash`=2442913102 AND `RecordId`=272320) OR (`Id`=107690 AND `TableHash`=3465080266 AND `RecordId`=272320) OR (`Id`=107690 AND `TableHash`=3037505077 AND `RecordId`=272320) OR (`Id`=107690 AND `TableHash`=1417785224 AND `RecordId`=272320) OR (`Id`=107689 AND `TableHash`=3108775943 AND `RecordId`=152528) OR (`Id`=107688 AND `TableHash`=1163127287 AND `RecordId`=125524) OR (`Id`=107688 AND `TableHash`=3322146344 AND `RecordId`=825297) OR (`Id`=107688 AND `TableHash`=4096770149 AND `RecordId`=246117) OR (`Id`=107688 AND `TableHash`=1187407512 AND `RecordId`=1276487) OR (`Id`=107688 AND `TableHash`=3776013982 AND `RecordId`=1276487) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=159042) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=159041) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=159040) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=159039) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=159038) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=159037) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152783) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152782) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152781) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152780) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152779) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152778) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152777) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152776) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152775) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152774) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152773) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152772) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152771) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152770) OR (`Id`=107687 AND `TableHash`=345681529 AND `RecordId`=152769) OR (`Id`=107686 AND `TableHash`=1163127287 AND `RecordId`=120889) OR (`Id`=107685 AND `TableHash`=312611497 AND `RecordId`=27674) OR (`Id`=107685 AND `TableHash`=312611497 AND `RecordId`=27673) OR (`Id`=107685 AND `TableHash`=1163127287 AND `RecordId`=115015) OR (`Id`=107685 AND `TableHash`=4030871717 AND `RecordId`=1245242) OR (`Id`=107683 AND `TableHash`=1163127287 AND `RecordId`=77538) OR (`Id`=107681 AND `TableHash`=844464874 AND `RecordId`=330078) OR (`Id`=107681 AND `TableHash`=844464874 AND `RecordId`=330077) OR (`Id`=107681 AND `TableHash`=844464874 AND `RecordId`=330072) OR (`Id`=107681 AND `TableHash`=1344507586 AND `RecordId`=268481) OR (`Id`=107681 AND `TableHash`=428746933 AND `RecordId`=268481) OR (`Id`=107681 AND `TableHash`=2442913102 AND `RecordId`=268481) OR (`Id`=107681 AND `TableHash`=3465080266 AND `RecordId`=268481) OR (`Id`=107681 AND `TableHash`=3037505077 AND `RecordId`=268481) OR (`Id`=107681 AND `TableHash`=1417785224 AND `RecordId`=268481) OR (`Id`=107681 AND `TableHash`=1344507586 AND `RecordId`=268456) OR (`Id`=107681 AND `TableHash`=428746933 AND `RecordId`=268456) OR (`Id`=107681 AND `TableHash`=2442913102 AND `RecordId`=268456) OR (`Id`=107681 AND `TableHash`=3465080266 AND `RecordId`=268456) OR (`Id`=107681 AND `TableHash`=3037505077 AND `RecordId`=268456) OR (`Id`=107681 AND `TableHash`=1417785224 AND `RecordId`=268456) OR (`Id`=107679 AND `TableHash`=1163127287 AND `RecordId`=102854) OR (`Id`=107679 AND `TableHash`=3322146344 AND `RecordId`=842877) OR (`Id`=107679 AND `TableHash`=3322146344 AND `RecordId`=757076) OR (`Id`=107679 AND `TableHash`=1720692227 AND `RecordId`=242836) OR (`Id`=107679 AND `TableHash`=1720692227 AND `RecordId`=212299) OR (`Id`=107679 AND `TableHash`=4030871717 AND `RecordId`=1317559) OR (`Id`=107679 AND `TableHash`=1187407512 AND `RecordId`=1295486) OR (`Id`=107679 AND `TableHash`=3776013982 AND `RecordId`=1295486) OR (`Id`=107679 AND `TableHash`=1187407512 AND `RecordId`=464291) OR (`Id`=107679 AND `TableHash`=3776013982 AND `RecordId`=464291) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=347498) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=341023) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=339532) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=339530) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=333639) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=333637) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=333636) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=328922) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=327981) OR (`Id`=107677 AND `TableHash`=3386943305 AND `RecordId`=327864) OR (`Id`=107676 AND `TableHash`=3645674820 AND `RecordId`=308378) OR (`Id`=107676 AND `TableHash`=3834752085 AND `RecordId`=308378) OR (`Id`=107676 AND `TableHash`=3645674820 AND `RecordId`=308377) OR (`Id`=107676 AND `TableHash`=3834752085 AND `RecordId`=308377) OR (`Id`=107676 AND `TableHash`=3645674820 AND `RecordId`=307926) OR (`Id`=107676 AND `TableHash`=3834752085 AND `RecordId`=307926) OR (`Id`=107676 AND `TableHash`=3645674820 AND `RecordId`=307925) OR (`Id`=107676 AND `TableHash`=3834752085 AND `RecordId`=307925) OR (`Id`=107676 AND `TableHash`=3645674820 AND `RecordId`=307924) OR (`Id`=107676 AND `TableHash`=3834752085 AND `RecordId`=307924) OR (`Id`=107674 AND `TableHash`=3571931810 AND `RecordId`=40501) OR (`Id`=107674 AND `TableHash`=3571931810 AND `RecordId`=39855) OR (`Id`=107672 AND `TableHash`=3322146344 AND `RecordId`=829794) OR (`Id`=107669 AND `TableHash`=4102286043 AND `RecordId`=260059) OR (`Id`=107669 AND `TableHash`=3322146344 AND `RecordId`=834749) OR (`Id`=107669 AND `TableHash`=1548466975 AND `RecordId`=42970) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=347608) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=347607) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=346582) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=346580) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=345529) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=345527) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=345526) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=345489) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=345487) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=343997) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=343988) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=343152) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=343147) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=343093) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342910) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342286) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342285) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342284) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342247) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342245) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342244) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342203) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=342045) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341965) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341964) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341963) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341962) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341960) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341884) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341882) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341881) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=341877) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=340723) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=340664) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=340596) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=340555) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=340535) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=340534) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=339854) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=339849) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=339847) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=339846) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=339845) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=339712) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=336304) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335957) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335895) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335699) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335698) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335696) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335626) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335615) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335398) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335109) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335009) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=335008) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=333555) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=333553) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=333529) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=333528) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=333455) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=333454) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=331930) OR (`Id`=107667 AND `TableHash`=3386943305 AND `RecordId`=330632) OR (`Id`=107667 AND `TableHash`=3386291891 AND `RecordId`=261769) OR (`Id`=107667 AND `TableHash`=3386291891 AND `RecordId`=251016) OR (`Id`=107664 AND `TableHash`=331613093 AND `RecordId`=234316) OR (`Id`=107664 AND `TableHash`=4218319612 AND `RecordId`=1700) OR (`Id`=107663 AND `TableHash`=1163127287 AND `RecordId`=127963) OR (`Id`=107663 AND `TableHash`=1163127287 AND `RecordId`=127962) OR (`Id`=107663 AND `TableHash`=1163127287 AND `RecordId`=127961) OR (`Id`=107663 AND `TableHash`=2163595472 AND `RecordId`=285) OR (`Id`=107663 AND `TableHash`=2163595472 AND `RecordId`=284) OR (`Id`=107663 AND `TableHash`=3571931810 AND `RecordId`=42951) OR (`Id`=107663 AND `TableHash`=3571931810 AND `RecordId`=42950) OR (`Id`=107663 AND `TableHash`=3571931810 AND `RecordId`=42949) OR (`Id`=107663 AND `TableHash`=3571931810 AND `RecordId`=40951) OR (`Id`=107663 AND `TableHash`=3571931810 AND `RecordId`=40947) OR (`Id`=107663 AND `TableHash`=1548466975 AND `RecordId`=43692) OR (`Id`=107663 AND `TableHash`=1548466975 AND `RecordId`=43691) OR (`Id`=107663 AND `TableHash`=1548466975 AND `RecordId`=43690) OR (`Id`=107662 AND `TableHash`=1548466975 AND `RecordId`=38872) OR (`Id`=107661 AND `TableHash`=312611497 AND `RecordId`=28349) OR (`Id`=107661 AND `TableHash`=312611497 AND `RecordId`=28348) OR (`Id`=107661 AND `TableHash`=1163127287 AND `RecordId`=122127) OR (`Id`=107661 AND `TableHash`=4030871717 AND `RecordId`=1287681) OR (`Id`=107660 AND `TableHash`=1163127287 AND `RecordId`=123375) OR (`Id`=107659 AND `TableHash`=1163127287 AND `RecordId`=106450) OR (`Id`=107659 AND `TableHash`=3322146344 AND `RecordId`=769597) OR (`Id`=107659 AND `TableHash`=3322146344 AND `RecordId`=769572) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243616) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243616) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243615) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243615) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243613) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243613) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243605) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243605) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243602) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243602) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243588) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243588) OR (`Id`=107659 AND `TableHash`=1187407512 AND `RecordId`=1243586) OR (`Id`=107659 AND `TableHash`=3776013982 AND `RecordId`=1243586) OR (`Id`=107658 AND `TableHash`=4033975491 AND `RecordId`=619702) OR (`Id`=107658 AND `TableHash`=1181150530 AND `RecordId`=751465) OR (`Id`=107658 AND `TableHash`=4102286043 AND `RecordId`=242706) OR (`Id`=107658 AND `TableHash`=4102286043 AND `RecordId`=239930) OR (`Id`=107655 AND `TableHash`=600565378 AND `RecordId`=660617) OR (`Id`=107655 AND `TableHash`=600565378 AND `RecordId`=660616) OR (`Id`=107655 AND `TableHash`=600565378 AND `RecordId`=643167) OR (`Id`=107655 AND `TableHash`=3218799089 AND `RecordId`=144347) OR (`Id`=107652 AND `TableHash`=3386943305 AND `RecordId`=344773) OR (`Id`=107652 AND `TableHash`=3386943305 AND `RecordId`=344568) OR (`Id`=107652 AND `TableHash`=3386943305 AND `RecordId`=344162) OR (`Id`=107652 AND `TableHash`=3386943305 AND `RecordId`=341921) OR (`Id`=107651 AND `TableHash`=1010104591 AND `RecordId`=24096) OR (`Id`=107651 AND `TableHash`=1010104591 AND `RecordId`=23712) OR (`Id`=107651 AND `TableHash`=1010104591 AND `RecordId`=23427) OR (`Id`=107651 AND `TableHash`=1010104591 AND `RecordId`=23426) OR (`Id`=107651 AND `TableHash`=1010104591 AND `RecordId`=23425) OR (`Id`=107651 AND `TableHash`=1010104591 AND `RecordId`=23424) OR (`Id`=107649 AND `TableHash`=383023617 AND `RecordId`=24401) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=1317414) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=1289007) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=1280841) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=1032419) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=1029059) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=737871) OR (`Id`=107649 AND `TableHash`=4030871717 AND `RecordId`=191091) OR (`Id`=107649 AND `TableHash`=1880017466 AND `RecordId`=285616) OR (`Id`=107649 AND `TableHash`=1880017466 AND `RecordId`=285615) OR (`Id`=107649 AND `TableHash`=1272569722 AND `RecordId`=94972) OR (`Id`=107648 AND `TableHash`=4030871717 AND `RecordId`=301124) OR (`Id`=107648 AND `TableHash`=1880017466 AND `RecordId`=164008) OR (`Id`=107648 AND `TableHash`=1880017466 AND `RecordId`=164007) OR (`Id`=107648 AND `TableHash`=1272569722 AND `RecordId`=58948) OR (`Id`=107646 AND `TableHash`=813076512 AND `RecordId`=204772) OR (`Id`=107646 AND `TableHash`=4030871717 AND `RecordId`=1317394) OR (`Id`=107646 AND `TableHash`=4030871717 AND `RecordId`=1273067) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=1252594) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=1249259) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=1135777) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=1096991) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=898195) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=261018) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=191059) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=191058) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=191057) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=191056) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=179720) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=136652) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=44107) OR (`Id`=107645 AND `TableHash`=4030871717 AND `RecordId`=280) OR (`Id`=107644 AND `TableHash`=4030871717 AND `RecordId`=1273712) OR (`Id`=107644 AND `TableHash`=4030871717 AND `RecordId`=280158) OR (`Id`=107643 AND `TableHash`=1163127287 AND `RecordId`=104889) OR (`Id`=107641 AND `TableHash`=4030871717 AND `RecordId`=844836) OR (`Id`=107641 AND `TableHash`=4030871717 AND `RecordId`=318967) OR (`Id`=107641 AND `TableHash`=4030871717 AND `RecordId`=318965) OR (`Id`=107641 AND `TableHash`=4030871717 AND `RecordId`=315254) OR (`Id`=107641 AND `TableHash`=4030871717 AND `RecordId`=306731) OR (`Id`=107640 AND `TableHash`=1163127287 AND `RecordId`=124664) OR (`Id`=107639 AND `TableHash`=1163127287 AND `RecordId`=78955) OR (`Id`=107638 AND `TableHash`=4030871717 AND `RecordId`=1311598) OR (`Id`=107638 AND `TableHash`=4030871717 AND `RecordId`=1262767) OR (`Id`=107638 AND `TableHash`=4030871717 AND `RecordId`=1262766) OR (`Id`=107638 AND `TableHash`=4030871717 AND `RecordId`=1262765) OR (`Id`=107637 AND `TableHash`=3764692828 AND `RecordId`=347761) OR (`Id`=107637 AND `TableHash`=1163127287 AND `RecordId`=118111) OR (`Id`=107637 AND `TableHash`=3322146344 AND `RecordId`=811397) OR (`Id`=107637 AND `TableHash`=3322146344 AND `RecordId`=811396) OR (`Id`=107637 AND `TableHash`=3322146344 AND `RecordId`=811376) OR (`Id`=107637 AND `TableHash`=4030871717 AND `RecordId`=1265754) OR (`Id`=107637 AND `TableHash`=4030871717 AND `RecordId`=1265753) OR (`Id`=107637 AND `TableHash`=4030871717 AND `RecordId`=1265752) OR (`Id`=107637 AND `TableHash`=4030871717 AND `RecordId`=1265725) OR (`Id`=107637 AND `TableHash`=1187407512 AND `RecordId`=1257701) OR (`Id`=107637 AND `TableHash`=3776013982 AND `RecordId`=1257701) OR (`Id`=107637 AND `TableHash`=3386943305 AND `RecordId`=341849) OR (`Id`=107637 AND `TableHash`=3386943305 AND `RecordId`=320902) OR (`Id`=107636 AND `TableHash`=4030871717 AND `RecordId`=1317300) OR (`Id`=107636 AND `TableHash`=4030871717 AND `RecordId`=1317299) OR (`Id`=107636 AND `TableHash`=4030871717 AND `RecordId`=1262843) OR (`Id`=107636 AND `TableHash`=3386943305 AND `RecordId`=341739) OR (`Id`=107636 AND `TableHash`=3386943305 AND `RecordId`=341738) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=273874) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=273874) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=273874) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=273874) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=273874) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=273874) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263970) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263970) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263970) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263970) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263970) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263970) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263969) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263969) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263969) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263969) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263969) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263969) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263968) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263968) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263968) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263968) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263968) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263968) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263967) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263967) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263967) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263967) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263967) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263967) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263966) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263966) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263966) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263966) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263966) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263966) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263963) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263963) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263963) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263963) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263963) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263963) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263960) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263960) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263960) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263960) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263960) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263960) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263959) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263959) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263959) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263959) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263959) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263959) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263956) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263956) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263956) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263956) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263956) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263956) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263954) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263954) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263954) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263954) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263954) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263954) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263952) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263952) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263952) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263952) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263952) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263952) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263950) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263950) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263950) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263950) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263950) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263950) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263949) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263949) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263949) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263949) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263949) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263949) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263946) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263946) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263946) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263946) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263946) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263946) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263943) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263943) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263943) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263943) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263943) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263943) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263942) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263942) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263942) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263942) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263942) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263942) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263941) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263941) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263941) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263941) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263941) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263941) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263707) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263707) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263707) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263707) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263707) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263707) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263706) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263706) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263706) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263706) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263706) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263706) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263705) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263705) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263705) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263705) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263705) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263705) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263704) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263704) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263704) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263704) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263704) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263704) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263703) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263703) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263703) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263703) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263703) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263703) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263702) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263702) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263702) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263702) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263702) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263702) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263701) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263701) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263701) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263701) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263701) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263701) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263700) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263700) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263700) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263700) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263700) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263700) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263699) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263699) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263699) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263699) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263699) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263699) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263698) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263698) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263698) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263698) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263698) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263698) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263697) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263697) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263697) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263697) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263697) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263697) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263696) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263696) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263696) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263696) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263696) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263696) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263695) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263695) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263695) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263695) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263695) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263695) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263694) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263694) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263694) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263694) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263694) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263694) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263693) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263693) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263693) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263693) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263693) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263693) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263692) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263692) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263692) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263692) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263692) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263692) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263691) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263691) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263691) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263691) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263691) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263691) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263690) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263690) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263690) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263690) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263690) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263690) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263689) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263689) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263689) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263689) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263689) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263689) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263688) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263688) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263688) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263688) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263688) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263688) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263687) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263687) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263687) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263687) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263687) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263687) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263686) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263686) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263686) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263686) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263686) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263686) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263685) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263685) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263685) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263685) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263685) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263685) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263684) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263684) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263684) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263684) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263684) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263684) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263683) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263683) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263683) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263683) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263683) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263683) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263682) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263682) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263682) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263682) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263682) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263682) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263681) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263681) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263681) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263681) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263681) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263681) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263680) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263680) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263680) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263680) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263680) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263680) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263679) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263679) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263679) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263679) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263679) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263679) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263678) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263678) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263678) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263678) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263678) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263678) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263677) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263677) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263677) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263677) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263677) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263677) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263676) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263676) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263676) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263676) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263676) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263676) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263675) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263675) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263675) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263675) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263675) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263675) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263674) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263674) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263674) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263674) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263674) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263674) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263673) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263673) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263673) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263673) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263673) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263673) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263672) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263672) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263672) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263672) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263672) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263672) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263671) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263671) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263671) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263671) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263671) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263671) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263670) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263670) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263670) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263670) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263670) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263670) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263669) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263669) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263669) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263669) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263669) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263669) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263668) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263668) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263668) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263668) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263668) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263668) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263667) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263667) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263667) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263667) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263667) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263667) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263666) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263666) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263666) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263666) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263666) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263666) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263665) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263665) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263665) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263665) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263665) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263665) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263664) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263664) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263664) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263664) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263664) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263664) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263663) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263663) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263663) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263663) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263663) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263663) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263662) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263662) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263662) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263662) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263662) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263662) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263661) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263661) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263661) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263661) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263661) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263661) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263660) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263660) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263660) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263660) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263660) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263660) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263659) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263659) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263659) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263659) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263659) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263659) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263658) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263658) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263658) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263658) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263658) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263658) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263657) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263657) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263657) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263657) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263657) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263657) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263656) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263656) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263656) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263656) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263656) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263656) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263655) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263655) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263655) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263655) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263655) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263655) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263654) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263654) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263654) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263654) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263654) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263654) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263653) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263653) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263653) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263653) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263653) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263653) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263652) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263652) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263652) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263652) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263652) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263652) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263651) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263651) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263651) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263651) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263651) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263651) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263650) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263650) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263650) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263650) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263650) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263650) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263649) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263649) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263649) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263649) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263649) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263649) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263648) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263648) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263648) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263648) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263648) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263648) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263647) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263647) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263647) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263647) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263647) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263647) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263646) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263646) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263646) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263646) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263646) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263646) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263645) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263645) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263645) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263645) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263645) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263645) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263644) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263644) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263644) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263644) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263644) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263644) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263643) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263643) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263643) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263643) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263643) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263643) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263642) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263642) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263642) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263642) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263642) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263642) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263641) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263641) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263641) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263641) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263641) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263641) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263640) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263640) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263640) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263640) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263640) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263640) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263639) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263639) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263639) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263639) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263639) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263639) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263638) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263638) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263638) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263638) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263638) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263638) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263637) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263637) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263637) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263637) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263637) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263637) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263636) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263636) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263636) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263636) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263636) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263636) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263635) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263635) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263635) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263635) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263635) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263635) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263634) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263634) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263634) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263634) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263634) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263634) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263633) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263633) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263633) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263633) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263633) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263633) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263632) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263632) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263632) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263632) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263632) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263632) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263631) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263631) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263631) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263631) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263631) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263631) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263630) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263630) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263630) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263630) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263630) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263630) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263629) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263629) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263629) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263629) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263629) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263629) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263628) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263628) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263628) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263628) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263628) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263628) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263627) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263627) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263627) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263627) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263627) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263627) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263626) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263626) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263626) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263626) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263626) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263626) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263625) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263625) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263625) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263625) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263625) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263625) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263624) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263624) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263624) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263624) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263624) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263624) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263623) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263623) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263623) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263623) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263623) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263623) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263622) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263622) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263622) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263622) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263622) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263622) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263621) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263621) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263621) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263621) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263621) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263621) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263620) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263620) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263620) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263620) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263620) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263620) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263619) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263619) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263619) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263619) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263619) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263619) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263618) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263618) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263618) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263618) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263618) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263618) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263617) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263617) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263617) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263617) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263617) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263617) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263616) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263616) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263616) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263616) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263616) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263616) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263615) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263615) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263615) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263615) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263615) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263615) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263614) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263614) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263614) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263614) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263614) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263614) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263613) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263613) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263613) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263613) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263613) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263613) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263612) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263612) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263612) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263612) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263612) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263612) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263611) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263611) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263611) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263611) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263611) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263611) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263610) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263610) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263610) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263610) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263610) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263610) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263609) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263609) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263609) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263609) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263609) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263609) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263608) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263608) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263608) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263608) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263608) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263608) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263607) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263607) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263607) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263607) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263607) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263607) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263606) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263606) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263606) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263606) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263606) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263606) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263605) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263605) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263605) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263605) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263605) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263605) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263604) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263604) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263604) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263604) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263604) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263604) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263603) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263603) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263603) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263603) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263603) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263603) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263602) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263602) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263602) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263602) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263602) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263602) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263601) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263601) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263601) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263601) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263601) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263601) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263600) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263600) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263600) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263600) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263600) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263600) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263599) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263599) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263599) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263599) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263599) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263599) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263598) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263598) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263598) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263598) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263598) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263598) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263597) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263597) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263597) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263597) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263597) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263597) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263596) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263596) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263596) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263596) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263596) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263596) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263595) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263595) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263595) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263595) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263595) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263595) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263594) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263594) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263594) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263594) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263594) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263594) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263593) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263593) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263593) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263593) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263593) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263593) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263592) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263592) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263592) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263592) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263592) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263592) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263591) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263591) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263591) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263591) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263591) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263591) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263590) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263590) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263590) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263590) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263590) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263590) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263589) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263589) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263589) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263589) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263589) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263589) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263588) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263588) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263588) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263588) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263588) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263588) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263587) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263587) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263587) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263587) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263587) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263587) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263586) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263586) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263586) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263586) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263586) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263586) OR (`Id`=107634 AND `TableHash`=1344507586 AND `RecordId`=263585) OR (`Id`=107634 AND `TableHash`=428746933 AND `RecordId`=263585) OR (`Id`=107634 AND `TableHash`=2442913102 AND `RecordId`=263585) OR (`Id`=107634 AND `TableHash`=3465080266 AND `RecordId`=263585) OR (`Id`=107634 AND `TableHash`=3037505077 AND `RecordId`=263585) OR (`Id`=107634 AND `TableHash`=1417785224 AND `RecordId`=263585) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1317298) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1317297) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1317296) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1257585) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1213821) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1213820) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1172978) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=1166446) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=287112) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=274038) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=129143) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=129139) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=21916) OR (`Id`=107633 AND `TableHash`=4030871717 AND `RecordId`=21915) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=1317284) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=1317283) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=1275170) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=1275169) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=1275166) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=1219457) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=815761) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=815754) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=331347) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=331344) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=60372) OR (`Id`=107632 AND `TableHash`=4030871717 AND `RecordId`=60368) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1317286) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1311547) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1311546) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1305055) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1297422) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1296248) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1289584) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1262639) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1262027) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1248749) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1227866) OR (`Id`=107631 AND `TableHash`=4030871717 AND `RecordId`=1227811) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=334190) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=334187) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=334177) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=334174) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325451) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325449) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325448) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325447) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325445) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325444) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325443) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325441) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=325440) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=324496) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=323237) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=323236) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=323231) OR (`Id`=107631 AND `TableHash`=3386943305 AND `RecordId`=319628) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=619581) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=619575) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=619569) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=591891) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=581318) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=581317) OR (`Id`=107630 AND `TableHash`=4033975491 AND `RecordId`=581316) OR (`Id`=107630 AND `TableHash`=1181150530 AND `RecordId`=751209) OR (`Id`=107630 AND `TableHash`=1181150530 AND `RecordId`=751200) OR (`Id`=107630 AND `TableHash`=1181150530 AND `RecordId`=751192) OR (`Id`=107628 AND `TableHash`=312611497 AND `RecordId`=27219) OR (`Id`=107628 AND `TableHash`=312611497 AND `RecordId`=27218) OR (`Id`=107628 AND `TableHash`=1163127287 AND `RecordId`=116798) OR (`Id`=107628 AND `TableHash`=3322146344 AND `RecordId`=826098) OR (`Id`=107628 AND `TableHash`=3322146344 AND `RecordId`=826097) OR (`Id`=107628 AND `TableHash`=3322146344 AND `RecordId`=826096) OR (`Id`=107628 AND `TableHash`=3322146344 AND `RecordId`=804965) OR (`Id`=107628 AND `TableHash`=3322146344 AND `RecordId`=802597) OR (`Id`=107628 AND `TableHash`=4096770149 AND `RecordId`=243101) OR (`Id`=107627 AND `TableHash`=3386943305 AND `RecordId`=329177) OR (`Id`=107624 AND `TableHash`=4030871717 AND `RecordId`=1271172) OR (`Id`=107623 AND `TableHash`=1163127287 AND `RecordId`=125758) OR (`Id`=107623 AND `TableHash`=4030871717 AND `RecordId`=1317269) OR (`Id`=107623 AND `TableHash`=4030871717 AND `RecordId`=1275546) OR (`Id`=107623 AND `TableHash`=1187407512 AND `RecordId`=444088) OR (`Id`=107623 AND `TableHash`=3776013982 AND `RecordId`=444088) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1317258) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1317257) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1312948) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1312947) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1312946) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1312945) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1294586) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1293533) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=1264218) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=99544) OR (`Id`=107618 AND `TableHash`=4030871717 AND `RecordId`=99543) OR (`Id`=107617 AND `TableHash`=240389885 AND `RecordId`=9551) OR (`Id`=107617 AND `TableHash`=240389885 AND `RecordId`=9550) OR (`Id`=107617 AND `TableHash`=666345498 AND `RecordId`=495238) OR (`Id`=107617 AND `TableHash`=4033975491 AND `RecordId`=619554) OR (`Id`=107617 AND `TableHash`=1181150530 AND `RecordId`=751159) OR (`Id`=107617 AND `TableHash`=1181150530 AND `RecordId`=751156) OR (`Id`=107617 AND `TableHash`=1181150530 AND `RecordId`=751154) OR (`Id`=107617 AND `TableHash`=1181150530 AND `RecordId`=751151) OR (`Id`=107617 AND `TableHash`=4102286043 AND `RecordId`=265629) OR (`Id`=107617 AND `TableHash`=3425193231 AND `RecordId`=546550) OR (`Id`=107617 AND `TableHash`=4146370265 AND `RecordId`=168788) OR (`Id`=107617 AND `TableHash`=1163127287 AND `RecordId`=121585) OR (`Id`=107617 AND `TableHash`=1163127287 AND `RecordId`=121450) OR (`Id`=107617 AND `TableHash`=1163127287 AND `RecordId`=118292) OR (`Id`=107617 AND `TableHash`=3322146344 AND `RecordId`=842710) OR (`Id`=107617 AND `TableHash`=3322146344 AND `RecordId`=809379) OR (`Id`=107617 AND `TableHash`=3322146344 AND `RecordId`=808638) OR (`Id`=107617 AND `TableHash`=3322146344 AND `RecordId`=808637) OR (`Id`=107617 AND `TableHash`=3322146344 AND `RecordId`=127779) OR (`Id`=107617 AND `TableHash`=4030871717 AND `RecordId`=1317291) OR (`Id`=107617 AND `TableHash`=4030871717 AND `RecordId`=1262398) OR (`Id`=107617 AND `TableHash`=4030871717 AND `RecordId`=1261218) OR (`Id`=107617 AND `TableHash`=1187407512 AND `RecordId`=1295319) OR (`Id`=107617 AND `TableHash`=3776013982 AND `RecordId`=1295319) OR (`Id`=107617 AND `TableHash`=2151089334 AND `RecordId`=7976) OR (`Id`=107617 AND `TableHash`=2151089334 AND `RecordId`=7973) OR (`Id`=107617 AND `TableHash`=2151089334 AND `RecordId`=7972) OR (`Id`=107617 AND `TableHash`=1255424668 AND `RecordId`=227430) OR (`Id`=107617 AND `TableHash`=1255424668 AND `RecordId`=223818) OR (`Id`=107617 AND `TableHash`=1255424668 AND `RecordId`=216419) OR (`Id`=107617 AND `TableHash`=1255424668 AND `RecordId`=216418) OR (`Id`=107617 AND `TableHash`=1255424668 AND `RecordId`=216417) OR (`Id`=107617 AND `TableHash`=4012104832 AND `RecordId`=114029) OR (`Id`=107617 AND `TableHash`=3386943305 AND `RecordId`=342567) OR (`Id`=107617 AND `TableHash`=3386943305 AND `RecordId`=331681) OR (`Id`=107617 AND `TableHash`=3386943305 AND `RecordId`=76627) OR (`Id`=107617 AND `TableHash`=3386291891 AND `RecordId`=249086) OR (`Id`=107617 AND `TableHash`=3386291891 AND `RecordId`=234064) OR (`Id`=107617 AND `TableHash`=3386291891 AND `RecordId`=122405) OR (`Id`=107617 AND `TableHash`=3386291891 AND `RecordId`=79093) OR (`Id`=107617 AND `TableHash`=1548466975 AND `RecordId`=30807) OR (`Id`=107615 AND `TableHash`=1187407512 AND `RecordId`=1295191) OR (`Id`=107615 AND `TableHash`=3776013982 AND `RecordId`=1295191) OR (`Id`=107615 AND `TableHash`=1344507586 AND `RecordId`=251161) OR (`Id`=107615 AND `TableHash`=428746933 AND `RecordId`=251161) OR (`Id`=107615 AND `TableHash`=2442913102 AND `RecordId`=251161) OR (`Id`=107615 AND `TableHash`=3465080266 AND `RecordId`=251161) OR (`Id`=107615 AND `TableHash`=3037505077 AND `RecordId`=251161) OR (`Id`=107615 AND `TableHash`=1417785224 AND `RecordId`=251161) OR (`Id`=107615 AND `TableHash`=1344507586 AND `RecordId`=133494) OR (`Id`=107615 AND `TableHash`=428746933 AND `RecordId`=133494) OR (`Id`=107615 AND `TableHash`=2442913102 AND `RecordId`=133494) OR (`Id`=107615 AND `TableHash`=3465080266 AND `RecordId`=133494) OR (`Id`=107615 AND `TableHash`=3037505077 AND `RecordId`=133494) OR (`Id`=107615 AND `TableHash`=1417785224 AND `RecordId`=133494) OR (`Id`=107615 AND `TableHash`=1344507586 AND `RecordId`=49810) OR (`Id`=107615 AND `TableHash`=428746933 AND `RecordId`=49810) OR (`Id`=107615 AND `TableHash`=2442913102 AND `RecordId`=49810) OR (`Id`=107615 AND `TableHash`=3465080266 AND `RecordId`=49810) OR (`Id`=107615 AND `TableHash`=3037505077 AND `RecordId`=49810) OR (`Id`=107615 AND `TableHash`=1417785224 AND `RecordId`=49810) OR (`Id`=107615 AND `TableHash`=35137211 AND `RecordId`=315348) OR (`Id`=107614 AND `TableHash`=3247720076 AND `RecordId`=42321) OR (`Id`=107612 AND `TableHash`=312611497 AND `RecordId`=28078) OR (`Id`=107612 AND `TableHash`=312611497 AND `RecordId`=28077) OR (`Id`=107612 AND `TableHash`=3322146344 AND `RecordId`=842699) OR (`Id`=107612 AND `TableHash`=3322146344 AND `RecordId`=842698) OR (`Id`=107612 AND `TableHash`=3322146344 AND `RecordId`=842697) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1317244) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1317243) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1317242) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1317241) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1317235) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1317231) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1315543) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1315294) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1315293) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1310401) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1310400) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1307395) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1307394) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1291655) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1291654) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1291652) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1291651) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1276232) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1276229) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1270371) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1240276) OR (`Id`=107612 AND `TableHash`=4030871717 AND `RecordId`=1240201) OR (`Id`=107610 AND `TableHash`=868868520 AND `RecordId`=6686) OR (`Id`=107610 AND `TableHash`=3322146344 AND `RecordId`=822271) OR (`Id`=107608 AND `TableHash`=2120822102 AND `RecordId`=446037) OR (`Id`=107607 AND `TableHash`=2411028436 AND `RecordId`=11444) OR (`Id`=107607 AND `TableHash`=2411028436 AND `RecordId`=11443) OR (`Id`=107607 AND `TableHash`=3108775943 AND `RecordId`=156820) OR (`Id`=107607 AND `TableHash`=3108775943 AND `RecordId`=156819) OR (`Id`=107607 AND `TableHash`=3108775943 AND `RecordId`=147720) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446276) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446275) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446274) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446273) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446272) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446271) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446270) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=446269) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=421256) OR (`Id`=107607 AND `TableHash`=2120822102 AND `RecordId`=421255) OR (`Id`=107605 AND `TableHash`=1163127287 AND `RecordId`=126121) OR (`Id`=107605 AND `TableHash`=4030871717 AND `RecordId`=1308402) OR (`Id`=107605 AND `TableHash`=4030871717 AND `RecordId`=1308401) OR (`Id`=107605 AND `TableHash`=4030871717 AND `RecordId`=1308400) OR (`Id`=107605 AND `TableHash`=4030871717 AND `RecordId`=1308399) OR (`Id`=107605 AND `TableHash`=4030871717 AND `RecordId`=1308396) OR (`Id`=107605 AND `TableHash`=4030871717 AND `RecordId`=1299643) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11542) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11525) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11521) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11520) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11519) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11400) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11269) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11268) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11267) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11266) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11139) OR (`Id`=107605 AND `TableHash`=3146089301 AND `RecordId`=11138) OR (`Id`=107605 AND `TableHash`=1880017466 AND `RecordId`=303153) OR (`Id`=107605 AND `TableHash`=1880017466 AND `RecordId`=303152) OR (`Id`=107605 AND `TableHash`=1880017466 AND `RecordId`=303151) OR (`Id`=107605 AND `TableHash`=1272569722 AND `RecordId`=100336) OR (`Id`=107604 AND `TableHash`=3386943305 AND `RecordId`=334176) OR (`Id`=107603 AND `TableHash`=666345498 AND `RecordId`=518949) OR (`Id`=107603 AND `TableHash`=666345498 AND `RecordId`=518948) OR (`Id`=107603 AND `TableHash`=666345498 AND `RecordId`=518947) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619506) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619505) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619504) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619503) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619502) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619501) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619500) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619499) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619498) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619497) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619496) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619495) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619494) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619493) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619492) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619491) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619490) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619489) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619488) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619487) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619486) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619485) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619484) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619483) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619482) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=619481) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=611163) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=611162) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=611161) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=611160) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=604956) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=604955) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=588800) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=588799) OR (`Id`=107603 AND `TableHash`=4033975491 AND `RecordId`=588798) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751040) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751039) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751038) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751037) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751036) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751035) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751034) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751033) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751032) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751031) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751030) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751029) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751028) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751027) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751026) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751025) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751024) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751023) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751022) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751021) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751020) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751019) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751018) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751017) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751016) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751015) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751014) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751013) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751012) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=751011) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=733082) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=733081) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=733080) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=733079) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=684882) OR (`Id`=107603 AND `TableHash`=1181150530 AND `RecordId`=666193) OR (`Id`=107603 AND `TableHash`=4102286043 AND `RecordId`=265598) OR (`Id`=107603 AND `TableHash`=4102286043 AND `RecordId`=265597) OR (`Id`=107603 AND `TableHash`=4102286043 AND `RecordId`=265596) OR (`Id`=107603 AND `TableHash`=4102286043 AND `RecordId`=265595) OR (`Id`=107603 AND `TableHash`=4102286043 AND `RecordId`=265594) OR (`Id`=107603 AND `TableHash`=3425193231 AND `RecordId`=546511) OR (`Id`=107603 AND `TableHash`=3425193231 AND `RecordId`=546510) OR (`Id`=107603 AND `TableHash`=3425193231 AND `RecordId`=546509) OR (`Id`=107603 AND `TableHash`=3425193231 AND `RecordId`=546508) OR (`Id`=107603 AND `TableHash`=3425193231 AND `RecordId`=546507) OR (`Id`=107603 AND `TableHash`=3425193231 AND `RecordId`=546506) OR (`Id`=107603 AND `TableHash`=859088734 AND `RecordId`=419939) OR (`Id`=107603 AND `TableHash`=4146370265 AND `RecordId`=182368) OR (`Id`=107603 AND `TableHash`=4146370265 AND `RecordId`=182367) OR (`Id`=107603 AND `TableHash`=4146370265 AND `RecordId`=182366) OR (`Id`=107603 AND `TableHash`=4146370265 AND `RecordId`=169070) OR (`Id`=107603 AND `TableHash`=3322146344 AND `RecordId`=842672) OR (`Id`=107603 AND `TableHash`=4030871717 AND `RecordId`=1317217) OR (`Id`=107603 AND `TableHash`=4030871717 AND `RecordId`=1270230) OR (`Id`=107603 AND `TableHash`=4030871717 AND `RecordId`=1270229) OR (`Id`=107603 AND `TableHash`=4030871717 AND `RecordId`=1262538) OR (`Id`=107603 AND `TableHash`=1187407512 AND `RecordId`=1295278) OR (`Id`=107603 AND `TableHash`=3776013982 AND `RecordId`=1295278) OR (`Id`=107603 AND `TableHash`=2151089334 AND `RecordId`=7970) OR (`Id`=107603 AND `TableHash`=2151089334 AND `RecordId`=7969) OR (`Id`=107603 AND `TableHash`=3571931810 AND `RecordId`=38605) OR (`Id`=107602 AND `TableHash`=1163127287 AND `RecordId`=115543) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=344455) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=344114) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342090) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342089) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342087) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342086) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342085) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342084) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342083) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342082) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=342081) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=330211) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=330210) OR (`Id`=107600 AND `TableHash`=3386943305 AND `RecordId`=330077) OR (`Id`=107596 AND `TableHash`=4030871717 AND `RecordId`=480070) OR (`Id`=107594 AND `TableHash`=3322146344 AND `RecordId`=838394) OR (`Id`=107594 AND `TableHash`=3322146344 AND `RecordId`=833943) OR (`Id`=107594 AND `TableHash`=3322146344 AND `RecordId`=831819) OR (`Id`=107594 AND `TableHash`=3322146344 AND `RecordId`=826976) OR (`Id`=107593 AND `TableHash`=4030871717 AND `RecordId`=1193929) OR (`Id`=107592 AND `TableHash`=3108775943 AND `RecordId`=148755) OR (`Id`=107592 AND `TableHash`=2120822102 AND `RecordId`=446268) OR (`Id`=107592 AND `TableHash`=2120822102 AND `RecordId`=446267) OR (`Id`=107592 AND `TableHash`=2120822102 AND `RecordId`=446266) OR (`Id`=107592 AND `TableHash`=1255424668 AND `RecordId`=227429) OR (`Id`=107592 AND `TableHash`=1255424668 AND `RecordId`=227428) OR (`Id`=107592 AND `TableHash`=4012104832 AND `RecordId`=114028) OR (`Id`=107592 AND `TableHash`=3538824359 AND `RecordId`=62886) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264323) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264323) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264323) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264323) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264323) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264323) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264322) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264322) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264322) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264322) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264322) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264322) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264321) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264321) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264321) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264321) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264321) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264321) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264320) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264320) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264320) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264320) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264320) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264320) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264319) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264319) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264319) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264319) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264319) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264319) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264318) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264318) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264318) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264318) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264318) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264318) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264317) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264317) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264317) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264317) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264317) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264317) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264316) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264316) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264316) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264316) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264316) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264316) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264315) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264315) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264315) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264315) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264315) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264315) OR (`Id`=107590 AND `TableHash`=1344507586 AND `RecordId`=264314) OR (`Id`=107590 AND `TableHash`=428746933 AND `RecordId`=264314) OR (`Id`=107590 AND `TableHash`=2442913102 AND `RecordId`=264314) OR (`Id`=107590 AND `TableHash`=3465080266 AND `RecordId`=264314) OR (`Id`=107590 AND `TableHash`=3037505077 AND `RecordId`=264314) OR (`Id`=107590 AND `TableHash`=1417785224 AND `RecordId`=264314) OR (`Id`=107587 AND `TableHash`=3745449290 AND `RecordId`=8615) OR (`Id`=107585 AND `TableHash`=4030871717 AND `RecordId`=1191490) OR (`Id`=107585 AND `TableHash`=4030871717 AND `RecordId`=1000723) OR (`Id`=107585 AND `TableHash`=4030871717 AND `RecordId`=286506) OR (`Id`=107585 AND `TableHash`=4030871717 AND `RecordId`=191169) OR (`Id`=107578 AND `TableHash`=261693969 AND `RecordId`=48022) OR (`Id`=107578 AND `TableHash`=986198281 AND `RecordId`=48022) OR (`Id`=107576 AND `TableHash`=1163127287 AND `RecordId`=125361) OR (`Id`=107573 AND `TableHash`=666345498 AND `RecordId`=518926) OR (`Id`=107573 AND `TableHash`=666345498 AND `RecordId`=518924) OR (`Id`=107573 AND `TableHash`=4033975491 AND `RecordId`=619445) OR (`Id`=107573 AND `TableHash`=1181150530 AND `RecordId`=750937) OR (`Id`=107573 AND `TableHash`=4102286043 AND `RecordId`=265568) OR (`Id`=107573 AND `TableHash`=3425193231 AND `RecordId`=546473) OR (`Id`=107573 AND `TableHash`=4146370265 AND `RecordId`=182353) OR (`Id`=107573 AND `TableHash`=1163127287 AND `RecordId`=127901) OR (`Id`=107573 AND `TableHash`=3322146344 AND `RecordId`=842643) OR (`Id`=107573 AND `TableHash`=3322146344 AND `RecordId`=842634) OR (`Id`=107573 AND `TableHash`=3322146344 AND `RecordId`=822521) OR (`Id`=107573 AND `TableHash`=4030871717 AND `RecordId`=1317160) OR (`Id`=107573 AND `TableHash`=4030871717 AND `RecordId`=1317159) OR (`Id`=107573 AND `TableHash`=4030871717 AND `RecordId`=1317151) OR (`Id`=107573 AND `TableHash`=4030871717 AND `RecordId`=1284204) OR (`Id`=107573 AND `TableHash`=4030871717 AND `RecordId`=1267125) OR (`Id`=107573 AND `TableHash`=1187407512 AND `RecordId`=1295243) OR (`Id`=107573 AND `TableHash`=3776013982 AND `RecordId`=1295243) OR (`Id`=107573 AND `TableHash`=1187407512 AND `RecordId`=1295237) OR (`Id`=107573 AND `TableHash`=3776013982 AND `RecordId`=1295237) OR (`Id`=107573 AND `TableHash`=600565378 AND `RecordId`=632510) OR (`Id`=107573 AND `TableHash`=600565378 AND `RecordId`=632508) OR (`Id`=107573 AND `TableHash`=3386291891 AND `RecordId`=252603) OR (`Id`=107571 AND `TableHash`=1344507586 AND `RecordId`=256700) OR (`Id`=107571 AND `TableHash`=428746933 AND `RecordId`=256700) OR (`Id`=107571 AND `TableHash`=2442913102 AND `RecordId`=256700) OR (`Id`=107571 AND `TableHash`=3465080266 AND `RecordId`=256700) OR (`Id`=107571 AND `TableHash`=3037505077 AND `RecordId`=256700) OR (`Id`=107571 AND `TableHash`=1417785224 AND `RecordId`=256700) OR (`Id`=107570 AND `TableHash`=3201599327 AND `RecordId`=15388) OR (`Id`=107569 AND `TableHash`=1344507586 AND `RecordId`=250445) OR (`Id`=107569 AND `TableHash`=428746933 AND `RecordId`=250445) OR (`Id`=107569 AND `TableHash`=2442913102 AND `RecordId`=250445) OR (`Id`=107569 AND `TableHash`=3465080266 AND `RecordId`=250445) OR (`Id`=107569 AND `TableHash`=3037505077 AND `RecordId`=250445) OR (`Id`=107569 AND `TableHash`=1417785224 AND `RecordId`=250445) OR (`Id`=107568 AND `TableHash`=1344507586 AND `RecordId`=250360) OR (`Id`=107568 AND `TableHash`=428746933 AND `RecordId`=250360) OR (`Id`=107568 AND `TableHash`=2442913102 AND `RecordId`=250360) OR (`Id`=107568 AND `TableHash`=3465080266 AND `RecordId`=250360) OR (`Id`=107568 AND `TableHash`=3037505077 AND `RecordId`=250360) OR (`Id`=107568 AND `TableHash`=1417785224 AND `RecordId`=250360) OR (`Id`=107567 AND `TableHash`=1344507586 AND `RecordId`=250443) OR (`Id`=107567 AND `TableHash`=428746933 AND `RecordId`=250443) OR (`Id`=107567 AND `TableHash`=2442913102 AND `RecordId`=250443) OR (`Id`=107567 AND `TableHash`=3465080266 AND `RecordId`=250443) OR (`Id`=107567 AND `TableHash`=3037505077 AND `RecordId`=250443) OR (`Id`=107567 AND `TableHash`=1417785224 AND `RecordId`=250443) OR (`Id`=107566 AND `TableHash`=3072882582 AND `RecordId`=58022) OR (`Id`=107566 AND `TableHash`=3322146344 AND `RecordId`=807169) OR (`Id`=107566 AND `TableHash`=4030871717 AND `RecordId`=1317117) OR (`Id`=107565 AND `TableHash`=1187407512 AND `RecordId`=1226037) OR (`Id`=107565 AND `TableHash`=3776013982 AND `RecordId`=1226037) OR (`Id`=107565 AND `TableHash`=1187407512 AND `RecordId`=442615) OR (`Id`=107565 AND `TableHash`=3776013982 AND `RecordId`=442615) OR (`Id`=107564 AND `TableHash`=3108775943 AND `RecordId`=151162) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443814) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443812) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443534) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443531) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443528) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443525) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443522) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443519) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443516) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443513) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443510) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443507) OR (`Id`=107564 AND `TableHash`=2120822102 AND `RecordId`=443504) OR (`Id`=107564 AND `TableHash`=1255424668 AND `RecordId`=225732) OR (`Id`=107561 AND `TableHash`=1163127287 AND `RecordId`=119077) OR (`Id`=107561 AND `TableHash`=1163127287 AND `RecordId`=118958) OR (`Id`=107561 AND `TableHash`=1163127287 AND `RecordId`=115179) OR (`Id`=107561 AND `TableHash`=1163127287 AND `RecordId`=110995) OR (`Id`=107561 AND `TableHash`=1163127287 AND `RecordId`=108877) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41951) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41950) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41949) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41948) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41926) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41925) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41924) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=41923) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39476) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39352) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39295) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39292) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39004) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39003) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39002) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=39001) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=38554) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=38480) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=38462) OR (`Id`=107561 AND `TableHash`=3571931810 AND `RecordId`=36665) OR (`Id`=107559 AND `TableHash`=3386943305 AND `RecordId`=23675) OR (`Id`=107559 AND `TableHash`=3386291891 AND `RecordId`=59271) OR (`Id`=107558 AND `TableHash`=1163127287 AND `RecordId`=125126) OR (`Id`=107558 AND `TableHash`=1163127287 AND `RecordId`=102459) OR (`Id`=107558 AND `TableHash`=1163127287 AND `RecordId`=38300) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1317106) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1317085) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1317081) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288667) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288663) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288661) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288654) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288649) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288647) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288637) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288621) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288617) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288614) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288612) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288609) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288605) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288602) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288601) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288582) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288578) OR (`Id`=107558 AND `TableHash`=4030871717 AND `RecordId`=1288577) OR (`Id`=107557 AND `TableHash`=3322146344 AND `RecordId`=842596) OR (`Id`=107557 AND `TableHash`=4030871717 AND `RecordId`=1317084) OR (`Id`=107557 AND `TableHash`=1627543382 AND `RecordId`=231942) OR (`Id`=107557 AND `TableHash`=1187407512 AND `RecordId`=1295194) OR (`Id`=107557 AND `TableHash`=3776013982 AND `RecordId`=1295194) OR (`Id`=107557 AND `TableHash`=1187407512 AND `RecordId`=1241218) OR (`Id`=107557 AND `TableHash`=3776013982 AND `RecordId`=1241218) OR (`Id`=107557 AND `TableHash`=3108775943 AND `RecordId`=156806) OR (`Id`=107557 AND `TableHash`=2120822102 AND `RecordId`=446213) OR (`Id`=107557 AND `TableHash`=2120822102 AND `RecordId`=446212) OR (`Id`=107557 AND `TableHash`=2120822102 AND `RecordId`=446190) OR (`Id`=107556 AND `TableHash`=3645674820 AND `RecordId`=298160) OR (`Id`=107556 AND `TableHash`=3834752085 AND `RecordId`=298160) OR (`Id`=107556 AND `TableHash`=3645674820 AND `RecordId`=76787) OR (`Id`=107556 AND `TableHash`=3834752085 AND `RecordId`=76787) OR (`Id`=107556 AND `TableHash`=3645674820 AND `RecordId`=24387) OR (`Id`=107556 AND `TableHash`=3834752085 AND `RecordId`=24387) OR (`Id`=107554 AND `TableHash`=2202435563 AND `RecordId`=1297083) OR (`Id`=107554 AND `TableHash`=2202435563 AND `RecordId`=1297082) OR (`Id`=107554 AND `TableHash`=2202435563 AND `RecordId`=1265111) OR (`Id`=107554 AND `TableHash`=2202435563 AND `RecordId`=1265110) OR (`Id`=107554 AND `TableHash`=2921112328 AND `RecordId`=575022) OR (`Id`=107554 AND `TableHash`=2921112328 AND `RecordId`=575021) OR (`Id`=107554 AND `TableHash`=2921112328 AND `RecordId`=563524) OR (`Id`=107554 AND `TableHash`=2921112328 AND `RecordId`=563523) OR (`Id`=107553 AND `TableHash`=1163127287 AND `RecordId`=69492) OR (`Id`=107553 AND `TableHash`=1163127287 AND `RecordId`=62720) OR (`Id`=107553 AND `TableHash`=1163127287 AND `RecordId`=33148) OR (`Id`=107553 AND `TableHash`=3322146344 AND `RecordId`=433206) OR (`Id`=107552 AND `TableHash`=3322146344 AND `RecordId`=795903) OR (`Id`=107552 AND `TableHash`=3322146344 AND `RecordId`=788892) OR (`Id`=107552 AND `TableHash`=4030871717 AND `RecordId`=1253880) OR (`Id`=107552 AND `TableHash`=4030871717 AND `RecordId`=1248346) OR (`Id`=107552 AND `TableHash`=4030871717 AND `RecordId`=1245729) OR (`Id`=107552 AND `TableHash`=4030871717 AND `RecordId`=1240247) OR (`Id`=107552 AND `TableHash`=4030871717 AND `RecordId`=1228685) OR (`Id`=107552 AND `TableHash`=2575642838 AND `RecordId`=749) OR (`Id`=107552 AND `TableHash`=2575642838 AND `RecordId`=748) OR (`Id`=107551 AND `TableHash`=1163127287 AND `RecordId`=127647) OR (`Id`=107551 AND `TableHash`=3322146344 AND `RecordId`=841708) OR (`Id`=107551 AND `TableHash`=1187407512 AND `RecordId`=1294288) OR (`Id`=107551 AND `TableHash`=3776013982 AND `RecordId`=1294288) OR (`Id`=107547 AND `TableHash`=3322146344 AND `RecordId`=664030) OR (`Id`=107545 AND `TableHash`=3567803627 AND `RecordId`=26113) OR (`Id`=107545 AND `TableHash`=178219711 AND `RecordId`=9351) OR (`Id`=107545 AND `TableHash`=666345498 AND `RecordId`=518896) OR (`Id`=107545 AND `TableHash`=666345498 AND `RecordId`=513301) OR (`Id`=107545 AND `TableHash`=3425193231 AND `RecordId`=546424) OR (`Id`=107545 AND `TableHash`=3425193231 AND `RecordId`=546422) OR (`Id`=107545 AND `TableHash`=4146370265 AND `RecordId`=182329) OR (`Id`=107545 AND `TableHash`=3764692828 AND `RecordId`=352171) OR (`Id`=107545 AND `TableHash`=3322146344 AND `RecordId`=841043) OR (`Id`=107545 AND `TableHash`=3322146344 AND `RecordId`=834506) OR (`Id`=107545 AND `TableHash`=4030871717 AND `RecordId`=1317083) OR (`Id`=107545 AND `TableHash`=4030871717 AND `RecordId`=1314442) OR (`Id`=107545 AND `TableHash`=4030871717 AND `RecordId`=1308040) OR (`Id`=107545 AND `TableHash`=4030871717 AND `RecordId`=1303905) OR (`Id`=107545 AND `TableHash`=4030871717 AND `RecordId`=1303893) OR (`Id`=107545 AND `TableHash`=4030871717 AND `RecordId`=1303718) OR (`Id`=107545 AND `TableHash`=1187407512 AND `RecordId`=1286830) OR (`Id`=107545 AND `TableHash`=3776013982 AND `RecordId`=1286830) OR (`Id`=107545 AND `TableHash`=3108775943 AND `RecordId`=156816) OR (`Id`=107545 AND `TableHash`=3108775943 AND `RecordId`=153716) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446265) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446264) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446263) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446262) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446261) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446260) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446259) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446258) OR (`Id`=107545 AND `TableHash`=2120822102 AND `RecordId`=446257) OR (`Id`=107545 AND `TableHash`=600565378 AND `RecordId`=664416) OR (`Id`=107545 AND `TableHash`=3386943305 AND `RecordId`=349084) OR (`Id`=107545 AND `TableHash`=3386943305 AND `RecordId`=345036) OR (`Id`=107545 AND `TableHash`=3386943305 AND `RecordId`=344964) OR (`Id`=107545 AND `TableHash`=3386291891 AND `RecordId`=265572) OR (`Id`=107545 AND `TableHash`=3571931810 AND `RecordId`=42929) OR (`Id`=107545 AND `TableHash`=1548466975 AND `RecordId`=43675) OR (`Id`=107543 AND `TableHash`=2199425034 AND `RecordId`=31212) OR (`Id`=107543 AND `TableHash`=2199425034 AND `RecordId`=31211) OR (`Id`=107543 AND `TableHash`=2199425034 AND `RecordId`=31210) OR (`Id`=107542 AND `TableHash`=312611497 AND `RecordId`=28677) OR (`Id`=107542 AND `TableHash`=312611497 AND `RecordId`=24284) OR (`Id`=107542 AND `TableHash`=312611497 AND `RecordId`=23579) OR (`Id`=107542 AND `TableHash`=312611497 AND `RecordId`=23578) OR (`Id`=107542 AND `TableHash`=312611497 AND `RecordId`=23288) OR (`Id`=107542 AND `TableHash`=312611497 AND `RecordId`=23287) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=127889) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=97248) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=91894) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=91887) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=91843) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=91825) OR (`Id`=107542 AND `TableHash`=1163127287 AND `RecordId`=47989) OR (`Id`=107540 AND `TableHash`=2411028436 AND `RecordId`=11442) OR (`Id`=107540 AND `TableHash`=3567803627 AND `RecordId`=25552) OR (`Id`=107539 AND `TableHash`=1187407512 AND `RecordId`=1236092) OR (`Id`=107539 AND `TableHash`=3776013982 AND `RecordId`=1236092) OR (`Id`=107539 AND `TableHash`=1187407512 AND `RecordId`=406157) OR (`Id`=107539 AND `TableHash`=3776013982 AND `RecordId`=406157) OR (`Id`=107539 AND `TableHash`=2523372402 AND `RecordId`=16441) OR (`Id`=107539 AND `TableHash`=2523372402 AND `RecordId`=16376) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=94382) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=94382) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=93049) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=93049) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=93048) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=93048) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=91389) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=91389) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=86722) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=86722) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=86721) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=86721) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=86715) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=86715) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=86712) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=86712) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=86711) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=86711) OR (`Id`=107539 AND `TableHash`=261693969 AND `RecordId`=86710) OR (`Id`=107539 AND `TableHash`=986198281 AND `RecordId`=86710) OR (`Id`=107539 AND `TableHash`=2524150337 AND `RecordId`=2951) OR (`Id`=107539 AND `TableHash`=2524150337 AND `RecordId`=2949) OR (`Id`=107539 AND `TableHash`=1344507586 AND `RecordId`=273021) OR (`Id`=107539 AND `TableHash`=428746933 AND `RecordId`=273021) OR (`Id`=107539 AND `TableHash`=2442913102 AND `RecordId`=273021) OR (`Id`=107539 AND `TableHash`=3465080266 AND `RecordId`=273021) OR (`Id`=107539 AND `TableHash`=3037505077 AND `RecordId`=273021) OR (`Id`=107539 AND `TableHash`=1417785224 AND `RecordId`=273021) OR (`Id`=107539 AND `TableHash`=1344507586 AND `RecordId`=272125) OR (`Id`=107539 AND `TableHash`=428746933 AND `RecordId`=272125) OR (`Id`=107539 AND `TableHash`=2442913102 AND `RecordId`=272125) OR (`Id`=107539 AND `TableHash`=3465080266 AND `RecordId`=272125) OR (`Id`=107539 AND `TableHash`=3037505077 AND `RecordId`=272125) OR (`Id`=107539 AND `TableHash`=1417785224 AND `RecordId`=272125) OR (`Id`=107539 AND `TableHash`=1344507586 AND `RecordId`=263286) OR (`Id`=107539 AND `TableHash`=428746933 AND `RecordId`=263286) OR (`Id`=107539 AND `TableHash`=2442913102 AND `RecordId`=263286) OR (`Id`=107539 AND `TableHash`=3465080266 AND `RecordId`=263286) OR (`Id`=107539 AND `TableHash`=3037505077 AND `RecordId`=263286) OR (`Id`=107539 AND `TableHash`=1417785224 AND `RecordId`=263286) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=224745) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=222969) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=222803) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=221550) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=219955) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=219466) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=312566) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=308821) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=305314) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=301657) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=299055) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=297004) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=296930) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=295985) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=295318) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=295221) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=294283) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=294167) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=293822) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=291856) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=291853) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=291585) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=290937) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=288987) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=287495) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=283177) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=273965) OR (`Id`=107539 AND `TableHash`=35137211 AND `RecordId`=241135) OR (`Id`=107539 AND `TableHash`=3108775943 AND `RecordId`=154472) OR (`Id`=107539 AND `TableHash`=3108775943 AND `RecordId`=151164) OR (`Id`=107539 AND `TableHash`=3108775943 AND `RecordId`=151163) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=225670) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=225668) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=225666) OR (`Id`=107539 AND `TableHash`=1255424668 AND `RecordId`=225664) OR (`Id`=107539 AND `TableHash`=3538824359 AND `RecordId`=62814) OR (`Id`=107539 AND `TableHash`=3538824359 AND `RecordId`=62813) OR (`Id`=107539 AND `TableHash`=3538824359 AND `RecordId`=62812) OR (`Id`=107539 AND `TableHash`=3538824359 AND `RecordId`=62811) OR (`Id`=107536 AND `TableHash`=492039028 AND `RecordId`=52304) OR (`Id`=107536 AND `TableHash`=1163127287 AND `RecordId`=127876) OR (`Id`=107534 AND `TableHash`=4030871717 AND `RecordId`=1244805) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614662) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614661) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614660) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614659) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614658) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614657) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614656) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614655) OR (`Id`=107533 AND `TableHash`=1992314007 AND `RecordId`=1614654) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226556) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226555) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226554) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226553) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226552) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226551) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226550) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226549) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226548) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226547) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226546) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226545) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226544) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226543) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226542) OR (`Id`=107533 AND `TableHash`=338825009 AND `RecordId`=226541) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449249) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449248) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449247) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449246) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449245) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449244) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449243) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449242) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449241) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449240) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449239) OR (`Id`=107533 AND `TableHash`=4082824155 AND `RecordId`=1449238) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739898) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739897) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739896) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739895) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739894) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739893) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739892) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739891) OR (`Id`=107533 AND `TableHash`=2557447376 AND `RecordId`=739890) OR (`Id`=107533 AND `TableHash`=1722140087 AND `RecordId`=164599) OR (`Id`=107531 AND `TableHash`=1163127287 AND `RecordId`=117783) OR (`Id`=107530 AND `TableHash`=3322146344 AND `RecordId`=806145) OR (`Id`=107530 AND `TableHash`=3322146344 AND `RecordId`=797087) OR (`Id`=107530 AND `TableHash`=3386943305 AND `RecordId`=318585) OR (`Id`=107529 AND `TableHash`=312611497 AND `RecordId`=28648) OR (`Id`=107529 AND `TableHash`=312611497 AND `RecordId`=26341) OR (`Id`=107529 AND `TableHash`=312611497 AND `RecordId`=26340) OR (`Id`=107529 AND `TableHash`=1163127287 AND `RecordId`=114997) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=608169) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=604781) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=604780) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=599344) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=599342) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=598966) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=598965) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=598962) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=598961) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=579842) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=579841) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=578881) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=578880) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=578406) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=577558) OR (`Id`=107526 AND `TableHash`=4033975491 AND `RecordId`=577557) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=716973) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=716972) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=704308) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=703623) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=703622) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=703619) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=703618) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=667159) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=662791) OR (`Id`=107526 AND `TableHash`=1181150530 AND `RecordId`=662790) OR (`Id`=107526 AND `TableHash`=4102286043 AND `RecordId`=257125) OR (`Id`=107526 AND `TableHash`=4102286043 AND `RecordId`=235995) OR (`Id`=107526 AND `TableHash`=3425193231 AND `RecordId`=532392) OR (`Id`=107526 AND `TableHash`=3425193231 AND `RecordId`=532391) OR (`Id`=107526 AND `TableHash`=4146370265 AND `RecordId`=164641) OR (`Id`=107526 AND `TableHash`=4146370265 AND `RecordId`=164639) OR (`Id`=107526 AND `TableHash`=1163127287 AND `RecordId`=114586) OR (`Id`=107526 AND `TableHash`=4030871717 AND `RecordId`=1316016) OR (`Id`=107526 AND `TableHash`=2151089334 AND `RecordId`=7515) OR (`Id`=107526 AND `TableHash`=3571931810 AND `RecordId`=41538) OR (`Id`=107526 AND `TableHash`=3571931810 AND `RecordId`=41537) OR (`Id`=107526 AND `TableHash`=3571931810 AND `RecordId`=38387) OR (`Id`=107526 AND `TableHash`=3571931810 AND `RecordId`=38386) OR (`Id`=107525 AND `TableHash`=1163127287 AND `RecordId`=127810) OR (`Id`=107525 AND `TableHash`=4030871717 AND `RecordId`=1316617) OR (`Id`=107524 AND `TableHash`=4033975491 AND `RecordId`=607519) OR (`Id`=107524 AND `TableHash`=4033975491 AND `RecordId`=607518) OR (`Id`=107523 AND `TableHash`=2151089334 AND `RecordId`=7220) OR (`Id`=107523 AND `TableHash`=2151089334 AND `RecordId`=7016) OR (`Id`=107519 AND `TableHash`=666345498 AND `RecordId`=507472) OR (`Id`=107519 AND `TableHash`=4033975491 AND `RecordId`=619212) OR (`Id`=107519 AND `TableHash`=4033975491 AND `RecordId`=618735) OR (`Id`=107519 AND `TableHash`=4033975491 AND `RecordId`=618734) OR (`Id`=107519 AND `TableHash`=1181150530 AND `RecordId`=750462) OR (`Id`=107519 AND `TableHash`=4102286043 AND `RecordId`=265412) OR (`Id`=107519 AND `TableHash`=3425193231 AND `RecordId`=546266) OR (`Id`=107519 AND `TableHash`=3425193231 AND `RecordId`=545739) OR (`Id`=107519 AND `TableHash`=4146370265 AND `RecordId`=182011) OR (`Id`=107519 AND `TableHash`=3764692828 AND `RecordId`=348563) OR (`Id`=107519 AND `TableHash`=2124448848 AND `RecordId`=312822) OR (`Id`=107519 AND `TableHash`=2712461791 AND `RecordId`=312822) OR (`Id`=107519 AND `TableHash`=3322146344 AND `RecordId`=842021) OR (`Id`=107519 AND `TableHash`=3322146344 AND `RecordId`=826471) OR (`Id`=107519 AND `TableHash`=4030871717 AND `RecordId`=1290231) OR (`Id`=107519 AND `TableHash`=1880017466 AND `RecordId`=312618) OR (`Id`=107519 AND `TableHash`=1880017466 AND `RecordId`=312617) OR (`Id`=107519 AND `TableHash`=1272569722 AND `RecordId`=103544) OR (`Id`=107519 AND `TableHash`=3571931810 AND `RecordId`=42876) OR (`Id`=107514 AND `TableHash`=2895307949 AND `RecordId`=1388) OR (`Id`=107514 AND `TableHash`=3571931810 AND `RecordId`=38490) OR (`Id`=107514 AND `TableHash`=3571931810 AND `RecordId`=38489) OR (`Id`=107510 AND `TableHash`=1163127287 AND `RecordId`=124612) OR (`Id`=107510 AND `TableHash`=3386943305 AND `RecordId`=328330) OR (`Id`=107509 AND `TableHash`=1720692227 AND `RecordId`=242312) OR (`Id`=107509 AND `TableHash`=1720692227 AND `RecordId`=242253) OR (`Id`=107509 AND `TableHash`=1720692227 AND `RecordId`=240112) OR (`Id`=107509 AND `TableHash`=1187407512 AND `RecordId`=1293613) OR (`Id`=107509 AND `TableHash`=3776013982 AND `RecordId`=1293613) OR (`Id`=107509 AND `TableHash`=1187407512 AND `RecordId`=1286820) OR (`Id`=107509 AND `TableHash`=3776013982 AND `RecordId`=1286820) OR (`Id`=107509 AND `TableHash`=1187407512 AND `RecordId`=1286703) OR (`Id`=107509 AND `TableHash`=3776013982 AND `RecordId`=1286703) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=333527) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=318995) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=204569) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=122835) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=102369) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=99196) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=99191) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=99179) OR (`Id`=107507 AND `TableHash`=3386943305 AND `RecordId`=25207) OR (`Id`=107507 AND `TableHash`=3174446591 AND `RecordId`=7357) OR (`Id`=107505 AND `TableHash`=1163127287 AND `RecordId`=127843) OR (`Id`=107505 AND `TableHash`=3322146344 AND `RecordId`=826900) OR (`Id`=107505 AND `TableHash`=4030871717 AND `RecordId`=1291027) OR (`Id`=107504 AND `TableHash`=3764692828 AND `RecordId`=352138) OR (`Id`=107504 AND `TableHash`=1163127287 AND `RecordId`=127840) OR (`Id`=107504 AND `TableHash`=1187407512 AND `RecordId`=1253159) OR (`Id`=107504 AND `TableHash`=3776013982 AND `RecordId`=1253159) OR (`Id`=107501 AND `TableHash`=312611497 AND `RecordId`=28344) OR (`Id`=107501 AND `TableHash`=312611497 AND `RecordId`=28343) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=441) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=402) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=401) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=400) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=305) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=304) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=302) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=297) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=296) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=295) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=294) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=293) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=292) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=291) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=285) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=284) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=283) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=282) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=279) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=278) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=277) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=276) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=275) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=274) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=271) OR (`Id`=107501 AND `TableHash`=1237546057 AND `RecordId`=268) OR (`Id`=107500 AND `TableHash`=4012104832 AND `RecordId`=113821) OR (`Id`=107498 AND `TableHash`=4030871717 AND `RecordId`=1316796) OR (`Id`=107498 AND `TableHash`=261693969 AND `RecordId`=96527) OR (`Id`=107498 AND `TableHash`=986198281 AND `RecordId`=96527) OR (`Id`=107498 AND `TableHash`=3108775943 AND `RecordId`=156626) OR (`Id`=107498 AND `TableHash`=3108775943 AND `RecordId`=156625) OR (`Id`=107497 AND `TableHash`=1344507586 AND `RecordId`=273307) OR (`Id`=107497 AND `TableHash`=428746933 AND `RecordId`=273307) OR (`Id`=107497 AND `TableHash`=2442913102 AND `RecordId`=273307) OR (`Id`=107497 AND `TableHash`=3465080266 AND `RecordId`=273307) OR (`Id`=107497 AND `TableHash`=3037505077 AND `RecordId`=273307) OR (`Id`=107497 AND `TableHash`=1417785224 AND `RecordId`=273307) OR (`Id`=107496 AND `TableHash`=1255424668 AND `RecordId`=227206) OR (`Id`=107496 AND `TableHash`=4012104832 AND `RecordId`=113946) OR (`Id`=107494 AND `TableHash`=4030871717 AND `RecordId`=1281775) OR (`Id`=107494 AND `TableHash`=4030871717 AND `RecordId`=1281773) OR (`Id`=107493 AND `TableHash`=2793276977 AND `RecordId`=29165) OR (`Id`=107493 AND `TableHash`=2793276977 AND `RecordId`=27170) OR (`Id`=107489 AND `TableHash`=1344507586 AND `RecordId`=269640) OR (`Id`=107489 AND `TableHash`=428746933 AND `RecordId`=269640) OR (`Id`=107489 AND `TableHash`=2442913102 AND `RecordId`=269640) OR (`Id`=107489 AND `TableHash`=3465080266 AND `RecordId`=269640) OR (`Id`=107489 AND `TableHash`=3037505077 AND `RecordId`=269640) OR (`Id`=107489 AND `TableHash`=1417785224 AND `RecordId`=269640) OR (`Id`=107489 AND `TableHash`=1344507586 AND `RecordId`=269012) OR (`Id`=107489 AND `TableHash`=428746933 AND `RecordId`=269012) OR (`Id`=107489 AND `TableHash`=2442913102 AND `RecordId`=269012) OR (`Id`=107489 AND `TableHash`=3465080266 AND `RecordId`=269012) OR (`Id`=107489 AND `TableHash`=3037505077 AND `RecordId`=269012) OR (`Id`=107489 AND `TableHash`=1417785224 AND `RecordId`=269012) OR (`Id`=107488 AND `TableHash`=492039028 AND `RecordId`=49497) OR (`Id`=107488 AND `TableHash`=3359787322 AND `RecordId`=31466) OR (`Id`=107488 AND `TableHash`=3359787322 AND `RecordId`=29799) OR (`Id`=107488 AND `TableHash`=3359787322 AND `RecordId`=29615) OR (`Id`=107488 AND `TableHash`=3031818311 AND `RecordId`=9590) OR (`Id`=107488 AND `TableHash`=3072882582 AND `RecordId`=59191) OR (`Id`=107488 AND `TableHash`=3072882582 AND `RecordId`=49188) OR (`Id`=107488 AND `TableHash`=312611497 AND `RecordId`=28672) OR (`Id`=107488 AND `TableHash`=312611497 AND `RecordId`=28671) OR (`Id`=107488 AND `TableHash`=312611497 AND `RecordId`=28670) OR (`Id`=107488 AND `TableHash`=312611497 AND `RecordId`=28669) OR (`Id`=107488 AND `TableHash`=312611497 AND `RecordId`=28668) OR (`Id`=107488 AND `TableHash`=1163127287 AND `RecordId`=127825) OR (`Id`=107487 AND `TableHash`=312611497 AND `RecordId`=21222) OR (`Id`=107487 AND `TableHash`=312611497 AND `RecordId`=19901) OR (`Id`=107487 AND `TableHash`=312611497 AND `RecordId`=19900) OR (`Id`=107487 AND `TableHash`=1163127287 AND `RecordId`=35325) OR (`Id`=107486 AND `TableHash`=492039028 AND `RecordId`=52297) OR (`Id`=107486 AND `TableHash`=492039028 AND `RecordId`=50744) OR (`Id`=107486 AND `TableHash`=492039028 AND `RecordId`=50743) OR (`Id`=107486 AND `TableHash`=492039028 AND `RecordId`=50742) OR (`Id`=107486 AND `TableHash`=492039028 AND `RecordId`=50741) OR (`Id`=107486 AND `TableHash`=3359787322 AND `RecordId`=31464) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=446062) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=446061) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427219) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427216) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427213) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427210) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427204) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427201) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427198) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=427195) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=426834) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=426831) OR (`Id`=107486 AND `TableHash`=2120822102 AND `RecordId`=426819) OR (`Id`=107485 AND `TableHash`=1163127287 AND `RecordId`=120029) OR (`Id`=107485 AND `TableHash`=1163127287 AND `RecordId`=120028) OR (`Id`=107483 AND `TableHash`=1163127287 AND `RecordId`=116916) OR (`Id`=107482 AND `TableHash`=3386943305 AND `RecordId`=342887) OR (`Id`=107482 AND `TableHash`=3386943305 AND `RecordId`=341301) OR (`Id`=107481 AND `TableHash`=1187407512 AND `RecordId`=1291667) OR (`Id`=107481 AND `TableHash`=3776013982 AND `RecordId`=1291667) OR (`Id`=107481 AND `TableHash`=1187407512 AND `RecordId`=1277169) OR (`Id`=107481 AND `TableHash`=3776013982 AND `RecordId`=1277169) OR (`Id`=107481 AND `TableHash`=1187407512 AND `RecordId`=1243683) OR (`Id`=107481 AND `TableHash`=3776013982 AND `RecordId`=1243683) OR (`Id`=107481 AND `TableHash`=1187407512 AND `RecordId`=190784) OR (`Id`=107481 AND `TableHash`=3776013982 AND `RecordId`=190784) OR (`Id`=107481 AND `TableHash`=3108775943 AND `RecordId`=142975) OR (`Id`=107481 AND `TableHash`=1344507586 AND `RecordId`=265790) OR (`Id`=107481 AND `TableHash`=428746933 AND `RecordId`=265790) OR (`Id`=107481 AND `TableHash`=2442913102 AND `RecordId`=265790) OR (`Id`=107481 AND `TableHash`=3465080266 AND `RecordId`=265790) OR (`Id`=107481 AND `TableHash`=3037505077 AND `RecordId`=265790) OR (`Id`=107481 AND `TableHash`=1417785224 AND `RecordId`=265790) OR (`Id`=107481 AND `TableHash`=1344507586 AND `RecordId`=246753) OR (`Id`=107481 AND `TableHash`=428746933 AND `RecordId`=246753) OR (`Id`=107481 AND `TableHash`=2442913102 AND `RecordId`=246753) OR (`Id`=107481 AND `TableHash`=3465080266 AND `RecordId`=246753) OR (`Id`=107481 AND `TableHash`=3037505077 AND `RecordId`=246753) OR (`Id`=107481 AND `TableHash`=1417785224 AND `RecordId`=246753) OR (`Id`=107481 AND `TableHash`=1255424668 AND `RecordId`=223209) OR (`Id`=107481 AND `TableHash`=1255424668 AND `RecordId`=212362) OR (`Id`=107481 AND `TableHash`=3538824359 AND `RecordId`=62296) OR (`Id`=107481 AND `TableHash`=3538824359 AND `RecordId`=42769) OR (`Id`=107480 AND `TableHash`=666345498 AND `RecordId`=518729) OR (`Id`=107480 AND `TableHash`=666345498 AND `RecordId`=486476) OR (`Id`=107480 AND `TableHash`=4033975491 AND `RecordId`=619076) OR (`Id`=107480 AND `TableHash`=4033975491 AND `RecordId`=619075) OR (`Id`=107480 AND `TableHash`=4033975491 AND `RecordId`=619074) OR (`Id`=107480 AND `TableHash`=4033975491 AND `RecordId`=619073) OR (`Id`=107480 AND `TableHash`=1181150530 AND `RecordId`=750195) OR (`Id`=107480 AND `TableHash`=1181150530 AND `RecordId`=750194) OR (`Id`=107480 AND `TableHash`=1181150530 AND `RecordId`=750193) OR (`Id`=107480 AND `TableHash`=1181150530 AND `RecordId`=750192) OR (`Id`=107480 AND `TableHash`=1181150530 AND `RecordId`=750191) OR (`Id`=107480 AND `TableHash`=4102286043 AND `RecordId`=265322) OR (`Id`=107480 AND `TableHash`=4102286043 AND `RecordId`=235511) OR (`Id`=107480 AND `TableHash`=3425193231 AND `RecordId`=546169) OR (`Id`=107480 AND `TableHash`=3425193231 AND `RecordId`=546168) OR (`Id`=107480 AND `TableHash`=3425193231 AND `RecordId`=546167) OR (`Id`=107480 AND `TableHash`=3425193231 AND `RecordId`=546166) OR (`Id`=107480 AND `TableHash`=4146370265 AND `RecordId`=182214) OR (`Id`=107480 AND `TableHash`=4146370265 AND `RecordId`=164230) OR (`Id`=107480 AND `TableHash`=3108775943 AND `RecordId`=156592) OR (`Id`=107480 AND `TableHash`=3108775943 AND `RecordId`=156591) OR (`Id`=107479 AND `TableHash`=666345498 AND `RecordId`=518894) OR (`Id`=107479 AND `TableHash`=4033975491 AND `RecordId`=619401) OR (`Id`=107479 AND `TableHash`=4033975491 AND `RecordId`=619384) OR (`Id`=107479 AND `TableHash`=1181150530 AND `RecordId`=750841) OR (`Id`=107479 AND `TableHash`=1181150530 AND `RecordId`=750840) OR (`Id`=107479 AND `TableHash`=1181150530 AND `RecordId`=750815) OR (`Id`=107479 AND `TableHash`=4102286043 AND `RecordId`=265535) OR (`Id`=107479 AND `TableHash`=4102286043 AND `RecordId`=265529) OR (`Id`=107479 AND `TableHash`=3425193231 AND `RecordId`=546416) OR (`Id`=107479 AND `TableHash`=3425193231 AND `RecordId`=546415) OR (`Id`=107479 AND `TableHash`=3425193231 AND `RecordId`=546414) OR (`Id`=107479 AND `TableHash`=3425193231 AND `RecordId`=546413) OR (`Id`=107479 AND `TableHash`=4146370265 AND `RecordId`=182326) OR (`Id`=107479 AND `TableHash`=312611497 AND `RecordId`=27596) OR (`Id`=107479 AND `TableHash`=312611497 AND `RecordId`=27595) OR (`Id`=107479 AND `TableHash`=1163127287 AND `RecordId`=127891) OR (`Id`=107479 AND `TableHash`=1163127287 AND `RecordId`=118056) OR (`Id`=107479 AND `TableHash`=3322146344 AND `RecordId`=842594) OR (`Id`=107479 AND `TableHash`=3322146344 AND `RecordId`=819393) OR (`Id`=107479 AND `TableHash`=3322146344 AND `RecordId`=819392) OR (`Id`=107479 AND `TableHash`=3322146344 AND `RecordId`=818615) OR (`Id`=107479 AND `TableHash`=3322146344 AND `RecordId`=807889) OR (`Id`=107479 AND `TableHash`=1720692227 AND `RecordId`=242769) OR (`Id`=107479 AND `TableHash`=4030871717 AND `RecordId`=1317079) OR (`Id`=107479 AND `TableHash`=4030871717 AND `RecordId`=1317077) OR (`Id`=107479 AND `TableHash`=4030871717 AND `RecordId`=1317076) OR (`Id`=107479 AND `TableHash`=4030871717 AND `RecordId`=1316671) OR (`Id`=107479 AND `TableHash`=3689412649 AND `RecordId`=184146) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18406) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18405) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18404) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18403) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18246) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18245) OR (`Id`=107479 AND `TableHash`=184881520 AND `RecordId`=18244) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35809) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35491) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35490) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35489) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35488) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35487) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35486) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35485) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35484) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35483) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35482) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35481) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35480) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35479) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35478) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35477) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35476) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35475) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35474) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35473) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35472) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35471) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35470) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35469) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35468) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35467) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35466) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35465) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35464) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35463) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35462) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35461) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35460) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35459) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35458) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35457) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35456) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35455) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35454) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35453) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35452) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35451) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35450) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35449) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35448) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35447) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35446) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35445) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35444) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35443) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35442) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35441) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35440) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35439) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35438) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35435) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35434) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35418) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35373) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35371) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35370) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35368) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35367) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35366) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35361) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35360) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35357) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35344) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35343) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35342) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35341) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35340) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35339) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35338) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35337) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35336) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35328) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35327) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35326) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35325) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35324) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35319) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35317) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35316) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35315) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35314) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35312) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35311) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35309) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35274) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35273) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35272) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35132) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35131) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35106) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35070) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35069) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35068) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35067) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35041) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35040) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35038) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35037) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=35036) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34902) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34901) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34900) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34847) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34846) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34845) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34844) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34555) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34498) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34497) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34496) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34474) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34456) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34450) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34428) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34426) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34424) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34423) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34422) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34243) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34242) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34001) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=34000) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33990) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33989) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33983) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33982) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33981) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33975) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33924) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33742) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33741) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33740) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33739) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33738) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33737) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33640) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33639) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33638) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33637) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33635) OR (`Id`=107479 AND `TableHash`=2035710060 AND `RecordId`=33634) OR (`Id`=107479 AND `TableHash`=2575642838 AND `RecordId`=750) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841951) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841949) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841948) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841947) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841946) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841945) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841944) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=841943) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=814421) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=814420) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=796253) OR (`Id`=107478 AND `TableHash`=3322146344 AND `RecordId`=796216) OR (`Id`=107478 AND `TableHash`=4030871717 AND `RecordId`=1270869) OR (`Id`=107478 AND `TableHash`=4030871717 AND `RecordId`=1270868) OR (`Id`=107476 AND `TableHash`=3322146344 AND `RecordId`=796412) OR (`Id`=107476 AND `TableHash`=3322146344 AND `RecordId`=795876) OR (`Id`=107475 AND `TableHash`=3322146344 AND `RecordId`=784657) OR (`Id`=107475 AND `TableHash`=3322146344 AND `RecordId`=783557) OR (`Id`=107475 AND `TableHash`=3322146344 AND `RecordId`=783554) OR (`Id`=107475 AND `TableHash`=3322146344 AND `RecordId`=777641) OR (`Id`=107475 AND `TableHash`=4096770149 AND `RecordId`=245831) OR (`Id`=107475 AND `TableHash`=1187407512 AND `RecordId`=1292124) OR (`Id`=107475 AND `TableHash`=3776013982 AND `RecordId`=1292124) OR (`Id`=107474 AND `TableHash`=3322146344 AND `RecordId`=819182) OR (`Id`=107474 AND `TableHash`=3322146344 AND `RecordId`=819173) OR (`Id`=107474 AND `TableHash`=3322146344 AND `RecordId`=798885) OR (`Id`=107474 AND `TableHash`=3322146344 AND `RecordId`=798882) OR (`Id`=107474 AND `TableHash`=1720692227 AND `RecordId`=234460) OR (`Id`=107474 AND `TableHash`=1720692227 AND `RecordId`=227191) OR (`Id`=107474 AND `TableHash`=1187407512 AND `RecordId`=1266413) OR (`Id`=107474 AND `TableHash`=3776013982 AND `RecordId`=1266413) OR (`Id`=107474 AND `TableHash`=1187407512 AND `RecordId`=1244345) OR (`Id`=107474 AND `TableHash`=3776013982 AND `RecordId`=1244345) OR (`Id`=107472 AND `TableHash`=1720692227 AND `RecordId`=234753) OR (`Id`=107471 AND `TableHash`=2120822102 AND `RecordId`=446036) OR (`Id`=107471 AND `TableHash`=2120822102 AND `RecordId`=446035) OR (`Id`=107471 AND `TableHash`=2120822102 AND `RecordId`=446034) OR (`Id`=107471 AND `TableHash`=2120822102 AND `RecordId`=397284) OR (`Id`=107470 AND `TableHash`=3322146344 AND `RecordId`=756188) OR (`Id`=107470 AND `TableHash`=4030871717 AND `RecordId`=1175511) OR (`Id`=107470 AND `TableHash`=4030871717 AND `RecordId`=1174064) OR (`Id`=107470 AND `TableHash`=4030871717 AND `RecordId`=1172673) OR (`Id`=107469 AND `TableHash`=1163127287 AND `RecordId`=99962) OR (`Id`=107463 AND `TableHash`=261693969 AND `RecordId`=94920) OR (`Id`=107463 AND `TableHash`=986198281 AND `RecordId`=94920) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=346295) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=346294) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=346293) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=342294) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=342251) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=341981) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=341980) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=340578) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=340566) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=336496) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=336485) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=335700) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=335617) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=333741) OR (`Id`=107461 AND `TableHash`=3386943305 AND `RecordId`=333453) OR (`Id`=107459 AND `TableHash`=3388959798 AND `RecordId`=19277) OR (`Id`=107459 AND `TableHash`=1059920561 AND `RecordId`=504) OR (`Id`=107459 AND `TableHash`=312181299 AND `RecordId`=2020) OR (`Id`=107459 AND `TableHash`=312181299 AND `RecordId`=2019) OR (`Id`=107457 AND `TableHash`=1073915313 AND `RecordId`=209845) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=347232) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=347162) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=347084) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=346984) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=346931) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=340996) OR (`Id`=107455 AND `TableHash`=3386943305 AND `RecordId`=333136) OR (`Id`=107453 AND `TableHash`=3386943305 AND `RecordId`=335342) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56832) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56831) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56830) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56829) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56828) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56827) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56826) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56825) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56824) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56823) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56822) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56821) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56820) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56819) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56818) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56817) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56816) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56815) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56814) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56813) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56812) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56811) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56810) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56809) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56808) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56807) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56806) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56805) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56804) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56803) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56802) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56801) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56800) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56799) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56798) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56797) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56796) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56795) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56794) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56793) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56792) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56791) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56790) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56789) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56788) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56787) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56786) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56785) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56784) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56783) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56782) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56781) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56780) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56779) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56778) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56777) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56776) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56775) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56774) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56773) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56772) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56771) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56770) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56769) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56768) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56767) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56766) OR (`Id`=107452 AND `TableHash`=945870922 AND `RecordId`=56765) OR (`Id`=107452 AND `TableHash`=275260266 AND `RecordId`=960) OR (`Id`=107452 AND `TableHash`=275260266 AND `RecordId`=956) OR (`Id`=107452 AND `TableHash`=2521502169 AND `RecordId`=720) OR (`Id`=107449 AND `TableHash`=3322146344 AND `RecordId`=815140) OR (`Id`=107449 AND `TableHash`=2466724645 AND `RecordId`=1521) OR (`Id`=107449 AND `TableHash`=3571931810 AND `RecordId`=40245) OR (`Id`=107449 AND `TableHash`=1225579890 AND `RecordId`=3965) OR (`Id`=107447 AND `TableHash`=3322146344 AND `RecordId`=631726) OR (`Id`=107447 AND `TableHash`=4030871717 AND `RecordId`=1029516) OR (`Id`=107447 AND `TableHash`=4030871717 AND `RecordId`=997947) OR (`Id`=107446 AND `TableHash`=3567803627 AND `RecordId`=25293) OR (`Id`=107446 AND `TableHash`=178219711 AND `RecordId`=8975) OR (`Id`=107446 AND `TableHash`=1163127287 AND `RecordId`=127784) OR (`Id`=107446 AND `TableHash`=1720692227 AND `RecordId`=242668) OR (`Id`=107446 AND `TableHash`=1187407512 AND `RecordId`=1231327) OR (`Id`=107446 AND `TableHash`=3776013982 AND `RecordId`=1231327) OR (`Id`=107446 AND `TableHash`=3386943305 AND `RecordId`=322554) OR (`Id`=107445 AND `TableHash`=1163127287 AND `RecordId`=118682) OR (`Id`=107444 AND `TableHash`=3571931810 AND `RecordId`=37982) OR (`Id`=107443 AND `TableHash`=1163127287 AND `RecordId`=92081) OR (`Id`=107442 AND `TableHash`=1187407512 AND `RecordId`=436358) OR (`Id`=107442 AND `TableHash`=3776013982 AND `RecordId`=436358) OR (`Id`=107441 AND `TableHash`=1187407512 AND `RecordId`=1292071) OR (`Id`=107441 AND `TableHash`=3776013982 AND `RecordId`=1292071) OR (`Id`=107440 AND `TableHash`=3322146344 AND `RecordId`=813459) OR (`Id`=107439 AND `TableHash`=2120822102 AND `RecordId`=445975) OR (`Id`=107438 AND `TableHash`=492039028 AND `RecordId`=50318) OR (`Id`=107437 AND `TableHash`=312611497 AND `RecordId`=28227) OR (`Id`=107437 AND `TableHash`=312611497 AND `RecordId`=28211) OR (`Id`=107437 AND `TableHash`=312611497 AND `RecordId`=27935) OR (`Id`=107437 AND `TableHash`=312611497 AND `RecordId`=27658) OR (`Id`=107437 AND `TableHash`=312611497 AND `RecordId`=27645) OR (`Id`=107437 AND `TableHash`=312611497 AND `RecordId`=27644) OR (`Id`=107436 AND `TableHash`=1163127287 AND `RecordId`=118620) OR (`Id`=107436 AND `TableHash`=3322146344 AND `RecordId`=837256) OR (`Id`=107436 AND `TableHash`=3322146344 AND `RecordId`=809948) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1312065) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1311944) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1304833) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1290588) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1290587) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1290586) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1290519) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1290448) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1288417) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1288414) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1288412) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1279494) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1272084) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1261150) OR (`Id`=107434 AND `TableHash`=4030871717 AND `RecordId`=1253558) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=343649) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=343137) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=343130) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=329244) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=329223) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=322248) OR (`Id`=107433 AND `TableHash`=3386943305 AND `RecordId`=322247) OR (`Id`=107432 AND `TableHash`=3359787322 AND `RecordId`=26196) OR (`Id`=107432 AND `TableHash`=3359787322 AND `RecordId`=22368) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570155) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570154) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570153) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570152) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570151) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570150) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570149) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570148) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570147) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570146) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570145) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570144) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570143) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570142) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570141) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570140) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570139) OR (`Id`=107430 AND `TableHash`=3266400455 AND `RecordId`=1570138) OR (`Id`=107430 AND `TableHash`=3232102598 AND `RecordId`=312954) OR (`Id`=107430 AND `TableHash`=908293937 AND `RecordId`=349021) OR (`Id`=107430 AND `TableHash`=3408032706 AND `RecordId`=12257) OR (`Id`=107430 AND `TableHash`=1734738485 AND `RecordId`=9018) OR (`Id`=107430 AND `TableHash`=3218799089 AND `RecordId`=144489) OR (`Id`=107429 AND `TableHash`=3322146344 AND `RecordId`=828341) OR (`Id`=107429 AND `TableHash`=3322146344 AND `RecordId`=828329) OR (`Id`=107428 AND `TableHash`=3322146344 AND `RecordId`=655550) OR (`Id`=107428 AND `TableHash`=3322146344 AND `RecordId`=647815) OR (`Id`=107428 AND `TableHash`=3322146344 AND `RecordId`=647695) OR (`Id`=107428 AND `TableHash`=3322146344 AND `RecordId`=635798) OR (`Id`=107428 AND `TableHash`=3322146344 AND `RecordId`=219551) OR (`Id`=107427 AND `TableHash`=4102286043 AND `RecordId`=239993) OR (`Id`=107427 AND `TableHash`=3322146344 AND `RecordId`=833396) OR (`Id`=107427 AND `TableHash`=2575642838 AND `RecordId`=255) OR (`Id`=107424 AND `TableHash`=1163127287 AND `RecordId`=127766) OR (`Id`=107424 AND `TableHash`=4030871717 AND `RecordId`=1293212) OR (`Id`=107422 AND `TableHash`=1163127287 AND `RecordId`=114121) OR (`Id`=107422 AND `TableHash`=1163127287 AND `RecordId`=114114) OR (`Id`=107421 AND `TableHash`=1163127287 AND `RecordId`=125710) OR (`Id`=107421 AND `TableHash`=3322146344 AND `RecordId`=803852) OR (`Id`=107418 AND `TableHash`=666345498 AND `RecordId`=518545) OR (`Id`=107418 AND `TableHash`=1163127287 AND `RecordId`=127771) OR (`Id`=107418 AND `TableHash`=3322146344 AND `RecordId`=842175) OR (`Id`=107418 AND `TableHash`=3322146344 AND `RecordId`=824098) OR (`Id`=107418 AND `TableHash`=1720692227 AND `RecordId`=242642) OR (`Id`=107418 AND `TableHash`=4030871717 AND `RecordId`=1316385) OR (`Id`=107418 AND `TableHash`=4030871717 AND `RecordId`=1286706) OR (`Id`=107418 AND `TableHash`=3689412649 AND `RecordId`=183982) OR (`Id`=107418 AND `TableHash`=1187407512 AND `RecordId`=1294776) OR (`Id`=107418 AND `TableHash`=3776013982 AND `RecordId`=1294776) OR (`Id`=107418 AND `TableHash`=1187407512 AND `RecordId`=1273357) OR (`Id`=107418 AND `TableHash`=3776013982 AND `RecordId`=1273357) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=445968) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=445967) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=445966) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=445965) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=427702) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=427700) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=427692) OR (`Id`=107418 AND `TableHash`=2120822102 AND `RecordId`=427689) OR (`Id`=107417 AND `TableHash`=4030871717 AND `RecordId`=1315315) OR (`Id`=107417 AND `TableHash`=4030871717 AND `RecordId`=1314429) OR (`Id`=107417 AND `TableHash`=4030871717 AND `RecordId`=1310393) OR (`Id`=107417 AND `TableHash`=4030871717 AND `RecordId`=1310392) OR (`Id`=107417 AND `TableHash`=4030871717 AND `RecordId`=1276211) OR (`Id`=107417 AND `TableHash`=4030871717 AND `RecordId`=1276138) OR (`Id`=107416 AND `TableHash`=4096770149 AND `RecordId`=244260) OR (`Id`=107415 AND `TableHash`=4096770149 AND `RecordId`=219959) OR (`Id`=107415 AND `TableHash`=4167587713 AND `RecordId`=4140) OR (`Id`=107414 AND `TableHash`=4021368146 AND `RecordId`=7693) OR (`Id`=107414 AND `TableHash`=2995956864 AND `RecordId`=133669) OR (`Id`=107414 AND `TableHash`=3022256762 AND `RecordId`=1569) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294727) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294727) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294726) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294726) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294720) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294720) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294703) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294703) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294669) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294669) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294633) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294633) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1294563) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1294563) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1277795) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1277795) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1272179) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1272179) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1269655) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1269655) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1269654) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1269654) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1269650) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1269650) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1269641) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1269641) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1269640) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1269640) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1264545) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1264545) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1259647) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1259647) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1258362) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1258362) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1256009) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1256009) OR (`Id`=107414 AND `TableHash`=1187407512 AND `RecordId`=1251813) OR (`Id`=107414 AND `TableHash`=3776013982 AND `RecordId`=1251813) OR (`Id`=107414 AND `TableHash`=1010104591 AND `RecordId`=22988) OR (`Id`=107414 AND `TableHash`=1010104591 AND `RecordId`=22984) OR (`Id`=107414 AND `TableHash`=1010104591 AND `RecordId`=21036) OR (`Id`=107414 AND `TableHash`=1010104591 AND `RecordId`=21034) OR (`Id`=107414 AND `TableHash`=1010104591 AND `RecordId`=21033) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=94383) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=94383) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=93719) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=93719) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=91044) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=91044) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=90818) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=90818) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=89324) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=89324) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=89323) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=89323) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=89012) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=89012) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=87457) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=87457) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=86903) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=86903) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=86827) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=86827) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=86733) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=86733) OR (`Id`=107414 AND `TableHash`=261693969 AND `RecordId`=82483) OR (`Id`=107414 AND `TableHash`=986198281 AND `RecordId`=82483) OR (`Id`=107414 AND `TableHash`=3851993221 AND `RecordId`=639) OR (`Id`=107414 AND `TableHash`=3851993221 AND `RecordId`=638) OR (`Id`=107414 AND `TableHash`=3851993221 AND `RecordId`=637) OR (`Id`=107414 AND `TableHash`=3205218938 AND `RecordId`=58731) OR (`Id`=107414 AND `TableHash`=3205218938 AND `RecordId`=58259) OR (`Id`=107414 AND `TableHash`=3205218938 AND `RecordId`=58258) OR (`Id`=107414 AND `TableHash`=3205218938 AND `RecordId`=55299) OR (`Id`=107414 AND `TableHash`=3205218938 AND `RecordId`=49471) OR (`Id`=107413 AND `TableHash`=3689412649 AND `RecordId`=155980) OR (`Id`=107411 AND `TableHash`=492039028 AND `RecordId`=52287) OR (`Id`=107411 AND `TableHash`=666345498 AND `RecordId`=518550) OR (`Id`=107411 AND `TableHash`=666345498 AND `RecordId`=518549) OR (`Id`=107411 AND `TableHash`=666345498 AND `RecordId`=518548) OR (`Id`=107411 AND `TableHash`=666345498 AND `RecordId`=518547) OR (`Id`=107411 AND `TableHash`=666345498 AND `RecordId`=518546) OR (`Id`=107411 AND `TableHash`=666345498 AND `RecordId`=518529) OR (`Id`=107411 AND `TableHash`=3322146344 AND `RecordId`=842178) OR (`Id`=107411 AND `TableHash`=3322146344 AND `RecordId`=842158) OR (`Id`=107411 AND `TableHash`=4030871717 AND `RecordId`=1316388) OR (`Id`=107411 AND `TableHash`=4030871717 AND `RecordId`=1316352) OR (`Id`=107411 AND `TableHash`=3689412649 AND `RecordId`=183974) OR (`Id`=107411 AND `TableHash`=1187407512 AND `RecordId`=1294779) OR (`Id`=107411 AND `TableHash`=3776013982 AND `RecordId`=1294779) OR (`Id`=107411 AND `TableHash`=1187407512 AND `RecordId`=1294759) OR (`Id`=107411 AND `TableHash`=3776013982 AND `RecordId`=1294759) OR (`Id`=107411 AND `TableHash`=3108775943 AND `RecordId`=156536) OR (`Id`=107411 AND `TableHash`=3386291891 AND `RecordId`=250316) OR (`Id`=107411 AND `TableHash`=3386291891 AND `RecordId`=250314) OR (`Id`=107410 AND `TableHash`=3386943305 AND `RecordId`=347263) OR (`Id`=107410 AND `TableHash`=3386943305 AND `RecordId`=341300) OR (`Id`=107406 AND `TableHash`=1344507586 AND `RecordId`=255627) OR (`Id`=107406 AND `TableHash`=428746933 AND `RecordId`=255627) OR (`Id`=107406 AND `TableHash`=2442913102 AND `RecordId`=255627) OR (`Id`=107406 AND `TableHash`=3465080266 AND `RecordId`=255627) OR (`Id`=107406 AND `TableHash`=3037505077 AND `RecordId`=255627) OR (`Id`=107406 AND `TableHash`=1417785224 AND `RecordId`=255627) OR (`Id`=107405 AND `TableHash`=4030871717 AND `RecordId`=1308161) OR (`Id`=107405 AND `TableHash`=4030871717 AND `RecordId`=1263436) OR (`Id`=107404 AND `TableHash`=2921112328 AND `RecordId`=568649) OR (`Id`=107404 AND `TableHash`=3108775943 AND `RecordId`=156537) OR (`Id`=107402 AND `TableHash`=1163127287 AND `RecordId`=127768) OR (`Id`=107402 AND `TableHash`=1163127287 AND `RecordId`=127767) OR (`Id`=107402 AND `TableHash`=3322146344 AND `RecordId`=816432) OR (`Id`=107401 AND `TableHash`=3764692828 AND `RecordId`=352061) OR (`Id`=107401 AND `TableHash`=3764692828 AND `RecordId`=350151) OR (`Id`=107401 AND `TableHash`=3322146344 AND `RecordId`=842150) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316338) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316337) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316336) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316335) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316334) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316333) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316332) OR (`Id`=107401 AND `TableHash`=4030871717 AND `RecordId`=1316331) OR (`Id`=107401 AND `TableHash`=1187407512 AND `RecordId`=1294752) OR (`Id`=107401 AND `TableHash`=3776013982 AND `RecordId`=1294752) OR (`Id`=107401 AND `TableHash`=1187407512 AND `RecordId`=1284994) OR (`Id`=107401 AND `TableHash`=3776013982 AND `RecordId`=1284994) OR (`Id`=107386 AND `TableHash`=356071576 AND `RecordId`=5646) OR (`Id`=107386 AND `TableHash`=4030871717 AND `RecordId`=1291186) OR (`Id`=107386 AND `TableHash`=3108775943 AND `RecordId`=151323) OR (`Id`=107386 AND `TableHash`=1344507586 AND `RecordId`=266969) OR (`Id`=107386 AND `TableHash`=428746933 AND `RecordId`=266969) OR (`Id`=107386 AND `TableHash`=2442913102 AND `RecordId`=266969) OR (`Id`=107386 AND `TableHash`=3465080266 AND `RecordId`=266969) OR (`Id`=107386 AND `TableHash`=3037505077 AND `RecordId`=266969) OR (`Id`=107386 AND `TableHash`=1417785224 AND `RecordId`=266969) OR (`Id`=107386 AND `TableHash`=1344507586 AND `RecordId`=253582) OR (`Id`=107386 AND `TableHash`=428746933 AND `RecordId`=253582) OR (`Id`=107386 AND `TableHash`=2442913102 AND `RecordId`=253582) OR (`Id`=107386 AND `TableHash`=3465080266 AND `RecordId`=253582) OR (`Id`=107386 AND `TableHash`=3037505077 AND `RecordId`=253582) OR (`Id`=107386 AND `TableHash`=1417785224 AND `RecordId`=253582) OR (`Id`=107356 AND `TableHash`=1163127287 AND `RecordId`=127823) OR (`Id`=107356 AND `TableHash`=1163127287 AND `RecordId`=124258) OR (`Id`=107327 AND `TableHash`=1163127287 AND `RecordId`=127719) OR (`Id`=107327 AND `TableHash`=3826950733 AND `RecordId`=88) OR (`Id`=107327 AND `TableHash`=3108775943 AND `RecordId`=156471) OR (`Id`=107327 AND `TableHash`=2120822102 AND `RecordId`=445862) OR (`Id`=107327 AND `TableHash`=2120822102 AND `RecordId`=445455) OR (`Id`=107327 AND `TableHash`=2120822102 AND `RecordId`=445454) OR (`Id`=107327 AND `TableHash`=2120822102 AND `RecordId`=445453) OR (`Id`=107327 AND `TableHash`=3821385681 AND `RecordId`=659) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295414) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295413) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295412) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295411) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295410) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295409) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295408) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295407) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295406) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295405) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295404) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1295403) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290745) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290744) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290743) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290742) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290741) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290740) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290739) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290738) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290737) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290736) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290735) OR (`Id`=107273 AND `TableHash`=2202435563 AND `RecordId`=1290734) OR (`Id`=107273 AND `TableHash`=2921112328 AND `RecordId`=574495) OR (`Id`=107273 AND `TableHash`=2921112328 AND `RecordId`=572996) OR (`Id`=107272 AND `TableHash`=3322146344 AND `RecordId`=835750); +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108348, 3545030305, 1344507586, 210174, 1, 67186), +(108348, 3545030305, 428746933, 210174, 3, 67186), +(108348, 3545030305, 2442913102, 210174, 1, 67186), +(108348, 3545030305, 3465080266, 210174, 3, 67186), +(108348, 3545030305, 3037505077, 210174, 3, 67186), +(108348, 3545030305, 1417785224, 210174, 3, 67186), +(108348, 3545030305, 1344507586, 206969, 1, 67186), +(108348, 3545030305, 428746933, 206969, 3, 67186), +(108348, 3545030305, 2442913102, 206969, 1, 67186), +(108348, 3545030305, 3465080266, 206969, 1, 67186), +(108348, 3545030305, 3037505077, 206969, 3, 67186), +(108348, 3545030305, 1417785224, 206969, 3, 67186), +(108348, 3545030305, 1344507586, 206968, 1, 67186), +(108348, 3545030305, 428746933, 206968, 3, 67186), +(108348, 3545030305, 2442913102, 206968, 1, 67186), +(108348, 3545030305, 3465080266, 206968, 1, 67186), +(108348, 3545030305, 3037505077, 206968, 3, 67186), +(108348, 3545030305, 1417785224, 206968, 3, 67186), +(108348, 3545030305, 1344507586, 206967, 1, 67186), +(108348, 3545030305, 428746933, 206967, 3, 67186), +(108348, 3545030305, 2442913102, 206967, 1, 67186), +(108348, 3545030305, 3465080266, 206967, 1, 67186), +(108348, 3545030305, 3037505077, 206967, 3, 67186), +(108348, 3545030305, 1417785224, 206967, 3, 67186), +(108348, 3545030305, 1344507586, 204977, 1, 67186), +(108348, 3545030305, 428746933, 204977, 3, 67186), +(108348, 3545030305, 2442913102, 204977, 1, 67186), +(108348, 3545030305, 3465080266, 204977, 3, 67186), +(108348, 3545030305, 3037505077, 204977, 3, 67186), +(108348, 3545030305, 1417785224, 204977, 3, 67186), +(108348, 3545030305, 1344507586, 204568, 1, 67186), +(108348, 3545030305, 428746933, 204568, 3, 67186), +(108348, 3545030305, 2442913102, 204568, 1, 67186), +(108348, 3545030305, 3465080266, 204568, 1, 67186), +(108348, 3545030305, 3037505077, 204568, 3, 67186), +(108348, 3545030305, 1417785224, 204568, 3, 67186), +(108348, 3545030305, 1344507586, 204567, 1, 67186), +(108348, 3545030305, 428746933, 204567, 3, 67186), +(108348, 3545030305, 2442913102, 204567, 1, 67186), +(108348, 3545030305, 3465080266, 204567, 1, 67186), +(108348, 3545030305, 3037505077, 204567, 3, 67186), +(108348, 3545030305, 1417785224, 204567, 3, 67186), +(108348, 3545030305, 1344507586, 204565, 1, 67186), +(108348, 3545030305, 428746933, 204565, 3, 67186), +(108348, 3545030305, 2442913102, 204565, 1, 67186), +(108348, 3545030305, 3465080266, 204565, 1, 67186), +(108348, 3545030305, 3037505077, 204565, 3, 67186), +(108348, 3545030305, 1417785224, 204565, 3, 67186), +(108348, 3545030305, 1344507586, 201321, 1, 67186), +(108348, 3545030305, 428746933, 201321, 3, 67186), +(108348, 3545030305, 2442913102, 201321, 1, 67186), +(108348, 3545030305, 3465080266, 201321, 1, 67186), +(108348, 3545030305, 3037505077, 201321, 3, 67186), +(108348, 3545030305, 1417785224, 201321, 3, 67186), +(108348, 3545030305, 1344507586, 201320, 1, 67186), +(108348, 3545030305, 428746933, 201320, 3, 67186), +(108348, 3545030305, 2442913102, 201320, 1, 67186), +(108348, 3545030305, 3465080266, 201320, 1, 67186), +(108348, 3545030305, 3037505077, 201320, 3, 67186), +(108348, 3545030305, 1417785224, 201320, 3, 67186), +(108348, 3545030305, 1344507586, 201319, 1, 67186), +(108348, 3545030305, 428746933, 201319, 3, 67186), +(108348, 3545030305, 2442913102, 201319, 1, 67186), +(108348, 3545030305, 3465080266, 201319, 1, 67186), +(108348, 3545030305, 3037505077, 201319, 3, 67186), +(108348, 3545030305, 1417785224, 201319, 3, 67186), +(108348, 3545030305, 1344507586, 201318, 1, 67186), +(108348, 3545030305, 428746933, 201318, 3, 67186), +(108348, 3545030305, 2442913102, 201318, 1, 67186), +(108348, 3545030305, 3465080266, 201318, 1, 67186), +(108348, 3545030305, 3037505077, 201318, 3, 67186), +(108348, 3545030305, 1417785224, 201318, 3, 67186), +(108348, 3545030305, 1344507586, 201317, 1, 67186), +(108348, 3545030305, 428746933, 201317, 3, 67186), +(108348, 3545030305, 2442913102, 201317, 1, 67186), +(108348, 3545030305, 3465080266, 201317, 1, 67186), +(108348, 3545030305, 3037505077, 201317, 3, 67186), +(108348, 3545030305, 1417785224, 201317, 3, 67186), +(108348, 3545030305, 1344507586, 201316, 1, 67186), +(108348, 3545030305, 428746933, 201316, 3, 67186), +(108348, 3545030305, 2442913102, 201316, 1, 67186), +(108348, 3545030305, 3465080266, 201316, 1, 67186), +(108348, 3545030305, 3037505077, 201316, 3, 67186), +(108348, 3545030305, 1417785224, 201316, 3, 67186), +(108348, 3545030305, 1344507586, 201315, 1, 67186), +(108348, 3545030305, 428746933, 201315, 3, 67186), +(108348, 3545030305, 2442913102, 201315, 1, 67186), +(108348, 3545030305, 3465080266, 201315, 1, 67186), +(108348, 3545030305, 3037505077, 201315, 3, 67186), +(108348, 3545030305, 1417785224, 201315, 3, 67186), +(108348, 3545030305, 1344507586, 201314, 1, 67186), +(108348, 3545030305, 428746933, 201314, 3, 67186), +(108348, 3545030305, 2442913102, 201314, 1, 67186), +(108348, 3545030305, 3465080266, 201314, 1, 67186), +(108348, 3545030305, 3037505077, 201314, 3, 67186), +(108348, 3545030305, 1417785224, 201314, 3, 67186), +(108348, 3545030305, 1344507586, 201313, 1, 67186), +(108348, 3545030305, 428746933, 201313, 3, 67186), +(108348, 3545030305, 2442913102, 201313, 1, 67186), +(108348, 3545030305, 3465080266, 201313, 1, 67186), +(108348, 3545030305, 3037505077, 201313, 3, 67186), +(108348, 3545030305, 1417785224, 201313, 3, 67186), +(108348, 3545030305, 1344507586, 201312, 1, 67186), +(108348, 3545030305, 428746933, 201312, 3, 67186), +(108348, 3545030305, 2442913102, 201312, 1, 67186), +(108348, 3545030305, 3465080266, 201312, 1, 67186), +(108348, 3545030305, 3037505077, 201312, 3, 67186), +(108348, 3545030305, 1417785224, 201312, 3, 67186), +(108348, 3545030305, 1344507586, 201311, 1, 67186), +(108348, 3545030305, 428746933, 201311, 3, 67186), +(108348, 3545030305, 2442913102, 201311, 1, 67186), +(108348, 3545030305, 3465080266, 201311, 1, 67186), +(108348, 3545030305, 3037505077, 201311, 3, 67186), +(108348, 3545030305, 1417785224, 201311, 3, 67186), +(108348, 3545030305, 1344507586, 201310, 1, 67186), +(108348, 3545030305, 428746933, 201310, 3, 67186), +(108348, 3545030305, 2442913102, 201310, 1, 67186), +(108348, 3545030305, 3465080266, 201310, 1, 67186), +(108348, 3545030305, 3037505077, 201310, 3, 67186), +(108348, 3545030305, 1417785224, 201310, 3, 67186), +(108348, 3545030305, 1344507586, 200616, 1, 67186), +(108348, 3545030305, 428746933, 200616, 3, 67186), +(108348, 3545030305, 2442913102, 200616, 1, 67186), +(108348, 3545030305, 3465080266, 200616, 1, 67186), +(108348, 3545030305, 3037505077, 200616, 3, 67186), +(108348, 3545030305, 1417785224, 200616, 3, 67186), +(108348, 3545030305, 1344507586, 200615, 1, 67186), +(108348, 3545030305, 428746933, 200615, 3, 67186), +(108348, 3545030305, 2442913102, 200615, 1, 67186), +(108348, 3545030305, 3465080266, 200615, 1, 67186), +(108348, 3545030305, 3037505077, 200615, 3, 67186), +(108348, 3545030305, 1417785224, 200615, 3, 67186), +(108348, 3545030305, 1344507586, 200614, 1, 67186), +(108348, 3545030305, 428746933, 200614, 3, 67186), +(108348, 3545030305, 2442913102, 200614, 1, 67186), +(108348, 3545030305, 3465080266, 200614, 1, 67186), +(108348, 3545030305, 3037505077, 200614, 3, 67186), +(108348, 3545030305, 1417785224, 200614, 3, 67186), +(108331, 3371276618, 3571931810, 43230, 3, 67186), +(108331, 3371276618, 1548466975, 43925, 3, 67186), +(108329, 1042610668, 1163127287, 33901, 3, 67186), +(108328, 189567158, 3322146344, 382856, 1, 67186), +(108322, 2677500626, 1163127287, 117890, 3, 67186), +(108322, 2677500626, 3386943305, 93844, 3, 67186), +(108322, 2677500626, 3386943305, 76580, 3, 67186), +(108322, 2677500626, 3386943305, 76579, 3, 67186), +(108322, 2677500626, 3386943305, 72672, 3, 67186), +(108321, 2780803154, 3322146344, 836412, 1, 67186), +(108321, 2780803154, 3322146344, 836410, 1, 67186), +(108321, 2780803154, 3322146344, 836408, 1, 67186), +(108321, 2780803154, 3322146344, 836405, 1, 67186), +(108321, 2780803154, 3322146344, 825885, 1, 67186), +(108321, 2780803154, 3322146344, 825884, 1, 67186), +(108321, 2780803154, 3322146344, 810686, 1, 67186), +(108321, 2780803154, 3322146344, 810685, 1, 67186), +(108321, 2780803154, 3322146344, 810684, 1, 67186), +(108321, 2780803154, 3322146344, 810682, 1, 67186), +(108321, 2780803154, 3322146344, 810681, 1, 67186), +(108321, 2780803154, 3322146344, 810346, 1, 67186), +(108320, 848467339, 1163127287, 128843, 3, 67186), +(108320, 848467339, 1163127287, 119849, 3, 67186), +(108319, 2442910012, 3322146344, 841037, 1, 67186), +(108319, 2442910012, 3322146344, 834394, 1, 67186), +(108318, 2203079345, 1163127287, 123041, 3, 67186), +(108318, 2203079345, 1163127287, 119664, 3, 67186), +(108318, 2203079345, 1163127287, 119657, 3, 67186), +(108318, 2203079345, 1163127287, 119653, 3, 67186), +(108317, 536440503, 813076512, 206624, 1, 67186), +(108317, 536440503, 4030871717, 1322330, 1, 67186), +(108314, 511723296, 1163127287, 125570, 3, 67186), +(108314, 511723296, 1163127287, 125563, 3, 67186), +(108314, 511723296, 4096770149, 243741, 1, 67186), +(108313, 959572744, 1163127287, 118205, 3, 67186), +(108313, 959572744, 3322146344, 829714, 1, 67186), +(108310, 3308248211, 3322146344, 704996, 1, 67186), +(108308, 2882039275, 1274215428, 161249, 1, 67186), +(108308, 2882039275, 1274215428, 161182, 1, 67186), +(108308, 2882039275, 1789921167, 17247, 1, 67186), +(108308, 2882039275, 1789921167, 16918, 1, 67186), +(108308, 2882039275, 1789921167, 16917, 2, 67186), +(108307, 3294404858, 3322146344, 816216, 1, 67186), +(108296, 1055914100, 312611497, 27659, 3, 67186), +(108296, 1055914100, 312611497, 21853, 3, 67186), +(108296, 1055914100, 312611497, 21852, 3, 67186), +(108295, 3370407620, 666345498, 521390, 1, 67186), +(108295, 3370407620, 4033975491, 623425, 1, 67186), +(108295, 3370407620, 4033975491, 623424, 1, 67186), +(108295, 3370407620, 1181150530, 759052, 1, 67186), +(108295, 3370407620, 1181150530, 759048, 1, 67186), +(108295, 3370407620, 4102286043, 268392, 1, 67186), +(108295, 3370407620, 4102286043, 268391, 1, 67186), +(108295, 3370407620, 3425193231, 549526, 1, 67186), +(108295, 3370407620, 3425193231, 549525, 1, 67186), +(108295, 3370407620, 3425193231, 549524, 1, 67186), +(108295, 3370407620, 4146370265, 184042, 1, 67186), +(108295, 3370407620, 3764692828, 352796, 2, 67186), +(108295, 3370407620, 3322146344, 845899, 1, 67186), +(108295, 3370407620, 1720692227, 243658, 1, 67186), +(108295, 3370407620, 4030871717, 1322283, 1, 67186), +(108295, 3370407620, 4030871717, 1322282, 1, 67186), +(108295, 3370407620, 1187407512, 1298568, 1, 67186), +(108295, 3370407620, 3776013982, 1298568, 1, 67186), +(108295, 3370407620, 3386943305, 331841, 3, 67186), +(108295, 3370407620, 3386943305, 331840, 3, 67186), +(108295, 3370407620, 3386943305, 331821, 3, 67186), +(108295, 3370407620, 3386943305, 331820, 3, 67186), +(108295, 3370407620, 3386943305, 331817, 3, 67186), +(108295, 3370407620, 3386943305, 331816, 3, 67186), +(108295, 3370407620, 3386943305, 276832, 3, 67186), +(108295, 3370407620, 3386943305, 276831, 3, 67186), +(108295, 3370407620, 3386943305, 276830, 3, 67186), +(108295, 3370407620, 3386943305, 276829, 3, 67186), +(108295, 3370407620, 3386943305, 225747, 3, 67186), +(108295, 3370407620, 3386943305, 224306, 3, 67186), +(108295, 3370407620, 3386943305, 220539, 3, 67186), +(108295, 3370407620, 3571931810, 43222, 3, 67186), +(108295, 3370407620, 1548466975, 43917, 3, 67186), +(108295, 3370407620, 1548466975, 30618, 3, 67186), +(108293, 3817601111, 1163127287, 115695, 3, 67186), +(108293, 3817601111, 1163127287, 40240, 3, 67186), +(108293, 3817601111, 1163127287, 39715, 3, 67186), +(108293, 3817601111, 1163127287, 39427, 3, 67186), +(108293, 3817601111, 1163127287, 39423, 3, 67186), +(108292, 3649246785, 312611497, 27470, 3, 67186), +(108292, 3649246785, 312611497, 27469, 3, 67186), +(108292, 3649246785, 1163127287, 89345, 3, 67186), +(108287, 953242760, 312611497, 28277, 3, 67186), +(108287, 953242760, 312611497, 28276, 3, 67186), +(108287, 953242760, 1163127287, 117748, 3, 67186), +(108286, 1227278101, 3322146344, 845785, 1, 67186), +(108286, 1227278101, 4030871717, 1322112, 1, 67186), +(108285, 18131163, 1163127287, 128660, 3, 67186), +(108285, 18131163, 4030871717, 1321581, 1, 67186), +(108281, 2408931290, 3322146344, 179701, 1, 67186), +(108281, 2408931290, 4030871717, 307986, 1, 67186), +(108276, 1947627494, 2534422486, 3918, 1, 67186), +(108276, 1947627494, 2534422486, 3917, 1, 67186), +(108274, 808868128, 1163127287, 70019, 3, 67186), +(108272, 2993918549, 312611497, 25418, 3, 67186), +(108272, 2993918549, 312611497, 25417, 3, 67186), +(108272, 2993918549, 1163127287, 36118, 3, 67186), +(108272, 2993918549, 1720692227, 243632, 2, 67186), +(108272, 2993918549, 1187407512, 1253377, 1, 67186), +(108272, 2993918549, 3776013982, 1253377, 1, 67186), +(108271, 1427093379, 4030871717, 1275185, 1, 67186), +(108271, 1427093379, 4030871717, 1263781, 1, 67186), +(108271, 1427093379, 4030871717, 1263777, 1, 67186), +(108269, 2033849482, 1187407512, 1270444, 1, 67186), +(108269, 2033849482, 3776013982, 1270444, 1, 67186), +(108268, 2908152761, 4102286043, 210491, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108268, 2908152761, 4102286043, 197159, 1, 67186), +(108268, 2908152761, 4102286043, 197158, 1, 67186), +(108268, 2908152761, 4146370265, 141015, 1, 67186), +(108267, 2052410257, 3571931810, 43201, 3, 67186), +(108266, 4132472668, 1163127287, 127343, 3, 67186), +(108266, 4132472668, 2124448848, 306428, 2, 67186), +(108266, 4132472668, 2712461791, 306428, 2, 67186), +(108266, 4132472668, 3689412649, 159884, 1, 67186), +(108266, 4132472668, 1187407512, 441587, 1, 67186), +(108266, 4132472668, 3776013982, 441587, 1, 67186), +(108266, 4132472668, 1187407512, 441429, 1, 67186), +(108266, 4132472668, 3776013982, 441429, 1, 67186), +(108265, 2910808657, 3893700160, 445, 1, 67186), +(108265, 2910808657, 3893700160, 443, 1, 67186), +(108265, 2910808657, 3893700160, 442, 1, 67186), +(108264, 3545250575, 1163127287, 35536, 3, 67186), +(108263, 1599014583, 666345498, 521303, 2, 67186), +(108263, 1599014583, 666345498, 462620, 2, 67186), +(108263, 1599014583, 1163127287, 128784, 3, 67186), +(108263, 1599014583, 1163127287, 128656, 3, 67186), +(108263, 1599014583, 813076512, 206621, 1, 67186), +(108263, 1599014583, 813076512, 206620, 1, 67186), +(108263, 1599014583, 813076512, 206619, 1, 67186), +(108263, 1599014583, 4030871717, 1211841, 2, 67186), +(108263, 1599014583, 680438657, 83782, 1, 67186), +(108263, 1599014583, 680438657, 79283, 1, 67186), +(108263, 1599014583, 3689412649, 170516, 2, 67186), +(108263, 1599014583, 1187407512, 1298446, 1, 67186), +(108263, 1599014583, 3776013982, 1298446, 1, 67186), +(108263, 1599014583, 1187407512, 1223323, 1, 67186), +(108263, 1599014583, 3776013982, 1223323, 1, 67186), +(108262, 2764666727, 3108775943, 13755, 3, 67186), +(108262, 2764666727, 3108775943, 13532, 3, 67186), +(108262, 2764666727, 3108775943, 10557, 3, 67186), +(108262, 2764666727, 3108775943, 10556, 3, 67186), +(108262, 2764666727, 3108775943, 10404, 3, 67186), +(108262, 2764666727, 2120822102, 449909, 1, 67186), +(108262, 2764666727, 2120822102, 449908, 1, 67186), +(108262, 2764666727, 2120822102, 449907, 1, 67186), +(108262, 2764666727, 2120822102, 449906, 1, 67186), +(108262, 2764666727, 2120822102, 449905, 1, 67186), +(108262, 2764666727, 2120822102, 449904, 1, 67186), +(108262, 2764666727, 2120822102, 449903, 1, 67186), +(108262, 2764666727, 2120822102, 449902, 1, 67186), +(108261, 2296398511, 3468628616, 1818, 1, 67186), +(108261, 2296398511, 1710383997, 1818, 1, 67186), +(108258, 1954434132, 312611497, 28599, 3, 67186), +(108258, 1954434132, 312611497, 28598, 3, 67186), +(108257, 3610903886, 1163127287, 18555, 3, 67186), +(108255, 3582549304, 1163127287, 20974, 3, 67186), +(108253, 1764201319, 3664936999, 33727, 1, 67186), +(108252, 3388154908, 1274215428, 198696, 1, 67186), +(108252, 3388154908, 1274215428, 183589, 1, 67186), +(108252, 3388154908, 1274215428, 108729, 1, 67186), +(108252, 3388154908, 1274215428, 108728, 1, 67186), +(108252, 3388154908, 1274215428, 108727, 1, 67186), +(108252, 3388154908, 1274215428, 108726, 1, 67186), +(108252, 3388154908, 1274215428, 108722, 1, 67186), +(108252, 3388154908, 1274215428, 108677, 1, 67186), +(108252, 3388154908, 1274215428, 108676, 1, 67186), +(108252, 3388154908, 1274215428, 107291, 1, 67186), +(108252, 3388154908, 1274215428, 107245, 1, 67186), +(108252, 3388154908, 1274215428, 107200, 1, 67186), +(108252, 3388154908, 1274215428, 106540, 1, 67186), +(108252, 3388154908, 1274215428, 106538, 1, 67186), +(108252, 3388154908, 1274215428, 106493, 1, 67186), +(108252, 3388154908, 1274215428, 91851, 1, 67186), +(108252, 3388154908, 1789921167, 17246, 1, 67186), +(108252, 3388154908, 1789921167, 16263, 2, 67186), +(108251, 2413633399, 3249862272, 94988, 1, 67186), +(108251, 2413633399, 3249862272, 81161, 2, 67186), +(108251, 2413633399, 3249862272, 27342, 1, 67186), +(108249, 88178932, 35137211, 309199, 3, 67186), +(108248, 2188487092, 3571931810, 43193, 3, 67186), +(108247, 3306345493, 3322146344, 127640, 1, 67186), +(108246, 2908452662, 3108775943, 158282, 3, 67186), +(108246, 2908452662, 4040235363, 29202, 1, 67186), +(108246, 2908452662, 2120822102, 449871, 1, 67186), +(108246, 2908452662, 2120822102, 449870, 1, 67186), +(108246, 2908452662, 157446066, 42555, 1, 67186), +(108246, 2908452662, 157446066, 42554, 1, 67186), +(108244, 1475065080, 1548466975, 42860, 3, 67186), +(108240, 3971878139, 3108775943, 150305, 1, 67186), +(108238, 2086108539, 1163127287, 128770, 3, 67186), +(108235, 1507066267, 1163127287, 128769, 3, 67186), +(108235, 1507066267, 4193483863, 99989, 1, 67186), +(108235, 1507066267, 4193483863, 99988, 2, 67186), +(108235, 1507066267, 4193483863, 99441, 2, 67186), +(108235, 1507066267, 1187407512, 1293502, 1, 67186), +(108235, 1507066267, 3776013982, 1293502, 1, 67186), +(108235, 1507066267, 3108775943, 158273, 3, 67186), +(108235, 1507066267, 1344507586, 245345, 1, 67186), +(108235, 1507066267, 428746933, 245345, 3, 67186), +(108235, 1507066267, 2442913102, 245345, 1, 67186), +(108235, 1507066267, 3465080266, 245345, 3, 67186), +(108235, 1507066267, 3037505077, 245345, 1, 67186), +(108235, 1507066267, 1417785224, 245345, 3, 67186), +(108234, 17146496, 1876974313, 103622, 1, 67186), +(108231, 703711869, 2120822102, 431360, 1, 67186), +(108231, 703711869, 2120822102, 431359, 1, 67186), +(108230, 693117719, 3386943305, 192794, 3, 67186), +(108230, 693117719, 3386291891, 171383, 3, 67186), +(108229, 2417781254, 1163127287, 128761, 3, 67186), +(108229, 2417781254, 1163127287, 121095, 3, 67186), +(108227, 1249036269, 3386943305, 334165, 3, 67186), +(108225, 188329417, 2120822102, 449835, 1, 67186), +(108225, 188329417, 2120822102, 449834, 1, 67186), +(108225, 188329417, 2120822102, 449833, 1, 67186), +(108225, 188329417, 2120822102, 449832, 1, 67186), +(108225, 188329417, 2120822102, 449831, 1, 67186), +(108225, 188329417, 2120822102, 449830, 1, 67186), +(108225, 188329417, 2120822102, 449829, 1, 67186), +(108225, 188329417, 2120822102, 449828, 1, 67186), +(108225, 188329417, 2120822102, 449827, 1, 67186), +(108225, 188329417, 2120822102, 449826, 1, 67186), +(108225, 188329417, 2120822102, 449825, 1, 67186), +(108225, 188329417, 2120822102, 449824, 1, 67186), +(108225, 188329417, 2120822102, 449823, 1, 67186), +(108225, 188329417, 2120822102, 449822, 1, 67186), +(108225, 188329417, 2120822102, 449821, 1, 67186), +(108225, 188329417, 2120822102, 449820, 1, 67186), +(108225, 188329417, 2120822102, 449819, 1, 67186), +(108225, 188329417, 2120822102, 449818, 1, 67186), +(108225, 188329417, 2120822102, 449817, 1, 67186), +(108225, 188329417, 2120822102, 449816, 1, 67186), +(108225, 188329417, 2120822102, 449815, 1, 67186), +(108225, 188329417, 1255424668, 229126, 1, 67186), +(108225, 188329417, 4012104832, 114956, 1, 67186), +(108224, 2773730716, 3386943305, 328492, 3, 67186), +(108224, 2773730716, 3386943305, 328449, 3, 67186), +(108223, 3722733620, 356071576, 4271, 1, 67186), +(108222, 1765894949, 1163127287, 123798, 3, 67186), +(108222, 1765894949, 1163127287, 122046, 3, 67186), +(108222, 1765894949, 1163127287, 114183, 3, 67186), +(108222, 1765894949, 1163127287, 114135, 3, 67186), +(108222, 1765894949, 1163127287, 114134, 3, 67186), +(108222, 1765894949, 1163127287, 114037, 3, 67186), +(108222, 1765894949, 1163127287, 114007, 3, 67186), +(108222, 1765894949, 1163127287, 114001, 3, 67186), +(108222, 1765894949, 1163127287, 99965, 3, 67186), +(108222, 1765894949, 3322146344, 795659, 1, 67186), +(108222, 1765894949, 4030871717, 1282546, 1, 67186), +(108222, 1765894949, 4030871717, 1245144, 2, 67186), +(108222, 1765894949, 4030871717, 1239845, 1, 67186), +(108222, 1765894949, 4030871717, 756024, 1, 67186), +(108222, 1765894949, 680438657, 80583, 1, 67186), +(108222, 1765894949, 1187407512, 1270491, 1, 67186), +(108222, 1765894949, 3776013982, 1270491, 1, 67186), +(108222, 1765894949, 1187407512, 1241077, 1, 67186), +(108222, 1765894949, 3776013982, 1241077, 1, 67186), +(108222, 1765894949, 1187407512, 458128, 1, 67186), +(108222, 1765894949, 3776013982, 458128, 1, 67186), +(108221, 2617465517, 4030871717, 1315651, 1, 67186), +(108221, 2617465517, 4030871717, 1315650, 1, 67186), +(108221, 2617465517, 4030871717, 1311981, 1, 67186), +(108221, 2617465517, 4030871717, 1289933, 1, 67186), +(108221, 2617465517, 4030871717, 1266351, 1, 67186), +(108221, 2617465517, 4030871717, 1264705, 1, 67186), +(108220, 1917395462, 3322146344, 809704, 1, 67186), +(108220, 1917395462, 3322146344, 809703, 1, 67186), +(108220, 1917395462, 3899321669, 5919, 1, 67186), +(108220, 1917395462, 3899321669, 5918, 1, 67186), +(108220, 1917395462, 3899321669, 5917, 1, 67186), +(108220, 1917395462, 3899321669, 5916, 1, 67186), +(108219, 1769367742, 3386943305, 330038, 3, 67186), +(108215, 2370058456, 2493836603, 37074, 1, 67186), +(108215, 2370058456, 2493836603, 37073, 1, 67186), +(108215, 2370058456, 2493836603, 37072, 1, 67186), +(108215, 2370058456, 2493836603, 37065, 1, 67186), +(108215, 2370058456, 2493836603, 37064, 1, 67186), +(108215, 2370058456, 2493836603, 37063, 1, 67186), +(108215, 2370058456, 2493836603, 37050, 1, 67186), +(108215, 2370058456, 2493836603, 37049, 1, 67186), +(108215, 2370058456, 2493836603, 37048, 1, 67186), +(108215, 2370058456, 2493836603, 36911, 1, 67186), +(108215, 2370058456, 2493836603, 35166, 1, 67186), +(108215, 2370058456, 2493836603, 35165, 1, 67186), +(108215, 2370058456, 2493836603, 35164, 1, 67186), +(108213, 2618212698, 3322146344, 478568, 1, 67186), +(108213, 2618212698, 1187407512, 363916, 1, 67186), +(108213, 2618212698, 3776013982, 363916, 1, 67186), +(108212, 3213791486, 312611497, 28058, 3, 67186), +(108212, 3213791486, 312611497, 28057, 3, 67186), +(108212, 3213791486, 1163127287, 120048, 2, 67186), +(108211, 1216958384, 3322146344, 782503, 1, 67186), +(108211, 1216958384, 3322146344, 782502, 1, 67186), +(108211, 1216958384, 3322146344, 782501, 1, 67186), +(108211, 1216958384, 3322146344, 782500, 1, 67186), +(108211, 1216958384, 3322146344, 782499, 1, 67186), +(108211, 1216958384, 3322146344, 782498, 1, 67186), +(108211, 1216958384, 3322146344, 782497, 1, 67186), +(108211, 1216958384, 3322146344, 782496, 1, 67186), +(108211, 1216958384, 3322146344, 782495, 1, 67186), +(108211, 1216958384, 3322146344, 782494, 1, 67186), +(108211, 1216958384, 3322146344, 782493, 1, 67186), +(108211, 1216958384, 3322146344, 782492, 1, 67186), +(108211, 1216958384, 3322146344, 782491, 1, 67186), +(108211, 1216958384, 3322146344, 782490, 1, 67186), +(108211, 1216958384, 3322146344, 782489, 1, 67186), +(108211, 1216958384, 3322146344, 781453, 1, 67186), +(108211, 1216958384, 3322146344, 781452, 1, 67186), +(108211, 1216958384, 3322146344, 781451, 1, 67186), +(108211, 1216958384, 3322146344, 781450, 1, 67186), +(108211, 1216958384, 3322146344, 781448, 1, 67186), +(108211, 1216958384, 4030871717, 1218764, 1, 67186), +(108211, 1216958384, 4030871717, 1218763, 1, 67186), +(108211, 1216958384, 4030871717, 1218762, 1, 67186), +(108211, 1216958384, 4030871717, 1218761, 1, 67186), +(108211, 1216958384, 4030871717, 1218760, 1, 67186), +(108211, 1216958384, 4030871717, 1218759, 1, 67186), +(108211, 1216958384, 4030871717, 1218758, 1, 67186), +(108211, 1216958384, 4030871717, 1218757, 1, 67186), +(108211, 1216958384, 4030871717, 1218756, 1, 67186), +(108211, 1216958384, 4030871717, 1218755, 1, 67186), +(108211, 1216958384, 4030871717, 1218754, 1, 67186), +(108211, 1216958384, 4030871717, 1218753, 1, 67186), +(108211, 1216958384, 4030871717, 1218752, 1, 67186), +(108211, 1216958384, 4030871717, 1218751, 1, 67186), +(108211, 1216958384, 4030871717, 1218750, 1, 67186), +(108211, 1216958384, 4030871717, 1218749, 1, 67186), +(108211, 1216958384, 4030871717, 1218748, 1, 67186), +(108211, 1216958384, 4030871717, 1218747, 1, 67186), +(108211, 1216958384, 4030871717, 1218746, 1, 67186), +(108211, 1216958384, 4030871717, 1218745, 1, 67186), +(108211, 1216958384, 4030871717, 1218744, 1, 67186), +(108211, 1216958384, 4030871717, 1218743, 1, 67186), +(108211, 1216958384, 4030871717, 1218742, 1, 67186), +(108211, 1216958384, 4030871717, 1218741, 1, 67186), +(108211, 1216958384, 4030871717, 1218740, 1, 67186), +(108211, 1216958384, 4030871717, 1218739, 1, 67186), +(108211, 1216958384, 4030871717, 1218738, 1, 67186), +(108211, 1216958384, 4030871717, 1218737, 1, 67186), +(108211, 1216958384, 4030871717, 1218736, 1, 67186), +(108211, 1216958384, 4030871717, 1218735, 1, 67186), +(108211, 1216958384, 4030871717, 1217076, 1, 67186), +(108211, 1216958384, 4030871717, 1217075, 1, 67186), +(108211, 1216958384, 4030871717, 1217074, 1, 67186), +(108211, 1216958384, 4030871717, 1217073, 1, 67186), +(108211, 1216958384, 4030871717, 1217072, 1, 67186), +(108211, 1216958384, 4030871717, 1217002, 1, 67186), +(108211, 1216958384, 4030871717, 1217001, 1, 67186), +(108211, 1216958384, 4030871717, 1216999, 1, 67186), +(108211, 1216958384, 4030871717, 1216998, 1, 67186), +(108211, 1216958384, 4030871717, 1216179, 1, 67186), +(108211, 1216958384, 3108775943, 158259, 1, 67186), +(108210, 1696009568, 4033975491, 589353, 1, 67186), +(108209, 420464528, 1163127287, 126258, 3, 67186), +(108209, 420464528, 1163127287, 126255, 3, 67186), +(108208, 3644376182, 240389885, 9594, 1, 67186), +(108208, 3644376182, 3571931810, 43195, 3, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108208, 3644376182, 1548466975, 43894, 3, 67186), +(108207, 3168503063, 3322146344, 467787, 1, 67186), +(108207, 3168503063, 3322146344, 99214, 1, 67186), +(108207, 3168503063, 3322146344, 96496, 1, 67186), +(108207, 3168503063, 3322146344, 10890, 1, 67186), +(108207, 3168503063, 680438657, 16713, 1, 67186), +(108207, 3168503063, 680438657, 16300, 1, 67186), +(108207, 3168503063, 680438657, 1906, 1, 67186), +(108207, 3168503063, 3899321669, 5915, 2, 67186), +(108207, 3168503063, 3899321669, 5914, 2, 67186), +(108207, 3168503063, 1187407512, 353319, 1, 67186), +(108207, 3168503063, 3776013982, 353319, 1, 67186), +(108207, 3168503063, 1187407512, 125174, 1, 67186), +(108207, 3168503063, 3776013982, 125174, 1, 67186), +(108207, 3168503063, 1187407512, 122470, 1, 67186), +(108207, 3168503063, 3776013982, 122470, 1, 67186), +(108207, 3168503063, 1187407512, 23920, 1, 67186), +(108207, 3168503063, 3776013982, 23920, 1, 67186), +(108205, 3953038811, 1274215428, 190484, 1, 67186), +(108205, 3953038811, 1274215428, 171483, 1, 67186), +(108205, 3953038811, 1274215428, 171482, 1, 67186), +(108205, 3953038811, 1274215428, 171418, 1, 67186), +(108205, 3953038811, 1274215428, 171417, 1, 67186), +(108205, 3953038811, 1274215428, 171416, 1, 67186), +(108205, 3953038811, 1274215428, 171415, 1, 67186), +(108205, 3953038811, 1274215428, 171414, 1, 67186), +(108205, 3953038811, 1274215428, 171413, 1, 67186), +(108205, 3953038811, 1274215428, 171412, 1, 67186), +(108205, 3953038811, 1274215428, 171348, 1, 67186), +(108205, 3953038811, 1274215428, 171284, 1, 67186), +(108205, 3953038811, 1274215428, 171169, 1, 67186), +(108205, 3953038811, 1274215428, 168967, 1, 67186), +(108205, 3953038811, 1274215428, 133730, 1, 67186), +(108205, 3953038811, 1274215428, 133729, 1, 67186), +(108205, 3953038811, 1274215428, 133728, 1, 67186), +(108205, 3953038811, 1274215428, 133727, 1, 67186), +(108205, 3953038811, 1274215428, 133679, 1, 67186), +(108205, 3953038811, 1274215428, 133631, 1, 67186), +(108205, 3953038811, 1274215428, 133583, 1, 67186), +(108205, 3953038811, 1274215428, 133441, 1, 67186), +(108205, 3953038811, 1274215428, 132900, 1, 67186), +(108205, 3953038811, 1274215428, 132769, 1, 67186), +(108205, 3953038811, 1274215428, 132721, 1, 67186), +(108205, 3953038811, 1274215428, 132299, 1, 67186), +(108205, 3953038811, 1274215428, 131072, 1, 67186), +(108205, 3953038811, 1274215428, 130897, 1, 67186), +(108205, 3953038811, 1274215428, 130803, 1, 67186), +(108205, 3953038811, 1274215428, 130470, 1, 67186), +(108205, 3953038811, 1274215428, 92736, 1, 67186), +(108205, 3953038811, 1274215428, 92735, 1, 67186), +(108205, 3953038811, 1274215428, 92734, 1, 67186), +(108205, 3953038811, 1274215428, 84355, 1, 67186), +(108205, 3953038811, 1274215428, 84354, 1, 67186), +(108205, 3953038811, 1274215428, 84352, 1, 67186), +(108205, 3953038811, 1274215428, 84351, 1, 67186), +(108205, 3953038811, 1274215428, 63262, 1, 67186), +(108205, 3953038811, 1274215428, 63185, 1, 67186), +(108205, 3953038811, 1274215428, 63146, 1, 67186), +(108205, 3953038811, 1274215428, 63107, 1, 67186), +(108205, 3953038811, 1274215428, 33527, 1, 67186), +(108205, 3953038811, 1274215428, 26230, 1, 67186), +(108205, 3953038811, 1274215428, 18823, 1, 67186), +(108205, 3953038811, 1274215428, 18822, 1, 67186), +(108205, 3953038811, 1274215428, 18820, 1, 67186), +(108205, 3953038811, 1274215428, 18818, 1, 67186), +(108205, 3953038811, 1274215428, 18813, 2, 67186), +(108205, 3953038811, 1274215428, 18812, 1, 67186), +(108205, 3953038811, 1274215428, 18809, 1, 67186), +(108205, 3953038811, 1274215428, 18808, 1, 67186), +(108205, 3953038811, 1274215428, 18807, 1, 67186), +(108205, 3953038811, 1274215428, 18805, 1, 67186), +(108205, 3953038811, 1274215428, 18804, 1, 67186), +(108205, 3953038811, 1274215428, 18803, 1, 67186), +(108205, 3953038811, 1274215428, 18802, 1, 67186), +(108205, 3953038811, 1274215428, 18801, 1, 67186), +(108205, 3953038811, 1274215428, 18800, 1, 67186), +(108205, 3953038811, 1274215428, 18798, 1, 67186), +(108205, 3953038811, 1274215428, 18797, 1, 67186), +(108205, 3953038811, 1274215428, 18796, 1, 67186), +(108205, 3953038811, 1274215428, 18794, 1, 67186), +(108204, 2564663024, 1274215428, 133780, 1, 67186), +(108204, 2564663024, 1274215428, 133777, 1, 67186), +(108203, 2116308924, 3764692828, 352568, 2, 67186), +(108203, 2116308924, 813076512, 206617, 1, 67186), +(108203, 2116308924, 3764045193, 7526, 1, 67186), +(108203, 2116308924, 4030871717, 1322003, 1, 67186), +(108203, 2116308924, 4030871717, 1281336, 1, 67186), +(108203, 2116308924, 4030871717, 1230827, 1, 67186), +(108203, 2116308924, 4030871717, 1214317, 1, 67186), +(108203, 2116308924, 4193483863, 94510, 1, 67186), +(108203, 2116308924, 4193483863, 94321, 1, 67186), +(108203, 2116308924, 3689412649, 173135, 2, 67186), +(108203, 2116308924, 3689412649, 172639, 2, 67186), +(108203, 2116308924, 1187407512, 1237942, 1, 67186), +(108203, 2116308924, 3776013982, 1237942, 1, 67186), +(108203, 2116308924, 1187407512, 1235216, 1, 67186), +(108203, 2116308924, 3776013982, 1235216, 1, 67186), +(108203, 2116308924, 1187407512, 1225245, 1, 67186), +(108203, 2116308924, 3776013982, 1225245, 1, 67186), +(108203, 2116308924, 778162198, 397, 1, 67186), +(108203, 2116308924, 3108775943, 158261, 1, 67186), +(108203, 2116308924, 2120822102, 449799, 1, 67186), +(108203, 2116308924, 2120822102, 449798, 1, 67186), +(108203, 2116308924, 2120822102, 449797, 1, 67186), +(108203, 2116308924, 2120822102, 449796, 1, 67186), +(108203, 2116308924, 1073915313, 211569, 1, 67186), +(108203, 2116308924, 1073915313, 207359, 1, 67186), +(108203, 2116308924, 1344507586, 243343, 1, 67186), +(108203, 2116308924, 428746933, 243343, 3, 67186), +(108203, 2116308924, 2442913102, 243343, 1, 67186), +(108203, 2116308924, 3465080266, 243343, 3, 67186), +(108203, 2116308924, 3037505077, 243343, 1, 67186), +(108203, 2116308924, 1417785224, 243343, 3, 67186), +(108203, 2116308924, 1344507586, 243302, 1, 67186), +(108203, 2116308924, 428746933, 243302, 3, 67186), +(108203, 2116308924, 2442913102, 243302, 1, 67186), +(108203, 2116308924, 3465080266, 243302, 3, 67186), +(108203, 2116308924, 3037505077, 243302, 1, 67186), +(108203, 2116308924, 1417785224, 243302, 3, 67186), +(108203, 2116308924, 1440114855, 3695, 1, 67186), +(108203, 2116308924, 1440114855, 3694, 1, 67186), +(108203, 2116308924, 1440114855, 3693, 1, 67186), +(108203, 2116308924, 1440114855, 3692, 1, 67186), +(108203, 2116308924, 1440114855, 3691, 1, 67186), +(108203, 2116308924, 1440114855, 3690, 1, 67186), +(108203, 2116308924, 1440114855, 3689, 1, 67186), +(108203, 2116308924, 1440114855, 3688, 1, 67186), +(108203, 2116308924, 1440114855, 3687, 1, 67186), +(108203, 2116308924, 1440114855, 3686, 1, 67186), +(108203, 2116308924, 1440114855, 3685, 1, 67186), +(108203, 2116308924, 1440114855, 3684, 1, 67186), +(108203, 2116308924, 1440114855, 3683, 1, 67186), +(108203, 2116308924, 1440114855, 3682, 1, 67186), +(108203, 2116308924, 1440114855, 3681, 1, 67186), +(108203, 2116308924, 1440114855, 3680, 1, 67186), +(108203, 2116308924, 1440114855, 3679, 1, 67186), +(108203, 2116308924, 1440114855, 3678, 1, 67186), +(108203, 2116308924, 1440114855, 3677, 1, 67186), +(108203, 2116308924, 1440114855, 3676, 1, 67186), +(108203, 2116308924, 1440114855, 3675, 1, 67186), +(108203, 2116308924, 1440114855, 3674, 1, 67186), +(108203, 2116308924, 1440114855, 3673, 1, 67186), +(108203, 2116308924, 1440114855, 3672, 1, 67186), +(108203, 2116308924, 1440114855, 3671, 1, 67186), +(108203, 2116308924, 1440114855, 3670, 1, 67186), +(108203, 2116308924, 1440114855, 3669, 1, 67186), +(108203, 2116308924, 1440114855, 3668, 1, 67186), +(108203, 2116308924, 1440114855, 3667, 1, 67186), +(108203, 2116308924, 1440114855, 3666, 1, 67186), +(108203, 2116308924, 1440114855, 3665, 1, 67186), +(108203, 2116308924, 1440114855, 3664, 1, 67186), +(108203, 2116308924, 1440114855, 3663, 1, 67186), +(108203, 2116308924, 1440114855, 3662, 1, 67186), +(108203, 2116308924, 1440114855, 3661, 1, 67186), +(108203, 2116308924, 1440114855, 3660, 1, 67186), +(108203, 2116308924, 1440114855, 3659, 1, 67186), +(108203, 2116308924, 1440114855, 3658, 1, 67186), +(108203, 2116308924, 1440114855, 3657, 1, 67186), +(108203, 2116308924, 1440114855, 3656, 1, 67186), +(108203, 2116308924, 1440114855, 3655, 1, 67186), +(108203, 2116308924, 1440114855, 3654, 1, 67186), +(108203, 2116308924, 1440114855, 3653, 1, 67186), +(108203, 2116308924, 1440114855, 3652, 1, 67186), +(108203, 2116308924, 1440114855, 3651, 1, 67186), +(108203, 2116308924, 1440114855, 3650, 1, 67186), +(108203, 2116308924, 1440114855, 3649, 1, 67186), +(108203, 2116308924, 1440114855, 3648, 1, 67186), +(108203, 2116308924, 1440114855, 3647, 1, 67186), +(108203, 2116308924, 1440114855, 3646, 1, 67186), +(108203, 2116308924, 1440114855, 3645, 1, 67186), +(108203, 2116308924, 1440114855, 3644, 1, 67186), +(108203, 2116308924, 1440114855, 3643, 1, 67186), +(108203, 2116308924, 1440114855, 3642, 1, 67186), +(108203, 2116308924, 1440114855, 3641, 1, 67186), +(108203, 2116308924, 1440114855, 3640, 1, 67186), +(108203, 2116308924, 1440114855, 3639, 1, 67186), +(108203, 2116308924, 1440114855, 3638, 1, 67186), +(108203, 2116308924, 1440114855, 3637, 1, 67186), +(108203, 2116308924, 1440114855, 3636, 1, 67186), +(108203, 2116308924, 1440114855, 3635, 1, 67186), +(108203, 2116308924, 1440114855, 3634, 1, 67186), +(108203, 2116308924, 1440114855, 3633, 1, 67186), +(108203, 2116308924, 1440114855, 3632, 1, 67186), +(108203, 2116308924, 1440114855, 3631, 1, 67186), +(108203, 2116308924, 1440114855, 3630, 1, 67186), +(108203, 2116308924, 1440114855, 3629, 1, 67186), +(108203, 2116308924, 1440114855, 3628, 1, 67186), +(108203, 2116308924, 1440114855, 3627, 1, 67186), +(108203, 2116308924, 1440114855, 3626, 1, 67186), +(108203, 2116308924, 1440114855, 3625, 1, 67186), +(108203, 2116308924, 1440114855, 3624, 1, 67186), +(108203, 2116308924, 1440114855, 3623, 1, 67186), +(108203, 2116308924, 1440114855, 3622, 1, 67186), +(108203, 2116308924, 1440114855, 3621, 1, 67186), +(108203, 2116308924, 1440114855, 3620, 1, 67186), +(108203, 2116308924, 1440114855, 3619, 1, 67186), +(108203, 2116308924, 1440114855, 3618, 1, 67186), +(108203, 2116308924, 1440114855, 3617, 1, 67186), +(108203, 2116308924, 1440114855, 3616, 1, 67186), +(108203, 2116308924, 1440114855, 3615, 1, 67186), +(108203, 2116308924, 1440114855, 3614, 1, 67186), +(108203, 2116308924, 1440114855, 3613, 1, 67186), +(108203, 2116308924, 1440114855, 3612, 1, 67186), +(108203, 2116308924, 1440114855, 3611, 1, 67186), +(108203, 2116308924, 1440114855, 3610, 1, 67186), +(108203, 2116308924, 1440114855, 3609, 1, 67186), +(108203, 2116308924, 1440114855, 3608, 1, 67186), +(108203, 2116308924, 1440114855, 3607, 1, 67186), +(108203, 2116308924, 1440114855, 3606, 1, 67186), +(108203, 2116308924, 1440114855, 3605, 1, 67186), +(108203, 2116308924, 1440114855, 3604, 1, 67186), +(108203, 2116308924, 1440114855, 3603, 1, 67186), +(108203, 2116308924, 1440114855, 3602, 1, 67186), +(108203, 2116308924, 1440114855, 3601, 1, 67186), +(108203, 2116308924, 1440114855, 3600, 1, 67186), +(108203, 2116308924, 1440114855, 3599, 1, 67186), +(108203, 2116308924, 1440114855, 3598, 1, 67186), +(108203, 2116308924, 1440114855, 3597, 1, 67186), +(108203, 2116308924, 1440114855, 3596, 1, 67186), +(108203, 2116308924, 1440114855, 3595, 1, 67186), +(108203, 2116308924, 1440114855, 3594, 1, 67186), +(108203, 2116308924, 1440114855, 3593, 1, 67186), +(108203, 2116308924, 1440114855, 3591, 1, 67186), +(108203, 2116308924, 1440114855, 3590, 1, 67186), +(108203, 2116308924, 1880017466, 315862, 3, 67186), +(108203, 2116308924, 1880017466, 315861, 3, 67186), +(108203, 2116308924, 1880017466, 315850, 3, 67186), +(108203, 2116308924, 1880017466, 315849, 3, 67186), +(108203, 2116308924, 1880017466, 315848, 3, 67186), +(108203, 2116308924, 1880017466, 315847, 3, 67186), +(108203, 2116308924, 1880017466, 315771, 3, 67186), +(108203, 2116308924, 1880017466, 315770, 3, 67186), +(108203, 2116308924, 1880017466, 304852, 3, 67186), +(108203, 2116308924, 1880017466, 304836, 3, 67186), +(108203, 2116308924, 1272569722, 104598, 1, 67186), +(108203, 2116308924, 1272569722, 104595, 1, 67186), +(108203, 2116308924, 1272569722, 104569, 1, 67186), +(108203, 2116308924, 1272569722, 100921, 1, 67186), +(108203, 2116308924, 1272569722, 100917, 1, 67186), +(108200, 1249031977, 1163127287, 128730, 3, 67186), +(108200, 1249031977, 1163127287, 124151, 3, 67186), +(108200, 1249031977, 1163127287, 124143, 3, 67186), +(108200, 1249031977, 1163127287, 124142, 3, 67186), +(108200, 1249031977, 1163127287, 124141, 3, 67186), +(108198, 3804479981, 312611497, 21623, 3, 67186), +(108198, 3804479981, 312611497, 14470, 3, 67186), +(108198, 3804479981, 312611497, 14469, 3, 67186), +(108198, 3804479981, 1163127287, 125313, 3, 67186), +(108197, 4235889923, 4102286043, 264392, 1, 67186), +(108196, 1721117689, 2120822102, 404078, 2, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108195, 1648169102, 3571931810, 43196, 3, 67186), +(108195, 1648169102, 1225579890, 3980, 3, 67186), +(108195, 1648169102, 1548466975, 43895, 3, 67186), +(108193, 4220184587, 1163127287, 47071, 3, 67186), +(108192, 1512103284, 312611497, 13477, 3, 67186), +(108192, 1512103284, 312611497, 13476, 3, 67186), +(108191, 113326306, 3386943305, 342177, 3, 67186), +(108189, 1647562831, 4030871717, 1317295, 1, 67186), +(108189, 1647562831, 4030871717, 1305071, 1, 67186), +(108189, 1647562831, 4030871717, 1264335, 1, 67186), +(108189, 1647562831, 4030871717, 1263833, 1, 67186), +(108189, 1647562831, 4030871717, 1236566, 1, 67186), +(108188, 814027640, 1163127287, 128792, 3, 67186), +(108188, 814027640, 1163127287, 128758, 3, 67186), +(108188, 814027640, 3322146344, 825842, 1, 67186), +(108187, 4201835535, 3322146344, 770397, 1, 67186), +(108186, 1945884711, 1163127287, 128720, 3, 67186), +(108186, 1945884711, 3571931810, 43194, 3, 67186), +(108186, 1945884711, 1548466975, 43893, 3, 67186), +(108183, 4073227790, 261693969, 95549, 1, 67186), +(108183, 4073227790, 986198281, 95549, 1, 67186), +(108180, 2555497787, 1163127287, 128714, 3, 67186), +(108180, 2555497787, 1548466975, 43891, 3, 67186), +(108179, 3892030241, 2202435563, 1264434, 1, 67186), +(108179, 3892030241, 2202435563, 1264429, 1, 67186), +(108179, 3892030241, 2202435563, 1264428, 1, 67186), +(108179, 3892030241, 2202435563, 1264427, 1, 67186), +(108179, 3892030241, 2202435563, 1264426, 1, 67186), +(108179, 3892030241, 2202435563, 1264425, 1, 67186), +(108179, 3892030241, 2202435563, 1264424, 1, 67186), +(108179, 3892030241, 2202435563, 1264423, 1, 67186), +(108178, 2736295435, 1163127287, 128360, 3, 67186), +(108178, 2736295435, 1163127287, 128359, 3, 67186), +(108178, 2736295435, 1163127287, 128349, 3, 67186), +(108178, 2736295435, 1163127287, 80692, 3, 67186), +(108178, 2736295435, 3322146344, 821365, 1, 67186), +(108178, 2736295435, 4030871717, 1282244, 1, 67186), +(108178, 2736295435, 4096770149, 244464, 1, 67186), +(108175, 1957897477, 3386943305, 93847, 3, 67186), +(108175, 1957897477, 3386943305, 87653, 3, 67186), +(108175, 1957897477, 3386943305, 76582, 3, 67186), +(108175, 1957897477, 3386943305, 76581, 3, 67186), +(108175, 1957897477, 3386943305, 72650, 3, 67186), +(108172, 3812930160, 4021368146, 7615, 1, 67186), +(108172, 3812930160, 336222293, 22633, 1, 67186), +(108172, 3812930160, 978178762, 405, 1, 67186), +(108172, 3812930160, 2523372402, 16092, 1, 67186), +(108172, 3812930160, 2198813286, 3181, 1, 67186), +(108172, 3812930160, 261693969, 96388, 1, 67186), +(108172, 3812930160, 986198281, 96388, 1, 67186), +(108172, 3812930160, 261693969, 93870, 3, 67186), +(108172, 3812930160, 986198281, 93870, 1, 67186), +(108172, 3812930160, 261693969, 93816, 3, 67186), +(108172, 3812930160, 986198281, 93816, 1, 67186), +(108172, 3812930160, 20077728, 472577, 3, 67186), +(108172, 3812930160, 3108775943, 156069, 1, 67186), +(108172, 3812930160, 3108775943, 151169, 1, 67186), +(108172, 3812930160, 3108775943, 151168, 1, 67186), +(108172, 3812930160, 3108775943, 151167, 1, 67186), +(108172, 3812930160, 3108775943, 151166, 1, 67186), +(108172, 3812930160, 3108775943, 151165, 1, 67186), +(108172, 3812930160, 3108775943, 151161, 1, 67186), +(108172, 3812930160, 3108775943, 151160, 1, 67186), +(108172, 3812930160, 3108775943, 151159, 1, 67186), +(108172, 3812930160, 3108775943, 151158, 1, 67186), +(108172, 3812930160, 3108775943, 151157, 1, 67186), +(108172, 3812930160, 3108775943, 151155, 1, 67186), +(108172, 3812930160, 3319676509, 918, 1, 67186), +(108172, 3812930160, 1344507586, 274267, 1, 67186), +(108172, 3812930160, 428746933, 274267, 3, 67186), +(108172, 3812930160, 2442913102, 274267, 1, 67186), +(108172, 3812930160, 3465080266, 274267, 3, 67186), +(108172, 3812930160, 3037505077, 274267, 3, 67186), +(108172, 3812930160, 1417785224, 274267, 3, 67186), +(108172, 3812930160, 1344507586, 255157, 1, 67186), +(108172, 3812930160, 428746933, 255157, 3, 67186), +(108172, 3812930160, 2442913102, 255157, 1, 67186), +(108172, 3812930160, 3465080266, 255157, 3, 67186), +(108172, 3812930160, 3037505077, 255157, 3, 67186), +(108172, 3812930160, 1417785224, 255157, 3, 67186), +(108172, 3812930160, 1344507586, 239563, 1, 67186), +(108172, 3812930160, 428746933, 239563, 3, 67186), +(108172, 3812930160, 2442913102, 239563, 1, 67186), +(108172, 3812930160, 3465080266, 239563, 3, 67186), +(108172, 3812930160, 3037505077, 239563, 3, 67186), +(108172, 3812930160, 1417785224, 239563, 3, 67186), +(108172, 3812930160, 1344507586, 223245, 1, 67186), +(108172, 3812930160, 428746933, 223245, 3, 67186), +(108172, 3812930160, 2442913102, 223245, 1, 67186), +(108172, 3812930160, 3465080266, 223245, 3, 67186), +(108172, 3812930160, 3037505077, 223245, 3, 67186), +(108172, 3812930160, 1417785224, 223245, 3, 67186), +(108172, 3812930160, 1400098795, 174, 1, 67186), +(108172, 3812930160, 1400098795, 74, 1, 67186), +(108172, 3812930160, 1255424668, 224842, 1, 67186), +(108172, 3812930160, 1255424668, 224840, 1, 67186), +(108172, 3812930160, 1255424668, 224838, 1, 67186), +(108172, 3812930160, 1255424668, 223318, 1, 67186), +(108172, 3812930160, 1255424668, 223121, 1, 67186), +(108172, 3812930160, 1255424668, 223119, 1, 67186), +(108172, 3812930160, 1255424668, 222479, 1, 67186), +(108172, 3812930160, 1255424668, 222477, 1, 67186), +(108172, 3812930160, 1255424668, 222475, 1, 67186), +(108172, 3812930160, 1255424668, 222466, 1, 67186), +(108172, 3812930160, 1255424668, 222453, 1, 67186), +(108172, 3812930160, 1255424668, 222438, 1, 67186), +(108172, 3812930160, 1255424668, 222436, 1, 67186), +(108172, 3812930160, 1255424668, 222434, 1, 67186), +(108172, 3812930160, 1255424668, 222432, 1, 67186), +(108172, 3812930160, 1255424668, 222430, 1, 67186), +(108172, 3812930160, 1255424668, 222428, 1, 67186), +(108172, 3812930160, 1255424668, 222426, 1, 67186), +(108172, 3812930160, 1255424668, 222424, 1, 67186), +(108172, 3812930160, 1255424668, 222422, 1, 67186), +(108172, 3812930160, 1255424668, 222416, 1, 67186), +(108172, 3812930160, 1255424668, 222290, 1, 67186), +(108172, 3812930160, 1255424668, 220967, 1, 67186), +(108172, 3812930160, 1255424668, 220603, 1, 67186), +(108172, 3812930160, 1255424668, 220574, 1, 67186), +(108172, 3812930160, 1255424668, 220573, 1, 67186), +(108172, 3812930160, 1255424668, 212256, 1, 67186), +(108172, 3812930160, 1255424668, 212255, 1, 67186), +(108172, 3812930160, 3386291891, 264056, 3, 67186), +(108172, 3812930160, 3386291891, 255959, 3, 67186), +(108172, 3812930160, 3386291891, 255412, 3, 67186), +(108172, 3812930160, 3386291891, 255384, 3, 67186), +(108172, 3812930160, 3386291891, 240195, 3, 67186), +(108172, 3812930160, 1821637041, 5065, 1, 67186), +(108172, 3812930160, 3745449290, 8584, 1, 67186), +(108172, 3812930160, 3538824359, 62773, 1, 67186), +(108172, 3812930160, 3538824359, 62342, 1, 67186), +(108172, 3812930160, 3538824359, 62272, 1, 67186), +(108172, 3812930160, 3538824359, 62271, 1, 67186), +(108172, 3812930160, 3538824359, 62220, 1, 67186), +(108172, 3812930160, 3538824359, 62219, 1, 67186), +(108172, 3812930160, 3538824359, 62218, 1, 67186), +(108172, 3812930160, 3538824359, 62217, 1, 67186), +(108172, 3812930160, 3538824359, 62216, 1, 67186), +(108172, 3812930160, 3538824359, 62215, 1, 67186), +(108172, 3812930160, 3538824359, 62214, 1, 67186), +(108172, 3812930160, 3538824359, 62213, 1, 67186), +(108172, 3812930160, 3538824359, 62212, 1, 67186), +(108172, 3812930160, 3538824359, 62211, 1, 67186), +(108172, 3812930160, 3538824359, 62210, 1, 67186), +(108172, 3812930160, 3538824359, 62209, 1, 67186), +(108172, 3812930160, 3538824359, 62208, 1, 67186), +(108172, 3812930160, 3538824359, 62207, 1, 67186), +(108172, 3812930160, 3538824359, 61883, 1, 67186), +(108169, 1128652846, 3468628616, 1817, 1, 67186), +(108169, 1128652846, 1710383997, 1817, 1, 67186), +(108169, 1128652846, 3468628616, 1816, 1, 67186), +(108169, 1128652846, 1710383997, 1816, 1, 67186), +(108169, 1128652846, 3468628616, 1815, 1, 67186), +(108169, 1128652846, 1710383997, 1815, 1, 67186), +(108169, 1128652846, 3468628616, 1814, 1, 67186), +(108169, 1128652846, 1710383997, 1814, 1, 67186), +(108169, 1128652846, 3468628616, 1813, 1, 67186), +(108169, 1128652846, 1710383997, 1813, 1, 67186), +(108169, 1128652846, 3468628616, 1812, 1, 67186), +(108169, 1128652846, 1710383997, 1812, 1, 67186), +(108169, 1128652846, 3468628616, 1811, 1, 67186), +(108169, 1128652846, 1710383997, 1811, 1, 67186), +(108169, 1128652846, 3468628616, 1810, 1, 67186), +(108169, 1128652846, 1710383997, 1810, 1, 67186), +(108169, 1128652846, 3468628616, 1809, 1, 67186), +(108169, 1128652846, 1710383997, 1809, 1, 67186), +(108169, 1128652846, 3468628616, 1808, 1, 67186), +(108169, 1128652846, 1710383997, 1808, 1, 67186), +(108169, 1128652846, 3468628616, 1807, 1, 67186), +(108169, 1128652846, 1710383997, 1807, 1, 67186), +(108169, 1128652846, 3468628616, 1806, 1, 67186), +(108169, 1128652846, 1710383997, 1806, 1, 67186), +(108169, 1128652846, 3468628616, 1805, 1, 67186), +(108169, 1128652846, 1710383997, 1805, 1, 67186), +(108166, 2864736617, 1344507586, 267009, 1, 67186), +(108166, 2864736617, 428746933, 267009, 3, 67186), +(108166, 2864736617, 2442913102, 267009, 1, 67186), +(108166, 2864736617, 3465080266, 267009, 3, 67186), +(108166, 2864736617, 3037505077, 267009, 3, 67186), +(108166, 2864736617, 1417785224, 267009, 3, 67186), +(108166, 2864736617, 1344507586, 267007, 1, 67186), +(108166, 2864736617, 428746933, 267007, 1, 67186), +(108166, 2864736617, 2442913102, 267007, 1, 67186), +(108166, 2864736617, 3465080266, 267007, 3, 67186), +(108166, 2864736617, 3037505077, 267007, 3, 67186), +(108166, 2864736617, 1417785224, 267007, 3, 67186), +(108166, 2864736617, 1344507586, 264717, 1, 67186), +(108166, 2864736617, 428746933, 264717, 1, 67186), +(108166, 2864736617, 2442913102, 264717, 1, 67186), +(108166, 2864736617, 3465080266, 264717, 3, 67186), +(108166, 2864736617, 3037505077, 264717, 3, 67186), +(108166, 2864736617, 1417785224, 264717, 3, 67186), +(108166, 2864736617, 1344507586, 264342, 1, 67186), +(108166, 2864736617, 428746933, 264342, 3, 67186), +(108166, 2864736617, 2442913102, 264342, 1, 67186), +(108166, 2864736617, 3465080266, 264342, 3, 67186), +(108166, 2864736617, 3037505077, 264342, 3, 67186), +(108166, 2864736617, 1417785224, 264342, 3, 67186), +(108166, 2864736617, 1344507586, 264338, 1, 67186), +(108166, 2864736617, 428746933, 264338, 1, 67186), +(108166, 2864736617, 2442913102, 264338, 1, 67186), +(108166, 2864736617, 3465080266, 264338, 3, 67186), +(108166, 2864736617, 3037505077, 264338, 3, 67186), +(108166, 2864736617, 1417785224, 264338, 3, 67186), +(108166, 2864736617, 1344507586, 264336, 1, 67186), +(108166, 2864736617, 428746933, 264336, 1, 67186), +(108166, 2864736617, 2442913102, 264336, 1, 67186), +(108166, 2864736617, 3465080266, 264336, 3, 67186), +(108166, 2864736617, 3037505077, 264336, 3, 67186), +(108166, 2864736617, 1417785224, 264336, 3, 67186), +(108166, 2864736617, 1344507586, 264332, 1, 67186), +(108166, 2864736617, 428746933, 264332, 1, 67186), +(108166, 2864736617, 2442913102, 264332, 1, 67186), +(108166, 2864736617, 3465080266, 264332, 3, 67186), +(108166, 2864736617, 3037505077, 264332, 3, 67186), +(108166, 2864736617, 1417785224, 264332, 3, 67186), +(108166, 2864736617, 1344507586, 264330, 1, 67186), +(108166, 2864736617, 428746933, 264330, 3, 67186), +(108166, 2864736617, 2442913102, 264330, 1, 67186), +(108166, 2864736617, 3465080266, 264330, 3, 67186), +(108166, 2864736617, 3037505077, 264330, 3, 67186), +(108166, 2864736617, 1417785224, 264330, 3, 67186), +(108166, 2864736617, 1344507586, 264329, 1, 67186), +(108166, 2864736617, 428746933, 264329, 3, 67186), +(108166, 2864736617, 2442913102, 264329, 1, 67186), +(108166, 2864736617, 3465080266, 264329, 3, 67186), +(108166, 2864736617, 3037505077, 264329, 3, 67186), +(108166, 2864736617, 1417785224, 264329, 3, 67186), +(108166, 2864736617, 1344507586, 264258, 1, 67186), +(108166, 2864736617, 428746933, 264258, 3, 67186), +(108166, 2864736617, 2442913102, 264258, 1, 67186), +(108166, 2864736617, 3465080266, 264258, 3, 67186), +(108166, 2864736617, 3037505077, 264258, 3, 67186), +(108166, 2864736617, 1417785224, 264258, 3, 67186), +(108166, 2864736617, 1344507586, 263238, 1, 67186), +(108166, 2864736617, 428746933, 263238, 1, 67186), +(108166, 2864736617, 2442913102, 263238, 1, 67186), +(108166, 2864736617, 3465080266, 263238, 3, 67186), +(108166, 2864736617, 3037505077, 263238, 3, 67186), +(108166, 2864736617, 1417785224, 263238, 3, 67186), +(108166, 2864736617, 1344507586, 263233, 1, 67186), +(108166, 2864736617, 428746933, 263233, 3, 67186), +(108166, 2864736617, 2442913102, 263233, 1, 67186), +(108166, 2864736617, 3465080266, 263233, 3, 67186), +(108166, 2864736617, 3037505077, 263233, 3, 67186), +(108166, 2864736617, 1417785224, 263233, 3, 67186), +(108166, 2864736617, 1344507586, 263230, 1, 67186), +(108166, 2864736617, 428746933, 263230, 1, 67186), +(108166, 2864736617, 2442913102, 263230, 1, 67186), +(108166, 2864736617, 3465080266, 263230, 3, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108166, 2864736617, 3037505077, 263230, 3, 67186), +(108166, 2864736617, 1417785224, 263230, 3, 67186), +(108166, 2864736617, 1344507586, 263042, 1, 67186), +(108166, 2864736617, 428746933, 263042, 3, 67186), +(108166, 2864736617, 2442913102, 263042, 1, 67186), +(108166, 2864736617, 3465080266, 263042, 3, 67186), +(108166, 2864736617, 3037505077, 263042, 3, 67186), +(108166, 2864736617, 1417785224, 263042, 3, 67186), +(108166, 2864736617, 1344507586, 263036, 1, 67186), +(108166, 2864736617, 428746933, 263036, 3, 67186), +(108166, 2864736617, 2442913102, 263036, 1, 67186), +(108166, 2864736617, 3465080266, 263036, 3, 67186), +(108166, 2864736617, 3037505077, 263036, 3, 67186), +(108166, 2864736617, 1417785224, 263036, 3, 67186), +(108166, 2864736617, 1344507586, 256683, 1, 67186), +(108166, 2864736617, 428746933, 256683, 1, 67186), +(108166, 2864736617, 2442913102, 256683, 1, 67186), +(108166, 2864736617, 3465080266, 256683, 3, 67186), +(108166, 2864736617, 3037505077, 256683, 3, 67186), +(108166, 2864736617, 1417785224, 256683, 3, 67186), +(108166, 2864736617, 1344507586, 253451, 1, 67186), +(108166, 2864736617, 428746933, 253451, 1, 67186), +(108166, 2864736617, 2442913102, 253451, 1, 67186), +(108166, 2864736617, 3465080266, 253451, 3, 67186), +(108166, 2864736617, 3037505077, 253451, 3, 67186), +(108166, 2864736617, 1417785224, 253451, 3, 67186), +(108166, 2864736617, 1344507586, 251967, 1, 67186), +(108166, 2864736617, 428746933, 251967, 3, 67186), +(108166, 2864736617, 2442913102, 251967, 1, 67186), +(108166, 2864736617, 3465080266, 251967, 3, 67186), +(108166, 2864736617, 3037505077, 251967, 3, 67186), +(108166, 2864736617, 1417785224, 251967, 3, 67186), +(108166, 2864736617, 1344507586, 245938, 1, 67186), +(108166, 2864736617, 428746933, 245938, 1, 67186), +(108166, 2864736617, 2442913102, 245938, 1, 67186), +(108166, 2864736617, 3465080266, 245938, 3, 67186), +(108166, 2864736617, 3037505077, 245938, 3, 67186), +(108166, 2864736617, 1417785224, 245938, 3, 67186), +(108166, 2864736617, 1344507586, 245560, 1, 67186), +(108166, 2864736617, 428746933, 245560, 1, 67186), +(108166, 2864736617, 2442913102, 245560, 1, 67186), +(108166, 2864736617, 3465080266, 245560, 3, 67186), +(108166, 2864736617, 3037505077, 245560, 3, 67186), +(108166, 2864736617, 1417785224, 245560, 3, 67186), +(108166, 2864736617, 1344507586, 241044, 1, 67186), +(108166, 2864736617, 428746933, 241044, 1, 67186), +(108166, 2864736617, 2442913102, 241044, 1, 67186), +(108166, 2864736617, 3465080266, 241044, 3, 67186), +(108166, 2864736617, 3037505077, 241044, 3, 67186), +(108166, 2864736617, 1417785224, 241044, 3, 67186), +(108166, 2864736617, 326190544, 1749, 1, 67186), +(108163, 4078004515, 3322146344, 816369, 1, 67186), +(108163, 4078004515, 3322146344, 770147, 1, 67186), +(108163, 4078004515, 4030871717, 1321667, 1, 67186), +(108162, 2456083544, 908293937, 23199, 1, 67186), +(108162, 2456083544, 908293937, 25249, 1, 67186), +(108162, 2456083544, 908293937, 26684, 1, 67186), +(108162, 2456083544, 908293937, 7518, 1, 67186), +(108162, 2456083544, 908293937, 3325, 1, 67186), +(108162, 2456083544, 908293937, 24055, 1, 67186), +(108162, 2456083544, 908293937, 28712, 1, 67186), +(108162, 2456083544, 3266400455, 42450, 1, 67186), +(108162, 2456083544, 3266400455, 46738, 1, 67186), +(108162, 2456083544, 3232102598, 87407, 1, 67186), +(108162, 2456083544, 3266400455, 49404, 1, 67186), +(108162, 2456083544, 3232102598, 154082, 1, 67186), +(108162, 2456083544, 3266400455, 8259, 1, 67186), +(108162, 2456083544, 3232102598, 54105, 1, 67186), +(108162, 2456083544, 3266400455, 4720, 1, 67186), +(108162, 2456083544, 3232102598, 156662, 1, 67186), +(108162, 2456083544, 3266400455, 44546, 1, 67186), +(108162, 2456083544, 3266400455, 44545, 1, 67186), +(108162, 2456083544, 3266400455, 44544, 1, 67186), +(108162, 2456083544, 3266400455, 44543, 1, 67186), +(108162, 2456083544, 3232102598, 81580, 1, 67186), +(108162, 2456083544, 3266400455, 54691, 1, 67186), +(108162, 2456083544, 3266400455, 54690, 1, 67186), +(108162, 2456083544, 3266400455, 54689, 1, 67186), +(108162, 2456083544, 3266400455, 54688, 1, 67186), +(108162, 2456083544, 3266400455, 54687, 1, 67186), +(108159, 2675693855, 1720692227, 240246, 1, 67186), +(108159, 2675693855, 1720692227, 234909, 1, 67186), +(108157, 2172870104, 3664936999, 32071, 1, 67186), +(108157, 2172870104, 240389885, 9590, 1, 67186), +(108157, 2172870104, 1720692227, 243552, 1, 67186), +(108157, 2172870104, 1720692227, 243551, 1, 67186), +(108157, 2172870104, 1187407512, 1295986, 1, 67186), +(108157, 2172870104, 3776013982, 1295986, 1, 67186), +(108157, 2172870104, 1187407512, 1278156, 1, 67186), +(108157, 2172870104, 3776013982, 1278156, 1, 67186), +(108157, 2172870104, 368401261, 7367, 1, 67186), +(108156, 2228813640, 1163127287, 117896, 3, 67186), +(108152, 586944256, 1720692227, 238873, 1, 67186), +(108151, 4253140893, 312611497, 28865, 2, 67186), +(108151, 4253140893, 312611497, 28864, 2, 67186), +(108151, 4253140893, 312611497, 28863, 2, 67186), +(108151, 4253140893, 312611497, 28862, 2, 67186), +(108151, 4253140893, 1163127287, 110257, 3, 67186), +(108151, 4253140893, 1163127287, 109010, 3, 67186), +(108150, 1608167900, 3538824359, 61887, 1, 67186), +(108150, 1608167900, 3538824359, 61886, 1, 67186), +(108150, 1608167900, 3538824359, 61882, 1, 67186), +(108150, 1608167900, 3538824359, 61881, 1, 67186), +(108150, 1608167900, 3538824359, 61880, 1, 67186), +(108150, 1608167900, 3538824359, 61879, 1, 67186), +(108150, 1608167900, 3538824359, 61878, 1, 67186), +(108150, 1608167900, 3538824359, 61793, 1, 67186), +(108150, 1608167900, 3538824359, 61792, 1, 67186), +(108149, 1336636699, 4030871717, 1321559, 1, 67186), +(108148, 3080817600, 4030871717, 260927, 1, 67186), +(108148, 3080817600, 4030871717, 191087, 1, 67186), +(108148, 3080817600, 4030871717, 191086, 1, 67186), +(108148, 3080817600, 4030871717, 191085, 1, 67186), +(108146, 1491434437, 3388959798, 17707, 1, 67186), +(108146, 1491434437, 1691321978, 1362, 1, 67186), +(108145, 1955805335, 3359787322, 31154, 1, 67186), +(108144, 2389209606, 3495286709, 24475, 1, 67186), +(108144, 2389209606, 3495286709, 24474, 1, 67186), +(108144, 2389209606, 3495286709, 24473, 1, 67186), +(108144, 2389209606, 3495286709, 24472, 1, 67186), +(108144, 2389209606, 3495286709, 24471, 1, 67186), +(108143, 3709866288, 3603976684, 205385, 2, 67186), +(108143, 3709866288, 3603976684, 205384, 1, 67186), +(108142, 1967521720, 1163127287, 128647, 3, 67186), +(108142, 1967521720, 4030871717, 1321497, 1, 67186), +(108140, 665319494, 3322146344, 845416, 1, 67186), +(108140, 665319494, 1187407512, 1298074, 1, 67186), +(108140, 665319494, 3776013982, 1298074, 1, 67186), +(108140, 665319494, 3247720076, 42450, 1, 67186), +(108140, 665319494, 3247720076, 42449, 1, 67186), +(108140, 665319494, 3247720076, 42448, 1, 67186), +(108140, 665319494, 3247720076, 42447, 1, 67186), +(108140, 665319494, 3247720076, 42446, 1, 67186), +(108140, 665319494, 3247720076, 42445, 1, 67186), +(108140, 665319494, 3247720076, 40690, 1, 67186), +(108140, 665319494, 3247720076, 40233, 2, 67186), +(108140, 665319494, 3247720076, 40232, 2, 67186), +(108140, 665319494, 3386291891, 251310, 3, 67186), +(108139, 3592878020, 2120822102, 449655, 1, 67186), +(108139, 3592878020, 2120822102, 449654, 1, 67186), +(108139, 3592878020, 2120822102, 449653, 1, 67186), +(108139, 3592878020, 2120822102, 449652, 1, 67186), +(108139, 3592878020, 2120822102, 421491, 1, 67186), +(108139, 3592878020, 2120822102, 421487, 1, 67186), +(108138, 206991482, 1163127287, 73663, 3, 67186), +(108135, 397765638, 3322146344, 845569, 3, 67186), +(108135, 397765638, 4030871717, 1321797, 3, 67186), +(108135, 397765638, 1187407512, 1298224, 3, 67186), +(108135, 397765638, 3776013982, 1298224, 3, 67186), +(108135, 397765638, 261693969, 96936, 3, 67186), +(108135, 397765638, 986198281, 96936, 1, 67186), +(108135, 397765638, 2202435563, 1303134, 3, 67186), +(108135, 397765638, 2202435563, 1303133, 3, 67186), +(108135, 397765638, 2921112328, 576994, 3, 67186), +(108135, 397765638, 2921112328, 576993, 3, 67186), +(108135, 397765638, 3108775943, 158235, 3, 67186), +(108135, 397765638, 3108775943, 158234, 3, 67186), +(108135, 397765638, 2120822102, 449743, 1, 67186), +(108135, 397765638, 2120822102, 449742, 1, 67186), +(108135, 397765638, 2120822102, 449741, 1, 67186), +(108135, 397765638, 2120822102, 449694, 1, 67186), +(108135, 397765638, 2120822102, 449693, 1, 67186), +(108135, 397765638, 2120822102, 449692, 1, 67186), +(108135, 397765638, 1255424668, 229140, 1, 67186), +(108135, 397765638, 1255424668, 229139, 1, 67186), +(108135, 397765638, 1255424668, 229050, 2, 67186), +(108135, 397765638, 1255424668, 229049, 2, 67186), +(108135, 397765638, 1255424668, 229048, 1, 67186), +(108135, 397765638, 1255424668, 229047, 2, 67186), +(108135, 397765638, 4012104832, 114964, 1, 67186), +(108135, 397765638, 4012104832, 114924, 2, 67186), +(108135, 397765638, 4012104832, 114923, 1, 67186), +(108135, 397765638, 4012104832, 109029, 1, 67186), +(108135, 397765638, 2014779773, 207, 1, 67186), +(108135, 397765638, 2014779773, 206, 1, 67186), +(108135, 397765638, 3538824359, 63263, 1, 67186), +(108135, 397765638, 3538824359, 63249, 2, 67186), +(108135, 397765638, 3538824359, 63097, 1, 67186), +(108134, 3762662168, 3322146344, 843354, 1, 67186), +(108134, 3762662168, 3322146344, 826786, 1, 67186), +(108133, 2675420589, 3322146344, 433001, 1, 67186), +(108133, 2675420589, 3322146344, 96543, 1, 67186), +(108133, 2675420589, 4030871717, 170709, 1, 67186), +(108133, 2675420589, 4030871717, 158092, 1, 67186), +(108133, 2675420589, 4030871717, 154256, 1, 67186), +(108131, 3845277181, 492039028, 50367, 1, 67186), +(108131, 3845277181, 492039028, 49339, 1, 67186), +(108130, 3339136495, 1163127287, 128632, 3, 67186), +(108130, 3339136495, 1163127287, 127316, 3, 67186), +(108130, 3339136495, 1163127287, 116786, 3, 67186), +(108130, 3339136495, 3322146344, 649056, 1, 67186), +(108130, 3339136495, 4030871717, 1051086, 1, 67186), +(108130, 3339136495, 4030871717, 1026943, 1, 67186), +(108130, 3339136495, 1187407512, 390264, 1, 67186), +(108130, 3339136495, 3776013982, 390264, 1, 67186), +(108130, 3339136495, 1187407512, 390260, 1, 67186), +(108130, 3339136495, 3776013982, 390260, 1, 67186), +(108129, 2361158005, 312611497, 28676, 3, 67186), +(108129, 2361158005, 312611497, 28675, 3, 67186), +(108124, 3923076132, 261693969, 95304, 1, 67186), +(108124, 3923076132, 986198281, 95304, 3, 67186), +(108124, 3923076132, 261693969, 95290, 1, 67186), +(108124, 3923076132, 986198281, 95290, 3, 67186), +(108124, 3923076132, 261693969, 95279, 1, 67186), +(108124, 3923076132, 986198281, 95279, 3, 67186), +(108123, 1693269207, 312611497, 28555, 3, 67186), +(108123, 1693269207, 312611497, 28554, 3, 67186), +(108123, 1693269207, 312611497, 27881, 3, 67186), +(108123, 1693269207, 312611497, 27447, 3, 67186), +(108123, 1693269207, 312611497, 27408, 3, 67186), +(108123, 1693269207, 312611497, 27393, 3, 67186), +(108123, 1693269207, 312611497, 27392, 3, 67186), +(108123, 1693269207, 1163127287, 123902, 3, 67186), +(108123, 1693269207, 1163127287, 123070, 3, 67186), +(108123, 1693269207, 1163127287, 123069, 3, 67186), +(108123, 1693269207, 1163127287, 123056, 3, 67186), +(108123, 1693269207, 1163127287, 122929, 3, 67186), +(108123, 1693269207, 1163127287, 121296, 3, 67186), +(108123, 1693269207, 1163127287, 121295, 3, 67186), +(108123, 1693269207, 1163127287, 117716, 3, 67186), +(108114, 1083470827, 1880017466, 313083, 1, 67186), +(108114, 1083470827, 1880017466, 313082, 1, 67186), +(108114, 1083470827, 1880017466, 313081, 1, 67186), +(108113, 1396664077, 2120822102, 449601, 1, 67186), +(108113, 1396664077, 2120822102, 449600, 1, 67186), +(108113, 1396664077, 2120822102, 449599, 1, 67186), +(108113, 1396664077, 2120822102, 449598, 1, 67186), +(108113, 1396664077, 2120822102, 449597, 1, 67186), +(108113, 1396664077, 2120822102, 449596, 1, 67186), +(108113, 1396664077, 2120822102, 449595, 1, 67186), +(108113, 1396664077, 2120822102, 449594, 1, 67186), +(108113, 1396664077, 2120822102, 449593, 1, 67186), +(108113, 1396664077, 2120822102, 449592, 1, 67186), +(108113, 1396664077, 2120822102, 449591, 1, 67186), +(108113, 1396664077, 2120822102, 449590, 1, 67186), +(108113, 1396664077, 2120822102, 449589, 1, 67186), +(108113, 1396664077, 2120822102, 449588, 1, 67186), +(108113, 1396664077, 2120822102, 449587, 1, 67186), +(108113, 1396664077, 2120822102, 449586, 1, 67186), +(108113, 1396664077, 3653642729, 377, 1, 67186), +(108113, 1396664077, 1673391669, 145, 1, 67186), +(108113, 1396664077, 2791084701, 142, 1, 67186), +(108113, 1396664077, 2793276977, 29515, 1, 67186), +(108108, 677416447, 1880017466, 313078, 1, 67186), +(108108, 677416447, 1880017466, 313077, 1, 67186), +(108108, 677416447, 4012104832, 113757, 1, 67186), +(108108, 677416447, 4012104832, 113756, 1, 67186), +(108108, 677416447, 4012104832, 113755, 1, 67186), +(108106, 637431851, 3386943305, 229626, 3, 67186), +(108103, 2738861707, 4030871717, 1026957, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108103, 2738861707, 4030871717, 1026956, 1, 67186), +(108102, 1498070508, 1255424668, 225427, 1, 67186), +(108102, 1498070508, 1255424668, 225426, 1, 67186), +(108102, 1498070508, 1255424668, 223423, 1, 67186), +(108102, 1498070508, 4012104832, 113015, 1, 67186), +(108101, 3460349692, 3386943305, 340484, 1, 67186), +(108101, 3460349692, 3386943305, 340483, 3, 67186), +(108101, 3460349692, 3386943305, 340479, 3, 67186), +(108101, 3460349692, 3386943305, 336398, 3, 67186), +(108101, 3460349692, 3571931810, 43166, 3, 67186), +(108099, 2533072863, 4030871717, 1294472, 1, 67186), +(108098, 3764060116, 2120822102, 416540, 1, 67186), +(108096, 1132154200, 813076512, 206079, 1, 67186), +(108096, 1132154200, 4193483863, 99433, 1, 67186), +(108095, 2152317472, 600565378, 667023, 1, 67186), +(108095, 2152317472, 1870074897, 90974, 1, 67186), +(108095, 2152317472, 3386943305, 350549, 3, 67186), +(108095, 2152317472, 3386291891, 266934, 3, 67186), +(108095, 2152317472, 1408785804, 247638, 2, 67186), +(108095, 2152317472, 1122246768, 247638, 2, 67186), +(108095, 2152317472, 1408785804, 247637, 2, 67186), +(108095, 2152317472, 1122246768, 247637, 2, 67186), +(108095, 2152317472, 1408785804, 247621, 2, 67186), +(108095, 2152317472, 1122246768, 247621, 2, 67186), +(108095, 2152317472, 1408785804, 247620, 2, 67186), +(108095, 2152317472, 1122246768, 247620, 2, 67186), +(108095, 2152317472, 1408785804, 247619, 2, 67186), +(108095, 2152317472, 1122246768, 247619, 2, 67186), +(108095, 2152317472, 1408785804, 247618, 2, 67186), +(108095, 2152317472, 1122246768, 247618, 2, 67186), +(108095, 2152317472, 1408785804, 247617, 2, 67186), +(108095, 2152317472, 1122246768, 247617, 2, 67186), +(108095, 2152317472, 1408785804, 247616, 2, 67186), +(108095, 2152317472, 1122246768, 247616, 2, 67186), +(108095, 2152317472, 1408785804, 247615, 2, 67186), +(108095, 2152317472, 1122246768, 247615, 2, 67186), +(108095, 2152317472, 1408785804, 247614, 2, 67186), +(108095, 2152317472, 1122246768, 247614, 2, 67186), +(108095, 2152317472, 1408785804, 247613, 2, 67186), +(108095, 2152317472, 1122246768, 247613, 2, 67186), +(108095, 2152317472, 1408785804, 247612, 2, 67186), +(108095, 2152317472, 1122246768, 247612, 2, 67186), +(108095, 2152317472, 1408785804, 247611, 2, 67186), +(108095, 2152317472, 1122246768, 247611, 2, 67186), +(108095, 2152317472, 1408785804, 247610, 2, 67186), +(108095, 2152317472, 1122246768, 247610, 2, 67186), +(108095, 2152317472, 1408785804, 247561, 2, 67186), +(108095, 2152317472, 1122246768, 247561, 2, 67186), +(108095, 2152317472, 1408785804, 247560, 2, 67186), +(108095, 2152317472, 1122246768, 247560, 2, 67186), +(108095, 2152317472, 1408785804, 247559, 2, 67186), +(108095, 2152317472, 1122246768, 247559, 2, 67186), +(108095, 2152317472, 1408785804, 247558, 2, 67186), +(108095, 2152317472, 1122246768, 247558, 2, 67186), +(108095, 2152317472, 1408785804, 247555, 2, 67186), +(108095, 2152317472, 1122246768, 247555, 2, 67186), +(108095, 2152317472, 1408785804, 247554, 2, 67186), +(108095, 2152317472, 1122246768, 247554, 2, 67186), +(108095, 2152317472, 1408785804, 247553, 2, 67186), +(108095, 2152317472, 1122246768, 247553, 2, 67186), +(108095, 2152317472, 1408785804, 247552, 2, 67186), +(108095, 2152317472, 1122246768, 247552, 2, 67186), +(108095, 2152317472, 1408785804, 247551, 2, 67186), +(108095, 2152317472, 1122246768, 247551, 2, 67186), +(108095, 2152317472, 1408785804, 247550, 2, 67186), +(108095, 2152317472, 1122246768, 247550, 2, 67186), +(108095, 2152317472, 1408785804, 247549, 2, 67186), +(108095, 2152317472, 1122246768, 247549, 2, 67186), +(108095, 2152317472, 1408785804, 247548, 2, 67186), +(108095, 2152317472, 1122246768, 247548, 2, 67186), +(108095, 2152317472, 1408785804, 247547, 2, 67186), +(108095, 2152317472, 1122246768, 247547, 2, 67186), +(108095, 2152317472, 1408785804, 247546, 2, 67186), +(108095, 2152317472, 1122246768, 247546, 2, 67186), +(108095, 2152317472, 1408785804, 247545, 2, 67186), +(108095, 2152317472, 1122246768, 247545, 2, 67186), +(108095, 2152317472, 1408785804, 247544, 2, 67186), +(108095, 2152317472, 1122246768, 247544, 2, 67186), +(108095, 2152317472, 1408785804, 247543, 2, 67186), +(108095, 2152317472, 1122246768, 247543, 2, 67186), +(108095, 2152317472, 1408785804, 247542, 2, 67186), +(108095, 2152317472, 1122246768, 247542, 2, 67186), +(108095, 2152317472, 1408785804, 247541, 2, 67186), +(108095, 2152317472, 1122246768, 247541, 2, 67186), +(108095, 2152317472, 1408785804, 247540, 2, 67186), +(108095, 2152317472, 1122246768, 247540, 2, 67186), +(108095, 2152317472, 1408785804, 247539, 2, 67186), +(108095, 2152317472, 1122246768, 247539, 2, 67186), +(108095, 2152317472, 1408785804, 247538, 2, 67186), +(108095, 2152317472, 1122246768, 247538, 2, 67186), +(108095, 2152317472, 1408785804, 247537, 2, 67186), +(108095, 2152317472, 1122246768, 247537, 2, 67186), +(108095, 2152317472, 1408785804, 247536, 2, 67186), +(108095, 2152317472, 1122246768, 247536, 2, 67186), +(108095, 2152317472, 1408785804, 247535, 2, 67186), +(108095, 2152317472, 1122246768, 247535, 2, 67186), +(108095, 2152317472, 1408785804, 247534, 2, 67186), +(108095, 2152317472, 1122246768, 247534, 2, 67186), +(108095, 2152317472, 1408785804, 247533, 2, 67186), +(108095, 2152317472, 1122246768, 247533, 2, 67186), +(108095, 2152317472, 1408785804, 247532, 2, 67186), +(108095, 2152317472, 1122246768, 247532, 2, 67186), +(108095, 2152317472, 1408785804, 247531, 2, 67186), +(108095, 2152317472, 1122246768, 247531, 2, 67186), +(108095, 2152317472, 1408785804, 247530, 2, 67186), +(108095, 2152317472, 1122246768, 247530, 2, 67186), +(108095, 2152317472, 1408785804, 247529, 2, 67186), +(108095, 2152317472, 1122246768, 247529, 2, 67186), +(108095, 2152317472, 1408785804, 247528, 2, 67186), +(108095, 2152317472, 1122246768, 247528, 2, 67186), +(108095, 2152317472, 1408785804, 247527, 2, 67186), +(108095, 2152317472, 1122246768, 247527, 2, 67186), +(108095, 2152317472, 1408785804, 247526, 2, 67186), +(108095, 2152317472, 1122246768, 247526, 2, 67186), +(108095, 2152317472, 1408785804, 247525, 2, 67186), +(108095, 2152317472, 1122246768, 247525, 2, 67186), +(108095, 2152317472, 1408785804, 247524, 2, 67186), +(108095, 2152317472, 1122246768, 247524, 2, 67186), +(108095, 2152317472, 1408785804, 247523, 2, 67186), +(108095, 2152317472, 1122246768, 247523, 2, 67186), +(108095, 2152317472, 1408785804, 247522, 2, 67186), +(108095, 2152317472, 1122246768, 247522, 2, 67186), +(108095, 2152317472, 1408785804, 247521, 2, 67186), +(108095, 2152317472, 1122246768, 247521, 2, 67186), +(108095, 2152317472, 1408785804, 247520, 2, 67186), +(108095, 2152317472, 1122246768, 247520, 2, 67186), +(108095, 2152317472, 1408785804, 247519, 2, 67186), +(108095, 2152317472, 1122246768, 247519, 2, 67186), +(108095, 2152317472, 1408785804, 247518, 2, 67186), +(108095, 2152317472, 1122246768, 247518, 2, 67186), +(108095, 2152317472, 1408785804, 247517, 2, 67186), +(108095, 2152317472, 1122246768, 247517, 2, 67186), +(108095, 2152317472, 1408785804, 247516, 2, 67186), +(108095, 2152317472, 1122246768, 247516, 2, 67186), +(108095, 2152317472, 1408785804, 247515, 2, 67186), +(108095, 2152317472, 1122246768, 247515, 2, 67186), +(108095, 2152317472, 1408785804, 247514, 2, 67186), +(108095, 2152317472, 1122246768, 247514, 2, 67186), +(108095, 2152317472, 1408785804, 247513, 2, 67186), +(108095, 2152317472, 1122246768, 247513, 2, 67186), +(108095, 2152317472, 1408785804, 247512, 2, 67186), +(108095, 2152317472, 1122246768, 247512, 2, 67186), +(108095, 2152317472, 1408785804, 247511, 2, 67186), +(108095, 2152317472, 1122246768, 247511, 2, 67186), +(108095, 2152317472, 1408785804, 247510, 2, 67186), +(108095, 2152317472, 1122246768, 247510, 2, 67186), +(108095, 2152317472, 1408785804, 247509, 2, 67186), +(108095, 2152317472, 1122246768, 247509, 2, 67186), +(108095, 2152317472, 1408785804, 247508, 2, 67186), +(108095, 2152317472, 1122246768, 247508, 2, 67186), +(108095, 2152317472, 1408785804, 247507, 2, 67186), +(108095, 2152317472, 1122246768, 247507, 2, 67186), +(108095, 2152317472, 1408785804, 247506, 2, 67186), +(108095, 2152317472, 1122246768, 247506, 2, 67186), +(108095, 2152317472, 1408785804, 247505, 2, 67186), +(108095, 2152317472, 1122246768, 247505, 2, 67186), +(108095, 2152317472, 1408785804, 247504, 2, 67186), +(108095, 2152317472, 1122246768, 247504, 2, 67186), +(108095, 2152317472, 1408785804, 247503, 2, 67186), +(108095, 2152317472, 1122246768, 247503, 2, 67186), +(108095, 2152317472, 1408785804, 247502, 2, 67186), +(108095, 2152317472, 1122246768, 247502, 2, 67186), +(108095, 2152317472, 1408785804, 247501, 2, 67186), +(108095, 2152317472, 1122246768, 247501, 2, 67186), +(108095, 2152317472, 1408785804, 247500, 2, 67186), +(108095, 2152317472, 1122246768, 247500, 2, 67186), +(108095, 2152317472, 1408785804, 247499, 2, 67186), +(108095, 2152317472, 1122246768, 247499, 2, 67186), +(108095, 2152317472, 1408785804, 247498, 2, 67186), +(108095, 2152317472, 1122246768, 247498, 2, 67186), +(108095, 2152317472, 1408785804, 247497, 2, 67186), +(108095, 2152317472, 1122246768, 247497, 2, 67186), +(108095, 2152317472, 1408785804, 247496, 2, 67186), +(108095, 2152317472, 1122246768, 247496, 2, 67186), +(108095, 2152317472, 1408785804, 247495, 2, 67186), +(108095, 2152317472, 1122246768, 247495, 2, 67186), +(108095, 2152317472, 1408785804, 247494, 2, 67186), +(108095, 2152317472, 1122246768, 247494, 2, 67186), +(108095, 2152317472, 1408785804, 247493, 2, 67186), +(108095, 2152317472, 1122246768, 247493, 2, 67186), +(108095, 2152317472, 1408785804, 247492, 2, 67186), +(108095, 2152317472, 1122246768, 247492, 2, 67186), +(108095, 2152317472, 1408785804, 247421, 2, 67186), +(108095, 2152317472, 1122246768, 247421, 2, 67186), +(108095, 2152317472, 1408785804, 247420, 2, 67186), +(108095, 2152317472, 1122246768, 247420, 2, 67186), +(108095, 2152317472, 1408785804, 247419, 2, 67186), +(108095, 2152317472, 1122246768, 247419, 2, 67186), +(108095, 2152317472, 1408785804, 247418, 2, 67186), +(108095, 2152317472, 1122246768, 247418, 2, 67186), +(108095, 2152317472, 1408785804, 247417, 2, 67186), +(108095, 2152317472, 1122246768, 247417, 2, 67186), +(108095, 2152317472, 1408785804, 247416, 2, 67186), +(108095, 2152317472, 1122246768, 247416, 2, 67186), +(108095, 2152317472, 1408785804, 247415, 2, 67186), +(108095, 2152317472, 1122246768, 247415, 2, 67186), +(108095, 2152317472, 1408785804, 247414, 2, 67186), +(108095, 2152317472, 1122246768, 247414, 2, 67186), +(108095, 2152317472, 1408785804, 247413, 2, 67186), +(108095, 2152317472, 1122246768, 247413, 2, 67186), +(108095, 2152317472, 1408785804, 247412, 2, 67186), +(108095, 2152317472, 1122246768, 247412, 2, 67186), +(108095, 2152317472, 1408785804, 247411, 2, 67186), +(108095, 2152317472, 1122246768, 247411, 2, 67186), +(108095, 2152317472, 1408785804, 247410, 2, 67186), +(108095, 2152317472, 1122246768, 247410, 2, 67186), +(108095, 2152317472, 1408785804, 247409, 2, 67186), +(108095, 2152317472, 1122246768, 247409, 2, 67186), +(108095, 2152317472, 1408785804, 247408, 2, 67186), +(108095, 2152317472, 1122246768, 247408, 2, 67186), +(108095, 2152317472, 1408785804, 247407, 2, 67186), +(108095, 2152317472, 1122246768, 247407, 2, 67186), +(108095, 2152317472, 1408785804, 247406, 2, 67186), +(108095, 2152317472, 1122246768, 247406, 2, 67186), +(108095, 2152317472, 1408785804, 247405, 2, 67186), +(108095, 2152317472, 1122246768, 247405, 2, 67186), +(108095, 2152317472, 1408785804, 247404, 2, 67186), +(108095, 2152317472, 1122246768, 247404, 2, 67186), +(108095, 2152317472, 1408785804, 247403, 2, 67186), +(108095, 2152317472, 1122246768, 247403, 2, 67186), +(108095, 2152317472, 1408785804, 247402, 2, 67186), +(108095, 2152317472, 1122246768, 247402, 2, 67186), +(108095, 2152317472, 1408785804, 247401, 2, 67186), +(108095, 2152317472, 1122246768, 247401, 2, 67186), +(108095, 2152317472, 1408785804, 247400, 2, 67186), +(108095, 2152317472, 1122246768, 247400, 2, 67186), +(108095, 2152317472, 1408785804, 247295, 2, 67186), +(108095, 2152317472, 1122246768, 247295, 2, 67186), +(108095, 2152317472, 1408785804, 247294, 2, 67186), +(108095, 2152317472, 1122246768, 247294, 2, 67186), +(108095, 2152317472, 1408785804, 247293, 2, 67186), +(108095, 2152317472, 1122246768, 247293, 2, 67186), +(108095, 2152317472, 1408785804, 247292, 2, 67186), +(108095, 2152317472, 1122246768, 247292, 2, 67186), +(108095, 2152317472, 1408785804, 247291, 2, 67186), +(108095, 2152317472, 1122246768, 247291, 2, 67186), +(108095, 2152317472, 1408785804, 247290, 2, 67186), +(108095, 2152317472, 1122246768, 247290, 2, 67186), +(108095, 2152317472, 1408785804, 247289, 2, 67186), +(108095, 2152317472, 1122246768, 247289, 2, 67186), +(108095, 2152317472, 1408785804, 247288, 2, 67186), +(108095, 2152317472, 1122246768, 247288, 2, 67186), +(108095, 2152317472, 1408785804, 247287, 2, 67186), +(108095, 2152317472, 1122246768, 247287, 2, 67186), +(108095, 2152317472, 1408785804, 247286, 2, 67186), +(108095, 2152317472, 1122246768, 247286, 2, 67186), +(108095, 2152317472, 1408785804, 247285, 2, 67186), +(108095, 2152317472, 1122246768, 247285, 2, 67186), +(108095, 2152317472, 1408785804, 247284, 2, 67186), +(108095, 2152317472, 1122246768, 247284, 2, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108095, 2152317472, 1408785804, 247283, 2, 67186), +(108095, 2152317472, 1122246768, 247283, 2, 67186), +(108095, 2152317472, 1408785804, 247282, 2, 67186), +(108095, 2152317472, 1122246768, 247282, 2, 67186), +(108095, 2152317472, 1408785804, 247281, 2, 67186), +(108095, 2152317472, 1122246768, 247281, 2, 67186), +(108095, 2152317472, 1408785804, 247280, 2, 67186), +(108095, 2152317472, 1122246768, 247280, 2, 67186), +(108095, 2152317472, 1408785804, 247279, 2, 67186), +(108095, 2152317472, 1122246768, 247279, 2, 67186), +(108095, 2152317472, 1408785804, 247278, 2, 67186), +(108095, 2152317472, 1122246768, 247278, 2, 67186), +(108095, 2152317472, 1408785804, 247277, 2, 67186), +(108095, 2152317472, 1122246768, 247277, 2, 67186), +(108095, 2152317472, 1408785804, 247276, 2, 67186), +(108095, 2152317472, 1122246768, 247276, 2, 67186), +(108095, 2152317472, 1408785804, 247275, 2, 67186), +(108095, 2152317472, 1122246768, 247275, 2, 67186), +(108095, 2152317472, 1408785804, 247274, 2, 67186), +(108095, 2152317472, 1122246768, 247274, 2, 67186), +(108095, 2152317472, 1408785804, 247273, 2, 67186), +(108095, 2152317472, 1122246768, 247273, 2, 67186), +(108095, 2152317472, 1408785804, 247272, 2, 67186), +(108095, 2152317472, 1122246768, 247272, 2, 67186), +(108095, 2152317472, 1408785804, 247271, 2, 67186), +(108095, 2152317472, 1122246768, 247271, 2, 67186), +(108095, 2152317472, 1408785804, 247270, 2, 67186), +(108095, 2152317472, 1122246768, 247270, 2, 67186), +(108095, 2152317472, 1408785804, 247269, 2, 67186), +(108095, 2152317472, 1122246768, 247269, 2, 67186), +(108095, 2152317472, 1408785804, 247268, 2, 67186), +(108095, 2152317472, 1122246768, 247268, 2, 67186), +(108095, 2152317472, 1408785804, 247267, 2, 67186), +(108095, 2152317472, 1122246768, 247267, 2, 67186), +(108095, 2152317472, 1408785804, 247266, 2, 67186), +(108095, 2152317472, 1122246768, 247266, 2, 67186), +(108095, 2152317472, 1408785804, 247265, 2, 67186), +(108095, 2152317472, 1122246768, 247265, 2, 67186), +(108095, 2152317472, 1408785804, 247264, 2, 67186), +(108095, 2152317472, 1122246768, 247264, 2, 67186), +(108095, 2152317472, 1408785804, 247263, 2, 67186), +(108095, 2152317472, 1122246768, 247263, 2, 67186), +(108095, 2152317472, 1408785804, 247262, 2, 67186), +(108095, 2152317472, 1122246768, 247262, 2, 67186), +(108095, 2152317472, 1408785804, 247261, 2, 67186), +(108095, 2152317472, 1122246768, 247261, 2, 67186), +(108095, 2152317472, 1408785804, 247260, 2, 67186), +(108095, 2152317472, 1122246768, 247260, 2, 67186), +(108095, 2152317472, 1408785804, 247259, 2, 67186), +(108095, 2152317472, 1122246768, 247259, 2, 67186), +(108095, 2152317472, 1408785804, 247258, 2, 67186), +(108095, 2152317472, 1122246768, 247258, 2, 67186), +(108095, 2152317472, 1408785804, 247257, 2, 67186), +(108095, 2152317472, 1122246768, 247257, 2, 67186), +(108095, 2152317472, 1408785804, 247256, 2, 67186), +(108095, 2152317472, 1122246768, 247256, 2, 67186), +(108095, 2152317472, 1408785804, 247255, 2, 67186), +(108095, 2152317472, 1122246768, 247255, 2, 67186), +(108095, 2152317472, 1408785804, 247254, 2, 67186), +(108095, 2152317472, 1122246768, 247254, 2, 67186), +(108095, 2152317472, 1408785804, 247253, 2, 67186), +(108095, 2152317472, 1122246768, 247253, 2, 67186), +(108095, 2152317472, 1408785804, 247252, 2, 67186), +(108095, 2152317472, 1122246768, 247252, 2, 67186), +(108095, 2152317472, 1408785804, 247199, 2, 67186), +(108095, 2152317472, 1122246768, 247199, 2, 67186), +(108095, 2152317472, 1408785804, 247198, 2, 67186), +(108095, 2152317472, 1122246768, 247198, 2, 67186), +(108095, 2152317472, 1408785804, 247197, 2, 67186), +(108095, 2152317472, 1122246768, 247197, 2, 67186), +(108095, 2152317472, 1408785804, 247196, 2, 67186), +(108095, 2152317472, 1122246768, 247196, 2, 67186), +(108095, 2152317472, 1408785804, 247195, 2, 67186), +(108095, 2152317472, 1122246768, 247195, 2, 67186), +(108095, 2152317472, 1408785804, 247194, 2, 67186), +(108095, 2152317472, 1122246768, 247194, 2, 67186), +(108095, 2152317472, 1408785804, 247193, 2, 67186), +(108095, 2152317472, 1122246768, 247193, 2, 67186), +(108095, 2152317472, 1408785804, 247192, 2, 67186), +(108095, 2152317472, 1122246768, 247192, 2, 67186), +(108095, 2152317472, 1408785804, 247191, 2, 67186), +(108095, 2152317472, 1122246768, 247191, 2, 67186), +(108095, 2152317472, 1408785804, 247190, 2, 67186), +(108095, 2152317472, 1122246768, 247190, 2, 67186), +(108095, 2152317472, 1408785804, 247189, 2, 67186), +(108095, 2152317472, 1122246768, 247189, 2, 67186), +(108095, 2152317472, 1408785804, 247188, 2, 67186), +(108095, 2152317472, 1122246768, 247188, 2, 67186), +(108095, 2152317472, 1408785804, 247187, 2, 67186), +(108095, 2152317472, 1122246768, 247187, 2, 67186), +(108095, 2152317472, 1408785804, 247186, 2, 67186), +(108095, 2152317472, 1122246768, 247186, 2, 67186), +(108095, 2152317472, 1408785804, 247185, 2, 67186), +(108095, 2152317472, 1122246768, 247185, 2, 67186), +(108095, 2152317472, 1408785804, 247184, 2, 67186), +(108095, 2152317472, 1122246768, 247184, 2, 67186), +(108095, 2152317472, 1408785804, 247183, 2, 67186), +(108095, 2152317472, 1122246768, 247183, 2, 67186), +(108095, 2152317472, 1408785804, 247182, 2, 67186), +(108095, 2152317472, 1122246768, 247182, 2, 67186), +(108095, 2152317472, 1408785804, 247181, 2, 67186), +(108095, 2152317472, 1122246768, 247181, 2, 67186), +(108095, 2152317472, 1408785804, 247180, 2, 67186), +(108095, 2152317472, 1122246768, 247180, 2, 67186), +(108095, 2152317472, 1408785804, 247179, 2, 67186), +(108095, 2152317472, 1122246768, 247179, 2, 67186), +(108095, 2152317472, 1408785804, 247178, 2, 67186), +(108095, 2152317472, 1122246768, 247178, 2, 67186), +(108095, 2152317472, 1408785804, 247177, 2, 67186), +(108095, 2152317472, 1122246768, 247177, 2, 67186), +(108095, 2152317472, 1408785804, 247176, 2, 67186), +(108095, 2152317472, 1122246768, 247176, 2, 67186), +(108095, 2152317472, 1408785804, 247175, 2, 67186), +(108095, 2152317472, 1122246768, 247175, 2, 67186), +(108095, 2152317472, 1408785804, 247174, 2, 67186), +(108095, 2152317472, 1122246768, 247174, 2, 67186), +(108095, 2152317472, 1408785804, 247173, 2, 67186), +(108095, 2152317472, 1122246768, 247173, 2, 67186), +(108095, 2152317472, 1408785804, 247172, 2, 67186), +(108095, 2152317472, 1122246768, 247172, 2, 67186), +(108095, 2152317472, 1408785804, 247171, 2, 67186), +(108095, 2152317472, 1122246768, 247171, 2, 67186), +(108095, 2152317472, 1408785804, 247170, 2, 67186), +(108095, 2152317472, 1122246768, 247170, 2, 67186), +(108095, 2152317472, 1408785804, 247169, 2, 67186), +(108095, 2152317472, 1122246768, 247169, 2, 67186), +(108095, 2152317472, 1408785804, 247168, 2, 67186), +(108095, 2152317472, 1122246768, 247168, 2, 67186), +(108095, 2152317472, 1408785804, 247167, 2, 67186), +(108095, 2152317472, 1122246768, 247167, 2, 67186), +(108095, 2152317472, 1408785804, 247166, 2, 67186), +(108095, 2152317472, 1122246768, 247166, 2, 67186), +(108095, 2152317472, 1408785804, 247165, 2, 67186), +(108095, 2152317472, 1122246768, 247165, 2, 67186), +(108095, 2152317472, 1408785804, 247164, 2, 67186), +(108095, 2152317472, 1122246768, 247164, 2, 67186), +(108095, 2152317472, 1408785804, 247163, 2, 67186), +(108095, 2152317472, 1122246768, 247163, 2, 67186), +(108095, 2152317472, 1408785804, 247162, 2, 67186), +(108095, 2152317472, 1122246768, 247162, 2, 67186), +(108095, 2152317472, 1408785804, 247161, 2, 67186), +(108095, 2152317472, 1122246768, 247161, 2, 67186), +(108095, 2152317472, 1408785804, 247160, 2, 67186), +(108095, 2152317472, 1122246768, 247160, 2, 67186), +(108095, 2152317472, 1408785804, 247159, 2, 67186), +(108095, 2152317472, 1122246768, 247159, 2, 67186), +(108095, 2152317472, 1408785804, 247158, 2, 67186), +(108095, 2152317472, 1122246768, 247158, 2, 67186), +(108095, 2152317472, 1408785804, 247157, 2, 67186), +(108095, 2152317472, 1122246768, 247157, 2, 67186), +(108095, 2152317472, 1408785804, 247156, 2, 67186), +(108095, 2152317472, 1122246768, 247156, 2, 67186), +(108095, 2152317472, 1408785804, 247155, 2, 67186), +(108095, 2152317472, 1122246768, 247155, 2, 67186), +(108095, 2152317472, 1408785804, 247154, 2, 67186), +(108095, 2152317472, 1122246768, 247154, 2, 67186), +(108095, 2152317472, 1408785804, 247153, 2, 67186), +(108095, 2152317472, 1122246768, 247153, 2, 67186), +(108095, 2152317472, 1408785804, 247152, 2, 67186), +(108095, 2152317472, 1122246768, 247152, 2, 67186), +(108095, 2152317472, 1408785804, 247001, 2, 67186), +(108095, 2152317472, 1122246768, 247001, 2, 67186), +(108095, 2152317472, 1408785804, 247000, 2, 67186), +(108095, 2152317472, 1122246768, 247000, 2, 67186), +(108095, 2152317472, 1408785804, 246999, 2, 67186), +(108095, 2152317472, 1122246768, 246999, 2, 67186), +(108095, 2152317472, 1408785804, 246998, 2, 67186), +(108095, 2152317472, 1122246768, 246998, 2, 67186), +(108095, 2152317472, 1408785804, 246997, 2, 67186), +(108095, 2152317472, 1122246768, 246997, 2, 67186), +(108095, 2152317472, 1408785804, 246996, 2, 67186), +(108095, 2152317472, 1122246768, 246996, 2, 67186), +(108095, 2152317472, 4014102324, 180853, 2, 67186), +(108095, 2152317472, 4014102324, 180852, 2, 67186), +(108095, 2152317472, 4014102324, 180851, 2, 67186), +(108095, 2152317472, 4014102324, 180850, 2, 67186), +(108095, 2152317472, 4014102324, 180849, 2, 67186), +(108095, 2152317472, 4014102324, 180848, 2, 67186), +(108095, 2152317472, 4014102324, 180847, 2, 67186), +(108095, 2152317472, 4014102324, 180845, 2, 67186), +(108095, 2152317472, 4014102324, 180844, 2, 67186), +(108095, 2152317472, 4014102324, 180842, 2, 67186), +(108095, 2152317472, 4014102324, 180841, 2, 67186), +(108095, 2152317472, 4014102324, 180840, 2, 67186), +(108095, 2152317472, 4014102324, 180839, 2, 67186), +(108095, 2152317472, 4014102324, 180838, 2, 67186), +(108095, 2152317472, 4014102324, 180837, 2, 67186), +(108095, 2152317472, 4014102324, 180836, 2, 67186), +(108095, 2152317472, 4014102324, 180835, 2, 67186), +(108095, 2152317472, 4014102324, 180834, 2, 67186), +(108095, 2152317472, 4014102324, 180833, 2, 67186), +(108095, 2152317472, 4014102324, 180832, 2, 67186), +(108095, 2152317472, 4014102324, 180831, 2, 67186), +(108095, 2152317472, 4014102324, 180830, 2, 67186), +(108095, 2152317472, 4014102324, 180829, 2, 67186), +(108095, 2152317472, 4014102324, 180828, 2, 67186), +(108095, 2152317472, 4014102324, 180827, 2, 67186), +(108095, 2152317472, 4014102324, 180826, 2, 67186), +(108095, 2152317472, 4014102324, 180825, 2, 67186), +(108095, 2152317472, 4014102324, 180824, 2, 67186), +(108095, 2152317472, 4014102324, 180823, 2, 67186), +(108095, 2152317472, 4014102324, 180822, 2, 67186), +(108095, 2152317472, 4014102324, 180821, 2, 67186), +(108095, 2152317472, 4014102324, 180820, 2, 67186), +(108095, 2152317472, 4014102324, 180819, 2, 67186), +(108095, 2152317472, 4014102324, 180818, 2, 67186), +(108095, 2152317472, 4014102324, 180817, 2, 67186), +(108095, 2152317472, 4014102324, 180816, 2, 67186), +(108095, 2152317472, 4014102324, 180815, 2, 67186), +(108095, 2152317472, 4014102324, 180814, 2, 67186), +(108095, 2152317472, 4014102324, 180813, 2, 67186), +(108095, 2152317472, 4014102324, 180812, 2, 67186), +(108095, 2152317472, 4014102324, 180811, 2, 67186), +(108095, 2152317472, 4014102324, 180810, 2, 67186), +(108095, 2152317472, 4014102324, 180809, 2, 67186), +(108095, 2152317472, 4014102324, 180808, 2, 67186), +(108095, 2152317472, 4014102324, 180807, 2, 67186), +(108095, 2152317472, 4014102324, 180806, 2, 67186), +(108095, 2152317472, 4014102324, 180805, 2, 67186), +(108095, 2152317472, 4014102324, 180804, 2, 67186), +(108095, 2152317472, 4014102324, 180803, 2, 67186), +(108095, 2152317472, 4014102324, 180802, 2, 67186), +(108095, 2152317472, 4014102324, 180801, 2, 67186), +(108095, 2152317472, 4014102324, 180800, 2, 67186), +(108095, 2152317472, 4014102324, 180799, 2, 67186), +(108095, 2152317472, 4014102324, 180798, 2, 67186), +(108095, 2152317472, 4014102324, 180797, 2, 67186), +(108095, 2152317472, 4014102324, 180796, 2, 67186), +(108095, 2152317472, 4014102324, 180795, 2, 67186), +(108095, 2152317472, 4014102324, 180794, 2, 67186), +(108095, 2152317472, 4014102324, 180793, 2, 67186), +(108095, 2152317472, 4014102324, 180792, 2, 67186), +(108095, 2152317472, 4014102324, 180791, 2, 67186), +(108095, 2152317472, 4014102324, 180790, 2, 67186), +(108095, 2152317472, 4014102324, 180789, 2, 67186), +(108095, 2152317472, 4014102324, 180788, 2, 67186), +(108095, 2152317472, 4014102324, 180787, 2, 67186), +(108095, 2152317472, 4014102324, 180786, 2, 67186), +(108095, 2152317472, 4014102324, 180785, 2, 67186), +(108095, 2152317472, 4014102324, 180784, 2, 67186), +(108095, 2152317472, 4014102324, 180783, 2, 67186), +(108095, 2152317472, 4014102324, 180782, 2, 67186), +(108095, 2152317472, 4014102324, 180781, 2, 67186), +(108095, 2152317472, 4014102324, 180780, 2, 67186), +(108095, 2152317472, 4014102324, 180779, 2, 67186), +(108095, 2152317472, 4014102324, 180778, 2, 67186), +(108095, 2152317472, 4014102324, 180777, 2, 67186), +(108095, 2152317472, 4014102324, 180776, 2, 67186), +(108095, 2152317472, 4014102324, 180775, 2, 67186), +(108095, 2152317472, 4014102324, 180774, 2, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108095, 2152317472, 4014102324, 180773, 2, 67186), +(108095, 2152317472, 4014102324, 180772, 2, 67186), +(108095, 2152317472, 4014102324, 180771, 2, 67186), +(108095, 2152317472, 4014102324, 180770, 2, 67186), +(108095, 2152317472, 4014102324, 180769, 2, 67186), +(108095, 2152317472, 4014102324, 180768, 2, 67186), +(108095, 2152317472, 4014102324, 180767, 2, 67186), +(108095, 2152317472, 4014102324, 180766, 2, 67186), +(108095, 2152317472, 4014102324, 180765, 2, 67186), +(108095, 2152317472, 4014102324, 180764, 2, 67186), +(108095, 2152317472, 4014102324, 180763, 2, 67186), +(108095, 2152317472, 4014102324, 180762, 2, 67186), +(108095, 2152317472, 4014102324, 180761, 2, 67186), +(108095, 2152317472, 4014102324, 180760, 2, 67186), +(108095, 2152317472, 4014102324, 180759, 2, 67186), +(108095, 2152317472, 4014102324, 180758, 2, 67186), +(108095, 2152317472, 4014102324, 180757, 2, 67186), +(108095, 2152317472, 4014102324, 180756, 2, 67186), +(108095, 2152317472, 4014102324, 180755, 2, 67186), +(108095, 2152317472, 4014102324, 180754, 2, 67186), +(108095, 2152317472, 4014102324, 180752, 2, 67186), +(108095, 2152317472, 4014102324, 180751, 2, 67186), +(108095, 2152317472, 4014102324, 180750, 2, 67186), +(108093, 3994849890, 2948698321, 8207, 1, 67186), +(108093, 3994849890, 3744420815, 8207, 1, 67186), +(108091, 2601067450, 312611497, 27763, 3, 67186), +(108091, 2601067450, 312611497, 27762, 3, 67186), +(108085, 181759322, 3322146344, 831405, 1, 67186), +(108085, 181759322, 3322146344, 831163, 1, 67186), +(108085, 181759322, 3322146344, 830576, 1, 67186), +(108085, 181759322, 3322146344, 828085, 1, 67186), +(108085, 181759322, 3322146344, 827689, 1, 67186), +(108072, 748249501, 1255424668, 223697, 1, 67186), +(108072, 748249501, 1255424668, 223696, 1, 67186), +(108072, 748249501, 1255424668, 223695, 1, 67186), +(108072, 748249501, 1255424668, 223694, 1, 67186), +(108072, 748249501, 1255424668, 223693, 1, 67186), +(108072, 748249501, 1255424668, 219734, 1, 67186), +(108072, 748249501, 4012104832, 112725, 1, 67186), +(108072, 748249501, 4012104832, 112724, 1, 67186), +(108072, 748249501, 4012104832, 112723, 1, 67186), +(108072, 748249501, 4012104832, 112722, 1, 67186), +(108072, 748249501, 4012104832, 112721, 1, 67186), +(108069, 2665558874, 800559195, 8960, 1, 67186), +(108069, 2665558874, 800559195, 8959, 1, 67186), +(108069, 2665558874, 800559195, 8958, 1, 67186), +(108069, 2665558874, 800559195, 8957, 1, 67186), +(108069, 2665558874, 800559195, 8956, 1, 67186), +(108069, 2665558874, 800559195, 8955, 1, 67186), +(108069, 2665558874, 800559195, 8954, 1, 67186), +(108069, 2665558874, 800559195, 8953, 1, 67186), +(108068, 3724241437, 1163127287, 121886, 3, 67186), +(108068, 3724241437, 1163127287, 39075, 3, 67186), +(108068, 3724241437, 1163127287, 38701, 3, 67186), +(108067, 1778809034, 1344507586, 264914, 1, 67186), +(108067, 1778809034, 428746933, 264914, 3, 67186), +(108067, 1778809034, 2442913102, 264914, 1, 67186), +(108067, 1778809034, 3465080266, 264914, 3, 67186), +(108067, 1778809034, 3037505077, 264914, 3, 67186), +(108067, 1778809034, 1417785224, 264914, 3, 67186), +(108066, 1423148993, 3495286709, 24817, 1, 67186), +(108063, 3185200021, 671580526, 155, 1, 67186), +(108063, 3185200021, 3174446591, 6069, 1, 67186), +(108062, 3373796638, 1163127287, 128500, 3, 67186), +(108062, 3373796638, 1163127287, 117785, 3, 67186), +(108060, 1218672181, 1163127287, 124052, 3, 67186), +(108060, 1218672181, 1163127287, 124012, 3, 67186), +(108059, 435665336, 261693969, 93714, 3, 67186), +(108059, 435665336, 986198281, 93714, 1, 67186), +(108059, 435665336, 261693969, 93713, 3, 67186), +(108059, 435665336, 986198281, 93713, 1, 67186), +(108059, 435665336, 261693969, 93712, 3, 67186), +(108059, 435665336, 986198281, 93712, 1, 67186), +(108059, 435665336, 261693969, 93711, 3, 67186), +(108059, 435665336, 986198281, 93711, 1, 67186), +(108059, 435665336, 261693969, 93710, 3, 67186), +(108059, 435665336, 986198281, 93710, 1, 67186), +(108059, 435665336, 261693969, 93709, 3, 67186), +(108059, 435665336, 986198281, 93709, 1, 67186), +(108059, 435665336, 261693969, 93708, 3, 67186), +(108059, 435665336, 986198281, 93708, 1, 67186), +(108059, 435665336, 261693969, 93707, 3, 67186), +(108059, 435665336, 986198281, 93707, 1, 67186), +(108059, 435665336, 261693969, 93706, 3, 67186), +(108059, 435665336, 986198281, 93706, 1, 67186), +(108059, 435665336, 261693969, 93705, 3, 67186), +(108059, 435665336, 986198281, 93705, 1, 67186), +(108059, 435665336, 261693969, 93704, 3, 67186), +(108059, 435665336, 986198281, 93704, 1, 67186), +(108059, 435665336, 261693969, 93703, 3, 67186), +(108059, 435665336, 986198281, 93703, 1, 67186), +(108059, 435665336, 261693969, 93702, 3, 67186), +(108059, 435665336, 986198281, 93702, 1, 67186), +(108059, 435665336, 261693969, 93701, 3, 67186), +(108059, 435665336, 986198281, 93701, 1, 67186), +(108059, 435665336, 261693969, 93700, 3, 67186), +(108059, 435665336, 986198281, 93700, 1, 67186), +(108059, 435665336, 261693969, 93699, 3, 67186), +(108059, 435665336, 986198281, 93699, 1, 67186), +(108059, 435665336, 261693969, 93698, 3, 67186), +(108059, 435665336, 986198281, 93698, 1, 67186), +(108059, 435665336, 261693969, 93697, 3, 67186), +(108059, 435665336, 986198281, 93697, 1, 67186), +(108059, 435665336, 261693969, 93696, 3, 67186), +(108059, 435665336, 986198281, 93696, 1, 67186), +(108059, 435665336, 261693969, 93695, 3, 67186), +(108059, 435665336, 986198281, 93695, 1, 67186), +(108059, 435665336, 261693969, 93694, 3, 67186), +(108059, 435665336, 986198281, 93694, 1, 67186), +(108059, 435665336, 261693969, 93693, 3, 67186), +(108059, 435665336, 986198281, 93693, 1, 67186), +(108059, 435665336, 261693969, 93692, 3, 67186), +(108059, 435665336, 986198281, 93692, 1, 67186), +(108059, 435665336, 261693969, 93691, 3, 67186), +(108059, 435665336, 986198281, 93691, 1, 67186), +(108059, 435665336, 261693969, 93690, 3, 67186), +(108059, 435665336, 986198281, 93690, 1, 67186), +(108058, 1524901049, 3322146344, 844775, 1, 67186), +(108058, 1524901049, 3322146344, 123954, 1, 67186), +(108058, 1524901049, 4030871717, 1320656, 1, 67186), +(108058, 1524901049, 4030871717, 206265, 1, 67186), +(108058, 1524901049, 1187407512, 1297413, 1, 67186), +(108058, 1524901049, 3776013982, 1297413, 1, 67186), +(108058, 1524901049, 1187407512, 149981, 1, 67186), +(108058, 1524901049, 3776013982, 149981, 1, 67186), +(108057, 2076581991, 2523372402, 16090, 1, 67186), +(108057, 2076581991, 2523372402, 16088, 1, 67186), +(108056, 3773544469, 3386943305, 347231, 3, 67186), +(108056, 3773544469, 3386943305, 345843, 3, 67186), +(108056, 3773544469, 3386943305, 345583, 3, 67186), +(108056, 3773544469, 3386943305, 343989, 3, 67186), +(108056, 3773544469, 3386943305, 343564, 3, 67186), +(108056, 3773544469, 3386943305, 342439, 3, 67186), +(108056, 3773544469, 3386943305, 342187, 3, 67186), +(108056, 3773544469, 3386943305, 342125, 3, 67186), +(108056, 3773544469, 3386943305, 341945, 3, 67186), +(108056, 3773544469, 3386943305, 340962, 3, 67186), +(108056, 3773544469, 3386943305, 340958, 3, 67186), +(108056, 3773544469, 3386943305, 340416, 3, 67186), +(108056, 3773544469, 3386943305, 340414, 3, 67186), +(108056, 3773544469, 3386943305, 340413, 3, 67186), +(108056, 3773544469, 3386943305, 339649, 3, 67186), +(108056, 3773544469, 3386943305, 339355, 3, 67186), +(108056, 3773544469, 3386943305, 336425, 3, 67186), +(108056, 3773544469, 3386943305, 336418, 3, 67186), +(108056, 3773544469, 3386943305, 336417, 3, 67186), +(108056, 3773544469, 3386943305, 335663, 3, 67186), +(108056, 3773544469, 3386943305, 333449, 3, 67186), +(108056, 3773544469, 3386943305, 333189, 3, 67186), +(108056, 3773544469, 3386943305, 332247, 3, 67186), +(108056, 3773544469, 3386943305, 330635, 3, 67186), +(108056, 3773544469, 3386291891, 259259, 3, 67186), +(108054, 1664971092, 3322146344, 820954, 1, 67186), +(108054, 1664971092, 3322146344, 820953, 1, 67186), +(108054, 1664971092, 3322146344, 820950, 1, 67186), +(108054, 1664971092, 3322146344, 820949, 1, 67186), +(108054, 1664971092, 3322146344, 820941, 1, 67186), +(108054, 1664971092, 3322146344, 820940, 1, 67186), +(108052, 1095508793, 3330775162, 1897, 1, 67186), +(108052, 1095508793, 3330775162, 1896, 1, 67186), +(108052, 1095508793, 3330775162, 1895, 1, 67186), +(108052, 1095508793, 3330775162, 1894, 1, 67186), +(108052, 1095508793, 3330775162, 1893, 1, 67186), +(108052, 1095508793, 3330775162, 1892, 1, 67186), +(108052, 1095508793, 2120822102, 449169, 1, 67186), +(108052, 1095508793, 2120822102, 449168, 1, 67186), +(108052, 1095508793, 2120822102, 449167, 1, 67186), +(108052, 1095508793, 1255424668, 224860, 2, 67186), +(108052, 1095508793, 1255424668, 224859, 2, 67186), +(108052, 1095508793, 1255424668, 224858, 2, 67186), +(108052, 1095508793, 4012104832, 113465, 1, 67186), +(108048, 3744907539, 4033975491, 615947, 1, 67186), +(108045, 750694106, 3386943305, 344481, 3, 67186), +(108045, 750694106, 3386943305, 343526, 3, 67186), +(108044, 2178393299, 800559195, 9182, 2, 67186), +(108044, 2178393299, 3603976684, 206050, 1, 67186), +(108044, 2178393299, 3603976684, 206049, 1, 67186), +(108044, 2178393299, 3603976684, 206048, 1, 67186), +(108044, 2178393299, 3603976684, 206047, 1, 67186), +(108044, 2178393299, 3603976684, 206046, 1, 67186), +(108044, 2178393299, 3603976684, 204884, 2, 67186), +(108044, 2178393299, 3603976684, 204883, 2, 67186), +(108044, 2178393299, 3603976684, 204882, 2, 67186), +(108044, 2178393299, 3603976684, 204881, 2, 67186), +(108044, 2178393299, 3603976684, 204880, 2, 67186), +(108044, 2178393299, 1746734909, 62523, 2, 67186), +(108044, 2178393299, 1746734909, 62522, 2, 67186), +(108044, 2178393299, 1746734909, 62521, 2, 67186), +(108044, 2178393299, 1746734909, 62520, 2, 67186), +(108044, 2178393299, 1746734909, 62519, 2, 67186), +(108042, 762220026, 3108775943, 155979, 1, 67186), +(108038, 3174457420, 2533050585, 1552, 1, 67186), +(108038, 3174457420, 2930840720, 5104, 1, 67186), +(108038, 3174457420, 2930840720, 5103, 1, 67186), +(108038, 3174457420, 2930840720, 5102, 1, 67186), +(108038, 3174457420, 21457424, 1575, 1, 67186), +(108038, 3174457420, 2524150337, 2832, 4, 67186), +(108036, 780766096, 3072882582, 54147, 1, 67186), +(108036, 780766096, 2381039112, 7763, 1, 67186), +(108036, 780766096, 2381039112, 7762, 1, 67186), +(108035, 1443506020, 3855640965, 5850, 1, 67186), +(108035, 1443506020, 3855640965, 5849, 1, 67186), +(108035, 1443506020, 3855640965, 5848, 1, 67186), +(108035, 1443506020, 3855640965, 5847, 1, 67186), +(108035, 1443506020, 3855640965, 5846, 1, 67186), +(108035, 1443506020, 3855640965, 5845, 1, 67186), +(108035, 1443506020, 3855640965, 5844, 1, 67186), +(108035, 1443506020, 3855640965, 5843, 1, 67186), +(108035, 1443506020, 3855640965, 5842, 1, 67186), +(108034, 3397972823, 312611497, 28242, 3, 67186), +(108034, 3397972823, 312611497, 28241, 3, 67186), +(108034, 3397972823, 312611497, 27934, 3, 67186), +(108034, 3397972823, 312611497, 27933, 3, 67186), +(108034, 3397972823, 1163127287, 124565, 3, 67186), +(108034, 3397972823, 1163127287, 120111, 3, 67186), +(108034, 3397972823, 1163127287, 118141, 3, 67186), +(108034, 3397972823, 1163127287, 118108, 3, 67186), +(108034, 3397972823, 1163127287, 116921, 3, 67186), +(108034, 3397972823, 3322146344, 832619, 1, 67186), +(108034, 3397972823, 3322146344, 825025, 1, 67186), +(108034, 3397972823, 4030871717, 1308103, 1, 67186), +(108034, 3397972823, 4030871717, 1288411, 1, 67186), +(108034, 3397972823, 4030871717, 1288396, 1, 67186), +(108034, 3397972823, 3386943305, 341302, 3, 67186), +(108034, 3397972823, 3386943305, 341053, 3, 67186), +(108034, 3397972823, 3386943305, 341051, 3, 67186), +(108034, 3397972823, 3386291891, 261963, 3, 67186), +(108033, 2873715545, 492039028, 50526, 1, 67186), +(108033, 2873715545, 492039028, 48956, 1, 67186), +(108033, 2873715545, 492039028, 48950, 1, 67186), +(108033, 2873715545, 492039028, 47336, 1, 67186), +(108033, 2873715545, 492039028, 47211, 1, 67186), +(108033, 2873715545, 666345498, 513834, 1, 67186), +(108033, 2873715545, 4033975491, 620445, 1, 67186), +(108033, 2873715545, 1181150530, 753105, 1, 67186), +(108033, 2873715545, 1181150530, 753104, 1, 67186), +(108033, 2873715545, 4102286043, 266284, 1, 67186), +(108033, 2873715545, 3425193231, 547256, 1, 67186), +(108033, 2873715545, 3425193231, 547255, 1, 67186), +(108033, 2873715545, 3425193231, 547254, 1, 67186), +(108033, 2873715545, 4146370265, 182748, 1, 67186), +(108033, 2873715545, 2120822102, 446905, 2, 67186), +(108033, 2873715545, 2120822102, 444989, 1, 67186), +(108033, 2873715545, 2120822102, 442229, 1, 67186), +(108033, 2873715545, 600565378, 665079, 2, 67186), +(108033, 2873715545, 600565378, 665078, 2, 67186), +(108033, 2873715545, 600565378, 665075, 2, 67186), +(108033, 2873715545, 1870074897, 89911, 2, 67186), +(108033, 2873715545, 1870074897, 89910, 2, 67186), +(108033, 2873715545, 1870074897, 89909, 2, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108033, 2873715545, 3386943305, 349443, 2, 67186), +(108033, 2873715545, 3386943305, 349442, 2, 67186), +(108033, 2873715545, 3386943305, 349440, 2, 67186), +(108033, 2873715545, 3386291891, 265873, 2, 67186), +(108033, 2873715545, 3386291891, 265872, 2, 67186), +(108033, 2873715545, 3386291891, 265870, 2, 67186), +(108032, 209824392, 261693969, 93891, 3, 67186), +(108032, 209824392, 986198281, 93891, 1, 67186), +(108031, 205607501, 1408785804, 249390, 1, 67186), +(108031, 205607501, 1122246768, 249390, 1, 67186), +(108031, 205607501, 1408785804, 249389, 1, 67186), +(108031, 205607501, 1122246768, 249389, 1, 67186), +(108031, 205607501, 1408785804, 249388, 1, 67186), +(108031, 205607501, 1122246768, 249388, 1, 67186), +(108031, 205607501, 1408785804, 249387, 1, 67186), +(108031, 205607501, 1122246768, 249387, 1, 67186), +(108031, 205607501, 1408785804, 249386, 1, 67186), +(108031, 205607501, 1122246768, 249386, 1, 67186), +(108031, 205607501, 1408785804, 249385, 1, 67186), +(108031, 205607501, 1122246768, 249385, 1, 67186), +(108031, 205607501, 4014102324, 181600, 1, 67186), +(108030, 1661620086, 4030871717, 1317304, 1, 67186), +(108030, 1661620086, 4030871717, 1317303, 1, 67186), +(108030, 1661620086, 4030871717, 1285926, 1, 67186), +(108030, 1661620086, 4030871717, 1285925, 1, 67186), +(108030, 1661620086, 4030871717, 1283220, 1, 67186), +(108030, 1661620086, 4030871717, 1266878, 1, 67186), +(108030, 1661620086, 4030871717, 1266354, 1, 67186), +(108030, 1661620086, 4030871717, 1265430, 1, 67186), +(108030, 1661620086, 4030871717, 1264885, 1, 67186), +(108030, 1661620086, 4030871717, 1264704, 1, 67186), +(108030, 1661620086, 4030871717, 1264673, 1, 67186), +(108030, 1661620086, 4030871717, 1264658, 1, 67186), +(108030, 1661620086, 4030871717, 1210529, 1, 67186), +(108030, 1661620086, 4030871717, 1031561, 1, 67186), +(108030, 1661620086, 4030871717, 623125, 1, 67186), +(108030, 1661620086, 4030871717, 191140, 1, 67186), +(108030, 1661620086, 4030871717, 191139, 1, 67186), +(108029, 2548206414, 813076512, 204762, 1, 67186), +(108029, 2548206414, 4030871717, 1317268, 1, 67186), +(108029, 2548206414, 4030871717, 1317267, 1, 67186), +(108029, 2548206414, 4030871717, 1317259, 1, 67186), +(108029, 2548206414, 4030871717, 1317253, 1, 67186), +(108029, 2548206414, 4030871717, 1280836, 1, 67186), +(108029, 2548206414, 4030871717, 1266631, 1, 67186), +(108029, 2548206414, 4030871717, 1266346, 1, 67186), +(108029, 2548206414, 4030871717, 1266345, 1, 67186), +(108029, 2548206414, 4030871717, 1264720, 1, 67186), +(108029, 2548206414, 4030871717, 1263763, 1, 67186), +(108029, 2548206414, 4030871717, 1247641, 1, 67186), +(108029, 2548206414, 4030871717, 1026102, 1, 67186), +(108029, 2548206414, 4030871717, 68093, 1, 67186), +(108028, 2384482260, 4033975491, 622091, 1, 67186), +(108028, 2384482260, 4033975491, 622090, 2, 67186), +(108028, 2384482260, 4033975491, 622089, 2, 67186), +(108028, 2384482260, 4033975491, 622088, 2, 67186), +(108028, 2384482260, 4033975491, 622087, 2, 67186), +(108028, 2384482260, 4033975491, 622081, 1, 67186), +(108028, 2384482260, 4033975491, 622079, 1, 67186), +(108028, 2384482260, 4033975491, 622078, 1, 67186), +(108028, 2384482260, 4033975491, 622077, 1, 67186), +(108028, 2384482260, 4033975491, 588487, 1, 67186), +(108028, 2384482260, 1181150530, 756006, 1, 67186), +(108028, 2384482260, 1181150530, 756005, 2, 67186), +(108028, 2384482260, 1181150530, 756003, 2, 67186), +(108028, 2384482260, 1181150530, 756002, 2, 67186), +(108028, 2384482260, 1181150530, 756001, 2, 67186), +(108028, 2384482260, 1181150530, 755995, 1, 67186), +(108028, 2384482260, 1181150530, 755994, 1, 67186), +(108028, 2384482260, 1181150530, 755992, 1, 67186), +(108028, 2384482260, 1181150530, 755991, 1, 67186), +(108028, 2384482260, 1181150530, 755990, 1, 67186), +(108028, 2384482260, 1181150530, 755989, 1, 67186), +(108028, 2384482260, 1181150530, 755988, 1, 67186), +(108028, 2384482260, 4102286043, 267429, 1, 67186), +(108028, 2384482260, 4102286043, 267427, 1, 67186), +(108028, 2384482260, 4102286043, 267426, 1, 67186), +(108028, 2384482260, 3425193231, 548452, 1, 67186), +(108028, 2384482260, 3425193231, 548451, 1, 67186), +(108028, 2384482260, 3425193231, 548450, 1, 67186), +(108028, 2384482260, 3425193231, 548449, 1, 67186), +(108028, 2384482260, 3425193231, 533963, 1, 67186), +(108028, 2384482260, 3425193231, 503686, 1, 67186), +(108028, 2384482260, 3425193231, 503500, 1, 67186), +(108028, 2384482260, 48336690, 55914, 1, 67186), +(108028, 2384482260, 48336690, 55913, 1, 67186), +(108028, 2384482260, 48336690, 55912, 1, 67186), +(108028, 2384482260, 4146370265, 183512, 1, 67186), +(108028, 2384482260, 4146370265, 183511, 1, 67186), +(108028, 2384482260, 4146370265, 161173, 1, 67186), +(108028, 2384482260, 4146370265, 161066, 1, 67186), +(108027, 3546507872, 3764045193, 8555, 1, 67186), +(108027, 3546507872, 3764045193, 8554, 1, 67186), +(108026, 380077572, 312611497, 17327, 3, 67186), +(108026, 380077572, 312611497, 17326, 3, 67186), +(108025, 775964764, 312611497, 26981, 3, 67186), +(108025, 775964764, 312611497, 26980, 3, 67186), +(108025, 775964764, 1163127287, 72007, 3, 67186), +(108025, 775964764, 3322146344, 803588, 1, 67186), +(108025, 775964764, 4030871717, 1252830, 1, 67186), +(108024, 2392044510, 3322146344, 774010, 1, 67186), +(108024, 2392044510, 3322146344, 759555, 1, 67186), +(108024, 2392044510, 3322146344, 700456, 1, 67186), +(108024, 2392044510, 3322146344, 173456, 1, 67186), +(108024, 2392044510, 3322146344, 87208, 1, 67186), +(108024, 2392044510, 3386943305, 187661, 3, 67186), +(108023, 815477379, 312611497, 28282, 2, 67186), +(108023, 815477379, 312611497, 28281, 2, 67186), +(108023, 815477379, 1163127287, 121343, 3, 67186), +(108022, 1659102496, 3322146344, 793688, 1, 67186), +(108021, 295698079, 3146089301, 11605, 1, 67186), +(108021, 295698079, 3146089301, 11604, 1, 67186), +(108021, 295698079, 3146089301, 11603, 1, 67186), +(108021, 295698079, 3146089301, 11602, 1, 67186), +(108021, 295698079, 3146089301, 11601, 1, 67186), +(108021, 295698079, 3146089301, 11600, 1, 67186), +(108021, 295698079, 3146089301, 11547, 1, 67186), +(108021, 295698079, 3146089301, 11546, 1, 67186), +(108021, 295698079, 3146089301, 11541, 1, 67186), +(108021, 295698079, 3146089301, 11540, 1, 67186), +(108021, 295698079, 3146089301, 11539, 1, 67186), +(108021, 295698079, 3146089301, 11533, 1, 67186), +(108021, 295698079, 3146089301, 11029, 1, 67186), +(108021, 295698079, 3146089301, 11028, 1, 67186), +(108021, 295698079, 3146089301, 11027, 1, 67186), +(108021, 295698079, 3146089301, 11026, 1, 67186), +(108021, 295698079, 1876974313, 106105, 1, 67186), +(108021, 295698079, 1876974313, 106104, 1, 67186), +(108021, 295698079, 1876974313, 106103, 1, 67186), +(108021, 295698079, 1876974313, 106101, 1, 67186), +(108021, 295698079, 1876974313, 106099, 1, 67186), +(108021, 295698079, 1876974313, 106098, 1, 67186), +(108021, 295698079, 1876974313, 106097, 1, 67186), +(108021, 295698079, 1876974313, 106096, 1, 67186), +(108021, 295698079, 1876974313, 106095, 1, 67186), +(108021, 295698079, 1876974313, 106045, 1, 67186), +(108021, 295698079, 1876974313, 106043, 1, 67186), +(108021, 295698079, 1876974313, 106042, 1, 67186), +(108021, 295698079, 1876974313, 106041, 1, 67186), +(108021, 295698079, 1876974313, 106040, 1, 67186), +(108019, 2153015603, 600565378, 664106, 1, 67186), +(108019, 2153015603, 600565378, 613522, 2, 67186), +(108019, 2153015603, 3386291891, 246605, 3, 67186), +(108018, 3693389828, 1163127287, 122543, 3, 67186), +(108018, 3693389828, 2120822102, 445905, 2, 67186), +(108018, 3693389828, 2120822102, 445883, 2, 67186), +(108018, 3693389828, 2120822102, 445848, 2, 67186), +(108017, 892139344, 1163127287, 77038, 3, 67186), +(108017, 892139344, 1163127287, 39484, 3, 67186), +(108016, 2505506501, 261693969, 92809, 3, 67186), +(108016, 2505506501, 986198281, 92809, 1, 67186), +(108016, 2505506501, 261693969, 92808, 3, 67186), +(108016, 2505506501, 986198281, 92808, 1, 67186), +(108016, 2505506501, 261693969, 92807, 3, 67186), +(108016, 2505506501, 986198281, 92807, 1, 67186), +(108016, 2505506501, 261693969, 92806, 3, 67186), +(108016, 2505506501, 986198281, 92806, 1, 67186), +(108016, 2505506501, 261693969, 92805, 3, 67186), +(108016, 2505506501, 986198281, 92805, 1, 67186), +(108016, 2505506501, 261693969, 92804, 3, 67186), +(108016, 2505506501, 986198281, 92804, 1, 67186), +(108016, 2505506501, 261693969, 92803, 3, 67186), +(108016, 2505506501, 986198281, 92803, 1, 67186), +(108016, 2505506501, 261693969, 92801, 3, 67186), +(108016, 2505506501, 986198281, 92801, 1, 67186), +(108016, 2505506501, 261693969, 92800, 3, 67186), +(108016, 2505506501, 986198281, 92800, 1, 67186), +(108016, 2505506501, 261693969, 92799, 3, 67186), +(108016, 2505506501, 986198281, 92799, 1, 67186), +(108016, 2505506501, 261693969, 92798, 3, 67186), +(108016, 2505506501, 986198281, 92798, 1, 67186), +(108016, 2505506501, 261693969, 92797, 3, 67186), +(108016, 2505506501, 986198281, 92797, 1, 67186), +(108016, 2505506501, 261693969, 92796, 3, 67186), +(108016, 2505506501, 986198281, 92796, 1, 67186), +(108016, 2505506501, 261693969, 92795, 3, 67186), +(108016, 2505506501, 986198281, 92795, 1, 67186), +(108016, 2505506501, 261693969, 92794, 3, 67186), +(108016, 2505506501, 986198281, 92794, 1, 67186), +(108016, 2505506501, 261693969, 92793, 3, 67186), +(108016, 2505506501, 986198281, 92793, 1, 67186), +(108016, 2505506501, 261693969, 92792, 3, 67186), +(108016, 2505506501, 986198281, 92792, 1, 67186), +(108016, 2505506501, 261693969, 92791, 3, 67186), +(108016, 2505506501, 986198281, 92791, 1, 67186), +(108016, 2505506501, 261693969, 92790, 3, 67186), +(108016, 2505506501, 986198281, 92790, 1, 67186), +(108016, 2505506501, 261693969, 92789, 3, 67186), +(108016, 2505506501, 986198281, 92789, 1, 67186), +(108016, 2505506501, 261693969, 92788, 3, 67186), +(108016, 2505506501, 986198281, 92788, 1, 67186), +(108016, 2505506501, 261693969, 92787, 3, 67186), +(108016, 2505506501, 986198281, 92787, 1, 67186), +(108016, 2505506501, 261693969, 92786, 3, 67186), +(108016, 2505506501, 986198281, 92786, 1, 67186), +(108016, 2505506501, 261693969, 92785, 3, 67186), +(108016, 2505506501, 986198281, 92785, 1, 67186), +(108016, 2505506501, 261693969, 92784, 3, 67186), +(108016, 2505506501, 986198281, 92784, 1, 67186), +(108016, 2505506501, 261693969, 92783, 3, 67186), +(108016, 2505506501, 986198281, 92783, 1, 67186), +(108016, 2505506501, 261693969, 92782, 3, 67186), +(108016, 2505506501, 986198281, 92782, 1, 67186), +(108016, 2505506501, 261693969, 92781, 3, 67186), +(108016, 2505506501, 986198281, 92781, 1, 67186), +(108016, 2505506501, 261693969, 92780, 3, 67186), +(108016, 2505506501, 986198281, 92780, 1, 67186), +(108016, 2505506501, 261693969, 92779, 3, 67186), +(108016, 2505506501, 986198281, 92779, 1, 67186), +(108016, 2505506501, 261693969, 92778, 3, 67186), +(108016, 2505506501, 986198281, 92778, 1, 67186), +(108016, 2505506501, 261693969, 92777, 3, 67186), +(108016, 2505506501, 986198281, 92777, 1, 67186), +(108016, 2505506501, 261693969, 92776, 3, 67186), +(108016, 2505506501, 986198281, 92776, 1, 67186), +(108016, 2505506501, 261693969, 92775, 3, 67186), +(108016, 2505506501, 986198281, 92775, 1, 67186), +(108016, 2505506501, 261693969, 92774, 3, 67186), +(108016, 2505506501, 986198281, 92774, 1, 67186), +(108016, 2505506501, 261693969, 92773, 3, 67186), +(108016, 2505506501, 986198281, 92773, 1, 67186), +(108016, 2505506501, 261693969, 92772, 3, 67186), +(108016, 2505506501, 986198281, 92772, 1, 67186), +(108016, 2505506501, 261693969, 92771, 3, 67186), +(108016, 2505506501, 986198281, 92771, 1, 67186), +(108016, 2505506501, 261693969, 92770, 3, 67186), +(108016, 2505506501, 986198281, 92770, 1, 67186), +(108016, 2505506501, 261693969, 92769, 3, 67186), +(108016, 2505506501, 986198281, 92769, 1, 67186), +(108016, 2505506501, 261693969, 92768, 3, 67186), +(108016, 2505506501, 986198281, 92768, 1, 67186), +(108016, 2505506501, 261693969, 92767, 3, 67186), +(108016, 2505506501, 986198281, 92767, 1, 67186), +(108016, 2505506501, 261693969, 92766, 3, 67186), +(108016, 2505506501, 986198281, 92766, 1, 67186), +(108016, 2505506501, 261693969, 92765, 3, 67186), +(108016, 2505506501, 986198281, 92765, 1, 67186), +(108016, 2505506501, 261693969, 92764, 3, 67186), +(108016, 2505506501, 986198281, 92764, 1, 67186), +(108016, 2505506501, 261693969, 92763, 3, 67186), +(108016, 2505506501, 986198281, 92763, 1, 67186), +(108016, 2505506501, 261693969, 92762, 3, 67186), +(108016, 2505506501, 986198281, 92762, 1, 67186), +(108016, 2505506501, 261693969, 92761, 3, 67186), +(108016, 2505506501, 986198281, 92761, 1, 67186), +(108016, 2505506501, 261693969, 92760, 3, 67186), +(108016, 2505506501, 986198281, 92760, 1, 67186), +(108016, 2505506501, 261693969, 92759, 3, 67186), +(108016, 2505506501, 986198281, 92759, 1, 67186), +(108016, 2505506501, 261693969, 92758, 3, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(108016, 2505506501, 986198281, 92758, 1, 67186), +(108016, 2505506501, 261693969, 92756, 3, 67186), +(108016, 2505506501, 986198281, 92756, 1, 67186), +(108016, 2505506501, 261693969, 92093, 3, 67186), +(108016, 2505506501, 986198281, 92093, 1, 67186), +(108016, 2505506501, 261693969, 92092, 3, 67186), +(108016, 2505506501, 986198281, 92092, 1, 67186), +(108016, 2505506501, 261693969, 92091, 3, 67186), +(108016, 2505506501, 986198281, 92091, 1, 67186), +(108016, 2505506501, 261693969, 92090, 3, 67186), +(108016, 2505506501, 986198281, 92090, 1, 67186), +(108016, 2505506501, 261693969, 92089, 3, 67186), +(108016, 2505506501, 986198281, 92089, 1, 67186), +(108016, 2505506501, 261693969, 92088, 3, 67186), +(108016, 2505506501, 986198281, 92088, 1, 67186), +(108016, 2505506501, 261693969, 92087, 3, 67186), +(108016, 2505506501, 986198281, 92087, 1, 67186), +(108015, 413127874, 1163127287, 127975, 3, 67186), +(108014, 3147190056, 326190544, 14433, 1, 67186), +(108014, 3147190056, 326190544, 14432, 1, 67186), +(108013, 3650001394, 1187407512, 1289789, 1, 67186), +(108013, 3650001394, 3776013982, 1289789, 1, 67186), +(108013, 3650001394, 1187407512, 1283168, 1, 67186), +(108013, 3650001394, 3776013982, 1283168, 1, 67186), +(108013, 3650001394, 1187407512, 1282778, 1, 67186), +(108013, 3650001394, 3776013982, 1282778, 1, 67186), +(108013, 3650001394, 1187407512, 1264876, 1, 67186), +(108013, 3650001394, 3776013982, 1264876, 1, 67186), +(108013, 3650001394, 1187407512, 1255629, 1, 67186), +(108013, 3650001394, 3776013982, 1255629, 1, 67186), +(108012, 3669698605, 4030871717, 1274849, 1, 67186), +(108012, 3669698605, 4030871717, 1274848, 1, 67186), +(108012, 3669698605, 4096770149, 243447, 1, 67186), +(108010, 2579434285, 356071576, 5688, 4, 67186), +(108010, 2579434285, 1187407512, 1292255, 4, 67186), +(108010, 2579434285, 3776013982, 1292255, 4, 67186), +(108010, 2579434285, 1187407512, 1291009, 4, 67186), +(108010, 2579434285, 3776013982, 1291009, 4, 67186), +(108010, 2579434285, 1187407512, 1291008, 4, 67186), +(108010, 2579434285, 3776013982, 1291008, 4, 67186), +(108010, 2579434285, 1187407512, 447444, 1, 67186), +(108010, 2579434285, 3776013982, 447444, 1, 67186), +(108010, 2579434285, 20077728, 467979, 3, 67186), +(108010, 2579434285, 20077728, 461551, 3, 67186), +(108010, 2579434285, 20077728, 456808, 3, 67186), +(108010, 2579434285, 1344507586, 270222, 4, 67186), +(108010, 2579434285, 428746933, 270222, 3, 67186), +(108010, 2579434285, 2442913102, 270222, 4, 67186), +(108010, 2579434285, 3465080266, 270222, 3, 67186), +(108010, 2579434285, 3037505077, 270222, 3, 67186), +(108010, 2579434285, 1417785224, 270222, 3, 67186), +(108010, 2579434285, 1344507586, 270221, 4, 67186), +(108010, 2579434285, 428746933, 270221, 4, 67186), +(108010, 2579434285, 2442913102, 270221, 4, 67186), +(108010, 2579434285, 3465080266, 270221, 3, 67186), +(108010, 2579434285, 3037505077, 270221, 3, 67186), +(108010, 2579434285, 1417785224, 270221, 3, 67186), +(108010, 2579434285, 1344507586, 270220, 4, 67186), +(108010, 2579434285, 428746933, 270220, 4, 67186), +(108010, 2579434285, 2442913102, 270220, 4, 67186), +(108010, 2579434285, 3465080266, 270220, 3, 67186), +(108010, 2579434285, 3037505077, 270220, 3, 67186), +(108010, 2579434285, 1417785224, 270220, 3, 67186), +(108010, 2579434285, 1344507586, 270219, 4, 67186), +(108010, 2579434285, 428746933, 270219, 4, 67186), +(108010, 2579434285, 2442913102, 270219, 4, 67186), +(108010, 2579434285, 3465080266, 270219, 3, 67186), +(108010, 2579434285, 3037505077, 270219, 3, 67186), +(108010, 2579434285, 1417785224, 270219, 3, 67186), +(108010, 2579434285, 1344507586, 270218, 4, 67186), +(108010, 2579434285, 428746933, 270218, 4, 67186), +(108010, 2579434285, 2442913102, 270218, 4, 67186), +(108010, 2579434285, 3465080266, 270218, 3, 67186), +(108010, 2579434285, 3037505077, 270218, 3, 67186), +(108010, 2579434285, 1417785224, 270218, 3, 67186), +(108010, 2579434285, 1344507586, 270217, 4, 67186), +(108010, 2579434285, 428746933, 270217, 4, 67186), +(108010, 2579434285, 2442913102, 270217, 4, 67186), +(108010, 2579434285, 3465080266, 270217, 3, 67186), +(108010, 2579434285, 3037505077, 270217, 3, 67186), +(108010, 2579434285, 1417785224, 270217, 3, 67186), +(108010, 2579434285, 1344507586, 270216, 4, 67186), +(108010, 2579434285, 428746933, 270216, 4, 67186), +(108010, 2579434285, 2442913102, 270216, 4, 67186), +(108010, 2579434285, 3465080266, 270216, 3, 67186), +(108010, 2579434285, 3037505077, 270216, 3, 67186), +(108010, 2579434285, 1417785224, 270216, 3, 67186), +(108010, 2579434285, 1344507586, 270215, 4, 67186), +(108010, 2579434285, 428746933, 270215, 4, 67186), +(108010, 2579434285, 2442913102, 270215, 4, 67186), +(108010, 2579434285, 3465080266, 270215, 3, 67186), +(108010, 2579434285, 3037505077, 270215, 3, 67186), +(108010, 2579434285, 1417785224, 270215, 3, 67186), +(108010, 2579434285, 1344507586, 270213, 4, 67186), +(108010, 2579434285, 428746933, 270213, 4, 67186), +(108010, 2579434285, 2442913102, 270213, 4, 67186), +(108010, 2579434285, 3465080266, 270213, 3, 67186), +(108010, 2579434285, 3037505077, 270213, 3, 67186), +(108010, 2579434285, 1417785224, 270213, 3, 67186), +(108010, 2579434285, 1344507586, 270212, 4, 67186), +(108010, 2579434285, 428746933, 270212, 4, 67186), +(108010, 2579434285, 2442913102, 270212, 4, 67186), +(108010, 2579434285, 3465080266, 270212, 3, 67186), +(108010, 2579434285, 3037505077, 270212, 3, 67186), +(108010, 2579434285, 1417785224, 270212, 3, 67186), +(108010, 2579434285, 326190544, 22775, 4, 67186), +(108010, 2579434285, 326190544, 21948, 4, 67186), +(108010, 2579434285, 326190544, 21947, 4, 67186), +(108010, 2579434285, 331613093, 649953, 3, 67186), +(108010, 2579434285, 1255424668, 209802, 1, 67186), +(108010, 2579434285, 1255424668, 170782, 1, 67186), +(108010, 2579434285, 3386291891, 264163, 4, 67186), +(108007, 2404382255, 4030871717, 1306885, 1, 67186), +(108006, 2602770918, 372281185, 38, 1, 67186), +(108006, 2602770918, 372281185, 37, 1, 67186), +(108005, 476317073, 3108775943, 157759, 3, 67186), +(108005, 476317073, 2120822102, 448965, 1, 67186), +(108005, 476317073, 2120822102, 448964, 1, 67186), +(108001, 4129747046, 1746734909, 62822, 1, 67186), +(108001, 4129747046, 1746734909, 62821, 1, 67186), +(108001, 4129747046, 1746734909, 62820, 1, 67186), +(108001, 4129747046, 1746734909, 62819, 1, 67186), +(108001, 4129747046, 1746734909, 62818, 1, 67186), +(108001, 4129747046, 1746734909, 62817, 1, 67186), +(108000, 932396668, 2707547180, 137739, 1, 67186), +(107998, 2018243584, 3108775943, 157695, 1, 67186), +(107997, 1045936161, 2921112328, 561713, 1, 67186), +(107997, 1045936161, 20077728, 474235, 3, 67186), +(107997, 1045936161, 20077728, 464529, 3, 67186), +(107997, 1045936161, 3108775943, 157679, 3, 67186), +(107997, 1045936161, 331613093, 607115, 3, 67186), +(107996, 308149525, 3495286709, 24488, 1, 67186), +(107996, 308149525, 3495286709, 24487, 1, 67186), +(107996, 308149525, 3495286709, 24486, 1, 67186), +(107996, 308149525, 3495286709, 24485, 1, 67186), +(107996, 308149525, 3495286709, 24484, 1, 67186), +(107995, 4129494299, 1163127287, 125561, 3, 67186), +(107992, 1532428297, 240389885, 9571, 1, 67186), +(107990, 70872569, 1163127287, 128389, 3, 67186), +(107990, 70872569, 3322146344, 827267, 1, 67186), +(107989, 12167515, 3108775943, 157666, 1, 67186), +(107985, 1559476991, 4030871717, 1271571, 1, 67186), +(107983, 1140059834, 4030871717, 1319670, 1, 67186), +(107983, 1140059834, 680438657, 83426, 1, 67186), +(107982, 3291839848, 1163127287, 89559, 3, 67186), +(107981, 542100817, 3322146344, 184847, 1, 67186), +(107981, 542100817, 1720692227, 243243, 1, 67186), +(107981, 542100817, 3689412649, 184538, 3, 67186), +(107981, 542100817, 1187407512, 210824, 1, 67186), +(107981, 542100817, 3776013982, 210824, 1, 67186), +(107980, 3646400026, 3322146344, 178035, 1, 67186), +(107980, 3646400026, 3322146344, 268, 1, 67186), +(107979, 1433812971, 261693969, 86899, 3, 67186), +(107979, 1433812971, 986198281, 86899, 1, 67186), +(107979, 1433812971, 3108775943, 157603, 1, 67186), +(107979, 1433812971, 2246024846, 1306, 1, 67186), +(107976, 210896532, 240389885, 9209, 1, 67186), +(107976, 210896532, 312611497, 28537, 3, 67186), +(107976, 210896532, 312611497, 27984, 3, 67186), +(107976, 210896532, 312611497, 27944, 3, 67186), +(107976, 210896532, 312611497, 27898, 3, 67186), +(107976, 210896532, 312611497, 27897, 3, 67186), +(107976, 210896532, 312611497, 27892, 3, 67186), +(107976, 210896532, 312611497, 27371, 3, 67186), +(107976, 210896532, 312611497, 27357, 3, 67186), +(107976, 210896532, 312611497, 27350, 3, 67186), +(107976, 210896532, 312611497, 27349, 3, 67186), +(107976, 210896532, 312611497, 27160, 3, 67186), +(107976, 210896532, 312611497, 27159, 3, 67186), +(107976, 210896532, 312611497, 27158, 3, 67186), +(107976, 210896532, 1163127287, 124014, 3, 67186), +(107976, 210896532, 1163127287, 121996, 3, 67186), +(107976, 210896532, 3386943305, 332898, 1, 67186), +(107976, 210896532, 3386943305, 323747, 3, 67186), +(107976, 210896532, 3386943305, 323746, 3, 67186), +(107976, 210896532, 3386943305, 323745, 3, 67186), +(107976, 210896532, 3386943305, 320187, 1, 67186), +(107976, 210896532, 3386943305, 320070, 1, 67186), +(107976, 210896532, 3386943305, 319752, 1, 67186), +(107974, 3509572413, 2202435563, 1189289, 1, 67186), +(107974, 3509572413, 2921112328, 537648, 1, 67186), +(107973, 1327649694, 3664936999, 33306, 1, 67186), +(107972, 3268754978, 3108775943, 154160, 1, 67186), +(107972, 3268754978, 3108775943, 154159, 1, 67186), +(107972, 3268754978, 3108775943, 154158, 1, 67186), +(107972, 3268754978, 3108775943, 154157, 1, 67186), +(107972, 3268754978, 3108775943, 154156, 1, 67186), +(107972, 3268754978, 3108775943, 154155, 1, 67186), +(107972, 3268754978, 3108775943, 154154, 1, 67186), +(107972, 3268754978, 3108775943, 154153, 1, 67186), +(107972, 3268754978, 3108775943, 154152, 1, 67186), +(107972, 3268754978, 3108775943, 154151, 1, 67186), +(107971, 3706684034, 4030871717, 1314377, 1, 67186), +(107971, 3706684034, 4030871717, 1264811, 1, 67186), +(107971, 3706684034, 4030871717, 1235034, 1, 67186), +(107971, 3706684034, 4030871717, 1235033, 1, 67186), +(107971, 3706684034, 4030871717, 1235032, 1, 67186), +(107971, 3706684034, 4030871717, 1081540, 1, 67186), +(107971, 3706684034, 4030871717, 1079597, 1, 67186), +(107971, 3706684034, 4030871717, 298593, 1, 67186), +(107971, 3706684034, 4030871717, 295730, 1, 67186), +(107971, 3706684034, 4030871717, 271185, 1, 67186), +(107971, 3706684034, 4030871717, 191077, 1, 67186), +(107971, 3706684034, 4030871717, 191076, 1, 67186), +(107971, 3706684034, 4030871717, 179715, 1, 67186), +(107971, 3706684034, 4030871717, 135203, 1, 67186), +(107970, 1892246305, 3247720076, 42425, 2, 67186), +(107970, 1892246305, 3247720076, 42424, 1, 67186), +(107969, 367166424, 3322146344, 809484, 1, 67186), +(107967, 1159940523, 3322146344, 837954, 1, 67186), +(107967, 1159940523, 3322146344, 835449, 1, 67186), +(107967, 1159940523, 3322146344, 835342, 1, 67186), +(107967, 1159940523, 3322146344, 833148, 1, 67186), +(107967, 1159940523, 3322146344, 832887, 1, 67186), +(107967, 1159940523, 3322146344, 831935, 1, 67186), +(107967, 1159940523, 3322146344, 831244, 1, 67186), +(107967, 1159940523, 3322146344, 830635, 1, 67186), +(107967, 1159940523, 3322146344, 830559, 1, 67186), +(107967, 1159940523, 3322146344, 829935, 1, 67186), +(107967, 1159940523, 3322146344, 829931, 1, 67186), +(107967, 1159940523, 3322146344, 829929, 1, 67186), +(107967, 1159940523, 3322146344, 828708, 1, 67186), +(107967, 1159940523, 3322146344, 828041, 1, 67186), +(107967, 1159940523, 3322146344, 827071, 1, 67186), +(107967, 1159940523, 3322146344, 826391, 1, 67186), +(107967, 1159940523, 3322146344, 824124, 1, 67186), +(107967, 1159940523, 3322146344, 823737, 1, 67186), +(107967, 1159940523, 3322146344, 823729, 1, 67186), +(107967, 1159940523, 3322146344, 823728, 1, 67186), +(107967, 1159940523, 3322146344, 823718, 1, 67186), +(107967, 1159940523, 3322146344, 820925, 1, 67186), +(107967, 1159940523, 3322146344, 818246, 1, 67186), +(107967, 1159940523, 3322146344, 815888, 1, 67186), +(107967, 1159940523, 3322146344, 813833, 1, 67186), +(107967, 1159940523, 3322146344, 811416, 1, 67186), +(107967, 1159940523, 3322146344, 810189, 1, 67186), +(107967, 1159940523, 3322146344, 810186, 1, 67186), +(107967, 1159940523, 3322146344, 810178, 1, 67186), +(107967, 1159940523, 3322146344, 807716, 1, 67186), +(107967, 1159940523, 3130494798, 24602, 1, 67186), +(107967, 1159940523, 3130494798, 23751, 1, 67186), +(107967, 1159940523, 1187407512, 1280123, 1, 67186), +(107967, 1159940523, 3776013982, 1280123, 1, 67186), +(107966, 2756079953, 3322146344, 815569, 1, 67186), +(107966, 2756079953, 1720692227, 233076, 1, 67186), +(107964, 1951632922, 1163127287, 92732, 3, 67186), +(107963, 2907749696, 261693969, 91843, 3, 67186), +(107963, 2907749696, 986198281, 91843, 1, 67186), +(107963, 2907749696, 261693969, 85884, 3, 67186), +(107963, 2907749696, 986198281, 85884, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107963, 2907749696, 261693969, 85235, 3, 67186), +(107963, 2907749696, 986198281, 85235, 3, 67186), +(107963, 2907749696, 261693969, 85027, 3, 67186), +(107963, 2907749696, 986198281, 85027, 1, 67186), +(107963, 2907749696, 261693969, 84371, 3, 67186), +(107963, 2907749696, 986198281, 84371, 1, 67186), +(107962, 4247465634, 1163127287, 128327, 3, 67186), +(107959, 3922865905, 4030871717, 1307596, 1, 67186), +(107959, 3922865905, 4030871717, 1307595, 1, 67186), +(107959, 3922865905, 4030871717, 1032350, 1, 67186), +(107959, 3922865905, 4030871717, 1032349, 1, 67186), +(107959, 3922865905, 4030871717, 876349, 1, 67186), +(107959, 3922865905, 4030871717, 876348, 1, 67186), +(107959, 3922865905, 4030871717, 290380, 1, 67186), +(107958, 4037493397, 3205218938, 54794, 1, 67186), +(107958, 4037493397, 3205218938, 22339, 1, 67186), +(107958, 4037493397, 3205218938, 22338, 1, 67186), +(107958, 4037493397, 3205218938, 22331, 1, 67186), +(107958, 4037493397, 3205218938, 22330, 1, 67186), +(107958, 4037493397, 3205218938, 22329, 1, 67186), +(107957, 2565018075, 261693969, 53371, 3, 67186), +(107957, 2565018075, 986198281, 53371, 1, 67186), +(107957, 2565018075, 261693969, 53347, 3, 67186), +(107957, 2565018075, 986198281, 53347, 1, 67186), +(107957, 2565018075, 261693969, 50553, 3, 67186), +(107957, 2565018075, 986198281, 50553, 1, 67186), +(107957, 2565018075, 261693969, 50504, 3, 67186), +(107957, 2565018075, 986198281, 50504, 1, 67186), +(107957, 2565018075, 261693969, 50493, 3, 67186), +(107957, 2565018075, 986198281, 50493, 1, 67186), +(107957, 2565018075, 261693969, 50359, 3, 67186), +(107957, 2565018075, 986198281, 50359, 1, 67186), +(107957, 2565018075, 261693969, 50264, 3, 67186), +(107957, 2565018075, 986198281, 50264, 1, 67186), +(107957, 2565018075, 261693969, 50168, 3, 67186), +(107957, 2565018075, 986198281, 50168, 1, 67186), +(107957, 2565018075, 261693969, 50165, 3, 67186), +(107957, 2565018075, 986198281, 50165, 1, 67186), +(107957, 2565018075, 261693969, 50162, 3, 67186), +(107957, 2565018075, 986198281, 50162, 1, 67186), +(107957, 2565018075, 261693969, 50161, 3, 67186), +(107957, 2565018075, 986198281, 50161, 1, 67186), +(107956, 972716094, 3322146344, 844027, 1, 67186), +(107956, 972716094, 4030871717, 1319367, 1, 67186), +(107956, 972716094, 671633915, 302, 1, 67186), +(107956, 972716094, 1880017466, 314215, 1, 67186), +(107956, 972716094, 1880017466, 257479, 1, 67186), +(107956, 972716094, 1880017466, 257478, 1, 67186), +(107956, 972716094, 1880017466, 257477, 1, 67186), +(107956, 972716094, 1880017466, 257476, 1, 67186), +(107956, 972716094, 1880017466, 257475, 1, 67186), +(107956, 972716094, 1880017466, 257474, 1, 67186), +(107956, 972716094, 1880017466, 257473, 1, 67186), +(107956, 972716094, 1880017466, 257472, 1, 67186), +(107956, 972716094, 1880017466, 257471, 1, 67186), +(107956, 972716094, 1880017466, 257470, 1, 67186), +(107956, 972716094, 1880017466, 257469, 1, 67186), +(107956, 972716094, 1880017466, 257468, 1, 67186), +(107956, 972716094, 1880017466, 257467, 1, 67186), +(107956, 972716094, 1880017466, 257466, 1, 67186), +(107956, 972716094, 1880017466, 257465, 1, 67186), +(107956, 972716094, 1880017466, 257464, 1, 67186), +(107956, 972716094, 1880017466, 257463, 1, 67186), +(107956, 972716094, 1880017466, 257462, 1, 67186), +(107956, 972716094, 1880017466, 257461, 1, 67186), +(107956, 972716094, 1880017466, 257460, 1, 67186), +(107956, 972716094, 1880017466, 257459, 1, 67186), +(107956, 972716094, 1880017466, 257458, 1, 67186), +(107956, 972716094, 1880017466, 257457, 1, 67186), +(107956, 972716094, 1880017466, 257456, 1, 67186), +(107956, 972716094, 1880017466, 257455, 1, 67186), +(107956, 972716094, 1880017466, 257454, 1, 67186), +(107956, 972716094, 1880017466, 257453, 1, 67186), +(107956, 972716094, 1880017466, 257452, 1, 67186), +(107956, 972716094, 1880017466, 257449, 1, 67186), +(107956, 972716094, 1880017466, 257448, 1, 67186), +(107956, 972716094, 1880017466, 257447, 1, 67186), +(107956, 972716094, 1880017466, 257446, 1, 67186), +(107956, 972716094, 1880017466, 257445, 1, 67186), +(107956, 972716094, 1880017466, 257444, 1, 67186), +(107956, 972716094, 1880017466, 257443, 1, 67186), +(107956, 972716094, 1880017466, 257442, 1, 67186), +(107956, 972716094, 1880017466, 257441, 1, 67186), +(107956, 972716094, 1880017466, 257440, 1, 67186), +(107956, 972716094, 1272569722, 87161, 1, 67186), +(107956, 972716094, 1272569722, 86539, 1, 67186), +(107956, 972716094, 3174446591, 442, 1, 67186), +(107955, 213952640, 1163127287, 128306, 3, 67186), +(107955, 213952640, 1163127287, 94908, 3, 67186), +(107955, 213952640, 1163127287, 86322, 3, 67186), +(107955, 213952640, 1163127287, 80263, 3, 67186), +(107955, 213952640, 1163127287, 74642, 3, 67186), +(107955, 213952640, 1163127287, 74052, 3, 67186), +(107955, 213952640, 1163127287, 74048, 3, 67186), +(107955, 213952640, 1163127287, 69849, 3, 67186), +(107955, 213952640, 3322146344, 837375, 1, 67186), +(107955, 213952640, 3322146344, 474637, 1, 67186), +(107955, 213952640, 4030871717, 1308336, 1, 67186), +(107955, 213952640, 4030871717, 896892, 1, 67186), +(107952, 208180413, 4030871717, 1244971, 1, 67186), +(107952, 208180413, 4030871717, 1229372, 2, 67186), +(107951, 2964379092, 2202435563, 1276526, 1, 67186), +(107951, 2964379092, 2202435563, 1276525, 1, 67186), +(107951, 2964379092, 2202435563, 1276524, 1, 67186), +(107951, 2964379092, 2202435563, 1276523, 1, 67186), +(107951, 2964379092, 2202435563, 1276522, 1, 67186), +(107951, 2964379092, 2202435563, 1276521, 1, 67186), +(107951, 2964379092, 2202435563, 1276520, 1, 67186), +(107951, 2964379092, 2202435563, 1276519, 1, 67186), +(107951, 2964379092, 2202435563, 1276518, 1, 67186), +(107951, 2964379092, 2202435563, 1276517, 1, 67186), +(107951, 2964379092, 2202435563, 1276516, 1, 67186), +(107951, 2964379092, 2202435563, 1276515, 1, 67186), +(107950, 1015052329, 793851790, 3513, 1, 67186), +(107948, 1868110605, 666345498, 519908, 1, 67186), +(107948, 1868110605, 666345498, 519907, 1, 67186), +(107948, 1868110605, 666345498, 519906, 1, 67186), +(107948, 1868110605, 666345498, 519905, 1, 67186), +(107948, 1868110605, 666345498, 519890, 1, 67186), +(107948, 1868110605, 666345498, 519886, 1, 67186), +(107948, 1868110605, 3322146344, 844105, 1, 67186), +(107948, 1868110605, 3322146344, 844104, 1, 67186), +(107948, 1868110605, 3322146344, 844103, 1, 67186), +(107948, 1868110605, 3322146344, 844101, 1, 67186), +(107948, 1868110605, 3322146344, 844079, 1, 67186), +(107948, 1868110605, 3322146344, 844076, 1, 67186), +(107948, 1868110605, 501138918, 152337, 1, 67186), +(107948, 1868110605, 501138918, 152336, 1, 67186), +(107948, 1868110605, 501138918, 152335, 1, 67186), +(107948, 1868110605, 501138918, 152334, 1, 67186), +(107948, 1868110605, 501138918, 152332, 1, 67186), +(107948, 1868110605, 813076512, 205684, 1, 67186), +(107948, 1868110605, 813076512, 205683, 1, 67186), +(107948, 1868110605, 813076512, 205682, 1, 67186), +(107948, 1868110605, 813076512, 205681, 1, 67186), +(107948, 1868110605, 813076512, 205669, 1, 67186), +(107948, 1868110605, 813076512, 205665, 1, 67186), +(107948, 1868110605, 1720692227, 243236, 1, 67186), +(107948, 1868110605, 1720692227, 243235, 1, 67186), +(107948, 1868110605, 1720692227, 243234, 1, 67186), +(107948, 1868110605, 1720692227, 243233, 1, 67186), +(107948, 1868110605, 1720692227, 243222, 1, 67186), +(107948, 1868110605, 1720692227, 243220, 1, 67186), +(107948, 1868110605, 4030871717, 1319512, 1, 67186), +(107948, 1868110605, 4030871717, 1319511, 1, 67186), +(107948, 1868110605, 4030871717, 1319509, 1, 67186), +(107948, 1868110605, 4030871717, 1319507, 1, 67186), +(107948, 1868110605, 4030871717, 1319463, 1, 67186), +(107948, 1868110605, 4030871717, 1319457, 1, 67186), +(107948, 1868110605, 3689412649, 184531, 1, 67186), +(107948, 1868110605, 3689412649, 184530, 1, 67186), +(107948, 1868110605, 3689412649, 184529, 1, 67186), +(107948, 1868110605, 3689412649, 184528, 1, 67186), +(107948, 1868110605, 3689412649, 184521, 1, 67186), +(107948, 1868110605, 3689412649, 184519, 1, 67186), +(107948, 1868110605, 1187407512, 1296760, 1, 67186), +(107948, 1868110605, 3776013982, 1296760, 1, 67186), +(107948, 1868110605, 1187407512, 1296759, 1, 67186), +(107948, 1868110605, 3776013982, 1296759, 1, 67186), +(107948, 1868110605, 1187407512, 1296758, 1, 67186), +(107948, 1868110605, 3776013982, 1296758, 1, 67186), +(107948, 1868110605, 1187407512, 1296756, 1, 67186), +(107948, 1868110605, 3776013982, 1296756, 1, 67186), +(107948, 1868110605, 1187407512, 1296734, 1, 67186), +(107948, 1868110605, 3776013982, 1296734, 1, 67186), +(107948, 1868110605, 1187407512, 1296731, 1, 67186), +(107948, 1868110605, 3776013982, 1296731, 1, 67186), +(107948, 1868110605, 4282664694, 58556, 1, 67186), +(107948, 1868110605, 4282664694, 58555, 1, 67186), +(107948, 1868110605, 4282664694, 58554, 1, 67186), +(107948, 1868110605, 4282664694, 58553, 1, 67186), +(107948, 1868110605, 4282664694, 58545, 1, 67186), +(107948, 1868110605, 4282664694, 58544, 1, 67186), +(107948, 1868110605, 3108775943, 157668, 1, 67186), +(107948, 1868110605, 3108775943, 157653, 3, 67186), +(107948, 1868110605, 3108775943, 157644, 3, 67186), +(107948, 1868110605, 3108775943, 157643, 3, 67186), +(107948, 1868110605, 3108775943, 157642, 3, 67186), +(107948, 1868110605, 3108775943, 157641, 3, 67186), +(107948, 1868110605, 3108775943, 157640, 3, 67186), +(107948, 1868110605, 3108775943, 157639, 3, 67186), +(107948, 1868110605, 3108775943, 157638, 3, 67186), +(107948, 1868110605, 3108775943, 157637, 3, 67186), +(107948, 1868110605, 3108775943, 157636, 3, 67186), +(107948, 1868110605, 3108775943, 157635, 3, 67186), +(107948, 1868110605, 3108775943, 157634, 3, 67186), +(107948, 1868110605, 3108775943, 157633, 3, 67186), +(107948, 1868110605, 3108775943, 157632, 3, 67186), +(107948, 1868110605, 3108775943, 157631, 3, 67186), +(107948, 1868110605, 3108775943, 157630, 3, 67186), +(107948, 1868110605, 3108775943, 157629, 3, 67186), +(107948, 1868110605, 3108775943, 157628, 3, 67186), +(107948, 1868110605, 3108775943, 157627, 3, 67186), +(107948, 1868110605, 3108775943, 157626, 3, 67186), +(107948, 1868110605, 3108775943, 157625, 3, 67186), +(107948, 1868110605, 2030087241, 3655, 1, 67186), +(107948, 1868110605, 2030087241, 3654, 1, 67186), +(107948, 1868110605, 2030087241, 3653, 1, 67186), +(107948, 1868110605, 2030087241, 3652, 1, 67186), +(107948, 1868110605, 2030087241, 3651, 1, 67186), +(107948, 1868110605, 2030087241, 3650, 1, 67186), +(107948, 1868110605, 2524150337, 3010, 1, 67186), +(107948, 1868110605, 2524150337, 3009, 1, 67186), +(107948, 1868110605, 2524150337, 3008, 1, 67186), +(107948, 1868110605, 2524150337, 3007, 1, 67186), +(107948, 1868110605, 2524150337, 3006, 1, 67186), +(107948, 1868110605, 2524150337, 3005, 1, 67186), +(107948, 1868110605, 2120822102, 448804, 1, 67186), +(107948, 1868110605, 2120822102, 448803, 1, 67186), +(107948, 1868110605, 2120822102, 448802, 1, 67186), +(107948, 1868110605, 2120822102, 448801, 1, 67186), +(107948, 1868110605, 2120822102, 448800, 1, 67186), +(107948, 1868110605, 2120822102, 448799, 1, 67186), +(107948, 1868110605, 2120822102, 448798, 1, 67186), +(107948, 1868110605, 2120822102, 448797, 1, 67186), +(107948, 1868110605, 2120822102, 448796, 1, 67186), +(107948, 1868110605, 2120822102, 448795, 1, 67186), +(107948, 1868110605, 2120822102, 448794, 1, 67186), +(107948, 1868110605, 2120822102, 448793, 1, 67186), +(107948, 1868110605, 2120822102, 448792, 1, 67186), +(107948, 1868110605, 2120822102, 448791, 1, 67186), +(107948, 1868110605, 2120822102, 448790, 1, 67186), +(107948, 1868110605, 2120822102, 448789, 1, 67186), +(107948, 1868110605, 2120822102, 448788, 1, 67186), +(107948, 1868110605, 2120822102, 448787, 1, 67186), +(107948, 1868110605, 2120822102, 448786, 1, 67186), +(107948, 1868110605, 2120822102, 448785, 1, 67186), +(107948, 1868110605, 2120822102, 448784, 1, 67186), +(107948, 1868110605, 2120822102, 448783, 1, 67186), +(107948, 1868110605, 2120822102, 448782, 1, 67186), +(107948, 1868110605, 2120822102, 448781, 1, 67186), +(107948, 1868110605, 2120822102, 448780, 1, 67186), +(107948, 1868110605, 2120822102, 448779, 1, 67186), +(107948, 1868110605, 2120822102, 448778, 1, 67186), +(107948, 1868110605, 2120822102, 448777, 1, 67186), +(107948, 1868110605, 2120822102, 448776, 1, 67186), +(107948, 1868110605, 2120822102, 448775, 1, 67186), +(107948, 1868110605, 2120822102, 448774, 1, 67186), +(107948, 1868110605, 2120822102, 448773, 1, 67186), +(107948, 1868110605, 2120822102, 448772, 1, 67186), +(107948, 1868110605, 2120822102, 448771, 1, 67186), +(107948, 1868110605, 2120822102, 448770, 1, 67186), +(107948, 1868110605, 2120822102, 448769, 1, 67186), +(107948, 1868110605, 2120822102, 448768, 1, 67186), +(107948, 1868110605, 2120822102, 448767, 1, 67186), +(107948, 1868110605, 2120822102, 448766, 1, 67186), +(107948, 1868110605, 2120822102, 448765, 1, 67186), +(107948, 1868110605, 13330255, 166582, 1, 67186), +(107948, 1868110605, 13330255, 166581, 1, 67186), +(107948, 1868110605, 13330255, 166580, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107948, 1868110605, 13330255, 166579, 1, 67186), +(107948, 1868110605, 13330255, 166578, 1, 67186), +(107948, 1868110605, 13330255, 166577, 1, 67186), +(107948, 1868110605, 13330255, 166576, 1, 67186), +(107948, 1868110605, 13330255, 166575, 1, 67186), +(107948, 1868110605, 13330255, 166573, 1, 67186), +(107948, 1868110605, 13330255, 166572, 1, 67186), +(107948, 1868110605, 13330255, 166569, 1, 67186), +(107948, 1868110605, 13330255, 166568, 1, 67186), +(107948, 1868110605, 3146089301, 11574, 1, 67186), +(107948, 1868110605, 1073915313, 234409, 1, 67186), +(107948, 1868110605, 1073915313, 234408, 1, 67186), +(107948, 1868110605, 1073915313, 234407, 1, 67186), +(107948, 1868110605, 1073915313, 234406, 1, 67186), +(107948, 1868110605, 1073915313, 234405, 1, 67186), +(107948, 1868110605, 1073915313, 234404, 1, 67186), +(107948, 1868110605, 1073915313, 234403, 1, 67186), +(107948, 1868110605, 1073915313, 234402, 1, 67186), +(107948, 1868110605, 1073915313, 234400, 1, 67186), +(107948, 1868110605, 1073915313, 234399, 1, 67186), +(107948, 1868110605, 1073915313, 234396, 1, 67186), +(107948, 1868110605, 1073915313, 234395, 1, 67186), +(107948, 1868110605, 1876974313, 107008, 1, 67186), +(107948, 1868110605, 1876974313, 107007, 1, 67186), +(107948, 1868110605, 1876974313, 107006, 1, 67186), +(107948, 1868110605, 1876974313, 107005, 1, 67186), +(107948, 1868110605, 1876974313, 107004, 1, 67186), +(107948, 1868110605, 1876974313, 107003, 1, 67186), +(107948, 1868110605, 1876974313, 107002, 1, 67186), +(107948, 1868110605, 1876974313, 107001, 1, 67186), +(107948, 1868110605, 1876974313, 107000, 1, 67186), +(107948, 1868110605, 1876974313, 106999, 1, 67186), +(107948, 1868110605, 1876974313, 106998, 1, 67186), +(107948, 1868110605, 1876974313, 106997, 1, 67186), +(107948, 1868110605, 1876974313, 106996, 1, 67186), +(107948, 1868110605, 1876974313, 106995, 1, 67186), +(107948, 1868110605, 1876974313, 106994, 1, 67186), +(107948, 1868110605, 1876974313, 106993, 1, 67186), +(107948, 1868110605, 1876974313, 106992, 1, 67186), +(107948, 1868110605, 1876974313, 106991, 1, 67186), +(107948, 1868110605, 1876974313, 106990, 1, 67186), +(107948, 1868110605, 1876974313, 106989, 1, 67186), +(107948, 1868110605, 1344507586, 275447, 1, 67186), +(107948, 1868110605, 428746933, 275447, 3, 67186), +(107948, 1868110605, 2442913102, 275447, 1, 67186), +(107948, 1868110605, 3465080266, 275447, 3, 67186), +(107948, 1868110605, 3037505077, 275447, 3, 67186), +(107948, 1868110605, 1417785224, 275447, 3, 67186), +(107948, 1868110605, 1344507586, 275446, 1, 67186), +(107948, 1868110605, 428746933, 275446, 3, 67186), +(107948, 1868110605, 2442913102, 275446, 1, 67186), +(107948, 1868110605, 3465080266, 275446, 3, 67186), +(107948, 1868110605, 3037505077, 275446, 3, 67186), +(107948, 1868110605, 1417785224, 275446, 3, 67186), +(107948, 1868110605, 1344507586, 275445, 1, 67186), +(107948, 1868110605, 428746933, 275445, 3, 67186), +(107948, 1868110605, 2442913102, 275445, 1, 67186), +(107948, 1868110605, 3465080266, 275445, 3, 67186), +(107948, 1868110605, 3037505077, 275445, 3, 67186), +(107948, 1868110605, 1417785224, 275445, 3, 67186), +(107948, 1868110605, 1344507586, 275444, 1, 67186), +(107948, 1868110605, 428746933, 275444, 3, 67186), +(107948, 1868110605, 2442913102, 275444, 1, 67186), +(107948, 1868110605, 3465080266, 275444, 3, 67186), +(107948, 1868110605, 3037505077, 275444, 3, 67186), +(107948, 1868110605, 1417785224, 275444, 3, 67186), +(107948, 1868110605, 1344507586, 275442, 1, 67186), +(107948, 1868110605, 428746933, 275442, 3, 67186), +(107948, 1868110605, 2442913102, 275442, 1, 67186), +(107948, 1868110605, 3465080266, 275442, 3, 67186), +(107948, 1868110605, 3037505077, 275442, 3, 67186), +(107948, 1868110605, 1417785224, 275442, 3, 67186), +(107948, 1868110605, 1344507586, 275440, 1, 67186), +(107948, 1868110605, 428746933, 275440, 3, 67186), +(107948, 1868110605, 2442913102, 275440, 1, 67186), +(107948, 1868110605, 3465080266, 275440, 3, 67186), +(107948, 1868110605, 3037505077, 275440, 3, 67186), +(107948, 1868110605, 1417785224, 275440, 3, 67186), +(107948, 1868110605, 1344507586, 275436, 1, 67186), +(107948, 1868110605, 428746933, 275436, 3, 67186), +(107948, 1868110605, 2442913102, 275436, 1, 67186), +(107948, 1868110605, 3465080266, 275436, 3, 67186), +(107948, 1868110605, 3037505077, 275436, 3, 67186), +(107948, 1868110605, 1417785224, 275436, 3, 67186), +(107948, 1868110605, 1344507586, 248248, 1, 67186), +(107948, 1868110605, 428746933, 248248, 3, 67186), +(107948, 1868110605, 2442913102, 248248, 1, 67186), +(107948, 1868110605, 3465080266, 248248, 3, 67186), +(107948, 1868110605, 3037505077, 248248, 3, 67186), +(107948, 1868110605, 1417785224, 248248, 3, 67186), +(107948, 1868110605, 1344507586, 247822, 1, 67186), +(107948, 1868110605, 428746933, 247822, 3, 67186), +(107948, 1868110605, 2442913102, 247822, 1, 67186), +(107948, 1868110605, 3465080266, 247822, 3, 67186), +(107948, 1868110605, 3037505077, 247822, 3, 67186), +(107948, 1868110605, 1417785224, 247822, 3, 67186), +(107948, 1868110605, 1344507586, 237141, 1, 67186), +(107948, 1868110605, 428746933, 237141, 3, 67186), +(107948, 1868110605, 2442913102, 237141, 1, 67186), +(107948, 1868110605, 3465080266, 237141, 3, 67186), +(107948, 1868110605, 3037505077, 237141, 3, 67186), +(107948, 1868110605, 1417785224, 237141, 3, 67186), +(107948, 1868110605, 1344507586, 235549, 1, 67186), +(107948, 1868110605, 428746933, 235549, 3, 67186), +(107948, 1868110605, 2442913102, 235549, 1, 67186), +(107948, 1868110605, 3465080266, 235549, 3, 67186), +(107948, 1868110605, 3037505077, 235549, 3, 67186), +(107948, 1868110605, 1417785224, 235549, 3, 67186), +(107948, 1868110605, 1344507586, 226357, 1, 67186), +(107948, 1868110605, 428746933, 226357, 3, 67186), +(107948, 1868110605, 2442913102, 226357, 1, 67186), +(107948, 1868110605, 3465080266, 226357, 3, 67186), +(107948, 1868110605, 3037505077, 226357, 3, 67186), +(107948, 1868110605, 1417785224, 226357, 3, 67186), +(107948, 1868110605, 1344507586, 213438, 1, 67186), +(107948, 1868110605, 428746933, 213438, 3, 67186), +(107948, 1868110605, 2442913102, 213438, 1, 67186), +(107948, 1868110605, 3465080266, 213438, 3, 67186), +(107948, 1868110605, 3037505077, 213438, 3, 67186), +(107948, 1868110605, 1417785224, 213438, 3, 67186), +(107948, 1868110605, 1344507586, 209060, 1, 67186), +(107948, 1868110605, 428746933, 209060, 3, 67186), +(107948, 1868110605, 2442913102, 209060, 1, 67186), +(107948, 1868110605, 3465080266, 209060, 3, 67186), +(107948, 1868110605, 3037505077, 209060, 3, 67186), +(107948, 1868110605, 1417785224, 209060, 3, 67186), +(107948, 1868110605, 1344507586, 204798, 1, 67186), +(107948, 1868110605, 428746933, 204798, 3, 67186), +(107948, 1868110605, 2442913102, 204798, 1, 67186), +(107948, 1868110605, 3465080266, 204798, 3, 67186), +(107948, 1868110605, 3037505077, 204798, 3, 67186), +(107948, 1868110605, 1417785224, 204798, 3, 67186), +(107948, 1868110605, 1344507586, 199412, 1, 67186), +(107948, 1868110605, 428746933, 199412, 3, 67186), +(107948, 1868110605, 2442913102, 199412, 1, 67186), +(107948, 1868110605, 3465080266, 199412, 3, 67186), +(107948, 1868110605, 3037505077, 199412, 3, 67186), +(107948, 1868110605, 1417785224, 199412, 3, 67186), +(107948, 1868110605, 1344507586, 192557, 1, 67186), +(107948, 1868110605, 428746933, 192557, 3, 67186), +(107948, 1868110605, 2442913102, 192557, 1, 67186), +(107948, 1868110605, 3465080266, 192557, 3, 67186), +(107948, 1868110605, 3037505077, 192557, 3, 67186), +(107948, 1868110605, 1417785224, 192557, 3, 67186), +(107948, 1868110605, 1344507586, 187682, 1, 67186), +(107948, 1868110605, 428746933, 187682, 3, 67186), +(107948, 1868110605, 2442913102, 187682, 1, 67186), +(107948, 1868110605, 3465080266, 187682, 3, 67186), +(107948, 1868110605, 3037505077, 187682, 3, 67186), +(107948, 1868110605, 1417785224, 187682, 3, 67186), +(107948, 1868110605, 1344507586, 187525, 1, 67186), +(107948, 1868110605, 428746933, 187525, 3, 67186), +(107948, 1868110605, 2442913102, 187525, 1, 67186), +(107948, 1868110605, 3465080266, 187525, 3, 67186), +(107948, 1868110605, 3037505077, 187525, 3, 67186), +(107948, 1868110605, 1417785224, 187525, 3, 67186), +(107948, 1868110605, 1344507586, 182717, 1, 67186), +(107948, 1868110605, 428746933, 182717, 3, 67186), +(107948, 1868110605, 2442913102, 182717, 1, 67186), +(107948, 1868110605, 3465080266, 182717, 3, 67186), +(107948, 1868110605, 3037505077, 182717, 3, 67186), +(107948, 1868110605, 1417785224, 182717, 3, 67186), +(107948, 1868110605, 1344507586, 174836, 1, 67186), +(107948, 1868110605, 428746933, 174836, 3, 67186), +(107948, 1868110605, 2442913102, 174836, 1, 67186), +(107948, 1868110605, 3465080266, 174836, 3, 67186), +(107948, 1868110605, 3037505077, 174836, 3, 67186), +(107948, 1868110605, 1417785224, 174836, 3, 67186), +(107948, 1868110605, 2472642809, 61038, 1, 67186), +(107948, 1868110605, 1255424668, 228515, 1, 67186), +(107948, 1868110605, 1255424668, 228514, 1, 67186), +(107948, 1868110605, 3218799089, 144756, 1, 67186), +(107948, 1868110605, 3218799089, 144755, 1, 67186), +(107948, 1868110605, 3218799089, 144754, 1, 67186), +(107948, 1868110605, 3218799089, 144753, 1, 67186), +(107948, 1868110605, 3218799089, 144752, 1, 67186), +(107948, 1868110605, 3386943305, 329877, 3, 67186), +(107948, 1868110605, 3386943305, 226061, 3, 67186), +(107948, 1868110605, 3386291891, 250285, 3, 67186), +(107948, 1868110605, 3386291891, 197711, 3, 67186), +(107948, 1868110605, 2246024846, 1307, 1, 67186), +(107948, 1868110605, 35137211, 315977, 3, 67186), +(107948, 1868110605, 3538824359, 61594, 1, 67186), +(107948, 1868110605, 3538824359, 61593, 1, 67186), +(107948, 1868110605, 3538824359, 61592, 1, 67186), +(107948, 1868110605, 3538824359, 61591, 1, 67186), +(107948, 1868110605, 3538824359, 61590, 1, 67186), +(107948, 1868110605, 3538824359, 61589, 1, 67186), +(107948, 1868110605, 3538824359, 61588, 1, 67186), +(107948, 1868110605, 3538824359, 61587, 1, 67186), +(107948, 1868110605, 3538824359, 61259, 1, 67186), +(107948, 1868110605, 3538824359, 61253, 1, 67186), +(107948, 1868110605, 3538824359, 61252, 1, 67186), +(107948, 1868110605, 3538824359, 61251, 1, 67186), +(107948, 1868110605, 3538824359, 61250, 1, 67186), +(107948, 1868110605, 3538824359, 61249, 1, 67186), +(107948, 1868110605, 3538824359, 61248, 1, 67186), +(107948, 1868110605, 3538824359, 61247, 1, 67186), +(107948, 1868110605, 3538824359, 61246, 1, 67186), +(107948, 1868110605, 3538824359, 61245, 1, 67186), +(107948, 1868110605, 3538824359, 61244, 1, 67186), +(107948, 1868110605, 3538824359, 61243, 1, 67186), +(107948, 1868110605, 3538824359, 61242, 1, 67186), +(107948, 1868110605, 3538824359, 61241, 1, 67186), +(107948, 1868110605, 3538824359, 61240, 1, 67186), +(107948, 1868110605, 3538824359, 61239, 1, 67186), +(107948, 1868110605, 3538824359, 61237, 1, 67186), +(107948, 1868110605, 3538824359, 61236, 1, 67186), +(107948, 1868110605, 3538824359, 61235, 1, 67186), +(107948, 1868110605, 3538824359, 61233, 1, 67186), +(107948, 1868110605, 3538824359, 12009, 1, 67186), +(107948, 1868110605, 3538824359, 12005, 1, 67186), +(107948, 1868110605, 3538824359, 12004, 1, 67186), +(107948, 1868110605, 3538824359, 9036, 1, 67186), +(107948, 1868110605, 3538824359, 9035, 1, 67186), +(107948, 1868110605, 3538824359, 9034, 1, 67186), +(107948, 1868110605, 3538824359, 9033, 1, 67186), +(107948, 1868110605, 3538824359, 4525, 1, 67186), +(107948, 1868110605, 3538824359, 4524, 1, 67186), +(107947, 2542439629, 312611497, 28080, 3, 67186), +(107947, 2542439629, 312611497, 28079, 3, 67186), +(107947, 2542439629, 1163127287, 121341, 3, 67186), +(107946, 1668051561, 312611497, 26859, 3, 67186), +(107946, 1668051561, 312611497, 26858, 3, 67186), +(107946, 1668051561, 1163127287, 47801, 3, 67186), +(107946, 1668051561, 1163127287, 36268, 3, 67186), +(107946, 1668051561, 1163127287, 18719, 3, 67186), +(107946, 1668051561, 4096770149, 240548, 1, 67186), +(107946, 1668051561, 1187407512, 466930, 1, 67186), +(107946, 1668051561, 3776013982, 466930, 1, 67186), +(107946, 1668051561, 3386943305, 322624, 3, 67186), +(107945, 1644275253, 261693969, 95554, 3, 67186), +(107945, 1644275253, 986198281, 95554, 1, 67186), +(107945, 1644275253, 261693969, 95553, 1, 67186), +(107945, 1644275253, 986198281, 95553, 1, 67186), +(107945, 1644275253, 261693969, 95552, 1, 67186), +(107945, 1644275253, 986198281, 95552, 1, 67186), +(107945, 1644275253, 261693969, 95551, 3, 67186), +(107945, 1644275253, 986198281, 95551, 1, 67186), +(107945, 1644275253, 261693969, 95550, 1, 67186), +(107945, 1644275253, 986198281, 95550, 1, 67186), +(107945, 1644275253, 261693969, 95548, 3, 67186), +(107945, 1644275253, 986198281, 95548, 1, 67186), +(107945, 1644275253, 261693969, 95547, 3, 67186), +(107945, 1644275253, 986198281, 95547, 1, 67186), +(107943, 2954700167, 1163127287, 98186, 3, 67186), +(107942, 1050096472, 1163127287, 103312, 3, 67186), +(107942, 1050096472, 1163127287, 32391, 3, 67186), +(107941, 1712522700, 1187407512, 1291739, 1, 67186), +(107941, 1712522700, 3776013982, 1291739, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107941, 1712522700, 1187407512, 1281946, 1, 67186), +(107941, 1712522700, 3776013982, 1281946, 1, 67186), +(107941, 1712522700, 1187407512, 1277647, 2, 67186), +(107941, 1712522700, 3776013982, 1277647, 2, 67186), +(107941, 1712522700, 1187407512, 1277645, 2, 67186), +(107941, 1712522700, 3776013982, 1277645, 2, 67186), +(107941, 1712522700, 1187407512, 1270634, 1, 67186), +(107941, 1712522700, 3776013982, 1270634, 1, 67186), +(107941, 1712522700, 1187407512, 1270085, 1, 67186), +(107941, 1712522700, 3776013982, 1270085, 1, 67186), +(107941, 1712522700, 1187407512, 1270079, 1, 67186), +(107941, 1712522700, 3776013982, 1270079, 1, 67186), +(107941, 1712522700, 1187407512, 1258411, 1, 67186), +(107941, 1712522700, 3776013982, 1258411, 1, 67186), +(107941, 1712522700, 1187407512, 1258410, 1, 67186), +(107941, 1712522700, 3776013982, 1258410, 1, 67186), +(107941, 1712522700, 1187407512, 1258336, 1, 67186), +(107941, 1712522700, 3776013982, 1258336, 1, 67186), +(107941, 1712522700, 1187407512, 1257809, 1, 67186), +(107941, 1712522700, 3776013982, 1257809, 1, 67186), +(107941, 1712522700, 1187407512, 1257729, 1, 67186), +(107941, 1712522700, 3776013982, 1257729, 1, 67186), +(107941, 1712522700, 1187407512, 1257728, 1, 67186), +(107941, 1712522700, 3776013982, 1257728, 1, 67186), +(107941, 1712522700, 1187407512, 1257716, 1, 67186), +(107941, 1712522700, 3776013982, 1257716, 1, 67186), +(107941, 1712522700, 1187407512, 1257505, 1, 67186), +(107941, 1712522700, 3776013982, 1257505, 1, 67186), +(107941, 1712522700, 1187407512, 1256189, 1, 67186), +(107941, 1712522700, 3776013982, 1256189, 1, 67186), +(107941, 1712522700, 1187407512, 1255966, 1, 67186), +(107941, 1712522700, 3776013982, 1255966, 1, 67186), +(107941, 1712522700, 1187407512, 1253337, 1, 67186), +(107941, 1712522700, 3776013982, 1253337, 1, 67186), +(107941, 1712522700, 1187407512, 1253336, 1, 67186), +(107941, 1712522700, 3776013982, 1253336, 1, 67186), +(107941, 1712522700, 1187407512, 1253194, 1, 67186), +(107941, 1712522700, 3776013982, 1253194, 1, 67186), +(107941, 1712522700, 1187407512, 1253193, 1, 67186), +(107941, 1712522700, 3776013982, 1253193, 1, 67186), +(107941, 1712522700, 1187407512, 1253185, 1, 67186), +(107941, 1712522700, 3776013982, 1253185, 1, 67186), +(107941, 1712522700, 1187407512, 1253064, 1, 67186), +(107941, 1712522700, 3776013982, 1253064, 1, 67186), +(107941, 1712522700, 1187407512, 1252431, 1, 67186), +(107941, 1712522700, 3776013982, 1252431, 1, 67186), +(107941, 1712522700, 1187407512, 1241032, 1, 67186), +(107941, 1712522700, 3776013982, 1241032, 1, 67186), +(107941, 1712522700, 1187407512, 1241023, 1, 67186), +(107941, 1712522700, 3776013982, 1241023, 1, 67186), +(107941, 1712522700, 1187407512, 1235076, 1, 67186), +(107941, 1712522700, 3776013982, 1235076, 1, 67186), +(107941, 1712522700, 1187407512, 1235075, 1, 67186), +(107941, 1712522700, 3776013982, 1235075, 1, 67186), +(107941, 1712522700, 1187407512, 1235072, 1, 67186), +(107941, 1712522700, 3776013982, 1235072, 1, 67186), +(107941, 1712522700, 1187407512, 1235067, 1, 67186), +(107941, 1712522700, 3776013982, 1235067, 1, 67186), +(107941, 1712522700, 1187407512, 1235066, 1, 67186), +(107941, 1712522700, 3776013982, 1235066, 1, 67186), +(107941, 1712522700, 1187407512, 1235065, 1, 67186), +(107941, 1712522700, 3776013982, 1235065, 1, 67186), +(107941, 1712522700, 1187407512, 1235037, 1, 67186), +(107941, 1712522700, 3776013982, 1235037, 1, 67186), +(107941, 1712522700, 1187407512, 1233865, 1, 67186), +(107941, 1712522700, 3776013982, 1233865, 1, 67186), +(107941, 1712522700, 1187407512, 1228865, 1, 67186), +(107941, 1712522700, 3776013982, 1228865, 1, 67186), +(107941, 1712522700, 1187407512, 1225598, 1, 67186), +(107941, 1712522700, 3776013982, 1225598, 1, 67186), +(107941, 1712522700, 1187407512, 1225322, 1, 67186), +(107941, 1712522700, 3776013982, 1225322, 1, 67186), +(107941, 1712522700, 1187407512, 1225281, 1, 67186), +(107941, 1712522700, 3776013982, 1225281, 1, 67186), +(107941, 1712522700, 1187407512, 1225277, 1, 67186), +(107941, 1712522700, 3776013982, 1225277, 1, 67186), +(107941, 1712522700, 1187407512, 1225273, 1, 67186), +(107941, 1712522700, 3776013982, 1225273, 1, 67186), +(107941, 1712522700, 1187407512, 1225272, 1, 67186), +(107941, 1712522700, 3776013982, 1225272, 1, 67186), +(107941, 1712522700, 1187407512, 444803, 1, 67186), +(107941, 1712522700, 3776013982, 444803, 1, 67186), +(107941, 1712522700, 2524150337, 2535, 1, 67186), +(107941, 1712522700, 2035710060, 35537, 1, 67186), +(107941, 1712522700, 2035710060, 32672, 1, 67186), +(107941, 1712522700, 2035710060, 32669, 1, 67186), +(107941, 1712522700, 2035710060, 31527, 1, 67186), +(107941, 1712522700, 2035710060, 31282, 1, 67186), +(107941, 1712522700, 2035710060, 31281, 1, 67186), +(107941, 1712522700, 2035710060, 31280, 1, 67186), +(107941, 1712522700, 3205218938, 56772, 1, 67186), +(107941, 1712522700, 3205218938, 56771, 1, 67186), +(107941, 1712522700, 3205218938, 56770, 1, 67186), +(107941, 1712522700, 3205218938, 22337, 1, 67186), +(107941, 1712522700, 793851790, 3347, 1, 67186), +(107941, 1712522700, 793851790, 3346, 1, 67186), +(107941, 1712522700, 793851790, 3345, 1, 67186), +(107941, 1712522700, 793851790, 3344, 1, 67186), +(107941, 1712522700, 793851790, 3343, 1, 67186), +(107941, 1712522700, 793851790, 3342, 1, 67186), +(107941, 1712522700, 793851790, 3341, 1, 67186), +(107941, 1712522700, 35137211, 309753, 1, 67186), +(107941, 1712522700, 35137211, 309750, 3, 67186), +(107941, 1712522700, 35137211, 309106, 3, 67186), +(107941, 1712522700, 35137211, 308983, 1, 67186), +(107941, 1712522700, 35137211, 308778, 1, 67186), +(107941, 1712522700, 35137211, 308501, 1, 67186), +(107941, 1712522700, 35137211, 307565, 3, 67186), +(107941, 1712522700, 35137211, 307197, 1, 67186), +(107941, 1712522700, 35137211, 306852, 1, 67186), +(107941, 1712522700, 35137211, 306851, 1, 67186), +(107941, 1712522700, 35137211, 306762, 3, 67186), +(107941, 1712522700, 35137211, 306157, 3, 67186), +(107941, 1712522700, 35137211, 305742, 1, 67186), +(107941, 1712522700, 35137211, 305450, 1, 67186), +(107941, 1712522700, 35137211, 304923, 3, 67186), +(107941, 1712522700, 35137211, 304524, 3, 67186), +(107941, 1712522700, 35137211, 304509, 1, 67186), +(107941, 1712522700, 35137211, 304508, 1, 67186), +(107941, 1712522700, 35137211, 304505, 1, 67186), +(107941, 1712522700, 35137211, 303990, 1, 67186), +(107941, 1712522700, 35137211, 303988, 1, 67186), +(107941, 1712522700, 35137211, 303870, 1, 67186), +(107941, 1712522700, 35137211, 303530, 1, 67186), +(107941, 1712522700, 35137211, 303469, 1, 67186), +(107941, 1712522700, 35137211, 302008, 1, 67186), +(107941, 1712522700, 35137211, 301212, 3, 67186), +(107941, 1712522700, 35137211, 301005, 1, 67186), +(107941, 1712522700, 35137211, 300642, 1, 67186), +(107941, 1712522700, 35137211, 300632, 1, 67186), +(107941, 1712522700, 35137211, 299668, 1, 67186), +(107941, 1712522700, 35137211, 299666, 1, 67186), +(107941, 1712522700, 35137211, 298821, 1, 67186), +(107941, 1712522700, 35137211, 296530, 1, 67186), +(107941, 1712522700, 35137211, 296471, 1, 67186), +(107941, 1712522700, 35137211, 296185, 1, 67186), +(107941, 1712522700, 35137211, 296020, 1, 67186), +(107941, 1712522700, 35137211, 296015, 3, 67186), +(107941, 1712522700, 35137211, 295738, 1, 67186), +(107941, 1712522700, 35137211, 295405, 1, 67186), +(107941, 1712522700, 35137211, 295258, 1, 67186), +(107941, 1712522700, 35137211, 293787, 1, 67186), +(107941, 1712522700, 35137211, 293774, 1, 67186), +(107941, 1712522700, 35137211, 293748, 1, 67186), +(107941, 1712522700, 35137211, 293576, 1, 67186), +(107941, 1712522700, 35137211, 293014, 3, 67186), +(107941, 1712522700, 35137211, 292680, 3, 67186), +(107941, 1712522700, 35137211, 292548, 3, 67186), +(107941, 1712522700, 35137211, 292410, 1, 67186), +(107941, 1712522700, 35137211, 291754, 1, 67186), +(107941, 1712522700, 35137211, 291658, 3, 67186), +(107941, 1712522700, 35137211, 291236, 1, 67186), +(107941, 1712522700, 35137211, 290529, 3, 67186), +(107941, 1712522700, 35137211, 289969, 1, 67186), +(107941, 1712522700, 35137211, 289399, 1, 67186), +(107941, 1712522700, 35137211, 288359, 1, 67186), +(107941, 1712522700, 35137211, 288136, 3, 67186), +(107941, 1712522700, 35137211, 288133, 1, 67186), +(107941, 1712522700, 35137211, 287914, 1, 67186), +(107941, 1712522700, 35137211, 287852, 1, 67186), +(107941, 1712522700, 35137211, 287847, 1, 67186), +(107941, 1712522700, 35137211, 287600, 1, 67186), +(107941, 1712522700, 35137211, 286257, 1, 67186), +(107941, 1712522700, 35137211, 282160, 3, 67186), +(107941, 1712522700, 35137211, 247439, 1, 67186), +(107941, 1712522700, 35137211, 239474, 1, 67186), +(107940, 3213024157, 4030871717, 1316373, 1, 67186), +(107936, 4227797804, 3322146344, 804911, 1, 67186), +(107936, 4227797804, 3322146344, 804907, 1, 67186), +(107936, 4227797804, 1720692227, 243176, 1, 67186), +(107936, 4227797804, 1187407512, 1250759, 1, 67186), +(107936, 4227797804, 3776013982, 1250759, 1, 67186), +(107932, 3422364440, 1010104591, 26054, 1, 67186), +(107932, 3422364440, 1010104591, 26049, 2, 67186), +(107932, 3422364440, 326190544, 16231, 1, 67186), +(107932, 3422364440, 326190544, 11499, 1, 67186), +(107932, 3422364440, 326190544, 10852, 1, 67186), +(107932, 3422364440, 326190544, 8989, 1, 67186), +(107932, 3422364440, 326190544, 5689, 1, 67186), +(107932, 3422364440, 326190544, 5115, 1, 67186), +(107932, 3422364440, 326190544, 1801, 1, 67186), +(107932, 3422364440, 326190544, 1261, 1, 67186), +(107932, 3422364440, 331613093, 651779, 2, 67186), +(107932, 3422364440, 331613093, 651727, 2, 67186), +(107932, 3422364440, 331613093, 651722, 2, 67186), +(107932, 3422364440, 331613093, 619183, 2, 67186), +(107932, 3422364440, 331613093, 602676, 2, 67186), +(107932, 3422364440, 331613093, 584571, 2, 67186), +(107932, 3422364440, 331613093, 574562, 2, 67186), +(107932, 3422364440, 331613093, 567311, 2, 67186), +(107931, 278695362, 331613093, 629752, 3, 67186), +(107930, 1472651147, 3322146344, 780179, 1, 67186), +(107930, 1472651147, 4030871717, 1214968, 1, 67186), +(107930, 1472651147, 3386943305, 319886, 3, 67186), +(107928, 2888328396, 3855640965, 5841, 1, 67186), +(107928, 2888328396, 3855640965, 5840, 1, 67186), +(107928, 2888328396, 3855640965, 5839, 1, 67186), +(107928, 2888328396, 3855640965, 5838, 1, 67186), +(107928, 2888328396, 3855640965, 5837, 1, 67186), +(107928, 2888328396, 3855640965, 5836, 1, 67186), +(107928, 2888328396, 3855640965, 5835, 1, 67186), +(107928, 2888328396, 3855640965, 5834, 1, 67186), +(107928, 2888328396, 3855640965, 5833, 1, 67186), +(107928, 2888328396, 3855640965, 5832, 1, 67186), +(107928, 2888328396, 3855640965, 5831, 1, 67186), +(107928, 2888328396, 3855640965, 5830, 1, 67186), +(107928, 2888328396, 3855640965, 5829, 1, 67186), +(107928, 2888328396, 3855640965, 5828, 1, 67186), +(107928, 2888328396, 3855640965, 5827, 1, 67186), +(107928, 2888328396, 3855640965, 5826, 1, 67186), +(107928, 2888328396, 3855640965, 5825, 1, 67186), +(107928, 2888328396, 3855640965, 5824, 1, 67186), +(107928, 2888328396, 3855640965, 5823, 1, 67186), +(107928, 2888328396, 3855640965, 5822, 1, 67186), +(107928, 2888328396, 3855640965, 5821, 1, 67186), +(107928, 2888328396, 3855640965, 5820, 1, 67186), +(107925, 3342522840, 2995956864, 137688, 1, 67186), +(107925, 3342522840, 2995956864, 137685, 1, 67186), +(107925, 3342522840, 2995956864, 137681, 1, 67186), +(107925, 3342522840, 3699769440, 31063, 1, 67186), +(107925, 3342522840, 3699769440, 31061, 1, 67186), +(107925, 3342522840, 3699769440, 31059, 1, 67186), +(107925, 3342522840, 3699769440, 31057, 1, 67186), +(107924, 2698702069, 3386943305, 333205, 3, 67186), +(107924, 2698702069, 3386943305, 333201, 3, 67186), +(107924, 2698702069, 3386943305, 333197, 3, 67186), +(107923, 3207697549, 1344507586, 257741, 1, 67186), +(107923, 3207697549, 428746933, 257741, 3, 67186), +(107923, 3207697549, 2442913102, 257741, 1, 67186), +(107923, 3207697549, 3465080266, 257741, 1, 67186), +(107923, 3207697549, 3037505077, 257741, 3, 67186), +(107923, 3207697549, 1417785224, 257741, 3, 67186), +(107923, 3207697549, 1344507586, 257735, 1, 67186), +(107923, 3207697549, 428746933, 257735, 3, 67186), +(107923, 3207697549, 2442913102, 257735, 1, 67186), +(107923, 3207697549, 3465080266, 257735, 1, 67186), +(107923, 3207697549, 3037505077, 257735, 3, 67186), +(107923, 3207697549, 1417785224, 257735, 3, 67186), +(107923, 3207697549, 1344507586, 255844, 1, 67186), +(107923, 3207697549, 428746933, 255844, 3, 67186), +(107923, 3207697549, 2442913102, 255844, 1, 67186), +(107923, 3207697549, 3465080266, 255844, 1, 67186), +(107923, 3207697549, 3037505077, 255844, 3, 67186), +(107923, 3207697549, 1417785224, 255844, 3, 67186), +(107923, 3207697549, 1344507586, 255843, 1, 67186), +(107923, 3207697549, 428746933, 255843, 3, 67186), +(107923, 3207697549, 2442913102, 255843, 1, 67186), +(107923, 3207697549, 3465080266, 255843, 1, 67186), +(107923, 3207697549, 3037505077, 255843, 3, 67186), +(107923, 3207697549, 1417785224, 255843, 3, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107923, 3207697549, 1344507586, 248592, 1, 67186), +(107923, 3207697549, 428746933, 248592, 3, 67186), +(107923, 3207697549, 2442913102, 248592, 1, 67186), +(107923, 3207697549, 3465080266, 248592, 1, 67186), +(107923, 3207697549, 3037505077, 248592, 3, 67186), +(107923, 3207697549, 1417785224, 248592, 3, 67186), +(107923, 3207697549, 1344507586, 248135, 1, 67186), +(107923, 3207697549, 428746933, 248135, 3, 67186), +(107923, 3207697549, 2442913102, 248135, 1, 67186), +(107923, 3207697549, 3465080266, 248135, 1, 67186), +(107923, 3207697549, 3037505077, 248135, 3, 67186), +(107923, 3207697549, 1417785224, 248135, 3, 67186), +(107922, 2183863618, 1274215428, 869, 1, 67186), +(107921, 1686762676, 3764692828, 345687, 1, 67186), +(107921, 1686762676, 3764692828, 342077, 1, 67186), +(107921, 1686762676, 1163127287, 119492, 3, 67186), +(107921, 1686762676, 1163127287, 112947, 3, 67186), +(107921, 1686762676, 3386943305, 334188, 3, 67186), +(107921, 1686762676, 3386943305, 334175, 3, 67186), +(107920, 3991526651, 3386943305, 331958, 3, 67186), +(107920, 3991526651, 3386943305, 331954, 3, 67186), +(107920, 3991526651, 3386943305, 326150, 3, 67186), +(107920, 3991526651, 3386943305, 326149, 3, 67186), +(107920, 3991526651, 3386943305, 326148, 3, 67186), +(107920, 3991526651, 3386943305, 325147, 3, 67186), +(107920, 3991526651, 3386943305, 325146, 3, 67186), +(107920, 3991526651, 3386943305, 325145, 3, 67186), +(107920, 3991526651, 3386943305, 325144, 3, 67186), +(107919, 1390558563, 2124448848, 232526, 2, 67186), +(107919, 1390558563, 2712461791, 232526, 1, 67186), +(107919, 1390558563, 4030871717, 896453, 1, 67186), +(107919, 1390558563, 4030871717, 890886, 1, 67186), +(107918, 1032520548, 1163127287, 121243, 3, 67186), +(107918, 1032520548, 3386943305, 172189, 3, 67186), +(107917, 2469400873, 3179597154, 2907, 1, 67186), +(107916, 3770613778, 326190544, 21946, 1, 67186), +(107916, 3770613778, 326190544, 21945, 1, 67186), +(107916, 3770613778, 326190544, 21061, 1, 67186), +(107916, 3770613778, 326190544, 21060, 1, 67186), +(107916, 3770613778, 326190544, 17750, 1, 67186), +(107916, 3770613778, 326190544, 16102, 1, 67186), +(107916, 3770613778, 326190544, 16101, 1, 67186), +(107916, 3770613778, 326190544, 16100, 1, 67186), +(107916, 3770613778, 326190544, 16099, 1, 67186), +(107916, 3770613778, 326190544, 16098, 1, 67186), +(107914, 3357844431, 1163127287, 120099, 3, 67186), +(107914, 3357844431, 1163127287, 120077, 3, 67186), +(107913, 384452706, 1187407512, 1276894, 1, 67186), +(107913, 384452706, 3776013982, 1276894, 1, 67186), +(107913, 384452706, 261693969, 94625, 1, 67186), +(107913, 384452706, 986198281, 94625, 3, 67186), +(107913, 384452706, 793851790, 3418, 1, 67186), +(107912, 2547628518, 1163127287, 100784, 3, 67186), +(107912, 2547628518, 1163127287, 92847, 3, 67186), +(107912, 2547628518, 1163127287, 92759, 3, 67186), +(107912, 2547628518, 4030871717, 1319202, 1, 67186), +(107912, 2547628518, 4030871717, 1319201, 1, 67186), +(107912, 2547628518, 4030871717, 1319200, 1, 67186), +(107912, 2547628518, 4030871717, 1319005, 1, 67186), +(107908, 2997885034, 1163127287, 114352, 3, 67186), +(107905, 427460882, 844464874, 330713, 1, 67186), +(107905, 427460882, 844464874, 327196, 2, 67186), +(107905, 427460882, 2527642838, 1008, 3, 67186), +(107905, 427460882, 2527642838, 1007, 3, 67186), +(107905, 427460882, 2793276977, 29457, 1, 67186), +(107905, 427460882, 2793276977, 29456, 1, 67186), +(107905, 427460882, 2793276977, 29455, 1, 67186), +(107905, 427460882, 2793276977, 28843, 2, 67186), +(107905, 427460882, 2793276977, 28842, 2, 67186), +(107905, 427460882, 1512352357, 243, 1, 67186), +(107905, 427460882, 1512352357, 242, 1, 67186), +(107904, 1006646172, 1163127287, 128520, 3, 67186), +(107904, 1006646172, 1163127287, 128519, 3, 67186), +(107904, 1006646172, 1163127287, 18513, 3, 67186), +(107904, 1006646172, 1163127287, 18358, 3, 67186), +(107904, 1006646172, 3322146344, 88185, 1, 67186), +(107904, 1006646172, 4030871717, 1319104, 1, 67186), +(107904, 1006646172, 4030871717, 1284187, 1, 67186), +(107904, 1006646172, 4030871717, 349470, 1, 67186), +(107904, 1006646172, 4030871717, 298412, 1, 67186), +(107904, 1006646172, 4030871717, 260932, 1, 67186), +(107904, 1006646172, 4030871717, 260931, 1, 67186), +(107904, 1006646172, 4030871717, 260930, 1, 67186), +(107904, 1006646172, 4030871717, 191104, 1, 67186), +(107904, 1006646172, 4030871717, 191084, 1, 67186), +(107904, 1006646172, 4030871717, 179713, 1, 67186), +(107904, 1006646172, 4030871717, 179708, 1, 67186), +(107904, 1006646172, 4030871717, 132060, 1, 67186), +(107904, 1006646172, 4030871717, 129048, 1, 67186), +(107904, 1006646172, 4030871717, 86331, 1, 67186), +(107904, 1006646172, 4030871717, 15852, 1, 67186), +(107903, 3981340217, 4030871717, 1266430, 1, 67186), +(107903, 3981340217, 4030871717, 1264711, 1, 67186), +(107903, 3981340217, 4030871717, 260998, 1, 67186), +(107903, 3981340217, 4030871717, 260997, 1, 67186), +(107903, 3981340217, 4030871717, 191049, 1, 67186), +(107903, 3981340217, 4030871717, 191048, 1, 67186), +(107903, 3981340217, 4030871717, 191047, 1, 67186), +(107903, 3981340217, 4030871717, 191046, 1, 67186), +(107903, 3981340217, 4030871717, 179723, 1, 67186), +(107901, 2094367211, 1163127287, 128220, 3, 67186), +(107901, 2094367211, 1163127287, 116321, 3, 67186), +(107901, 2094367211, 1163127287, 116320, 3, 67186), +(107900, 3219503508, 2524150337, 2837, 4, 67186), +(107899, 2683435415, 1163127287, 122008, 3, 67186), +(107898, 384329593, 3108775943, 157422, 3, 67186), +(107898, 384329593, 3108775943, 157421, 3, 67186), +(107896, 3691541332, 4033975491, 608057, 2, 67186), +(107896, 3691541332, 4033975491, 552672, 2, 67186), +(107896, 3691541332, 1181150530, 754613, 1, 67186), +(107896, 3691541332, 1181150530, 754387, 1, 67186), +(107896, 3691541332, 1181150530, 724924, 2, 67186), +(107896, 3691541332, 1181150530, 603949, 2, 67186), +(107896, 3691541332, 760092799, 236, 1, 67186), +(107896, 3691541332, 760092799, 235, 1, 67186), +(107896, 3691541332, 3764692828, 352446, 1, 67186), +(107896, 3691541332, 3764692828, 352421, 2, 67186), +(107896, 3691541332, 1163127287, 128257, 3, 67186), +(107896, 3691541332, 1163127287, 128244, 3, 67186), +(107896, 3691541332, 1163127287, 128216, 2, 67186), +(107896, 3691541332, 1163127287, 128215, 2, 67186), +(107896, 3691541332, 1163127287, 128214, 2, 67186), +(107896, 3691541332, 3322146344, 843802, 1, 67186), +(107896, 3691541332, 3322146344, 843748, 2, 67186), +(107896, 3691541332, 3322146344, 830875, 1, 67186), +(107896, 3691541332, 3322146344, 764851, 1, 67186), +(107896, 3691541332, 4030871717, 1319047, 1, 67186), +(107896, 3691541332, 4030871717, 1318967, 2, 67186), +(107896, 3691541332, 4030871717, 1318959, 2, 67186), +(107896, 3691541332, 4030871717, 1318955, 1, 67186), +(107896, 3691541332, 4030871717, 1189889, 1, 67186), +(107896, 3691541332, 1187407512, 1296448, 1, 67186), +(107896, 3691541332, 3776013982, 1296448, 1, 67186), +(107896, 3691541332, 1187407512, 1296396, 2, 67186), +(107896, 3691541332, 3776013982, 1296396, 2, 67186), +(107896, 3691541332, 1187407512, 472053, 1, 67186), +(107896, 3691541332, 3776013982, 472053, 1, 67186), +(107895, 4037088232, 1344507586, 274427, 1, 67186), +(107895, 4037088232, 428746933, 274427, 3, 67186), +(107895, 4037088232, 2442913102, 274427, 1, 67186), +(107895, 4037088232, 3465080266, 274427, 3, 67186), +(107895, 4037088232, 3037505077, 274427, 3, 67186), +(107895, 4037088232, 1417785224, 274427, 3, 67186), +(107894, 2832821458, 1163127287, 119698, 3, 67186), +(107894, 2832821458, 1163127287, 119697, 3, 67186), +(107892, 791975865, 3571931810, 39140, 3, 67186), +(107891, 955833960, 736158310, 37931, 2, 67186), +(107891, 955833960, 736158310, 37930, 2, 67186), +(107891, 955833960, 736158310, 35858, 2, 67186), +(107891, 955833960, 736158310, 35857, 2, 67186), +(107891, 955833960, 736158310, 35110, 2, 67186), +(107891, 955833960, 736158310, 34936, 2, 67186), +(107891, 955833960, 736158310, 34560, 2, 67186), +(107891, 955833960, 736158310, 31234, 2, 67186), +(107891, 955833960, 736158310, 31233, 2, 67186), +(107891, 955833960, 736158310, 31232, 2, 67186), +(107891, 955833960, 3232102598, 287705, 1, 67186), +(107891, 955833960, 3232102598, 277374, 1, 67186), +(107891, 955833960, 3232102598, 277372, 1, 67186), +(107891, 955833960, 3232102598, 277371, 1, 67186), +(107891, 955833960, 3232102598, 253483, 1, 67186), +(107891, 955833960, 908293937, 332176, 1, 67186), +(107891, 955833960, 908293937, 332175, 1, 67186), +(107891, 955833960, 908293937, 327695, 1, 67186), +(107891, 955833960, 908293937, 327694, 1, 67186), +(107891, 955833960, 908293937, 325839, 1, 67186), +(107891, 955833960, 908293937, 325429, 1, 67186), +(107891, 955833960, 908293937, 324387, 1, 67186), +(107891, 955833960, 908293937, 324014, 1, 67186), +(107891, 955833960, 908293937, 313284, 1, 67186), +(107891, 955833960, 908293937, 313283, 1, 67186), +(107891, 955833960, 908293937, 313282, 1, 67186), +(107891, 955833960, 908293937, 313280, 1, 67186), +(107891, 955833960, 908293937, 289292, 1, 67186), +(107891, 955833960, 2445379776, 10028, 1, 67186), +(107889, 4190308747, 1344507586, 267643, 1, 67186), +(107889, 4190308747, 428746933, 267643, 3, 67186), +(107889, 4190308747, 2442913102, 267643, 1, 67186), +(107889, 4190308747, 3465080266, 267643, 3, 67186), +(107889, 4190308747, 3037505077, 267643, 3, 67186), +(107889, 4190308747, 1417785224, 267643, 3, 67186), +(107889, 4190308747, 1344507586, 267642, 1, 67186), +(107889, 4190308747, 428746933, 267642, 3, 67186), +(107889, 4190308747, 2442913102, 267642, 1, 67186), +(107889, 4190308747, 3465080266, 267642, 3, 67186), +(107889, 4190308747, 3037505077, 267642, 3, 67186), +(107889, 4190308747, 1417785224, 267642, 3, 67186), +(107889, 4190308747, 1344507586, 267641, 1, 67186), +(107889, 4190308747, 428746933, 267641, 1, 67186), +(107889, 4190308747, 2442913102, 267641, 1, 67186), +(107889, 4190308747, 3465080266, 267641, 3, 67186), +(107889, 4190308747, 3037505077, 267641, 3, 67186), +(107889, 4190308747, 1417785224, 267641, 3, 67186), +(107889, 4190308747, 1344507586, 267640, 1, 67186), +(107889, 4190308747, 428746933, 267640, 1, 67186), +(107889, 4190308747, 2442913102, 267640, 1, 67186), +(107889, 4190308747, 3465080266, 267640, 3, 67186), +(107889, 4190308747, 3037505077, 267640, 3, 67186), +(107889, 4190308747, 1417785224, 267640, 3, 67186), +(107889, 4190308747, 1344507586, 267639, 1, 67186), +(107889, 4190308747, 428746933, 267639, 1, 67186), +(107889, 4190308747, 2442913102, 267639, 1, 67186), +(107889, 4190308747, 3465080266, 267639, 3, 67186), +(107889, 4190308747, 3037505077, 267639, 3, 67186), +(107889, 4190308747, 1417785224, 267639, 3, 67186), +(107889, 4190308747, 1344507586, 267638, 1, 67186), +(107889, 4190308747, 428746933, 267638, 1, 67186), +(107889, 4190308747, 2442913102, 267638, 1, 67186), +(107889, 4190308747, 3465080266, 267638, 3, 67186), +(107889, 4190308747, 3037505077, 267638, 3, 67186), +(107889, 4190308747, 1417785224, 267638, 3, 67186), +(107889, 4190308747, 1344507586, 267607, 1, 67186), +(107889, 4190308747, 428746933, 267607, 1, 67186), +(107889, 4190308747, 2442913102, 267607, 1, 67186), +(107889, 4190308747, 3465080266, 267607, 3, 67186), +(107889, 4190308747, 3037505077, 267607, 3, 67186), +(107889, 4190308747, 1417785224, 267607, 3, 67186), +(107889, 4190308747, 1344507586, 267606, 1, 67186), +(107889, 4190308747, 428746933, 267606, 1, 67186), +(107889, 4190308747, 2442913102, 267606, 1, 67186), +(107889, 4190308747, 3465080266, 267606, 3, 67186), +(107889, 4190308747, 3037505077, 267606, 3, 67186), +(107889, 4190308747, 1417785224, 267606, 3, 67186), +(107889, 4190308747, 1344507586, 267605, 1, 67186), +(107889, 4190308747, 428746933, 267605, 1, 67186), +(107889, 4190308747, 2442913102, 267605, 1, 67186), +(107889, 4190308747, 3465080266, 267605, 3, 67186), +(107889, 4190308747, 3037505077, 267605, 3, 67186), +(107889, 4190308747, 1417785224, 267605, 3, 67186), +(107889, 4190308747, 1344507586, 267604, 1, 67186), +(107889, 4190308747, 428746933, 267604, 1, 67186), +(107889, 4190308747, 2442913102, 267604, 1, 67186), +(107889, 4190308747, 3465080266, 267604, 3, 67186), +(107889, 4190308747, 3037505077, 267604, 3, 67186), +(107889, 4190308747, 1417785224, 267604, 3, 67186), +(107889, 4190308747, 1344507586, 267482, 1, 67186), +(107889, 4190308747, 428746933, 267482, 1, 67186), +(107889, 4190308747, 2442913102, 267482, 1, 67186), +(107889, 4190308747, 3465080266, 267482, 3, 67186), +(107889, 4190308747, 3037505077, 267482, 3, 67186), +(107889, 4190308747, 1417785224, 267482, 3, 67186), +(107889, 4190308747, 1344507586, 267481, 1, 67186), +(107889, 4190308747, 428746933, 267481, 1, 67186), +(107889, 4190308747, 2442913102, 267481, 1, 67186), +(107889, 4190308747, 3465080266, 267481, 3, 67186), +(107889, 4190308747, 3037505077, 267481, 3, 67186), +(107889, 4190308747, 1417785224, 267481, 3, 67186), +(107889, 4190308747, 1344507586, 267480, 1, 67186), +(107889, 4190308747, 428746933, 267480, 1, 67186), +(107889, 4190308747, 2442913102, 267480, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107889, 4190308747, 3465080266, 267480, 3, 67186), +(107889, 4190308747, 3037505077, 267480, 3, 67186), +(107889, 4190308747, 1417785224, 267480, 3, 67186), +(107889, 4190308747, 1344507586, 267479, 1, 67186), +(107889, 4190308747, 428746933, 267479, 1, 67186), +(107889, 4190308747, 2442913102, 267479, 1, 67186), +(107889, 4190308747, 3465080266, 267479, 3, 67186), +(107889, 4190308747, 3037505077, 267479, 3, 67186), +(107889, 4190308747, 1417785224, 267479, 3, 67186), +(107889, 4190308747, 1344507586, 266432, 1, 67186), +(107889, 4190308747, 428746933, 266432, 1, 67186), +(107889, 4190308747, 2442913102, 266432, 1, 67186), +(107889, 4190308747, 3465080266, 266432, 3, 67186), +(107889, 4190308747, 3037505077, 266432, 3, 67186), +(107889, 4190308747, 1417785224, 266432, 3, 67186), +(107889, 4190308747, 1344507586, 266431, 1, 67186), +(107889, 4190308747, 428746933, 266431, 1, 67186), +(107889, 4190308747, 2442913102, 266431, 1, 67186), +(107889, 4190308747, 3465080266, 266431, 3, 67186), +(107889, 4190308747, 3037505077, 266431, 3, 67186), +(107889, 4190308747, 1417785224, 266431, 3, 67186), +(107889, 4190308747, 1344507586, 266430, 1, 67186), +(107889, 4190308747, 428746933, 266430, 1, 67186), +(107889, 4190308747, 2442913102, 266430, 1, 67186), +(107889, 4190308747, 3465080266, 266430, 3, 67186), +(107889, 4190308747, 3037505077, 266430, 3, 67186), +(107889, 4190308747, 1417785224, 266430, 3, 67186), +(107889, 4190308747, 1344507586, 266429, 1, 67186), +(107889, 4190308747, 428746933, 266429, 1, 67186), +(107889, 4190308747, 2442913102, 266429, 1, 67186), +(107889, 4190308747, 3465080266, 266429, 3, 67186), +(107889, 4190308747, 3037505077, 266429, 3, 67186), +(107889, 4190308747, 1417785224, 266429, 3, 67186), +(107889, 4190308747, 1344507586, 265740, 1, 67186), +(107889, 4190308747, 428746933, 265740, 3, 67186), +(107889, 4190308747, 2442913102, 265740, 1, 67186), +(107889, 4190308747, 3465080266, 265740, 3, 67186), +(107889, 4190308747, 3037505077, 265740, 3, 67186), +(107889, 4190308747, 1417785224, 265740, 3, 67186), +(107889, 4190308747, 1344507586, 265739, 1, 67186), +(107889, 4190308747, 428746933, 265739, 3, 67186), +(107889, 4190308747, 2442913102, 265739, 1, 67186), +(107889, 4190308747, 3465080266, 265739, 3, 67186), +(107889, 4190308747, 3037505077, 265739, 3, 67186), +(107889, 4190308747, 1417785224, 265739, 3, 67186), +(107889, 4190308747, 1344507586, 264507, 1, 67186), +(107889, 4190308747, 428746933, 264507, 3, 67186), +(107889, 4190308747, 2442913102, 264507, 1, 67186), +(107889, 4190308747, 3465080266, 264507, 3, 67186), +(107889, 4190308747, 3037505077, 264507, 3, 67186), +(107889, 4190308747, 1417785224, 264507, 3, 67186), +(107889, 4190308747, 1344507586, 263269, 1, 67186), +(107889, 4190308747, 428746933, 263269, 1, 67186), +(107889, 4190308747, 2442913102, 263269, 1, 67186), +(107889, 4190308747, 3465080266, 263269, 3, 67186), +(107889, 4190308747, 3037505077, 263269, 3, 67186), +(107889, 4190308747, 1417785224, 263269, 3, 67186), +(107889, 4190308747, 1344507586, 263268, 1, 67186), +(107889, 4190308747, 428746933, 263268, 1, 67186), +(107889, 4190308747, 2442913102, 263268, 1, 67186), +(107889, 4190308747, 3465080266, 263268, 3, 67186), +(107889, 4190308747, 3037505077, 263268, 3, 67186), +(107889, 4190308747, 1417785224, 263268, 3, 67186), +(107889, 4190308747, 1344507586, 263267, 1, 67186), +(107889, 4190308747, 428746933, 263267, 1, 67186), +(107889, 4190308747, 2442913102, 263267, 1, 67186), +(107889, 4190308747, 3465080266, 263267, 3, 67186), +(107889, 4190308747, 3037505077, 263267, 3, 67186), +(107889, 4190308747, 1417785224, 263267, 3, 67186), +(107889, 4190308747, 1344507586, 263265, 1, 67186), +(107889, 4190308747, 428746933, 263265, 1, 67186), +(107889, 4190308747, 2442913102, 263265, 1, 67186), +(107889, 4190308747, 3465080266, 263265, 3, 67186), +(107889, 4190308747, 3037505077, 263265, 3, 67186), +(107889, 4190308747, 1417785224, 263265, 3, 67186), +(107888, 2438431364, 3386943305, 93761, 3, 67186), +(107888, 2438431364, 3386943305, 87654, 3, 67186), +(107888, 2438431364, 3386943305, 76855, 3, 67186), +(107888, 2438431364, 3386943305, 76854, 3, 67186), +(107888, 2438431364, 3386943305, 76853, 3, 67186), +(107887, 852236095, 3764692828, 352383, 1, 67186), +(107887, 852236095, 1163127287, 125955, 3, 67186), +(107887, 852236095, 2875640223, 38861, 1, 67186), +(107887, 852236095, 3322146344, 843580, 1, 67186), +(107887, 852236095, 4030871717, 1318722, 1, 67186), +(107887, 852236095, 4030871717, 1318721, 1, 67186), +(107887, 852236095, 1187407512, 1296214, 1, 67186), +(107887, 852236095, 3776013982, 1296214, 1, 67186), +(107887, 852236095, 2120822102, 447286, 1, 67186), +(107887, 852236095, 2120822102, 447285, 1, 67186), +(107887, 852236095, 3653642729, 376, 1, 67186), +(107887, 852236095, 1673391669, 141, 1, 67186), +(107887, 852236095, 2791084701, 138, 1, 67186), +(107887, 852236095, 2793276977, 29453, 1, 67186), +(107887, 852236095, 2793276977, 29452, 1, 67186), +(107887, 852236095, 962617990, 13760, 2, 67186), +(107887, 852236095, 2518885667, 13760, 1, 67186), +(107887, 852236095, 312962813, 13760, 2, 67186), +(107887, 852236095, 2199425034, 31223, 1, 67186), +(107887, 852236095, 2199425034, 30634, 1, 67186), +(107887, 852236095, 2199425034, 29370, 1, 67186), +(107887, 852236095, 2199425034, 29368, 1, 67186), +(107887, 852236095, 2199425034, 29367, 1, 67186), +(107887, 852236095, 2199425034, 29366, 1, 67186), +(107886, 2462512281, 3322146344, 843566, 1, 67186), +(107886, 2462512281, 4030871717, 1318706, 1, 67186), +(107886, 2462512281, 1187407512, 1296205, 1, 67186), +(107886, 2462512281, 3776013982, 1296205, 1, 67186), +(107886, 2462512281, 2575642838, 760, 1, 67186), +(107885, 3365075720, 261693969, 94456, 3, 67186), +(107885, 3365075720, 986198281, 94456, 3, 67186), +(107885, 3365075720, 261693969, 94386, 1, 67186), +(107885, 3365075720, 986198281, 94386, 1, 67186), +(107885, 3365075720, 261693969, 94385, 1, 67186), +(107885, 3365075720, 986198281, 94385, 1, 67186), +(107885, 3365075720, 261693969, 92589, 3, 67186), +(107885, 3365075720, 986198281, 92589, 3, 67186), +(107883, 2308247876, 1163127287, 123279, 3, 67186), +(107881, 3331318891, 3386943305, 93885, 3, 67186), +(107881, 3331318891, 3386943305, 88159, 3, 67186), +(107881, 3331318891, 3386943305, 76641, 3, 67186), +(107881, 3331318891, 3386943305, 76640, 3, 67186), +(107881, 3331318891, 3386943305, 72408, 3, 67186), +(107877, 3162594780, 476847390, 192, 1, 67186), +(107876, 3832715583, 3764692828, 352377, 1, 67186), +(107876, 3832715583, 3764692828, 352376, 1, 67186), +(107876, 3832715583, 3322146344, 843538, 1, 67186), +(107876, 3832715583, 3322146344, 843537, 1, 67186), +(107876, 3832715583, 813076512, 205021, 2, 67186), +(107876, 3832715583, 813076512, 205020, 2, 67186), +(107876, 3832715583, 4030871717, 1318642, 1, 67186), +(107876, 3832715583, 4030871717, 1318641, 1, 67186), +(107876, 3832715583, 4193483863, 99730, 1, 67186), +(107876, 3832715583, 3689412649, 184419, 1, 67186), +(107876, 3832715583, 1187407512, 1296169, 1, 67186), +(107876, 3832715583, 3776013982, 1296169, 1, 67186), +(107876, 3832715583, 1187407512, 1296168, 1, 67186), +(107876, 3832715583, 3776013982, 1296168, 1, 67186), +(107876, 3832715583, 600565378, 665351, 2, 67186), +(107876, 3832715583, 600565378, 665333, 1, 67186), +(107876, 3832715583, 3386943305, 349580, 3, 67186), +(107876, 3832715583, 3386291891, 266004, 3, 67186), +(107875, 2995293232, 1163127287, 116828, 3, 67186), +(107874, 3299358537, 3322146344, 801212, 1, 67186), +(107874, 3299358537, 4030871717, 1248742, 1, 67186), +(107873, 858760266, 4150907485, 1224, 1, 67186), +(107872, 689957591, 240389885, 9569, 1, 67186), +(107872, 689957591, 240389885, 9568, 2, 67186), +(107872, 689957591, 312611497, 27641, 3, 67186), +(107872, 689957591, 312611497, 27640, 3, 67186), +(107872, 689957591, 1163127287, 122982, 3, 67186), +(107872, 689957591, 368401261, 7360, 1, 67186), +(107872, 689957591, 368401261, 7355, 2, 67186), +(107872, 689957591, 368401261, 7354, 2, 67186), +(107871, 3520656013, 3322146344, 839257, 1, 67186), +(107871, 3520656013, 3322146344, 839254, 1, 67186), +(107871, 3520656013, 4030871717, 1318610, 2, 67186), +(107871, 3520656013, 4030871717, 1311365, 1, 67186), +(107871, 3520656013, 3689412649, 184416, 2, 67186), +(107871, 3520656013, 1187407512, 1291767, 1, 67186), +(107871, 3520656013, 3776013982, 1291767, 1, 67186), +(107870, 294532277, 1163127287, 56348, 3, 67186), +(107869, 4261100399, 3425193231, 529585, 1, 67186), +(107869, 4261100399, 4146370265, 174064, 1, 67186), +(107869, 4261100399, 4030871717, 1284429, 1, 67186), +(107867, 2095764337, 1274215428, 198541, 1, 67186), +(107867, 2095764337, 1274215428, 186947, 1, 67186), +(107867, 2095764337, 1274215428, 180201, 1, 67186), +(107867, 2095764337, 1274215428, 141535, 1, 67186), +(107867, 2095764337, 1274215428, 129090, 1, 67186), +(107867, 2095764337, 1274215428, 101767, 1, 67186), +(107867, 2095764337, 1274215428, 101419, 1, 67186), +(107867, 2095764337, 1274215428, 101260, 1, 67186), +(107867, 2095764337, 1274215428, 100977, 1, 67186), +(107867, 2095764337, 1274215428, 100778, 1, 67186), +(107867, 2095764337, 1274215428, 100777, 1, 67186), +(107867, 2095764337, 1274215428, 100776, 1, 67186), +(107867, 2095764337, 1274215428, 100775, 1, 67186), +(107867, 2095764337, 1274215428, 100774, 1, 67186), +(107867, 2095764337, 1274215428, 100773, 1, 67186), +(107867, 2095764337, 1274215428, 96485, 1, 67186), +(107867, 2095764337, 1274215428, 96408, 1, 67186), +(107867, 2095764337, 1274215428, 96407, 1, 67186), +(107867, 2095764337, 1274215428, 96406, 1, 67186), +(107867, 2095764337, 1274215428, 96405, 1, 67186), +(107867, 2095764337, 1274215428, 96404, 1, 67186), +(107867, 2095764337, 1274215428, 96403, 1, 67186), +(107867, 2095764337, 1274215428, 96359, 1, 67186), +(107867, 2095764337, 1274215428, 96358, 1, 67186), +(107867, 2095764337, 1274215428, 96357, 1, 67186), +(107867, 2095764337, 1274215428, 92808, 1, 67186), +(107867, 2095764337, 1274215428, 92807, 1, 67186), +(107867, 2095764337, 1274215428, 92806, 1, 67186), +(107867, 2095764337, 1274215428, 92805, 1, 67186), +(107867, 2095764337, 1274215428, 92804, 1, 67186), +(107867, 2095764337, 1274215428, 92803, 1, 67186), +(107867, 2095764337, 1274215428, 92802, 1, 67186), +(107867, 2095764337, 1274215428, 92801, 1, 67186), +(107867, 2095764337, 1274215428, 83325, 1, 67186), +(107867, 2095764337, 1274215428, 83324, 1, 67186), +(107867, 2095764337, 1274215428, 83323, 1, 67186), +(107867, 2095764337, 1274215428, 83126, 1, 67186), +(107867, 2095764337, 1274215428, 83125, 1, 67186), +(107867, 2095764337, 1274215428, 83123, 1, 67186), +(107867, 2095764337, 1274215428, 62410, 1, 67186), +(107867, 2095764337, 1274215428, 62409, 1, 67186), +(107867, 2095764337, 1274215428, 62408, 1, 67186), +(107867, 2095764337, 1274215428, 49020, 1, 67186), +(107867, 2095764337, 1274215428, 35941, 1, 67186), +(107867, 2095764337, 1274215428, 26820, 1, 67186), +(107867, 2095764337, 1274215428, 7614, 1, 67186), +(107867, 2095764337, 1274215428, 3664, 1, 67186), +(107867, 2095764337, 1274215428, 3644, 1, 67186), +(107867, 2095764337, 1274215428, 3604, 1, 67186), +(107867, 2095764337, 1274215428, 3584, 1, 67186), +(107867, 2095764337, 1274215428, 3521, 1, 67186), +(107867, 2095764337, 1274215428, 3471, 1, 67186), +(107867, 2095764337, 1274215428, 3453, 1, 67186), +(107867, 2095764337, 1274215428, 3452, 1, 67186), +(107867, 2095764337, 1274215428, 3436, 1, 67186), +(107867, 2095764337, 1274215428, 2583, 1, 67186), +(107867, 2095764337, 1274215428, 2569, 1, 67186), +(107867, 2095764337, 1274215428, 2568, 1, 67186), +(107867, 2095764337, 1274215428, 2567, 1, 67186), +(107867, 2095764337, 1274215428, 2467, 1, 67186), +(107867, 2095764337, 1274215428, 2466, 1, 67186), +(107867, 2095764337, 1274215428, 2465, 1, 67186), +(107864, 3081562933, 1163127287, 126250, 3, 67186), +(107864, 3081562933, 1163127287, 64648, 3, 67186), +(107860, 1319544423, 3108775943, 155203, 1, 67186), +(107860, 1319544423, 3108775943, 155192, 1, 67186), +(107860, 1319544423, 3108775943, 155185, 1, 67186), +(107860, 1319544423, 3108775943, 154642, 1, 67186), +(107859, 894650481, 3664936999, 33417, 1, 67186), +(107859, 894650481, 3898252553, 11663, 1, 67186), +(107859, 894650481, 3898252553, 11662, 2, 67186), +(107859, 894650481, 3898252553, 11661, 2, 67186), +(107859, 894650481, 3898252553, 11616, 2, 67186), +(107857, 2004944750, 3108775943, 156525, 1, 67186), +(107857, 2004944750, 3108775943, 156524, 1, 67186), +(107857, 2004944750, 3108775943, 151196, 1, 67186), +(107857, 2004944750, 3745449290, 8614, 1, 67186), +(107856, 3996773636, 261693969, 96080, 3, 67186), +(107856, 3996773636, 986198281, 96080, 1, 67186), +(107856, 3996773636, 261693969, 94380, 3, 67186), +(107856, 3996773636, 986198281, 94380, 1, 67186), +(107855, 1986811745, 3764045193, 5001, 1, 67186), +(107855, 1986811745, 3764045193, 4216, 1, 67186), +(107855, 1986811745, 3764045193, 4215, 1, 67186), +(107855, 1986811745, 3764045193, 3748, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107855, 1986811745, 3764045193, 2714, 1, 67186), +(107855, 1986811745, 3764045193, 1704, 1, 67186), +(107855, 1986811745, 3764045193, 463, 1, 67186), +(107855, 1986811745, 3764045193, 43, 1, 67186), +(107854, 909740878, 3567803627, 13671, 1, 67186), +(107854, 909740878, 1163127287, 128229, 3, 67186), +(107854, 909740878, 1163127287, 128170, 3, 67186), +(107854, 909740878, 3322146344, 843754, 1, 67186), +(107854, 909740878, 3322146344, 835570, 1, 67186), +(107854, 909740878, 3322146344, 824543, 1, 67186), +(107854, 909740878, 3322146344, 824542, 1, 67186), +(107854, 909740878, 3322146344, 824534, 1, 67186), +(107854, 909740878, 3322146344, 818771, 1, 67186), +(107854, 909740878, 3322146344, 815712, 1, 67186), +(107854, 909740878, 3322146344, 809806, 1, 67186), +(107854, 909740878, 3322146344, 808307, 1, 67186), +(107854, 909740878, 3322146344, 151457, 1, 67186), +(107854, 909740878, 3322146344, 128030, 1, 67186), +(107854, 909740878, 3322146344, 127836, 1, 67186), +(107854, 909740878, 4030871717, 1318975, 1, 67186), +(107854, 909740878, 4030871717, 1318536, 2, 67186), +(107854, 909740878, 4030871717, 1275771, 1, 67186), +(107854, 909740878, 4030871717, 1273839, 1, 67186), +(107854, 909740878, 4030871717, 1273077, 1, 67186), +(107854, 909740878, 1187407512, 1296406, 1, 67186), +(107854, 909740878, 3776013982, 1296406, 1, 67186), +(107854, 909740878, 2575642838, 765, 1, 67186), +(107854, 909740878, 2575642838, 764, 1, 67186), +(107854, 909740878, 3386943305, 328245, 3, 67186), +(107854, 909740878, 3386943305, 322377, 3, 67186), +(107854, 909740878, 1548466975, 42116, 1, 67186), +(107854, 909740878, 1548466975, 42115, 1, 67186), +(107854, 909740878, 1548466975, 42112, 1, 67186), +(107854, 909740878, 1548466975, 30616, 3, 67186), +(107853, 989266732, 3386943305, 342088, 3, 67186), +(107851, 3418511373, 1163127287, 105053, 3, 67186), +(107851, 3418511373, 1163127287, 92259, 3, 67186), +(107849, 2348359306, 191387957, 1320, 1, 67186), +(107849, 2348359306, 191387957, 1315, 1, 67186), +(107848, 2555142007, 378810315, 1008, 1, 67186), +(107848, 2555142007, 378810315, 1007, 1, 67186), +(107848, 2555142007, 378810315, 1006, 1, 67186), +(107848, 2555142007, 378810315, 1005, 1, 67186), +(107848, 2555142007, 378810315, 946, 1, 67186), +(107848, 2555142007, 378810315, 834, 2, 67186), +(107848, 2555142007, 378810315, 833, 2, 67186), +(107848, 2555142007, 378810315, 810, 1, 67186), +(107848, 2555142007, 378810315, 745, 2, 67186), +(107848, 2555142007, 378810315, 712, 1, 67186), +(107848, 2555142007, 378810315, 641, 2, 67186), +(107848, 2555142007, 378810315, 640, 2, 67186), +(107848, 2555142007, 378810315, 568, 2, 67186), +(107848, 2555142007, 378810315, 426, 1, 67186), +(107848, 2555142007, 378810315, 48, 2, 67186), +(107848, 2555142007, 378810315, 18, 2, 67186), +(107848, 2555142007, 378810315, 8, 2, 67186), +(107845, 1719165747, 326190544, 10778, 1, 67186), +(107845, 1719165747, 326190544, 10542, 1, 67186), +(107845, 1719165747, 326190544, 10327, 1, 67186), +(107845, 1719165747, 326190544, 8993, 1, 67186), +(107845, 1719165747, 326190544, 8877, 1, 67186), +(107845, 1719165747, 326190544, 2605, 1, 67186), +(107845, 1719165747, 326190544, 2299, 1, 67186), +(107843, 935641598, 3764692828, 352242, 1, 67186), +(107843, 935641598, 4030871717, 1314559, 1, 67186), +(107843, 935641598, 4030871717, 1245026, 1, 67186), +(107842, 2620221083, 4030871717, 1231028, 1, 67186), +(107841, 3985276544, 312611497, 28420, 3, 67186), +(107841, 3985276544, 312611497, 28419, 3, 67186), +(107841, 3985276544, 1163127287, 121447, 3, 67186), +(107841, 3985276544, 1163127287, 121076, 3, 67186), +(107841, 3985276544, 4030871717, 1311612, 1, 67186), +(107841, 3985276544, 4030871717, 1279209, 1, 67186), +(107840, 4069676165, 1181150530, 753589, 1, 67186), +(107840, 4069676165, 1181150530, 672480, 2, 67186), +(107840, 4069676165, 4102286043, 266439, 1, 67186), +(107840, 4069676165, 4102286043, 238952, 1, 67186), +(107840, 4069676165, 3425193231, 547448, 1, 67186), +(107840, 4069676165, 859088734, 430627, 1, 67186), +(107840, 4069676165, 859088734, 420727, 2, 67186), +(107840, 4069676165, 4146370265, 166308, 1, 67186), +(107840, 4069676165, 3322146344, 801812, 1, 67186), +(107837, 3714289188, 4030871717, 1156794, 1, 67186), +(107837, 3714289188, 4030871717, 1156793, 1, 67186), +(107837, 3714289188, 4030871717, 1004615, 1, 67186), +(107835, 4043728171, 3359787322, 31558, 1, 67186), +(107835, 4043728171, 666345498, 519430, 1, 67186), +(107835, 4043728171, 666345498, 519428, 1, 67186), +(107835, 4043728171, 666345498, 519417, 1, 67186), +(107835, 4043728171, 666345498, 519411, 1, 67186), +(107835, 4043728171, 4033975491, 620663, 2, 67186), +(107835, 4043728171, 4033975491, 620660, 1, 67186), +(107835, 4043728171, 4033975491, 620644, 1, 67186), +(107835, 4043728171, 4033975491, 620643, 1, 67186), +(107835, 4043728171, 4033975491, 620642, 1, 67186), +(107835, 4043728171, 4033975491, 620640, 2, 67186), +(107835, 4043728171, 4033975491, 620630, 2, 67186), +(107835, 4043728171, 4033975491, 620629, 2, 67186), +(107835, 4043728171, 4033975491, 620627, 2, 67186), +(107835, 4043728171, 4033975491, 620612, 2, 67186), +(107835, 4043728171, 4033975491, 620611, 2, 67186), +(107835, 4043728171, 1181150530, 753547, 2, 67186), +(107835, 4043728171, 1181150530, 753546, 1, 67186), +(107835, 4043728171, 1181150530, 753541, 1, 67186), +(107835, 4043728171, 1181150530, 753540, 1, 67186), +(107835, 4043728171, 1181150530, 753510, 1, 67186), +(107835, 4043728171, 1181150530, 753509, 1, 67186), +(107835, 4043728171, 1181150530, 753508, 1, 67186), +(107835, 4043728171, 1181150530, 753507, 1, 67186), +(107835, 4043728171, 1181150530, 753506, 1, 67186), +(107835, 4043728171, 1181150530, 753505, 1, 67186), +(107835, 4043728171, 1181150530, 753504, 1, 67186), +(107835, 4043728171, 1181150530, 753500, 2, 67186), +(107835, 4043728171, 1181150530, 753490, 2, 67186), +(107835, 4043728171, 1181150530, 753489, 2, 67186), +(107835, 4043728171, 1181150530, 753488, 2, 67186), +(107835, 4043728171, 1181150530, 753485, 2, 67186), +(107835, 4043728171, 1181150530, 753484, 2, 67186), +(107835, 4043728171, 1181150530, 753450, 2, 67186), +(107835, 4043728171, 1181150530, 753449, 2, 67186), +(107835, 4043728171, 1181150530, 753448, 2, 67186), +(107835, 4043728171, 1181150530, 753447, 2, 67186), +(107835, 4043728171, 4102286043, 266425, 1, 67186), +(107835, 4043728171, 4102286043, 266423, 1, 67186), +(107835, 4043728171, 4102286043, 266408, 1, 67186), +(107835, 4043728171, 4102286043, 266397, 1, 67186), +(107835, 4043728171, 3425193231, 547444, 1, 67186), +(107835, 4043728171, 3425193231, 547442, 1, 67186), +(107835, 4043728171, 3425193231, 547424, 1, 67186), +(107835, 4043728171, 3425193231, 547406, 1, 67186), +(107835, 4043728171, 859088734, 430618, 1, 67186), +(107835, 4043728171, 859088734, 430616, 1, 67186), +(107835, 4043728171, 859088734, 430613, 1, 67186), +(107835, 4043728171, 859088734, 430612, 1, 67186), +(107835, 4043728171, 859088734, 430610, 2, 67186), +(107835, 4043728171, 859088734, 430603, 2, 67186), +(107835, 4043728171, 4146370265, 182831, 1, 67186), +(107835, 4043728171, 4146370265, 182830, 1, 67186), +(107835, 4043728171, 4146370265, 182822, 1, 67186), +(107835, 4043728171, 4146370265, 182815, 1, 67186), +(107835, 4043728171, 312611497, 28750, 2, 67186), +(107835, 4043728171, 312611497, 28305, 3, 67186), +(107835, 4043728171, 312611497, 24429, 3, 67186), +(107835, 4043728171, 312611497, 22360, 3, 67186), +(107835, 4043728171, 312611497, 22254, 3, 67186), +(107835, 4043728171, 312611497, 19828, 3, 67186), +(107835, 4043728171, 312611497, 19827, 3, 67186), +(107835, 4043728171, 312611497, 19157, 3, 67186), +(107835, 4043728171, 312611497, 19156, 3, 67186), +(107835, 4043728171, 1163127287, 128162, 3, 67186), +(107835, 4043728171, 1163127287, 128141, 3, 67186), +(107835, 4043728171, 1163127287, 128140, 3, 67186), +(107835, 4043728171, 1163127287, 128138, 3, 67186), +(107835, 4043728171, 1163127287, 126765, 3, 67186), +(107835, 4043728171, 1163127287, 126763, 3, 67186), +(107835, 4043728171, 1163127287, 126761, 3, 67186), +(107835, 4043728171, 1163127287, 126634, 3, 67186), +(107835, 4043728171, 1163127287, 126631, 3, 67186), +(107835, 4043728171, 1163127287, 126629, 3, 67186), +(107835, 4043728171, 1163127287, 124864, 3, 67186), +(107835, 4043728171, 3322146344, 843341, 1, 67186), +(107835, 4043728171, 3322146344, 843339, 1, 67186), +(107835, 4043728171, 3322146344, 843317, 1, 67186), +(107835, 4043728171, 3322146344, 843312, 1, 67186), +(107835, 4043728171, 4030871717, 1318368, 1, 67186), +(107835, 4043728171, 4030871717, 1318341, 1, 67186), +(107835, 4043728171, 4030871717, 1318340, 1, 67186), +(107835, 4043728171, 4030871717, 1318336, 1, 67186), +(107835, 4043728171, 4030871717, 1318335, 1, 67186), +(107835, 4043728171, 4030871717, 1318291, 1, 67186), +(107835, 4043728171, 4030871717, 1318284, 1, 67186), +(107835, 4043728171, 1187407512, 1295959, 1, 67186), +(107835, 4043728171, 3776013982, 1295959, 1, 67186), +(107835, 4043728171, 1187407512, 1295957, 1, 67186), +(107835, 4043728171, 3776013982, 1295957, 1, 67186), +(107835, 4043728171, 1187407512, 1295932, 1, 67186), +(107835, 4043728171, 3776013982, 1295932, 1, 67186), +(107835, 4043728171, 1187407512, 1295927, 1, 67186), +(107835, 4043728171, 3776013982, 1295927, 1, 67186), +(107835, 4043728171, 3108775943, 157082, 3, 67186), +(107835, 4043728171, 3108775943, 157080, 3, 67186), +(107835, 4043728171, 2035710060, 35862, 1, 67186), +(107835, 4043728171, 2035710060, 35353, 1, 67186), +(107835, 4043728171, 2035710060, 34751, 1, 67186), +(107835, 4043728171, 2035710060, 34733, 1, 67186), +(107835, 4043728171, 2035710060, 34732, 1, 67186), +(107835, 4043728171, 2035710060, 34731, 1, 67186), +(107835, 4043728171, 2035710060, 34730, 1, 67186), +(107835, 4043728171, 2035710060, 34729, 1, 67186), +(107835, 4043728171, 2035710060, 34727, 1, 67186), +(107835, 4043728171, 2035710060, 34725, 1, 67186), +(107835, 4043728171, 2035710060, 34722, 1, 67186), +(107835, 4043728171, 2035710060, 34720, 1, 67186), +(107835, 4043728171, 35137211, 315808, 3, 67186), +(107835, 4043728171, 35137211, 315641, 3, 67186), +(107835, 4043728171, 35137211, 315639, 3, 67186), +(107817, 195141362, 3322146344, 818744, 1, 67186), +(107817, 195141362, 4096770149, 244217, 2, 67186), +(107817, 195141362, 1187407512, 1265971, 1, 67186), +(107817, 195141362, 3776013982, 1265971, 1, 67186), +(107811, 4084392121, 4030871717, 1268558, 1, 67186), +(107811, 4084392121, 3689412649, 177661, 1, 67186), +(107809, 2600035845, 1163127287, 79836, 3, 67186), +(107806, 3629379993, 336222293, 22784, 1, 67186), +(107805, 49491129, 4030871717, 1300823, 1, 67186), +(107805, 49491129, 4030871717, 1281488, 1, 67186), +(107805, 49491129, 4030871717, 1269008, 1, 67186), +(107804, 3497871050, 312611497, 28713, 3, 67186), +(107804, 3497871050, 312611497, 28712, 3, 67186), +(107804, 3497871050, 1163127287, 96462, 3, 67186), +(107804, 3497871050, 4030871717, 1318124, 1, 67186), +(107804, 3497871050, 1187407512, 444769, 1, 67186), +(107804, 3497871050, 3776013982, 444769, 1, 67186), +(107801, 2889912184, 1163127287, 126921, 3, 67186), +(107800, 3264967589, 2120822102, 427170, 1, 67186), +(107800, 3264967589, 2120822102, 427168, 1, 67186), +(107800, 3264967589, 2120822102, 427166, 1, 67186), +(107799, 3294075099, 1255424668, 227753, 1, 67186), +(107799, 3294075099, 4012104832, 114135, 1, 67186), +(107797, 3690881296, 378810315, 977, 2, 67186), +(107797, 3690881296, 378810315, 976, 2, 67186), +(107797, 3690881296, 378810315, 975, 2, 67186), +(107797, 3690881296, 378810315, 969, 2, 67186), +(107797, 3690881296, 378810315, 956, 2, 67186), +(107797, 3690881296, 378810315, 907, 2, 67186), +(107797, 3690881296, 378810315, 906, 2, 67186), +(107797, 3690881296, 378810315, 897, 2, 67186), +(107797, 3690881296, 378810315, 896, 2, 67186), +(107797, 3690881296, 378810315, 895, 2, 67186), +(107797, 3690881296, 378810315, 894, 2, 67186), +(107797, 3690881296, 378810315, 893, 2, 67186), +(107797, 3690881296, 378810315, 892, 2, 67186), +(107797, 3690881296, 378810315, 891, 2, 67186), +(107797, 3690881296, 378810315, 889, 2, 67186), +(107797, 3690881296, 378810315, 888, 2, 67186), +(107797, 3690881296, 378810315, 887, 2, 67186), +(107797, 3690881296, 378810315, 886, 2, 67186), +(107797, 3690881296, 378810315, 884, 2, 67186), +(107797, 3690881296, 378810315, 882, 2, 67186), +(107797, 3690881296, 378810315, 881, 2, 67186), +(107797, 3690881296, 378810315, 876, 2, 67186), +(107797, 3690881296, 378810315, 875, 2, 67186), +(107797, 3690881296, 378810315, 874, 2, 67186), +(107797, 3690881296, 378810315, 873, 2, 67186), +(107797, 3690881296, 378810315, 872, 2, 67186), +(107797, 3690881296, 378810315, 871, 2, 67186), +(107797, 3690881296, 378810315, 870, 2, 67186), +(107797, 3690881296, 378810315, 869, 2, 67186), +(107797, 3690881296, 378810315, 868, 2, 67186), +(107797, 3690881296, 378810315, 867, 2, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107797, 3690881296, 378810315, 864, 2, 67186), +(107797, 3690881296, 378810315, 863, 2, 67186), +(107797, 3690881296, 378810315, 859, 2, 67186), +(107797, 3690881296, 378810315, 857, 2, 67186), +(107797, 3690881296, 378810315, 856, 2, 67186), +(107797, 3690881296, 378810315, 854, 2, 67186), +(107797, 3690881296, 378810315, 853, 2, 67186), +(107797, 3690881296, 378810315, 848, 2, 67186), +(107797, 3690881296, 378810315, 847, 2, 67186), +(107797, 3690881296, 378810315, 842, 2, 67186), +(107797, 3690881296, 378810315, 841, 2, 67186), +(107797, 3690881296, 378810315, 835, 2, 67186), +(107797, 3690881296, 378810315, 831, 2, 67186), +(107797, 3690881296, 378810315, 829, 2, 67186), +(107797, 3690881296, 378810315, 828, 2, 67186), +(107797, 3690881296, 378810315, 826, 2, 67186), +(107797, 3690881296, 378810315, 825, 2, 67186), +(107797, 3690881296, 378810315, 822, 2, 67186), +(107797, 3690881296, 378810315, 819, 2, 67186), +(107797, 3690881296, 378810315, 817, 2, 67186), +(107797, 3690881296, 378810315, 753, 2, 67186), +(107797, 3690881296, 378810315, 741, 2, 67186), +(107797, 3690881296, 378810315, 735, 2, 67186), +(107797, 3690881296, 378810315, 731, 2, 67186), +(107797, 3690881296, 378810315, 730, 2, 67186), +(107797, 3690881296, 378810315, 729, 2, 67186), +(107797, 3690881296, 378810315, 727, 2, 67186), +(107797, 3690881296, 378810315, 725, 2, 67186), +(107797, 3690881296, 378810315, 724, 2, 67186), +(107797, 3690881296, 378810315, 723, 2, 67186), +(107797, 3690881296, 378810315, 721, 2, 67186), +(107797, 3690881296, 378810315, 717, 2, 67186), +(107797, 3690881296, 378810315, 709, 2, 67186), +(107797, 3690881296, 378810315, 708, 2, 67186), +(107797, 3690881296, 378810315, 706, 2, 67186), +(107797, 3690881296, 378810315, 705, 2, 67186), +(107797, 3690881296, 378810315, 704, 2, 67186), +(107797, 3690881296, 378810315, 703, 2, 67186), +(107797, 3690881296, 378810315, 698, 2, 67186), +(107797, 3690881296, 378810315, 697, 2, 67186), +(107797, 3690881296, 378810315, 694, 2, 67186), +(107797, 3690881296, 378810315, 688, 2, 67186), +(107797, 3690881296, 378810315, 686, 2, 67186), +(107797, 3690881296, 378810315, 685, 2, 67186), +(107797, 3690881296, 378810315, 683, 2, 67186), +(107797, 3690881296, 378810315, 681, 2, 67186), +(107797, 3690881296, 378810315, 678, 2, 67186), +(107797, 3690881296, 378810315, 677, 2, 67186), +(107797, 3690881296, 378810315, 675, 2, 67186), +(107797, 3690881296, 378810315, 672, 2, 67186), +(107797, 3690881296, 378810315, 671, 2, 67186), +(107797, 3690881296, 378810315, 669, 2, 67186), +(107797, 3690881296, 378810315, 667, 2, 67186), +(107797, 3690881296, 378810315, 666, 1, 67186), +(107797, 3690881296, 378810315, 665, 2, 67186), +(107797, 3690881296, 378810315, 660, 2, 67186), +(107797, 3690881296, 378810315, 659, 2, 67186), +(107797, 3690881296, 378810315, 656, 2, 67186), +(107797, 3690881296, 378810315, 655, 2, 67186), +(107797, 3690881296, 378810315, 653, 2, 67186), +(107797, 3690881296, 378810315, 635, 2, 67186), +(107797, 3690881296, 378810315, 574, 2, 67186), +(107797, 3690881296, 378810315, 573, 2, 67186), +(107797, 3690881296, 378810315, 559, 2, 67186), +(107797, 3690881296, 378810315, 441, 2, 67186), +(107797, 3690881296, 378810315, 439, 2, 67186), +(107797, 3690881296, 378810315, 437, 2, 67186), +(107797, 3690881296, 378810315, 436, 2, 67186), +(107797, 3690881296, 378810315, 434, 2, 67186), +(107797, 3690881296, 378810315, 425, 2, 67186), +(107797, 3690881296, 378810315, 424, 2, 67186), +(107797, 3690881296, 378810315, 422, 2, 67186), +(107797, 3690881296, 378810315, 411, 2, 67186), +(107797, 3690881296, 378810315, 410, 2, 67186), +(107797, 3690881296, 378810315, 405, 2, 67186), +(107797, 3690881296, 378810315, 403, 2, 67186), +(107797, 3690881296, 378810315, 397, 2, 67186), +(107797, 3690881296, 378810315, 394, 2, 67186), +(107797, 3690881296, 378810315, 393, 2, 67186), +(107797, 3690881296, 378810315, 391, 2, 67186), +(107797, 3690881296, 378810315, 390, 2, 67186), +(107797, 3690881296, 378810315, 385, 2, 67186), +(107797, 3690881296, 378810315, 384, 2, 67186), +(107797, 3690881296, 378810315, 383, 2, 67186), +(107797, 3690881296, 378810315, 375, 2, 67186), +(107797, 3690881296, 378810315, 374, 2, 67186), +(107797, 3690881296, 378810315, 371, 2, 67186), +(107797, 3690881296, 378810315, 370, 2, 67186), +(107797, 3690881296, 378810315, 369, 2, 67186), +(107797, 3690881296, 378810315, 366, 2, 67186), +(107797, 3690881296, 378810315, 365, 2, 67186), +(107797, 3690881296, 378810315, 362, 2, 67186), +(107797, 3690881296, 378810315, 361, 2, 67186), +(107797, 3690881296, 378810315, 358, 2, 67186), +(107797, 3690881296, 378810315, 355, 2, 67186), +(107797, 3690881296, 378810315, 354, 2, 67186), +(107797, 3690881296, 378810315, 347, 2, 67186), +(107797, 3690881296, 378810315, 344, 2, 67186), +(107797, 3690881296, 378810315, 341, 2, 67186), +(107797, 3690881296, 378810315, 336, 2, 67186), +(107797, 3690881296, 378810315, 335, 2, 67186), +(107797, 3690881296, 378810315, 331, 2, 67186), +(107797, 3690881296, 378810315, 328, 2, 67186), +(107797, 3690881296, 378810315, 327, 2, 67186), +(107797, 3690881296, 378810315, 225, 2, 67186), +(107797, 3690881296, 378810315, 221, 2, 67186), +(107797, 3690881296, 378810315, 220, 2, 67186), +(107797, 3690881296, 378810315, 217, 2, 67186), +(107797, 3690881296, 378810315, 215, 2, 67186), +(107797, 3690881296, 378810315, 212, 2, 67186), +(107797, 3690881296, 378810315, 210, 2, 67186), +(107797, 3690881296, 378810315, 209, 2, 67186), +(107797, 3690881296, 378810315, 206, 2, 67186), +(107797, 3690881296, 378810315, 204, 2, 67186), +(107797, 3690881296, 378810315, 199, 1, 67186), +(107797, 3690881296, 378810315, 197, 1, 67186), +(107797, 3690881296, 378810315, 172, 2, 67186), +(107797, 3690881296, 378810315, 171, 2, 67186), +(107797, 3690881296, 378810315, 170, 2, 67186), +(107797, 3690881296, 378810315, 167, 2, 67186), +(107797, 3690881296, 378810315, 163, 2, 67186), +(107797, 3690881296, 378810315, 161, 2, 67186), +(107797, 3690881296, 378810315, 157, 2, 67186), +(107797, 3690881296, 378810315, 155, 2, 67186), +(107797, 3690881296, 378810315, 148, 2, 67186), +(107797, 3690881296, 378810315, 144, 2, 67186), +(107797, 3690881296, 378810315, 143, 2, 67186), +(107797, 3690881296, 378810315, 139, 2, 67186), +(107797, 3690881296, 378810315, 137, 2, 67186), +(107797, 3690881296, 378810315, 136, 2, 67186), +(107797, 3690881296, 378810315, 134, 2, 67186), +(107797, 3690881296, 378810315, 132, 2, 67186), +(107797, 3690881296, 378810315, 131, 2, 67186), +(107797, 3690881296, 378810315, 123, 2, 67186), +(107797, 3690881296, 378810315, 119, 2, 67186), +(107797, 3690881296, 378810315, 118, 2, 67186), +(107797, 3690881296, 378810315, 115, 2, 67186), +(107797, 3690881296, 378810315, 111, 2, 67186), +(107797, 3690881296, 378810315, 110, 2, 67186), +(107797, 3690881296, 378810315, 109, 2, 67186), +(107797, 3690881296, 378810315, 108, 2, 67186), +(107797, 3690881296, 378810315, 106, 2, 67186), +(107797, 3690881296, 378810315, 99, 2, 67186), +(107797, 3690881296, 378810315, 98, 2, 67186), +(107797, 3690881296, 378810315, 94, 2, 67186), +(107797, 3690881296, 378810315, 92, 2, 67186), +(107797, 3690881296, 378810315, 91, 2, 67186), +(107797, 3690881296, 378810315, 90, 2, 67186), +(107797, 3690881296, 378810315, 87, 2, 67186), +(107797, 3690881296, 378810315, 86, 2, 67186), +(107797, 3690881296, 378810315, 79, 2, 67186), +(107797, 3690881296, 378810315, 75, 2, 67186), +(107797, 3690881296, 378810315, 74, 2, 67186), +(107797, 3690881296, 378810315, 71, 2, 67186), +(107797, 3690881296, 378810315, 65, 2, 67186), +(107797, 3690881296, 378810315, 64, 2, 67186), +(107797, 3690881296, 378810315, 62, 2, 67186), +(107797, 3690881296, 378810315, 59, 2, 67186), +(107797, 3690881296, 378810315, 58, 2, 67186), +(107797, 3690881296, 378810315, 55, 2, 67186), +(107797, 3690881296, 378810315, 54, 2, 67186), +(107797, 3690881296, 378810315, 42, 2, 67186), +(107797, 3690881296, 378810315, 36, 2, 67186), +(107797, 3690881296, 378810315, 31, 2, 67186), +(107797, 3690881296, 378810315, 29, 2, 67186), +(107797, 3690881296, 378810315, 23, 2, 67186), +(107797, 3690881296, 378810315, 6, 2, 67186), +(107795, 2996605687, 1163127287, 68774, 3, 67186), +(107795, 2996605687, 4096770149, 22036, 1, 67186), +(107794, 3293351258, 1147030165, 257, 1, 67186), +(107794, 3293351258, 1147030165, 256, 1, 67186), +(107794, 3293351258, 1147030165, 255, 1, 67186), +(107793, 1308123977, 345681529, 159167, 1, 67186), +(107793, 1308123977, 345681529, 159166, 1, 67186), +(107793, 1308123977, 345681529, 159165, 1, 67186), +(107793, 1308123977, 345681529, 159164, 1, 67186), +(107793, 1308123977, 345681529, 159163, 1, 67186), +(107793, 1308123977, 345681529, 159162, 1, 67186), +(107793, 1308123977, 345681529, 159161, 1, 67186), +(107793, 1308123977, 345681529, 159160, 1, 67186), +(107793, 1308123977, 345681529, 159159, 1, 67186), +(107793, 1308123977, 345681529, 159158, 1, 67186), +(107793, 1308123977, 345681529, 159157, 1, 67186), +(107793, 1308123977, 345681529, 159156, 1, 67186), +(107792, 858009722, 439113017, 3299, 2, 67186), +(107791, 2654621615, 3108775943, 157003, 1, 67186), +(107789, 910622875, 2120822102, 444030, 1, 67186), +(107789, 910622875, 2120822102, 444027, 1, 67186), +(107789, 910622875, 2120822102, 429262, 1, 67186), +(107788, 2167575703, 4193483863, 99639, 1, 67186), +(107788, 2167575703, 1187407512, 1256191, 1, 67186), +(107788, 2167575703, 3776013982, 1256191, 1, 67186), +(107787, 4098172517, 1255424668, 227677, 1, 67186), +(107787, 4098172517, 1255424668, 227676, 1, 67186), +(107787, 4098172517, 1255424668, 227675, 1, 67186), +(107787, 4098172517, 1255424668, 227674, 1, 67186), +(107787, 4098172517, 1255424668, 227673, 1, 67186), +(107787, 4098172517, 1255424668, 227672, 1, 67186), +(107787, 4098172517, 1255424668, 227671, 1, 67186), +(107787, 4098172517, 1255424668, 225639, 1, 67186), +(107787, 4098172517, 1255424668, 225638, 1, 67186), +(107787, 4098172517, 1255424668, 225637, 1, 67186), +(107787, 4098172517, 1255424668, 225636, 1, 67186), +(107787, 4098172517, 1255424668, 225635, 1, 67186), +(107787, 4098172517, 1255424668, 225634, 1, 67186), +(107787, 4098172517, 4012104832, 114063, 1, 67186), +(107787, 4098172517, 4012104832, 114062, 1, 67186), +(107787, 4098172517, 4012104832, 114061, 1, 67186), +(107787, 4098172517, 4012104832, 114060, 1, 67186), +(107787, 4098172517, 4012104832, 114059, 1, 67186), +(107787, 4098172517, 4012104832, 114058, 1, 67186), +(107787, 4098172517, 4012104832, 114057, 1, 67186), +(107787, 4098172517, 4012104832, 114056, 1, 67186), +(107787, 4098172517, 4012104832, 114055, 1, 67186), +(107787, 4098172517, 4012104832, 114054, 1, 67186), +(107787, 4098172517, 4012104832, 114053, 1, 67186), +(107787, 4098172517, 4012104832, 114052, 1, 67186), +(107785, 3393396228, 312611497, 26063, 3, 67186), +(107785, 3393396228, 312611497, 26062, 3, 67186), +(107783, 439292086, 4030871717, 1318025, 1, 67186), +(107783, 439292086, 4030871717, 1318024, 1, 67186), +(107783, 439292086, 1789921167, 16916, 2, 67186), +(107782, 4156075643, 1163127287, 122566, 3, 67186), +(107782, 4156075643, 261693969, 88710, 3, 67186), +(107782, 4156075643, 986198281, 88710, 1, 67186), +(107782, 4156075643, 3108775943, 157002, 1, 67186), +(107782, 4156075643, 2120822102, 446825, 1, 67186), +(107782, 4156075643, 2120822102, 446824, 1, 67186), +(107782, 4156075643, 2120822102, 446823, 1, 67186), +(107782, 4156075643, 2120822102, 446822, 1, 67186), +(107782, 4156075643, 2120822102, 446821, 1, 67186), +(107782, 4156075643, 2120822102, 446820, 1, 67186), +(107781, 856771293, 1255424668, 225611, 1, 67186), +(107781, 856771293, 1255424668, 225610, 1, 67186), +(107781, 856771293, 1255424668, 225609, 1, 67186), +(107780, 3879884928, 666345498, 519301, 2, 67186), +(107780, 3879884928, 666345498, 519300, 2, 67186), +(107780, 3879884928, 1181150530, 752915, 2, 67186), +(107780, 3879884928, 1181150530, 752881, 1, 67186), +(107780, 3879884928, 1181150530, 738063, 1, 67186), +(107780, 3879884928, 4102286043, 266224, 2, 67186), +(107780, 3879884928, 4102286043, 266213, 1, 67186), +(107780, 3879884928, 3425193231, 547186, 2, 67186), +(107780, 3879884928, 3425193231, 547176, 1, 67186), +(107780, 3879884928, 4146370265, 182720, 2, 67186), +(107780, 3879884928, 4146370265, 179582, 1, 67186), +(107780, 3879884928, 3266400455, 1577780, 1, 67186), +(107780, 3879884928, 3266400455, 1577429, 2, 67186), +(107780, 3879884928, 3266400455, 1577428, 1, 67186), +(107780, 3879884928, 3266400455, 1577406, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107780, 3879884928, 3266400455, 1577405, 1, 67186), +(107780, 3879884928, 3266400455, 1577381, 1, 67186), +(107780, 3879884928, 3266400455, 1577380, 1, 67186), +(107780, 3879884928, 3266400455, 1577379, 1, 67186), +(107780, 3879884928, 3266400455, 1577378, 2, 67186), +(107780, 3879884928, 3266400455, 1577377, 2, 67186), +(107780, 3879884928, 3266400455, 1577376, 2, 67186), +(107780, 3879884928, 3266400455, 1577375, 2, 67186), +(107780, 3879884928, 3266400455, 1577374, 2, 67186), +(107780, 3879884928, 3266400455, 1577363, 1, 67186), +(107780, 3879884928, 3266400455, 1577362, 1, 67186), +(107780, 3879884928, 3266400455, 1577361, 1, 67186), +(107780, 3879884928, 736158310, 43623, 1, 67186), +(107780, 3879884928, 736158310, 43619, 1, 67186), +(107780, 3879884928, 3232102598, 314117, 1, 67186), +(107780, 3879884928, 3232102598, 314116, 1, 67186), +(107780, 3879884928, 3232102598, 314110, 1, 67186), +(107780, 3879884928, 3232102598, 314108, 1, 67186), +(107780, 3879884928, 3232102598, 314101, 1, 67186), +(107780, 3879884928, 3232102598, 314099, 1, 67186), +(107780, 3879884928, 3232102598, 314098, 1, 67186), +(107780, 3879884928, 908293937, 350186, 1, 67186), +(107780, 3879884928, 908293937, 350185, 1, 67186), +(107780, 3879884928, 908293937, 350177, 1, 67186), +(107780, 3879884928, 908293937, 350176, 1, 67186), +(107780, 3879884928, 908293937, 350169, 1, 67186), +(107780, 3879884928, 908293937, 350167, 1, 67186), +(107780, 3879884928, 908293937, 350166, 1, 67186), +(107780, 3879884928, 1344507586, 270562, 1, 67186), +(107780, 3879884928, 428746933, 270562, 3, 67186), +(107780, 3879884928, 2442913102, 270562, 1, 67186), +(107780, 3879884928, 3465080266, 270562, 3, 67186), +(107780, 3879884928, 3037505077, 270562, 3, 67186), +(107780, 3879884928, 1417785224, 270562, 3, 67186), +(107779, 2470825662, 2120822102, 446816, 1, 67186), +(107778, 34111979, 3348406326, 73622, 1, 67186), +(107778, 34111979, 3348406326, 73621, 1, 67186), +(107778, 34111979, 35137211, 273277, 1, 67186), +(107778, 34111979, 35137211, 272911, 1, 67186), +(107776, 1051130429, 492039028, 52361, 1, 67186), +(107776, 1051130429, 3359787322, 31522, 3, 67186), +(107776, 1051130429, 1163127287, 128099, 3, 67186), +(107775, 1291092143, 1187407512, 1272821, 1, 67186), +(107775, 1291092143, 3776013982, 1272821, 1, 67186), +(107775, 1291092143, 1187407512, 1244331, 1, 67186), +(107775, 1291092143, 3776013982, 1244331, 1, 67186), +(107775, 1291092143, 1187407512, 441845, 1, 67186), +(107775, 1291092143, 3776013982, 441845, 1, 67186), +(107775, 1291092143, 1344507586, 249497, 1, 67186), +(107775, 1291092143, 428746933, 249497, 3, 67186), +(107775, 1291092143, 2442913102, 249497, 1, 67186), +(107775, 1291092143, 3465080266, 249497, 3, 67186), +(107775, 1291092143, 3037505077, 249497, 3, 67186), +(107775, 1291092143, 1417785224, 249497, 3, 67186), +(107775, 1291092143, 3205218938, 57068, 1, 67186), +(107775, 1291092143, 3205218938, 23377, 1, 67186), +(107775, 1291092143, 3205218938, 22841, 1, 67186), +(107775, 1291092143, 331613093, 568477, 3, 67186), +(107775, 1291092143, 793851790, 3391, 1, 67186), +(107775, 1291092143, 793851790, 3383, 1, 67186), +(107775, 1291092143, 793851790, 3348, 1, 67186), +(107775, 1291092143, 35137211, 295984, 1, 67186), +(107775, 1291092143, 3745449290, 8459, 1, 67186), +(107775, 1291092143, 3745449290, 8447, 1, 67186), +(107772, 3672397356, 3322146344, 831871, 1, 67186), +(107771, 1337204597, 3495286709, 17310, 1, 67186), +(107771, 1337204597, 3495286709, 17309, 1, 67186), +(107771, 1337204597, 3495286709, 17308, 1, 67186), +(107771, 1337204597, 3495286709, 17307, 1, 67186), +(107771, 1337204597, 3495286709, 17306, 1, 67186), +(107771, 1337204597, 3495286709, 17305, 1, 67186), +(107771, 1337204597, 3495286709, 17304, 1, 67186), +(107771, 1337204597, 3495286709, 17303, 1, 67186), +(107771, 1337204597, 3495286709, 17302, 2, 67186), +(107771, 1337204597, 3495286709, 17301, 1, 67186), +(107771, 1337204597, 3495286709, 17300, 1, 67186), +(107771, 1337204597, 3495286709, 17299, 1, 67186), +(107771, 1337204597, 3495286709, 17298, 1, 67186), +(107771, 1337204597, 3495286709, 17297, 1, 67186), +(107771, 1337204597, 3495286709, 17296, 1, 67186), +(107771, 1337204597, 3495286709, 17295, 1, 67186), +(107770, 185767840, 331613093, 633652, 3, 67186), +(107769, 2316692189, 312611497, 17624, 3, 67186), +(107769, 2316692189, 312611497, 17623, 3, 67186), +(107769, 2316692189, 1163127287, 64940, 3, 67186), +(107768, 4114150004, 1163127287, 119707, 3, 67186), +(107768, 4114150004, 1163127287, 119672, 3, 67186), +(107768, 4114150004, 3322146344, 815438, 1, 67186), +(107768, 4114150004, 3322146344, 815437, 1, 67186), +(107768, 4114150004, 3322146344, 815436, 1, 67186), +(107768, 4114150004, 3322146344, 815424, 1, 67186), +(107768, 4114150004, 3322146344, 815423, 1, 67186), +(107768, 4114150004, 3322146344, 815418, 1, 67186), +(107768, 4114150004, 3322146344, 803129, 1, 67186), +(107768, 4114150004, 3322146344, 803125, 1, 67186), +(107767, 3512000483, 240389885, 9281, 1, 67186), +(107767, 3512000483, 1870074897, 89888, 1, 67186), +(107766, 70280295, 736158310, 33217, 2, 67186), +(107766, 70280295, 736158310, 33187, 2, 67186), +(107766, 70280295, 736158310, 33185, 2, 67186), +(107766, 70280295, 736158310, 30214, 2, 67186), +(107766, 70280295, 736158310, 30213, 2, 67186), +(107766, 70280295, 600565378, 644762, 1, 67186), +(107766, 70280295, 600565378, 644760, 1, 67186), +(107766, 70280295, 995606689, 63297, 2, 67186), +(107766, 70280295, 995606689, 63296, 2, 67186), +(107766, 70280295, 995606689, 63295, 2, 67186), +(107766, 70280295, 995606689, 63294, 2, 67186), +(107766, 70280295, 995606689, 63293, 2, 67186), +(107766, 70280295, 995606689, 63292, 2, 67186), +(107766, 70280295, 995606689, 63291, 2, 67186), +(107766, 70280295, 995606689, 63290, 2, 67186), +(107766, 70280295, 995606689, 63289, 2, 67186), +(107766, 70280295, 995606689, 63288, 2, 67186), +(107766, 70280295, 995606689, 63287, 2, 67186), +(107766, 70280295, 995606689, 63286, 1, 67186), +(107766, 70280295, 995606689, 63285, 2, 67186), +(107766, 70280295, 995606689, 63284, 2, 67186), +(107766, 70280295, 995606689, 63283, 1, 67186), +(107766, 70280295, 2445379776, 10508, 1, 67186), +(107766, 70280295, 2445379776, 9849, 1, 67186), +(107766, 70280295, 3218799089, 144636, 1, 67186), +(107766, 70280295, 3386943305, 340334, 3, 67186), +(107766, 70280295, 3386291891, 257268, 1, 67186), +(107766, 70280295, 3386291891, 257266, 3, 67186), +(107765, 289728540, 1303856102, 256, 1, 67186), +(107765, 289728540, 943410215, 402, 1, 67186), +(107764, 2566521022, 3322146344, 1568, 1, 67186), +(107764, 2566521022, 813076512, 204875, 1, 67186), +(107763, 2052797413, 1163127287, 121877, 3, 67186), +(107762, 1993108991, 3247720076, 39887, 1, 67186), +(107760, 3850100119, 3322146344, 831103, 1, 67186), +(107759, 2543765053, 3386943305, 336497, 3, 67186), +(107759, 2543765053, 3386943305, 336478, 3, 67186), +(107759, 2543765053, 3386943305, 336109, 3, 67186), +(107759, 2543765053, 3386943305, 335879, 3, 67186), +(107759, 2543765053, 3386943305, 332706, 3, 67186), +(107757, 1280575565, 3386943305, 345008, 3, 67186), +(107757, 1280575565, 3386943305, 345007, 3, 67186), +(107757, 1280575565, 3386943305, 341885, 3, 67186), +(107757, 1280575565, 3386943305, 333679, 3, 67186), +(107757, 1280575565, 3386943305, 332218, 3, 67186), +(107757, 1280575565, 3386943305, 332174, 3, 67186), +(107757, 1280575565, 3386291891, 252826, 3, 67186), +(107755, 3284080679, 331613093, 622120, 3, 67186), +(107753, 3293491646, 3322146344, 810873, 1, 67186), +(107752, 639223554, 4030871717, 36562, 1, 67186), +(107751, 2810625734, 1163127287, 123175, 3, 67186), +(107751, 2810625734, 1548466975, 42062, 3, 67186), +(107750, 242570304, 4030871717, 33703, 1, 67186), +(107750, 242570304, 1187407512, 243435, 1, 67186), +(107750, 242570304, 3776013982, 243435, 1, 67186), +(107750, 242570304, 1187407512, 221562, 1, 67186), +(107750, 242570304, 3776013982, 221562, 1, 67186), +(107750, 242570304, 1187407512, 205630, 1, 67186), +(107750, 242570304, 3776013982, 205630, 1, 67186), +(107750, 242570304, 1187407512, 198158, 1, 67186), +(107750, 242570304, 3776013982, 198158, 1, 67186), +(107750, 242570304, 1187407512, 108194, 1, 67186), +(107750, 242570304, 3776013982, 108194, 1, 67186), +(107750, 242570304, 378810315, 1004, 1, 67186), +(107750, 242570304, 378810315, 1003, 1, 67186), +(107750, 242570304, 378810315, 1001, 1, 67186), +(107750, 242570304, 378810315, 1000, 1, 67186), +(107750, 242570304, 378810315, 999, 1, 67186), +(107750, 242570304, 378810315, 998, 1, 67186), +(107750, 242570304, 378810315, 997, 1, 67186), +(107750, 242570304, 378810315, 996, 1, 67186), +(107750, 242570304, 378810315, 995, 1, 67186), +(107750, 242570304, 378810315, 994, 1, 67186), +(107750, 242570304, 378810315, 993, 1, 67186), +(107750, 242570304, 378810315, 992, 1, 67186), +(107750, 242570304, 378810315, 990, 1, 67186), +(107750, 242570304, 378810315, 989, 1, 67186), +(107750, 242570304, 378810315, 988, 1, 67186), +(107750, 242570304, 378810315, 987, 1, 67186), +(107750, 242570304, 378810315, 986, 1, 67186), +(107750, 242570304, 378810315, 985, 1, 67186), +(107750, 242570304, 378810315, 984, 1, 67186), +(107750, 242570304, 378810315, 983, 1, 67186), +(107750, 242570304, 378810315, 982, 1, 67186), +(107750, 242570304, 378810315, 981, 1, 67186), +(107750, 242570304, 378810315, 980, 1, 67186), +(107750, 242570304, 378810315, 979, 1, 67186), +(107750, 242570304, 378810315, 978, 1, 67186), +(107750, 242570304, 378810315, 974, 1, 67186), +(107750, 242570304, 378810315, 973, 1, 67186), +(107750, 242570304, 378810315, 972, 1, 67186), +(107750, 242570304, 378810315, 971, 1, 67186), +(107750, 242570304, 378810315, 970, 1, 67186), +(107750, 242570304, 378810315, 968, 1, 67186), +(107750, 242570304, 378810315, 967, 1, 67186), +(107750, 242570304, 378810315, 966, 1, 67186), +(107750, 242570304, 378810315, 965, 1, 67186), +(107750, 242570304, 378810315, 964, 1, 67186), +(107750, 242570304, 378810315, 963, 1, 67186), +(107750, 242570304, 378810315, 962, 1, 67186), +(107750, 242570304, 378810315, 961, 1, 67186), +(107750, 242570304, 378810315, 960, 1, 67186), +(107750, 242570304, 378810315, 959, 1, 67186), +(107750, 242570304, 378810315, 958, 1, 67186), +(107750, 242570304, 378810315, 957, 1, 67186), +(107750, 242570304, 378810315, 955, 1, 67186), +(107750, 242570304, 378810315, 954, 1, 67186), +(107750, 242570304, 378810315, 953, 1, 67186), +(107750, 242570304, 378810315, 952, 1, 67186), +(107750, 242570304, 378810315, 951, 1, 67186), +(107750, 242570304, 378810315, 950, 1, 67186), +(107750, 242570304, 378810315, 949, 1, 67186), +(107750, 242570304, 378810315, 948, 1, 67186), +(107750, 242570304, 378810315, 947, 1, 67186), +(107750, 242570304, 378810315, 945, 1, 67186), +(107750, 242570304, 378810315, 944, 1, 67186), +(107750, 242570304, 378810315, 943, 1, 67186), +(107750, 242570304, 378810315, 942, 1, 67186), +(107750, 242570304, 378810315, 941, 1, 67186), +(107750, 242570304, 378810315, 938, 1, 67186), +(107750, 242570304, 378810315, 937, 1, 67186), +(107750, 242570304, 378810315, 936, 1, 67186), +(107750, 242570304, 378810315, 935, 1, 67186), +(107750, 242570304, 378810315, 934, 1, 67186), +(107750, 242570304, 378810315, 933, 1, 67186), +(107750, 242570304, 378810315, 932, 1, 67186), +(107750, 242570304, 378810315, 931, 1, 67186), +(107750, 242570304, 378810315, 930, 1, 67186), +(107750, 242570304, 378810315, 929, 1, 67186), +(107750, 242570304, 378810315, 928, 1, 67186), +(107750, 242570304, 378810315, 927, 1, 67186), +(107750, 242570304, 378810315, 926, 1, 67186), +(107750, 242570304, 378810315, 925, 1, 67186), +(107750, 242570304, 378810315, 924, 1, 67186), +(107750, 242570304, 378810315, 923, 1, 67186), +(107750, 242570304, 378810315, 922, 1, 67186), +(107750, 242570304, 378810315, 921, 1, 67186), +(107750, 242570304, 378810315, 920, 1, 67186), +(107750, 242570304, 378810315, 918, 1, 67186), +(107750, 242570304, 378810315, 917, 1, 67186), +(107750, 242570304, 378810315, 916, 1, 67186), +(107750, 242570304, 378810315, 913, 1, 67186), +(107750, 242570304, 378810315, 912, 1, 67186), +(107750, 242570304, 378810315, 905, 1, 67186), +(107750, 242570304, 378810315, 904, 1, 67186), +(107750, 242570304, 378810315, 903, 1, 67186), +(107750, 242570304, 378810315, 902, 1, 67186), +(107750, 242570304, 378810315, 901, 1, 67186), +(107750, 242570304, 378810315, 900, 1, 67186), +(107750, 242570304, 378810315, 899, 1, 67186), +(107750, 242570304, 378810315, 898, 1, 67186), +(107750, 242570304, 378810315, 885, 1, 67186), +(107750, 242570304, 378810315, 879, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107750, 242570304, 378810315, 878, 1, 67186), +(107750, 242570304, 378810315, 877, 1, 67186), +(107750, 242570304, 378810315, 865, 1, 67186), +(107750, 242570304, 378810315, 861, 1, 67186), +(107750, 242570304, 378810315, 860, 1, 67186), +(107750, 242570304, 378810315, 858, 1, 67186), +(107750, 242570304, 378810315, 855, 1, 67186), +(107750, 242570304, 378810315, 846, 2, 67186), +(107750, 242570304, 378810315, 843, 1, 67186), +(107750, 242570304, 378810315, 839, 1, 67186), +(107750, 242570304, 378810315, 830, 1, 67186), +(107750, 242570304, 378810315, 824, 1, 67186), +(107750, 242570304, 378810315, 823, 1, 67186), +(107750, 242570304, 378810315, 821, 1, 67186), +(107750, 242570304, 378810315, 813, 1, 67186), +(107750, 242570304, 378810315, 808, 1, 67186), +(107750, 242570304, 378810315, 807, 1, 67186), +(107750, 242570304, 378810315, 755, 1, 67186), +(107750, 242570304, 378810315, 754, 1, 67186), +(107750, 242570304, 378810315, 752, 1, 67186), +(107750, 242570304, 378810315, 750, 1, 67186), +(107750, 242570304, 378810315, 744, 1, 67186), +(107750, 242570304, 378810315, 742, 1, 67186), +(107750, 242570304, 378810315, 739, 1, 67186), +(107750, 242570304, 378810315, 738, 1, 67186), +(107750, 242570304, 378810315, 736, 1, 67186), +(107750, 242570304, 378810315, 720, 1, 67186), +(107750, 242570304, 378810315, 719, 1, 67186), +(107750, 242570304, 378810315, 718, 1, 67186), +(107750, 242570304, 378810315, 715, 1, 67186), +(107750, 242570304, 378810315, 714, 1, 67186), +(107750, 242570304, 378810315, 713, 1, 67186), +(107750, 242570304, 378810315, 710, 1, 67186), +(107750, 242570304, 378810315, 700, 1, 67186), +(107750, 242570304, 378810315, 692, 1, 67186), +(107750, 242570304, 378810315, 691, 1, 67186), +(107750, 242570304, 378810315, 690, 1, 67186), +(107750, 242570304, 378810315, 687, 2, 67186), +(107750, 242570304, 378810315, 682, 1, 67186), +(107750, 242570304, 378810315, 679, 1, 67186), +(107750, 242570304, 378810315, 676, 2, 67186), +(107750, 242570304, 378810315, 674, 1, 67186), +(107750, 242570304, 378810315, 673, 1, 67186), +(107750, 242570304, 378810315, 670, 1, 67186), +(107750, 242570304, 378810315, 668, 1, 67186), +(107750, 242570304, 378810315, 664, 1, 67186), +(107750, 242570304, 378810315, 663, 1, 67186), +(107750, 242570304, 378810315, 662, 1, 67186), +(107750, 242570304, 378810315, 661, 1, 67186), +(107750, 242570304, 378810315, 658, 1, 67186), +(107750, 242570304, 378810315, 657, 1, 67186), +(107750, 242570304, 378810315, 654, 1, 67186), +(107750, 242570304, 378810315, 651, 1, 67186), +(107750, 242570304, 378810315, 648, 1, 67186), +(107750, 242570304, 378810315, 639, 1, 67186), +(107750, 242570304, 378810315, 638, 2, 67186), +(107750, 242570304, 378810315, 637, 1, 67186), +(107750, 242570304, 378810315, 636, 1, 67186), +(107750, 242570304, 378810315, 576, 1, 67186), +(107750, 242570304, 378810315, 575, 1, 67186), +(107750, 242570304, 378810315, 572, 1, 67186), +(107750, 242570304, 378810315, 571, 1, 67186), +(107750, 242570304, 378810315, 563, 1, 67186), +(107750, 242570304, 378810315, 561, 1, 67186), +(107750, 242570304, 378810315, 560, 1, 67186), +(107750, 242570304, 378810315, 558, 1, 67186), +(107750, 242570304, 378810315, 456, 1, 67186), +(107750, 242570304, 378810315, 455, 1, 67186), +(107750, 242570304, 378810315, 453, 1, 67186), +(107750, 242570304, 378810315, 452, 1, 67186), +(107750, 242570304, 378810315, 451, 1, 67186), +(107750, 242570304, 378810315, 450, 1, 67186), +(107750, 242570304, 378810315, 449, 1, 67186), +(107750, 242570304, 378810315, 448, 1, 67186), +(107750, 242570304, 378810315, 447, 1, 67186), +(107750, 242570304, 378810315, 440, 1, 67186), +(107750, 242570304, 378810315, 431, 1, 67186), +(107750, 242570304, 378810315, 428, 1, 67186), +(107750, 242570304, 378810315, 427, 1, 67186), +(107750, 242570304, 378810315, 421, 2, 67186), +(107750, 242570304, 378810315, 420, 1, 67186), +(107750, 242570304, 378810315, 419, 1, 67186), +(107750, 242570304, 378810315, 418, 1, 67186), +(107750, 242570304, 378810315, 416, 1, 67186), +(107750, 242570304, 378810315, 415, 1, 67186), +(107750, 242570304, 378810315, 412, 1, 67186), +(107750, 242570304, 378810315, 409, 2, 67186), +(107750, 242570304, 378810315, 408, 1, 67186), +(107750, 242570304, 378810315, 407, 1, 67186), +(107750, 242570304, 378810315, 406, 1, 67186), +(107750, 242570304, 378810315, 402, 1, 67186), +(107750, 242570304, 378810315, 401, 1, 67186), +(107750, 242570304, 378810315, 389, 1, 67186), +(107750, 242570304, 378810315, 388, 1, 67186), +(107750, 242570304, 378810315, 387, 1, 67186), +(107750, 242570304, 378810315, 386, 1, 67186), +(107750, 242570304, 378810315, 382, 1, 67186), +(107750, 242570304, 378810315, 377, 1, 67186), +(107750, 242570304, 378810315, 372, 1, 67186), +(107750, 242570304, 378810315, 368, 1, 67186), +(107750, 242570304, 378810315, 367, 1, 67186), +(107750, 242570304, 378810315, 363, 1, 67186), +(107750, 242570304, 378810315, 360, 1, 67186), +(107750, 242570304, 378810315, 359, 1, 67186), +(107750, 242570304, 378810315, 353, 1, 67186), +(107750, 242570304, 378810315, 352, 1, 67186), +(107750, 242570304, 378810315, 350, 1, 67186), +(107750, 242570304, 378810315, 349, 1, 67186), +(107750, 242570304, 378810315, 348, 1, 67186), +(107750, 242570304, 378810315, 346, 1, 67186), +(107750, 242570304, 378810315, 345, 1, 67186), +(107750, 242570304, 378810315, 343, 1, 67186), +(107750, 242570304, 378810315, 342, 1, 67186), +(107750, 242570304, 378810315, 339, 1, 67186), +(107750, 242570304, 378810315, 338, 1, 67186), +(107750, 242570304, 378810315, 337, 1, 67186), +(107750, 242570304, 378810315, 333, 1, 67186), +(107750, 242570304, 378810315, 332, 1, 67186), +(107750, 242570304, 378810315, 330, 1, 67186), +(107750, 242570304, 378810315, 329, 1, 67186), +(107750, 242570304, 378810315, 224, 1, 67186), +(107750, 242570304, 378810315, 223, 1, 67186), +(107750, 242570304, 378810315, 222, 1, 67186), +(107750, 242570304, 378810315, 219, 1, 67186), +(107750, 242570304, 378810315, 218, 1, 67186), +(107750, 242570304, 378810315, 214, 1, 67186), +(107750, 242570304, 378810315, 213, 1, 67186), +(107750, 242570304, 378810315, 208, 1, 67186), +(107750, 242570304, 378810315, 207, 1, 67186), +(107750, 242570304, 378810315, 205, 1, 67186), +(107750, 242570304, 378810315, 201, 1, 67186), +(107750, 242570304, 378810315, 198, 2, 67186), +(107750, 242570304, 378810315, 196, 2, 67186), +(107750, 242570304, 378810315, 195, 2, 67186), +(107750, 242570304, 378810315, 194, 1, 67186), +(107750, 242570304, 378810315, 193, 1, 67186), +(107750, 242570304, 378810315, 189, 1, 67186), +(107750, 242570304, 378810315, 187, 1, 67186), +(107750, 242570304, 378810315, 183, 1, 67186), +(107750, 242570304, 378810315, 176, 1, 67186), +(107750, 242570304, 378810315, 169, 1, 67186), +(107750, 242570304, 378810315, 166, 1, 67186), +(107750, 242570304, 378810315, 165, 1, 67186), +(107750, 242570304, 378810315, 164, 1, 67186), +(107750, 242570304, 378810315, 160, 1, 67186), +(107750, 242570304, 378810315, 159, 1, 67186), +(107750, 242570304, 378810315, 158, 1, 67186), +(107750, 242570304, 378810315, 156, 1, 67186), +(107750, 242570304, 378810315, 154, 1, 67186), +(107750, 242570304, 378810315, 153, 1, 67186), +(107750, 242570304, 378810315, 152, 1, 67186), +(107750, 242570304, 378810315, 150, 1, 67186), +(107750, 242570304, 378810315, 149, 1, 67186), +(107750, 242570304, 378810315, 147, 1, 67186), +(107750, 242570304, 378810315, 145, 1, 67186), +(107750, 242570304, 378810315, 142, 1, 67186), +(107750, 242570304, 378810315, 141, 1, 67186), +(107750, 242570304, 378810315, 138, 1, 67186), +(107750, 242570304, 378810315, 135, 1, 67186), +(107750, 242570304, 378810315, 133, 1, 67186), +(107750, 242570304, 378810315, 125, 1, 67186), +(107750, 242570304, 378810315, 124, 1, 67186), +(107750, 242570304, 378810315, 122, 1, 67186), +(107750, 242570304, 378810315, 121, 1, 67186), +(107750, 242570304, 378810315, 120, 1, 67186), +(107750, 242570304, 378810315, 117, 1, 67186), +(107750, 242570304, 378810315, 116, 1, 67186), +(107750, 242570304, 378810315, 114, 1, 67186), +(107750, 242570304, 378810315, 113, 1, 67186), +(107750, 242570304, 378810315, 112, 1, 67186), +(107750, 242570304, 378810315, 107, 1, 67186), +(107750, 242570304, 378810315, 105, 1, 67186), +(107750, 242570304, 378810315, 104, 1, 67186), +(107750, 242570304, 378810315, 103, 1, 67186), +(107750, 242570304, 378810315, 102, 1, 67186), +(107750, 242570304, 378810315, 101, 1, 67186), +(107750, 242570304, 378810315, 100, 1, 67186), +(107750, 242570304, 378810315, 97, 1, 67186), +(107750, 242570304, 378810315, 96, 1, 67186), +(107750, 242570304, 378810315, 95, 1, 67186), +(107750, 242570304, 378810315, 89, 1, 67186), +(107750, 242570304, 378810315, 88, 1, 67186), +(107750, 242570304, 378810315, 85, 1, 67186), +(107750, 242570304, 378810315, 84, 1, 67186), +(107750, 242570304, 378810315, 83, 1, 67186), +(107750, 242570304, 378810315, 82, 1, 67186), +(107750, 242570304, 378810315, 81, 1, 67186), +(107750, 242570304, 378810315, 78, 1, 67186), +(107750, 242570304, 378810315, 77, 1, 67186), +(107750, 242570304, 378810315, 76, 1, 67186), +(107750, 242570304, 378810315, 73, 1, 67186), +(107750, 242570304, 378810315, 72, 1, 67186), +(107750, 242570304, 378810315, 70, 1, 67186), +(107750, 242570304, 378810315, 69, 1, 67186), +(107750, 242570304, 378810315, 68, 1, 67186), +(107750, 242570304, 378810315, 66, 2, 67186), +(107750, 242570304, 378810315, 63, 1, 67186), +(107750, 242570304, 378810315, 61, 1, 67186), +(107750, 242570304, 378810315, 60, 1, 67186), +(107750, 242570304, 378810315, 57, 1, 67186), +(107750, 242570304, 378810315, 53, 1, 67186), +(107750, 242570304, 378810315, 51, 1, 67186), +(107750, 242570304, 378810315, 45, 1, 67186), +(107750, 242570304, 378810315, 44, 1, 67186), +(107750, 242570304, 378810315, 40, 1, 67186), +(107750, 242570304, 378810315, 39, 1, 67186), +(107750, 242570304, 378810315, 38, 1, 67186), +(107750, 242570304, 378810315, 37, 1, 67186), +(107750, 242570304, 378810315, 35, 1, 67186), +(107750, 242570304, 378810315, 34, 1, 67186), +(107750, 242570304, 378810315, 33, 1, 67186), +(107750, 242570304, 378810315, 32, 1, 67186), +(107750, 242570304, 378810315, 28, 1, 67186), +(107750, 242570304, 378810315, 27, 1, 67186), +(107750, 242570304, 378810315, 26, 1, 67186), +(107750, 242570304, 378810315, 21, 1, 67186), +(107750, 242570304, 378810315, 20, 1, 67186), +(107750, 242570304, 378810315, 17, 1, 67186), +(107750, 242570304, 378810315, 16, 1, 67186), +(107750, 242570304, 378810315, 14, 1, 67186), +(107750, 242570304, 378810315, 12, 1, 67186), +(107750, 242570304, 378810315, 10, 1, 67186), +(107750, 242570304, 378810315, 9, 1, 67186), +(107750, 242570304, 378810315, 7, 1, 67186), +(107750, 242570304, 378810315, 3, 1, 67186), +(107749, 128522776, 312611497, 21871, 3, 67186), +(107749, 128522776, 312611497, 21870, 3, 67186), +(107749, 128522776, 1163127287, 122302, 3, 67186), +(107749, 128522776, 1163127287, 105052, 3, 67186), +(107749, 128522776, 1163127287, 100476, 3, 67186), +(107749, 128522776, 4030871717, 1304166, 3, 67186), +(107749, 128522776, 4030871717, 1156060, 1, 67186), +(107748, 2367797653, 3386943305, 347243, 3, 67186), +(107748, 2367797653, 3386943305, 341024, 3, 67186), +(107748, 2367797653, 3386943305, 333448, 1, 67186), +(107748, 2367797653, 3386291891, 263912, 3, 67186), +(107748, 2367797653, 3386291891, 260782, 3, 67186), +(107748, 2367797653, 3386291891, 258808, 3, 67186), +(107748, 2367797653, 3386291891, 257932, 3, 67186), +(107748, 2367797653, 3386291891, 256589, 3, 67186), +(107748, 2367797653, 3386291891, 252609, 3, 67186), +(107748, 2367797653, 3386291891, 252608, 1, 67186), +(107748, 2367797653, 3386291891, 251439, 3, 67186), +(107747, 82200112, 1163127287, 100433, 3, 67186), +(107747, 82200112, 1163127287, 35858, 3, 67186), +(107745, 3049636316, 3386943305, 340239, 3, 67186), +(107744, 3025435748, 4030871717, 1197410, 1, 67186), +(107744, 3025435748, 4030871717, 1176322, 1, 67186), +(107741, 4239892464, 1163127287, 77332, 3, 67186), +(107741, 4239892464, 4030871717, 1276369, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107740, 1817025889, 1187407512, 1291860, 1, 67186), +(107740, 1817025889, 3776013982, 1291860, 1, 67186), +(107740, 1817025889, 1187407512, 1291859, 1, 67186), +(107740, 1817025889, 3776013982, 1291859, 1, 67186), +(107740, 1817025889, 1187407512, 1291858, 1, 67186), +(107740, 1817025889, 3776013982, 1291858, 1, 67186), +(107740, 1817025889, 1187407512, 1291857, 1, 67186), +(107740, 1817025889, 3776013982, 1291857, 1, 67186), +(107740, 1817025889, 1187407512, 1291856, 1, 67186), +(107740, 1817025889, 3776013982, 1291856, 1, 67186), +(107740, 1817025889, 1187407512, 1291855, 1, 67186), +(107740, 1817025889, 3776013982, 1291855, 1, 67186), +(107740, 1817025889, 1187407512, 1291854, 1, 67186), +(107740, 1817025889, 3776013982, 1291854, 1, 67186), +(107740, 1817025889, 1187407512, 1291853, 1, 67186), +(107740, 1817025889, 3776013982, 1291853, 1, 67186), +(107740, 1817025889, 1187407512, 1291852, 1, 67186), +(107740, 1817025889, 3776013982, 1291852, 1, 67186), +(107740, 1817025889, 1187407512, 1291851, 1, 67186), +(107740, 1817025889, 3776013982, 1291851, 1, 67186), +(107740, 1817025889, 1187407512, 1291850, 1, 67186), +(107740, 1817025889, 3776013982, 1291850, 1, 67186), +(107740, 1817025889, 1187407512, 1291849, 1, 67186), +(107740, 1817025889, 3776013982, 1291849, 1, 67186), +(107740, 1817025889, 1187407512, 1291848, 1, 67186), +(107740, 1817025889, 3776013982, 1291848, 1, 67186), +(107740, 1817025889, 1187407512, 1291847, 1, 67186), +(107740, 1817025889, 3776013982, 1291847, 1, 67186), +(107740, 1817025889, 1187407512, 1291846, 1, 67186), +(107740, 1817025889, 3776013982, 1291846, 1, 67186), +(107740, 1817025889, 1187407512, 1291845, 1, 67186), +(107740, 1817025889, 3776013982, 1291845, 1, 67186), +(107740, 1817025889, 1187407512, 1291844, 1, 67186), +(107740, 1817025889, 3776013982, 1291844, 1, 67186), +(107740, 1817025889, 1187407512, 1291843, 1, 67186), +(107740, 1817025889, 3776013982, 1291843, 1, 67186), +(107740, 1817025889, 1187407512, 1291842, 1, 67186), +(107740, 1817025889, 3776013982, 1291842, 1, 67186), +(107740, 1817025889, 1187407512, 1291841, 1, 67186), +(107740, 1817025889, 3776013982, 1291841, 1, 67186), +(107740, 1817025889, 1187407512, 1291840, 1, 67186), +(107740, 1817025889, 3776013982, 1291840, 1, 67186), +(107740, 1817025889, 1187407512, 1291839, 1, 67186), +(107740, 1817025889, 3776013982, 1291839, 1, 67186), +(107740, 1817025889, 1187407512, 1291838, 1, 67186), +(107740, 1817025889, 3776013982, 1291838, 1, 67186), +(107740, 1817025889, 1187407512, 1291837, 1, 67186), +(107740, 1817025889, 3776013982, 1291837, 1, 67186), +(107740, 1817025889, 1187407512, 1291831, 1, 67186), +(107740, 1817025889, 3776013982, 1291831, 1, 67186), +(107740, 1817025889, 1187407512, 1291828, 1, 67186), +(107740, 1817025889, 3776013982, 1291828, 1, 67186), +(107740, 1817025889, 1187407512, 1291827, 1, 67186), +(107740, 1817025889, 3776013982, 1291827, 1, 67186), +(107740, 1817025889, 1187407512, 1291826, 1, 67186), +(107740, 1817025889, 3776013982, 1291826, 1, 67186), +(107740, 1817025889, 1187407512, 1291825, 1, 67186), +(107740, 1817025889, 3776013982, 1291825, 1, 67186), +(107740, 1817025889, 1187407512, 1291824, 1, 67186), +(107740, 1817025889, 3776013982, 1291824, 1, 67186), +(107740, 1817025889, 1187407512, 1291822, 1, 67186), +(107740, 1817025889, 3776013982, 1291822, 1, 67186), +(107740, 1817025889, 1187407512, 1291791, 1, 67186), +(107740, 1817025889, 3776013982, 1291791, 1, 67186), +(107740, 1817025889, 1187407512, 1290929, 1, 67186), +(107740, 1817025889, 3776013982, 1290929, 1, 67186), +(107740, 1817025889, 1187407512, 1290926, 1, 67186), +(107740, 1817025889, 3776013982, 1290926, 1, 67186), +(107740, 1817025889, 1187407512, 1290925, 1, 67186), +(107740, 1817025889, 3776013982, 1290925, 1, 67186), +(107740, 1817025889, 1187407512, 1289221, 1, 67186), +(107740, 1817025889, 3776013982, 1289221, 1, 67186), +(107740, 1817025889, 1187407512, 1287542, 4, 67186), +(107740, 1817025889, 3776013982, 1287542, 4, 67186), +(107740, 1817025889, 1187407512, 1286537, 1, 67186), +(107740, 1817025889, 3776013982, 1286537, 1, 67186), +(107740, 1817025889, 1187407512, 1286536, 1, 67186), +(107740, 1817025889, 3776013982, 1286536, 1, 67186), +(107740, 1817025889, 1187407512, 1286535, 1, 67186), +(107740, 1817025889, 3776013982, 1286535, 1, 67186), +(107740, 1817025889, 1187407512, 1282100, 1, 67186), +(107740, 1817025889, 3776013982, 1282100, 1, 67186), +(107740, 1817025889, 1187407512, 1282018, 1, 67186), +(107740, 1817025889, 3776013982, 1282018, 1, 67186), +(107740, 1817025889, 1187407512, 1277461, 1, 67186), +(107740, 1817025889, 3776013982, 1277461, 1, 67186), +(107740, 1817025889, 1187407512, 1269922, 1, 67186), +(107740, 1817025889, 3776013982, 1269922, 1, 67186), +(107740, 1817025889, 1187407512, 1269921, 1, 67186), +(107740, 1817025889, 3776013982, 1269921, 1, 67186), +(107740, 1817025889, 1187407512, 1269920, 1, 67186), +(107740, 1817025889, 3776013982, 1269920, 1, 67186), +(107740, 1817025889, 1187407512, 1269919, 1, 67186), +(107740, 1817025889, 3776013982, 1269919, 1, 67186), +(107740, 1817025889, 1187407512, 1269918, 1, 67186), +(107740, 1817025889, 3776013982, 1269918, 1, 67186), +(107740, 1817025889, 1187407512, 1269917, 1, 67186), +(107740, 1817025889, 3776013982, 1269917, 1, 67186), +(107740, 1817025889, 1187407512, 1269916, 1, 67186), +(107740, 1817025889, 3776013982, 1269916, 1, 67186), +(107740, 1817025889, 1187407512, 1266982, 4, 67186), +(107740, 1817025889, 3776013982, 1266982, 4, 67186), +(107740, 1817025889, 1187407512, 1232065, 1, 67186), +(107740, 1817025889, 3776013982, 1232065, 1, 67186), +(107740, 1817025889, 1344507586, 273640, 4, 67186), +(107740, 1817025889, 428746933, 273640, 3, 67186), +(107740, 1817025889, 2442913102, 273640, 4, 67186), +(107740, 1817025889, 3465080266, 273640, 3, 67186), +(107740, 1817025889, 3037505077, 273640, 3, 67186), +(107740, 1817025889, 1417785224, 273640, 3, 67186), +(107740, 1817025889, 1344507586, 272961, 1, 67186), +(107740, 1817025889, 428746933, 272961, 1, 67186), +(107740, 1817025889, 2442913102, 272961, 1, 67186), +(107740, 1817025889, 3465080266, 272961, 3, 67186), +(107740, 1817025889, 3037505077, 272961, 3, 67186), +(107740, 1817025889, 1417785224, 272961, 3, 67186), +(107740, 1817025889, 1344507586, 272960, 1, 67186), +(107740, 1817025889, 428746933, 272960, 1, 67186), +(107740, 1817025889, 2442913102, 272960, 1, 67186), +(107740, 1817025889, 3465080266, 272960, 3, 67186), +(107740, 1817025889, 3037505077, 272960, 3, 67186), +(107740, 1817025889, 1417785224, 272960, 3, 67186), +(107740, 1817025889, 1344507586, 272356, 4, 67186), +(107740, 1817025889, 428746933, 272356, 3, 67186), +(107740, 1817025889, 2442913102, 272356, 4, 67186), +(107740, 1817025889, 3465080266, 272356, 3, 67186), +(107740, 1817025889, 3037505077, 272356, 3, 67186), +(107740, 1817025889, 1417785224, 272356, 3, 67186), +(107740, 1817025889, 1344507586, 272355, 4, 67186), +(107740, 1817025889, 428746933, 272355, 3, 67186), +(107740, 1817025889, 2442913102, 272355, 4, 67186), +(107740, 1817025889, 3465080266, 272355, 3, 67186), +(107740, 1817025889, 3037505077, 272355, 3, 67186), +(107740, 1817025889, 1417785224, 272355, 3, 67186), +(107740, 1817025889, 1344507586, 272318, 1, 67186), +(107740, 1817025889, 428746933, 272318, 1, 67186), +(107740, 1817025889, 2442913102, 272318, 1, 67186), +(107740, 1817025889, 3465080266, 272318, 3, 67186), +(107740, 1817025889, 3037505077, 272318, 3, 67186), +(107740, 1817025889, 1417785224, 272318, 3, 67186), +(107740, 1817025889, 1344507586, 272317, 1, 67186), +(107740, 1817025889, 428746933, 272317, 1, 67186), +(107740, 1817025889, 2442913102, 272317, 1, 67186), +(107740, 1817025889, 3465080266, 272317, 3, 67186), +(107740, 1817025889, 3037505077, 272317, 3, 67186), +(107740, 1817025889, 1417785224, 272317, 3, 67186), +(107740, 1817025889, 1344507586, 272316, 1, 67186), +(107740, 1817025889, 428746933, 272316, 1, 67186), +(107740, 1817025889, 2442913102, 272316, 1, 67186), +(107740, 1817025889, 3465080266, 272316, 3, 67186), +(107740, 1817025889, 3037505077, 272316, 3, 67186), +(107740, 1817025889, 1417785224, 272316, 3, 67186), +(107740, 1817025889, 1344507586, 271631, 1, 67186), +(107740, 1817025889, 428746933, 271631, 3, 67186), +(107740, 1817025889, 2442913102, 271631, 1, 67186), +(107740, 1817025889, 3465080266, 271631, 3, 67186), +(107740, 1817025889, 3037505077, 271631, 3, 67186), +(107740, 1817025889, 1417785224, 271631, 3, 67186), +(107740, 1817025889, 1344507586, 269659, 4, 67186), +(107740, 1817025889, 428746933, 269659, 3, 67186), +(107740, 1817025889, 2442913102, 269659, 4, 67186), +(107740, 1817025889, 3465080266, 269659, 3, 67186), +(107740, 1817025889, 3037505077, 269659, 3, 67186), +(107740, 1817025889, 1417785224, 269659, 3, 67186), +(107740, 1817025889, 1344507586, 19355, 1, 67186), +(107740, 1817025889, 428746933, 19355, 1, 67186), +(107740, 1817025889, 2442913102, 19355, 1, 67186), +(107740, 1817025889, 3465080266, 19355, 3, 67186), +(107740, 1817025889, 3037505077, 19355, 3, 67186), +(107740, 1817025889, 1417785224, 19355, 3, 67186), +(107738, 3866646751, 2948698321, 8059, 1, 67186), +(107738, 3866646751, 3744420815, 8059, 1, 67186), +(107737, 539564970, 3322146344, 842983, 1, 67186), +(107737, 539564970, 4030871717, 1317749, 1, 67186), +(107737, 539564970, 1187407512, 1295592, 1, 67186), +(107737, 539564970, 3776013982, 1295592, 1, 67186), +(107737, 539564970, 3108775943, 156957, 1, 67186), +(107737, 539564970, 3108775943, 156933, 1, 67186), +(107737, 539564970, 2120822102, 446627, 2, 67186), +(107737, 539564970, 2120822102, 446626, 2, 67186), +(107737, 539564970, 2120822102, 446625, 2, 67186), +(107737, 539564970, 2120822102, 446608, 1, 67186), +(107737, 539564970, 2120822102, 446593, 2, 67186), +(107737, 539564970, 2120822102, 446592, 1, 67186), +(107737, 539564970, 2120822102, 446591, 1, 67186), +(107737, 539564970, 2120822102, 446590, 1, 67186), +(107737, 539564970, 2120822102, 446589, 1, 67186), +(107737, 539564970, 2120822102, 446588, 1, 67186), +(107735, 2135533473, 261693969, 84996, 3, 67186), +(107735, 2135533473, 986198281, 84996, 1, 67186), +(107735, 2135533473, 3108775943, 156932, 3, 67186), +(107735, 2135533473, 2120822102, 446587, 1, 67186), +(107735, 2135533473, 2120822102, 446586, 1, 67186), +(107733, 471028117, 3386943305, 347264, 3, 67186), +(107733, 471028117, 3386943305, 341303, 3, 67186), +(107731, 1045024781, 3386943305, 342078, 3, 67186), +(107730, 2146298196, 3386291891, 244580, 3, 67186), +(107729, 168180404, 3664936999, 33506, 1, 67186), +(107729, 168180404, 3664936999, 33505, 1, 67186), +(107729, 168180404, 3664936999, 33504, 1, 67186), +(107729, 168180404, 3664936999, 33503, 1, 67186), +(107729, 168180404, 3898252553, 11633, 1, 67186), +(107729, 168180404, 3898252553, 11632, 1, 67186), +(107729, 168180404, 3898252553, 11631, 1, 67186), +(107729, 168180404, 3898252553, 11630, 1, 67186), +(107729, 168180404, 4012104832, 113880, 1, 67186), +(107729, 168180404, 4012104832, 113879, 1, 67186), +(107729, 168180404, 4012104832, 113878, 1, 67186), +(107729, 168180404, 4012104832, 108810, 1, 67186), +(107729, 168180404, 4012104832, 108809, 1, 67186), +(107729, 168180404, 4012104832, 108808, 1, 67186), +(107728, 1024979521, 3386943305, 340532, 3, 67186), +(107727, 929011959, 2198813286, 3389, 1, 67186), +(107727, 929011959, 2198813286, 3308, 1, 67186), +(107727, 929011959, 2198813286, 3291, 1, 67186), +(107727, 929011959, 2198813286, 3280, 1, 67186), +(107727, 929011959, 2198813286, 3251, 1, 67186), +(107727, 929011959, 2198813286, 3245, 1, 67186), +(107727, 929011959, 2198813286, 3234, 1, 67186), +(107727, 929011959, 2198813286, 3233, 1, 67186), +(107727, 929011959, 2198813286, 3229, 1, 67186), +(107727, 929011959, 2198813286, 3209, 1, 67186), +(107727, 929011959, 2198813286, 3206, 1, 67186), +(107727, 929011959, 2198813286, 3180, 1, 67186), +(107727, 929011959, 2198813286, 3174, 1, 67186), +(107726, 2575071349, 1880017466, 313093, 1, 67186), +(107726, 2575071349, 1880017466, 313092, 1, 67186), +(107726, 2575071349, 1880017466, 313091, 1, 67186), +(107726, 2575071349, 1880017466, 313090, 1, 67186), +(107726, 2575071349, 1880017466, 313089, 1, 67186), +(107726, 2575071349, 1880017466, 313088, 1, 67186), +(107726, 2575071349, 1880017466, 313087, 1, 67186), +(107726, 2575071349, 1880017466, 313086, 1, 67186), +(107726, 2575071349, 1880017466, 313085, 1, 67186), +(107726, 2575071349, 1880017466, 313084, 1, 67186), +(107726, 2575071349, 1880017466, 313080, 1, 67186), +(107726, 2575071349, 1880017466, 313079, 1, 67186), +(107726, 2575071349, 1880017466, 313076, 1, 67186), +(107726, 2575071349, 1880017466, 313075, 1, 67186), +(107726, 2575071349, 1880017466, 313074, 1, 67186), +(107726, 2575071349, 1880017466, 313073, 1, 67186), +(107726, 2575071349, 1880017466, 313072, 1, 67186), +(107726, 2575071349, 1880017466, 313071, 1, 67186), +(107726, 2575071349, 1880017466, 313070, 1, 67186), +(107726, 2575071349, 1880017466, 313069, 1, 67186), +(107726, 2575071349, 1272569722, 103681, 1, 67186), +(107726, 2575071349, 1272569722, 103680, 1, 67186), +(107726, 2575071349, 1272569722, 103679, 1, 67186), +(107726, 2575071349, 1272569722, 103678, 1, 67186), +(107726, 2575071349, 1272569722, 103677, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107726, 2575071349, 4012104832, 113655, 1, 67186), +(107726, 2575071349, 4012104832, 113654, 1, 67186), +(107726, 2575071349, 4012104832, 112986, 1, 67186), +(107726, 2575071349, 4012104832, 112855, 1, 67186), +(107726, 2575071349, 4012104832, 112740, 1, 67186), +(107726, 2575071349, 4012104832, 112622, 1, 67186), +(107726, 2575071349, 4012104832, 112294, 1, 67186), +(107726, 2575071349, 4012104832, 112293, 1, 67186), +(107726, 2575071349, 4012104832, 112271, 1, 67186), +(107726, 2575071349, 4012104832, 112182, 1, 67186), +(107726, 2575071349, 4012104832, 112160, 1, 67186), +(107726, 2575071349, 4012104832, 111564, 1, 67186), +(107726, 2575071349, 4012104832, 111563, 1, 67186), +(107726, 2575071349, 4012104832, 111249, 1, 67186), +(107726, 2575071349, 4012104832, 111248, 1, 67186), +(107726, 2575071349, 4012104832, 110483, 1, 67186), +(107726, 2575071349, 4012104832, 109959, 1, 67186), +(107726, 2575071349, 4012104832, 109866, 1, 67186), +(107726, 2575071349, 4012104832, 109864, 1, 67186), +(107726, 2575071349, 4012104832, 109799, 1, 67186), +(107726, 2575071349, 4012104832, 109791, 1, 67186), +(107726, 2575071349, 4012104832, 109754, 1, 67186), +(107726, 2575071349, 4012104832, 109668, 1, 67186), +(107726, 2575071349, 4012104832, 109259, 1, 67186), +(107726, 2575071349, 4012104832, 109258, 1, 67186), +(107726, 2575071349, 4012104832, 109105, 1, 67186), +(107726, 2575071349, 4012104832, 108726, 1, 67186), +(107726, 2575071349, 4012104832, 107805, 1, 67186), +(107725, 1012457038, 1163127287, 127488, 3, 67186), +(107725, 1012457038, 3322146344, 798878, 1, 67186), +(107725, 1012457038, 1187407512, 1244341, 1, 67186), +(107725, 1012457038, 3776013982, 1244341, 1, 67186), +(107722, 3188979244, 3764692828, 352239, 3, 67186), +(107722, 3188979244, 3764692828, 352238, 3, 67186), +(107722, 3188979244, 3764692828, 352237, 3, 67186), +(107722, 3188979244, 3764692828, 352236, 3, 67186), +(107722, 3188979244, 3764692828, 352235, 3, 67186), +(107722, 3188979244, 3764692828, 352234, 3, 67186), +(107722, 3188979244, 3764692828, 352233, 3, 67186), +(107722, 3188979244, 3764692828, 352232, 3, 67186), +(107722, 3188979244, 1187407512, 1262378, 1, 67186), +(107722, 3188979244, 3776013982, 1262378, 1, 67186), +(107722, 3188979244, 1187407512, 1262377, 1, 67186), +(107722, 3188979244, 3776013982, 1262377, 1, 67186), +(107722, 3188979244, 1187407512, 1262376, 1, 67186), +(107722, 3188979244, 3776013982, 1262376, 1, 67186), +(107722, 3188979244, 1187407512, 1262365, 1, 67186), +(107722, 3188979244, 3776013982, 1262365, 1, 67186), +(107722, 3188979244, 1187407512, 1262364, 1, 67186), +(107722, 3188979244, 3776013982, 1262364, 1, 67186), +(107722, 3188979244, 1187407512, 1262359, 1, 67186), +(107722, 3188979244, 3776013982, 1262359, 1, 67186), +(107722, 3188979244, 1187407512, 1248931, 1, 67186), +(107722, 3188979244, 3776013982, 1248931, 1, 67186), +(107722, 3188979244, 1187407512, 1248927, 1, 67186), +(107722, 3188979244, 3776013982, 1248927, 1, 67186), +(107715, 3939430102, 4030871717, 1035394, 1, 67186), +(107715, 3939430102, 4030871717, 1035393, 1, 67186), +(107713, 2523653419, 492039028, 52330, 1, 67186), +(107713, 2523653419, 492039028, 52328, 1, 67186), +(107713, 2523653419, 492039028, 51369, 1, 67186), +(107713, 2523653419, 4033975491, 611033, 2, 67186), +(107713, 2523653419, 4033975491, 611032, 2, 67186), +(107713, 2523653419, 1181150530, 732560, 2, 67186), +(107713, 2523653419, 1181150530, 732559, 2, 67186), +(107713, 2523653419, 3571931810, 41403, 3, 67186), +(107713, 2523653419, 3571931810, 41284, 3, 67186), +(107712, 3687048227, 1163127287, 119417, 3, 67186), +(107711, 282051303, 3072882582, 54341, 1, 67186), +(107711, 282051303, 1163127287, 123633, 3, 67186), +(107711, 282051303, 1163127287, 123630, 3, 67186), +(107711, 282051303, 1163127287, 123628, 3, 67186), +(107711, 282051303, 1163127287, 123626, 3, 67186), +(107711, 282051303, 1163127287, 123615, 3, 67186), +(107710, 628111018, 1163127287, 120886, 3, 67186), +(107709, 2964315604, 1163127287, 96141, 3, 67186), +(107708, 2068167997, 1187407512, 1277796, 1, 67186), +(107708, 2068167997, 3776013982, 1277796, 1, 67186), +(107708, 2068167997, 1187407512, 1256862, 1, 67186), +(107708, 2068167997, 3776013982, 1256862, 1, 67186), +(107708, 2068167997, 1187407512, 1256861, 1, 67186), +(107708, 2068167997, 3776013982, 1256861, 1, 67186), +(107708, 2068167997, 1187407512, 1256860, 1, 67186), +(107708, 2068167997, 3776013982, 1256860, 1, 67186), +(107708, 2068167997, 1187407512, 1256010, 1, 67186), +(107708, 2068167997, 3776013982, 1256010, 1, 67186), +(107705, 2127747283, 4021368146, 7698, 1, 67186), +(107705, 2127747283, 3386291891, 256084, 3, 67186), +(107704, 781018137, 1344507586, 274578, 1, 67186), +(107704, 781018137, 428746933, 274578, 3, 67186), +(107704, 781018137, 2442913102, 274578, 1, 67186), +(107704, 781018137, 3465080266, 274578, 3, 67186), +(107704, 781018137, 3037505077, 274578, 3, 67186), +(107704, 781018137, 1417785224, 274578, 3, 67186), +(107703, 2423383289, 1344507586, 268455, 1, 67186), +(107703, 2423383289, 428746933, 268455, 3, 67186), +(107703, 2423383289, 2442913102, 268455, 1, 67186), +(107703, 2423383289, 3465080266, 268455, 3, 67186), +(107703, 2423383289, 3037505077, 268455, 3, 67186), +(107703, 2423383289, 1417785224, 268455, 3, 67186), +(107698, 707369537, 1344507586, 268122, 1, 67186), +(107698, 707369537, 428746933, 268122, 3, 67186), +(107698, 707369537, 2442913102, 268122, 1, 67186), +(107698, 707369537, 3465080266, 268122, 3, 67186), +(107698, 707369537, 3037505077, 268122, 3, 67186), +(107698, 707369537, 1417785224, 268122, 3, 67186), +(107697, 2817602011, 3108775943, 126005, 2, 67186), +(107697, 2817602011, 1408785804, 249319, 1, 67186), +(107697, 2817602011, 1122246768, 249319, 1, 67186), +(107697, 2817602011, 1408785804, 249318, 1, 67186), +(107697, 2817602011, 1122246768, 249318, 1, 67186), +(107697, 2817602011, 1408785804, 249317, 1, 67186), +(107697, 2817602011, 1122246768, 249317, 1, 67186), +(107697, 2817602011, 1408785804, 249316, 1, 67186), +(107697, 2817602011, 1122246768, 249316, 1, 67186), +(107697, 2817602011, 1408785804, 249315, 1, 67186), +(107697, 2817602011, 1122246768, 249315, 1, 67186), +(107697, 2817602011, 1408785804, 249314, 1, 67186), +(107697, 2817602011, 1122246768, 249314, 1, 67186), +(107695, 35353968, 1255424668, 220963, 1, 67186), +(107695, 35353968, 1255424668, 220961, 1, 67186), +(107695, 35353968, 1255424668, 220959, 1, 67186), +(107695, 35353968, 1255424668, 220958, 1, 67186), +(107695, 35353968, 1255424668, 220957, 1, 67186), +(107695, 35353968, 1255424668, 220955, 1, 67186), +(107695, 35353968, 1255424668, 220725, 1, 67186), +(107694, 838735401, 666345498, 519090, 1, 67186), +(107694, 838735401, 3163679255, 57437, 1, 67186), +(107694, 838735401, 3322146344, 842899, 1, 67186), +(107694, 838735401, 1720692227, 242842, 1, 67186), +(107694, 838735401, 4030871717, 1317597, 1, 67186), +(107694, 838735401, 4030871717, 1317596, 1, 67186), +(107694, 838735401, 1187407512, 1295508, 1, 67186), +(107694, 838735401, 3776013982, 1295508, 1, 67186), +(107694, 838735401, 1073915313, 230451, 1, 67186), +(107693, 2306702179, 3108775943, 152529, 3, 67186), +(107691, 2608881117, 3764692828, 352215, 1, 67186), +(107691, 2608881117, 1163127287, 119574, 3, 67186), +(107691, 2608881117, 3322146344, 842888, 1, 67186), +(107691, 2608881117, 1720692227, 242841, 1, 67186), +(107691, 2608881117, 4030871717, 1317572, 1, 67186), +(107691, 2608881117, 1187407512, 1295497, 1, 67186), +(107691, 2608881117, 3776013982, 1295497, 1, 67186), +(107690, 1498217361, 1344507586, 272338, 1, 67186), +(107690, 1498217361, 428746933, 272338, 1, 67186), +(107690, 1498217361, 2442913102, 272338, 1, 67186), +(107690, 1498217361, 3465080266, 272338, 3, 67186), +(107690, 1498217361, 3037505077, 272338, 3, 67186), +(107690, 1498217361, 1417785224, 272338, 3, 67186), +(107690, 1498217361, 1344507586, 272337, 1, 67186), +(107690, 1498217361, 428746933, 272337, 1, 67186), +(107690, 1498217361, 2442913102, 272337, 1, 67186), +(107690, 1498217361, 3465080266, 272337, 3, 67186), +(107690, 1498217361, 3037505077, 272337, 3, 67186), +(107690, 1498217361, 1417785224, 272337, 3, 67186), +(107690, 1498217361, 1344507586, 272336, 1, 67186), +(107690, 1498217361, 428746933, 272336, 1, 67186), +(107690, 1498217361, 2442913102, 272336, 1, 67186), +(107690, 1498217361, 3465080266, 272336, 3, 67186), +(107690, 1498217361, 3037505077, 272336, 3, 67186), +(107690, 1498217361, 1417785224, 272336, 3, 67186), +(107690, 1498217361, 1344507586, 272321, 1, 67186), +(107690, 1498217361, 428746933, 272321, 1, 67186), +(107690, 1498217361, 2442913102, 272321, 1, 67186), +(107690, 1498217361, 3465080266, 272321, 3, 67186), +(107690, 1498217361, 3037505077, 272321, 3, 67186), +(107690, 1498217361, 1417785224, 272321, 3, 67186), +(107690, 1498217361, 1344507586, 272320, 1, 67186), +(107690, 1498217361, 428746933, 272320, 1, 67186), +(107690, 1498217361, 2442913102, 272320, 1, 67186), +(107690, 1498217361, 3465080266, 272320, 3, 67186), +(107690, 1498217361, 3037505077, 272320, 3, 67186), +(107690, 1498217361, 1417785224, 272320, 3, 67186), +(107689, 2204835154, 3108775943, 152528, 3, 67186), +(107688, 447964814, 1163127287, 125524, 3, 67186), +(107688, 447964814, 3322146344, 825297, 1, 67186), +(107688, 447964814, 4096770149, 246117, 2, 67186), +(107688, 447964814, 1187407512, 1276487, 1, 67186), +(107688, 447964814, 3776013982, 1276487, 1, 67186), +(107687, 2736716001, 345681529, 159042, 1, 67186), +(107687, 2736716001, 345681529, 159041, 1, 67186), +(107687, 2736716001, 345681529, 159040, 1, 67186), +(107687, 2736716001, 345681529, 159039, 1, 67186), +(107687, 2736716001, 345681529, 159038, 1, 67186), +(107687, 2736716001, 345681529, 159037, 1, 67186), +(107687, 2736716001, 345681529, 152783, 1, 67186), +(107687, 2736716001, 345681529, 152782, 1, 67186), +(107687, 2736716001, 345681529, 152781, 1, 67186), +(107687, 2736716001, 345681529, 152780, 1, 67186), +(107687, 2736716001, 345681529, 152779, 1, 67186), +(107687, 2736716001, 345681529, 152778, 1, 67186), +(107687, 2736716001, 345681529, 152777, 1, 67186), +(107687, 2736716001, 345681529, 152776, 1, 67186), +(107687, 2736716001, 345681529, 152775, 1, 67186), +(107687, 2736716001, 345681529, 152774, 1, 67186), +(107687, 2736716001, 345681529, 152773, 1, 67186), +(107687, 2736716001, 345681529, 152772, 1, 67186), +(107687, 2736716001, 345681529, 152771, 1, 67186), +(107687, 2736716001, 345681529, 152770, 1, 67186), +(107687, 2736716001, 345681529, 152769, 1, 67186), +(107686, 2746808770, 1163127287, 120889, 3, 67186), +(107685, 3627307069, 312611497, 27674, 3, 67186), +(107685, 3627307069, 312611497, 27673, 3, 67186), +(107685, 3627307069, 1163127287, 115015, 3, 67186), +(107685, 3627307069, 4030871717, 1245242, 1, 67186), +(107683, 3228302024, 1163127287, 77538, 3, 67186), +(107681, 1696592134, 844464874, 330078, 2, 67186), +(107681, 1696592134, 844464874, 330077, 2, 67186), +(107681, 1696592134, 844464874, 330072, 2, 67186), +(107681, 1696592134, 1344507586, 268481, 1, 67186), +(107681, 1696592134, 428746933, 268481, 3, 67186), +(107681, 1696592134, 2442913102, 268481, 1, 67186), +(107681, 1696592134, 3465080266, 268481, 3, 67186), +(107681, 1696592134, 3037505077, 268481, 3, 67186), +(107681, 1696592134, 1417785224, 268481, 3, 67186), +(107681, 1696592134, 1344507586, 268456, 1, 67186), +(107681, 1696592134, 428746933, 268456, 3, 67186), +(107681, 1696592134, 2442913102, 268456, 1, 67186), +(107681, 1696592134, 3465080266, 268456, 3, 67186), +(107681, 1696592134, 3037505077, 268456, 3, 67186), +(107681, 1696592134, 1417785224, 268456, 3, 67186), +(107679, 2620210678, 1163127287, 102854, 3, 67186), +(107679, 2620210678, 3322146344, 842877, 1, 67186), +(107679, 2620210678, 3322146344, 757076, 1, 67186), +(107679, 2620210678, 1720692227, 242836, 1, 67186), +(107679, 2620210678, 1720692227, 212299, 1, 67186), +(107679, 2620210678, 4030871717, 1317559, 1, 67186), +(107679, 2620210678, 1187407512, 1295486, 1, 67186), +(107679, 2620210678, 3776013982, 1295486, 1, 67186), +(107679, 2620210678, 1187407512, 464291, 1, 67186), +(107679, 2620210678, 3776013982, 464291, 1, 67186), +(107677, 491690342, 3386943305, 347498, 3, 67186), +(107677, 491690342, 3386943305, 341023, 3, 67186), +(107677, 491690342, 3386943305, 339532, 3, 67186), +(107677, 491690342, 3386943305, 339530, 3, 67186), +(107677, 491690342, 3386943305, 333639, 3, 67186), +(107677, 491690342, 3386943305, 333637, 3, 67186), +(107677, 491690342, 3386943305, 333636, 3, 67186), +(107677, 491690342, 3386943305, 328922, 3, 67186), +(107677, 491690342, 3386943305, 327981, 3, 67186), +(107677, 491690342, 3386943305, 327864, 3, 67186), +(107676, 598540999, 3645674820, 308378, 2, 67186), +(107676, 598540999, 3834752085, 308378, 1, 67186), +(107676, 598540999, 3645674820, 308377, 2, 67186), +(107676, 598540999, 3834752085, 308377, 1, 67186), +(107676, 598540999, 3645674820, 307926, 2, 67186), +(107676, 598540999, 3834752085, 307926, 1, 67186), +(107676, 598540999, 3645674820, 307925, 2, 67186), +(107676, 598540999, 3834752085, 307925, 1, 67186), +(107676, 598540999, 3645674820, 307924, 2, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107676, 598540999, 3834752085, 307924, 1, 67186), +(107674, 2609930357, 3571931810, 40501, 3, 67186), +(107674, 2609930357, 3571931810, 39855, 3, 67186), +(107672, 2861668752, 3322146344, 829794, 1, 67186), +(107669, 2590793807, 4102286043, 260059, 1, 67186), +(107669, 2590793807, 3322146344, 834749, 1, 67186), +(107669, 2590793807, 1548466975, 42970, 1, 67186), +(107667, 666961729, 3386943305, 347608, 3, 67186), +(107667, 666961729, 3386943305, 347607, 3, 67186), +(107667, 666961729, 3386943305, 346582, 3, 67186), +(107667, 666961729, 3386943305, 346580, 3, 67186), +(107667, 666961729, 3386943305, 345529, 3, 67186), +(107667, 666961729, 3386943305, 345527, 3, 67186), +(107667, 666961729, 3386943305, 345526, 3, 67186), +(107667, 666961729, 3386943305, 345489, 3, 67186), +(107667, 666961729, 3386943305, 345487, 3, 67186), +(107667, 666961729, 3386943305, 343997, 3, 67186), +(107667, 666961729, 3386943305, 343988, 3, 67186), +(107667, 666961729, 3386943305, 343152, 3, 67186), +(107667, 666961729, 3386943305, 343147, 3, 67186), +(107667, 666961729, 3386943305, 343093, 3, 67186), +(107667, 666961729, 3386943305, 342910, 3, 67186), +(107667, 666961729, 3386943305, 342286, 3, 67186), +(107667, 666961729, 3386943305, 342285, 3, 67186), +(107667, 666961729, 3386943305, 342284, 3, 67186), +(107667, 666961729, 3386943305, 342247, 3, 67186), +(107667, 666961729, 3386943305, 342245, 3, 67186), +(107667, 666961729, 3386943305, 342244, 3, 67186), +(107667, 666961729, 3386943305, 342203, 3, 67186), +(107667, 666961729, 3386943305, 342045, 3, 67186), +(107667, 666961729, 3386943305, 341965, 3, 67186), +(107667, 666961729, 3386943305, 341964, 3, 67186), +(107667, 666961729, 3386943305, 341963, 3, 67186), +(107667, 666961729, 3386943305, 341962, 3, 67186), +(107667, 666961729, 3386943305, 341960, 3, 67186), +(107667, 666961729, 3386943305, 341884, 3, 67186), +(107667, 666961729, 3386943305, 341882, 3, 67186), +(107667, 666961729, 3386943305, 341881, 3, 67186), +(107667, 666961729, 3386943305, 341877, 3, 67186), +(107667, 666961729, 3386943305, 340723, 3, 67186), +(107667, 666961729, 3386943305, 340664, 3, 67186), +(107667, 666961729, 3386943305, 340596, 3, 67186), +(107667, 666961729, 3386943305, 340555, 3, 67186), +(107667, 666961729, 3386943305, 340535, 3, 67186), +(107667, 666961729, 3386943305, 340534, 3, 67186), +(107667, 666961729, 3386943305, 339854, 3, 67186), +(107667, 666961729, 3386943305, 339849, 3, 67186), +(107667, 666961729, 3386943305, 339847, 3, 67186), +(107667, 666961729, 3386943305, 339846, 3, 67186), +(107667, 666961729, 3386943305, 339845, 3, 67186), +(107667, 666961729, 3386943305, 339712, 3, 67186), +(107667, 666961729, 3386943305, 336304, 3, 67186), +(107667, 666961729, 3386943305, 335957, 3, 67186), +(107667, 666961729, 3386943305, 335895, 3, 67186), +(107667, 666961729, 3386943305, 335699, 3, 67186), +(107667, 666961729, 3386943305, 335698, 3, 67186), +(107667, 666961729, 3386943305, 335696, 3, 67186), +(107667, 666961729, 3386943305, 335626, 3, 67186), +(107667, 666961729, 3386943305, 335615, 3, 67186), +(107667, 666961729, 3386943305, 335398, 3, 67186), +(107667, 666961729, 3386943305, 335109, 3, 67186), +(107667, 666961729, 3386943305, 335009, 3, 67186), +(107667, 666961729, 3386943305, 335008, 3, 67186), +(107667, 666961729, 3386943305, 333555, 3, 67186), +(107667, 666961729, 3386943305, 333553, 3, 67186), +(107667, 666961729, 3386943305, 333529, 3, 67186), +(107667, 666961729, 3386943305, 333528, 3, 67186), +(107667, 666961729, 3386943305, 333455, 3, 67186), +(107667, 666961729, 3386943305, 333454, 3, 67186), +(107667, 666961729, 3386943305, 331930, 3, 67186), +(107667, 666961729, 3386943305, 330632, 3, 67186), +(107667, 666961729, 3386291891, 261769, 3, 67186), +(107667, 666961729, 3386291891, 251016, 3, 67186), +(107664, 1336165096, 331613093, 234316, 3, 67186), +(107664, 1336165096, 4218319612, 1700, 1, 67186), +(107663, 3650818367, 1163127287, 127963, 3, 67186), +(107663, 3650818367, 1163127287, 127962, 3, 67186), +(107663, 3650818367, 1163127287, 127961, 3, 67186), +(107663, 3650818367, 2163595472, 285, 3, 67186), +(107663, 3650818367, 2163595472, 284, 3, 67186), +(107663, 3650818367, 3571931810, 42951, 3, 67186), +(107663, 3650818367, 3571931810, 42950, 3, 67186), +(107663, 3650818367, 3571931810, 42949, 3, 67186), +(107663, 3650818367, 3571931810, 40951, 3, 67186), +(107663, 3650818367, 3571931810, 40947, 3, 67186), +(107663, 3650818367, 1548466975, 43692, 3, 67186), +(107663, 3650818367, 1548466975, 43691, 3, 67186), +(107663, 3650818367, 1548466975, 43690, 3, 67186), +(107662, 3173008977, 1548466975, 38872, 3, 67186), +(107661, 1790060586, 312611497, 28349, 3, 67186), +(107661, 1790060586, 312611497, 28348, 3, 67186), +(107661, 1790060586, 1163127287, 122127, 3, 67186), +(107661, 1790060586, 4030871717, 1287681, 1, 67186), +(107660, 1645640484, 1163127287, 123375, 3, 67186), +(107659, 128271309, 1163127287, 106450, 3, 67186), +(107659, 128271309, 3322146344, 769597, 1, 67186), +(107659, 128271309, 3322146344, 769572, 1, 67186), +(107659, 128271309, 1187407512, 1243616, 1, 67186), +(107659, 128271309, 3776013982, 1243616, 1, 67186), +(107659, 128271309, 1187407512, 1243615, 1, 67186), +(107659, 128271309, 3776013982, 1243615, 1, 67186), +(107659, 128271309, 1187407512, 1243613, 1, 67186), +(107659, 128271309, 3776013982, 1243613, 1, 67186), +(107659, 128271309, 1187407512, 1243605, 1, 67186), +(107659, 128271309, 3776013982, 1243605, 1, 67186), +(107659, 128271309, 1187407512, 1243602, 1, 67186), +(107659, 128271309, 3776013982, 1243602, 1, 67186), +(107659, 128271309, 1187407512, 1243588, 1, 67186), +(107659, 128271309, 3776013982, 1243588, 1, 67186), +(107659, 128271309, 1187407512, 1243586, 1, 67186), +(107659, 128271309, 3776013982, 1243586, 1, 67186), +(107658, 2334690072, 4033975491, 619702, 1, 67186), +(107658, 2334690072, 1181150530, 751465, 1, 67186), +(107658, 2334690072, 4102286043, 242706, 1, 67186), +(107658, 2334690072, 4102286043, 239930, 1, 67186), +(107655, 2761298125, 600565378, 660617, 1, 67186), +(107655, 2761298125, 600565378, 660616, 1, 67186), +(107655, 2761298125, 600565378, 643167, 1, 67186), +(107655, 2761298125, 3218799089, 144347, 1, 67186), +(107652, 1674097984, 3386943305, 344773, 3, 67186), +(107652, 1674097984, 3386943305, 344568, 3, 67186), +(107652, 1674097984, 3386943305, 344162, 3, 67186), +(107652, 1674097984, 3386943305, 341921, 3, 67186), +(107651, 2590076111, 1010104591, 24096, 1, 67186), +(107651, 2590076111, 1010104591, 23712, 1, 67186), +(107651, 2590076111, 1010104591, 23427, 1, 67186), +(107651, 2590076111, 1010104591, 23426, 1, 67186), +(107651, 2590076111, 1010104591, 23425, 1, 67186), +(107651, 2590076111, 1010104591, 23424, 1, 67186), +(107649, 2426016366, 383023617, 24401, 1, 67186), +(107649, 2426016366, 4030871717, 1317414, 1, 67186), +(107649, 2426016366, 4030871717, 1289007, 1, 67186), +(107649, 2426016366, 4030871717, 1280841, 1, 67186), +(107649, 2426016366, 4030871717, 1032419, 1, 67186), +(107649, 2426016366, 4030871717, 1029059, 1, 67186), +(107649, 2426016366, 4030871717, 737871, 1, 67186), +(107649, 2426016366, 4030871717, 191091, 1, 67186), +(107649, 2426016366, 1880017466, 285616, 1, 67186), +(107649, 2426016366, 1880017466, 285615, 1, 67186), +(107649, 2426016366, 1272569722, 94972, 1, 67186), +(107648, 1221643256, 4030871717, 301124, 1, 67186), +(107648, 1221643256, 1880017466, 164008, 1, 67186), +(107648, 1221643256, 1880017466, 164007, 1, 67186), +(107648, 1221643256, 1272569722, 58948, 1, 67186), +(107646, 1395178848, 813076512, 204772, 1, 67186), +(107646, 1395178848, 4030871717, 1317394, 1, 67186), +(107646, 1395178848, 4030871717, 1273067, 1, 67186), +(107645, 1486865598, 4030871717, 1252594, 1, 67186), +(107645, 1486865598, 4030871717, 1249259, 1, 67186), +(107645, 1486865598, 4030871717, 1135777, 1, 67186), +(107645, 1486865598, 4030871717, 1096991, 1, 67186), +(107645, 1486865598, 4030871717, 898195, 1, 67186), +(107645, 1486865598, 4030871717, 261018, 1, 67186), +(107645, 1486865598, 4030871717, 191059, 1, 67186), +(107645, 1486865598, 4030871717, 191058, 1, 67186), +(107645, 1486865598, 4030871717, 191057, 1, 67186), +(107645, 1486865598, 4030871717, 191056, 1, 67186), +(107645, 1486865598, 4030871717, 179720, 1, 67186), +(107645, 1486865598, 4030871717, 136652, 1, 67186), +(107645, 1486865598, 4030871717, 44107, 1, 67186), +(107645, 1486865598, 4030871717, 280, 1, 67186), +(107644, 810633867, 4030871717, 1273712, 1, 67186), +(107644, 810633867, 4030871717, 280158, 1, 67186), +(107643, 3293726766, 1163127287, 104889, 3, 67186), +(107641, 163884014, 4030871717, 844836, 1, 67186), +(107641, 163884014, 4030871717, 318967, 1, 67186), +(107641, 163884014, 4030871717, 318965, 1, 67186), +(107641, 163884014, 4030871717, 315254, 1, 67186), +(107641, 163884014, 4030871717, 306731, 1, 67186), +(107640, 2339338461, 1163127287, 124664, 3, 67186), +(107639, 3980981803, 1163127287, 78955, 3, 67186), +(107638, 1270127949, 4030871717, 1311598, 1, 67186), +(107638, 1270127949, 4030871717, 1262767, 1, 67186), +(107638, 1270127949, 4030871717, 1262766, 1, 67186), +(107638, 1270127949, 4030871717, 1262765, 1, 67186), +(107637, 1165617475, 3764692828, 347761, 2, 67186), +(107637, 1165617475, 1163127287, 118111, 3, 67186), +(107637, 1165617475, 3322146344, 811397, 1, 67186), +(107637, 1165617475, 3322146344, 811396, 1, 67186), +(107637, 1165617475, 3322146344, 811376, 1, 67186), +(107637, 1165617475, 4030871717, 1265754, 1, 67186), +(107637, 1165617475, 4030871717, 1265753, 1, 67186), +(107637, 1165617475, 4030871717, 1265752, 1, 67186), +(107637, 1165617475, 4030871717, 1265725, 1, 67186), +(107637, 1165617475, 1187407512, 1257701, 1, 67186), +(107637, 1165617475, 3776013982, 1257701, 1, 67186), +(107637, 1165617475, 3386943305, 341849, 3, 67186), +(107637, 1165617475, 3386943305, 320902, 3, 67186), +(107636, 2138087844, 4030871717, 1317300, 1, 67186), +(107636, 2138087844, 4030871717, 1317299, 1, 67186), +(107636, 2138087844, 4030871717, 1262843, 1, 67186), +(107636, 2138087844, 3386943305, 341739, 3, 67186), +(107636, 2138087844, 3386943305, 341738, 3, 67186), +(107634, 1731922532, 1344507586, 273874, 1, 67186), +(107634, 1731922532, 428746933, 273874, 1, 67186), +(107634, 1731922532, 2442913102, 273874, 1, 67186), +(107634, 1731922532, 3465080266, 273874, 3, 67186), +(107634, 1731922532, 3037505077, 273874, 3, 67186), +(107634, 1731922532, 1417785224, 273874, 3, 67186), +(107634, 1731922532, 1344507586, 263970, 1, 67186), +(107634, 1731922532, 428746933, 263970, 1, 67186), +(107634, 1731922532, 2442913102, 263970, 1, 67186), +(107634, 1731922532, 3465080266, 263970, 3, 67186), +(107634, 1731922532, 3037505077, 263970, 3, 67186), +(107634, 1731922532, 1417785224, 263970, 3, 67186), +(107634, 1731922532, 1344507586, 263969, 1, 67186), +(107634, 1731922532, 428746933, 263969, 1, 67186), +(107634, 1731922532, 2442913102, 263969, 1, 67186), +(107634, 1731922532, 3465080266, 263969, 3, 67186), +(107634, 1731922532, 3037505077, 263969, 3, 67186), +(107634, 1731922532, 1417785224, 263969, 3, 67186), +(107634, 1731922532, 1344507586, 263968, 1, 67186), +(107634, 1731922532, 428746933, 263968, 1, 67186), +(107634, 1731922532, 2442913102, 263968, 1, 67186), +(107634, 1731922532, 3465080266, 263968, 3, 67186), +(107634, 1731922532, 3037505077, 263968, 3, 67186), +(107634, 1731922532, 1417785224, 263968, 3, 67186), +(107634, 1731922532, 1344507586, 263967, 1, 67186), +(107634, 1731922532, 428746933, 263967, 1, 67186), +(107634, 1731922532, 2442913102, 263967, 1, 67186), +(107634, 1731922532, 3465080266, 263967, 3, 67186), +(107634, 1731922532, 3037505077, 263967, 3, 67186), +(107634, 1731922532, 1417785224, 263967, 3, 67186), +(107634, 1731922532, 1344507586, 263966, 1, 67186), +(107634, 1731922532, 428746933, 263966, 1, 67186), +(107634, 1731922532, 2442913102, 263966, 1, 67186), +(107634, 1731922532, 3465080266, 263966, 3, 67186), +(107634, 1731922532, 3037505077, 263966, 3, 67186), +(107634, 1731922532, 1417785224, 263966, 3, 67186), +(107634, 1731922532, 1344507586, 263963, 1, 67186), +(107634, 1731922532, 428746933, 263963, 1, 67186), +(107634, 1731922532, 2442913102, 263963, 1, 67186), +(107634, 1731922532, 3465080266, 263963, 3, 67186), +(107634, 1731922532, 3037505077, 263963, 3, 67186), +(107634, 1731922532, 1417785224, 263963, 3, 67186), +(107634, 1731922532, 1344507586, 263960, 1, 67186), +(107634, 1731922532, 428746933, 263960, 1, 67186), +(107634, 1731922532, 2442913102, 263960, 1, 67186), +(107634, 1731922532, 3465080266, 263960, 3, 67186), +(107634, 1731922532, 3037505077, 263960, 3, 67186), +(107634, 1731922532, 1417785224, 263960, 3, 67186), +(107634, 1731922532, 1344507586, 263959, 1, 67186), +(107634, 1731922532, 428746933, 263959, 1, 67186), +(107634, 1731922532, 2442913102, 263959, 1, 67186), +(107634, 1731922532, 3465080266, 263959, 3, 67186), +(107634, 1731922532, 3037505077, 263959, 3, 67186), +(107634, 1731922532, 1417785224, 263959, 3, 67186), +(107634, 1731922532, 1344507586, 263956, 1, 67186), +(107634, 1731922532, 428746933, 263956, 1, 67186), +(107634, 1731922532, 2442913102, 263956, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107634, 1731922532, 3465080266, 263956, 3, 67186), +(107634, 1731922532, 3037505077, 263956, 3, 67186), +(107634, 1731922532, 1417785224, 263956, 3, 67186), +(107634, 1731922532, 1344507586, 263954, 1, 67186), +(107634, 1731922532, 428746933, 263954, 1, 67186), +(107634, 1731922532, 2442913102, 263954, 1, 67186), +(107634, 1731922532, 3465080266, 263954, 3, 67186), +(107634, 1731922532, 3037505077, 263954, 3, 67186), +(107634, 1731922532, 1417785224, 263954, 3, 67186), +(107634, 1731922532, 1344507586, 263952, 1, 67186), +(107634, 1731922532, 428746933, 263952, 1, 67186), +(107634, 1731922532, 2442913102, 263952, 1, 67186), +(107634, 1731922532, 3465080266, 263952, 3, 67186), +(107634, 1731922532, 3037505077, 263952, 3, 67186), +(107634, 1731922532, 1417785224, 263952, 3, 67186), +(107634, 1731922532, 1344507586, 263950, 1, 67186), +(107634, 1731922532, 428746933, 263950, 1, 67186), +(107634, 1731922532, 2442913102, 263950, 1, 67186), +(107634, 1731922532, 3465080266, 263950, 3, 67186), +(107634, 1731922532, 3037505077, 263950, 3, 67186), +(107634, 1731922532, 1417785224, 263950, 3, 67186), +(107634, 1731922532, 1344507586, 263949, 1, 67186), +(107634, 1731922532, 428746933, 263949, 1, 67186), +(107634, 1731922532, 2442913102, 263949, 1, 67186), +(107634, 1731922532, 3465080266, 263949, 3, 67186), +(107634, 1731922532, 3037505077, 263949, 3, 67186), +(107634, 1731922532, 1417785224, 263949, 3, 67186), +(107634, 1731922532, 1344507586, 263946, 1, 67186), +(107634, 1731922532, 428746933, 263946, 1, 67186), +(107634, 1731922532, 2442913102, 263946, 1, 67186), +(107634, 1731922532, 3465080266, 263946, 3, 67186), +(107634, 1731922532, 3037505077, 263946, 3, 67186), +(107634, 1731922532, 1417785224, 263946, 3, 67186), +(107634, 1731922532, 1344507586, 263943, 1, 67186), +(107634, 1731922532, 428746933, 263943, 1, 67186), +(107634, 1731922532, 2442913102, 263943, 1, 67186), +(107634, 1731922532, 3465080266, 263943, 3, 67186), +(107634, 1731922532, 3037505077, 263943, 3, 67186), +(107634, 1731922532, 1417785224, 263943, 3, 67186), +(107634, 1731922532, 1344507586, 263942, 1, 67186), +(107634, 1731922532, 428746933, 263942, 1, 67186), +(107634, 1731922532, 2442913102, 263942, 1, 67186), +(107634, 1731922532, 3465080266, 263942, 3, 67186), +(107634, 1731922532, 3037505077, 263942, 3, 67186), +(107634, 1731922532, 1417785224, 263942, 3, 67186), +(107634, 1731922532, 1344507586, 263941, 1, 67186), +(107634, 1731922532, 428746933, 263941, 1, 67186), +(107634, 1731922532, 2442913102, 263941, 1, 67186), +(107634, 1731922532, 3465080266, 263941, 3, 67186), +(107634, 1731922532, 3037505077, 263941, 3, 67186), +(107634, 1731922532, 1417785224, 263941, 3, 67186), +(107634, 1731922532, 1344507586, 263707, 1, 67186), +(107634, 1731922532, 428746933, 263707, 1, 67186), +(107634, 1731922532, 2442913102, 263707, 1, 67186), +(107634, 1731922532, 3465080266, 263707, 3, 67186), +(107634, 1731922532, 3037505077, 263707, 3, 67186), +(107634, 1731922532, 1417785224, 263707, 3, 67186), +(107634, 1731922532, 1344507586, 263706, 1, 67186), +(107634, 1731922532, 428746933, 263706, 1, 67186), +(107634, 1731922532, 2442913102, 263706, 1, 67186), +(107634, 1731922532, 3465080266, 263706, 3, 67186), +(107634, 1731922532, 3037505077, 263706, 3, 67186), +(107634, 1731922532, 1417785224, 263706, 3, 67186), +(107634, 1731922532, 1344507586, 263705, 1, 67186), +(107634, 1731922532, 428746933, 263705, 1, 67186), +(107634, 1731922532, 2442913102, 263705, 1, 67186), +(107634, 1731922532, 3465080266, 263705, 3, 67186), +(107634, 1731922532, 3037505077, 263705, 3, 67186), +(107634, 1731922532, 1417785224, 263705, 3, 67186), +(107634, 1731922532, 1344507586, 263704, 1, 67186), +(107634, 1731922532, 428746933, 263704, 1, 67186), +(107634, 1731922532, 2442913102, 263704, 1, 67186), +(107634, 1731922532, 3465080266, 263704, 3, 67186), +(107634, 1731922532, 3037505077, 263704, 3, 67186), +(107634, 1731922532, 1417785224, 263704, 3, 67186), +(107634, 1731922532, 1344507586, 263703, 1, 67186), +(107634, 1731922532, 428746933, 263703, 1, 67186), +(107634, 1731922532, 2442913102, 263703, 1, 67186), +(107634, 1731922532, 3465080266, 263703, 3, 67186), +(107634, 1731922532, 3037505077, 263703, 3, 67186), +(107634, 1731922532, 1417785224, 263703, 3, 67186), +(107634, 1731922532, 1344507586, 263702, 1, 67186), +(107634, 1731922532, 428746933, 263702, 1, 67186), +(107634, 1731922532, 2442913102, 263702, 1, 67186), +(107634, 1731922532, 3465080266, 263702, 3, 67186), +(107634, 1731922532, 3037505077, 263702, 3, 67186), +(107634, 1731922532, 1417785224, 263702, 3, 67186), +(107634, 1731922532, 1344507586, 263701, 1, 67186), +(107634, 1731922532, 428746933, 263701, 1, 67186), +(107634, 1731922532, 2442913102, 263701, 1, 67186), +(107634, 1731922532, 3465080266, 263701, 3, 67186), +(107634, 1731922532, 3037505077, 263701, 3, 67186), +(107634, 1731922532, 1417785224, 263701, 3, 67186), +(107634, 1731922532, 1344507586, 263700, 1, 67186), +(107634, 1731922532, 428746933, 263700, 1, 67186), +(107634, 1731922532, 2442913102, 263700, 1, 67186), +(107634, 1731922532, 3465080266, 263700, 3, 67186), +(107634, 1731922532, 3037505077, 263700, 3, 67186), +(107634, 1731922532, 1417785224, 263700, 3, 67186), +(107634, 1731922532, 1344507586, 263699, 1, 67186), +(107634, 1731922532, 428746933, 263699, 1, 67186), +(107634, 1731922532, 2442913102, 263699, 1, 67186), +(107634, 1731922532, 3465080266, 263699, 3, 67186), +(107634, 1731922532, 3037505077, 263699, 3, 67186), +(107634, 1731922532, 1417785224, 263699, 3, 67186), +(107634, 1731922532, 1344507586, 263698, 1, 67186), +(107634, 1731922532, 428746933, 263698, 1, 67186), +(107634, 1731922532, 2442913102, 263698, 1, 67186), +(107634, 1731922532, 3465080266, 263698, 3, 67186), +(107634, 1731922532, 3037505077, 263698, 3, 67186), +(107634, 1731922532, 1417785224, 263698, 3, 67186), +(107634, 1731922532, 1344507586, 263697, 1, 67186), +(107634, 1731922532, 428746933, 263697, 1, 67186), +(107634, 1731922532, 2442913102, 263697, 1, 67186), +(107634, 1731922532, 3465080266, 263697, 3, 67186), +(107634, 1731922532, 3037505077, 263697, 3, 67186), +(107634, 1731922532, 1417785224, 263697, 3, 67186), +(107634, 1731922532, 1344507586, 263696, 1, 67186), +(107634, 1731922532, 428746933, 263696, 1, 67186), +(107634, 1731922532, 2442913102, 263696, 1, 67186), +(107634, 1731922532, 3465080266, 263696, 3, 67186), +(107634, 1731922532, 3037505077, 263696, 3, 67186), +(107634, 1731922532, 1417785224, 263696, 3, 67186), +(107634, 1731922532, 1344507586, 263695, 1, 67186), +(107634, 1731922532, 428746933, 263695, 1, 67186), +(107634, 1731922532, 2442913102, 263695, 1, 67186), +(107634, 1731922532, 3465080266, 263695, 3, 67186), +(107634, 1731922532, 3037505077, 263695, 3, 67186), +(107634, 1731922532, 1417785224, 263695, 3, 67186), +(107634, 1731922532, 1344507586, 263694, 1, 67186), +(107634, 1731922532, 428746933, 263694, 1, 67186), +(107634, 1731922532, 2442913102, 263694, 1, 67186), +(107634, 1731922532, 3465080266, 263694, 3, 67186), +(107634, 1731922532, 3037505077, 263694, 3, 67186), +(107634, 1731922532, 1417785224, 263694, 3, 67186), +(107634, 1731922532, 1344507586, 263693, 1, 67186), +(107634, 1731922532, 428746933, 263693, 1, 67186), +(107634, 1731922532, 2442913102, 263693, 1, 67186), +(107634, 1731922532, 3465080266, 263693, 3, 67186), +(107634, 1731922532, 3037505077, 263693, 3, 67186), +(107634, 1731922532, 1417785224, 263693, 3, 67186), +(107634, 1731922532, 1344507586, 263692, 1, 67186), +(107634, 1731922532, 428746933, 263692, 1, 67186), +(107634, 1731922532, 2442913102, 263692, 1, 67186), +(107634, 1731922532, 3465080266, 263692, 3, 67186), +(107634, 1731922532, 3037505077, 263692, 3, 67186), +(107634, 1731922532, 1417785224, 263692, 3, 67186), +(107634, 1731922532, 1344507586, 263691, 1, 67186), +(107634, 1731922532, 428746933, 263691, 1, 67186), +(107634, 1731922532, 2442913102, 263691, 1, 67186), +(107634, 1731922532, 3465080266, 263691, 3, 67186), +(107634, 1731922532, 3037505077, 263691, 3, 67186), +(107634, 1731922532, 1417785224, 263691, 3, 67186), +(107634, 1731922532, 1344507586, 263690, 1, 67186), +(107634, 1731922532, 428746933, 263690, 1, 67186), +(107634, 1731922532, 2442913102, 263690, 1, 67186), +(107634, 1731922532, 3465080266, 263690, 3, 67186), +(107634, 1731922532, 3037505077, 263690, 3, 67186), +(107634, 1731922532, 1417785224, 263690, 3, 67186), +(107634, 1731922532, 1344507586, 263689, 1, 67186), +(107634, 1731922532, 428746933, 263689, 1, 67186), +(107634, 1731922532, 2442913102, 263689, 1, 67186), +(107634, 1731922532, 3465080266, 263689, 3, 67186), +(107634, 1731922532, 3037505077, 263689, 3, 67186), +(107634, 1731922532, 1417785224, 263689, 3, 67186), +(107634, 1731922532, 1344507586, 263688, 1, 67186), +(107634, 1731922532, 428746933, 263688, 1, 67186), +(107634, 1731922532, 2442913102, 263688, 1, 67186), +(107634, 1731922532, 3465080266, 263688, 3, 67186), +(107634, 1731922532, 3037505077, 263688, 3, 67186), +(107634, 1731922532, 1417785224, 263688, 3, 67186), +(107634, 1731922532, 1344507586, 263687, 1, 67186), +(107634, 1731922532, 428746933, 263687, 1, 67186), +(107634, 1731922532, 2442913102, 263687, 1, 67186), +(107634, 1731922532, 3465080266, 263687, 3, 67186), +(107634, 1731922532, 3037505077, 263687, 3, 67186), +(107634, 1731922532, 1417785224, 263687, 3, 67186), +(107634, 1731922532, 1344507586, 263686, 1, 67186), +(107634, 1731922532, 428746933, 263686, 1, 67186), +(107634, 1731922532, 2442913102, 263686, 1, 67186), +(107634, 1731922532, 3465080266, 263686, 3, 67186), +(107634, 1731922532, 3037505077, 263686, 3, 67186), +(107634, 1731922532, 1417785224, 263686, 3, 67186), +(107634, 1731922532, 1344507586, 263685, 1, 67186), +(107634, 1731922532, 428746933, 263685, 1, 67186), +(107634, 1731922532, 2442913102, 263685, 1, 67186), +(107634, 1731922532, 3465080266, 263685, 3, 67186), +(107634, 1731922532, 3037505077, 263685, 3, 67186), +(107634, 1731922532, 1417785224, 263685, 3, 67186), +(107634, 1731922532, 1344507586, 263684, 1, 67186), +(107634, 1731922532, 428746933, 263684, 1, 67186), +(107634, 1731922532, 2442913102, 263684, 1, 67186), +(107634, 1731922532, 3465080266, 263684, 3, 67186), +(107634, 1731922532, 3037505077, 263684, 3, 67186), +(107634, 1731922532, 1417785224, 263684, 3, 67186), +(107634, 1731922532, 1344507586, 263683, 1, 67186), +(107634, 1731922532, 428746933, 263683, 1, 67186), +(107634, 1731922532, 2442913102, 263683, 1, 67186), +(107634, 1731922532, 3465080266, 263683, 3, 67186), +(107634, 1731922532, 3037505077, 263683, 3, 67186), +(107634, 1731922532, 1417785224, 263683, 3, 67186), +(107634, 1731922532, 1344507586, 263682, 1, 67186), +(107634, 1731922532, 428746933, 263682, 1, 67186), +(107634, 1731922532, 2442913102, 263682, 1, 67186), +(107634, 1731922532, 3465080266, 263682, 3, 67186), +(107634, 1731922532, 3037505077, 263682, 3, 67186), +(107634, 1731922532, 1417785224, 263682, 3, 67186), +(107634, 1731922532, 1344507586, 263681, 1, 67186), +(107634, 1731922532, 428746933, 263681, 1, 67186), +(107634, 1731922532, 2442913102, 263681, 1, 67186), +(107634, 1731922532, 3465080266, 263681, 3, 67186), +(107634, 1731922532, 3037505077, 263681, 3, 67186), +(107634, 1731922532, 1417785224, 263681, 3, 67186), +(107634, 1731922532, 1344507586, 263680, 1, 67186), +(107634, 1731922532, 428746933, 263680, 1, 67186), +(107634, 1731922532, 2442913102, 263680, 1, 67186), +(107634, 1731922532, 3465080266, 263680, 3, 67186), +(107634, 1731922532, 3037505077, 263680, 3, 67186), +(107634, 1731922532, 1417785224, 263680, 3, 67186), +(107634, 1731922532, 1344507586, 263679, 1, 67186), +(107634, 1731922532, 428746933, 263679, 1, 67186), +(107634, 1731922532, 2442913102, 263679, 1, 67186), +(107634, 1731922532, 3465080266, 263679, 3, 67186), +(107634, 1731922532, 3037505077, 263679, 3, 67186), +(107634, 1731922532, 1417785224, 263679, 3, 67186), +(107634, 1731922532, 1344507586, 263678, 1, 67186), +(107634, 1731922532, 428746933, 263678, 1, 67186), +(107634, 1731922532, 2442913102, 263678, 1, 67186), +(107634, 1731922532, 3465080266, 263678, 3, 67186), +(107634, 1731922532, 3037505077, 263678, 3, 67186), +(107634, 1731922532, 1417785224, 263678, 3, 67186), +(107634, 1731922532, 1344507586, 263677, 1, 67186), +(107634, 1731922532, 428746933, 263677, 1, 67186), +(107634, 1731922532, 2442913102, 263677, 1, 67186), +(107634, 1731922532, 3465080266, 263677, 3, 67186), +(107634, 1731922532, 3037505077, 263677, 3, 67186), +(107634, 1731922532, 1417785224, 263677, 3, 67186), +(107634, 1731922532, 1344507586, 263676, 1, 67186), +(107634, 1731922532, 428746933, 263676, 1, 67186), +(107634, 1731922532, 2442913102, 263676, 1, 67186), +(107634, 1731922532, 3465080266, 263676, 3, 67186), +(107634, 1731922532, 3037505077, 263676, 3, 67186), +(107634, 1731922532, 1417785224, 263676, 3, 67186), +(107634, 1731922532, 1344507586, 263675, 1, 67186), +(107634, 1731922532, 428746933, 263675, 1, 67186), +(107634, 1731922532, 2442913102, 263675, 1, 67186), +(107634, 1731922532, 3465080266, 263675, 3, 67186), +(107634, 1731922532, 3037505077, 263675, 3, 67186), +(107634, 1731922532, 1417785224, 263675, 3, 67186), +(107634, 1731922532, 1344507586, 263674, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107634, 1731922532, 428746933, 263674, 1, 67186), +(107634, 1731922532, 2442913102, 263674, 1, 67186), +(107634, 1731922532, 3465080266, 263674, 3, 67186), +(107634, 1731922532, 3037505077, 263674, 3, 67186), +(107634, 1731922532, 1417785224, 263674, 3, 67186), +(107634, 1731922532, 1344507586, 263673, 1, 67186), +(107634, 1731922532, 428746933, 263673, 1, 67186), +(107634, 1731922532, 2442913102, 263673, 1, 67186), +(107634, 1731922532, 3465080266, 263673, 3, 67186), +(107634, 1731922532, 3037505077, 263673, 3, 67186), +(107634, 1731922532, 1417785224, 263673, 3, 67186), +(107634, 1731922532, 1344507586, 263672, 1, 67186), +(107634, 1731922532, 428746933, 263672, 1, 67186), +(107634, 1731922532, 2442913102, 263672, 1, 67186), +(107634, 1731922532, 3465080266, 263672, 3, 67186), +(107634, 1731922532, 3037505077, 263672, 3, 67186), +(107634, 1731922532, 1417785224, 263672, 3, 67186), +(107634, 1731922532, 1344507586, 263671, 1, 67186), +(107634, 1731922532, 428746933, 263671, 1, 67186), +(107634, 1731922532, 2442913102, 263671, 1, 67186), +(107634, 1731922532, 3465080266, 263671, 3, 67186), +(107634, 1731922532, 3037505077, 263671, 3, 67186), +(107634, 1731922532, 1417785224, 263671, 3, 67186), +(107634, 1731922532, 1344507586, 263670, 1, 67186), +(107634, 1731922532, 428746933, 263670, 1, 67186), +(107634, 1731922532, 2442913102, 263670, 1, 67186), +(107634, 1731922532, 3465080266, 263670, 3, 67186), +(107634, 1731922532, 3037505077, 263670, 3, 67186), +(107634, 1731922532, 1417785224, 263670, 3, 67186), +(107634, 1731922532, 1344507586, 263669, 1, 67186), +(107634, 1731922532, 428746933, 263669, 1, 67186), +(107634, 1731922532, 2442913102, 263669, 1, 67186), +(107634, 1731922532, 3465080266, 263669, 3, 67186), +(107634, 1731922532, 3037505077, 263669, 3, 67186), +(107634, 1731922532, 1417785224, 263669, 3, 67186), +(107634, 1731922532, 1344507586, 263668, 1, 67186), +(107634, 1731922532, 428746933, 263668, 1, 67186), +(107634, 1731922532, 2442913102, 263668, 1, 67186), +(107634, 1731922532, 3465080266, 263668, 3, 67186), +(107634, 1731922532, 3037505077, 263668, 3, 67186), +(107634, 1731922532, 1417785224, 263668, 3, 67186), +(107634, 1731922532, 1344507586, 263667, 1, 67186), +(107634, 1731922532, 428746933, 263667, 1, 67186), +(107634, 1731922532, 2442913102, 263667, 1, 67186), +(107634, 1731922532, 3465080266, 263667, 3, 67186), +(107634, 1731922532, 3037505077, 263667, 3, 67186), +(107634, 1731922532, 1417785224, 263667, 3, 67186), +(107634, 1731922532, 1344507586, 263666, 1, 67186), +(107634, 1731922532, 428746933, 263666, 1, 67186), +(107634, 1731922532, 2442913102, 263666, 1, 67186), +(107634, 1731922532, 3465080266, 263666, 3, 67186), +(107634, 1731922532, 3037505077, 263666, 3, 67186), +(107634, 1731922532, 1417785224, 263666, 3, 67186), +(107634, 1731922532, 1344507586, 263665, 1, 67186), +(107634, 1731922532, 428746933, 263665, 1, 67186), +(107634, 1731922532, 2442913102, 263665, 1, 67186), +(107634, 1731922532, 3465080266, 263665, 3, 67186), +(107634, 1731922532, 3037505077, 263665, 3, 67186), +(107634, 1731922532, 1417785224, 263665, 3, 67186), +(107634, 1731922532, 1344507586, 263664, 1, 67186), +(107634, 1731922532, 428746933, 263664, 1, 67186), +(107634, 1731922532, 2442913102, 263664, 1, 67186), +(107634, 1731922532, 3465080266, 263664, 3, 67186), +(107634, 1731922532, 3037505077, 263664, 3, 67186), +(107634, 1731922532, 1417785224, 263664, 3, 67186), +(107634, 1731922532, 1344507586, 263663, 1, 67186), +(107634, 1731922532, 428746933, 263663, 1, 67186), +(107634, 1731922532, 2442913102, 263663, 1, 67186), +(107634, 1731922532, 3465080266, 263663, 3, 67186), +(107634, 1731922532, 3037505077, 263663, 3, 67186), +(107634, 1731922532, 1417785224, 263663, 3, 67186), +(107634, 1731922532, 1344507586, 263662, 1, 67186), +(107634, 1731922532, 428746933, 263662, 1, 67186), +(107634, 1731922532, 2442913102, 263662, 1, 67186), +(107634, 1731922532, 3465080266, 263662, 3, 67186), +(107634, 1731922532, 3037505077, 263662, 3, 67186), +(107634, 1731922532, 1417785224, 263662, 3, 67186), +(107634, 1731922532, 1344507586, 263661, 1, 67186), +(107634, 1731922532, 428746933, 263661, 1, 67186), +(107634, 1731922532, 2442913102, 263661, 1, 67186), +(107634, 1731922532, 3465080266, 263661, 3, 67186), +(107634, 1731922532, 3037505077, 263661, 3, 67186), +(107634, 1731922532, 1417785224, 263661, 3, 67186), +(107634, 1731922532, 1344507586, 263660, 1, 67186), +(107634, 1731922532, 428746933, 263660, 1, 67186), +(107634, 1731922532, 2442913102, 263660, 1, 67186), +(107634, 1731922532, 3465080266, 263660, 3, 67186), +(107634, 1731922532, 3037505077, 263660, 3, 67186), +(107634, 1731922532, 1417785224, 263660, 3, 67186), +(107634, 1731922532, 1344507586, 263659, 1, 67186), +(107634, 1731922532, 428746933, 263659, 1, 67186), +(107634, 1731922532, 2442913102, 263659, 1, 67186), +(107634, 1731922532, 3465080266, 263659, 3, 67186), +(107634, 1731922532, 3037505077, 263659, 3, 67186), +(107634, 1731922532, 1417785224, 263659, 3, 67186), +(107634, 1731922532, 1344507586, 263658, 1, 67186), +(107634, 1731922532, 428746933, 263658, 1, 67186), +(107634, 1731922532, 2442913102, 263658, 1, 67186), +(107634, 1731922532, 3465080266, 263658, 3, 67186), +(107634, 1731922532, 3037505077, 263658, 3, 67186), +(107634, 1731922532, 1417785224, 263658, 3, 67186), +(107634, 1731922532, 1344507586, 263657, 1, 67186), +(107634, 1731922532, 428746933, 263657, 1, 67186), +(107634, 1731922532, 2442913102, 263657, 1, 67186), +(107634, 1731922532, 3465080266, 263657, 3, 67186), +(107634, 1731922532, 3037505077, 263657, 3, 67186), +(107634, 1731922532, 1417785224, 263657, 3, 67186), +(107634, 1731922532, 1344507586, 263656, 1, 67186), +(107634, 1731922532, 428746933, 263656, 1, 67186), +(107634, 1731922532, 2442913102, 263656, 1, 67186), +(107634, 1731922532, 3465080266, 263656, 3, 67186), +(107634, 1731922532, 3037505077, 263656, 3, 67186), +(107634, 1731922532, 1417785224, 263656, 3, 67186), +(107634, 1731922532, 1344507586, 263655, 1, 67186), +(107634, 1731922532, 428746933, 263655, 1, 67186), +(107634, 1731922532, 2442913102, 263655, 1, 67186), +(107634, 1731922532, 3465080266, 263655, 3, 67186), +(107634, 1731922532, 3037505077, 263655, 3, 67186), +(107634, 1731922532, 1417785224, 263655, 3, 67186), +(107634, 1731922532, 1344507586, 263654, 1, 67186), +(107634, 1731922532, 428746933, 263654, 1, 67186), +(107634, 1731922532, 2442913102, 263654, 1, 67186), +(107634, 1731922532, 3465080266, 263654, 3, 67186), +(107634, 1731922532, 3037505077, 263654, 3, 67186), +(107634, 1731922532, 1417785224, 263654, 3, 67186), +(107634, 1731922532, 1344507586, 263653, 1, 67186), +(107634, 1731922532, 428746933, 263653, 1, 67186), +(107634, 1731922532, 2442913102, 263653, 1, 67186), +(107634, 1731922532, 3465080266, 263653, 3, 67186), +(107634, 1731922532, 3037505077, 263653, 3, 67186), +(107634, 1731922532, 1417785224, 263653, 3, 67186), +(107634, 1731922532, 1344507586, 263652, 1, 67186), +(107634, 1731922532, 428746933, 263652, 1, 67186), +(107634, 1731922532, 2442913102, 263652, 1, 67186), +(107634, 1731922532, 3465080266, 263652, 3, 67186), +(107634, 1731922532, 3037505077, 263652, 3, 67186), +(107634, 1731922532, 1417785224, 263652, 3, 67186), +(107634, 1731922532, 1344507586, 263651, 1, 67186), +(107634, 1731922532, 428746933, 263651, 1, 67186), +(107634, 1731922532, 2442913102, 263651, 1, 67186), +(107634, 1731922532, 3465080266, 263651, 3, 67186), +(107634, 1731922532, 3037505077, 263651, 3, 67186), +(107634, 1731922532, 1417785224, 263651, 3, 67186), +(107634, 1731922532, 1344507586, 263650, 1, 67186), +(107634, 1731922532, 428746933, 263650, 1, 67186), +(107634, 1731922532, 2442913102, 263650, 1, 67186), +(107634, 1731922532, 3465080266, 263650, 3, 67186), +(107634, 1731922532, 3037505077, 263650, 3, 67186), +(107634, 1731922532, 1417785224, 263650, 3, 67186), +(107634, 1731922532, 1344507586, 263649, 1, 67186), +(107634, 1731922532, 428746933, 263649, 1, 67186), +(107634, 1731922532, 2442913102, 263649, 1, 67186), +(107634, 1731922532, 3465080266, 263649, 3, 67186), +(107634, 1731922532, 3037505077, 263649, 3, 67186), +(107634, 1731922532, 1417785224, 263649, 3, 67186), +(107634, 1731922532, 1344507586, 263648, 1, 67186), +(107634, 1731922532, 428746933, 263648, 1, 67186), +(107634, 1731922532, 2442913102, 263648, 1, 67186), +(107634, 1731922532, 3465080266, 263648, 3, 67186), +(107634, 1731922532, 3037505077, 263648, 3, 67186), +(107634, 1731922532, 1417785224, 263648, 3, 67186), +(107634, 1731922532, 1344507586, 263647, 1, 67186), +(107634, 1731922532, 428746933, 263647, 1, 67186), +(107634, 1731922532, 2442913102, 263647, 1, 67186), +(107634, 1731922532, 3465080266, 263647, 3, 67186), +(107634, 1731922532, 3037505077, 263647, 3, 67186), +(107634, 1731922532, 1417785224, 263647, 3, 67186), +(107634, 1731922532, 1344507586, 263646, 1, 67186), +(107634, 1731922532, 428746933, 263646, 1, 67186), +(107634, 1731922532, 2442913102, 263646, 1, 67186), +(107634, 1731922532, 3465080266, 263646, 3, 67186), +(107634, 1731922532, 3037505077, 263646, 3, 67186), +(107634, 1731922532, 1417785224, 263646, 3, 67186), +(107634, 1731922532, 1344507586, 263645, 1, 67186), +(107634, 1731922532, 428746933, 263645, 1, 67186), +(107634, 1731922532, 2442913102, 263645, 1, 67186), +(107634, 1731922532, 3465080266, 263645, 3, 67186), +(107634, 1731922532, 3037505077, 263645, 3, 67186), +(107634, 1731922532, 1417785224, 263645, 3, 67186), +(107634, 1731922532, 1344507586, 263644, 1, 67186), +(107634, 1731922532, 428746933, 263644, 1, 67186), +(107634, 1731922532, 2442913102, 263644, 1, 67186), +(107634, 1731922532, 3465080266, 263644, 3, 67186), +(107634, 1731922532, 3037505077, 263644, 3, 67186), +(107634, 1731922532, 1417785224, 263644, 3, 67186), +(107634, 1731922532, 1344507586, 263643, 1, 67186), +(107634, 1731922532, 428746933, 263643, 1, 67186), +(107634, 1731922532, 2442913102, 263643, 1, 67186), +(107634, 1731922532, 3465080266, 263643, 3, 67186), +(107634, 1731922532, 3037505077, 263643, 3, 67186), +(107634, 1731922532, 1417785224, 263643, 3, 67186), +(107634, 1731922532, 1344507586, 263642, 1, 67186), +(107634, 1731922532, 428746933, 263642, 1, 67186), +(107634, 1731922532, 2442913102, 263642, 1, 67186), +(107634, 1731922532, 3465080266, 263642, 3, 67186), +(107634, 1731922532, 3037505077, 263642, 3, 67186), +(107634, 1731922532, 1417785224, 263642, 3, 67186), +(107634, 1731922532, 1344507586, 263641, 1, 67186), +(107634, 1731922532, 428746933, 263641, 1, 67186), +(107634, 1731922532, 2442913102, 263641, 1, 67186), +(107634, 1731922532, 3465080266, 263641, 3, 67186), +(107634, 1731922532, 3037505077, 263641, 3, 67186), +(107634, 1731922532, 1417785224, 263641, 3, 67186), +(107634, 1731922532, 1344507586, 263640, 1, 67186), +(107634, 1731922532, 428746933, 263640, 1, 67186), +(107634, 1731922532, 2442913102, 263640, 1, 67186), +(107634, 1731922532, 3465080266, 263640, 3, 67186), +(107634, 1731922532, 3037505077, 263640, 3, 67186), +(107634, 1731922532, 1417785224, 263640, 3, 67186), +(107634, 1731922532, 1344507586, 263639, 1, 67186), +(107634, 1731922532, 428746933, 263639, 1, 67186), +(107634, 1731922532, 2442913102, 263639, 1, 67186), +(107634, 1731922532, 3465080266, 263639, 3, 67186), +(107634, 1731922532, 3037505077, 263639, 3, 67186), +(107634, 1731922532, 1417785224, 263639, 3, 67186), +(107634, 1731922532, 1344507586, 263638, 1, 67186), +(107634, 1731922532, 428746933, 263638, 1, 67186), +(107634, 1731922532, 2442913102, 263638, 1, 67186), +(107634, 1731922532, 3465080266, 263638, 3, 67186), +(107634, 1731922532, 3037505077, 263638, 3, 67186), +(107634, 1731922532, 1417785224, 263638, 3, 67186), +(107634, 1731922532, 1344507586, 263637, 1, 67186), +(107634, 1731922532, 428746933, 263637, 1, 67186), +(107634, 1731922532, 2442913102, 263637, 1, 67186), +(107634, 1731922532, 3465080266, 263637, 3, 67186), +(107634, 1731922532, 3037505077, 263637, 3, 67186), +(107634, 1731922532, 1417785224, 263637, 3, 67186), +(107634, 1731922532, 1344507586, 263636, 1, 67186), +(107634, 1731922532, 428746933, 263636, 1, 67186), +(107634, 1731922532, 2442913102, 263636, 1, 67186), +(107634, 1731922532, 3465080266, 263636, 3, 67186), +(107634, 1731922532, 3037505077, 263636, 3, 67186), +(107634, 1731922532, 1417785224, 263636, 3, 67186), +(107634, 1731922532, 1344507586, 263635, 1, 67186), +(107634, 1731922532, 428746933, 263635, 1, 67186), +(107634, 1731922532, 2442913102, 263635, 1, 67186), +(107634, 1731922532, 3465080266, 263635, 3, 67186), +(107634, 1731922532, 3037505077, 263635, 3, 67186), +(107634, 1731922532, 1417785224, 263635, 3, 67186), +(107634, 1731922532, 1344507586, 263634, 1, 67186), +(107634, 1731922532, 428746933, 263634, 1, 67186), +(107634, 1731922532, 2442913102, 263634, 1, 67186), +(107634, 1731922532, 3465080266, 263634, 3, 67186), +(107634, 1731922532, 3037505077, 263634, 3, 67186), +(107634, 1731922532, 1417785224, 263634, 3, 67186), +(107634, 1731922532, 1344507586, 263633, 1, 67186), +(107634, 1731922532, 428746933, 263633, 1, 67186), +(107634, 1731922532, 2442913102, 263633, 1, 67186), +(107634, 1731922532, 3465080266, 263633, 3, 67186), +(107634, 1731922532, 3037505077, 263633, 3, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107634, 1731922532, 1417785224, 263633, 3, 67186), +(107634, 1731922532, 1344507586, 263632, 1, 67186), +(107634, 1731922532, 428746933, 263632, 1, 67186), +(107634, 1731922532, 2442913102, 263632, 1, 67186), +(107634, 1731922532, 3465080266, 263632, 3, 67186), +(107634, 1731922532, 3037505077, 263632, 3, 67186), +(107634, 1731922532, 1417785224, 263632, 3, 67186), +(107634, 1731922532, 1344507586, 263631, 1, 67186), +(107634, 1731922532, 428746933, 263631, 1, 67186), +(107634, 1731922532, 2442913102, 263631, 1, 67186), +(107634, 1731922532, 3465080266, 263631, 3, 67186), +(107634, 1731922532, 3037505077, 263631, 3, 67186), +(107634, 1731922532, 1417785224, 263631, 3, 67186), +(107634, 1731922532, 1344507586, 263630, 1, 67186), +(107634, 1731922532, 428746933, 263630, 1, 67186), +(107634, 1731922532, 2442913102, 263630, 1, 67186), +(107634, 1731922532, 3465080266, 263630, 3, 67186), +(107634, 1731922532, 3037505077, 263630, 3, 67186), +(107634, 1731922532, 1417785224, 263630, 3, 67186), +(107634, 1731922532, 1344507586, 263629, 1, 67186), +(107634, 1731922532, 428746933, 263629, 1, 67186), +(107634, 1731922532, 2442913102, 263629, 1, 67186), +(107634, 1731922532, 3465080266, 263629, 3, 67186), +(107634, 1731922532, 3037505077, 263629, 3, 67186), +(107634, 1731922532, 1417785224, 263629, 3, 67186), +(107634, 1731922532, 1344507586, 263628, 1, 67186), +(107634, 1731922532, 428746933, 263628, 1, 67186), +(107634, 1731922532, 2442913102, 263628, 1, 67186), +(107634, 1731922532, 3465080266, 263628, 3, 67186), +(107634, 1731922532, 3037505077, 263628, 3, 67186), +(107634, 1731922532, 1417785224, 263628, 3, 67186), +(107634, 1731922532, 1344507586, 263627, 1, 67186), +(107634, 1731922532, 428746933, 263627, 1, 67186), +(107634, 1731922532, 2442913102, 263627, 1, 67186), +(107634, 1731922532, 3465080266, 263627, 3, 67186), +(107634, 1731922532, 3037505077, 263627, 3, 67186), +(107634, 1731922532, 1417785224, 263627, 3, 67186), +(107634, 1731922532, 1344507586, 263626, 1, 67186), +(107634, 1731922532, 428746933, 263626, 1, 67186), +(107634, 1731922532, 2442913102, 263626, 1, 67186), +(107634, 1731922532, 3465080266, 263626, 3, 67186), +(107634, 1731922532, 3037505077, 263626, 3, 67186), +(107634, 1731922532, 1417785224, 263626, 3, 67186), +(107634, 1731922532, 1344507586, 263625, 1, 67186), +(107634, 1731922532, 428746933, 263625, 1, 67186), +(107634, 1731922532, 2442913102, 263625, 1, 67186), +(107634, 1731922532, 3465080266, 263625, 3, 67186), +(107634, 1731922532, 3037505077, 263625, 3, 67186), +(107634, 1731922532, 1417785224, 263625, 3, 67186), +(107634, 1731922532, 1344507586, 263624, 1, 67186), +(107634, 1731922532, 428746933, 263624, 1, 67186), +(107634, 1731922532, 2442913102, 263624, 1, 67186), +(107634, 1731922532, 3465080266, 263624, 3, 67186), +(107634, 1731922532, 3037505077, 263624, 3, 67186), +(107634, 1731922532, 1417785224, 263624, 3, 67186), +(107634, 1731922532, 1344507586, 263623, 1, 67186), +(107634, 1731922532, 428746933, 263623, 1, 67186), +(107634, 1731922532, 2442913102, 263623, 1, 67186), +(107634, 1731922532, 3465080266, 263623, 3, 67186), +(107634, 1731922532, 3037505077, 263623, 3, 67186), +(107634, 1731922532, 1417785224, 263623, 3, 67186), +(107634, 1731922532, 1344507586, 263622, 1, 67186), +(107634, 1731922532, 428746933, 263622, 1, 67186), +(107634, 1731922532, 2442913102, 263622, 1, 67186), +(107634, 1731922532, 3465080266, 263622, 3, 67186), +(107634, 1731922532, 3037505077, 263622, 3, 67186), +(107634, 1731922532, 1417785224, 263622, 3, 67186), +(107634, 1731922532, 1344507586, 263621, 1, 67186), +(107634, 1731922532, 428746933, 263621, 1, 67186), +(107634, 1731922532, 2442913102, 263621, 1, 67186), +(107634, 1731922532, 3465080266, 263621, 3, 67186), +(107634, 1731922532, 3037505077, 263621, 3, 67186), +(107634, 1731922532, 1417785224, 263621, 3, 67186), +(107634, 1731922532, 1344507586, 263620, 1, 67186), +(107634, 1731922532, 428746933, 263620, 1, 67186), +(107634, 1731922532, 2442913102, 263620, 1, 67186), +(107634, 1731922532, 3465080266, 263620, 3, 67186), +(107634, 1731922532, 3037505077, 263620, 3, 67186), +(107634, 1731922532, 1417785224, 263620, 3, 67186), +(107634, 1731922532, 1344507586, 263619, 1, 67186), +(107634, 1731922532, 428746933, 263619, 1, 67186), +(107634, 1731922532, 2442913102, 263619, 1, 67186), +(107634, 1731922532, 3465080266, 263619, 3, 67186), +(107634, 1731922532, 3037505077, 263619, 3, 67186), +(107634, 1731922532, 1417785224, 263619, 3, 67186), +(107634, 1731922532, 1344507586, 263618, 1, 67186), +(107634, 1731922532, 428746933, 263618, 1, 67186), +(107634, 1731922532, 2442913102, 263618, 1, 67186), +(107634, 1731922532, 3465080266, 263618, 3, 67186), +(107634, 1731922532, 3037505077, 263618, 3, 67186), +(107634, 1731922532, 1417785224, 263618, 3, 67186), +(107634, 1731922532, 1344507586, 263617, 1, 67186), +(107634, 1731922532, 428746933, 263617, 1, 67186), +(107634, 1731922532, 2442913102, 263617, 1, 67186), +(107634, 1731922532, 3465080266, 263617, 3, 67186), +(107634, 1731922532, 3037505077, 263617, 3, 67186), +(107634, 1731922532, 1417785224, 263617, 3, 67186), +(107634, 1731922532, 1344507586, 263616, 1, 67186), +(107634, 1731922532, 428746933, 263616, 1, 67186), +(107634, 1731922532, 2442913102, 263616, 1, 67186), +(107634, 1731922532, 3465080266, 263616, 3, 67186), +(107634, 1731922532, 3037505077, 263616, 3, 67186), +(107634, 1731922532, 1417785224, 263616, 3, 67186), +(107634, 1731922532, 1344507586, 263615, 1, 67186), +(107634, 1731922532, 428746933, 263615, 1, 67186), +(107634, 1731922532, 2442913102, 263615, 1, 67186), +(107634, 1731922532, 3465080266, 263615, 3, 67186), +(107634, 1731922532, 3037505077, 263615, 3, 67186), +(107634, 1731922532, 1417785224, 263615, 3, 67186), +(107634, 1731922532, 1344507586, 263614, 1, 67186), +(107634, 1731922532, 428746933, 263614, 1, 67186), +(107634, 1731922532, 2442913102, 263614, 1, 67186), +(107634, 1731922532, 3465080266, 263614, 3, 67186), +(107634, 1731922532, 3037505077, 263614, 3, 67186), +(107634, 1731922532, 1417785224, 263614, 3, 67186), +(107634, 1731922532, 1344507586, 263613, 1, 67186), +(107634, 1731922532, 428746933, 263613, 1, 67186), +(107634, 1731922532, 2442913102, 263613, 1, 67186), +(107634, 1731922532, 3465080266, 263613, 3, 67186), +(107634, 1731922532, 3037505077, 263613, 3, 67186), +(107634, 1731922532, 1417785224, 263613, 3, 67186), +(107634, 1731922532, 1344507586, 263612, 1, 67186), +(107634, 1731922532, 428746933, 263612, 1, 67186), +(107634, 1731922532, 2442913102, 263612, 1, 67186), +(107634, 1731922532, 3465080266, 263612, 3, 67186), +(107634, 1731922532, 3037505077, 263612, 3, 67186), +(107634, 1731922532, 1417785224, 263612, 3, 67186), +(107634, 1731922532, 1344507586, 263611, 1, 67186), +(107634, 1731922532, 428746933, 263611, 1, 67186), +(107634, 1731922532, 2442913102, 263611, 1, 67186), +(107634, 1731922532, 3465080266, 263611, 3, 67186), +(107634, 1731922532, 3037505077, 263611, 3, 67186), +(107634, 1731922532, 1417785224, 263611, 3, 67186), +(107634, 1731922532, 1344507586, 263610, 1, 67186), +(107634, 1731922532, 428746933, 263610, 1, 67186), +(107634, 1731922532, 2442913102, 263610, 1, 67186), +(107634, 1731922532, 3465080266, 263610, 3, 67186), +(107634, 1731922532, 3037505077, 263610, 3, 67186), +(107634, 1731922532, 1417785224, 263610, 3, 67186), +(107634, 1731922532, 1344507586, 263609, 1, 67186), +(107634, 1731922532, 428746933, 263609, 1, 67186), +(107634, 1731922532, 2442913102, 263609, 1, 67186), +(107634, 1731922532, 3465080266, 263609, 3, 67186), +(107634, 1731922532, 3037505077, 263609, 3, 67186), +(107634, 1731922532, 1417785224, 263609, 3, 67186), +(107634, 1731922532, 1344507586, 263608, 1, 67186), +(107634, 1731922532, 428746933, 263608, 1, 67186), +(107634, 1731922532, 2442913102, 263608, 1, 67186), +(107634, 1731922532, 3465080266, 263608, 3, 67186), +(107634, 1731922532, 3037505077, 263608, 3, 67186), +(107634, 1731922532, 1417785224, 263608, 3, 67186), +(107634, 1731922532, 1344507586, 263607, 1, 67186), +(107634, 1731922532, 428746933, 263607, 1, 67186), +(107634, 1731922532, 2442913102, 263607, 1, 67186), +(107634, 1731922532, 3465080266, 263607, 3, 67186), +(107634, 1731922532, 3037505077, 263607, 3, 67186), +(107634, 1731922532, 1417785224, 263607, 3, 67186), +(107634, 1731922532, 1344507586, 263606, 1, 67186), +(107634, 1731922532, 428746933, 263606, 1, 67186), +(107634, 1731922532, 2442913102, 263606, 1, 67186), +(107634, 1731922532, 3465080266, 263606, 3, 67186), +(107634, 1731922532, 3037505077, 263606, 3, 67186), +(107634, 1731922532, 1417785224, 263606, 3, 67186), +(107634, 1731922532, 1344507586, 263605, 1, 67186), +(107634, 1731922532, 428746933, 263605, 1, 67186), +(107634, 1731922532, 2442913102, 263605, 1, 67186), +(107634, 1731922532, 3465080266, 263605, 3, 67186), +(107634, 1731922532, 3037505077, 263605, 3, 67186), +(107634, 1731922532, 1417785224, 263605, 3, 67186), +(107634, 1731922532, 1344507586, 263604, 1, 67186), +(107634, 1731922532, 428746933, 263604, 1, 67186), +(107634, 1731922532, 2442913102, 263604, 1, 67186), +(107634, 1731922532, 3465080266, 263604, 3, 67186), +(107634, 1731922532, 3037505077, 263604, 3, 67186), +(107634, 1731922532, 1417785224, 263604, 3, 67186), +(107634, 1731922532, 1344507586, 263603, 1, 67186), +(107634, 1731922532, 428746933, 263603, 1, 67186), +(107634, 1731922532, 2442913102, 263603, 1, 67186), +(107634, 1731922532, 3465080266, 263603, 3, 67186), +(107634, 1731922532, 3037505077, 263603, 3, 67186), +(107634, 1731922532, 1417785224, 263603, 3, 67186), +(107634, 1731922532, 1344507586, 263602, 1, 67186), +(107634, 1731922532, 428746933, 263602, 1, 67186), +(107634, 1731922532, 2442913102, 263602, 1, 67186), +(107634, 1731922532, 3465080266, 263602, 3, 67186), +(107634, 1731922532, 3037505077, 263602, 3, 67186), +(107634, 1731922532, 1417785224, 263602, 3, 67186), +(107634, 1731922532, 1344507586, 263601, 1, 67186), +(107634, 1731922532, 428746933, 263601, 1, 67186), +(107634, 1731922532, 2442913102, 263601, 1, 67186), +(107634, 1731922532, 3465080266, 263601, 3, 67186), +(107634, 1731922532, 3037505077, 263601, 3, 67186), +(107634, 1731922532, 1417785224, 263601, 3, 67186), +(107634, 1731922532, 1344507586, 263600, 1, 67186), +(107634, 1731922532, 428746933, 263600, 1, 67186), +(107634, 1731922532, 2442913102, 263600, 1, 67186), +(107634, 1731922532, 3465080266, 263600, 3, 67186), +(107634, 1731922532, 3037505077, 263600, 3, 67186), +(107634, 1731922532, 1417785224, 263600, 3, 67186), +(107634, 1731922532, 1344507586, 263599, 1, 67186), +(107634, 1731922532, 428746933, 263599, 1, 67186), +(107634, 1731922532, 2442913102, 263599, 1, 67186), +(107634, 1731922532, 3465080266, 263599, 3, 67186), +(107634, 1731922532, 3037505077, 263599, 3, 67186), +(107634, 1731922532, 1417785224, 263599, 3, 67186), +(107634, 1731922532, 1344507586, 263598, 1, 67186), +(107634, 1731922532, 428746933, 263598, 1, 67186), +(107634, 1731922532, 2442913102, 263598, 1, 67186), +(107634, 1731922532, 3465080266, 263598, 3, 67186), +(107634, 1731922532, 3037505077, 263598, 3, 67186), +(107634, 1731922532, 1417785224, 263598, 3, 67186), +(107634, 1731922532, 1344507586, 263597, 1, 67186), +(107634, 1731922532, 428746933, 263597, 1, 67186), +(107634, 1731922532, 2442913102, 263597, 1, 67186), +(107634, 1731922532, 3465080266, 263597, 3, 67186), +(107634, 1731922532, 3037505077, 263597, 3, 67186), +(107634, 1731922532, 1417785224, 263597, 3, 67186), +(107634, 1731922532, 1344507586, 263596, 1, 67186), +(107634, 1731922532, 428746933, 263596, 1, 67186), +(107634, 1731922532, 2442913102, 263596, 1, 67186), +(107634, 1731922532, 3465080266, 263596, 3, 67186), +(107634, 1731922532, 3037505077, 263596, 3, 67186), +(107634, 1731922532, 1417785224, 263596, 3, 67186), +(107634, 1731922532, 1344507586, 263595, 1, 67186), +(107634, 1731922532, 428746933, 263595, 1, 67186), +(107634, 1731922532, 2442913102, 263595, 1, 67186), +(107634, 1731922532, 3465080266, 263595, 3, 67186), +(107634, 1731922532, 3037505077, 263595, 3, 67186), +(107634, 1731922532, 1417785224, 263595, 3, 67186), +(107634, 1731922532, 1344507586, 263594, 1, 67186), +(107634, 1731922532, 428746933, 263594, 1, 67186), +(107634, 1731922532, 2442913102, 263594, 1, 67186), +(107634, 1731922532, 3465080266, 263594, 3, 67186), +(107634, 1731922532, 3037505077, 263594, 3, 67186), +(107634, 1731922532, 1417785224, 263594, 3, 67186), +(107634, 1731922532, 1344507586, 263593, 1, 67186), +(107634, 1731922532, 428746933, 263593, 1, 67186), +(107634, 1731922532, 2442913102, 263593, 1, 67186), +(107634, 1731922532, 3465080266, 263593, 3, 67186), +(107634, 1731922532, 3037505077, 263593, 3, 67186), +(107634, 1731922532, 1417785224, 263593, 3, 67186), +(107634, 1731922532, 1344507586, 263592, 1, 67186), +(107634, 1731922532, 428746933, 263592, 1, 67186), +(107634, 1731922532, 2442913102, 263592, 1, 67186), +(107634, 1731922532, 3465080266, 263592, 3, 67186), +(107634, 1731922532, 3037505077, 263592, 3, 67186), +(107634, 1731922532, 1417785224, 263592, 3, 67186), +(107634, 1731922532, 1344507586, 263591, 1, 67186), +(107634, 1731922532, 428746933, 263591, 1, 67186), +(107634, 1731922532, 2442913102, 263591, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107634, 1731922532, 3465080266, 263591, 3, 67186), +(107634, 1731922532, 3037505077, 263591, 3, 67186), +(107634, 1731922532, 1417785224, 263591, 3, 67186), +(107634, 1731922532, 1344507586, 263590, 1, 67186), +(107634, 1731922532, 428746933, 263590, 1, 67186), +(107634, 1731922532, 2442913102, 263590, 1, 67186), +(107634, 1731922532, 3465080266, 263590, 3, 67186), +(107634, 1731922532, 3037505077, 263590, 3, 67186), +(107634, 1731922532, 1417785224, 263590, 3, 67186), +(107634, 1731922532, 1344507586, 263589, 1, 67186), +(107634, 1731922532, 428746933, 263589, 1, 67186), +(107634, 1731922532, 2442913102, 263589, 1, 67186), +(107634, 1731922532, 3465080266, 263589, 3, 67186), +(107634, 1731922532, 3037505077, 263589, 3, 67186), +(107634, 1731922532, 1417785224, 263589, 3, 67186), +(107634, 1731922532, 1344507586, 263588, 1, 67186), +(107634, 1731922532, 428746933, 263588, 1, 67186), +(107634, 1731922532, 2442913102, 263588, 1, 67186), +(107634, 1731922532, 3465080266, 263588, 3, 67186), +(107634, 1731922532, 3037505077, 263588, 3, 67186), +(107634, 1731922532, 1417785224, 263588, 3, 67186), +(107634, 1731922532, 1344507586, 263587, 1, 67186), +(107634, 1731922532, 428746933, 263587, 1, 67186), +(107634, 1731922532, 2442913102, 263587, 1, 67186), +(107634, 1731922532, 3465080266, 263587, 3, 67186), +(107634, 1731922532, 3037505077, 263587, 3, 67186), +(107634, 1731922532, 1417785224, 263587, 3, 67186), +(107634, 1731922532, 1344507586, 263586, 1, 67186), +(107634, 1731922532, 428746933, 263586, 1, 67186), +(107634, 1731922532, 2442913102, 263586, 1, 67186), +(107634, 1731922532, 3465080266, 263586, 3, 67186), +(107634, 1731922532, 3037505077, 263586, 3, 67186), +(107634, 1731922532, 1417785224, 263586, 3, 67186), +(107634, 1731922532, 1344507586, 263585, 1, 67186), +(107634, 1731922532, 428746933, 263585, 1, 67186), +(107634, 1731922532, 2442913102, 263585, 1, 67186), +(107634, 1731922532, 3465080266, 263585, 3, 67186), +(107634, 1731922532, 3037505077, 263585, 3, 67186), +(107634, 1731922532, 1417785224, 263585, 3, 67186), +(107633, 24049257, 4030871717, 1317298, 1, 67186), +(107633, 24049257, 4030871717, 1317297, 1, 67186), +(107633, 24049257, 4030871717, 1317296, 1, 67186), +(107633, 24049257, 4030871717, 1257585, 1, 67186), +(107633, 24049257, 4030871717, 1213821, 1, 67186), +(107633, 24049257, 4030871717, 1213820, 1, 67186), +(107633, 24049257, 4030871717, 1172978, 1, 67186), +(107633, 24049257, 4030871717, 1166446, 1, 67186), +(107633, 24049257, 4030871717, 287112, 1, 67186), +(107633, 24049257, 4030871717, 274038, 1, 67186), +(107633, 24049257, 4030871717, 129143, 1, 67186), +(107633, 24049257, 4030871717, 129139, 1, 67186), +(107633, 24049257, 4030871717, 21916, 1, 67186), +(107633, 24049257, 4030871717, 21915, 1, 67186), +(107632, 1204405161, 4030871717, 1317284, 1, 67186), +(107632, 1204405161, 4030871717, 1317283, 1, 67186), +(107632, 1204405161, 4030871717, 1275170, 1, 67186), +(107632, 1204405161, 4030871717, 1275169, 1, 67186), +(107632, 1204405161, 4030871717, 1275166, 1, 67186), +(107632, 1204405161, 4030871717, 1219457, 1, 67186), +(107632, 1204405161, 4030871717, 815761, 1, 67186), +(107632, 1204405161, 4030871717, 815754, 1, 67186), +(107632, 1204405161, 4030871717, 331347, 1, 67186), +(107632, 1204405161, 4030871717, 331344, 1, 67186), +(107632, 1204405161, 4030871717, 60372, 1, 67186), +(107632, 1204405161, 4030871717, 60368, 1, 67186), +(107631, 2533085378, 4030871717, 1317286, 1, 67186), +(107631, 2533085378, 4030871717, 1311547, 1, 67186), +(107631, 2533085378, 4030871717, 1311546, 1, 67186), +(107631, 2533085378, 4030871717, 1305055, 1, 67186), +(107631, 2533085378, 4030871717, 1297422, 1, 67186), +(107631, 2533085378, 4030871717, 1296248, 1, 67186), +(107631, 2533085378, 4030871717, 1289584, 1, 67186), +(107631, 2533085378, 4030871717, 1262639, 1, 67186), +(107631, 2533085378, 4030871717, 1262027, 1, 67186), +(107631, 2533085378, 4030871717, 1248749, 1, 67186), +(107631, 2533085378, 4030871717, 1227866, 1, 67186), +(107631, 2533085378, 4030871717, 1227811, 1, 67186), +(107631, 2533085378, 3386943305, 334190, 3, 67186), +(107631, 2533085378, 3386943305, 334187, 3, 67186), +(107631, 2533085378, 3386943305, 334177, 3, 67186), +(107631, 2533085378, 3386943305, 334174, 3, 67186), +(107631, 2533085378, 3386943305, 325451, 3, 67186), +(107631, 2533085378, 3386943305, 325449, 3, 67186), +(107631, 2533085378, 3386943305, 325448, 3, 67186), +(107631, 2533085378, 3386943305, 325447, 3, 67186), +(107631, 2533085378, 3386943305, 325445, 3, 67186), +(107631, 2533085378, 3386943305, 325444, 3, 67186), +(107631, 2533085378, 3386943305, 325443, 3, 67186), +(107631, 2533085378, 3386943305, 325441, 3, 67186), +(107631, 2533085378, 3386943305, 325440, 3, 67186), +(107631, 2533085378, 3386943305, 324496, 3, 67186), +(107631, 2533085378, 3386943305, 323237, 3, 67186), +(107631, 2533085378, 3386943305, 323236, 3, 67186), +(107631, 2533085378, 3386943305, 323231, 3, 67186), +(107631, 2533085378, 3386943305, 319628, 3, 67186), +(107630, 3472740511, 4033975491, 619581, 1, 67186), +(107630, 3472740511, 4033975491, 619575, 2, 67186), +(107630, 3472740511, 4033975491, 619569, 1, 67186), +(107630, 3472740511, 4033975491, 591891, 1, 67186), +(107630, 3472740511, 4033975491, 581318, 1, 67186), +(107630, 3472740511, 4033975491, 581317, 1, 67186), +(107630, 3472740511, 4033975491, 581316, 1, 67186), +(107630, 3472740511, 1181150530, 751209, 1, 67186), +(107630, 3472740511, 1181150530, 751200, 2, 67186), +(107630, 3472740511, 1181150530, 751192, 1, 67186), +(107628, 2372955319, 312611497, 27219, 3, 67186), +(107628, 2372955319, 312611497, 27218, 3, 67186), +(107628, 2372955319, 1163127287, 116798, 3, 67186), +(107628, 2372955319, 3322146344, 826098, 1, 67186), +(107628, 2372955319, 3322146344, 826097, 1, 67186), +(107628, 2372955319, 3322146344, 826096, 1, 67186), +(107628, 2372955319, 3322146344, 804965, 1, 67186), +(107628, 2372955319, 3322146344, 802597, 1, 67186), +(107628, 2372955319, 4096770149, 243101, 1, 67186), +(107627, 3502117525, 3386943305, 329177, 3, 67186), +(107624, 1030275230, 4030871717, 1271172, 1, 67186), +(107623, 1729730140, 1163127287, 125758, 3, 67186), +(107623, 1729730140, 4030871717, 1317269, 1, 67186), +(107623, 1729730140, 4030871717, 1275546, 1, 67186), +(107623, 1729730140, 1187407512, 444088, 1, 67186), +(107623, 1729730140, 3776013982, 444088, 1, 67186), +(107618, 1298648637, 4030871717, 1317258, 1, 67186), +(107618, 1298648637, 4030871717, 1317257, 1, 67186), +(107618, 1298648637, 4030871717, 1312948, 1, 67186), +(107618, 1298648637, 4030871717, 1312947, 1, 67186), +(107618, 1298648637, 4030871717, 1312946, 1, 67186), +(107618, 1298648637, 4030871717, 1312945, 1, 67186), +(107618, 1298648637, 4030871717, 1294586, 1, 67186), +(107618, 1298648637, 4030871717, 1293533, 1, 67186), +(107618, 1298648637, 4030871717, 1264218, 1, 67186), +(107618, 1298648637, 4030871717, 99544, 1, 67186), +(107618, 1298648637, 4030871717, 99543, 1, 67186), +(107617, 993791931, 240389885, 9551, 1, 67186), +(107617, 993791931, 240389885, 9550, 1, 67186), +(107617, 993791931, 666345498, 495238, 1, 67186), +(107617, 993791931, 4033975491, 619554, 1, 67186), +(107617, 993791931, 1181150530, 751159, 1, 67186), +(107617, 993791931, 1181150530, 751156, 1, 67186), +(107617, 993791931, 1181150530, 751154, 2, 67186), +(107617, 993791931, 1181150530, 751151, 1, 67186), +(107617, 993791931, 4102286043, 265629, 1, 67186), +(107617, 993791931, 3425193231, 546550, 2, 67186), +(107617, 993791931, 4146370265, 168788, 1, 67186), +(107617, 993791931, 1163127287, 121585, 3, 67186), +(107617, 993791931, 1163127287, 121450, 3, 67186), +(107617, 993791931, 1163127287, 118292, 3, 67186), +(107617, 993791931, 3322146344, 842710, 1, 67186), +(107617, 993791931, 3322146344, 809379, 1, 67186), +(107617, 993791931, 3322146344, 808638, 1, 67186), +(107617, 993791931, 3322146344, 808637, 1, 67186), +(107617, 993791931, 3322146344, 127779, 1, 67186), +(107617, 993791931, 4030871717, 1317291, 1, 67186), +(107617, 993791931, 4030871717, 1262398, 1, 67186), +(107617, 993791931, 4030871717, 1261218, 1, 67186), +(107617, 993791931, 1187407512, 1295319, 1, 67186), +(107617, 993791931, 3776013982, 1295319, 1, 67186), +(107617, 993791931, 2151089334, 7976, 1, 67186), +(107617, 993791931, 2151089334, 7973, 2, 67186), +(107617, 993791931, 2151089334, 7972, 1, 67186), +(107617, 993791931, 1255424668, 227430, 1, 67186), +(107617, 993791931, 1255424668, 223818, 1, 67186), +(107617, 993791931, 1255424668, 216419, 1, 67186), +(107617, 993791931, 1255424668, 216418, 1, 67186), +(107617, 993791931, 1255424668, 216417, 1, 67186), +(107617, 993791931, 4012104832, 114029, 1, 67186), +(107617, 993791931, 3386943305, 342567, 3, 67186), +(107617, 993791931, 3386943305, 331681, 3, 67186), +(107617, 993791931, 3386943305, 76627, 3, 67186), +(107617, 993791931, 3386291891, 249086, 3, 67186), +(107617, 993791931, 3386291891, 234064, 1, 67186), +(107617, 993791931, 3386291891, 122405, 3, 67186), +(107617, 993791931, 3386291891, 79093, 3, 67186), +(107617, 993791931, 1548466975, 30807, 3, 67186), +(107615, 2763301777, 1187407512, 1295191, 1, 67186), +(107615, 2763301777, 3776013982, 1295191, 1, 67186), +(107615, 2763301777, 1344507586, 251161, 1, 67186), +(107615, 2763301777, 428746933, 251161, 1, 67186), +(107615, 2763301777, 2442913102, 251161, 1, 67186), +(107615, 2763301777, 3465080266, 251161, 3, 67186), +(107615, 2763301777, 3037505077, 251161, 3, 67186), +(107615, 2763301777, 1417785224, 251161, 3, 67186), +(107615, 2763301777, 1344507586, 133494, 1, 67186), +(107615, 2763301777, 428746933, 133494, 1, 67186), +(107615, 2763301777, 2442913102, 133494, 1, 67186), +(107615, 2763301777, 3465080266, 133494, 3, 67186), +(107615, 2763301777, 3037505077, 133494, 3, 67186), +(107615, 2763301777, 1417785224, 133494, 3, 67186), +(107615, 2763301777, 1344507586, 49810, 1, 67186), +(107615, 2763301777, 428746933, 49810, 1, 67186), +(107615, 2763301777, 2442913102, 49810, 1, 67186), +(107615, 2763301777, 3465080266, 49810, 3, 67186), +(107615, 2763301777, 3037505077, 49810, 3, 67186), +(107615, 2763301777, 1417785224, 49810, 3, 67186), +(107615, 2763301777, 35137211, 315348, 3, 67186), +(107614, 2506728970, 3247720076, 42321, 1, 67186), +(107612, 665548691, 312611497, 28078, 3, 67186), +(107612, 665548691, 312611497, 28077, 3, 67186), +(107612, 665548691, 3322146344, 842699, 1, 67186), +(107612, 665548691, 3322146344, 842698, 1, 67186), +(107612, 665548691, 3322146344, 842697, 1, 67186), +(107612, 665548691, 4030871717, 1317244, 1, 67186), +(107612, 665548691, 4030871717, 1317243, 1, 67186), +(107612, 665548691, 4030871717, 1317242, 1, 67186), +(107612, 665548691, 4030871717, 1317241, 1, 67186), +(107612, 665548691, 4030871717, 1317235, 2, 67186), +(107612, 665548691, 4030871717, 1317231, 1, 67186), +(107612, 665548691, 4030871717, 1315543, 1, 67186), +(107612, 665548691, 4030871717, 1315294, 2, 67186), +(107612, 665548691, 4030871717, 1315293, 2, 67186), +(107612, 665548691, 4030871717, 1310401, 2, 67186), +(107612, 665548691, 4030871717, 1310400, 2, 67186), +(107612, 665548691, 4030871717, 1307395, 1, 67186), +(107612, 665548691, 4030871717, 1307394, 1, 67186), +(107612, 665548691, 4030871717, 1291655, 1, 67186), +(107612, 665548691, 4030871717, 1291654, 1, 67186), +(107612, 665548691, 4030871717, 1291652, 1, 67186), +(107612, 665548691, 4030871717, 1291651, 1, 67186), +(107612, 665548691, 4030871717, 1276232, 1, 67186), +(107612, 665548691, 4030871717, 1276229, 1, 67186), +(107612, 665548691, 4030871717, 1270371, 1, 67186), +(107612, 665548691, 4030871717, 1240276, 1, 67186), +(107612, 665548691, 4030871717, 1240201, 1, 67186), +(107610, 4282830019, 868868520, 6686, 1, 67186), +(107610, 4282830019, 3322146344, 822271, 1, 67186), +(107608, 283731202, 2120822102, 446037, 1, 67186), +(107607, 4096682760, 2411028436, 11444, 3, 67186), +(107607, 4096682760, 2411028436, 11443, 3, 67186), +(107607, 4096682760, 3108775943, 156820, 3, 67186), +(107607, 4096682760, 3108775943, 156819, 3, 67186), +(107607, 4096682760, 3108775943, 147720, 3, 67186), +(107607, 4096682760, 2120822102, 446276, 1, 67186), +(107607, 4096682760, 2120822102, 446275, 1, 67186), +(107607, 4096682760, 2120822102, 446274, 1, 67186), +(107607, 4096682760, 2120822102, 446273, 1, 67186), +(107607, 4096682760, 2120822102, 446272, 1, 67186), +(107607, 4096682760, 2120822102, 446271, 1, 67186), +(107607, 4096682760, 2120822102, 446270, 1, 67186), +(107607, 4096682760, 2120822102, 446269, 1, 67186), +(107607, 4096682760, 2120822102, 421256, 1, 67186), +(107607, 4096682760, 2120822102, 421255, 1, 67186), +(107605, 3031325372, 1163127287, 126121, 3, 67186), +(107605, 3031325372, 4030871717, 1308402, 1, 67186), +(107605, 3031325372, 4030871717, 1308401, 1, 67186), +(107605, 3031325372, 4030871717, 1308400, 1, 67186), +(107605, 3031325372, 4030871717, 1308399, 1, 67186), +(107605, 3031325372, 4030871717, 1308396, 1, 67186), +(107605, 3031325372, 4030871717, 1299643, 1, 67186), +(107605, 3031325372, 3146089301, 11542, 1, 67186), +(107605, 3031325372, 3146089301, 11525, 1, 67186), +(107605, 3031325372, 3146089301, 11521, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107605, 3031325372, 3146089301, 11520, 1, 67186), +(107605, 3031325372, 3146089301, 11519, 1, 67186), +(107605, 3031325372, 3146089301, 11400, 1, 67186), +(107605, 3031325372, 3146089301, 11269, 1, 67186), +(107605, 3031325372, 3146089301, 11268, 1, 67186), +(107605, 3031325372, 3146089301, 11267, 1, 67186), +(107605, 3031325372, 3146089301, 11266, 1, 67186), +(107605, 3031325372, 3146089301, 11139, 1, 67186), +(107605, 3031325372, 3146089301, 11138, 1, 67186), +(107605, 3031325372, 1880017466, 303153, 3, 67186), +(107605, 3031325372, 1880017466, 303152, 3, 67186), +(107605, 3031325372, 1880017466, 303151, 3, 67186), +(107605, 3031325372, 1272569722, 100336, 1, 67186), +(107604, 1454128080, 3386943305, 334176, 3, 67186), +(107603, 1368096354, 666345498, 518949, 1, 67186), +(107603, 1368096354, 666345498, 518948, 1, 67186), +(107603, 1368096354, 666345498, 518947, 1, 67186), +(107603, 1368096354, 4033975491, 619506, 1, 67186), +(107603, 1368096354, 4033975491, 619505, 1, 67186), +(107603, 1368096354, 4033975491, 619504, 1, 67186), +(107603, 1368096354, 4033975491, 619503, 1, 67186), +(107603, 1368096354, 4033975491, 619502, 1, 67186), +(107603, 1368096354, 4033975491, 619501, 1, 67186), +(107603, 1368096354, 4033975491, 619500, 1, 67186), +(107603, 1368096354, 4033975491, 619499, 1, 67186), +(107603, 1368096354, 4033975491, 619498, 1, 67186), +(107603, 1368096354, 4033975491, 619497, 1, 67186), +(107603, 1368096354, 4033975491, 619496, 1, 67186), +(107603, 1368096354, 4033975491, 619495, 2, 67186), +(107603, 1368096354, 4033975491, 619494, 2, 67186), +(107603, 1368096354, 4033975491, 619493, 1, 67186), +(107603, 1368096354, 4033975491, 619492, 1, 67186), +(107603, 1368096354, 4033975491, 619491, 1, 67186), +(107603, 1368096354, 4033975491, 619490, 1, 67186), +(107603, 1368096354, 4033975491, 619489, 1, 67186), +(107603, 1368096354, 4033975491, 619488, 2, 67186), +(107603, 1368096354, 4033975491, 619487, 1, 67186), +(107603, 1368096354, 4033975491, 619486, 2, 67186), +(107603, 1368096354, 4033975491, 619485, 2, 67186), +(107603, 1368096354, 4033975491, 619484, 2, 67186), +(107603, 1368096354, 4033975491, 619483, 1, 67186), +(107603, 1368096354, 4033975491, 619482, 1, 67186), +(107603, 1368096354, 4033975491, 619481, 2, 67186), +(107603, 1368096354, 4033975491, 611163, 2, 67186), +(107603, 1368096354, 4033975491, 611162, 2, 67186), +(107603, 1368096354, 4033975491, 611161, 2, 67186), +(107603, 1368096354, 4033975491, 611160, 2, 67186), +(107603, 1368096354, 4033975491, 604956, 1, 67186), +(107603, 1368096354, 4033975491, 604955, 1, 67186), +(107603, 1368096354, 4033975491, 588800, 2, 67186), +(107603, 1368096354, 4033975491, 588799, 1, 67186), +(107603, 1368096354, 4033975491, 588798, 1, 67186), +(107603, 1368096354, 1181150530, 751040, 1, 67186), +(107603, 1368096354, 1181150530, 751039, 1, 67186), +(107603, 1368096354, 1181150530, 751038, 1, 67186), +(107603, 1368096354, 1181150530, 751037, 1, 67186), +(107603, 1368096354, 1181150530, 751036, 1, 67186), +(107603, 1368096354, 1181150530, 751035, 1, 67186), +(107603, 1368096354, 1181150530, 751034, 1, 67186), +(107603, 1368096354, 1181150530, 751033, 1, 67186), +(107603, 1368096354, 1181150530, 751032, 1, 67186), +(107603, 1368096354, 1181150530, 751031, 1, 67186), +(107603, 1368096354, 1181150530, 751030, 1, 67186), +(107603, 1368096354, 1181150530, 751029, 1, 67186), +(107603, 1368096354, 1181150530, 751028, 2, 67186), +(107603, 1368096354, 1181150530, 751027, 2, 67186), +(107603, 1368096354, 1181150530, 751026, 1, 67186), +(107603, 1368096354, 1181150530, 751025, 1, 67186), +(107603, 1368096354, 1181150530, 751024, 1, 67186), +(107603, 1368096354, 1181150530, 751023, 1, 67186), +(107603, 1368096354, 1181150530, 751022, 1, 67186), +(107603, 1368096354, 1181150530, 751021, 2, 67186), +(107603, 1368096354, 1181150530, 751020, 1, 67186), +(107603, 1368096354, 1181150530, 751019, 2, 67186), +(107603, 1368096354, 1181150530, 751018, 2, 67186), +(107603, 1368096354, 1181150530, 751017, 2, 67186), +(107603, 1368096354, 1181150530, 751016, 1, 67186), +(107603, 1368096354, 1181150530, 751015, 1, 67186), +(107603, 1368096354, 1181150530, 751014, 1, 67186), +(107603, 1368096354, 1181150530, 751013, 1, 67186), +(107603, 1368096354, 1181150530, 751012, 1, 67186), +(107603, 1368096354, 1181150530, 751011, 2, 67186), +(107603, 1368096354, 1181150530, 733082, 2, 67186), +(107603, 1368096354, 1181150530, 733081, 2, 67186), +(107603, 1368096354, 1181150530, 733080, 2, 67186), +(107603, 1368096354, 1181150530, 733079, 2, 67186), +(107603, 1368096354, 1181150530, 684882, 2, 67186), +(107603, 1368096354, 1181150530, 666193, 2, 67186), +(107603, 1368096354, 4102286043, 265598, 1, 67186), +(107603, 1368096354, 4102286043, 265597, 1, 67186), +(107603, 1368096354, 4102286043, 265596, 1, 67186), +(107603, 1368096354, 4102286043, 265595, 1, 67186), +(107603, 1368096354, 4102286043, 265594, 1, 67186), +(107603, 1368096354, 3425193231, 546511, 1, 67186), +(107603, 1368096354, 3425193231, 546510, 1, 67186), +(107603, 1368096354, 3425193231, 546509, 1, 67186), +(107603, 1368096354, 3425193231, 546508, 1, 67186), +(107603, 1368096354, 3425193231, 546507, 1, 67186), +(107603, 1368096354, 3425193231, 546506, 2, 67186), +(107603, 1368096354, 859088734, 419939, 2, 67186), +(107603, 1368096354, 4146370265, 182368, 1, 67186), +(107603, 1368096354, 4146370265, 182367, 1, 67186), +(107603, 1368096354, 4146370265, 182366, 1, 67186), +(107603, 1368096354, 4146370265, 169070, 1, 67186), +(107603, 1368096354, 3322146344, 842672, 1, 67186), +(107603, 1368096354, 4030871717, 1317217, 1, 67186), +(107603, 1368096354, 4030871717, 1270230, 2, 67186), +(107603, 1368096354, 4030871717, 1270229, 2, 67186), +(107603, 1368096354, 4030871717, 1262538, 1, 67186), +(107603, 1368096354, 1187407512, 1295278, 1, 67186), +(107603, 1368096354, 3776013982, 1295278, 1, 67186), +(107603, 1368096354, 2151089334, 7970, 1, 67186), +(107603, 1368096354, 2151089334, 7969, 1, 67186), +(107603, 1368096354, 3571931810, 38605, 3, 67186), +(107602, 2819057318, 1163127287, 115543, 3, 67186), +(107600, 129505253, 3386943305, 344455, 3, 67186), +(107600, 129505253, 3386943305, 344114, 3, 67186), +(107600, 129505253, 3386943305, 342090, 3, 67186), +(107600, 129505253, 3386943305, 342089, 3, 67186), +(107600, 129505253, 3386943305, 342087, 3, 67186), +(107600, 129505253, 3386943305, 342086, 3, 67186), +(107600, 129505253, 3386943305, 342085, 3, 67186), +(107600, 129505253, 3386943305, 342084, 3, 67186), +(107600, 129505253, 3386943305, 342083, 3, 67186), +(107600, 129505253, 3386943305, 342082, 3, 67186), +(107600, 129505253, 3386943305, 342081, 3, 67186), +(107600, 129505253, 3386943305, 330211, 3, 67186), +(107600, 129505253, 3386943305, 330210, 3, 67186), +(107600, 129505253, 3386943305, 330077, 3, 67186), +(107596, 4036955392, 4030871717, 480070, 1, 67186), +(107594, 1806735339, 3322146344, 838394, 1, 67186), +(107594, 1806735339, 3322146344, 833943, 1, 67186), +(107594, 1806735339, 3322146344, 831819, 1, 67186), +(107594, 1806735339, 3322146344, 826976, 1, 67186), +(107593, 542044120, 4030871717, 1193929, 1, 67186), +(107592, 2443391960, 3108775943, 148755, 3, 67186), +(107592, 2443391960, 2120822102, 446268, 1, 67186), +(107592, 2443391960, 2120822102, 446267, 1, 67186), +(107592, 2443391960, 2120822102, 446266, 1, 67186), +(107592, 2443391960, 1255424668, 227429, 1, 67186), +(107592, 2443391960, 1255424668, 227428, 1, 67186), +(107592, 2443391960, 4012104832, 114028, 1, 67186), +(107592, 2443391960, 3538824359, 62886, 3, 67186), +(107590, 2767177504, 1344507586, 264323, 1, 67186), +(107590, 2767177504, 428746933, 264323, 3, 67186), +(107590, 2767177504, 2442913102, 264323, 1, 67186), +(107590, 2767177504, 3465080266, 264323, 3, 67186), +(107590, 2767177504, 3037505077, 264323, 3, 67186), +(107590, 2767177504, 1417785224, 264323, 3, 67186), +(107590, 2767177504, 1344507586, 264322, 1, 67186), +(107590, 2767177504, 428746933, 264322, 3, 67186), +(107590, 2767177504, 2442913102, 264322, 1, 67186), +(107590, 2767177504, 3465080266, 264322, 3, 67186), +(107590, 2767177504, 3037505077, 264322, 3, 67186), +(107590, 2767177504, 1417785224, 264322, 3, 67186), +(107590, 2767177504, 1344507586, 264321, 1, 67186), +(107590, 2767177504, 428746933, 264321, 3, 67186), +(107590, 2767177504, 2442913102, 264321, 1, 67186), +(107590, 2767177504, 3465080266, 264321, 3, 67186), +(107590, 2767177504, 3037505077, 264321, 3, 67186), +(107590, 2767177504, 1417785224, 264321, 3, 67186), +(107590, 2767177504, 1344507586, 264320, 1, 67186), +(107590, 2767177504, 428746933, 264320, 3, 67186), +(107590, 2767177504, 2442913102, 264320, 1, 67186), +(107590, 2767177504, 3465080266, 264320, 3, 67186), +(107590, 2767177504, 3037505077, 264320, 3, 67186), +(107590, 2767177504, 1417785224, 264320, 3, 67186), +(107590, 2767177504, 1344507586, 264319, 1, 67186), +(107590, 2767177504, 428746933, 264319, 3, 67186), +(107590, 2767177504, 2442913102, 264319, 1, 67186), +(107590, 2767177504, 3465080266, 264319, 3, 67186), +(107590, 2767177504, 3037505077, 264319, 3, 67186), +(107590, 2767177504, 1417785224, 264319, 3, 67186), +(107590, 2767177504, 1344507586, 264318, 1, 67186), +(107590, 2767177504, 428746933, 264318, 3, 67186), +(107590, 2767177504, 2442913102, 264318, 1, 67186), +(107590, 2767177504, 3465080266, 264318, 3, 67186), +(107590, 2767177504, 3037505077, 264318, 3, 67186), +(107590, 2767177504, 1417785224, 264318, 3, 67186), +(107590, 2767177504, 1344507586, 264317, 1, 67186), +(107590, 2767177504, 428746933, 264317, 3, 67186), +(107590, 2767177504, 2442913102, 264317, 1, 67186), +(107590, 2767177504, 3465080266, 264317, 3, 67186), +(107590, 2767177504, 3037505077, 264317, 3, 67186), +(107590, 2767177504, 1417785224, 264317, 3, 67186), +(107590, 2767177504, 1344507586, 264316, 1, 67186), +(107590, 2767177504, 428746933, 264316, 3, 67186), +(107590, 2767177504, 2442913102, 264316, 1, 67186), +(107590, 2767177504, 3465080266, 264316, 3, 67186), +(107590, 2767177504, 3037505077, 264316, 3, 67186), +(107590, 2767177504, 1417785224, 264316, 3, 67186), +(107590, 2767177504, 1344507586, 264315, 1, 67186), +(107590, 2767177504, 428746933, 264315, 3, 67186), +(107590, 2767177504, 2442913102, 264315, 1, 67186), +(107590, 2767177504, 3465080266, 264315, 3, 67186), +(107590, 2767177504, 3037505077, 264315, 3, 67186), +(107590, 2767177504, 1417785224, 264315, 3, 67186), +(107590, 2767177504, 1344507586, 264314, 1, 67186), +(107590, 2767177504, 428746933, 264314, 3, 67186), +(107590, 2767177504, 2442913102, 264314, 1, 67186), +(107590, 2767177504, 3465080266, 264314, 3, 67186), +(107590, 2767177504, 3037505077, 264314, 3, 67186), +(107590, 2767177504, 1417785224, 264314, 3, 67186), +(107587, 4257412700, 3745449290, 8615, 1, 67186), +(107585, 1924360394, 4030871717, 1191490, 1, 67186), +(107585, 1924360394, 4030871717, 1000723, 1, 67186), +(107585, 1924360394, 4030871717, 286506, 1, 67186), +(107585, 1924360394, 4030871717, 191169, 1, 67186), +(107578, 2564715422, 261693969, 48022, 3, 67186), +(107578, 2564715422, 986198281, 48022, 1, 67186), +(107576, 3104695862, 1163127287, 125361, 3, 67186), +(107573, 3640751604, 666345498, 518926, 1, 67186), +(107573, 3640751604, 666345498, 518924, 1, 67186), +(107573, 3640751604, 4033975491, 619445, 1, 67186), +(107573, 3640751604, 1181150530, 750937, 1, 67186), +(107573, 3640751604, 4102286043, 265568, 1, 67186), +(107573, 3640751604, 3425193231, 546473, 1, 67186), +(107573, 3640751604, 4146370265, 182353, 1, 67186), +(107573, 3640751604, 1163127287, 127901, 3, 67186), +(107573, 3640751604, 3322146344, 842643, 1, 67186), +(107573, 3640751604, 3322146344, 842634, 1, 67186), +(107573, 3640751604, 3322146344, 822521, 1, 67186), +(107573, 3640751604, 4030871717, 1317160, 1, 67186), +(107573, 3640751604, 4030871717, 1317159, 1, 67186), +(107573, 3640751604, 4030871717, 1317151, 1, 67186), +(107573, 3640751604, 4030871717, 1284204, 1, 67186), +(107573, 3640751604, 4030871717, 1267125, 1, 67186), +(107573, 3640751604, 1187407512, 1295243, 1, 67186), +(107573, 3640751604, 3776013982, 1295243, 1, 67186), +(107573, 3640751604, 1187407512, 1295237, 1, 67186), +(107573, 3640751604, 3776013982, 1295237, 1, 67186), +(107573, 3640751604, 600565378, 632510, 1, 67186), +(107573, 3640751604, 600565378, 632508, 1, 67186), +(107573, 3640751604, 3386291891, 252603, 3, 67186), +(107571, 1720823035, 1344507586, 256700, 1, 67186), +(107571, 1720823035, 428746933, 256700, 3, 67186), +(107571, 1720823035, 2442913102, 256700, 1, 67186), +(107571, 1720823035, 3465080266, 256700, 3, 67186), +(107571, 1720823035, 3037505077, 256700, 3, 67186), +(107571, 1720823035, 1417785224, 256700, 3, 67186), +(107570, 1266448625, 3201599327, 15388, 1, 67186), +(107569, 2440960382, 1344507586, 250445, 1, 67186), +(107569, 2440960382, 428746933, 250445, 3, 67186), +(107569, 2440960382, 2442913102, 250445, 1, 67186), +(107569, 2440960382, 3465080266, 250445, 3, 67186), +(107569, 2440960382, 3037505077, 250445, 3, 67186), +(107569, 2440960382, 1417785224, 250445, 3, 67186), +(107568, 1897980046, 1344507586, 250360, 1, 67186), +(107568, 1897980046, 428746933, 250360, 3, 67186), +(107568, 1897980046, 2442913102, 250360, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107568, 1897980046, 3465080266, 250360, 3, 67186), +(107568, 1897980046, 3037505077, 250360, 3, 67186), +(107568, 1897980046, 1417785224, 250360, 3, 67186), +(107567, 648858088, 1344507586, 250443, 1, 67186), +(107567, 648858088, 428746933, 250443, 3, 67186), +(107567, 648858088, 2442913102, 250443, 1, 67186), +(107567, 648858088, 3465080266, 250443, 3, 67186), +(107567, 648858088, 3037505077, 250443, 3, 67186), +(107567, 648858088, 1417785224, 250443, 3, 67186), +(107566, 2911987064, 3072882582, 58022, 1, 67186), +(107566, 2911987064, 3322146344, 807169, 1, 67186), +(107566, 2911987064, 4030871717, 1317117, 1, 67186), +(107565, 421855420, 1187407512, 1226037, 1, 67186), +(107565, 421855420, 3776013982, 1226037, 1, 67186), +(107565, 421855420, 1187407512, 442615, 1, 67186), +(107565, 421855420, 3776013982, 442615, 1, 67186), +(107564, 1031923532, 3108775943, 151162, 1, 67186), +(107564, 1031923532, 2120822102, 443814, 1, 67186), +(107564, 1031923532, 2120822102, 443812, 1, 67186), +(107564, 1031923532, 2120822102, 443534, 1, 67186), +(107564, 1031923532, 2120822102, 443531, 2, 67186), +(107564, 1031923532, 2120822102, 443528, 1, 67186), +(107564, 1031923532, 2120822102, 443525, 1, 67186), +(107564, 1031923532, 2120822102, 443522, 1, 67186), +(107564, 1031923532, 2120822102, 443519, 1, 67186), +(107564, 1031923532, 2120822102, 443516, 1, 67186), +(107564, 1031923532, 2120822102, 443513, 1, 67186), +(107564, 1031923532, 2120822102, 443510, 1, 67186), +(107564, 1031923532, 2120822102, 443507, 1, 67186), +(107564, 1031923532, 2120822102, 443504, 1, 67186), +(107564, 1031923532, 1255424668, 225732, 1, 67186), +(107561, 536886270, 1163127287, 119077, 3, 67186), +(107561, 536886270, 1163127287, 118958, 3, 67186), +(107561, 536886270, 1163127287, 115179, 3, 67186), +(107561, 536886270, 1163127287, 110995, 3, 67186), +(107561, 536886270, 1163127287, 108877, 3, 67186), +(107561, 536886270, 3571931810, 41951, 3, 67186), +(107561, 536886270, 3571931810, 41950, 3, 67186), +(107561, 536886270, 3571931810, 41949, 3, 67186), +(107561, 536886270, 3571931810, 41948, 3, 67186), +(107561, 536886270, 3571931810, 41926, 3, 67186), +(107561, 536886270, 3571931810, 41925, 3, 67186), +(107561, 536886270, 3571931810, 41924, 3, 67186), +(107561, 536886270, 3571931810, 41923, 3, 67186), +(107561, 536886270, 3571931810, 39476, 3, 67186), +(107561, 536886270, 3571931810, 39352, 3, 67186), +(107561, 536886270, 3571931810, 39295, 3, 67186), +(107561, 536886270, 3571931810, 39292, 3, 67186), +(107561, 536886270, 3571931810, 39004, 3, 67186), +(107561, 536886270, 3571931810, 39003, 3, 67186), +(107561, 536886270, 3571931810, 39002, 3, 67186), +(107561, 536886270, 3571931810, 39001, 3, 67186), +(107561, 536886270, 3571931810, 38554, 3, 67186), +(107561, 536886270, 3571931810, 38480, 3, 67186), +(107561, 536886270, 3571931810, 38462, 3, 67186), +(107561, 536886270, 3571931810, 36665, 3, 67186), +(107559, 2858482159, 3386943305, 23675, 1, 67186), +(107559, 2858482159, 3386291891, 59271, 1, 67186), +(107558, 1522231914, 1163127287, 125126, 3, 67186), +(107558, 1522231914, 1163127287, 102459, 3, 67186), +(107558, 1522231914, 1163127287, 38300, 3, 67186), +(107558, 1522231914, 4030871717, 1317106, 1, 67186), +(107558, 1522231914, 4030871717, 1317085, 1, 67186), +(107558, 1522231914, 4030871717, 1317081, 1, 67186), +(107558, 1522231914, 4030871717, 1288667, 1, 67186), +(107558, 1522231914, 4030871717, 1288663, 1, 67186), +(107558, 1522231914, 4030871717, 1288661, 1, 67186), +(107558, 1522231914, 4030871717, 1288654, 1, 67186), +(107558, 1522231914, 4030871717, 1288649, 1, 67186), +(107558, 1522231914, 4030871717, 1288647, 1, 67186), +(107558, 1522231914, 4030871717, 1288637, 1, 67186), +(107558, 1522231914, 4030871717, 1288621, 1, 67186), +(107558, 1522231914, 4030871717, 1288617, 1, 67186), +(107558, 1522231914, 4030871717, 1288614, 1, 67186), +(107558, 1522231914, 4030871717, 1288612, 1, 67186), +(107558, 1522231914, 4030871717, 1288609, 1, 67186), +(107558, 1522231914, 4030871717, 1288605, 1, 67186), +(107558, 1522231914, 4030871717, 1288602, 1, 67186), +(107558, 1522231914, 4030871717, 1288601, 1, 67186), +(107558, 1522231914, 4030871717, 1288582, 1, 67186), +(107558, 1522231914, 4030871717, 1288578, 2, 67186), +(107558, 1522231914, 4030871717, 1288577, 1, 67186), +(107557, 3864180862, 3322146344, 842596, 1, 67186), +(107557, 3864180862, 4030871717, 1317084, 1, 67186), +(107557, 3864180862, 1627543382, 231942, 1, 67186), +(107557, 3864180862, 1187407512, 1295194, 1, 67186), +(107557, 3864180862, 3776013982, 1295194, 1, 67186), +(107557, 3864180862, 1187407512, 1241218, 1, 67186), +(107557, 3864180862, 3776013982, 1241218, 1, 67186), +(107557, 3864180862, 3108775943, 156806, 3, 67186), +(107557, 3864180862, 2120822102, 446213, 1, 67186), +(107557, 3864180862, 2120822102, 446212, 1, 67186), +(107557, 3864180862, 2120822102, 446190, 2, 67186), +(107556, 2227092945, 3645674820, 298160, 2, 67186), +(107556, 2227092945, 3834752085, 298160, 1, 67186), +(107556, 2227092945, 3645674820, 76787, 2, 67186), +(107556, 2227092945, 3834752085, 76787, 1, 67186), +(107556, 2227092945, 3645674820, 24387, 2, 67186), +(107556, 2227092945, 3834752085, 24387, 1, 67186), +(107554, 4069148181, 2202435563, 1297083, 3, 67186), +(107554, 4069148181, 2202435563, 1297082, 3, 67186), +(107554, 4069148181, 2202435563, 1265111, 3, 67186), +(107554, 4069148181, 2202435563, 1265110, 3, 67186), +(107554, 4069148181, 2921112328, 575022, 3, 67186), +(107554, 4069148181, 2921112328, 575021, 3, 67186), +(107554, 4069148181, 2921112328, 563524, 3, 67186), +(107554, 4069148181, 2921112328, 563523, 3, 67186), +(107553, 3001469234, 1163127287, 69492, 3, 67186), +(107553, 3001469234, 1163127287, 62720, 3, 67186), +(107553, 3001469234, 1163127287, 33148, 3, 67186), +(107553, 3001469234, 3322146344, 433206, 1, 67186), +(107552, 176920901, 3322146344, 795903, 1, 67186), +(107552, 176920901, 3322146344, 788892, 1, 67186), +(107552, 176920901, 4030871717, 1253880, 1, 67186), +(107552, 176920901, 4030871717, 1248346, 1, 67186), +(107552, 176920901, 4030871717, 1245729, 1, 67186), +(107552, 176920901, 4030871717, 1240247, 1, 67186), +(107552, 176920901, 4030871717, 1228685, 1, 67186), +(107552, 176920901, 2575642838, 749, 1, 67186), +(107552, 176920901, 2575642838, 748, 1, 67186), +(107551, 1386687491, 1163127287, 127647, 3, 67186), +(107551, 1386687491, 3322146344, 841708, 1, 67186), +(107551, 1386687491, 1187407512, 1294288, 1, 67186), +(107551, 1386687491, 3776013982, 1294288, 1, 67186), +(107547, 3280421013, 3322146344, 664030, 1, 67186), +(107545, 1997568168, 3567803627, 26113, 1, 67186), +(107545, 1997568168, 178219711, 9351, 1, 67186), +(107545, 1997568168, 666345498, 518896, 2, 67186), +(107545, 1997568168, 666345498, 513301, 1, 67186), +(107545, 1997568168, 3425193231, 546424, 1, 67186), +(107545, 1997568168, 3425193231, 546422, 1, 67186), +(107545, 1997568168, 4146370265, 182329, 1, 67186), +(107545, 1997568168, 3764692828, 352171, 1, 67186), +(107545, 1997568168, 3322146344, 841043, 1, 67186), +(107545, 1997568168, 3322146344, 834506, 1, 67186), +(107545, 1997568168, 4030871717, 1317083, 1, 67186), +(107545, 1997568168, 4030871717, 1314442, 1, 67186), +(107545, 1997568168, 4030871717, 1308040, 1, 67186), +(107545, 1997568168, 4030871717, 1303905, 1, 67186), +(107545, 1997568168, 4030871717, 1303893, 1, 67186), +(107545, 1997568168, 4030871717, 1303718, 1, 67186), +(107545, 1997568168, 1187407512, 1286830, 1, 67186), +(107545, 1997568168, 3776013982, 1286830, 1, 67186), +(107545, 1997568168, 3108775943, 156816, 1, 67186), +(107545, 1997568168, 3108775943, 153716, 3, 67186), +(107545, 1997568168, 2120822102, 446265, 1, 67186), +(107545, 1997568168, 2120822102, 446264, 1, 67186), +(107545, 1997568168, 2120822102, 446263, 1, 67186), +(107545, 1997568168, 2120822102, 446262, 1, 67186), +(107545, 1997568168, 2120822102, 446261, 1, 67186), +(107545, 1997568168, 2120822102, 446260, 1, 67186), +(107545, 1997568168, 2120822102, 446259, 1, 67186), +(107545, 1997568168, 2120822102, 446258, 1, 67186), +(107545, 1997568168, 2120822102, 446257, 1, 67186), +(107545, 1997568168, 600565378, 664416, 1, 67186), +(107545, 1997568168, 3386943305, 349084, 3, 67186), +(107545, 1997568168, 3386943305, 345036, 3, 67186), +(107545, 1997568168, 3386943305, 344964, 3, 67186), +(107545, 1997568168, 3386291891, 265572, 3, 67186), +(107545, 1997568168, 3571931810, 42929, 3, 67186), +(107545, 1997568168, 1548466975, 43675, 3, 67186), +(107543, 639131264, 2199425034, 31212, 1, 67186), +(107543, 639131264, 2199425034, 31211, 1, 67186), +(107543, 639131264, 2199425034, 31210, 1, 67186), +(107542, 773832150, 312611497, 28677, 3, 67186), +(107542, 773832150, 312611497, 24284, 2, 67186), +(107542, 773832150, 312611497, 23579, 3, 67186), +(107542, 773832150, 312611497, 23578, 3, 67186), +(107542, 773832150, 312611497, 23288, 2, 67186), +(107542, 773832150, 312611497, 23287, 2, 67186), +(107542, 773832150, 1163127287, 127889, 3, 67186), +(107542, 773832150, 1163127287, 97248, 3, 67186), +(107542, 773832150, 1163127287, 91894, 3, 67186), +(107542, 773832150, 1163127287, 91887, 3, 67186), +(107542, 773832150, 1163127287, 91843, 3, 67186), +(107542, 773832150, 1163127287, 91825, 2, 67186), +(107542, 773832150, 1163127287, 47989, 3, 67186), +(107540, 13141792, 2411028436, 11442, 3, 67186), +(107540, 13141792, 3567803627, 25552, 1, 67186), +(107539, 177907807, 1187407512, 1236092, 1, 67186), +(107539, 177907807, 3776013982, 1236092, 1, 67186), +(107539, 177907807, 1187407512, 406157, 1, 67186), +(107539, 177907807, 3776013982, 406157, 1, 67186), +(107539, 177907807, 2523372402, 16441, 1, 67186), +(107539, 177907807, 2523372402, 16376, 1, 67186), +(107539, 177907807, 261693969, 94382, 3, 67186), +(107539, 177907807, 986198281, 94382, 1, 67186), +(107539, 177907807, 261693969, 93049, 1, 67186), +(107539, 177907807, 986198281, 93049, 1, 67186), +(107539, 177907807, 261693969, 93048, 1, 67186), +(107539, 177907807, 986198281, 93048, 1, 67186), +(107539, 177907807, 261693969, 91389, 3, 67186), +(107539, 177907807, 986198281, 91389, 1, 67186), +(107539, 177907807, 261693969, 86722, 3, 67186), +(107539, 177907807, 986198281, 86722, 1, 67186), +(107539, 177907807, 261693969, 86721, 3, 67186), +(107539, 177907807, 986198281, 86721, 1, 67186), +(107539, 177907807, 261693969, 86715, 3, 67186), +(107539, 177907807, 986198281, 86715, 1, 67186), +(107539, 177907807, 261693969, 86712, 3, 67186), +(107539, 177907807, 986198281, 86712, 1, 67186), +(107539, 177907807, 261693969, 86711, 3, 67186), +(107539, 177907807, 986198281, 86711, 1, 67186), +(107539, 177907807, 261693969, 86710, 3, 67186), +(107539, 177907807, 986198281, 86710, 1, 67186), +(107539, 177907807, 2524150337, 2951, 4, 67186), +(107539, 177907807, 2524150337, 2949, 4, 67186), +(107539, 177907807, 1344507586, 273021, 4, 67186), +(107539, 177907807, 428746933, 273021, 3, 67186), +(107539, 177907807, 2442913102, 273021, 4, 67186), +(107539, 177907807, 3465080266, 273021, 3, 67186), +(107539, 177907807, 3037505077, 273021, 3, 67186), +(107539, 177907807, 1417785224, 273021, 3, 67186), +(107539, 177907807, 1344507586, 272125, 1, 67186), +(107539, 177907807, 428746933, 272125, 3, 67186), +(107539, 177907807, 2442913102, 272125, 1, 67186), +(107539, 177907807, 3465080266, 272125, 3, 67186), +(107539, 177907807, 3037505077, 272125, 3, 67186), +(107539, 177907807, 1417785224, 272125, 3, 67186), +(107539, 177907807, 1344507586, 263286, 1, 67186), +(107539, 177907807, 428746933, 263286, 1, 67186), +(107539, 177907807, 2442913102, 263286, 1, 67186), +(107539, 177907807, 3465080266, 263286, 3, 67186), +(107539, 177907807, 3037505077, 263286, 3, 67186), +(107539, 177907807, 1417785224, 263286, 3, 67186), +(107539, 177907807, 1255424668, 224745, 1, 67186), +(107539, 177907807, 1255424668, 222969, 1, 67186), +(107539, 177907807, 1255424668, 222803, 1, 67186), +(107539, 177907807, 1255424668, 221550, 1, 67186), +(107539, 177907807, 1255424668, 219955, 1, 67186), +(107539, 177907807, 1255424668, 219466, 1, 67186), +(107539, 177907807, 35137211, 312566, 3, 67186), +(107539, 177907807, 35137211, 308821, 1, 67186), +(107539, 177907807, 35137211, 305314, 3, 67186), +(107539, 177907807, 35137211, 301657, 1, 67186), +(107539, 177907807, 35137211, 299055, 1, 67186), +(107539, 177907807, 35137211, 297004, 1, 67186), +(107539, 177907807, 35137211, 296930, 1, 67186), +(107539, 177907807, 35137211, 295985, 1, 67186), +(107539, 177907807, 35137211, 295318, 1, 67186), +(107539, 177907807, 35137211, 295221, 3, 67186), +(107539, 177907807, 35137211, 294283, 1, 67186), +(107539, 177907807, 35137211, 294167, 1, 67186), +(107539, 177907807, 35137211, 293822, 1, 67186), +(107539, 177907807, 35137211, 291856, 1, 67186), +(107539, 177907807, 35137211, 291853, 1, 67186), +(107539, 177907807, 35137211, 291585, 1, 67186), +(107539, 177907807, 35137211, 290937, 1, 67186), +(107539, 177907807, 35137211, 288987, 1, 67186), +(107539, 177907807, 35137211, 287495, 3, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107539, 177907807, 35137211, 283177, 1, 67186), +(107539, 177907807, 35137211, 273965, 1, 67186), +(107539, 177907807, 35137211, 241135, 3, 67186), +(107539, 177907807, 3108775943, 154472, 1, 67186), +(107539, 177907807, 3108775943, 151164, 1, 67186), +(107539, 177907807, 3108775943, 151163, 1, 67186), +(107539, 177907807, 1255424668, 225670, 1, 67186), +(107539, 177907807, 1255424668, 225668, 1, 67186), +(107539, 177907807, 1255424668, 225666, 1, 67186), +(107539, 177907807, 1255424668, 225664, 1, 67186), +(107539, 177907807, 3538824359, 62814, 1, 67186), +(107539, 177907807, 3538824359, 62813, 1, 67186), +(107539, 177907807, 3538824359, 62812, 1, 67186), +(107539, 177907807, 3538824359, 62811, 1, 67186), +(107536, 1435289657, 492039028, 52304, 1, 67186), +(107536, 1435289657, 1163127287, 127876, 3, 67186), +(107534, 4064828460, 4030871717, 1244805, 1, 67186), +(107533, 3378443707, 1992314007, 1614662, 1, 67186), +(107533, 3378443707, 1992314007, 1614661, 1, 67186), +(107533, 3378443707, 1992314007, 1614660, 1, 67186), +(107533, 3378443707, 1992314007, 1614659, 1, 67186), +(107533, 3378443707, 1992314007, 1614658, 1, 67186), +(107533, 3378443707, 1992314007, 1614657, 1, 67186), +(107533, 3378443707, 1992314007, 1614656, 1, 67186), +(107533, 3378443707, 1992314007, 1614655, 1, 67186), +(107533, 3378443707, 1992314007, 1614654, 1, 67186), +(107533, 3378443707, 338825009, 226556, 1, 67186), +(107533, 3378443707, 338825009, 226555, 1, 67186), +(107533, 3378443707, 338825009, 226554, 1, 67186), +(107533, 3378443707, 338825009, 226553, 1, 67186), +(107533, 3378443707, 338825009, 226552, 1, 67186), +(107533, 3378443707, 338825009, 226551, 1, 67186), +(107533, 3378443707, 338825009, 226550, 1, 67186), +(107533, 3378443707, 338825009, 226549, 1, 67186), +(107533, 3378443707, 338825009, 226548, 1, 67186), +(107533, 3378443707, 338825009, 226547, 1, 67186), +(107533, 3378443707, 338825009, 226546, 1, 67186), +(107533, 3378443707, 338825009, 226545, 1, 67186), +(107533, 3378443707, 338825009, 226544, 1, 67186), +(107533, 3378443707, 338825009, 226543, 1, 67186), +(107533, 3378443707, 338825009, 226542, 1, 67186), +(107533, 3378443707, 338825009, 226541, 1, 67186), +(107533, 3378443707, 4082824155, 1449249, 1, 67186), +(107533, 3378443707, 4082824155, 1449248, 1, 67186), +(107533, 3378443707, 4082824155, 1449247, 1, 67186), +(107533, 3378443707, 4082824155, 1449246, 1, 67186), +(107533, 3378443707, 4082824155, 1449245, 1, 67186), +(107533, 3378443707, 4082824155, 1449244, 1, 67186), +(107533, 3378443707, 4082824155, 1449243, 1, 67186), +(107533, 3378443707, 4082824155, 1449242, 1, 67186), +(107533, 3378443707, 4082824155, 1449241, 1, 67186), +(107533, 3378443707, 4082824155, 1449240, 1, 67186), +(107533, 3378443707, 4082824155, 1449239, 1, 67186), +(107533, 3378443707, 4082824155, 1449238, 1, 67186), +(107533, 3378443707, 2557447376, 739898, 1, 67186), +(107533, 3378443707, 2557447376, 739897, 1, 67186), +(107533, 3378443707, 2557447376, 739896, 1, 67186), +(107533, 3378443707, 2557447376, 739895, 1, 67186), +(107533, 3378443707, 2557447376, 739894, 1, 67186), +(107533, 3378443707, 2557447376, 739893, 1, 67186), +(107533, 3378443707, 2557447376, 739892, 1, 67186), +(107533, 3378443707, 2557447376, 739891, 1, 67186), +(107533, 3378443707, 2557447376, 739890, 1, 67186), +(107533, 3378443707, 1722140087, 164599, 1, 67186), +(107531, 3250142591, 1163127287, 117783, 3, 67186), +(107530, 3654328193, 3322146344, 806145, 1, 67186), +(107530, 3654328193, 3322146344, 797087, 1, 67186), +(107530, 3654328193, 3386943305, 318585, 3, 67186), +(107529, 831985293, 312611497, 28648, 3, 67186), +(107529, 831985293, 312611497, 26341, 3, 67186), +(107529, 831985293, 312611497, 26340, 3, 67186), +(107529, 831985293, 1163127287, 114997, 3, 67186), +(107526, 692016111, 4033975491, 608169, 1, 67186), +(107526, 692016111, 4033975491, 604781, 2, 67186), +(107526, 692016111, 4033975491, 604780, 2, 67186), +(107526, 692016111, 4033975491, 599344, 2, 67186), +(107526, 692016111, 4033975491, 599342, 1, 67186), +(107526, 692016111, 4033975491, 598966, 2, 67186), +(107526, 692016111, 4033975491, 598965, 2, 67186), +(107526, 692016111, 4033975491, 598962, 2, 67186), +(107526, 692016111, 4033975491, 598961, 2, 67186), +(107526, 692016111, 4033975491, 579842, 1, 67186), +(107526, 692016111, 4033975491, 579841, 2, 67186), +(107526, 692016111, 4033975491, 578881, 1, 67186), +(107526, 692016111, 4033975491, 578880, 1, 67186), +(107526, 692016111, 4033975491, 578406, 1, 67186), +(107526, 692016111, 4033975491, 577558, 2, 67186), +(107526, 692016111, 4033975491, 577557, 2, 67186), +(107526, 692016111, 1181150530, 716973, 2, 67186), +(107526, 692016111, 1181150530, 716972, 2, 67186), +(107526, 692016111, 1181150530, 704308, 2, 67186), +(107526, 692016111, 1181150530, 703623, 2, 67186), +(107526, 692016111, 1181150530, 703622, 2, 67186), +(107526, 692016111, 1181150530, 703619, 2, 67186), +(107526, 692016111, 1181150530, 703618, 2, 67186), +(107526, 692016111, 1181150530, 667159, 2, 67186), +(107526, 692016111, 1181150530, 662791, 2, 67186), +(107526, 692016111, 1181150530, 662790, 2, 67186), +(107526, 692016111, 4102286043, 257125, 1, 67186), +(107526, 692016111, 4102286043, 235995, 1, 67186), +(107526, 692016111, 3425193231, 532392, 2, 67186), +(107526, 692016111, 3425193231, 532391, 2, 67186), +(107526, 692016111, 4146370265, 164641, 1, 67186), +(107526, 692016111, 4146370265, 164639, 1, 67186), +(107526, 692016111, 1163127287, 114586, 3, 67186), +(107526, 692016111, 4030871717, 1316016, 2, 67186), +(107526, 692016111, 2151089334, 7515, 1, 67186), +(107526, 692016111, 3571931810, 41538, 3, 67186), +(107526, 692016111, 3571931810, 41537, 3, 67186), +(107526, 692016111, 3571931810, 38387, 3, 67186), +(107526, 692016111, 3571931810, 38386, 3, 67186), +(107525, 264317780, 1163127287, 127810, 3, 67186), +(107525, 264317780, 4030871717, 1316617, 2, 67186), +(107524, 3328472604, 4033975491, 607519, 1, 67186), +(107524, 3328472604, 4033975491, 607518, 1, 67186), +(107523, 118676436, 2151089334, 7220, 1, 67186), +(107523, 118676436, 2151089334, 7016, 1, 67186), +(107519, 2600301137, 666345498, 507472, 1, 67186), +(107519, 2600301137, 4033975491, 619212, 1, 67186), +(107519, 2600301137, 4033975491, 618735, 1, 67186), +(107519, 2600301137, 4033975491, 618734, 1, 67186), +(107519, 2600301137, 1181150530, 750462, 1, 67186), +(107519, 2600301137, 4102286043, 265412, 1, 67186), +(107519, 2600301137, 3425193231, 546266, 2, 67186), +(107519, 2600301137, 3425193231, 545739, 1, 67186), +(107519, 2600301137, 4146370265, 182011, 1, 67186), +(107519, 2600301137, 3764692828, 348563, 3, 67186), +(107519, 2600301137, 2124448848, 312822, 2, 67186), +(107519, 2600301137, 2712461791, 312822, 1, 67186), +(107519, 2600301137, 3322146344, 842021, 1, 67186), +(107519, 2600301137, 3322146344, 826471, 1, 67186), +(107519, 2600301137, 4030871717, 1290231, 1, 67186), +(107519, 2600301137, 1880017466, 312618, 2, 67186), +(107519, 2600301137, 1880017466, 312617, 2, 67186), +(107519, 2600301137, 1272569722, 103544, 2, 67186), +(107519, 2600301137, 3571931810, 42876, 3, 67186), +(107514, 3195647882, 2895307949, 1388, 3, 67186), +(107514, 3195647882, 3571931810, 38490, 3, 67186), +(107514, 3195647882, 3571931810, 38489, 3, 67186), +(107510, 1064273161, 1163127287, 124612, 3, 67186), +(107510, 1064273161, 3386943305, 328330, 3, 67186), +(107509, 1921277364, 1720692227, 242312, 2, 67186), +(107509, 1921277364, 1720692227, 242253, 2, 67186), +(107509, 1921277364, 1720692227, 240112, 2, 67186), +(107509, 1921277364, 1187407512, 1293613, 1, 67186), +(107509, 1921277364, 3776013982, 1293613, 1, 67186), +(107509, 1921277364, 1187407512, 1286820, 1, 67186), +(107509, 1921277364, 3776013982, 1286820, 1, 67186), +(107509, 1921277364, 1187407512, 1286703, 1, 67186), +(107509, 1921277364, 3776013982, 1286703, 1, 67186), +(107507, 2112623955, 3386943305, 333527, 3, 67186), +(107507, 2112623955, 3386943305, 318995, 3, 67186), +(107507, 2112623955, 3386943305, 204569, 3, 67186), +(107507, 2112623955, 3386943305, 122835, 3, 67186), +(107507, 2112623955, 3386943305, 102369, 3, 67186), +(107507, 2112623955, 3386943305, 99196, 3, 67186), +(107507, 2112623955, 3386943305, 99191, 3, 67186), +(107507, 2112623955, 3386943305, 99179, 3, 67186), +(107507, 2112623955, 3386943305, 25207, 3, 67186), +(107507, 2112623955, 3174446591, 7357, 1, 67186), +(107505, 3018498225, 1163127287, 127843, 3, 67186), +(107505, 3018498225, 3322146344, 826900, 1, 67186), +(107505, 3018498225, 4030871717, 1291027, 1, 67186), +(107504, 3055079918, 3764692828, 352138, 3, 67186), +(107504, 3055079918, 1163127287, 127840, 3, 67186), +(107504, 3055079918, 1187407512, 1253159, 1, 67186), +(107504, 3055079918, 3776013982, 1253159, 1, 67186), +(107501, 1101478967, 312611497, 28344, 3, 67186), +(107501, 1101478967, 312611497, 28343, 3, 67186), +(107501, 1101478967, 1237546057, 441, 1, 67186), +(107501, 1101478967, 1237546057, 402, 1, 67186), +(107501, 1101478967, 1237546057, 401, 1, 67186), +(107501, 1101478967, 1237546057, 400, 1, 67186), +(107501, 1101478967, 1237546057, 305, 1, 67186), +(107501, 1101478967, 1237546057, 304, 1, 67186), +(107501, 1101478967, 1237546057, 302, 1, 67186), +(107501, 1101478967, 1237546057, 297, 1, 67186), +(107501, 1101478967, 1237546057, 296, 1, 67186), +(107501, 1101478967, 1237546057, 295, 1, 67186), +(107501, 1101478967, 1237546057, 294, 1, 67186), +(107501, 1101478967, 1237546057, 293, 1, 67186), +(107501, 1101478967, 1237546057, 292, 1, 67186), +(107501, 1101478967, 1237546057, 291, 1, 67186), +(107501, 1101478967, 1237546057, 285, 1, 67186), +(107501, 1101478967, 1237546057, 284, 1, 67186), +(107501, 1101478967, 1237546057, 283, 1, 67186), +(107501, 1101478967, 1237546057, 282, 1, 67186), +(107501, 1101478967, 1237546057, 279, 1, 67186), +(107501, 1101478967, 1237546057, 278, 1, 67186), +(107501, 1101478967, 1237546057, 277, 1, 67186), +(107501, 1101478967, 1237546057, 276, 1, 67186), +(107501, 1101478967, 1237546057, 275, 1, 67186), +(107501, 1101478967, 1237546057, 274, 1, 67186), +(107501, 1101478967, 1237546057, 271, 1, 67186), +(107501, 1101478967, 1237546057, 268, 1, 67186), +(107500, 3032124446, 4012104832, 113821, 1, 67186), +(107498, 644910711, 4030871717, 1316796, 1, 67186), +(107498, 644910711, 261693969, 96527, 3, 67186), +(107498, 644910711, 986198281, 96527, 1, 67186), +(107498, 644910711, 3108775943, 156626, 3, 67186), +(107498, 644910711, 3108775943, 156625, 3, 67186), +(107497, 1895115108, 1344507586, 273307, 1, 67186), +(107497, 1895115108, 428746933, 273307, 3, 67186), +(107497, 1895115108, 2442913102, 273307, 1, 67186), +(107497, 1895115108, 3465080266, 273307, 3, 67186), +(107497, 1895115108, 3037505077, 273307, 3, 67186), +(107497, 1895115108, 1417785224, 273307, 3, 67186), +(107496, 3448610587, 1255424668, 227206, 1, 67186), +(107496, 3448610587, 4012104832, 113946, 1, 67186), +(107494, 412081667, 4030871717, 1281775, 1, 67186), +(107494, 412081667, 4030871717, 1281773, 1, 67186), +(107493, 1691753703, 2793276977, 29165, 1, 67186), +(107493, 1691753703, 2793276977, 27170, 2, 67186), +(107489, 1810213156, 1344507586, 269640, 4, 67186), +(107489, 1810213156, 428746933, 269640, 3, 67186), +(107489, 1810213156, 2442913102, 269640, 4, 67186), +(107489, 1810213156, 3465080266, 269640, 3, 67186), +(107489, 1810213156, 3037505077, 269640, 3, 67186), +(107489, 1810213156, 1417785224, 269640, 3, 67186), +(107489, 1810213156, 1344507586, 269012, 4, 67186), +(107489, 1810213156, 428746933, 269012, 3, 67186), +(107489, 1810213156, 2442913102, 269012, 4, 67186), +(107489, 1810213156, 3465080266, 269012, 3, 67186), +(107489, 1810213156, 3037505077, 269012, 3, 67186), +(107489, 1810213156, 1417785224, 269012, 3, 67186), +(107488, 3660253924, 492039028, 49497, 2, 67186), +(107488, 3660253924, 3359787322, 31466, 3, 67186), +(107488, 3660253924, 3359787322, 29799, 2, 67186), +(107488, 3660253924, 3359787322, 29615, 1, 67186), +(107488, 3660253924, 3031818311, 9590, 1, 67186), +(107488, 3660253924, 3072882582, 59191, 2, 67186), +(107488, 3660253924, 3072882582, 49188, 1, 67186), +(107488, 3660253924, 312611497, 28672, 2, 67186), +(107488, 3660253924, 312611497, 28671, 2, 67186), +(107488, 3660253924, 312611497, 28670, 2, 67186), +(107488, 3660253924, 312611497, 28669, 2, 67186), +(107488, 3660253924, 312611497, 28668, 2, 67186), +(107488, 3660253924, 1163127287, 127825, 3, 67186), +(107487, 3643582492, 312611497, 21222, 3, 67186), +(107487, 3643582492, 312611497, 19901, 3, 67186), +(107487, 3643582492, 312611497, 19900, 3, 67186), +(107487, 3643582492, 1163127287, 35325, 3, 67186), +(107486, 2354759604, 492039028, 52297, 1, 67186), +(107486, 2354759604, 492039028, 50744, 1, 67186), +(107486, 2354759604, 492039028, 50743, 1, 67186), +(107486, 2354759604, 492039028, 50742, 1, 67186), +(107486, 2354759604, 492039028, 50741, 1, 67186), +(107486, 2354759604, 3359787322, 31464, 1, 67186), +(107486, 2354759604, 2120822102, 446062, 1, 67186), +(107486, 2354759604, 2120822102, 446061, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107486, 2354759604, 2120822102, 427219, 1, 67186), +(107486, 2354759604, 2120822102, 427216, 1, 67186), +(107486, 2354759604, 2120822102, 427213, 1, 67186), +(107486, 2354759604, 2120822102, 427210, 1, 67186), +(107486, 2354759604, 2120822102, 427204, 1, 67186), +(107486, 2354759604, 2120822102, 427201, 2, 67186), +(107486, 2354759604, 2120822102, 427198, 2, 67186), +(107486, 2354759604, 2120822102, 427195, 1, 67186), +(107486, 2354759604, 2120822102, 426834, 1, 67186), +(107486, 2354759604, 2120822102, 426831, 1, 67186), +(107486, 2354759604, 2120822102, 426819, 1, 67186), +(107485, 2520932108, 1163127287, 120029, 3, 67186), +(107485, 2520932108, 1163127287, 120028, 3, 67186), +(107483, 1258762792, 1163127287, 116916, 3, 67186), +(107482, 2338862449, 3386943305, 342887, 3, 67186), +(107482, 2338862449, 3386943305, 341301, 3, 67186), +(107481, 3907185161, 1187407512, 1291667, 4, 67186), +(107481, 3907185161, 3776013982, 1291667, 4, 67186), +(107481, 3907185161, 1187407512, 1277169, 1, 67186), +(107481, 3907185161, 3776013982, 1277169, 1, 67186), +(107481, 3907185161, 1187407512, 1243683, 1, 67186), +(107481, 3907185161, 3776013982, 1243683, 1, 67186), +(107481, 3907185161, 1187407512, 190784, 1, 67186), +(107481, 3907185161, 3776013982, 190784, 1, 67186), +(107481, 3907185161, 3108775943, 142975, 1, 67186), +(107481, 3907185161, 1344507586, 265790, 1, 67186), +(107481, 3907185161, 428746933, 265790, 3, 67186), +(107481, 3907185161, 2442913102, 265790, 1, 67186), +(107481, 3907185161, 3465080266, 265790, 3, 67186), +(107481, 3907185161, 3037505077, 265790, 3, 67186), +(107481, 3907185161, 1417785224, 265790, 3, 67186), +(107481, 3907185161, 1344507586, 246753, 1, 67186), +(107481, 3907185161, 428746933, 246753, 3, 67186), +(107481, 3907185161, 2442913102, 246753, 1, 67186), +(107481, 3907185161, 3465080266, 246753, 3, 67186), +(107481, 3907185161, 3037505077, 246753, 3, 67186), +(107481, 3907185161, 1417785224, 246753, 3, 67186), +(107481, 3907185161, 1255424668, 223209, 1, 67186), +(107481, 3907185161, 1255424668, 212362, 1, 67186), +(107481, 3907185161, 3538824359, 62296, 1, 67186), +(107481, 3907185161, 3538824359, 42769, 1, 67186), +(107480, 1955398899, 666345498, 518729, 1, 67186), +(107480, 1955398899, 666345498, 486476, 1, 67186), +(107480, 1955398899, 4033975491, 619076, 1, 67186), +(107480, 1955398899, 4033975491, 619075, 1, 67186), +(107480, 1955398899, 4033975491, 619074, 1, 67186), +(107480, 1955398899, 4033975491, 619073, 1, 67186), +(107480, 1955398899, 1181150530, 750195, 1, 67186), +(107480, 1955398899, 1181150530, 750194, 1, 67186), +(107480, 1955398899, 1181150530, 750193, 1, 67186), +(107480, 1955398899, 1181150530, 750192, 1, 67186), +(107480, 1955398899, 1181150530, 750191, 1, 67186), +(107480, 1955398899, 4102286043, 265322, 1, 67186), +(107480, 1955398899, 4102286043, 235511, 1, 67186), +(107480, 1955398899, 3425193231, 546169, 1, 67186), +(107480, 1955398899, 3425193231, 546168, 1, 67186), +(107480, 1955398899, 3425193231, 546167, 1, 67186), +(107480, 1955398899, 3425193231, 546166, 1, 67186), +(107480, 1955398899, 4146370265, 182214, 1, 67186), +(107480, 1955398899, 4146370265, 164230, 1, 67186), +(107480, 1955398899, 3108775943, 156592, 1, 67186), +(107480, 1955398899, 3108775943, 156591, 1, 67186), +(107479, 2313011965, 666345498, 518894, 1, 67186), +(107479, 2313011965, 4033975491, 619401, 1, 67186), +(107479, 2313011965, 4033975491, 619384, 1, 67186), +(107479, 2313011965, 1181150530, 750841, 1, 67186), +(107479, 2313011965, 1181150530, 750840, 1, 67186), +(107479, 2313011965, 1181150530, 750815, 1, 67186), +(107479, 2313011965, 4102286043, 265535, 1, 67186), +(107479, 2313011965, 4102286043, 265529, 1, 67186), +(107479, 2313011965, 3425193231, 546416, 1, 67186), +(107479, 2313011965, 3425193231, 546415, 1, 67186), +(107479, 2313011965, 3425193231, 546414, 1, 67186), +(107479, 2313011965, 3425193231, 546413, 1, 67186), +(107479, 2313011965, 4146370265, 182326, 1, 67186), +(107479, 2313011965, 312611497, 27596, 3, 67186), +(107479, 2313011965, 312611497, 27595, 3, 67186), +(107479, 2313011965, 1163127287, 127891, 3, 67186), +(107479, 2313011965, 1163127287, 118056, 3, 67186), +(107479, 2313011965, 3322146344, 842594, 1, 67186), +(107479, 2313011965, 3322146344, 819393, 1, 67186), +(107479, 2313011965, 3322146344, 819392, 1, 67186), +(107479, 2313011965, 3322146344, 818615, 1, 67186), +(107479, 2313011965, 3322146344, 807889, 1, 67186), +(107479, 2313011965, 1720692227, 242769, 1, 67186), +(107479, 2313011965, 4030871717, 1317079, 1, 67186), +(107479, 2313011965, 4030871717, 1317077, 1, 67186), +(107479, 2313011965, 4030871717, 1317076, 1, 67186), +(107479, 2313011965, 4030871717, 1316671, 1, 67186), +(107479, 2313011965, 3689412649, 184146, 1, 67186), +(107479, 2313011965, 184881520, 18406, 1, 67186), +(107479, 2313011965, 184881520, 18405, 1, 67186), +(107479, 2313011965, 184881520, 18404, 1, 67186), +(107479, 2313011965, 184881520, 18403, 1, 67186), +(107479, 2313011965, 184881520, 18246, 2, 67186), +(107479, 2313011965, 184881520, 18245, 1, 67186), +(107479, 2313011965, 184881520, 18244, 1, 67186), +(107479, 2313011965, 2035710060, 35809, 1, 67186), +(107479, 2313011965, 2035710060, 35491, 1, 67186), +(107479, 2313011965, 2035710060, 35490, 1, 67186), +(107479, 2313011965, 2035710060, 35489, 1, 67186), +(107479, 2313011965, 2035710060, 35488, 1, 67186), +(107479, 2313011965, 2035710060, 35487, 1, 67186), +(107479, 2313011965, 2035710060, 35486, 1, 67186), +(107479, 2313011965, 2035710060, 35485, 1, 67186), +(107479, 2313011965, 2035710060, 35484, 1, 67186), +(107479, 2313011965, 2035710060, 35483, 1, 67186), +(107479, 2313011965, 2035710060, 35482, 1, 67186), +(107479, 2313011965, 2035710060, 35481, 1, 67186), +(107479, 2313011965, 2035710060, 35480, 1, 67186), +(107479, 2313011965, 2035710060, 35479, 1, 67186), +(107479, 2313011965, 2035710060, 35478, 1, 67186), +(107479, 2313011965, 2035710060, 35477, 1, 67186), +(107479, 2313011965, 2035710060, 35476, 1, 67186), +(107479, 2313011965, 2035710060, 35475, 1, 67186), +(107479, 2313011965, 2035710060, 35474, 1, 67186), +(107479, 2313011965, 2035710060, 35473, 1, 67186), +(107479, 2313011965, 2035710060, 35472, 1, 67186), +(107479, 2313011965, 2035710060, 35471, 1, 67186), +(107479, 2313011965, 2035710060, 35470, 1, 67186), +(107479, 2313011965, 2035710060, 35469, 1, 67186), +(107479, 2313011965, 2035710060, 35468, 1, 67186), +(107479, 2313011965, 2035710060, 35467, 1, 67186), +(107479, 2313011965, 2035710060, 35466, 1, 67186), +(107479, 2313011965, 2035710060, 35465, 1, 67186), +(107479, 2313011965, 2035710060, 35464, 1, 67186), +(107479, 2313011965, 2035710060, 35463, 1, 67186), +(107479, 2313011965, 2035710060, 35462, 1, 67186), +(107479, 2313011965, 2035710060, 35461, 1, 67186), +(107479, 2313011965, 2035710060, 35460, 1, 67186), +(107479, 2313011965, 2035710060, 35459, 1, 67186), +(107479, 2313011965, 2035710060, 35458, 1, 67186), +(107479, 2313011965, 2035710060, 35457, 1, 67186), +(107479, 2313011965, 2035710060, 35456, 1, 67186), +(107479, 2313011965, 2035710060, 35455, 1, 67186), +(107479, 2313011965, 2035710060, 35454, 1, 67186), +(107479, 2313011965, 2035710060, 35453, 1, 67186), +(107479, 2313011965, 2035710060, 35452, 1, 67186), +(107479, 2313011965, 2035710060, 35451, 1, 67186), +(107479, 2313011965, 2035710060, 35450, 1, 67186), +(107479, 2313011965, 2035710060, 35449, 1, 67186), +(107479, 2313011965, 2035710060, 35448, 1, 67186), +(107479, 2313011965, 2035710060, 35447, 1, 67186), +(107479, 2313011965, 2035710060, 35446, 1, 67186), +(107479, 2313011965, 2035710060, 35445, 1, 67186), +(107479, 2313011965, 2035710060, 35444, 1, 67186), +(107479, 2313011965, 2035710060, 35443, 1, 67186), +(107479, 2313011965, 2035710060, 35442, 1, 67186), +(107479, 2313011965, 2035710060, 35441, 1, 67186), +(107479, 2313011965, 2035710060, 35440, 1, 67186), +(107479, 2313011965, 2035710060, 35439, 1, 67186), +(107479, 2313011965, 2035710060, 35438, 1, 67186), +(107479, 2313011965, 2035710060, 35435, 1, 67186), +(107479, 2313011965, 2035710060, 35434, 1, 67186), +(107479, 2313011965, 2035710060, 35418, 1, 67186), +(107479, 2313011965, 2035710060, 35373, 1, 67186), +(107479, 2313011965, 2035710060, 35371, 1, 67186), +(107479, 2313011965, 2035710060, 35370, 1, 67186), +(107479, 2313011965, 2035710060, 35368, 1, 67186), +(107479, 2313011965, 2035710060, 35367, 1, 67186), +(107479, 2313011965, 2035710060, 35366, 1, 67186), +(107479, 2313011965, 2035710060, 35361, 1, 67186), +(107479, 2313011965, 2035710060, 35360, 1, 67186), +(107479, 2313011965, 2035710060, 35357, 1, 67186), +(107479, 2313011965, 2035710060, 35344, 1, 67186), +(107479, 2313011965, 2035710060, 35343, 1, 67186), +(107479, 2313011965, 2035710060, 35342, 1, 67186), +(107479, 2313011965, 2035710060, 35341, 1, 67186), +(107479, 2313011965, 2035710060, 35340, 1, 67186), +(107479, 2313011965, 2035710060, 35339, 1, 67186), +(107479, 2313011965, 2035710060, 35338, 1, 67186), +(107479, 2313011965, 2035710060, 35337, 1, 67186), +(107479, 2313011965, 2035710060, 35336, 1, 67186), +(107479, 2313011965, 2035710060, 35328, 1, 67186), +(107479, 2313011965, 2035710060, 35327, 1, 67186), +(107479, 2313011965, 2035710060, 35326, 1, 67186), +(107479, 2313011965, 2035710060, 35325, 1, 67186), +(107479, 2313011965, 2035710060, 35324, 1, 67186), +(107479, 2313011965, 2035710060, 35319, 1, 67186), +(107479, 2313011965, 2035710060, 35317, 1, 67186), +(107479, 2313011965, 2035710060, 35316, 1, 67186), +(107479, 2313011965, 2035710060, 35315, 1, 67186), +(107479, 2313011965, 2035710060, 35314, 1, 67186), +(107479, 2313011965, 2035710060, 35312, 1, 67186), +(107479, 2313011965, 2035710060, 35311, 1, 67186), +(107479, 2313011965, 2035710060, 35309, 1, 67186), +(107479, 2313011965, 2035710060, 35274, 1, 67186), +(107479, 2313011965, 2035710060, 35273, 1, 67186), +(107479, 2313011965, 2035710060, 35272, 1, 67186), +(107479, 2313011965, 2035710060, 35132, 1, 67186), +(107479, 2313011965, 2035710060, 35131, 1, 67186), +(107479, 2313011965, 2035710060, 35106, 1, 67186), +(107479, 2313011965, 2035710060, 35070, 1, 67186), +(107479, 2313011965, 2035710060, 35069, 1, 67186), +(107479, 2313011965, 2035710060, 35068, 1, 67186), +(107479, 2313011965, 2035710060, 35067, 1, 67186), +(107479, 2313011965, 2035710060, 35041, 1, 67186), +(107479, 2313011965, 2035710060, 35040, 1, 67186), +(107479, 2313011965, 2035710060, 35038, 1, 67186), +(107479, 2313011965, 2035710060, 35037, 1, 67186), +(107479, 2313011965, 2035710060, 35036, 1, 67186), +(107479, 2313011965, 2035710060, 34902, 1, 67186), +(107479, 2313011965, 2035710060, 34901, 1, 67186), +(107479, 2313011965, 2035710060, 34900, 1, 67186), +(107479, 2313011965, 2035710060, 34847, 1, 67186), +(107479, 2313011965, 2035710060, 34846, 1, 67186), +(107479, 2313011965, 2035710060, 34845, 1, 67186), +(107479, 2313011965, 2035710060, 34844, 1, 67186), +(107479, 2313011965, 2035710060, 34555, 1, 67186), +(107479, 2313011965, 2035710060, 34498, 1, 67186), +(107479, 2313011965, 2035710060, 34497, 1, 67186), +(107479, 2313011965, 2035710060, 34496, 1, 67186), +(107479, 2313011965, 2035710060, 34474, 1, 67186), +(107479, 2313011965, 2035710060, 34456, 1, 67186), +(107479, 2313011965, 2035710060, 34450, 1, 67186), +(107479, 2313011965, 2035710060, 34428, 1, 67186), +(107479, 2313011965, 2035710060, 34426, 1, 67186), +(107479, 2313011965, 2035710060, 34424, 1, 67186), +(107479, 2313011965, 2035710060, 34423, 1, 67186), +(107479, 2313011965, 2035710060, 34422, 1, 67186), +(107479, 2313011965, 2035710060, 34243, 1, 67186), +(107479, 2313011965, 2035710060, 34242, 1, 67186), +(107479, 2313011965, 2035710060, 34001, 1, 67186), +(107479, 2313011965, 2035710060, 34000, 1, 67186), +(107479, 2313011965, 2035710060, 33990, 1, 67186), +(107479, 2313011965, 2035710060, 33989, 1, 67186), +(107479, 2313011965, 2035710060, 33983, 1, 67186), +(107479, 2313011965, 2035710060, 33982, 1, 67186), +(107479, 2313011965, 2035710060, 33981, 1, 67186), +(107479, 2313011965, 2035710060, 33975, 1, 67186), +(107479, 2313011965, 2035710060, 33924, 1, 67186), +(107479, 2313011965, 2035710060, 33742, 1, 67186), +(107479, 2313011965, 2035710060, 33741, 1, 67186), +(107479, 2313011965, 2035710060, 33740, 1, 67186), +(107479, 2313011965, 2035710060, 33739, 1, 67186), +(107479, 2313011965, 2035710060, 33738, 1, 67186), +(107479, 2313011965, 2035710060, 33737, 1, 67186), +(107479, 2313011965, 2035710060, 33640, 1, 67186), +(107479, 2313011965, 2035710060, 33639, 1, 67186), +(107479, 2313011965, 2035710060, 33638, 1, 67186), +(107479, 2313011965, 2035710060, 33637, 1, 67186), +(107479, 2313011965, 2035710060, 33635, 1, 67186), +(107479, 2313011965, 2035710060, 33634, 1, 67186), +(107479, 2313011965, 2575642838, 750, 1, 67186), +(107478, 4005815717, 3322146344, 841951, 1, 67186), +(107478, 4005815717, 3322146344, 841949, 1, 67186), +(107478, 4005815717, 3322146344, 841948, 1, 67186), +(107478, 4005815717, 3322146344, 841947, 1, 67186), +(107478, 4005815717, 3322146344, 841946, 1, 67186), +(107478, 4005815717, 3322146344, 841945, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107478, 4005815717, 3322146344, 841944, 1, 67186), +(107478, 4005815717, 3322146344, 841943, 1, 67186), +(107478, 4005815717, 3322146344, 814421, 1, 67186), +(107478, 4005815717, 3322146344, 814420, 1, 67186), +(107478, 4005815717, 3322146344, 796253, 1, 67186), +(107478, 4005815717, 3322146344, 796216, 1, 67186), +(107478, 4005815717, 4030871717, 1270869, 1, 67186), +(107478, 4005815717, 4030871717, 1270868, 1, 67186), +(107476, 3374394311, 3322146344, 796412, 1, 67186), +(107476, 3374394311, 3322146344, 795876, 1, 67186), +(107475, 3936921669, 3322146344, 784657, 1, 67186), +(107475, 3936921669, 3322146344, 783557, 1, 67186), +(107475, 3936921669, 3322146344, 783554, 1, 67186), +(107475, 3936921669, 3322146344, 777641, 1, 67186), +(107475, 3936921669, 4096770149, 245831, 1, 67186), +(107475, 3936921669, 1187407512, 1292124, 1, 67186), +(107475, 3936921669, 3776013982, 1292124, 1, 67186), +(107474, 3991713051, 3322146344, 819182, 1, 67186), +(107474, 3991713051, 3322146344, 819173, 1, 67186), +(107474, 3991713051, 3322146344, 798885, 1, 67186), +(107474, 3991713051, 3322146344, 798882, 1, 67186), +(107474, 3991713051, 1720692227, 234460, 2, 67186), +(107474, 3991713051, 1720692227, 227191, 2, 67186), +(107474, 3991713051, 1187407512, 1266413, 1, 67186), +(107474, 3991713051, 3776013982, 1266413, 1, 67186), +(107474, 3991713051, 1187407512, 1244345, 1, 67186), +(107474, 3991713051, 3776013982, 1244345, 1, 67186), +(107472, 2204399736, 1720692227, 234753, 1, 67186), +(107471, 3050787252, 2120822102, 446036, 1, 67186), +(107471, 3050787252, 2120822102, 446035, 1, 67186), +(107471, 3050787252, 2120822102, 446034, 1, 67186), +(107471, 3050787252, 2120822102, 397284, 1, 67186), +(107470, 878771184, 3322146344, 756188, 1, 67186), +(107470, 878771184, 4030871717, 1175511, 1, 67186), +(107470, 878771184, 4030871717, 1174064, 1, 67186), +(107470, 878771184, 4030871717, 1172673, 1, 67186), +(107469, 2266945957, 1163127287, 99962, 3, 67186), +(107463, 541402150, 261693969, 94920, 3, 67186), +(107463, 541402150, 986198281, 94920, 1, 67186), +(107461, 1980557708, 3386943305, 346295, 3, 67186), +(107461, 1980557708, 3386943305, 346294, 3, 67186), +(107461, 1980557708, 3386943305, 346293, 3, 67186), +(107461, 1980557708, 3386943305, 342294, 3, 67186), +(107461, 1980557708, 3386943305, 342251, 3, 67186), +(107461, 1980557708, 3386943305, 341981, 3, 67186), +(107461, 1980557708, 3386943305, 341980, 3, 67186), +(107461, 1980557708, 3386943305, 340578, 3, 67186), +(107461, 1980557708, 3386943305, 340566, 3, 67186), +(107461, 1980557708, 3386943305, 336496, 3, 67186), +(107461, 1980557708, 3386943305, 336485, 3, 67186), +(107461, 1980557708, 3386943305, 335700, 3, 67186), +(107461, 1980557708, 3386943305, 335617, 3, 67186), +(107461, 1980557708, 3386943305, 333741, 3, 67186), +(107461, 1980557708, 3386943305, 333453, 3, 67186), +(107459, 3951062300, 3388959798, 19277, 1, 67186), +(107459, 3951062300, 1059920561, 504, 1, 67186), +(107459, 3951062300, 312181299, 2020, 1, 67186), +(107459, 3951062300, 312181299, 2019, 1, 67186), +(107457, 1934335374, 1073915313, 209845, 1, 67186), +(107455, 2065030076, 3386943305, 347232, 3, 67186), +(107455, 2065030076, 3386943305, 347162, 3, 67186), +(107455, 2065030076, 3386943305, 347084, 3, 67186), +(107455, 2065030076, 3386943305, 346984, 3, 67186), +(107455, 2065030076, 3386943305, 346931, 3, 67186), +(107455, 2065030076, 3386943305, 340996, 3, 67186), +(107455, 2065030076, 3386943305, 333136, 3, 67186), +(107453, 2549350266, 3386943305, 335342, 3, 67186), +(107452, 3153721525, 945870922, 56832, 1, 67186), +(107452, 3153721525, 945870922, 56831, 1, 67186), +(107452, 3153721525, 945870922, 56830, 1, 67186), +(107452, 3153721525, 945870922, 56829, 1, 67186), +(107452, 3153721525, 945870922, 56828, 1, 67186), +(107452, 3153721525, 945870922, 56827, 1, 67186), +(107452, 3153721525, 945870922, 56826, 1, 67186), +(107452, 3153721525, 945870922, 56825, 1, 67186), +(107452, 3153721525, 945870922, 56824, 1, 67186), +(107452, 3153721525, 945870922, 56823, 1, 67186), +(107452, 3153721525, 945870922, 56822, 1, 67186), +(107452, 3153721525, 945870922, 56821, 1, 67186), +(107452, 3153721525, 945870922, 56820, 1, 67186), +(107452, 3153721525, 945870922, 56819, 1, 67186), +(107452, 3153721525, 945870922, 56818, 1, 67186), +(107452, 3153721525, 945870922, 56817, 1, 67186), +(107452, 3153721525, 945870922, 56816, 1, 67186), +(107452, 3153721525, 945870922, 56815, 1, 67186), +(107452, 3153721525, 945870922, 56814, 1, 67186), +(107452, 3153721525, 945870922, 56813, 1, 67186), +(107452, 3153721525, 945870922, 56812, 1, 67186), +(107452, 3153721525, 945870922, 56811, 1, 67186), +(107452, 3153721525, 945870922, 56810, 1, 67186), +(107452, 3153721525, 945870922, 56809, 1, 67186), +(107452, 3153721525, 945870922, 56808, 1, 67186), +(107452, 3153721525, 945870922, 56807, 1, 67186), +(107452, 3153721525, 945870922, 56806, 1, 67186), +(107452, 3153721525, 945870922, 56805, 1, 67186), +(107452, 3153721525, 945870922, 56804, 1, 67186), +(107452, 3153721525, 945870922, 56803, 1, 67186), +(107452, 3153721525, 945870922, 56802, 1, 67186), +(107452, 3153721525, 945870922, 56801, 1, 67186), +(107452, 3153721525, 945870922, 56800, 1, 67186), +(107452, 3153721525, 945870922, 56799, 1, 67186), +(107452, 3153721525, 945870922, 56798, 1, 67186), +(107452, 3153721525, 945870922, 56797, 1, 67186), +(107452, 3153721525, 945870922, 56796, 1, 67186), +(107452, 3153721525, 945870922, 56795, 1, 67186), +(107452, 3153721525, 945870922, 56794, 1, 67186), +(107452, 3153721525, 945870922, 56793, 1, 67186), +(107452, 3153721525, 945870922, 56792, 1, 67186), +(107452, 3153721525, 945870922, 56791, 1, 67186), +(107452, 3153721525, 945870922, 56790, 1, 67186), +(107452, 3153721525, 945870922, 56789, 1, 67186), +(107452, 3153721525, 945870922, 56788, 1, 67186), +(107452, 3153721525, 945870922, 56787, 1, 67186), +(107452, 3153721525, 945870922, 56786, 1, 67186), +(107452, 3153721525, 945870922, 56785, 1, 67186), +(107452, 3153721525, 945870922, 56784, 1, 67186), +(107452, 3153721525, 945870922, 56783, 1, 67186), +(107452, 3153721525, 945870922, 56782, 1, 67186), +(107452, 3153721525, 945870922, 56781, 1, 67186), +(107452, 3153721525, 945870922, 56780, 1, 67186), +(107452, 3153721525, 945870922, 56779, 1, 67186), +(107452, 3153721525, 945870922, 56778, 1, 67186), +(107452, 3153721525, 945870922, 56777, 1, 67186), +(107452, 3153721525, 945870922, 56776, 1, 67186), +(107452, 3153721525, 945870922, 56775, 1, 67186), +(107452, 3153721525, 945870922, 56774, 1, 67186), +(107452, 3153721525, 945870922, 56773, 1, 67186), +(107452, 3153721525, 945870922, 56772, 1, 67186), +(107452, 3153721525, 945870922, 56771, 1, 67186), +(107452, 3153721525, 945870922, 56770, 1, 67186), +(107452, 3153721525, 945870922, 56769, 1, 67186), +(107452, 3153721525, 945870922, 56768, 1, 67186), +(107452, 3153721525, 945870922, 56767, 1, 67186), +(107452, 3153721525, 945870922, 56766, 1, 67186), +(107452, 3153721525, 945870922, 56765, 1, 67186), +(107452, 3153721525, 275260266, 960, 1, 67186), +(107452, 3153721525, 275260266, 956, 2, 67186), +(107452, 3153721525, 2521502169, 720, 1, 67186), +(107449, 84251634, 3322146344, 815140, 1, 67186), +(107449, 84251634, 2466724645, 1521, 3, 67186), +(107449, 84251634, 3571931810, 40245, 3, 67186), +(107449, 84251634, 1225579890, 3965, 3, 67186), +(107447, 2626111210, 3322146344, 631726, 1, 67186), +(107447, 2626111210, 4030871717, 1029516, 1, 67186), +(107447, 2626111210, 4030871717, 997947, 1, 67186), +(107446, 4239397077, 3567803627, 25293, 1, 67186), +(107446, 4239397077, 178219711, 8975, 1, 67186), +(107446, 4239397077, 1163127287, 127784, 3, 67186), +(107446, 4239397077, 1720692227, 242668, 1, 67186), +(107446, 4239397077, 1187407512, 1231327, 1, 67186), +(107446, 4239397077, 3776013982, 1231327, 1, 67186), +(107446, 4239397077, 3386943305, 322554, 3, 67186), +(107445, 2281674311, 1163127287, 118682, 3, 67186), +(107444, 3480353244, 3571931810, 37982, 3, 67186), +(107443, 3076819656, 1163127287, 92081, 3, 67186), +(107442, 267909119, 1187407512, 436358, 1, 67186), +(107442, 267909119, 3776013982, 436358, 1, 67186), +(107441, 3429072022, 1187407512, 1292071, 1, 67186), +(107441, 3429072022, 3776013982, 1292071, 1, 67186), +(107440, 722642154, 3322146344, 813459, 1, 67186), +(107439, 1880592800, 2120822102, 445975, 1, 67186), +(107438, 1797494238, 492039028, 50318, 1, 67186), +(107437, 533300562, 312611497, 28227, 3, 67186), +(107437, 533300562, 312611497, 28211, 3, 67186), +(107437, 533300562, 312611497, 27935, 3, 67186), +(107437, 533300562, 312611497, 27658, 3, 67186), +(107437, 533300562, 312611497, 27645, 3, 67186), +(107437, 533300562, 312611497, 27644, 3, 67186), +(107436, 566009282, 1163127287, 118620, 3, 67186), +(107436, 566009282, 3322146344, 837256, 1, 67186), +(107436, 566009282, 3322146344, 809948, 1, 67186), +(107434, 2572245781, 4030871717, 1312065, 1, 67186), +(107434, 2572245781, 4030871717, 1311944, 1, 67186), +(107434, 2572245781, 4030871717, 1304833, 1, 67186), +(107434, 2572245781, 4030871717, 1290588, 1, 67186), +(107434, 2572245781, 4030871717, 1290587, 1, 67186), +(107434, 2572245781, 4030871717, 1290586, 1, 67186), +(107434, 2572245781, 4030871717, 1290519, 1, 67186), +(107434, 2572245781, 4030871717, 1290448, 1, 67186), +(107434, 2572245781, 4030871717, 1288417, 1, 67186), +(107434, 2572245781, 4030871717, 1288414, 1, 67186), +(107434, 2572245781, 4030871717, 1288412, 1, 67186), +(107434, 2572245781, 4030871717, 1279494, 1, 67186), +(107434, 2572245781, 4030871717, 1272084, 1, 67186), +(107434, 2572245781, 4030871717, 1261150, 1, 67186), +(107434, 2572245781, 4030871717, 1253558, 1, 67186), +(107433, 3492335291, 3386943305, 343649, 3, 67186), +(107433, 3492335291, 3386943305, 343137, 3, 67186), +(107433, 3492335291, 3386943305, 343130, 3, 67186), +(107433, 3492335291, 3386943305, 329244, 3, 67186), +(107433, 3492335291, 3386943305, 329223, 3, 67186), +(107433, 3492335291, 3386943305, 322248, 3, 67186), +(107433, 3492335291, 3386943305, 322247, 3, 67186), +(107432, 3559922142, 3359787322, 26196, 1, 67186), +(107432, 3559922142, 3359787322, 22368, 1, 67186), +(107430, 1444833089, 3266400455, 1570155, 1, 67186), +(107430, 1444833089, 3266400455, 1570154, 1, 67186), +(107430, 1444833089, 3266400455, 1570153, 1, 67186), +(107430, 1444833089, 3266400455, 1570152, 1, 67186), +(107430, 1444833089, 3266400455, 1570151, 1, 67186), +(107430, 1444833089, 3266400455, 1570150, 1, 67186), +(107430, 1444833089, 3266400455, 1570149, 1, 67186), +(107430, 1444833089, 3266400455, 1570148, 1, 67186), +(107430, 1444833089, 3266400455, 1570147, 1, 67186), +(107430, 1444833089, 3266400455, 1570146, 1, 67186), +(107430, 1444833089, 3266400455, 1570145, 1, 67186), +(107430, 1444833089, 3266400455, 1570144, 1, 67186), +(107430, 1444833089, 3266400455, 1570143, 1, 67186), +(107430, 1444833089, 3266400455, 1570142, 1, 67186), +(107430, 1444833089, 3266400455, 1570141, 1, 67186), +(107430, 1444833089, 3266400455, 1570140, 1, 67186), +(107430, 1444833089, 3266400455, 1570139, 1, 67186), +(107430, 1444833089, 3266400455, 1570138, 1, 67186), +(107430, 1444833089, 3232102598, 312954, 1, 67186), +(107430, 1444833089, 908293937, 349021, 1, 67186), +(107430, 1444833089, 3408032706, 12257, 1, 67186), +(107430, 1444833089, 1734738485, 9018, 1, 67186), +(107430, 1444833089, 3218799089, 144489, 1, 67186), +(107429, 4045717526, 3322146344, 828341, 1, 67186), +(107429, 4045717526, 3322146344, 828329, 1, 67186), +(107428, 3278220655, 3322146344, 655550, 1, 67186), +(107428, 3278220655, 3322146344, 647815, 1, 67186), +(107428, 3278220655, 3322146344, 647695, 1, 67186), +(107428, 3278220655, 3322146344, 635798, 1, 67186), +(107428, 3278220655, 3322146344, 219551, 1, 67186), +(107427, 1245051991, 4102286043, 239993, 1, 67186), +(107427, 1245051991, 3322146344, 833396, 1, 67186), +(107427, 1245051991, 2575642838, 255, 1, 67186), +(107424, 2262291725, 1163127287, 127766, 3, 67186), +(107424, 2262291725, 4030871717, 1293212, 1, 67186), +(107422, 3550671262, 1163127287, 114121, 3, 67186), +(107422, 3550671262, 1163127287, 114114, 3, 67186), +(107421, 635610182, 1163127287, 125710, 3, 67186), +(107421, 635610182, 3322146344, 803852, 1, 67186), +(107418, 3507792938, 666345498, 518545, 2, 67186), +(107418, 3507792938, 1163127287, 127771, 3, 67186), +(107418, 3507792938, 3322146344, 842175, 1, 67186), +(107418, 3507792938, 3322146344, 824098, 1, 67186), +(107418, 3507792938, 1720692227, 242642, 1, 67186), +(107418, 3507792938, 4030871717, 1316385, 1, 67186), +(107418, 3507792938, 4030871717, 1286706, 2, 67186), +(107418, 3507792938, 3689412649, 183982, 1, 67186), +(107418, 3507792938, 1187407512, 1294776, 1, 67186), +(107418, 3507792938, 3776013982, 1294776, 1, 67186), +(107418, 3507792938, 1187407512, 1273357, 1, 67186), +(107418, 3507792938, 3776013982, 1273357, 1, 67186), +(107418, 3507792938, 2120822102, 445968, 1, 67186), +(107418, 3507792938, 2120822102, 445967, 1, 67186), +(107418, 3507792938, 2120822102, 445966, 1, 67186), +(107418, 3507792938, 2120822102, 445965, 1, 67186); + +INSERT INTO `hotfix_data` (`Id`, `UniqueID`, `TableHash`, `RecordId`, `Status`, `VerifiedBuild`) VALUES +(107418, 3507792938, 2120822102, 427702, 1, 67186), +(107418, 3507792938, 2120822102, 427700, 1, 67186), +(107418, 3507792938, 2120822102, 427692, 1, 67186), +(107418, 3507792938, 2120822102, 427689, 1, 67186), +(107417, 2880515817, 4030871717, 1315315, 1, 67186), +(107417, 2880515817, 4030871717, 1314429, 1, 67186), +(107417, 2880515817, 4030871717, 1310393, 1, 67186), +(107417, 2880515817, 4030871717, 1310392, 1, 67186), +(107417, 2880515817, 4030871717, 1276211, 1, 67186), +(107417, 2880515817, 4030871717, 1276138, 1, 67186), +(107416, 3371478326, 4096770149, 244260, 1, 67186), +(107415, 1853405210, 4096770149, 219959, 1, 67186), +(107415, 1853405210, 4167587713, 4140, 1, 67186), +(107414, 3347580410, 4021368146, 7693, 1, 67186), +(107414, 3347580410, 2995956864, 133669, 1, 67186), +(107414, 3347580410, 3022256762, 1569, 1, 67186), +(107414, 3347580410, 1187407512, 1294727, 1, 67186), +(107414, 3347580410, 3776013982, 1294727, 1, 67186), +(107414, 3347580410, 1187407512, 1294726, 1, 67186), +(107414, 3347580410, 3776013982, 1294726, 1, 67186), +(107414, 3347580410, 1187407512, 1294720, 1, 67186), +(107414, 3347580410, 3776013982, 1294720, 1, 67186), +(107414, 3347580410, 1187407512, 1294703, 1, 67186), +(107414, 3347580410, 3776013982, 1294703, 1, 67186), +(107414, 3347580410, 1187407512, 1294669, 1, 67186), +(107414, 3347580410, 3776013982, 1294669, 1, 67186), +(107414, 3347580410, 1187407512, 1294633, 1, 67186), +(107414, 3347580410, 3776013982, 1294633, 1, 67186), +(107414, 3347580410, 1187407512, 1294563, 1, 67186), +(107414, 3347580410, 3776013982, 1294563, 1, 67186), +(107414, 3347580410, 1187407512, 1277795, 1, 67186), +(107414, 3347580410, 3776013982, 1277795, 1, 67186), +(107414, 3347580410, 1187407512, 1272179, 1, 67186), +(107414, 3347580410, 3776013982, 1272179, 1, 67186), +(107414, 3347580410, 1187407512, 1269655, 1, 67186), +(107414, 3347580410, 3776013982, 1269655, 1, 67186), +(107414, 3347580410, 1187407512, 1269654, 1, 67186), +(107414, 3347580410, 3776013982, 1269654, 1, 67186), +(107414, 3347580410, 1187407512, 1269650, 1, 67186), +(107414, 3347580410, 3776013982, 1269650, 1, 67186), +(107414, 3347580410, 1187407512, 1269641, 1, 67186), +(107414, 3347580410, 3776013982, 1269641, 1, 67186), +(107414, 3347580410, 1187407512, 1269640, 1, 67186), +(107414, 3347580410, 3776013982, 1269640, 1, 67186), +(107414, 3347580410, 1187407512, 1264545, 1, 67186), +(107414, 3347580410, 3776013982, 1264545, 1, 67186), +(107414, 3347580410, 1187407512, 1259647, 1, 67186), +(107414, 3347580410, 3776013982, 1259647, 1, 67186), +(107414, 3347580410, 1187407512, 1258362, 1, 67186), +(107414, 3347580410, 3776013982, 1258362, 1, 67186), +(107414, 3347580410, 1187407512, 1256009, 1, 67186), +(107414, 3347580410, 3776013982, 1256009, 1, 67186), +(107414, 3347580410, 1187407512, 1251813, 1, 67186), +(107414, 3347580410, 3776013982, 1251813, 1, 67186), +(107414, 3347580410, 1010104591, 22988, 1, 67186), +(107414, 3347580410, 1010104591, 22984, 1, 67186), +(107414, 3347580410, 1010104591, 21036, 1, 67186), +(107414, 3347580410, 1010104591, 21034, 1, 67186), +(107414, 3347580410, 1010104591, 21033, 1, 67186), +(107414, 3347580410, 261693969, 94383, 3, 67186), +(107414, 3347580410, 986198281, 94383, 1, 67186), +(107414, 3347580410, 261693969, 93719, 3, 67186), +(107414, 3347580410, 986198281, 93719, 1, 67186), +(107414, 3347580410, 261693969, 91044, 3, 67186), +(107414, 3347580410, 986198281, 91044, 1, 67186), +(107414, 3347580410, 261693969, 90818, 3, 67186), +(107414, 3347580410, 986198281, 90818, 1, 67186), +(107414, 3347580410, 261693969, 89324, 3, 67186), +(107414, 3347580410, 986198281, 89324, 1, 67186), +(107414, 3347580410, 261693969, 89323, 3, 67186), +(107414, 3347580410, 986198281, 89323, 1, 67186), +(107414, 3347580410, 261693969, 89012, 3, 67186), +(107414, 3347580410, 986198281, 89012, 1, 67186), +(107414, 3347580410, 261693969, 87457, 3, 67186), +(107414, 3347580410, 986198281, 87457, 1, 67186), +(107414, 3347580410, 261693969, 86903, 1, 67186), +(107414, 3347580410, 986198281, 86903, 1, 67186), +(107414, 3347580410, 261693969, 86827, 1, 67186), +(107414, 3347580410, 986198281, 86827, 1, 67186), +(107414, 3347580410, 261693969, 86733, 3, 67186), +(107414, 3347580410, 986198281, 86733, 1, 67186), +(107414, 3347580410, 261693969, 82483, 3, 67186), +(107414, 3347580410, 986198281, 82483, 1, 67186), +(107414, 3347580410, 3851993221, 639, 1, 67186), +(107414, 3347580410, 3851993221, 638, 1, 67186), +(107414, 3347580410, 3851993221, 637, 1, 67186), +(107414, 3347580410, 3205218938, 58731, 1, 67186), +(107414, 3347580410, 3205218938, 58259, 1, 67186), +(107414, 3347580410, 3205218938, 58258, 1, 67186), +(107414, 3347580410, 3205218938, 55299, 1, 67186), +(107414, 3347580410, 3205218938, 49471, 1, 67186), +(107413, 1233050135, 3689412649, 155980, 1, 67186), +(107411, 3953465060, 492039028, 52287, 1, 67186), +(107411, 3953465060, 666345498, 518550, 1, 67186), +(107411, 3953465060, 666345498, 518549, 1, 67186), +(107411, 3953465060, 666345498, 518548, 1, 67186), +(107411, 3953465060, 666345498, 518547, 1, 67186), +(107411, 3953465060, 666345498, 518546, 1, 67186), +(107411, 3953465060, 666345498, 518529, 1, 67186), +(107411, 3953465060, 3322146344, 842178, 1, 67186), +(107411, 3953465060, 3322146344, 842158, 1, 67186), +(107411, 3953465060, 4030871717, 1316388, 1, 67186), +(107411, 3953465060, 4030871717, 1316352, 1, 67186), +(107411, 3953465060, 3689412649, 183974, 3, 67186), +(107411, 3953465060, 1187407512, 1294779, 1, 67186), +(107411, 3953465060, 3776013982, 1294779, 1, 67186), +(107411, 3953465060, 1187407512, 1294759, 1, 67186), +(107411, 3953465060, 3776013982, 1294759, 1, 67186), +(107411, 3953465060, 3108775943, 156536, 1, 67186), +(107411, 3953465060, 3386291891, 250316, 3, 67186), +(107411, 3953465060, 3386291891, 250314, 3, 67186), +(107410, 2396809977, 3386943305, 347263, 3, 67186), +(107410, 2396809977, 3386943305, 341300, 3, 67186), +(107406, 2606685284, 1344507586, 255627, 1, 67186), +(107406, 2606685284, 428746933, 255627, 1, 67186), +(107406, 2606685284, 2442913102, 255627, 1, 67186), +(107406, 2606685284, 3465080266, 255627, 3, 67186), +(107406, 2606685284, 3037505077, 255627, 3, 67186), +(107406, 2606685284, 1417785224, 255627, 3, 67186), +(107405, 1429735325, 4030871717, 1308161, 1, 67186), +(107405, 1429735325, 4030871717, 1263436, 1, 67186), +(107404, 1133848626, 2921112328, 568649, 1, 67186), +(107404, 1133848626, 3108775943, 156537, 1, 67186), +(107402, 1570777088, 1163127287, 127768, 2, 67186), +(107402, 1570777088, 1163127287, 127767, 2, 67186), +(107402, 1570777088, 3322146344, 816432, 3, 67186), +(107401, 854129283, 3764692828, 352061, 1, 67186), +(107401, 854129283, 3764692828, 350151, 1, 67186), +(107401, 854129283, 3322146344, 842150, 1, 67186), +(107401, 854129283, 4030871717, 1316338, 1, 67186), +(107401, 854129283, 4030871717, 1316337, 1, 67186), +(107401, 854129283, 4030871717, 1316336, 1, 67186), +(107401, 854129283, 4030871717, 1316335, 1, 67186), +(107401, 854129283, 4030871717, 1316334, 1, 67186), +(107401, 854129283, 4030871717, 1316333, 1, 67186), +(107401, 854129283, 4030871717, 1316332, 1, 67186), +(107401, 854129283, 4030871717, 1316331, 1, 67186), +(107401, 854129283, 1187407512, 1294752, 1, 67186), +(107401, 854129283, 3776013982, 1294752, 1, 67186), +(107401, 854129283, 1187407512, 1284994, 1, 67186), +(107401, 854129283, 3776013982, 1284994, 1, 67186), +(107386, 3187629810, 356071576, 5646, 1, 67186), +(107386, 3187629810, 4030871717, 1291186, 2, 67186), +(107386, 3187629810, 3108775943, 151323, 3, 67186), +(107386, 3187629810, 1344507586, 266969, 1, 67186), +(107386, 3187629810, 428746933, 266969, 3, 67186), +(107386, 3187629810, 2442913102, 266969, 1, 67186), +(107386, 3187629810, 3465080266, 266969, 3, 67186), +(107386, 3187629810, 3037505077, 266969, 3, 67186), +(107386, 3187629810, 1417785224, 266969, 3, 67186), +(107386, 3187629810, 1344507586, 253582, 1, 67186), +(107386, 3187629810, 428746933, 253582, 1, 67186), +(107386, 3187629810, 2442913102, 253582, 1, 67186), +(107386, 3187629810, 3465080266, 253582, 3, 67186), +(107386, 3187629810, 3037505077, 253582, 3, 67186), +(107386, 3187629810, 1417785224, 253582, 3, 67186), +(107356, 3492947572, 1163127287, 127823, 3, 67186), +(107356, 3492947572, 1163127287, 124258, 3, 67186), +(107327, 318888005, 1163127287, 127719, 3, 67186), +(107327, 318888005, 3826950733, 88, 1, 67186), +(107327, 318888005, 3108775943, 156471, 3, 67186), +(107327, 318888005, 2120822102, 445862, 1, 67186), +(107327, 318888005, 2120822102, 445455, 1, 67186), +(107327, 318888005, 2120822102, 445454, 1, 67186), +(107327, 318888005, 2120822102, 445453, 1, 67186), +(107327, 318888005, 3821385681, 659, 1, 67186), +(107273, 1214015180, 2202435563, 1295414, 1, 67186), +(107273, 1214015180, 2202435563, 1295413, 1, 67186), +(107273, 1214015180, 2202435563, 1295412, 1, 67186), +(107273, 1214015180, 2202435563, 1295411, 1, 67186), +(107273, 1214015180, 2202435563, 1295410, 1, 67186), +(107273, 1214015180, 2202435563, 1295409, 1, 67186), +(107273, 1214015180, 2202435563, 1295408, 1, 67186), +(107273, 1214015180, 2202435563, 1295407, 1, 67186), +(107273, 1214015180, 2202435563, 1295406, 1, 67186), +(107273, 1214015180, 2202435563, 1295405, 1, 67186), +(107273, 1214015180, 2202435563, 1295404, 1, 67186), +(107273, 1214015180, 2202435563, 1295403, 1, 67186), +(107273, 1214015180, 2202435563, 1290745, 2, 67186), +(107273, 1214015180, 2202435563, 1290744, 2, 67186), +(107273, 1214015180, 2202435563, 1290743, 2, 67186), +(107273, 1214015180, 2202435563, 1290742, 2, 67186), +(107273, 1214015180, 2202435563, 1290741, 2, 67186), +(107273, 1214015180, 2202435563, 1290740, 2, 67186), +(107273, 1214015180, 2202435563, 1290739, 2, 67186), +(107273, 1214015180, 2202435563, 1290738, 2, 67186), +(107273, 1214015180, 2202435563, 1290737, 2, 67186), +(107273, 1214015180, 2202435563, 1290736, 2, 67186), +(107273, 1214015180, 2202435563, 1290735, 2, 67186), +(107273, 1214015180, 2202435563, 1290734, 2, 67186), +(107273, 1214015180, 2921112328, 574495, 1, 67186), +(107273, 1214015180, 2921112328, 572996, 2, 67186), +(107272, 4206018531, 3322146344, 835750, 1, 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='enUS') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='enUS') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='enUS') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='enUS') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='enUS') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='enUS') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='enUS') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='enUS') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='enUS') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='enUS') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='enUS') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='enUS') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='enUS') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='enUS') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='enUS') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='enUS') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='enUS') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='enUS') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='enUS') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='enUS') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='enUS') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='enUS') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='enUS') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='enUS') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='enUS') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='enUS') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='enUS') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='enUS') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='enUS') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='enUS') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='enUS') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='enUS') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='enUS') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='enUS') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='enUS') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='enUS') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='enUS') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='enUS') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='enUS') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='enUS') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='enUS') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='enUS') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='enUS') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='enUS') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='enUS') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='enUS') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='enUS') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='enUS') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='enUS') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='enUS') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='enUS') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='enUS') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='enUS') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='enUS') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='enUS') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='enUS') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='enUS') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='enUS') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='enUS') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='enUS') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='enUS') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='enUS') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='enUS') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='enUS') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='enUS') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='enUS') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='enUS') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='enUS') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='enUS') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='enUS') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='enUS') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='enUS') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='enUS') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='enUS') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='enUS') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='enUS') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='enUS') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='enUS') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='enUS') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='enUS') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='enUS') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='enUS') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='enUS') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='enUS') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='enUS') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='enUS') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='enUS') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='enUS') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='enUS') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='enUS') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='enUS') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='enUS') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='enUS') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='enUS') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='enUS') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='enUS') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='enUS') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='enUS') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='enUS') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='enUS') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='enUS') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='enUS') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='enUS') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='enUS') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='enUS') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='enUS') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='enUS') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='enUS') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='enUS') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='enUS') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='enUS') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='enUS') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='enUS') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='enUS') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='enUS') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='enUS') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='enUS') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='enUS') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='enUS') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='enUS') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='enUS') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='enUS') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='enUS') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='enUS') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='enUS') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='enUS') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='enUS') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='enUS') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='enUS') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='enUS') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='enUS') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='enUS') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='enUS') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='enUS') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='enUS') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='enUS') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='enUS') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='enUS') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='enUS') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='enUS') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='enUS') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='enUS') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='enUS') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='enUS') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='enUS') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='enUS') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='enUS') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='enUS') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='enUS') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='enUS'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'enUS', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'enUS', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'enUS', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'enUS', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'enUS', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'enUS', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'enUS', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'enUS', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'enUS', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'enUS', 0x000000, 67186), +(2534422486, 3918, 'enUS', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'enUS', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'enUS', 0x00243F63325B46656C204465766173746174696F6E5D5B566F6964205261795D2064616D61676520696E6372656173656420627920247331252E0D0A0D0A243F63325B46656C204465766173746174696F6E5D5B46756C6C79206368616E6E656C696E6720566F6964205261795D2067656E65726174657320243F63325B24733420536F756C20467261676D656E7473206F76657220697473206475726174696F6E5D5B24733320244C737461636B3A737461636B733B206F6620566F696466616C6C5D2E0000, 67186), +(3776013982, 1270444, 'enUS', 0x00536F756C20436C6561766520616E642053706972697420426F6D6220686176652061206368616E63652070657220736F756C20667261676D656E7420636F6E73756D656420746F206772616E7420556E746574686572656420526167652C20616C6C6F77696E67204D6574616D6F7270686F73697320746F206265206361737420776974686F757420696E63757272696E672069747320636F6F6C646F776E20616E64206C617374696E6720247331207365632E0000, 67186), +(3776013982, 441587, 'enUS', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'enUS', 0x0041637469766174696E6720243F613133373033365B416472656E616C696E6520527573685D5B536861646F7720426C616465735D2063726561746573206120636C6F7564206F6620736D6F6B6520666F722024343431353837642C20616C6C6F77696E672061747461636B732066726F6D2077697468696E2074686520636C6F756420746F206170706C792046617A65642C20737461636B696E6720757020746F20243434313634306D32206164646974696F6E616C20244C74696D653A74696D65733B2E0D0A0D0A45666665637420706572736973747320666F7220243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D20736563206166746572206C656176696E672074686520636C6F75642E0000, 67186), +(3893700160, 445, 'enUS', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'enUS', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'enUS', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'enUS', 0x0052656761696E2061636365737320746F2043616C6C205065742E0D0A0D0A5768696C65206F7574646F6F72732C20796F757220706574206465616C73202473312520696E637265617365642064616D61676520616E642074616B6573202473322520726564756365642064616D6167652E0000, 67186), +(3776013982, 1223323, 'enUS', 0x0052656761696E2061636365737320746F2043616C6C205065742E0D0A0D0A5768696C65206F7574646F6F72732C20796F757220706574206465616C73202473312520696E637265617365642064616D61676520616E642074616B6573202473322520726564756365642064616D6167652E0000, 67186), +(3468628616, 1818, 'enUS', 0x4461726B204F62656C69736B00596F752063616E206E6F772070757263686173652061204461726B204F62656C69736B2066726F6D20526165276E6120696E2053696C7665726D6F6F6E20436974792E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'enUS', 0x4461726B204F62656C69736B00596F752063616E206E6F772070757263686173652061204461726B204F62656C69736B2066726F6D20526165276E6120696E2053696C7665726D6F6F6E20436974792E004461726B204F62656C69736B002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'enUS', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'enUS', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'enUS', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'enUS', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'enUS', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'enUS', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'enUS', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'enUS', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'enUS', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'enUS', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'enUS', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'enUS', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'enUS', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'enUS', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'enUS', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'enUS', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'enUS', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'enUS', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'enUS', 0x000000, 67186), +(3037505077, 245345, 'enUS', 0x5000, 67186), +(3776013982, 1270491, 'enUS', 0x000041747461636B20737065656420696E63726561736564206279202477312500, 67186), +(3776013982, 1241077, 'enUS', 0x0048617374656E7320796F757220506C6167756573206F6E207468652074617267657420627920247331252E00244061757261636173746572277320706C6167756573206465616C2074686569722064616D6167652024773125206661737465722E00, 67186), +(3776013982, 458128, 'enUS', 0x00536C6173686573207468726F75676820616C6C20656E656D6965732077697468696E202461312079647320696E2066726F6E74206F6620796F752C206465616C696E672024733120536861646F772064616D61676520616E642068617374656E696E6720616C6C206F6620796F757220706C6167756573206F6E20746172676574732068697420746F206465616C2064616D6167652024313234313037377331252066617374657220666F72202431323431303737642E0000, 67186), +(3899321669, 5919, 'enUS', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'enUS', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'enUS', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'enUS', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'enUS', 0x426C61636B005265696E666F72636520796F7572207363616C65732C207265647563696E672064616D6167652074616B656E206279202473312520243F733337343334385B616E642063617573696E6720796F7520746F206265206865616C6564206F76657220243337343334396420657175616C20746F207468652064616D6167652069742070726576656E7465645D5B5D2E204C617374732024642E0044616D6167652074616B656E20726564756365642062792024773125243F2465345B20616E64206865616C696E6720657175616C20746F2064616D6167652070726576656E7465642E5D5B2E5D243F2477323D315B0D0A496D6D756E6520746F20696E7465727275707420616E642073696C656E636520656666656374732E5D5B5D00, 67186), +(4033975491, 589353, 'enUS', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'enUS', 0x5076502054616C656E740024407370656C6C6465736333353333313300496D6D756E6520746F206D61676963616C2064616D61676520616E64206861726D66756C20656666656374732E00, 67186), +(3776013982, 125174, 'enUS', 0x0024407370656C6C6465736331323234373000416C6C2064616D6167652074616B656E206973206162736F726265642E0D0A24313232343730733425206F662064616D616765206162736F72626564206973207265646972656374656420746F207468652076696374696D206166666C696374656420627920546F756368206F66204B61726D612E00, 67186), +(3776013982, 122470, 'enUS', 0x004162736F72627320616C6C2064616D6167652074616B656E20666F722024642C20757020746F2024733325206F6620796F7572206D6178696D756D206865616C74682C20616E64207265646972656374732024733425206F66207468617420616D6F756E7420746F2074686520656E656D7920746172676574206173204E61747572652064616D616765206F7665722024313234323830642E0044616D616765206465616C7420746F20746865204D6F6E6B206973207265646972656374656420746F20796F75206173204E61747572652064616D616765206F7665722024313234323830642E00, 67186), +(3776013982, 23920, 'enUS', 0x00526169736520796F757220243F63335B736869656C645D5B776561706F6E5D2C207265666C656374696E6720243F613231333931355B746865206E65787420243231333931357333207370656C6C7320636173745D5B746865206669727374207370656C6C20636173745D206F6E20796F7520616E64207265647563696E67206D616769632064616D61676520796F752074616B65206279202433383533393173312520666F722024642E00243F613138383637325B5265666C656374696E6720616C6C207370656C6C732063617374206F6E20796F752E5D5B5265666C656374732061207370656C6C2063617374206F6E20796F752E5D00, 67186), +(1274215428, 190484, 'enUS', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'enUS', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'enUS', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'enUS', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'enUS', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'enUS', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'enUS', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'enUS', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'enUS', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'enUS', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'enUS', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'enUS', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'enUS', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'enUS', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'enUS', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'enUS', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'enUS', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'enUS', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'enUS', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'enUS', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'enUS', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'enUS', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'enUS', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'enUS', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'enUS', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'enUS', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'enUS', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'enUS', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'enUS', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'enUS', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'enUS', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'enUS', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'enUS', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'enUS', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'enUS', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'enUS', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'enUS', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'enUS', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'enUS', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'enUS', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'enUS', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'enUS', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'enUS', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'enUS', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'enUS', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'enUS', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'enUS', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'enUS', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'enUS', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'enUS', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'enUS', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'enUS', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'enUS', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'enUS', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'enUS', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'enUS', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'enUS', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'enUS', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'enUS', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'enUS', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'enUS', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'enUS', 0x005468726F77207468652066697368206261636B20696E746F2074686520776174657220746F206761696E20247332204D69646E696768742046697368696E6720666F722024642E0D0A0D0A5468726F77696E67206D756C7469706C6520666973682063616E20657874656E642074686973206275666620757020746F20244D31206D696E2E005175656C275468616C61732046697368696E6720696E63726561736564206279202477322E00, 67186), +(3776013982, 1235216, 'enUS', 0x005468726F7720746865206372656174757265206261636B20696E746F2074686520776174657220746F206761696E20247332204D69646E696768742050657263657074696F6E20666F722024642E0D0A0D0A5468726F77696E67206D756C7469706C65206372656174757265732063616E20657874656E642074686973206275666620757020746F20244D31206D696E2E004D69646E696768742050657263657074696F6E20696E63726561736564206279202477322E00, 67186), +(3776013982, 1225245, 'enUS', 0x0041206D697874757265206F66206372696D736F6E20616E6420636572756C65616E207363616C65732061646F726E732074686973206E696D626C6520666973682E204120636F6D6D6F6E206669736820696E2045766572736F6E6720576F6F64732C207468652053696E27646F72656920537761726D65722074726176656C7320616E6420696E746572616374732077697468207468652077617465727320696E206163636F7264616E636520746F20746865207363686F6F6C206974277320612070617274206F662E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A417265617320796F752063616E2066696E64207468697320666973683A7C520D0A2D2045766572736F6E6720576F6F64730D0A2D205A756C27416D616E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A46697368696E6720506F6F6C733A7C720D0A2D20427562626C696E6720426C6F6F6D0D0A2D2053756E77656C6C20537761726D0D0A2D205375726661636520526970706C650000, 67186), +(778162198, 397, 'enUS', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'enUS', 0x0100, 67186), +(3037505077, 243302, 'enUS', 0x0100, 67186), +(261693969, 95549, 'enUS', 0xFFFFFFFFFFFFFFFF52616973696E67204D61676963616C20416C61726D730000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'enUS', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'enUS', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'enUS', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'enUS', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'enUS', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'enUS', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'enUS', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'enUS', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'enUS', 0x416E676C65722053636F72653A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'enUS', 0x436F6D706C657465007C634646316566663030416279737320416E676C65727320436F6D706C657465642100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'enUS', 0xFFFFFFFFFFFFFFFF4A6F696E696E672074686520416279737320416E676C6572730000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'enUS', 0x4465657020446976657200436F6D706C65746520416279737320416E676C6572206576656E747320696E205A756C27416D616E2E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'enUS', 0x4465657020446976657200436F6D706C65746520416279737320416E676C6572206576656E747320696E205A756C27416D616E2E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'enUS', 0x416279737320416E676C65727300537065616B20776974682044657074686469766572204A656A7520746F206469766520776974682074686520416279737320416E676C6572732E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'enUS', 0x456C6974652044616E67657273005261726520656C69746520656E656D696573206E6F7720737061776E20696E2052697475616C20536974657320616E642063616E20626520646566656174656420666F72206164646974696F6E616C2072697475616C2073706F696C732E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'enUS', 0x456C6974652044616E67657273005261726520656C69746520656E656D696573206E6F7720737061776E20696E2052697475616C20536974657320616E642063616E20626520646566656174656420666F72206164646974696F6E616C2072697475616C2073706F696C732E004F75746C79696E672044616E67657273204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'enUS', 0x436F72727570746564205472616E73706F727400596F752063616E206E6F772070757263686173652074686520566F69642D546F7563686564204861776B737472696465722066726F6D205365726765616E7420566F726E696E20696E2053696C7665726D6F6F6E20436974792E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'enUS', 0x436F72727570746564205472616E73706F727400596F752063616E206E6F772070757263686173652074686520566F69642D546F7563686564204861776B737472696465722066726F6D205365726765616E7420566F726E696E20696E2053696C7665726D6F6F6E20436974792E00436F72727570746564205472616E73706F7274002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'enUS', 0x536872696E6573206F6620506F776572204949004E6577206D61676963616C206275666620736872696E65732063616E20626520666F756E6420696E2052697475616C2053697465732E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'enUS', 0x536872696E6573206F6620506F776572204949004E6577206D61676963616C206275666620736872696E65732063616E20626520666F756E6420696E2052697475616C2053697465732E00536872696E6573206F6620506F776572204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'enUS', 0x5265766572656420547265617375726573004C61726765207472656173757265732063616E206E6F7720626520666F756E6420696E2052697475616C20536974657320666F72206164646974696F6E616C2073706F696C732E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'enUS', 0x5265766572656420547265617375726573004C61726765207472656173757265732063616E206E6F7720626520666F756E6420696E2052697475616C20536974657320666F72206164646974696F6E616C2073706F696C732E005265766572656420547265617375726573002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'enUS', 0x52697475616C204D61676963202D204F7262732041706C656E747900596F75206861766520616E20696E63726561736564206368616E6365206F66206120526567656E65726174696F6E204F726220737061776E696E672066726F6D206B696C6C7320696E2052697475616C2053697465732E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'enUS', 0x52697475616C204D61676963202D204F7262732041706C656E747900596F75206861766520616E20696E63726561736564206368616E6365206F66206120526567656E65726174696F6E204F726220737061776E696E672066726F6D206B696C6C7320696E2052697475616C2053697465732E0052697475616C204D61676963202D204865616C696E6720494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'enUS', 0x436F72727570746564204D656E61676572696500596F752063616E206E6F772070757263686173652073656C65637420706574732066726F6D205365726765616E7420566F726E696E20696E2053696C7665726D6F6F6E20436974792E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'enUS', 0x436F72727570746564204D656E61676572696500596F752063616E206E6F772070757263686173652073656C65637420706574732066726F6D205365726765616E7420566F726E696E20696E2053696C7665726D6F6F6E20436974792E00436F72727570746564204D656E616765726965002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'enUS', 0x536872696E6573206F6620506F77657200596F752063616E206E6F772066696E64206D61676963616C206275666620736872696E657320696E2052697475616C2053697465732E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'enUS', 0x536872696E6573206F6620506F77657200596F752063616E206E6F772066696E64206D61676963616C206275666620736872696E657320696E2052697475616C2053697465732E00536872696E6573206F6620506F7765722049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'enUS', 0x4164646974696F6E616C2053706F696C7300596F752063616E206E6F772066696E64206164646974696F6E616C20736D616C6C2074726561737572657320696E2052697475616C2053697465732E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'enUS', 0x4164646974696F6E616C2053706F696C7300596F752063616E206E6F772066696E64206164646974696F6E616C20736D616C6C2074726561737572657320696E2052697475616C2053697465732E004C6F6F736520547265617375726573204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'enUS', 0x4F75746C79696E672044616E67657273005261726520656E656D696573206E6F7720737061776E20696E2052697475616C20536974657320746861742063616E20626520646566656174656420666F72206164646974696F6E616C2072697475616C2073706F696C732E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'enUS', 0x4F75746C79696E672044616E67657273005261726520656E656D696573206E6F7720737061776E20696E2052697475616C20536974657320746861742063616E20626520646566656174656420666F72206164646974696F6E616C2072697475616C2073706F696C732E004F75746C79696E672044616E676572732049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'enUS', 0x52697475616C204D61676963202D204F726220506F74656E637900526567656E65726174696F6E204F7262206865616C696E6720696E6372656173656420627920313030252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'enUS', 0x52697475616C204D61676963202D204F726220506F74656E637900526567656E65726174696F6E204F7262206865616C696E6720696E6372656173656420627920313030252E0052697475616C204D61676963202D204865616C696E67204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'enUS', 0x52697475616C204465636F7200596F75206D617920707572636861736520766F69642D7468656D6564206465736B206163636573736F726965732066726F6D2052616527616E6120696E2053696C7665726D6F6F6E20436974792E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'enUS', 0x52697475616C204465636F7200596F75206D617920707572636861736520766F69642D7468656D6564206465736B206163636573736F726965732066726F6D2052616527616E6120696E2053696C7665726D6F6F6E20436974792E0052697475616C20486F6D65204675726E697368696E6773002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'enUS', 0x52697475616C2054726561737572657300536D616C6C207472656173757265732063616E20626520666F756E642061726F756E642052697475616C2053697465732E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'enUS', 0x52697475616C2054726561737572657300536D616C6C207472656173757265732063616E20626520666F756E642061726F756E642052697475616C2053697465732E004C6F6F7365205472656173757265732049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'enUS', 0x52697475616C204D61676963202D20526567656E65726174696F6E204F72627300526567656E65726174696F6E204F726273206D616E696665737420696E2052697475616C205369746573206865616C696E6720796F7520666F7220313525206F6620796F7572206865616C74682E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'enUS', 0x52697475616C204D61676963202D20526567656E65726174696F6E204F72627300526567656E65726174696F6E204F726273206D616E696665737420696E2052697475616C205369746573206865616C696E6720796F7520666F7220313525206F6620796F7572206865616C74682E0052697475616C204D61676963202D204865616C696E672049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'enUS', 0x4D656164657279204F636872652057696E646F7700000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'enUS', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'enUS', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'enUS', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'enUS', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'enUS', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'enUS', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'enUS', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'enUS', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'enUS', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'enUS', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'enUS', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'enUS', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'enUS', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'enUS', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'enUS', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'enUS', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'enUS', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'enUS', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'enUS', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'enUS', 0x004C696E646F726D6920686967686C69676874732073656C656374206E6F6E2D626F737320656E656D6965732E20446566656174696E6720616C6C20686967686C69676874656420656E656D6965732077696C6C20636F6D706C6574652074686520656E656D7920666F7263657320726571756972656D656E742E00446566656174696E6720616C6C20686967686C69676874656420656E656D6965732077696C6C20636F6D706C6574652074686520656E656D7920666F7263657320726571756972656D656E742E00, 67186), +(3776013982, 1278156, 'enUS', 0x004C696E646F726D6920686967686C696768747320616E64207765616B656E732073656C656374206E6F6E2D626F737320656E656D69657320616E642070726576656E747320706C61796572206465617468732066726F6D207265647563696E672074696D652072656D61696E696E672E0D0A0D0A446566656174696E6720616C6C20686967686C69676874656420656E656D6965732077696C6C20636F6D706C6574652074686520656E656D7920666F7263657320726571756972656D656E742E004865616C7468207265647563656420627920247331252E0D0A44616D61676520646F6E65207265647563656420627920247332252E00, 67186), +(368401261, 7367, 'enUS', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'enUS', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'enUS', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'enUS', 0xB2790000, 67186), +(3495286709, 24475, 'enUS', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'enUS', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'enUS', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'enUS', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'enUS', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'enUS', 0x000000, 67186), +(3247720076, 42450, 'enUS', 0x041E000000, 67186), +(3247720076, 42449, 'enUS', 0x041E000000, 67186), +(3247720076, 42448, 'enUS', 0x04BE000000, 67186), +(3247720076, 42447, 'enUS', 0x04BE000000, 67186), +(3247720076, 42446, 'enUS', 0x0700000000, 67186), +(3247720076, 42445, 'enUS', 0x0100000000, 67186), +(3247720076, 40690, 'enUS', 0x0100000000, 67186), +(2014779773, 207, 'enUS', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'enUS', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'enUS', 0x0024407370656C6C6465736333393032353900416C6C2064616D61676520646F6E6520696E6372656173656420627920247331252E00, 67186), +(3776013982, 390260, 'enUS', 0x0024407370656C6C6465736333393032353900596F757220243F733230373334395B4461726B20417262697465725D5B476172676F796C655D20616E642041726D79206F662074686520446561642067686F756C73206465616C202433393032363473312520696E637265617365642064616D6167652E00, 67186), +(261693969, 95304, 'enUS', 0xFFFFFFFFFFFFFFFF4E6562756C6F757320566F6964636F7265733A205665746572616E204461776E63726573740000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'enUS', 0xFFFFFFFFFFFFFFFF4E6562756C6F757320566F6964636F7265733A20566F69646C69676874204D61726C0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'enUS', 0xFFFFFFFFFFFFFFFF4E6562756C6F757320566F6964636F7265733A20476F6C640000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'enUS', 0x0000000091000000, 67186), +(1673391669, 145, 'enUS', 0x8E000000, 67186), +(2791084701, 142, 'enUS', 0x32DC0600, 67186), +(3386943305, 340484, 'enUS', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'enUS', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'enUS', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'enUS', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'enUS', 0x4465636F72204475656C00506C6179204869646520616E64205365656B2077697468204675726E6974757265002D205265717569726573204D69646E696768742C206D696E206C6576656C2031302E0D0A2D2043617375616C2C206E6F6E2D6C657468616C205076502E0D0A2D20536F6C6F2D7175657565206F6E6C792E2047726F75702071756575696E6720617661696C61626C652066726F6D204669656C6477656176657220416D6F6C656E6E6520696E2053696C7665726D6F6F6E2E0D0A2D2047657420666F756E6420616E64207461676765642C20616E6420796F75277265206F757421009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'enUS', 0x000000, 67186), +(3776013982, 149981, 'enUS', 0x000000, 67186), +(3330775162, 1897, 'enUS', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'enUS', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'enUS', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'enUS', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'enUS', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'enUS', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'enUS', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'enUS', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'enUS', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'enUS', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'enUS', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'enUS', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'enUS', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'enUS', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'enUS', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'enUS', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'enUS', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'enUS', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'enUS', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'enUS', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'enUS', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'enUS', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'enUS', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'enUS', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'enUS', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'enUS', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'enUS', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'enUS', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'enUS', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'enUS', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'enUS', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'enUS', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'enUS', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'enUS', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'enUS', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'enUS', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'enUS', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'enUS', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'enUS', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'enUS', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'enUS', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'enUS', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'enUS', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'enUS', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'enUS', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'enUS', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'enUS', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'enUS', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'enUS', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'enUS', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'enUS', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'enUS', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'enUS', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'enUS', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'enUS', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'enUS', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'enUS', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'enUS', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'enUS', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'enUS', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'enUS', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'enUS', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'enUS', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'enUS', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'enUS', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'enUS', 0x52616369616C00416374697661746520746F206175746F6D61746963616C6C7920617373756D6520796F757220566973616765207768656E6576657220796F7520617265206E6F742063617374696E6720647261636F6E6963207370656C6C73207375636820617320466972652042726561746820616E6420536F61722E0000, 67186), +(3776013982, 1283168, 'enUS', 0x00436F6D62696E65206669766520417363656E64616E7420566F696473686172647320696E746F20616E20417363656E64616E7420566F6964636F72652063617061626C65206F6620696E6372656173696E6720746865206974656D206C6576656C206F6620612066756C6C79207570677261646564204865726F206F72204D797468206F72206D6178696D756D207175616C6974792052616469616E6365204372616674656420776561706F6E206F72207472696E6B65742066726F6D204D69646E6967687420536561736F6E20312E0000, 67186), +(3776013982, 1282778, 'enUS', 0x00496E63726561736520746865206974656D206C6576656C206F6620612066756C6C79207570677261646564204865726F206F72204D797468206F72206D6178696D756D207175616C6974792052616469616E6365204372616674656420776561706F6E206F72207472696E6B65742066726F6D204D69646E6967687420536561736F6E20312E0000, 67186), +(3776013982, 1264876, 'enUS', 0x0044616D6167696E6720612074617267657420616666656374656420627920436F6C6F7373757320536D6173682077697468204D6F7274616C20537472696B65206F7220436C656176652074686174206869747320247332206F72206D6F7265207461726765747320657874656E647320436F6C6F7373757320536D617368277320656666656374206F6E207468656D20627920247B2473312F313030307D2E31207365632E0000, 67186), +(3776013982, 1255629, 'enUS', 0x0052656C656173656420657373656E636520656D706F7765727320706C61796572732C20696E6372656173696E67207468656972206D6F76656D656E74207370656564206279202473312520616E6420696E6372656173696E672074686569722064616D6167652C206865616C696E672C20616E64206162736F727074696F6E2065666665637473206279202473322520666F722024642E20546869732065666665637420737461636B732C2062757420646F6573206E6F74207265667265736820697473206475726174696F6E2E004D6F76656D656E7420737065656420696E6372656173656420627920247331252E0D0A44616D61676520646F6E6520696E6372656173656420627920247332252E0D0A4865616C696E6720616E64206162736F727074696F6E206566666563747320696E6372656173656420627920247333252E00, 67186), +(3776013982, 447444, 'enUS', 0x00243F63335B54656172206F70656E206120726966745D5B4D696E6420426C617374207465617273206F70656E20616E20456E74726F70696320526966745D207468617420666F6C6C6F77732074686520656E656D7920666F722024343530313933642E20456E656D6965732063617567687420696E206974732070617468207375666665722024343437343438733120536861646F772064616D6167652065766572792024343539333134743120736563207768696C652077697468696E206974732072656163682E0000, 67186), +(372281185, 38, 'enUS', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'enUS', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'enUS', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'enUS', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'enUS', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'enUS', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'enUS', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'enUS', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'enUS', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'enUS', 0x0024407370656C6C646573633231303732350057696C6C206578706C6F646520666F722024773120417263616E652064616D6167652075706F6E2065787069726174696F6E2E00, 67186), +(3386943305, 332898, 'enUS', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'enUS', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'enUS', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'enUS', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'enUS', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'enUS', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'enUS', 0x0464000000, 67186), +(3776013982, 1280123, 'enUS', 0x000000, 67186), +(3205218938, 54794, 'enUS', 0x424353484F5254444154454E4F594541520025422025640001000000, 67186), +(3205218938, 22339, 'enUS', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'enUS', 0x534C4153485F5441524745545F4D41524B455232002F746D0001000000, 67186), +(3205218938, 22331, 'enUS', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'enUS', 0x534C4153485F574F524C445F4D41524B455232002F776D0001000000, 67186), +(3205218938, 22329, 'enUS', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'enUS', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'enUS', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'enUS', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'enUS', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'enUS', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'enUS', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'enUS', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'enUS', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'enUS', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'enUS', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'enUS', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'enUS', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'enUS', 0x00596F7520617474656D707420746F2066696E697368206F6666206120776F756E646564207461726765742C206465616C696E672024733120536861646F772064616D61676520616E6420243436383537326F3120536861646F772064616D616765206F7665722024343638353732642E204F6E6C7920757361626C65206F6E20656E656D6965732061626F76652024733325206865616C7468206F722062656C6F772024733225206865616C74682E0000, 67186), +(261693969, 95553, 'enUS', 0xFFFFFFFFFFFFFFFF4D616E696665737465642044656E7369747900001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'enUS', 0xFFFFFFFFFFFFFFFF4461726B204F62656C69736B20496E7665737469676174696F6E0000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'enUS', 0xFFFFFFFFFFFFFFFF5468696E2054686569722052616E6B730000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'enUS', 0x5769636B6564205363616C657300004772616E74696E672061204D616C65766F6C656E7420426F6F6E20746F2041707072656E74696365204B7572677362616E6520696E6372656173696E67207468656972206865616C746820616E642064616D61676520627920243132383931303273312520616E64206772616E74696E6720746865206162696C69747920746F2063617374205769636B6564205363616C65732E00, 67186), +(3776013982, 1281946, 'enUS', 0x000000, 67186), +(3776013982, 1270634, 'enUS', 0x00446F75626C6573207468652064616D6167652074616B656E20627920616E20617263616E6520656C656D656E74616C2066726F6D20746865204E657875732D506F696E74204D696427417220666F72203135207365636F6E64732E0054616B696E6720646F75626C652064616D6167652E00, 67186), +(3776013982, 1270085, 'enUS', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'enUS', 0x00546865206361737465722065786368616E676573207468656972206865616C746820666F7220616E206162736F727074696F6E20736869656C6420657175616C20746F207468652073616D6520616D6F756E742E2054686520736869656C6420627572737473207768656E2072656D6F7665642C20696E666C696374696E67202431323730303835733120536861646F772064616D61676520746F20706C61796572732077697468696E20243132373030383561312079617264732E004162736F726273202477312064616D6167652E0D0A55706F6E2072656D6F76616C2C20696E666C69637473202431323730303835733120536861646F772064616D61676520746F20706C61796572732077697468696E20243132373030383561312079617264732E00, 67186), +(3776013982, 1258411, 'enUS', 0x000000, 67186), +(3776013982, 1258410, 'enUS', 0x004472696E6B20666F72206120636F736D65746963206566666563742E0041207765616B2C206E6F6E2D66756E6374696F6E616C2076657273696F6E206F662074686520576F6E64726F75732042616C6C20617761697473206E6F7468696E6720617420616C6C206275742069747320696E6576697461626C65206469737369706174696F6E2E00, 67186), +(3776013982, 1258336, 'enUS', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'enUS', 0x000000, 67186), +(3776013982, 1257729, 'enUS', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'enUS', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'enUS', 0x005468652063617374657220626567696E7320746F207265616E696D6174652C207265766976696E672077697468202431323537373238733125206F66207468656972206D6178206865616C746820696620746865206368616E6E656C20636F6D706C657465732E005265616E696D6174696E672E20496620746865206368616E6E656C20636F6D706C657465732C20746865206361737465722072657669766573206174202431323537373238733125206F66207468656972206D6178206865616C74682E00, 67186), +(3776013982, 1257505, 'enUS', 0x00546865206361737465722065786368616E676573207468656972206865616C746820666F7220616E206162736F727074696F6E20736869656C6420657175616C20746F207468652073616D6520616D6F756E742E004162736F726273202477312064616D6167652E00, 67186), +(3776013982, 1256189, 'enUS', 0x000000, 67186), +(3776013982, 1255966, 'enUS', 0x005468652063617374657220726567656E6572617465732024733125206F66207468656972206D6178696D756D206865616C746820657665727920247431207365632E0024733125206F66206D6178696D756D206865616C746820726567656E65726174656420657665727920247431207365632E00, 67186), +(3776013982, 1253337, 'enUS', 0x000000, 67186), +(3776013982, 1253336, 'enUS', 0x00005769746E657373696E672061207175657374696F6E61626C6520696C6C7573696F6E2066726F6D20746865206472696E6B2E2E2E00, 67186), +(3776013982, 1253194, 'enUS', 0x00006368616E6E656C00, 67186), +(3776013982, 1253193, 'enUS', 0x00006368616E6E656C00, 67186), +(3776013982, 1253185, 'enUS', 0x00006368616E6E656C00, 67186), +(3776013982, 1253064, 'enUS', 0x000000, 67186), +(3776013982, 1252431, 'enUS', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'enUS', 0x0024407370656C6C646573633132343130323300496E666C69637473202431323538333336733120417263616E652064616D61676520657665727920247431207365632E00, 67186), +(3776013982, 1241023, 'enUS', 0x005A6F2767726F6E20737572726F756E64732068696D73656C6620696E206120626172726965722074686174206162736F72627320696E636F6D696E672064616D616765207768696C652063617374696E672046696E616C205761726E696E672E2055706F6E20636F6D706C6574696F6E2C2074686520626172726965722070756C736573202431323538333336733120417263616E652064616D61676520746F20616C6C20706C617965727320657665727920243132343130333274312073656320756E74696C2069742069732064657374726F7965642E004162736F72622024773120696E636F6D696E672064616D6167652E00, 67186), +(3776013982, 1235076, 'enUS', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'enUS', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'enUS', 0x0054686520486F6172646D6F6E67657220676174686572732066726F6D20746865206E6561726573742070696C65206F66207265736F75726365732C207265706C6163696E67206F6E65206F6620686973206162696C697469657320776974682061206E6577206F6E652E243F44494646387C3F4449464632335B5D5B2048652063616E206F6E6C792072657461696E206F6E65206162696C69747920617420612074696D652E5D0000, 67186), +(3776013982, 1235067, 'enUS', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'enUS', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'enUS', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'enUS', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'enUS', 0x00416C6C6572696120706C616365732061207368656C6C206F6620566F6964206D616769632061726F756E64206120706C617965722074686174206162736F72627320247331206865616C696E672E2049662024407370656C6C6E616D65313233333836352069732064697370656C6C65642C207468652072656D61696E696E67206162736F7262206A756D707320746F20616E6F746865722072616E646F6D20706C617965722E004162736F72627320247731206865616C696E672E0D0A0D0A49662064697370656C6C65642C2072656D61696E696E67206162736F72622077696C6C206A756D7020746F20616E6F7468657220706C617965722E00, 67186), +(3776013982, 1228865, 'enUS', 0x0053756D6D6F6E7320616E64206469736D69737365732074686973206D6F756E742E00243F6A31675B496E637265617365732067726F756E6420737065656420627920246A3167252E205D5B5D243F6A31665B496E6372656173657320666C6967687420737065656420627920246A3166252E205D5B5D243F6A31735B496E63726561736573207377696D20737065656420627920246A3173252E205D5B5D00, 67186), +(3776013982, 1225598, 'enUS', 0x00243F50433135343832385B7C636E4951313A2D204261736963204469766520537569747C525D5B5D243F50433135343832395B7C636E4951323A2D205265696E666F72636564204A6F696E747320537569747C525D5B5D243F50433135343833305B7C636E4951333A2D2044657074682D4772656173656420537569747C525D5B5D243F50433135343833325B7C636E4951343A2D205061686B205472656E63682046696E7320537569747C525D5B5D0D0A5377696D205370656564202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D204261736963204272656174682054616E6B7C520D0A4D6178204F787967656E2024313232343730306D3620756E6974730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2044657074686469766572277320557365642054616E6B7C520D0A4D6178204F787967656E2024313237313631336D3620756E6974730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20466174686F6D2D5465737465642054616E6B7C520D0A4D6178204F787967656E2024313237313631346D3620756E6974730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D204E616C6F72616B6B2773204272656174682054616E6B7C520D0A4D6178204F787967656E2024313237313631356D3620756E6974730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20426173696320426169747C520D0A436F6D6D6F6E204669736861626C65204372656174757265730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D2046696E6E6F77204368756D20426169747C520D0A556E636F6D6D6F6E204669736861626C65204372656174757265730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20506C65636F66696E20426169747C520D0A52617265204669736861626C65204372656174757265730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D204D75726B736B696D6D6572204D65617420426169747C520D0A45706963204669736861626C65204372656174757265730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D205368616C6C6F7773204E65747C520D0A42617262656420437261776C65727320616E642054686F726E7920536561686F727365730D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20547269706C652D546872656164204E65747C520D0A416C6C20536D616C6C204372656174757265730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D2050726573737572697A656420457965676C6173737C520D0A416E6369656E742052656C69637320646973636F76657261626C655D5B5D0D0A00243F50433135343832385B7C636E4951313A2D204261736963204469766520537569747C525D5B5D243F50433135343832395B7C636E4951323A2D205265696E666F72636564204A6F696E747320537569747C525D5B5D243F50433135343833305B7C636E4951333A2D2044657074682D4772656173656420537569747C525D5B5D243F50433135343833325B7C636E4951343A2D205061686B205472656E63682046696E7320537569747C525D5B5D0D0A5377696D205370656564202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D204261736963204272656174682054616E6B7C520D0A4D6178204F787967656E2024313232343730306D3620756E6974730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2044657074686469766572277320557365642054616E6B7C520D0A4D6178204F787967656E2024313237313631336D3620756E6974730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20466174686F6D2D5465737465642054616E6B7C520D0A4D6178204F787967656E2024313237313631346D3620756E6974730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D204E616C6F72616B6B2773204272656174682054616E6B7C520D0A4D6178204F787967656E2024313237313631356D3620756E6974730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20426173696320426169747C520D0A436F6D6D6F6E204669736861626C65204372656174757265730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D2046696E6E6F77204368756D20426169747C520D0A556E636F6D6D6F6E204669736861626C65204372656174757265730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20506C65636F66696E20426169747C520D0A52617265204669736861626C65204372656174757265730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D204D75726B736B696D6D6572204D65617420426169747C520D0A45706963204669736861626C65204372656174757265730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D205368616C6C6F7773204E65747C520D0A42617262656420437261776C65727320616E642054686F726E7920536561686F727365730D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20547269706C652D546872656164204E65747C520D0A416C6C20536D616C6C204372656174757265730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D2050726573737572697A656420457965676C6173737C520D0A416E6369656E742052656C69637320646973636F76657261626C655D5B5D00, 67186), +(3776013982, 1225322, 'enUS', 0x007C636E475245454E5F464F4E545F434F4C4F523A5265636F6D6D656E64656420536B696C6C3A7C7220310D0A0D0A43616C6D20616E6420736572656E6520776174657273206D616B6520697420616E20696465616C206C6F636174696F6E20666F7220416E676C65727320746F20626567696E206578706C6F72696E6720776861742074686520646570746873206861766520746F206F666665722E0D0A0D0A506F6F6C7320666F756E6420696E2074686973207A6F6E653A0D0A2D2053756E77656C6C20537761726D0D0A2D20427562626C696E6720426C6F6F6D0D0A2D20426C6F6F6D20537761726D0D0A2D20566973636F757320566F69640D0A2D20436172656C65737320436172676F0D0A2D204C6F7374205472656173757265730000, 67186), +(3776013982, 1225281, 'enUS', 0x00412067656E746C652063726561747572652077686F2070726566657273207468652063616C6D20776174657273206F662045766572736F6E6720576F6F64732E205768696C652074686520776174657273206D6179206265207374726169676874666F727761726420666F7220796F7572206176657261676520416E676C657220746F20636173742C207468697320706172746963756C61722066697368206973206F6E6C7920617661696C61626C6520746F20746865206D6F73742070657263657074697665206F66207468656D2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A417265617320796F752063616E2066696E64207468697320666973683A7C520D0A2D2045766572736F6E6720576F6F64730D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A46697368696E6720506F6F6C733A7C720D0A2D20426C6F73736F6D696E6720546F7272656E740000, 67186), +(3776013982, 1225277, 'enUS', 0x0057617465727320696E20486172616E64617220636F6E7461696E20756E69717565206D696E6572616C7320746861742C207768656E2070617373696E67207468726F756768207468652067696C6C73206F66206120526573746F72656420536F6E67666973682C20656D697420616E20657468657265616C20756E6465727761746572206D656C6F64792E205468697320736F6E672C207768696C6520706C656173616E7420746F20616E20416E676C65722C207761726473206F6666207072656461746F727320776974682069747320737562746C6520766962726174696F6E2E2049662061207072656461746F722C20737563682061732074686520547769737465642054657472612C206765747320746F6F20636C6F73652C2074686520766962726174696F6E732067726F77206D6F726520766F6C6174696C652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C3A207C520D0A0D0A24407370656C6C69636F6E3132333731303420436F6F6B696E67204665617374730D0A0D0A5468697320657370656369616C6C79207261726520616E64207461737479206669736820697320616E20696D706F7274616E7420696E6772656469656E7420696E206D616E79204D69646E6967687420436F6F6B696E6720726563697065732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A417265617320796F752063616E2066696E64207468697320666973683A7C520D0A2D2045766572736F6E6720576F6F64730D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A46697368696E6720506F6F6C733A7C720D0A2D20426C6F6F6D20537761726D0D0A2D20427562626C696E6720426C6F6F6D0D0A2D2053756E77656C6C20537761726D0D0A2D20426C6F73736F6D696E6720546F7272656E740000, 67186), +(3776013982, 1225273, 'enUS', 0x004120637572696F75736C79206F66662D70757474696E672064656E697A656E206F6620566F696473746F726D2E20497473206C696D627320657874656E642066726F6D20746865206669736861626C652061737065637473206F662074686520766F69642E2043756E6E696E672C206372616674792C20696E74656C6C6967656E742C20616E64206120666F726D696461626C65206368616C6C656E676520746F20616E7920416E676C657220627261766520656E6F75676820746F206669736820696E20566F696473746F726D2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C3A207C520D0A0D0A24407370656C6C69636F6E3132333731303420436F6F6B696E67204665617374730D0A0D0A5468697320657370656369616C6C79207261726520616E64207461737479206669736820697320616E20696D706F7274616E7420696E6772656469656E7420696E206D616E79204D69646E6967687420436F6F6B696E6720726563697065732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A417265617320796F752063616E2066696E64207468697320666973683A7C520D0A0D0A2D20566F696473746F726D0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A46697368696E6720506F6F6C733A7C720D0A0D0A2D204F6365616E696320566F727465780D0A2D20566973636F757320566F69640000, 67186), +(3776013982, 1225272, 'enUS', 0x0041207374616C776172742073696C766572207370696E65666973682077686F736520626F647920656E636F75726167657320416E676C65727320616E64206669736820616C696B6520746F206578706C6F7265206265666F7265206A757474696E672069747320636F61727365207370696E657320696E20746865697220646972656374696F6E2E20412062656175746966756C6C79206772756D707920667269656E6420746F206E6F2D6F6E652C2062757420612077656C636F6D6520747265617375726520666F7220616E79206173706972696E6720416E676C65722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A417265617320796F752063616E2066696E64207468697320666973683A7C520D0A2D2045766572736F6E6720576F6F64730D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A46697368696E6720506F6F6C733A7C720D0A2D20427562626C696E6720426C6F6F6D0D0A2D2053756E77656C6C20537761726D0D0A2D20426C6F6F6D20537761726D0D0A2D20426C6F73736F6D696E6720546F7272656E740000, 67186), +(3776013982, 444803, 'enUS', 0x00412068756D626C652C20646F726D616E742063726561747572652E205768656E206177616B652C20697473207363616C6573207368696D6D65722077697468207265666C656374697665206272696C6C69616E63652064657370697465206265696E6720696E20636F6E746163742077697468206C6974746C65206C696768742E2041207175696574206D616A6573747920616E6420612066697474696E6720676F616C20666F7220616E79206173706972696E6720416E676C65722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C3A7C720D0A0D0A24407370656C6C69636F6E3434353132372046726573682046696C6C65740D0A0D0A53616C766167696E672074686973206669736820776974682074686520436F6F6B696E6720736B696C6C2063616E2070726F647563652061206C6172676520616D6F756E74206F662046726573682046696C6C65742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A417265617320796F752063616E2066696E64207468697320666973683A7C520D0A0D0A2D20417A6A2D4B616865740D0A2D204B276172657368204F617369730000, 67186), +(3205218938, 56772, 'enUS', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C4534004361727279204F6666657265640001000000, 67186), +(3205218938, 56771, 'enUS', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300436F6D70657469746976650001000000, 67186), +(3205218938, 56770, 'enUS', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45320052656C617865640001000000, 67186), +(3205218938, 22337, 'enUS', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'enUS', 0x000000, 67186), +(1010104591, 26054, 'enUS', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'enUS', 0x4C6F616D6D204172636877617900000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'enUS', 0x4F726E6174652053696E27646F7265692053636F6E636500000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'enUS', 0x556E6465726D696E65204D656368616E696327732048616E67696E67204C616D7000000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'enUS', 0x44616C6172616E20457370726573736F204D616368696E65000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'enUS', 0x44657661737461746F722773204272617A696572000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'enUS', 0x486F6F6465642049726F6E204C616E7465726E00000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'enUS', 0x42726164656E7362726F6F6B20536D6F6B65204C616E7465726E00000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'enUS', 0x566572792052656C6961626C6520556E6465726D696E65204C616D70706F737400000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'enUS', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'enUS', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'enUS', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'enUS', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'enUS', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'enUS', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'enUS', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'enUS', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'enUS', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'enUS', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'enUS', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'enUS', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'enUS', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'enUS', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'enUS', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'enUS', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'enUS', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'enUS', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'enUS', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'enUS', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'enUS', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'enUS', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'enUS', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'enUS', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'enUS', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'enUS', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'enUS', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'enUS', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'enUS', 0x00446563696D7573207472616E736D75746573207468652073686172647320696E746F20616E20456C656D656E74616C20566F6964636F726520746F20776561766520696E746F20746865204E617363656E7420566F6964666F7267652E2054686520566F6964666F7267652072657175697265732024733120456C656D656E74616C20566F6964636F72657320666F722069747320636F6D706C6574696F6E2E0D0A0D0A43757272656E7420636F6E747269627574696F6E733A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'enUS', 0xFFFFFFFFFFFFFFFF416E20456C656D656E7461727920566F6964636F72650000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'enUS', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'enUS', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'enUS', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'enUS', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'enUS', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'enUS', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'enUS', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'enUS', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'enUS', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'enUS', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'enUS', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'enUS', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'enUS', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'enUS', 0x000000, 67186), +(3653642729, 376, 'enUS', 0x000000008D000000, 67186), +(1673391669, 141, 'enUS', 0x8A000000, 67186), +(2791084701, 138, 'enUS', 0x35D30600, 67186), +(2518885667, 13760, 'enUS', 0xC035000000000000, 67186), +(3776013982, 1296205, 'enUS', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'enUS', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'enUS', 0xFFFFFFFFFFFFFFFF566F69642041737361756C74733A205A756C27416D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'enUS', 0xFFFFFFFFFFFFFFFF566F69642041737361756C74733A2045766572736F6E6720576F6F647300003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'enUS', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'enUS', 0x000000, 67186), +(3776013982, 1296168, 'enUS', 0x000000, 67186), +(600565378, 665333, 'enUS', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'enUS', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'enUS', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'enUS', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'enUS', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'enUS', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'enUS', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'enUS', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'enUS', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'enUS', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'enUS', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'enUS', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'enUS', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'enUS', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'enUS', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'enUS', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'enUS', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'enUS', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'enUS', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'enUS', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'enUS', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'enUS', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'enUS', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'enUS', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'enUS', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'enUS', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'enUS', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'enUS', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'enUS', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'enUS', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'enUS', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'enUS', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'enUS', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'enUS', 0x898200006D670300, 67186), +(3745449290, 8614, 'enUS', 0x52697475616C20536974653A2042726F6B656E205468726F6E6500412064616E6765726F75732072697475616C206973206265696E6720636F6E647563746564206E65617262792E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'enUS', 0x000000, 67186), +(2575642838, 765, 'enUS', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'enUS', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'enUS', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'enUS', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'enUS', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'enUS', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'enUS', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'enUS', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'enUS', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'enUS', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'enUS', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'enUS', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'enUS', 0x526F6F742D576F76656E2057696E646F77000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'enUS', 0x2245766572736F6E67204C616E7465726E22205061696E74696E67000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'enUS', 0x526F6F742D576F76656E20446F6F72000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'enUS', 0x46756E67616C20506572676F6C610000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'enUS', 0x53756D7074756F75732042657272792050696500000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'enUS', 0x52757374696320486172616E64617220506C616E746572000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'enUS', 0x4772616E642041657468657263686172676564204372797374616C00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'enUS', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'enUS', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'enUS', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'enUS', 0x467B0000, 67186), +(4033975491, 620660, 'enUS', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'enUS', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'enUS', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'enUS', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'enUS', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'enUS', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'enUS', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'enUS', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'enUS', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'enUS', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'enUS', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'enUS', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'enUS', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'enUS', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'enUS', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'enUS', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'enUS', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'enUS', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'enUS', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'enUS', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'enUS', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'enUS', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'enUS', 0x000000, 67186), +(3776013982, 1295957, 'enUS', 0x000000, 67186), +(3776013982, 1295932, 'enUS', 0x000000, 67186), +(3776013982, 1295927, 'enUS', 0x005768656E20706572666F726D696E67207468652074616E6B20726F6C6520666F7220796F75722070617274792C204C696E646F726D6920686967686C696768747320656E656D7920666F7263657320696E204B657973746F6E652044756E67656F6E732E0D0A0D0A537065616B2077697468204C696E646F726D6920746F2064697361626C652074686973206566666563742E005768656E20706572666F726D696E67207468652074616E6B20726F6C6520666F7220796F75722070617274792C204C696E646F726D6920686967686C696768747320656E656D7920666F7263657320696E204B657973746F6E652044756E67656F6E732E0D0A0D0A537065616B2077697468204C696E646F726D6920746F2064697361626C652074686973206566666563742E00, 67186), +(3776013982, 1265971, 'enUS', 0x00546865206162696C6974696573207468617420486F7273656D656E2063617374206465616C202473312520696E637265617365642064616D6167652E243F63335B0D0A0D0A596F75722047686F756C20616E6420736B656C6574616C20617263686572206465616C73202473332520616E64204C65737365722047686F756C73206465616C202473352520696E637265617365642064616D6167655D5B5D2E0000, 67186), +(336222293, 22784, 'enUS', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'enUS', 0x0045766572792024733120536C61796572277320537472696B657320796F75206761696E2053756464656E2044656174682E0D0A0D0A5573696E672053756464656E20446561746820616363656C65726174657320796F7572206E65787420426C61646573746F726D2C20737472696B696E672031206164646974696F6E616C2074696D6520286D6178202434343536303675292E20426C61646573746F726D277320746F74616C206475726174696F6E20697320756E6368616E6765642E0D0A0D0A53756464656E2044656174682068617320612024733225206368616E636520746F20747269676765722052656170207468652053746F726D2061742024733325206566666563746976656E6573732E0000, 67186), +(378810315, 666, 'enUS', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'enUS', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'enUS', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'enUS', 0x000000, 67186), +(1181150530, 752881, 'enUS', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'enUS', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'enUS', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'enUS', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'enUS', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'enUS', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'enUS', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'enUS', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'enUS', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'enUS', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'enUS', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'enUS', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'enUS', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'enUS', 0xE1570500E0570500, 67186), +(736158310, 43619, 'enUS', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'enUS', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'enUS', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'enUS', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'enUS', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'enUS', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'enUS', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'enUS', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'enUS', 0x00243F63315B496E766F6B65204E69757A616F2C2074686520426C61636B204F785D5B5A656E6974685D2063617573657320243F63315B427265617468206F6620466972655D5B526973696E672053756E204B69636B20616E64205370696E6E696E67204372616E65204B69636B5D20746F206C61756E63682024733120466C7572727920537472696B65732E0000, 67186), +(3776013982, 1244331, 'enUS', 0x0024733225206F66204C696665626C6F6F6D27732066696E616C20626C6F6F6D206865616C7320757020746F2024733320696E6A7572656420616C6C6965732077697468696E2024313234343334316131207964732E0000, 67186), +(3776013982, 441845, 'enUS', 0x00243F63325B53687265642C2053776970652C20616E642052616B652064616D61676520696E63726561736564206279202473312520616E6420746865697220637269746963616C20737472696B65206368616E636520697320696E6372656173656420627920247333252E5D5B4D616E676C652064616D61676520696E63726561736564206279202473342520616E642069747320637269746963616C20737472696B65206368616E636520697320696E6372656173656420627920247335252E5D0D0A0D0A243F63335B4D616E676C65206865616C7320796F7520666F722024343538373234733125206F66206D6178696D756D206865616C74682E5D5B5D0000, 67186), +(3205218938, 57068, 'enUS', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00507572636861736520616C6C2028257329206974656D7320666F722025733F0003000000, 67186), +(3205218938, 23377, 'enUS', 0x5343454E4152494F5F53544147455F535441545553005374616765202564206F662025640001000000, 67186), +(3205218938, 22841, 'enUS', 0x5343454E4152494F5F53544147450053746167652025640001000000, 67186), +(3745449290, 8459, 'enUS', 0x5072657900417374616C6F7220426C6F6F6473776F726E20726571756972657320796F757220617373697374616E636520696E2068756E74696E6720646F776E20646561646C7920746872656174732E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'enUS', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'enUS', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'enUS', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'enUS', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'enUS', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'enUS', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'enUS', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'enUS', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'enUS', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'enUS', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'enUS', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'enUS', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'enUS', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'enUS', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'enUS', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'enUS', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'enUS', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'enUS', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'enUS', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'enUS', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'enUS', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'enUS', 0x4E65746865727779726D00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'enUS', 0x9201000022000000, 67186), +(3247720076, 39887, 'enUS', 0x0700000000, 67186), +(3776013982, 243435, 'enUS', 0x005475726E7320796F757220736B696E20746F2073746F6E652C20696E6372656173696E6720796F75722063757272656E7420616E64206D6178696D756D206865616C7468206279202473312520616E64207265647563696E672064616D6167652074616B656E206279202473322520666F722024642E004D6178696D756D206865616C746820696E6372656173656420627920247731252E0D0A44616D6167652074616B656E207265647563656420627920247732252E243F2477343E315B0D0A4162736F726273202477342064616D6167652E5D5B5D00, 67186), +(3776013982, 221562, 'enUS', 0x004C696674732074686520656E656D7920746172676574206F6666207468652067726F756E642C206372757368696E67207468656972207468726F61742077697468206461726B20656E6572677920616E64207374756E6E696E67207468656D20666F722024642E005374756E6E65642E00, 67186), +(3776013982, 205630, 'enUS', 0x5076502054616C656E7400596F7520737472616E676C65207468652074617267657420776974682064656D6F6E6963206D616769632C207374756E6E696E67207468656D20696E20706C61636520616E64206465616C696E6720246F3420536861646F772064616D616765206F766572202464207768696C65207468652074617267657420697320677261737065642E2043616E206D6F7665207768696C65206368616E6E656C696E672E0D0A0D0A55736520496C6C6964616E277320477261737020616761696E20746F20746F7373207468652074617267657420746F2061206C6F636174696F6E2077697468696E2024323038313733522079617264732E005374756E6E65642E20537566666572696E672024773420536861646F772064616D616765206576657279202474207365632E00, 67186), +(3776013982, 198158, 'enUS', 0x5076502054616C656E7400596F7520616E6420796F757220616C6C6965732077697468696E202441312079647320696E7374616E746C79206265636F6D6520696E76697369626C6520666F722024642E2054616B696E6720616E7920616374696F6E2077696C6C2063616E63656C20746865206566666563742E00496E76697369626C652E2054616B696E6720616E7920616374696F6E2077696C6C2063616E63656C20746865206566666563742E00, 67186), +(3776013982, 108194, 'enUS', 0x004C696674732074686520656E656D7920746172676574206F6666207468652067726F756E642C206372757368696E67207468656972207468726F61742077697468206461726B20656E6572677920616E64207374756E6E696E67207468656D20666F722024642E005374756E6E65642E00, 67186), +(378810315, 1004, 'enUS', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'enUS', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'enUS', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'enUS', 0x077A03000705000047000000, 67186), +(378810315, 999, 'enUS', 0x530D00000509000049000000, 67186), +(378810315, 998, 'enUS', 0x530D00000509000048000000, 67186), +(378810315, 997, 'enUS', 0x530D00000509000047000000, 67186), +(378810315, 996, 'enUS', 0x78B700000409000049000000, 67186), +(378810315, 995, 'enUS', 0x78B700000409000048000000, 67186), +(378810315, 994, 'enUS', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'enUS', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'enUS', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'enUS', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'enUS', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'enUS', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'enUS', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'enUS', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'enUS', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'enUS', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'enUS', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'enUS', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'enUS', 0x989B12000706000006010000, 67186), +(378810315, 980, 'enUS', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'enUS', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'enUS', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'enUS', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'enUS', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'enUS', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'enUS', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'enUS', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'enUS', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'enUS', 0x713507000505000000010000, 67186), +(378810315, 966, 'enUS', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'enUS', 0x550300000805000046000000, 67186), +(378810315, 964, 'enUS', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'enUS', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'enUS', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'enUS', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'enUS', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'enUS', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'enUS', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'enUS', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'enUS', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'enUS', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'enUS', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'enUS', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'enUS', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'enUS', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'enUS', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'enUS', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'enUS', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'enUS', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'enUS', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'enUS', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'enUS', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'enUS', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'enUS', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'enUS', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'enUS', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'enUS', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'enUS', 0x991503000409000045020000, 67186), +(378810315, 933, 'enUS', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'enUS', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'enUS', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'enUS', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'enUS', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'enUS', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'enUS', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'enUS', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'enUS', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'enUS', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'enUS', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'enUS', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'enUS', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'enUS', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'enUS', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'enUS', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'enUS', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'enUS', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'enUS', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'enUS', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'enUS', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'enUS', 0x42E906000309000009010000, 67186), +(378810315, 902, 'enUS', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'enUS', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'enUS', 0x761800000309000009010000, 67186), +(378810315, 899, 'enUS', 0x76180000030900000A010000, 67186), +(378810315, 898, 'enUS', 0x76180000030900000B010000, 67186), +(378810315, 885, 'enUS', 0x78B700000409000047000000, 67186), +(378810315, 879, 'enUS', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'enUS', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'enUS', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'enUS', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'enUS', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'enUS', 0x980100000905000005010000, 67186), +(378810315, 858, 'enUS', 0x980100000905000004010000, 67186), +(378810315, 855, 'enUS', 0x980100000905000003010000, 67186), +(378810315, 843, 'enUS', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'enUS', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'enUS', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'enUS', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'enUS', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'enUS', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'enUS', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'enUS', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'enUS', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'enUS', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'enUS', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'enUS', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'enUS', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'enUS', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'enUS', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'enUS', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'enUS', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'enUS', 0x027F05000707000003010000, 67186), +(378810315, 720, 'enUS', 0x36A401000707000048000000, 67186), +(378810315, 719, 'enUS', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'enUS', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'enUS', 0x790200000905000046000000, 67186), +(378810315, 714, 'enUS', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'enUS', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'enUS', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'enUS', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'enUS', 0x68F905000605000067000000, 67186), +(378810315, 691, 'enUS', 0x68F905000605000066000000, 67186), +(378810315, 690, 'enUS', 0x68F905000605000069000000, 67186), +(378810315, 682, 'enUS', 0x15A905000705000041020000, 67186), +(378810315, 679, 'enUS', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'enUS', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'enUS', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'enUS', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'enUS', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'enUS', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'enUS', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'enUS', 0x16600500040800003F000000, 67186), +(378810315, 661, 'enUS', 0x16600500040900003E000000, 67186), +(378810315, 658, 'enUS', 0xE53805000209000040000000, 67186), +(378810315, 657, 'enUS', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'enUS', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'enUS', 0x166005000409000040000000, 67186), +(378810315, 648, 'enUS', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'enUS', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'enUS', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'enUS', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'enUS', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'enUS', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'enUS', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'enUS', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'enUS', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'enUS', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'enUS', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'enUS', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'enUS', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'enUS', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'enUS', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'enUS', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'enUS', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'enUS', 0x550300000805000041000000, 67186), +(378810315, 449, 'enUS', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'enUS', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'enUS', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'enUS', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'enUS', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'enUS', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'enUS', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'enUS', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'enUS', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'enUS', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'enUS', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'enUS', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'enUS', 0x57A101000505000067000000, 67186), +(378810315, 408, 'enUS', 0x638400000705000069000000, 67186), +(378810315, 407, 'enUS', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'enUS', 0xE40200000505000069000000, 67186), +(378810315, 402, 'enUS', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'enUS', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'enUS', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'enUS', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'enUS', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'enUS', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'enUS', 0xE77701000605000046000000, 67186), +(378810315, 377, 'enUS', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'enUS', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'enUS', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'enUS', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'enUS', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'enUS', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'enUS', 0x400700000409000004010000, 67186), +(378810315, 353, 'enUS', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'enUS', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'enUS', 0xE60600000605000005010000, 67186), +(378810315, 349, 'enUS', 0xE60600000605000004010000, 67186), +(378810315, 348, 'enUS', 0xE60600000605000003010000, 67186), +(378810315, 346, 'enUS', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'enUS', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'enUS', 0x301E03000509000006010000, 67186), +(378810315, 342, 'enUS', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'enUS', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'enUS', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'enUS', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'enUS', 0x66D401000505000009010000, 67186), +(378810315, 332, 'enUS', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'enUS', 0x981900000605000048000000, 67186), +(378810315, 329, 'enUS', 0x981900000605000049000000, 67186), +(378810315, 224, 'enUS', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'enUS', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'enUS', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'enUS', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'enUS', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'enUS', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'enUS', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'enUS', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'enUS', 0x242303000409000041020000, 67186), +(378810315, 205, 'enUS', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'enUS', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'enUS', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'enUS', 0x242303000409000045020000, 67186), +(378810315, 189, 'enUS', 0x743C03000805000045020000, 67186), +(378810315, 187, 'enUS', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'enUS', 0x36A401000707000049000000, 67186), +(378810315, 176, 'enUS', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'enUS', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'enUS', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'enUS', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'enUS', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'enUS', 0x36A401000707000047000000, 67186), +(378810315, 159, 'enUS', 0x981900000605000047000000, 67186), +(378810315, 158, 'enUS', 0x533301000405000066000000, 67186), +(378810315, 156, 'enUS', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'enUS', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'enUS', 0xA09001000607000066000000, 67186), +(378810315, 152, 'enUS', 0x82020000010B000046000000, 67186), +(378810315, 150, 'enUS', 0x50350300050B000046000000, 67186), +(378810315, 149, 'enUS', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'enUS', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'enUS', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'enUS', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'enUS', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'enUS', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'enUS', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'enUS', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'enUS', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'enUS', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'enUS', 0x62040000060500000B010000, 67186), +(378810315, 121, 'enUS', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'enUS', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'enUS', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'enUS', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'enUS', 0x45990100010B000009010000, 67186), +(378810315, 113, 'enUS', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'enUS', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'enUS', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'enUS', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'enUS', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'enUS', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'enUS', 0x491E03000907000007010000, 67186), +(378810315, 101, 'enUS', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'enUS', 0x301E03000509000008010000, 67186), +(378810315, 97, 'enUS', 0x301E03000509000007010000, 67186), +(378810315, 96, 'enUS', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'enUS', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'enUS', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'enUS', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'enUS', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'enUS', 0x400700000409000005010000, 67186), +(378810315, 83, 'enUS', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'enUS', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'enUS', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'enUS', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'enUS', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'enUS', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'enUS', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'enUS', 0xB63500000707000004010000, 67186), +(378810315, 70, 'enUS', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'enUS', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'enUS', 0x400700000409000003010000, 67186), +(378810315, 63, 'enUS', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'enUS', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'enUS', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'enUS', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'enUS', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'enUS', 0x82020000010B000042000000, 67186), +(378810315, 45, 'enUS', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'enUS', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'enUS', 0x82020000010B000041000000, 67186), +(378810315, 39, 'enUS', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'enUS', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'enUS', 0x790200000905000041000000, 67186), +(378810315, 35, 'enUS', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'enUS', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'enUS', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'enUS', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'enUS', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'enUS', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'enUS', 0xD39603000805000040000000, 67186), +(378810315, 21, 'enUS', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'enUS', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'enUS', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'enUS', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'enUS', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'enUS', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'enUS', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'enUS', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'enUS', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'enUS', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'enUS', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'enUS', 0x446F6D616E6161722052697475616C69737400000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931373931773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291859, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931373931773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291858, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931373931773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291857, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931373931773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291856, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931373931773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291855, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931373931773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291854, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931383331773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291853, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931383331773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291852, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931383331773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291851, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931383331773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291850, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931383331773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291849, 'enUS', 0x00526573746F72657320757020746F2024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64202431323931383331773125206D616E61206576657279207365636F6E642E00, 67186), +(3776013982, 1291848, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291847, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291846, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291845, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291844, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291843, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291842, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291841, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291840, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291839, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291838, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291837, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291831, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1291828, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291827, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291826, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291825, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291824, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291822, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1291791, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1290929, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1290926, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1290925, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1289221, 'enUS', 0x004F70656E2074686520636865737420746F207365652077686174277320696E73696465210000, 67186), +(3776013982, 1286537, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64206D616E61206576657279207365632E00, 67186), +(3776013982, 1286536, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1286535, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1282100, 'enUS', 0x000000, 67186), +(3776013982, 1282018, 'enUS', 0x0053756D6D6F6E7320612062656E636820746F20736974206F6E210043616E63656C206175726120746F20756E73756D6D6F6E20796F75722062656E63682E00, 67186), +(3776013982, 1277461, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1269922, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1269921, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1269920, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C7468206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C7468206576657279207365632E00, 67186), +(3776013982, 1269919, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1269918, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C65206472696E6B696E672E00526573746F72696E672024773125206D616E61206576657279207365632E00, 67186), +(3776013982, 1269917, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64206D616E61206576657279207365632E00, 67186), +(3776013982, 1269916, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64206D616E61206576657279207365632E00, 67186), +(3776013982, 1232065, 'enUS', 0x00526573746F7265732024733125206F6620796F7572206D6178696D756D206865616C746820616E64206D616E61206576657279207365636F6E64206F7665722024642E204D7573742072656D61696E20736561746564207768696C6520656174696E672E00526573746F72696E672024733125206865616C746820616E64206D616E61206576657279207365632E00, 67186), +(2948698321, 8059, 'enUS', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'enUS', 0x000000, 67186), +(3898252553, 11633, 'enUS', 0xE28200001E490300, 67186), +(3898252553, 11632, 'enUS', 0xE18200001E490300, 67186), +(3898252553, 11631, 'enUS', 0xE08200001E490300, 67186), +(3898252553, 11630, 'enUS', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'enUS', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'enUS', 0x004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247333252E0D0A0D0A596F75206D6179206861766520757020746F20247334205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024733520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247733252E0D0A0D0A596F75206D6179206861766520757020746F20247734205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024773520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E00, 67186), +(3776013982, 1262377, 'enUS', 0x004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247333252E0D0A0D0A596F75206D6179206861766520757020746F20247334205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024733520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247733252E0D0A0D0A596F75206D6179206861766520757020746F20247734205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024773520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E00, 67186), +(3776013982, 1262376, 'enUS', 0x004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247333252E0D0A0D0A596F75206D6179206861766520757020746F20247334205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024733520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247733252E0D0A0D0A596F75206D6179206861766520757020746F20247734205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024773520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E00, 67186), +(3776013982, 1262365, 'enUS', 0x005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282473352F31303030292A3130307D2E3125206368616E636520746F206465616C2024733325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282477352F31303030292A3130307D2E3125206368616E636520746F206465616C2024773325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'enUS', 0x005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282473352F31303030292A3130307D2E3125206368616E636520746F206465616C2024733325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A4D616E64617465206F6620536163726564204465617468206861732061207665727920736D616C6C206368616E636520746F2065786563757465206E6F6E2D626F737320656E656D6965732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282477352F31303030292A3130307D2E3125206368616E636520746F206465616C2024773325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A4D616E64617465206F6620536163726564204465617468206861732061207665727920736D616C6C206368616E636520746F2065786563757465206E6F6E2D626F737320656E656D6965732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'enUS', 0x005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282473352F31303030292A3130307D2E3125206368616E636520746F206465616C2024733325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A4D616E64617465206F6620536163726564204465617468206861732061207665727920736D616C6C206368616E636520746F2065786563757465206E6F6E2D626F737320656E656D6965732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282477352F31303030292A3130307D2E3125206368616E636520746F206465616C2024773325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A4D616E64617465206F6620536163726564204465617468206861732061207665727920736D616C6C206368616E636520746F2065786563757465206E6F6E2D626F737320656E656D6965732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'enUS', 0x004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247333252E0D0A0D0A596F75206D6179206861766520757020746F20247334205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024733520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E004F70656E696E672061204D69736C61696420437572696F736974792073756D6D6F6E732061205375626A7567617465642042757264656E207468617420776F72736869707320796F7520647572696E6720636F6D6261742C20696E6372656173696E6720796F7572202470726920627920247733252E0D0A0D0A596F75206D6179206861766520757020746F20247734205375626A7567617465642042757264656E7320617420612074696D652E0D0A416674657220676174686572696E67206174206C656173742024773520776F72736869706572732074686520616D6F756E74206F66206772616E7465642024707269207065722042757264656E20697320696E637265617365642E00, 67186), +(3776013982, 1248927, 'enUS', 0x005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282473352F31303030292A3130307D2E3125206368616E636520746F206465616C2024733325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005768656E20796F75722064656C766520636F6D70616E696F6E2063617374732024407370656C6C6E616D65313235313630332C206120536163726564204D616E6461746520697320626573746F7765642075706F6E207061727479206D656D62657273206772616E74696E67207468656972206861726D66756C207370656C6C7320616E64206162696C6974696573206120247B282477352F31303030292A3130307D2E3125206368616E636520746F206465616C2024773325206F6620746865207461726765742773206D6178696D756D206865616C7468206173206164646974696F6E616C20486F6C792064616D61676520706572204D616E646174652E0D0A0D0A43616E206F6E6C79206F63637572206F6E6365207065722074617267657420657665727920243132363133323470726F63636F6F6C646F776E207365632E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'enUS', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'enUS', 0x0044697370656C2074686520696C6C7573696F6E73206F662048696465727320696E20616E206172656120696E2066726F6E74206F6620796F752C206D61726B696E67207468656D20466F756E642E0000, 67186), +(3776013982, 1256862, 'enUS', 0x0044697370656C2074686520696C6C7573696F6E73206F662048696465727320696E20616E20617265612C206D61726B696E67207468656D20466F756E642E0000, 67186), +(3776013982, 1256861, 'enUS', 0x004A756D7020746F2061206C6F636174696F6E2C2064697370656C6C696E672074686520696C6C7573696F6E73206F66204869646572732061726F756E64207468652061726561206F6620696D706163742E0000, 67186), +(3776013982, 1256860, 'enUS', 0x0044697370656C2074686520696C6C7573696F6E73206F662048696465727320696E2066726F6E74206F6620796F75206F7665722024642C206D61726B696E67207468656D20466F756E642E0000, 67186), +(3776013982, 1256010, 'enUS', 0x0044697370656C2074686520696C6C7573696F6E73206F662048696465727320696E20616E20617265612C206D61726B696E67207468656D20466F756E642E0000, 67186), +(1408785804, 249319, 'enUS', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'enUS', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'enUS', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'enUS', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'enUS', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'enUS', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'enUS', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'enUS', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'enUS', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'enUS', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'enUS', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'enUS', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'enUS', 0x000000, 67186), +(3776013982, 1295497, 'enUS', 0x000000, 67186), +(3776013982, 1295486, 'enUS', 0x000000, 67186), +(3776013982, 464291, 'enUS', 0x000000, 67186), +(3776013982, 1243616, 'enUS', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'enUS', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'enUS', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'enUS', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'enUS', 0x00446567656E7472697573206C61756E63686573206120626F6C6420756E737461626C6520766F696420656E65726779207468617420626F756E63657320746F20247332206C6F636174696F6E732E2041732074686520656E6572677920696D7061637473207468652067726F756E64206974206578706C6F6465732C20696E666C696374696E67202431323135313537733120536861646F772064616D61676520746F20616E7920706C617965722077697468696E2024313231353135374131207961726473206F662074686520706F696E74206F6620696D706163742E204966206E6F20706C6179657220697320696E2074686520617265612C2024407370656C6C6E616D6531323135313631206973207472696767657265642E0D0A0D0A416674657220616C6C2024733220696D70616374732074686520656E6572677920626F756E636573206F6E6365206D6F72652C206265636F6D696E6720612024407370656C6C6E616D65313231353933372E0000, 67186), +(3776013982, 1243588, 'enUS', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'enUS', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'enUS', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'enUS', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'enUS', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'enUS', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'enUS', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'enUS', 0x7C63464646464432303056656E646F723A207C7244657074686469766572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C634646464644323030436F73743A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'enUS', 0x7C63464646464432303056656E646F723A207C7244657074686469766572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C634646464644323030436F73743A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'enUS', 0x7C63464646464432303056656E646F723A207C7244657074686469766572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C634646464644323030436F73743A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'enUS', 0x7C63464646464432303056656E646F723A207C7244657074686469766572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C634646464644323030436F73743A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'enUS', 0x7C63464646464432303056656E646F723A207C7244657074686469766572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C634646464644323030436F73743A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'enUS', 0x7C63464646464432303056656E646F723A207C7244657074686469766572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C634646464644323030436F73743A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'enUS', 0x004C6173686573206F75742077697468206120707265636973652C20646F75626C652D736C6173682061696D6564206174206869732063757272656E74207461726765742E204561636820737472696B6520696E666C69637473202431323537373336733120506879736963616C2064616D616765207769746820616E206164646974696F6E616C202431323537373435733120486F6C792064616D61676520657665727920243132353737343574312073656320666F722024313235373734356420746F20616E7920656E656D6965732077697468696E2072616E676520616E642063617276657320612024407370656C6C6E616D653132353533313020696E746F207468652067726F756E642E0000, 67186), +(4033975491, 619581, 'enUS', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'enUS', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'enUS', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'enUS', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'enUS', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'enUS', 0x52656400243F63315B446973696E746567726174652064616D61676520636F6E73756D657320247B2473322F313030307D2E3120736563206F662046697265204272656174682066726F6D20656E656D6965732069742064616D616765732C206465746F6E6174696E6720697420666F722024733425206F662074686520616D6F756E7420636F6E73756D65642E0D0A0D0A507972652064616D61676520636F6E73756D657320247B2473332F313030307D20736563206F662046697265204272656174682066726F6D20656E656D6965732069742064616D616765732C206465746F6E6174696E6720697420666F722024733725206F662074686520616D6F756E7420636F6E73756D65642E5D5B56657264616E7420456D6272616365206865616C696E6720636F6E73756D657320247B2473352F313030307D20736563206F6620447265616D204272656174682066726F6D20616C6C696573206974206865616C732C206465746F6E6174696E6720697420616E64206865616C696E67207468656D20666F722024733625206F662074686520616D6F756E7420636F6E73756D65642E0D0A0D0A456D6572616C6420426C6F73736F6D206865616C696E6720636F6E73756D657320247B2473312F313030307D20736563206F6620447265616D204272656174682066726F6D20616C6C696573206974206865616C732C206465746F6E6174696E6720697420616E64206865616C696E67207468656D20666F722024733625206F662074686520616D6F756E7420636F6E73756D65642E5D0000, 67186), +(4033975491, 619554, 'enUS', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'enUS', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'enUS', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'enUS', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'enUS', 0x000000, 67186), +(2151089334, 7976, 'enUS', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'enUS', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'enUS', 0x447265616466756C20566F696477616C6B657200000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'enUS', 0x00412024407370656C6C6E616D653132343936303920686974206F7574206F66206F72646572206372656174657320616E206563686F696E6720636C616D6F722C2073696C656E63696E67207468652074617267657420666F722024642E200053696C656E6365642E00, 67186), +(3247720076, 42321, 'enUS', 0x0000000000, 67186), +(4033975491, 619506, 'enUS', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'enUS', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'enUS', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'enUS', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'enUS', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'enUS', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'enUS', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'enUS', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'enUS', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'enUS', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'enUS', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'enUS', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'enUS', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'enUS', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'enUS', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'enUS', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'enUS', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'enUS', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'enUS', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'enUS', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'enUS', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'enUS', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'enUS', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'enUS', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'enUS', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'enUS', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'enUS', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'enUS', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'enUS', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'enUS', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'enUS', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'enUS', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'enUS', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'enUS', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'enUS', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'enUS', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'enUS', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'enUS', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'enUS', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'enUS', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'enUS', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'enUS', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'enUS', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'enUS', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'enUS', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'enUS', 0x52697475616C20536974653A204461676765727370696E6520506F696E7400412064616E6765726F75732072697475616C206973206265696E6720636F6E647563746564206E65617262792E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'enUS', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'enUS', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'enUS', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'enUS', 0x005468652063617374657220756E6C6561736865732061206275727374206F6620617263616E6520706F7765722C20696E666C696374696E672024733120417263616E652064616D61676520746F20706C61796572732077697468696E202441312079617264732E0000, 67186), +(3776013982, 1295237, 'enUS', 0x005468652063617374657220756E6C6561736865732061206275727374206F6620617263616E6520706F7765722C20696E666C696374696E672024733120417263616E652064616D61676520746F20706C61796572732077697468696E202441312079617264732E0000, 67186), +(600565378, 632510, 'enUS', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'enUS', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'enUS', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'enUS', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'enUS', 0x005072657061726520746F20756E64657274616B65207468652070726F63657373206F662062757463686572792E205768696C65206163746976652C20796F7572206E657874204D69646E6967687420536B696E6E696E6720617474656D70742077696C6C2067756172616E746565206D65617420757361626C6520696E20636F6F6B696E672E00507265706172656420746F206275746368657220746865206E657874204D69646E6967687420637265617475726520796F7520736B696E2C2067756172616E746565696E67206D65617420666F722075736520696E20636F6F6B696E672E00, 67186), +(3776013982, 442615, 'enUS', 0x005072657061726520746F20756E64657274616B65207468652070726F63657373206F662062757463686572792E205768696C65206163746976652C20796F7572206E657874204B68617A20416C67617220536B696E6E696E6720617474656D70742077696C6C2067756172616E746565206D65617420757361626C6520696E20636F6F6B696E672E00507265706172656420746F206275746368657220746865206E657874206372656174757265204B68617A20416C67617220796F7520736B696E2C2067756172616E746565696E67206D65617420666F722075736520696E20636F6F6B696E672E00, 67186), +(3386943305, 23675, 'enUS', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'enUS', 0x44656D6F6E6963204761746577617900000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'enUS', 0x004578697420506861736520446976696E672E0000, 67186), +(3776013982, 1241218, 'enUS', 0x000000, 67186), +(2575642838, 749, 'enUS', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'enUS', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'enUS', 0x00456D706F7765726564206279207468652070726573656E6365206F662061206772656174657220656E656D792C207265666C656374696E672024773125206F6620616C6C2064616D616765206261636B20617420746865206361737465722E00456D706F7765726564206279207468652070726573656E6365206F662061206772656174657220656E656D792C207265666C656374696E672024773125206F6620616C6C2064616D616765206261636B20617420746865206361737465722E0D0A0D0A456D706F77657265642062793A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E313238323034322046616C6C656E2D4B696E672053616C6861646161725D00, 67186), +(3425193231, 546424, 'enUS', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'enUS', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'enUS', 0x000000, 67186), +(600565378, 664416, 'enUS', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'enUS', 0x005065726D616E656E746C7920656E6368616E747320612070726F66657373696F6E20746F6F6C20776974682053696E27646F72656920446566746E6573732C20696E6372656173696E6720446566746E65737320627920246563312E2043616E6E6F74206265206170706C69656420746F206974656D732061626F7665206C6576656C2024656369782E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A5468616C61737369616E2054616C656E7473202D205175656C275468616C6173205175616C6974797C52200000, 67186), +(261693969, 93049, 'enUS', 0xFFFFFFFFFFFFFFFF486F6D65776F726B20537570706F72740000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'enUS', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'enUS', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'enUS', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'enUS', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'enUS', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'enUS', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'enUS', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'enUS', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'enUS', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'enUS', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'enUS', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'enUS', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'enUS', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'enUS', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'enUS', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'enUS', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'enUS', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'enUS', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'enUS', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'enUS', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'enUS', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'enUS', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'enUS', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'enUS', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'enUS', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'enUS', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'enUS', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'enUS', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'enUS', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'enUS', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'enUS', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'enUS', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'enUS', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'enUS', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'enUS', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'enUS', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'enUS', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'enUS', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'enUS', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'enUS', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'enUS', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'enUS', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'enUS', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'enUS', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'enUS', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'enUS', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'enUS', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'enUS', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'enUS', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'enUS', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'enUS', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'enUS', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'enUS', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'enUS', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'enUS', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'enUS', 0x00457175697020612066697368696E6720706F6C6520616E642066696E64206120626F6479206F6620776174657220746F20666973682E202052696768742D436C69636B206F6E2074686520626F6220696E20746865207761746572207768656E2069742073706C617368657320746F20636174636820796F757220666973682E202048696768657220736B696C6C20696E6372656173657320796F7572206368616E6365206F662066697368696E67207375636365737366756C6C7920696E20686967686572206C6576656C2061726561732E0000, 67186), +(3776013982, 1286820, 'enUS', 0x000000, 67186), +(3776013982, 1286703, 'enUS', 0x00457175697020612066697368696E6720706F6C6520616E642066696E64206120626F6479206F6620776174657220746F20666973682E202052696768742D436C69636B206F6E2074686520626F6220696E20746865207761746572207768656E2069742073706C617368657320746F20636174636820796F757220666973682E202048696768657220736B696C6C20696E6372656173657320796F7572206368616E6365206F662066697368696E67207375636365737366756C6C7920696E20686967686572206C6576656C2061726561732E0000, 67186), +(3776013982, 1253159, 'enUS', 0x000000, 67186), +(3359787322, 29615, 'enUS', 0xAF730000, 67186), +(3031818311, 9590, 'enUS', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'enUS', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'enUS', 0xE87A0000, 67186), +(3776013982, 1277169, 'enUS', 0x004F70656E20746F20636F6C6C656374203130204865726F20616E64204D797468204461776E6372657374732E0000, 67186), +(3776013982, 1243683, 'enUS', 0x00436F6C6C656374203130204D797468204461776E6372657374732E0000, 67186), +(3776013982, 190784, 'enUS', 0x004C6561702061746F7020796F7572204368617267657220666F722024323231383833642C20696E6372656173696E67206D6F76656D656E7420737065656420627920243232313838337334252E20557361626C65207768696C6520696E646F6F7273206F7220696E20636F6D6261742E0000, 67186), +(4033975491, 619076, 'enUS', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'enUS', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'enUS', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'enUS', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'enUS', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'enUS', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'enUS', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'enUS', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'enUS', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'enUS', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'enUS', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'enUS', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'enUS', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'enUS', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'enUS', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'enUS', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'enUS', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'enUS', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'enUS', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'enUS', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'enUS', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'enUS', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'enUS', 0x1100E18B0000, 67186), +(184881520, 18405, 'enUS', 0x0F00FC890000, 67186), +(184881520, 18404, 'enUS', 0x0E00FC890000, 67186), +(184881520, 18403, 'enUS', 0xDC00F9890000, 67186), +(184881520, 18245, 'enUS', 0x1100F9890000, 67186), +(184881520, 18244, 'enUS', 0x0F00F9890000, 67186), +(2575642838, 750, 'enUS', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'enUS', 0x000000, 67186), +(3776013982, 1266413, 'enUS', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'enUS', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'enUS', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'enUS', 0x53656372657420496E6772656469656E7400F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'enUS', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'enUS', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'enUS', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'enUS', 0x00556E6C65617368206120736572696573206F66207072656369736520616E6420706F77657266756C20737472696B657320616761696E737420796F7572207461726765742C206465616C696E6720247B2434343038383473312B2434343038383673312B2434343038383873317D2064616D61676520746F2069742C20616E64202434343038383873312064616D61676520746F20656E656D6965732077697468696E2024343430383838413120796473206F662069742E204465616C7320726564756365642064616D616765206265796F6E642024733120746172676574732E0D0A0D0A5768696C65206368616E6E656C696E672044656D6F6C6973682C20796F752074616B652024733425206C6573732064616D61676520616E642061726520696D6D756E6520746F207374756E732C206B6E6F636B6261636B732C20616E6420666F72636564206D6F76656D656E7420656666656374732E0D0A0D0A596F752063616E20626C6F636B2C2070617272792C20646F6467652C20616E6420757365206365727461696E20646566656E73697665206162696C6974696573207768696C65206368616E6E656C696E672044656D6F6C6973682E0000, 67186), +(3776013982, 1292071, 'enUS', 0x00456E656D6965732064616D61676564206279205068616C616E7827732077617665206F6620666F726365206465616C20247B2473312F2D317D2E312520726564756365642064616D61676520746F20796F7520666F722024642E0D0A004465616C696E6720247B2457312F2D317D2E312520726564756365642064616D61676520746F202440617572616361737465722E00, 67186), +(3266400455, 1570155, 'enUS', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'enUS', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'enUS', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'enUS', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'enUS', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'enUS', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'enUS', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'enUS', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'enUS', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'enUS', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'enUS', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'enUS', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'enUS', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'enUS', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'enUS', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'enUS', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'enUS', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'enUS', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'enUS', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'enUS', 0x170B3D160100, 67186), +(1734738485, 9018, 'enUS', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'enUS', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'enUS', 0x00496E6675736520796F75722061726D6F7220776974682061206661696E74206563686F206F66207468652053756E77656C6C2C20756E6C6F636B696E67206164646974696F6E616C2076697375616C206566666563747320666F72206365727461696E204D69646E6967687420536561736F6E203120636C6173732073657420617070656172616E6365732E0D0A0D0A54686973206566666563742069732057617262616E642D776964652E0000, 67186), +(3776013982, 1273357, 'enUS', 0x00496E6675736520796F75722061726D6F7220776974682061206661696E74206563686F206F66207468652053756E77656C6C2C20756E6C6F636B696E67206164646974696F6E616C2076697375616C206566666563747320666F72206365727461696E204D69646E6967687420536561736F6E203120636C6173732073657420617070656172616E6365732E0D0A0D0A54686973206566666563742069732057617262616E642D776964652E0000, 67186), +(4167587713, 4140, 'enUS', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'enUS', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E496620796F75207370656E64206174206C65617374203130207365636F6E647320656174696E672C20796F752077696C6C206265636F6D652024407370656C6C6E616D6534353730343920206761696E696E672024313231393137397337205374616D696E6120616E6424313231393137397332207072696D617279207374617420666F7224642E005072696D617279207374617420696E6372656173656420627920247731312E00, 67186), +(3776013982, 1294726, 'enUS', 0x000000, 67186), +(3776013982, 1294720, 'enUS', 0x000000, 67186), +(3776013982, 1294703, 'enUS', 0x000000, 67186), +(3776013982, 1294669, 'enUS', 0x00546865206372656174757265206368617267657320796F752E00546865206372656174757265206368617267657320796F752E00, 67186), +(3776013982, 1294633, 'enUS', 0x0054686520636173746572207370697473206669726562616C6C73206174206120706C6179657220666F722024642C20696E666C696374696E67202431323636373435733120466972652064616D61676520657665727920247431207365632E00496E666C69637473202431323636373435733120466972652064616D61676520657665727920247431207365632E00, 67186), +(3776013982, 1294563, 'enUS', 0x000000, 67186), +(3776013982, 1277795, 'enUS', 0x0044697370656C2074686520696C6C7573696F6E73206F662068696465727320696E20616E206172656120696E2066726F6E74206F6620796F752C206D61726B696E67207468656D20466F756E642E0000, 67186), +(3776013982, 1272179, 'enUS', 0x0050757263686173652061742076656E646F722E0D0A0D0A24407370656C6C6465736331323536313731005468657920676F7420796F75206265666F726520796F7520636F756C6420746167207468656D2E00, 67186), +(3776013982, 1269655, 'enUS', 0x0050757263686173652066726F6D2056656E646F720D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'enUS', 0x0050757263686173652066726F6D2056656E646F720D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'enUS', 0x0050757263686173652066726F6D2056656E646F720D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'enUS', 0x0050757263686173652066726F6D2056656E646F720D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'enUS', 0x0050757263686173652061742056656E646F720D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'enUS', 0x0053776170206C6F636174696F6E7320776974682061206E6561726279204465636F722E0000, 67186), +(3776013982, 1259647, 'enUS', 0x0024407370656C6C64657363343532393933005468652065787069726174696F6E206F66204D69646E6967687420466C61736B732C20506869616C732C20616E642057656C6C2046656420656666656374732068617665206265656E2068616C7465642E00, 67186), +(3776013982, 1258362, 'enUS', 0x000D0A7C434646666666666666436173742054696D653A20312E35207365636F6E64732E0D0A5472617020436F6F6C646F776E3A2035207365636F6E64732E7C520D0A0D0A4966206E6F205365656B65722069732077697468696E2024522079617264732C20796F7520746F737320612024407370656C6C6E616D653132353833353820636F6E7461696E65722077697468696E202472616431207961726473206F6620796F75722063757272656E7420706F736974696F6E2E0D0A0D0A4966207468657265206973206174206C65617374206F6E65205365656B65722077697468696E2024522079617264732C20796F75206C6F6220612024407370656C6C6E616D653132353833353820636F6E7461696E6572206E6561722074686520706F736974696F6E206F662074686520636C6F73657374205365656B657220746F20796F752E0D0A0D0A7C4346463731643566664E6F74653A7C52207C434646643966636666436F6E7461696E6572732074726176656C696E67207468726F75676820746865206169722061726520696E76697369626C6520746F205365656B6572732E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C43464662306230623049742773206E6F742074686520666C617368696573742C2062757420736F6D6574696D657320616C6C2069742074616B657320697320612073696D706C65206469737472616374696F6E20746F20736563757265207468652077696E2E7C520000, 67186), +(3776013982, 1256009, 'enUS', 0x0044697370656C2074686520696C6C7573696F6E73206F662068696465727320696E20616E206172656120696E2066726F6E74206F6620796F752C206D61726B696E67207468656D20466F756E642E0000, 67186), +(3776013982, 1251813, 'enUS', 0x00546865207068616E746F6D2073637265616D73207768656E20736C61696E2C20696E666C696374696E672024733120536861646F772064616D61676520746F20616C6C20706C61796572732E0000, 67186), +(1010104591, 22988, 'enUS', 0x7C63464646464432303056656E646F723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E653A207C7253696C7665726D6F6F6E20436974797C6E7C634646464644323030436F73743A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E646F723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E653A207C7253696C7665726D6F6F6E20436974797C6E7C634646464644323030436F73743A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'enUS', 0x7C63464646464432303056656E646F723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E653A207C7253696C7665726D6F6F6E20436974797C6E7C634646464644323030436F73743A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E646F723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E653A207C7253696C7665726D6F6F6E20436974797C6E7C634646464644323030436F73743A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'enUS', 0x7C6346464646443230305370656369616C697A6174696F6E3A207C724D61726B6574204D6F62696C697479202D204D696E696E67204163636573736F726965737C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'enUS', 0x7C63464646464432303050726F66657373696F6E20547261696E65723A207C724D69646E6967687420456E67696E656572696E6720283335297C6E7C634646464644323030436F73743A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'enUS', 0x7C6346464646443230305370656369616C697A6174696F6E3A207C724D61726B6574204D6F62696C697479202D20456E67696E656572696E67204163636573736F726965737C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'enUS', 0xFFFFFFFFFFFFFFFF54686520417263616E74696E61000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'enUS', 0xFFFFFFFFFFFFFFFF447565205265636F676E6974696F6E00001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'enUS', 0x412072617265206974656D20746861742063616E2072657475726E20736F6D652072656167656E747320746F20796F7520616674657220796F752066696E697368206372616674696E672E7C6E7C6E4761696E20246576312024656E3120666F7220746869732063726166742E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'enUS', 0x496E6372656173657320796F7572206368616E636520746F2072657475726E20736F6D652072656167656E747320746F20796F7520616674657220796F752066696E697368206372616674696E672E7C6E7C6E4761696E20246576312024656E3120666F7220746869732063726166742E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'enUS', 0x412064696D656E73696F6E616C206F646469747920746861742067756172616E74656573206164646974696F6E616C206372616674696E67206F75747075742E7C6E7C6E4761696E20246576312024656E3120666F7220746869732063726166742E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'enUS', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C45004D6178696D756D206E756D626572206F662063686172616374657220626F6F737473207265616368656420666F7220746865206461792E20506C656173652074727920616761696E20746F6D6F72726F772E0003000000, 67186), +(3205218938, 58259, 'enUS', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F636F6F6C646F776E6D616E616765720001000000, 67186), +(3205218938, 58258, 'enUS', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F63646D0001000000, 67186), +(3205218938, 55299, 'enUS', 0x4A4F55524E4559535F43555252454E545F50524F47524553530043757272656E742050726F67726573733A207C636E484947484C494748545F464F4E545F434F4C4F523A2564202F2025647C720001000000, 67186), +(3205218938, 49471, 'enUS', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F47524553530043757272656E742050726F67726573733A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'enUS', 0x000000, 67186), +(3776013982, 1294759, 'enUS', 0x000000, 67186), +(2921112328, 568649, 'enUS', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'enUS', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'enUS', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'enUS', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'enUS', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'enUS', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'enUS', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'enUS', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'enUS', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'enUS', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'enUS', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'enUS', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'enUS', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'enUS', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'enUS', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='enUS') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='enUS') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='enUS') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='enUS') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x507265790044656665617420706F77657266756C20656E656D69657320746F206675656C20417374616C6F72277320656E646561766F72732E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='enUS'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF476F74204E6F2052687974686D0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='enUS'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 273277, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 272911, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'enUS', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='enUS' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C); + +-- +SET @BUILD := 67186; + +UPDATE `item_sparse` SET `VerifiedBuild`=@BUILD WHERE `ID` IN (208392, 242709) AND (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); -- Update Bank Tab Bags + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='enUS' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup +DELETE FROM `hotfix_data` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); + +DELETE FROM `achievement` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `achievement_category` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `adventure_journal` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `adventure_map_poi` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `anim_kit` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `animation_data` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `area_group_member` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `area_table` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `area_trigger` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `area_trigger_action_set` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `armor_location` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_appearance` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_appearance_set` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_category` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_power` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_power_link` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_power_picker` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_power_rank` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_quest_xp` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_tier` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `artifact_unlock` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `auction_house` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_empowered_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_essence` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_essence_power` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_item_milestone_power` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_knowledge_multiplier` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_level_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_power` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_power_set_member` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_tier_unlock` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_tier_unlock_set` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `azerite_unlock_mapping` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `bank_tab` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `banned_addons` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `barber_shop_style` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battle_pet_ability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battle_pet_breed_quality` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battle_pet_breed_state` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battle_pet_species` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battle_pet_species_state` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battlemaster_list` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `battlemaster_list_x_map` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `campaign` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `campaign_x_quest_line` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `cfg_categories` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `cfg_regions` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `challenge_mode_item_bonus_override` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `char_base_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `char_titles` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `character_loadout` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `character_loadout_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chat_channels` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_class_ui_display` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_classes` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_classes_x_power_types` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_customization_choice` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_customization_display_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_customization_element` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_customization_option` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_customization_req` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_customization_req_choice` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_model` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_race_x_chr_model` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_races` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `chr_specialization` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `cinematic_camera` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `cinematic_sequences` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `conditional_chr_model` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `conditional_content_tuning` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `content_tuning` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `content_tuning_x_expected` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `content_tuning_x_label` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `conversation_line` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `corruption_effects` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `crafting_quality` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_difficulty` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_display_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_display_info_extra` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_family` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_label` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_model_data` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `creature_type` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `criteria` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `criteria_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `currency_container` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `currency_types` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `curve` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `curve_point` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `destructible_model_data` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `difficulty` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `dungeon_encounter` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `durability_costs` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `durability_quality` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `emotes` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `emotes_text` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `emotes_text_sound` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `expected_stat` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `expected_stat_mod` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `faction` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `faction_template` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `flight_capability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `friendship_rep_reaction` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `friendship_reputation` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `gameobject_art_kit` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `gameobject_display_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `gameobject_label` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `gameobjects` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_ability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_building` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_building_plot_inst` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_class_spec` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_follower` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_follower_x_ability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_mission` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_plot` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_plot_building` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_plot_instance` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_site_level` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_site_level_plot_inst` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `garr_talent_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `gem_properties` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `global_curve` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `glyph_bindable_spell` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `glyph_properties` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `glyph_required_spec` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `gossip_npc_option` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `guild_color_background` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `guild_color_border` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `guild_color_emblem` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `guild_perk_spells` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `heirloom` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `holidays` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `import_price_armor` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `import_price_quality` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `import_price_shield` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `import_price_weapon` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_appearance` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_armor_quality` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_armor_shield` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_armor_total` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_bag_family` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_bonus` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_bonus_list_group_entry` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_bonus_list_level_delta` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_bonus_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_bonus_tree_node` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_child_equipment` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_class` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_context_picker_entry` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_creation_context` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_currency_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_damage_ammo` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_damage_one_hand` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_damage_one_hand_caster` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_damage_two_hand` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_damage_two_hand_caster` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_disenchant_loot` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_effect` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_extended_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_level_selector` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_level_selector_quality` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_level_selector_quality_set` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_limit_category` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_limit_category_condition` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_modified_appearance` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_modified_appearance_extra` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_name_description` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_offset_curve` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_price_base` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_scaling_config` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_search_name` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_set` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_set_spell` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_sparse` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_spec` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_spec_override` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_squish_era` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_x_bonus_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `item_x_item_effect` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `journal_encounter` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `journal_encounter_section` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `journal_instance` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `journal_tier` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `keystone_affix` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `language_words` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `languages` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `lfg_dungeons` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `light` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `liquid_type` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `location` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `lock` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mail_template` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `map` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `map_challenge_mode` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `map_difficulty` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `map_difficulty_x_condition` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `maw_power` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `modified_crafting_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `modifier_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mount` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mount_capability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mount_equipment` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mount_type_x_capability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mount_x_display` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `movie` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `mythic_plus_season` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `name_gen` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `names_profanity` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `names_reserved` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `names_reserved_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `num_talents_at_level` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `override_spell_data` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `paragon_reputation` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `path` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `path_node` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `path_property` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `perks_activity` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `phase` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `phase_x_phase_group` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `player_condition` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `ID` NOT IN (94459,98613)); +DELETE FROM `player_data_element_account` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `player_data_element_character` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `player_data_flag_account` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `player_data_flag_character` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `power_display` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `power_type` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `prestige_level_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_difficulty` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_season` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_stat` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_talent` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_talent_category` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_talent_slot_unlock` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `pvp_tier` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_faction_reward` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_line_x_quest` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_money_reward` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_package_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_sort` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_v2` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `quest_xp` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `rand_prop_points` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `reward_pack` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `reward_pack_x_currency_type` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `reward_pack_x_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `scenario` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `scenario_step` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `scene_script` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `scene_script_global_text` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `scene_script_package` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `scene_script_text` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `server_messages` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `skill_line` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `skill_line_ability` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `skill_line_x_trait_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `skill_race_class_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `soulbind_conduit_rank` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `sound_kit` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spec_set_member` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `specialization_spells` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_aura_options` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_aura_restrictions` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_cast_times` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_casting_requirements` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_categories` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_category` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_class_options` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_cooldowns` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_duration` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_effect` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_empower` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_empower_stage` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_equipped_items` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_focus_object` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_interrupts` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_item_enchantment` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_item_enchantment_condition` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_keybound_override` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_label` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_learn_spell` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_levels` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_misc` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_name` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_power` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_power_difficulty` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_procs_per_minute` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_procs_per_minute_mod` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_radius` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_range` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_reagents` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_reagents_currency` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_scaling` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_shapeshift` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_shapeshift_form` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_target_restrictions` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_totems` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_visual` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_visual_effect_name` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_visual_kit` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_visual_missile` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `spell_x_spell_visual` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `summon_properties` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `talent` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `taxi_nodes` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `taxi_path` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `taxi_path_node` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `totem_category` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `toy` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_cond` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_cond_account_element` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_currency` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_currency_source` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_definition` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_definition_effect_points` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_edge` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_entry` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_entry_x_trait_cond` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_entry_x_trait_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_group` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_group_x_trait_cond` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_group_x_trait_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_group_x_trait_node` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_x_trait_cond` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_x_trait_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_node_x_trait_node_entry` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_sub_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_system` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_tree` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_tree_loadout` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_tree_loadout_entry` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_tree_x_trait_cost` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `trait_tree_x_trait_currency` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_holiday` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_illusion` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_outfit_entry` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_outfit_slot_info` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_outfit_slot_option` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_set` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_set_group` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_set_item` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_situation` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_situation_group` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transmog_situation_trigger` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transport_animation` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `transport_rotation` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `ui_map` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `ui_map_assignment` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `ui_map_link` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `ui_map_x_map_art` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `ui_splash_screen` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `unit_condition` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `unit_power_bar` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `vehicle` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `vehicle_seat` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `vignette` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `warband_scene` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `wmo_area_table` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `world_effect` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `world_map_overlay` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); +DELETE FROM `world_state_expression` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD); From 47f4122bcdb587295d9d4335e417af3ea2951d55 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:18:35 +0200 Subject: [PATCH 100/175] DB/Hotfixes: Updated deDE hotfixes to 12.0.5.67186 --- .../master/2026_04_29_01_hotfixes_deDE.sql | 2742 +++++++++++++++++ 1 file changed, 2742 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_01_hotfixes_deDE.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_01_hotfixes_deDE.sql b/sql/updates/hotfixes/master/2026_04_29_01_hotfixes_deDE.sql new file mode 100644 index 0000000000000..c28612073d6ba --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_01_hotfixes_deDE.sql @@ -0,0 +1,2742 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'deDE', 'Schließt jeden der unten aufgelisteten Abgrundfischenerfolge ab.', 'Abgrundfischen: Jejus neuer Rivale', '', 67186), +(61883, 'deDE', 'Übersteht die erste Minute eines Dekorationsduells, ohne gefangen zu werden (x3).', 'Jetzt sehr Ihr mich nicht...', '', 67186), +(61887, 'deDE', 'Schließt alle Erfolge des Dekorationsduells ab.', 'Verkleidet bis über beide Ohren', '', 67186), +(61886, 'deDE', 'Erhaltet im Dekorationsduell Zugriff auf alle Setverbesserungen.', 'Mit allem drum und dran', '', 67186), +(61882, 'deDE', 'Werdet im Dekorationsduell erfolgreich den \"gefunden\"-Status los, ohne gefangen zu werden.', 'Gefunden und entwunden', '', 67186), +(61881, 'deDE', 'Bleibt im Dekorationsduell bis zum Schluss versteckt.', 'Versteckt und unentdeckt', '', 67186), +(61880, 'deDE', 'Versteckt Euch im Dekorationsduell und bleibt eineinhalb Minuten am Stück unentdeckt.', 'Es ist kalt hier im Schatten', '', 67186), +(61879, 'deDE', 'Gewinnt im Dekorationsduell eine Runde als Sucher, nachdem alle Versteckten innerhalb von zwei Minuten gefangen wurden.', 'Erwischt!', '', 67186), +(61878, 'deDE', 'Fangt erfolgreich gegnerische Spielercharaktere als arkaner Waldläufer im Dekorationsduell.', 'Markiert und anvisiert', '', 67186), +(61793, 'deDE', 'Fangt erfolgreich gegnerische Spielercharaktere als Nullifizierer im Dekorationsduell.', 'Zur Ehre der Leere', '', 67186), +(61792, 'deDE', 'Fangt erfolgreich gegnerische Spielercharaktere als Zauberbrecher im Dekorationsduell.', 'Schnappt Euch die Zauber!', '', 67186), +(63263, 'deDE', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'deDE', 'Erhaltet eine Wertung für Mythisch+ von mindestens 3.400 in Saison 1 von Midnight.', 'Schlüsselsteinmythos von Midnight: Saison 1', 'Titel: Der/Die Schattenstreiter(in) & Gegenstand: Zeitverlorener Sattel', 67186), +(61594, 'deDE', 'Schließt den Schlüsselsteindungeon Himmelsnadel als Regionsbester ab.', 'Schlüsselsteinsieger: Himmelsnadel', '', 67186), +(61593, 'deDE', 'Schließt den Schlüsselsteindungeon Sitz des Triumvirats als Regionsbester ab.', 'Schlüsselsteinsieger: Sitz des Triumvirats', '', 67186), +(61592, 'deDE', 'Schließt den Schlüsselsteindungeon Die Grube von Saron als Regionsbester ab.', 'Schlüsselsteinsieger: Die Grube von Saron', '', 67186), +(61591, 'deDE', 'Schließt den Schlüsselsteindungeon Akademie von Algeth\'ar als Regionsbester ab.', 'Schlüsselsteinsieger: Akademie von Algeth\'ar', '', 67186), +(61590, 'deDE', 'Schließt den Schlüsselsteindungeon Windläuferturm als Regionsbester ab.', 'Schlüsselsteinsieger: Windläuferturm', '', 67186), +(61589, 'deDE', 'Schließt den Schlüsselsteindungeon Nexuspunkt Xenas als Regionsbester ab.', 'Schlüsselsteinsieger: Nexuspunkt Xenas', '', 67186), +(61588, 'deDE', 'Schließt den Schlüsselsteindungeon Maisarakavernen als Regionsbester ab.', 'Schlüsselsteinsieger: Maisarakavernen', '', 67186), +(61587, 'deDE', 'Schließt den Schlüsselsteindungeon Terrasse der Magister (Midnight) als Regionsbester ab.', 'Schlüsselsteinsieger: Terrasse der Magister (Midnight)', '', 67186), +(61259, 'deDE', 'Beendet Saison 1 von Mythisch+ von Midnight in den Top 0,1% aller Spieler in Eurer Region.', 'Schattenheld: Saison 1 von Midnight', 'Titel: Der/Die Schattenheld(in)', 67186), +(61253, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 30 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 30', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 30 abfallen.', 67186), +(61252, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 29 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 29', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 29 abfallen.', 67186), +(61251, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 28 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 28', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 28 abfallen.', 67186), +(61250, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 27 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 27', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 27 abfallen.', 67186), +(61249, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 26 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 26', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 26 abfallen.', 67186), +(61248, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 25 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 25', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 25 abfallen.', 67186), +(61247, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 24 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 24', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 24 abfallen.', 67186), +(61246, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 23 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 23', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 23 abfallen.', 67186), +(61245, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 22 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 22', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 22 abfallen.', 67186), +(61244, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 21 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 21', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 21 abfallen.', 67186), +(61243, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 20 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 20', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 20 abfallen.', 67186), +(61242, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 19 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 19', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 19 abfallen.', 67186), +(61241, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 18 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 18', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 18 abfallen.', 67186), +(61240, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 17 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 17', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 17 abfallen.', 67186), +(61239, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 16 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 16', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 16 abfallen.', 67186), +(61237, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 15 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 15', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 15 abfallen.', 67186), +(61236, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 14 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 14', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 14 abfallen.', 67186), +(61235, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 13 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 13', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 13 abfallen.', 67186), +(61233, 'deDE', 'Schließt in Saison 1 von Midnight alle Dungeons auf Mythisch+ und der Schlüsselsteinstufe 12 innerhalb des Zeitlimits ab.', 'Saison 1 von Midnight: Abgehärteter Schlüsselstein Stufe 12', 'Schlüsselsteine werden während Saison 1 von Midnight nicht mehr unter Stufe 12 abfallen.', 67186), +(12009, 'deDE', 'Bezwingt L\'ura im Sitz des Triumvirats auf dem Schwierigkeitsgrad \'Mythisch\', während alle Gruppenmitglieder unter dem Einfluss von \'Erdrückende Dunkelheit\' stehen.', 'Im Dunkeln ist gut munkeln', '', 67186), +(12005, 'deDE', 'Lasst Dunkelzahn im Sitz des Triumvirats auf dem Schwierigkeitsgrad \'Mythisch\' mit \'Schattenhaftes Anspringen\' 4 versiegelte Leerenspeicher zerstören und besiegt dann Saprish.', 'Punktlandung', '', 67186), +(12004, 'deDE', 'Zwingt Urjad mit \'Leerenriss\' aus dem Reich der Leere und bezwingt dann ihn und Zuraal den Aufgestiegenen im Sitz des Triumvirats auf dem Schwierigkeitsgrad \'Mythisch\'.', 'Leer ausgegangen', '', 67186), +(9036, 'deDE', 'Bezwingt die Oberste Weise Viryx auf der Himmelsnadel auf dem Schwierigkeitsgrad \'Heroisch\', ohne dabei eines der Schildkonstrukte zu töten.', 'Monomanie', '', 67186), +(9035, 'deDE', 'Veranlasst während der Begegnung mit Rukhran in der Himmelsnadel auf dem Schwierigkeitsgrad \'Heroisch\' drei Aschehaufen dazu, gleichzeitig Sonnenvögel zu formen.', 'Ich sah Solis', '', 67186), +(9034, 'deDE', 'Bezwingt das machterfüllte Konstrukt in der Himmelsnadel auf dem Schwierigkeitsgrad \'Heroisch\'.', 'Was guckst du?', '', 67186), +(9033, 'deDE', 'Bezwingt Ranjit auf dem Schwierigkeitsgrad \'Heroisch\' auf der Himmelsnadel, ohne dabei Schaden durch eine der folgenden Fähigkeiten zu erleiden: \'Wirbelnde Klinge\', \'Windwall\', \'Vier Winde\', \'Lichtreflex\'', 'Allzeit schlachtzugsbereit IV', '', 67186), +(4525, 'deDE', 'Räumt den Gang vor Geißelfürst Tyrannus in der Grube von Saron auf dem Schwierigkeitsgrad \'Heroisch\' beim ersten Versuch leer, ohne dass jemand Schaden durch fallende Eiszapfen erleidet.', 'Nicht nach oben sehen', '', 67186), +(4524, 'deDE', 'Bezwingt Schmiedemeister Garfrost in der Grube von Saron auf dem Schwierigkeitsgrad \'Heroisch\', bevor ein Spieler mehr als 11 Stapel von \'Permafrost\' hat.', 'Elfer raus!', '', 67186), +(62814, 'deDE', '', '', '', 67186), +(62813, 'deDE', '', '', '', 67186), +(62812, 'deDE', '', '', '', 67186), +(62811, 'deDE', '', '', '', 67186), +(62296, 'deDE', '', 'Morgenlichtwappen der Mythen verdient', '', 67186), +(42769, 'deDE', 'Wachst in Saison 1 von Midnight aus den Morgenlichtwappen des Helden heraus.', 'Held der Morgendämmerung', 'Charakterfreischaltung: Tauscht Morgenlichtwappen des Helden gegen Morgenlichtwappen der Mythen ein', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Fangt bei Tauchgängen zum Abgrundfischen 3-mal eine mythische Kreatur.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Verdient 250.000 Punkte in kumulativen Tauchgängen zum Abgrundfischen.', `Reward_lang`='Belohnung: Erhaltet einen abenteuerlustigen Begleiter für Tauchgänge', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Fangt 100 Fische bei Tauchgängen zum Abgrundfischen.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Nutzt Eure Fähigkeit \'Auftauchen!\' bei einem Tauchgang zum Abgrundfischen mit weniger als 10 Sekunden verbleibender Atemluft.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Werdet gewaltsam aus einem Tauchgang zum Abgrundfischen entfernt, während Ihr versucht, über den Graben hinauszuschwimmen.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='Belohnung: Schaltet einen Götzen der Tiefen zum Kauf bei Tieftaucher Tu\'nakit frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Entdeckt 10 uralte Relikte bei Euren Tauchgängen zum Abgrundfischen und erlangt die Aufwertung \"Seichtwassernetz\".', `Reward_lang`='Belohnung: Schaltet ein Dreifadennetz zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Entdeckt 50 versunkene Relikte bei Euren Tauchgängen zum Abgrundfischen.', `Reward_lang`='Belohnung: Schaltet ein Seichtwassernetz zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Sammelt bei Euren Tauchgängen zum Abgrundfischen jede der unten aufgelisteten Kreaturen und erhaltet den grunderprobten Tank.', `Reward_lang`='Belohnung: Schaltet Nalorakks Sauerstofftank zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Sammelt bei Euren Tauchgängen zum Abgrundfischen jede der unten aufgelisteten Kreaturen und erlangt die Aufwertung \"Benutzter Tiefentauchertank\".', `Reward_lang`='Belohnung: Schaltet einen grunderprobten Tank zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Sammelt bei Euren Tauchgängen zum Abgrundfischen jede der unten aufgelisteten Kreaturen.', `Reward_lang`='Belohnung: Schaltet einen benutzten Tiefentauchertank zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Fangt mindestens 500 Fische auf Tauchgängen zum Abgrundfischen und erlangt die Aufwertung \"Tiefenschmiere\".', `Reward_lang`='Belohnung: Schaltet Pahks Grabenflossen zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Fangt mindestens 25 Fische auf einem einzelnen Tauchgang zum Abgrundfischen und erlangt die Aufwertung \"Verstärkte Lötnähte\".', `Reward_lang`='Belohnung: Schaltet Tiefenschmiere zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='deDE'); +UPDATE `achievement_locale` SET `Description_lang`='Fangt mindestens 3 Fische auf Tauchgängen zum Abgrundfischen.', `Reward_lang`='Belohnung: Schaltet verstärkte Lötnähte zum Kauf bei Tieftaucher Jeju frei', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='deDE'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='deDE'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'deDE', 'Ein echter Abgrundfischer, zertifiziert von Tieftaucher Jeju höchstpersönlich.', '|cFFFFD200Verkäufer: |rTieftaucher Tu\'nakit|n|cFFFFD200Zone: |rZul\'Aman|n|cFFFFD200Kosten: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'deDE', 'Welchen Wert möchtet Ihr messen?', 'Welchen Wert möchtet Ihr messen?', 67186), +(289969, 'deDE', 'Ich habe genug der meinen durch die Hände des Silberbunds verloren. \n\nEs war Krieg, sagen sie. Beide Seiten erlitten Verluste, sagen sie. Meine Sonnenhäscher haben nie jemanden aus Dalaran vertrieben. \n\nEine Windläuferin hat ihre gerechte Strafe dafür erhalten, eine Stadt zu säubern. Die andere stellt sich mir heute.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'deDE', 'Leerenbrecher %s', 'Leerenbrecherin %s', 67186), +(1307, 'deDE', '%s der Schattenstreiter', '%s die Schattenstreiterin', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'deDE', '', 67186), +(62821, 'deDE', '', 67186), +(62820, 'deDE', '', 67186), +(62819, 'deDE', '', 67186), +(62818, 'deDE', '', 67186), +(62817, 'deDE', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'deDE', 'Tätowierungsfarbe', 67186), +(8959, 'deDE', 'Tätowierung', 67186), +(8958, 'deDE', 'Augenbinde', 67186), +(8957, 'deDE', 'Hörner', 67186), +(8956, 'deDE', 'Tätowierungsfarbe', 67186), +(8955, 'deDE', 'Tätowierung', 67186), +(8954, 'deDE', 'Augenbinde', 67186), +(8953, 'deDE', 'Hörner', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'deDE', '', 67186), +(224842, 'deDE', 'Dekorationsduelle abgeschlossen', 67186), +(224840, 'deDE', 'Dekorationsduelle abgeschlossen', 67186), +(224838, 'deDE', 'Dekorationsduelle abgeschlossen', 67186), +(223318, 'deDE', 'Abgrundfischen: Nur der beste Fisch (3 mythische)', 67186), +(223121, 'deDE', 'Abgrundfischen: Zertifizierter Tiefentaucher', 67186), +(223119, 'deDE', 'Abgrundfischen: Grabenberserker', 67186), +(222479, 'deDE', 'Abgrundfischen: Perfekte Prozedur', 67186), +(222477, 'deDE', 'Abgrundfischen: Kein Meer kann mich aufhalten', 67186), +(222475, 'deDE', 'Abgrundfischen: Selbst die Besten', 67186), +(222466, 'deDE', 'Abgrundfischen: Götze der Tiefe', 67186), +(222453, 'deDE', 'Abgrundfischen: Harpunenturm des Leerekerns', 67186), +(222438, 'deDE', 'Abgrundfischen: Schwere Harpunenkanone', 67186), +(222436, 'deDE', 'Abgrundfischen: Dreifadennetz', 67186), +(222434, 'deDE', 'Abgrundfischen: Seichtwassernetz', 67186), +(222432, 'deDE', 'Abgrundfischen: Nalorakks Sauerstofftank', 67186), +(222430, 'deDE', 'Abgrundfischen: Grunderprobter Tank', 67186), +(222428, 'deDE', 'Abgrundfischen: Benutzter Tiefentauchertank', 67186), +(222426, 'deDE', 'Abgrundfischen: Pahks Grabenflossen', 67186), +(222424, 'deDE', 'Abgrundfischen: Tiefenschmiere', 67186), +(222422, 'deDE', 'Abgrundfischen: Verstärkte Lötnähte', 67186), +(222416, 'deDE', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'deDE', 'Kyrennas Khadgarimitat', 67186), +(220967, 'deDE', 'Übersteht die erste Minute eines Dekorationsduells, ohne gefangen zu werden.', 67186), +(220603, 'deDE', 'Bomberangriff', 67186), +(220574, 'deDE', 'Gefangen!', 67186), +(220573, 'deDE', 'Ungeladener Gast', 67186), +(212256, 'deDE', 'Abgrundfischenereignis abgeschlossen', 67186), +(212255, 'deDE', 'Schließt das Abgrundfischenereignis ab', 67186), +(229140, 'deDE', '', 67186), +(229139, 'deDE', '', 67186), +(229048, 'deDE', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'deDE', 'Besiegt Streitkräfte der Hal\'hadar', 67186), +(225426, 'deDE', 'Besiegt Streitkräfte der Hal\'hadar', 67186), +(223423, 'deDE', 'Geisterpfoten befreit', 67186), +(223697, 'deDE', '', 67186), +(223696, 'deDE', '', 67186), +(223695, 'deDE', '', 67186), +(223693, 'deDE', '', 67186), +(219734, 'deDE', '', 67186), +(209802, 'deDE', 'Rüstet Euren Begleiter mit einer Kampfkuriosität aus', 67186), +(170782, 'deDE', 'Rüstet Euren Begleiter mit einer Kampfkuriosität aus', 67186), +(228515, 'deDE', 'Wertungsvoraussetzung', 67186), +(228514, 'deDE', 'Erfolg: Schlüsselsteinmythos: Dungeons von Saison 1 von Midnight', 67186), +(227753, 'deDE', '', 67186), +(227677, 'deDE', '', 67186), +(227676, 'deDE', '', 67186), +(227675, 'deDE', '', 67186), +(227674, 'deDE', '', 67186), +(227673, 'deDE', '', 67186), +(227672, 'deDE', '', 67186), +(227671, 'deDE', '', 67186), +(225639, 'deDE', '', 67186), +(225638, 'deDE', '', 67186), +(225637, 'deDE', '', 67186), +(225636, 'deDE', '', 67186), +(225635, 'deDE', '', 67186), +(225634, 'deDE', 'Abgrundfischen: Perlen für den Abgrund', 67186), +(225611, 'deDE', '', 67186), +(225610, 'deDE', '', 67186), +(225609, 'deDE', 'Abgrundfischen: Antiquitätensammler', 67186), +(220963, 'deDE', 'Spielt eine Partie, ohne gefangen zu werden.', 67186), +(220961, 'deDE', 'Bleibt 90 Sek. am Stück unentdeckt.', 67186), +(220959, 'deDE', 'Gewinnt innerhalb von zwei Minuten als Sucher.', 67186), +(220958, 'deDE', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'deDE', 'Fangt einen gefundenen Versteckten als arkanen Waldläufer.', 67186), +(220955, 'deDE', 'Fangt einen gefundenen Versteckten als Nullifizierer.', 67186), +(220725, 'deDE', 'Fangt einen gefundenen Versteckten als Zauberbrecher', 67186), +(227430, 'deDE', '', 67186), +(223818, 'deDE', '', 67186), +(216419, 'deDE', '', 67186), +(216418, 'deDE', '', 67186), +(216417, 'deDE', '', 67186), +(227429, 'deDE', '', 67186), +(227428, 'deDE', 'Hat einen jungen Sonnenflitzer als Haustier', 67186), +(225732, 'deDE', 'Aufwertung \"Seichtwassernetz\" erhalten', 67186), +(224745, 'deDE', 'Wächter aktiviert', 67186), +(222969, 'deDE', 'Stillwispertümpel verteidigt', 67186), +(222803, 'deDE', 'Barrieren beschädigt', 67186), +(221550, 'deDE', 'Animierte Geißelsplitter getötet', 67186), +(219955, 'deDE', 'Saugoidennestseher getötet', 67186), +(219466, 'deDE', 'Saugoidennestseher getötet', 67186), +(225670, 'deDE', '', 67186), +(225668, 'deDE', '', 67186), +(225666, 'deDE', '', 67186), +(225664, 'deDE', '', 67186), +(227206, 'deDE', '', 67186), +(223209, 'deDE', 'Statistik: Morgenlichtwappen der Mythen verdient', 67186), +(212362, 'deDE', 'Erreicht in Saison 1 von Midnight eine durchschnittliche Gegenstandsstufe von 285 (Morgenlichtwappen der Mythen entwachsen)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='deDE'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'deDE', 'Nebulöser Leerenkern', 'Kann beim Sieg über starke Gegner in Schlachtzügen von Saison 1 von Midnight, beim Abschluss von Dungeons auf Mythisch+ oder großzügigen Tiefen und Beutejagden auf dem Schwierigkeitsgrad \'Alptraum\' in mächtige Ausrüstung umgewandelt werden.', 67186), +(3347, 'deDE', 'Morgenlichtwappen der Mythen', 'Wird verwendet, um mythische Ausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 276-289 aufzuwerten.\n\nIm Falle der Herstellung von Gegenständen wird die Stufe des hergestellten Gegenstands je nach Qualität auf 272-285 gesetzt.\n\nWird durch die folgenden Aktivitäten verdient:\n\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Mythisch)\n- Mythische Schlüsselsteindungeons (+9 und höher)', 67186), +(3346, 'deDE', 'Morgenlichtwappen des Helden', 'Wird verwendet, um Heldenausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 263-276 aufzuwerten. Wird durch die folgenden Aktivitäten verdient:\n\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Heroisch)\n- Mythische Schlüsselsteindungeons von +4 bis +8\n- Tiefen (Stufe 11)\n- Belohnung des Schatzsuchers (Stufe 8 und höher)\n- Beutejagden (Alptraum)', 67186), +(3345, 'deDE', 'Morgenlichtwappen des Helden', 'Wird verwendet, um Heldenausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 263-276 aufzuwerten.\n\nIm Falle der Herstellung von Gegenständen wird die Stufe des hergestellten Gegenstands je nach Qualität auf 259-272 gesetzt.\n\nWird durch die folgenden Aktivitäten verdient:\n\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Heroisch)\n- Mythische Schlüsselsteindungeons von +4 bis +8\n- Tiefen (Stufe 11)\n- Belohnung des Schatzsuchers (Stufe 8 und höher)\n- Beutejagden (Alptraum)', 67186), +(3344, 'deDE', 'Morgenlichtwappen des Champions', 'Wird verwendet, um Championausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 250-263 aufzuwerten. Wird durch die folgenden Aktivitäten verdient:\n\n- Wöchentliche Aktivitäten in der Außenwelt\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Normal)\n- Mythische Saisondungeons\n- Mythische Schlüsselsteindungeons von +2 bis +3\n- Tiefen (Stufen 7 bis 10)\n- Belohnung des Schatzsuchers (Stufen 6 bis 7)\n- Beutejagden (Alptraum)', 67186), +(3343, 'deDE', 'Morgenlichtwappen des Champions', 'Wird verwendet, um Championausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 250-263 aufzuwerten. Wird durch die folgenden Aktivitäten verdient:\n\n- Wöchentliche Aktivitäten in der Außenwelt\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Normal)\n- Mythische Saisondungeons\n- Mythische Schlüsselsteindungeons von +2 bis +3\n- Tiefen (Stufen 7 bis 10)\n- Belohnung des Schatzsuchers (Stufen 6 bis 7)\n- Beutejagden (Alptraum)', 67186), +(3342, 'deDE', 'Morgenlichtwappen des Veteranen', 'Wird verwendet, um Veteranenausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 237-250 aufzuwerten. Wird durch die folgenden Aktivitäten verdient:\n\n- Wiederholbare Aktivitäten in der Außenwelt\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Schlachtzugsbrowser)\n- Heroische Saisondungeons\n- Tiefen (Stufen 5 bis 6)\n- Belohnung des Schatzsuchers (Stufen 4 bis 5)\n- Beutejagden (Schwer)', 67186), +(3341, 'deDE', 'Morgenlichtwappen des Veteranen', 'Wird verwendet, um Veteranenausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 237-250 aufzuwerten.\n\nIm Falle der Herstellung von Gegenständen wird die Stufe des hergestellten Gegenstands je nach Qualität auf 233-246 gesetzt.\n\nWird durch die folgenden Aktivitäten verdient:\n\n- Wiederholbare Aktivitäten in der Außenwelt\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Schlachtzugsbrowser)\n- Heroische Saisondungeons\n- Tiefen (Stufen 5 bis 6)\n- Belohnung des Schatzsuchers (Stufen 4 bis 5)\n- Beutejagden (Schwer)', 67186), +(3418, 'deDE', 'Nebulöser Leerenkern', 'Kann beim Sieg über starke Gegner in Schlachtzügen von Saison 1 von Midnight, beim Abschluss von Dungeons auf Mythisch+ oder großzügigen Tiefen und Beutejagden auf dem Schwierigkeitsgrad \'Alptraum\' in mächtige Ausrüstung umgewandelt werden.', 67186), +(3391, 'deDE', 'Morgenlichtwappen des Abenteurers', 'Wird verwendet, um Abenteurerausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 224-237 aufzuwerten. Wird durch die folgenden Aktivitäten verdient:\n\n- Wiederholbare Aktivitäten in der Außenwelt\n- Tiefen (Stufe 4)\n- Beutejagden (Normal)', 67186), +(3383, 'deDE', 'Morgenlichtwappen des Abenteurers', 'Wird verwendet, um Abenteurerausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 224-237 aufzuwerten.\n\nIm Falle der Herstellung von Gegenständen wird die Stufe des hergestellten Gegenstands je nach Qualität auf 220-233 gesetzt.\n\nWird durch die folgenden Aktivitäten verdient:\n\nWiederholbare Aktivitäten in der Außenwelt\n- Tiefen (Stufe 4)\n- Beutejagden (Normal)', 67186), +(3348, 'deDE', 'Morgenlichtwappen der Mythen', 'Wird verwendet, um mythische Ausrüstung der Saison 1 von Midnight auf die Gegenstandsstufen 276-289 aufzuwerten. Wird durch die folgenden Aktivitäten verdient:\n\n- Leerenspitze, Traumriss, Marsch auf Quel\'Danas (Heroisch)\n- Mythische Schlüsselsteindungeons (+9 und höher)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='deDE'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'deDE', 'Rukhran', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'deDE', 'Auge von Acherus', 67186), +(264717, 'deDE', 'Verhexungsschutz der Amani', 67186), +(264338, 'deDE', 'Steuerkonsole der Domanaar', 67186), +(264336, 'deDE', 'Leerenlichtkohlenpfanne', 67186), +(264332, 'deDE', 'Ritualaltar der Amani', 67186), +(263238, 'deDE', 'Langer Schwarzschauertisch', 67186), +(263230, 'deDE', 'Bücherregal des Magisters', 67186), +(256683, 'deDE', 'Trainingsattrappe von Silbermond', 67186), +(253451, 'deDE', 'Schleierwurzelbrunnen', 67186), +(245938, 'deDE', 'Überwuchertes Rankgerüst der Arathi', 67186), +(245560, 'deDE', 'Ockerfenster der Metbrauerei', 67186), +(241044, 'deDE', 'Kiste von Argus', 67186), +(267641, 'deDE', 'Befleckte Silbermondsonnenkrone', 67186), +(267640, 'deDE', 'Befleckter Silbermondsonnenschleier', 67186), +(267639, 'deDE', 'Befleckter Silbermondsonnenschutz', 67186), +(267638, 'deDE', 'Befleckte Silbermondsonnenspitze', 67186), +(267607, 'deDE', 'Nebelhafte Handwickel', 67186), +(267606, 'deDE', 'Handschuhe der unendlichen Schwerkraft', 67186), +(267605, 'deDE', 'Handschutz des endlosen Vortex', 67186), +(267604, 'deDE', 'Klauen der kolossalen Ungetüme', 67186), +(267482, 'deDE', 'Großgürtel des aufstrebenden Hara\'tibeschützers', 67186), +(267481, 'deDE', 'Gürtel des aufstrebenden Hara\'tibeschützers', 67186), +(267480, 'deDE', 'Kordel des aufstrebenden Hara\'tibeschützers', 67186), +(267479, 'deDE', 'Schärpe des aufstrebenden Hara\'tibeschützers', 67186), +(266432, 'deDE', 'Silbermondsonnenkrone', 67186), +(266431, 'deDE', 'Silbermondsonnenschleier', 67186), +(266430, 'deDE', 'Silbermondsonnenschutz', 67186), +(266429, 'deDE', 'Silbermondsonnenspitze', 67186), +(263269, 'deDE', 'Großgürtel des Hara\'tibeschützers', 67186), +(263268, 'deDE', 'Gürtel des Hara\'tibeschützers', 67186), +(263267, 'deDE', 'Kordel des Hara\'tibeschützers', 67186), +(263265, 'deDE', 'Schärpe des Hara\'tibeschützers', 67186), +(272961, 'deDE', 'Klingenstab des Zauberbrechers', 67186), +(272960, 'deDE', 'Schildwall des Zauberbrechers', 67186), +(272318, 'deDE', 'Phönixklinge des Zauberbrechers', 67186), +(272317, 'deDE', 'Phönixgleve des Zauberbrechers', 67186), +(272316, 'deDE', 'Klingenlanze des Zauberbrechers', 67186), +(19355, 'deDE', 'Fokussierstab der Schattenschwingen', 67186), +(272338, 'deDE', 'Zauberstahl der Magierwache', 67186), +(272337, 'deDE', 'Zauberklinge der Magierwache', 67186), +(272336, 'deDE', 'Risszerkracher des Nullsignals', 67186), +(272321, 'deDE', 'Zauberbogen des arkanen Waldläufers', 67186), +(272320, 'deDE', 'Risskanalisierer des Nullsignals', 67186), +(273874, 'deDE', 'Leerenberührte Sonnenzornstangenaxt', 67186), +(263970, 'deDE', 'Leerenberührte Glevenklinge', 67186), +(263969, 'deDE', 'Leerenberührter Großzauberstab', 67186), +(263968, 'deDE', 'Leerenberührter Fokus', 67186), +(263967, 'deDE', 'Leerenberührter Großbogen', 67186), +(263966, 'deDE', 'Leerenberührte Großklinge', 67186), +(263963, 'deDE', 'Leerenberührte Duellklinge', 67186), +(263960, 'deDE', 'Leerenberührte Breitklinge', 67186), +(263959, 'deDE', 'Leerenberührter Foliant', 67186), +(263956, 'deDE', 'Leerenberührter Zerkracher', 67186), +(263954, 'deDE', 'Leerenberührter Kampfstab', 67186), +(263952, 'deDE', 'Leerenberührter Sonnenzornstab', 67186), +(263950, 'deDE', 'Leerenberührter Spaten', 67186), +(263949, 'deDE', 'Leerenberührtes Bollwerk', 67186), +(263946, 'deDE', 'Leerenberührter Drescher', 67186), +(263943, 'deDE', 'Leerenberührter Ausweider', 67186), +(263942, 'deDE', 'Leerenberührter Reißzahn', 67186), +(263941, 'deDE', 'Leerenberührtes Gewehr', 67186), +(263707, 'deDE', 'Armreife des Leerenzorns', 67186), +(263706, 'deDE', 'Umhang des Leerenzorns', 67186), +(263705, 'deDE', 'Gürtelbund des Leerenzorns', 67186), +(263704, 'deDE', 'Schulterstücke des Leerenzorns', 67186), +(263703, 'deDE', 'Beinplatten des Leerenzorns', 67186), +(263702, 'deDE', 'Helm des Leerenzorns', 67186), +(263701, 'deDE', 'Stulpen des Leerenzorns', 67186), +(263700, 'deDE', 'Sabatons des Leerenzorns', 67186), +(263699, 'deDE', 'Brustplatte des Leerenzorns', 67186), +(263698, 'deDE', 'Bluse der Leerennemesis', 67186), +(263697, 'deDE', 'Armschienen der Leerennemesis', 67186), +(263696, 'deDE', 'Umhang der Leerennemesis', 67186), +(263695, 'deDE', 'Gürtel der Leerennemesis', 67186), +(263694, 'deDE', 'Schiftung der Leerennemesis', 67186), +(263693, 'deDE', 'Gamaschen der Leerennemesis', 67186), +(263692, 'deDE', 'Schädelkappe der Leerennemesis', 67186), +(263691, 'deDE', 'Handschuhe der Leerennemesis', 67186), +(263690, 'deDE', 'Stiefel der Leerennemesis', 67186), +(263689, 'deDE', 'Roben der Leerennemesis', 67186), +(263688, 'deDE', 'Schienbeinschützer der Leerenstürme', 67186), +(263687, 'deDE', 'Armschienen der Leerenstürme', 67186), +(263686, 'deDE', 'Umhang der Leerenstürme', 67186), +(263685, 'deDE', 'Gürtel der Leerenstürme', 67186), +(263684, 'deDE', 'Schulterklappen der Leerenstürme', 67186), +(263683, 'deDE', 'Kilt der Leerenstürme', 67186), +(263682, 'deDE', 'Helm der Leerenstürme', 67186), +(263681, 'deDE', 'Stulpen der Leerenstürme', 67186), +(263680, 'deDE', 'Sabatons der Leerenstürme', 67186), +(263679, 'deDE', 'Brustplatte der Leerenstürme', 67186), +(263678, 'deDE', 'Leerenzahnarmschienen', 67186), +(263677, 'deDE', 'Leerenzahnumhang', 67186), +(263676, 'deDE', 'Leerenzahngürtel', 67186), +(263675, 'deDE', 'Leerenzahnschiftung', 67186), +(263674, 'deDE', 'Leerenzahnhose', 67186), +(263673, 'deDE', 'Leerenzahnkapuze', 67186), +(263672, 'deDE', 'Leerenzahnhandschuhe', 67186), +(263671, 'deDE', 'Leerenzahnstiefel', 67186), +(263670, 'deDE', 'Leerenzahnbrustharnisch', 67186), +(263669, 'deDE', 'Bluse des Leerenaufstiegs', 67186), +(263668, 'deDE', 'Bindungen des Leerenaufstiegs', 67186), +(263667, 'deDE', 'Umhang des Leerenaufstiegs', 67186), +(263666, 'deDE', 'Gürtel des Leerenaufstiegs', 67186), +(263665, 'deDE', 'Schulterstücke des Leerenaufstiegs', 67186), +(263664, 'deDE', 'Gamaschen des Leerenaufstiegs', 67186), +(263663, 'deDE', 'Strahlenkranz des Leerenaufstiegs', 67186), +(263662, 'deDE', 'Handschützer des Leerenaufstiegs', 67186), +(263661, 'deDE', 'Stiefel des Leerenaufstiegs', 67186), +(263660, 'deDE', 'Roben des Leerenaufstiegs', 67186), +(263659, 'deDE', 'Schienbeinschützer des Leerenurteils', 67186), +(263658, 'deDE', 'Bindungen des Leerenurteils', 67186), +(263657, 'deDE', 'Umhang des Leerenurteils', 67186), +(263656, 'deDE', 'Gürtel des Leerenurteils', 67186), +(263655, 'deDE', 'Schiftung des Leerenurteils', 67186), +(263654, 'deDE', 'Beinplatten des Leerenurteils', 67186), +(263653, 'deDE', 'Krone des Leerenurteils', 67186), +(263652, 'deDE', 'Stulpen des Leerenurteils', 67186), +(263651, 'deDE', 'Sabatons des Leerenurteils', 67186), +(263650, 'deDE', 'Brustplatte des Leerenurteils', 67186), +(263649, 'deDE', 'Bindungen des Leerenakolythen', 67186), +(263648, 'deDE', 'Umhang des Leerenakolythen', 67186), +(263647, 'deDE', 'Kordel des Leerenakolythen', 67186), +(263646, 'deDE', 'Schiftung des Leerenakolythen', 67186), +(263645, 'deDE', 'Hose des Leerenakolythen', 67186), +(263644, 'deDE', 'Helm des Leerenakolythen', 67186), +(263643, 'deDE', 'Handschutz des Leerenakolythen', 67186), +(263642, 'deDE', 'Krallen des Leerenakolythen', 67186), +(263641, 'deDE', 'Weste des Leerenakolythen', 67186), +(263640, 'deDE', 'Leerenwindbluse', 67186), +(263639, 'deDE', 'Leerenwindbindungen', 67186), +(263638, 'deDE', 'Leerenwindumhang', 67186), +(263637, 'deDE', 'Leerenwindgürtel', 67186), +(263636, 'deDE', 'Leerenwindmantel', 67186), +(263635, 'deDE', 'Leerenwindhosen', 67186), +(263634, 'deDE', 'Leerenwindkrone', 67186), +(263633, 'deDE', 'Leerenwindhandschuhe', 67186), +(263632, 'deDE', 'Leerenwindstiefel', 67186), +(263631, 'deDE', 'Leerenwindroben', 67186), +(263630, 'deDE', 'Armschienen des Leerenpirschers', 67186), +(263629, 'deDE', 'Umhang des Leerenpirschers', 67186), +(263628, 'deDE', 'Gürtel des Leerenpirschers', 67186), +(263627, 'deDE', 'Schiftung des Leerenpirschers', 67186), +(263626, 'deDE', 'Beinschützer des Leerenpirschers', 67186), +(263625, 'deDE', 'Helm des Leerenpirschers', 67186), +(263624, 'deDE', 'Stulpen des Leerenpirschers', 67186), +(263623, 'deDE', 'Schienbeinschützer des Leerenpirschers', 67186), +(263622, 'deDE', 'Brustplatte des Leerenpirschers', 67186), +(263621, 'deDE', 'Unterarmschienen des Leerenwächters', 67186), +(263620, 'deDE', 'Umhang des Leerenwächters', 67186), +(263619, 'deDE', 'Gürtung des Leerenwächters', 67186), +(263618, 'deDE', 'Schulterstücke des Leerenwächters', 67186), +(263617, 'deDE', 'Beinplatten des Leerenwächters', 67186), +(263616, 'deDE', 'Krone des Leerenwächters', 67186), +(263615, 'deDE', 'Klauen des Leerenwächters', 67186), +(263614, 'deDE', 'Krallen des Leerenwächters', 67186), +(263613, 'deDE', 'Brustplatte des Leerenwächters', 67186), +(263612, 'deDE', 'Leerenwutbrustschutz', 67186), +(263611, 'deDE', 'Leerenwutarmschienen', 67186), +(263610, 'deDE', 'Leerenwutumhang', 67186), +(263609, 'deDE', 'Leerenwutgürtel', 67186), +(263608, 'deDE', 'Leerenwutschulterstücke', 67186), +(263607, 'deDE', 'Leerenwutbeinschützer', 67186), +(263606, 'deDE', 'Leerenwutbedeckung', 67186), +(263605, 'deDE', 'Leerenwuthandschützer', 67186), +(263604, 'deDE', 'Leerenwutstiefel', 67186), +(263603, 'deDE', 'Leerenwutrobe', 67186), +(263602, 'deDE', 'Armschienen des Leerwandlers', 67186), +(263601, 'deDE', 'Umhang des Leerwandlers', 67186), +(263600, 'deDE', 'Kordel des Leerwandlers', 67186), +(263599, 'deDE', 'Schulterklingen des Leerwandlers', 67186), +(263598, 'deDE', 'Gamaschen des Leerwandlers', 67186), +(263597, 'deDE', 'Schädelkappe des Leerwandlers', 67186), +(263596, 'deDE', 'Handschuhe des Leerwandlers', 67186), +(263595, 'deDE', 'Sandalen des Leerwandlers', 67186), +(263594, 'deDE', 'Harnisch des Leerwandlers', 67186), +(263593, 'deDE', 'Unterarmschienen des Leerenreiters', 67186), +(263592, 'deDE', 'Umhang des Leerenreiters', 67186), +(263591, 'deDE', 'Gürtung des Leerenreiters', 67186), +(263590, 'deDE', 'Schulterstücke des Leerenreiters', 67186), +(263589, 'deDE', 'Gamaschen des Leerenreiters', 67186), +(263588, 'deDE', 'Helm des Leerenreiters', 67186), +(263587, 'deDE', 'Handschuhe des Leerenreiters', 67186), +(263586, 'deDE', 'Sabatons des Leerenreiters', 67186), +(263585, 'deDE', 'Brustplatte des Leerenreiters', 67186), +(251161, 'deDE', 'Antlitz des Seelenjägers', 67186), +(133494, 'deDE', 'Geschmackloser Zombiegürtel', 67186), +(49810, 'deDE', 'Geschmackloser Zombiegürtel', 67186), +(263286, 'deDE', 'Umfunktionierter Gong der Fungianer', 67186), +(255627, 'deDE', 'Hammer des galaktischen Gladiators', 67186), +(253582, 'deDE', 'Fangflossenflegel', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'deDE', 'Lehrt Euch, wie man die Verzauberung \'Illusorische Verzierung: Träume\' durchführt.', '', '', '', 'Formel: Illusorische Verzierung: Träume', 67186), +(206969, 'deDE', '', '', '', '', 'Illusorische Verzierung: Träume', 67186), +(206968, 'deDE', '', '', '', '', 'Illusorische Verzierung: Träume', 67186), +(206967, 'deDE', '', '', '', '', 'Illusorische Verzierung: Träume', 67186), +(204977, 'deDE', 'Lehrt Euch, wie man die Verzauberung \'Illusorische Verzierung: Sporen\' durchführt.', '', '', '', 'Formel: Illusorische Verzierung: Sporen', 67186), +(204568, 'deDE', '', '', '', '', 'Illusorische Verzierung: Sporen', 67186), +(204567, 'deDE', '', '', '', '', 'Illusorische Verzierung: Sporen', 67186), +(204565, 'deDE', '', '', '', '', 'Illusorische Verzierung: Sporen', 67186), +(201321, 'deDE', '', '', '', '', 'Illusorische Verzierung: Ordnung', 67186), +(201320, 'deDE', '', '', '', '', 'Illusorische Verzierung: Ordnung', 67186), +(201319, 'deDE', '', '', '', '', 'Illusorische Verzierung: Ordnung', 67186), +(201318, 'deDE', '', '', '', '', 'Illusorische Verzierung: Luft', 67186), +(201317, 'deDE', '', '', '', '', 'Illusorische Verzierung: Luft', 67186), +(201316, 'deDE', '', '', '', '', 'Illusorische Verzierung: Luft', 67186), +(201315, 'deDE', '', '', '', '', 'Illusorische Verzierung: Erde', 67186), +(201314, 'deDE', '', '', '', '', 'Illusorische Verzierung: Erde', 67186), +(201313, 'deDE', '', '', '', '', 'Illusorische Verzierung: Erde', 67186), +(201312, 'deDE', '', '', '', '', 'Illusorische Verzierung: Frost', 67186), +(201311, 'deDE', '', '', '', '', 'Illusorische Verzierung: Frost', 67186), +(201310, 'deDE', '', '', '', '', 'Illusorische Verzierung: Frost', 67186), +(200616, 'deDE', '', '', '', '', 'Illusorische Verzierung: Feuer', 67186), +(200615, 'deDE', '', '', '', '', 'Illusorische Verzierung: Feuer', 67186), +(200614, 'deDE', '', '', '', '', 'Illusorische Verzierung: Feuer', 67186), +(245345, 'deDE', 'Ein verschmolzenes Partikel reiner, ursprünglicher Energie. Kann bei der Überflusshändlerin Chel der Kerbe oder dem Abgrundfischer Tieftaucher Tu\'nakit erworben werden.', '', '', '', 'Verschmolzene Vitalität', 67186), +(243343, 'deDE', 'Ein Fenster in unbekannte Tiefen.', '', '', '', 'Angleranomalie', 67186), +(243302, 'deDE', 'Ein überwältigender Wachstumskatalysator.', '', '', '', 'Blüte des Wassermanns', 67186), +(274267, 'deDE', 'Ein verschmolzenes Partikel reiner, ursprünglicher Energie. Kann bei der Überflusshändlerin Chel der Kerbe oder dem Abgrundfischer Tieftaucher Tu\'nakit erworben werden.', '', '', '', 'Verschmolzene Vitalität', 67186), +(255157, 'deDE', '', '', '', '', 'Angeltagebuch des Abgrundfischers', 67186), +(239563, 'deDE', 'Lehrt Euch, wie man einen leerenvernarbten Luchs beschwört. Dieses Reittier passt sich Eurer Reitfertigkeit und Eurem Aufenthaltsort an.', '', '', '', 'Schattenbundleine', 67186), +(223245, 'deDE', '', '', '', '', 'Ensemble: Abgrundfischer', 67186), +(267009, 'deDE', '', '', '', '', 'Trainingsattrappe der Amani', 67186), +(267007, 'deDE', '', '', '', '', 'Auge von Acherus', 67186), +(264717, 'deDE', '', '', '', '', 'Verhexungsschutz der Amani', 67186), +(264342, 'deDE', '', '', '', '', 'Kosmische Leerentruhe', 67186), +(264338, 'deDE', '', '', '', '', 'Steuerkonsole der Domanaar', 67186), +(264336, 'deDE', '', '', '', '', 'Leerenlichtkohlenpfanne', 67186), +(264332, 'deDE', '', '', '', '', 'Ritualaltar der Amani', 67186), +(264330, 'deDE', '', '', '', '', 'Hängende Kohlenpfanne der Amani', 67186), +(264329, 'deDE', '', '', '', '', 'Esstisch der Amani', 67186), +(264258, 'deDE', '', '', '', '', 'Blühender Schmelzofen', 67186), +(263238, 'deDE', '', '', '', '', 'Langer Schwarzschauertisch', 67186), +(263233, 'deDE', '', '', '', '', 'Drehende Bibliothek der Sin\'dorei', 67186), +(263230, 'deDE', '', '', '', '', 'Bücherregal des Magisters', 67186), +(263042, 'deDE', '', '', '', '', 'Wurzellichtlaternenmast', 67186), +(263036, 'deDE', '', '', '', '', 'Hängende Morgenblüte', 67186), +(256683, 'deDE', '', '', '', '', 'Trainingsattrappe von Silbermond', 67186), +(253451, 'deDE', '', '', '', '', 'Schleierwurzelbrunnen', 67186), +(251967, 'deDE', '', '', '', '', 'Fungianisches Banner', 67186), +(245938, 'deDE', '', '', '', '', 'Überwuchertes Rankgerüst der Arathi', 67186), +(245560, 'deDE', '', '', '', '', 'Ockerfenster der Metbrauerei', 67186), +(241044, 'deDE', '', '', '', '', 'Kiste von Argus', 67186), +(264914, 'deDE', 'Der Vorrat enthält Feldauszeichnungen, Reliktkastenschlüsselsplitter, Materialien zur Aufwertung von Ausrüstung, Gold und mehr.', '', '', '', 'Vorrat des Waldläufers', 67186), +(275447, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Spekulativer Schredderpanzer', 67186), +(275446, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Hochrentierlicher Schredderpanzer', 67186), +(275445, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Profitgrüner Schredderpanzer', 67186), +(275444, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Blaujetonschredderpanzer', 67186), +(275442, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Amethystfarbener Mechanzug', 67186), +(275440, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Himmelblauer Todeswandler', 67186), +(275436, 'deDE', 'Wird von dem Erfolg Schlüsselsteinmythos von Midnight: Saison 1 gewährt. Lindormi, auffindbar in Silbermond oder in den Zeitwegen, hätte sicherlich Interesse daran. Verfällt am Ende der Saison.', '', '', '', 'Zeitverlorener Sattel', 67186), +(248248, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Azurblauer Leerenflieger', 67186), +(247822, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Karmesinroter Leerenflieger', 67186), +(237141, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Unternehmerischer Schredderpanzer', 67186), +(235549, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Karmesinroter Schredderpanzer', 67186), +(226357, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Diamantener Mechanzug', 67186), +(213438, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Ewiges Panzerdon', 67186), +(209060, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Tiefgrünes Panzerdon', 67186), +(204798, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Infernopanzerdon', 67186), +(199412, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Hagelsturmpanzerdon', 67186), +(192557, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Todeswandler der Wiederherstellung', 67186), +(187682, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Verlustverzerrter Todeswandler', 67186), +(187525, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Seelenverzerrter Todeswandler', 67186), +(182717, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Sündenbehafteter Todeswandler', 67186), +(174836, 'deDE', 'Lehrt Euch, wie man dieses Reittier beschwört.', '', '', '', 'Erweckter Gedankenbohrer', 67186), +(257741, 'deDE', 'Kann im Auktionshaus verkauft und erworben werden.', '', '', '', 'B0P, Kurator der Bumms', 67186), +(257735, 'deDE', 'Kann im Auktionshaus verkauft und erworben werden.', '', '', '', 'B0P, Kurator der Bumms', 67186), +(255844, 'deDE', 'Kann im Auktionshaus verkauft und erworben werden.', '', '', '', 'HU5H der lässige Welpe', 67186), +(255843, 'deDE', 'Kann im Auktionshaus verkauft und erworben werden.', '', '', '', 'HU5H der lässige Welpe', 67186), +(248592, 'deDE', 'Beschwört B1P den Seelenversenger. Wird von Spielercharakteren hergestellt, die den Beruf Ingenieurskunst ausüben. Kann im Auktionshaus verkauft und erworben werden.', '', '', '', 'B1P der Seelenversenger', 67186), +(248135, 'deDE', 'Beschwört B1P den Seelenversenger. Wird von Spielercharakteren hergestellt, die den Beruf Ingenieurskunst ausüben. Kann im Auktionshaus verkauft und erworben werden.', '', '', '', 'B1P der Seelenversenger', 67186), +(274427, 'deDE', 'WARNUNG: Ohne Gewähr. Enthält möglicherweise kein tatsächliches Reittier.', '', '', '', 'Beutekiste des Sha', 67186), +(267643, 'deDE', '', '', '', '', 'Abgenutzte Totemschnur der Amani', 67186), +(267642, 'deDE', '', '', '', '', 'Abgenutzter Herzschnuranhänger der Amani', 67186), +(267641, 'deDE', '', '', '', '', 'Befleckte Silbermondsonnenkrone', 67186), +(267640, 'deDE', '', '', '', '', 'Befleckter Silbermondsonnenschleier', 67186), +(267639, 'deDE', '', '', '', '', 'Befleckter Silbermondsonnenschutz', 67186), +(267638, 'deDE', '', '', '', '', 'Befleckte Silbermondsonnenspitze', 67186), +(267607, 'deDE', '', '', '', '', 'Nebelhafte Handwickel', 67186), +(267606, 'deDE', '', '', '', '', 'Handschuhe der unendlichen Schwerkraft', 67186), +(267605, 'deDE', '', '', '', '', 'Handschutz des endlosen Vortex', 67186), +(267604, 'deDE', '', '', '', '', 'Klauen der kolossalen Ungetüme', 67186), +(267482, 'deDE', '', '', '', '', 'Großgürtel des aufstrebenden Hara\'tibeschützers', 67186), +(267481, 'deDE', '', '', '', '', 'Gürtel des aufstrebenden Hara\'tibeschützers', 67186), +(267480, 'deDE', '', '', '', '', 'Kordel des aufstrebenden Hara\'tibeschützers', 67186), +(267479, 'deDE', '', '', '', '', 'Schärpe des aufstrebenden Hara\'tibeschützers', 67186), +(266432, 'deDE', '', '', '', '', 'Silbermondsonnenkrone', 67186), +(266431, 'deDE', '', '', '', '', 'Silbermondsonnenschleier', 67186), +(266430, 'deDE', '', '', '', '', 'Silbermondsonnenschutz', 67186), +(266429, 'deDE', '', '', '', '', 'Silbermondsonnenspitze', 67186), +(265740, 'deDE', '', '', '', '', 'Totemschnur der Amani', 67186), +(265739, 'deDE', '', '', '', '', 'Herzschnuranhänger der Amani', 67186), +(264507, 'deDE', '', '', '', '', 'Tiegel der unsteten Energien', 67186), +(263269, 'deDE', '', '', '', '', 'Großgürtel des Hara\'tibeschützers', 67186), +(263268, 'deDE', '', '', '', '', 'Gürtel des Hara\'tibeschützers', 67186), +(263267, 'deDE', '', '', '', '', 'Kordel des Hara\'tibeschützers', 67186), +(263265, 'deDE', '', '', '', '', 'Schärpe des Hara\'tibeschützers', 67186), +(270562, 'deDE', 'Eine seltsam verunreinigte Knochenprobe. Lady Dunkeltal könnte daran Interesse haben.', '', '', '', 'Verunreinigte Probe', 67186), +(249497, 'deDE', 'Diese Pfefferschoten brennen so stark, dass der Sonnenbrunnen ihnen den Zugang versperrt.', '', '', '', 'Pfeffer der Geisterlande', 67186), +(272961, 'deDE', '', '', '', '', 'Klingenstab des Zauberbrechers', 67186), +(272960, 'deDE', '', '', '', '', 'Schildwall des Zauberbrechers', 67186), +(272318, 'deDE', '', '', '', '', 'Phönixklinge des Zauberbrechers', 67186), +(272317, 'deDE', '', '', '', '', 'Phönixgleve des Zauberbrechers', 67186), +(272316, 'deDE', '', '', '', '', 'Klingenlanze des Zauberbrechers', 67186), +(271631, 'deDE', 'WARNUNG: Ohne Gewähr. Enthält möglicherweise kein tatsächliches Reittier.', '', '', '', 'Belohnung des Lichtwächters', 67186), +(19355, 'deDE', '', '', '', '', 'Fokussierstab der Schattenschwingen', 67186), +(274578, 'deDE', 'Eine kleine Aufmerksamkeit von Dundun, Loa des Überflusses, die 4500 ungetrübten Überfluss enthält.', '', '', '', 'Gabe von ungetrübtem Überfluss', 67186), +(268455, 'deDE', '', '', '', '', 'Verzaubertes Stundenglas', 67186), +(268122, 'deDE', 'Eure Münzen wurden entzaubert. Bringt Euch nächstes Mal mehr ein.', '', '', '', 'Entzauberte Münzen', 67186), +(272338, 'deDE', '', '', '', '', 'Zauberstahl der Magierwache', 67186), +(272337, 'deDE', '', '', '', '', 'Zauberklinge der Magierwache', 67186), +(272336, 'deDE', '', '', '', '', 'Risszerkracher des Nullsignals', 67186), +(272321, 'deDE', '', '', '', '', 'Zauberbogen des arkanen Waldläufers', 67186), +(272320, 'deDE', '', '', '', '', 'Risskanalisierer des Nullsignals', 67186), +(268481, 'deDE', 'Lehrt Euch, wie man eine Brecherbiene beschwört. Dieses Reittier passt sich Eurer Reitfertigkeit und Eurem Aufenthaltsort an.', '', '', '', 'Zauberbienenkamm des Magisters', 67186), +(268456, 'deDE', '', '', '', '', 'Beschworene Bank', 67186), +(273874, 'deDE', '', '', '', '', 'Leerenberührte Sonnenzornstangenaxt', 67186), +(263970, 'deDE', '', '', '', '', 'Leerenberührte Glevenklinge', 67186), +(263969, 'deDE', '', '', '', '', 'Leerenberührter Großzauberstab', 67186), +(263968, 'deDE', '', '', '', '', 'Leerenberührter Fokus', 67186), +(263967, 'deDE', '', '', '', '', 'Leerenberührter Großbogen', 67186), +(263966, 'deDE', '', '', '', '', 'Leerenberührte Großklinge', 67186), +(263963, 'deDE', '', '', '', '', 'Leerenberührte Duellklinge', 67186), +(263960, 'deDE', '', '', '', '', 'Leerenberührte Breitklinge', 67186), +(263959, 'deDE', '', '', '', '', 'Leerenberührter Foliant', 67186), +(263956, 'deDE', '', '', '', '', 'Leerenberührter Zerkracher', 67186), +(263954, 'deDE', '', '', '', '', 'Leerenberührter Kampfstab', 67186), +(263952, 'deDE', '', '', '', '', 'Leerenberührter Sonnenzornstab', 67186), +(263950, 'deDE', '', '', '', '', 'Leerenberührter Spaten', 67186), +(263949, 'deDE', '', '', '', '', 'Leerenberührtes Bollwerk', 67186), +(263946, 'deDE', '', '', '', '', 'Leerenberührter Drescher', 67186), +(263943, 'deDE', '', '', '', '', 'Leerenberührter Ausweider', 67186), +(263942, 'deDE', '', '', '', '', 'Leerenberührter Reißzahn', 67186), +(263941, 'deDE', '', '', '', '', 'Leerenberührtes Gewehr', 67186), +(263707, 'deDE', '', '', '', '', 'Armreife des Leerenzorns', 67186), +(263706, 'deDE', '', '', '', '', 'Umhang des Leerenzorns', 67186), +(263705, 'deDE', '', '', '', '', 'Gürtelbund des Leerenzorns', 67186), +(263704, 'deDE', '', '', '', '', 'Schulterstücke des Leerenzorns', 67186), +(263703, 'deDE', '', '', '', '', 'Beinplatten des Leerenzorns', 67186), +(263702, 'deDE', '', '', '', '', 'Helm des Leerenzorns', 67186), +(263701, 'deDE', '', '', '', '', 'Stulpen des Leerenzorns', 67186), +(263700, 'deDE', '', '', '', '', 'Sabatons des Leerenzorns', 67186), +(263699, 'deDE', '', '', '', '', 'Brustplatte des Leerenzorns', 67186), +(263698, 'deDE', '', '', '', '', 'Bluse der Leerennemesis', 67186), +(263697, 'deDE', '', '', '', '', 'Armschienen der Leerennemesis', 67186), +(263696, 'deDE', '', '', '', '', 'Umhang der Leerennemesis', 67186), +(263695, 'deDE', '', '', '', '', 'Gürtel der Leerennemesis', 67186), +(263694, 'deDE', '', '', '', '', 'Schiftung der Leerennemesis', 67186), +(263693, 'deDE', '', '', '', '', 'Gamaschen der Leerennemesis', 67186), +(263692, 'deDE', '', '', '', '', 'Schädelkappe der Leerennemesis', 67186), +(263691, 'deDE', '', '', '', '', 'Handschuhe der Leerennemesis', 67186), +(263690, 'deDE', '', '', '', '', 'Stiefel der Leerennemesis', 67186), +(263689, 'deDE', '', '', '', '', 'Roben der Leerennemesis', 67186), +(263688, 'deDE', '', '', '', '', 'Schienbeinschützer der Leerenstürme', 67186), +(263687, 'deDE', '', '', '', '', 'Armschienen der Leerenstürme', 67186), +(263686, 'deDE', '', '', '', '', 'Umhang der Leerenstürme', 67186), +(263685, 'deDE', '', '', '', '', 'Gürtel der Leerenstürme', 67186), +(263684, 'deDE', '', '', '', '', 'Schulterklappen der Leerenstürme', 67186), +(263683, 'deDE', '', '', '', '', 'Kilt der Leerenstürme', 67186), +(263682, 'deDE', '', '', '', '', 'Helm der Leerenstürme', 67186), +(263681, 'deDE', '', '', '', '', 'Stulpen der Leerenstürme', 67186), +(263680, 'deDE', '', '', '', '', 'Sabatons der Leerenstürme', 67186), +(263679, 'deDE', '', '', '', '', 'Brustplatte der Leerenstürme', 67186), +(263678, 'deDE', '', '', '', '', 'Leerenzahnarmschienen', 67186), +(263677, 'deDE', '', '', '', '', 'Leerenzahnumhang', 67186), +(263676, 'deDE', '', '', '', '', 'Leerenzahngürtel', 67186), +(263675, 'deDE', '', '', '', '', 'Leerenzahnschiftung', 67186), +(263674, 'deDE', '', '', '', '', 'Leerenzahnhose', 67186), +(263673, 'deDE', '', '', '', '', 'Leerenzahnkapuze', 67186), +(263672, 'deDE', '', '', '', '', 'Leerenzahnhandschuhe', 67186), +(263671, 'deDE', '', '', '', '', 'Leerenzahnstiefel', 67186), +(263670, 'deDE', '', '', '', '', 'Leerenzahnbrustharnisch', 67186), +(263669, 'deDE', '', '', '', '', 'Bluse des Leerenaufstiegs', 67186), +(263668, 'deDE', '', '', '', '', 'Bindungen des Leerenaufstiegs', 67186), +(263667, 'deDE', '', '', '', '', 'Umhang des Leerenaufstiegs', 67186), +(263666, 'deDE', '', '', '', '', 'Gürtel des Leerenaufstiegs', 67186), +(263665, 'deDE', '', '', '', '', 'Schulterstücke des Leerenaufstiegs', 67186), +(263664, 'deDE', '', '', '', '', 'Gamaschen des Leerenaufstiegs', 67186), +(263663, 'deDE', '', '', '', '', 'Strahlenkranz des Leerenaufstiegs', 67186), +(263662, 'deDE', '', '', '', '', 'Handschützer des Leerenaufstiegs', 67186), +(263661, 'deDE', '', '', '', '', 'Stiefel des Leerenaufstiegs', 67186), +(263660, 'deDE', '', '', '', '', 'Roben des Leerenaufstiegs', 67186), +(263659, 'deDE', '', '', '', '', 'Schienbeinschützer des Leerenurteils', 67186), +(263658, 'deDE', '', '', '', '', 'Bindungen des Leerenurteils', 67186), +(263657, 'deDE', '', '', '', '', 'Umhang des Leerenurteils', 67186), +(263656, 'deDE', '', '', '', '', 'Gürtel des Leerenurteils', 67186), +(263655, 'deDE', '', '', '', '', 'Schiftung des Leerenurteils', 67186), +(263654, 'deDE', '', '', '', '', 'Beinplatten des Leerenurteils', 67186), +(263653, 'deDE', '', '', '', '', 'Krone des Leerenurteils', 67186), +(263652, 'deDE', '', '', '', '', 'Stulpen des Leerenurteils', 67186), +(263651, 'deDE', '', '', '', '', 'Sabatons des Leerenurteils', 67186), +(263650, 'deDE', '', '', '', '', 'Brustplatte des Leerenurteils', 67186), +(263649, 'deDE', '', '', '', '', 'Bindungen des Leerenakolythen', 67186), +(263648, 'deDE', '', '', '', '', 'Umhang des Leerenakolythen', 67186), +(263647, 'deDE', '', '', '', '', 'Kordel des Leerenakolythen', 67186), +(263646, 'deDE', '', '', '', '', 'Schiftung des Leerenakolythen', 67186), +(263645, 'deDE', '', '', '', '', 'Hose des Leerenakolythen', 67186), +(263644, 'deDE', '', '', '', '', 'Helm des Leerenakolythen', 67186), +(263643, 'deDE', '', '', '', '', 'Handschutz des Leerenakolythen', 67186), +(263642, 'deDE', '', '', '', '', 'Krallen des Leerenakolythen', 67186), +(263641, 'deDE', '', '', '', '', 'Weste des Leerenakolythen', 67186), +(263640, 'deDE', '', '', '', '', 'Leerenwindbluse', 67186), +(263639, 'deDE', '', '', '', '', 'Leerenwindbindungen', 67186), +(263638, 'deDE', '', '', '', '', 'Leerenwindumhang', 67186), +(263637, 'deDE', '', '', '', '', 'Leerenwindgürtel', 67186), +(263636, 'deDE', '', '', '', '', 'Leerenwindmantel', 67186), +(263635, 'deDE', '', '', '', '', 'Leerenwindhosen', 67186), +(263634, 'deDE', '', '', '', '', 'Leerenwindkrone', 67186), +(263633, 'deDE', '', '', '', '', 'Leerenwindhandschuhe', 67186), +(263632, 'deDE', '', '', '', '', 'Leerenwindstiefel', 67186), +(263631, 'deDE', '', '', '', '', 'Leerenwindroben', 67186), +(263630, 'deDE', '', '', '', '', 'Armschienen des Leerenpirschers', 67186), +(263629, 'deDE', '', '', '', '', 'Umhang des Leerenpirschers', 67186), +(263628, 'deDE', '', '', '', '', 'Gürtel des Leerenpirschers', 67186), +(263627, 'deDE', '', '', '', '', 'Schiftung des Leerenpirschers', 67186), +(263626, 'deDE', '', '', '', '', 'Beinschützer des Leerenpirschers', 67186), +(263625, 'deDE', '', '', '', '', 'Helm des Leerenpirschers', 67186), +(263624, 'deDE', '', '', '', '', 'Stulpen des Leerenpirschers', 67186), +(263623, 'deDE', '', '', '', '', 'Schienbeinschützer des Leerenpirschers', 67186), +(263622, 'deDE', '', '', '', '', 'Brustplatte des Leerenpirschers', 67186), +(263621, 'deDE', '', '', '', '', 'Unterarmschienen des Leerenwächters', 67186), +(263620, 'deDE', '', '', '', '', 'Umhang des Leerenwächters', 67186), +(263619, 'deDE', '', '', '', '', 'Gürtung des Leerenwächters', 67186), +(263618, 'deDE', '', '', '', '', 'Schulterstücke des Leerenwächters', 67186), +(263617, 'deDE', '', '', '', '', 'Beinplatten des Leerenwächters', 67186), +(263616, 'deDE', '', '', '', '', 'Krone des Leerenwächters', 67186), +(263615, 'deDE', '', '', '', '', 'Klauen des Leerenwächters', 67186), +(263614, 'deDE', '', '', '', '', 'Krallen des Leerenwächters', 67186), +(263613, 'deDE', '', '', '', '', 'Brustplatte des Leerenwächters', 67186), +(263612, 'deDE', '', '', '', '', 'Leerenwutbrustschutz', 67186), +(263611, 'deDE', '', '', '', '', 'Leerenwutarmschienen', 67186), +(263610, 'deDE', '', '', '', '', 'Leerenwutumhang', 67186), +(263609, 'deDE', '', '', '', '', 'Leerenwutgürtel', 67186), +(263608, 'deDE', '', '', '', '', 'Leerenwutschulterstücke', 67186), +(263607, 'deDE', '', '', '', '', 'Leerenwutbeinschützer', 67186), +(263606, 'deDE', '', '', '', '', 'Leerenwutbedeckung', 67186), +(263605, 'deDE', '', '', '', '', 'Leerenwuthandschützer', 67186), +(263604, 'deDE', '', '', '', '', 'Leerenwutstiefel', 67186), +(263603, 'deDE', '', '', '', '', 'Leerenwutrobe', 67186), +(263602, 'deDE', '', '', '', '', 'Armschienen des Leerwandlers', 67186), +(263601, 'deDE', '', '', '', '', 'Umhang des Leerwandlers', 67186), +(263600, 'deDE', '', '', '', '', 'Kordel des Leerwandlers', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'deDE', '', '', '', '', 'Schulterklingen des Leerwandlers', 67186), +(263598, 'deDE', '', '', '', '', 'Gamaschen des Leerwandlers', 67186), +(263597, 'deDE', '', '', '', '', 'Schädelkappe des Leerwandlers', 67186), +(263596, 'deDE', '', '', '', '', 'Handschuhe des Leerwandlers', 67186), +(263595, 'deDE', '', '', '', '', 'Sandalen des Leerwandlers', 67186), +(263594, 'deDE', '', '', '', '', 'Harnisch des Leerwandlers', 67186), +(263593, 'deDE', '', '', '', '', 'Unterarmschienen des Leerenreiters', 67186), +(263592, 'deDE', '', '', '', '', 'Umhang des Leerenreiters', 67186), +(263591, 'deDE', '', '', '', '', 'Gürtung des Leerenreiters', 67186), +(263590, 'deDE', '', '', '', '', 'Schulterstücke des Leerenreiters', 67186), +(263589, 'deDE', '', '', '', '', 'Gamaschen des Leerenreiters', 67186), +(263588, 'deDE', '', '', '', '', 'Helm des Leerenreiters', 67186), +(263587, 'deDE', '', '', '', '', 'Handschuhe des Leerenreiters', 67186), +(263586, 'deDE', '', '', '', '', 'Sabatons des Leerenreiters', 67186), +(263585, 'deDE', '', '', '', '', 'Brustplatte des Leerenreiters', 67186), +(251161, 'deDE', 'Ein Relikt der verdrehten Rituale, die die Blutfratzen im Verborgenen durchführen.', '', '', '', 'Antlitz des Seelenjägers', 67186), +(133494, 'deDE', '', '', '', '', 'Geschmackloser Zombiegürtel', 67186), +(49810, 'deDE', '', '', '', '', 'Geschmackloser Zombiegürtel', 67186), +(264323, 'deDE', 'Enthält eine kosmetische leerenberührte Waffe, die in Eurer Sammlung noch fehlt.', '', '', '', 'Truhe mit leerenberührten Waffen', 67186), +(264322, 'deDE', 'Enthält kosmetische leerenberührte Stiefel, die in Eurer Sammlung noch fehlen.', '', '', '', 'Truhe mit leerenberührten Stiefeln', 67186), +(264321, 'deDE', 'Enthält kosmetische leerenberührte Beinkleider, die in Eurer Sammlung noch fehlen.', '', '', '', 'Truhe mit leerenberührten Beinkleidern', 67186), +(264320, 'deDE', 'Enthält kosmetische leerenberührte Gürtel, die in Eurer Sammlung noch fehlen.', '', '', '', 'Truhe mit leerenberührten Gürteln', 67186), +(264319, 'deDE', 'Enthält kosmetische leerenberührte Handschuhe, die in Eurer Sammlung noch fehlen.', '', '', '', 'Truhe mit leerenberührten Handschuhen', 67186), +(264318, 'deDE', 'Enthält kosmetische leerenberührte Armschienen, die in Eurer Sammlung noch fehlen.', '', '', '', 'Truhe mit leerenberührten Armschienen', 67186), +(264317, 'deDE', 'Enthält eine kosmetische leerenberührte Brustrüstung, die in Eurer Sammlung noch fehlt.', '', '', '', 'Truhe mit leerenberührten Brustrüstungen', 67186), +(264316, 'deDE', 'Enthält einen kosmetischen leerenberührten Umhang, der in Eurer Sammlung noch fehlt.', '', '', '', 'Truhe mit leerenberührten Umhängen', 67186), +(264315, 'deDE', 'Enthält kosmetische leerenberührte Schulterstücke, die in Eurer Sammlung noch fehlen.', '', '', '', 'Truhe mit leerenberührter Schulterrüstung', 67186), +(264314, 'deDE', 'Enthält einen kosmetischen leerenberührten Helm, der in Eurer Sammlung noch fehlt.', '', '', '', 'Truhe mit leerenberührten Kopfbedeckungen', 67186), +(256700, 'deDE', 'Lehrt Euch, wie man ein Signet der Segen von Azeroth herstellt.', '', '', '', 'Vorlage: Signet der Segen von Azeroth', 67186), +(250445, 'deDE', '', '', '', '', 'Echo des Überflusses: Verzauberkunst', 67186), +(250360, 'deDE', '', '', '', '', 'Echo des Überflusses: Kürschnerei', 67186), +(250443, 'deDE', '', '', '', '', 'Echo des Überflusses: Kräuterkunde', 67186), +(272125, 'deDE', 'Enthält Gold, Leerenlichtmergel und einen Gegenstand für Eure aktuelle Spezialisierung als Anerkennung für Eure Leistung im Kampf.', '', '', '', 'Vorrat des Rekruten', 67186), +(263286, 'deDE', '', '', '', '', 'Umfunktionierter Gong der Fungianer', 67186), +(273307, 'deDE', 'Von einem unerschrockenen Unternehmer frisch gepresst! Sie glitzert vor Zuckerkristallen... oder doch eher Manakristallen?', '', '', '', 'Phiole mit unerschrockener Limonade', 67186), +(265790, 'deDE', 'Ein Säckchen mit 10 Morgenlichtwappen des Helden und Morgenlichtwappen der Mythen.', '', '', '', 'Morgenlichtwappenvorrat', 67186), +(246753, 'deDE', '', '', '', '', 'Glorreiche Sammlung mit Morgenlichtwappen der Mythen', 67186), +(255627, 'deDE', '', '', '', '', 'Hammer des galaktischen Gladiators', 67186), +(266969, 'deDE', '', '', '', '', 'Ensemble: Gewänder des Tieftauchers', 67186), +(253582, 'deDE', '', '', '', '', 'Fangflossenflegel', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'deDE', 'Tanks', '$bullet; Der Hortraffer bedient sich während |cFF2959D3|Hspell:1235072|h[Einfallsreiche Maßnahmen]|h|r am nächsten Reservenhaufen.\n$bullet; Verrottete Pilze übertragen bei Kontakt |cFF2959D3|Hspell:1234846|h[Toxische Sporen]|h|r, was eine |cFF2959D3|Hspell:1245593|h[Faulige Explosion]|h|r verhindert.\n$bullet; |cFF2959D3|Hspell:1234681|h[Rasendes Gebrüll]|h|r und |cFF2959D3|Hspell:1235125|h[Herzhaftes Brüllen]|h|r fügen allen Spielercharakteren hohen Schaden zu.', 67186), +(32669, 'deDE', 'Übersicht', 'Der Hortraffer versucht, seine Reserven mit allen Mitteln gegen Plünderer zu verteidigen, und ergreift beim Erreichen von 90%, 60% und 30% Gesundheit jeweils |cFF2959D3|Hspell:1235072|h[Einfallsreiche Maßnahmen]|h|r, wodurch er eine seiner Fähigkeiten ermächtigt.\n\nBeim Erreichen von 100 Energie wirft er |cFF2959D3|Hspell:1234233|h[Verdorbene Vorräte]|h|r in die Arena, die im Verlauf von 12 Sek. verrottete Pilze entstehen lassen. Bei Berührung belegen diese Ziele mit |cFF2959D3|Hspell:1234846|h[Toxischen Sporen]|h|r, was den Pilz zerstört und die |cFF2959D3|Hspell:1245593|h[Faulige Explosion]|h|r verhindert.', 67186), +(31527, 'deDE', 'Verbotene Fracht', 'Eine Lieferung, die vor neugierigen Blicken geschützt werden soll. Bietet eine hervorragende Gelegenheit, in Deckung zu gehen.', 67186), +(31282, 'deDE', 'Tank', '$bullet; Kystia lässt Knurps mit Hilfe der |cFF2959D3|Hspell:1230289|h[Schwarzinfusion]|h|r den Spielercharakteren gegenüber feindlich werden.\n$bullet; Weicht Knurps\' |cFF2959D3|Hspell:1253811|h[Teufelsgischt]|h|r aus.\n$bullet; Unterbrecht Kystias |cFF2959D3|Hspell:1264095|h[Spiegelbilder]|h|r.', 67186), +(31281, 'deDE', 'Heiler', '$bullet; Kystia lässt Knurps mit Hilfe der |cFF2959D3|Hspell:1230289|h[Schwarzinfusion]|h|r den Spielercharakteren gegenüber feindlich werden.\n$bullet; Weicht Knurps\' |cFF2959D3|Hspell:1253811|h[Teufelsgischt]|h|r aus.\n$bullet; Kystia fügt allen Spielercharakteren schweren Schaden zu, während sie |cFF2959D3|Hspell:1265412|h[Destabilisiert]|h|r ist.', 67186), +(31280, 'deDE', 'Schadensklassen', '$bullet; Kystia lässt Knurps mit Hilfe der |cFF2959D3|Hspell:1230289|h[Schwarzinfusion]|h|r den Spielercharakteren gegenüber feindlich werden.\n$bullet; Weicht Knurps\' |cFF2959D3|Hspell:1253811|h[Teufelsgischt]|h|r aus.\n$bullet; Unterbrecht Kystias |cFF2959D3|Hspell:1264095|h[Spiegelbilder]|h|r.', 67186), +(35862, 'deDE', 'Section 18', '', 67186), +(35353, 'deDE', 'Abschnitt 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'deDE', 'Abschnitt 17', '', 67186), +(34733, 'deDE', 'Xal\'ataths List', 'Xal\'atath betrügt Spielercharaktere und erklärt ihre Geschäfte für ungültig, während Todesfälle 15 Sekunden von der verbleibenden Zeit abziehen.', 67186), +(34732, 'deDE', 'Verstärkt', 'Normale Gegner haben 20% mehr Gesundheit und verursachen bis zu 20% mehr Schaden.', 67186), +(34731, 'deDE', 'Tyrannisch', 'Bosse haben 25% mehr Gesundheit. Bosse und ihre Diener verursachen bis zu 15% mehr Schaden.', 67186), +(34730, 'deDE', 'Tyrannisch und gestärkt', 'Diese Affixe stärken Gegner in mythischen Schlüsselsteindungeons weiter. Eines wird auf der mythischen Stufe 7 aktiv, das andere auf der mythischen Stufe 10. Rotiert wöchentlich.', 67186), +(34727, 'deDE', 'Xal\'ataths Handel: Verschlingen', '', 67186), +(34725, 'deDE', 'Xal\'ataths Handel: Leerengebunden', '', 67186), +(34722, 'deDE', 'Xal\'ataths Handel: Pulsare', '', 67186), +(34720, 'deDE', 'Mythische Stufe 6', '$bullet;|cFF2959D3|Hspell:1284818|h[Lindormis Rat]|h|r wurde entfernt.\n\nCharaktere mit einer Tankspezialisierung können in der Nähe des Portals zu den Zeitwegen oder am Ende eines Schlüsselsteindungeons mit Lindormi sprechen, um |cFF2959D3|Hspell:1295986|h[Lindormis Leuchten]|h|r zu erhalten, wodurch gegnerische Streitkräfte weiterhin hervorgehoben werden.', 67186), +(35809, 'deDE', 'Section 158', '', 67186), +(35491, 'deDE', 'Abschnitt 69', '', 67186), +(35490, 'deDE', 'Abschnitt 70', '', 67186), +(35489, 'deDE', 'Abschnitt 76', '', 67186), +(35488, 'deDE', 'Abschnitt 67', '$[!15,16\n[Heroisch und Mythisch] \'Galvanisieren\' entlädt eine \'Überlastungsladung\'.$]', 67186), +(35477, 'deDE', 'Abschnitt 22', '', 67186), +(35476, 'deDE', 'Abschnitt 31', '', 67186), +(35475, 'deDE', 'Abschnitt 30', '', 67186), +(35474, 'deDE', 'Abschnitt 29', '', 67186), +(35473, 'deDE', 'Abschnitt 31', '', 67186), +(35472, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.\n$[!16\n[Mythisch] Für Dämmerkristalle besteht das Risiko von \'Ende des Lichts\'.$]', 67186), +(35471, 'deDE', 'Abschnitt 22', '', 67186), +(35470, 'deDE', 'Abschnitt 31', '', 67186), +(35469, 'deDE', 'Abschnitt 30', '', 67186), +(35468, 'deDE', 'Abschnitt 29', '', 67186), +(35467, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.\n$[!15\n[Heroisch] Dämmerkristalle können \'Tränen von L\'ura\' vergießen.$]', 67186), +(35466, 'deDE', 'Abschnitt 22', '', 67186), +(35465, 'deDE', 'Abschnitt 31', '', 67186), +(35464, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.', 67186), +(35463, 'deDE', 'Abschnitt 22', '', 67186), +(35462, 'deDE', 'Abschnitt 31', '', 67186), +(35461, 'deDE', 'Abschnitt 30', '', 67186), +(35460, 'deDE', 'Abschnitt 29', '', 67186), +(35459, 'deDE', 'Abschnitt 31', '', 67186), +(35458, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.\n$[!16\n[Mythisch] Für Dämmerkristalle besteht das Risiko von \'Ende des Lichts\'.$]', 67186), +(35457, 'deDE', 'Abschnitt 22', '', 67186), +(35456, 'deDE', 'Abschnitt 31', '', 67186), +(35455, 'deDE', 'Abschnitt 30', '', 67186), +(35454, 'deDE', 'Abschnitt 29', '', 67186), +(35453, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.\n$[!15\n[Heroisch] Dämmerkristalle können \'Tränen von L\'ura\' vergießen.$]', 67186), +(35452, 'deDE', 'Abschnitt 22', '', 67186), +(35451, 'deDE', 'Abschnitt 31', '', 67186), +(35450, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.', 67186), +(35449, 'deDE', 'Abschnitt 22', '', 67186), +(35448, 'deDE', 'Abschnitt 31', '', 67186), +(35447, 'deDE', 'Abschnitt 30', '', 67186), +(35446, 'deDE', 'Abschnitt 29', '', 67186), +(35445, 'deDE', 'Abschnitt 31', '', 67186), +(35444, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.\n$[!16\n[Mythisch] Für Dämmerkristalle besteht das Risiko von \'Ende des Lichts\'.$]', 67186), +(35443, 'deDE', 'Abschnitt 22', '', 67186), +(35442, 'deDE', 'Abschnitt 31', '', 67186), +(35441, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.', 67186), +(35440, 'deDE', 'Abschnitt 108', '', 67186), +(35439, 'deDE', 'Abschnitt 108', '', 67186), +(35438, 'deDE', 'Abschnitt 107', '', 67186), +(35435, 'deDE', 'Abschnitt 105', '', 67186), +(35434, 'deDE', 'Abschnitt 104', '', 67186), +(35418, 'deDE', 'Abschnitt 108', '', 67186), +(35373, 'deDE', 'Abschnitt 30', '', 67186), +(35371, 'deDE', 'Abschnitt 29', '', 67186), +(35366, 'deDE', 'Abschnitt 31', '', 67186), +(35361, 'deDE', 'Abschnitt 22', '', 67186), +(35360, 'deDE', 'Dämmerkristall', 'Ein gereinigtes Naarufragment, das von Spielercharakteren getragen werden kann.\n$[!15\n[Heroisch] Dämmerkristalle können \'Tränen von L\'ura\' vergießen.$]', 67186), +(35357, 'deDE', 'Abschnitt 106', '', 67186), +(35344, 'deDE', 'Abschnitt 23', '', 67186), +(35343, 'deDE', 'Abschnitt 22', '', 67186), +(35342, 'deDE', 'Zwielichtkristall', 'Ein verfinsterndes Naarufragment, das wiederhergestellt werden kann.', 67186), +(35341, 'deDE', 'Abschnitt 24', '', 67186), +(35340, 'deDE', 'Mitternachtskristall', 'Ein dunkles Naarufragment, das nicht mehr zu retten ist.', 67186), +(35339, 'deDE', 'Abschnitt 19', '', 67186), +(35338, 'deDE', 'Abschnitt 18', '', 67186), +(35336, 'deDE', 'Abschnitt 16', '', 67186), +(35328, 'deDE', 'Abschnitt 11', '', 67186), +(35327, 'deDE', 'Abschnitt 10', '', 67186), +(35326, 'deDE', 'Abschnitt 9', '', 67186), +(35325, 'deDE', 'Abschnitt 8', '$[!15\n[Heroisch] Die Anzahl der Noten erhöht sich mit jeder Melodie.$]', 67186), +(35324, 'deDE', 'Abschnitt 11', '', 67186), +(35319, 'deDE', 'Abschnitt 80', '', 67186), +(35317, 'deDE', 'Abschnitt 69', '', 67186), +(35316, 'deDE', 'Abschnitt 70', '', 67186), +(35315, 'deDE', 'Abschnitt 76', '', 67186), +(35314, 'deDE', 'Abschnitt 67', '$[!15,16\n[Heroisch und Mythisch] \'Galvanisieren\' entlädt eine \'Überlastungsladung\'.$]', 67186), +(35311, 'deDE', 'Abschnitt 69', '', 67186), +(35309, 'deDE', 'Abschnitt 74', '', 67186), +(35274, 'deDE', 'Abschnitt 70', '$[!16\n[Mythisch] \'Kosmische Spaltung\' erreicht \'Kritikalität\'.$]', 67186), +(35273, 'deDE', 'Abschnitt 69', '', 67186), +(35272, 'deDE', 'Abschnitt 67', '', 67186), +(35131, 'deDE', 'Abschnitt 13', '', 67186), +(35106, 'deDE', 'Abschnitt 67', '', 67186), +(35068, 'deDE', 'Abschnitt 64', '', 67186), +(35067, 'deDE', 'Abschnitt 63', '', 67186), +(35041, 'deDE', 'Abschnitt 35', '', 67186), +(35040, 'deDE', 'Abschnitt 51', '', 67186), +(35038, 'deDE', 'Abschnitt 14', '', 67186), +(35037, 'deDE', 'Abschnitt 14', '', 67186), +(35036, 'deDE', 'Unterbrechung: Totale Finsternis', 'Erlebt, wie das Licht schwindet und zerbricht.', 67186), +(34847, 'deDE', 'Abschnitt 11', '', 67186), +(34846, 'deDE', 'Abschnitt 10', '', 67186), +(34845, 'deDE', 'Abschnitt 9', '', 67186), +(34844, 'deDE', 'Abschnitt 8', '', 67186), +(34474, 'deDE', 'Abschnitt 44', '', 67186), +(34456, 'deDE', 'Abschnitt 45', '', 67186), +(34450, 'deDE', 'Abschnitt 46', '', 67186), +(34243, 'deDE', 'Abschnitt 14', '', 67186), +(34242, 'deDE', 'Abschnitt 14', '', 67186), +(34001, 'deDE', 'Abschnitt 38', '', 67186), +(34000, 'deDE', 'Abschnitt 35', '', 67186), +(33990, 'deDE', 'Abschnitt 32', '', 67186), +(33989, 'deDE', 'Abschnitt 32', '', 67186), +(33983, 'deDE', 'Abschnitt 23', '', 67186), +(33982, 'deDE', 'Abschnitt 22', '', 67186), +(33981, 'deDE', 'Zwielichtkristall', 'Ein verfinsterndes Naarufragment, das wiederhergestellt werden kann.', 67186), +(33975, 'deDE', 'Abschnitt 25', '', 67186), +(33924, 'deDE', 'Abschnitt 24', '', 67186), +(33742, 'deDE', 'Mitternachtskristall', 'Ein dunkles Naarufragment, das nicht mehr zu retten ist.', 67186), +(33741, 'deDE', 'Abschnitt 19', '', 67186), +(33740, 'deDE', 'Abschnitt 15', '', 67186), +(33739, 'deDE', 'Abschnitt 18', '', 67186), +(33738, 'deDE', 'Eliminierungsmatrix', '', 67186), +(33737, 'deDE', 'Abschnitt 16', '', 67186), +(33640, 'deDE', 'Abschnitt 12', '', 67186), +(33638, 'deDE', 'Phase 2: Der Dunkle Reaktor', 'Begebt Euch in die Maschine der Verwüstung.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Abschnitt 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='deDE'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='deDE'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'deDE', 'Grüße, $gAkolyth:Akolythin;!\n\nBestaunt die Wunder dieser Welt mit GLORREICHEM ÜBERFLUSS! Er wogt, er schwillt, er widersetzt sich jeder Eindämmung!\n\nEure Hingabe für meine Heiligkeit verdient eine kleine Aufmerksamkeit. Dieses Mal in Form von ungetrübtem Überfluss!\n\nUnd denkt daran, $gedler Akolyth:edle Akolythin;: Gewisse Gaben, wie verschmolzene Vitalität, werden jetzt bei anderen Händlern erscheinen. Vielleicht begegnet Ihr ihnen, sollten Eure Eskapaden Euch je in die Nähe der Tiefen von Zul\'Aman führen.\n\nMögt Ihr eine reiche Ernte einholen.\n\n- Dundun, Loa des Überflusses', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='deDE'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'deDE', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='deDE'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'deDE', 'Akademie von Algeth\'ar', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'deDE', 'Hochrentierlicher Schredderpanzer', '|cFFFFD200Verkäufer:|r Lindormi|n', '', 67186), +(3009, 'deDE', 'Spekulativer Schredderpanzer', '|cFFFFD200Verkäufer:|r Lindormi|n', '', 67186), +(3008, 'deDE', 'Profitgrüner Schredderpanzer', '|cFFFFD200Verkäufer:|r Lindormi|n', '', 67186), +(3007, 'deDE', 'Blaujetonschredderpanzer', '|cFFFFD200Verkäufer:|r Lindormi|n', '', 67186), +(3006, 'deDE', 'Amethystfarbener Mechanzug', '|cFFFFD200Verkäufer:|r Lindormi|n', '', 67186), +(3005, 'deDE', 'Himmelblauer Todeswandler', '|cFFFFD200Verkäufer:|r Lindormi|n', '', 67186), +(2535, 'deDE', 'Leerenvernarbter Luchs', '|cFFFFD200Beute.|r Konfiszierte Kultistentasche', 'Das Zähmen von Luchsen ist eine Praktik, die die Arathi seit Jahren verfeinert haben. Während die Kultisten von Nachtsturz ihrer Sache treu ergeben bleiben, geben sie diese Tradition dennoch weiter.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='deDE'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'deDE', 'Fangt Fische mit Abgrundfischen', 'Sprecht mit Tieftaucher Jeju am Ufer der Tiefen von Zul\'Aman, um mit dem Fischen anzufangen.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'deDE', '', 67186), +(158259, 'deDE', '', 67186), +(158261, 'deDE', '', 67186), +(156069, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Angler des Allblue\".', 67186), +(151169, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Götze der Tiefe\".', 67186), +(151168, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Dreifadennetz\".', 67186), +(151167, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Seichtwassernetz\".', 67186), +(151166, 'deDE', 'Benötigt den Erfolg: Abgrundfischen: Harpunenturm des Leerekerns', 67186), +(151165, 'deDE', 'Benötigt den Erfolg: Abgrundfischen: Schwere Harpunenkanone', 67186), +(151161, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Pahks Grabenflossen\".', 67186), +(151160, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Tiefenschmiere\".', 67186), +(151159, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Verstärkte Lötnähte\".', 67186), +(151158, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Nalorakks Sauerstofftank\".', 67186), +(151157, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Grunderprobter Tank\".', 67186), +(151155, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Benutzter Tiefentauchertank\".', 67186), +(155979, 'deDE', '', 67186), +(157695, 'deDE', 'Nur verfügbar in Tiefen der Stufe 11.', 67186), +(157666, 'deDE', '', 67186), +(157603, 'deDE', 'Wird durch Fortschreiten in \"Reise des Tiefenforschers\" in Saison 1 freigeschaltet.', 67186), +(154160, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154159, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154158, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154157, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154156, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154155, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154154, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154153, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154152, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(154151, 'deDE', 'Ihr habt alle Transmogrifizierungen in dieser Truhe gesammelt.', 67186), +(157668, 'deDE', 'Ihr habt keinen zeitverlorenen Sattel. Ihr könnt diesen Gegenstand nicht kaufen.', 67186), +(155203, 'deDE', '', 67186), +(155192, 'deDE', '', 67186), +(155185, 'deDE', '', 67186), +(154642, 'deDE', '', 67186), +(156525, 'deDE', '', 67186), +(156524, 'deDE', '', 67186), +(151196, 'deDE', '', 67186), +(157003, 'deDE', '', 67186), +(157002, 'deDE', '', 67186), +(156957, 'deDE', '', 67186), +(156933, 'deDE', '', 67186), +(151162, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Finnenelritzenköder\".', 67186), +(156816, 'deDE', '', 67186), +(154472, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Druckaugenglas\".', 67186), +(151164, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Düsterschwimmerfleisch\".', 67186), +(151163, 'deDE', 'Benötigt den Erfolg|n\"Abgrundfischen: Plecoflossenköder\".', 67186), +(142975, 'deDE', 'Ihr könnt gerade keine 10 Morgenlichtwappen der Mythen verdienen.', 67186), +(156592, 'deDE', '', 67186), +(156591, 'deDE', '', 67186), +(156536, 'deDE', '', 67186), +(156537, 'deDE', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'deDE', 'Abgrundfischen', 67186), +(3389, 'deDE', 'Pylonenschlag: Szintilasfälle', 67186), +(3308, 'deDE', 'Leerenriss: Abendrotufer', 67186), +(3291, 'deDE', 'Kraftvakuum', 67186), +(3280, 'deDE', 'Abweichendes Tor', 67186), +(3251, 'deDE', 'Leerenritual: Grizzly', 67186), +(3245, 'deDE', 'Schuften und Schufte', 67186), +(3234, 'deDE', 'Entweihte Relikte der Segge', 67186), +(3233, 'deDE', 'Solange wir am Boden sind', 67186), +(3229, 'deDE', 'Insel der Leerenschreiter', 67186), +(3209, 'deDE', '[DNT] Example Scenario', 67186), +(3206, 'deDE', 'Szenariovorlage', 67186), +(3180, 'deDE', 'Ein verstärktes Ritual', 67186), +(3174, 'deDE', 'Leerenübergriff', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'deDE', 'Fangt Wasserlebewesen und entdeckt Schätze in den Tiefen von Zul\'Aman.', 'Abgrundfischen', 67186), +(16090, 'deDE', '', 'Suchphase', 67186), +(16088, 'deDE', '', 'Versteckphase', 67186), +(16441, 'deDE', 'Sammelt arkane Funken von den Naga und ihren Pumpen und bringt sie zu den Pylonen.', 'Energie für die Pylonen', 67186), +(16376, 'deDE', 'Besiegt den Kommandanten der Domanaar.', 'Brecht die Sichel', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'deDE', '', '', 67186), +(58555, 'deDE', '', '', 67186), +(58554, 'deDE', '', '', 67186), +(58553, 'deDE', '', '', 67186), +(58545, 'deDE', '', '', 67186), +(58544, 'deDE', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'deDE', 'Weberschnur der Algari', '', 67186), +(8555, 'deDE', '+$k1 Primärwert und +$k2 Rüstung', '', 67186), +(8554, 'deDE', '+$k1 Primärwert und +$k2 Rüstung', '', 67186), +(5001, 'deDE', 'Geistereisenstachel', '', 67186), +(4216, 'deDE', 'Pyriumstachel', '', 67186), +(4215, 'deDE', 'Elementiumstachel', '', 67186), +(3748, 'deDE', 'Titanstachel', '', 67186), +(2714, 'deDE', 'Teufelsstahlstachel', '', 67186), +(1704, 'deDE', 'Thoriumstachel', '', 67186), +(463, 'deDE', 'Mithrilstachel', '', 67186), +(43, 'deDE', 'Eisenstachel', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'deDE', 'Betäubt', 67186), +(1253377, 'deDE', 'Kometenhafter Aufstieg', 67186), +(1270444, 'deDE', 'Ungezügelter Zorn', 67186), +(441587, 'deDE', 'Wolkendecke', 67186), +(441429, 'deDE', 'Wolkendecke', 67186), +(1298446, 'deDE', 'Unzerstörbares Band', 67186), +(1223323, 'deDE', 'Unzerstörbares Band', 67186), +(1293502, 'deDE', '[DNT] Fused Vitality', 67186), +(1270491, 'deDE', 'Unheilige Hingabe', 67186), +(1241077, 'deDE', 'Schwärende Sense', 67186), +(458128, 'deDE', 'Schwärende Sense', 67186), +(363916, 'deDE', 'Obsidianschuppen', 67186), +(353319, 'deDE', 'Friedenswirker', 67186), +(125174, 'deDE', 'Karmaberührung', 67186), +(122470, 'deDE', 'Karmaberührung', 67186), +(23920, 'deDE', 'Zauberreflexion', 67186), +(1237942, 'deDE', 'Köder', 67186), +(1235216, 'deDE', 'Wahrnehmung von Midnight', 67186), +(1225245, 'deDE', 'Sin\'doreischwärmer', 67186), +(1295986, 'deDE', 'Lindormis Leuchten', 67186), +(1278156, 'deDE', 'Lindormis Rat', 67186), +(1298074, 'deDE', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'deDE', '', 67186), +(390260, 'deDE', '', 67186), +(1297413, 'deDE', 'Skelette verspotten', 67186), +(149981, 'deDE', 'Skelette verspotten', 67186), +(1289789, 'deDE', 'Antlitz des Krieges', 67186), +(1283168, 'deDE', 'Aufsteigende Leerensplitter kombinieren', 67186), +(1282778, 'deDE', 'Aufsteigender Leerenkern', 67186), +(1264876, 'deDE', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'deDE', 'Spektrale Rückstände', 67186), +(447444, 'deDE', 'Entropischer Riss', 67186), +(210824, 'deDE', 'Berührung der Magi', 67186), +(1280123, 'deDE', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'deDE', 'Spekulativer Schredderpanzer', 67186), +(1296759, 'deDE', 'Hochrentierlicher Schredderpanzer', 67186), +(1296758, 'deDE', 'Profitgrüner Schredderpanzer', 67186), +(1296756, 'deDE', 'Blaujetonschredderpanzer', 67186), +(1296734, 'deDE', 'Amethystfarbener Mechanzug', 67186), +(1296731, 'deDE', 'Himmelblauer Todeswandler', 67186), +(466930, 'deDE', 'Schwarzer Pfeil', 67186), +(1291739, 'deDE', 'Bösartiger Segen', 67186), +(1281946, 'deDE', 'Abgrundfischen', 67186), +(1270634, 'deDE', 'Überflussumleiter', 67186), +(1270085, 'deDE', 'Grausiger Schutz', 67186), +(1270079, 'deDE', 'Grausiger Schutz', 67186), +(1258411, 'deDE', 'Kyrennas Khadgarimitat', 67186), +(1258410, 'deDE', 'Kyrennas Khadgarimitat', 67186), +(1258336, 'deDE', 'Letzte Warnung', 67186), +(1257809, 'deDE', 'Kyrennas Khadgarimitat', 67186), +(1257729, 'deDE', 'Auferstehung', 67186), +(1257728, 'deDE', 'Auferstehung', 67186), +(1257716, 'deDE', 'Auferstehung', 67186), +(1257505, 'deDE', 'Grausiger Schutz', 67186), +(1256189, 'deDE', 'Abgrundfischen', 67186), +(1255966, 'deDE', 'Regenerier\'n', 67186), +(1253337, 'deDE', 'Kyrennas Khadgarimitat', 67186), +(1253336, 'deDE', 'Kyrennas Khadgarimitat', 67186), +(1253194, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1253193, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1253185, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1253064, 'deDE', 'Abgrundfischen', 67186), +(1252431, 'deDE', 'Tobende Blitze (Entfesselt)', 67186), +(1241032, 'deDE', 'Letzte Warnung', 67186), +(1241023, 'deDE', 'Letzte Warnung', 67186), +(1235076, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1235075, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1235072, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1235067, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1235066, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1235065, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1235037, 'deDE', 'Einfallsreiche Maßnahmen', 67186), +(1233865, 'deDE', 'Nullkorona', 67186), +(1228865, 'deDE', 'Leerenvernarbter Luchs', 67186), +(1225598, 'deDE', 'Abgrundfischen', 67186), +(1225322, 'deDE', 'Immersangwald', 67186), +(1225281, 'deDE', 'Zarte Leuchtfinne', 67186), +(1225277, 'deDE', 'Erneuerter Singfisch', 67186), +(1225273, 'deDE', 'Ominöser Oktopus', 67186), +(1225272, 'deDE', 'Schimmernder Stachelfisch', 67186), +(444803, 'deDE', 'Erwachter Quastenflosser', 67186), +(1250759, 'deDE', 'Dunkelpartikel', 67186), +(1276894, 'deDE', 'Elementaren Leerenkern transmutieren', 67186), +(1296448, 'deDE', 'Tollkühner Sprung', 67186), +(472053, 'deDE', 'Tollkühner Sprung', 67186), +(1296214, 'deDE', 'Galaktische Leerenmatrix', 67186), +(1296205, 'deDE', 'Verdreifachung', 67186), +(1296169, 'deDE', 'Sturmwolke', 67186), +(1296168, 'deDE', 'Sturmwolke', 67186), +(1291767, 'deDE', 'Meteorschauer', 67186), +(1296406, 'deDE', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'deDE', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'deDE', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'deDE', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'deDE', 'Lindormis Leuchten', 67186), +(1265971, 'deDE', 'Unheilige Bewaffnung', 67186), +(444769, 'deDE', 'Bevorstehendes Ableben', 67186), +(1256191, 'deDE', 'Tauchgang beenden', 67186), +(1272821, 'deDE', 'Weisheit der Mauer', 67186), +(1244331, 'deDE', 'Immerblüte', 67186), +(441845, 'deDE', 'Auf das Herz zielen', 67186), +(243435, 'deDE', 'Stärkendes Gebräu', 67186), +(221562, 'deDE', 'Ersticken', 67186), +(205630, 'deDE', 'Illidans Griff', 67186), +(198158, 'deDE', 'Massenunsichtbarkeit', 67186), +(108194, 'deDE', 'Ersticken', 67186), +(1291860, 'deDE', 'Speis & Trank', 67186), +(1291859, 'deDE', 'Speis & Trank', 67186), +(1291858, 'deDE', 'Speis & Trank', 67186), +(1291857, 'deDE', 'Speis & Trank', 67186), +(1291856, 'deDE', 'Speis & Trank', 67186), +(1291855, 'deDE', 'Speis & Trank', 67186), +(1291854, 'deDE', 'Speis & Trank', 67186), +(1291853, 'deDE', 'Speis & Trank', 67186), +(1291852, 'deDE', 'Speis & Trank', 67186), +(1291851, 'deDE', 'Speis & Trank', 67186), +(1291850, 'deDE', 'Speis & Trank', 67186), +(1291849, 'deDE', 'Speis & Trank', 67186), +(1291848, 'deDE', 'Essen', 67186), +(1291847, 'deDE', 'Essen', 67186), +(1291846, 'deDE', 'Essen', 67186), +(1291845, 'deDE', 'Essen', 67186), +(1291844, 'deDE', 'Essen', 67186), +(1291843, 'deDE', 'Essen', 67186), +(1291842, 'deDE', 'Essen', 67186), +(1291841, 'deDE', 'Essen', 67186), +(1291840, 'deDE', 'Essen', 67186), +(1291839, 'deDE', 'Essen', 67186), +(1291838, 'deDE', 'Essen', 67186), +(1291837, 'deDE', 'Essen', 67186), +(1291831, 'deDE', 'Trinken', 67186), +(1291828, 'deDE', 'Essen', 67186), +(1291827, 'deDE', 'Essen', 67186), +(1291826, 'deDE', 'Essen', 67186), +(1291825, 'deDE', 'Essen', 67186), +(1291824, 'deDE', 'Essen', 67186), +(1291822, 'deDE', 'Essen', 67186), +(1291791, 'deDE', 'Trinken', 67186), +(1290929, 'deDE', 'Trinken', 67186), +(1290926, 'deDE', 'Essen', 67186), +(1290925, 'deDE', 'Essen', 67186), +(1289221, 'deDE', 'Belohnung des Lichtwächters', 67186), +(1286537, 'deDE', 'Speis & Trank', 67186), +(1286536, 'deDE', 'Trinken', 67186), +(1286535, 'deDE', 'Essen', 67186), +(1282100, 'deDE', 'Beschworene Bank', 67186), +(1282018, 'deDE', 'Beschworene Bank', 67186), +(1277461, 'deDE', 'Trinken', 67186), +(1269922, 'deDE', 'Essen', 67186), +(1269921, 'deDE', 'Essen', 67186), +(1269920, 'deDE', 'Essen', 67186), +(1269919, 'deDE', 'Trinken', 67186), +(1269918, 'deDE', 'Trinken', 67186), +(1269917, 'deDE', 'Speis & Trank', 67186), +(1269916, 'deDE', 'Speis & Trank', 67186), +(1232065, 'deDE', 'Speis & Trank', 67186), +(1295592, 'deDE', '[DNT] Clear Voidspire', 67186), +(1244341, 'deDE', 'Immerblüte', 67186), +(1262378, 'deDE', 'Ebenholzkrone der Unterwerfung', 67186), +(1262377, 'deDE', 'Ebenholzkrone der Unterwerfung', 67186), +(1262376, 'deDE', 'Ebenholzkrone der Unterwerfung', 67186), +(1262365, 'deDE', 'Mandat des heiligen Todes', 67186), +(1262364, 'deDE', 'Mandat des heiligen Todes', 67186), +(1262359, 'deDE', 'Mandat des heiligen Todes', 67186), +(1248931, 'deDE', 'Ebenholzkrone der Unterwerfung', 67186), +(1248927, 'deDE', 'Mandat des heiligen Todes', 67186), +(1277796, 'deDE', 'Magie neutralisieren', 67186), +(1256862, 'deDE', 'Antimagischer Pfeil', 67186), +(1256861, 'deDE', 'Entzaubernder Sprung', 67186), +(1256860, 'deDE', 'Bannfokus', 67186), +(1256010, 'deDE', 'Nullifikationsfeld', 67186), +(1295508, 'deDE', 'Erlernen', 67186), +(1295497, 'deDE', 'Neruber', 67186), +(1295486, 'deDE', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'deDE', 'Dunkles Gebet', 67186), +(1243616, 'deDE', 'Instabile Leerenessenz', 67186), +(1243615, 'deDE', 'Instabile Leerenessenz', 67186), +(1243613, 'deDE', 'Instabile Leerenessenz', 67186), +(1243605, 'deDE', 'Instabile Leerenessenz', 67186), +(1243602, 'deDE', 'Instabile Leerenessenz', 67186), +(1243588, 'deDE', 'Instabile Leerenessenz', 67186), +(1243586, 'deDE', 'Instabile Leerenessenz', 67186), +(1257701, 'deDE', 'Sengende Verwundung', 67186), +(444088, 'deDE', 'Flamme verschlingen', 67186), +(1295319, 'deDE', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'deDE', 'Dissonanz', 67186), +(1295278, 'deDE', 'Tobendes Schmettern – Ziel', 67186), +(1295243, 'deDE', 'Nethereruption', 67186), +(1295237, 'deDE', 'Nethereruption', 67186), +(1226037, 'deDE', 'Fleisch schneiden', 67186), +(442615, 'deDE', 'Fleisch schneiden', 67186), +(1295194, 'deDE', '[DNT] Cancel Aura', 67186), +(1241218, 'deDE', '[DNT] Vision of Self', 67186), +(1294288, 'deDE', 'Stärke in den Schatten', 67186), +(1286830, 'deDE', 'Angelblase anpingen - Despawn', 67186), +(1236092, 'deDE', 'Werkzeug - Gewandtheit der Sin\'dorei', 67186), +(1293613, 'deDE', 'Angeln der Abgrundfischer', 67186), +(1286820, 'deDE', 'Angeln der Abgrundfischer', 67186), +(1286703, 'deDE', 'Angeln der Abgrundfischer', 67186), +(1253159, 'deDE', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'deDE', 'Vorrat öffnen', 67186), +(1243683, 'deDE', 'Glorreiche Sammlung mit Morgenlichtwappen der Mythen', 67186), +(190784, 'deDE', 'Göttliches Ross', 67186), +(1292124, 'deDE', '[DNT] Material Creation - Health', 67186), +(1266413, 'deDE', 'Leerenbrand', 67186), +(1244345, 'deDE', 'Lichtverbrennung', 67186), +(1231327, 'deDE', 'Verschlingende Leere', 67186), +(436358, 'deDE', 'Demolieren', 67186), +(1292071, 'deDE', 'Phalanx', 67186), +(1294776, 'deDE', 'Schimmernder Sonnenpartikel', 67186), +(1273357, 'deDE', 'Schimmernder Sonnenpartikel', 67186), +(1294727, 'deDE', 'Satt', 67186), +(1294726, 'deDE', 'Gerösteter Marshmallow', 67186), +(1294720, 'deDE', 'Schießen', 67186), +(1294703, 'deDE', 'Schießen', 67186), +(1294669, 'deDE', 'Ansturm', 67186), +(1294633, 'deDE', 'Feuer speien', 67186), +(1294563, 'deDE', 'Durchbrochener Schild', 67186), +(1277795, 'deDE', 'Magie neutralisieren', 67186), +(1272179, 'deDE', 'Exzentromagischer Impuls - Nicht erworben', 67186), +(1269655, 'deDE', 'Verstohlenheit', 67186), +(1269654, 'deDE', 'Uhrwerkwächter', 67186), +(1269650, 'deDE', 'Entzaubernder Sprung', 67186), +(1269641, 'deDE', 'Risswanderung', 67186), +(1269640, 'deDE', 'Nullifikationsfeld', 67186), +(1264545, 'deDE', 'Tauschen', 67186), +(1259647, 'deDE', 'W-4CHHUND', 67186), +(1258362, 'deDE', 'Falle: Singvogel', 67186), +(1256009, 'deDE', 'Magie neutralisieren', 67186), +(1251813, 'deDE', 'Schwelender Schrecken', 67186), +(1294779, 'deDE', 'DNT', 67186), +(1294759, 'deDE', 'DNT', 67186), +(1294752, 'deDE', 'Grausige Symphonie', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'deDE', '', 67186), +(37073, 'deDE', '', 67186), +(37072, 'deDE', '', 67186), +(37065, 'deDE', '', 67186), +(37064, 'deDE', '', 67186), +(37063, 'deDE', '', 67186), +(37050, 'deDE', '', 67186), +(37049, 'deDE', '', 67186), +(37048, 'deDE', '', 67186), +(36911, 'deDE', '', 67186), +(35166, 'deDE', '', 67186), +(35165, 'deDE', '', 67186), +(35164, 'deDE', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'deDE', 'Minutiöse Mehrfachherstellung', '', 'Verbessert Eure Verzauberungsmatrizen, wodurch sich die Wahrscheinlichkeit erhöht, bei der Herstellung von Illusionen oder verbrauchbaren Gegenständen zusätzliche Gegenstände zu erhalten. Außerdem erhaltet Ihr pro Punkt in dieser Spezialisierung +$ev1 $en1.', 67186), +(137685, 'deDE', '', '', 'Mehrfachherstellung gewährt bis zu +$ev1% zusätzliche Güter bei der Herstellung von verbrauchbaren Gegenständen.', 67186), +(137681, 'deDE', '', '', 'Mehrfachherstellung gewährt bis zu +$ev1% zusätzliche Güter bei der Herstellung von verbrauchbaren Gegenständen.', 67186), +(133669, 'deDE', '', '', 'Erhaltet +$ev1 $en1 bei der Herstellung von Legierungen.|n|nSchaltet die Fähigkeit frei, bei der Herstellung von Legierungen Fertigungsreagenzien einzusetzen.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='deDE'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'deDE', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'deDE', 'Gartengewand des Waldbewohners', 67186), +(5646, 'deDE', 'Gewänder des Tieftauchers', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='deDE' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'deDE', 'Lehrling Kurgsbann', 67186), +(7698, 'deDE', 'Dekorationsduellhändler', 67186), +(7693, 'deDE', 'Truhe', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='deDE') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='deDE') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='deDE') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='deDE') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='deDE') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='deDE') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='deDE') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='deDE') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='deDE') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='deDE') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='deDE') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='deDE') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='deDE') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='deDE') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='deDE') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='deDE') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='deDE') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='deDE') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='deDE') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='deDE') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='deDE') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='deDE') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='deDE') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='deDE') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='deDE') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='deDE') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='deDE') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='deDE') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='deDE') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='deDE') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='deDE') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='deDE') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='deDE') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='deDE') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='deDE') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='deDE') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='deDE') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='deDE') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='deDE') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='deDE') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='deDE') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='deDE') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='deDE') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='deDE') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='deDE') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='deDE') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='deDE') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='deDE') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='deDE') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='deDE') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='deDE') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='deDE') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='deDE') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='deDE') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='deDE') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='deDE') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='deDE') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='deDE') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='deDE') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='deDE') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='deDE') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='deDE') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='deDE') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='deDE') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='deDE') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='deDE') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='deDE') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='deDE') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='deDE') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='deDE') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='deDE') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='deDE') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='deDE') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='deDE') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='deDE') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='deDE') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='deDE') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='deDE') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='deDE') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='deDE') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='deDE') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='deDE') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='deDE') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='deDE') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='deDE') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='deDE') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='deDE') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='deDE') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='deDE') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='deDE') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='deDE') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='deDE') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='deDE') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='deDE') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='deDE') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='deDE') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='deDE') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='deDE') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='deDE') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='deDE') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='deDE') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='deDE') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='deDE') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='deDE') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='deDE') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='deDE') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='deDE') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='deDE') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='deDE') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='deDE') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='deDE') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='deDE') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='deDE') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='deDE') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='deDE') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='deDE') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='deDE') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='deDE') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='deDE') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='deDE') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='deDE') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='deDE') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='deDE') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='deDE') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='deDE') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='deDE') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='deDE') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='deDE') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='deDE') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='deDE') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='deDE') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='deDE') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='deDE') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='deDE') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='deDE') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='deDE') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='deDE') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='deDE') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='deDE') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='deDE') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='deDE') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='deDE') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='deDE') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='deDE') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='deDE') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='deDE') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='deDE') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='deDE') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='deDE') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='deDE'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'deDE', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'deDE', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'deDE', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'deDE', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'deDE', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'deDE', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'deDE', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'deDE', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'deDE', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'deDE', 0x000000, 67186), +(2534422486, 3918, 'deDE', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'deDE', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'deDE', 0x00457268C3B668742064656E205363686164656E20766F6E20243F63325B2744C3A46D6F6E69736368652056657277C3BC7374756E67275D5B274C656572656E73747261686C275D20756D20247331252E0D0A0D0A243F63325B2744C3A46D6F6E69736368652056657277C3BC7374756E67275D5B44617320766F6C6C7374C3A46E64696765204B616E616C6973696572656E20766F6E20274C656572656E73747261686C275D2065727A6575677420243F63325B77C3A46872656E64207365696E657220446175657220247334205365656C656E667261676D656E74655D5B2473332053746170656C20766F6E20274C656572656E66616C6C275D2E0000, 67186), +(3776013982, 1270444, 'deDE', 0x00275365656C656E7370616C7465722720756E6420275365656C656E626F6D62652720686162656E20626569206A6564656D20617566676562726175636874656E205365656C656E667261676D656E742065696E65204368616E63652C2027556E67657AC3BC67656C746572205A6F726E27207A7520676577C3A46872656E2C20776F647572636820274D6574616D6F7270686F736527206D69742065696E657220446175657220766F6E202473312053656B2E2065696E67657365747A742077657264656E206B616E6E2C206F686E6520646572656E2041626B6C696E677A656974206175737A756CC3B673656E2E0000, 67186), +(3776013982, 441587, 'deDE', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'deDE', 0x0044617320416B746976696572656E20766F6E20243F613133373033365B27416472656E616C696E726175736368275D5B27536368617474656E6B6C696E67656E275D2065727A657567742066C3BC722024343431353837642065696E65205261756368776F6C6B652E20416E6772696666652061757320646572205261756368776F6C6B65206865726175732062656C6567656E205A69656C65206D69742027456E746D7574696774272E20426973207A7520243434313634306D3220244C7A7573C3A4747A6C6963686573204D616C3A7A7573C3A4747A6C69636865204D616C653B2073746170656C6261722E0D0A0D0A44696573657220456666656B742068C3A46C74206E616368205665726C617373656E2064657220576F6C6B6520243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D2053656B2E206C616E6720616E2E0000, 67186), +(3893700160, 445, 'deDE', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'deDE', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'deDE', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'deDE', 0x00457268616C74657420776965646572205A7567726966662061756620274265676C656974657220727566656E272E0D0A0D0A496E20646572204175C39F656E77656C7420766572757273616368742045756572204265676C656974657220756D202473312520657268C3B66874656E205363686164656E20756E642065726C656964657420247332252077656E69676572205363686164656E2E0000, 67186), +(3776013982, 1223323, 'deDE', 0x00457268616C74657420776965646572205A7567726966662061756620274265676C656974657220727566656E272E0D0A0D0A496E20646572204175C39F656E77656C7420766572757273616368742045756572204265676C656974657220756D202473312520657268C3B66874656E205363686164656E20756E642065726C656964657420247332252077656E69676572205363686164656E2E0000, 67186), +(3468628616, 1818, 'deDE', 0x44756E6B6C6572204F62656C69736B0042656920526165276E6120696E2053696C6265726D6F6E64206BC3B66E6E7420496872206A65747A742065696E656E2064756E6B6C656E204F62656C69736B656E20657277657262656E2E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'deDE', 0x44756E6B6C6572204F62656C69736B0042656920526165276E6120696E2053696C6265726D6F6E64206BC3B66E6E7420496872206A65747A742065696E656E2064756E6B6C656E204F62656C69736B656E20657277657262656E2E0044756E6B6C6572204F62656C69736B002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'deDE', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'deDE', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'deDE', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'deDE', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'deDE', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'deDE', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'deDE', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'deDE', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'deDE', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'deDE', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'deDE', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'deDE', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'deDE', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'deDE', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'deDE', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'deDE', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'deDE', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'deDE', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'deDE', 0x000000, 67186), +(3037505077, 245345, 'deDE', 0x5000, 67186), +(3776013982, 1270491, 'deDE', 0x0000416E67726966667374656D706F20756D202477312520657268C3B668742E00, 67186), +(3776013982, 1241077, 'deDE', 0x0042657363686C65756E69677420646965205365756368656E2061756620457572656D205A69656C20756D20247331252E00446965205365756368656E20766F6E2024406175726163617374657220766572757273616368656E20696872656E205363686164656E2024773125207363686E656C6C65722E00, 67186), +(3776013982, 458128, 'deDE', 0x005363686C69747A7420616C6C65204765676E657220696E6E657268616C6220766F6E20246131204D657465726E20766F722045756368206175662C20776F6475726368204968722024733120536368617474656E7363686164656E207665727572736163687420756E6420616C6C65205365756368656E2061756620676574726F6666656E656E205A69656C656E2062657363686C65756E6967742C20736F646173732073696520696872656E205363686164656E20243132343130373764206C616E67202431323431303737733125207363686E656C6C657220766572757273616368656E2E0000, 67186), +(3899321669, 5919, 'deDE', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'deDE', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'deDE', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'deDE', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'deDE', 0x5363687761727A005665727374C3A4726B74204575726520536368757070656E2C2077617320457572656E2065726C697474656E656E205363686164656E20756D20247331252076657272696E67657274243F733337343334385B20756E64204575636820696D205665726C61756620766F6E20243337343334396420696E2048C3B66865206465732076657268696E64657274656E205363686164656E73206865696C745D5B5D2E2048C3A46C74202464206C616E6720616E2E0045726C697474656E6572205363686164656E20756D20247731252076657272696E67657274243F2465345B20756E64204865696C756E6720696E2048C3B66865206465732076657268696E64657274656E205363686164656E732E5D5B2E5D243F2477323D315B0D0A496D6D756E20676567656E20556E7465726272656368756E67732D20756E64205374696C6C65656666656B74652E5D5B5D00, 67186), +(4033975491, 589353, 'deDE', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'deDE', 0x5076502D54616C656E740024407370656C6C6465736333353333313300496D6D756E20676567656E204D616769657363686164656E20756E6420736368C3A4646C6963686520456666656B74652E00, 67186), +(3776013982, 125174, 'deDE', 0x0024407370656C6C646573633132323437300053C3A46D746C69636865722065726C697474656E6572205363686164656E2077697264206162736F7262696572742E0D0A2431323234373073342520646572206162736F726269657274656E205363686164656E736D656E67652077657264656E2061756620646173205A69656C20766F6E20274B61726D61626572C3BC6872756E672720756D67656C65697465742E00, 67186), +(3776013982, 122470, 'deDE', 0x004162736F726269657274202464206C616E672073C3A46D746C696368656E2065726C697474656E656E205363686164656E2C20626973207A752024733325204575726572206D6178696D616C656E20476573756E64686569742E202473342520646572206162736F726269657274656E205363686164656E736D656E67652077657264656E20696D205665726C61756620766F6E20243132343238306420616C73204E617475727363686164656E2061756620646173206765676E65726973636865205A69656C20756D67656C65697465742E005363686164656E2C206465722064656D204DC3B66E6368207A75676566C3BC677420776972642C207769726420696D205665726C61756620766F6E20243132343238306420616C73204E617475727363686164656E20617566204575636820756D67656C65697465742E00, 67186), +(3776013982, 23920, 'deDE', 0x004865627420243F63335B457572656E20536368696C645D5B457572652057616666655D2C207265666C656B746965727420736F20243F613231333931355B646965206EC3A463687374656E202432313339313573335D5B64656E206EC3A463687374656E5D2061756620457563682067657769726B74656E205A617562657220756E642076657272696E6765727420457572656E2065726C697474656E656E204D616769657363686164656E202464206C616E6720756D20243338353339317331252E00243F613138383637325B5265666C656B746965727420616C6C652061756620457563682067657769726B74656E205A61756265722E5D5B5265666C656B74696572742065696E656E2061756620457563682067657769726B74656E205A61756265722E5D00, 67186), +(1274215428, 190484, 'deDE', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'deDE', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'deDE', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'deDE', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'deDE', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'deDE', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'deDE', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'deDE', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'deDE', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'deDE', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'deDE', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'deDE', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'deDE', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'deDE', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'deDE', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'deDE', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'deDE', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'deDE', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'deDE', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'deDE', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'deDE', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'deDE', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'deDE', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'deDE', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'deDE', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'deDE', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'deDE', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'deDE', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'deDE', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'deDE', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'deDE', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'deDE', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'deDE', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'deDE', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'deDE', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'deDE', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'deDE', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'deDE', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'deDE', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'deDE', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'deDE', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'deDE', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'deDE', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'deDE', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'deDE', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'deDE', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'deDE', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'deDE', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'deDE', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'deDE', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'deDE', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'deDE', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'deDE', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'deDE', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'deDE', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'deDE', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'deDE', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'deDE', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'deDE', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'deDE', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'deDE', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'deDE', 0x0057697266742064656E204669736368207A7572C3BC636B20696E73205761737365722C20756D202464206C616E672024733220416E67656C6E20766F6E204D69646E69676874207A7520657268616C74656E2E0D0A0D0A447572636820646173205A7572C3BC636B77657266656E206D6568726572657220466973636865206B616E6E206469657365205374C3A4726B756E672061756620626973207A7520244D31204D696E2E207665726CC3A46E676572742077657264656E2E00416E67656C6665727469676B65697420766F6E205175656C275468616C617320756D2024773220657268C3B668742E00, 67186), +(3776013982, 1235216, 'deDE', 0x00576972667420646965204B726561747572207A7572C3BC636B20696E73205761737365722C20756D202464206C616E672024733220576168726E65686D756E6720766F6E204D69646E69676874207A7520657268616C74656E2E0D0A0D0A447572636820646173205A7572C3BC636B77657266656E206D65687265726572204B726561747572656E206B616E6E206469657365205374C3A4726B756E672061756620626973207A7520244D31204D696E2E207665726CC3A46E676572742077657264656E2E00576168726E65686D756E6720766F6E204D69646E6967687420756D2024773220657268C3B668742E00, 67186), +(3776013982, 1225245, 'deDE', 0x0045696E65204D69736368756E6720617573206B61726D6573696E726F74656E20756E642068696D6D656C626C6175656E20536368757070656E207A696572742064696573656E20666C696E6B656E2046697363682E204465722053696E27646F72656973636877C3A4726D65722069737420696D20496D6D657273616E6777616C642077656974207665726272656974657420756E6420726569737420756E6420696E74657261676965727420696D205761737365722067656DC3A4C39F2064656E20526567656C6E20646573205363687761726D732C2064656D20657220616E676568C3B672742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4265736F6E646572652056657277656E64756E673A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5665726272656974756E6773676562696574653A7C520D0A2D20496D6D657273616E6777616C640D0A2D205A756C27416D616E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A466973636873636877C3A4726D653A7C720D0A2D20426C75626265726E646520426CC3BC74650D0A2D20536F6E6E656E6272756E6E656E7363687761726D0D0A2D204F626572666CC3A46368656E6B72C3A47573656C6E0000, 67186), +(778162198, 397, 'deDE', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'deDE', 0x0100, 67186), +(3037505077, 243302, 'deDE', 0x0100, 67186), +(261693969, 95549, 'deDE', 0xFFFFFFFFFFFFFFFF4D6167697363686520416C61726D65206175736CC3B673656E0000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'deDE', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'deDE', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'deDE', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'deDE', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'deDE', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'deDE', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'deDE', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'deDE', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'deDE', 0x416E67656C77657274756E673A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'deDE', 0x566F6C6C7374C3A46E646967007C63464631656666303041626772756E646669736368656E20616267657363686C6F7373656E2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'deDE', 0xFFFFFFFFFFFFFFFF41626772756E64666973636865722077657264656E0000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'deDE', 0x5469656674617563686572005363686C6965C39F742041626772756E646669736368656E65726569676E6973736520696E205A756C27416D616E2061622E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'deDE', 0x5469656674617563686572005363686C6965C39F742041626772756E646669736368656E65726569676E6973736520696E205A756C27416D616E2061622E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'deDE', 0x41626772756E64666973636865720053707265636874206D6974205469656674617563686572204A656A752C20756D206D69742064656E2041626772756E64666973636865726E207A75207461756368656E2E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'deDE', 0x456C697465676566616872656E0053656C74656E65204765676E657220657273636865696E656E206A65747A7420696E2052697475616C7374C3A47474656E20756E64206BC3B66E6E656E2066C3BC72207A7573C3A4747A6C696368652052697475616C626575746520626573696567742077657264656E2E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'deDE', 0x456C697465676566616872656E0053656C74656E65204765676E657220657273636865696E656E206A65747A7420696E2052697475616C7374C3A47474656E20756E64206BC3B66E6E656E2066C3BC72207A7573C3A4747A6C696368652052697475616C626575746520626573696567742077657264656E2E004E6562656E73C3A463686C6963686520476566616872656E204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'deDE', 0x56657264657262746572205472616E73706F72740042656920556E7465726F6666697A69657220566F726E696E20696E2053696C6265726D6F6E64206BC3B66E6E7420496872206A65747A742064656E206C656572656E626572C3BC687274656E2046616C6B656E73636872656974657220657277657262656E2E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'deDE', 0x56657264657262746572205472616E73706F72740042656920556E7465726F6666697A69657220566F726E696E20696E2053696C6265726D6F6E64206BC3B66E6E7420496872206A65747A742064656E206C656572656E626572C3BC687274656E2046616C6B656E73636872656974657220657277657262656E2E0056657264657262746572205472616E73706F7274002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'deDE', 0x5363687265696E6520646572204D61636874204949004E657565206D61676973636865205374C3A4726B756E67737363687265696E65206BC3B66E6E656E20696E2052697475616C7374C3A47474656E20676566756E64656E2077657264656E2E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'deDE', 0x5363687265696E6520646572204D61636874204949004E657565206D61676973636865205374C3A4726B756E67737363687265696E65206BC3B66E6E656E20696E2052697475616C7374C3A47474656E20676566756E64656E2077657264656E2E005363687265696E6520646572204D61636874204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'deDE', 0x566572656872746520536368C3A4747A650047726FC39F6520536368C3A4747A65206BC3B66E6E656E206A65747A7420696E2052697475616C7374C3A47474656E20616C73207A7573C3A4747A6C6963686520426575746520676566756E64656E2077657264656E2E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'deDE', 0x566572656872746520536368C3A4747A650047726FC39F6520536368C3A4747A65206BC3B66E6E656E206A65747A7420696E2052697475616C7374C3A47474656E20616C73207A7573C3A4747A6C6963686520426575746520676566756E64656E2077657264656E2E00566572656872746520536368C3A4747A65002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'deDE', 0x52697475616C6D6167696520E28093204B7567656CC3BC626572666C7573730049687220686162742065696E6520657268C3B6687465204368616E63652C2064617373206475726368206461732054C3B674656E20766F6E204765676E65726E20696E2052697475616C7374C3A47474656E2065696E6520526567656E65726174696F6E736B7567656C20657273636865696E742E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'deDE', 0x52697475616C6D6167696520E28093204B7567656CC3BC626572666C7573730049687220686162742065696E6520657268C3B6687465204368616E63652C2064617373206475726368206461732054C3B674656E20766F6E204765676E65726E20696E2052697475616C7374C3A47474656E2065696E6520526567656E65726174696F6E736B7567656C20657273636865696E742E0052697475616C6D6167696520E28093204865696C756E6720494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'deDE', 0x566572646572627465204D656E6167657269650042656920556E7465726F6666697A69657220566F726E696E20696E2053696C6265726D6F6E64206BC3B66E6E7420496872206A65747A7420617573676577C3A4686C74652048617573746965726520657277657262656E2E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'deDE', 0x566572646572627465204D656E6167657269650042656920556E7465726F6666697A69657220566F726E696E20696E2053696C6265726D6F6E64206BC3B66E6E7420496872206A65747A7420617573676577C3A4686C74652048617573746965726520657277657262656E2E00566572646572627465204D656E616765726965002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'deDE', 0x5363687265696E6520646572204D6163687400496872206BC3B66E6E74206A65747A74206D61676973636865205374C3A4726B756E67737363687265696E6520696E2052697475616C7374C3A47474656E2066696E64656E2E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'deDE', 0x5363687265696E6520646572204D6163687400496872206BC3B66E6E74206A65747A74206D61676973636865205374C3A4726B756E67737363687265696E6520696E2052697475616C7374C3A47474656E2066696E64656E2E005363687265696E6520646572204D616368742049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'deDE', 0x5A7573C3A4747A6C6963686520426575746500496872206BC3B66E6E74206A65747A74207A7573C3A4747A6C69636865206B6C65696E6520536368C3A4747A6520696E2052697475616C7374C3A47474656E2066696E64656E2E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'deDE', 0x5A7573C3A4747A6C6963686520426575746500496872206BC3B66E6E74206A65747A74207A7573C3A4747A6C69636865206B6C65696E6520536368C3A4747A6520696E2052697475616C7374C3A47474656E2066696E64656E2E004C6F736520536368C3A4747A65204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'deDE', 0x4E6562656E73C3A463686C6963686520476566616872656E0053656C74656E65204765676E657220657273636865696E656E206A65747A7420696E2052697475616C7374C3A47474656E20756E64206BC3B66E6E656E2066C3BC72207A7573C3A4747A6C696368652052697475616C626575746520626573696567742077657264656E2E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'deDE', 0x4E6562656E73C3A463686C6963686520476566616872656E0053656C74656E65204765676E657220657273636865696E656E206A65747A7420696E2052697475616C7374C3A47474656E20756E64206BC3B66E6E656E2066C3BC72207A7573C3A4747A6C696368652052697475616C626575746520626573696567742077657264656E2E004E6562656E73C3A463686C6963686520476566616872656E2049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'deDE', 0x52697475616C6D6167696520E28093204B7567656C6B7261667400446965204865696C756E6720766F6E20526567656E65726174696F6E736B7567656C6E20777572646520756D203130302520657268C3B668742E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'deDE', 0x52697475616C6D6167696520E28093204B7567656C6B7261667400446965204865696C756E6720766F6E20526567656E65726174696F6E736B7567656C6E20777572646520756D203130302520657268C3B668742E0052697475616C6D6167696520E28093204865696C756E67204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'deDE', 0x52697475616C64656B6F726174696F6E004265692052616527616E6120696E2053696C6265726D6F6E64206BC3B66E6E7420496872205363687265696274697363687A75626568C3B67220646572204C6565726520657277657262656E2E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'deDE', 0x52697475616C64656B6F726174696F6E004265692052616527616E6120696E2053696C6265726D6F6E64206BC3B66E6E7420496872205363687265696274697363687A75626568C3B67220646572204C6565726520657277657262656E2E0052697475656C6C65204861757365696E7269636874756E67002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'deDE', 0x52697475616C736368C3A4747A65004B6C65696E6520536368C3A4747A65206BC3B66E6E656E20696E2052697475616C7374C3A47474656E20676566756E64656E2077657264656E2E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'deDE', 0x52697475616C736368C3A4747A65004B6C65696E6520536368C3A4747A65206BC3B66E6E656E20696E2052697475616C7374C3A47474656E20676566756E64656E2077657264656E2E004C6F736520536368C3A4747A65002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'deDE', 0x52697475616C6D6167696520E2809320526567656E65726174696F6E736B7567656C6E00526567656E65726174696F6E736B7567656C6E20657273636865696E656E20696E2052697475616C7374C3A47474656E20756E64206865696C656E204575636820756D2031352520457572657220476573756E64686569742E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'deDE', 0x52697475616C6D6167696520E2809320526567656E65726174696F6E736B7567656C6E00526567656E65726174696F6E736B7567656C6E20657273636865696E656E20696E2052697475616C7374C3A47474656E20756E64206865696C656E204575636820756D2031352520457572657220476573756E64686569742E0052697475616C6D6167696520E28093204865696C756E672049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'deDE', 0x4F636B657266656E7374657220646572204D6574627261756572656900000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'deDE', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'deDE', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'deDE', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'deDE', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'deDE', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'deDE', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'deDE', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'deDE', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'deDE', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'deDE', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'deDE', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'deDE', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'deDE', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'deDE', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'deDE', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'deDE', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'deDE', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'deDE', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'deDE', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'deDE', 0x004C696E646F726D69206D61726B6965727420617573676577C3A4686C7465206E6F726D616C65204765676E65722E2044757263682064617320426573696567656E20616C6C657220686572766F726765686F62656E656E204765676E65722077697264206469652062656EC3B6746967746520416E7A61686C20626573696567746572204765676E65722065727265696368742E0044757263682064617320426573696567656E20616C6C657220686572766F726765686F62656E656E204765676E65722077697264206469652062656EC3B6746967746520416E7A61686C20626573696567746572204765676E65722065727265696368742E00, 67186), +(3776013982, 1278156, 'deDE', 0x004C696E646F726D69206D61726B6965727420756E642073636877C3A463687420617573676577C3A4686C7465206E6F726D616C65204765676E657220756E642076657268696E646572742C20646173732064657220546F6420766F6E20537069656C657263686172616B746572656E2064696520766572626C656962656E6465205A6569742076657272696E676572742E0D0A0D0A44757263682064617320426573696567656E20616C6C657220686572766F726765686F62656E656E204765676E65722077697264206469652062656EC3B6746967746520416E7A61686C20626573696567746572204765676E65722065727265696368742E00476573756E646865697420756D20247331252076657272696E676572742E0D0A566572757273616368746572205363686164656E20756D20247332252076657272696E676572742E00, 67186), +(368401261, 7367, 'deDE', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'deDE', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'deDE', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'deDE', 0xB2790000, 67186), +(3495286709, 24475, 'deDE', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'deDE', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'deDE', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'deDE', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'deDE', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'deDE', 0x000000, 67186), +(3247720076, 42450, 'deDE', 0x041E000000, 67186), +(3247720076, 42449, 'deDE', 0x041E000000, 67186), +(3247720076, 42448, 'deDE', 0x04BE000000, 67186), +(3247720076, 42447, 'deDE', 0x04BE000000, 67186), +(3247720076, 42446, 'deDE', 0x0700000000, 67186), +(3247720076, 42445, 'deDE', 0x0100000000, 67186), +(3247720076, 40690, 'deDE', 0x0100000000, 67186), +(2014779773, 207, 'deDE', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'deDE', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'deDE', 0x000000, 67186), +(3776013982, 390260, 'deDE', 0x000000, 67186), +(261693969, 95304, 'deDE', 0xFFFFFFFFFFFFFFFF4E6562756CC3B67365204C656572656E6B65726E653A204D6F7267656E6C6963687477617070656E20646573205665746572616E656E0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'deDE', 0xFFFFFFFFFFFFFFFF4E6562756CC3B67365204C656572656E6B65726E653A204C656572656E6C696368746D657267656C0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'deDE', 0xFFFFFFFFFFFFFFFF4E6562756CC3B67365204C656572656E6B65726E653A20476F6C640000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'deDE', 0x0000000091000000, 67186), +(1673391669, 145, 'deDE', 0x8E000000, 67186), +(2791084701, 142, 'deDE', 0x32DC0600, 67186), +(3386943305, 340484, 'deDE', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'deDE', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'deDE', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'deDE', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'deDE', 0x44656B6F726174696F6E736475656C6C00537069656C7420566572737465636B656E206D6974204DC3B662656C6E002D2042656EC3B674696774204D69646E696768742C204D696E6465737473747566652031302E0D0A2D20556E67657A77756E67656E65722C206E696368742D74C3B6646C6963686572205076502D4D6F6475732E0D0A2D204E757220536F6C6F2D57617274657363686C616E67656E2E204772757070656E2D57617274657363686C616E67656E2073696E64206265692046656C647765626572696E20416D6F6C656E6E6520696E2053696C6265726D6F6E642076657266C3BC676261722E0D0A2D2057656E6E2049687220676566756E64656E20756E6420676566616E67656E207765726465742C207365696420496872207261757321009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'deDE', 0x000000, 67186), +(3776013982, 149981, 'deDE', 0x000000, 67186), +(3330775162, 1897, 'deDE', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'deDE', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'deDE', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'deDE', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'deDE', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'deDE', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'deDE', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'deDE', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'deDE', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'deDE', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'deDE', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'deDE', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'deDE', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'deDE', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'deDE', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'deDE', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'deDE', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'deDE', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'deDE', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'deDE', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'deDE', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'deDE', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'deDE', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'deDE', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'deDE', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'deDE', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'deDE', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'deDE', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'deDE', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'deDE', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'deDE', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'deDE', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'deDE', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'deDE', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'deDE', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'deDE', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'deDE', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'deDE', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'deDE', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'deDE', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'deDE', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'deDE', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'deDE', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'deDE', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'deDE', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'deDE', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'deDE', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'deDE', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'deDE', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'deDE', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'deDE', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'deDE', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'deDE', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'deDE', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'deDE', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'deDE', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'deDE', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'deDE', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'deDE', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'deDE', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'deDE', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'deDE', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'deDE', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'deDE', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'deDE', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'deDE', 0x566F6C6B7366C3A46869676B65697400416B746976696572656E2C20756D206175746F6D617469736368204575657220416E746C69747A20616E7A756E65686D656E2C2077656E6E2049687220676572616465206B65696E65206472616B6F6E69736368656E205A617562657220776965202746657565726174656D27206F6465722027536567656C6E27207769726B742E0000, 67186), +(3776013982, 1283168, 'deDE', 0x004B6F6D62696E696572742066C3BC6E66206175667374656967656E6465204C656572656E73706C6974746572207A752065696E656D206175667374656967656E64656E204C656572656E6B65726E2C2064657220696E20646572204C616765206973742C2064696520476567656E7374616E6473737475666520666F6C67656E64657220476567656E7374C3A46E64652061757320536169736F6E203120766F6E204D69646E69676874207A7520657268C3B668656E3A20766F6C6C7374C3A46E646967206175666765776572746574652057616666656E20756E64205363686D75636B7374C3BC636B65206465732048656C64656E2C20766F6C6C7374C3A46E64696720617566676577657274657465206D79746869736368652057616666656E20756E64205363686D75636B7374C3BC636B652C2073747261686C656E676566657274696774652057616666656E20756E64205363686D75636B7374C3BC636B6520766F6E2068C3B6636873746572205175616C6974C3A4742E0000, 67186), +(3776013982, 1282778, 'deDE', 0x00457268C3B668742064696520476567656E7374616E6473737475666520666F6C67656E64657220476567656E7374C3A46E64652061757320536169736F6E203120766F6E204D69646E696768743A20766F6C6C7374C3A46E646967206175666765776572746574652048656C64656E77616666656E20756E64202D7363686D75636B7374C3BC636B652C20766F6C6C7374C3A46E64696720617566676577657274657465206D79746869736368652057616666656E20756E64205363686D75636B7374C3BC636B652C2073747261686C656E676566657274696774652057616666656E20756E64205363686D75636B7374C3BC636B6520766F6E2068C3B6636873746572205175616C6974C3A4742E0000, 67186), +(3776013982, 1264876, 'deDE', 0x0057656E6E204968722065696E205A69656C2C2064617320766F6E20274B6F6C6F7373616C6573205363686D65747465726E2720626574726F6666656E206973742C206D6974202754C3B6646C69636865722053746FC39F27206F6465722065696E656D20275370616C74656E27207472656666742C2064617320247332206F646572206D656872205A69656C65207472696666742C20776972642064696520446175657220766F6E20274B6F6C6F7373616C6573205363686D65747465726E27206175662064656D20626574726F6666656E656E205A69656C20756D20247B2473312F313030307D2E312053656B2E207665726CC3A46E676572742E0000, 67186), +(3776013982, 1255629, 'deDE', 0x004672656967657365747A746520457373656E7A207374C3A4726B7420537069656C657263686172616B746572652C20776173202464206C616E672069687265204265776567756E6773676573636877696E6469676B65697420756D202473312520736F7769652076657275727361636874656E205363686164656E2C20686572766F726765727566656E65204865696C756E6720756E64204162736F727074696F6E73656666656B746520756D202473322520657268C3B668742E2044696573657220456666656B74206973742073746170656C6261722C2061626572206469652044617565722077697264206E69636874207A7572C3BC636B67657365747A742E004265776567756E6773676573636877696E6469676B65697420756D202473312520657268C3B668742E0D0A566572757273616368746572205363686164656E20756D202473322520657268C3B668742E0D0A4865696C756E6720756E64204162736F727074696F6E73656666656B746520756D202473332520657268C3B668742E00, 67186), +(3776013982, 447444, 'deDE', 0x00243F63335BC39666666E65742065696E656E20526973735D5B4265696D2045696E7361747A20766F6E2027476564616E6B656E7363686C61672720656E7473746568742065696E2027456E74726F706973636865722052697373275D2C206465722064656E204765676E6572202434353031393364206C616E6720766572666F6C67742E204765676E65722C2064696520696E207365696E656E2050666164206765726174656E2C2065726C656964656E20616C6C65202434353933313474312053656B2E2024343437343438733120536368617474656E7363686164656E2C20736F6C616E67652073696520696E20526569636877656974652073696E642E0000, 67186), +(372281185, 38, 'deDE', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'deDE', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'deDE', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'deDE', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'deDE', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'deDE', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'deDE', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'deDE', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'deDE', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'deDE', 0x0024407370656C6C64657363323130373235004578706C6F6469657274206265692041626C61756620756E642076657275727361636874202477312041726B616E7363686164656E2E00, 67186), +(3386943305, 332898, 'deDE', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'deDE', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'deDE', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'deDE', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'deDE', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'deDE', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'deDE', 0x0464000000, 67186), +(3776013982, 1280123, 'deDE', 0x000000, 67186), +(3205218938, 54794, 'deDE', 0x424353484F5254444154454E4F5945415200253224642E20253124420001000000, 67186), +(3205218938, 22339, 'deDE', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'deDE', 0x534C4153485F5441524745545F4D41524B455232002F7A6D0001000000, 67186), +(3205218938, 22331, 'deDE', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'deDE', 0x534C4153485F574F524C445F4D41524B455232002F776D0001000000, 67186), +(3205218938, 22329, 'deDE', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'deDE', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'deDE', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'deDE', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'deDE', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'deDE', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'deDE', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'deDE', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'deDE', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'deDE', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'deDE', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'deDE', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'deDE', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'deDE', 0x004968722076657273756368742C2065696E2076657277756E6465746573205A69656C207A752065726C65646967656E2C20696E64656D204968722024733120536368617474656E7363686164656E20756E6420243436383537326F3120536368617474656E7363686164656E20C3BC62657220243436383537326420766572757273616368742E204E757220626569204765676E65726E206D6974206D65687220616C73202473332520476573756E6468656974206F6465722077656E6967657220616C73202473322520476573756E64686569742065696E7365747A6261722E0000, 67186), +(261693969, 95553, 'deDE', 0xFFFFFFFFFFFFFFFF4D616E696665737469657274652044696368746500001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'deDE', 0xFFFFFFFFFFFFFFFF556E74657273756368756E67206465722064756E6B6C656E204F62656C69736B656E0000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'deDE', 0xFFFFFFFFFFFFFFFF4C69636874657420696872652052656968656E0000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'deDE', 0x54C3BC636B697363686520536368757070656E00005665726C65696874204C6568726C696E67204B7572677362616E6E2065696E656E2062C3B6736172746967656E20536567656E2C20646572207365696E6520476573756E646865697420756E64207365696E656E205363686164656E20756D20243132383931303273312520657268C3B6687420756E642069686D206469652046C3A46869676B656974207665726C656968742C202754C3BC636B697363686520536368757070656E27207A75207769726B656E2E00, 67186), +(3776013982, 1281946, 'deDE', 0x000000, 67186), +(3776013982, 1270634, 'deDE', 0x00566572646F7070656C742031352053656B2E206C616E672064656E2065726C697474656E656E205363686164656E2064757263682065696E656E2041726B616E656C656D656E74617220766F6D204E6578757370756E6B74204D69642761722E00446F7070656C746572205363686164656E2E00, 67186), +(3776013982, 1270085, 'deDE', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'deDE', 0x00446572205A61756265726E6465207461757363687420476573756E64686569742066C3BC722065696E656E204162736F727074696F6E73736368696C642064657273656C62656E204D656E67652065696E2E2044657220536368696C64206578706C6F64696572742C2077656E6E20657220656E746665726E7420776972642C20756E642066C3BC677420537069656C657263686172616B746572656E20696E6E657268616C6220766F6E2024313237303038356131204D657465726E202431323730303835733120536368617474656E7363686164656E207A752E004162736F72626965727420247731205363686164656E2E0D0A46C3BC677420537069656C657263686172616B746572656E20696E6E657268616C6220766F6E2024313237303038356131204D657465726E206265696D20456E746665726E656E202431323730303835733120536368617474656E7363686164656E207A752E00, 67186), +(3776013982, 1258411, 'deDE', 0x000000, 67186), +(3776013982, 1258410, 'deDE', 0x005472696E6B656E2C20756D2065696E656E206B6F736D657469736368656E20456666656B74207A7520657268616C74656E2E0045696E652073636877616368652C206E696368742066756E6B74696F6E696572656E64652056657273696F6E206465732077756E64657273616D656E2042616C6C732C2064696520617566206E696368747320616E646572657320616C732064696520756E61757377656963686C69636865204175666CC3B673756E67207761727465742E00, 67186), +(3776013982, 1258336, 'deDE', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'deDE', 0x000000, 67186), +(3776013982, 1257729, 'deDE', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'deDE', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'deDE', 0x00446572205A61756265726E646520626567696E6E74206D69742064657220417566657273746568756E6720756E642077697264206D69742041627363686C75737320646572204B616E616C6973696572756E67206D6974202431323537373238733125207365696E6572206D6178696D616C656E20476573756E64686569742077696564657262656C6562742E00496E20417566657273746568756E672E2057697264206D69742041627363686C75737320646572204B616E616C6973696572756E67206D697420243132353737323873312520646572206D6178696D616C656E20476573756E64686569742077696564657262656C6562742E00, 67186), +(3776013982, 1257505, 'deDE', 0x00446572205A61756265726E6465207461757363687420476573756E64686569742066C3BC722065696E656E204162736F727074696F6E73736368696C642064657273656C62656E204D656E67652065696E2E004162736F72626965727420247731205363686164656E2E00, 67186), +(3776013982, 1256189, 'deDE', 0x000000, 67186), +(3776013982, 1255966, 'deDE', 0x00446572205A61756265726E646520726567656E65726965727420616C6C65202474312053656B2E202473312520646572206D6178696D616C656E20476573756E64686569742E00526567656E65726965727420616C6C65202474312053656B2E202473312520646572206D6178696D616C656E20476573756E64686569742E00, 67186), +(3776013982, 1253337, 'deDE', 0x000000, 67186), +(3776013982, 1253336, 'deDE', 0x0000566F6E2064656D2047657472C3A46E6B20657273636865696E7420457563682065696E65206672616777C3BC726469676520496C6C7573696F6E2E2E2E00, 67186), +(3776013982, 1253194, 'deDE', 0x00006B616E616C6973696572656E00, 67186), +(3776013982, 1253193, 'deDE', 0x00006B616E616C6973696572656E00, 67186), +(3776013982, 1253185, 'deDE', 0x00006B616E616C6973696572656E00, 67186), +(3776013982, 1253064, 'deDE', 0x000000, 67186), +(3776013982, 1252431, 'deDE', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'deDE', 0x0024407370656C6C646573633132343130323300416C6C65202474312053656B2E20243132353833333673312041726B616E7363686164656E2E00, 67186), +(3776013982, 1241023, 'deDE', 0x005A6F2767726F6E20736368C3BC747A742073696368206D69742065696E656D204B7261667466656C642C206461732065696E7472656666656E64656E205363686164656E206162736F7262696572742C20756E6420626567696E6E742C20274C65747A7465205761726E756E67272065696E7A757365747A656E2E2057656E6E206465722045696E7361747A20616267657363686C6F7373656E20776972642C2070756C736965727420646173204B7261667466656C6420756E642066C3BC677420616C6C656E20537069656C657263686172616B746572656E20616C6C6520243132343130333274312053656B2E20243132353833333673312041726B616E7363686164656E207A752C20626973206573207A65727374C3B6727420776972642E004162736F726269657274202477312065696E7472656666656E64656E205363686164656E2E00, 67186), +(3776013982, 1235076, 'deDE', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'deDE', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'deDE', 0x0044657220486F72747261666665722062656469656E74207369636820616E2064656D206EC3A463687374656E20566F727261747368617566656E20756E642065727365747A742065696E65207365696E65722046C3A46869676B656974656E206D69742065696E6572206E6575656E2E243F44494646387C3F4449464632335B5D5B204572206B616E6E206A657765696C73206E75722065696E652046C3A46869676B65697420686162656E2E5D0000, 67186), +(3776013982, 1235067, 'deDE', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'deDE', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'deDE', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'deDE', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'deDE', 0x00416C6C6572696120756D676962742065696E656E20537069656C657263686172616B746572206D69742065696E65722048C3BC6C6C6520617573204C656572656E6D616769652C2064696520247331204865696C756E67206162736F7262696572742E2057656E6E202724407370656C6C6E616D65313233333836352720676562616E6E7420776972642C20737072696E67742064696520766572626C656962656E6465204162736F727074696F6E206175662065696E656E20616E646572656E207A7566C3A46C6C6967656E20537069656C657263686172616B74657220C3BC6265722E004162736F72626965727420247731204865696C756E672E0D0A0D0A57656E6E2064657220456666656B7420676562616E6E7420776972642C20737072696E67742064696520766572626C656962656E6465204162736F727074696F6E206175662065696E656E20616E646572656E20537069656C657263686172616B74657220C3BC6265722E00, 67186), +(3776013982, 1228865, 'deDE', 0x00426573636877C3B6727420646965736573205265697474696572206F64657220676962742065732077696564657220667265692E00243F6A31675B52656974676573636877696E6469676B65697420756D20246A31672520657268C3B668742E205D5B5D243F6A31665B466C7567676573636877696E6469676B65697420756D20246A31662520657268C3B668742E205D5B5D243F6A31735B53636877696D6D676573636877696E6469676B65697420756D20246A31732520657268C3B668742E205D5B5D00, 67186), +(3776013982, 1225598, 'deDE', 0x00243F50433135343832385B7C636E4951313A2D2045696E666163686572205461756368616E7A75677C525D5B5D243F50433135343832395B7C636E4951323A2D20416E7A7567206D6974207665727374C3A4726B74656E204CC3B6746EC3A46874656E7C525D5B5D243F50433135343833305B7C636E4951333A2D2054696566656E67657363686D69657274657220416E7A75677C525D5B5D243F50433135343833325B7C636E4951343A2D205061686B732047726162656E666C6F7373656E616E7A75677C525D5B5D0D0A53636877696D6D676573636877696E6469676B656974202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D2045696E66616368657220536175657273746F666674616E6B7C520D0A536175657273746F66666D6178696D756D2024313232343730306D362045696E68656974656E0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2042656E75747A7465722054696566656E7461756368657274616E6B7C520D0A536175657273746F66666D6178696D756D2024313237313631336D362045696E68656974656E0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D204772756E64657270726F627465722054616E6B7C520D0A536175657273746F66666D6178696D756D2024313237313631346D362045696E68656974656E0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D204E616C6F72616B6B7320536175657273746F666674616E6B7C520D0A536175657273746F66666D6178696D756D2024313237313631356D362045696E68656974656E0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D2045696E666163686572204BC3B66465727C520D0A476577C3B6686E6C6963686520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D2046696E6E656E656C7269747A656E6BC3B66465727C520D0A556E676577C3B6686E6C6963686520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20506C65636F666C6F7373656E6BC3B66465727C520D0A53656C74656E6520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D2044C3BC7374657273636877696D6D6572666C65697363686BC3B66465727C520D0A4570697363686520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D205365696368747761737365726E65747A7C520D0A5374616368656C6B726162626C657220756E6420446F726E73656570666572646368656E0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D2044726569666164656E6E65747A7C520D0A416C6C65206B6C65696E656E204B726561747572656E0D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20447275636B617567656E676C61737C520D0A5572616C74652052656C696B746520656E746465636B6261725D5B5D0D0A00243F50433135343832385B7C636E4951313A2D2045696E666163686572205461756368616E7A75677C525D5B5D243F50433135343832395B7C636E4951323A2D20416E7A7567206D6974207665727374C3A4726B74656E204CC3B6746EC3A46874656E7C525D5B5D243F50433135343833305B7C636E4951333A2D2054696566656E67657363686D69657274657220416E7A75677C525D5B5D243F50433135343833325B7C636E4951343A2D205061686B732047726162656E666C6F7373656E616E7A75677C525D5B5D0D0A53636877696D6D676573636877696E6469676B656974202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D2045696E66616368657220536175657273746F666674616E6B7C520D0A536175657273746F66666D6178696D756D2024313232343730306D362045696E68656974656E0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2042656E75747A7465722054696566656E7461756368657274616E6B7C520D0A536175657273746F66666D6178696D756D2024313237313631336D362045696E68656974656E0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D204772756E64657270726F627465722054616E6B7C520D0A536175657273746F66666D6178696D756D2024313237313631346D362045696E68656974656E0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D204E616C6F72616B6B7320536175657273746F666674616E6B7C520D0A536175657273746F66666D6178696D756D2024313237313631356D362045696E68656974656E0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D2045696E666163686572204BC3B66465727C520D0A476577C3B6686E6C6963686520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D2046696E6E656E656C7269747A656E6BC3B66465727C520D0A556E676577C3B6686E6C6963686520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20506C65636F666C6F7373656E6BC3B66465727C520D0A53656C74656E6520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D2044C3BC7374657273636877696D6D6572666C65697363686BC3B66465727C520D0A4570697363686520616E67656C62617265204B726561747572656E0D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D205365696368747761737365726E65747A7C520D0A5374616368656C6B726162626C657220756E6420446F726E73656570666572646368656E0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D2044726569666164656E6E65747A7C520D0A416C6C65206B6C65696E656E204B726561747572656E0D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20447275636B617567656E676C61737C520D0A5572616C74652052656C696B746520656E746465636B6261725D5B5D00, 67186), +(3776013982, 1225322, 'deDE', 0x007C636E475245454E5F464F4E545F434F4C4F523A456D70666F686C656E65204665727469676B6569743A7C7220310D0A0D0A446965207275686967656E20476577C3A473736572206D616368656E2064696573657320476562696574207A756D20696465616C656E205A69656C2066C3BC7220416E676C65722C206469652067657261646520657273742064616D697420616E66616E67656E2C207A7520656E746465636B656E2C20776173207369636820696E2064656E20556E74696566656E2074756D6D656C742E0D0A0D0A53636877C3A4726D6520696E20646965736572205A6F6E653A0D0A2D20536F6E6E656E6272756E6E656E7363687761726D0D0A2D20426C75626265726E646520426CC3BC74650D0A2D20426CC3BC74656E7363687761726D0D0A2D205AC3A468666CC3BC7373696765204C656572650D0A2D205665727363686C616D707465204672616368740D0A2D205665726C6F72656E6520536368C3A4747A650000, 67186), +(3776013982, 1225281, 'deDE', 0x0045696E2073616E66746DC3BC746967657320546965722C2064617320646965207275686967656E20476577C3A4737365722064657320496D6D657273616E6777616C646573206265766F727A7567742E20417563682077656E6E20736963682064757263687363686E6974746C6963686520416E676C657220696E2064696573656E20476577C3A4737365726E20677574207A75726563687466696E64656E2C2066616E67656E206E7572206469652053636861726673696E6E69677374656E20766F6E2069686E656E2064696573656E207370657A69656C6C656E2046697363682E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4265736F6E646572652056657277656E64756E673A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5665726272656974756E6773676562696574653A7C520D0A2D20496D6D657273616E6777616C640D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A466973636873636877C3A4726D653A7C720D0A2D20426CC3BC68656E646572205374726F6D0000, 67186), +(3776013982, 1225277, 'deDE', 0x0044696520476577C3A47373657220766F6E20486172616E64617220656E7468616C74656E2065696E7A6967617274696765204D696E6572616C69656E2C206469652065696E652067656973746572686166746520556E7465727761737365726D656C6F6469652065727A657567656E2C2077656E6E2073696520647572636820646965204B69656D656E2065696E65732065726E6575657274656E2053696E676669736368732067657370C3BC6C742077657264656E2E204469657365204D656C6F646965206D61672066C3BC7220416E676C6572207A77617220616E67656E65686D206B6C696E67656E2C20646F636820656967656E746C696368206469656E74207369652064617A752C206D69742073756274696C656E20566962726174696F6E656E2046726573736665696E6465206665726E7A7568616C74656E2E2057656E6E2065696E20736F6C636865722046726573736665696E642C20776965207A756D20426569737069656C2065696E20766572647265687465722054657472612C2064656D2053696E676669736368207A75206E616865206B6F6D6D742C2077657264656E2064696520566962726174696F6E656E20756E62657374C3A46E64696765722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4265736F6E646572652056657277656E64756E673A207C520D0A0D0A24407370656C6C69636F6E3132333731303420466573746D61686C65206B6F6368656E0D0A0D0A446965736572206265736F6E646572732073656C74656E6520756E64207363686D61636B6861667465204669736368206973742065696E65207769636874696765205A7574617420696E207669656C656E204B6F636872657A657074656E20766F6E204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5665726272656974756E6773676562696574653A7C520D0A2D20496D6D657273616E6777616C640D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A466973636873636877C3A4726D653A7C720D0A2D20426CC3BC74656E7363687761726D0D0A2D20426C75626265726E646520426CC3BC74650D0A2D20536F6E6E656E6272756E6E656E7363687761726D0D0A2D20426CC3BC68656E646572205374726F6D0000, 67186), +(3776013982, 1225273, 'deDE', 0x0045696E2073656C7473616D20616273746FC39F656E646572204265776F686E657220646573204C656572656E737475726D732E205365696E6520476C6965646D61C39F656E20726167656E206175732064656E206669736368626172656E20417370656B74656E20646572204C6565726520686572766F722E204D6974207365696E657220476572697373656E6865697420756E6420496E74656C6C6967656E7A20626965746574206572206A6564656D20416E676C65722C20646572206D757469672067656E7567206973742C20696D204C656572656E737475726D207A75206669736368656E2C2065696E6520656368746520486572617573666F72646572756E672E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4265736F6E646572652056657277656E64756E673A207C520D0A0D0A24407370656C6C69636F6E3132333731303420466573746D61686C65206B6F6368656E0D0A0D0A446965736572206265736F6E646572732073656C74656E6520756E64207363686D61636B6861667465204669736368206973742065696E65207769636874696765205A7574617420696E207669656C656E204B6F636872657A657074656E20617573204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5665726272656974756E6773676562696574653A7C520D0A0D0A2D204C656572656E737475726D0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A466973636873636877C3A4726D653A7C720D0A0D0A2D204D6565726573766F727465780D0A2D205AC3A468666CC3BC7373696765204C656572650000, 67186), +(3776013982, 1225272, 'deDE', 0x0045696E20726F6275737465722073696C6265726E6572205374616368656C66697363682C20646572206D6974207365696E656D204BC3B67270657220736F776F686C20416E676C657220616C73206175636820616E6465726520466973636865207A756D2045726B756E64656E2065696E6CC3A464742C206265766F722065722069686E656E207365696E6520737069747A656E205374616368656C6E20656E74676567656E7363686965C39F742E2045696E207072C3A4636874696765722C206162657220756E616E67656E65686D6572205A65697467656E6F73736520756E642064656E6E6F63682065696E2053636861747A2066C3BC72206A6564656E206175667374726562656E64656E20416E676C65722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4265736F6E646572652056657277656E64756E673A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5665726272656974756E6773676562696574653A7C520D0A2D20496D6D657273616E6777616C640D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A466973636873636877C3A4726D653A7C720D0A2D20426C75626265726E646520426CC3BC74650D0A2D20536F6E6E656E6272756E6E656E7363687761726D0D0A2D20426CC3BC74656E7363687761726D0D0A2D20426CC3BC68656E646572205374726F6D0000, 67186), +(3776013982, 444803, 'deDE', 0x0045696E652065696E66616368652C207363686C756D6D65726E6465204B7265617475722E2057656E6E2073696520657277616368742C20736368696D6D65726E206968726520536368757070656E20696E20616C6C656E2046617262656E2064657320526567656E626F67656E7320756E64207265666C656B74696572656E206A6564656E206E6F636820736F206B6C65696E656E204C6963687473747261686C2E2045696E6520727568696765204572686162656E6865697420756E642065696E2074726566666C6963686573205A69656C2066C3BC72206A6564656E206175667374726562656E64656E20416E676C65722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4265736F6E646572652056657277656E64756E673A7C720D0A0D0A24407370656C6C69636F6E3434353132372046726973636865732046696C65740D0A0D0A4469652056657277657274756E67206469657365732046697363686573206D697420646572204B6F63686665727469676B656974206B616E6E2065696E652067726FC39F65204D656E67652066726973636865732046696C6574206572676562656E2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5665726272656974756E6773676562696574653A7C520D0A0D0A2D20417A6A2D4B616865740D0A2D204B2761726573682D4F6173650000, 67186), +(3205218938, 56772, 'deDE', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453400426566C3B672646572756E6720616E6765626F74656E0001000000, 67186), +(3205218938, 56771, 'deDE', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C4533004B6F6D706574697469760001000000, 67186), +(3205218938, 56770, 'deDE', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453200456E747370616E6E740001000000, 67186), +(3205218938, 22337, 'deDE', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'deDE', 0x000000, 67186), +(1010104591, 26054, 'deDE', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'deDE', 0x546F72626F67656E20766F6E204C6F616D6D00000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'deDE', 0x5665727A69657274652057616E646C657563687465206465722053696E27646F72656900000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'deDE', 0x48C3A46E67656C616D706520646573204D656368616E696B65727320617573204C6F72656E68616C6C00000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'deDE', 0x457370726573736F6D61736368696E65206175732044616C6172616E000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'deDE', 0x4B6F686C656E7066616E6E65206465732056657277C3BC7374657273000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'deDE', 0x45697365726E6520426C656E646C617465726E6500000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'deDE', 0x52617563686C617465726E65206175732042726164656E6261636800000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'deDE', 0x53656872207A757665726CC3A4737369676572204C617465726E656E6D61737420617573204C6F72656E68616C6C00000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'deDE', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'deDE', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'deDE', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'deDE', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'deDE', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'deDE', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'deDE', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'deDE', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'deDE', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'deDE', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'deDE', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'deDE', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'deDE', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'deDE', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'deDE', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'deDE', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'deDE', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'deDE', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'deDE', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'deDE', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'deDE', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'deDE', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'deDE', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'deDE', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'deDE', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'deDE', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'deDE', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'deDE', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'deDE', 0x00446563696D7573207472616E736D7574696572742064696520536368657262656E207A752065696E656D20656C656D656E746172656E204C656572656E6B65726E2C20756D2069686E20696E2064696520656E7473746568656E6465204C656572656E7363686D69656465207A7520776562656E2E20446965204C656572656E7363686D69656465206572666F72646572742024733120656C656D656E74617265204C656572656E6B65726E652066C3BC722069687265204665727469677374656C6C756E672E0D0A0D0A416B7475656C6C65204265697472C3A467653A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'deDE', 0xFFFFFFFFFFFFFFFF45696E20656C656D656E7461726572204C656572656E6B65726E0000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'deDE', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'deDE', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'deDE', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'deDE', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'deDE', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'deDE', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'deDE', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'deDE', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'deDE', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'deDE', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'deDE', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'deDE', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'deDE', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'deDE', 0x000000, 67186), +(3653642729, 376, 'deDE', 0x000000008D000000, 67186), +(1673391669, 141, 'deDE', 0x8A000000, 67186), +(2791084701, 138, 'deDE', 0x35D30600, 67186), +(2518885667, 13760, 'deDE', 0xC035000000000000, 67186), +(3776013982, 1296205, 'deDE', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'deDE', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'deDE', 0xFFFFFFFFFFFFFFFF416E67726966666520646572204C656572653A205A756C27416D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'deDE', 0xFFFFFFFFFFFFFFFF416E67726966666520646572204C656572653A20496D6D657273616E6777616C6400003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'deDE', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'deDE', 0x000000, 67186), +(3776013982, 1296168, 'deDE', 0x000000, 67186), +(600565378, 665333, 'deDE', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'deDE', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'deDE', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'deDE', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'deDE', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'deDE', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'deDE', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'deDE', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'deDE', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'deDE', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'deDE', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'deDE', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'deDE', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'deDE', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'deDE', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'deDE', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'deDE', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'deDE', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'deDE', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'deDE', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'deDE', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'deDE', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'deDE', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'deDE', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'deDE', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'deDE', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'deDE', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'deDE', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'deDE', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'deDE', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'deDE', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'deDE', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'deDE', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'deDE', 0x898200006D670300, 67186), +(3745449290, 8614, 'deDE', 0x52697475616C7374C3A47474653A205A65727363686C6167656E6572205468726F6E00496E20646572204EC3A4686520776972642065696E20676566C3A468726C69636865732052697475616C206475726368676566C3BC6872742E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'deDE', 0x000000, 67186), +(2575642838, 765, 'deDE', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'deDE', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'deDE', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'deDE', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'deDE', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'deDE', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'deDE', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'deDE', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'deDE', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'deDE', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'deDE', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'deDE', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'deDE', 0x5775727A656C67657765627465732046656E73746572000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'deDE', 0x47656DC3A46C64652022496D6D657273616E676C617465726E65000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'deDE', 0x5775727A656C676577656274652054C3BC72000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'deDE', 0x50696C7A706572676F6C610000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'deDE', 0xC39C7070696765722042656572656E6B756368656E00000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'deDE', 0x52757374696B616C657220486172616E646172746F7066000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'deDE', 0x47726FC39F657220C384746865726B72697374616C6C00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'deDE', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'deDE', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'deDE', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'deDE', 0x467B0000, 67186), +(4033975491, 620660, 'deDE', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'deDE', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'deDE', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'deDE', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'deDE', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'deDE', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'deDE', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'deDE', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'deDE', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'deDE', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'deDE', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'deDE', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'deDE', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'deDE', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'deDE', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'deDE', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'deDE', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'deDE', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'deDE', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'deDE', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'deDE', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'deDE', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'deDE', 0x000000, 67186), +(3776013982, 1295957, 'deDE', 0x000000, 67186), +(3776013982, 1295932, 'deDE', 0x000000, 67186), +(3776013982, 1295927, 'deDE', 0x0057656E6E204968722064696520526F6C6C65206465732054616E6B732066C3BC7220457572652047727570706520C3BC6265726E65686D742C206D61726B69657274204C696E646F726D69204765676E657220696E205363686CC3BC7373656C737465696E64756E67656F6E732E0D0A0D0A53707265636874206D6974204C696E646F726D692C20756D2064696573656E20456666656B74207A75206465616B746976696572656E2E0057656E6E204968722064696520526F6C6C65206465732054616E6B732066C3BC7220457572652047727570706520C3BC6265726E65686D742C206D61726B69657274204C696E646F726D69204765676E657220696E205363686CC3BC7373656C737465696E64756E67656F6E732E0D0A0D0A53707265636874206D6974204C696E646F726D692C20756D2064696573656E20456666656B74207A75206465616B746976696572656E2E00, 67186), +(3776013982, 1265971, 'deDE', 0x0046C3A46869676B656974656E2C2064696520766F6E205265697465726E2067657769726B742077657264656E2C20766572757273616368656E2024733125206D656872205363686164656E243F63335B0D0A0D0A45757265204768756C6520756E6420536B656C657474736368C3BC747A656E20766572757273616368656E202473332520756E64206E696564657265204768756C652024733525206D656872205363686164656E5D5B5D2E0000, 67186), +(336222293, 22784, 'deDE', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'deDE', 0x0049687220657268616C74657420626569206A6564656D202473312E2045696E7361747A20766F6E20275363686CC3A463687465727363686C6167272027506CC3B6747A6C696368657220546F64272E0D0A0D0A4465722045696E7361747A20766F6E2027506CC3B6747A6C696368657220546F64272062657363686C65756E69677420457572656E206EC3A463687374656E20274B6C696E67656E737475726D272C20776F64757263682065722065696E6D616C20C3B666746572207472696666742028626973207A75202434343536303675292E2044696520476573616D74646175657220766F6E20274B6C696E67656E737475726D2720626C6569627420756E766572C3A46E646572742E0D0A0D0A27506CC3B6747A6C696368657220546F6427206861742065696E65204368616E636520766F6E20247332252C2027537475726D2065726E74656E27206D6974202473332520456666656B7469766974C3A474206175737A756CC3B673656E2E0000, 67186), +(378810315, 666, 'deDE', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'deDE', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'deDE', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'deDE', 0x000000, 67186), +(1181150530, 752881, 'deDE', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'deDE', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'deDE', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'deDE', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'deDE', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'deDE', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'deDE', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'deDE', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'deDE', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'deDE', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'deDE', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'deDE', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'deDE', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'deDE', 0xE1570500E0570500, 67186), +(736158310, 43619, 'deDE', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'deDE', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'deDE', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'deDE', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'deDE', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'deDE', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'deDE', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'deDE', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'deDE', 0x00243F63315B274E69757A616F2064656E205363687761727A656E204F636873656E20626573636877C3B672656E275D5B275A656E6974275D206CC3A473737420243F63315B2746657565726174656D275D5B2754726974742064657220617566676568656E64656E20536F6E6E652720756E64202757697262656C6E646572204B72616E6963687472697474275D2024733120275072C3BC67656C686167656C27206175736CC3B673656E2E0000, 67186), +(3776013982, 1244331, 'deDE', 0x002473322520646573206C65747A74656E20426CC3BC68656E7320766F6E2027426CC3BC68656E646573204C6562656E27206865696C7420626973207A7520247333207665726C65747A74652056657262C3BC6E6465746520696E6E657268616C6220766F6E2024313234343334316131204D657465726E2E0000, 67186), +(3776013982, 441845, 'deDE', 0x00243F63325B5363686164656E20766F6E20275363687265646465726E272C20275072616E6B656E686965622720756E6420274B72616C6C656E686965622720756D202473312520756E64206B726974697363686520547265666665726368616E636520756D202473332520657268C3B668742E5D5B5363686164656E20766F6E20275A6572666C6569736368656E2720756D202473342520756E64206B726974697363686520547265666665726368616E636520756D202473352520657268C3B668742E5D0D0A0D0A243F63335B4465722045696E7361747A20766F6E20275A6572666C6569736368656E27206865696C74204575636820756D2024343538373234733125204575726572206D6178696D616C656E20476573756E64686569742E5D5B5D0000, 67186), +(3205218938, 57068, 'deDE', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00416C6C65202825732920476567656E7374C3A46E64652066C3BC72202573206B617566656E3F0003000000, 67186), +(3205218938, 23377, 'deDE', 0x5343454E4152494F5F53544147455F53544154555300506861736520256420766F6E2025640001000000, 67186), +(3205218938, 22841, 'deDE', 0x5343454E4152494F5F53544147450050686173652025640001000000, 67186), +(3745449290, 8459, 'deDE', 0x426575746500417374616C6F7220426C75747363687775722062656EC3B67469677420457572652048696C66652062656920646572204A616764206175662074C3B6646C6963686520426564726F68756E67656E2E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'deDE', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'deDE', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'deDE', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'deDE', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'deDE', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'deDE', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'deDE', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'deDE', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'deDE', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'deDE', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'deDE', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'deDE', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'deDE', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'deDE', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'deDE', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'deDE', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'deDE', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'deDE', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'deDE', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'deDE', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'deDE', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'deDE', 0x4E65746865727779726D00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'deDE', 0x9201000022000000, 67186), +(3247720076, 39887, 'deDE', 0x0700000000, 67186), +(3776013982, 243435, 'deDE', 0x004CC3A473737420457572652048617574207A7520537465696E2077657264656E2C20776173204575726520616B7475656C6C6520736F776965206D6178696D616C6520476573756E646865697420756D202473312520657268C3B6687420756E6420457572656E2065726C697474656E656E205363686164656E20756D20247332252076657272696E676572742E2048C3A46C74202464206C616E6720616E2E004D6178696D616C6520476573756E646865697420756D202477312520657268C3B668742E0D0A45726C697474656E6572205363686164656E20756D20247732252076657272696E676572742E243F2477343E315B0D0A4162736F72626965727420247734205363686164656E2E5D5B5D00, 67186), +(3776013982, 221562, 'deDE', 0x004865627420646173206765676E65726973636865205A69656C20766F6D20426F64656E2C2077C3BC726774206573206D69742064756E6B6C657220456E657267696520756E6420626574C3A47562742065732066C3BC7220246400426574C3A47562742E00, 67186), +(3776013982, 205630, 'deDE', 0x5076502D54616C656E7400496872206E65686D7420646173205A69656C20696E2065696E656E2064C3A46D6F6E69736368656E2057C3BC72676567726966662C20626574C3A475627420657320756E642068616C74657420657320666573742C2077617320696D205665726C61756620766F6E20246420246F3420536368617474656E7363686164656E20766572757273616368742C2077C3A46872656E6420646173205A69656C2066657374676568616C74656E20776972642E204B616E6E20736963682077C3A46872656E6420646572204B616E616C6973696572756E67206265776567656E2E0D0A0D0A4D697468696C666520766F6E2027496C6C6964616E7320477269666627207363686C6575646572742049687220646173205A69656C2064616E6E20616E2065696E656E204F727420696E6E657268616C6220766F6E202432303831373352204D657465726E2E00426574C3A47562742E2045726C656964657420616C6C652024742053656B2E2024773420536368617474656E7363686164656E2E00, 67186), +(3776013982, 198158, 'deDE', 0x5076502D54616C656E740049687220756E6420457572652056657262C3BC6E646574656E20696E6E657268616C6220766F6E20244131204D657465726E207765726465742066C3BC7220246420756E73696368746261722E204A65676C6963686520416B74696F6E20686562742064656E20456666656B74206175662E00556E73696368746261722E204A65676C6963686520416B74696F6E20686562742064656E20456666656B74206175662E00, 67186), +(3776013982, 108194, 'deDE', 0x004865627420646173206765676E65726973636865205A69656C20766F6D20426F64656E2C2077C3BC726774206573206D69742064756E6B6C657220456E657267696520756E6420626574C3A47562742065732066C3BC7220246400426574C3A47562742E00, 67186), +(378810315, 1004, 'deDE', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'deDE', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'deDE', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'deDE', 0x077A03000705000047000000, 67186), +(378810315, 999, 'deDE', 0x530D00000509000049000000, 67186), +(378810315, 998, 'deDE', 0x530D00000509000048000000, 67186), +(378810315, 997, 'deDE', 0x530D00000509000047000000, 67186), +(378810315, 996, 'deDE', 0x78B700000409000049000000, 67186), +(378810315, 995, 'deDE', 0x78B700000409000048000000, 67186), +(378810315, 994, 'deDE', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'deDE', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'deDE', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'deDE', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'deDE', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'deDE', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'deDE', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'deDE', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'deDE', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'deDE', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'deDE', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'deDE', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'deDE', 0x989B12000706000006010000, 67186), +(378810315, 980, 'deDE', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'deDE', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'deDE', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'deDE', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'deDE', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'deDE', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'deDE', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'deDE', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'deDE', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'deDE', 0x713507000505000000010000, 67186), +(378810315, 966, 'deDE', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'deDE', 0x550300000805000046000000, 67186), +(378810315, 964, 'deDE', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'deDE', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'deDE', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'deDE', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'deDE', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'deDE', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'deDE', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'deDE', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'deDE', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'deDE', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'deDE', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'deDE', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'deDE', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'deDE', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'deDE', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'deDE', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'deDE', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'deDE', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'deDE', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'deDE', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'deDE', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'deDE', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'deDE', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'deDE', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'deDE', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'deDE', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'deDE', 0x991503000409000045020000, 67186), +(378810315, 933, 'deDE', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'deDE', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'deDE', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'deDE', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'deDE', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'deDE', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'deDE', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'deDE', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'deDE', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'deDE', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'deDE', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'deDE', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'deDE', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'deDE', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'deDE', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'deDE', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'deDE', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'deDE', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'deDE', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'deDE', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'deDE', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'deDE', 0x42E906000309000009010000, 67186), +(378810315, 902, 'deDE', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'deDE', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'deDE', 0x761800000309000009010000, 67186), +(378810315, 899, 'deDE', 0x76180000030900000A010000, 67186), +(378810315, 898, 'deDE', 0x76180000030900000B010000, 67186), +(378810315, 885, 'deDE', 0x78B700000409000047000000, 67186), +(378810315, 879, 'deDE', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'deDE', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'deDE', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'deDE', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'deDE', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'deDE', 0x980100000905000005010000, 67186), +(378810315, 858, 'deDE', 0x980100000905000004010000, 67186), +(378810315, 855, 'deDE', 0x980100000905000003010000, 67186), +(378810315, 843, 'deDE', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'deDE', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'deDE', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'deDE', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'deDE', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'deDE', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'deDE', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'deDE', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'deDE', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'deDE', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'deDE', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'deDE', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'deDE', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'deDE', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'deDE', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'deDE', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'deDE', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'deDE', 0x027F05000707000003010000, 67186), +(378810315, 720, 'deDE', 0x36A401000707000048000000, 67186), +(378810315, 719, 'deDE', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'deDE', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'deDE', 0x790200000905000046000000, 67186), +(378810315, 714, 'deDE', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'deDE', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'deDE', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'deDE', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'deDE', 0x68F905000605000067000000, 67186), +(378810315, 691, 'deDE', 0x68F905000605000066000000, 67186), +(378810315, 690, 'deDE', 0x68F905000605000069000000, 67186), +(378810315, 682, 'deDE', 0x15A905000705000041020000, 67186), +(378810315, 679, 'deDE', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'deDE', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'deDE', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'deDE', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'deDE', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'deDE', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'deDE', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'deDE', 0x16600500040800003F000000, 67186), +(378810315, 661, 'deDE', 0x16600500040900003E000000, 67186), +(378810315, 658, 'deDE', 0xE53805000209000040000000, 67186), +(378810315, 657, 'deDE', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'deDE', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'deDE', 0x166005000409000040000000, 67186), +(378810315, 648, 'deDE', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'deDE', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'deDE', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'deDE', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'deDE', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'deDE', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'deDE', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'deDE', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'deDE', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'deDE', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'deDE', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'deDE', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'deDE', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'deDE', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'deDE', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'deDE', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'deDE', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'deDE', 0x550300000805000041000000, 67186), +(378810315, 449, 'deDE', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'deDE', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'deDE', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'deDE', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'deDE', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'deDE', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'deDE', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'deDE', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'deDE', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'deDE', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'deDE', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'deDE', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'deDE', 0x57A101000505000067000000, 67186), +(378810315, 408, 'deDE', 0x638400000705000069000000, 67186), +(378810315, 407, 'deDE', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'deDE', 0xE40200000505000069000000, 67186), +(378810315, 402, 'deDE', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'deDE', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'deDE', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'deDE', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'deDE', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'deDE', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'deDE', 0xE77701000605000046000000, 67186), +(378810315, 377, 'deDE', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'deDE', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'deDE', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'deDE', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'deDE', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'deDE', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'deDE', 0x400700000409000004010000, 67186), +(378810315, 353, 'deDE', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'deDE', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'deDE', 0xE60600000605000005010000, 67186), +(378810315, 349, 'deDE', 0xE60600000605000004010000, 67186), +(378810315, 348, 'deDE', 0xE60600000605000003010000, 67186), +(378810315, 346, 'deDE', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'deDE', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'deDE', 0x301E03000509000006010000, 67186), +(378810315, 342, 'deDE', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'deDE', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'deDE', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'deDE', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'deDE', 0x66D401000505000009010000, 67186), +(378810315, 332, 'deDE', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'deDE', 0x981900000605000048000000, 67186), +(378810315, 329, 'deDE', 0x981900000605000049000000, 67186), +(378810315, 224, 'deDE', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'deDE', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'deDE', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'deDE', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'deDE', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'deDE', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'deDE', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'deDE', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'deDE', 0x242303000409000041020000, 67186), +(378810315, 205, 'deDE', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'deDE', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'deDE', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'deDE', 0x242303000409000045020000, 67186), +(378810315, 189, 'deDE', 0x743C03000805000045020000, 67186), +(378810315, 187, 'deDE', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'deDE', 0x36A401000707000049000000, 67186), +(378810315, 176, 'deDE', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'deDE', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'deDE', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'deDE', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'deDE', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'deDE', 0x36A401000707000047000000, 67186), +(378810315, 159, 'deDE', 0x981900000605000047000000, 67186), +(378810315, 158, 'deDE', 0x533301000405000066000000, 67186), +(378810315, 156, 'deDE', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'deDE', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'deDE', 0xA09001000607000066000000, 67186), +(378810315, 152, 'deDE', 0x82020000010B000046000000, 67186), +(378810315, 150, 'deDE', 0x50350300050B000046000000, 67186), +(378810315, 149, 'deDE', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'deDE', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'deDE', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'deDE', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'deDE', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'deDE', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'deDE', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'deDE', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'deDE', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'deDE', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'deDE', 0x62040000060500000B010000, 67186), +(378810315, 121, 'deDE', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'deDE', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'deDE', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'deDE', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'deDE', 0x45990100010B000009010000, 67186), +(378810315, 113, 'deDE', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'deDE', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'deDE', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'deDE', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'deDE', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'deDE', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'deDE', 0x491E03000907000007010000, 67186), +(378810315, 101, 'deDE', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'deDE', 0x301E03000509000008010000, 67186), +(378810315, 97, 'deDE', 0x301E03000509000007010000, 67186), +(378810315, 96, 'deDE', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'deDE', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'deDE', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'deDE', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'deDE', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'deDE', 0x400700000409000005010000, 67186), +(378810315, 83, 'deDE', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'deDE', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'deDE', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'deDE', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'deDE', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'deDE', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'deDE', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'deDE', 0xB63500000707000004010000, 67186), +(378810315, 70, 'deDE', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'deDE', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'deDE', 0x400700000409000003010000, 67186), +(378810315, 63, 'deDE', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'deDE', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'deDE', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'deDE', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'deDE', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'deDE', 0x82020000010B000042000000, 67186), +(378810315, 45, 'deDE', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'deDE', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'deDE', 0x82020000010B000041000000, 67186), +(378810315, 39, 'deDE', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'deDE', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'deDE', 0x790200000905000041000000, 67186), +(378810315, 35, 'deDE', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'deDE', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'deDE', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'deDE', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'deDE', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'deDE', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'deDE', 0xD39603000805000040000000, 67186), +(378810315, 21, 'deDE', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'deDE', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'deDE', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'deDE', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'deDE', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'deDE', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'deDE', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'deDE', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'deDE', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'deDE', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'deDE', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'deDE', 0x52697475616C6973742064657220446F6D616E61617200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931373931773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291859, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931373931773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291858, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931373931773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291857, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931373931773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291856, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931373931773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291855, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931373931773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291854, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931383331773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291853, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931383331773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291852, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931383331773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291851, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931383331773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291850, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931383331773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291849, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E646520626973207A752024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64202431323931383331773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291848, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291847, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291846, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291845, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291844, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291843, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291842, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291841, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291840, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291839, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291838, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291837, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291831, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1291828, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291827, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291826, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291825, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291824, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291822, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1291791, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1290929, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1290926, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1290925, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1289221, 'deDE', 0x00C39666666E6574206469652054727568652C20756D207A7520736568656E2C20776173207369636820646172696E20626566696E646574210000, 67186), +(3776013982, 1286537, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64204D616E6120776965646572206865722E00, 67186), +(3776013982, 1286536, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1286535, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1282100, 'deDE', 0x000000, 67186), +(3776013982, 1282018, 'deDE', 0x00426573636877C3B672742065696E652042616E6B207A756D205369747A656E21004272656368742064696520417572612061622C20756D20457572652042616E6B20667265697A75676562656E2E00, 67186), +(3776013982, 1277461, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1269922, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1269921, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1269920, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420776965646572206865722E00, 67186), +(3776013982, 1269919, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1269918, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D205472696E6B656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E64652024773125204D616E6120776965646572206865722E00, 67186), +(3776013982, 1269917, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64204D616E6120776965646572206865722E00, 67186), +(3776013982, 1269916, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64204D616E6120776965646572206865722E00, 67186), +(3776013982, 1232065, 'deDE', 0x005374656C6C7420696D205665726C61756620766F6E202464206A6564652053656B756E64652024733125204575726572206D6178696D616C656E20476573756E646865697420756E64204575726573206D6178696D616C656E204D616E617320776965646572206865722E20496872206DC3BC737374206265696D20457373656E207369747A656E20626C656962656E2E005374656C6C742070726F2053656B756E6465202473312520476573756E646865697420756E64204D616E6120776965646572206865722E00, 67186), +(2948698321, 8059, 'deDE', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'deDE', 0x000000, 67186), +(3898252553, 11633, 'deDE', 0xE28200001E490300, 67186), +(3898252553, 11632, 'deDE', 0xE18200001E490300, 67186), +(3898252553, 11631, 'deDE', 0xE08200001E490300, 67186), +(3898252553, 11630, 'deDE', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'deDE', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'deDE', 0x0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202473332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024733420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024733520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202477332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024773420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024773520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E00, 67186), +(3776013982, 1262377, 'deDE', 0x0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202473332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024733420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024733520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202477332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024773420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024773520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E00, 67186), +(3776013982, 1262376, 'deDE', 0x0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202473332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024733420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024733520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202477332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024773420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024773520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E00, 67186), +(3776013982, 1262365, 'deDE', 0x0057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282473352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024733325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C64657363313235313630330057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282477352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024773325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'deDE', 0x0057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282473352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024733325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A274D616E64617420646573206865696C6967656E20546F64657327206861742065696E65207365687220676572696E6765204368616E63652C204E696368742D426F73736765676E65722068696E7A757269636874656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C64657363313235313630330057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282477352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024773325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A274D616E64617420646573206865696C6967656E20546F64657327206861742065696E65207365687220676572696E6765204368616E63652C204E696368742D426F73736765676E65722068696E7A757269636874656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'deDE', 0x0057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282473352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024733325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A274D616E64617420646573206865696C6967656E20546F64657327206861742065696E65207365687220676572696E6765204368616E63652C204E696368742D426F73736765676E65722068696E7A757269636874656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C64657363313235313630330057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282477352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024773325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A274D616E64617420646573206865696C6967656E20546F64657327206861742065696E65207365687220676572696E6765204368616E63652C204E696368742D426F73736765676E65722068696E7A757269636874656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'deDE', 0x0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202473332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024733420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024733520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E0044617320C39666666E656E2065696E6572207665726C656774656E204B7572696F736974C3A47420626573636877C3B672742065696E6520756E746572776F7266656E652042C3BC7264652C2064696520457563682077C3A46872656E6420646573204B616D70666573207665726568727420756E6420736F2045757265202470726920756D202477332520657268C3B668742E0D0A0D0A496872206BC3B66E6E7420626973207A752024773420756E746572776F7266656E652042C3BC7264656E20676C656963687A656974696720686162656E2E0D0A4E61636864656D20496872206D696E64657374656E732024773520416E68C3A46E6765722076657273616D6D656C7420686162742C20657268C3B66874207369636820646965204D656E676520616E20676577C3A4687274657220247072692070726F2042C3BC7264652E00, 67186), +(3776013982, 1248927, 'deDE', 0x0057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282473352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024733325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C64657363313235313630330057656E6E20457565722054696566656E676566C3A468727465202724407370656C6C6E616D653132353136303327207769726B742C2077657264656E204772757070656E6D6974676C6965646572206D69742065696E656D206865696C6967656E204D616E6461742062656C6567742C2064617320696872656E20736368C3A4646C696368656E205A61756265726E20756E642046C3A46869676B656974656E2065696E65204368616E636520766F6E20247B282477352F31303030292A3130307D2E3125207665726C656968742C2064656D205A69656C2070726F204D616E6461742024773325207365696E6572206D6178696D616C656E20476573756E646865697420616C73207A7573C3A4747A6C696368656E204865696C69677363686164656E207A757A7566C3BC67656E2E0D0A0D0A4B616E6E2070726F205A69656C206E75722065696E6D616C20616C6C6520243132363133323470726F63636F6F6C646F776E2053656B2E2061756674726574656E2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'deDE', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'deDE', 0x0042616E6E742064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20696E2065696E656D204265726569636820766F72204575636820756E64206D61726B696572742073696520616C732027476566756E64656E272E0000, 67186), +(3776013982, 1256862, 'deDE', 0x0042616E6E742064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20696E2065696E656D204265726569636820756E64206D61726B696572742073696520616C732027476566756E64656E272E0000, 67186), +(3776013982, 1256861, 'deDE', 0x00537072696E6774207A756D205A69656C6F727420756E642062616E6E742064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20696D2045696E7363686C616773626572656963682E0000, 67186), +(3776013982, 1256860, 'deDE', 0x0042616E6E7420696D204C6175666520766F6E2024642064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20766F72204575636820756E64206D61726B696572742073696520616C732027476566756E64656E272E0000, 67186), +(3776013982, 1256010, 'deDE', 0x0042616E6E742064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20696E2065696E656D204265726569636820756E64206D61726B696572742073696520616C732027476566756E64656E272E0000, 67186), +(1408785804, 249319, 'deDE', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'deDE', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'deDE', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'deDE', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'deDE', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'deDE', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'deDE', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'deDE', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'deDE', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'deDE', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'deDE', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'deDE', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'deDE', 0x000000, 67186), +(3776013982, 1295497, 'deDE', 0x000000, 67186), +(3776013982, 1295486, 'deDE', 0x000000, 67186), +(3776013982, 464291, 'deDE', 0x000000, 67186), +(3776013982, 1243616, 'deDE', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'deDE', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'deDE', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'deDE', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'deDE', 0x00446567656E7472697573207665727363686965C39F742065696E656E20426C69747A2061757320696E73746162696C6572204C656572656E656E65726769652C20646572206175662024733220506F736974696F6E656E20C3BC626572737072696E67742E204265696D204175667072616C6C206175662064656E20426F64656E206578706C6F64696572742064696520456E657267696520756E642066C3BC677420537069656C657263686172616B746572656E20696E6E657268616C6220766F6E2024313231353135374131204D657465726E202431323135313537733120536368617474656E7363686164656E207A752E2046616C6C73207369636820696E2064696573656D2042657265696368206B65696E20537069656C657263686172616B74657220626566696E6465742C2077697264202724407370656C6C6E616D6531323135313631272061757367656CC3B673742E0D0A0D0A4E61636820616C6C656E202473322045696E7363686CC3A467656E20737072696E67742064696520456E6572676965206E6F63682065696E6D616C20C3BC62657220756E642077697264207A7572202724407370656C6C6E616D6531323135393337272E0000, 67186), +(3776013982, 1243588, 'deDE', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'deDE', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'deDE', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'deDE', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'deDE', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'deDE', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'deDE', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C725469656674617563686572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C6346464646443230304B6F7374656E3A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C725469656674617563686572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C6346464646443230304B6F7374656E3A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C725469656674617563686572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C6346464646443230304B6F7374656E3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C725469656674617563686572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C6346464646443230304B6F7374656E3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C725469656674617563686572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C6346464646443230304B6F7374656E3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C725469656674617563686572205475276E616B69747C6E7C6346464646443230305A6F6E653A207C725A756C27416D616E7C6E7C6346464646443230304B6F7374656E3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'deDE', 0x005363686CC3A46774206D6974207072C3A47A6973656E20446F7070656C68696562656E20676567656E207365696E20616B7475656C6C6573205A69656C206175732E204A6564657220486965622066C3BC677420243132353737343564206C616E6720616C6C656E204765676E65726E20696E20526569636877656974652024313235373733367331206BC3B6727065726C696368656E20756E64207A7573C3A4747A6C6963682024313235373734357331204865696C69677363686164656E20616C6C6520243132353737343574312053656B2E207A752E20446162656920776972642065696E202724407370656C6C6E616D65313235353331302720696E2064656E20426F64656E2067657269747A742E0000, 67186), +(4033975491, 619581, 'deDE', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'deDE', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'deDE', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'deDE', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'deDE', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'deDE', 0x526F7400243F63315B446572205363686164656E20766F6E2027446573696E746567726174696F6E27207A6568727420247B2473322F313030307D2E312053656B2E2064657320456666656B747320766F6E202746657565726174656D2720766F6E20676574726F6666656E656E204765676E65726E2061756620756E64206CC3B673742065696E65204578706C6F73696F6E206D69742024733425206465722061756667657A65687274656E204D656E6765206175732E0D0A0D0A446572205363686164656E20766F6E2027536368656974657268617566656E27207A6568727420247B2473332F313030307D2053656B2E2064657320456666656B747320766F6E202746657565726174656D2720766F6E20676574726F6666656E656E204765676E65726E2061756620756E64206CC3B673742065696E65204578706C6F73696F6E206D69742024733725206465722061756667657A65687274656E204D656E6765206175732E5D5B446965204865696C756E6720766F6E2027546965666772C3BC6E6520556D61726D756E6727207A6568727420247B2473352F313030307D2053656B2E2064657320456666656B747320766F6E2027547261756D6174656D2720766F6E2067656865696C74656E2056657262C3BC6E646574656E2061756620756E64206CC3B673742065696E65206865696C656E6465204578706C6F73696F6E206175732C2064696520476573756E646865697420696E2048C3B6686520766F6E2024733625206465722061756667657A65687274656E204D656E6765207769656465726865727374656C6C742E0D0A0D0A446965204865696C756E6720766F6E2027536D6172616764626CC3BC746527207A6568727420247B2473312F313030307D2053656B2E2064657320456666656B747320766F6E2027547261756D6174656D2720766F6E2067656865696C74656E2056657262C3BC6E646574656E2061756620756E64206CC3B673742065696E65206865696C656E6465204578706C6F73696F6E206175732C2064696520476573756E646865697420696E2048C3B6686520766F6E2024733625206465722061756667657A65687274656E204D656E6765207769656465726865727374656C6C742E5D0000, 67186), +(4033975491, 619554, 'deDE', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'deDE', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'deDE', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'deDE', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'deDE', 0x000000, 67186), +(2151089334, 7976, 'deDE', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'deDE', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'deDE', 0x4772C3A473736C6963686572204C65657277616E646C657200000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'deDE', 0x0045696E6520696E206465722066616C736368656E2052656968656E666F6C676520676574726F6666656E65202724407370656C6C6E616D6531323439363039272065727A657567742065696E20776964657268616C6C656E64657320476574C3B673652C20776F647572636820646173205A69656C202464206C616E67207A756D2053636877656967656E20676562726163687420776972642E20005A756D2053636877656967656E2067656272616368742E00, 67186), +(3247720076, 42321, 'deDE', 0x0000000000, 67186), +(4033975491, 619506, 'deDE', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'deDE', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'deDE', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'deDE', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'deDE', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'deDE', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'deDE', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'deDE', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'deDE', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'deDE', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'deDE', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'deDE', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'deDE', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'deDE', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'deDE', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'deDE', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'deDE', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'deDE', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'deDE', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'deDE', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'deDE', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'deDE', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'deDE', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'deDE', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'deDE', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'deDE', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'deDE', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'deDE', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'deDE', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'deDE', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'deDE', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'deDE', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'deDE', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'deDE', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'deDE', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'deDE', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'deDE', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'deDE', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'deDE', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'deDE', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'deDE', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'deDE', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'deDE', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'deDE', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'deDE', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'deDE', 0x52697475616C7374C3A47474653A2053C3A462656C666C6F7373656E737069747A6500496E20646572204EC3A4686520776972642065696E20676566C3A468726C69636865732052697475616C206475726368676566C3BC6872742E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'deDE', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'deDE', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'deDE', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'deDE', 0x00446572205A61756265726E646520656E7466657373656C742065696E65204578706C6F73696F6E2061726B616E657220456E65726769652C2064696520537069656C657263686172616B746572656E20696E6E657268616C6220766F6E20244131204D657465726E202473312041726B616E7363686164656E207A7566C3BC67742E0000, 67186), +(3776013982, 1295237, 'deDE', 0x00446572205A61756265726E646520656E7466657373656C742065696E65204578706C6F73696F6E2061726B616E657220456E65726769652C2064696520537069656C657263686172616B746572656E20696E6E657268616C6220766F6E20244131204D657465726E202473312041726B616E7363686164656E207A7566C3BC67742E0000, 67186), +(600565378, 632510, 'deDE', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'deDE', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'deDE', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'deDE', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'deDE', 0x004D6163687420457563682066C3BC7273205363686C61636874656E206265726569742E20536F6C616E67652064657220456666656B7420616B746976206973742C2062656B6F6D6D74204968722062656920457572656D206EC3A463687374656E204BC3BC727363686E6572766F7267616E6720766F6E204D69646E6967687420676172616E746965727420466C65697363682C2064617320496872207A756D204B6F6368656E2076657277656E64656E206BC3B66E6E742E004265726569742C20646173206EC3A463687374652057696C647469657220766F6E204D69646E69676874207A75207363686C61636874656E2C20646173204968722068C3A4757465742C20756D20676172616E746965727420466C6569736368207A756D204B6F6368656E207A752062656B6F6D6D656E2E00, 67186), +(3776013982, 442615, 'deDE', 0x004D6163687420457563682066C3BC7273205363686C61636874656E206265726569742E20536F6C616E67652064657220456666656B7420616B746976206973742C2062656B6F6D6D74204968722062656920457572656D206EC3A463687374656E204BC3BC727363686E6572766F7267616E6720766F6E204B68617A20416C67617220676172616E746965727420466C65697363682C2064617320496872207A756D204B6F6368656E2076657277656E64656E206BC3B66E6E742E004265726569742C20646173206EC3A463687374652057696C647469657220766F6E204B68617A20416C676172207A75207363686C61636874656E2C20646173204968722068C3A4757465742C20756D20676172616E746965727420466C6569736368207A756D204B6F6368656E207A752062656B6F6D6D656E2E00, 67186), +(3386943305, 23675, 'deDE', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'deDE', 0x44C3A46D6F6E69736368657320546F7200000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'deDE', 0x0050686173656E7461756368656E207665726C617373656E0000, 67186), +(3776013982, 1241218, 'deDE', 0x000000, 67186), +(2575642838, 749, 'deDE', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'deDE', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'deDE', 0x004C65697465742065726DC3A463687469677420647572636820646965205072C3A473656E7A2065696E6573206772C3B6C39F6572656E204765676E65727320247731252073C3A46D746C696368656E205363686164656E73206175662064656E205A61756265726E64656E207A7572C3BC636B2E004C65697465742065726DC3A463687469677420647572636820646965205072C3A473656E7A2065696E6573206772C3B6C39F6572656E204765676E65727320247731252073C3A46D746C696368656E205363686164656E73206175662064656E205A61756265726E64656E207A7572C3BC636B2E0D0A0D0A45726DC3A46368746967742064757263683A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220476566616C6C656E6572204BC3B66E69672053616C6861646161725D00, 67186), +(3425193231, 546424, 'deDE', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'deDE', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'deDE', 0x000000, 67186), +(600565378, 664416, 'deDE', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'deDE', 0x0045696E204265727566737765726B7A65756720646175657268616674206D697420476577616E647468656974206465722053696E27646F726569207665727A61756265726E2C20776F64757263682064696520476577616E64746865697420756D202465633120657268C3B6687420776972642E204B616E6E206E696368742061756620476567656E7374C3A46E646520C3BC62657220537475666520246563697820616E676577616E64742077657264656E2E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A5468616C61737369736368652054616C656E7465202D205175616C6974C3A47420766F6E205175656C275468616C61737C52200000, 67186), +(261693969, 93049, 'deDE', 0xFFFFFFFFFFFFFFFF48617573617566676162656E68696C66650000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'deDE', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'deDE', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'deDE', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'deDE', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'deDE', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'deDE', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'deDE', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'deDE', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'deDE', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'deDE', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'deDE', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'deDE', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'deDE', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'deDE', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'deDE', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'deDE', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'deDE', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'deDE', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'deDE', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'deDE', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'deDE', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'deDE', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'deDE', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'deDE', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'deDE', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'deDE', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'deDE', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'deDE', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'deDE', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'deDE', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'deDE', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'deDE', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'deDE', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'deDE', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'deDE', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'deDE', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'deDE', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'deDE', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'deDE', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'deDE', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'deDE', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'deDE', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'deDE', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'deDE', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'deDE', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'deDE', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'deDE', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'deDE', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'deDE', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'deDE', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'deDE', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'deDE', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'deDE', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'deDE', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'deDE', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'deDE', 0x004E65686D742065696E6520416E67656C72757465207A75722048616E6420756E6420737563687420457563682065696E20476577C3A473736572207A756D20416E67656C6E2E204B6C69636B74206D697420646572207265636874656E204D6175737461737465206175662064656E2053636877696D6D657220696D205761737365722C2077656E6E207369636820646965736572206265776567742C20756D2064656E204669736368207A752066616E67656E2E2045696E652068C3B668657265204665727469676B65697420766572626573736572742045757265204368616E6365206175662065696E656E206572666F6C677265696368656E2046616E6720696E2068C3B6686572737475666967656E20476562696574656E2E0000, 67186), +(3776013982, 1286820, 'deDE', 0x000000, 67186), +(3776013982, 1286703, 'deDE', 0x004E65686D742065696E6520416E67656C72757465207A75722048616E6420756E6420737563687420457563682065696E20476577C3A473736572207A756D20416E67656C6E2E204B6C69636B74206D697420646572207265636874656E204D6175737461737465206175662064656E2053636877696D6D657220696D205761737365722C2077656E6E207369636820646965736572206265776567742C20756D2064656E204669736368207A752066616E67656E2E2045696E652068C3B668657265204665727469676B65697420766572626573736572742045757265204368616E6365206175662065696E656E206572666F6C677265696368656E2046616E6720696E2068C3B6686572737475666967656E20476562696574656E2E0000, 67186), +(3776013982, 1253159, 'deDE', 0x000000, 67186), +(3359787322, 29615, 'deDE', 0xAF730000, 67186), +(3031818311, 9590, 'deDE', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'deDE', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'deDE', 0xE87A0000, 67186), +(3776013982, 1277169, 'deDE', 0x00C39666666E656E2C20756D203130204D6F7267656E6C6963687477617070656E206465732048656C64656E20756E64204D6F7267656E6C6963687477617070656E20646572204D797468656E207A752073616D6D656C6E2E0000, 67186), +(3776013982, 1243683, 'deDE', 0x0053616D6D656C74203130204D6F7267656E6C6963687477617070656E20646572204D797468656E2E0000, 67186), +(3776013982, 190784, 'deDE', 0x0053636877696E6774204575636820617566204575657220537472656974726F73732C206461732045757265204265776567756E6773676573636877696E6469676B656974202432323138383364206C616E6720756D202432323138383373342520657268C3B668742E204B616E6E20696D204B616D7066206F64657220696E20496E6E656E72C3A4756D656E2067656E75747A742077657264656E2E0000, 67186), +(4033975491, 619076, 'deDE', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'deDE', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'deDE', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'deDE', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'deDE', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'deDE', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'deDE', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'deDE', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'deDE', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'deDE', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'deDE', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'deDE', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'deDE', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'deDE', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'deDE', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'deDE', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'deDE', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'deDE', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'deDE', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'deDE', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'deDE', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'deDE', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'deDE', 0x1100E18B0000, 67186), +(184881520, 18405, 'deDE', 0x0F00FC890000, 67186), +(184881520, 18404, 'deDE', 0x0E00FC890000, 67186), +(184881520, 18403, 'deDE', 0xDC00F9890000, 67186), +(184881520, 18245, 'deDE', 0x1100F9890000, 67186), +(184881520, 18244, 'deDE', 0x0F00F9890000, 67186), +(2575642838, 750, 'deDE', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'deDE', 0x000000, 67186), +(3776013982, 1266413, 'deDE', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'deDE', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'deDE', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'deDE', 0x47656865696D7A7574617400F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'deDE', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'deDE', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'deDE', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'deDE', 0x00456E7466657373656C742065696E65205265696865207072C3A47A6973657220756E64206DC3A46368746967657220486965626520676567656E2045756572205A69656C2C206469652069686D20247B2434343038383473312B2434343038383673312B2434343038383873317D205363686164656E20736F776965204765676E65726E20696E6E657268616C6220766F6E20243434303838384131204D657465726E20756D20646173205A69656C20243434303838387331205363686164656E207A7566C3BC67656E2E2046C3BC6774205A69656C656E20C3BC62657220247331205A69656C652068696E6175732076657272696E67657274656E205363686164656E207A752E0D0A0D0A42656920646572204B616E616C6973696572756E6720766F6E202744656D6F6C696572656E272065726C65696465742049687220247334252077656E69676572205363686164656E20756E64207365696420696D6D756E20676567656E20426574C3A47562756E67732D20756E642052C3BC636B73746FC39F656666656B746520736F7769652065727A77756E67656E65204265776567756E6773656666656B74652E0D0A0D0A496872206BC3B66E6E7420626C6F636B656E2C20706172696572656E2C206175737765696368656E20756E64206765776973736520646566656E736976652046C3A46869676B656974656E206E75747A656E2C2077C3A46872656E6420496872202744656D6F6C696572656E27206B616E616C6973696572742E0000, 67186), +(3776013982, 1292071, 'deDE', 0x004765676E65722C2064696520647572636820646965204B7261667477656C6C6520766F6E20275068616C616E7827205363686164656E2065726C697474656E20686162656E2C2066C3BC67656E2045756368202464206C616E6720247B2473312F2D317D2E31252077656E69676572205363686164656E207A752E0D0A0046C3BC67742024406175726163617374657220247B2457312F2D317D2E31252077656E69676572205363686164656E207A752E00, 67186), +(3266400455, 1570155, 'deDE', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'deDE', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'deDE', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'deDE', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'deDE', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'deDE', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'deDE', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'deDE', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'deDE', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'deDE', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'deDE', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'deDE', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'deDE', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'deDE', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'deDE', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'deDE', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'deDE', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'deDE', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'deDE', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'deDE', 0x170B3D160100, 67186), +(1734738485, 9018, 'deDE', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'deDE', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'deDE', 0x00457266C3BC6C6C7420457572652052C3BC7374756E67206D69742065696E656D2073636877616368656E204563686F2064657320536F6E6E656E6272756E6E656E732C20776173207A7573C3A4747A6C69636865206F7074697363686520456666656B74652066C3BC722062657374696D6D7465204B6C617373656E736574766F726C6167656E2064657220536169736F6E203120766F6E204D69646E696768742066726569736368616C7465742E0D0A0D0A44696573657220456666656B742067696C742066C3BC722064696520676573616D7465204B72696567736D657574652E0000, 67186), +(3776013982, 1273357, 'deDE', 0x00457266C3BC6C6C7420457572652052C3BC7374756E67206D69742065696E656D2073636877616368656E204563686F2064657320536F6E6E656E6272756E6E656E732C20776173207A7573C3A4747A6C69636865206F7074697363686520456666656B74652066C3BC722062657374696D6D7465204B6C617373656E736574766F726C6167656E2064657220536169736F6E203120766F6E204D69646E696768742066726569736368616C7465742E0D0A0D0A44696573657220456666656B742067696C742066C3BC722064696520676573616D7465204B72696567736D657574652E0000, 67186), +(4167587713, 4140, 'deDE', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'deDE', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E57656E6E20496872206D696E64657374656E732031302053656B2E206D697420457373656E207665726272696E67742C2077657264657420496872202724407370656C6C6E616D653435373034392720756E6420657268616C746574202464206C616E67202431323139313739733720417573646175657220756E6420243132313931373973322066C3BC7220457572656E205072696DC3A472776572742E005072696DC3A4727765727420756D202477313120657268C3B668742E00, 67186), +(3776013982, 1294726, 'deDE', 0x000000, 67186), +(3776013982, 1294720, 'deDE', 0x005363686965C39F74206175662065696E656E204765676E657220756E642076657275727361636874206BC3B6727065726C696368656E205363686164656E2E0000, 67186), +(3776013982, 1294703, 'deDE', 0x005363686965C39F74206175662065696E656E204765676E657220756E642076657275727361636874206BC3B6727065726C696368656E205363686164656E2E0000, 67186), +(3776013982, 1294669, 'deDE', 0x00446965204B726561747572207374C3BC726D74206175662045756368207A752E00446965204B726561747572207374C3BC726D74206175662045756368207A752E00, 67186), +(3776013982, 1294633, 'deDE', 0x00446572205A61756265726E6465207370656974202464206C616E6720466575657262C3A46C6C65206175662065696E656E20537069656C657263686172616B7465722C2064696520616C6C65202474312053656B2E20243132363637343573312046657565727363686164656E20766572757273616368656E2E00416C6C65202474312053656B2E20243132363637343573312046657565727363686164656E2E00, 67186), +(3776013982, 1294563, 'deDE', 0x000000, 67186), +(3776013982, 1277795, 'deDE', 0x0042616E6E742064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20696E2065696E656D204265726569636820766F72204575636820756E64206D61726B696572742073696520616C732027476566756E64656E272E0000, 67186), +(3776013982, 1272179, 'deDE', 0x004265696D2048C3A46E646C6572206B617566656E2E0D0A0D0A24407370656C6C64657363313235363137310053696520686162656E20457563682065727769736368742C206265766F7220496872207369652066616E67656E206B6F6E6E7465742E00, 67186), +(3776013982, 1269655, 'deDE', 0x004265696D2048C3A46E646C6572206B617566656E2E0D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'deDE', 0x004265696D2048C3A46E646C6572206B617566656E2E0D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'deDE', 0x004265696D2048C3A46E646C6572206B617566656E2E0D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'deDE', 0x004265696D2048C3A46E646C6572206B617566656E2E0D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'deDE', 0x004265696D2048C3A46E646C6572206B617566656E2E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'deDE', 0x00546175736368742064656E20506C61747A206D69742065696E65722044656B6F726174696F6E20696E20646572204EC3A468652E0000, 67186), +(3776013982, 1259647, 'deDE', 0x0024407370656C6C64657363343532393933004465722041626C6175662064657220466CC3A47363686368656E2C205068696F6C656E20756E642053C3A474746967756E6773656666656B746520766F6E204D69646E69676874207769726420616E676568616C74656E2E00, 67186), +(3776013982, 1258362, 'deDE', 0x000D0A7C4346466666666666665A61756265727A6569743A20312C352053656B2E0D0A41626B6C696E677A656974206465722046616C6C653A20352053656B2E7C520D0A0D0A57656E6E2073696368206B65696E2053756368657220696E6E657268616C6220766F6E202452204D657465726E20756D204575636820626566696E6465742C2077657266742049687220696D20556D6B7265697320766F6E202472616431204D657465726E20756D204575636820686572756D2065696E656E20426568C3A46C746572206D69742064656D205A6175626572202724407370656C6C6E616D6531323538333538272E0D0A0D0A57656E6E2073696368206D696E64657374656E732065696E2053756368657220696E6E657268616C6220766F6E202452204D657465726E20756D20457563682061756668C3A46C742C207765726674204968722065696E656E20426568C3A46C746572206D69742064656D205A6175626572202724407370656C6C6E616D65313235383335382720696E20646965204EC3A468652064657320537563686572732C20646572204575636820616D206EC3A463687374656E206973742E0D0A0D0A7C434646373164356666416E6D65726B756E673A7C52207C434646643966636666426568C3A46C7465722073696E642066C3BC722053756368657220756E73696368746261722C2077C3A46872656E6420736965207369636820696E20646572204C75667420626566696E64656E2E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C43464662306230623044696573652046616C6C6520697374207369636865726C696368206E69636874206469652065696E647275636B73766F6C6C7374652C2061626572206D616E63686D616C207265696368742065696E652065696E66616368652041626C656E6B756E67207A756D2053696567206175732E7C520000, 67186), +(3776013982, 1256009, 'deDE', 0x0042616E6E742064696520496C6C7573696F6E656E20766F6E20566572737465636B74656E20696E2065696E656D204265726569636820766F72204575636820756E64206D61726B696572742073696520616C732027476566756E64656E272E0000, 67186), +(3776013982, 1251813, 'deDE', 0x0044657220546F64657373636872656920646573205068616E746F6D732066C3BC677420616C6C656E20537069656C657263686172616B746572656E2024733120536368617474656E7363686164656E207A752E0000, 67186), +(1010104591, 22988, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E653A207C7253696C6265726D6F6E647C6E7C6346464646443230304B6F7374656E3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6346464646443230305665726BC3A4756665723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E653A207C7253696C6265726D6F6E647C6E7C6346464646443230304B6F7374656E3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'deDE', 0x7C6346464646443230305665726BC3A4756665723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E653A207C7253696C6265726D6F6E647C6E7C6346464646443230304B6F7374656E3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6346464646443230305665726BC3A4756665723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E653A207C7253696C6265726D6F6E647C6E7C6346464646443230304B6F7374656E3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'deDE', 0x7C6346464646443230305370657A69616C6973696572756E673A207C724D61726B746D6F62696C6974C3A474202D20426572676261757A75626568C3B6727C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'deDE', 0x7C63464646464432303042657275667361757362696C6465723A207C72496E67656E69657572736B756E737420766F6E204D69646E6967687420283335297C6E7C6346464646443230304B6F7374656E3A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'deDE', 0x7C6346464646443230305370657A69616C6973696572756E673A207C724D61726B746D6F62696C6974C3A474202D20496E67656E69657572737A75626568C3B6727C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'deDE', 0xFFFFFFFFFFFFFFFF4469652041726B616E74696E65000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'deDE', 0xFFFFFFFFFFFFFFFF476562C3BC6872656E646520416E65726B656E6E756E6700001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'deDE', 0x45696E2073656C74656E657220476567656E7374616E642C20646572206E6163682065696E6572204865727374656C6C756E672065696E656E205465696C2045757265722052656167656E7A69656E207769656465726865727374656C6C656E206B616E6E2E7C6E7C6E457268616C74657420246576312024656E312066C3BC72206469657365204865727374656C6C756E672E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'deDE', 0x457268C3B668742045757265204368616E63652C206E6163682065696E6572204865727374656C6C756E672065696E656E205465696C2045757265722052656167656E7A69656E207769656465726865727A757374656C6C656E2E7C6E7C6E457268616C74657420246576312024656E312066C3BC72206469657365204865727374656C6C756E672E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'deDE', 0x45696E652064696D656E73696F6E616C65204B7572696F736974C3A4742C2064696520676172616E74696572742066C3BC72207A7573C3A4747A6C696368652068657267657374656C6C746520476567656E7374C3A46E646520736F7267742E7C6E7C6E457268616C74657420246576312024656E312066C3BC72206469657365204865727374656C6C756E672E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'deDE', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500496872206861627420646965206D6178696D616C6520416E7A61686C20766F6E2043686172616B74657261756677657274756E67656E2066C3BC722068657574652065727265696368742E204269747465207665727375636874206573206D6F7267656E2065726E6575742E0003000000, 67186), +(3205218938, 58259, 'deDE', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F61626B6C696E677A6569746D616E616765720001000000, 67186), +(3205218938, 58258, 'deDE', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F617A6D0001000000, 67186), +(3205218938, 55299, 'deDE', 0x4A4F55524E4559535F43555252454E545F50524F475245535300466F7274736368726974743A207C636E484947484C494748545F464F4E545F434F4C4F523A2564202F2025647C720001000000, 67186), +(3205218938, 49471, 'deDE', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F475245535300416B7475656C6C657220466F7274736368726974743A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'deDE', 0x000000, 67186), +(3776013982, 1294759, 'deDE', 0x000000, 67186), +(2921112328, 568649, 'deDE', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'deDE', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'deDE', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'deDE', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'deDE', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'deDE', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'deDE', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'deDE', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'deDE', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'deDE', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'deDE', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'deDE', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'deDE', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'deDE', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'deDE', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='deDE') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='deDE') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='deDE') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='deDE') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x42657574650042657369656774206D61636874766F6C6C65204765676E65722C20756D20417374616C6F727320566F72686162656E20766F72616E7A757472656962656E2E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x0045696E206C65747A7465722046756E6B65206272656E6E7420696E206465722064756E6B656C7374656E204E616368742E0045726D75746967742E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='deDE'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF4B65696E2052687974686D7573676566C3BC686C0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='deDE'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'deDE', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='deDE' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='deDE'); From b6794b9fac59503a5d7d560d70fa114ba1bfe9b8 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:18:47 +0200 Subject: [PATCH 101/175] DB/Hotfixes: Updated esES hotfixes to 12.0.5.67186 --- .../master/2026_04_29_02_hotfixes_esES.sql | 2744 +++++++++++++++++ 1 file changed, 2744 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_02_hotfixes_esES.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_02_hotfixes_esES.sql b/sql/updates/hotfixes/master/2026_04_29_02_hotfixes_esES.sql new file mode 100644 index 0000000000000..47a3f1aba5f3f --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_02_hotfixes_esES.sql @@ -0,0 +1,2744 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'esES', 'Completa los siguientes logros de Pescadores del abismo.', 'Pescadores del abismo: rival de Je\'ju', '', 67186), +(61883, 'esES', 'Evita que te pillen durante el primer minuto en Duelo de adornos (x3).', 'Ahora no me ves...', '', 67186), +(61887, 'esES', 'Completa todos los logros de Duelo de adornos.', 'Disfraz de primera', '', 67186), +(61886, 'esES', 'Consigue acceder a todas las mejoras de kits en Duelo de adornos.', 'Equipación completa', '', 67186), +(61882, 'esES', 'Después de que te encuentren, consigue que te pierdan la pista antes de que te pillen en Duelo de adornos.', 'Por los pelos', '', 67186), +(61881, 'esES', 'Sé el último escondido sin pillar de tu equipo en Duelo de adornos.', 'Escondite infalible', '', 67186), +(61880, 'esES', 'Escóndete y evita que te encuentren durante un minuto y medio seguido en Duelo de adornos.', 'Qué frío hace a la sombra', '', 67186), +(61879, 'esES', 'Gana una ronda como buscador tras pillar a todos los escondidos en dos minutos o menos en Duelo de adornos.', 'Tú la llevas', '', 67186), +(61878, 'esES', 'Como forestal Arcano, consigue pillar a jugadores enemigos en Duelo de adornos.', 'Pillado y hundido', '', 67186), +(61793, 'esES', 'Como nulificador, consigue pillar a jugadores enemigos en Duelo de adornos.', 'Herramienta del Vacío', '', 67186), +(61792, 'esES', 'Como rompehechizos, consigue pillar a jugadores enemigos en Duelo de adornos.', '¡Te pillé!', '', 67186), +(63263, 'esES', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'esES', 'Consigue un índice de mítica+ de al menos 3400 durante la temporada 1 de Midnight.', 'Mito de la piedra angular de Midnight: temporada 1', 'Título: el Contendiente Umbrío y Objeto: silla de montar perdida en el tiempo', 67186), +(61594, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular del Trecho Celestial.', 'Vencedor de piedra angular: Trecho Celestial', '', 67186), +(61593, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular del Trono del Triunvirato.', 'Vencedor de piedra angular: Trono del Triunvirato', '', 67186), +(61592, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular del Foso de Saron.', 'Vencedor de piedra angular: Foso de Saron', '', 67186), +(61591, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular de la Academia Algeth\'ar.', 'Vencedor de piedra angular: Academia Algeth\'ar', '', 67186), +(61590, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular de la Aguja Brisaveloz.', 'Vencedor de piedra angular: Aguja Brisaveloz', '', 67186), +(61589, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular del Punto de Nexo: Xenas.', 'Vencedor de piedra angular: Punto de Nexo: Xenas', '', 67186), +(61588, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular de las Cavernas de Maisara.', 'Vencedor de piedra angular: Cavernas de Maisara', '', 67186), +(61587, 'esES', 'Consigue la mejor puntuación de tu región en la mazmorra de piedra angular del Bancal del Magister (Midnight).', 'Vencedor de piedra angular: Bancal del Magister (Midnight)', '', 67186), +(61259, 'esES', 'Termina la temporada 1 de míticas+ de Midnight con un índice de mítica+ entre el 0,1% de los mejores jugadores de tu región.', 'Héroe Umbrío: temporada 1 de Midnight', 'Título: el Héroe Umbrío', 67186), +(61253, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 30 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 30', 'Las piedras angulares ya no se reducirán por debajo del nivel 30 durante la temporada 1 de Midnight.', 67186), +(61252, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 29 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 29', 'Las piedras angulares ya no se reducirán por debajo del nivel 29 durante la temporada 1 de Midnight.', 67186), +(61251, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 28 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 28', 'Las piedras angulares ya no se reducirán por debajo del nivel 28 durante la temporada 1 de Midnight.', 67186), +(61250, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 27 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 27', 'Las piedras angulares ya no se reducirán por debajo del nivel 27 durante la temporada 1 de Midnight.', 67186), +(61249, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 26 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 26', 'Las piedras angulares ya no se reducirán por debajo del nivel 26 durante la temporada 1 de Midnight.', 67186), +(61248, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 25 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 25', 'Las piedras angulares ya no se reducirán por debajo del nivel 25 durante la temporada 1 de Midnight.', 67186), +(61247, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 24 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 24', 'Las piedras angulares ya no se reducirán por debajo del nivel 24 durante la temporada 1 de Midnight.', 67186), +(61246, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 23 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 23', 'Las piedras angulares ya no se reducirán por debajo del nivel 23 durante la temporada 1 de Midnight.', 67186), +(61245, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 22 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 22', 'Las piedras angulares ya no se reducirán por debajo del nivel 22 durante la temporada 1 de Midnight.', 67186), +(61244, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 21 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 21', 'Las piedras angulares ya no se reducirán por debajo del nivel 21 durante la temporada 1 de Midnight.', 67186), +(61243, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 20 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 20', 'Las piedras angulares ya no se reducirán por debajo del nivel 20 durante la temporada 1 de Midnight.', 67186), +(61242, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 19 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 19', 'Las piedras angulares ya no se reducirán por debajo del nivel 19 durante la temporada 1 de Midnight.', 67186), +(61241, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 18 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 18', 'Las piedras angulares ya no se reducirán por debajo del nivel 18 durante la temporada 1 de Midnight.', 67186), +(61240, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 17 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 17', 'Las piedras angulares ya no se reducirán por debajo del nivel 17 durante la temporada 1 de Midnight.', 67186), +(61239, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 16 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 16', 'Las piedras angulares ya no se reducirán por debajo del nivel 16 durante la temporada 1 de Midnight.', 67186), +(61237, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 15 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 15', 'Las piedras angulares ya no se reducirán por debajo del nivel 15 durante la temporada 1 de Midnight.', 67186), +(61236, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 14 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 14', 'Las piedras angulares ya no se reducirán por debajo del nivel 14 durante la temporada 1 de Midnight.', 67186), +(61235, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 13 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 13', 'Las piedras angulares ya no se reducirán por debajo del nivel 13 durante la temporada 1 de Midnight.', 67186), +(61233, 'esES', 'Completa todas las mazmorras míticas+ de nivel de piedra angular 12 dentro del límite de tiempo durante la temporada 1 de Midnight.', 'Temporada 1 de Midnight: piedra angular resiliente 12', 'Las piedras angulares ya no se reducirán por debajo del nivel 12 durante la temporada 1 de Midnight.', 67186), +(12009, 'esES', 'Derrota a L\'ura en el Trono del Triunvirato con todos los miembros de la banda afectados por Oscuridad aplastante en dificultad mítica.', 'El lado más oscuro', '', 67186), +(12005, 'esES', 'Haz que Colmillo Umbrío destruya 4 alijos del Vacío sellados usando Abalanzamiento de las Sombras y vence luego a Saprish en el Trono del Triunvirato en dificultad mítica.', 'Desfogue', '', 67186), +(12004, 'esES', 'Haz que Urjad vuelva del reino del Vacío usando Desgarro del Vacío y, luego, derrota a Urjad y a Zuraal el Ascendido en el Trono del Triunvirato en dificultad mítica.', 'Bienvenido al Vacío', '', 67186), +(9036, 'esES', 'Derrota a la suma sabia Viryx sin matar a ningún ensamblaje de escudo en el Trecho Celestial en dificultad heroica.', 'Monomanía', '', 67186), +(9035, 'esES', 'Haz que tres montones de ceniza provoquen erupciones solares al mismo tiempo durante el enfrentamiento contra Rukhran en el Trecho Celestial en dificultad heroica.', 'He visto la luz', '', 67186), +(9034, 'esES', 'Derrota al ensamblaje potenciado en el Trecho Celestial en dificultad heroica.', 'Magnieficiencia', '', 67186), +(9033, 'esES', 'Derrota a Ranjit sin recibir daño de ninguna de las siguientes facultades en el Trecho Celestial en dificultad heroica: Cuchilla giratoria, Muro de viento, Cuatro vientos, Destello luminoso.', 'Listo para asaltar IV', '', 67186), +(4525, 'esES', 'Limpia la cámara antes del Señor de la Plaga Tyrannus en El Foso de Saron en dificultad heroica sin que nadie reciba daño de carámbanos en el primer intento.', 'No mires hacia arriba', '', 67186), +(4524, 'esES', 'Derrota al maestro de forja Gargelus en el Foso de Saron en dificultad heroica antes de que un jugador acumule 11 veces el efecto Escarcha permanente.', 'Solo once campanadas', '', 67186), +(62814, 'esES', '', '', '', 67186), +(62813, 'esES', '', '', '', 67186), +(62812, 'esES', '', '', '', 67186), +(62811, 'esES', '', '', '', 67186), +(62296, 'esES', '', 'Blasones del alba de mito conseguidos', '', 67186), +(42769, 'esES', 'Mejora blasones del alba de héroe durante la temporada 1 de Midnight.', 'Héroe del alba', 'Desbloqueo de personaje: cambia blasones del alba de héroe por blasones del alba de mito', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Atrapa una criatura mítica 3 veces en inmersiones en Pescadores del abismo.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Consigue un total de 250 000 puntos en inmersiones en Pescadores del abismo.', `Reward_lang`='Recompensa: consigue un compañero de buceo aventurero', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca 100 peces durante inmersiones en Pescadores del abismo.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Use tu facultad ¡A la superficie! durante una inmersión en Pescadores del abismo con menos de 10 s de aliento restante.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Haz que te saquen a la fuerza de una inmersión en Pescadores del abismo al intentar nadar más allá de la zanja.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='esES'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='Recompensa: desbloquea la compra del ídolo del abismo del buzo profundo Tu\'nakit', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Descubre 10 reliquias antiguas durante tus inmersiones en Pescadores del abismo y adquiere la mejora de red de los bajíos.', `Reward_lang`='Recompensa: desbloquea la compra de la red de hilo triple del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Descubre 50 reliquias hundidas durante tus inmersiones en Pescadores del abismo.', `Reward_lang`='Recompensa: desbloquea la compra de la red de los bajíos del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Consigue las siguientes criaturas durante inmersiones en Pescadores del abismo y adquiere la bombona probada en lo profundo.', `Reward_lang`='Recompensa: desbloquea la compra de la bombona de respiración de Nalorakk del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Consigue las siguientes criaturas durante inmersiones en Pescadores del abismo y adquiere la mejora de bombona usada de buzo profundo.', `Reward_lang`='Recompensa: desbloquea la compra de la bombona probada en lo profundo del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Consigue las siguientes criaturas durante inmersiones en Pescadores del abismo.', `Reward_lang`='Recompensa: desbloquea la compra de la bombona usada de buzo profundo del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca al menos 500 peces en inmersiones en Pescadores del abismo y adquiere la mejora de grasa de lo profundo.', `Reward_lang`='Recompensa: desbloquea la compra de las aletas de zanja de Pahk del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca al menos 25 peces durante una única inmersión en Pescadores del abismo y adquiere la mejora de juntas reforzadas.', `Reward_lang`='Recompensa: desbloquea la compra de la grasa de lo profundo del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='esES'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca al menos 3 peces durante inmersiones en Pescadores del abismo.', `Reward_lang`='Recompensa: desbloquea la compra de las juntas reforzadas del buzo profundo Je\'ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='esES'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='esES'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'esES', 'Una pescadora del abismo de tomo y lomo, certificada por el mismísimo buzo profundo Je\'ju.', '|cFFFFD200Vendedor: |rBuzo profundo Tu\'nakit|n|cFFFFD200Zona: |rZul\'Aman|n|cFFFFD200Coste: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'esES', '¿Qué estadística te gustaría medir?', '¿Qué estadística te gustaría medir?', 67186), +(289969, 'esES', 'Ya he perdido a muchos de los míos a manos del Pacto de Plata. \n\nTodos dicen que fue una guerra. Que ambos bandos sufrieron pérdidas. Mis Atracasol nunca purgaron a nadie de Dalaran. \n\nUna Brisaveloz halló la justicia por purgar una ciudad. La otra se enfrenta hoy a mí.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'esES', 'Perforador del Vacío %s', 'Perforadora del Vacío %s', 67186), +(1307, 'esES', '%s el Contendiente Umbrío', '%s la Contendiente Umbría', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'esES', '', 67186), +(62821, 'esES', '', 67186), +(62820, 'esES', '', 67186), +(62819, 'esES', '', 67186), +(62818, 'esES', '', 67186), +(62817, 'esES', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'esES', 'Color tatuaje', 67186), +(8959, 'esES', 'Tatuaje', 67186), +(8958, 'esES', 'Venda', 67186), +(8957, 'esES', 'Cuernos', 67186), +(8956, 'esES', 'Color tatuaje', 67186), +(8955, 'esES', 'Tatuaje', 67186), +(8954, 'esES', 'Venda', 67186), +(8953, 'esES', 'Cuernos', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'esES', '', 67186), +(224842, 'esES', 'Duelos de adornos completados', 67186), +(224840, 'esES', 'Duelos de adornos completados', 67186), +(224838, 'esES', 'Duelos de adornos completados', 67186), +(223318, 'esES', 'Pescadores del abismo: el pescado más refinado (3 míticas)', 67186), +(223121, 'esES', 'Pescadores del abismo: buzo profundo certificado', 67186), +(223119, 'esES', 'Pescadores del abismo: terror de la zanja', 67186), +(222479, 'esES', 'Pescadores del abismo: procedimiento apropiado', 67186), +(222477, 'esES', 'Pescadores del abismo: no hay mar que pueda pararme', 67186), +(222475, 'esES', 'Pescadores del abismo: a quién no le ha pasado', 67186), +(222466, 'esES', 'Pescadores del abismo: ídolo del abismo', 67186), +(222453, 'esES', 'Pescadores del abismo: torreta de arpones nucleovacuo', 67186), +(222438, 'esES', 'Pescadores del abismo: cañón de arpones pesado', 67186), +(222436, 'esES', 'Pescadores del abismo: red de hilo triple', 67186), +(222434, 'esES', 'Pescadores del abismo: red de los bajíos', 67186), +(222432, 'esES', 'Pescadores del abismo: bombona de respiración de Nalorakk', 67186), +(222430, 'esES', 'Pescadores del abismo: bombona probada en lo profundo', 67186), +(222428, 'esES', 'Pescadores del abismo: bombona usada de buzo profundo', 67186), +(222426, 'esES', 'Pescadores del abismo: aletas de zanja de Pahk', 67186), +(222424, 'esES', 'Pescadores del abismo: grasa de lo profundo', 67186), +(222422, 'esES', 'Pescadores del abismo: juntas reforzadas', 67186), +(222416, 'esES', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'esES', 'Imitación de Khadgar de Kreynna', 67186), +(220967, 'esES', 'Evita que te pillen durante el primer minuto en Duelo de adornos.', 67186), +(220603, 'esES', 'Bombardeo', 67186), +(220574, 'esES', '¡Atrapado!', 67186), +(220573, 'esES', 'Aguafiestas', 67186), +(212256, 'esES', 'Evento Pescador del abismo completado', 67186), +(212255, 'esES', 'Completa el evento Pescador del abismo', 67186), +(229140, 'esES', '', 67186), +(229139, 'esES', '', 67186), +(229048, 'esES', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'esES', 'Derrota a las fuerzas de Hal\'hadar', 67186), +(225426, 'esES', 'Derrota a las fuerzas de Hal\'hadar', 67186), +(223423, 'esES', 'Pataespíritu liberados', 67186), +(223697, 'esES', '', 67186), +(223696, 'esES', '', 67186), +(223695, 'esES', '', 67186), +(223693, 'esES', '', 67186), +(219734, 'esES', '', 67186), +(209802, 'esES', 'Equipa un bibelot de combate a tu compañero', 67186), +(170782, 'esES', 'Equipa un bibelot de combate a tu compañero', 67186), +(228515, 'esES', 'Requisito de índice', 67186), +(228514, 'esES', 'Logro - Mito de la piedra angular de Midnight: temporada 1', 67186), +(227753, 'esES', '', 67186), +(227677, 'esES', '', 67186), +(227676, 'esES', '', 67186), +(227675, 'esES', '', 67186), +(227674, 'esES', '', 67186), +(227673, 'esES', '', 67186), +(227672, 'esES', '', 67186), +(227671, 'esES', '', 67186), +(225639, 'esES', '', 67186), +(225638, 'esES', '', 67186), +(225637, 'esES', '', 67186), +(225636, 'esES', '', 67186), +(225635, 'esES', '', 67186), +(225634, 'esES', 'Pescadores del abismo: perlas para el abismo', 67186), +(225611, 'esES', '', 67186), +(225610, 'esES', '', 67186), +(225609, 'esES', 'Pescadores del abismo: coleccionismo de época', 67186), +(220963, 'esES', 'Juega una ronda sin que te pillen', 67186), +(220961, 'esES', 'Aguanta 90 segundos seguidos sin que te descubran', 67186), +(220959, 'esES', 'Buscador: gana en 2 minutos o menos', 67186), +(220958, 'esES', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'esES', 'Como forestal Arcano, pilla a un escondido encontrado', 67186), +(220955, 'esES', 'Como nulificador, pilla a un escondido encontrado', 67186), +(220725, 'esES', 'Como rompehechizos, pilla a un escondido encontrado', 67186), +(227430, 'esES', '', 67186), +(223818, 'esES', '', 67186), +(216419, 'esES', '', 67186), +(216418, 'esES', '', 67186), +(216417, 'esES', '', 67186), +(227429, 'esES', '', 67186), +(227428, 'esES', 'Ten una mascota prole de dardo solar', 67186), +(225732, 'esES', 'Mejora de red de los bajíos adquirida', 67186), +(224745, 'esES', 'Centinela activado', 67186), +(222969, 'esES', 'Charca Plácido Susurro defendida', 67186), +(222803, 'esES', 'Barreras dañadas', 67186), +(221550, 'esES', 'Fragmento de la Plaga animado asesinado', 67186), +(219955, 'esES', 'Vidente de la colmena sifoide asesinado', 67186), +(219466, 'esES', 'Vidente de la colmena sifoide asesinado', 67186), +(225670, 'esES', '', 67186), +(225668, 'esES', '', 67186), +(225666, 'esES', '', 67186), +(225664, 'esES', '', 67186), +(227206, 'esES', '', 67186), +(223209, 'esES', 'Estadística: Blasones del alba de mito conseguidos', 67186), +(212362, 'esES', 'Consigue una media de nivel de objeto de 285 durante la temporada 1 de Midnight (mejora blasones del alba de mito)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='esES'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'esES', 'Núcleo de Vacío nebuloso', 'Se puede transmutar en equipo de gran poder tras derrotar a enemigos peligrosos en bandas de la temporada 1 de Midnight o completar mazmorras míticas+, profundidades pródigas y cacerías de Presa en dificultad pesadilla.', 67186), +(3347, 'esES', 'Blasón del alba de mito', 'Se usa para mejorar el equipo de mito durante la temporada 1 de Midnight hasta los niveles de objeto 276-289.\n\nCuando se usa para artesanía, establece el nivel de objeto del objeto resultante en 272-285 en función de la calidad.\n\nSe obtiene en las siguientes actividades:\n\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad mítica\n- Mazmorras de piedra angular mítica (+9 y superiores)', 67186), +(3346, 'esES', 'Blasón del alba de héroe', 'Se usa para mejorar el equipo de héroe durante la temporada 1 de Midnight hasta los niveles de objeto 263-276. Se obtiene en las siguientes actividades:\n\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad heroica\n- Mazmorras de piedra angular mítica (de +4 a +8)\n- Profundidades (nivel 11)\n- Botín de cazatesoros (nivel 8+)\n- Cacerías de Presas (pesadilla)', 67186), +(3345, 'esES', 'Blasón del alba de héroe', 'Se usa para mejorar el equipo de héroe durante la temporada 1 de Midnight hasta los niveles de objeto 263-276.\n\nCuando se usa para artesanía, establece el nivel de objeto del objeto resultante en 259-272 en función de la calidad.\n\nSe obtiene en las siguientes actividades:\n\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad heroica\n- Mazmorras de piedra angular mítica (de +4 a +8)\n- Profundidades (nivel 11)\n- Botín de cazatesoros (nivel 8+)\n- Cacerías de Presas (pesadilla)', 67186), +(3344, 'esES', 'Blasón del alba de campeón', 'Se usa para mejorar el equipo de campeón durante la temporada 1 de Midnight hasta los niveles de objeto 250-263. Se obtiene en las siguientes actividades:\n\n- Eventos del mundo semanales\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad normal\n- Mazmorras de temporada en dificultad mítica\n- Mazmorras de piedra angular mítica (+2 y +3)\n- Profundidades (niveles 7-10)\n- Botín de cazatesoros (niveles 6-7)\n- Cacerías de Presas (pesadilla)', 67186), +(3343, 'esES', 'Blasón del alba de campeón', 'Se usa para mejorar el equipo de campeón durante la temporada 1 de Midnight hasta los niveles de objeto 250-263. Se obtiene en las siguientes actividades:\n\n- Eventos del mundo semanales\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad normal\n- Mazmorras de temporada en dificultad mítica\n- Mazmorras de piedra angular mítica (+2 y +3)\n- Profundidades (niveles 7-10)\n- Botín de cazatesoros (niveles 6-7)\n- Cacerías de Presas (pesadilla)', 67186), +(3342, 'esES', 'Blasón del alba de veterano', 'Se usa para mejorar el equipo de veterano durante la temporada 1 de Midnight hasta los niveles de objeto 237-250. Se obtiene en las siguientes actividades:\n\n- Eventos del mundo repetibles\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad buscador de bandas\n- Mazmorras de temporada en dificultad heroica\n- Profundidades (niveles 5-6)\n- Botín de cazatesoros (niveles 4-5)\n- Cacerías de Presas (difícil)', 67186), +(3341, 'esES', 'Blasón del alba de veterano', 'Se usa para mejorar el equipo de veterano durante la temporada 1 de Midnight hasta los niveles de objeto 237-250.\n\nCuando se usa para artesanía, establece el nivel de objeto del objeto resultante en 233-246 en función de la calidad.\n\nSe obtiene en las siguientes actividades:\n\n- Eventos del mundo repetibles\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad buscador de bandas\n- Mazmorras de temporada en dificultad heroica\n- Profundidades (niveles 5-6)\n- Botín de cazatesoros (niveles 4-5)\n- Cacerías de Presas (difícil)', 67186), +(3418, 'esES', 'Núcleo de Vacío nebuloso', 'Se puede transmutar en equipo de gran poder tras derrotar a enemigos peligrosos en bandas de la temporada 1 de Midnight o completar mazmorras míticas+, profundidades pródigas y cacerías de Presa en dificultad pesadilla.', 67186), +(3391, 'esES', 'Blasón del alba de aventurero', 'Se usa para mejorar el equipo de aventurero durante la temporada 1 de Midnight hasta los niveles de objeto 224-237. Se obtiene en las siguientes actividades:\n\n- Eventos del mundo repetibles\n- Profundidades de nivel 4\n- Cacerías de Presas (normal)', 67186), +(3383, 'esES', 'Blasón del alba de aventurero', 'Se usa para mejorar el equipo de aventurero durante la temporada 1 de Midnight hasta los niveles de objeto 224-237.\n\nCuando se usa para artesanía, establece el nivel de objeto del objeto resultante en 220-233 en función de la calidad.\n\nSe obtiene en las siguientes actividades:\n\n- Eventos del mundo repetibles\n- Profundidades de nivel 4\n- Cacerías de Presas (normal)', 67186), +(3348, 'esES', 'Blasón del alba de mito', 'Se usa para mejorar el equipo de mito durante la temporada 1 de Midnight hasta los niveles de objeto 276-289. Se obtiene en las siguientes actividades:\n\n- Aguja del Vacío, la Falla Onírica y Marcha a Quel\'Danas en dificultad heroica\n- Mazmorras de piedra angular mítica (+9 y superiores)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='esES'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'esES', 'Rukhran', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'esES', 'Ojo de Acherus', 67186), +(264717, 'esES', 'Maleficio de resguardo Amani', 67186), +(264338, 'esES', 'Consola de control domanaar', 67186), +(264336, 'esES', 'Blandón de luz del Vacío', 67186), +(264332, 'esES', 'Altar de ritual Amani', 67186), +(263238, 'esES', 'Mesa larga de la Lluvia Ilícita', 67186), +(263230, 'esES', 'Estante de magister', 67186), +(256683, 'esES', 'Muñeco de entrenamiento de Lunargenta', 67186), +(253451, 'esES', 'Fuente de Velorraíz', 67186), +(245938, 'esES', 'Pérgola arathi cubierta de vegetación', 67186), +(245560, 'esES', 'Ventana ocre del lagar', 67186), +(241044, 'esES', 'Cajón de Argus', 67186), +(267641, 'esES', 'Crestasol de Lunargenta deslustrado', 67186), +(267640, 'esES', 'Velosol de Lunargenta deslustrado', 67186), +(267639, 'esES', 'Guardiasol de Lunargenta deslustrado', 67186), +(267638, 'esES', 'Agujasol de Lunargenta deslustrado', 67186), +(267607, 'esES', 'Manijas de penumbra nublosas', 67186), +(267606, 'esES', 'Guantes de gravedad infinita', 67186), +(267605, 'esES', 'Garras de vórtice interminable', 67186), +(267604, 'esES', 'Agarres de los behemoths colosales', 67186), +(267482, 'esES', 'Gran cinturón de defensor hara\'ti aspirante', 67186), +(267481, 'esES', 'Cinturón de defensor hara\'ti aspirante', 67186), +(267480, 'esES', 'Cordón de defensor hara\'ti aspirante', 67186), +(267479, 'esES', 'Fajín de defensor hara\'ti aspirante', 67186), +(266432, 'esES', 'Crestasol de Lunargenta', 67186), +(266431, 'esES', 'Velosol de Lunargenta', 67186), +(266430, 'esES', 'Guardiasol de Lunargenta', 67186), +(266429, 'esES', 'Agujasol de Lunargenta', 67186), +(263269, 'esES', 'Gran cinturón de defensor hara\'ti', 67186), +(263268, 'esES', 'Cinturón de defensor hara\'ti', 67186), +(263267, 'esES', 'Cordón de defensor hara\'ti', 67186), +(263265, 'esES', 'Fajín de defensor hara\'ti', 67186), +(272961, 'esES', 'Bastón con hoja de rompehechizos', 67186), +(272960, 'esES', 'Muroescudo de rompehechizos', 67186), +(272318, 'esES', 'Hoja de fénix de rompehechizos', 67186), +(272317, 'esES', 'Guja de fénix de rompehechizos', 67186), +(272316, 'esES', 'Lanza con hoja de rompehechizos', 67186), +(19355, 'esES', 'Bastón de enfoque de Alasombra', 67186), +(272338, 'esES', 'Acero de hechizo de guardia mago', 67186), +(272337, 'esES', 'Hoja de hechizo de guardia mago', 67186), +(272336, 'esES', 'Machacafallas de señal de la nada', 67186), +(272321, 'esES', 'Arco de hechizos de forestal Arcano', 67186), +(272320, 'esES', 'Canalizador de fallas de señal de la nada', 67186), +(273874, 'esES', 'Arma de asta Furiasolar tocada por el Vacío', 67186), +(263970, 'esES', 'Hoja de guja tocada por el Vacío', 67186), +(263969, 'esES', 'Gran varita tocada por el Vacío', 67186), +(263968, 'esES', 'Focos tocados por el Vacío', 67186), +(263967, 'esES', 'Gran arco tocado por el Vacío', 67186), +(263966, 'esES', 'Gran hoja tocada por el Vacío', 67186), +(263963, 'esES', 'Hoja de duelo tocada por el Vacío', 67186), +(263960, 'esES', 'Hoja prendida tocada por el Vacío', 67186), +(263959, 'esES', 'Escrito tocado por el Vacío', 67186), +(263956, 'esES', 'Machacador tocado por el Vacío', 67186), +(263954, 'esES', 'Bordón de batalla tocado por el Vacío', 67186), +(263952, 'esES', 'Báculo Furia del Sol tocado por el Vacío', 67186), +(263950, 'esES', 'Pala tocada por el Vacío', 67186), +(263949, 'esES', 'Baluarte tocado por el Vacío', 67186), +(263946, 'esES', 'Partecaras tocado por el Vacío', 67186), +(263943, 'esES', 'Destripadora tocada por el Vacío', 67186), +(263942, 'esES', 'Colmillo tocado por el Vacío', 67186), +(263941, 'esES', 'Rifle tocado por el Vacío', 67186), +(263707, 'esES', 'Brazaletes de cólera del Vacío', 67186), +(263706, 'esES', 'Capa de cólera del Vacío', 67186), +(263705, 'esES', 'Pretina de cólera del Vacío', 67186), +(263704, 'esES', 'Espaldares de cólera del Vacío', 67186), +(263703, 'esES', 'Quijotes de cólera del Vacío', 67186), +(263702, 'esES', 'Yelmo de cólera del Vacío', 67186), +(263701, 'esES', 'Guanteletes de cólera del Vacío', 67186), +(263700, 'esES', 'Escarpes de cólera del Vacío', 67186), +(263699, 'esES', 'Coraza de cólera del Vacío', 67186), +(263698, 'esES', 'Blusa de némesis del Vacio', 67186), +(263697, 'esES', 'Brazales de némesis del Vacio', 67186), +(263696, 'esES', 'Capa de némesis del Vacio', 67186), +(263695, 'esES', 'Cinturón de némesis del Vacio', 67186), +(263694, 'esES', 'Bufas de némesis del Vacio', 67186), +(263693, 'esES', 'Leotardos de némesis del Vacio', 67186), +(263692, 'esES', 'Capacete de némesis del Vacio', 67186), +(263691, 'esES', 'Guantes de némesis del Vacio', 67186), +(263690, 'esES', 'Botas de némesis del Vacio', 67186), +(263689, 'esES', 'Togas de némesis del Vacio', 67186), +(263688, 'esES', 'Grebas de tormentas del Vacío', 67186), +(263687, 'esES', 'Brazales de tormentas del Vacío', 67186), +(263686, 'esES', 'Capa de tormentas del Vacío', 67186), +(263685, 'esES', 'Cinturón de tormentas del Vacío', 67186), +(263684, 'esES', 'Cubrehombros de tormentas del Vacío', 67186), +(263683, 'esES', 'Falda de tormentas del Vacío', 67186), +(263682, 'esES', 'Casco de tormentas del Vacío', 67186), +(263681, 'esES', 'Guanteletes de tormentas del Vacío', 67186), +(263680, 'esES', 'Escarpes de tormentas del Vacío', 67186), +(263679, 'esES', 'Coraza de tormentas del Vacío', 67186), +(263678, 'esES', 'Brazales de colmillo del Vacío', 67186), +(263677, 'esES', 'Capa de colmillo del Vacío', 67186), +(263676, 'esES', 'Cinturón de colmillo del Vacío', 67186), +(263675, 'esES', 'Bufas de colmillo del Vacío', 67186), +(263674, 'esES', 'Pantalones de colmillo del Vacío', 67186), +(263673, 'esES', 'Caperuza de colmillo del Vacío', 67186), +(263672, 'esES', 'Guantes de colmillo del Vacío', 67186), +(263671, 'esES', 'Botas de colmillo del Vacío', 67186), +(263670, 'esES', 'Pechera de colmillo del Vacío', 67186), +(263669, 'esES', 'Blusa de Vacioascensión', 67186), +(263668, 'esES', 'Ataduras de Vacioascensión', 67186), +(263667, 'esES', 'Capa de Vacioascensión', 67186), +(263666, 'esES', 'Cinturón de Vacioascensión', 67186), +(263665, 'esES', 'Espaldares de Vacioascensión', 67186), +(263664, 'esES', 'Leotardos de Vacioascensión', 67186), +(263663, 'esES', 'Halo de Vacioascensión', 67186), +(263662, 'esES', 'Manoplas de Vacioascensión', 67186), +(263661, 'esES', 'Botas de Vacioascensión', 67186), +(263660, 'esES', 'Toga de Vacioascensión', 67186), +(263659, 'esES', 'Grebas de sentencia del Vacío', 67186), +(263658, 'esES', 'Ataduras de sentencia del Vacío', 67186), +(263657, 'esES', 'Capa de sentencia del Vacío', 67186), +(263656, 'esES', 'Cinturón de sentencia del Vacío', 67186), +(263655, 'esES', 'Bufas de sentencia del Vacío', 67186), +(263654, 'esES', 'Quijotes de sentencia del Vacío', 67186), +(263653, 'esES', 'Corona de sentencia del Vacío', 67186), +(263652, 'esES', 'Guanteletes de sentencia del Vacío', 67186), +(263651, 'esES', 'Escarpes de sentencia del Vacío', 67186), +(263650, 'esES', 'Coraza de sentencia del Vacío', 67186), +(263649, 'esES', 'Ataduras del acólito del Vacío', 67186), +(263648, 'esES', 'Capa del acólito del Vacío', 67186), +(263647, 'esES', 'Cordón del acólito del Vacío', 67186), +(263646, 'esES', 'Bufas del acólito del Vacío', 67186), +(263645, 'esES', 'Pantalones del acólito del Vacío', 67186), +(263644, 'esES', 'Yelmo del acólito del Vacío', 67186), +(263643, 'esES', 'Mandiletes del acólito del Vacío', 67186), +(263642, 'esES', 'Garfas del acólito del Vacío', 67186), +(263641, 'esES', 'Jubón del acólito del Vacío', 67186), +(263640, 'esES', 'Blusa de viento del Vacío', 67186), +(263639, 'esES', 'Ataduras de viento del Vacío', 67186), +(263638, 'esES', 'Capa de viento del Vacío', 67186), +(263637, 'esES', 'Cinturón de viento del Vacío', 67186), +(263636, 'esES', 'Manto de viento del Vacío', 67186), +(263635, 'esES', 'Pantalones de viento del Vacío', 67186), +(263634, 'esES', 'Corona de viento del Vacío', 67186), +(263633, 'esES', 'Guantes de viento del Vacío', 67186), +(263632, 'esES', 'Botas de viento del Vacío', 67186), +(263631, 'esES', 'Toga de viento del Vacío', 67186), +(263630, 'esES', 'Brazales de acechador del Vacío', 67186), +(263629, 'esES', 'Capa de acechador del Vacío', 67186), +(263628, 'esES', 'Cinturón de acechador del Vacío', 67186), +(263627, 'esES', 'Bufas de acechador del Vacío', 67186), +(263626, 'esES', 'Musleras de acechador del Vacío', 67186), +(263625, 'esES', 'Yelmo de acechador del Vacío', 67186), +(263624, 'esES', 'Guanteletes de acechador del Vacío', 67186), +(263623, 'esES', 'Grebas de acechador del Vacío', 67186), +(263622, 'esES', 'Coraza de acechador del Vacío', 67186), +(263621, 'esES', 'Avambrazos de celador del Vacío', 67186), +(263620, 'esES', 'Capa de celador del Vacío', 67186), +(263619, 'esES', 'Faja de celador del Vacío', 67186), +(263618, 'esES', 'Espaldares de celador del Vacío', 67186), +(263617, 'esES', 'Quijotes de celador del Vacío', 67186), +(263616, 'esES', 'Corona de celador del Vacío', 67186), +(263615, 'esES', 'Garras de celador del Vacío', 67186), +(263614, 'esES', 'Garfas de celador del Vacío', 67186), +(263613, 'esES', 'Coraza de celador del Vacío', 67186), +(263612, 'esES', 'Coselete de Rabia del Vacío', 67186), +(263611, 'esES', 'Brazales de Rabia del Vacío', 67186), +(263610, 'esES', 'Capa de Rabia del Vacío', 67186), +(263609, 'esES', 'Cinturón de Rabia del Vacío', 67186), +(263608, 'esES', 'Espaldares de Rabia del Vacío', 67186), +(263607, 'esES', 'Musleras de Rabia del Vacío', 67186), +(263606, 'esES', 'Casquete de Rabia del Vacío', 67186), +(263605, 'esES', 'Manoplas de Rabia del Vacío', 67186), +(263604, 'esES', 'Botas de Rabia del Vacío', 67186), +(263603, 'esES', 'Toga de Rabia del Vacío', 67186), +(263602, 'esES', 'Brazales de abisario', 67186), +(263601, 'esES', 'Capa de abisario', 67186), +(263600, 'esES', 'Cordón de abisario', 67186), +(263599, 'esES', 'Hombreras de abisario', 67186), +(263598, 'esES', 'Leotardos de abisario', 67186), +(263597, 'esES', 'Capacete de abisario', 67186), +(263596, 'esES', 'Guantes de abisario', 67186), +(263595, 'esES', 'Sandalias de abisario', 67186), +(263594, 'esES', 'Arnés de abisario', 67186), +(263593, 'esES', 'Avambrazos de jinete del Vacío', 67186), +(263592, 'esES', 'Capa de jinete del Vacío', 67186), +(263591, 'esES', 'Faja de jinete del Vacío', 67186), +(263590, 'esES', 'Espaldares de jinete del Vacío', 67186), +(263589, 'esES', 'Leotardos de jinete del Vacío', 67186), +(263588, 'esES', 'Yelmo de jinete del Vacío', 67186), +(263587, 'esES', 'Guantes de jinete del Vacío', 67186), +(263586, 'esES', 'Escarpes de jinete del Vacío', 67186), +(263585, 'esES', 'Coraza de jinete del Vacío', 67186), +(251161, 'esES', 'Embozo del Cazador de Almas', 67186), +(133494, 'esES', 'Cinturón escabroso de zombi', 67186), +(49810, 'esES', 'Cinturón escabroso de zombi', 67186), +(263286, 'esES', 'Gong fungárico reutilizado', 67186), +(255627, 'esES', 'Martillo de Gladiador galáctico', 67186), +(253582, 'esES', 'Flagelador de dentaleta', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'esES', 'Te enseña a realizar el encantamiento Adorno ilusorio: Sueños.', '', '', '', 'Fórmula: adorno ilusorio: Sueños', 67186), +(206969, 'esES', '', '', '', '', 'Adorno ilusorio: Sueños', 67186), +(206968, 'esES', '', '', '', '', 'Adorno ilusorio: Sueños', 67186), +(206967, 'esES', '', '', '', '', 'Adorno ilusorio: Sueños', 67186), +(204977, 'esES', 'Te enseña a realizar el encantamiento Adorno ilusorio: Esporas.', '', '', '', 'Fórmula: adorno ilusorio: Esporas', 67186), +(204568, 'esES', '', '', '', '', 'Adorno ilusorio: Esporas', 67186), +(204567, 'esES', '', '', '', '', 'Adorno ilusorio: Esporas', 67186), +(204565, 'esES', '', '', '', '', 'Adorno ilusorio: Esporas', 67186), +(201321, 'esES', '', '', '', '', 'Adorno ilusorio: Orden', 67186), +(201320, 'esES', '', '', '', '', 'Adorno ilusorio: Orden', 67186), +(201319, 'esES', '', '', '', '', 'Adorno ilusorio: Orden', 67186), +(201318, 'esES', '', '', '', '', 'Adorno ilusorio: Aire', 67186), +(201317, 'esES', '', '', '', '', 'Adorno ilusorio: Aire', 67186), +(201316, 'esES', '', '', '', '', 'Adorno ilusorio: Aire', 67186), +(201315, 'esES', '', '', '', '', 'Adorno ilusorio: Tierra', 67186), +(201314, 'esES', '', '', '', '', 'Adorno ilusorio: Tierra', 67186), +(201313, 'esES', '', '', '', '', 'Adorno ilusorio: Tierra', 67186), +(201312, 'esES', '', '', '', '', 'Adorno ilusorio: Escarcha', 67186), +(201311, 'esES', '', '', '', '', 'Adorno ilusorio: Escarcha', 67186), +(201310, 'esES', '', '', '', '', 'Adorno ilusorio: Escarcha', 67186), +(200616, 'esES', '', '', '', '', 'Adorno ilusorio: Fuego', 67186), +(200615, 'esES', '', '', '', '', 'Adorno ilusorio: Fuego', 67186), +(200614, 'esES', '', '', '', '', 'Adorno ilusorio: Fuego', 67186), +(245345, 'esES', 'Una mota fusionada de pura energía primigenia. Se compra a la vendedora de abundancia Chel Chispas o al pescador del abismo buzo profundo Tu\'nakit.', '', '', '', 'Vitalidad fundida', 67186), +(243343, 'esES', 'Una ventana a algo muchísimo más grande', '', '', '', 'Anomalía de pescador', 67186), +(243302, 'esES', 'Un catalizador de crecimiento realmente abrumador.', '', '', '', 'Floración de acuario', 67186), +(274267, 'esES', 'Una mota fusionada de pura energía primigenia. Se compra a la vendedora de abundancia Chel Chispas o al pescador del abismo buzo profundo Tu\'nakit.', '', '', '', 'Vitalidad fundida', 67186), +(255157, 'esES', '', '', '', '', 'Diario de pesca de pescador del abismo', 67186), +(239563, 'esES', 'Te enseña a invocar un lince marcado por el Vacío. Esta montura cambia según tu habilidad en equitación y la zona en la que estés.', '', '', '', 'Correa de Vínculo de las Sombras', 67186), +(223245, 'esES', '', '', '', '', 'Indumentaria: Pescador del abismo', 67186), +(267009, 'esES', '', '', '', '', 'Muñeco de entrenamiento Amani', 67186), +(267007, 'esES', '', '', '', '', 'Ojo de Acherus', 67186), +(264717, 'esES', '', '', '', '', 'Maleficio de resguardo Amani', 67186), +(264342, 'esES', '', '', '', '', 'Alijo del Vacío cósmico', 67186), +(264338, 'esES', '', '', '', '', 'Consola de control domanaar', 67186), +(264336, 'esES', '', '', '', '', 'Blandón de luz del Vacío', 67186), +(264332, 'esES', '', '', '', '', 'Altar de ritual Amani', 67186), +(264330, 'esES', '', '', '', '', 'Blandón colgante Amani', 67186), +(264329, 'esES', '', '', '', '', 'Mesa de comedor Amani', 67186), +(264258, 'esES', '', '', '', '', 'Forja cubierta de musgo', 67186), +(263238, 'esES', '', '', '', '', 'Mesa larga de la Lluvia Ilícita', 67186), +(263233, 'esES', '', '', '', '', 'Biblioteca giratoria sin\'dorei', 67186), +(263230, 'esES', '', '', '', '', 'Estante de magister', 67186), +(263042, 'esES', '', '', '', '', 'Poste de luz de raizdeluz', 67186), +(263036, 'esES', '', '', '', '', 'Flor del alba colgante', 67186), +(256683, 'esES', '', '', '', '', 'Muñeco de entrenamiento de Lunargenta', 67186), +(253451, 'esES', '', '', '', '', 'Fuente de Velorraíz', 67186), +(251967, 'esES', '', '', '', '', 'Estandarte fungárico', 67186), +(245938, 'esES', '', '', '', '', 'Pérgola arathi cubierta de vegetación', 67186), +(245560, 'esES', '', '', '', '', 'Ventana ocre del lagar', 67186), +(241044, 'esES', '', '', '', '', 'Cajón de Argus', 67186), +(264914, 'esES', 'Un alijo que contiene galardones de campo, fragmentos de llave del arca de reliquias, materiales de mejora de equipo, oro y más cosas.', '', '', '', 'Alijo de forestal', 67186), +(275447, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador especulativo', 67186), +(275446, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador de alto rendimiento', 67186), +(275445, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador verde rentable', 67186), +(275444, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador de gran fiabilidad', 67186), +(275442, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Mecatraje de amatista', 67186), +(275440, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Caminamuerte cerúleo', 67186), +(275436, 'esES', 'Otorgado por el logro \"Mito de la piedra angular de Midnight: temporada 1\". A Lindormi, que se encuentra en Lunargenta o las líneas temporales, podría interesarle comerciar con este objeto. Expira al final de la temporada.', '', '', '', 'Silla de montar perdida en el tiempo', 67186), +(248248, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Volador del Vacío azur', 67186), +(247822, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Volador del Vacío escarlata', 67186), +(237141, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Tanque triturador de emprendimiento', 67186), +(235549, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Tanque triturador carmesí', 67186), +(226357, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Mecatraje de diamante', 67186), +(213438, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Rinoceronte blindado infinito', 67186), +(209060, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Rinoceronte blindado verdeante', 67186), +(204798, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Rinoceronte blindado infernal', 67186), +(199412, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Rinoceronte blindado de pedrisca', 67186), +(192557, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Caminamuerte de restauración', 67186), +(187682, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Caminamuerte distorsionado por los residuos', 67186), +(187525, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Caminamuerte de espíritu retorcido', 67186), +(182717, 'esES', 'Te enseña a invocar a esta montura.', '', '', '', 'Caminamuerte tocado por el pecado', 67186), +(174836, 'esES', 'Te enseña a invocar esta montura.', '', '', '', 'Perforamentes despierto', 67186), +(257741, 'esES', 'Se puede comprar y vender en la casa de subastas.', '', '', '', 'B0P, conservador de bums', 67186), +(257735, 'esES', 'Se puede comprar y vender en la casa de subastas.', '', '', '', 'B0P, conservador de bums', 67186), +(255844, 'esES', 'Se puede comprar y vender en la casa de subastas.', '', '', '', 'CH1T0N, cachorro despreocupado', 67186), +(255843, 'esES', 'Se puede comprar y vender en la casa de subastas.', '', '', '', 'CH1T0N, cachorro despreocupado', 67186), +(248592, 'esES', 'Invoca a B1P, Carbonizador de Almas. Creado por jugadores con habilidad en ingeniería. Se puede comprar y vender en la casa de subastas.', '', '', '', 'B1P, Carbonizador de Almas', 67186), +(248135, 'esES', 'Invoca a Bip, Carbonizador de Almas. Creado por jugadores con habilidad en ingeniería. Se puede comprar y vender en la casa de subastas.', '', '', '', 'B1P, Carbonizador de Almas', 67186), +(274427, 'esES', 'ATENCIÓN: No se garantiza que contenga una montura real.', '', '', '', 'Caja de botín de sha', 67186), +(267643, 'esES', '', '', '', '', 'Cuerda de tótem Amani desgastada', 67186), +(267642, 'esES', '', '', '', '', 'Colgante de cuerda de corazón Amani desgastado', 67186), +(267641, 'esES', '', '', '', '', 'Crestasol de Lunargenta deslustrado', 67186), +(267640, 'esES', '', '', '', '', 'Velosol de Lunargenta deslustrado', 67186), +(267639, 'esES', '', '', '', '', 'Guardiasol de Lunargenta deslustrado', 67186), +(267638, 'esES', '', '', '', '', 'Agujasol de Lunargenta deslustrado', 67186), +(267607, 'esES', '', '', '', '', 'Manijas de penumbra nublosas', 67186), +(267606, 'esES', '', '', '', '', 'Guantes de gravedad infinita', 67186), +(267605, 'esES', '', '', '', '', 'Garras de vórtice interminable', 67186), +(267604, 'esES', '', '', '', '', 'Agarres de los behemoths colosales', 67186), +(267482, 'esES', '', '', '', '', 'Gran cinturón de defensor hara\'ti aspirante', 67186), +(267481, 'esES', '', '', '', '', 'Cinturón de defensor hara\'ti aspirante', 67186), +(267480, 'esES', '', '', '', '', 'Cordón de defensor hara\'ti aspirante', 67186), +(267479, 'esES', '', '', '', '', 'Fajín de defensor hara\'ti aspirante', 67186), +(266432, 'esES', '', '', '', '', 'Crestasol de Lunargenta', 67186), +(266431, 'esES', '', '', '', '', 'Velosol de Lunargenta', 67186), +(266430, 'esES', '', '', '', '', 'Guardiasol de Lunargenta', 67186), +(266429, 'esES', '', '', '', '', 'Agujasol de Lunargenta', 67186), +(265740, 'esES', '', '', '', '', 'Cuerda de tótem Amani', 67186), +(265739, 'esES', '', '', '', '', 'Colgante de cuerda de corazón Amani', 67186), +(264507, 'esES', '', '', '', '', 'Crisol de energías erráticas', 67186), +(263269, 'esES', '', '', '', '', 'Gran cinturón de defensor hara\'ti', 67186), +(263268, 'esES', '', '', '', '', 'Cinturón de defensor hara\'ti', 67186), +(263267, 'esES', '', '', '', '', 'Cordón de defensor hara\'ti', 67186), +(263265, 'esES', '', '', '', '', 'Fajín de defensor hara\'ti', 67186), +(270562, 'esES', 'Una muestra ósea extrañamente mancillada. Puede que a lady Cañada Oscura le interese.', '', '', '', 'Muestra mancillada', 67186), +(249497, 'esES', 'Unos pimientos tan picantes que La Fuente del Sol prohíbe su entrada.', '', '', '', 'Pimiento de las Tierras Fantasma', 67186), +(272961, 'esES', '', '', '', '', 'Bastón con hoja de rompehechizos', 67186), +(272960, 'esES', '', '', '', '', 'Muroescudo de rompehechizos', 67186), +(272318, 'esES', '', '', '', '', 'Hoja de fénix de rompehechizos', 67186), +(272317, 'esES', '', '', '', '', 'Guja de fénix de rompehechizos', 67186), +(272316, 'esES', '', '', '', '', 'Lanza con hoja de rompehechizos', 67186), +(271631, 'esES', 'ATENCIÓN: No se garantiza que contenga una montura real.', '', '', '', 'Recompensa de guardián de la Luz', 67186), +(19355, 'esES', '', '', '', '', 'Bastón de enfoque de Alasombra', 67186), +(274578, 'esES', 'Una pequeña muestra de bondad de Dundun, loa de la abundancia, que contiene 4500 de abundancia sin alear.', '', '', '', 'Ofrenda de abundancia sin alear', 67186), +(268455, 'esES', '', '', '', '', 'Reloj de arena encantado', 67186), +(268122, 'esES', 'Tus monedas se han disipado. Participa más la próxima vez.', '', '', '', 'Monedas disipadas', 67186), +(272338, 'esES', '', '', '', '', 'Acero de hechizo de guardia mago', 67186), +(272337, 'esES', '', '', '', '', 'Hoja de hechizo de guardia mago', 67186), +(272336, 'esES', '', '', '', '', 'Machacafallas de señal de la nada', 67186), +(272321, 'esES', '', '', '', '', 'Arco de hechizos de forestal Arcano', 67186), +(272320, 'esES', '', '', '', '', 'Canalizador de fallas de señal de la nada', 67186), +(268481, 'esES', 'Te enseña a invocar a la abeja aniquiladora. Esta montura cambia según tu habilidad en equitación y la zona en la que estés.', '', '', '', 'Panal de abeja hechizante de magister', 67186), +(268456, 'esES', '', '', '', '', 'Banco animado', 67186), +(273874, 'esES', '', '', '', '', 'Arma de asta Furiasolar tocada por el Vacío', 67186), +(263970, 'esES', '', '', '', '', 'Hoja de guja tocada por el Vacío', 67186), +(263969, 'esES', '', '', '', '', 'Gran varita tocada por el Vacío', 67186), +(263968, 'esES', '', '', '', '', 'Focos tocados por el Vacío', 67186), +(263967, 'esES', '', '', '', '', 'Gran arco tocado por el Vacío', 67186), +(263966, 'esES', '', '', '', '', 'Gran hoja tocada por el Vacío', 67186), +(263963, 'esES', '', '', '', '', 'Hoja de duelo tocada por el Vacío', 67186), +(263960, 'esES', '', '', '', '', 'Hoja prendida tocada por el Vacío', 67186), +(263959, 'esES', '', '', '', '', 'Escrito tocado por el Vacío', 67186), +(263956, 'esES', '', '', '', '', 'Machacador tocado por el Vacío', 67186), +(263954, 'esES', '', '', '', '', 'Bordón de batalla tocado por el Vacío', 67186), +(263952, 'esES', '', '', '', '', 'Báculo Furia del Sol tocado por el Vacío', 67186), +(263950, 'esES', '', '', '', '', 'Pala tocada por el Vacío', 67186), +(263949, 'esES', '', '', '', '', 'Baluarte tocado por el Vacío', 67186), +(263946, 'esES', '', '', '', '', 'Partecaras tocado por el Vacío', 67186), +(263943, 'esES', '', '', '', '', 'Destripadora tocada por el Vacío', 67186), +(263942, 'esES', '', '', '', '', 'Colmillo tocado por el Vacío', 67186), +(263941, 'esES', '', '', '', '', 'Rifle tocado por el Vacío', 67186), +(263707, 'esES', '', '', '', '', 'Brazaletes de cólera del Vacío', 67186), +(263706, 'esES', '', '', '', '', 'Capa de cólera del Vacío', 67186), +(263705, 'esES', '', '', '', '', 'Pretina de cólera del Vacío', 67186), +(263704, 'esES', '', '', '', '', 'Espaldares de cólera del Vacío', 67186), +(263703, 'esES', '', '', '', '', 'Quijotes de cólera del Vacío', 67186), +(263702, 'esES', '', '', '', '', 'Yelmo de cólera del Vacío', 67186), +(263701, 'esES', '', '', '', '', 'Guanteletes de cólera del Vacío', 67186), +(263700, 'esES', '', '', '', '', 'Escarpes de cólera del Vacío', 67186), +(263699, 'esES', '', '', '', '', 'Coraza de cólera del Vacío', 67186), +(263698, 'esES', '', '', '', '', 'Blusa de némesis del Vacio', 67186), +(263697, 'esES', '', '', '', '', 'Brazales de némesis del Vacio', 67186), +(263696, 'esES', '', '', '', '', 'Capa de némesis del Vacio', 67186), +(263695, 'esES', '', '', '', '', 'Cinturón de némesis del Vacio', 67186), +(263694, 'esES', '', '', '', '', 'Bufas de némesis del Vacio', 67186), +(263693, 'esES', '', '', '', '', 'Leotardos de némesis del Vacio', 67186), +(263692, 'esES', '', '', '', '', 'Capacete de némesis del Vacio', 67186), +(263691, 'esES', '', '', '', '', 'Guantes de némesis del Vacio', 67186), +(263690, 'esES', '', '', '', '', 'Botas de némesis del Vacio', 67186), +(263689, 'esES', '', '', '', '', 'Togas de némesis del Vacio', 67186), +(263688, 'esES', '', '', '', '', 'Grebas de tormentas del Vacío', 67186), +(263687, 'esES', '', '', '', '', 'Brazales de tormentas del Vacío', 67186), +(263686, 'esES', '', '', '', '', 'Capa de tormentas del Vacío', 67186), +(263685, 'esES', '', '', '', '', 'Cinturón de tormentas del Vacío', 67186), +(263684, 'esES', '', '', '', '', 'Cubrehombros de tormentas del Vacío', 67186), +(263683, 'esES', '', '', '', '', 'Falda de tormentas del Vacío', 67186), +(263682, 'esES', '', '', '', '', 'Casco de tormentas del Vacío', 67186), +(263681, 'esES', '', '', '', '', 'Guanteletes de tormentas del Vacío', 67186), +(263680, 'esES', '', '', '', '', 'Escarpes de tormentas del Vacío', 67186), +(263679, 'esES', '', '', '', '', 'Coraza de tormentas del Vacío', 67186), +(263678, 'esES', '', '', '', '', 'Brazales de colmillo del Vacío', 67186), +(263677, 'esES', '', '', '', '', 'Capa de colmillo del Vacío', 67186), +(263676, 'esES', '', '', '', '', 'Cinturón de colmillo del Vacío', 67186), +(263675, 'esES', '', '', '', '', 'Bufas de colmillo del Vacío', 67186), +(263674, 'esES', '', '', '', '', 'Pantalones de colmillo del Vacío', 67186), +(263673, 'esES', '', '', '', '', 'Caperuza de colmillo del Vacío', 67186), +(263672, 'esES', '', '', '', '', 'Guantes de colmillo del Vacío', 67186), +(263671, 'esES', '', '', '', '', 'Botas de colmillo del Vacío', 67186), +(263670, 'esES', '', '', '', '', 'Pechera de colmillo del Vacío', 67186), +(263669, 'esES', '', '', '', '', 'Blusa de Vacioascensión', 67186), +(263668, 'esES', '', '', '', '', 'Ataduras de Vacioascensión', 67186), +(263667, 'esES', '', '', '', '', 'Capa de Vacioascensión', 67186), +(263666, 'esES', '', '', '', '', 'Cinturón de Vacioascensión', 67186), +(263665, 'esES', '', '', '', '', 'Espaldares de Vacioascensión', 67186), +(263664, 'esES', '', '', '', '', 'Leotardos de Vacioascensión', 67186), +(263663, 'esES', '', '', '', '', 'Halo de Vacioascensión', 67186), +(263662, 'esES', '', '', '', '', 'Manoplas de Vacioascensión', 67186), +(263661, 'esES', '', '', '', '', 'Botas de Vacioascensión', 67186), +(263660, 'esES', '', '', '', '', 'Toga de Vacioascensión', 67186), +(263659, 'esES', '', '', '', '', 'Grebas de sentencia del Vacío', 67186), +(263658, 'esES', '', '', '', '', 'Ataduras de sentencia del Vacío', 67186), +(263657, 'esES', '', '', '', '', 'Capa de sentencia del Vacío', 67186), +(263656, 'esES', '', '', '', '', 'Cinturón de sentencia del Vacío', 67186), +(263655, 'esES', '', '', '', '', 'Bufas de sentencia del Vacío', 67186), +(263654, 'esES', '', '', '', '', 'Quijotes de sentencia del Vacío', 67186), +(263653, 'esES', '', '', '', '', 'Corona de sentencia del Vacío', 67186), +(263652, 'esES', '', '', '', '', 'Guanteletes de sentencia del Vacío', 67186), +(263651, 'esES', '', '', '', '', 'Escarpes de sentencia del Vacío', 67186), +(263650, 'esES', '', '', '', '', 'Coraza de sentencia del Vacío', 67186), +(263649, 'esES', '', '', '', '', 'Ataduras del acólito del Vacío', 67186), +(263648, 'esES', '', '', '', '', 'Capa del acólito del Vacío', 67186), +(263647, 'esES', '', '', '', '', 'Cordón del acólito del Vacío', 67186), +(263646, 'esES', '', '', '', '', 'Bufas del acólito del Vacío', 67186), +(263645, 'esES', '', '', '', '', 'Pantalones del acólito del Vacío', 67186), +(263644, 'esES', '', '', '', '', 'Yelmo del acólito del Vacío', 67186), +(263643, 'esES', '', '', '', '', 'Mandiletes del acólito del Vacío', 67186), +(263642, 'esES', '', '', '', '', 'Garfas del acólito del Vacío', 67186), +(263641, 'esES', '', '', '', '', 'Jubón del acólito del Vacío', 67186), +(263640, 'esES', '', '', '', '', 'Blusa de viento del Vacío', 67186), +(263639, 'esES', '', '', '', '', 'Ataduras de viento del Vacío', 67186), +(263638, 'esES', '', '', '', '', 'Capa de viento del Vacío', 67186), +(263637, 'esES', '', '', '', '', 'Cinturón de viento del Vacío', 67186), +(263636, 'esES', '', '', '', '', 'Manto de viento del Vacío', 67186), +(263635, 'esES', '', '', '', '', 'Pantalones de viento del Vacío', 67186), +(263634, 'esES', '', '', '', '', 'Corona de viento del Vacío', 67186), +(263633, 'esES', '', '', '', '', 'Guantes de viento del Vacío', 67186), +(263632, 'esES', '', '', '', '', 'Botas de viento del Vacío', 67186), +(263631, 'esES', '', '', '', '', 'Toga de viento del Vacío', 67186), +(263630, 'esES', '', '', '', '', 'Brazales de acechador del Vacío', 67186), +(263629, 'esES', '', '', '', '', 'Capa de acechador del Vacío', 67186), +(263628, 'esES', '', '', '', '', 'Cinturón de acechador del Vacío', 67186), +(263627, 'esES', '', '', '', '', 'Bufas de acechador del Vacío', 67186), +(263626, 'esES', '', '', '', '', 'Musleras de acechador del Vacío', 67186), +(263625, 'esES', '', '', '', '', 'Yelmo de acechador del Vacío', 67186), +(263624, 'esES', '', '', '', '', 'Guanteletes de acechador del Vacío', 67186), +(263623, 'esES', '', '', '', '', 'Grebas de acechador del Vacío', 67186), +(263622, 'esES', '', '', '', '', 'Coraza de acechador del Vacío', 67186), +(263621, 'esES', '', '', '', '', 'Avambrazos de celador del Vacío', 67186), +(263620, 'esES', '', '', '', '', 'Capa de celador del Vacío', 67186), +(263619, 'esES', '', '', '', '', 'Faja de celador del Vacío', 67186), +(263618, 'esES', '', '', '', '', 'Espaldares de celador del Vacío', 67186), +(263617, 'esES', '', '', '', '', 'Quijotes de celador del Vacío', 67186), +(263616, 'esES', '', '', '', '', 'Corona de celador del Vacío', 67186), +(263615, 'esES', '', '', '', '', 'Garras de celador del Vacío', 67186), +(263614, 'esES', '', '', '', '', 'Garfas de celador del Vacío', 67186), +(263613, 'esES', '', '', '', '', 'Coraza de celador del Vacío', 67186), +(263612, 'esES', '', '', '', '', 'Coselete de Rabia del Vacío', 67186), +(263611, 'esES', '', '', '', '', 'Brazales de Rabia del Vacío', 67186), +(263610, 'esES', '', '', '', '', 'Capa de Rabia del Vacío', 67186), +(263609, 'esES', '', '', '', '', 'Cinturón de Rabia del Vacío', 67186), +(263608, 'esES', '', '', '', '', 'Espaldares de Rabia del Vacío', 67186), +(263607, 'esES', '', '', '', '', 'Musleras de Rabia del Vacío', 67186), +(263606, 'esES', '', '', '', '', 'Casquete de Rabia del Vacío', 67186), +(263605, 'esES', '', '', '', '', 'Manoplas de Rabia del Vacío', 67186), +(263604, 'esES', '', '', '', '', 'Botas de Rabia del Vacío', 67186), +(263603, 'esES', '', '', '', '', 'Toga de Rabia del Vacío', 67186), +(263602, 'esES', '', '', '', '', 'Brazales de abisario', 67186), +(263601, 'esES', '', '', '', '', 'Capa de abisario', 67186), +(263600, 'esES', '', '', '', '', 'Cordón de abisario', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'esES', '', '', '', '', 'Hombreras de abisario', 67186), +(263598, 'esES', '', '', '', '', 'Leotardos de abisario', 67186), +(263597, 'esES', '', '', '', '', 'Capacete de abisario', 67186), +(263596, 'esES', '', '', '', '', 'Guantes de abisario', 67186), +(263595, 'esES', '', '', '', '', 'Sandalias de abisario', 67186), +(263594, 'esES', '', '', '', '', 'Arnés de abisario', 67186), +(263593, 'esES', '', '', '', '', 'Avambrazos de jinete del Vacío', 67186), +(263592, 'esES', '', '', '', '', 'Capa de jinete del Vacío', 67186), +(263591, 'esES', '', '', '', '', 'Faja de jinete del Vacío', 67186), +(263590, 'esES', '', '', '', '', 'Espaldares de jinete del Vacío', 67186), +(263589, 'esES', '', '', '', '', 'Leotardos de jinete del Vacío', 67186), +(263588, 'esES', '', '', '', '', 'Yelmo de jinete del Vacío', 67186), +(263587, 'esES', '', '', '', '', 'Guantes de jinete del Vacío', 67186), +(263586, 'esES', '', '', '', '', 'Escarpes de jinete del Vacío', 67186), +(263585, 'esES', '', '', '', '', 'Coraza de jinete del Vacío', 67186), +(251161, 'esES', 'Una reliquia de los retorcidos rituales secretos para los Vilrama.', '', '', '', 'Embozo del Cazador de Almas', 67186), +(133494, 'esES', '', '', '', '', 'Cinturón escabroso de zombi', 67186), +(49810, 'esES', '', '', '', '', 'Cinturón escabroso de zombi', 67186), +(264323, 'esES', 'Contiene un arma tocada por el Vacío cosmética que no tienes en tu colección.', '', '', '', 'Alijo de armas tocadas por el Vacío', 67186), +(264322, 'esES', 'Contiene botas tocadas por el Vacío cosméticas que no tienes en tu colección.', '', '', '', 'Alijo de botas tocadas por el Vacío', 67186), +(264321, 'esES', 'Contiene unas perneras tocadas por el Vacío cosméticas que no tienes en tu colección.', '', '', '', 'Alijo de perneras tocadas por el Vacío', 67186), +(264320, 'esES', 'Contiene cinturones tocados por el Vacío cosméticos que no tienes en tu colección.', '', '', '', 'Alijo de cinturones tocados por el Vacío', 67186), +(264319, 'esES', 'Contiene guantes tocados por el Vacío cosméticos que no tienes en tu colección.', '', '', '', 'Alijo de guantes tocados por el Vacío', 67186), +(264318, 'esES', 'Contiene brazales tocados por el Vacío cosméticos que no tienes en tu colección.', '', '', '', 'Alijo de brazales tocados por el Vacío', 67186), +(264317, 'esES', 'Contiene una pechera tocada por el Vacío cosmética que no tienes en tu colección.', '', '', '', 'Alijo de pecheras tocadas por el Vacío', 67186), +(264316, 'esES', 'Contiene una capa tocada por el Vacío cosmética que no tienes en tu colección.', '', '', '', 'Alijo de capas tocadas por el Vacío', 67186), +(264315, 'esES', 'Contiene unos sobrehombros tocados por el Vacío cosméticos que no tienes en tu colección.', '', '', '', 'Alijo de hombreras tocadas por el Vacío', 67186), +(264314, 'esES', 'Contiene un yelmo tocado por el Vacío cosmético que no tienes en tu colección.', '', '', '', 'Alijo de cascos tocados por el Vacío', 67186), +(256700, 'esES', 'Te enseña a fabricar un sello de bendiciones de Azeroth.', '', '', '', 'Boceto: sello de bendiciones de Azeroth', 67186), +(250445, 'esES', '', '', '', '', 'Eco de abundancia: encantamiento', 67186), +(250360, 'esES', '', '', '', '', 'Eco de abundancia: desuello', 67186), +(250443, 'esES', '', '', '', '', 'Eco de abundancia: herboristería', 67186), +(272125, 'esES', 'Contiene oro y marga de luz del Vacío y un objeto para tu especialización actual como reconocimiento por tu perspicacia en el campo.', '', '', '', 'Alijo de recluta', 67186), +(263286, 'esES', '', '', '', '', 'Gong fungárico reutilizado', 67186), +(273307, 'esES', '¡Recién exprimida por las manos de un emprendedor intrépido! Tiene cristales de azúcar que brillan... ¿o son de maná?', '', '', '', 'Vial de limonada intrépida', 67186), +(265790, 'esES', 'Una bolsa que contiene 10 blasones del alba de héroe y de mito.', '', '', '', 'Alijo de blasones del alba', 67186), +(246753, 'esES', '', '', '', '', 'Cúmulo glorioso de blasones del alba de mito', 67186), +(255627, 'esES', '', '', '', '', 'Martillo de Gladiador galáctico', 67186), +(266969, 'esES', '', '', '', '', 'Indumentaria: Vestimentas de buzo profundo', 67186), +(253582, 'esES', '', '', '', '', 'Flagelador de dentaleta', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'esES', 'Tanques', '$bullet;El Acaparatesoros reúne recursos de la pila más cercana durante |cFF2959D3|Hspell:1235072|h[Medidas ingeniosas]|h|r.\n$bullet;Los champiñones podridos aplican |cFF2959D3|Hspell:1234846|h[Esporas tóxicas]|h|r al contacto, lo que evita que se ejecute |cFF2959D3|Hspell:1245593|h[Ráfaga pútrida]|h|r.\n$bullet;|cFF2959D3|Hspell:1234681|h[Bramido voraz]|h|r y |cFF2959D3|Hspell:1235125|h[Bramido potente]|h|r infligen mucho daño a todos los jugadores.', 67186), +(32669, 'esES', 'Resumen', 'El Acaparatesoros evita que saqueen sus reservas a toda costa y, al llegar al 90%, 60% y 30% de la salud, lanzará |cFF2959D3|Hspell:1235072|h[Medidas ingeniosas]|h|r lo que potenciará una de sus facultades.\n\nAl llegar a 100 p. de energía, lanza |cFF2959D3|Hspell:1234233|h[Suministros caducados]|h|r por la arena, que generan champiñones podridos durante 12 s. Dichos champiñones aplican |cFF2959D3|Hspell:1234846|h[Esporas tóxicas]|h|r y, al entrar en contacto con ellos, destruyen el hongo, lo que previene una |cFF2959D3|Hspell:1245593|h[Ráfaga pútrida]|h|r.', 67186), +(31527, 'esES', 'Flete Prohibido', 'Un envío pensado para mantenerse a salvo de las miradas indiscretas. Proporciona una excelente fuente de cobertura.', 67186), +(31282, 'esES', 'Tanque', '$bullet;Kystia hace que Dentellón muestre hostilidad hacia los jugadores con |cFF2959D3|Hspell:1230289|h[Infusión ilícita]|h|r.\n$bullet;Evita el |cFF2959D3|Hspell:1253811|h[Pulverizador vil]|h|r de Dentellón.\n$bullet;Interrumpe los |cFF2959D3|Hspell:1264095|h[Reflejos exactos]|h|r de Kystia.', 67186), +(31281, 'esES', 'Sanadores', '$bullet;Kystia hace que Dentellón muestre hostilidad hacia los jugadores con |cFF2959D3|Hspell:1230289|h[Infusión ilícita]|h|r.\n$bullet;Evita el |cFF2959D3|Hspell:1253811|h[Pulverizador vil]|h|r de Dentellón.\n$bullet;Kystia inflige mucho daño a todos los jugadores con |cFF2959D3|Hspell:1265412|h[Desestabilizado]|h|r.', 67186), +(31280, 'esES', 'DPS', '$bullet;Kystia hace que Dentellón muestre hostilidad hacia los jugadores con |cFF2959D3|Hspell:1230289|h[Infusión ilícita]|h|r.\n$bullet;Evita el |cFF2959D3|Hspell:1253811|h[Pulverizador vil]|h|r de Dentellón.\n$bullet;Interrumpe los |cFF2959D3|Hspell:1264095|h[Reflejos exactos]|h|r de Kystia.', 67186), +(35862, 'esES', 'Section 18', '', 67186), +(35353, 'esES', 'Sección 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'esES', 'Sección 17', '', 67186), +(34733, 'esES', 'Argucia de Xal\'atath', 'Xal\'atath traiciona a los jugadores, lo que anula sus tratos y provoca que, al morir, se reduzca en 15 s tiempo restante.', 67186), +(34732, 'esES', 'Reforzada', 'Los enemigos que no son jefes tienen un 20% más de salud e infligen hasta un 20% más de daño.', 67186), +(34731, 'esES', 'Tiránica', 'Los jefes tienen un 25% más de salud. Los jefes y sus esbirros infligen hasta un 15% más de daño.', 67186), +(34730, 'esES', 'Tiránica y Reforzada', 'Estos afijos potencian más a los enemigos de las mazmorras de piedra angular mítica. Uno se activa en el nivel 7 mítico, el otro, en el nivel 10 mítico; cambian cada semana.', 67186), +(34727, 'esES', 'Trato de Xal\'atath: Devorar', '', 67186), +(34725, 'esES', 'Trato de Xal\'atath: Ligada al Vacío', '', 67186), +(34722, 'esES', 'Trato de Xal\'atath: Púlsar', '', 67186), +(34720, 'esES', 'Nivel 6 mítico', '$bullet;Se ha eliminado |cFF2959D3|Hspell:1284818|h[Guía de Lindormi]|h|r.\n\nLos personajes con especialización de tanque pueden hablar con Lindormi junto al portal a las Líneas temporales o al final de una mazmorra de piedra angular para obtener |cFF2959D3|Hspell:1295986|h[Brillo de Lindormi]|h|r, que seguirá resaltando a las fuerzas enemigas.', 67186), +(35809, 'esES', 'Section 158', '', 67186), +(35491, 'esES', 'Sección 69', '', 67186), +(35490, 'esES', 'Sección 70', '', 67186), +(35489, 'esES', 'Sección 76', '', 67186), +(35488, 'esES', 'Sección 67', '$[!15,16\nEn dificultad heroica o superior, Galvanizar libera una Corriente de exterminio.$]', 67186), +(35477, 'esES', 'Sección 22', '', 67186), +(35476, 'esES', 'Sección 31', '', 67186), +(35475, 'esES', 'Sección 30', '', 67186), +(35474, 'esES', 'Sección 29', '', 67186), +(35473, 'esES', 'Sección 31', '', 67186), +(35472, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que pueden sostener los jugadores.\n$[!16\nEn dificultad mítica, los cristales del alba están en peligro de Fin de la Luz.$]', 67186), +(35471, 'esES', 'Sección 22', '', 67186), +(35470, 'esES', 'Sección 31', '', 67186), +(35469, 'esES', 'Sección 30', '', 67186), +(35468, 'esES', 'Sección 29', '', 67186), +(35467, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden sostener.\n$[!15\nEn dificultad heroica, los cristales del alba pueden expulsar lágrimas de L\'ura.$]', 67186), +(35466, 'esES', 'Sección 22', '', 67186), +(35465, 'esES', 'Sección 31', '', 67186), +(35464, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que pueden sostener los jugadores.', 67186), +(35463, 'esES', 'Sección 22', '', 67186), +(35462, 'esES', 'Sección 31', '', 67186), +(35461, 'esES', 'Sección 30', '', 67186), +(35460, 'esES', 'Sección 29', '', 67186), +(35459, 'esES', 'Sección 31', '', 67186), +(35458, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que pueden sostener los jugadores.\n$[!16\nEn dificultad mítica, los cristales del alba están en peligro de Fin de la Luz.$]', 67186), +(35457, 'esES', 'Sección 22', '', 67186), +(35456, 'esES', 'Sección 31', '', 67186), +(35455, 'esES', 'Sección 30', '', 67186), +(35454, 'esES', 'Sección 29', '', 67186), +(35453, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden sostener.\n$[!15\nEn dificultad heroica, los cristales del alba pueden expulsar lágrimas de L\'ura.$]', 67186), +(35452, 'esES', 'Sección 22', '', 67186), +(35451, 'esES', 'Sección 31', '', 67186), +(35450, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que pueden sostener los jugadores.', 67186), +(35449, 'esES', 'Sección 22', '', 67186), +(35448, 'esES', 'Sección 31', '', 67186), +(35447, 'esES', 'Sección 30', '', 67186), +(35446, 'esES', 'Sección 29', '', 67186), +(35445, 'esES', 'Sección 31', '', 67186), +(35444, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que pueden sostener los jugadores.\n$[!16\nEn dificultad mítica, los cristales del alba están en peligro de Fin de la Luz.$]', 67186), +(35443, 'esES', 'Sección 22', '', 67186), +(35442, 'esES', 'Sección 31', '', 67186), +(35441, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que pueden sostener los jugadores.', 67186), +(35440, 'esES', 'Sección 108', '', 67186), +(35439, 'esES', 'Sección 108', '', 67186), +(35438, 'esES', 'Sección 107', '', 67186), +(35435, 'esES', 'Sección 105', '', 67186), +(35434, 'esES', 'Sección 104', '', 67186), +(35418, 'esES', 'Sección 108', '', 67186), +(35373, 'esES', 'Sección 30', '', 67186), +(35371, 'esES', 'Sección 29', '', 67186), +(35366, 'esES', 'Sección 31', '', 67186), +(35361, 'esES', 'Sección 22', '', 67186), +(35360, 'esES', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden sostener.\n$[!15\nEn dificultad heroica, los cristales del alba pueden expulsar lágrimas de L\'ura.$]', 67186), +(35357, 'esES', 'Sección 106', '', 67186), +(35344, 'esES', 'Sección 23', '', 67186), +(35343, 'esES', 'Sección 22', '', 67186), +(35342, 'esES', 'Cristal del ocaso', 'Un fragmento de naaru que se está apagando; tal vez aún sea posible recuperarlo.', 67186), +(35341, 'esES', 'Sección 24', '', 67186), +(35340, 'esES', 'Cristal de la medianoche', 'El fragmento de un naaru oscuro que ya no tiene salvación.', 67186), +(35339, 'esES', 'Sección 19', '', 67186), +(35338, 'esES', 'Sección 18', '', 67186), +(35336, 'esES', 'Sección 16', '', 67186), +(35328, 'esES', 'Sección 11', '', 67186), +(35327, 'esES', 'Sección 10', '', 67186), +(35326, 'esES', 'Sección 9', '', 67186), +(35325, 'esES', 'Sección 8', '$[!15\nEn dificultad heroica, el número de notas aumenta con cada melodía.$]', 67186), +(35324, 'esES', 'Sección 11', '', 67186), +(35319, 'esES', 'Sección 80', '', 67186), +(35317, 'esES', 'Sección 69', '', 67186), +(35316, 'esES', 'Sección 70', '', 67186), +(35315, 'esES', 'Sección 76', '', 67186), +(35314, 'esES', 'Sección 67', '$[!15,16\nEn dificultad heroica o superior, Galvanizar libera una Corriente de exterminio.$]', 67186), +(35311, 'esES', 'Sección 69', '', 67186), +(35309, 'esES', 'Sección 74', '', 67186), +(35274, 'esES', 'Sección 70', '$[!16\nEn dificultad mítica, Fisión Cósmica alcanza el estado de Criticidad.$]', 67186), +(35273, 'esES', 'Sección 69', '', 67186), +(35272, 'esES', 'Sección 67', '', 67186), +(35131, 'esES', 'Sección 13', '', 67186), +(35106, 'esES', 'Sección 67', '', 67186), +(35068, 'esES', 'Sección 64', '', 67186), +(35067, 'esES', 'Sección 63', '', 67186), +(35041, 'esES', 'Sección 35', '', 67186), +(35040, 'esES', 'Sección 51', '', 67186), +(35038, 'esES', 'Sección 14', '', 67186), +(35037, 'esES', 'Sección 14', '', 67186), +(35036, 'esES', 'Intermedio: Eclipse total', 'Contempla cómo se fractura y se desvanece la Luz.', 67186), +(34847, 'esES', 'Sección 11', '', 67186), +(34846, 'esES', 'Sección 10', '', 67186), +(34845, 'esES', 'Sección 9', '', 67186), +(34844, 'esES', 'Sección 8', '', 67186), +(34474, 'esES', 'Sección 44', '', 67186), +(34456, 'esES', 'Sección 45', '', 67186), +(34450, 'esES', 'Sección 46', '', 67186), +(34243, 'esES', 'Sección 14', '', 67186), +(34242, 'esES', 'Sección 14', '', 67186), +(34001, 'esES', 'Sección 38', '', 67186), +(34000, 'esES', 'Sección 35', '', 67186), +(33990, 'esES', 'Sección 32', '', 67186), +(33989, 'esES', 'Sección 32', '', 67186), +(33983, 'esES', 'Sección 23', '', 67186), +(33982, 'esES', 'Sección 22', '', 67186), +(33981, 'esES', 'Cristal del ocaso', 'Un fragmento de naaru que se está apagando; tal vez aún sea posible recuperarlo.', 67186), +(33975, 'esES', 'Sección 25', '', 67186), +(33924, 'esES', 'Sección 24', '', 67186), +(33742, 'esES', 'Cristal de la medianoche', 'El fragmento de un naaru oscuro que ya no tiene salvación.', 67186), +(33741, 'esES', 'Sección 19', '', 67186), +(33740, 'esES', 'Sección 15', '', 67186), +(33739, 'esES', 'Sección 18', '', 67186), +(33738, 'esES', 'Matriz de eliminación', '', 67186), +(33737, 'esES', 'Sección 16', '', 67186), +(33640, 'esES', 'Sección 12', '', 67186), +(33638, 'esES', 'Fase Dos: El reactor oscuro', 'Adéntrate en el motor de la desolación.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Sección 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='esES'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='esES'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'esES', '¡Saludos!\n\n¡Contempla las maravillas de este dominio rebosante de ABUNDANCIA GLORIOSA! ¡Se expande, se hincha, rechaza toda contención!\n\nTu devoción a mi divino yo merece un detallito. ¡Esta vez, en forma de abundancia sin alear!\n\nY toma nota: a partir de ahora aparecerán ciertas ofrendas, como la vitalidad fundida, en otros proveedores. Puede que los encuentres si tus pasos te llevan cerca de las Profundidades de Zul\'Aman.\n\nTe deseo las mejores cosechas,\n\n-Dundun, loa de la abundancia', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='esES'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'esES', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='esES'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'esES', 'Academia Algeth\'ar', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'esES', 'Tanque triturador de alto rendimiento', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3009, 'esES', 'Tanque triturador especulativo', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3008, 'esES', 'Tanque triturador verde rentable', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3007, 'esES', 'Tanque triturador de gran fiabilidad', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3006, 'esES', 'Mecatraje de amatista', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3005, 'esES', 'Caminamuerte cerúleo', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(2535, 'esES', 'Lince marcado por el Vacío', '|cFFFFD200Botín:|r Bolsa de cultor confiscada', 'La doma de linces es una práctica que los arathi llevan años perfeccionando. Aunque los cultores del Ocaso mantienen la devoción a su causa, hay algunos que siguen transmitiendo la tradición.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='esES'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'esES', 'Pesca peces con Pescadores del abismo', 'Habla con el buzo profundo Je\'ju en la costa de las Profundidades de Zul\'Aman para empezar a pescar.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'esES', '', 67186), +(158259, 'esES', '', 67186), +(158261, 'esES', '', 67186), +(156069, 'esES', 'Requiere el logro:|n\"Pescadores del abismo: pesca en el All Blue\".', 67186), +(151169, 'esES', 'Requiere el logro:|nPescadores del abismo: ídolo del abismo', 67186), +(151168, 'esES', 'Requiere el logro:|nPescadores del abismo: red de hilo triple', 67186), +(151167, 'esES', 'Requiere el logro:|nPescadores del abismo: red de los bajíos', 67186), +(151166, 'esES', 'Requiere el logro: Pescadores del abismo: torreta de arpones nucleovacuo', 67186), +(151165, 'esES', 'Requiere el logro: Pescadores del abismo: cañón de arpones pesado', 67186), +(151161, 'esES', 'Requiere el logro:|nPescadores del abismo: aletas de zanja de Pahk', 67186), +(151160, 'esES', 'Requiere el logro:|nPescadores del abismo: grasa de lo profundo', 67186), +(151159, 'esES', 'Requiere el logro:|nPescadores del abismo: juntas reforzadas', 67186), +(151158, 'esES', 'Requiere el logro:|nPescadores del abismo: bombona de respiración de Nalorakk', 67186), +(151157, 'esES', 'Requiere el logro:|nPescadores del abismo: bombona probada en lo profundo', 67186), +(151155, 'esES', 'Requiere el logro:|nPescadores del abismo: bombona usada de buzo profundo', 67186), +(155979, 'esES', '', 67186), +(157695, 'esES', 'Solo disponible en profundidades de nivel 11.', 67186), +(157666, 'esES', '', 67186), +(157603, 'esES', 'Se desbloquea progresando en el viaje de explorador de profundidades de la temporada 1.', 67186), +(154160, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154159, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154158, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154157, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154156, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154155, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154154, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154153, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154152, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(154151, 'esES', 'Has conseguido todas las transfiguraciones que contiene este alijo.', 67186), +(157668, 'esES', 'No tienes una silla de montar perdida en el tiempo. No puedes comprar este objeto.', 67186), +(155203, 'esES', '', 67186), +(155192, 'esES', '', 67186), +(155185, 'esES', '', 67186), +(154642, 'esES', '', 67186), +(156525, 'esES', '', 67186), +(156524, 'esES', '', 67186), +(151196, 'esES', '', 67186), +(157003, 'esES', '', 67186), +(157002, 'esES', '', 67186), +(156957, 'esES', '', 67186), +(156933, 'esES', '', 67186), +(151162, 'esES', 'Requiere el logro:|nPescadores del abismo: carnada de fececillo', 67186), +(156816, 'esES', '', 67186), +(154472, 'esES', 'Requiere el logro:|nPescadores del abismo: monóculo presurizado', 67186), +(151164, 'esES', 'Requiere el logro:|nPescadores del abismo: carne de rayatinieblas', 67186), +(151163, 'esES', 'Requiere el logro:|nPescadores del abismo: cebo de plecoaleta', 67186), +(142975, 'esES', 'Ahora mismo no puedes obtener 10 blasones del alba de mito.', 67186), +(156592, 'esES', '', 67186), +(156591, 'esES', '', 67186), +(156536, 'esES', '', 67186), +(156537, 'esES', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'esES', 'Pescadores del abismo', 67186), +(3389, 'esES', 'Asalto al pilón: Cataratas de Scintilas', 67186), +(3308, 'esES', 'Falla de Vacío: Playa del Ocaso', 67186), +(3291, 'esES', 'Vacío de poder', 67186), +(3280, 'esES', 'Puerta incontrolable', 67186), +(3251, 'esES', 'Ritual del Vacío: Pardo', 67186), +(3245, 'esES', 'Dobla la zozobra', 67186), +(3234, 'esES', 'Reliquias profanadas de los Juncos', 67186), +(3233, 'esES', 'Mientras nos recuperamos', 67186), +(3229, 'esES', 'Isla Zancavacío', 67186), +(3209, 'esES', '[DNT] Example Scenario', 67186), +(3206, 'esES', 'Plantilla de escenario', 67186), +(3180, 'esES', 'Un ritual reforzado', 67186), +(3174, 'esES', 'Incursión del Vacío', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'esES', 'Atrapa organismos acuáticos y descubre tesoros en las Profundidades de Zul\'Aman.', 'Pescadores del abismo', 67186), +(16090, 'esES', '', 'Fase de búsqueda', 67186), +(16088, 'esES', '', 'Fase de escondimiento', 67186), +(16441, 'esES', 'Consigue chispas Arcanas de los nagas y de sus sifones, y deposita las chispas en los pilones.', 'Activando los pilones', 67186), +(16376, 'esES', 'Derrota al comandante domanaar.', 'Quiebra al dalle', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'esES', '', '', 67186), +(58555, 'esES', '', '', 67186), +(58554, 'esES', '', '', 67186), +(58553, 'esES', '', '', 67186), +(58545, 'esES', '', '', 67186), +(58544, 'esES', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'esES', 'Estrobo algariano', '', 67186), +(8555, 'esES', '+$k1 p. de estadística principal y +$k2 p. de armadura', '', 67186), +(8554, 'esES', '+$k1 p. de estadística principal y +$k2 p. de armadura', '', 67186), +(5001, 'esES', 'Punta de hierro fantasma', '', 67186), +(4216, 'esES', 'Punta de pirium', '', 67186), +(4215, 'esES', 'Punta de elementium', '', 67186), +(3748, 'esES', 'Pincho de titanio', '', 67186), +(2714, 'esES', 'Punta de acero vil', '', 67186), +(1704, 'esES', 'Punta de torio', '', 67186), +(463, 'esES', 'Punta de mitril', '', 67186), +(43, 'esES', 'Punta de hierro', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'esES', 'Aturdido', 67186), +(1253377, 'esES', 'Ascenso meteórico', 67186), +(1270444, 'esES', 'Ira desvinculada', 67186), +(441587, 'esES', 'Nubosidad', 67186), +(441429, 'esES', 'Nubosidad', 67186), +(1298446, 'esES', 'Vínculo irrompible', 67186), +(1223323, 'esES', 'Vínculo irrompible', 67186), +(1293502, 'esES', '[DNT] Fused Vitality', 67186), +(1270491, 'esES', 'Devoción profana', 67186), +(1241077, 'esES', 'Guadaña purulenta', 67186), +(458128, 'esES', 'Guadaña purulenta', 67186), +(363916, 'esES', 'Escamas obsidiana', 67186), +(353319, 'esES', 'Tejedor de paz', 67186), +(125174, 'esES', 'Toque de karma', 67186), +(122470, 'esES', 'Toque de karma', 67186), +(23920, 'esES', 'Reflejo de hechizos', 67186), +(1237942, 'esES', 'Carnada', 67186), +(1235216, 'esES', 'Percepción de Midnight', 67186), +(1225245, 'esES', 'Enjambrista sin\'dorei', 67186), +(1295986, 'esES', 'Brillo de Lindormi', 67186), +(1278156, 'esES', 'Guía de Lindormi', 67186), +(1298074, 'esES', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'esES', '', 67186), +(390260, 'esES', '', 67186), +(1297413, 'esES', 'Esqueletos de provocación', 67186), +(149981, 'esES', 'Esqueletos de provocación', 67186), +(1289789, 'esES', 'Rostro de batalla', 67186), +(1283168, 'esES', 'Combinar fragmentos del Vacío ascendiente', 67186), +(1282778, 'esES', 'Núcleo de Vacío ascendiente', 67186), +(1264876, 'esES', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'esES', 'Residuo espectral', 67186), +(447444, 'esES', 'Falla entrópica', 67186), +(210824, 'esES', 'Toque de los magi', 67186), +(1280123, 'esES', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'esES', 'Tanque triturador especulativo', 67186), +(1296759, 'esES', 'Tanque triturador de alto rendimiento', 67186), +(1296758, 'esES', 'Tanque triturador verde rentable', 67186), +(1296756, 'esES', 'Tanque triturador de gran fiabilidad', 67186), +(1296734, 'esES', 'Mecatraje de amatista', 67186), +(1296731, 'esES', 'Caminamuerte cerúleo', 67186), +(466930, 'esES', 'Flecha negra', 67186), +(1291739, 'esES', 'Bendición malévola', 67186), +(1281946, 'esES', 'Pescador del abismo', 67186), +(1270634, 'esES', 'Desviador de desbordamiento', 67186), +(1270085, 'esES', 'Resguardo lúgubre', 67186), +(1270079, 'esES', 'Resguardo lúgubre', 67186), +(1258411, 'esES', 'Imitación de Khadgar de Kryenna', 67186), +(1258410, 'esES', 'Imitación de Khadgar de Kryenna', 67186), +(1258336, 'esES', 'Advertencia final', 67186), +(1257809, 'esES', 'Imitación de Khadgar de Kryenna', 67186), +(1257729, 'esES', 'Reanimación', 67186), +(1257728, 'esES', 'Reanimación', 67186), +(1257716, 'esES', 'Reanimación', 67186), +(1257505, 'esES', 'Resguardo lúgubre', 67186), +(1256189, 'esES', 'Pescador del abismo', 67186), +(1255966, 'esES', 'Regenerando', 67186), +(1253337, 'esES', 'Imitación de Khadgar de Kryenna', 67186), +(1253336, 'esES', 'Imitación de Khadgar de Kryenna', 67186), +(1253194, 'esES', 'Medidas ingeniosas', 67186), +(1253193, 'esES', 'Medidas ingeniosas', 67186), +(1253185, 'esES', 'Medidas ingeniosas', 67186), +(1253064, 'esES', 'Pescador del abismo', 67186), +(1252431, 'esES', 'Estallido de relámpagos (desatados)', 67186), +(1241032, 'esES', 'Advertencia final', 67186), +(1241023, 'esES', 'Advertencia final', 67186), +(1235076, 'esES', 'Medidas ingeniosas', 67186), +(1235075, 'esES', 'Medidas ingeniosas', 67186), +(1235072, 'esES', 'Medidas ingeniosas', 67186), +(1235067, 'esES', 'Medidas ingeniosas', 67186), +(1235066, 'esES', 'Medidas ingeniosas', 67186), +(1235065, 'esES', 'Medidas ingeniosas', 67186), +(1235037, 'esES', 'Medidas ingeniosas', 67186), +(1233865, 'esES', 'Aureola nula', 67186), +(1228865, 'esES', 'Lince marcado por el Vacío', 67186), +(1225598, 'esES', 'Pescador del abismo', 67186), +(1225322, 'esES', 'Bosque Canción Eterna', 67186), +(1225281, 'esES', 'Luminileta delicado', 67186), +(1225277, 'esES', 'Pecicanto restaurado', 67186), +(1225273, 'esES', 'Pulpo ominoso', 67186), +(1225272, 'esES', 'Pez espinoso centella', 67186), +(444803, 'esES', 'Celacanto despierto', 67186), +(1250759, 'esES', 'Mota oscura', 67186), +(1276894, 'esES', 'Transmutar núcleo de Vacío elemental', 67186), +(1296448, 'esES', 'Salto temerario', 67186), +(472053, 'esES', 'Salto temerario', 67186), +(1296214, 'esES', 'Matriz del Vacío galáctica', 67186), +(1296205, 'esES', 'Triplicar', 67186), +(1296169, 'esES', 'Nube tormentosa', 67186), +(1296168, 'esES', 'Nube tormentosa', 67186), +(1291767, 'esES', 'Lluvia de meteoritos', 67186), +(1296406, 'esES', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'esES', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'esES', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'esES', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'esES', 'Brillo de Lindormi', 67186), +(1265971, 'esES', 'Armamentos profanos', 67186), +(444769, 'esES', 'Muerte próxima', 67186), +(1256191, 'esES', 'Terminar buceo', 67186), +(1272821, 'esES', 'Sabiduría de la muralla', 67186), +(1244331, 'esES', 'Floreterna', 67186), +(441845, 'esES', 'Directo al corazón', 67186), +(243435, 'esES', 'Brebaje reconstituyente', 67186), +(221562, 'esES', 'Asfixiar', 67186), +(205630, 'esES', 'Agarre de Illidan', 67186), +(198158, 'esES', 'Invisibilidad en masa', 67186), +(108194, 'esES', 'Asfixiar', 67186), +(1291860, 'esES', 'Alimentos y bebidas', 67186), +(1291859, 'esES', 'Alimentos y bebidas', 67186), +(1291858, 'esES', 'Alimentos y bebidas', 67186), +(1291857, 'esES', 'Alimentos y bebidas', 67186), +(1291856, 'esES', 'Alimentos y bebidas', 67186), +(1291855, 'esES', 'Alimentos y bebidas', 67186), +(1291854, 'esES', 'Alimentos y bebidas', 67186), +(1291853, 'esES', 'Alimentos y bebidas', 67186), +(1291852, 'esES', 'Alimentos y bebidas', 67186), +(1291851, 'esES', 'Alimentos y bebidas', 67186), +(1291850, 'esES', 'Alimentos y bebidas', 67186), +(1291849, 'esES', 'Alimentos y bebidas', 67186), +(1291848, 'esES', 'Comida', 67186), +(1291847, 'esES', 'Comida', 67186), +(1291846, 'esES', 'Comida', 67186), +(1291845, 'esES', 'Comida', 67186), +(1291844, 'esES', 'Comida', 67186), +(1291843, 'esES', 'Comida', 67186), +(1291842, 'esES', 'Comida', 67186), +(1291841, 'esES', 'Comida', 67186), +(1291840, 'esES', 'Comida', 67186), +(1291839, 'esES', 'Comida', 67186), +(1291838, 'esES', 'Comida', 67186), +(1291837, 'esES', 'Comida', 67186), +(1291831, 'esES', 'Bebida', 67186), +(1291828, 'esES', 'Comida', 67186), +(1291827, 'esES', 'Comida', 67186), +(1291826, 'esES', 'Comida', 67186), +(1291825, 'esES', 'Comida', 67186), +(1291824, 'esES', 'Comida', 67186), +(1291822, 'esES', 'Comida', 67186), +(1291791, 'esES', 'Bebida', 67186), +(1290929, 'esES', 'Beber', 67186), +(1290926, 'esES', 'Comida', 67186), +(1290925, 'esES', 'Comida', 67186), +(1289221, 'esES', 'Recompensa de guardián de la Luz', 67186), +(1286537, 'esES', 'Alimentos y bebidas', 67186), +(1286536, 'esES', 'Bebida', 67186), +(1286535, 'esES', 'Comida', 67186), +(1282100, 'esES', 'Banco animado', 67186), +(1282018, 'esES', 'Banco animado', 67186), +(1277461, 'esES', 'Bebida', 67186), +(1269922, 'esES', 'Comida', 67186), +(1269921, 'esES', 'Comida', 67186), +(1269920, 'esES', 'Comida', 67186), +(1269919, 'esES', 'Bebida', 67186), +(1269918, 'esES', 'Bebida', 67186), +(1269917, 'esES', 'Alimentos y bebidas', 67186), +(1269916, 'esES', 'Alimentos y bebidas', 67186), +(1232065, 'esES', 'Alimentos y bebidas', 67186), +(1295592, 'esES', '[DNT] Clear Voidspire', 67186), +(1244341, 'esES', 'Floreterna', 67186), +(1262378, 'esES', 'Corona de ébano de subyugación', 67186), +(1262377, 'esES', 'Corona de ébano de subyugación', 67186), +(1262376, 'esES', 'Corona de ébano de subyugación', 67186), +(1262365, 'esES', 'Mandato de muerte sacra', 67186), +(1262364, 'esES', 'Mandato de muerte sacra', 67186), +(1262359, 'esES', 'Mandato de muerte sacra', 67186), +(1248931, 'esES', 'Corona de ébano de subyugación', 67186), +(1248927, 'esES', 'Mandato de muerte sacra', 67186), +(1277796, 'esES', 'Anular magia', 67186), +(1256862, 'esES', 'Flecha antimagia', 67186), +(1256861, 'esES', 'Salto disipador', 67186), +(1256860, 'esES', 'Foco disipador', 67186), +(1256010, 'esES', 'Campo de invalidación', 67186), +(1295508, 'esES', 'Aprendiendo', 67186), +(1295497, 'esES', 'Nerubiano', 67186), +(1295486, 'esES', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'esES', 'Plegaria oscura', 67186), +(1243616, 'esES', 'Esencia del Vacío inestable', 67186), +(1243615, 'esES', 'Esencia del Vacío inestable', 67186), +(1243613, 'esES', 'Esencia del Vacío inestable', 67186), +(1243605, 'esES', 'Esencia del Vacío inestable', 67186), +(1243602, 'esES', 'Esencia del Vacío inestable', 67186), +(1243588, 'esES', 'Esencia del Vacío inestable', 67186), +(1243586, 'esES', 'Esencia del Vacío inestable', 67186), +(1257701, 'esES', 'Desgarramiento abrasador', 67186), +(444088, 'esES', 'Consumir llama', 67186), +(1295319, 'esES', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'esES', 'Disonancia', 67186), +(1295278, 'esES', 'Objetivo de Frenesí aplastante', 67186), +(1295243, 'esES', 'Ráfaga abisal', 67186), +(1295237, 'esES', 'Ráfaga abisal', 67186), +(1226037, 'esES', 'Trinchar carne', 67186), +(442615, 'esES', 'Trinchar carne', 67186), +(1295194, 'esES', '[DNT] Cancel Aura', 67186), +(1241218, 'esES', '[DNT] Vision of Self', 67186), +(1294288, 'esES', 'Fuerza en las Sombras', 67186), +(1286830, 'esES', 'Marcar corcho de pesca - Desaparición', 67186), +(1236092, 'esES', 'Encantar herramienta: Destreza sin\'dorei', 67186), +(1293613, 'esES', 'Pesca de pescador del abismo', 67186), +(1286820, 'esES', 'Pesca de pescador del abismo', 67186), +(1286703, 'esES', 'Pesca de pescador del abismo', 67186), +(1253159, 'esES', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'esES', 'Abrir el alijo', 67186), +(1243683, 'esES', 'Cúmulo glorioso de blasones del alba de mito', 67186), +(190784, 'esES', 'Corcel divino', 67186), +(1292124, 'esES', '[DNT] Material Creation - Health', 67186), +(1266413, 'esES', 'Quemadura del Vacío', 67186), +(1244345, 'esES', 'Quemadura de la Luz', 67186), +(1231327, 'esES', 'Vacío de consunción', 67186), +(436358, 'esES', 'Demoler', 67186), +(1292071, 'esES', 'Falange', 67186), +(1294776, 'esES', 'Mota de sol resplandeciente', 67186), +(1273357, 'esES', 'Mota de sol resplandeciente', 67186), +(1294727, 'esES', 'Bien alimentado', 67186), +(1294726, 'esES', 'Asar malvavisco', 67186), +(1294720, 'esES', 'Disparar', 67186), +(1294703, 'esES', 'Disparar', 67186), +(1294669, 'esES', 'Cargar', 67186), +(1294633, 'esES', 'Flema de Fuego', 67186), +(1294563, 'esES', 'Escudo roto', 67186), +(1277795, 'esES', 'Anular magia', 67186), +(1272179, 'esES', 'Pulso excentromágico - Sin comprar', 67186), +(1269655, 'esES', 'Sigilo', 67186), +(1269654, 'esES', 'Centinela de relojería', 67186), +(1269650, 'esES', 'Salto disipador', 67186), +(1269641, 'esES', 'Camino de falla', 67186), +(1269640, 'esES', 'Campo de invalidación', 67186), +(1264545, 'esES', 'Cambiar', 67186), +(1259647, 'esES', 'P3RR0 GU4RD1ÁN', 67186), +(1258362, 'esES', 'Trampa: canto de pájaro', 67186), +(1256009, 'esES', 'Anular magia', 67186), +(1251813, 'esES', 'Pavor persistente', 67186), +(1294779, 'esES', 'DNT', 67186), +(1294759, 'esES', 'DNT', 67186), +(1294752, 'esES', 'Sinfonía lúgubre', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'esES', '', 67186), +(37073, 'esES', '', 67186), +(37072, 'esES', '', 67186), +(37065, 'esES', '', 67186), +(37064, 'esES', '', 67186), +(37063, 'esES', '', 67186), +(37050, 'esES', '', 67186), +(37049, 'esES', '', 67186), +(37048, 'esES', '', 67186), +(36911, 'esES', '', 67186), +(35166, 'esES', '', 67186), +(35165, 'esES', '', 67186), +(35164, 'esES', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'esES', 'Multifabricación meticulosa', '', 'Mejoras tus matrices de encantamiento, lo que aumenta tu probabilidad de producir objetos adicionales al fabricar ilusiones o consumibles. Además, obtendrás +$ev1 p. de $en1 por cada punto en esta especialización.', 67186), +(137685, 'esES', '', '', 'Multifabricación te otorga hasta un +$ev1% de objetos adicionales al fabricar consumibles.', 67186), +(137681, 'esES', '', '', 'Multifabricación te otorga hasta un +$ev1% de objetos adicionales al fabricar consumibles.', 67186), +(133669, 'esES', '', '', 'Obtienes +$ev1 p. de $en1 al fabricar aleaciones.|n|nDesbloqueas la capacidad de usar componentes de finalización al fabricar aleaciones.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='esES'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'esES', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'esES', 'Atuendo de jardín de morador del bosque', 67186), +(5646, 'esES', 'Vestimentas de buzo profundo', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esES' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'esES', 'Aprendiz Kurgsbane', 67186), +(7698, 'esES', 'Vendedor de Duelo de adornos', 67186), +(7693, 'esES', 'Cofre', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='esES') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='esES') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='esES') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='esES') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='esES') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='esES') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='esES') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='esES') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='esES') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='esES') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='esES') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='esES') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='esES') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='esES') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='esES') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='esES') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='esES') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='esES') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='esES') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='esES') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='esES') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='esES') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='esES') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='esES') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='esES') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='esES') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='esES') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='esES') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='esES') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='esES') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='esES') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='esES') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='esES') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='esES') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='esES') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='esES') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='esES') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='esES') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='esES') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='esES') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='esES') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='esES') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='esES') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='esES') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='esES') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='esES') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='esES') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='esES') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='esES') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='esES') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='esES') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='esES') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='esES') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='esES') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='esES') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='esES') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='esES') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='esES') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='esES') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='esES') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='esES') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='esES') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='esES') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='esES') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='esES') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='esES') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='esES') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='esES') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='esES') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='esES') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='esES') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='esES') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='esES') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='esES') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='esES') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='esES') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='esES') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='esES') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='esES') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='esES') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='esES') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='esES') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='esES') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='esES') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='esES') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='esES') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='esES') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='esES') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='esES') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='esES') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='esES') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='esES') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='esES') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='esES') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='esES') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='esES') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='esES') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='esES') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='esES') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='esES') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='esES') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='esES') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='esES') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='esES') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='esES') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='esES') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='esES') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='esES') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='esES') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='esES') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='esES') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='esES') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='esES') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='esES') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='esES') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='esES') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='esES') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='esES') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='esES') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='esES') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='esES') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='esES') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='esES') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='esES') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='esES') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='esES') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='esES') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='esES') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='esES') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='esES') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='esES') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='esES') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='esES') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='esES') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='esES') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='esES') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='esES') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='esES') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='esES') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='esES') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='esES') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='esES') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='esES') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='esES') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='esES') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='esES') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='esES') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='esES') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='esES') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='esES'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'esES', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'esES', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'esES', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'esES', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'esES', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'esES', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'esES', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'esES', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'esES', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'esES', 0x000000, 67186), +(2534422486, 3918, 'esES', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'esES', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'esES', 0x00243F63325B446576617374616369C3B36E2076696C5D5B5261796F20646520566163C3AD6F5D2061756D656E74616E20756E2024733125207375206461C3B16F2E0D0A0D0A243F63325B446576617374616369C3B36E2076696C5D5B4C612063616E616C697A616369C3B36E20616C20636F6D706C65746F206465205261796F20646520566163C3AD6F5D2067656E65726120243F63325B2473342074726F7A6F7320646520616C6D612061206C6F206C6172676F20646520737520647572616369C3B36E5D5B24733320244C6163756D756C616369C3B36E3A6163756D756C6163696F6E65733B206465204361C3AD64612064656C20566163C3AD6F5D2E0000, 67186), +(3776013982, 1270444, 'esES', 0x00436F6E20636164612074726F7A6F20646520616C6D6120636F6E73756D69646F2C20657869737465206C6120706F736962696C69646164206465207175652052616A617220616C6D61207920426F6D626120646520657370C3AD72697475206F746F726775656E204972612064657376696E63756C6164612C206C6F20717565207065726D69746972C3A120656D706C656172204D6574616D6F72666F7369732073696E2071756520736520616374697665207375207469656D706F2064652072657574696C697A616369C3B36E2C20636F6E20756E6120647572616369C3B36E2064652024733120732E0000, 67186), +(3776013982, 441587, 'esES', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'esES', 0x00416C206163746976617220243F613133373033365B5375626964C3B36E20646520616472656E616C696E615D5B486F6A6173206465206C617320536F6D627261735D2C207365206372656120756E61206E7562652064652068756D6F20647572616E74652024343431353837642E204C6F73206174617175657320646573646520656C20696E746572696F72206465206C61206E7562652064656A616E20646573636F6E6365727461646F732061206C6F73206F626A657469766F732C2065666563746F20717565207365206163756D756C6120686173746120243434313634306D3220244C76657A3A76656365733B2E0D0A0D0A456C2065666563746F20706572736973746520647572616E746520243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D2073206465737075C3A9732064652073616C6972206465206C61206E7562652E0000, 67186), +(3893700160, 445, 'esES', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'esES', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'esES', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'esES', 0x00526563757065726120656C2061636365736F2061204C6C616D61722061206D6173636F74612E0D0A0D0A4D69656E7472617320657374C3A97320656E207A6F6E6173206578746572696F7265732C207475206D6173636F746120696E666C69676520756E2024733125206DC3A173206465206461C3B16F20792072656369626520756E2024733225206D656E6F73206465206461C3B16F2E0000, 67186), +(3776013982, 1223323, 'esES', 0x00526563757065726120656C2061636365736F2061204C6C616D61722061206D6173636F74612E0D0A0D0A4D69656E7472617320657374C3A97320656E207A6F6E6173206578746572696F7265732C207475206D6173636F746120696E666C69676520756E2024733125206DC3A173206465206461C3B16F20792072656369626520756E2024733225206D656E6F73206465206461C3B16F2E0000, 67186), +(3468628616, 1818, 'esES', 0x4F62656C6973636F206F736375726F0041686F72612070756564657320636F6D707261726C6520756E206F62656C6973636F206F736375726F206120526165276E6120656E206C6120436975646164206465204C756E617267656E74612E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'esES', 0x4F62656C6973636F206F736375726F0041686F72612070756564657320636F6D707261726C6520756E206F62656C6973636F206F736375726F206120526165276E6120656E206C6120436975646164206465204C756E617267656E74612E004F62656C6973636F206F736375726F002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'esES', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'esES', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'esES', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'esES', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'esES', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'esES', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'esES', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'esES', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'esES', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'esES', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'esES', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'esES', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'esES', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'esES', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'esES', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'esES', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'esES', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'esES', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'esES', 0x000000, 67186), +(3037505077, 245345, 'esES', 0x5000, 67186), +(3776013982, 1270491, 'esES', 0x000056656C6F6369646164206465206174617175652061756D656E7461646120756E20247731252E00, 67186), +(3776013982, 1241077, 'esES', 0x004163656C65726120756E2024733125207475732070657374657320656E20656C206F626A657469766F2E004C6173207065737465732064652024406175726163617374657220696E666C6967656E207375206461C3B16F20756E2024773125206DC3A1732072C3A17069646F2E00, 67186), +(3776013982, 458128, 'esES', 0x00476F6C70656173206120746F646F73206C6F7320656E656D69676F7320656E20756E20726164696F20646520246131206D206672656E746520612074692C20717565207265636962656E2024733120702E206465206461C3B16F206465206C617320536F6D627261732E204164656DC3A1732C20656C2065666563746F206163656C65726120746F646173207475732070657374657320656E206C6F73206F626A657469766F7320676F6C706561646F732C20717565207265636962656E20656C206461C3B16F20756E202431323431303737733125206DC3A173206465707269736120647572616E7465202431323431303737642E0000, 67186), +(3899321669, 5919, 'esES', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'esES', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'esES', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'esES', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'esES', 0x4E6567726F005265667565727A612074757320657363616D61732070617261207265647563697220756E202473312520656C206461C3B16F20726563696269646F20243F733337343334385B792073616E6172746520647572616E746520243337343334396420756E612063616E7469646164206571756976616C656E746520616C206461C3B16F2070726576656E69646F5D5B5D2E20447572612024642E004461C3B16F20726563696269646F20726564756369646F20756E2024773125243F2465345B20792073616E616369C3B36E206571756976616C656E746520616C206461C3B16F2070726576656E69646F2E5D5B2E5D243F2477323D315B0D0A496E6D756E652061206C6F732065666563746F7320646520696E7465727275706369C3B36E20792073696C656E63696F2E5D5B5D00, 67186), +(4033975491, 589353, 'esES', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'esES', 0x54616C656E746F204A634A0024407370656C6C6465736333353333313300496E6D756E652061206C6F732061746171756573206DC3A16769636F7320792061206C6F732065666563746F73206461C3B1696E6F732E00, 67186), +(3776013982, 125174, 'esES', 0x0024407370656C6C6465736331323234373000546F646F20656C206461C3B16F20726563696269646F206573206162736F726269646F2E0D0A456C20243132323437307334252064656C206461C3B16F206162736F726269646F2073652072656469726967652061206C612076C3AD6374696D6120646520546F717565206465206B61726D612E00, 67186), +(3776013982, 122470, 'esES', 0x004162736F72626520746F646F20656C206461C3B16F20717565207265636962657320647572616E74652024642C20686173746120756E20247333252064652074752073616C7564206DC3A178696D612C207920726564697269676520756E2024733425206465206573612063616E746964616420616C206F626A657469766F20656E656D69676F20636F6D6F206461C3B16F206465204E61747572616C657A6120647572616E74652024313234323830642E00456C206461C3B16F20696E666C696769646F20616C206D6F6E6A65207365207265646972696765206120746920636F6D6F206461C3B16F206465204E61747572616C657A6120647572616E74652024313234323830642E00, 67186), +(3776013982, 23920, 'esES', 0x004C6576616E74617320747520243F63335B65736375646F5D5B61726D615D2C206C6F20717565207465207065726D697465207265666C656A617220243F613231333931355B6C6F73207072C3B378696D6F73202432313339313573332068656368697A6F7320717565207365206C616E63656E5D5B656C207072696D65722068656368697A6F20717565207365206C616E63655D20736F62726520746920792072656475636520756E202433383533393173312520656C206461C3B16F206DC3A16769636F20717565207265636962657320647572616E74652024642E00243F613138383637325B5265666C656A616E646F20746F646F73206C6F732068656368697A6F7320717565207465206C616E63656E2E5D5B5265666C656A6120756E2068656368697A6F206C616E7A61646F20636F6E7472612074692E5D00, 67186), +(1274215428, 190484, 'esES', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'esES', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'esES', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'esES', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'esES', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'esES', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'esES', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'esES', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'esES', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'esES', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'esES', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'esES', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'esES', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'esES', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'esES', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'esES', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'esES', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'esES', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'esES', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'esES', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'esES', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'esES', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'esES', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'esES', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'esES', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'esES', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'esES', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'esES', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'esES', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'esES', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'esES', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'esES', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'esES', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'esES', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'esES', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'esES', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'esES', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'esES', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'esES', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'esES', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'esES', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'esES', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'esES', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'esES', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'esES', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'esES', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'esES', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'esES', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'esES', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'esES', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'esES', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'esES', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'esES', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'esES', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'esES', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'esES', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'esES', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'esES', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'esES', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'esES', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'esES', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'esES', 0x0044657675656C766520656C2070657A20616C20616775612070617261206F6274656E65722024733220702E20656E207065736361206465204D69646E6967687420647572616E74652024642E0D0A0D0A5369207365206C616E7A616E20766172696F732070656365732C20736520707565646520616D706C69617220656C2062656E65666963696F206861737461206C6F7320244D31206D696E2E005065736361206465205175656C275468616C61732061756D656E746164612024773220702E00, 67186), +(3776013982, 1235216, 'esES', 0x0044657675656C766573206C6120637269617475726120616C206167756120706172612061756D656E7461722024733220702E207475207065726365706369C3B36E206465204D69646E6967687420647572616E74652024642E0D0A0D0A5369207365206C616E7A616E20766172696173206372696174757261732C20736520707565646520616D706C69617220656C2062656E65666963696F206861737461206C6F7320244D31206D696E2E005065726365706369C3B36E206465204D69646E696768742061756D656E746164612024773220702E00, 67186), +(3776013982, 1225245, 'esES', 0x00556E61206D657A636C6120646520657363616D6173206361726D6573C3AD6573207920636572C3BA6C6561732061646F726E61206573746520C3A167696C2070657A2E20456C20656E6A616D6272697374612073696E27646F7265692C20756E2070657A20636F6DC3BA6E20656E20656C20426F737175652043616E6369C3B36E20457465726E612C207669616A61206520696E746572616374C3BA6120636F6E206C617320616775617320736567C3BA6E20656C2062616E636F20616C207175652070657274656E6563652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E617320656E206C6173207175652070756564657320656E636F6E747261726C6F3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D205A756C27416D616E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E61732064652070657363613A7C720D0A2D20466C6F722062757262756A65616E74650D0A2D20456E6A616D627265206465204C61204675656E74652064656C20536F6C0D0A2D204F6E6461206465206C6120737570657266696369650000, 67186), +(778162198, 397, 'esES', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'esES', 0x0100, 67186), +(3037505077, 243302, 'esES', 0x0100, 67186), +(261693969, 95549, 'esES', 0xFFFFFFFFFFFFFFFF486163657220736F6E6172206C617320616C61726D6173206DC3A167696361730000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'esES', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'esES', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'esES', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'esES', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'esES', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'esES', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'esES', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'esES', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'esES', 0x50756E7475616369C3B36E206465207065736361646F723A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'esES', 0x436F6D706C657461646F007C634646316566663030C2A15065736361646F7265732064656C20616269736D6F20636F6D706C657461646F2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'esES', 0xFFFFFFFFFFFFFFFF556E697273652061206C6F73207065736361646F7265732064656C20616269736D6F0000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'esES', 0x4275636561646F722061626973616C00436F6D706C657461206576656E746F73206465205065736361646F722064656C20616269736D6F20656E205A756C27416D616E2E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'esES', 0x4275636561646F722061626973616C00436F6D706C657461206576656E746F73206465205065736361646F722064656C20616269736D6F20656E205A756C27416D616E2E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'esES', 0x5065736361646F7265732064656C20616269736D6F004861626C6120636F6E20656C2062757A6F2070726F66756E646F204A65276A7520706172612073756D6572676972746520636F6E206C6F73205065736361646F7265732064656C20616269736D6F2E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'esES', 0x50656C6967726F7320646520C3A96C6974650041686F726120617061726563656E20656E656D69676F7320646520C3A96C69746520706F636F20636F6D756E657320656E206C7567617265732064652072697475616C65732061206C6F732071756520736520707565646520646572726F746172207061726120636F6E736567756972206DC3A17320626F74C3AD6E206465206C6F732072697475616C65732E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'esES', 0x50656C6967726F7320646520C3A96C6974650041686F726120617061726563656E20656E656D69676F7320646520C3A96C69746520706F636F20636F6D756E657320656E206C7567617265732064652072697475616C65732061206C6F732071756520736520707565646520646572726F746172207061726120636F6E736567756972206DC3A17320626F74C3AD6E206465206C6F732072697475616C65732E0050656C6967726F73207065726966C3A97269636F73204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'esES', 0x5472616E73706F72746520636F72727570746F0041686F72612070756564657320636F6D707261726C6520656C2068616C63C3B36E207A616E6375646F20746F6361646F20706F7220656C20566163C3AD6F20616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'esES', 0x5472616E73706F72746520636F72727570746F0041686F72612070756564657320636F6D707261726C6520656C2068616C63C3B36E207A616E6375646F20746F6361646F20706F7220656C20566163C3AD6F20616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E005472616E73706F72746520636F72727570746F002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'esES', 0x53616E74756172696F7320646520706F6465722049490053652070756564656E20656E636F6E74726172206E7565766F732073616E74756172696F732064652062656E65666963696F206DC3A16769636F20656E206C7567617265732064652072697475616C65732E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'esES', 0x53616E74756172696F7320646520706F6465722049490053652070756564656E20656E636F6E74726172206E7565766F732073616E74756172696F732064652062656E65666963696F206DC3A16769636F20656E206C7567617265732064652072697475616C65732E0053616E74756172696F7320646520706F646572204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'esES', 0x5465736F726F732076656E657261646F730041686F72612070756564657320656E636F6E74726172206772616E646573207465736F726F7320656E206C7567617265732064652072697475616C6573207061726120636F6E736567756972206DC3A17320626F74C3AD6E2E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'esES', 0x5465736F726F732076656E657261646F730041686F72612070756564657320656E636F6E74726172206772616E646573207465736F726F7320656E206C7567617265732064652072697475616C6573207061726120636F6E736567756972206DC3A17320626F74C3AD6E2E005465736F726F732076656E657261646F73002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'esES', 0x4D616769612072697475616C3A206F7262657320612074757469706CC3A96E00486179206DC3A1732070726F626162696C696461646573206465207175652061706172657A636120756E206F72626520646520726567656E6572616369C3B36E20616C206D6174617220656E656D69676F7320656E206C7567617265732064652072697475616C65732E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'esES', 0x4D616769612072697475616C3A206F7262657320612074757469706CC3A96E00486179206DC3A1732070726F626162696C696461646573206465207175652061706172657A636120756E206F72626520646520726567656E6572616369C3B36E20616C206D6174617220656E656D69676F7320656E206C7567617265732064652072697475616C65732E004D616769612072697475616C3A2073616E616369C3B36E20494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'esES', 0x416E696D616C6172696F20636F72727570746F0041686F72612070756564657320636F6D707261726C6520756E612073656C65636369C3B36E206465206D6173636F74617320616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'esES', 0x416E696D616C6172696F20636F72727570746F0041686F72612070756564657320636F6D707261726C6520756E612073656C65636369C3B36E206465206D6173636F74617320616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E00416E696D616C6172696F20636F72727570746F002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'esES', 0x53616E74756172696F7320646520706F6465720041686F72612070756564657320656E636F6E747261722073616E74756172696F732064652062656E65666963696F206DC3A16769636F20656E206C7567617265732064652072697475616C65732E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'esES', 0x53616E74756172696F7320646520706F6465720041686F72612070756564657320656E636F6E747261722073616E74756172696F732064652062656E65666963696F206DC3A16769636F20656E206C7567617265732064652072697475616C65732E0053616E74756172696F7320646520706F6465722049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'esES', 0x426F74C3AD6E2061646963696F6E616C0041686F72612070756564657320656E636F6E74726172206DC3A173207465736F726F73207065717565C3B16F7320656E206C7567617265732064652072697475616C65732E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'esES', 0x426F74C3AD6E2061646963696F6E616C0041686F72612070756564657320656E636F6E74726172206DC3A173207465736F726F73207065717565C3B16F7320656E206C7567617265732064652072697475616C65732E005465736F726F73207375656C746F73204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'esES', 0x50656C6967726F73207065726966C3A97269636F730041686F726120617061726563656E20656E656D69676F7320706F636F20636F6D756E657320656E206C7567617265732064652072697475616C65732061206C6F732071756520736520707565646520646572726F746172207061726120636F6E736567756972206DC3A17320626F74C3AD6E206465206C6F732072697475616C65732E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'esES', 0x50656C6967726F73207065726966C3A97269636F730041686F726120617061726563656E20656E656D69676F7320706F636F20636F6D756E657320656E206C7567617265732064652072697475616C65732061206C6F732071756520736520707565646520646572726F746172207061726120636F6E736567756972206DC3A17320626F74C3AD6E206465206C6F732072697475616C65732E0050656C6967726F73207065726966C3A97269636F732049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'esES', 0x4D616769612072697475616C3A20706F74656E636961206465206C6F73206F726265730053616E616369C3B36E206465206F7262657320646520726567656E6572616369C3B36E2061756D656E7461646120756E20313030252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'esES', 0x4D616769612072697475616C3A20706F74656E636961206465206C6F73206F726265730053616E616369C3B36E206465206F7262657320646520726567656E6572616369C3B36E2061756D656E7461646120756E20313030252E004D616769612072697475616C3A2073616E616369C3B36E204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'esES', 0x41646F726E6F732072697475616C65730050756564657320636F6D707261726C652061636365736F72696F73206465206573637269746F72696F20636F6E2074656DC3A1746963612064656C20566163C3AD6F20612052616527616E6120656E206C6120436975646164206465204C756E617267656E74612E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'esES', 0x41646F726E6F732072697475616C65730050756564657320636F6D707261726C652061636365736F72696F73206465206573637269746F72696F20636F6E2074656DC3A1746963612064656C20566163C3AD6F20612052616527616E6120656E206C6120436975646164206465204C756E617267656E74612E004D6F62696C696172696F2072697475616C002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'esES', 0x5465736F726F732072697475616C657300456E206C6F73206C7567617265732064652072697475616C65732073652070756564656E20656E636F6E74726172207065717565C3B16F73207465736F726F732E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'esES', 0x5465736F726F732072697475616C657300456E206C6F73206C7567617265732064652072697475616C65732073652070756564656E20656E636F6E74726172207065717565C3B16F73207465736F726F732E005465736F726F73207375656C746F732049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'esES', 0x4D616769612072697475616C3A206F7262657320646520726567656E6572616369C3B36E005365206D616E696669657374616E206F7262657320646520726567656E6572616369C3B36E20656E206C7567617265732064652072697475616C657320706172612073616E6172746520756E203135252064652074752073616C75642E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'esES', 0x4D616769612072697475616C3A206F7262657320646520726567656E6572616369C3B36E005365206D616E696669657374616E206F7262657320646520726567656E6572616369C3B36E20656E206C7567617265732064652072697475616C657320706172612073616E6172746520756E203135252064652074752073616C75642E004D616769612072697475616C3A2073616E616369C3B36E2049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'esES', 0x56656E74616E61206F6372652064656C206C6167617200000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'esES', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'esES', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'esES', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'esES', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'esES', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'esES', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'esES', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'esES', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'esES', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'esES', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'esES', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'esES', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'esES', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'esES', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'esES', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'esES', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'esES', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'esES', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'esES', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'esES', 0x004C696E646F726D6920726573616C746120612064657465726D696E61646F7320656E656D69676F7320717565206E6F20736F6E206A656665732E20416C20646572726F746172206120746F646F73206C6F7320656E656D69676F732064657374616361646F732C2073652063756D706C6520656C2072657175697369746F206465206C617320667565727A617320656E656D696761732E00416C20646572726F746172206120746F646F73206C6F7320656E656D69676F732064657374616361646F732C2073652063756D706C6520656C2072657175697369746F206465206C617320667565727A617320656E656D696761732E00, 67186), +(3776013982, 1278156, 'esES', 0x004C696E646F726D692073656C656363696F6E61207920646562696C69746120612064657465726D696E61646F7320656E656D69676F7320717565206E6F20736F6E206A656665732C206C6F2071756520696D7069646520717565206C6173206D756572746573206465206C6F73206A756761646F7265732072657374656E20616C207469656D706F2072657374616E74652E0D0A0D0A446572726F746172206120746F646F73206C6F7320656E656D69676F732064657374616361646F73207369727665207061726120636F6D706C6574617220656C2072657175697369746F206465206C617320667565727A617320656E656D696761732E0053616C756420726564756369646120756E20247331252E0D0A4461C3B16F20696E666C696769646F20726564756369646F20756E20247332252E00, 67186), +(368401261, 7367, 'esES', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'esES', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'esES', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'esES', 0xB2790000, 67186), +(3495286709, 24475, 'esES', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'esES', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'esES', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'esES', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'esES', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'esES', 0x000000, 67186), +(3247720076, 42450, 'esES', 0x041E000000, 67186), +(3247720076, 42449, 'esES', 0x041E000000, 67186), +(3247720076, 42448, 'esES', 0x04BE000000, 67186), +(3247720076, 42447, 'esES', 0x04BE000000, 67186), +(3247720076, 42446, 'esES', 0x0700000000, 67186), +(3247720076, 42445, 'esES', 0x0100000000, 67186), +(3247720076, 40690, 'esES', 0x0100000000, 67186), +(2014779773, 207, 'esES', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'esES', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'esES', 0x000000, 67186), +(3776013982, 390260, 'esES', 0x000000, 67186), +(261693969, 95304, 'esES', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F7320646520566163C3AD6F206E6562756C6F736F733A20626C6173C3B36E2064656C20616C6261206465207665746572616E6F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'esES', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F7320646520566163C3AD6F206E6562756C6F736F733A206D61726761206465206C757A2064656C20566163C3AD6F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'esES', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F7320646520566163C3AD6F206E6562756C6F736F733A206F726F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'esES', 0x0000000091000000, 67186), +(1673391669, 145, 'esES', 0x8E000000, 67186), +(2791084701, 142, 'esES', 0x32DC0600, 67186), +(3386943305, 340484, 'esES', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'esES', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'esES', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'esES', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'esES', 0x4475656C6F2064652061646F726E6F73004A7565676120616C206573636F6E6469746520636F6E206D7565626C6573002D205265717569657265204D69646E696768742C206DC3AD6E696D6F206E6976656C2031302E0D0A2D204A634A20696E666F726D616C206E6F206C6574616C2E0D0A2D20536F6C6F20636F6C6120656E20736F6C69746172696F2E20436F6C6120656E20677275706F20646973706F6E69626C6520656E206C612074656A65646F72612064652063616D706F20416D6F6C656E6E652C20656E204C756E617267656E74612E0D0A2D2053692074652070696C6C616E2C20C2A1657374C3A17320667565726121009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'esES', 0x000000, 67186), +(3776013982, 149981, 'esES', 0x000000, 67186), +(3330775162, 1897, 'esES', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'esES', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'esES', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'esES', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'esES', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'esES', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'esES', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'esES', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'esES', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'esES', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'esES', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'esES', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'esES', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'esES', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'esES', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'esES', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'esES', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'esES', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'esES', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'esES', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'esES', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'esES', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'esES', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'esES', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'esES', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'esES', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'esES', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'esES', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'esES', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'esES', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'esES', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'esES', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'esES', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'esES', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'esES', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'esES', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'esES', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'esES', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'esES', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'esES', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'esES', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'esES', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'esES', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'esES', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'esES', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'esES', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'esES', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'esES', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'esES', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'esES', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'esES', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'esES', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'esES', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'esES', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'esES', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'esES', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'esES', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'esES', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'esES', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'esES', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'esES', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'esES', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'esES', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'esES', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'esES', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'esES', 0x52616369616C00416374697661206573746F20706172612061646F7074617220747520666F726D6120646520726F7374726F206375616E646F206E6F20657374C3A973206C616E7A616E646F2068656368697A6F732064726163C3B36E69636F7320636F6D6F20416C69656E746F20646520467565676F20792052656D6F6E7461722E0000, 67186), +(3776013982, 1283168, 'esES', 0x00436F6D62696E612063696E636F20667261676D656E746F7320646520566163C3AD6F20617363656E6469656E74657320656E20756E206EC3BA636C656F20646520566163C3AD6F20617363656E6469656E746520636170617A2064652061756D656E74617220656C206E6976656C206465206F626A65746F20646520756E2061726D61206F206162616C6F72696F2064652068C3A9726F65206F206D69746F20746F74616C6D656E7465206D656A6F7261646F206F20646520666162726963616369C3B36E20636F6E2072616469616E636961206465206DC3A178696D612063616C69646164206465206C612074656D706F726164612031206465204D69646E696768742E0000, 67186), +(3776013982, 1282778, 'esES', 0x0041756D656E746120656C206E6976656C206465206F626A65746F20646520756E2061726D61206F206162616C6F72696F2064652068C3A9726F65206F206D69746F20746F74616C6D656E7465206D656A6F7261646F206F20646520666162726963616369C3B36E20636F6E2072616469616E636961206465206DC3A178696D612063616C69646164206465206C612074656D706F726164612031206465204D69646E696768742E0000, 67186), +(3776013982, 1264876, 'esES', 0x00416C20696E666C69676972206461C3B16F206120756E206F626A657469766F20616665637461646F20706F72204D6163686171756520636F6C6F73616C20636F6E20476F6C7065206D6F7274616C206F2052616A6172207920676F6C70656172206120247332206F626A657469766F73206F206DC3A1732C2073652070726F6C6F6E676120247B2473312F313030307D2E31207320656C2065666563746F206465204D6163686171756520636F6C6F73616C20717565207365206C65732061706C6963612E0000, 67186), +(3776013982, 1255629, 'esES', 0x004C61206573656E636961206C6962657261646120706F74656E6369612061206C6F73206A756761646F7265732C20792061756D656E746120756E20247331252073752076656C6F6369646164206465206D6F76696D69656E746F207920756E202473322520656C206461C3B16F2071756520696E666C6967656E2079206C6F732065666563746F732064652073616E616369C3B36E2079206162736F726369C3B36E20647572616E74652024642E20457374652065666563746F207365206163756D756C612C207065726F206E6F207265696E6963696120737520647572616369C3B36E2E0056656C6F6369646164206465206D6F76696D69656E746F2061756D656E7461646120756E20247331252E0D0A4461C3B16F20696E666C696769646F2061756D656E7461646F20756E20247332252E0D0A45666563746F732064652073616E616369C3B36E2079206162736F726369C3B36E2061756D656E7461646F7320756E20247333252E00, 67186), +(3776013982, 447444, 'esES', 0x00243F63335B4162726520756E612066616C6C615D5B4578706C6F7369C3B36E206D656E74616C206162726520756E612066616C6C6120656E7472C3B3706963615D2071756520706572736967756520616C20656E656D69676F20647572616E74652024343530313933642E204C6F7320656E656D69676F732061207375207061736F207265636962656E20243434373434387331C2A0702E206465206461C3B16F206465206C617320536F6D62726173206361646120243435393331347431C2A073206D69656E7472617320657374C3A96E206120737520616C63616E63652E0000, 67186), +(372281185, 38, 'esES', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'esES', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'esES', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'esES', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'esES', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'esES', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'esES', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'esES', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'esES', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'esES', 0x0024407370656C6C64657363323130373235004578706C6F746172C3A1206520696E666C69676972C3A12024773120702E206465206461C3B16F20417263616E6F20616C2061676F74617273652E00, 67186), +(3386943305, 332898, 'esES', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'esES', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'esES', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'esES', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'esES', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'esES', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'esES', 0x0464000000, 67186), +(3776013982, 1280123, 'esES', 0x000000, 67186), +(3205218938, 54794, 'esES', 0x424353484F5254444154454E4F59454152002532246420646520253124420001000000, 67186), +(3205218938, 22339, 'esES', 0x534C4153485F5441524745545F4D41524B455233002F6D61726361646F726F626A657469766F0001000000, 67186), +(3205218938, 22338, 'esES', 0x534C4153485F5441524745545F4D41524B455232002F746D0001000000, 67186), +(3205218938, 22331, 'esES', 0x534C4153485F574F524C445F4D41524B455233002F6D61726361646F726D756E646F0001000000, 67186), +(3205218938, 22330, 'esES', 0x534C4153485F574F524C445F4D41524B455232002F776D0001000000, 67186), +(3205218938, 22329, 'esES', 0x534C4153485F574F524C445F4D41524B455231002F6D6D0001000000, 67186), +(2202435563, 1276526, 'esES', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'esES', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'esES', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'esES', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'esES', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'esES', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'esES', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'esES', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'esES', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'esES', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'esES', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'esES', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'esES', 0x00496E74656E7461732072656D61746172206120756E206F626A657469766F2068657269646F2C20717565207265636962652024733120702E206465206461C3B16F206465206C617320536F6D62726173207920243436383537326F3120702E206465206461C3B16F206465206C617320536F6D6272617320647572616E74652024343638353732642E20536F6C6F207365207075656465207573617220636F6E747261206F626A657469766F7320636F6E206DC3A17320646520756E20247333252064652073616C7564206F20636F6E206D656E6F7320646520756E20247332252064652073616C75642E0000, 67186), +(261693969, 95553, 'esES', 0xFFFFFFFFFFFFFFFF44656E7369646164206D616E696665737461646100001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'esES', 0xFFFFFFFFFFFFFFFF496E766573746967616369C3B36E206465206F62656C6973636F73206F736375726F730000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'esES', 0xFFFFFFFFFFFFFFFF526564756369722073757320656665637469766F730000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'esES', 0x457363616D61732070657276657273617300004F746F7267616E646F20756E612042656E64696369C3B36E206D616CC3A9766F6C6120616C20617072656E64697A204B7572677362616E652C206C6F207175652061756D656E746120756E2024313238393130327331252073752073616C75642079206461C3B16F2C2079206F746F7267616E646F206C6120666163756C746164206465206C616E7A617220457363616D6173207065727665727361732E00, 67186), +(3776013982, 1281946, 'esES', 0x000000, 67186), +(3776013982, 1270634, 'esES', 0x004475706C69636120656C206461C3B16F20726563696269646F20706F7220756E20656C656D656E74616C20417263616E6F2064656C2050756E746F206465204E65786F3A204D696427417220647572616E746520313520732E00526563696269656E646F20656C20646F626C65206465206461C3B16F2E00, 67186), +(3776013982, 1270085, 'esES', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'esES', 0x00456C207461756D61747572676F20696E74657263616D6269612073752073616C756420706F7220756E2065736375646F206465206162736F726369C3B36E206465206C61206D69736D61206D61676E697475642E20456C2065736375646F20657374616C6C6120616C20656C696D696E61727365207061726120696E666C69676972202431323730303835733120702E206465206461C3B16F206465206C617320536F6D627261732061206C6F73206A756761646F72657320656E20756E20726164696F2064652024313237303038356131206D2E004162736F7262652024773120702E206465206461C3B16F2E0D0A416C20656C696D696E617273652C20696E666C696765202431323730303835733120702E206465206461C3B16F206465206C617320536F6D627261732061206C6F73206A756761646F72657320656E20756E20726164696F2064652024313237303038356131206D2E00, 67186), +(3776013982, 1258411, 'esES', 0x000000, 67186), +(3776013982, 1258410, 'esES', 0x0042656265732070617261206F6274656E657220756E2065666563746F20636F736DC3A97469636F2E004120756E61207665727369C3B36E2064C3A962696C2079206E6F2066756E63696F6E616C206465206C6120657366657261206D61726176696C6C6F7361206E6F206C652061677561726461206DC3A1732071756520737520696E6576697461626C65206469736970616369C3B36E2E00, 67186), +(3776013982, 1258336, 'esES', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'esES', 0x000000, 67186), +(3776013982, 1257729, 'esES', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'esES', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'esES', 0x00456C207461756D61747572676F20636F6D69656E7A61207375207265616E696D616369C3B36E20792072657669766520636F6E20756E2024313235373732387331252064652073752073616C7564206DC3A178696D6120656E206375616E746F20736520636F6D706C657461206C612063616E616C697A616369C3B36E2E005265616E696D616E646F2E205369206C612063616E616C697A616369C3B36E20736520636F6D706C6574612C20656C207461756D61747572676F2072657669766972C3A120636F6E20756E2024313235373732387331252064652073752073616C7564206DC3A178696D612E00, 67186), +(3776013982, 1257505, 'esES', 0x00456C207461756D61747572676F20696E74657263616D6269612073752073616C756420706F7220756E2065736375646F206465206162736F726369C3B36E206571756976616C656E74652061206C61206D69736D612063616E74696461642064652073616C75642E004162736F7262652024773120702E206465206461C3B16F2E00, 67186), +(3776013982, 1256189, 'esES', 0x000000, 67186), +(3776013982, 1255966, 'esES', 0x00456C207461756D61747572676F20726567656E65726120756E20247331252064652073752073616C7564206DC3A178696D6120636164612024743120732E0024733125206465206C612073616C7564206DC3A178696D6120726567656E657261646120636164612024743120732E00, 67186), +(3776013982, 1253337, 'esES', 0x000000, 67186), +(3776013982, 1253336, 'esES', 0x000050726573656E6369616E646F20756E61206375657374696F6E61626C6520696C757369C3B36E206465206C61206265626964612E2E2E00, 67186), +(3776013982, 1253194, 'esES', 0x000063616E616C697A617200, 67186), +(3776013982, 1253193, 'esES', 0x000063616E616C697A617200, 67186), +(3776013982, 1253185, 'esES', 0x000063616E616C697A617200, 67186), +(3776013982, 1253064, 'esES', 0x000000, 67186), +(3776013982, 1252431, 'esES', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'esES', 0x0024407370656C6C646573633132343130323300496E666C696765202431323538333336733120702E206465206461C3B16F20417263616E6F20636164612024743120732E00, 67186), +(3776013982, 1241023, 'esES', 0x005A6F2767726F6E2073652070726F7465676520636F6E20756E61206261727265726120717565206162736F72626520656C206461C3B16F20726563696269646F207920636F6D69656E7A612061206C616E7A617220416476657274656E6369612066696E616C2E204375616E646F207465726D696E6120656C206C616E7A616D69656E746F2C206C61206261727265726120656D6974652070756C736F732071756520696E666C6967656E202431323538333336733120702E206465206461C3B16F20417263616E6F206120746F646F73206C6F73206A756761646F726573206361646120243132343130333274312073206861737461207175652073652064657374727579652E004162736F726269656E646F2024773120702E206465206461C3B16F20726563696269646F2E00, 67186), +(3776013982, 1235076, 'esES', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'esES', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'esES', 0x00456C20416361706172617465736F726F73207265627573636120656E20656C206D6F6E74C3B36E206465207265637572736F73206DC3A1732063657263616E6F20706172612073757374697475697220756E612064652073757320666163756C746164657320706F72206F747261206E756576612E243F44494646387C3F4449464632335B5D5B20536F6C6F20707565646520646973706F6E657220646520756E6120666163756C7461642061206C612076657A2E5D0000, 67186), +(3776013982, 1235067, 'esES', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'esES', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'esES', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'esES', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'esES', 0x00416C6C6572696120636F6C6F636120616C72656465646F7220646520756E206A756761646F7220756E2065736375646F20646520566163C3AD6F20717565206162736F7262652024733120702E2064652073616E616369C3B36E2E2053692024407370656C6C6E616D6531323333383635207365206469736970612C206C61206162736F726369C3B36E2072657374616E74652073616C74612061206F74726F206A756761646F7220616C6561746F72696F2E004162736F7262652024773120702E2064652073616E616369C3B36E2E0D0A0D0A5369207365206469736970612C206C61206162736F726369C3B36E2072657374616E74652073616C746172C3A12061206F74726F206A756761646F722E00, 67186), +(3776013982, 1228865, 'esES', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E00243F6A31675B41756D656E746120756E20246A316725206C612076656C6F636964616420706F72207469657272612E205D5B5D243F6A31665B41756D656E746120756E20246A316625206C612076656C6F6369646164206465207675656C6F2E205D5B5D243F6A31735B41756D656E746120756E20246A317325206C612076656C6F6369646164206465206E61646F2E205D5B5D00, 67186), +(3776013982, 1225598, 'esES', 0x00243F50433135343832385B7C636E4951313A2D205472616A652064652062757A6F2062C3A17369636F7C525D5B5D243F50433135343832395B7C636E4951323A2D205472616A65206465206A756E746173207265666F727A616461737C525D5B5D243F50433135343833305B7C636E4951333A2D205472616A6520636F6E206772617361206465206C6F2070726F66756E646F7C525D5B5D243F50433135343833325B7C636E4951343A2D205472616A6520636F6E20616C65746173206465207A616E6A61206465205061686B7C525D5B5D0D0A2B247731252061206C612076656C6F6369646164206465206E61646F0D0A243F50433135343833365B0D0A7C636E4951313A2D20426F6D626F6E6120646520726573706972616369C3B36E2062C3A1736963617C520D0A24313232343730306D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20426F6D626F6E612075736164612064652062757A6F2070726F66756E646F7C520D0A24313237313631336D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20426F6D626F6E612070726F6261646120656E206C6F2070726F66756E646F7C520D0A24313237313631346D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20426F6D626F6E6120646520726573706972616369C3B36E206465204E616C6F72616B6B7C520D0A24313237313631356D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D204365626F2062C3A17369636F7C520D0A43726961747572617320636F6D756E6573207175652073652070756564656E207065736361720D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D204365626F206465206361726E616461206465206665636563696C6C6F7C520D0A43726961747572617320696E757375616C6573207175652073652070756564656E207065736361720D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D204365626F20646520706C65636F616C6574617C520D0A43726961747572617320706F636F20636F6D756E6573207175652073652070756564656E207065736361720D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D204365626F206465206361726E65206465207261796174696E6965626C61737C520D0A43726961747572617320C3A97069636173207175652073652070756564656E207065736361720D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20526564206465206C6F732062616AC3AD6F737C520D0A5265707461646F7220636F6E2070C3BA6173207920636162616C6C69746F206465206D617220657370696E6F736F0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D205265642064652068696C6F20747269706C657C520D0A546F646173206C617320637269617475726173207065717565C3B161730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D204D6F6EC3B363756C6F20707265737572697A61646F7C520D0A53652070756564656E206465736375627269722072656C69717569617320616E7469677561735D5B5D0D0A00243F50433135343832385B7C636E4951313A2D205472616A652064652062757A6F2062C3A17369636F7C525D5B5D243F50433135343832395B7C636E4951323A2D205472616A65206465206A756E746173207265666F727A616461737C525D5B5D243F50433135343833305B7C636E4951333A2D205472616A6520636F6E206772617361206465206C6F2070726F66756E646F7C525D5B5D243F50433135343833325B7C636E4951343A2D205472616A6520636F6E20616C65746173206465207A616E6A61206465205061686B7C525D5B5D0D0A2B247731252061206C612076656C6F6369646164206465206E61646F0D0A243F50433135343833365B0D0A7C636E4951313A2D20426F6D626F6E6120646520726573706972616369C3B36E2062C3A1736963617C520D0A24313232343730306D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20426F6D626F6E612075736164612064652062757A6F2070726F66756E646F7C520D0A24313237313631336D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20426F6D626F6E612070726F6261646120656E206C6F2070726F66756E646F7C520D0A24313237313631346D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20426F6D626F6E6120646520726573706972616369C3B36E206465204E616C6F72616B6B7C520D0A24313237313631356D3620756E696461646573206465206F78C3AD67656E6F20636F6D6F206DC3A178696D6F0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D204365626F2062C3A17369636F7C520D0A43726961747572617320636F6D756E6573207175652073652070756564656E207065736361720D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D204365626F206465206361726E616461206465206665636563696C6C6F7C520D0A43726961747572617320696E757375616C6573207175652073652070756564656E207065736361720D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D204365626F20646520706C65636F616C6574617C520D0A43726961747572617320706F636F20636F6D756E6573207175652073652070756564656E207065736361720D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D204365626F206465206361726E65206465207261796174696E6965626C61737C520D0A43726961747572617320C3A97069636173207175652073652070756564656E207065736361720D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20526564206465206C6F732062616AC3AD6F737C520D0A5265707461646F7220636F6E2070C3BA6173207920636162616C6C69746F206465206D617220657370696E6F736F0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D205265642064652068696C6F20747269706C657C520D0A546F646173206C617320637269617475726173207065717565C3B161730D0A5D5B5D243F50433100, 67186), +(3776013982, 1225322, 'esES', 0x007C636E475245454E5F464F4E545F434F4C4F523A486162696C69646164207265636F6D656E646164613A7C7220310D0A0D0A537573206167756173207472616E7175696C6173207920736572656E6173206C6120636F6E7669657274656E20656E20756E612075626963616369C3B36E20696465616C207061726120717565206C6F73207065736361646F72657320636F6D69656E63656E2061206578706C6F726172206C6F207175652070756564656E206F667265636572206C61732070726F66756E646964616465732E0D0A0D0A42616E636F7320646520706573636120656E2065737461207A6F6E613A0D0A2D20456E6A616D627265206465204C61204675656E74652064656C20536F6C0D0A2D20466C6F722062757262756A65616E74650D0A2D20456E6A616D62726520646520666C6F7265730D0A2D20566163C3AD6F20766973636F736F0D0A2D2043617267616D656E746F206465736375696461646F0D0A2D205465736F726F73207065726469646F730000, 67186), +(3776013982, 1225281, 'esES', 0x00556E612064C3B363696C20637269617475726120717565207072656669657265206C6173207472616E7175696C617320616775617320646520426F737175652043616E6369C3B36E20457465726E612E2041756E717565206120756E207065736361646F7220636F6DC3BA6E206C6520706172657A63612073656E63696C6C6F2070657363617220656E2065737461732061677561732C20657374652070657A20736F6C6F206C6F20656E636F6E74726172C3A16E206C6F73206DC3A173207065726365707469766F732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E617320656E206C6173207175652070756564657320656E636F6E747261726C6F3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E61732064652070657363613A7C720D0A2D20546F7272656E746520666C6F72656369656E74650000, 67186), +(3776013982, 1225277, 'esES', 0x004C617320616775617320646520486172616E64617220636F6E7469656E656E20756E6F73206D696E6572616C657320C3BA6E69636F73207175652C20616C20617472617665736172206C6173206167616C6C617320646520756E207065636963616E746F207265737461757261646F2C20656D6974656E20756E61206574C3A9726561206D656C6F64C3AD61207375626D6172696E612E20457374652063616E746F20707565646520726573756C74617220616772616461626C65207061726120756E207065736361646F722C207065726F2061687579656E74612061206C6F732064657072656461646F72657320636F6E20737520737574696C2076696272616369C3B36E2E2053692C20706F7220656A656D706C6F2C20756E207465747261207265746F726369646F207365206163657263612064656D61736961646F2C206C617320766962726163696F6E6573207365207675656C76656E206DC3A17320696E65737461626C65732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373130342046657374696E657320646520636F63696E610D0A0D0A457374652070657A20657370656369616C6D656E746520736162726F736F207920706F636F20636F6DC3BA6E20657320756E20696E6772656469656E746520696D706F7274616E746520656E206D7563686173207265636574617320646520636F63696E61206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E617320656E206C6173207175652070756564657320656E636F6E747261726C6F3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E61732064652070657363613A7C720D0A2D20456E6A616D62726520646520666C6F7265730D0A2D20466C6F722062757262756A65616E74650D0A2D20456E6A616D627265206465204C61204675656E74652064656C20536F6C0D0A2D20546F7272656E746520666C6F72656369656E74650000, 67186), +(3776013982, 1225273, 'esES', 0x00556E206861626974616E7465206465206C6120546F726D656E74612064656C20566163C3AD6F20637572696F73616D656E746520646573616772616461626C652E205375732065787472656D6964616465732073652065787469656E64656E206465736465206C6F73206C7567617265732064652070657363612064656C20566163C3AD6F2E20536520747261746120646520756E6120637269617475726120696E67656E696F73612C206173747574612C20696E74656C6967656E74652079206D757920646966C3AD63696C20646520617472617061722070617261206375616C7175696572207065736361646F72207175652073652061747265766120612070657363617220656E206C6120546F726D656E74612064656C20566163C3AD6F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373130342046657374696E657320646520636F63696E610D0A0D0A457374652070657A20657370656369616C6D656E746520736162726F736F207920706F636F20636F6DC3BA6E20657320756E20696E6772656469656E746520696D706F7274616E746520656E206D7563686173207265636574617320646520636F63696E61206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E617320656E206C6173207175652070756564657320656E636F6E747261726C6F3A7C520D0A0D0A2D20546F726D656E74612064656C20566163C3AD6F0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E61732064652070657363613A7C720D0A0D0A2D2056C3B37274696365206F6365C3A16E69636F0D0A2D20566163C3AD6F20766973636F736F0000, 67186), +(3776013982, 1225272, 'esES', 0x00556E2070657A20657370696E6F736F20706C61746561646F207920726563696F2C206375796F2063756572706F206D6F7469766120612070656365732079207065736361646F726573206120637572696F736561722068617374612071756520686163652073616C69722073757320657370696E617320686163696120656C6C6F732E205469656E6520756E20636172C3A16374657220686F73636F20636F6E20746F646F20656C206D756E646F2C207065726F20657320756E612070726573612070726563696164612070617261206375616C7175696572207065736361646F7220656E20636965726E65732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E617320656E206C6173207175652070756564657320656E636F6E747261726C6F3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E61732064652070657363613A7C720D0A2D20466C6F722062757262756A65616E74650D0A2D20456E6A616D627265206465204C61204675656E74652064656C20536F6C0D0A2D20456E6A616D62726520646520666C6F7265730D0A2D20546F7272656E746520666C6F72656369656E74650000, 67186), +(3776013982, 444803, 'esES', 0x00556E612068756D696C6465206372696174757261206475726D69656E74652E204375616E646F206465737069657274612C2073757320657363616D6173206272696C6C616E20636F6E20756E20726573706C616E646F72207265666C656374616E74652061207065736172206465206C61206573636173657A206465206C757A2E20556E61206D616A657374756F7369646164207472616E7175696C61207920756E206F626A657469766F206170726F706961646F2070617261206375616C7175696572207065736361646F7220656E20636965726E65732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A7C720D0A0D0A24407370656C6C69636F6E3434353132372046696C6574652066726573636F0D0A0D0A436F6E206C6120686162696C6964616420656E20636F63696E612C207365206C6520707565646520736163617220756E61206772616E2063616E74696461642064652066696C657465732066726573636F73206120657374652070657A2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5A6F6E617320656E206C6173207175652070756564657320656E636F6E747261726C6F3A7C520D0A0D0A2D20417A6A2D4B616865740D0A2D204F61736973206465204B2761726573680000, 67186), +(3205218938, 56772, 'esES', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C4534005365206F66726563652061797564610001000000, 67186), +(3205218938, 56771, 'esES', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300436F6D706574697469766F0001000000, 67186), +(3205218938, 56770, 'esES', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45320052656C616A61646F0001000000, 67186), +(3205218938, 22337, 'esES', 0x534C4153485F5441524745545F4D41524B455231002F6D6F0001000000, 67186), +(3776013982, 1250759, 'esES', 0x000000, 67186), +(1010104591, 26054, 'esES', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'esES', 0x4172636F206465204C6F616D6D00000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'esES', 0x41706C69717565206F726E616D656E74616C2073696E27646F72656900000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'esES', 0x4CC3A16D7061726120636F6C67616E7465206465206D6563C3A16E69636F206465204D696E61686F6E646100000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'esES', 0x4361666574657261206578707265736F2064652044616C6172616E000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'esES', 0x426C616E64C3B36E2064652064657661737461646F72000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'esES', 0x4661726F6C2064652068696572726F20636F6E206361706572757A6100000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'esES', 0x4661726F6C2068756D65616E7465206465204172726F796F2042726164656E00000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'esES', 0x506F737465206465206C757A206D757920666961626C65206465204D696E61686F6E646100000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'esES', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'esES', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'esES', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'esES', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'esES', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'esES', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'esES', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'esES', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'esES', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'esES', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'esES', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'esES', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'esES', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'esES', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'esES', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'esES', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'esES', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'esES', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'esES', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'esES', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'esES', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'esES', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'esES', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'esES', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'esES', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'esES', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'esES', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'esES', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'esES', 0x00446563696D7573207472616E736D757461206C6F7320667261676D656E746F73207061726120666F726D617220756E206EC3BA636C656F20646520566163C3AD6F20656C656D656E74616C206520696E636F72706F7261726C6F2061206C6120666F726A612064656C20566163C3AD6F20656D657267656E74652E20486163656E2066616C746120247331206EC3BA636C656F7320646520566163C3AD6F20656C656D656E74616C6573207061726120636F6D706C65746172206C6120666F726A612064656C20566163C3AD6F2E0D0A0D0A436F6E747269627563696F6E65732061637475616C65733A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'esES', 0xFFFFFFFFFFFFFFFF556E206EC3BA636C656F20646520566163C3AD6F207072696D6172696F0000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'esES', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'esES', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'esES', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'esES', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'esES', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'esES', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'esES', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'esES', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'esES', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'esES', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'esES', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'esES', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'esES', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'esES', 0x000000, 67186), +(3653642729, 376, 'esES', 0x000000008D000000, 67186), +(1673391669, 141, 'esES', 0x8A000000, 67186), +(2791084701, 138, 'esES', 0x35D30600, 67186), +(2518885667, 13760, 'esES', 0xC035000000000000, 67186), +(3776013982, 1296205, 'esES', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'esES', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'esES', 0xFFFFFFFFFFFFFFFF4173616C746F732064656C20566163C3AD6F3A205A756C27416D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'esES', 0xFFFFFFFFFFFFFFFF4173616C746F732064656C20566163C3AD6F3A20426F737175652043616E6369C3B36E20457465726E6100003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'esES', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'esES', 0x000000, 67186), +(3776013982, 1296168, 'esES', 0x000000, 67186), +(600565378, 665333, 'esES', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'esES', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'esES', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'esES', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'esES', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'esES', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'esES', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'esES', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'esES', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'esES', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'esES', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'esES', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'esES', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'esES', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'esES', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'esES', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'esES', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'esES', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'esES', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'esES', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'esES', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'esES', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'esES', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'esES', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'esES', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'esES', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'esES', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'esES', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'esES', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'esES', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'esES', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'esES', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'esES', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'esES', 0x898200006D670300, 67186), +(3745449290, 8614, 'esES', 0x4C756761722064652072697475616C3A2054726F6E6F2044657374726F7A61646F00536520657374C3A1206C6C6576616E646F2061206361626F20756E2070656C6967726F736F2072697475616C2063657263612E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'esES', 0x000000, 67186), +(2575642838, 765, 'esES', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'esES', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'esES', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'esES', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'esES', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'esES', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'esES', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'esES', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'esES', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'esES', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'esES', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'esES', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'esES', 0x56656E74616E6120656E7472616D61646120636F6E207261C3AD636573000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'esES', 0x43756164726F20224661726F6C2064652043616E6369C3B36E20457465726E61000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'esES', 0x50756572746120656E7472616D61646120636F6E207261C3AD636573000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'esES', 0x50C3A972676F6C612066C3BA6E676963610000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'esES', 0x54617274612064652062617961732073756E74756F736100000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'esES', 0x4D616365746120646520486172616E6461722072C3BA7374696361000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'esES', 0x4372697374616C206361726761646F20646520C3A9746572206772616E64696F736F00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'esES', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'esES', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'esES', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'esES', 0x467B0000, 67186), +(4033975491, 620660, 'esES', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'esES', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'esES', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'esES', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'esES', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'esES', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'esES', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'esES', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'esES', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'esES', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'esES', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'esES', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'esES', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'esES', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'esES', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'esES', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'esES', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'esES', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'esES', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'esES', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'esES', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'esES', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'esES', 0x000000, 67186), +(3776013982, 1295957, 'esES', 0x000000, 67186), +(3776013982, 1295932, 'esES', 0x000000, 67186), +(3776013982, 1295927, 'esES', 0x00416C206173756D697220656C20706170656C2064652074616E717565207061726120747520677275706F2C204C696E646F726D6920726573616C7461206C617320667565727A617320656E656D6967617320646520756E61206D617A6D6F7272612064652070696564726120616E67756C61722E0D0A0D0A4861626C6120636F6E204C696E646F726D692070617261206465736163746976617220657374652065666563746F2E00416C206173756D697220656C20706170656C2064652074616E717565207061726120747520677275706F2C204C696E646F726D6920726573616C7461206C617320667565727A617320656E656D6967617320646520756E61206D617A6D6F7272612064652070696564726120616E67756C61722E0D0A0D0A4861626C6120636F6E204C696E646F726D692070617261206465736163746976617220657374652065666563746F2E00, 67186), +(3776013982, 1265971, 'esES', 0x004C617320666163756C7461646573206C616E7A6164617320706F72206C6F73206A696E6574657320696E666C6967656E20756E2024733125206DC3A173206465206461C3B16F2E243F63335B0D0A0D0A5475206E656372C3B36661676F2079207475206172717565726F2065737175656CC3A97469636F20696E666C6967656E20756E2024733325206DC3A173206465206461C3B16F2C207920747573206E656372C3B36661676F7320696E666572696F7265732C20756E2024733525206DC3A1735D5B5D2E0000, 67186), +(336222293, 22784, 'esES', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'esES', 0x00436164612024733120766563657320717565206C616E7A617320476F6C70652064652061736573696E6F2C206F627469656E6573204D75657274652073C3BA626974612E0D0A0D0A456C2075736F206465204D75657274652073C3BA62697461206163656C657261207475207369677569656E74652046696C6F746F726D656E74612C2071756520676F6C70656120312076657A206DC3A1732028686173746120756E206DC3A178696D6F206465202434343536303675292E204C6120647572616369C3B36E20746F74616C2064652046696C6F746F726D656E7461206E6F20766172C3AD612E0D0A0D0A4D75657274652073C3BA62697461207469656E6520756E20247332252064652070726F626162696C696461646573206465206163746976617220436F736563686172206C6120746F726D656E746120636F6E20756E20247333252064652065666563746976696461642E0000, 67186), +(378810315, 666, 'esES', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'esES', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'esES', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'esES', 0x000000, 67186), +(1181150530, 752881, 'esES', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'esES', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'esES', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'esES', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'esES', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'esES', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'esES', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'esES', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'esES', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'esES', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'esES', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'esES', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'esES', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'esES', 0xE1570500E0570500, 67186), +(736158310, 43619, 'esES', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'esES', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'esES', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'esES', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'esES', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'esES', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'esES', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'esES', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'esES', 0x00243F63315B496E766F6361722061204E69757A616F2C20656C2042756579204E6567726F5D5B43C3A96E69745D206861636520717565207365206C616E63656E2024733120416C7576696F6E657320646520676F6C70657320616C206C616E7A617220243F63315B416C69656E746F20646520467565676F5D5B5061746164612064656C20736F6C206E616369656E74652079205061746164612067697261746F726961206465206C61206772756C6C615D2E0000, 67186), +(3776013982, 1244331, 'esES', 0x00456C2024733225206465206C6120666C6F72616369C3B36E2066696E616C20646520466C6F7220646520766964612073616E61206120756E206DC3A178696D6F2064652024733320616C6961646F732068657269646F7320656E20756E20726164696F2064652024313234343334316131206D2E0000, 67186), +(3776013982, 441845, 'esES', 0x00243F63325B456C206461C3B16F2064652054726974757261722C20466C6167656C6F207920417261C3B1617A6F2061756D656E746120756E20247331252C20792073752070726F626162696C6964616420646520676F6C7065206372C3AD7469636F2C20756E20247333252E5D5B456C206461C3B16F2064652044657374726F7A61722061756D656E746120756E202473342520792073752070726F626162696C6964616420646520676F6C7065206372C3AD7469636F2C20756E20247335252E5D0D0A0D0A243F63335B44657374726F7A61722074652073616E6120756E2024343538373234733125206465206C612073616C7564206DC3A178696D612E5D5B5D0000, 67186), +(3205218938, 57068, 'esES', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00C2BF436F6D7072617220746F646F73206C6F73206F626A65746F73202825732920706F722025733F0003000000, 67186), +(3205218938, 23377, 'esES', 0x5343454E4152494F5F53544147455F53544154555300466173652025642064652025640001000000, 67186), +(3205218938, 22841, 'esES', 0x5343454E4152494F5F535441474500466173652025640001000000, 67186), +(3745449290, 8459, 'esES', 0x507265736100417374616C6F72204A75726173616E677265206E656365736974612074752061797564612070617261206461722063617A61206120616D656E617A6173206D6F7274616C65732E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'esES', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'esES', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'esES', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'esES', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'esES', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'esES', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'esES', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'esES', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'esES', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'esES', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'esES', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'esES', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'esES', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'esES', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'esES', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'esES', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'esES', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'esES', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'esES', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'esES', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'esES', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'esES', 0x5665726D69732061626973616C00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'esES', 0x9201000022000000, 67186), +(3247720076, 39887, 'esES', 0x0700000000, 67186), +(3776013982, 243435, 'esES', 0x00436F6E766965727465207475207069656C20656E207069656472612C206C6F207175652061756D656E74612074752073616C75642061637475616C2079206DC3A178696D6120756E202473312520792072656475636520656C206461C3B16F20726563696269646F20756E202473322520647572616E74652024642E0053616C7564206DC3A178696D612061756D656E7461646120756E20247731252E0D0A4461C3B16F20726563696269646F20726564756369646F20756E20247732252E243F2477343E315B0D0A4162736F7262652024773420702E206465206461C3B16F2E5D5B5D00, 67186), +(3776013982, 221562, 'esES', 0x004C6576616E746120616C206F626A657469766F20656E656D69676F2064656C207375656C6F2C206C652061706C61737461206C612067617267616E746120636F6E20656E657267C3AD61206F73637572612079206C6F2061747572646520647572616E74652024642E00417475726469646F2E00, 67186), +(3776013982, 205630, 'esES', 0x54616C656E746F204A634A0045737472616E67756C617320616C206F626A657469766F20636F6E20756E61206D616769612064656D6F6EC3AD61636120717565206C6F2064656A6120617475726469646F20656E20656C20736974696F2079206C6520696E666C69676520246F3420702E206465206461C3B16F206465206C617320536F6D6272617320647572616E74652024642E20507565646573206D6F7665727465206D69656E74726173206C6F2063616E616C697A61732E0D0A0D0A5573612041676172726520646520496C6C6964616E206F7472612076657A2070617261206C616E7A617220616C206F626A657469766F206120756E612075626963616369C3B36E20656E20756E20726164696F206465202432303831373352206D2E00417475726469646F2E20526563696269656E646F2024773420702E206465206461C3B16F206465206C617320536F6D62726173206361646120247420732E00, 67186), +(3776013982, 198158, 'esES', 0x54616C656E746F204A634A0054C3BA20792074757320616C6961646F7320656E20756E20726164696F20646520244131206D206F7320766F6C76C3A9697320696E76697369626C657320696E7374616E74C3A16E65616D656E746520647572616E74652024642E204375616C71756965722061636369C3B36E207265616C697A6164612063616E63656C6172C3A120656C2065666563746F2E00496E76697369626C652E204375616C71756965722061636369C3B36E2063616E63656C6172C3A120656C2065666563746F2E00, 67186), +(3776013982, 108194, 'esES', 0x004C6576616E746120616C206F626A657469766F20656E656D69676F2064656C207375656C6F2C206C652061706C61737461206C612067617267616E746120636F6E20656E657267C3AD61206F73637572612079206C6F2061747572646520647572616E74652024642E00417475726469646F2E00, 67186), +(378810315, 1004, 'esES', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'esES', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'esES', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'esES', 0x077A03000705000047000000, 67186), +(378810315, 999, 'esES', 0x530D00000509000049000000, 67186), +(378810315, 998, 'esES', 0x530D00000509000048000000, 67186), +(378810315, 997, 'esES', 0x530D00000509000047000000, 67186), +(378810315, 996, 'esES', 0x78B700000409000049000000, 67186), +(378810315, 995, 'esES', 0x78B700000409000048000000, 67186), +(378810315, 994, 'esES', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'esES', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'esES', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'esES', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'esES', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'esES', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'esES', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'esES', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'esES', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'esES', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'esES', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'esES', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'esES', 0x989B12000706000006010000, 67186), +(378810315, 980, 'esES', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'esES', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'esES', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'esES', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'esES', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'esES', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'esES', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'esES', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'esES', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'esES', 0x713507000505000000010000, 67186), +(378810315, 966, 'esES', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'esES', 0x550300000805000046000000, 67186), +(378810315, 964, 'esES', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'esES', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'esES', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'esES', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'esES', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'esES', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'esES', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'esES', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'esES', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'esES', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'esES', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'esES', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'esES', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'esES', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'esES', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'esES', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'esES', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'esES', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'esES', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'esES', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'esES', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'esES', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'esES', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'esES', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'esES', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'esES', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'esES', 0x991503000409000045020000, 67186), +(378810315, 933, 'esES', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'esES', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'esES', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'esES', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'esES', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'esES', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'esES', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'esES', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'esES', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'esES', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'esES', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'esES', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'esES', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'esES', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'esES', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'esES', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'esES', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'esES', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'esES', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'esES', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'esES', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'esES', 0x42E906000309000009010000, 67186), +(378810315, 902, 'esES', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'esES', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'esES', 0x761800000309000009010000, 67186), +(378810315, 899, 'esES', 0x76180000030900000A010000, 67186), +(378810315, 898, 'esES', 0x76180000030900000B010000, 67186), +(378810315, 885, 'esES', 0x78B700000409000047000000, 67186), +(378810315, 879, 'esES', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'esES', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'esES', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'esES', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'esES', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'esES', 0x980100000905000005010000, 67186), +(378810315, 858, 'esES', 0x980100000905000004010000, 67186), +(378810315, 855, 'esES', 0x980100000905000003010000, 67186), +(378810315, 843, 'esES', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'esES', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'esES', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'esES', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'esES', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'esES', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'esES', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'esES', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'esES', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'esES', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'esES', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'esES', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'esES', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'esES', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'esES', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'esES', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'esES', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'esES', 0x027F05000707000003010000, 67186), +(378810315, 720, 'esES', 0x36A401000707000048000000, 67186), +(378810315, 719, 'esES', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'esES', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'esES', 0x790200000905000046000000, 67186), +(378810315, 714, 'esES', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'esES', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'esES', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'esES', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'esES', 0x68F905000605000067000000, 67186), +(378810315, 691, 'esES', 0x68F905000605000066000000, 67186), +(378810315, 690, 'esES', 0x68F905000605000069000000, 67186), +(378810315, 682, 'esES', 0x15A905000705000041020000, 67186), +(378810315, 679, 'esES', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'esES', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'esES', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'esES', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'esES', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'esES', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'esES', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'esES', 0x16600500040800003F000000, 67186), +(378810315, 661, 'esES', 0x16600500040900003E000000, 67186), +(378810315, 658, 'esES', 0xE53805000209000040000000, 67186), +(378810315, 657, 'esES', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'esES', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'esES', 0x166005000409000040000000, 67186), +(378810315, 648, 'esES', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'esES', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'esES', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'esES', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'esES', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'esES', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'esES', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'esES', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'esES', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'esES', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'esES', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'esES', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'esES', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'esES', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'esES', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'esES', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'esES', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'esES', 0x550300000805000041000000, 67186), +(378810315, 449, 'esES', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'esES', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'esES', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'esES', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'esES', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'esES', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'esES', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'esES', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'esES', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'esES', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'esES', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'esES', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'esES', 0x57A101000505000067000000, 67186), +(378810315, 408, 'esES', 0x638400000705000069000000, 67186), +(378810315, 407, 'esES', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'esES', 0xE40200000505000069000000, 67186), +(378810315, 402, 'esES', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'esES', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'esES', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'esES', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'esES', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'esES', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'esES', 0xE77701000605000046000000, 67186), +(378810315, 377, 'esES', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'esES', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'esES', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'esES', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'esES', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'esES', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'esES', 0x400700000409000004010000, 67186), +(378810315, 353, 'esES', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'esES', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'esES', 0xE60600000605000005010000, 67186), +(378810315, 349, 'esES', 0xE60600000605000004010000, 67186), +(378810315, 348, 'esES', 0xE60600000605000003010000, 67186), +(378810315, 346, 'esES', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'esES', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'esES', 0x301E03000509000006010000, 67186), +(378810315, 342, 'esES', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'esES', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'esES', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'esES', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'esES', 0x66D401000505000009010000, 67186), +(378810315, 332, 'esES', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'esES', 0x981900000605000048000000, 67186), +(378810315, 329, 'esES', 0x981900000605000049000000, 67186), +(378810315, 224, 'esES', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'esES', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'esES', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'esES', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'esES', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'esES', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'esES', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'esES', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'esES', 0x242303000409000041020000, 67186), +(378810315, 205, 'esES', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'esES', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'esES', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'esES', 0x242303000409000045020000, 67186), +(378810315, 189, 'esES', 0x743C03000805000045020000, 67186), +(378810315, 187, 'esES', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'esES', 0x36A401000707000049000000, 67186), +(378810315, 176, 'esES', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'esES', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'esES', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'esES', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'esES', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'esES', 0x36A401000707000047000000, 67186), +(378810315, 159, 'esES', 0x981900000605000047000000, 67186), +(378810315, 158, 'esES', 0x533301000405000066000000, 67186), +(378810315, 156, 'esES', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'esES', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'esES', 0xA09001000607000066000000, 67186), +(378810315, 152, 'esES', 0x82020000010B000046000000, 67186), +(378810315, 150, 'esES', 0x50350300050B000046000000, 67186), +(378810315, 149, 'esES', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'esES', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'esES', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'esES', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'esES', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'esES', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'esES', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'esES', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'esES', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'esES', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'esES', 0x62040000060500000B010000, 67186), +(378810315, 121, 'esES', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'esES', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'esES', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'esES', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'esES', 0x45990100010B000009010000, 67186), +(378810315, 113, 'esES', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'esES', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'esES', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'esES', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'esES', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'esES', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'esES', 0x491E03000907000007010000, 67186), +(378810315, 101, 'esES', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'esES', 0x301E03000509000008010000, 67186), +(378810315, 97, 'esES', 0x301E03000509000007010000, 67186), +(378810315, 96, 'esES', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'esES', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'esES', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'esES', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'esES', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'esES', 0x400700000409000005010000, 67186), +(378810315, 83, 'esES', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'esES', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'esES', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'esES', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'esES', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'esES', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'esES', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'esES', 0xB63500000707000004010000, 67186), +(378810315, 70, 'esES', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'esES', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'esES', 0x400700000409000003010000, 67186), +(378810315, 63, 'esES', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'esES', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'esES', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'esES', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'esES', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'esES', 0x82020000010B000042000000, 67186), +(378810315, 45, 'esES', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'esES', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'esES', 0x82020000010B000041000000, 67186), +(378810315, 39, 'esES', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'esES', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'esES', 0x790200000905000041000000, 67186), +(378810315, 35, 'esES', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'esES', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'esES', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'esES', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'esES', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'esES', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'esES', 0xD39603000805000040000000, 67186), +(378810315, 21, 'esES', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'esES', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'esES', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'esES', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'esES', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'esES', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'esES', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'esES', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'esES', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'esES', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'esES', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'esES', 0x52697475616C6973746120646F6D616E61617200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291859, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291858, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291857, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291856, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291855, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291854, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291853, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291852, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291851, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291850, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291849, 'esES', 0x00526573746175726120686173746120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1291848, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291847, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291846, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291845, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291844, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291843, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291842, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291841, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291840, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291839, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291838, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291837, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291831, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291828, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291827, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291826, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291825, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291824, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291822, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1291791, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1290929, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1290926, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1290925, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1289221, 'esES', 0x00C2A14162726520656C20636F667265207061726120766572207175C3A920636F6E7469656E65210000, 67186), +(3776013982, 1286537, 'esES', 0x00526573746175726120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C75642079206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1286536, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1286535, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1282100, 'esES', 0x000000, 67186), +(3776013982, 1282018, 'esES', 0x00C2A1496E766F636120756E2062616E636F20706172612073656E7461727365210043616E63656C6120656C2061757261207061726120726574697261722074752062616E636F2E00, 67186), +(3776013982, 1277461, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269922, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1269921, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1269920, 'esES', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D61206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C7564206361646120736567756E646F2E00, 67186), +(3776013982, 1269919, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269918, 'esES', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E0052657374617572616E646F20756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269917, 'esES', 0x00526573746175726120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C75642079206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1269916, 'esES', 0x00526573746175726120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C75642079206D616EC3A1206361646120736567756E646F2E00, 67186), +(3776013982, 1232065, 'esES', 0x00526573746175726120756E20247331252064652074752073616C75642079206D616EC3A1206DC3A178696D6F73206361646120736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E0052657374617572616E646F20756E20247331252064652073616C75642079206D616EC3A1206361646120736567756E646F2E00, 67186), +(2948698321, 8059, 'esES', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'esES', 0x000000, 67186), +(3898252553, 11633, 'esES', 0xE28200001E490300, 67186), +(3898252553, 11632, 'esES', 0xE18200001E490300, 67186), +(3898252553, 11631, 'esES', 0xE08200001E490300, 67186), +(3898252553, 11630, 'esES', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'esES', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'esES', 0x00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024733325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202473342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024773325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202477342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00, 67186), +(3776013982, 1262377, 'esES', 0x00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024733325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202473342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024773325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202477342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00, 67186), +(3776013982, 1262376, 'esES', 0x00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024733325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202473342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024773325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202477342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00, 67186), +(3776013982, 1262365, 'esES', 0x004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C69646164657320646520696E666C6967697220756E2024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C6967697220756E2024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'esES', 0x004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C6967697220756E2024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D7565727465207361637261207469656E6520756E61207065717565C3B1612070726F626162696C6964616420646520656A6563757461722061206C6F7320656E656D69676F7320717565206E6F207365616E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C6967697220756E2024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D7565727465207361637261207469656E6520756E61207065717565C3B1612070726F626162696C6964616420646520656A6563757461722061206C6F7320656E656D69676F7320717565206E6F207365616E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'esES', 0x004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C6967697220756E2024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D7565727465207361637261207469656E6520756E61207065717565C3B1612070726F626162696C6964616420646520656A6563757461722061206C6F7320656E656D69676F7320717565206E6F207365616E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C6967697220756E2024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D7565727465207361637261207469656E6520756E61207065717565C3B1612070726F626162696C6964616420646520656A6563757461722061206C6F7320656E656D69676F7320717565206E6F207365616E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'esES', 0x00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024733325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202473342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00416C20616272697220756E6120637572696F736964616420657874726176696164612C20696E766F636172C3A17320756E6120636172676120737562797567616461207175652074652061646F726172C3A120647572616E746520656C20636F6D626174652C206C6F207175652061756D656E746172C3A120756E2024773325207475206573746164C3AD737469636120247072692E0D0A0D0A5075656465732074656E6572206861737461202477342063617267617320737562797567616461732061206C612076657A2E0D0A54726173207265756E697220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E7469646164206465202470726920717565206F746F72676120636164612063617267612E00, 67186), +(3776013982, 1248927, 'esES', 0x004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C69646164657320646520696E666C6967697220756E2024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F206465206C61732070726F66756E64696461646573206C616E63652024407370656C6C6E616D65313235313630332C20736520636F6E6365646572C3A120756E206D616E6461746F20736163726F2061206C6F73206D69656D62726F732064656C20677275706F2071756520686172C3A120717565207375732068656368697A6F73207920666163756C7461646573206461C3B1696E6F732074656E67616E20756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C6967697220756E2024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F205361677261646F2065787472612E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'esES', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'esES', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A1726561206672656E746520612074692079206C6F73206D6172636120636F6E20456E636F6E747261646F2E0000, 67186), +(3776013982, 1256862, 'esES', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A17265612079206C6F73206D6172636120636F6E20456E636F6E747261646F2E0000, 67186), +(3776013982, 1256861, 'esES', 0x0053616C7461206120756E612075626963616369C3B36E207920646973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20746F726E6F2061206C61207A6F6E6120646520696D706163746F2E0000, 67186), +(3776013982, 1256860, 'esES', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F73206672656E7465206120746920647572616E74652024642079206C6F73206D6172636120636F6E20456E636F6E747261646F2E0000, 67186), +(3776013982, 1256010, 'esES', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A17265612079206C6F73206D6172636120636F6E20456E636F6E747261646F2E0000, 67186), +(1408785804, 249319, 'esES', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'esES', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'esES', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'esES', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'esES', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'esES', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'esES', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'esES', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'esES', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'esES', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'esES', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'esES', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'esES', 0x000000, 67186), +(3776013982, 1295497, 'esES', 0x000000, 67186), +(3776013982, 1295486, 'esES', 0x000000, 67186), +(3776013982, 464291, 'esES', 0x000000, 67186), +(3776013982, 1243616, 'esES', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'esES', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'esES', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'esES', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'esES', 0x00446567656E7472697573206C616E7A6120756E6120646573636172676120646520656E657267C3AD612064656C20566163C3AD6F20696E65737461626C6520717565207265626F746120612024733220756269636163696F6E65732E204375616E646F206C6120656E657267C3AD6120696D706163746120636F6E74726120656C207375656C6F2C206578706C6F7461207061726120696E666C69676972202431323135313537733120702E206465206461C3B16F206465206C617320536F6D627261732061206375616C7175696572206A756761646F7220656E20756E20726164696F2064652024313231353135374131206D2064656C2070756E746F20646520696D706163746F2E205369206E6F20686179206E696E67C3BA6E206A756761646F7220656E206C61207A6F6E612C207365206163746976612024407370656C6C6E616D65313231353136312E0D0A0D0A4465737075C3A973206465206C6F732024733220696D706163746F732C206C6120656E657267C3AD61207265626F746120756E612076657A206DC3A173207920736520636F6E76696572746520656E20756E612024407370656C6C6E616D65313231353933372E0000, 67186), +(3776013982, 1243588, 'esES', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'esES', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'esES', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'esES', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'esES', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'esES', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'esES', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'esES', 0x7C63464646464432303056656E6465646F723A207C7242757A6F2070726F66756E646F205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F7374653A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'esES', 0x7C63464646464432303056656E6465646F723A207C7242757A6F2070726F66756E646F205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F7374653A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'esES', 0x7C63464646464432303056656E6465646F723A207C7242757A6F2070726F66756E646F205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F7374653A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'esES', 0x7C63464646464432303056656E6465646F723A207C7242757A6F2070726F66756E646F205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F7374653A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'esES', 0x7C63464646464432303056656E6465646F723A207C7242757A6F2070726F66756E646F205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F7374653A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'esES', 0x7C63464646464432303056656E6465646F723A207C7242757A6F2070726F66756E646F205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F7374653A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'esES', 0x005365206162616C616E7A612070617261206173657374617220756E2074616A6F20646F626C65207072656369736F20636F6E747261207375206F626A657469766F2061637475616C2E204361646120676F6C706520696E666C696765202431323537373336733120702E206465206461C3B16F2066C3AD7369636F2079202431323537373435733120702E206465206461C3B16F205361677261646F206DC3A17320636164612024313235373734357431207320647572616E7465202431323537373435642061206375616C717569657220656E656D69676F20616C20616C63616E63652C206164656DC3A1732064652074616C6C617220756E612024407370656C6C6E616D653132353533313020656E20656C207375656C6F2E0000, 67186), +(4033975491, 619581, 'esES', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'esES', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'esES', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'esES', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'esES', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'esES', 0x526F6A6F00243F63315B456C206461C3B16F20646520446573696E74656772617220636F6E73756D6520247B2473322F313030307D2E31207320646520416C69656E746F20646520467565676F206465206C6F7320656E656D69676F732061206C6F7320717565206461C3B16120792070726F766F636120756E61206465746F6E616369C3B36E20646520756E61206D61676E69747564206571756976616C656E7465206120756E2024733425206465206C612063616E746964616420636F6E73756D6964612E0D0A0D0A456C206461C3B16F206465205069726120636F6E73756D6520247B2473332F313030307D207320646520416C69656E746F20646520467565676F206465206C6F7320656E656D69676F732061206C6F7320717565206461C3B16120792070726F766F636120756E61206465746F6E616369C3B36E20646520756E61206D61676E69747564206571756976616C656E7465206120756E2024733725206465206C612063616E746964616420636F6E73756D6964612E5D5B4C612073616E616369C3B36E20646520416272617A6F20766572646520636F6E73756D6520247B2473352F313030307D207320646520416C69656E746F206F6EC3AD7269636F206465206C6F7320616C6961646F732061206C6F73207175652073616E612079206C6F7320636F6E76696572746520656E20756E2065666563746F2064652073616E616369C3B36E206571756976616C656E7465206120756E2024733625206465206C612063616E746964616420636F6E73756D6964612E0D0A0D0A4C612073616E616369C3B36E20646520466C6F722065736D6572616C646120636F6E73756D6520247B2473312F313030307D207320646520416C69656E746F206F6EC3AD7269636F206465206C6F7320616C6961646F732061206C6F73207175652073616E612079206C6F7320636F6E76696572746520656E20756E2065666563746F2064652073616E616369C3B36E206571756976616C656E7465206120756E2024733625206465206C612063616E746964616420636F6E73756D6964612E5D0000, 67186), +(4033975491, 619554, 'esES', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'esES', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'esES', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'esES', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'esES', 0x000000, 67186), +(2151089334, 7976, 'esES', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'esES', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'esES', 0x416269736172696F20657370616E746F736F00000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'esES', 0x00556E612024407370656C6C6E616D653132343936303920656A6563757461646120656E20656C206F7264656E20696E636F72726563746F206372656120756E20636C616D6F72207265736F6E616E7465207175652073696C656E63696120616C206F626A657469766F20647572616E74652024642E200053696C656E636961646F2E00, 67186), +(3247720076, 42321, 'esES', 0x0000000000, 67186), +(4033975491, 619506, 'esES', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'esES', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'esES', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'esES', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'esES', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'esES', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'esES', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'esES', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'esES', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'esES', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'esES', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'esES', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'esES', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'esES', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'esES', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'esES', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'esES', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'esES', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'esES', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'esES', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'esES', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'esES', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'esES', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'esES', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'esES', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'esES', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'esES', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'esES', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'esES', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'esES', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'esES', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'esES', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'esES', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'esES', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'esES', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'esES', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'esES', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'esES', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'esES', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'esES', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'esES', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'esES', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'esES', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'esES', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'esES', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'esES', 0x4C756761722064652072697475616C3A2050756E746F20646520457370696E616461676100536520657374C3A1206C6C6576616E646F2061206361626F20756E2070656C6967726F736F2072697475616C2063657263612E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'esES', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'esES', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'esES', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'esES', 0x00456C207461756D61747572676F206C616E7A6120756E612072C3A16661676120646520706F64657220417263616E6F2071756520696E666C6967652024733120702E206465206461C3B16F20417263616E6F2061206C6F73206A756761646F72657320656E20756E20726164696F20646520244131206D2E0000, 67186), +(3776013982, 1295237, 'esES', 0x00456C207461756D61747572676F206C616E7A6120756E612072C3A16661676120646520706F64657220417263616E6F2071756520696E666C6967652024733120702E206465206461C3B16F20417263616E6F2061206C6F73206A756761646F72657320656E20756E20726164696F20646520244131206D2E0000, 67186), +(600565378, 632510, 'esES', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'esES', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'esES', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'esES', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'esES', 0x0050726570C3A172617465207061726120656D7072656E64657220656C2070726F6365736F206465206361726E69636572C3AD612E204D69656E7472617320657374C3A12061637469766F2C206F6274656E6472C3A173206361726E652071756520736520707565646520636F63696E617220656E207475207369677569656E746520696E74656E746F2064652064657375656C6C6F206465204D69646E696768742E0050726570617261646F2070617261206465736375617274697A6172206C61207369677569656E7465206372696174757261206465204D69646E69676874207175652064657375656C6C65732C206C6F20717565207465206F746F72676172C3A1206361726E652071756520736520707565646520636F63696E61722E00, 67186), +(3776013982, 442615, 'esES', 0x0050726570C3A172617465207061726120656D7072656E64657220656C2070726F6365736F206465206361726E69636572C3AD612E204D69656E7472617320657374C3A92061637469766F2C206F6274656E6472C3A173206361726E652071756520736520707565646520636F63696E617220656E207475207369677569656E746520696E74656E746F2064652064657375656C6C6F206465204B68617A20416C6761722E0050726570617261646F2070617261206465736375617274697A6172206C61207369677569656E7465206372696174757261206465204B68617A20416C676172207175652064657375656C6C65732C206C6F20717565207465206F746F72676172C3A1206361726E652071756520736520707565646520636F63696E61722E00, 67186), +(3386943305, 23675, 'esES', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'esES', 0x506F7274616C2064656D6F6EC3AD61636F00000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'esES', 0x0053616C65732064656C20627563656F20646520666173652E0000, 67186), +(3776013982, 1241218, 'esES', 0x000000, 67186), +(2575642838, 749, 'esES', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'esES', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'esES', 0x00506F74656E636961646F20706F72206C612070726573656E63696120646520756E20656E656D69676F206DC3A17320696D706F7274616E74652E205265666C656A6120756E202477312520646520746F646F20656C206461C3B16F20616C207461756D61747572676F2E00506F74656E636961646F20706F72206C612070726573656E63696120646520756E20656E656D69676F206DC3A17320696D706F7274616E74652E205265666C656A6120756E202477312520646520746F646F20656C206461C3B16F20616C207461756D61747572676F2E0D0A0D0A506F74656E636961646F20706F723A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220526579206361C3AD646F2053616C6861646161725D00, 67186), +(3425193231, 546424, 'esES', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'esES', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'esES', 0x000000, 67186), +(600565378, 664416, 'esES', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'esES', 0x00456E63616E74617320646520666F726D61207065726D616E656E746520756E612068657272616D69656E74612064652070726F66657369C3B36E20636F6E204465737472657A612073696E27646F7265692C207175652061756D656E7461202465633120702E206C61206465737472657A612E204E6F2073652070756564652061706C696361722061206F626A65746F7320706F7220656E63696D612064656C206E6976656C2024656369782E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A54616C656E746F73207468616C61737369616E6F733A2043616C69646164206465205175656C275468616C61737C52200000, 67186), +(261693969, 93049, 'esES', 0xFFFFFFFFFFFFFFFF41797564612070617261206C6F7320646562657265730000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'esES', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'esES', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'esES', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'esES', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'esES', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'esES', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'esES', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'esES', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'esES', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'esES', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'esES', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'esES', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'esES', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'esES', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'esES', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'esES', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'esES', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'esES', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'esES', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'esES', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'esES', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'esES', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'esES', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'esES', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'esES', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'esES', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'esES', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'esES', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'esES', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'esES', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'esES', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'esES', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'esES', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'esES', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'esES', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'esES', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'esES', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'esES', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'esES', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'esES', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'esES', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'esES', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'esES', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'esES', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'esES', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'esES', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'esES', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'esES', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'esES', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'esES', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'esES', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'esES', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'esES', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'esES', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'esES', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'esES', 0x00436F676520756E61206361C3B16120646520706573636172207920627573636120756E6120657874656E7369C3B36E206465206167756120646F6E6465207065736361722E2048617A20636C696320636F6E20656C20626F74C3B36E206465726563686F2064656C20726174C3B36E20736F62726520656C206365626F206375616E646F207665617320717565207365206D75657665207061726120636F67657220656C2070657A2E20556E61206D61796F7220686162696C696461642061756D656E74612074752070726F626162696C696461642064652070657363617220636F6E20C3A97869746F20656E207A6F6E6173206465206E6976656C6573206DC3A17320616C746F732E0000, 67186), +(3776013982, 1286820, 'esES', 0x000000, 67186), +(3776013982, 1286703, 'esES', 0x00436F676520756E61206361C3B16120646520706573636172207920656E6375656E74726120756E6120657874656E7369C3B36E206465206167756120646F6E6465207065736361722E2048617A20636C696320636F6E20656C20626F74C3B36E206465726563686F2064656C20726174C3B36E20736F62726520656C206365626F206375616E646F207665617320717565207365206D75657665207061726120636F67657220656C2070657A2E20556E61206D61796F7220686162696C696461642061756D656E74612074752070726F626162696C696461642064652070657363617220636F6E20C3A97869746F20656E207A6F6E6173206465206E6976656C6573206DC3A17320616C746F732E0000, 67186), +(3776013982, 1253159, 'esES', 0x000000, 67186), +(3359787322, 29615, 'esES', 0xAF730000, 67186), +(3031818311, 9590, 'esES', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'esES', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'esES', 0xE87A0000, 67186), +(3776013982, 1277169, 'esES', 0x0041627265206573746F207061726120636F6E73656775697220313020626C61736F6E65732064656C20616C62612064652068C3A9726F652079206465206D69746F2E0000, 67186), +(3776013982, 1243683, 'esES', 0x00436F6E73696775657320313020626C61736F6E65732064656C20616C6261206465206D69746F2E0000, 67186), +(3776013982, 190784, 'esES', 0x004D6F6E746120736F62726520747520646573747265726F207061726120636162616C67617220647572616E74652024323231383833642C206C6F207175652061756D656E7461206C612076656C6F6369646164206465206D6F76696D69656E746F20756E20243232313838337334252E205365207075656465207573617220656E20696E746572696F726573206F20656E20636F6D626174652E0000, 67186), +(4033975491, 619076, 'esES', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'esES', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'esES', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'esES', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'esES', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'esES', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'esES', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'esES', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'esES', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'esES', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'esES', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'esES', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'esES', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'esES', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'esES', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'esES', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'esES', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'esES', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'esES', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'esES', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'esES', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'esES', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'esES', 0x1100E18B0000, 67186), +(184881520, 18405, 'esES', 0x0F00FC890000, 67186), +(184881520, 18404, 'esES', 0x0E00FC890000, 67186), +(184881520, 18403, 'esES', 0xDC00F9890000, 67186), +(184881520, 18245, 'esES', 0x1100F9890000, 67186), +(184881520, 18244, 'esES', 0x0F00F9890000, 67186), +(2575642838, 750, 'esES', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'esES', 0x000000, 67186), +(3776013982, 1266413, 'esES', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'esES', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'esES', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'esES', 0x496E6772656469656E7465207365637265746F00F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'esES', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'esES', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'esES', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'esES', 0x004C616E7A617320756E6120736572696520646520676F6C706573207072656369736F73207920706F6465726F736F732071756520696E666C6967656E20247B2434343038383473312B2434343038383673312B2434343038383873317D20702E206465206461C3B16F20616C206F626A657469766F20792024343430383838733120702E206465206461C3B16F2061206C6F7320656E656D69676F7320656E20756E20726164696F20646520243434303838384131206D206120737520616C72656465646F722E20496E666C696765206461C3B16F20726564756369646F207369206166656374612061206DC3A17320646520247331206F626A657469766F732E0D0A0D0A4D69656E747261732063616E616C697A61732044656D6F6C65722C207265636962657320756E2024733425206D656E6F73206465206461C3B16F2079206572657320696E6D756E652061206174757264696D69656E746F732C20726570756C73696F6E657320792065666563746F73206465206D6F76696D69656E746F20666F727A61646F2E0D0A0D0A50756564657320626C6F71756561722C2070617261722C20657371756976617220792075736172206369657274617320666163756C746164657320646566656E7369766173206D69656E747261732063616E616C697A61732044656D6F6C65722E0000, 67186), +(3776013982, 1292071, 'esES', 0x004C6F7320656E656D69676F73206461C3B161646F7320706F72206C61206F6C6561646120646520667565727A612064652046616C616E676520746520696E666C6967656E20756E20247B2473312F2D317D2E3125206D656E6F73206465206461C3B16F20647572616E74652024642E0D0A00496E666C696769656E646F20756E20247B2457312F2D317D2E3125206D656E6F73206465206461C3B16F2061202440617572616361737465722E00, 67186), +(3266400455, 1570155, 'esES', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'esES', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'esES', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'esES', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'esES', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'esES', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'esES', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'esES', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'esES', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'esES', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'esES', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'esES', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'esES', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'esES', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'esES', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'esES', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'esES', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'esES', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'esES', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'esES', 0x170B3D160100, 67186), +(1734738485, 9018, 'esES', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'esES', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'esES', 0x00496D627579652074752061726D616475726120646520756E2074656E75652065636F206465204C61204675656E74652064656C20536F6C2071756520646573626C6F717565612065666563746F732076697375616C657320657874726120706172612063696572746173206170617269656E6369617320646520636F6E6A756E746F7320646520636C617365206465206C612074656D706F726164612031206465204D69646E696768742E0D0A0D0A457374652065666563746F2073652061706C696361206120746F6461206C612062616E64612067756572726572612E0000, 67186), +(3776013982, 1273357, 'esES', 0x00496D627579652074752061726D616475726120646520756E2074656E75652065636F206465204C61204675656E74652064656C20536F6C2071756520646573626C6F717565612065666563746F732076697375616C657320657874726120706172612063696572746173206170617269656E6369617320646520636F6E6A756E746F7320646520636C617365206465206C612074656D706F726164612031206465204D69646E696768742E0D0A0D0A457374652065666563746F2073652061706C696361206120746F6461206C612062616E64612067756572726572612E0000, 67186), +(4167587713, 4140, 'esES', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'esES', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E536920706173617320616C206D656E6F73203130207320636F6D69656E646F2C20717565646172C3A1732024407370656C6C6E616D6534353730343920792067616E6172C3A173202431323139313739733720702E20646520616775616E74652079202431323139313739733220702E206465207475206573746164C3AD7374696361207072696E636970616C20647572616E74652024642E004573746164C3AD7374696361207072696E636970616C2061756D656E74616461202477313120702E00, 67186), +(3776013982, 1294726, 'esES', 0x000000, 67186), +(3776013982, 1294720, 'esES', 0x0044697370617261206120756E20656E656D69676F2079206C6520696E666C696765206461C3B16F2066C3AD7369636F2E0000, 67186), +(3776013982, 1294703, 'esES', 0x0044697370617261206120756E20656E656D69676F2079206C6520696E666C696765206461C3B16F2066C3AD7369636F2E0000, 67186), +(3776013982, 1294669, 'esES', 0x004C6120637269617475726120636172676120636F6E7472612074692E004C6120637269617475726120636172676120636F6E7472612074692E00, 67186), +(3776013982, 1294633, 'esES', 0x00447572616E74652024642C20656C207461756D61747572676F2065736375706520756E617320626F6C617320646520467565676F206120756E206A756761646F722071756520696E666C6967656E202431323636373435733120702E206465206461C3B16F20646520467565676F20636164612024743120732E00496E666C696765202431323636373435733120702E206465206461C3B16F20646520467565676F20636164612024743120732E00, 67186), +(3776013982, 1294563, 'esES', 0x000000, 67186), +(3776013982, 1277795, 'esES', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A1726561206672656E746520612074692079206C6F73206D6172636120636F6E20456E636F6E747261646F2E0000, 67186), +(3776013982, 1272179, 'esES', 0x00436F6D7072617220612076656E6465646F722E0D0A0D0A24407370656C6C64657363313235363137310054652068616E2070696C6C61646F20616E746573206465207175652070756469657261732068616365726C6F2074C3BA2E00, 67186), +(3776013982, 1269655, 'esES', 0x00436F6D7072617220612076656E6465646F720D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'esES', 0x00436F6D7072617220612076656E6465646F720D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'esES', 0x00436F6D7072617220612076656E6465646F720D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'esES', 0x00436F6D7072617220612076656E6465646F720D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'esES', 0x00436F6D7072617220612076656E6465646F720D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'esES', 0x0043616D6269617320646520736974696F20636F6E20756E2061646F726E6F2063657263616E6F2E0000, 67186), +(3776013982, 1259647, 'esES', 0x0024407370656C6C6465736334353239393300536520686120646574656E69646F20656C2061676F74616D69656E746F206465206C6F732065666563746F73206465206C6F732066726173636F732C206C617320616D706F6C6C61732079206269656E20616C696D656E7461646F206465204D69646E696768742E00, 67186), +(3776013982, 1258362, 'esES', 0x000D0A7C4346466666666666665469656D706F206465206C616E7A616D69656E746F3A20312C3520732E0D0A5469656D706F2064652072657574696C697A616369C3B36E206465206C61207472616D70613A203520732E7C520D0A0D0A5369206E6F20686179206E696E67C3BA6E206275736361646F7220656E20756E20726164696F206465202452206D2C206C616E7A617320756E20636F6E74656E65646F722064652024407370656C6C6E616D653132353833353820656E20756E20726164696F206465202472616431206D20646520747520706F73696369C3B36E2061637475616C2E0D0A0D0A53692068617920616C206D656E6F7320756E206275736361646F7220656E20756E20726164696F206465202452206D2C206172726F6A617320756E20636F6E74656E65646F722064652024407370656C6C6E616D6531323538333538206365726361206465206C6120706F73696369C3B36E2064656C206275736361646F72206DC3A1732063657263616E6F20612074692E0D0A0D0A7C4346463731643566664E6F74613A7C52207C4346466439666366664D69656E7472617320736520646573706C617A616E20706F7220656C20616972652C206C6F7320636F6E74656E65646F72657320736F6E20696E76697369626C65732070617261206C6F73206275736361646F7265732E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C4346466230623062304E6F206573206C61206DC3A173206C6C616D61746976612C207065726F206120766563657320626173746120636F6E20756E612073696D706C6520646973747261636369C3B36E2070617261206861636572736520636F6E20656C20747269756E666F2E7C520000, 67186), +(3776013982, 1256009, 'esES', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A1726561206672656E746520612074692079206C6F73206D6172636120636F6E20456E636F6E747261646F2E0000, 67186), +(3776013982, 1251813, 'esES', 0x00416C206D6F7269722C20656C2066616E7461736D61206C616E7A6120756E20677269746F2071756520696E666C6967652024733120702E206465206461C3B16F206465206C617320536F6D62726173206120746F646F73206C6F73206A756761646F7265732E0000, 67186), +(1010104591, 22988, 'esES', 0x7C63464646464432303056656E6465646F723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F7374653A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E6465646F723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F7374653A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'esES', 0x7C63464646464432303056656E6465646F723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F7374653A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E6465646F723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F7374653A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'esES', 0x7C634646464644323030457370656369616C697A616369C3B36E3A207C724D6F76696C69646164206465206D65726361646F202D2041636365736F72696F73206465206D696E6572C3AD617C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'esES', 0x7C634646464644323030496E7374727563746F722064652070726F66657369C3B36E3A207C72496E67656E696572C3AD61206465204D69646E6967687420283335297C6E7C634646464644323030436F7374653A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'esES', 0x7C634646464644323030457370656369616C697A616369C3B36E3A207C724D6F76696C69646164206465206D65726361646F202D2041636365736F72696F7320646520696E67656E696572C3AD617C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'esES', 0xFFFFFFFFFFFFFFFF4C6120417263616E74696E61000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'esES', 0xFFFFFFFFFFFFFFFF5265636F6E6F63696D69656E746F206D6572656369646F00001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'esES', 0x556E206F626A65746F20706F636F20636F6DC3BA6E20717565207075656465206465766F6C76657220616C67756E6F7320636F6D706F6E656E746573207472617320636F6D706C65746172206C6120666162726963616369C3B36E2E7C6E7C6E4F627469656E6573202465763120702E2064652024656E312070617261206573746120666162726963616369C3B36E2E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'esES', 0x41756D656E7461206C612070726F626162696C69646164206465206465766F6C766572746520616C67756E6F7320636F6D706F6E656E746573207472617320636F6D706C65746172206C6120666162726963616369C3B36E2E7C6E7C6E4F627469656E6573202465763120702E2064652024656E312070617261206573746120666162726963616369C3B36E2E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'esES', 0x556E6120726172657A612064696D656E73696F6E616C2071756520676172616E74697A6120756E61206D61796F722063616E7469646164206465206D6174657269616C65732066616272696361646F732E7C6E7C6E4F627469656E6573202465763120702E2064652024656E312070617261206573746120666162726963616369C3B36E2E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'esES', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500486173206C6C656761646F20616C206DC3A178696D6F206465207375626964617320646520706572736F6E616A6520646961726961732E205675656C7665206120696E74656E7461726C6F206D61C3B1616E612E0003000000, 67186), +(3205218938, 58259, 'esES', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F676573746F727469656D706F72657574696C697A6163696F6E0001000000, 67186), +(3205218938, 58258, 'esES', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F6774720001000000, 67186), +(3205218938, 55299, 'esES', 0x4A4F55524E4559535F43555252454E545F50524F47524553530050726F677265736F2061637475616C3A207C636E484947484C494748545F464F4E545F434F4C4F523A25642F25647C720001000000, 67186), +(3205218938, 49471, 'esES', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F47524553530050726F677265736F2061637475616C3A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'esES', 0x000000, 67186), +(3776013982, 1294759, 'esES', 0x000000, 67186), +(2921112328, 568649, 'esES', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'esES', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'esES', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'esES', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'esES', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'esES', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'esES', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'esES', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'esES', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'esES', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'esES', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'esES', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'esES', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'esES', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'esES', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='esES') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='esES') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='esES') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='esES') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x507265736100446572726F7461206120706F6465726F736F7320656E656D69676F73207061726120617975646172206120417374616C6F722E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x00556E6120C3BA6C74696D6120636869737061206172646520647572616E7465206C61206E6F636865206DC3A173206F73637572612E00456E76616C656E746F6E61646F2E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='esES'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF53696E207269746D6F0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='esES'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 273277, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 272911, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'esES', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='esES' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esES'); From ec4e6009ae481ce186e6aa9a26ca8156af014e32 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:19:00 +0200 Subject: [PATCH 102/175] DB/Hotfixes: Updated esMX hotfixes to 12.0.5.67186 --- .../master/2026_04_29_03_hotfixes_esMX.sql | 2743 +++++++++++++++++ 1 file changed, 2743 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_03_hotfixes_esMX.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_03_hotfixes_esMX.sql b/sql/updates/hotfixes/master/2026_04_29_03_hotfixes_esMX.sql new file mode 100644 index 0000000000000..abd7c69a6ced5 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_03_hotfixes_esMX.sql @@ -0,0 +1,2743 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'esMX', 'Completa todos los siguientes logros de pescadores abisales.', 'Pescadores abisales: Flamante rival de Jeju', '', 67186), +(61883, 'esMX', 'Evita que te marquen durante el primer minuto de Duelo de decoraciones (x3).', 'Ahora no me ven...', '', 67186), +(61887, 'esMX', 'Completa todos los logros de Duelo de decoraciones.', 'Disfraz impecable', '', 67186), +(61886, 'esMX', 'Consigue acceder a todas las mejoras de kit en Duelo de decoraciones.', 'Colección completa', '', 67186), +(61882, 'esMX', 'Pierde el estado de encontrado sin que te marquen en Duelo de decoraciones.', 'Nulidad y evasión', '', 67186), +(61881, 'esMX', 'Sé $gel último escondido:la última escondida; de tu equipo sin marcar en Duelo de decoraciones.', 'Escondido y escurridizo', '', 67186), +(61880, 'esMX', 'Escóndete y evita que te encuentren durante un minuto y medio de corrido en Duelo de decoraciones.', 'Son frías las sombras', '', 67186), +(61879, 'esMX', 'Gana una ronda como buscador marcando a todos los escondidos en menos de dos minutos en Duelo de decoraciones.', 'Tú la traes', '', 67186), +(61878, 'esMX', 'Marca a otros jugadores como forestales arcanos en Duelo de decoraciones.', 'Marcado y capturado', '', 67186), +(61793, 'esMX', 'Marca a otros jugadores como anuladores en Duelo de decoraciones.', 'Despliegue en el Vacío', '', 67186), +(61792, 'esMX', 'Marca a otros jugadores como rompedores de hechizos en Duelo de decoraciones.', 'M-A-R-C-A que dice \"¡Te tengo!\"', '', 67186), +(63263, 'esMX', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'esMX', 'Consigue un puntaje mítico+ de 3400 o más durante la primera temporada de Midnight.', 'Mito de piedra angular de Midnight: Primera temporada', 'Título: el Contendiente umbrío y objeto: Silla de montar cronoperdida', 67186), +(61594, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en Trecho Celestial.', 'Vencedor de piedra angular: Trecho Celestial', '', 67186), +(61593, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en el Trono del Triunvirato.', 'Vencedor de piedra angular: Trono del Triunvirato', '', 67186), +(61592, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en el Foso de Saron.', 'Vencedor de piedra angular: Foso de Saron', '', 67186), +(61591, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en la Academia Algeth\'ar.', 'Vencedor de piedra angular: Academia Algeth\'ar', '', 67186), +(61590, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en la Aguja Brisaveloz.', 'Vencedor de piedra angular: Aguja Brisaveloz', '', 67186), +(61589, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en el Punto del Nexo Xenas.', 'Vencedor de piedra angular: Punto del Nexo Xenas', '', 67186), +(61588, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en Cavernas de Maisara.', 'Vencedor de piedra angular: Cavernas de Maisara', '', 67186), +(61587, 'esMX', 'Completa un calabozo de piedra angular como uno de los mejores de la región en Bancal del Magister (Midnight).', 'Vencedor de piedra angular: Bancal del Magister (Midnight)', '', 67186), +(61259, 'esMX', 'Termina la primera temporada de Midnight con un puntaje mítico+ entre el 0.1% superior de todos los jugadores de tu región.', 'Héroe umbrío: Primera temporada de Midnight', 'Título: el Héroe umbrío', 67186), +(61253, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 30 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 30', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 30 durante la primera temporada de Midnight.', 67186), +(61252, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 29 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 29', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 29 durante la primera temporada de Midnight.', 67186), +(61251, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 28 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 28', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 28 durante la primera temporada de Midnight.', 67186), +(61250, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 27 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 27', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 27 durante la primera temporada de Midnight.', 67186), +(61249, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 26 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 26', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 26 durante la primera temporada de Midnight.', 67186), +(61248, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 25 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 25', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 25 durante la primera temporada de Midnight.', 67186), +(61247, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 24 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 24', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 24 durante la primera temporada de Midnight.', 67186), +(61246, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 23 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 23', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 23 durante la primera temporada de Midnight.', 67186), +(61245, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 22 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 22', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 22 durante la primera temporada de Midnight.', 67186), +(61244, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 21 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 21', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 21 durante la primera temporada de Midnight.', 67186), +(61243, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 20 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 20', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 20 durante la primera temporada de Midnight.', 67186), +(61242, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 19 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 19', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 19 durante la primera temporada de Midnight.', 67186), +(61241, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 18 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 18', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 18 durante la primera temporada de Midnight.', 67186), +(61240, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 17 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 17', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 17 durante la primera temporada de Midnight.', 67186), +(61239, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 16 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 16', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 16 durante la primera temporada de Midnight.', 67186), +(61237, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 15 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 15', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 15 durante la primera temporada de Midnight.', 67186), +(61236, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 14 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 14', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 14 durante la primera temporada de Midnight.', 67186), +(61235, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 13 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 13', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 13 durante la primera temporada de Midnight.', 67186), +(61233, 'esMX', 'Completa todos los calabozos míticos+ dentro del límite de tiempo con un nivel de piedra angular de 12 durante la primera temporada de Midnight.', 'Temporada 1 de Midnight: Piedra angular resiliente 12', 'Tras agotarse, las piedras angulares ya no bajarán de nivel 12 durante la primera temporada de Midnight.', 67186), +(12009, 'esMX', 'Derrota a L\'ura en Trono del Triunvirato mientras todos los miembros del grupo están afectados por Oscuridad aplastante en dificultad mítica.', 'El lado más oscuro', '', 67186), +(12005, 'esMX', 'Haz que Colmillo umbrío destruya 4 alijos del Vacío sellados con Salto de las sombras y luego derrota a Saprish en Trono del Triunvirato en dificultad mítica.', 'Frenesí saltarín', '', 67186), +(12004, 'esMX', 'Haz que aparezca Urjad desde el reino del Vacío con Grieta del Vacío y derrótalo a él y a Zuraal, el Ascendido en el Trono del Triunvirato en dificultad mítica.', 'Bienvenido al Vacío', '', 67186), +(9036, 'esMX', 'Derrota a la Gran Sabia Viryx en Trecho Celestial en dificultad heroica sin matar a ningún constructor de escudos.', 'Monomanía', '', 67186), +(9035, 'esMX', 'Haz que tres pilas de ceniza formen Centellas solares al mismo tiempo durante el encuentro con Rukhran en Trecho Celestial en dificultad heroica.', 'Vi a Solis', '', 67186), +(9034, 'esMX', 'Derrota al Ensamblaje potenciado en Trecho Celestial en dificultad heroica.', 'Magnificar... mejora', '', 67186), +(9033, 'esMX', 'Derrota a Ranjit en Trecho Celestial, en dificultad heroica, sin que te dañen las siguientes habilidades: Filo giratorio, Muro de viento, Cuatro Vientos, Destello luminoso.', 'Listo para asaltar IV', '', 67186), +(4525, 'esMX', 'Limpia la cámara antes del Señor de la Plaga Tyrannus en El Foso de Saron en dificultad heroica sin que nadie reciba daño de carámbanos en el primer intento.', 'No mires hacia arriba', '', 67186), +(4524, 'esMX', 'Derrota al maestro de forja Gargelus en el Foso de Saron en dificultad heroica antes de que un jugador acumule 11 veces el efecto Escarcha permanente.', 'Solo once campanadas', '', 67186), +(62814, 'esMX', '', '[PH] JZB Test Achievement 04', '', 67186), +(62813, 'esMX', '', '[PH] JZB Test Achievement 03', '', 67186), +(62812, 'esMX', '', '[PH] JZB Test Achievement 02', '', 67186), +(62811, 'esMX', '[PH] Description 01', '[PH] JZB Test Achievement 01', '', 67186), +(62296, 'esMX', '', 'Crestalboradas míticas obtenidas', '', 67186), +(42769, 'esMX', 'Supera la necesidad de usar crestalboradas de héroe durante la temporada 1 de Midnight.', 'Adalid del alba', 'Desbloqueo de personaje: intercambia crestalboradas de héroe por crestalboradas míticas', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Atrapa una criatura mítica 3 veces en exploraciones de pescadores abisales.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Obtén 250,000 puntos acumulados en exploraciones de pescadores abisales.', `Reward_lang`='Recompensa: Obtienes un compañero de zambullida aventurero', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca 100 peces durante exploraciones de pescadores abisales.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Usa la habilidad ¡Salir a la superficie! durante una exploración de pescadores abisales con menos de 10 segundos de respiración restante.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Consigue que te expulsen por la fuerza de una exploración de pescadores abisales por intentar nadar más allá de la fosa.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='Recompensa: Desbloquea la opción de comprar un Ídolo de las profundidades al sumergidor Tu\'nakit', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Descubre 10 reliquias antiguas en tus exploraciones de pescadores abisales para adquirir la mejora Red de los bajíos.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar una Red de hilo triple al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Descubre 50 reliquias hundidas en tus exploraciones de pescadores abisales.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar una Red de los bajíos al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca cada una de las siguientes criaturas durante exploraciones de pescadores abisales y obtén el tanque apto para profundidades.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar un Tanque de aliento de Nalorakk al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca cada una de las siguientes criaturas durante exploraciones de pescadores abisales para adquirir la mejora Tanque usado de sumergidor.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar un Tanque apto para profundidades al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca cada una de las siguientes criaturas durante exploraciones de pescadores abisales.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar un Tanque usado de sumergidor al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca al menos 500 peces en exploraciones de pescadores abisales para adquirir la mejora Grasa de las profundidades.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar Aletas de trinchera de Pahk al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca al menos 25 peces durante una exploración de pescadores abisales para adquirir la mejora Uniones reforzadas.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar Grasa de las profundidades al sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='esMX'); +UPDATE `achievement_locale` SET `Description_lang`='Pesca al menos 3 peces durante exploraciones de pescadores abisales.', `Reward_lang`='Recompensa: Desbloquea la opción de comprar Uniones reforzadas con el sumergidor Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='esMX'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='esMX'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'esMX', 'Un verdadero pescador abisal, certificado por el mismísimo sumergidor Jeju.', '|cFFFFD200Vendedor: |rSumergidor Tu\'nakit|n|cFFFFD200Zona: |rZul\'Aman|n|cFFFFD200Costo: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'esMX', '¿Qué estadística te gustaría medir?', '¿Qué estadística te gustaría medir?', 67186), +(289969, 'esMX', 'Ya he perdido a muchos de mis hermanos a manos del Pacto de Plata. \n\nDicen que fue una guerra, que ambos bandos sufrieron bajas. Mis Atracasol nunca purgaron a nadie de Dalaran. \n\nUna Brisaveloz se enfrentó a la justicia por purgar una ciudad. La otra me enfrenta hoy.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,288987,283177,273965)); +UPDATE `broadcast_text_locale` SET `Text1_lang`='Ese desborde de energía de la Fuente del Sol fue más poderoso que cualquier magia que haya visto, y eso que tengo mucha experiencia. Dicen que ese ejército nos protege, ¡pero también dicen que el desborde fue su culpa! ¿Acaso entienden con qué se están metiendo?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=290937 AND `locale`='esMX'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'esMX', 'Invadevacío %s', 'Invadevacío %s', 67186), +(1307, 'esMX', '%s, el Contendiente umbrío', '%s, la Contendiente umbría', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'esMX', '', 67186), +(62821, 'esMX', '', 67186), +(62820, 'esMX', '', 67186), +(62819, 'esMX', '', 67186), +(62818, 'esMX', '', 67186), +(62817, 'esMX', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'esMX', 'Color de tatuaje', 67186), +(8959, 'esMX', 'Tatuaje', 67186), +(8958, 'esMX', 'Venda', 67186), +(8957, 'esMX', 'Cuernos', 67186), +(8956, 'esMX', 'Color de tatuaje', 67186), +(8955, 'esMX', 'Tatuaje', 67186), +(8954, 'esMX', 'Venda', 67186), +(8953, 'esMX', 'Cuernos', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'esMX', '', 67186), +(224842, 'esMX', 'Duelos de decoraciones completados', 67186), +(224840, 'esMX', 'Duelos de decoraciones completados', 67186), +(224838, 'esMX', 'Duelos de decoraciones completados', 67186), +(223318, 'esMX', 'Pescadores abisales: El pez más prodigioso (3 criaturas míticas)', 67186), +(223121, 'esMX', 'Pescadores abisales: Sumergidor certificado', 67186), +(223119, 'esMX', 'Pescadores abisales: Rabioso de la zanja', 67186), +(222479, 'esMX', 'Pescadores abisales: Procedimiento protocolar', 67186), +(222477, 'esMX', 'Pescadores abisales: Contra viento y marea', 67186), +(222475, 'esMX', 'Pescadores abisales: Hasta a los mejores les pasa', 67186), +(222466, 'esMX', 'Pescadores abisales: Ídolo de las profundidades', 67186), +(222453, 'esMX', 'Pescadores abisales: Torreta de arpones nucleovacuo', 67186), +(222438, 'esMX', 'Pescadores abisales: Cañón de arpones pesados', 67186), +(222436, 'esMX', 'Pescadores abisales: Red de hilo triple', 67186), +(222434, 'esMX', 'Pescadores abisales: Red de los bajíos', 67186), +(222432, 'esMX', 'Pescadores abisales: Tanque de aliento de Nalorak', 67186), +(222430, 'esMX', 'Pescadores abisales: Tanque apto para profundidades', 67186), +(222428, 'esMX', 'Pescadores abisales: Tanque usado de sumergidor', 67186), +(222426, 'esMX', 'Pescadores abisales: Aletas de trinchera de Pahk', 67186), +(222424, 'esMX', 'Pescadores abisales: Grasa de las profundidades', 67186), +(222422, 'esMX', 'Pescadores abisales: Uniones reforzadas', 67186), +(222416, 'esMX', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'esMX', 'Imitación de Khadgar de Kreynna', 67186), +(220967, 'esMX', 'Evita que te marquen durante el primer minuto de Duelo de decoraciones.', 67186), +(220603, 'esMX', 'Bombardeo', 67186), +(220574, 'esMX', '¡Atrapados!', 67186), +(220573, 'esMX', 'Aguafiestas', 67186), +(212256, 'esMX', 'Evento de los pescadores abisales completado', 67186), +(212255, 'esMX', 'Completa el evento de los pescadores abisales', 67186), +(229140, 'esMX', '', 67186), +(229139, 'esMX', '', 67186), +(229048, 'esMX', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'esMX', 'Derrota a las fuerzas hal\'hadar', 67186), +(225426, 'esMX', 'Derrota a las fuerzas hal\'hadar', 67186), +(223423, 'esMX', 'Zarpánima liberado', 67186), +(223697, 'esMX', '', 67186), +(223696, 'esMX', '', 67186), +(223695, 'esMX', '', 67186), +(223693, 'esMX', '', 67186), +(219734, 'esMX', '', 67186), +(209802, 'esMX', 'Equipa a tu compañero con una singularidad de combate', 67186), +(170782, 'esMX', 'Equipa a tu compañero con una singularidad de combate', 67186), +(228515, 'esMX', 'Requisito de índice', 67186), +(228514, 'esMX', 'Logro - Mito de piedra angular: Primera temporada de calabozos de Midnight', 67186), +(227753, 'esMX', '', 67186), +(227677, 'esMX', '', 67186), +(227676, 'esMX', '', 67186), +(227675, 'esMX', '', 67186), +(227674, 'esMX', '', 67186), +(227673, 'esMX', '', 67186), +(227672, 'esMX', '', 67186), +(227671, 'esMX', '', 67186), +(225639, 'esMX', '', 67186), +(225638, 'esMX', '', 67186), +(225637, 'esMX', '', 67186), +(225636, 'esMX', '', 67186), +(225635, 'esMX', '', 67186), +(225634, 'esMX', 'Pescadores abisales: Perlas para el abismo', 67186), +(225611, 'esMX', '', 67186), +(225610, 'esMX', '', 67186), +(225609, 'esMX', 'Pescadores abisales: Coleccionista de antigüedades', 67186), +(220963, 'esMX', 'Juega una ronda sin que te marquen.', 67186), +(220961, 'esMX', 'Logra que no te encuentren durante 90 segundos ininterrumpidos.', 67186), +(220959, 'esMX', 'Gana como buscador en menos de dos minutos.', 67186), +(220958, 'esMX', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'esMX', 'Marca a un escondido encontrado como forestal arcano.', 67186), +(220955, 'esMX', 'Marca a un escondido encontrado como anulador.', 67186), +(220725, 'esMX', 'Marca a un escondido encontrado como rompedor de hechizos.', 67186), +(227430, 'esMX', '', 67186), +(223818, 'esMX', '', 67186), +(216419, 'esMX', '', 67186), +(216418, 'esMX', '', 67186), +(216417, 'esMX', '', 67186), +(227429, 'esMX', '', 67186), +(227428, 'esMX', 'Tiene una Prole de dracosolar como mascota.', 67186), +(225732, 'esMX', 'Mejora de red de los bajíos adquirida', 67186), +(224745, 'esMX', 'Centinela activado', 67186), +(222969, 'esMX', 'Plácido Susurro defendida', 67186), +(222803, 'esMX', 'Barreras dañadas', 67186), +(221550, 'esMX', 'Plagafragmento animado asesinado', 67186), +(219955, 'esMX', 'Vidente de colmena sifoide asesinada', 67186), +(219466, 'esMX', 'Vidente de colmena sifoide asesinada', 67186), +(225670, 'esMX', 'JZB Test Achievement 04', 67186), +(225668, 'esMX', 'JZB Test Achievement 03', 67186), +(225666, 'esMX', 'JZB Test Achievement 02', 67186), +(225664, 'esMX', 'JZB Test Achievement 01', 67186), +(227206, 'esMX', '', 67186), +(223209, 'esMX', 'Estadística: Crestalboradas míticas obtenidas', 67186), +(212362, 'esMX', 'Alcanza un nivel de objeto promedio de 285 durante la temporada 1 de Midnight (supera crestalboradas míticas)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='esMX'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'esMX', 'Núcleo del Vacío nebuloso', 'Se puede transmutar en equipo poderoso al derrotar a enemigos fuertes en bandas de la temporada 1 de Midnight o al completar calabozos míticos+, abismos abundantes y cacerías de presa en dificultad pesadilla.', 67186), +(3347, 'esMX', 'Crestalborada mítica', 'Se utiliza para mejorar el equipo mítico durante la temporada 1 de Midnight hasta los niveles de objeto 276-289. \n\nCuando se usa para la fabricación, establece el nivel de objeto resultante en 272-285 según la calidad.\n\nSe obtiene de las siguientes actividades:\n\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (mítico)\n- Calabozos de piedra angular mítica (nivel 9 y superior)', 67186), +(3346, 'esMX', 'Crestalborada de héroe', 'Se utiliza para mejorar el equipo de héroe durante la temporada 1 de Midnight hasta los niveles de objeto 263-276. Se obtiene de las siguientes actividades:\n\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (heroico)\n- Calabozos de piedra angular mítica (+4 a +8)\n- Abismos (nivel 11)\n- Botín de buscador de tesoros (nivel 8 y superior)\n- Cacerías de Presa (pesadilla)', 67186), +(3345, 'esMX', 'Crestalborada de héroe', 'Se utiliza para mejorar el equipo de héroe durante la temporada 1 de Midnight hasta los niveles de objeto 263-276. \n\nCuando se usa para la fabricación, establece el nivel de objeto resultante en 259-272 según la calidad.\n\nSe obtiene de las siguientes actividades:\n\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (heroico)\n- Calabozos de piedra angular mítica (+4 a +8)\n- Abismos (nivel 11)\n- Botín de buscador de tesoros (nivel 8 y superior)\n- Cacerías de Presa (pesadilla)', 67186), +(3344, 'esMX', 'Crestalborada de campeón', 'Se utiliza para mejorar el equipo de campeón durante la temporada 1 de Midnight hasta los niveles de objeto 250-263. Se obtiene de las siguientes actividades:\n\n- Eventos de exterior semanales\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (normal)\n- Calabozos míticos de temporada\n- Calabozos de piedra angular mítica (+2 a +3)\n- Abismos (niveles 7 a 10)\n- Botín de buscador de tesoros (niveles 6 a 7)\n- Cacerías de Presa (pesadilla)', 67186), +(3343, 'esMX', 'Crestalborada de campeón', 'Se utiliza para mejorar el equipo de campeón durante la temporada 1 de Midnight hasta los niveles de objeto 250-263. Se obtiene de las siguientes actividades:\n\n- Eventos de exterior semanales\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (normal)\n- Calabozos míticos de temporada\n- Calabozos de piedra angular mítica (+2 a +3)\n- Abismos (niveles 7 a 10)\n- Botín de buscador de tesoros (niveles 6 a 7)\n- Cacerías de Presa (pesadilla)', 67186), +(3342, 'esMX', 'Crestalborada de veterano', 'Se utiliza para mejorar el equipo de veterano durante la temporada 1 de Midnight hasta los niveles de objeto 237-250. Se obtiene de las siguientes actividades:\n\n- Eventos de exterior repetibles\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (buscador de bandas)\n- Calabozos heroicos de temporada\n- Abismos (niveles 5 a 6)\n- Botín de buscador de tesoros (niveles 4 a 5)\n- Cacerías de Presa (difícil)', 67186), +(3341, 'esMX', 'Crestalborada de veterano', 'Se utiliza para mejorar el equipo de veterano durante la temporada 1 de Midnight hasta los niveles de objeto 237-250. \n\nCuando se usa para la fabricación, establece el nivel de objeto resultante en 233-246 según la calidad.\n\nSe obtiene de las siguientes actividades:\n\n- Eventos de exterior repetibles\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (buscador de bandas)\n- Calabozos heroicos de temporada\n- Abismos (niveles 5 a 6)\n- Botín de buscador de tesoros (niveles 4 a 5)\n- Cacerías de Presa (difícil)', 67186), +(3418, 'esMX', 'Núcleo del Vacío nebuloso', 'Se puede transmutar en equipo poderoso al derrotar a enemigos fuertes en bandas de la temporada 1 de Midnight o al completar calabozos míticos+, abismos abundantes y cacerías de presa en dificultad pesadilla.', 67186), +(3391, 'esMX', 'Crestalborada de aventurero', 'Se utiliza para mejorar el equipo de aventurero durante la temporada 1 de Midnight hasta los niveles de objeto 224-237. Se obtiene de las siguientes actividades:\n\n- Eventos de exterior repetibles\n- Abismos de nivel 4\n- Cacerías de Presa (normal)', 67186), +(3383, 'esMX', 'Crestalborada de aventurero', 'Se utiliza para mejorar el equipo de aventurero durante la temporada 1 de Midnight hasta los niveles de objeto 224-237. \n\nCuando se usa para la fabricación, establece el nivel de objeto resultante en 220-233 según la calidad.\n\nSe obtiene de las siguientes actividades:\n\n- Eventos de exterior repetibles\n- Abismos de nivel 4\n- Cacerías de Presa (normal)', 67186), +(3348, 'esMX', 'Crestalborada mítica', 'Se utiliza para mejorar el equipo mítico durante la temporada 1 de Midnight hasta los niveles de objeto 276-289. Se obtiene de las siguientes actividades:\n\n- Aguja del Vacío, La Onirifalla, Marcha sobre Quel\'Danas (heroico)\n- Calabozos de piedra angular mítica (nivel 9 y superior)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='esMX'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'esMX', 'Rukhran', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'esMX', 'Ojo de Acherus', 67186), +(264717, 'esMX', 'Maleficio protector amani', 67186), +(264338, 'esMX', 'Consola de control domanaar', 67186), +(264336, 'esMX', 'Brasero vacioluz', 67186), +(264332, 'esMX', 'Altar de ritual amani', 67186), +(263238, 'esMX', 'Mesa larga ilícita', 67186), +(263230, 'esMX', 'Estante de magíster', 67186), +(256683, 'esMX', 'Muñeco de entrenamiento de Lunargenta', 67186), +(253451, 'esMX', 'Fuente de Rutavelo', 67186), +(245938, 'esMX', 'Enrejado arathi sobrecrecido', 67186), +(245560, 'esMX', 'Ventana ocre de hidromielería', 67186), +(241044, 'esMX', 'Cajón argusiano', 67186), +(267641, 'esMX', 'Cimera solar de Lunargenta deslustrada', 67186), +(267640, 'esMX', 'Velo del sol de Lunargenta deslustrado', 67186), +(267639, 'esMX', 'Guardia del sol de Lunargenta deslustrada', 67186), +(267638, 'esMX', 'Aguja del sol de Lunargenta deslustrada', 67186), +(267607, 'esMX', 'Manijas de penumbra brumosa', 67186), +(267606, 'esMX', 'Guantes de gravedad infinita', 67186), +(267605, 'esMX', 'Garras de vórtice sin fin', 67186), +(267604, 'esMX', 'Agarres de los behemoths colosales', 67186), +(267482, 'esMX', 'Gran cinturón de aspirante a defensor hara\'ti', 67186), +(267481, 'esMX', 'Cinturón de aspirante a defensor hara\'ti', 67186), +(267480, 'esMX', 'Cordón de aspirante a defensor hara\'ti', 67186), +(267479, 'esMX', 'Fajín de aspirante a defensor hara\'ti', 67186), +(266432, 'esMX', 'Cimera solar de Lunargenta', 67186), +(266431, 'esMX', 'Velo del sol de Lunargenta', 67186), +(266430, 'esMX', 'Guardia del sol de Lunargenta', 67186), +(266429, 'esMX', 'Aguja del sol de Lunargenta', 67186), +(263269, 'esMX', 'Gran cinturón de defensor hara\'ti', 67186), +(263268, 'esMX', 'Cinturón de defensor hara\'ti', 67186), +(263267, 'esMX', 'Cordón de defensor hara\'ti', 67186), +(263265, 'esMX', 'Fajín de defensor hara\'ti', 67186), +(272961, 'esMX', 'Bastón afilado de rompedor de hechizos', 67186), +(272960, 'esMX', 'Muro de escudos de rompedor de hechizos', 67186), +(272318, 'esMX', 'Espada fénix de rompedor de hechizos', 67186), +(272317, 'esMX', 'Guja fénix de rompedor de hechizos', 67186), +(272316, 'esMX', 'Espadalanza de rompedor de hechizos', 67186), +(19355, 'esMX', 'Bastón de enfoque de Alasombra', 67186), +(272338, 'esMX', 'Acero de hechizo de guardia mago', 67186), +(272337, 'esMX', 'Hoja de hechizo de guardia mago', 67186), +(272336, 'esMX', 'Machacafallas de señal nula', 67186), +(272321, 'esMX', 'Arco de hechizo de forestal arcano', 67186), +(272320, 'esMX', 'Canalizafallas de señal nula', 67186), +(273874, 'esMX', 'Arma de asta de Furia del Sol tocada por el Vacío', 67186), +(263970, 'esMX', 'Hoja de guja tocada por el Vacío', 67186), +(263969, 'esMX', 'Varita magna tocada por el Vacío', 67186), +(263968, 'esMX', 'Focos tocados por el Vacío', 67186), +(263967, 'esMX', 'Gran arco tocado por el Vacío', 67186), +(263966, 'esMX', 'Gran hoja tocada por el Vacío', 67186), +(263963, 'esMX', 'Hoja de duelo tocada por el Vacío', 67186), +(263960, 'esMX', 'Hoja refulgente tocada por el Vacío', 67186), +(263959, 'esMX', 'Tomo tocado por el Vacío', 67186), +(263956, 'esMX', 'Machacador tocado por el Vacío', 67186), +(263954, 'esMX', 'Bordón de batalla tocado por el Vacío', 67186), +(263952, 'esMX', 'Báculo de Furia del Sol tocado por el Vacío', 67186), +(263950, 'esMX', 'Puya tocada por el Vacío', 67186), +(263949, 'esMX', 'Baluarte tocado por el Vacío', 67186), +(263946, 'esMX', 'Partecaras tocado por el Vacío', 67186), +(263943, 'esMX', 'Destripadora tocada por el Vacío', 67186), +(263942, 'esMX', 'Colmillo tocado por el Vacío', 67186), +(263941, 'esMX', 'Rifle tocado por el Vacío', 67186), +(263707, 'esMX', 'Pulseras de cólera del Vacío', 67186), +(263706, 'esMX', 'Capa de cólera del Vacío', 67186), +(263705, 'esMX', 'Pretina de cólera del Vacío', 67186), +(263704, 'esMX', 'Espaldares de cólera del Vacío', 67186), +(263703, 'esMX', 'Quijotes de cólera del Vacío', 67186), +(263702, 'esMX', 'Yelmo de cólera del Vacío', 67186), +(263701, 'esMX', 'Guanteletes de cólera del Vacío', 67186), +(263700, 'esMX', 'Escarpes de cólera del Vacío', 67186), +(263699, 'esMX', 'Coraza de cólera del Vacío', 67186), +(263698, 'esMX', 'Blusa de némesis del Vacío', 67186), +(263697, 'esMX', 'Brazales de némesis del Vacío', 67186), +(263696, 'esMX', 'Capa de némesis del Vacío', 67186), +(263695, 'esMX', 'Cinturón de némesis del Vacío', 67186), +(263694, 'esMX', 'Bufas de némesis del Vacío', 67186), +(263693, 'esMX', 'Leotardos de némesis del Vacío', 67186), +(263692, 'esMX', 'Capacete de némesis del Vacío', 67186), +(263691, 'esMX', 'Guantes de némesis del Vacío', 67186), +(263690, 'esMX', 'Botas de némesis del Vacío', 67186), +(263689, 'esMX', 'Togas de némesis del Vacío', 67186), +(263688, 'esMX', 'Grebas de tormentas del Vacío', 67186), +(263687, 'esMX', 'Brazales de tormentas del Vacío', 67186), +(263686, 'esMX', 'Capa de tormentas del Vacío', 67186), +(263685, 'esMX', 'Cinturón de tormentas del Vacío', 67186), +(263684, 'esMX', 'Cubrehombros de tormentas del Vacío', 67186), +(263683, 'esMX', 'Falda de tormentas del Vacío', 67186), +(263682, 'esMX', 'Casco de tormentas del Vacío', 67186), +(263681, 'esMX', 'Guanteletes de tormentas del Vacío', 67186), +(263680, 'esMX', 'Escarpes de tormentas del Vacío', 67186), +(263679, 'esMX', 'Coraza de tormentas del Vacío', 67186), +(263678, 'esMX', 'Brazales de colmillovacío', 67186), +(263677, 'esMX', 'Capa de colmillovacío', 67186), +(263676, 'esMX', 'Cinturón de colmillovacío', 67186), +(263675, 'esMX', 'Bufas de colmillovacío', 67186), +(263674, 'esMX', 'Pantalones de colmillovacío', 67186), +(263673, 'esMX', 'Caperuza de colmillovacío', 67186), +(263672, 'esMX', 'Guantes de colmillovacío', 67186), +(263671, 'esMX', 'Botas de colmillovacío', 67186), +(263670, 'esMX', 'Pechera de colmillovacío', 67186), +(263669, 'esMX', 'Blusa de ascendencia del Vacío', 67186), +(263668, 'esMX', 'Ataduras de ascendencia del Vacío', 67186), +(263667, 'esMX', 'Capa de ascendencia del Vacío', 67186), +(263666, 'esMX', 'Cinturón de ascendencia del Vacío', 67186), +(263665, 'esMX', 'Espaldares de ascendencia del Vacío', 67186), +(263664, 'esMX', 'Leotardos de ascendencia del Vacío', 67186), +(263663, 'esMX', 'Halo de ascendencia del Vacío', 67186), +(263662, 'esMX', 'Manoplas de ascendencia del Vacío', 67186), +(263661, 'esMX', 'Botas de ascendencia del Vacío', 67186), +(263660, 'esMX', 'Togas de ascendencia del Vacío', 67186), +(263659, 'esMX', 'Grebas de sentencia del Vacío', 67186), +(263658, 'esMX', 'Ataduras de sentencia del Vacío', 67186), +(263657, 'esMX', 'Capa de sentencia del Vacío', 67186), +(263656, 'esMX', 'Cinturón de sentencia del Vacío', 67186), +(263655, 'esMX', 'Bufas de sentencia del Vacío', 67186), +(263654, 'esMX', 'Quijotes de sentencia del Vacío', 67186), +(263653, 'esMX', 'Corona de sentencia del Vacío', 67186), +(263652, 'esMX', 'Guanteletes de sentencia del Vacío', 67186), +(263651, 'esMX', 'Escarpes de sentencia del Vacío', 67186), +(263650, 'esMX', 'Coraza de sentencia del Vacío', 67186), +(263649, 'esMX', 'Ataduras del acólito del Vacío', 67186), +(263648, 'esMX', 'Capa del acólito del Vacío', 67186), +(263647, 'esMX', 'Cordón del acólito del Vacío', 67186), +(263646, 'esMX', 'Bufas del acólito del Vacío', 67186), +(263645, 'esMX', 'Pantalones del acólito del Vacío', 67186), +(263644, 'esMX', 'Yelmo del acólito del Vacío', 67186), +(263643, 'esMX', 'Mandiletes del acólito del Vacío', 67186), +(263642, 'esMX', 'Garfas del acólito del Vacío', 67186), +(263641, 'esMX', 'Jubón del acólito del Vacío', 67186), +(263640, 'esMX', 'Blusa de viento del Vacío', 67186), +(263639, 'esMX', 'Ataduras de viento del Vacío', 67186), +(263638, 'esMX', 'Capa de viento del Vacío', 67186), +(263637, 'esMX', 'Cinturón de viento del Vacío', 67186), +(263636, 'esMX', 'Manto de viento del Vacío', 67186), +(263635, 'esMX', 'Pantalones de viento del Vacío', 67186), +(263634, 'esMX', 'Corona de viento del Vacío', 67186), +(263633, 'esMX', 'Guantes de viento del Vacío', 67186), +(263632, 'esMX', 'Botas de viento del Vacío', 67186), +(263631, 'esMX', 'Togas de viento del Vacío', 67186), +(263630, 'esMX', 'Brazales de acechador del Vacío', 67186), +(263629, 'esMX', 'Capa de acechador del Vacío', 67186), +(263628, 'esMX', 'Cinturón de acechador del Vacío', 67186), +(263627, 'esMX', 'Bufas de acechador del Vacío', 67186), +(263626, 'esMX', 'Musleras de acechador del Vacío', 67186), +(263625, 'esMX', 'Yelmo de acechador del Vacío', 67186), +(263624, 'esMX', 'Guanteletes de acechador del Vacío', 67186), +(263623, 'esMX', 'Grebas de acechador del Vacío', 67186), +(263622, 'esMX', 'Coraza de acechador del Vacío', 67186), +(263621, 'esMX', 'Avambrazos de depositario del Vacío', 67186), +(263620, 'esMX', 'Capa de depositario del Vacío', 67186), +(263619, 'esMX', 'Faja de depositario del Vacío', 67186), +(263618, 'esMX', 'Espaldares de depositario del Vacío', 67186), +(263617, 'esMX', 'Quijotes de depositario del Vacío', 67186), +(263616, 'esMX', 'Corona de depositario del Vacío', 67186), +(263615, 'esMX', 'Garras de depositario del Vacío', 67186), +(263614, 'esMX', 'Garfas de depositario del Vacío', 67186), +(263613, 'esMX', 'Coraza de depositario del Vacío', 67186), +(263612, 'esMX', 'Coselete de ira del Vacío', 67186), +(263611, 'esMX', 'Brazales de ira del Vacío', 67186), +(263610, 'esMX', 'Capa de ira del Vacío', 67186), +(263609, 'esMX', 'Cinturón de ira del Vacío', 67186), +(263608, 'esMX', 'Espaldares de ira del Vacío', 67186), +(263607, 'esMX', 'Musleras de ira del Vacío', 67186), +(263606, 'esMX', 'Casquete de ira del Vacío', 67186), +(263605, 'esMX', 'Manoplas de ira del Vacío', 67186), +(263604, 'esMX', 'Botas de ira del Vacío', 67186), +(263603, 'esMX', 'Toga de ira del Vacío', 67186), +(263602, 'esMX', 'Brazales de abisario', 67186), +(263601, 'esMX', 'Capa de abisario', 67186), +(263600, 'esMX', 'Cordón de abisario', 67186), +(263599, 'esMX', 'Hombreras de abisario', 67186), +(263598, 'esMX', 'Leotardos de abisario', 67186), +(263597, 'esMX', 'Capacete de abisario', 67186), +(263596, 'esMX', 'Guantes de abisario', 67186), +(263595, 'esMX', 'Sandalias de abisario', 67186), +(263594, 'esMX', 'Arnés de abisario', 67186), +(263593, 'esMX', 'Avambrazos de jinete del Vacío', 67186), +(263592, 'esMX', 'Capa de jinete del Vacío', 67186), +(263591, 'esMX', 'Faja de jinete del Vacío', 67186), +(263590, 'esMX', 'Espaldares de jinete del Vacío', 67186), +(263589, 'esMX', 'Leotardos de jinete del Vacío', 67186), +(263588, 'esMX', 'Yelmo de jinete del Vacío', 67186), +(263587, 'esMX', 'Guantes de jinete del Vacío', 67186), +(263586, 'esMX', 'Escarpes de jinete del Vacío', 67186), +(263585, 'esMX', 'Coraza de jinete del Vacío', 67186), +(251161, 'esMX', 'Velo del cazador de almas', 67186), +(133494, 'esMX', 'Cinturón escabroso de zombi', 67186), +(49810, 'esMX', 'Cinturón escabroso de zombi', 67186), +(263286, 'esMX', 'Gong fungálido reconvertido', 67186), +(255627, 'esMX', 'Martillo de Gladiador galáctico', 67186), +(253582, 'esMX', 'Azotador de colmialeta', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'esMX', 'Te enseña a aplicar el encantamiento Adorno ilusorio: Sueños.', '', '', '', 'Fórmula: Adorno ilusorio: Sueños', 67186), +(206969, 'esMX', '', '', '', '', 'Adorno ilusorio: Sueños', 67186), +(206968, 'esMX', '', '', '', '', 'Adorno ilusorio: Sueños', 67186), +(206967, 'esMX', '', '', '', '', 'Adorno ilusorio: Sueños', 67186), +(204977, 'esMX', 'Te enseña a aplicar el encantamiento Adorno ilusorio: Esporas.', '', '', '', 'Fórmula: Adorno ilusorio: Esporas', 67186), +(204568, 'esMX', '', '', '', '', 'Adorno ilusorio: Esporas', 67186), +(204567, 'esMX', '', '', '', '', 'Adorno ilusorio: Esporas', 67186), +(204565, 'esMX', '', '', '', '', 'Adorno ilusorio: Esporas', 67186), +(201321, 'esMX', '', '', '', '', 'Adorno ilusorio: Orden', 67186), +(201320, 'esMX', '', '', '', '', 'Adorno ilusorio: Orden', 67186), +(201319, 'esMX', '', '', '', '', 'Adorno ilusorio: Orden', 67186), +(201318, 'esMX', '', '', '', '', 'Adorno ilusorio: Aire', 67186), +(201317, 'esMX', '', '', '', '', 'Adorno ilusorio: Aire', 67186), +(201316, 'esMX', '', '', '', '', 'Adorno ilusorio: Aire', 67186), +(201315, 'esMX', '', '', '', '', 'Adorno ilusorio: Tierra', 67186), +(201314, 'esMX', '', '', '', '', 'Adorno ilusorio: Tierra', 67186), +(201313, 'esMX', '', '', '', '', 'Adorno ilusorio: Tierra', 67186), +(201312, 'esMX', '', '', '', '', 'Adorno ilusorio: Escarcha', 67186), +(201311, 'esMX', '', '', '', '', 'Adorno ilusorio: Escarcha', 67186), +(201310, 'esMX', '', '', '', '', 'Adorno ilusorio: Escarcha', 67186), +(200616, 'esMX', '', '', '', '', 'Adorno ilusorio: Fuego', 67186), +(200615, 'esMX', '', '', '', '', 'Adorno ilusorio: Fuego', 67186), +(200614, 'esMX', '', '', '', '', 'Adorno ilusorio: Fuego', 67186), +(245345, 'esMX', 'Una mota fusionada de energía primigenia pura. Se puede comprar con la vendedora de abundancia Chel, la Esquirla, o el sumergidor Tu\'nakit, pescador abisal.', '', '', '', 'Vitalidad fusionada', 67186), +(243343, 'esMX', 'Una ventana a mucho mucho más.', '', '', '', 'Anomalía de pescador', 67186), +(243302, 'esMX', 'Un catalizador de crecimiento abrumador.', '', '', '', 'Flor acuario', 67186), +(274267, 'esMX', 'Una mota fusionada de energía primigenia pura. Se puede comprar con la vendedora de abundancia Chel, la Esquirla, o el sumergidor Tu\'nakit, pescador abisal.', '', '', '', 'Vitalidad fusionada', 67186), +(255157, 'esMX', '', '', '', '', 'Registro de pesca de pescador abisal', 67186), +(239563, 'esMX', 'Te enseña a invocar al lince marcado por el Vacío. La montura cambia según tu habilidad en equitación y la zona en la que estés.', '', '', '', 'Correa vinculasombras', 67186), +(223245, 'esMX', '', '', '', '', 'Conjunto: Pescador abisal', 67186), +(267009, 'esMX', '', '', '', '', 'Muñeco de entrenamiento amani', 67186), +(267007, 'esMX', '', '', '', '', 'Ojo de Acherus', 67186), +(264717, 'esMX', '', '', '', '', 'Maleficio protector amani', 67186), +(264342, 'esMX', '', '', '', '', 'Alijo del Vacío cósmico', 67186), +(264338, 'esMX', '', '', '', '', 'Consola de control domanaar', 67186), +(264336, 'esMX', '', '', '', '', 'Brasero vacioluz', 67186), +(264332, 'esMX', '', '', '', '', 'Altar de ritual amani', 67186), +(264330, 'esMX', '', '', '', '', 'Brasero colgante amani', 67186), +(264329, 'esMX', '', '', '', '', 'Mesa de comedor amani', 67186), +(264258, 'esMX', '', '', '', '', 'Forja floreciente', 67186), +(263238, 'esMX', '', '', '', '', 'Mesa larga ilícita', 67186), +(263233, 'esMX', '', '', '', '', 'Biblioteca giratoria sin\'dorei', 67186), +(263230, 'esMX', '', '', '', '', 'Estante de magíster', 67186), +(263042, 'esMX', '', '', '', '', 'Farola lumirraíz', 67186), +(263036, 'esMX', '', '', '', '', 'Flor del alba colgante', 67186), +(256683, 'esMX', '', '', '', '', 'Muñeco de entrenamiento de Lunargenta', 67186), +(253451, 'esMX', '', '', '', '', 'Fuente de Rutavelo', 67186), +(251967, 'esMX', '', '', '', '', 'Estandarte fungálido', 67186), +(245938, 'esMX', '', '', '', '', 'Enrejado arathi sobrecrecido', 67186), +(245560, 'esMX', '', '', '', '', 'Ventana ocre de hidromielería', 67186), +(241044, 'esMX', '', '', '', '', 'Cajón argusiano', 67186), +(264914, 'esMX', 'Un alijo que contiene galardones de campo, fragmentos de llave de arca de reliquias, materiales para mejorar el equipo, oro y más.', '', '', '', 'Alijo de forestal', 67186), +(275447, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador especulador', 67186), +(275446, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador buen rendimiento', 67186), +(275445, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador renta garantizada', 67186), +(275444, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador apuesta segura', 67186), +(275442, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Traje de meca amatista', 67186), +(275440, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Caminamuerte cerúleo', 67186), +(275436, 'esMX', 'Otorgada por el logro Mito de piedra angular de Midnight: Primera temporada. A Lindormi, que se encuentra en Lunargenta o en los Portales del Tiempo, le interesaría comprártela. Expira al final de la temporada.', '', '', '', 'Silla de montar cronoperdida', 67186), +(248248, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Volador azur del Vacío', 67186), +(247822, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Volador escarlata del Vacío', 67186), +(237141, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador dinámico', 67186), +(235549, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Tanque triturador goblin', 67186), +(226357, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Mecrataje de diamante', 67186), +(213438, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Armaduronte infinito', 67186), +(209060, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Armaduronte glauco', 67186), +(204798, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Armaduronte infernal', 67186), +(199412, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Armaduronte granizotormenta', 67186), +(192557, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Caminamuerte de restauración', 67186), +(187682, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Caminamuerte necrodistorsionado', 67186), +(187525, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Caminamuerte almatorturada', 67186), +(182717, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Caminamuerte tocado por el pecado', 67186), +(174836, 'esMX', 'Te enseña a invocar esta montura.', '', '', '', 'Taladramentes despierto', 67186), +(257741, 'esMX', 'Se puede comprar y vender en la casa de subastas.', '', '', '', 'B0P, curador de bums', 67186), +(257735, 'esMX', 'Se puede comprar y vender en la casa de subastas.', '', '', '', 'B0P, curador de bums', 67186), +(255844, 'esMX', 'Se puede comprar y vender en la casa de subastas.', '', '', '', '5HU5H, cachorro despreocupado', 67186), +(255843, 'esMX', 'Se puede comprar y vender en la casa de subastas.', '', '', '', '5HU5H, cachorro despreocupado', 67186), +(248592, 'esMX', 'Invoca a B1P, agostador de almas. Creado por jugadores con habilidad en ingeniería. Se puede comprar y vender en la casa de subastas.', '', '', '', 'B1P, agostador de almas', 67186), +(248135, 'esMX', 'Invoca a Bip, agostador de almas. Creado por jugadores con habilidad en ingeniería. Se puede comprar y vender en la casa de subastas.', '', '', '', 'B1P, agostador de almas', 67186), +(274427, 'esMX', 'ATENCIÓN: No se garantiza que contenga una montura real.', '', '', '', 'Caja de botín de sha', 67186), +(267643, 'esMX', '', '', '', '', 'Cordatótem amani desgastado', 67186), +(267642, 'esMX', '', '', '', '', 'Colgante cordacuore amani desgastado', 67186), +(267641, 'esMX', '', '', '', '', 'Cimera solar de Lunargenta deslustrada', 67186), +(267640, 'esMX', '', '', '', '', 'Velo del sol de Lunargenta deslustrado', 67186), +(267639, 'esMX', '', '', '', '', 'Guardia del sol de Lunargenta deslustrada', 67186), +(267638, 'esMX', '', '', '', '', 'Aguja del sol de Lunargenta deslustrada', 67186), +(267607, 'esMX', '', '', '', '', 'Manijas de penumbra brumosa', 67186), +(267606, 'esMX', '', '', '', '', 'Guantes de gravedad infinita', 67186), +(267605, 'esMX', '', '', '', '', 'Garras de vórtice sin fin', 67186), +(267604, 'esMX', '', '', '', '', 'Agarres de los behemoths colosales', 67186), +(267482, 'esMX', '', '', '', '', 'Gran cinturón de aspirante a defensor hara\'ti', 67186), +(267481, 'esMX', '', '', '', '', 'Cinturón de aspirante a defensor hara\'ti', 67186), +(267480, 'esMX', '', '', '', '', 'Cordón de aspirante a defensor hara\'ti', 67186), +(267479, 'esMX', '', '', '', '', 'Fajín de aspirante a defensor hara\'ti', 67186), +(266432, 'esMX', '', '', '', '', 'Cimera solar de Lunargenta', 67186), +(266431, 'esMX', '', '', '', '', 'Velo del sol de Lunargenta', 67186), +(266430, 'esMX', '', '', '', '', 'Guardia del sol de Lunargenta', 67186), +(266429, 'esMX', '', '', '', '', 'Aguja del sol de Lunargenta', 67186), +(265740, 'esMX', '', '', '', '', 'Cordatótem amani', 67186), +(265739, 'esMX', '', '', '', '', 'Colgante cordacuore amani', 67186), +(264507, 'esMX', '', '', '', '', 'Crisol de energías erráticas', 67186), +(263269, 'esMX', '', '', '', '', 'Gran cinturón de defensor hara\'ti', 67186), +(263268, 'esMX', '', '', '', '', 'Cinturón de defensor hara\'ti', 67186), +(263267, 'esMX', '', '', '', '', 'Cordón de defensor hara\'ti', 67186), +(263265, 'esMX', '', '', '', '', 'Fajín de defensor hara\'ti', 67186), +(270562, 'esMX', 'Una muestra ósea extrañamente contaminada. Quizás a Lady Pradoscuro le interese este objeto.', '', '', '', 'Muestra contaminada', 67186), +(249497, 'esMX', 'Pimientos tan picantes que la Fuente del Sol les impide la entrada.', '', '', '', 'Pimiento de las Tierras Fantasma', 67186), +(272961, 'esMX', '', '', '', '', 'Bastón afilado de rompedor de hechizos', 67186), +(272960, 'esMX', '', '', '', '', 'Muro de escudos de rompedor de hechizos', 67186), +(272318, 'esMX', '', '', '', '', 'Espada fénix de rompedor de hechizos', 67186), +(272317, 'esMX', '', '', '', '', 'Guja fénix de rompedor de hechizos', 67186), +(272316, 'esMX', '', '', '', '', 'Espadalanza de rompedor de hechizos', 67186), +(271631, 'esMX', 'ATENCIÓN: No se garantiza que contenga una montura real.', '', '', '', 'Recompensa de guardián de la Luz', 67186), +(19355, 'esMX', '', '', '', '', 'Bastón de enfoque de Alasombra', 67186), +(274578, 'esMX', 'Una pequeña benevolencia de Dundun, loa de la abundancia, que contiene 4500 de abundancia pura.', '', '', '', 'Ofrenda de abundancia pura', 67186), +(268455, 'esMX', '', '', '', '', 'Reloj de arena encantado', 67186), +(268122, 'esMX', 'Tus monedas fueron disipadas. Participa más en la próxima partida.', '', '', '', 'Monedas disipadas', 67186), +(272338, 'esMX', '', '', '', '', 'Acero de hechizo de guardia mago', 67186), +(272337, 'esMX', '', '', '', '', 'Hoja de hechizo de guardia mago', 67186), +(272336, 'esMX', '', '', '', '', 'Machacafallas de señal nula', 67186), +(272321, 'esMX', '', '', '', '', 'Arco de hechizo de forestal arcano', 67186), +(272320, 'esMX', '', '', '', '', 'Canalizafallas de señal nula', 67186), +(268481, 'esMX', 'Te enseña a invocar a la Abeja destructora. La montura cambia según tu habilidad en equitación y la zona en la que estés.', '', '', '', 'Panal de Abeja hechicera del magíster', 67186), +(268456, 'esMX', '', '', '', '', 'Banco animado', 67186), +(273874, 'esMX', '', '', '', '', 'Arma de asta de Furia del Sol tocada por el Vacío', 67186), +(263970, 'esMX', '', '', '', '', 'Hoja de guja tocada por el Vacío', 67186), +(263969, 'esMX', '', '', '', '', 'Varita magna tocada por el Vacío', 67186), +(263968, 'esMX', '', '', '', '', 'Focos tocados por el Vacío', 67186), +(263967, 'esMX', '', '', '', '', 'Gran arco tocado por el Vacío', 67186), +(263966, 'esMX', '', '', '', '', 'Gran hoja tocada por el Vacío', 67186), +(263963, 'esMX', '', '', '', '', 'Hoja de duelo tocada por el Vacío', 67186), +(263960, 'esMX', '', '', '', '', 'Hoja refulgente tocada por el Vacío', 67186), +(263959, 'esMX', '', '', '', '', 'Tomo tocado por el Vacío', 67186), +(263956, 'esMX', '', '', '', '', 'Machacador tocado por el Vacío', 67186), +(263954, 'esMX', '', '', '', '', 'Bordón de batalla tocado por el Vacío', 67186), +(263952, 'esMX', '', '', '', '', 'Báculo de Furia del Sol tocado por el Vacío', 67186), +(263950, 'esMX', '', '', '', '', 'Puya tocada por el Vacío', 67186), +(263949, 'esMX', '', '', '', '', 'Baluarte tocado por el Vacío', 67186), +(263946, 'esMX', '', '', '', '', 'Partecaras tocado por el Vacío', 67186), +(263943, 'esMX', '', '', '', '', 'Destripadora tocada por el Vacío', 67186), +(263942, 'esMX', '', '', '', '', 'Colmillo tocado por el Vacío', 67186), +(263941, 'esMX', '', '', '', '', 'Rifle tocado por el Vacío', 67186), +(263707, 'esMX', '', '', '', '', 'Pulseras de cólera del Vacío', 67186), +(263706, 'esMX', '', '', '', '', 'Capa de cólera del Vacío', 67186), +(263705, 'esMX', '', '', '', '', 'Pretina de cólera del Vacío', 67186), +(263704, 'esMX', '', '', '', '', 'Espaldares de cólera del Vacío', 67186), +(263703, 'esMX', '', '', '', '', 'Quijotes de cólera del Vacío', 67186), +(263702, 'esMX', '', '', '', '', 'Yelmo de cólera del Vacío', 67186), +(263701, 'esMX', '', '', '', '', 'Guanteletes de cólera del Vacío', 67186), +(263700, 'esMX', '', '', '', '', 'Escarpes de cólera del Vacío', 67186), +(263699, 'esMX', '', '', '', '', 'Coraza de cólera del Vacío', 67186), +(263698, 'esMX', '', '', '', '', 'Blusa de némesis del Vacío', 67186), +(263697, 'esMX', '', '', '', '', 'Brazales de némesis del Vacío', 67186), +(263696, 'esMX', '', '', '', '', 'Capa de némesis del Vacío', 67186), +(263695, 'esMX', '', '', '', '', 'Cinturón de némesis del Vacío', 67186), +(263694, 'esMX', '', '', '', '', 'Bufas de némesis del Vacío', 67186), +(263693, 'esMX', '', '', '', '', 'Leotardos de némesis del Vacío', 67186), +(263692, 'esMX', '', '', '', '', 'Capacete de némesis del Vacío', 67186), +(263691, 'esMX', '', '', '', '', 'Guantes de némesis del Vacío', 67186), +(263690, 'esMX', '', '', '', '', 'Botas de némesis del Vacío', 67186), +(263689, 'esMX', '', '', '', '', 'Togas de némesis del Vacío', 67186), +(263688, 'esMX', '', '', '', '', 'Grebas de tormentas del Vacío', 67186), +(263687, 'esMX', '', '', '', '', 'Brazales de tormentas del Vacío', 67186), +(263686, 'esMX', '', '', '', '', 'Capa de tormentas del Vacío', 67186), +(263685, 'esMX', '', '', '', '', 'Cinturón de tormentas del Vacío', 67186), +(263684, 'esMX', '', '', '', '', 'Cubrehombros de tormentas del Vacío', 67186), +(263683, 'esMX', '', '', '', '', 'Falda de tormentas del Vacío', 67186), +(263682, 'esMX', '', '', '', '', 'Casco de tormentas del Vacío', 67186), +(263681, 'esMX', '', '', '', '', 'Guanteletes de tormentas del Vacío', 67186), +(263680, 'esMX', '', '', '', '', 'Escarpes de tormentas del Vacío', 67186), +(263679, 'esMX', '', '', '', '', 'Coraza de tormentas del Vacío', 67186), +(263678, 'esMX', '', '', '', '', 'Brazales de colmillovacío', 67186), +(263677, 'esMX', '', '', '', '', 'Capa de colmillovacío', 67186), +(263676, 'esMX', '', '', '', '', 'Cinturón de colmillovacío', 67186), +(263675, 'esMX', '', '', '', '', 'Bufas de colmillovacío', 67186), +(263674, 'esMX', '', '', '', '', 'Pantalones de colmillovacío', 67186), +(263673, 'esMX', '', '', '', '', 'Caperuza de colmillovacío', 67186), +(263672, 'esMX', '', '', '', '', 'Guantes de colmillovacío', 67186), +(263671, 'esMX', '', '', '', '', 'Botas de colmillovacío', 67186), +(263670, 'esMX', '', '', '', '', 'Pechera de colmillovacío', 67186), +(263669, 'esMX', '', '', '', '', 'Blusa de ascendencia del Vacío', 67186), +(263668, 'esMX', '', '', '', '', 'Ataduras de ascendencia del Vacío', 67186), +(263667, 'esMX', '', '', '', '', 'Capa de ascendencia del Vacío', 67186), +(263666, 'esMX', '', '', '', '', 'Cinturón de ascendencia del Vacío', 67186), +(263665, 'esMX', '', '', '', '', 'Espaldares de ascendencia del Vacío', 67186), +(263664, 'esMX', '', '', '', '', 'Leotardos de ascendencia del Vacío', 67186), +(263663, 'esMX', '', '', '', '', 'Halo de ascendencia del Vacío', 67186), +(263662, 'esMX', '', '', '', '', 'Manoplas de ascendencia del Vacío', 67186), +(263661, 'esMX', '', '', '', '', 'Botas de ascendencia del Vacío', 67186), +(263660, 'esMX', '', '', '', '', 'Togas de ascendencia del Vacío', 67186), +(263659, 'esMX', '', '', '', '', 'Grebas de sentencia del Vacío', 67186), +(263658, 'esMX', '', '', '', '', 'Ataduras de sentencia del Vacío', 67186), +(263657, 'esMX', '', '', '', '', 'Capa de sentencia del Vacío', 67186), +(263656, 'esMX', '', '', '', '', 'Cinturón de sentencia del Vacío', 67186), +(263655, 'esMX', '', '', '', '', 'Bufas de sentencia del Vacío', 67186), +(263654, 'esMX', '', '', '', '', 'Quijotes de sentencia del Vacío', 67186), +(263653, 'esMX', '', '', '', '', 'Corona de sentencia del Vacío', 67186), +(263652, 'esMX', '', '', '', '', 'Guanteletes de sentencia del Vacío', 67186), +(263651, 'esMX', '', '', '', '', 'Escarpes de sentencia del Vacío', 67186), +(263650, 'esMX', '', '', '', '', 'Coraza de sentencia del Vacío', 67186), +(263649, 'esMX', '', '', '', '', 'Ataduras del acólito del Vacío', 67186), +(263648, 'esMX', '', '', '', '', 'Capa del acólito del Vacío', 67186), +(263647, 'esMX', '', '', '', '', 'Cordón del acólito del Vacío', 67186), +(263646, 'esMX', '', '', '', '', 'Bufas del acólito del Vacío', 67186), +(263645, 'esMX', '', '', '', '', 'Pantalones del acólito del Vacío', 67186), +(263644, 'esMX', '', '', '', '', 'Yelmo del acólito del Vacío', 67186), +(263643, 'esMX', '', '', '', '', 'Mandiletes del acólito del Vacío', 67186), +(263642, 'esMX', '', '', '', '', 'Garfas del acólito del Vacío', 67186), +(263641, 'esMX', '', '', '', '', 'Jubón del acólito del Vacío', 67186), +(263640, 'esMX', '', '', '', '', 'Blusa de viento del Vacío', 67186), +(263639, 'esMX', '', '', '', '', 'Ataduras de viento del Vacío', 67186), +(263638, 'esMX', '', '', '', '', 'Capa de viento del Vacío', 67186), +(263637, 'esMX', '', '', '', '', 'Cinturón de viento del Vacío', 67186), +(263636, 'esMX', '', '', '', '', 'Manto de viento del Vacío', 67186), +(263635, 'esMX', '', '', '', '', 'Pantalones de viento del Vacío', 67186), +(263634, 'esMX', '', '', '', '', 'Corona de viento del Vacío', 67186), +(263633, 'esMX', '', '', '', '', 'Guantes de viento del Vacío', 67186), +(263632, 'esMX', '', '', '', '', 'Botas de viento del Vacío', 67186), +(263631, 'esMX', '', '', '', '', 'Togas de viento del Vacío', 67186), +(263630, 'esMX', '', '', '', '', 'Brazales de acechador del Vacío', 67186), +(263629, 'esMX', '', '', '', '', 'Capa de acechador del Vacío', 67186), +(263628, 'esMX', '', '', '', '', 'Cinturón de acechador del Vacío', 67186), +(263627, 'esMX', '', '', '', '', 'Bufas de acechador del Vacío', 67186), +(263626, 'esMX', '', '', '', '', 'Musleras de acechador del Vacío', 67186), +(263625, 'esMX', '', '', '', '', 'Yelmo de acechador del Vacío', 67186), +(263624, 'esMX', '', '', '', '', 'Guanteletes de acechador del Vacío', 67186), +(263623, 'esMX', '', '', '', '', 'Grebas de acechador del Vacío', 67186), +(263622, 'esMX', '', '', '', '', 'Coraza de acechador del Vacío', 67186), +(263621, 'esMX', '', '', '', '', 'Avambrazos de depositario del Vacío', 67186), +(263620, 'esMX', '', '', '', '', 'Capa de depositario del Vacío', 67186), +(263619, 'esMX', '', '', '', '', 'Faja de depositario del Vacío', 67186), +(263618, 'esMX', '', '', '', '', 'Espaldares de depositario del Vacío', 67186), +(263617, 'esMX', '', '', '', '', 'Quijotes de depositario del Vacío', 67186), +(263616, 'esMX', '', '', '', '', 'Corona de depositario del Vacío', 67186), +(263615, 'esMX', '', '', '', '', 'Garras de depositario del Vacío', 67186), +(263614, 'esMX', '', '', '', '', 'Garfas de depositario del Vacío', 67186), +(263613, 'esMX', '', '', '', '', 'Coraza de depositario del Vacío', 67186), +(263612, 'esMX', '', '', '', '', 'Coselete de ira del Vacío', 67186), +(263611, 'esMX', '', '', '', '', 'Brazales de ira del Vacío', 67186), +(263610, 'esMX', '', '', '', '', 'Capa de ira del Vacío', 67186), +(263609, 'esMX', '', '', '', '', 'Cinturón de ira del Vacío', 67186), +(263608, 'esMX', '', '', '', '', 'Espaldares de ira del Vacío', 67186), +(263607, 'esMX', '', '', '', '', 'Musleras de ira del Vacío', 67186), +(263606, 'esMX', '', '', '', '', 'Casquete de ira del Vacío', 67186), +(263605, 'esMX', '', '', '', '', 'Manoplas de ira del Vacío', 67186), +(263604, 'esMX', '', '', '', '', 'Botas de ira del Vacío', 67186), +(263603, 'esMX', '', '', '', '', 'Toga de ira del Vacío', 67186), +(263602, 'esMX', '', '', '', '', 'Brazales de abisario', 67186), +(263601, 'esMX', '', '', '', '', 'Capa de abisario', 67186), +(263600, 'esMX', '', '', '', '', 'Cordón de abisario', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'esMX', '', '', '', '', 'Hombreras de abisario', 67186), +(263598, 'esMX', '', '', '', '', 'Leotardos de abisario', 67186), +(263597, 'esMX', '', '', '', '', 'Capacete de abisario', 67186), +(263596, 'esMX', '', '', '', '', 'Guantes de abisario', 67186), +(263595, 'esMX', '', '', '', '', 'Sandalias de abisario', 67186), +(263594, 'esMX', '', '', '', '', 'Arnés de abisario', 67186), +(263593, 'esMX', '', '', '', '', 'Avambrazos de jinete del Vacío', 67186), +(263592, 'esMX', '', '', '', '', 'Capa de jinete del Vacío', 67186), +(263591, 'esMX', '', '', '', '', 'Faja de jinete del Vacío', 67186), +(263590, 'esMX', '', '', '', '', 'Espaldares de jinete del Vacío', 67186), +(263589, 'esMX', '', '', '', '', 'Leotardos de jinete del Vacío', 67186), +(263588, 'esMX', '', '', '', '', 'Yelmo de jinete del Vacío', 67186), +(263587, 'esMX', '', '', '', '', 'Guantes de jinete del Vacío', 67186), +(263586, 'esMX', '', '', '', '', 'Escarpes de jinete del Vacío', 67186), +(263585, 'esMX', '', '', '', '', 'Coraza de jinete del Vacío', 67186), +(251161, 'esMX', 'Una reliquia de los rituales retorcidos secretos para los vilrama.', '', '', '', 'Velo del cazador de almas', 67186), +(133494, 'esMX', '', '', '', '', 'Cinturón escabroso de zombi', 67186), +(49810, 'esMX', '', '', '', '', 'Cinturón escabroso de zombi', 67186), +(264323, 'esMX', 'Contiene un arma tocada por el Vacío estética que no tienes en tu colección.', '', '', '', 'Alijo de armas tocadas por el Vacío', 67186), +(264322, 'esMX', 'Contiene botas tocadas por el Vacío estéticas que no tienes en tu colección.', '', '', '', 'Alijo de botas tocadas por el Vacío', 67186), +(264321, 'esMX', 'Contiene vestimentas para las piernas tocadas por el Vacío estéticas que no tienes en tu colección.', '', '', '', 'Alijo de vestimentas para las piernas tocadas por el Vacío', 67186), +(264320, 'esMX', 'Contiene cinturones tocados por el Vacío estéticos que no tienes en tu colección.', '', '', '', 'Alijo de cinturones tocados por el Vacío', 67186), +(264319, 'esMX', 'Contiene guantes tocados por el Vacío estéticos que no tienes en tu colección.', '', '', '', 'Alijo de guantes tocados por el Vacío', 67186), +(264318, 'esMX', 'Contiene brazales tocados por el Vacío estéticos que no tienes en tu colección.', '', '', '', 'Alijo de brazales tocados por el Vacío', 67186), +(264317, 'esMX', 'Contiene pecheras tocadas por el Vacío estéticas que no tienes en tu colección.', '', '', '', 'Alijo de pecheras tocadas por el Vacío', 67186), +(264316, 'esMX', 'Contiene capas tocadas por el Vacío estéticas que no tienes en tu colección.', '', '', '', 'Alijo de capas tocadas por el Vacío', 67186), +(264315, 'esMX', 'Contiene unas hombreras tocadas por el Vacío estéticas que no tienes en tu colección.', '', '', '', 'Alijo de vestimentas para los hombros tocadas por el Vacío', 67186), +(264314, 'esMX', 'Contiene un yelmo tocado por el Vacío estético que no tienes en tu colección.', '', '', '', 'Alijo de cascos tocados por el Vacío', 67186), +(256700, 'esMX', 'Te enseña a fabricar un sello de bendiciones azerothianas.', '', '', '', 'Boceto: Sello de bendiciones azerothianas', 67186), +(250445, 'esMX', '', '', '', '', 'Eco de abundancia: Encantamiento', 67186), +(250360, 'esMX', '', '', '', '', 'Eco de abundancia: Desuello', 67186), +(250443, 'esMX', '', '', '', '', 'Eco de abundancia: Herboristería', 67186), +(272125, 'esMX', 'Contiene oro, marga vacioluz y un objeto de tu especialización actual, como reconocimiento de tus conocimientos en el campo.', '', '', '', 'Alijo de recluta', 67186), +(263286, 'esMX', '', '', '', '', 'Gong fungálido reconvertido', 67186), +(273307, 'esMX', '¡Recién exprimida por un emprendedor intrépido! Los cristales de azúcar brillan en su interior... ¿O son cristales de maná?', '', '', '', 'Vial de limonada intrépida', 67186), +(265790, 'esMX', 'Una cartera con 10 crestalboradas míticas y de héroe.', '', '', '', 'Alijo de crestalboradas', 67186), +(246753, 'esMX', '', '', '', '', 'Conjunto glorioso de crestalboradas míticas', 67186), +(255627, 'esMX', '', '', '', '', 'Martillo de Gladiador galáctico', 67186), +(266969, 'esMX', '', '', '', '', 'Conjunto: Vestimentas de sumergidor', 67186), +(253582, 'esMX', '', '', '', '', 'Azotador de colmialeta', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'esMX', 'Tanques', '$bullet; El Acaparador de Tesoros empieza a recolectar del montón de recursos más cercano durante |cFF2959D3|Hspell:1235072|h[Medidas prácticas]|h|r.\n$bullet; Los champiñones podridos aplican |cFF2959D3|Hspell:1234846|h[Esporas tóxicas]|h|r cuando chocan con algo, lo que impide que detonen con una |cFF2959D3|Hspell:1245593|h[Ráfaga pútrida]|h|r.\n$bullet; |cFF2959D3|Hspell:1234681|h[Bramido voraz]|h|r y |cFF2959D3|Hspell:1235125|h[Bramido vigoroso]|h|r infligen un gran daño a todos los jugadores.', 67186), +(32669, 'esMX', 'Resumen', 'Para impedir el saqueo de sus reservas a toda costa, el Acaparador de Tesoros lanza |cFF2959D3|Hspell:1235072|h[Medidas prácticas]|h|r cuando llega al 90%, 60% y 30% de salud, lo que potencia una de sus habilidades.\n\nCuando llega a 100 p. de energía, arroja |cFF2959D3|Hspell:1234233|h[Suministros estropeados]|h|r por toda la arena y crecen champiñones podridos durante 12 segundos. Al entrar en contacto con ellos, aplican |cFF2959D3|Hspell:1234846|h[Esporas tóxicas]|h|r, lo cual destruye al hongo y evita la formación de una |cFF2959D3|Hspell:1245593|h[Ráfaga pútrida]|h|r.', 67186), +(31527, 'esMX', 'Cargamento prohibido', 'Un cargamento que debe permanecer oculto ante ojos indiscretos. Ostenta una excelente capacidad de cubierta.', 67186), +(31282, 'esMX', 'Tanque', '$bullet; Kystia vuelve a Mordiscos hostil contra los jugadores con |cFF2959D3|Hspell:1230289|h[Infusión ilícita]|h|r.\n$bullet; Esquiva el |cFF2959D3|Hspell:1253811|h[Pulverizador vil]|h|r de Mordiscos.\n$bullet; Interrumpe los |cFF2959D3|Hspell:1264095|h[Reflejos exactos]|h|r de Kystia.', 67186), +(31281, 'esMX', 'Sanadores', '$bullet; Kystia vuelve a Mordiscos hostil contra los jugadores con |cFF2959D3|Hspell:1230289|h[Infusión ilícita]|h|r.\n$bullet; Esquiva el |cFF2959D3|Hspell:1253811|h[Pulverizador vil]|h|r de Mordiscos.\n$bullet; Kystia inflige mucho daño contra todos los jugadores durante |cFF2959D3|Hspell:1265412|h[Desestabilizado]|h|r.', 67186), +(31280, 'esMX', 'Infligidores de daño', '$bullet; Kystia vuelve a Mordiscos hostil contra los jugadores con |cFF2959D3|Hspell:1230289|h[Infusión ilícita]|h|r.\n$bullet; Esquiva el |cFF2959D3|Hspell:1253811|h[Pulverizador vil]|h|r de Mordiscos.\n$bullet; Interrumpe los |cFF2959D3|Hspell:1264095|h[Reflejos exactos]|h|r de Kystia.', 67186), +(35862, 'esMX', 'Section 18', '', 67186), +(35353, 'esMX', 'Sección 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'esMX', 'Sección 17', '', 67186), +(34733, 'esMX', 'Astucia de Xal\'atath', 'Xal\'atath traiciona a los jugadores, revoca sus pactos y hace que las muertes resten 15 segundos del tiempo que queda.', 67186), +(34732, 'esMX', 'Reforzado', 'Los enemigos que no son jefes tienen un 20% más de salud e infligen hasta un 20% más de daño.', 67186), +(34731, 'esMX', 'Tiránico', 'Los jefes tienen un 25% más de salud. Los jefes y sus esbirros infligen hasta un 15% más de daño.', 67186), +(34730, 'esMX', 'Tiránico y Reforzado', 'Estos afijos potencian más a los enemigos en calabozos de piedra angular mítica. Uno se activa en el nivel mítico 7, y el otro se activa en el nivel mítico 10. La rotación es semanal.', 67186), +(34727, 'esMX', 'Pacto de Xal\'atath: Devorar', '', 67186), +(34725, 'esMX', 'Pacto de Xal\'atath: Unida al Vacío', '', 67186), +(34722, 'esMX', 'Pacto de Xal\'atath: Púlsar', '', 67186), +(34720, 'esMX', 'Nivel mítico 6', '$bullet;|cFF2959D3|Hspell:1284818|h[Guía de Lindormi]|h|r se elimina.\n\nLos personajes con especialización de tanque pueden hablar con Lindormi cerca del portal de los Portales del Tiempo o al final de un calabozo de piedra angular para obtener |cFF2959D3|Hspell:1295986|h[Destello de Lindormi]|h|r, que seguirá marcando a las fuerzas enemigas.', 67186), +(35809, 'esMX', 'Section 158', '', 67186), +(35491, 'esMX', 'Sección 69', '', 67186), +(35490, 'esMX', 'Sección 70', '', 67186), +(35489, 'esMX', 'Sección 76', '', 67186), +(35488, 'esMX', 'Sección 67', '$[!15,16\nEn dificultad heroica y superior, Galvanizar desata una Corriente aniquiladora.$]', 67186), +(35477, 'esMX', 'Sección 22', '', 67186), +(35476, 'esMX', 'Sección 31', '', 67186), +(35475, 'esMX', 'Sección 30', '', 67186), +(35474, 'esMX', 'Sección 29', '', 67186), +(35473, 'esMX', 'Sección 31', '', 67186), +(35472, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.\n$[!16\nEn dificultad mítica, los cristales del alba corren el riesgo de sufrir el Fin de la Luz.$]', 67186), +(35471, 'esMX', 'Sección 22', '', 67186), +(35470, 'esMX', 'Sección 31', '', 67186), +(35469, 'esMX', 'Sección 30', '', 67186), +(35468, 'esMX', 'Sección 29', '', 67186), +(35467, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.\n$[!15\nEn dificultad heroica, los cristales del alba pueden derramar lágrimas de L\'ura.$]', 67186), +(35466, 'esMX', 'Sección 22', '', 67186), +(35465, 'esMX', 'Sección 31', '', 67186), +(35464, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.', 67186), +(35463, 'esMX', 'Sección 22', '', 67186), +(35462, 'esMX', 'Sección 31', '', 67186), +(35461, 'esMX', 'Sección 30', '', 67186), +(35460, 'esMX', 'Sección 29', '', 67186), +(35459, 'esMX', 'Sección 31', '', 67186), +(35458, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.\n$[!16\nEn dificultad mítica, los cristales del alba corren el riesgo de sufrir el Fin de la Luz.$]', 67186), +(35457, 'esMX', 'Sección 22', '', 67186), +(35456, 'esMX', 'Sección 31', '', 67186), +(35455, 'esMX', 'Sección 30', '', 67186), +(35454, 'esMX', 'Sección 29', '', 67186), +(35453, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.\n$[!15\nEn dificultad heroica, los cristales del alba pueden derramar lágrimas de L\'ura.$]', 67186), +(35452, 'esMX', 'Sección 22', '', 67186), +(35451, 'esMX', 'Sección 31', '', 67186), +(35450, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.', 67186), +(35449, 'esMX', 'Sección 22', '', 67186), +(35448, 'esMX', 'Sección 31', '', 67186), +(35447, 'esMX', 'Sección 30', '', 67186), +(35446, 'esMX', 'Sección 29', '', 67186), +(35445, 'esMX', 'Sección 31', '', 67186), +(35444, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.\n$[!16\nEn dificultad mítica, los cristales del alba corren el riesgo de sufrir el Fin de la Luz.$]', 67186), +(35443, 'esMX', 'Sección 22', '', 67186), +(35442, 'esMX', 'Sección 31', '', 67186), +(35441, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.', 67186), +(35440, 'esMX', 'Sección 108', '', 67186), +(35439, 'esMX', 'Sección 108', '', 67186), +(35438, 'esMX', 'Sección 107', '', 67186), +(35435, 'esMX', 'Sección 105', '', 67186), +(35434, 'esMX', 'Sección 104', '', 67186), +(35418, 'esMX', 'Sección 108', '', 67186), +(35373, 'esMX', 'Sección 30', '', 67186), +(35371, 'esMX', 'Sección 29', '', 67186), +(35366, 'esMX', 'Sección 31', '', 67186), +(35361, 'esMX', 'Sección 22', '', 67186), +(35360, 'esMX', 'Cristal del alba', 'Un fragmento de naaru purificado que los jugadores pueden portar.\n$[!15\nEn dificultad heroica, los cristales del alba pueden derramar lágrimas de L\'ura.$]', 67186), +(35357, 'esMX', 'Sección 106', '', 67186), +(35344, 'esMX', 'Sección 23', '', 67186), +(35343, 'esMX', 'Sección 22', '', 67186), +(35342, 'esMX', 'Cristal del ocaso', 'Un fragmento de naaru tenue que quizá pueda restaurarse.', 67186), +(35341, 'esMX', 'Sección 24', '', 67186), +(35340, 'esMX', 'Cristal de medianoche', 'Un fragmento de naaru oscuro más allá de la salvación.', 67186), +(35339, 'esMX', 'Sección 19', '', 67186), +(35338, 'esMX', 'Sección 18', '', 67186), +(35336, 'esMX', 'Sección 16', '', 67186), +(35328, 'esMX', 'Sección 11', '', 67186), +(35327, 'esMX', 'Sección 10', '', 67186), +(35326, 'esMX', 'Sección 9', '', 67186), +(35325, 'esMX', 'Sección 8', '$[!15\nEn dificultad heroica, la cantidad de notas aumenta con cada melodía.$]', 67186), +(35324, 'esMX', 'Sección 11', '', 67186), +(35319, 'esMX', 'Sección 80', '', 67186), +(35317, 'esMX', 'Sección 69', '', 67186), +(35316, 'esMX', 'Sección 70', '', 67186), +(35315, 'esMX', 'Sección 76', '', 67186), +(35314, 'esMX', 'Sección 67', '$[!15,16\nEn dificultad heroica y superior, Galvanizar desata una Corriente aniquiladora.$]', 67186), +(35311, 'esMX', 'Sección 69', '', 67186), +(35309, 'esMX', 'Sección 74', '', 67186), +(35274, 'esMX', 'Sección 70', '$[!16\nEn dificultad mítica, Fisión cósmica alcanza Estado crítico.$]', 67186), +(35273, 'esMX', 'Sección 69', '', 67186), +(35272, 'esMX', 'Sección 67', '', 67186), +(35131, 'esMX', 'Sección 13', '', 67186), +(35106, 'esMX', 'Sección 67', '', 67186), +(35068, 'esMX', 'Sección 64', '', 67186), +(35067, 'esMX', 'Sección 63', '', 67186), +(35041, 'esMX', 'Sección 35', '', 67186), +(35040, 'esMX', 'Sección 51', '', 67186), +(35038, 'esMX', 'Sección 14', '', 67186), +(35037, 'esMX', 'Sección 14', '', 67186), +(35036, 'esMX', 'Intervalo: Eclipse total', 'Observa cómo la luz se fractura y desvanece.', 67186), +(34847, 'esMX', 'Sección 11', '', 67186), +(34846, 'esMX', 'Sección 10', '', 67186), +(34845, 'esMX', 'Sección 9', '', 67186), +(34844, 'esMX', 'Sección 8', '', 67186), +(34474, 'esMX', 'Sección 44', '', 67186), +(34456, 'esMX', 'Sección 45', '', 67186), +(34450, 'esMX', 'Sección 46', '', 67186), +(34243, 'esMX', 'Sección 14', '', 67186), +(34242, 'esMX', 'Sección 14', '', 67186), +(34001, 'esMX', 'Sección 38', '', 67186), +(34000, 'esMX', 'Sección 35', '', 67186), +(33990, 'esMX', 'Sección 32', '', 67186), +(33989, 'esMX', 'Sección 32', '', 67186), +(33983, 'esMX', 'Sección 23', '', 67186), +(33982, 'esMX', 'Sección 22', '', 67186), +(33981, 'esMX', 'Cristal del ocaso', 'Un fragmento de naaru tenue que quizá pueda restaurarse.', 67186), +(33975, 'esMX', 'Sección 25', '', 67186), +(33924, 'esMX', 'Sección 24', '', 67186), +(33742, 'esMX', 'Cristal de medianoche', 'Un fragmento de naaru oscuro más allá de la salvación.', 67186), +(33741, 'esMX', 'Sección 19', '', 67186), +(33740, 'esMX', 'Sección 15', '', 67186), +(33739, 'esMX', 'Sección 18', '', 67186), +(33738, 'esMX', 'Matriz de ejecución', '', 67186), +(33737, 'esMX', 'Sección 16', '', 67186), +(33640, 'esMX', 'Sección 12', '', 67186), +(33638, 'esMX', 'Fase dos: El reactor oscuro', 'Adéntrate en el motor de la desolación.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Sección 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='esMX'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='esMX'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'esMX', '¡Saludos, $gacólito:acólita;!\n\n¡Contempla la maravilla de este terreno que rebosa de ABUNDANCIA GLORIOSA! ¡Mana, brota, rechaza todo intento de contención!\n\nTu devoción hacia mi divino ser merece una pequeña benevolencia. ¡Esta vez, en la forma de abundancia pura!\n\nY toma nota, gentil $gacólito:acólita;: algunas ofrendas, como la vitalidad fusionada, ahora estarán disponibles con otros comerciantes. Tal vez los encuentres, si es que tus excursiones te llevan cerca de las Profundidades de Zul\'Aman.\n\nTe desea la más maravillosa de las cosechas,\n\n-Dundun, loa de la abundancia', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='esMX'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'esMX', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='esMX'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'esMX', 'Academia Algeth\'ar', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'esMX', 'Tanque triturador buen rendimiento', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3009, 'esMX', 'Tanque triturador especulador', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3008, 'esMX', 'Tanque triturador renta garantizada', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3007, 'esMX', 'Tanque triturador apuesta segura', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3006, 'esMX', 'Traje de meca amatista', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(3005, 'esMX', 'Caminamuerte cerúleo', '|cFFFFD200Vendedora:|r Lindormi|n', '', 67186), +(2535, 'esMX', 'Lince marcado por el Vacío', '|cFFFFD200Botín:|r Bolsa de cultista confiscada', 'Domesticar linces es una práctica que los arathi han perfeccionado durante años. Si bien los cultores del Sagrario del Ocaso siguen fieles a su causa, son los responsables de transmitir esa tradición.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='esMX'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'esMX', 'Pesca con pescadores abisales', 'Habla con el sumergidor Jeju en las Profundidades de Zul\'Aman para empezar a pescar.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'esMX', '', 67186), +(158259, 'esMX', '', 67186), +(158261, 'esMX', '', 67186), +(156069, 'esMX', 'Requiere el logro:|nPescadores abisales: Pesca en el azul infinito', 67186), +(151169, 'esMX', 'Requiere el logro:|nPescadores abisales: Ídolo de las profundidades', 67186), +(151168, 'esMX', 'Requiere el logro:|nPescadores abisales: Red de hilo triple', 67186), +(151167, 'esMX', 'Requiere el logro:|nPescadores abisales: Red de los bajíos', 67186), +(151166, 'esMX', 'Requiere el logro: Pescadores abisales: Torreta de arpones nucleovacuo', 67186), +(151165, 'esMX', 'Requiere el logro: Pescadores abisales: Cañón de arpones pesados', 67186), +(151161, 'esMX', 'Requiere el logro:|nPescadores abisales: Aletas de trinchera de Pahk', 67186), +(151160, 'esMX', 'Requiere el logro:|nPescadores abisales: Grasa de las profundidades', 67186), +(151159, 'esMX', 'Requiere el logro:|nPescadores abisales: Uniones reforzadas', 67186), +(151158, 'esMX', 'Requiere el logro:|nPescadores abisales: Tanque de aliento de Nalorakk', 67186), +(151157, 'esMX', 'Requiere el logro:|nPescadores abisales: Tanque apto para profundidades', 67186), +(151155, 'esMX', 'Requiere el logro:|nPescadores abisales: Tanque usado de sumergidor', 67186), +(155979, 'esMX', '', 67186), +(157695, 'esMX', 'Disponible solo en abismos de nivel 11.', 67186), +(157666, 'esMX', '', 67186), +(157603, 'esMX', 'Se desbloquea al progresar en la temporada 1 de la travesía de surcabismos.', 67186), +(154160, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154159, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154158, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154157, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154156, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154155, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154154, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154153, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154152, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(154151, 'esMX', 'Has conseguido todas las apariencias de transfiguración de este alijo.', 67186), +(157668, 'esMX', 'No tienes una silla de montar cronoperdida. No puedes comprar este objeto.', 67186), +(155203, 'esMX', '', 67186), +(155192, 'esMX', '', 67186), +(155185, 'esMX', '', 67186), +(154642, 'esMX', '', 67186), +(156525, 'esMX', '', 67186), +(156524, 'esMX', '', 67186), +(151196, 'esMX', '', 67186), +(157003, 'esMX', '', 67186), +(157002, 'esMX', '', 67186), +(156957, 'esMX', '', 67186), +(156933, 'esMX', '', 67186), +(151162, 'esMX', 'Requiere el logro:|nPescadores abisales: Carnada para aletín', 67186), +(156816, 'esMX', '', 67186), +(154472, 'esMX', 'Requiere el logro:|nPescadores abisales: Gafas presurizadas', 67186), +(151164, 'esMX', 'Requiere el logro:|nPescadores abisales: Carne de sondeafondos', 67186), +(151163, 'esMX', 'Requiere el logro:|nPescadores abisales: Cebo de plecoaleta', 67186), +(142975, 'esMX', 'No puedes obtener 10 crestalboradas míticas en este momento.', 67186), +(156592, 'esMX', '', 67186), +(156591, 'esMX', '', 67186), +(156536, 'esMX', '', 67186), +(156537, 'esMX', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'esMX', 'Pescadores abisales', 67186), +(3389, 'esMX', 'Ataque a los pilares: Cataratas Scintilas', 67186), +(3308, 'esMX', 'Falla del Vacío: Orilla Occidua', 67186), +(3291, 'esMX', 'Vacío de poder', 67186), +(3280, 'esMX', 'Portal indomable', 67186), +(3251, 'esMX', 'Ritual del Vacío: Oso pardo', 67186), +(3245, 'esMX', 'Retribución y problemas', 67186), +(3234, 'esMX', 'Reliquias profanadas del junco', 67186), +(3233, 'esMX', 'Ya que bajamos', 67186), +(3229, 'esMX', 'Isla del zancavacío', 67186), +(3209, 'esMX', '[DNT] Example Scenario', 67186), +(3206, 'esMX', 'Plantilla de escenario', 67186), +(3180, 'esMX', 'Un ritual reforzado', 67186), +(3174, 'esMX', 'Incursión del Vacío', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'esMX', 'Atrapa vida acuática y revela tesoros en las Profundidades de Zul\'Aman.', 'Pescadores abisales', 67186), +(16090, 'esMX', '', 'Fase de búsqueda', 67186), +(16088, 'esMX', '', 'Fase de escondite', 67186), +(16441, 'esMX', 'Recolecta chispas arcanas de los nagas y sus sifones, y llévalas a los pilares.', 'Potenciación de pilares', 67186), +(16376, 'esMX', 'Derrota al comandante de los domanaar.', 'Derrota a Falx', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'esMX', '', '', 67186), +(58555, 'esMX', '', '', 67186), +(58554, 'esMX', '', '', 67186), +(58553, 'esMX', '', '', 67186), +(58545, 'esMX', '', '', 67186), +(58544, 'esMX', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'esMX', 'Tejesedal algari', '', 67186), +(8555, 'esMX', '+$k1 estadística principal y +$k2 armadura', '', 67186), +(8554, 'esMX', '+$k1 estadística principal y +$k2 armadura', '', 67186), +(5001, 'esMX', 'Pincho de hierro fantasma', '', 67186), +(4216, 'esMX', 'Pincho de pirium', '', 67186), +(4215, 'esMX', 'Pincho de elementium', '', 67186), +(3748, 'esMX', 'Pincho de titanio', '', 67186), +(2714, 'esMX', 'Punta de acero vil', '', 67186), +(1704, 'esMX', 'Punta de torio', '', 67186), +(463, 'esMX', 'Punta de mitril', '', 67186), +(43, 'esMX', 'Punta de hierro', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'esMX', 'Aturdido', 67186), +(1253377, 'esMX', 'Surgimiento meteórico', 67186), +(1270444, 'esMX', 'Furia liberada', 67186), +(441587, 'esMX', 'Cubierta de nubes', 67186), +(441429, 'esMX', 'Cubierta de nubes', 67186), +(1298446, 'esMX', 'Vínculo inquebrantable', 67186), +(1223323, 'esMX', 'Vínculo inquebrantable', 67186), +(1293502, 'esMX', '[DNT] Fused Vitality', 67186), +(1270491, 'esMX', 'Devoción profana', 67186), +(1241077, 'esMX', 'Guadaña purulenta', 67186), +(458128, 'esMX', 'Guadaña purulenta', 67186), +(363916, 'esMX', 'Escamas obsidiana', 67186), +(353319, 'esMX', 'Tejedor de paz', 67186), +(125174, 'esMX', 'Toque de karma', 67186), +(122470, 'esMX', 'Toque de karma', 67186), +(23920, 'esMX', 'Reflejo de hechizos', 67186), +(1237942, 'esMX', 'Cebo', 67186), +(1235216, 'esMX', 'Percepción de Midnight', 67186), +(1225245, 'esMX', 'Enjambrista sin\'dorei', 67186), +(1295986, 'esMX', 'Destello de Lindormi', 67186), +(1278156, 'esMX', 'Guía de Lindormi', 67186), +(1298074, 'esMX', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'esMX', '', 67186), +(390260, 'esMX', '', 67186), +(1297413, 'esMX', 'Provocar esqueletos', 67186), +(149981, 'esMX', 'Provocar esqueletos', 67186), +(1289789, 'esMX', 'Forma humanoide de batalla', 67186), +(1283168, 'esMX', 'Combinar fragmentos del Vacío ascendentes', 67186), +(1282778, 'esMX', 'Núcleo del Vacío ascendente', 67186), +(1264876, 'esMX', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'esMX', 'Residuo espectral', 67186), +(447444, 'esMX', 'Falla entrópica', 67186), +(210824, 'esMX', 'Toque del Magi', 67186), +(1280123, 'esMX', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'esMX', 'Tanque triturador especulador', 67186), +(1296759, 'esMX', 'Tanque triturador buen rendimiento', 67186), +(1296758, 'esMX', 'Tanque triturador renta garantizada', 67186), +(1296756, 'esMX', 'Tanque triturador apuesta segura', 67186), +(1296734, 'esMX', 'Traje de meca amatista', 67186), +(1296731, 'esMX', 'Caminamuerte cerúleo', 67186), +(466930, 'esMX', 'Flecha negra', 67186), +(1291739, 'esMX', 'Favor malévolo', 67186), +(1281946, 'esMX', 'Pescador abisal', 67186), +(1270634, 'esMX', 'Desviador rebosante', 67186), +(1270085, 'esMX', 'Resguardo lúgubre', 67186), +(1270079, 'esMX', 'Resguardo lúgubre', 67186), +(1258411, 'esMX', 'Imitación de Khadgar de Kryenna', 67186), +(1258410, 'esMX', 'Imitación de Khadgar de Kryenna', 67186), +(1258336, 'esMX', 'Advertencia final', 67186), +(1257809, 'esMX', 'Imitación de Khadgar de Kryenna', 67186), +(1257729, 'esMX', 'Reanimación', 67186), +(1257728, 'esMX', 'Reanimación', 67186), +(1257716, 'esMX', 'Reanimación', 67186), +(1257505, 'esMX', 'Resguardo lúgubre', 67186), +(1256189, 'esMX', 'Pescador abisal', 67186), +(1255966, 'esMX', 'Regeneración', 67186), +(1253337, 'esMX', 'Imitación de Khadgar de Kryenna', 67186), +(1253336, 'esMX', 'Imitación de Khadgar de Kryenna', 67186), +(1253194, 'esMX', 'Medidas prácticas', 67186), +(1253193, 'esMX', 'Medidas prácticas', 67186), +(1253185, 'esMX', 'Medidas prácticas', 67186), +(1253064, 'esMX', 'Pescador abisal', 67186), +(1252431, 'esMX', 'Relámpago estruendoso (desatado)', 67186), +(1241032, 'esMX', 'Advertencia final', 67186), +(1241023, 'esMX', 'Advertencia final', 67186), +(1235076, 'esMX', 'Medidas prácticas', 67186), +(1235075, 'esMX', 'Medidas prácticas', 67186), +(1235072, 'esMX', 'Medidas prácticas', 67186), +(1235067, 'esMX', 'Medidas prácticas', 67186), +(1235066, 'esMX', 'Medidas prácticas', 67186), +(1235065, 'esMX', 'Medidas prácticas', 67186), +(1235037, 'esMX', 'Medidas prácticas', 67186), +(1233865, 'esMX', 'Corona nula', 67186), +(1228865, 'esMX', 'Lince marcado por el Vacío', 67186), +(1225598, 'esMX', 'Pescador abisal', 67186), +(1225322, 'esMX', 'Bosque Canción Eterna', 67186), +(1225281, 'esMX', 'Lumialeta tierno', 67186), +(1225277, 'esMX', 'Pez cantor restaurado', 67186), +(1225273, 'esMX', 'Pulpo ominoso', 67186), +(1225272, 'esMX', 'Pez espinoso brillante', 67186), +(444803, 'esMX', 'Celacanto despertado', 67186), +(1250759, 'esMX', 'Mota oscura', 67186), +(1276894, 'esMX', 'Transmutar núcleo del Vacío elemental', 67186), +(1296448, 'esMX', 'Salto temerario', 67186), +(472053, 'esMX', 'Salto temerario', 67186), +(1296214, 'esMX', 'Matriz del Vacío galáctico', 67186), +(1296205, 'esMX', 'Triplicar', 67186), +(1296169, 'esMX', 'Nube tormentosa', 67186), +(1296168, 'esMX', 'Nube tormentosa', 67186), +(1291767, 'esMX', 'Lluvia de meteoritos', 67186), +(1296406, 'esMX', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'esMX', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'esMX', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'esMX', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'esMX', 'Destello de Lindormi', 67186), +(1265971, 'esMX', 'Armamentos profanos', 67186), +(444769, 'esMX', 'Defunción inminente', 67186), +(1256191, 'esMX', 'Terminar buceo', 67186), +(1272821, 'esMX', 'Sabiduría del muro', 67186), +(1244331, 'esMX', 'Sempibrote', 67186), +(441845, 'esMX', 'Apuntar al corazón', 67186), +(243435, 'esMX', 'Brebaje reconstituyente', 67186), +(221562, 'esMX', 'Asfixiar', 67186), +(205630, 'esMX', 'Agarre de Illidan', 67186), +(198158, 'esMX', 'Invisibilidad en masa', 67186), +(108194, 'esMX', 'Asfixiar', 67186), +(1291860, 'esMX', 'Comida y bebida', 67186), +(1291859, 'esMX', 'Comida y bebida', 67186), +(1291858, 'esMX', 'Comida y bebida', 67186), +(1291857, 'esMX', 'Comida y bebida', 67186), +(1291856, 'esMX', 'Comida y bebida', 67186), +(1291855, 'esMX', 'Comida y bebida', 67186), +(1291854, 'esMX', 'Comida y bebida', 67186), +(1291853, 'esMX', 'Comida y bebida', 67186), +(1291852, 'esMX', 'Comida y bebida', 67186), +(1291851, 'esMX', 'Comida y bebida', 67186), +(1291850, 'esMX', 'Comida y bebida', 67186), +(1291849, 'esMX', 'Comida y bebida', 67186), +(1291848, 'esMX', 'Comida', 67186), +(1291847, 'esMX', 'Comida', 67186), +(1291846, 'esMX', 'Comida', 67186), +(1291845, 'esMX', 'Comida', 67186), +(1291844, 'esMX', 'Comida', 67186), +(1291843, 'esMX', 'Comida', 67186), +(1291842, 'esMX', 'Comida', 67186), +(1291841, 'esMX', 'Comida', 67186), +(1291840, 'esMX', 'Comida', 67186), +(1291839, 'esMX', 'Comida', 67186), +(1291838, 'esMX', 'Comida', 67186), +(1291837, 'esMX', 'Comida', 67186), +(1291831, 'esMX', 'Bebida', 67186), +(1291828, 'esMX', 'Comida', 67186), +(1291827, 'esMX', 'Comida', 67186), +(1291826, 'esMX', 'Comida', 67186), +(1291825, 'esMX', 'Comida', 67186), +(1291824, 'esMX', 'Comida', 67186), +(1291822, 'esMX', 'Comida', 67186), +(1291791, 'esMX', 'Bebida', 67186), +(1290929, 'esMX', 'Bebida', 67186), +(1290926, 'esMX', 'Comida', 67186), +(1290925, 'esMX', 'Comida', 67186), +(1289221, 'esMX', 'Recompensa de guardián de la luz', 67186), +(1286537, 'esMX', 'Comida y bebida', 67186), +(1286536, 'esMX', 'Bebida', 67186), +(1286535, 'esMX', 'Comida', 67186), +(1282100, 'esMX', 'Banco animado', 67186), +(1282018, 'esMX', 'Banco animado', 67186), +(1277461, 'esMX', 'Bebida', 67186), +(1269922, 'esMX', 'Comida', 67186), +(1269921, 'esMX', 'Comida', 67186), +(1269920, 'esMX', 'Comida', 67186), +(1269919, 'esMX', 'Bebida', 67186), +(1269918, 'esMX', 'Bebida', 67186), +(1269917, 'esMX', 'Comida y bebida', 67186), +(1269916, 'esMX', 'Comida y bebida', 67186), +(1232065, 'esMX', 'Comida y bebida', 67186), +(1295592, 'esMX', '[DNT] Clear Voidspire', 67186), +(1244341, 'esMX', 'Sempibrote', 67186), +(1262378, 'esMX', 'Corona de subyugación de ébano', 67186), +(1262377, 'esMX', 'Corona de subyugación de ébano', 67186), +(1262376, 'esMX', 'Corona de subyugación de ébano', 67186), +(1262365, 'esMX', 'Mandato de muerte sagrada', 67186), +(1262364, 'esMX', 'Mandato de muerte sagrada', 67186), +(1262359, 'esMX', 'Mandato de muerte sagrada', 67186), +(1248931, 'esMX', 'Corona de subyugación de ébano', 67186), +(1248927, 'esMX', 'Mandato de muerte sagrada', 67186), +(1277796, 'esMX', 'Anular magia', 67186), +(1256862, 'esMX', 'Flecha antimagia', 67186), +(1256861, 'esMX', 'Salto disipador', 67186), +(1256860, 'esMX', 'Enfoque disipador', 67186), +(1256010, 'esMX', 'Campo nulificador', 67186), +(1295508, 'esMX', 'Aprendiendo', 67186), +(1295497, 'esMX', 'Nerubiano', 67186), +(1295486, 'esMX', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'esMX', 'Rezo oscuro', 67186), +(1243616, 'esMX', 'Esencia del Vacío inestable', 67186), +(1243615, 'esMX', 'Esencia del Vacío inestable', 67186), +(1243613, 'esMX', 'Esencia del Vacío inestable', 67186), +(1243605, 'esMX', 'Esencia del Vacío inestable', 67186), +(1243602, 'esMX', 'Esencia del Vacío inestable', 67186), +(1243588, 'esMX', 'Esencia del Vacío inestable', 67186), +(1243586, 'esMX', 'Esencia del Vacío inestable', 67186), +(1257701, 'esMX', 'Tajo abrasador', 67186), +(444088, 'esMX', 'Consumir llama', 67186), +(1295319, 'esMX', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'esMX', 'Disonancia', 67186), +(1295278, 'esMX', 'Objetivo de Frenesí aplastante', 67186), +(1295243, 'esMX', 'Ráfaga abisal', 67186), +(1295237, 'esMX', 'Ráfaga abisal', 67186), +(1226037, 'esMX', 'Cortar carne', 67186), +(442615, 'esMX', 'Cortar carne', 67186), +(1295194, 'esMX', '[DNT] Cancel Aura', 67186), +(1241218, 'esMX', '[DNT] Vision of Self', 67186), +(1294288, 'esMX', 'Fuerza en las sombras', 67186), +(1286830, 'esMX', 'Ping Fishing Bubble - Despawn', 67186), +(1236092, 'esMX', 'Encantar herramienta: Destreza sin\'dorei', 67186), +(1293613, 'esMX', 'Pesca de pescador abisal', 67186), +(1286820, 'esMX', 'Pesca de pescador abisal', 67186), +(1286703, 'esMX', 'Pesca de pescador abisal', 67186), +(1253159, 'esMX', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'esMX', 'Abrir el alijo', 67186), +(1243683, 'esMX', 'Conjunto glorioso de crestalboradas míticas', 67186), +(190784, 'esMX', 'Corcel divino', 67186), +(1292124, 'esMX', '[DNT] Material Creation - Health', 67186), +(1266413, 'esMX', 'Quemadura del Vacío', 67186), +(1244345, 'esMX', 'Quemadura de Luz', 67186), +(1231327, 'esMX', 'Vacío incontenible', 67186), +(436358, 'esMX', 'Demoler', 67186), +(1292071, 'esMX', 'Falange', 67186), +(1294776, 'esMX', 'Mota de sol resplandeciente', 67186), +(1273357, 'esMX', 'Mota de sol resplandeciente', 67186), +(1294727, 'esMX', 'Bien alimentado', 67186), +(1294726, 'esMX', 'Asar malvavisco', 67186), +(1294720, 'esMX', 'Disparar', 67186), +(1294703, 'esMX', 'Disparar', 67186), +(1294669, 'esMX', 'Cargar', 67186), +(1294633, 'esMX', 'Flema de fuego', 67186), +(1294563, 'esMX', 'Escudo roto', 67186), +(1277795, 'esMX', 'Anular magia', 67186), +(1272179, 'esMX', 'Pulso excentrimágico (no comprado)', 67186), +(1269655, 'esMX', 'Sigilo', 67186), +(1269654, 'esMX', 'Centinela de relojería', 67186), +(1269650, 'esMX', 'Salto disipador', 67186), +(1269641, 'esMX', 'Zancafallas', 67186), +(1269640, 'esMX', 'Campo nulificador', 67186), +(1264545, 'esMX', 'Cambiar', 67186), +(1259647, 'esMX', 'P3RR0 GU4RD14N', 67186), +(1258362, 'esMX', 'Trampa: ruiseñor', 67186), +(1256009, 'esMX', 'Anular magia', 67186), +(1251813, 'esMX', 'Pavor persistente', 67186), +(1294779, 'esMX', 'DNT', 67186), +(1294759, 'esMX', 'DNT', 67186), +(1294752, 'esMX', 'Sinfonía lúgubre', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'esMX', '', 67186), +(37073, 'esMX', '', 67186), +(37072, 'esMX', '', 67186), +(37065, 'esMX', '', 67186), +(37064, 'esMX', '', 67186), +(37063, 'esMX', '', 67186), +(37050, 'esMX', '', 67186), +(37049, 'esMX', '', 67186), +(37048, 'esMX', '', 67186), +(36911, 'esMX', '', 67186), +(35166, 'esMX', '', 67186), +(35165, 'esMX', '', 67186), +(35164, 'esMX', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'esMX', 'Fabricación múltiple meticulosa', '', 'Mejoras tus matrices de encantamiento, lo que aumenta tu probabilidad de producir objetos adicionales cuando fabricas ilusiones o consumibles. Además, obtienes +$ev1 p. de $en1 por cada punto en esta especialización.', 67186), +(137685, 'esMX', '', '', 'Fabricación múltiple otorga hasta un $ev1% más de artículos cuando fabricas consumibles.', 67186), +(137681, 'esMX', '', '', 'Fabricación múltiple otorga hasta un $ev1% más de artículos cuando fabricas consumibles.', 67186), +(133669, 'esMX', '', '', 'Otorga +$ev1 p. de $en1 cuando fabricas aleaciones.|n|nDesbloquea la habilidad de usar componentes de retoque cuando fabricas aleaciones.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='esMX'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'esMX', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'esMX', 'Atuendo de jardín de morador del bosque', 67186), +(5646, 'esMX', 'Vestimentas de sumergidor', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='esMX' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'esMX', 'Aprendiz Kurgsbane', 67186), +(7698, 'esMX', 'Vendedor de Duelo de decoraciones', 67186), +(7693, 'esMX', 'Cofre', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='esMX') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='esMX') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='esMX') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='esMX') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='esMX') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='esMX') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='esMX') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='esMX') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='esMX') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='esMX') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='esMX') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='esMX') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='esMX') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='esMX') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='esMX') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='esMX') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='esMX') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='esMX') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='esMX') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='esMX') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='esMX') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='esMX') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='esMX') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='esMX') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='esMX') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='esMX') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='esMX') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='esMX') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='esMX') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='esMX') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='esMX') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='esMX') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='esMX') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='esMX') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='esMX') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='esMX') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='esMX') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='esMX') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='esMX') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='esMX') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='esMX') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='esMX') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='esMX') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='esMX') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='esMX') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='esMX') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='esMX') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='esMX') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='esMX') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='esMX') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='esMX') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='esMX') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='esMX') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='esMX') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='esMX') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='esMX') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='esMX') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='esMX') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='esMX') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='esMX') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='esMX') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='esMX') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='esMX') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='esMX') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='esMX') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='esMX') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='esMX') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='esMX') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='esMX') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='esMX') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='esMX') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='esMX') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='esMX') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='esMX') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='esMX') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='esMX') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='esMX') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='esMX') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='esMX') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='esMX') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='esMX') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='esMX') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='esMX') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='esMX') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='esMX') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='esMX') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='esMX') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='esMX') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='esMX') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='esMX') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='esMX') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='esMX') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='esMX') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='esMX') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='esMX') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='esMX') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='esMX') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='esMX') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='esMX') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='esMX') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='esMX') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='esMX') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='esMX') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='esMX') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='esMX') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='esMX') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='esMX') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='esMX') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='esMX') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='esMX') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='esMX') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='esMX') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='esMX') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='esMX') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='esMX') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='esMX') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='esMX') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='esMX') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='esMX') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='esMX') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='esMX') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='esMX') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='esMX') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='esMX') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='esMX') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='esMX') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='esMX') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='esMX') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='esMX') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='esMX') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='esMX') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='esMX') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='esMX') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='esMX') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='esMX') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='esMX') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='esMX') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='esMX') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='esMX') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='esMX') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='esMX') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='esMX') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='esMX') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='esMX') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='esMX') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='esMX') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='esMX') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='esMX') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='esMX') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='esMX'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'esMX', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'esMX', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'esMX', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'esMX', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'esMX', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'esMX', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'esMX', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'esMX', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'esMX', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'esMX', 0x000000, 67186), +(2534422486, 3918, 'esMX', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'esMX', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'esMX', 0x0041756D656E746120656C206461C3B16F20646520243F63325B446576617374616369C3B36E2076696C5D5B5261796F2064656C20566163C3AD6F5D20756E20247331252E0D0A0D0A243F63325B446576617374616369C3B36E2076696C5D5B4C612063616E616C697A616369C3B36E20636F6D706C657461206465205261796F2064656C20566163C3AD6F5D2067656E65726120243F63325B24733420667261676D656E746F7320646520616C6D61206D69656E7472617320647572615D5B24733320244C6163756D756C616369C3B36E3A6163756D756C6163696F6E65733B206465204C6C757669612064656C20566163C3AD6F5D2E0000, 67186), +(3776013982, 1270444, 'esMX', 0x0052616A617220616C6D61207920426F6D626120646520657370C3AD72697475207469656E656E20756E612070726F626162696C6964616420706F72206361646120667261676D656E746F20646520616C6D6120636F6E73756D69646F206465206F746F72676172204675726961206C696265726164612C20717565207065726D69746520717565207365206C616E6365204D6574616D6F72666F7369732073696E2061637469766172207375207469656D706F2064652072657574696C697A616369C3B36E207920636F6E20756E6120647572616369C3B36E2064652024733120732E0000, 67186), +(3776013982, 441587, 'esMX', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'esMX', 0x004163746976617220243F613133373033365B5375626964C3B36E20646520616472656E616C696E615D5B486F6A6173206465206C617320736F6D627261735D206372656120756E61206E7562652064652068756D6F20647572616E74652024343431353837642C206C6F20717565207065726D69746520717565206C6F73206174617175657320646573646520656C20696E746572696F72206465206C61206E7562652061706C697175656E20446573636F6E6365727461646F2C20717565207365206163756D756C6120686173746120243434313634306D3220244C76657A3A76656365733B206DC3A1732E0D0A0D0A456C2065666563746F20706572736973746520647572616E746520243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D207320747261732073616C6972206465206C61206E7562652E0000, 67186), +(3893700160, 445, 'esMX', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'esMX', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'esMX', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'esMX', 0x005675656C76652061206F6274656E65722061636365736F2061204C6C616D61722061206D6173636F74612E0D0A0D0A4D69656E7472617320657374C3A17320656E206578746572696F7265732C207475206D6173636F746120696E666C69676520756E2024733125206DC3A173206465206461C3B16F20792072656369626520756E2024733225206D656E6F73206465206461C3B16F2E0000, 67186), +(3776013982, 1223323, 'esMX', 0x005675656C76652061206F6274656E65722061636365736F2061204C6C616D61722061206D6173636F74612E0D0A0D0A4D69656E7472617320657374C3A17320656E206578746572696F7265732C207475206D6173636F746120696E666C69676520756E2024733125206DC3A173206465206461C3B16F20792072656369626520756E2024733225206D656E6F73206465206461C3B16F2E0000, 67186), +(3468628616, 1818, 'esMX', 0x4F62656C6973636F206F736375726F0041686F72612070756564657320636F6D707261726C6520756E206F62656C6973636F206F736375726F206120526165276E6120656E206C6120436975646164206465204C756E617267656E74612E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'esMX', 0x4F62656C6973636F206F736375726F0041686F72612070756564657320636F6D707261726C6520756E206F62656C6973636F206F736375726F206120526165276E6120656E206C6120436975646164206465204C756E617267656E74612E004F62656C6973636F206F736375726F002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'esMX', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'esMX', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'esMX', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'esMX', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'esMX', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'esMX', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'esMX', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'esMX', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'esMX', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'esMX', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'esMX', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'esMX', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'esMX', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'esMX', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'esMX', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'esMX', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'esMX', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'esMX', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'esMX', 0x000000, 67186), +(3037505077, 245345, 'esMX', 0x5000, 67186), +(3776013982, 1270491, 'esMX', 0x00004C612076656C6F6369646164206465206174617175652061756D656E746120756E20247731252E00, 67186), +(3776013982, 1241077, 'esMX', 0x004163656C657261207475732070657374657320656E20656C206F626A657469766F20756E20247331252E004C6173207065737465732064652024406175726163617374657220696E666C6967656E207375206461C3B16F20756E2024773125206DC3A1732072C3A17069646F2E00, 67186), +(3776013982, 458128, 'esMX', 0x00436F727461206120746F646F73206C6F7320656E656D69676F7320656E20756E20726164696F20646520246131206D206672656E746520612074692C206C6F2071756520696E666C6967652024733120702E206465206461C3B16F206465206C617320736F6D627261732079206163656C65726120746F646173207475732070657374657320656E206C6F73206F626A657469766F7320706172612071756520696E666C696A616E206461C3B16F20756E202431323431303737733125206DC3A1732072C3A17069646F20647572616E7465202431323431303737642E0000, 67186), +(3899321669, 5919, 'esMX', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'esMX', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'esMX', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'esMX', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'esMX', 0x4E6567726F005265667565727A612074757320657363616D617320792072656475636520656C206461C3B16F20726563696269646F20756E2024733125243F733337343334385B2C206164656DC3A173206465206861636572207175652073616E657320647572616E746520243337343334396420656C206571756976616C656E746520616C206461C3B16F206576697461646F5D5B5D2E20447572612024642E00456C206461C3B16F20726563696269646F2073652072656475636520756E2024773125243F2465345B20792073616E6120756E206571756976616C656E746520616C206461C3B16F206576697461646F2E5D5B2E5D243F2477323D315B0D0A496E6D756E652061206C6F732065666563746F7320646520696E7465727275706369C3B36E20792073696C656E63696F2E5D5B5D00, 67186), +(4033975491, 589353, 'esMX', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'esMX', 0x54616C656E746F206465204A634A0024407370656C6C6465736333353333313300496E6D756E6520616C206461C3B16F206DC3A16769636F20792061206C6F732065666563746F73206461C3B1696E6F732E00, 67186), +(3776013982, 125174, 'esMX', 0x0024407370656C6C64657363313232343730004162736F72626520746F646F20656C206461C3B16F20726563696269646F2E0D0A243132323437307334252064656C206461C3B16F20726563696269646F2073652072656469726967652061206C612076C3AD6374696D6120616665637461646120636F6E20546F717565206465206B61726D612E00, 67186), +(3776013982, 122470, 'esMX', 0x004162736F72626520746F646F20656C206461C3B16F20726563696269646F20647572616E74652024642C20686173746120756E206DC3A178696D6F2064656C20247333252064652074752073616C7564206DC3A178696D612C207920726564697269676520756E2024733425206465206573612063616E746964616420616C206F626A657469766F20656E656D69676F20636F6D6F206461C3B16F206465206E61747572616C657A6120647572616E74652024313234323830642E00456C206461C3B16F20696E666C696769646F20616C206D6F6E6A65207365207265646972696765206120746920636F6D6F206461C3B16F206465206E61747572616C657A6120647572616E74652024313234323830642E00, 67186), +(3776013982, 23920, 'esMX', 0x00416C7A617320747520243F63335B65736375646F5D5B61726D615D2C206C6F20717565207265666C656A6120243F613231333931355B6C6F73207369677569656E746573202432313339313573332068656368697A6F73206C616E7A61646F735D5B656C207072696D65722068656368697A6F206C616E7A61646F5D20736F62726520746920792072656475636520756E202433383533393173312520656C206461C3B16F206DC3A16769636F20717565207265636962657320647572616E74652024642E00243F613138383637325B5265666C656A617320746F646F73206C6F732068656368697A6F7320717565207465206C616E7A616E2E5D5B5265666C656A6120756E2068656368697A6F20717565207465206C616E7A616E2E5D00, 67186), +(1274215428, 190484, 'esMX', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'esMX', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'esMX', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'esMX', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'esMX', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'esMX', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'esMX', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'esMX', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'esMX', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'esMX', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'esMX', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'esMX', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'esMX', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'esMX', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'esMX', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'esMX', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'esMX', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'esMX', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'esMX', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'esMX', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'esMX', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'esMX', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'esMX', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'esMX', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'esMX', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'esMX', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'esMX', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'esMX', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'esMX', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'esMX', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'esMX', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'esMX', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'esMX', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'esMX', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'esMX', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'esMX', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'esMX', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'esMX', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'esMX', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'esMX', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'esMX', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'esMX', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'esMX', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'esMX', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'esMX', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'esMX', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'esMX', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'esMX', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'esMX', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'esMX', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'esMX', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'esMX', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'esMX', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'esMX', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'esMX', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'esMX', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'esMX', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'esMX', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'esMX', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'esMX', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'esMX', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'esMX', 0x0044657675656C766520656C2070657A20616C20616775612070617261206F6274656E65722024733220702E206465207065736361206465204D69646E6967687420647572616E74652024642E0D0A0D0A4465766F6C76657220766172696F7320706563657320707565646520657874656E646572206573746120706F74656E6369616369C3B36E20686173746120756E206DC3A178696D6F20646520244D31206D696E2E0041756D656E74612024773220702E206C61207065736361206465205175656C275468616C61732E00, 67186), +(3776013982, 1235216, 'esMX', 0x0044657675656C7665206C6120637269617475726120616C20616775612070617261206F6274656E65722024733220702E206465207065726365706369C3B36E206465204D69646E6967687420647572616E74652024642E0D0A0D0A4465766F6C766572207661726961732063726961747572617320707565646520657874656E646572206573746120706F74656E6369616369C3B36E20686173746120756E206DC3A178696D6F20646520244D31206D696E2E004C61207065726365706369C3B36E206465204D69646E696768742061756D656E74612024773220702E00, 67186), +(3776013982, 1225245, 'esMX', 0x00556E61206D657A636C6120646520657363616D6173206361726D6573C3AD207920636572C3BA6C65617320656D62656C6C6563656E2061206573746520C3A167696C2070657A2E20456C20656E6A616D6272697374612073696E27646F72656920657320636F6DC3BA6E20656E20656C20426F737175652043616E6369C3B36E20457465726E612C2079207669616A61206520696E746572616374C3BA6120636F6E206C617320616775617320736567C3BA6E20656C2063617264756D656E2064656C20717565207365612070617274652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC3817265617320646F6E64652070756564657320656E636F6E7472617220657374652070657A3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D205A756C27416D616E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457374616E717565732064652070657363613A7C720D0A2D20466C6F726563696D69656E746F2062757262756A65616E74650D0A2D20456E6A616D627265206465204675656E74652064656C20536F6C0D0A2D204F6E64617320737570657266696369616C65730000, 67186), +(778162198, 397, 'esMX', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'esMX', 0x0100, 67186), +(3037505077, 243302, 'esMX', 0x0100, 67186), +(261693969, 95549, 'esMX', 0xFFFFFFFFFFFFFFFF5365C3B1616C20646520616C61726D61206DC3A1676963610000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'esMX', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'esMX', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'esMX', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'esMX', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'esMX', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'esMX', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'esMX', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'esMX', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'esMX', 0x50756E7475616369C3B36E2064652070657363613A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'esMX', 0x436F6D706C657461646F007C634646316566663030C2A15065736361646F7265732061626973616C657320636F6D706C657461646F2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'esMX', 0xFFFFFFFFFFFFFFFF536F6C6963697475642070617261206C6F73207065736361646F7265732061626973616C65730000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'esMX', 0x42757A6F2064652070726F66756E6469646164657300436F6D706C657461206576656E746F73206465206C6F73207065736361646F7265732061626973616C657320656E205A756C27416D616E2E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'esMX', 0x42757A6F2064652070726F66756E6469646164657300436F6D706C657461206576656E746F73206465206C6F73207065736361646F7265732061626973616C657320656E205A756C27416D616E2E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'esMX', 0x5065736361646F7265732061626973616C6573004861626C6120636F6E20656C2073756D65726769646F72204A656A7520706172612073756D6572676972746520636F6E206C6F73207065736361646F7265732061626973616C65732E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'esMX', 0x50656C6967726F7320646520C3A96C6974650041686F726120617061726563656E20656E656D69676F73207261726F7320646520C3A96C69746520656E206C6F7320736974696F732064652072697475616C2C207175652070756564657320646572726F746172207061726120636F6E736567756972206DC3A17320626F74696E65732064652072697475616C2E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'esMX', 0x50656C6967726F7320646520C3A96C6974650041686F726120617061726563656E20656E656D69676F73207261726F7320646520C3A96C69746520656E206C6F7320736974696F732064652072697475616C2C207175652070756564657320646572726F746172207061726120636F6E736567756972206DC3A17320626F74696E65732064652072697475616C2E0050656C6967726F7320656E206C6F7320616C72656465646F726573204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'esMX', 0x5472616E73706F727461646F72657320636F72727570746F730041686F72612070756564657320636F6D707261726C6520656C2048616C63C3B36E207A616E6375646F20746F6361646F20706F7220656C20566163C3AD6F20616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'esMX', 0x5472616E73706F727461646F72657320636F72727570746F730041686F72612070756564657320636F6D707261726C6520656C2048616C63C3B36E207A616E6375646F20746F6361646F20706F7220656C20566163C3AD6F20616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E005472616E73706F727461646F72657320636F72727570746F73002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'esMX', 0x53616E74756172696F7320646520706F6465722049490050756564657320656E636F6E74726172206E7565766F732073616E74756172696F7320646520706F74656E63696163696F6E6573206DC3A1676963617320656E206C6F7320736974696F732064652072697475616C2E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'esMX', 0x53616E74756172696F7320646520706F6465722049490050756564657320656E636F6E74726172206E7565766F732073616E74756172696F7320646520706F74656E63696163696F6E6573206DC3A1676963617320656E206C6F7320736974696F732064652072697475616C2E0053616E74756172696F7320646520706F646572204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'esMX', 0x5465736F726F732076656E657261646F730041686F72612070756564657320656E636F6E74726172207465736F726F73206772616E64657320656E206C6F7320736974696F732064652072697475616C2070617261206F6274656E6572206DC3A17320626F74696E65732E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'esMX', 0x5465736F726F732076656E657261646F730041686F72612070756564657320656E636F6E74726172207465736F726F73206772616E64657320656E206C6F7320736974696F732064652072697475616C2070617261206F6274656E6572206DC3A17320626F74696E65732E005465736F726F732076656E657261646F73002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'esMX', 0x4D616769612064652072697475616C202D204162756E64616E636961206465206F726265730041756D656E7461206C612070726F626162696C69646164206465207175652061706172657A636120756E206F72626520646520726567656E6572616369C3B36E206465206C6173206372696174757261732061736573696E6164617320656E206C6F7320736974696F732064652072697475616C2E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'esMX', 0x4D616769612064652072697475616C202D204162756E64616E636961206465206F726265730041756D656E7461206C612070726F626162696C69646164206465207175652061706172657A636120756E206F72626520646520726567656E6572616369C3B36E206465206C6173206372696174757261732061736573696E6164617320656E206C6F7320736974696F732064652072697475616C2E004D616769612064652072697475616C202D2053616E616369C3B36E20494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'esMX', 0x53616C61206465206C61732066696572617320636F7272757074610041686F72612070756564657320636F6D707261726C65206D6173636F7461732073656C656363696F6E6164617320616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'esMX', 0x53616C61206465206C61732066696572617320636F7272757074610041686F72612070756564657320636F6D707261726C65206D6173636F7461732073656C656363696F6E6164617320616C2073617267656E746F20566F726E696E20656E206C6120436975646164206465204C756E617267656E74612E0053616C61206465206C61732066696572617320636F727275707461002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'esMX', 0x53616E74756172696F7320646520706F6465720041686F72612070756564657320656E636F6E747261722073616E74756172696F7320646520706F74656E63696163696F6E6573206DC3A1676963617320656E206C6F7320736974696F732064652072697475616C2E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'esMX', 0x53616E74756172696F7320646520706F6465720041686F72612070756564657320656E636F6E747261722073616E74756172696F7320646520706F74656E63696163696F6E6573206DC3A1676963617320656E206C6F7320736974696F732064652072697475616C2E0053616E74756172696F7320646520706F6465722049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'esMX', 0x426F74696E65732061646963696F6E616C65730041686F72612070756564657320656E636F6E74726172206DC3A173207465736F726F73207065717565C3B16F7320656E206C6F7320736974696F732064652072697475616C2E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'esMX', 0x426F74696E65732061646963696F6E616C65730041686F72612070756564657320656E636F6E74726172206DC3A173207465736F726F73207065717565C3B16F7320656E206C6F7320736974696F732064652072697475616C2E005465736F726F73207375656C746F73204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'esMX', 0x50656C6967726F7320656E206C6F7320616C72656465646F7265730041686F726120617061726563656E20656E656D69676F73207261726F7320656E206C6F7320736974696F732064652072697475616C2C207175652070756564657320646572726F746172207061726120636F6E736567756972206DC3A17320626F74696E65732064652072697475616C2E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'esMX', 0x50656C6967726F7320656E206C6F7320616C72656465646F7265730041686F726120617061726563656E20656E656D69676F73207261726F7320656E206C6F7320736974696F732064652072697475616C2C207175652070756564657320646572726F746172207061726120636F6E736567756972206DC3A17320626F74696E65732064652072697475616C2E0050656C6967726F7320656E206C6F7320616C72656465646F7265732049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'esMX', 0x4D616769612064652072697475616C202D20506F74656E636961206465206F72626573004C612073616E616369C3B36E2064656C206F72626520646520726567656E6572616369C3B36E2061756D656E746120756E20313030252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'esMX', 0x4D616769612064652072697475616C202D20506F74656E636961206465206F72626573004C612073616E616369C3B36E2064656C206F72626520646520726567656E6572616369C3B36E2061756D656E746120756E20313030252E004D616769612064652072697475616C202D2053616E616369C3B36E204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'esMX', 0x4465636F72616369C3B36E2064652072697475616C0050756564657320636F6D707261726C652061636365736F72696F73206465206573637269746F72696F20636F6E2074656DC3A1746963612064656C20566163C3AD6F20612052616527616E6120656E206C6120436975646164206465204C756E617267656E74612E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'esMX', 0x4465636F72616369C3B36E2064652072697475616C0050756564657320636F6D707261726C652061636365736F72696F73206465206573637269746F72696F20636F6E2074656DC3A1746963612064656C20566163C3AD6F20612052616527616E6120656E206C6120436975646164206465204C756E617267656E74612E004D7565626C65732064652072697475616C207061726120656C20686F676172002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'esMX', 0x5465736F726F732064652072697475616C0050756564657320656E636F6E74726172207465736F726F73207065717565C3B16F7320656E206C6F7320736974696F732064652072697475616C2E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'esMX', 0x5465736F726F732064652072697475616C0050756564657320656E636F6E74726172207465736F726F73207065717565C3B16F7320656E206C6F7320736974696F732064652072697475616C2E005465736F726F73207375656C746F732049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'esMX', 0x4D616769612064652072697475616C202D204F7262657320646520726567656E6572616369C3B36E004C6F73206F7262657320646520726567656E6572616369C3B36E207365206D616E696669657374616E20656E206C6F7320736974696F732064652072697475616C20792074652073616E616E20706F7220756E203135252064652074752073616C75642E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'esMX', 0x4D616769612064652072697475616C202D204F7262657320646520726567656E6572616369C3B36E004C6F73206F7262657320646520726567656E6572616369C3B36E207365206D616E696669657374616E20656E206C6F7320736974696F732064652072697475616C20792074652073616E616E20706F7220756E203135252064652074752073616C75642E004D616769612064652072697475616C202D2053616E616369C3B36E2049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'esMX', 0x56656E74616E61206F63726520646520686964726F6D69656C6572C3AD6100000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'esMX', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'esMX', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'esMX', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'esMX', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'esMX', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'esMX', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'esMX', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'esMX', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'esMX', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'esMX', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'esMX', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'esMX', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'esMX', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'esMX', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'esMX', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'esMX', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'esMX', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'esMX', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'esMX', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'esMX', 0x004C696E646F726D69206D61726361206120656E656D69676F732073656C656363696F6E61646F7320717565206E6F20736F6E206A656665732E20446572726F746172206120746F646F73206C6F7320656E656D69676F73206D61726361646F7320636F6D706C65746172C3A120656C2072657175697369746F20646520667565727A617320656E656D696761732E00446572726F746172206120746F646F73206C6F7320656E656D69676F73206D61726361646F7320636F6D706C65746172C3A120656C2072657175697369746F20646520667565727A617320656E656D696761732E00, 67186), +(3776013982, 1278156, 'esMX', 0x004C696E646F726D69206D61726361207920646562696C697461206120656E656D69676F73206E6F206A656665732073656C656363696F6E61646F73206520696D7069646520717565206C6173206D756572746573206465206A756761646F72657320726564757A63616E20656C207469656D706F2072657374616E74652E0D0A0D0A446572726F746172206120746F646F73206C6F7320656E656D69676F73206D61726361646F7320636F6D706C65746172C3A120656C2072657175697369746F20646520667565727A617320656E656D696761732E004C612073616C75642073652072656475636520756E20247331252E0D0A456C206461C3B16F20696E666C696769646F2073652072656475636520756E20247332252E00, 67186), +(368401261, 7367, 'esMX', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'esMX', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'esMX', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'esMX', 0xB2790000, 67186), +(3495286709, 24475, 'esMX', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'esMX', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'esMX', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'esMX', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'esMX', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'esMX', 0x000000, 67186), +(3247720076, 42450, 'esMX', 0x041E000000, 67186), +(3247720076, 42449, 'esMX', 0x041E000000, 67186), +(3247720076, 42448, 'esMX', 0x04BE000000, 67186), +(3247720076, 42447, 'esMX', 0x04BE000000, 67186), +(3247720076, 42446, 'esMX', 0x0700000000, 67186), +(3247720076, 42445, 'esMX', 0x0100000000, 67186), +(3247720076, 40690, 'esMX', 0x0100000000, 67186), +(2014779773, 207, 'esMX', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'esMX', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'esMX', 0x000000, 67186), +(3776013982, 390260, 'esMX', 0x000000, 67186), +(261693969, 95304, 'esMX', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F732064656C20566163C3AD6F206E6562756C6F736F733A204372657374616C626F72616461206465207665746572616E6F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'esMX', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F732064656C20566163C3AD6F206E6562756C6F736F733A204D6172676120766163696F6C757A0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'esMX', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F732064656C20566163C3AD6F206E6562756C6F736F733A204F726F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'esMX', 0x0000000091000000, 67186), +(1673391669, 145, 'esMX', 0x8E000000, 67186), +(2791084701, 142, 'esMX', 0x32DC0600, 67186), +(3386943305, 340484, 'esMX', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'esMX', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'esMX', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'esMX', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'esMX', 0x4475656C6F206465206465636F726163696F6E6573004A756567612061206C6173206573636F6E646964617320636F6E206D7565626C6573002D205265717569657265204D69646E69676874207920756E206E6976656C206DC3AD6E696D6F2064652031302E0D0A2D204D6F646F204A634A2063617375616C2079206E6F206C6574616C2E0D0A2D20536F6C6F20657320706F7369626C6520696E67726573617220656E206C6120636F6C6120656E20736F6C69746172696F2E204C61206F706369C3B36E207061726120677275706F7320657374C3A120646973706F6E69626C6520636F6E206C612074656A6563616D706F7320416D6F6C656E6E6520656E204C756E617267656E74612E0D0A2D20536920746520656E6375656E7472616E2079207465206D617263616E2C20C2A173652061636162C3B321009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'esMX', 0x000000, 67186), +(3776013982, 149981, 'esMX', 0x000000, 67186), +(3330775162, 1897, 'esMX', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'esMX', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'esMX', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'esMX', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'esMX', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'esMX', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'esMX', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'esMX', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'esMX', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'esMX', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'esMX', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'esMX', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'esMX', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'esMX', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'esMX', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'esMX', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'esMX', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'esMX', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'esMX', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'esMX', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'esMX', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'esMX', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'esMX', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'esMX', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'esMX', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'esMX', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'esMX', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'esMX', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'esMX', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'esMX', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'esMX', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'esMX', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'esMX', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'esMX', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'esMX', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'esMX', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'esMX', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'esMX', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'esMX', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'esMX', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'esMX', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'esMX', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'esMX', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'esMX', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'esMX', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'esMX', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'esMX', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'esMX', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'esMX', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'esMX', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'esMX', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'esMX', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'esMX', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'esMX', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'esMX', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'esMX', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'esMX', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'esMX', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'esMX', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'esMX', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'esMX', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'esMX', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'esMX', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'esMX', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'esMX', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'esMX', 0x52616369616C00416374C3AD76616C612070617261206173756D6972206175746F6DC3A1746963616D656E746520747520666F726D612068756D616E6F696465206375616E646F206E6F20657374C3A173206C616E7A616E646F2068656368697A6F732064726163C3B36E69636F7320636F6D6F20416C69656E746F20646520667565676F207920456C6576617273652E0000, 67186), +(3776013982, 1283168, 'esMX', 0x00436F6D62696E612063696E636F20667261676D656E746F732064656C20566163C3AD6F20617363656E64656E746573207061726120637265617220756E206EC3BA636C656F2064656C20566163C3AD6F20617363656E64656E746520717565207065726D6974652061756D656E74617220656C206E6976656C20646520756E206F626A65746F206865726F69636F206F206DC3AD7469636F2C20756E2061726D612066616272696361646120636F6E2072616469616E636961206465206DC3A178696D612063616C69646164206F20756E206162616C6F72696F206465206C612074656D706F726164612031206465204D69646E696768742E0000, 67186), +(3776013982, 1282778, 'esMX', 0x0041756D656E746120656C206E6976656C20646520756E206F626A65746F206865726F69636F206F206DC3AD7469636F2C20756E2061726D612066616272696361646120636F6E2072616469616E636961206465206DC3A178696D612063616C69646164206F20756E206162616C6F72696F206465206C612074656D706F726164612031206465204D69646E696768742E0000, 67186), +(3776013982, 1264876, 'esMX', 0x00496E666C69676972206461C3B16F206120756E206F626A657469766F20616665637461646F20706F72204D6163686171756520636F6C6F73616C20636F6E20756E20476F6C7065206D6F7274616C206F2052616A61722071756520676F6C706565206120247332206F206DC3A173206F626A657469766F732065787469656E646520247B2473312F313030307D2E312073206C6120647572616369C3B36E2064656C2065666563746F206465204D6163686171756520636F6C6F73616C20736F62726520656C206F626A657469766F2E0000, 67186), +(3776013982, 1255629, 'esMX', 0x004C61206573656E636961206C6962657261646120706F74656E6369612061206C6F73206A756761646F7265732C206C6F207175652061756D656E746120756E20247331252073752076656C6F6369646164206465206D6F76696D69656E746F207920756E202473322520656C206461C3B16F2071756520696E666C6967656E2C206C612073616E616369C3B36E2079206C6F732065666563746F73206465206162736F726369C3B36E20647572616E74652024642E20457374652065666563746F207365206163756D756C612C207065726F206E6F207265737461626C65636520737520647572616369C3B36E2E004C612076656C6F6369646164206465206D6F76696D69656E746F2061756D656E746120756E20247331252E0D0A456C206461C3B16F20696E666C696769646F2061756D656E746120756E20247332252E0D0A4C6F732065666563746F732064652073616E616369C3B36E2079206162736F726369C3B36E2061756D656E74616E20756E20247333252E00, 67186), +(3776013982, 447444, 'esMX', 0x00243F63335B4162726520756E612066616C6C615D5B4578706C6F7369C3B36E206D656E74616C206162726520756E612046616C6C6120656E7472C3B3706963615D2071756520736967756520616C20656E656D69676F20647572616E74652024343530313933642E204C6F7320656E656D69676F7320617472617061646F7320656E2073752063616D696E6F207265636962656E2024343437343438733120702E206465206461C3B16F206465206C617320736F6D627261732063616461202434353933313474312073206D69656E7472617320657374C3A16E2064656E74726F20646520737520616C63616E63652E0000, 67186), +(372281185, 38, 'esMX', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'esMX', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'esMX', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'esMX', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'esMX', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'esMX', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'esMX', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'esMX', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'esMX', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'esMX', 0x0024407370656C6C64657363323130373235004375616E646F20657870697265206578706C6F746172C3A1206520696E666C69676972C3A12024773120702E206465206461C3B16F20617263616E6F2E00, 67186), +(3386943305, 332898, 'esMX', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'esMX', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'esMX', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'esMX', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'esMX', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'esMX', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'esMX', 0x0464000000, 67186), +(3776013982, 1280123, 'esMX', 0x000000, 67186), +(3205218938, 54794, 'esMX', 0x424353484F5254444154454E4F59454152002532246420646520253124420001000000, 67186), +(3205218938, 22339, 'esMX', 0x534C4153485F5441524745545F4D41524B455233002F6D61726361646F726F626A657469766F0001000000, 67186), +(3205218938, 22338, 'esMX', 0x534C4153485F5441524745545F4D41524B455232002F746D0001000000, 67186), +(3205218938, 22331, 'esMX', 0x534C4153485F574F524C445F4D41524B455233002F6D61726361646F726D756E646F0001000000, 67186), +(3205218938, 22330, 'esMX', 0x534C4153485F574F524C445F4D41524B455232002F776D0001000000, 67186), +(3205218938, 22329, 'esMX', 0x534C4153485F574F524C445F4D41524B455231002F6D6D0001000000, 67186), +(2202435563, 1276526, 'esMX', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'esMX', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'esMX', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'esMX', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'esMX', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'esMX', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'esMX', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'esMX', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'esMX', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'esMX', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'esMX', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'esMX', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'esMX', 0x00496E766F63612079207265746972612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'esMX', 0x00496E766F63612079207265746972612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'esMX', 0x00496E766F63612079207265746972612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'esMX', 0x00496E766F63612079207265746972612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'esMX', 0x00496E766F63612079207265746972612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'esMX', 0x00496E766F63612079207265746972612065737461206D6F6E747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'esMX', 0x00496E74656E7461732072656D61746172206120756E206F626A657469766F2068657269646F2079206C6520696E666C696765732024733120702E206465206461C3B16F206465206C617320736F6D62726173207920243436383537326F3120702E206465206461C3B16F206465206C617320736F6D6272617320647572616E74652024343638353732642E20536F6C6F207365207075656465207573617220656E20656E656D69676F7320636F6E206DC3A17320646520756E20247333252064652073616C7564206F206D656E6F7320646520756E20247332252073616C75642E0000, 67186), +(261693969, 95553, 'esMX', 0xFFFFFFFFFFFFFFFF44656E7369646164206D616E6966696573746100001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'esMX', 0xFFFFFFFFFFFFFFFF496E766573746967616369C3B36E206465204F62656C6973636F73206F736375726F730000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'esMX', 0xFFFFFFFFFFFFFFFF4469657A6D61207375732066696C61730000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'esMX', 0x457363616D6173206D616C69676E617300004F746F72676120756E204661766F72206D616CC3A9766F6C6F2061206C6120617072656E64697A61204B7572677362616E652C206C6F207175652061756D656E746120756E2024313238393130327331252073752073616C75642079207375206461C3B16F2079206C65206F746F726761206C6120636170616369646164206465206C616E7A617220457363616D6173206D616C69676E61732E00, 67186), +(3776013982, 1281946, 'esMX', 0x000000, 67186), +(3776013982, 1270634, 'esMX', 0x004475706C69636120656C206461C3B16F20726563696269646F20706F7220756E20656C656D656E74616C20617263616E6F2064656C2050756E746F2064656C204E65786F204D696427417220647572616E746520313520732E0052656369626520656C20646F626C65206465206461C3B16F2E00, 67186), +(3776013982, 1270085, 'esMX', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'esMX', 0x00456C207461756D61747572676F2063616D6269612073752073616C756420706F7220756E2065736375646F206465206162736F726369C3B36E2064656C206D69736D6F2076616C6F722E20456C2065736375646F206578706C6F7461206375616E646F20736520656C696D696E612C206C6F2071756520696E666C696765202431323730303835733120702E206465206461C3B16F206465206C617320736F6D627261732061206C6F73206A756761646F7265732071756520657374C3A16E20656E20756E20726164696F2064652024313237303038356131206D2E004162736F7262652024773120702E206465206461C3B16F2E0D0A4375616E646F20736520656C696D696E612C20696E666C696765202431323730303835733120702E206465206461C3B16F206465206C617320736F6D627261732061206C6F73206A756761646F7265732071756520657374C3A16E20656E20756E20726164696F2064652024313237303038356131206D2E00, 67186), +(3776013982, 1258411, 'esMX', 0x000000, 67186), +(3776013982, 1258410, 'esMX', 0x00426562652070617261206F6274656E657220756E2065666563746F20636F736DC3A97469636F2E00556E61207665727369C3B36E20696E666572696F722079206E6F2066756E63696F6E616C206465206C6120626F6C61206D61726176696C6C6F7361206E6F20657370657261206E616461206DC3A1732071756520737520696E6576697461626C65206469736970616369C3B36E2E00, 67186), +(3776013982, 1258336, 'esMX', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'esMX', 0x000000, 67186), +(3776013982, 1257729, 'esMX', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'esMX', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'esMX', 0x00456C207461756D61747572676F20636F6D69656E7A612061207265616E696D6172736520792072657669766520636F6E20756E2024313235373732387331252064652073752073616C7564206DC3A178696D61207369206C612063616E616C697A616369C3B36E20736520636F6D706C6574612E005265616E696DC3A16E646F73652E205369206C612063616E616C697A616369C3B36E20736520636F6D706C6574612C20656C207461756D61747572676F2072657669766520636F6E20756E2024313235373732387331252064652073752073616C7564206DC3A178696D612E00, 67186), +(3776013982, 1257505, 'esMX', 0x00456C207461756D61747572676F20656E74726567612073752073616C756420612063616D62696F20646520756E2065736375646F206465206162736F726369C3B36E2064656C206D69736D6F2076616C6F722E004162736F7262652024773120702E206465206461C3B16F2E00, 67186), +(3776013982, 1256189, 'esMX', 0x000000, 67186), +(3776013982, 1255966, 'esMX', 0x00456C207461756D61747572676F20726567656E65726120756E20247331252064652073752073616C7564206DC3A178696D6120636164612024743120732E00526567656E65726120756E2024733125206465206C612073616C7564206DC3A178696D6120636164612024743120732E00, 67186), +(3776013982, 1253337, 'esMX', 0x000000, 67186), +(3776013982, 1253336, 'esMX', 0x000050726573656E6369617320756E6120696C757369C3B36E206475646F736120706F722063756C7061206465206C61206265626964612E2E2E00, 67186), +(3776013982, 1253194, 'esMX', 0x00006368616E6E656C00, 67186), +(3776013982, 1253193, 'esMX', 0x00006368616E6E656C00, 67186), +(3776013982, 1253185, 'esMX', 0x00006368616E6E656C00, 67186), +(3776013982, 1253064, 'esMX', 0x000000, 67186), +(3776013982, 1252431, 'esMX', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'esMX', 0x0024407370656C6C646573633132343130323300496E666C696765202431323538333336733120702E206465206461C3B16F20617263616E6F20636164612024743120732E00, 67186), +(3776013982, 1241023, 'esMX', 0x005A6F2767726F6E20736520637562726520636F6E20756E61206261727265726120717565206162736F72626520656C206461C3B16F20726563696269646F206D69656E74726173206C616E7A6120416476657274656E6369612066696E616C2E20416C2066696E616C697A61722C206C61206261727265726120656D69746520756E2070756C736F206465202431323538333336733120702E206465206461C3B16F20617263616E6F206120746F646F73206C6F73206A756761646F72657320636164612024313234313033327431207320686173746120717565206C612064657374727579656E2E004162736F7262652024773120702E206465206461C3B16F20726563696269646F2E00, 67186), +(3776013982, 1235076, 'esMX', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'esMX', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'esMX', 0x00456C2041636170617261646F72206465205465736F726F73207265636F6765207265637572736F73206465206C612070696C61206DC3A1732063657263616E612079207265656D706C617A6120756E612064652073757320686162696C69646164657320706F72206F747261206E756576612E243F44494646387C3F4449464632335B5D5B20536F6C6F20707565646520636F6E73657276617220756E6120686162696C696461642061206C612076657A2E5D0000, 67186), +(3776013982, 1235067, 'esMX', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'esMX', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'esMX', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'esMX', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'esMX', 0x00416C6C6572696120636F6C6F636120756E206361706172617AC3B36E206465206D616769612064656C20566163C3AD6F20616C72656465646F7220646520756E206A756761646F7220717565206162736F7262652024733120702E2064652073616E616369C3B36E2E2053692024407370656C6C6E616D6531323333383635207365206469736970612C206C61206162736F726369C3B36E2072657374616E746520706173612061206F74726F206A756761646F7220616C6561746F72696F2E004162736F7262652024773120702E2064652073616E616369C3B36E2E0D0A0D0A5369207365206469736970612C206C61206162736F726369C3B36E2072657374616E7465207061736172C3A12061206F74726F206A756761646F722E00, 67186), +(3776013982, 1228865, 'esMX', 0x00496E766F636120792072657469726120612065737461206D6F6E747572612E00243F6A31675B4C612076656C6F636964616420706F72207469657272612061756D656E746120756E20246A3167252E205D5B5D243F6A31665B4C612076656C6F6369646164206465207675656C6F2061756D656E746120756E20246A3166252E205D5B5D243F6A31735B4C612076656C6F6369646164206465206E61646F2061756D656E746120756E20246A3173252E205D5B5D00, 67186), +(3776013982, 1225598, 'esMX', 0x00243F50433135343832385B7C636E4951313A2D205472616A6520646520627563656F2062C3A17369636F7C525D5B5D243F50433135343832395B7C636E4951323A2D205472616A6520646520756E696F6E6573207265666F727A616461737C525D5B5D243F50433135343833305B7C636E4951333A2D205472616A6520656E6772617361646F206120666F6E646F7C525D5B5D243F50433135343833325B7C636E4951343A2D205472616A6520646520616C65746173206465207472696E6368657261206465205061686B7C525D5B5D0D0A56656C6F6369646164206465206E61646F202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D2054616E71756520646520616C69656E746F2062C3A17369636F7C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313232343730306D3620756E6964616465730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2054616E71756520757361646F2064652073756D65726769646F727C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313237313631336D3620756E6964616465730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D2054616E717565206170746F20706172612070726F66756E646964616465737C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313237313631346D3620756E6964616465730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D2054616E71756520646520616C69656E746F206465204E616C6F72616B6B7C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313237313631356D3620756E6964616465730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D204365626F2062C3A17369636F7C520D0A43726961747572617320646520706573636120636F6D756E65730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D204365626F206465206361726E616461207061726120616C6574C3AD6E7C520D0A43726961747572617320646520706573636120696E757375616C65730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D204365626F20646520706C65636F616C6574617C520D0A3A204372696174757261732064652070657363612072617261730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D204365626F206465206361726E6520646520736F6E646561666F6E646F737C520D0A3A2043726961747572617320646520706573636120C3A970696361730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20526564206465206C6F732062616AC3AD6F737C520D0A3A205265707461646F72657320636F6E2070C3BA6173207920636162616C6C69746F73206465206D617220657370696E6F736F730D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D205265642064652068696C6F20747269706C657C520D0A3A20546F646173206C617320637269617475726173207065717565C3B161730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20476166617320707265737572697A616461737C520D0A3A2052656C69717569617320616E746967756173206465736375627269626C65735D5B5D0D0A00243F50433135343832385B7C636E4951313A2D205472616A6520646520627563656F2062C3A17369636F7C525D5B5D243F50433135343832395B7C636E4951323A2D205472616A6520646520756E696F6E6573207265666F727A616461737C525D5B5D243F50433135343833305B7C636E4951333A2D205472616A6520656E6772617361646F206120666F6E646F7C525D5B5D243F50433135343833325B7C636E4951343A2D205472616A6520646520616C65746173206465207472696E6368657261206465205061686B7C525D5B5D0D0A56656C6F6369646164206465206E61646F202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D2054616E71756520646520616C69656E746F2062C3A17369636F7C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313232343730306D3620756E6964616465730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2054616E71756520757361646F2064652073756D65726769646F727C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313237313631336D3620756E6964616465730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D2054616E717565206170746F20706172612070726F66756E646964616465737C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313237313631346D3620756E6964616465730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D2054616E71756520646520616C69656E746F206465204E616C6F72616B6B7C520D0A4F78C3AD67656E6F206DC3A178696D6F2024313237313631356D3620756E6964616465730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D204365626F2062C3A17369636F7C520D0A43726961747572617320646520706573636120636F6D756E65730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D204365626F206465206361726E616461207061726120616C6574C3AD6E7C520D0A43726961747572617320646520706573636120696E757375616C65730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D204365626F20646520706C65636F616C6574617C520D0A3A204372696174757261732064652070657363612072617261730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D204365626F206465206361726E6520646520736F6E646561666F6E646F737C520D0A3A2043726961747572617320646520706573636120C3A970696361730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20526564206465206C6F732062616AC3AD6F737C520D0A3A205265707461646F72657320636F6E2070C3BA6173207920636162616C6C69746F73206465206D617220657370696E6F736F730D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D205265642064652068696C6F20747269706C657C520D0A3A20546F646173206C617320637269617475726173207065717565C3B161730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20476166617320707265737572697A616461737C520D0A3A2052656C69717569617320616E746967756173206465736375627269626C65735D5B5D00, 67186), +(3776013982, 1225322, 'esMX', 0x007C636E475245454E5F464F4E545F434F4C4F523A486162696C69646164207265636F6D656E646164613A7C7220310D0A0D0A4C61732061677561732063616C6D6173207920736572656E617320736F6E20696465616C6573207061726120717565206C6F73207065736361646F72657320636F6D69656E63656E2061206578706C6F726172206C6F20717565207469656E656E2070617261206F667265636572206C61732070726F66756E646964616465732E0D0A0D0A457374616E717565732071756520736520656E6375656E7472616E20656E2065737461207A6F6E613A0D0A2D20456E6A616D627265206465204675656E74652064656C20536F6C0D0A2D20466C6F726563696D69656E746F2062757262756A65616E74650D0A2D20456E6A616D62726520666C6F72656369646F0D0A2D20566163C3AD6F20766973636F736F0D0A2D2043617267616D656E746F206465736375696461646F0D0A2D205465736F726F73207065726469646F730000, 67186), +(3776013982, 1225281, 'esMX', 0x00556E61206372696174757261206170616369626C6520717565207072656669657265206C61732061677561732063616C6D617320646520426F737175652043616E6369C3B36E20457465726E612E205369206269656E2065732066C3A163696C2070657363617220656E206573746173206167756173207061726120656C207065736361646F722070726F6D6564696F2C20657374652070657A20656E20706172746963756C617220736F6C6F20657374C3A120646973706F6E69626C652070617261206C6F73206DC3A173207065726365707469766F732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC3817265617320646F6E64652070756564657320656E636F6E7472617220657374652070657A3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457374616E717565732064652070657363613A7C720D0A2D20546F7272656E746520666C6F72656369656E74650000, 67186), +(3776013982, 1225277, 'esMX', 0x004C617320616775617320646520486172616E64617220636F6E7469656E656E206D696E6572616C657320C3BA6E69636F73207175652C206375616E646F20706173616E20612074726176C3A973206465206C6173206272616E717569617320646520756E2070657A2063616E746F72207265737461757261646F2C20656D6974656E20756E61206D656C6F64C3AD61206574C3A972656120737562616375C3A1746963612E20457374612063616E6369C3B36E2C207369206269656E20657320706C6163656E746572612070617261206C6F73207065736361646F7265732C20726570656C652061206C6F732064657072656461646F72657320636F6E2073757320737574696C657320766962726163696F6E65732E20536920616C67756E6F20646520656C6C6F732C20636F6D6F20656C207465747261207265746F726369646F2C207365206163657263612064656D61736961646F2C206C617320766962726163696F6E6573207365207675656C76656E206DC3A17320766F6CC3A174696C65732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373130342046657374696E657320646520636F63696E610D0A0D0A457374652070657A2C2065787472656D6164616D656E7465206578747261C3B16F207920736162726F736F2C20657320756E20696E6772656469656E746520696D706F7274616E746520656E206D75636861732072656365746173206465206C6120636F63696E61206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC3817265617320646F6E64652070756564657320656E636F6E7472617220657374652070657A3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457374616E717565732064652070657363613A7C720D0A2D20456E6A616D62726520666C6F72656369646F0D0A2D20466C6F726563696D69656E746F2062757262756A65616E74650D0A2D20456E6A616D627265206465204675656E74652064656C20536F6C0D0A2D20546F7272656E746520666C6F72656369656E74650000, 67186), +(3776013982, 1225273, 'esMX', 0x00556E206861626974616E7465206465206C6120546F726D656E74612064656C20566163C3AD6F20637572696F73616D656E746520646573636F6E63657274616E74652E205375732065787472656D6964616465732073652065787469656E64656E206465736465206C6F73206173706563746F732064656C20566163C3AD6F20646F6E6465207365207075656465207065736361722E2041737475746F2C20696E67656E696F736F2C20696E74656C6967656E7465207920756E20666F726D696461626C65206465736166C3AD6F2070617261206375616C7175696572207065736361646F72207175652073652061747265766120612070657363617220656E206C6120546F726D656E74612064656C20566163C3AD6F0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373130342046657374696E657320646520636F63696E610D0A0D0A457374652070657A2C2065787472656D6164616D656E7465206578747261C3B16F207920736162726F736F2C20657320756E20696E6772656469656E746520696D706F7274616E746520656E206D75636861732072656365746173206465206C6120636F63696E61206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC3817265617320646F6E64652070756564657320656E636F6E7472617220657374652070657A3A7C520D0A0D0A2D20546F726D656E74612064656C20566163C3AD6F0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457374616E717565732064652070657363613A7C720D0A0D0A2D2056C3B37274696365206F6365C3A16E69636F0D0A2D20566163C3AD6F20766973636F736F0000, 67186), +(3776013982, 1225272, 'esMX', 0x00556E20726F627573746F2070657A20657370696E6F736F20706C61746561646F206375796F2063756572706F20616C69656E74612074616E746F2061207065736361646F72657320636F6D6F20612070656365732061206578706C6F7261722070617261206C7565676F206C616E7A61726C65732073757320657370696E61732E20556E206865726D6F736F20677275C3B1C3B36E20616E7469736F6369616C2C207065726F20756E207465736F726F2071756520636F646963696120746F646F206173706972616E74652061207065736361646F722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC3817265617320646F6E64652070756564657320656E636F6E7472617220657374652070657A3A7C520D0A2D20426F737175652043616E6369C3B36E20457465726E610D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457374616E717565732064652070657363613A7C720D0A2D20466C6F726563696D69656E746F2062757262756A65616E74650D0A2D20456E6A616D627265206465204675656E74652064656C20536F6C0D0A2D20456E6A616D62726520666C6F72656369646F0D0A2D20546F7272656E746520666C6F72656369656E74650000, 67186), +(3776013982, 444803, 'esMX', 0x00556E612068756D696C6465206372696174757261206475726D69656E74652E204375616E646F206465737069657274612C2073757320657363616D617320726573706C616E646563656E20636F6E20756E206272696C6C6F207265666C656374616E74652C206120706573617220646520657374617220656E20636F6E746163746F20636F6E20706F6361206C757A2E20556E6120766572646164657261206D616A657374756F736964616420717565206D7563686F73206173706972616E7465732061207065736361646F7265732062757363616E20636F6E7365677569722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A7C720D0A0D0A24407370656C6C69636F6E3434353132372046696C6574652066726573636F0D0A0D0A5574696C697A61722065737465207065736361646F20636F6E206C6120686162696C6964616420646520636F63696E612070756564652070726F647563697220756E61206772616E2063616E74696461642064652066696C6574652066726573636F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC3817265617320646F6E64652070756564657320656E636F6E7472617220657374652070657A3A7C520D0A0D0A2D20417A6A2D4B616865740D0A2D204F61736973206465204B2761726573680000, 67186), +(3205218938, 56772, 'esMX', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C4534005365206F66726563652063617272790001000000, 67186), +(3205218938, 56771, 'esMX', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300436F6D706574697469766F0001000000, 67186), +(3205218938, 56770, 'esMX', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45320052656C616A61646F0001000000, 67186), +(3205218938, 22337, 'esMX', 0x534C4153485F5441524745545F4D41524B455231002F6D6F0001000000, 67186), +(3776013982, 1250759, 'esMX', 0x000000, 67186), +(1010104591, 26054, 'esMX', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'esMX', 0x4172636F206465204C6F616D6D00000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'esMX', 0x41706C697175652073696E27646F726569206F726E616D656E7461646F00000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'esMX', 0x4CC3A16D7061726120636F6C67616E7465206465206D6563C3A16E69636F206465204D696E61686F6E646100000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'esMX', 0x4DC3A17175696E6120646520657370726573736F2064652044616C6172616E000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'esMX', 0x4272617365726F2064652064657661737461646F72000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'esMX', 0x4661726F6C2064652068696572726F206F63756C746F00000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'esMX', 0x4661726F6C2064652068756D6F2064652042726164656E7362726F6F6B00000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'esMX', 0x4661726F6C61206465204D696E61686F6E6461206D757920636F6E666961626C6500000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'esMX', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'esMX', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'esMX', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'esMX', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'esMX', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'esMX', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'esMX', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'esMX', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'esMX', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'esMX', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'esMX', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'esMX', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'esMX', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'esMX', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'esMX', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'esMX', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'esMX', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'esMX', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'esMX', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'esMX', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'esMX', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'esMX', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'esMX', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'esMX', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'esMX', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'esMX', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'esMX', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'esMX', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'esMX', 0x0044C3A963696D6F207472616E736D757461206C6F7320667261676D656E746F7320656E20756E206EC3BA636C656F2064656C20566163C3AD6F20656C656D656E74616C207061726120696E7465677261726C6F2061206C6120666F726A612064656C20566163C3AD6F206E616369656E74652E204C6120666F726A612064656C20566163C3AD6F20726571756965726520247331206EC3BA636C656F732064656C20566163C3AD6F20656C656D656E74616C6573207061726120636F6D706C6574617273652E0D0A0D0A436F6E747269627563696F6E65732061637475616C65733A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'esMX', 0xFFFFFFFFFFFFFFFF556E206EC3BA636C656F2064656C20566163C3AD6F20656C656D656E74616C0000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'esMX', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'esMX', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'esMX', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'esMX', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'esMX', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'esMX', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'esMX', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'esMX', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'esMX', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'esMX', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'esMX', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'esMX', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'esMX', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'esMX', 0x000000, 67186), +(3653642729, 376, 'esMX', 0x000000008D000000, 67186), +(1673391669, 141, 'esMX', 0x8A000000, 67186), +(2791084701, 138, 'esMX', 0x35D30600, 67186), +(2518885667, 13760, 'esMX', 0xC035000000000000, 67186), +(3776013982, 1296205, 'esMX', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'esMX', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'esMX', 0xFFFFFFFFFFFFFFFF4173616C746F732064656C20566163C3AD6F3A205A756C27416D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'esMX', 0xFFFFFFFFFFFFFFFF4173616C746F732064656C20566163C3AD6F3A20426F737175652043616E6369C3B36E20457465726E6100003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'esMX', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'esMX', 0x000000, 67186), +(3776013982, 1296168, 'esMX', 0x000000, 67186), +(600565378, 665333, 'esMX', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'esMX', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'esMX', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'esMX', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'esMX', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'esMX', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'esMX', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'esMX', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'esMX', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'esMX', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'esMX', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'esMX', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'esMX', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'esMX', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'esMX', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'esMX', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'esMX', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'esMX', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'esMX', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'esMX', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'esMX', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'esMX', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'esMX', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'esMX', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'esMX', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'esMX', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'esMX', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'esMX', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'esMX', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'esMX', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'esMX', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'esMX', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'esMX', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'esMX', 0x898200006D670300, 67186), +(3745449290, 8614, 'esMX', 0x536974696F2064652072697475616C3A2054726F6E6F20517565627261646F00536520657374C3A1206C6C6576616E646F2061206361626F20756E2072697475616C2070656C6967726F736F20706F7220617175C3AD2063657263612E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'esMX', 0x000000, 67186), +(2575642838, 765, 'esMX', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'esMX', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'esMX', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'esMX', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'esMX', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'esMX', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'esMX', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'esMX', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'esMX', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'esMX', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'esMX', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'esMX', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'esMX', 0x56656E74616E612074656A69646120636F6E207261C3AD636573000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'esMX', 0x43756164726F20224661726F6C2064652043616E6369C3B36E20457465726E61000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'esMX', 0x5075657274612074656A69646120636F6E207261C3AD636573000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'esMX', 0x50C3A972676F6C612066C3BA6E676963610000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'esMX', 0x54617274612064652062617961732073756E74756F736100000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'esMX', 0x4D61636574612072C3BA737469636120646520486172616E646172000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'esMX', 0x4772616E206372697374616C20657465726361726761646F00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'esMX', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'esMX', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'esMX', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'esMX', 0x467B0000, 67186), +(4033975491, 620660, 'esMX', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'esMX', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'esMX', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'esMX', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'esMX', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'esMX', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'esMX', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'esMX', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'esMX', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'esMX', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'esMX', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'esMX', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'esMX', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'esMX', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'esMX', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'esMX', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'esMX', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'esMX', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'esMX', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'esMX', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'esMX', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'esMX', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'esMX', 0x000000, 67186), +(3776013982, 1295957, 'esMX', 0x000000, 67186), +(3776013982, 1295932, 'esMX', 0x000000, 67186), +(3776013982, 1295927, 'esMX', 0x004375616E646F20746520646573656D7065C3B1617320656E20656C20726F6C2064652074616E717565207061726120747520677275706F2C204C696E646F726D69206D6172636120667565727A617320656E656D6967617320656E2063616C61626F7A6F732064652070696564726120616E67756C61722E0D0A0D0A4861626C6120636F6E204C696E646F726D692070617261206465736163746976617220657374652065666563746F2E004375616E646F20746520646573656D7065C3B1617320656E20656C20726F6C2064652074616E717565207061726120747520677275706F2C204C696E646F726D69206D6172636120667565727A617320656E656D6967617320656E2063616C61626F7A6F732064652070696564726120616E67756C61722E0D0A0D0A4861626C6120636F6E204C696E646F726D692070617261206465736163746976617220657374652065666563746F2E00, 67186), +(3776013982, 1265971, 'esMX', 0x004C617320686162696C69646164657320717565206C616E7A616E206C6F73206A696E6574657320696E666C6967656E20756E2024733125206DC3A173206465206461C3B16F2E243F63335B0D0A0D0A5475206E656372C3B36661676F2079207475206172717565726F2065737175656CC3A97469636F20696E666C6967656E20756E2024733325206DC3A173206465206461C3B16F2079206C6F73206E656372C3B36661676F73206D656E6F72657320696E666C6967656E20756E2024733525206DC3A173206465206461C3B16F5D5B5D2E0000, 67186), +(336222293, 22784, 'esMX', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'esMX', 0x00436164612024733120417A6F7465732064656C206465737472697061646F722C206F627469656E6573204D75657274652073C3BA626974612E0D0A0D0A55736172204D75657274652073C3BA62697461206163656C657261207475207369677569656E74652046696C6F746F726D656E746120706172612071756520676F6C70656520312076657A206DC3A17320286DC3A1782E202434343536303675292E204C6120647572616369C3B36E20746F74616C2064652046696C6F746F726D656E7461206E6F2063616D6269612E0D0A0D0A4D75657274652073C3BA62697461207469656E6520756E20247332252064652070726F626162696C6964616420646520616374697661722050726F766563686F206465206C6120746F726D656E746120636F6E20756E20247333252064652065666563746976696461642E0000, 67186), +(378810315, 666, 'esMX', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'esMX', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'esMX', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'esMX', 0x000000, 67186), +(1181150530, 752881, 'esMX', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'esMX', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'esMX', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'esMX', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'esMX', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'esMX', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'esMX', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'esMX', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'esMX', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'esMX', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'esMX', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'esMX', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'esMX', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'esMX', 0xE1570500E0570500, 67186), +(736158310, 43619, 'esMX', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'esMX', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'esMX', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'esMX', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'esMX', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'esMX', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'esMX', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'esMX', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'esMX', 0x00243F63315B496E766F6361722061204E69757A616F2C20656C2042756579204E6567726F5D5B43C3A96E69745D20686163652071756520243F63315B416C69656E746F20646520667565676F206C616E63655D5B5061746164612064656C20736F6C206E616369656E74652079205061746164612067697261746F726961206465206C61206772756C6C61206C616E63656E5D2024733120476F6C70657320656E20616C757669C3B36E2E0000, 67186), +(3776013982, 1244331, 'esMX', 0x00556E2024733225206465206C6120666C6F72616369C3B36E2066696E616C20646520466C6F7220646520766964612073616E61206120756E206DC3A178696D6F2064652024733320616C6961646F732068657269646F7320656E20756E20726164696F2064652024313234343334316131206D2E0000, 67186), +(3776013982, 441845, 'esMX', 0x00243F63325B456C206461C3B16F2064652054726974757261722C20466C6167656C6F207920417261C3B1617A6F2061756D656E746120756E202473312520792073752070726F626162696C6964616420646520676F6C7065206372C3AD7469636F2061756D656E746120756E20247333252E5D5B456C206461C3B16F2064652044657374726F7A61722061756D656E746120756E202473342520792073752070726F626162696C6964616420646520676F6C7065206372C3AD7469636F2061756D656E746120756E20247335252E5D0D0A0D0A243F63335B44657374726F7A617220746520726573746175726120756E2024343538373234733125206465206C612073616C7564206DC3A178696D612E5D5B5D0000, 67186), +(3205218938, 57068, 'esMX', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00C2BF5175696572657320636F6D7072617220746F646F73206C6F73206F626A65746F73202825732920706F722025733F0003000000, 67186), +(3205218938, 23377, 'esMX', 0x5343454E4152494F5F53544147455F53544154555300466173652025642064652025640001000000, 67186), +(3205218938, 22841, 'esMX', 0x5343454E4152494F5F535441474500466173652025640001000000, 67186), +(3745449290, 8459, 'esMX', 0x507265736100417374616C6F72204A75726173616E677265206E6563657369746120747520617975646120706172612063617A617220616D656E617A6173206D6F7274616C65732E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'esMX', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'esMX', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'esMX', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'esMX', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'esMX', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'esMX', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'esMX', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'esMX', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'esMX', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'esMX', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'esMX', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'esMX', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'esMX', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'esMX', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'esMX', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'esMX', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'esMX', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'esMX', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'esMX', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'esMX', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'esMX', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'esMX', 0x5665726D69732061626973616C00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'esMX', 0x9201000022000000, 67186), +(3247720076, 39887, 'esMX', 0x0700000000, 67186), +(3776013982, 243435, 'esMX', 0x00436F6E766965727465207475207069656C20656E2070696564726120792061756D656E746120756E20247331252074752073616C75642061637475616C2079206DC3A178696D6120792072656475636520756E202473322520656C206461C3B16F20726563696269646F20647572616E74652024642E004C612073616C7564206DC3A178696D612061756D656E746120756E20247731252E0D0A456C206461C3B16F20726563696269646F2073652072656475636520756E20247732252E243F2477343E315B0D0A4162736F7262652024773420702E206465206461C3B16F2E5D5B5D00, 67186), +(3776013982, 221562, 'esMX', 0x00456C657661206120756E20656E656D69676F2064656C207375656C6F2079206C65206F7072696D65206C612067617267616E746120636F6E20656E657267C3AD61206F73637572612C206C6F20717565206C6F2061747572646520647572616E74652024642E00417475726469646F2E00, 67186), +(3776013982, 205630, 'esMX', 0x54616C656E746F206465204A634A0045737472616E67756C617320616C206F626A657469766F20636F6E206D616769612064656D6F6EC3AD6163612C206C6F20717565206C6F20617475726465206520696E666C69676520246F3420702E206465206461C3B16F206465206C617320736F6D6272617320647572616E7465202464206D69656E74726173207469656E657320616C206F626A657469766F20616761727261646F2E20507565646573206D6F766572746520647572616E7465206C612063616E616C697A616369C3B36E2E0D0A0D0A5573612041676172726520646520496C6C6964616E206465206E7565766F2070617261206C616E7A617220616C206F626A657469766F206120756E612075626963616369C3B36E20656E20756E20726164696F206465202432303831373352206D2E00417475726469646F2E205375667269656E646F2024773420702E206465206461C3B16F206465206C617320736F6D62726173206361646120247420732E00, 67186), +(3776013982, 198158, 'esMX', 0x54616C656E746F206465204A634A0054C3BA20792074757320616C6961646F7320656E20756E20726164696F20646520244131206D207365207675656C76656E20696E76697369626C657320616C20696E7374616E746520647572616E74652024642E205369207265616C697A616E206375616C71756965722061636369C3B36E2C2073652063616E63656C6172C3A120656C2065666563746F2E00496E76697369626C652E205265616C697A6172206375616C71756965722061636369C3B36E2063616E63656C6172C3A120656C2065666563746F2E00, 67186), +(3776013982, 108194, 'esMX', 0x00456C657661206120756E20656E656D69676F2064656C207375656C6F2079206C65206F7072696D65206C612067617267616E746120636F6E20656E657267C3AD61206F73637572612C206C6F20717565206C6F2061747572646520647572616E74652024642E00417475726469646F2E00, 67186), +(378810315, 1004, 'esMX', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'esMX', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'esMX', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'esMX', 0x077A03000705000047000000, 67186), +(378810315, 999, 'esMX', 0x530D00000509000049000000, 67186), +(378810315, 998, 'esMX', 0x530D00000509000048000000, 67186), +(378810315, 997, 'esMX', 0x530D00000509000047000000, 67186), +(378810315, 996, 'esMX', 0x78B700000409000049000000, 67186), +(378810315, 995, 'esMX', 0x78B700000409000048000000, 67186), +(378810315, 994, 'esMX', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'esMX', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'esMX', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'esMX', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'esMX', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'esMX', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'esMX', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'esMX', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'esMX', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'esMX', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'esMX', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'esMX', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'esMX', 0x989B12000706000006010000, 67186), +(378810315, 980, 'esMX', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'esMX', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'esMX', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'esMX', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'esMX', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'esMX', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'esMX', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'esMX', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'esMX', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'esMX', 0x713507000505000000010000, 67186), +(378810315, 966, 'esMX', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'esMX', 0x550300000805000046000000, 67186), +(378810315, 964, 'esMX', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'esMX', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'esMX', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'esMX', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'esMX', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'esMX', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'esMX', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'esMX', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'esMX', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'esMX', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'esMX', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'esMX', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'esMX', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'esMX', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'esMX', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'esMX', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'esMX', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'esMX', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'esMX', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'esMX', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'esMX', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'esMX', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'esMX', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'esMX', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'esMX', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'esMX', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'esMX', 0x991503000409000045020000, 67186), +(378810315, 933, 'esMX', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'esMX', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'esMX', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'esMX', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'esMX', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'esMX', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'esMX', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'esMX', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'esMX', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'esMX', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'esMX', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'esMX', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'esMX', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'esMX', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'esMX', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'esMX', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'esMX', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'esMX', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'esMX', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'esMX', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'esMX', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'esMX', 0x42E906000309000009010000, 67186), +(378810315, 902, 'esMX', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'esMX', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'esMX', 0x761800000309000009010000, 67186), +(378810315, 899, 'esMX', 0x76180000030900000A010000, 67186), +(378810315, 898, 'esMX', 0x76180000030900000B010000, 67186), +(378810315, 885, 'esMX', 0x78B700000409000047000000, 67186), +(378810315, 879, 'esMX', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'esMX', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'esMX', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'esMX', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'esMX', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'esMX', 0x980100000905000005010000, 67186), +(378810315, 858, 'esMX', 0x980100000905000004010000, 67186), +(378810315, 855, 'esMX', 0x980100000905000003010000, 67186), +(378810315, 843, 'esMX', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'esMX', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'esMX', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'esMX', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'esMX', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'esMX', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'esMX', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'esMX', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'esMX', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'esMX', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'esMX', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'esMX', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'esMX', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'esMX', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'esMX', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'esMX', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'esMX', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'esMX', 0x027F05000707000003010000, 67186), +(378810315, 720, 'esMX', 0x36A401000707000048000000, 67186), +(378810315, 719, 'esMX', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'esMX', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'esMX', 0x790200000905000046000000, 67186), +(378810315, 714, 'esMX', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'esMX', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'esMX', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'esMX', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'esMX', 0x68F905000605000067000000, 67186), +(378810315, 691, 'esMX', 0x68F905000605000066000000, 67186), +(378810315, 690, 'esMX', 0x68F905000605000069000000, 67186), +(378810315, 682, 'esMX', 0x15A905000705000041020000, 67186), +(378810315, 679, 'esMX', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'esMX', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'esMX', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'esMX', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'esMX', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'esMX', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'esMX', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'esMX', 0x16600500040800003F000000, 67186), +(378810315, 661, 'esMX', 0x16600500040900003E000000, 67186), +(378810315, 658, 'esMX', 0xE53805000209000040000000, 67186), +(378810315, 657, 'esMX', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'esMX', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'esMX', 0x166005000409000040000000, 67186), +(378810315, 648, 'esMX', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'esMX', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'esMX', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'esMX', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'esMX', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'esMX', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'esMX', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'esMX', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'esMX', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'esMX', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'esMX', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'esMX', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'esMX', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'esMX', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'esMX', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'esMX', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'esMX', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'esMX', 0x550300000805000041000000, 67186), +(378810315, 449, 'esMX', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'esMX', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'esMX', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'esMX', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'esMX', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'esMX', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'esMX', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'esMX', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'esMX', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'esMX', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'esMX', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'esMX', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'esMX', 0x57A101000505000067000000, 67186), +(378810315, 408, 'esMX', 0x638400000705000069000000, 67186), +(378810315, 407, 'esMX', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'esMX', 0xE40200000505000069000000, 67186), +(378810315, 402, 'esMX', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'esMX', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'esMX', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'esMX', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'esMX', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'esMX', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'esMX', 0xE77701000605000046000000, 67186), +(378810315, 377, 'esMX', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'esMX', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'esMX', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'esMX', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'esMX', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'esMX', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'esMX', 0x400700000409000004010000, 67186), +(378810315, 353, 'esMX', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'esMX', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'esMX', 0xE60600000605000005010000, 67186), +(378810315, 349, 'esMX', 0xE60600000605000004010000, 67186), +(378810315, 348, 'esMX', 0xE60600000605000003010000, 67186), +(378810315, 346, 'esMX', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'esMX', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'esMX', 0x301E03000509000006010000, 67186), +(378810315, 342, 'esMX', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'esMX', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'esMX', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'esMX', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'esMX', 0x66D401000505000009010000, 67186), +(378810315, 332, 'esMX', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'esMX', 0x981900000605000048000000, 67186), +(378810315, 329, 'esMX', 0x981900000605000049000000, 67186), +(378810315, 224, 'esMX', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'esMX', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'esMX', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'esMX', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'esMX', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'esMX', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'esMX', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'esMX', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'esMX', 0x242303000409000041020000, 67186), +(378810315, 205, 'esMX', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'esMX', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'esMX', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'esMX', 0x242303000409000045020000, 67186), +(378810315, 189, 'esMX', 0x743C03000805000045020000, 67186), +(378810315, 187, 'esMX', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'esMX', 0x36A401000707000049000000, 67186), +(378810315, 176, 'esMX', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'esMX', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'esMX', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'esMX', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'esMX', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'esMX', 0x36A401000707000047000000, 67186), +(378810315, 159, 'esMX', 0x981900000605000047000000, 67186), +(378810315, 158, 'esMX', 0x533301000405000066000000, 67186), +(378810315, 156, 'esMX', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'esMX', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'esMX', 0xA09001000607000066000000, 67186), +(378810315, 152, 'esMX', 0x82020000010B000046000000, 67186), +(378810315, 150, 'esMX', 0x50350300050B000046000000, 67186), +(378810315, 149, 'esMX', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'esMX', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'esMX', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'esMX', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'esMX', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'esMX', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'esMX', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'esMX', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'esMX', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'esMX', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'esMX', 0x62040000060500000B010000, 67186), +(378810315, 121, 'esMX', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'esMX', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'esMX', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'esMX', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'esMX', 0x45990100010B000009010000, 67186), +(378810315, 113, 'esMX', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'esMX', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'esMX', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'esMX', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'esMX', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'esMX', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'esMX', 0x491E03000907000007010000, 67186), +(378810315, 101, 'esMX', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'esMX', 0x301E03000509000008010000, 67186), +(378810315, 97, 'esMX', 0x301E03000509000007010000, 67186), +(378810315, 96, 'esMX', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'esMX', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'esMX', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'esMX', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'esMX', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'esMX', 0x400700000409000005010000, 67186), +(378810315, 83, 'esMX', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'esMX', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'esMX', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'esMX', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'esMX', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'esMX', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'esMX', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'esMX', 0xB63500000707000004010000, 67186), +(378810315, 70, 'esMX', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'esMX', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'esMX', 0x400700000409000003010000, 67186), +(378810315, 63, 'esMX', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'esMX', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'esMX', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'esMX', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'esMX', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'esMX', 0x82020000010B000042000000, 67186), +(378810315, 45, 'esMX', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'esMX', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'esMX', 0x82020000010B000041000000, 67186), +(378810315, 39, 'esMX', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'esMX', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'esMX', 0x790200000905000041000000, 67186), +(378810315, 35, 'esMX', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'esMX', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'esMX', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'esMX', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'esMX', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'esMX', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'esMX', 0xD39603000805000040000000, 67186), +(378810315, 21, 'esMX', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'esMX', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'esMX', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'esMX', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'esMX', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'esMX', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'esMX', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'esMX', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'esMX', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'esMX', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'esMX', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'esMX', 0x52697475616C6973746120646F6D616E61617200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291859, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291858, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291857, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291856, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291855, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931373931773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291854, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291853, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291852, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291851, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291850, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291849, 'esMX', 0x00526573746175726120686173746120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C7564207920756E202431323931383331773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291848, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291847, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291846, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291845, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291844, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291843, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291842, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291841, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291840, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291839, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291838, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291837, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291831, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1291828, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291827, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291826, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291825, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291824, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291822, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1291791, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1290929, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1290926, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1290925, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1289221, 'esMX', 0x00C2A14162726520656C20636F667265207061726120766572207175C3A920686179206164656E74726F210000, 67186), +(3776013982, 1286537, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C75642079206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1286536, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1286535, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1282100, 'esMX', 0x000000, 67186), +(3776013982, 1282018, 'esMX', 0x00C2A1496E766F636120756E2062616E636F20706172612073656E7461727365210043616E63656C6120656C2061757261207061726120646573696E766F63617220656C2062616E636F2E00, 67186), +(3776013982, 1277461, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269922, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1269921, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1269920, 'esMX', 0x00526573746175726120756E20247331252064652074752073616C7564206DC3A178696D6120706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C756420706F7220736567756E646F2E00, 67186), +(3776013982, 1269919, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269918, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A1206DC3A178696D6F20706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E747261732062656265732E00526573746175726120756E2024773125206465206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269917, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C75642079206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1269916, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C75642079206D616EC3A120706F7220736567756E646F2E00, 67186), +(3776013982, 1232065, 'esMX', 0x00526573746175726120756E2024733125206465207475206D616EC3A120792073616C7564206DC3A178696D6F7320706F7220736567756E646F20647572616E74652024642E204465626573207065726D616E656365722073656E7461646F206D69656E7472617320636F6D65732E00526573746175726120756E20247331252064652073616C75642079206D616EC3A120706F7220736567756E646F2E00, 67186), +(2948698321, 8059, 'esMX', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'esMX', 0x000000, 67186), +(3898252553, 11633, 'esMX', 0xE28200001E490300, 67186), +(3898252553, 11632, 'esMX', 0xE18200001E490300, 67186), +(3898252553, 11631, 'esMX', 0xE08200001E490300, 67186), +(3898252553, 11630, 'esMX', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'esMX', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'esMX', 0x00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247333252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202473342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247733252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202477342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00, 67186), +(3776013982, 1262377, 'esMX', 0x00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247333252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202473342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247733252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202477342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00, 67186), +(3776013982, 1262376, 'esMX', 0x00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247333252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202473342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247733252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202477342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00, 67186), +(3776013982, 1262365, 'esMX', 0x004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'esMX', 0x004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D75657274652073616772616461207469656E6520756E612070726F626162696C69646164206D75792062616A6120646520656A656375746172206120656E656D69676F7320717565206E6F20736F6E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D75657274652073616772616461207469656E6520756E612070726F626162696C69646164206D75792062616A6120646520656A656375746172206120656E656D69676F7320717565206E6F20736F6E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'esMX', 0x004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D75657274652073616772616461207469656E6520756E612070726F626162696C69646164206D75792062616A6120646520656A656375746172206120656E656D69676F7320717565206E6F20736F6E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206465206D75657274652073616772616461207469656E6520756E612070726F626162696C69646164206D75792062616A6120646520656A656375746172206120656E656D69676F7320717565206E6F20736F6E206A656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'esMX', 0x00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247333252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202473342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202473352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00416272697220756E6120437572696F7369646164206578747261766961646120696E766F636120756E6120636172676120737562797567616461207175652074652061646F726120656E20656C20636F6D626174652C206C6F207175652061756D656E7461207475206573746164C3AD7374696361202470726920756E20247733252E0D0A0D0A5075656465732074656E657220756E206DC3A178696D6F206465202477342063617267617320737562797567616461732061206C612076657A2E0D0A4465737075C3A973206465206A756E74617220616C206D656E6F73202477352061646F7261646F7265732C2061756D656E7461206C612063616E74696461642064652024707269206F746F726761646120706F722063617267612E00, 67186), +(3776013982, 1248927, 'esMX', 0x004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282473352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024733325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004375616E646F20747520636F6D7061C3B165726F20646520616269736D6F206C616E7A612024407370656C6C6E616D65313235313630332C206C6F73206D69656D62726F732064656C20677275706F207265636962656E20756E204D616E6461746F207361677261646F20717565206F746F7267612061207375732068656368697A6F73207920686162696C696461646573206461C3B1696E6F7320756E20247B282477352F31303030292A3130307D2E31252064652070726F626162696C6964616420646520696E666C696769722024773325206465206C612073616C7564206DC3A178696D612064656C206F626A657469766F20636F6D6F206461C3B16F207361677261646F2061646963696F6E616C20706F72206D616E6461746F2E0D0A0D0A536F6C6F207075656465206F63757272697220756E612076657A20706F72206F626A657469766F206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'esMX', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'esMX', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A1726561206672656E746520612074692079206C657320617369676E6120656C20617572612022456E636F6E747261646F222E0000, 67186), +(3776013982, 1256862, 'esMX', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A17265612079206C657320617369676E6120656C20617572612022456E636F6E747261646F222E0000, 67186), +(3776013982, 1256861, 'esMX', 0x0053616C746120686163696120756E612075626963616369C3B36E207920646973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20656C20C3A172656120616C72656465646F722064656C20696D706163746F2E0000, 67186), +(3776013982, 1256860, 'esMX', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F73206672656E7465206120746920647572616E74652024642079206C657320617369676E6120656C20617572612022456E636F6E747261646F222E0000, 67186), +(3776013982, 1256010, 'esMX', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A17265612079206C657320617369676E6120656C20617572612022456E636F6E747261646F222E0000, 67186), +(1408785804, 249319, 'esMX', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'esMX', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'esMX', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'esMX', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'esMX', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'esMX', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'esMX', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'esMX', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'esMX', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'esMX', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'esMX', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'esMX', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'esMX', 0x000000, 67186), +(3776013982, 1295497, 'esMX', 0x000000, 67186), +(3776013982, 1295486, 'esMX', 0x000000, 67186), +(3776013982, 464291, 'esMX', 0x000000, 67186), +(3776013982, 1243616, 'esMX', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'esMX', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'esMX', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'esMX', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'esMX', 0x00446567656E7472697573206C616E7A6120756E6120646573636172676120646520656E657267C3AD612064656C20566163C3AD6F20696E65737461626C6520717565207265626F746120656E20247332206C7567617265732E204375616E646F206C6120656E657267C3AD6120696D706163746120636F6E74726120656C207375656C6F2C206578706C6F74612C206C6F2071756520696E666C696765202431323135313537733120702E206465206461C3B16F206465206C617320736F6D627261732061206C6F73206A756761646F72657320656E20756E20726164696F2064652024313231353135374131206D2064656C2070756E746F20646520696D706163746F2E205369206E6F20686179206A756761646F72657320656E20656C20C3A17265612C207365206163746976612024407370656C6C6E616D65313231353136312E0D0A0D0A4465737075C3A973206465206C6F732024733220696D706163746F7320746F74616C65732C206C6120656E657267C3AD61207265626F746120756E612076657A206DC3A173207920736520636F6E76696572746520656E20756E612024407370656C6C6E616D65313231353933372E0000, 67186), +(3776013982, 1243588, 'esMX', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'esMX', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'esMX', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'esMX', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'esMX', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'esMX', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'esMX', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'esMX', 0x7C63464646464432303056656E6465646F723A207C7253756D65726769646F72205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F73746F3A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'esMX', 0x7C63464646464432303056656E6465646F723A207C7253756D65726769646F72205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F73746F3A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'esMX', 0x7C63464646464432303056656E6465646F723A207C7253756D65726769646F72205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'esMX', 0x7C63464646464432303056656E6465646F723A207C7253756D65726769646F72205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'esMX', 0x7C63464646464432303056656E6465646F723A207C7253756D65726769646F72205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'esMX', 0x7C63464646464432303056656E6465646F723A207C7253756D65726769646F72205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27416D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'esMX', 0x005265616C697A6120756E2074616A6F20646F626C652079207072656369736F206170756E7461646F2061207375206F626A657469766F2061637475616C2E20436164612061746171756520696E666C696765202431323537373336733120702E206465206461C3B16F2066C3AD7369636F2079202431323537373435733120702E206DC3A173206465206461C3B16F207361677261646F20636164612024313235373734357431207320647572616E7465202431323537373435642061206C6F7320656E656D69676F732071756520657374C3A96E20616C20616C63616E636520792064656A6120756E612024407370656C6C6E616D653132353533313020656E20656C207375656C6F2E0000, 67186), +(4033975491, 619581, 'esMX', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'esMX', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'esMX', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'esMX', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'esMX', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'esMX', 0x526F6A6F00243F63315B456C206461C3B16F20646520446573696E74656772617220636F6E73756D6520247B2473322F313030307D2E31207320646520416C69656E746F20646520667565676F206465206C6F7320656E656D69676F732061206C6F7320717565206461C3B16120792070726F766F636120756E61206578706C6F7369C3B36E2071756520696E666C696765206461C3B16F206571756976616C656E746520616C20247334252064656C206D6F6E746F20636F6E73756D69646F2E0D0A0D0A456C206461C3B16F206465205069726120636F6E73756D6520247B2473332F313030307D207320646520416C69656E746F20646520667565676F206465206C6F7320656E656D69676F732061206C6F7320717565206461C3B16120792070726F766F636120756E61206578706C6F7369C3B36E2071756520696E666C696765206461C3B16F206571756976616C656E746520616C20247337252064656C206D6F6E746F20636F6E73756D69646F2E5D5B4C612073616E616369C3B36E20646520416272617A6F20676C6175636F20636F6E73756D6520247B2473352F313030307D207320646520416C69656E746F20646520656E737565C3B16F206465206C6F7320616C6961646F732061206C6F73207175652073616E6120792070726F766F636120756E61206578706C6F7369C3B36E20717565206C6F732073616E6120706F7220756E2076616C6F72206571756976616C656E746520616C20247336252064656C206D6F6E746F20636F6E73756D69646F2E0D0A0D0A4C612073616E616369C3B36E20646520466C6F722065736D6572616C646120636F6E73756D6520247B2473312F313030307D207320646520416C69656E746F20646520656E737565C3B16F206465206C6F7320616C6961646F732061206C6F73207175652073616E6120792070726F766F636120756E61206578706C6F7369C3B36E20717565206C6F732073616E6120706F7220756E2076616C6F72206571756976616C656E746520616C20247336252064656C206D6F6E746F20636F6E73756D69646F2E5D0000, 67186), +(4033975491, 619554, 'esMX', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'esMX', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'esMX', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'esMX', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'esMX', 0x000000, 67186), +(2151089334, 7976, 'esMX', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'esMX', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'esMX', 0x416269736172696F206174726F7A00000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'esMX', 0x00556E20676F6C70652064652024407370656C6C6E616D6531323439363039206675657261206465206F7264656E2070726F6475636520756E206573747275656E646F207265736F6E616E7465207175652073696C656E63696120616C206F626A657469766F20647572616E74652024642E200053696C656E636961646F2E00, 67186), +(3247720076, 42321, 'esMX', 0x0000000000, 67186), +(4033975491, 619506, 'esMX', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'esMX', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'esMX', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'esMX', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'esMX', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'esMX', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'esMX', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'esMX', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'esMX', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'esMX', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'esMX', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'esMX', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'esMX', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'esMX', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'esMX', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'esMX', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'esMX', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'esMX', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'esMX', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'esMX', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'esMX', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'esMX', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'esMX', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'esMX', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'esMX', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'esMX', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'esMX', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'esMX', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'esMX', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'esMX', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'esMX', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'esMX', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'esMX', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'esMX', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'esMX', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'esMX', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'esMX', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'esMX', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'esMX', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'esMX', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'esMX', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'esMX', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'esMX', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'esMX', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'esMX', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'esMX', 0x536974696F2064652072697475616C3A2050756E746F20646520457370696E616461676100536520657374C3A1206C6C6576616E646F2061206361626F20756E2072697475616C2070656C6967726F736F20706F7220617175C3AD2063657263612E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'esMX', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'esMX', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'esMX', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'esMX', 0x00456C207461756D61747572676F206C696265726120756E612072C3A16661676120646520706F64657220617263616E6F2071756520696E666C6967652024733120702E206465206461C3B16F20617263616E6F2061206C6F73206A756761646F7265732071756520657374C3A16E20656E20756E20726164696F20646520244131206D2E0000, 67186), +(3776013982, 1295237, 'esMX', 0x00456C207461756D61747572676F206C696265726120756E612072C3A16661676120646520706F64657220617263616E6F2071756520696E666C6967652024733120702E206465206461C3B16F20617263616E6F2061206C6F73206A756761646F7265732071756520657374C3A16E20656E20756E20726164696F20646520244131206D2E0000, 67186), +(600565378, 632510, 'esMX', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'esMX', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'esMX', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'esMX', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'esMX', 0x0050726570C3A1726174652070617261206C6C657661722061206361626F20656C2070726F6365736F206465206361726E69636572C3AD612E204D69656E7472617320657374C3A12061637469766F2C207475207369677569656E746520696E74656E746F2064652064657375656C6C6F206465204D69646E6967687420746520676172616E74697A61206F6274656E6572206361726E652061707461207061726120636F63696E61722E0050726570617261646F2070617261206361726E6561722061206C61207369677569656E7465206372696174757261206465204D69646E69676874207175652064657375656C6C65732C206C6F2071756520746520676172616E74697A61206361726E65207061726120636F63696E61722E00, 67186), +(3776013982, 442615, 'esMX', 0x0050726570C3A1726174652070617261206C6C657661722061206361626F20656C2070726F6365736F206465206361726E69636572C3AD612E204D69656E7472617320657374C3A12061637469766F2C207475207369677569656E746520696E74656E746F2064652064657375656C6C6F206465204B68617A20416C67617220746520676172616E74697A61206F6274656E6572206361726E652061707461207061726120636F63696E61722E0050726570617261646F2070617261206361726E6561722061206C61207369677569656E7465206372696174757261206465204B68617A20416C676172207175652064657375656C6C65732C206C6F2071756520746520676172616E74697A61206361726E65207061726120636F63696E61722E00, 67186), +(3386943305, 23675, 'esMX', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'esMX', 0x506F7274616C2064656D6F6EC3AD61636F00000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'esMX', 0x004162616E646F6E61206C6120666173656EC3A175746963612E0000, 67186), +(3776013982, 1241218, 'esMX', 0x000000, 67186), +(2575642838, 749, 'esMX', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'esMX', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'esMX', 0x00506F74656E636961646F20706F72206C612070726573656E63696120646520756E20656E656D69676F207375706572696F722C207365207265666C656A6120756E202477312520646520746F646F20656C206461C3B16F20636F6E74726120656C207461756D61747572676F2E00506F74656E636961646F20706F72206C612070726573656E63696120646520756E20656E656D69676F207375706572696F722C207365207265666C656A6120756E202477312520646520746F646F20656C206461C3B16F20636F6E74726120656C207461756D61747572676F2E0D0A0D0A506F74656E636961646F20706F723A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220526579204361C3AD646F2053616C6861646161725D00, 67186), +(3425193231, 546424, 'esMX', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'esMX', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'esMX', 0x000000, 67186), +(600565378, 664416, 'esMX', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'esMX', 0x00456E63616E746120756E612068657272616D69656E74612064652070726F66657369C3B36E20636F6E204465737472657A612073696E27646F72656920646520666F726D61207065726D616E656E74652C206C6F207175652061756D656E7461202465633120702E206C61206465737472657A612E204E6F2073652070756564652061706C696361722061206F626A65746F73206465206E6976656C207375706572696F7220612024656369782E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A54616C656E746F73207468616C61737369616E6F73202D2043616C69646164206465205175656C275468616C61737C52200000, 67186), +(261693969, 93049, 'esMX', 0xFFFFFFFFFFFFFFFF417975646120636F6E206C6173207461726561730000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'esMX', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'esMX', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'esMX', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'esMX', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'esMX', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'esMX', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'esMX', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'esMX', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'esMX', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'esMX', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'esMX', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'esMX', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'esMX', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'esMX', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'esMX', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'esMX', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'esMX', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'esMX', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'esMX', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'esMX', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'esMX', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'esMX', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'esMX', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'esMX', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'esMX', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'esMX', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'esMX', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'esMX', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'esMX', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'esMX', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'esMX', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'esMX', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'esMX', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'esMX', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'esMX', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'esMX', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'esMX', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'esMX', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'esMX', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'esMX', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'esMX', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'esMX', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'esMX', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'esMX', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'esMX', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'esMX', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'esMX', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'esMX', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'esMX', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'esMX', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'esMX', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'esMX', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'esMX', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'esMX', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'esMX', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'esMX', 0x0045717569706120756E61206361C3B16120646520706573636172207920656E6375656E74726120756E6120657874656E7369C3B36E206465206167756120646F6E6465207065736361722E2048617A20636C696320636F6E20656C20626F74C3B36E206465726563686F20736F62726520656C206365626F206375616E646F207665617320717565207365206D756576652070617261206174726170617220656C2070657A2E20556E61206D61796F7220686162696C696461642061756D656E74612074752070726F626162696C696461642064652070657363617220636F6E20C3A97869746F20656E207A6F6E6173206465206E6976656C6573206DC3A17320616C746F732E0000, 67186), +(3776013982, 1286820, 'esMX', 0x000000, 67186), +(3776013982, 1286703, 'esMX', 0x0045717569706120756E61206361C3B16120646520706573636172207920656E6375656E74726120756E6120657874656E7369C3B36E206465206167756120646F6E6465207065736361722E2048617A20636C696320636F6E20656C20626F74C3B36E206465726563686F20736F62726520656C206365626F206375616E646F207665617320717565207365206D756576652070617261206174726170617220656C2070657A2E20556E61206D61796F7220686162696C696461642061756D656E74612074752070726F626162696C696461642064652070657363617220656E207A6F6E6173206465206E6976656C6573206DC3A17320616C746F732E0000, 67186), +(3776013982, 1253159, 'esMX', 0x000000, 67186), +(3359787322, 29615, 'esMX', 0xAF730000, 67186), +(3031818311, 9590, 'esMX', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'esMX', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'esMX', 0xE87A0000, 67186), +(3776013982, 1277169, 'esMX', 0x00416272652070617261207265636F676572203130206372657374616C626F7261646173206DC3AD746963617320792064652068C3A9726F652E0000, 67186), +(3776013982, 1243683, 'esMX', 0x005265636F6765203130206372657374616C626F7261646173206DC3AD74696361732E0000, 67186), +(3776013982, 190784, 'esMX', 0x005465207375626573206120747520646573747265726F20647572616E746520243232313838336420792074752076656C6F6369646164206465206D6F76696D69656E746F2061756D656E746120756E20243232313838337334252E2053652070756564652075736172206D69656E7472617320657374C3A1732062616A6F20746563686F206F20656E20636F6D626174652E0000, 67186), +(4033975491, 619076, 'esMX', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'esMX', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'esMX', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'esMX', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'esMX', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'esMX', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'esMX', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'esMX', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'esMX', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'esMX', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'esMX', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'esMX', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'esMX', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'esMX', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'esMX', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'esMX', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'esMX', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'esMX', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'esMX', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'esMX', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'esMX', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'esMX', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'esMX', 0x1100E18B0000, 67186), +(184881520, 18405, 'esMX', 0x0F00FC890000, 67186), +(184881520, 18404, 'esMX', 0x0E00FC890000, 67186), +(184881520, 18403, 'esMX', 0xDC00F9890000, 67186), +(184881520, 18245, 'esMX', 0x1100F9890000, 67186), +(184881520, 18244, 'esMX', 0x0F00F9890000, 67186), +(2575642838, 750, 'esMX', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'esMX', 0x000000, 67186), +(3776013982, 1266413, 'esMX', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'esMX', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'esMX', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'esMX', 0x496E6772656469656E7465207365637265746F00F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'esMX', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'esMX', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'esMX', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'esMX', 0x0044657361746120756E6120736572696520646520676F6C706573207072656369736F73207920706F6465726F736F7320636F6E747261207475206F626A657469766F2071756520696E666C6967656E20247B2434343038383473312B2434343038383673312B2434343038383873317D20702E206465206461C3B16F20616C206F626A657469766F20792024343430383838733120702E206465206461C3B16F2061206C6F7320656E656D69676F7320656E20756E20726164696F20646520243434303838384131206D20646520C3A96C2E20496E666C696765206D656E6F73206461C3B16F20736920676F6C7065612061206DC3A17320646520247331206F626A657469766F732E0D0A0D0A4D69656E747261732063616E616C697A61732044656D6F6C65722C207265636962657320756E2024733425206D656E6F73206465206461C3B16F2079206572657320696E6D756E652061206174757264696D69656E746F732C2065666563746F7320646520726570756C7369C3B36E20792065666563746F73206465206D6F76696D69656E746F20666F727A61646F2E0D0A0D0A50756564657320626C6F71756561722C2070617261722C20657371756976617220792075736172206369657274617320686162696C69646164657320646566656E736976617320647572616E7465206C612063616E616C697A616369C3B36E2064652044656D6F6C65722E0000, 67186), +(3776013982, 1292071, 'esMX', 0x004C6F7320656E656D69676F73206461C3B161646F7320706F72206C61206F6C6561646120646520667565727A612064652046616C616E676520746520696E666C6967656E20756E20247B2473312F2D317D2E3125206D656E6F73206465206461C3B16F20647572616E74652024642E0D0A00496E666C69676520756E20247B2457312F2D317D2E3125206D656E6F73206465206461C3B16F2061202440617572616361737465722E00, 67186), +(3266400455, 1570155, 'esMX', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'esMX', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'esMX', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'esMX', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'esMX', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'esMX', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'esMX', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'esMX', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'esMX', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'esMX', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'esMX', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'esMX', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'esMX', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'esMX', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'esMX', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'esMX', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'esMX', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'esMX', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'esMX', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'esMX', 0x170B3D160100, 67186), +(1734738485, 9018, 'esMX', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'esMX', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'esMX', 0x00496E66756E64652074752061726D616475726120636F6E20756E2065636F2064C3A962696C206465206C61204675656E74652064656C20536F6C2C206C6F2071756520646573626C6F717565612065666563746F732076697375616C65732061646963696F6E616C6573207061726120616C67756E6173206170617269656E6369617320646520636F6E6A756E746F7320646520636C617365206465206C612074656D706F726164612031206465204D69646E696768742E0D0A0D0A457374652065666563746F2073652061706C696361206120746F6461206C612074726F70612E0000, 67186), +(3776013982, 1273357, 'esMX', 0x00496E66756E64652074752061726D616475726120636F6E20756E2065636F2064C3A962696C206465206C61204675656E74652064656C20536F6C2C206C6F2071756520646573626C6F717565612065666563746F732076697375616C65732061646963696F6E616C6573207061726120616C67756E6173206170617269656E6369617320646520636F6E6A756E746F7320646520636C617365206465206C612074656D706F726164612031206465204D69646E696768742E0D0A0D0A457374652065666563746F2073652061706C696361206120746F6461206C612074726F70612E0000, 67186), +(4167587713, 4140, 'esMX', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'esMX', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E536920636F6D657320647572616E746520616C206D656E6F7320313020732C20717565646172C3A1732024407370656C6C6E616D653435373034392079206F6274656E6472C3A173202431323139313739733720702E20646520616775616E74652079202431323139313739733220702E206465207475206573746164C3AD7374696361207072696E636970616C20647572616E74652024642E004C61206573746164C3AD7374696361207072696E636970616C2061756D656E7461202477313120702E00, 67186), +(3776013982, 1294726, 'esMX', 0x000000, 67186), +(3776013982, 1294720, 'esMX', 0x0044697370617261206120756E20656E656D69676F2079206C6520696E666C696765206461C3B16F2066C3AD7369636F2E0000, 67186), +(3776013982, 1294703, 'esMX', 0x0044697370617261206120756E20656E656D69676F2079206C6520696E666C696765206461C3B16F2066C3AD7369636F2E0000, 67186), +(3776013982, 1294669, 'esMX', 0x004C612063726961747572612074652063617267612E004C612063726961747572612074652063617267612E00, 67186), +(3776013982, 1294633, 'esMX', 0x00456C207461756D61747572676F2065736375706520626F6C617320646520667565676F206120756E206A756761646F7220647572616E74652024642C206C6F2071756520696E666C696765202431323636373435733120702E206465206461C3B16F20646520667565676F20636164612024743120732E00496E666C696765202431323636373435733120702E206465206461C3B16F20646520667565676F20636164612024743120732E00, 67186), +(3776013982, 1294563, 'esMX', 0x000000, 67186), +(3776013982, 1277795, 'esMX', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A1726561206672656E746520612074692079206C657320617369676E6120656C20617572612022456E636F6E747261646F222E0000, 67186), +(3776013982, 1272179, 'esMX', 0x00536520636F6D70726120616C2076656E6465646F722E0D0A0D0A24407370656C6C646573633132353631373100456C206F626A657469766F20746520616C63616E7AC3B320616E74657320646520717565207075646965726173206D61726361726C6F2E00, 67186), +(3776013982, 1269655, 'esMX', 0x00536520636F6D70726120616C2076656E6465646F720D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'esMX', 0x00536520636F6D70726120616C2076656E6465646F720D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'esMX', 0x00536520636F6D70726120616C2076656E6465646F720D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'esMX', 0x00536520636F6D70726120616C2076656E6465646F720D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'esMX', 0x00536520636F6D70726120616C2076656E6465646F722E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'esMX', 0x0043616D626961206465206C7567617220636F6E20756E61206465636F72616369C3B36E2063657263616E612E0000, 67186), +(3776013982, 1259647, 'esMX', 0x0024407370656C6C6465736334353239393300536520686120696E74657272756D7069646F206C61206578706972616369C3B36E206465206C6F732065666563746F73206465206C6F732066726173636F732C20616D706F6C6C6173207920656C2062656E65666963696F206269656E20616C696D656E7461646F206465204D69646E696768742E00, 67186), +(3776013982, 1258362, 'esMX', 0x000D0A7C4346466666666666665469656D706F206465206C616E7A616D69656E746F3A20312E3520732E0D0A5469656D706F2064652072657574696C697A616369C3B36E3A203520732E7C520D0A0D0A5369206E6F20686179206275736361646F7265732061206D656E6F73206465202452206D2C206172726F6A617320756E20636F6E74656E65646F722064652024407370656C6C6E616D653132353833353820656E20756E20726164696F206465202472616431206D20646520747520706F73696369C3B36E2061637475616C2E0D0A0D0A53692068617920616C206D656E6F7320756E206275736361646F722061206D656E6F73206465202452206D2C206C616E7A617320756E20636F6E74656E65646F722064652024407370656C6C6E616D6531323538333538206365726361206465206C612075626963616369C3B36E2064656C206275736361646F72206DC3A173207072C3B378696D6F2E0D0A0D0A7C4346463731643566664E6F74613A7C52207C4346466439666366664C6F73206275736361646F726573206E6F2070756564656E20766572206C6120747261796563746F726961206465206C6F7320636F6E74656E65646F72657320656E20656C20616972652E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C4346466230623062304E6F206573206C61206F706369C3B36E206DC3A173206573706563746163756C61722C207065726F206120766563657320736F6C6F20686163652066616C746120756E612073696D706C6520646973747261636369C3B36E207061726120616C63616E7A6172206C6120766963746F7269612E7C520000, 67186), +(3776013982, 1256009, 'esMX', 0x00446973697061206C617320696C7573696F6E6573206465206C6F73206573636F6E6469646F7320656E20756E20C3A1726561206672656E746520612074692079206C657320617369676E6120656C20617572612022456E636F6E747261646F222E0000, 67186), +(3776013982, 1251813, 'esMX', 0x00456C2066616E7461736D61206772697461206375616E646F206D75657265206520696E666C6967652024733120702E206465206461C3B16F206465206C617320736F6D62726173206120746F646F73206C6F73206A756761646F7265732E0000, 67186), +(1010104591, 22988, 'esMX', 0x7C63464646464432303056656E6465646F723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E6465646F723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'esMX', 0x7C63464646464432303056656E6465646F723A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E6465646F723A207C7259617468656F6E7C6E7C6346464646443230305A6F6E613A207C72436975646164206465204C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'esMX', 0x7C634646464644323030457370656369616C697A616369C3B36E3A207C724D6F76696C69646164206465206D65726361646F202D2041636365736F72696F73206465206D696E6572C3AD617C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'esMX', 0x7C634646464644323030496E7374727563746F722064652070726F66657369C3B36E3A207C72496E67656E696572C3AD61204D69646E6967687420283335297C6E7C634646464644323030436F73746F3A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'esMX', 0x7C634646464644323030457370656369616C697A616369C3B36E3A207C724D6F76696C69646164206465206D65726361646F202D2041636365736F72696F7320646520696E67656E696572C3AD617C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'esMX', 0xFFFFFFFFFFFFFFFF4C6120417263616E74696E61000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'esMX', 0xFFFFFFFFFFFFFFFF456C207265636F6E6F63696D69656E746F206D6572656369646F00001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'esMX', 0x556E206F626A65746F207261726F20717565207075656465206465766F6C766572746520616C67756E6F7320636F6D706F6E656E746573206375616E646F207465726D696E61732064652066616272696361722E7C6E7C6E4573746120666162726963616369C3B36E206F746F726761202465763120702E2064652024656E312E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'esMX', 0x41756D656E7461206C612070726F626162696C69646164206465206465766F6C766572746520616C67756E6F7320636F6D706F6E656E746573206375616E646F207465726D696E61732064652066616272696361722E7C6E7C6E4573746120666162726963616369C3B36E206F746F726761202465763120702E2064652024656E312E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'esMX', 0x556E6120637572696F73696461642064696D656E73696F6E616C2071756520676172616E74697A6120756E612070726F6475636369C3B36E20646520666162726963616369C3B36E2061646963696F6E616C2E7C6E7C6E4573746120666162726963616369C3B36E206F746F726761202465763120702E2064652024656E312E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'esMX', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C450048617320616C63616E7A61646F206C612063616E7469646164206DC3A178696D61206465207375626964617320646520706572736F6E616A652071756520707565646573207574696C697A617220706F7220686F792E205675656C7665206120696E74656E7461726C6F206D61C3B1616E612E0003000000, 67186), +(3205218938, 58259, 'esMX', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F61646D696E6973747261646F726465686162696C6964616465730001000000, 67186), +(3205218938, 58258, 'esMX', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F6164680001000000, 67186), +(3205218938, 55299, 'esMX', 0x4A4F55524E4559535F43555252454E545F50524F47524553530050726F677265736F2061637475616C3A207C636E484947484C494748545F464F4E545F434F4C4F523A2564202F2025647C720001000000, 67186), +(3205218938, 49471, 'esMX', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F47524553530050726F677265736F2061637475616C3A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'esMX', 0x000000, 67186), +(3776013982, 1294759, 'esMX', 0x000000, 67186), +(2921112328, 568649, 'esMX', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'esMX', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'esMX', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'esMX', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'esMX', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'esMX', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'esMX', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'esMX', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'esMX', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'esMX', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'esMX', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'esMX', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'esMX', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'esMX', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'esMX', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='esMX') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='esMX') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='esMX') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='esMX') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x507265736100446572726F7461206120656E656D69676F7320706F6465726F736F73207061726120696D70756C736172206C6F73206573667565727A6F7320646520417374616C6F722E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x00556E6120C3BA6C74696D6120636869737061206272696C6C6120656E206C61206DC3A178696D61206F7363757269646164206465206C61206E6F6368652E00466F7274616C656369646F2E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='esMX'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF4E6F20686179207269746D6F0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='esMX'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'esMX', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='esMX' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='esMX'); From 6eb22aa8e246b08005e56bb8092d232c0b4440b3 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:19:14 +0200 Subject: [PATCH 103/175] DB/Hotfixes: Updated frFR hotfixes to 12.0.5.67186 --- .../master/2026_04_29_04_hotfixes_frFR.sql | 2743 +++++++++++++++++ 1 file changed, 2743 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_04_hotfixes_frFR.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_04_hotfixes_frFR.sql b/sql/updates/hotfixes/master/2026_04_29_04_hotfixes_frFR.sql new file mode 100644 index 0000000000000..f46c426e4d745 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_04_hotfixes_frFR.sql @@ -0,0 +1,2743 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'frFR', 'Accomplir les hauts faits de pêche des abysses listés ci-dessous.', 'Pêche des abysses : rivalité avec Je\’ju', '', 67186), +(61883, 'frFR', 'Ne pas vous faire attraper pendant la première minute d\’un duel de décoration à trois reprises.', 'Insaisissable', '', 67186), +(61887, 'frFR', 'Accomplir tous les hauts faits du duel de décoration.', 'Déguisement à quatre épingles', '', 67186), +(61886, 'frFR', 'Débloquer toutes les améliorations de kit du duel de décoration.', 'Kit ou double', '', 67186), +(61882, 'frFR', 'Réussir à perdre le statut « Personnage révélé » sans se faire attraper en duel de décoration.', 'Entre les mailles du filet', '', 67186), +(61881, 'frFR', 'Être le dernier leurre non attrapé de votre équipe dans un duel de décoration.', 'La cachette parfaite', '', 67186), +(61880, 'frFR', 'Se cacher et éviter de se faire repérer pendant une minute et demie en duel de décoration.', 'Froides sont les ténèbres', '', 67186), +(61879, 'frFR', 'Gagner une partie en tant que limier au cours de laquelle tous les leurres se sont fait attraper en moins de deux minutes en duel de décoration.', 'C\’est toi le chat !', '', 67186), +(61878, 'frFR', 'Réussir à attraper des personnages-joueurs adverses avec un personnage forestier des arcanes en duel de décoration.', 'Qui va à la chasse perd la face', '', 67186), +(61793, 'frFR', 'Réussir à attraper des personnages-joueurs adverses avec un personnage annulateur en duel de décoration.', 'Déploiement dans le Vide', '', 67186), +(61792, 'frFR', 'Réussir à attraper des personnages-joueurs adverses avec un personnage brise-sort en duel de décoration.', 'Bibidi babidi… BOUH !', '', 67186), +(63263, 'frFR', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'frFR', 'Obtenir une cote mythique + d\’au moins 3 400 lors de la saison 1 de Midnight.', 'Saga mythique de Midnight : saison 1', 'Le titre « le belligérant ombreux » ou « la belligérante ombreuse » et l\’objet Selle perdue dans le temps', 67186), +(61594, 'frFR', 'Obtenir le meilleur score régional pour l\’Orée-du-Ciel en mode clé mythique.', 'Victoire mythique : Orée-du-Ciel', '', 67186), +(61593, 'frFR', 'Obtenir le meilleur score régional pour le Siège du triumvirat en mode clé mythique.', 'Victoire mythique : Siège du triumvirat', '', 67186), +(61592, 'frFR', 'Obtenir le meilleur score régional pour la fosse de Saron en mode clé mythique.', 'Victoire mythique : fosse de Saron', '', 67186), +(61591, 'frFR', 'Obtenir le meilleur score régional pour l\’académie d\’Algeth\’ar en mode clé mythique.', 'Victoire mythique : académie d\’Algeth\’ar', '', 67186), +(61590, 'frFR', 'Obtenir le meilleur score régional pour la flèche de Coursevent en mode clé mythique.', 'Victoire mythique : flèche de Coursevent', '', 67186), +(61589, 'frFR', 'Obtenir le meilleur score régional pour le point-nexus Xenas en mode clé mythique.', 'Victoire mythique : point-nexus Xenas', '', 67186), +(61588, 'frFR', 'Obtenir le meilleur score régional pour les cavernes de Maisara en mode clé mythique.', 'Victoire mythique : cavernes de Maisara', '', 67186), +(61587, 'frFR', 'Obtenir le meilleur score régional pour la terrasse des Magistères en mode clé mythique (Midnight).', 'Victoire mythique : terrasse des Magistères (Midnight)', '', 67186), +(61259, 'frFR', 'Terminer la saison 1 de Midnight en mode mythique + avec une cote mythique + dans les premiers 0,1 % de votre région.', 'Héroïsme ombreux : saison 1 de Midnight', 'Titre : le héros ombreux ou l\’héroïne ombreuse', 67186), +(61253, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 30 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 30', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 30 dans la saison 1 de Midnight.', 67186), +(61252, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 29 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 29', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 29 dans la saison 1 de Midnight.', 67186), +(61251, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 28 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 28', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 28 dans la saison 1 de Midnight.', 67186), +(61250, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 27 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 27', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 27 dans la saison 1 de Midnight.', 67186), +(61249, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 26 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 26', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 26 dans la saison 1 de Midnight.', 67186), +(61248, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 25 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 25', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 25 dans la saison 1 de Midnight.', 67186), +(61247, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 24 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 24', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 24 dans la saison 1 de Midnight.', 67186), +(61246, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 23 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 23', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 23 dans la saison 1 de Midnight.', 67186), +(61245, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 22 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 22', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 22 dans la saison 1 de Midnight.', 67186), +(61244, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 21 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 21', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 21 dans la saison 1 de Midnight.', 67186), +(61243, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 20 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 20', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 20 dans la saison 1 de Midnight.', 67186), +(61242, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 19 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 19', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 19 dans la saison 1 de Midnight.', 67186), +(61241, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 18 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 18', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 18 dans la saison 1 de Midnight.', 67186), +(61240, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 17 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 17', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 17 dans la saison 1 de Midnight.', 67186), +(61239, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 16 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 16', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 16 dans la saison 1 de Midnight.', 67186), +(61237, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 15 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 15', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 15 dans la saison 1 de Midnight.', 67186), +(61236, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 14 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 14', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 14 dans la saison 1 de Midnight.', 67186), +(61235, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 13 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 13', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 13 dans la saison 1 de Midnight.', 67186), +(61233, 'frFR', 'Terminer tous les donjons mythiques+ dans le temps imparti au niveau de clé 12 pendant la saison 1 de Midnight.', 'Midnight – Saison 1 : clé résistante 12', 'Les clés mythiques ne seront plus dégradées en dessous du niveau 12 dans la saison 1 de Midnight.', 67186), +(12009, 'frFR', 'Vaincre L\’ura au Siège du triumvirat alors que tous les membres du groupe sont affectés par Ténèbres écrasantes en mode mythique.', 'Le côté plus qu\’obscur', '', 67186), +(12005, 'frFR', 'Faire en sorte que Sombre-Croc détruise quatre caches du Vide scellées à l\’aide de Traquenard des ombres, puis vaincre Saprish au Siège du triumvirat en mode mythique.', 'Faut qu\’ça sorte !', '', 67186), +(12004, 'frFR', 'Faire sortir Urjad du royaume du Vide à l\’aide de Déchirure du Vide, puis le vaincre ainsi que Zuraal le Zélateur au Siège du triumvirat en mode mythique.', 'Bienvenue dans le Vide', '', 67186), +(9036, 'frFR', 'Vaincre le Grand sage Viryx sans tuer d\’assemblage-bouclier à Orée-du-Ciel en mode héroïque.', 'Monomanie', '', 67186), +(9035, 'frFR', 'Transformer en même temps trois Tas de cendres en Éruptions solaires pendant la rencontre contre Rukhran à Orée-du-Ciel en mode héroïque.', 'J\’ai vu Solis', '', 67186), +(9034, 'frFR', 'Vaincre l\’Assemblage alimenté à Orée-du-Ciel, en mode héroïque.', 'Magnifier… Améliorer', '', 67186), +(9033, 'frFR', 'Vaincre Ranjit à Orée-du-Ciel sans subir de dégâts des techniques listées ci-dessous en mode héroïque : Lame tournoyante, Mur de vent, Quatre vents, Reflet lenticulaire', 'Fin prêt pour les raids IV', '', 67186), +(4525, 'frFR', 'Nettoyer le corridor précédant le seigneur du Fléau Tyrannus dans la fosse de Saron en mode héroïque sans que quiconque subisse des dégâts des glaçons dès le premier essai.', 'Ne regardez pas en l\'air', '', 67186), +(4524, 'frFR', 'Vaincre le maître-forge Gargivre dans la fosse de Saron sans qu\'un seul membre ait cumulé plus de 10 charges de Gel prolongé en mode héroïque.', 'Ça ne va pas jusqu\'à onze', '', 67186), +(62814, 'frFR', '', '', '', 67186), +(62813, 'frFR', '', '', '', 67186), +(62812, 'frFR', '', '', '', 67186), +(62811, 'frFR', '', '', '', 67186), +(62296, 'frFR', '', 'Écus de l\’aube mythiques obtenus', '', 67186), +(42769, 'frFR', 'Dépasser l\’utilisation des écus de l\’aube héroïques pendant la saison 1 de Midnight.', 'Héroïsme de l\’aube', 'Déblocage de personnage : échange des écus de l\’aube héroïques contre des écus de l\’aube mythiques', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Attraper 3 fois une créature mythique lors des plongées de pêche des abysses.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Obtenir 250 000 points au total lors des plongées de pêche des abysses.', `Reward_lang`='Récompense : un intrépide compagnon de plongée', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper 100 poissons lors des plongées de pêche des abysses.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Réussir une remontée pendant une plongée de pêche des abysses quand il reste moins de 10 secondes d\’oxygène.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Se faire expulser de force d\’une plongée de pêche des abysses en tentant de nager au-delà des limites.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='Récompense : débloque l\’achat de l\’idole des profondeurs auprès du plongeur Tu\’nakit', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Découvrir 10 reliques anciennes lors des plongées de pêche des abysses et obtenir l\’amélioration « filet pour hauts fonds ».', `Reward_lang`='Récompense : débloque l\’achat du filet à triple filetage auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Découvrir 50 reliques englouties lors des plongées de pêche des abysses.', `Reward_lang`='Récompense : débloque l\’achat du filet pour hauts fonds auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper les créatures listées ci-dessous en plongée de pêche des abysses et obtenir la bouteille de plongée éprouvée.', `Reward_lang`='Récompense : débloque l\’achat de la bouteille de souffle de Nalorakk auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper chacune des créatures listées ci-dessous lors des plongées de pêche des abysses et obtenir l\’amélioration « bouteille de plongée usagée ».', `Reward_lang`='Récompense : débloque l\’achat de la bouteille de plongée éprouvée auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper les créatures listées ci-dessous en plongée de pêche des abysses.', `Reward_lang`='Récompense : débloque l\’achat de la bouteille de plongée usagée auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper au moins 500 poissons lors des plongées de pêche des abysses et obtenir l\’amélioration « graisse des profondeurs ».', `Reward_lang`='Récompense : débloque l\’achat des ailerons des fosses de Pahk auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper au moins 25 poissons lors d\’une même plongée de pêche des abysses et obtenir l\’amélioration « jointures renforcées ».', `Reward_lang`='Récompense : débloque l\’achat de la graisse des profondeurs auprès du plongeur Je\’ju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='frFR'); +UPDATE `achievement_locale` SET `Description_lang`='Attraper au moins 3 poissons lors des plongées de pêche des abysses.', `Reward_lang`='Récompense : débloque l\’achat des jointures renforcées auprès du plongeur Je\’ju.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='frFR'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='frFR'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'frFR', 'Un véritable pro de la pêche des abysses, certifié par le plongeur Je\’ju en personne.', '|cFFFFD200Vendeur : |rplongeur Tu\’nakit|n|cFFFFD200Région : |rZul\’Aman|n|cFFFFD200Coût : |r2 400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'frFR', 'Quelle statistique souhaitez-vous mesurer ?', 'Quelle statistique souhaitez-vous mesurer ?', 67186), +(289969, 'frFR', 'Le Concordat argenté m\’a pris tant de mes proches.\n\nOn me dit que c\’était la guerre, que les deux camps ont subi des pertes. Mes Saccage-Soleil n\’ont jamais chassé qui que ce soit de Dalaran.\n\nUne Coursevent a déjà payé pour avoir purgé une cité. L\’autre se tient devant moi aujourd\’hui.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +UPDATE `broadcast_text_locale` SET `Text1_lang`='La soif de pouvoir qui les avait conduits à Ragnaros les a menés à Fyrakka.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=295984 AND `locale`='frFR'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'frFR', 'Brise-Vide %s', 'Brise-Vide %s', 67186), +(1307, 'frFR', '%s le belligérant ombreux', '%s la belligérante ombreuse', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'frFR', '', 67186), +(62821, 'frFR', '', 67186), +(62820, 'frFR', '', 67186), +(62819, 'frFR', '', 67186), +(62818, 'frFR', '', 67186), +(62817, 'frFR', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'frFR', 'Couleur motif', 67186), +(8959, 'frFR', 'Tatouages', 67186), +(8958, 'frFR', 'Bandeau', 67186), +(8957, 'frFR', 'Cornes', 67186), +(8956, 'frFR', 'Couleur motif', 67186), +(8955, 'frFR', 'Tatouages', 67186), +(8954, 'frFR', 'Bandeau', 67186), +(8953, 'frFR', 'Cornes', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'frFR', '', 67186), +(224842, 'frFR', 'Duels de décoration terminés', 67186), +(224840, 'frFR', 'Duels de décoration terminés', 67186), +(224838, 'frFR', 'Duels de décoration terminés', 67186), +(223318, 'frFR', 'Pêche des abysses : le plus beau des poissons (3 mythiques)', 67186), +(223121, 'frFR', 'Pêche des abysses : brevet de plongée profonde', 67186), +(223119, 'frFR', 'Pêche des abysses : berserker de la tranchée', 67186), +(222479, 'frFR', 'Pêche des abysses : procédure habituelle', 67186), +(222477, 'frFR', 'Pêche des abysses : aucune mer ne peut me contenir', 67186), +(222475, 'frFR', 'Pêche des abysses : tout le monde fait des erreurs', 67186), +(222466, 'frFR', 'Pêche des abysses : idole des profondeurs', 67186), +(222453, 'frFR', 'Pêche des abysses : tourelle-harpon à pointe creuse', 67186), +(222438, 'frFR', 'Pêche des abysses : canon-harpon lourd', 67186), +(222436, 'frFR', 'Pêche des abysses : filet à triple filetage', 67186), +(222434, 'frFR', 'Pêche des abysses : filet pour hauts fonds', 67186), +(222432, 'frFR', 'Pêche des abysses : bouteille de souffle de Nalorakk', 67186), +(222430, 'frFR', 'Pêche des abysses : bouteille de plongée éprouvée', 67186), +(222428, 'frFR', 'Pêche des abysses : bouteille de plongée usagée', 67186), +(222426, 'frFR', 'Pêche des abysses : ailerons des fosses de Pahk', 67186), +(222424, 'frFR', 'Pêche des abysses : graisse des profondeurs', 67186), +(222422, 'frFR', 'Pêche des abysses : jointures renforcées', 67186), +(222416, 'frFR', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'frFR', 'Imitation de Khadgar de Kreynna', 67186), +(220967, 'frFR', 'Ne pas vous faire attraper pendant la première minute d\’un duel de décoration', 67186), +(220603, 'frFR', 'Mission de bombardement', 67186), +(220574, 'frFR', 'Un piège !', 67186), +(220573, 'frFR', 'Trouble-fête', 67186), +(212256, 'frFR', 'Évènement Pêche des abysses terminé', 67186), +(212255, 'frFR', 'Terminer l\’évènement Pêche des abysses', 67186), +(229140, 'frFR', '', 67186), +(229139, 'frFR', '', 67186), +(229048, 'frFR', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'frFR', 'Vaincre les troupes hal\’hadar', 67186), +(225426, 'frFR', 'Vaincre les troupes hal\’hadar', 67186), +(223423, 'frFR', 'Créatures pattes-spirituelles libérées', 67186), +(223697, 'frFR', '', 67186), +(223696, 'frFR', '', 67186), +(223695, 'frFR', '', 67186), +(223693, 'frFR', '', 67186), +(219734, 'frFR', '', 67186), +(209802, 'frFR', 'Équiper votre compagnon d\’un bibelot de combat', 67186), +(170782, 'frFR', 'Équiper votre compagnon d\’un bibelot de combat', 67186), +(228515, 'frFR', 'Cote prérequise', 67186), +(228514, 'frFR', 'Haut fait – Saga mythique : saison 1 des donjons de Midnight', 67186), +(227753, 'frFR', '', 67186), +(227677, 'frFR', '', 67186), +(227676, 'frFR', '', 67186), +(227675, 'frFR', '', 67186), +(227674, 'frFR', '', 67186), +(227673, 'frFR', '', 67186), +(227672, 'frFR', '', 67186), +(227671, 'frFR', '', 67186), +(225639, 'frFR', '', 67186), +(225638, 'frFR', '', 67186), +(225637, 'frFR', '', 67186), +(225636, 'frFR', '', 67186), +(225635, 'frFR', '', 67186), +(225634, 'frFR', 'Pêche des abysses : des perles aux abysses', 67186), +(225611, 'frFR', '', 67186), +(225610, 'frFR', '', 67186), +(225609, 'frFR', 'Pêche des abysses : collection vintage', 67186), +(220963, 'frFR', 'Jouer une partie sans se faire attraper', 67186), +(220961, 'frFR', 'Ne pas se faire repérer pendant 90 s sans interruption', 67186), +(220959, 'frFR', 'Victoire des limiers en moins de deux minutes', 67186), +(220958, 'frFR', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'frFR', 'Attraper un leurre révélé en jouant un personnage forestier des arcanes', 67186), +(220955, 'frFR', 'Attraper un leurre révélé en jouant un personnage annulateur', 67186), +(220725, 'frFR', 'Attraper un leurre révélé en jouant un personnage brise-sort', 67186), +(227430, 'frFR', '', 67186), +(223818, 'frFR', '', 67186), +(216419, 'frFR', '', 67186), +(216418, 'frFR', '', 67186), +(216417, 'frFR', '', 67186), +(227429, 'frFR', '', 67186), +(227428, 'frFR', 'Posséder une mascotte Jeune fée du soleil', 67186), +(225732, 'frFR', 'Amélioration « filet pour hauts fonds » acquise', 67186), +(224745, 'frFR', 'Sentinelle activée', 67186), +(222969, 'frFR', 'Défense de l\’étang', 67186), +(222803, 'frFR', 'Barrières endommagées', 67186), +(221550, 'frFR', 'Éclats du Fléau animés tués', 67186), +(219955, 'frFR', 'Oracle de la ruche siphoïde tué', 67186), +(219466, 'frFR', 'Oracle de la ruche siphoïde tué', 67186), +(225670, 'frFR', '', 67186), +(225668, 'frFR', '', 67186), +(225666, 'frFR', '', 67186), +(225664, 'frFR', '', 67186), +(227206, 'frFR', '', 67186), +(223209, 'frFR', 'Statistiques : écus de l\’aube mythiques obtenus', 67186), +(212362, 'frFR', 'Obtenir un niveau d\’objet moyen de 285 pendant la saison 1 de Midnight (surpasser les écus de l\’aube mythiques)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='frFR'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'frFR', 'Noyau du Vide nébuleux', 'Des noyaux que vous pouvez transformer en équipement puissant en terrassant des adversaires redoutables dans les raids de la saison 1 de Midnight ou en terminant des donjons en mythique +, des Gouffres abondants et des traques en mode cauchemar.', 67186), +(3347, 'frFR', 'Écu de l\’aube mythique', 'Utilisé pour améliorer l\’équipement mythique dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 276-289.\n\nUtilisé en artisanat, fixe le niveau d\’objet à 272-285 selon la qualité.\n\nObtenu grâce aux activités suivantes :\n\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode mythique) ;\n– donjons de clé mythique (+9 et supérieur).', 67186), +(3346, 'frFR', 'Écu de l\’aube héroïque', 'Utilisé pour améliorer l\’équipement héroïque dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 263-276. Obtenu grâce aux activités suivantes :\n\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode héroïque) ;\n– donjons de clé mythique (+4 à +8) ;\n– Gouffres (niveau 11) ;\n– prime de chasse au trésor (niveau 8+) ;\n– traques (mode cauchemar).', 67186), +(3345, 'frFR', 'Écu de l\’aube héroïque', 'Utilisé pour améliorer l\’équipement héroïque dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 263-276.\n\nUtilisé en artisanat, fixe le niveau d\’objet à 259-272 selon la qualité.\n\nObtenu grâce aux activités suivantes :\n\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode héroïque) ;\n– donjons de clé mythique (+4 à +8) ;\n– Gouffres (niveau 11) ;\n– prime de chasse au trésor (niveau 8+) ;\n– traques (mode cauchemar).', 67186), +(3344, 'frFR', 'Écu de l\’aube de champion', 'Utilisé pour améliorer l\’équipement de champion dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 250-263. Obtenu grâce aux activités suivantes :\n\n– évènements en extérieur hebdomadaires ;\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode normal) ;\n– donjons de saison (mode mythique) ;\n– donjons de clé mythique (+2 à +3) ;\n– Gouffres (niveaux 7 à 10) ;\n– prime de chasse au trésor (niveaux 6 à 7) ;\n– traques (mode cauchemar).', 67186), +(3343, 'frFR', 'Écu de l\’aube de champion', 'Utilisé pour améliorer l\’équipement de champion dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 250-263. Obtenu grâce aux activités suivantes :\n\n– évènements en extérieur hebdomadaires ;\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode normal) ;\n– donjons de saison (mode mythique) ;\n– donjons de clé mythique (+2 à +3) ;\n– Gouffres (niveaux 7 à 10) ;\n– prime de chasse au trésor (niveaux 6 à 7) ;\n– traques (mode cauchemar).', 67186), +(3342, 'frFR', 'Écu de l\’aube de vétéran', 'Utilisé pour améliorer l\’équipement vétéran dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 237-250. Obtenu grâce aux activités suivantes :\n\n– évènements en extérieur répétables ;\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode outil Raids) ;\n– donjons de saison (mode héroïque) ;\n– Gouffres (niveaux 5 à 6) ;\n– prime de chasse au trésor (niveaux 4 à 5) ;\n– traques (mode difficile).', 67186), +(3341, 'frFR', 'Écu de l\’aube de vétéran', 'Utilisé pour améliorer l\’équipement vétéran dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 237-250.\n\nUtilisé en artisanat, fixe le niveau d\’objet à 233-246 selon la qualité.\n\nObtenu grâce aux activités suivantes :\n\n– évènements en extérieur répétables ;\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (mode outil Raids) ;\n– donjons de saison (mode héroïque) ;\n– Gouffres (niveaux 5 à 6) ;\n– prime de chasse au trésor (niveaux 4 à 5) ;\n– traques (mode difficile).', 67186), +(3418, 'frFR', 'Noyau du Vide nébuleux', 'Des noyaux que vous pouvez transformer en équipement puissant en terrassant des adversaires redoutables dans les raids de la saison 1 de Midnight ou en terminant des donjons en mythique +, des Gouffres abondants et des traques en mode cauchemar.', 67186), +(3391, 'frFR', 'Écu de l\’aube d\’aventure', 'Utilisé pour améliorer l\’équipement d\’aventure dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 224-237. Obtenu grâce aux activités suivantes :\n\n– évènements en extérieur répétables ;\n– Gouffres de niveau 4 ;\n– traques (mode normal).', 67186), +(3383, 'frFR', 'Écu de l\’aube d\’aventure', 'Utilisé pour améliorer l\’équipement d\’aventure dans la saison 1 de Midnight, jusqu\’aux niveaux d\’objet 224-237.\n\nUtilisé en artisanat, fixe le niveau d\’objet à 220-233 selon la qualité.\n\nObtenu grâce aux activités suivantes :\n\n– évènements en extérieur répétables ;\n– Gouffres de niveau 4 ;\n– traques (mode normal).', 67186), +(3348, 'frFR', 'Écu de l\’aube mythique', 'Utilisé pour améliorer l\’équipement mythique dans la saison 1 de Midnight, jusqu\’aux niveau d\’objet 276-289. Obtenu grâce aux activités suivantes :\n\n– flèche du Vide, faille du Rêve, marche sur Quel\’Danas (héroïque) ;\n– donjons de clé mythique (+9 et supérieur).', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='frFR'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'frFR', 'Rukhran', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'frFR', 'Œil d\'Achérus', 67186), +(264717, 'frFR', 'Attrape-maléfices amani', 67186), +(264338, 'frFR', 'Console de contrôle domanaar', 67186), +(264336, 'frFR', 'Brasero de Lumière du Vide', 67186), +(264332, 'frFR', 'Autel de rituel amani', 67186), +(263238, 'frFR', 'Table longue clandestine', 67186), +(263230, 'frFR', 'Étagère de livres de magistère', 67186), +(256683, 'frFR', 'Mannequin d\’entraînement de Lune-d\’Argent', 67186), +(253451, 'frFR', 'Fontaine de Voileracine', 67186), +(245938, 'frFR', 'Treille arathie luxuriante', 67186), +(245560, 'frFR', 'Fenêtre ocre d\’hydromellerie', 67186), +(241044, 'frFR', 'Caisse argusséenne', 67186), +(267641, 'frFR', 'Solecrête de Lune-d\’Argent ternie', 67186), +(267640, 'frFR', 'Solevoile de Lune-d\’Argent terni', 67186), +(267639, 'frFR', 'Solgarde de Lune-d\’Argent terni', 67186), +(267638, 'frFR', 'Flèche solaire de Lune-d\’Argent ternie', 67186), +(267607, 'frFR', 'Protège-mains pénombraux troubles', 67186), +(267606, 'frFR', 'Gants de gravité infinie', 67186), +(267605, 'frFR', 'Poignées de vortex perpétuel', 67186), +(267604, 'frFR', 'Étreintes des béhémoths colossaux', 67186), +(267482, 'frFR', 'Grande ceinture de volonté de défense hara\’ti', 67186), +(267481, 'frFR', 'Ceinture de volonté de défense hara\’ti', 67186), +(267480, 'frFR', 'Corde de volonté de défense hara\’ti', 67186), +(267479, 'frFR', 'Écharpe de volonté de défense hara\’ti', 67186), +(266432, 'frFR', 'Solecrête de Lune-d\’Argent', 67186), +(266431, 'frFR', 'Solevoile de Lune-d\’Argent', 67186), +(266430, 'frFR', 'Solgarde de Lune-d\’Argent', 67186), +(266429, 'frFR', 'Flèche solaire de Lune-d\’Argent', 67186), +(263269, 'frFR', 'Grande ceinture de défense hara\’ti', 67186), +(263268, 'frFR', 'Ceinture de défense hara\’ti', 67186), +(263267, 'frFR', 'Corde de défense hara\’ti', 67186), +(263265, 'frFR', 'Écharpe de défense hara\’ti', 67186), +(272961, 'frFR', 'Guisarme de brise-sort', 67186), +(272960, 'frFR', 'Mur protecteur de brise-sort', 67186), +(272318, 'frFR', 'Lame-phénix de brise-sort', 67186), +(272317, 'frFR', 'Glaive-phénix de brise-sort', 67186), +(272316, 'frFR', 'Framée de brise-sort', 67186), +(19355, 'frFR', 'Bâton focalisateur de l\'Aile de l\'ombre', 67186), +(272338, 'frFR', 'Sorcefer de garde mage', 67186), +(272337, 'frFR', 'Sorcelame de garde mage', 67186), +(272336, 'frFR', 'Brise-faille nullivalente', 67186), +(272321, 'frFR', 'Sorcelarc de forestier des arcanes', 67186), +(272320, 'frFR', 'Polariseur de failles nullivalent', 67186), +(273874, 'frFR', 'Hache d\’hast solfurie touchée par le Vide', 67186), +(263970, 'frFR', 'Lame-glaive touchée par le Vide', 67186), +(263969, 'frFR', 'Grande baguette touchée par le Vide', 67186), +(263968, 'frFR', 'Focalisatrice touchés par le Vide', 67186), +(263967, 'frFR', 'Grand arc touché par le Vide', 67186), +(263966, 'frFR', 'Grande lame touchée par le Vide', 67186), +(263963, 'frFR', 'Lame de duel touchée par le Vide', 67186), +(263960, 'frFR', 'Lame évasée touchée par le Vide', 67186), +(263959, 'frFR', 'Tome touché par le Vide', 67186), +(263956, 'frFR', 'Pilonneur touché par le Vide', 67186), +(263954, 'frFR', 'Férule de combat touchée par le Vide', 67186), +(263952, 'frFR', 'Bâton solfurie touché par le Vide', 67186), +(263950, 'frFR', 'Pique touchée par le Vide', 67186), +(263949, 'frFR', 'Rempart touché par le Vide', 67186), +(263946, 'frFR', 'Cogneuse touchée par le Vide', 67186), +(263943, 'frFR', 'Éviscératrice touchée par le Vide', 67186), +(263942, 'frFR', 'Croc touché par le Vide', 67186), +(263941, 'frFR', 'Carabine touchée par le Vide', 67186), +(263707, 'frFR', 'Bracelets de courroux du Vide', 67186), +(263706, 'frFR', 'Cape de courroux du Vide', 67186), +(263705, 'frFR', 'Baudrier de courroux du Vide', 67186), +(263704, 'frFR', 'Espauliers de courroux du Vide', 67186), +(263703, 'frFR', 'Cuissards de courroux du Vide', 67186), +(263702, 'frFR', 'Heaume de courroux du Vide', 67186), +(263701, 'frFR', 'Gantelets de courroux du Vide', 67186), +(263700, 'frFR', 'Solerets de courroux du Vide', 67186), +(263699, 'frFR', 'Cuirasse de courroux du Vide', 67186), +(263698, 'frFR', 'Chemisette de Némésis du Vide', 67186), +(263697, 'frFR', 'Brassards de Némésis du Vide', 67186), +(263696, 'frFR', 'Cape de Némésis du Vide', 67186), +(263695, 'frFR', 'Ceinture de Némésis du Vide', 67186), +(263694, 'frFR', 'Spallières de Némésis du Vide', 67186), +(263693, 'frFR', 'Jambières de Némésis du Vide', 67186), +(263692, 'frFR', 'Calot de Némésis du Vide', 67186), +(263691, 'frFR', 'Gants de Némésis du Vide', 67186), +(263690, 'frFR', 'Bottes de Némésis du Vide', 67186), +(263689, 'frFR', 'Robe de Némésis du Vide', 67186), +(263688, 'frFR', 'Grèves des tempêtes du Vide', 67186), +(263687, 'frFR', 'Brassards des tempêtes du Vide', 67186), +(263686, 'frFR', 'Cape des tempêtes du Vide', 67186), +(263685, 'frFR', 'Ceinture des tempêtes du Vide', 67186), +(263684, 'frFR', 'Épaulettes des tempêtes du Vide', 67186), +(263683, 'frFR', 'Kilt des tempêtes du Vide', 67186), +(263682, 'frFR', 'Casque des tempêtes du Vide', 67186), +(263681, 'frFR', 'Gantelets des tempêtes du Vide', 67186), +(263680, 'frFR', 'Solerets des tempêtes du Vide', 67186), +(263679, 'frFR', 'Cuirasse des tempêtes du Vide', 67186), +(263678, 'frFR', 'Brassards croc-du-Vide', 67186), +(263677, 'frFR', 'Cape croc-du-Vide', 67186), +(263676, 'frFR', 'Ceinture croc-du-Vide', 67186), +(263675, 'frFR', 'Spallières croc-du-Vide', 67186), +(263674, 'frFR', 'Pantalon croc-du-Vide', 67186), +(263673, 'frFR', 'Chaperon croc-du-Vide', 67186), +(263672, 'frFR', 'Gants croc-du-Vide', 67186), +(263671, 'frFR', 'Bottes croc-du-Vide', 67186), +(263670, 'frFR', 'Plastron croc-du-Vide', 67186), +(263669, 'frFR', 'Chemisette de transcendance du Vide', 67186), +(263668, 'frFR', 'Manchettes de transcendance du Vide', 67186), +(263667, 'frFR', 'Cape de transcendance du Vide', 67186), +(263666, 'frFR', 'Ceinture de transcendance du Vide', 67186), +(263665, 'frFR', 'Espauliers de transcendance du Vide', 67186), +(263664, 'frFR', 'Jambières de transcendance du Vide', 67186), +(263663, 'frFR', 'Auréole de transcendance du Vide', 67186), +(263662, 'frFR', 'Garde-mains de transcendance du Vide', 67186), +(263661, 'frFR', 'Bottes de transcendance du Vide', 67186), +(263660, 'frFR', 'Robe de transcendance du Vide', 67186), +(263659, 'frFR', 'Grèves du jugement du Vide', 67186), +(263658, 'frFR', 'Manchettes du jugement du Vide', 67186), +(263657, 'frFR', 'Cape du jugement du Vide', 67186), +(263656, 'frFR', 'Ceinture du jugement du Vide', 67186), +(263655, 'frFR', 'Spallières du jugement du Vide', 67186), +(263654, 'frFR', 'Cuissards du jugement du Vide', 67186), +(263653, 'frFR', 'Couronne du jugement du Vide', 67186), +(263652, 'frFR', 'Gantelets du jugement du Vide', 67186), +(263651, 'frFR', 'Solerets du jugement du Vide', 67186), +(263650, 'frFR', 'Cuirasse du jugement du Vide', 67186), +(263649, 'frFR', 'Manchettes de l\’acolyte du Vide', 67186), +(263648, 'frFR', 'Cape de l\’acolyte du Vide', 67186), +(263647, 'frFR', 'Corde de l\’acolyte du Vide', 67186), +(263646, 'frFR', 'Spallières de l\’acolyte du Vide', 67186), +(263645, 'frFR', 'Pantalon de l\’acolyte du Vide', 67186), +(263644, 'frFR', 'Casque de l\’acolyte du Vide', 67186), +(263643, 'frFR', 'Poignes de l\’acolyte du Vide', 67186), +(263642, 'frFR', 'Serres de l\’acolyte du Vide', 67186), +(263641, 'frFR', 'Gilet de l\’acolyte du Vide', 67186), +(263640, 'frFR', 'Chemisette de vent-du-Vide', 67186), +(263639, 'frFR', 'Manchettes de vent-du-Vide', 67186), +(263638, 'frFR', 'Cape de vent-du-Vide', 67186), +(263637, 'frFR', 'Ceinture de vent-du-Vide', 67186), +(263636, 'frFR', 'Mantelet de vent-du-Vide', 67186), +(263635, 'frFR', 'Pantalon de vent-du-Vide', 67186), +(263634, 'frFR', 'Couronne de vent-du-Vide', 67186), +(263633, 'frFR', 'Gants de vent-du-Vide', 67186), +(263632, 'frFR', 'Bottes de vent-du-Vide', 67186), +(263631, 'frFR', 'Robe de vent-du-Vide', 67186), +(263630, 'frFR', 'Brassards de traque du Vide', 67186), +(263629, 'frFR', 'Cape de traque du Vide', 67186), +(263628, 'frFR', 'Ceinture de traque du Vide', 67186), +(263627, 'frFR', 'Spallières de traque du Vide', 67186), +(263626, 'frFR', 'Garde-jambes de traque du Vide', 67186), +(263625, 'frFR', 'Casque de traque du Vide', 67186), +(263624, 'frFR', 'Gantelets de traque du Vide', 67186), +(263623, 'frFR', 'Grèves de traque du Vide', 67186), +(263622, 'frFR', 'Cuirasse de traque du Vide', 67186), +(263621, 'frFR', 'Protège-bras de gardevide', 67186), +(263620, 'frFR', 'Cape de gardevide', 67186), +(263619, 'frFR', 'Ceinturon de gardevide', 67186), +(263618, 'frFR', 'Espauliers de gardevide', 67186), +(263617, 'frFR', 'Cuissards de gardevide', 67186), +(263616, 'frFR', 'Couronne de gardevide', 67186), +(263615, 'frFR', 'Griffes de gardevide', 67186), +(263614, 'frFR', 'Serres de gardevide', 67186), +(263613, 'frFR', 'Cuirasse de gardevide', 67186), +(263612, 'frFR', 'Corselet de hurlevide', 67186), +(263611, 'frFR', 'Brassards de hurlevide', 67186), +(263610, 'frFR', 'Cape de hurlevide', 67186), +(263609, 'frFR', 'Ceinture de hurlevide', 67186), +(263608, 'frFR', 'Espauliers de hurlevide', 67186), +(263607, 'frFR', 'Garde-jambes de hurlevide', 67186), +(263606, 'frFR', 'Couvre-chef de hurlevide', 67186), +(263605, 'frFR', 'Garde-mains de hurlevide', 67186), +(263604, 'frFR', 'Bottes de hurlevide', 67186), +(263603, 'frFR', 'Robe de hurlevide', 67186), +(263602, 'frFR', 'Brassards de marcheur du Vide', 67186), +(263601, 'frFR', 'Cape de marcheur du Vide', 67186), +(263600, 'frFR', 'Corde de marcheur du Vide', 67186), +(263599, 'frFR', 'Lames d\’épaules de marcheur du Vide', 67186), +(263598, 'frFR', 'Jambières de marcheur du Vide', 67186), +(263597, 'frFR', 'Calot de marcheur du Vide', 67186), +(263596, 'frFR', 'Gants de marcheur du Vide', 67186), +(263595, 'frFR', 'Sandales de marcheur du Vide', 67186), +(263594, 'frFR', 'Harnais de marcheur du Vide', 67186), +(263593, 'frFR', 'Protège-bras de chevauchée du Vide', 67186), +(263592, 'frFR', 'Cape de chevauchée du Vide', 67186), +(263591, 'frFR', 'Ceinturon de chevauchée du Vide', 67186), +(263590, 'frFR', 'Espauliers de chevauchée du Vide', 67186), +(263589, 'frFR', 'Jambières de chevauchée du Vide', 67186), +(263588, 'frFR', 'Heaume de chevauchée du Vide', 67186), +(263587, 'frFR', 'Gants de chevauchée du Vide', 67186), +(263586, 'frFR', 'Solerets de chevauchée du Vide', 67186), +(263585, 'frFR', 'Cuirasse de chevauchée du Vide', 67186), +(251161, 'frFR', 'Voile de la chasseuse d\’âmes', 67186), +(133494, 'frFR', 'Ceinture de zombie rêche', 67186), +(49810, 'frFR', 'Ceinture de zombie rêche', 67186), +(263286, 'frFR', 'Gong fongicien reconverti', 67186), +(255627, 'frFR', 'Marteau du gladiateur galactique', 67186), +(253582, 'frFR', 'Batteur nagedent', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'frFR', 'Vous apprend à appliquer l\’enchantement Parure illusoire : rêves.', '', '', '', 'Formule – parure illusoire : rêves', 67186), +(206969, 'frFR', '', '', '', '', 'Parure illusoire : rêves', 67186), +(206968, 'frFR', '', '', '', '', 'Parure illusoire : rêves', 67186), +(206967, 'frFR', '', '', '', '', 'Parure illusoire : rêves', 67186), +(204977, 'frFR', 'Vous apprend à appliquer l\’enchantement parure illusoire : spores.', '', '', '', 'Formule : parure illusoire – spores', 67186), +(204568, 'frFR', '', '', '', '', 'Parure illusoire : spores', 67186), +(204567, 'frFR', '', '', '', '', 'Parure illusoire : spores', 67186), +(204565, 'frFR', '', '', '', '', 'Parure illusoire : spores', 67186), +(201321, 'frFR', '', '', '', '', 'Parure illusoire : ordre', 67186), +(201320, 'frFR', '', '', '', '', 'Parure illusoire : ordre', 67186), +(201319, 'frFR', '', '', '', '', 'Parure illusoire : ordre', 67186), +(201318, 'frFR', '', '', '', '', 'Parure illusoire : air', 67186), +(201317, 'frFR', '', '', '', '', 'Parure illusoire : air', 67186), +(201316, 'frFR', '', '', '', '', 'Parure illusoire : air', 67186), +(201315, 'frFR', '', '', '', '', 'Parure illusoire : terre', 67186), +(201314, 'frFR', '', '', '', '', 'Parure illusoire : terre', 67186), +(201313, 'frFR', '', '', '', '', 'Parure illusoire : terre', 67186), +(201312, 'frFR', '', '', '', '', 'Parure illusoire : givre', 67186), +(201311, 'frFR', '', '', '', '', 'Parure illusoire : givre', 67186), +(201310, 'frFR', '', '', '', '', 'Parure illusoire : givre', 67186), +(200616, 'frFR', '', '', '', '', 'Parure illusoire : feu', 67186), +(200615, 'frFR', '', '', '', '', 'Parure illusoire : feu', 67186), +(200614, 'frFR', '', '', '', '', 'Parure illusoire : feu', 67186), +(245345, 'frFR', 'Une particule amalgamée de pure énergie primordiale. S\’achète auprès de la vendeuse d\’abondance, Chel Copo, ou du pêcheur des abysses, le plongeur Tu\’nakit.', '', '', '', 'Vitalité fusionnée', 67186), +(243343, 'frFR', 'Une fenêtre vers quelque chose de bien plus grand.', '', '', '', 'Anomalie de pêche', 67186), +(243302, 'frFR', 'Un formidable catalyseur de croissance.', '', '', '', 'Floraison du Verseau', 67186), +(274267, 'frFR', 'Une particule amalgamée de pure énergie primordiale. S\’achète auprès de la vendeuse d\’abondance, Chel Copo, ou du pêcheur des abysses, le plongeur Tu\’nakit.', '', '', '', 'Vitalité fusionnée', 67186), +(255157, 'frFR', '', '', '', '', 'Journal de pêche des abysses', 67186), +(239563, 'frFR', 'Vous apprend à invoquer le lynx marqué par le Vide. Cette monture change selon l\’endroit où vous vous trouvez et votre compétence de monte.', '', '', '', 'Laisse liée à l\’ombre', 67186), +(223245, 'frFR', '', '', '', '', 'Ensemble : pêche des abysses', 67186), +(267009, 'frFR', '', '', '', '', 'Mannequin d\’entraînement amani', 67186), +(267007, 'frFR', '', '', '', '', 'Œil d\'Achérus', 67186), +(264717, 'frFR', '', '', '', '', 'Attrape-maléfices amani', 67186), +(264342, 'frFR', '', '', '', '', 'Cache de Vide cosmique', 67186), +(264338, 'frFR', '', '', '', '', 'Console de contrôle domanaar', 67186), +(264336, 'frFR', '', '', '', '', 'Brasero de Lumière du Vide', 67186), +(264332, 'frFR', '', '', '', '', 'Autel de rituel amani', 67186), +(264330, 'frFR', '', '', '', '', 'Brasero amani suspendu', 67186), +(264329, 'frFR', '', '', '', '', 'Table de salle à manger amani', 67186), +(264258, 'frFR', '', '', '', '', 'Forge bourgeonnante', 67186), +(263238, 'frFR', '', '', '', '', 'Table longue clandestine', 67186), +(263233, 'frFR', '', '', '', '', 'Bibliothèque tournoyante sin\’dorei', 67186), +(263230, 'frFR', '', '', '', '', 'Étagère de livres de magistère', 67186), +(263042, 'frFR', '', '', '', '', 'Réverbère lumiracine', 67186), +(263036, 'frFR', '', '', '', '', 'Flaurore suspendue', 67186), +(256683, 'frFR', '', '', '', '', 'Mannequin d\’entraînement de Lune-d\’Argent', 67186), +(253451, 'frFR', '', '', '', '', 'Fontaine de Voileracine', 67186), +(251967, 'frFR', '', '', '', '', 'Bannière fongicienne', 67186), +(245938, 'frFR', '', '', '', '', 'Treille arathie luxuriante', 67186), +(245560, 'frFR', '', '', '', '', 'Fenêtre ocre d\’hydromellerie', 67186), +(241044, 'frFR', '', '', '', '', 'Caisse argusséenne', 67186), +(264914, 'frFR', 'Une cache contenant des décorations de terrain, des fragments de clé de coffret à relique, des composants pour améliorer votre équipement et de l\’or, entre autres récompenses.', '', '', '', 'Cache de forestier', 67186), +(275447, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Déchiquetank spéculatif', 67186), +(275446, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Déchiquetank à haut rendement', 67186), +(275445, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Déchiquetank à liquidités', 67186), +(275444, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Déchiquetank au capital stable', 67186), +(275442, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Mécarmure d\’améthyste', 67186), +(275440, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Marche-mort céruléen', 67186), +(275436, 'frFR', 'S\’obtient en obtenant le haut fait « Saga mythique de Midnight : saison 1 ». Allez voir Lindormi à Lune-d\’Argent ou dans les voies temporelles pour l\’échanger. Expire à la fin de la saison.', '', '', '', 'Selle perdue dans le temps', 67186), +(248248, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Voltigeur du Vide azuré', 67186), +(247822, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Voltigeur du Vide écarlate', 67186), +(237141, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Déchiquetank entreprenant', 67186), +(235549, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Déchiquetank cramoisi', 67186), +(226357, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Mécarmure diamant', 67186), +(213438, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Armoredon infini', 67186), +(209060, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Armoredon verdoyant', 67186), +(204798, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Armoredon ardent', 67186), +(199412, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Armoredon tempeste-grêle', 67186), +(192557, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Marche-mort Restauration', 67186), +(187682, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Marche-mort déformé par le désert', 67186), +(187525, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Marche-mort âme-distordue', 67186), +(182717, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Marche-mort touché par le vice', 67186), +(174836, 'frFR', 'Vous apprend à invoquer cette monture.', '', '', '', 'Taraudeur éveillé', 67186), +(257741, 'frFR', 'S\’achète et se vend à l\’hôtel des ventes.', '', '', '', 'B0P, commissaire des boums', 67186), +(257735, 'frFR', 'S\’achète et se vend à l\’hôtel des ventes.', '', '', '', 'B0P, commissaire des boums', 67186), +(255844, 'frFR', 'S\’achète et se vend à l\’hôtel des ventes.', '', '', '', '0U4F, chiot désinvolte', 67186), +(255843, 'frFR', 'S\’achète et se vend à l\’hôtel des ventes.', '', '', '', '0U4F, chiot désinvolte', 67186), +(248592, 'frFR', 'Invoque B1P, incendiaire d\’âmes. Créée par les personnages-joueurs disposant de la compétence en ingénierie. S\’achète et se vend à l\’hôtel des ventes.', '', '', '', 'B1P, brûleur d\’âmes', 67186), +(248135, 'frFR', 'Invoque Bip, brûleur d\’âmes. Créée par les personnages-joueurs disposant de la compétence en ingénierie. S\’achète et se vend à l\’hôtel des ventes.', '', '', '', 'B1P, brûleur d\’âmes', 67186), +(274427, 'frFR', 'NOTE : il n\’y a aucune garantie que cette boîte contienne réellement une monture.', '', '', '', 'Boîte à butin de sha', 67186), +(267643, 'frFR', '', '', '', '', 'Fil-totem amani usé', 67186), +(267642, 'frFR', '', '', '', '', 'Pendentif de corde sensible amani usé', 67186), +(267641, 'frFR', '', '', '', '', 'Solecrête de Lune-d\’Argent ternie', 67186), +(267640, 'frFR', '', '', '', '', 'Solevoile de Lune-d\’Argent terni', 67186), +(267639, 'frFR', '', '', '', '', 'Solgarde de Lune-d\’Argent terni', 67186), +(267638, 'frFR', '', '', '', '', 'Flèche solaire de Lune-d\’Argent ternie', 67186), +(267607, 'frFR', '', '', '', '', 'Protège-mains pénombraux troubles', 67186), +(267606, 'frFR', '', '', '', '', 'Gants de gravité infinie', 67186), +(267605, 'frFR', '', '', '', '', 'Poignées de vortex perpétuel', 67186), +(267604, 'frFR', '', '', '', '', 'Étreintes des béhémoths colossaux', 67186), +(267482, 'frFR', '', '', '', '', 'Grande ceinture de volonté de défense hara\’ti', 67186), +(267481, 'frFR', '', '', '', '', 'Ceinture de volonté de défense hara\’ti', 67186), +(267480, 'frFR', '', '', '', '', 'Corde de volonté de défense hara\’ti', 67186), +(267479, 'frFR', '', '', '', '', 'Écharpe de volonté de défense hara\’ti', 67186), +(266432, 'frFR', '', '', '', '', 'Solecrête de Lune-d\’Argent', 67186), +(266431, 'frFR', '', '', '', '', 'Solevoile de Lune-d\’Argent', 67186), +(266430, 'frFR', '', '', '', '', 'Solgarde de Lune-d\’Argent', 67186), +(266429, 'frFR', '', '', '', '', 'Flèche solaire de Lune-d\’Argent', 67186), +(265740, 'frFR', '', '', '', '', 'Fil-totem amani', 67186), +(265739, 'frFR', '', '', '', '', 'Pendentif de corde sensible amani', 67186), +(264507, 'frFR', '', '', '', '', 'Creuset des énergies erratiques', 67186), +(263269, 'frFR', '', '', '', '', 'Grande ceinture de défense hara\’ti', 67186), +(263268, 'frFR', '', '', '', '', 'Ceinture de défense hara\’ti', 67186), +(263267, 'frFR', '', '', '', '', 'Corde de défense hara\’ti', 67186), +(263265, 'frFR', '', '', '', '', 'Écharpe de défense hara\’ti', 67186), +(270562, 'frFR', 'Un échantillon d\’os présentant une étrange souillure. Voilà de quoi éveiller l\’intérêt de dame Sombreval.', '', '', '', 'Échantillon vicié', 67186), +(249497, 'frFR', 'Les baies de ce poivre sont si piquantes que le Puits de soleil ne les laisse pas passer.', '', '', '', 'Piment des terres Fantômes', 67186), +(272961, 'frFR', '', '', '', '', 'Guisarme de brise-sort', 67186), +(272960, 'frFR', '', '', '', '', 'Mur protecteur de brise-sort', 67186), +(272318, 'frFR', '', '', '', '', 'Lame-phénix de brise-sort', 67186), +(272317, 'frFR', '', '', '', '', 'Glaive-phénix de brise-sort', 67186), +(272316, 'frFR', '', '', '', '', 'Framée de brise-sort', 67186), +(271631, 'frFR', 'NOTE : il n\’y a aucune garantie que cette boîte contienne réellement une monture.', '', '', '', 'Récompense de gardien de la Lumière', 67186), +(19355, 'frFR', '', '', '', '', 'Bâton focalisateur de l\'Aile de l\'ombre', 67186), +(274578, 'frFR', 'Un petit geste bienveillant de la part de Dundun, Loa d\’abondance. Contient 4 500 unités d\’abondance pure.', '', '', '', 'Offrande d\’abondance pure', 67186), +(268455, 'frFR', '', '', '', '', 'Sablier enchanté', 67186), +(268122, 'frFR', 'Vos pièces ont été dispersées. Participez davantage au prochain match.', '', '', '', 'Pièces dispersées', 67186), +(272338, 'frFR', '', '', '', '', 'Sorcefer de garde mage', 67186), +(272337, 'frFR', '', '', '', '', 'Sorcelame de garde mage', 67186), +(272336, 'frFR', '', '', '', '', 'Brise-faille nullivalente', 67186), +(272321, 'frFR', '', '', '', '', 'Sorcelarc de forestier des arcanes', 67186), +(272320, 'frFR', '', '', '', '', 'Polariseur de failles nullivalent', 67186), +(268481, 'frFR', 'Vous apprend à invoquer l\’abeille à fiel. Cette monture change selon l\’endroit où vous vous trouvez et votre compétence de monte.', '', '', '', 'Nid d\’abeille ensorcelée de magistère', 67186), +(268456, 'frFR', '', '', '', '', 'Banc animé', 67186), +(273874, 'frFR', '', '', '', '', 'Hache d\’hast solfurie touchée par le Vide', 67186), +(263970, 'frFR', '', '', '', '', 'Lame-glaive touchée par le Vide', 67186), +(263969, 'frFR', '', '', '', '', 'Grande baguette touchée par le Vide', 67186), +(263968, 'frFR', '', '', '', '', 'Focalisatrice touchés par le Vide', 67186), +(263967, 'frFR', '', '', '', '', 'Grand arc touché par le Vide', 67186), +(263966, 'frFR', '', '', '', '', 'Grande lame touchée par le Vide', 67186), +(263963, 'frFR', '', '', '', '', 'Lame de duel touchée par le Vide', 67186), +(263960, 'frFR', '', '', '', '', 'Lame évasée touchée par le Vide', 67186), +(263959, 'frFR', '', '', '', '', 'Tome touché par le Vide', 67186), +(263956, 'frFR', '', '', '', '', 'Pilonneur touché par le Vide', 67186), +(263954, 'frFR', '', '', '', '', 'Férule de combat touchée par le Vide', 67186), +(263952, 'frFR', '', '', '', '', 'Bâton solfurie touché par le Vide', 67186), +(263950, 'frFR', '', '', '', '', 'Pique touchée par le Vide', 67186), +(263949, 'frFR', '', '', '', '', 'Rempart touché par le Vide', 67186), +(263946, 'frFR', '', '', '', '', 'Cogneuse touchée par le Vide', 67186), +(263943, 'frFR', '', '', '', '', 'Éviscératrice touchée par le Vide', 67186), +(263942, 'frFR', '', '', '', '', 'Croc touché par le Vide', 67186), +(263941, 'frFR', '', '', '', '', 'Carabine touchée par le Vide', 67186), +(263707, 'frFR', '', '', '', '', 'Bracelets de courroux du Vide', 67186), +(263706, 'frFR', '', '', '', '', 'Cape de courroux du Vide', 67186), +(263705, 'frFR', '', '', '', '', 'Baudrier de courroux du Vide', 67186), +(263704, 'frFR', '', '', '', '', 'Espauliers de courroux du Vide', 67186), +(263703, 'frFR', '', '', '', '', 'Cuissards de courroux du Vide', 67186), +(263702, 'frFR', '', '', '', '', 'Heaume de courroux du Vide', 67186), +(263701, 'frFR', '', '', '', '', 'Gantelets de courroux du Vide', 67186), +(263700, 'frFR', '', '', '', '', 'Solerets de courroux du Vide', 67186), +(263699, 'frFR', '', '', '', '', 'Cuirasse de courroux du Vide', 67186), +(263698, 'frFR', '', '', '', '', 'Chemisette de Némésis du Vide', 67186), +(263697, 'frFR', '', '', '', '', 'Brassards de Némésis du Vide', 67186), +(263696, 'frFR', '', '', '', '', 'Cape de Némésis du Vide', 67186), +(263695, 'frFR', '', '', '', '', 'Ceinture de Némésis du Vide', 67186), +(263694, 'frFR', '', '', '', '', 'Spallières de Némésis du Vide', 67186), +(263693, 'frFR', '', '', '', '', 'Jambières de Némésis du Vide', 67186), +(263692, 'frFR', '', '', '', '', 'Calot de Némésis du Vide', 67186), +(263691, 'frFR', '', '', '', '', 'Gants de Némésis du Vide', 67186), +(263690, 'frFR', '', '', '', '', 'Bottes de Némésis du Vide', 67186), +(263689, 'frFR', '', '', '', '', 'Robe de Némésis du Vide', 67186), +(263688, 'frFR', '', '', '', '', 'Grèves des tempêtes du Vide', 67186), +(263687, 'frFR', '', '', '', '', 'Brassards des tempêtes du Vide', 67186), +(263686, 'frFR', '', '', '', '', 'Cape des tempêtes du Vide', 67186), +(263685, 'frFR', '', '', '', '', 'Ceinture des tempêtes du Vide', 67186), +(263684, 'frFR', '', '', '', '', 'Épaulettes des tempêtes du Vide', 67186), +(263683, 'frFR', '', '', '', '', 'Kilt des tempêtes du Vide', 67186), +(263682, 'frFR', '', '', '', '', 'Casque des tempêtes du Vide', 67186), +(263681, 'frFR', '', '', '', '', 'Gantelets des tempêtes du Vide', 67186), +(263680, 'frFR', '', '', '', '', 'Solerets des tempêtes du Vide', 67186), +(263679, 'frFR', '', '', '', '', 'Cuirasse des tempêtes du Vide', 67186), +(263678, 'frFR', '', '', '', '', 'Brassards croc-du-Vide', 67186), +(263677, 'frFR', '', '', '', '', 'Cape croc-du-Vide', 67186), +(263676, 'frFR', '', '', '', '', 'Ceinture croc-du-Vide', 67186), +(263675, 'frFR', '', '', '', '', 'Spallières croc-du-Vide', 67186), +(263674, 'frFR', '', '', '', '', 'Pantalon croc-du-Vide', 67186), +(263673, 'frFR', '', '', '', '', 'Chaperon croc-du-Vide', 67186), +(263672, 'frFR', '', '', '', '', 'Gants croc-du-Vide', 67186), +(263671, 'frFR', '', '', '', '', 'Bottes croc-du-Vide', 67186), +(263670, 'frFR', '', '', '', '', 'Plastron croc-du-Vide', 67186), +(263669, 'frFR', '', '', '', '', 'Chemisette de transcendance du Vide', 67186), +(263668, 'frFR', '', '', '', '', 'Manchettes de transcendance du Vide', 67186), +(263667, 'frFR', '', '', '', '', 'Cape de transcendance du Vide', 67186), +(263666, 'frFR', '', '', '', '', 'Ceinture de transcendance du Vide', 67186), +(263665, 'frFR', '', '', '', '', 'Espauliers de transcendance du Vide', 67186), +(263664, 'frFR', '', '', '', '', 'Jambières de transcendance du Vide', 67186), +(263663, 'frFR', '', '', '', '', 'Auréole de transcendance du Vide', 67186), +(263662, 'frFR', '', '', '', '', 'Garde-mains de transcendance du Vide', 67186), +(263661, 'frFR', '', '', '', '', 'Bottes de transcendance du Vide', 67186), +(263660, 'frFR', '', '', '', '', 'Robe de transcendance du Vide', 67186), +(263659, 'frFR', '', '', '', '', 'Grèves du jugement du Vide', 67186), +(263658, 'frFR', '', '', '', '', 'Manchettes du jugement du Vide', 67186), +(263657, 'frFR', '', '', '', '', 'Cape du jugement du Vide', 67186), +(263656, 'frFR', '', '', '', '', 'Ceinture du jugement du Vide', 67186), +(263655, 'frFR', '', '', '', '', 'Spallières du jugement du Vide', 67186), +(263654, 'frFR', '', '', '', '', 'Cuissards du jugement du Vide', 67186), +(263653, 'frFR', '', '', '', '', 'Couronne du jugement du Vide', 67186), +(263652, 'frFR', '', '', '', '', 'Gantelets du jugement du Vide', 67186), +(263651, 'frFR', '', '', '', '', 'Solerets du jugement du Vide', 67186), +(263650, 'frFR', '', '', '', '', 'Cuirasse du jugement du Vide', 67186), +(263649, 'frFR', '', '', '', '', 'Manchettes de l\’acolyte du Vide', 67186), +(263648, 'frFR', '', '', '', '', 'Cape de l\’acolyte du Vide', 67186), +(263647, 'frFR', '', '', '', '', 'Corde de l\’acolyte du Vide', 67186), +(263646, 'frFR', '', '', '', '', 'Spallières de l\’acolyte du Vide', 67186), +(263645, 'frFR', '', '', '', '', 'Pantalon de l\’acolyte du Vide', 67186), +(263644, 'frFR', '', '', '', '', 'Casque de l\’acolyte du Vide', 67186), +(263643, 'frFR', '', '', '', '', 'Poignes de l\’acolyte du Vide', 67186), +(263642, 'frFR', '', '', '', '', 'Serres de l\’acolyte du Vide', 67186), +(263641, 'frFR', '', '', '', '', 'Gilet de l\’acolyte du Vide', 67186), +(263640, 'frFR', '', '', '', '', 'Chemisette de vent-du-Vide', 67186), +(263639, 'frFR', '', '', '', '', 'Manchettes de vent-du-Vide', 67186), +(263638, 'frFR', '', '', '', '', 'Cape de vent-du-Vide', 67186), +(263637, 'frFR', '', '', '', '', 'Ceinture de vent-du-Vide', 67186), +(263636, 'frFR', '', '', '', '', 'Mantelet de vent-du-Vide', 67186), +(263635, 'frFR', '', '', '', '', 'Pantalon de vent-du-Vide', 67186), +(263634, 'frFR', '', '', '', '', 'Couronne de vent-du-Vide', 67186), +(263633, 'frFR', '', '', '', '', 'Gants de vent-du-Vide', 67186), +(263632, 'frFR', '', '', '', '', 'Bottes de vent-du-Vide', 67186), +(263631, 'frFR', '', '', '', '', 'Robe de vent-du-Vide', 67186), +(263630, 'frFR', '', '', '', '', 'Brassards de traque du Vide', 67186), +(263629, 'frFR', '', '', '', '', 'Cape de traque du Vide', 67186), +(263628, 'frFR', '', '', '', '', 'Ceinture de traque du Vide', 67186), +(263627, 'frFR', '', '', '', '', 'Spallières de traque du Vide', 67186), +(263626, 'frFR', '', '', '', '', 'Garde-jambes de traque du Vide', 67186), +(263625, 'frFR', '', '', '', '', 'Casque de traque du Vide', 67186), +(263624, 'frFR', '', '', '', '', 'Gantelets de traque du Vide', 67186), +(263623, 'frFR', '', '', '', '', 'Grèves de traque du Vide', 67186), +(263622, 'frFR', '', '', '', '', 'Cuirasse de traque du Vide', 67186), +(263621, 'frFR', '', '', '', '', 'Protège-bras de gardevide', 67186), +(263620, 'frFR', '', '', '', '', 'Cape de gardevide', 67186), +(263619, 'frFR', '', '', '', '', 'Ceinturon de gardevide', 67186), +(263618, 'frFR', '', '', '', '', 'Espauliers de gardevide', 67186), +(263617, 'frFR', '', '', '', '', 'Cuissards de gardevide', 67186), +(263616, 'frFR', '', '', '', '', 'Couronne de gardevide', 67186), +(263615, 'frFR', '', '', '', '', 'Griffes de gardevide', 67186), +(263614, 'frFR', '', '', '', '', 'Serres de gardevide', 67186), +(263613, 'frFR', '', '', '', '', 'Cuirasse de gardevide', 67186), +(263612, 'frFR', '', '', '', '', 'Corselet de hurlevide', 67186), +(263611, 'frFR', '', '', '', '', 'Brassards de hurlevide', 67186), +(263610, 'frFR', '', '', '', '', 'Cape de hurlevide', 67186), +(263609, 'frFR', '', '', '', '', 'Ceinture de hurlevide', 67186), +(263608, 'frFR', '', '', '', '', 'Espauliers de hurlevide', 67186), +(263607, 'frFR', '', '', '', '', 'Garde-jambes de hurlevide', 67186), +(263606, 'frFR', '', '', '', '', 'Couvre-chef de hurlevide', 67186), +(263605, 'frFR', '', '', '', '', 'Garde-mains de hurlevide', 67186), +(263604, 'frFR', '', '', '', '', 'Bottes de hurlevide', 67186), +(263603, 'frFR', '', '', '', '', 'Robe de hurlevide', 67186), +(263602, 'frFR', '', '', '', '', 'Brassards de marcheur du Vide', 67186), +(263601, 'frFR', '', '', '', '', 'Cape de marcheur du Vide', 67186), +(263600, 'frFR', '', '', '', '', 'Corde de marcheur du Vide', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'frFR', '', '', '', '', 'Lames d\’épaules de marcheur du Vide', 67186), +(263598, 'frFR', '', '', '', '', 'Jambières de marcheur du Vide', 67186), +(263597, 'frFR', '', '', '', '', 'Calot de marcheur du Vide', 67186), +(263596, 'frFR', '', '', '', '', 'Gants de marcheur du Vide', 67186), +(263595, 'frFR', '', '', '', '', 'Sandales de marcheur du Vide', 67186), +(263594, 'frFR', '', '', '', '', 'Harnais de marcheur du Vide', 67186), +(263593, 'frFR', '', '', '', '', 'Protège-bras de chevauchée du Vide', 67186), +(263592, 'frFR', '', '', '', '', 'Cape de chevauchée du Vide', 67186), +(263591, 'frFR', '', '', '', '', 'Ceinturon de chevauchée du Vide', 67186), +(263590, 'frFR', '', '', '', '', 'Espauliers de chevauchée du Vide', 67186), +(263589, 'frFR', '', '', '', '', 'Jambières de chevauchée du Vide', 67186), +(263588, 'frFR', '', '', '', '', 'Heaume de chevauchée du Vide', 67186), +(263587, 'frFR', '', '', '', '', 'Gants de chevauchée du Vide', 67186), +(263586, 'frFR', '', '', '', '', 'Solerets de chevauchée du Vide', 67186), +(263585, 'frFR', '', '', '', '', 'Cuirasse de chevauchée du Vide', 67186), +(251161, 'frFR', 'Une relique des rituels corrompus dont les Vilebranches ont le secret.', '', '', '', 'Voile de la chasseuse d\’âmes', 67186), +(133494, 'frFR', '', '', '', '', 'Ceinture de zombie rêche', 67186), +(49810, 'frFR', '', '', '', '', 'Ceinture de zombie rêche', 67186), +(264323, 'frFR', 'Contient des armes ornementales touchées par le Vide que vous ne possédez pas.', '', '', '', 'Cache d\’armes touchées par le Vide', 67186), +(264322, 'frFR', 'Contient des bottes ornementales touchées par le Vide que vous ne possédez pas.', '', '', '', 'Cache de bottes touchées par le Vide', 67186), +(264321, 'frFR', 'Contient des jambières ornementales touchées par le Vide que vous ne possédez pas.', '', '', '', 'Cache de jambières touchées par le Vide', 67186), +(264320, 'frFR', 'Contient des ceintures ornementales touchées par le Vide que vous ne possédez pas.', '', '', '', 'Cache de ceintures touchées par le Vide', 67186), +(264319, 'frFR', 'Contient des gants ornementaux touchés par le Vide que vous ne possédez pas.', '', '', '', 'Cache de gants touchés par le Vide', 67186), +(264318, 'frFR', 'Contient des brassards ornementaux touchés par le Vide que vous ne possédez pas.', '', '', '', 'Cache de brassards touchés par le Vide', 67186), +(264317, 'frFR', 'Contient des plastrons ornementaux touchés par le Vide que vous ne possédez pas.', '', '', '', 'Cache de plastrons touchés par le Vide', 67186), +(264316, 'frFR', 'Contient des capes ornementales touchées par le Vide que vous ne possédez pas.', '', '', '', 'Cache de capes touchées par le Vide', 67186), +(264315, 'frFR', 'Contient des épaulières ornementales touchées par le Vide que vous ne possédez pas.', '', '', '', 'Cache d\’épaulières touchées par le Vide', 67186), +(264314, 'frFR', 'Contient des couvre-chefs ornementaux touchés par le Vide que vous ne possédez pas.', '', '', '', 'Cache de couvre-chefs touchés par le Vide', 67186), +(256700, 'frFR', 'Vous apprend à façonner une chevalière de bénédictions d\’Azeroth.', '', '', '', 'Dessin : chevalière de bénédictions d\’Azeroth', 67186), +(250445, 'frFR', '', '', '', '', 'Écho d\’abondance : enchantement', 67186), +(250360, 'frFR', '', '', '', '', 'Écho d\’abondance : dépeçage', 67186), +(250443, 'frFR', '', '', '', '', 'Écho d\’abondance : herboristerie', 67186), +(272125, 'frFR', 'Contient de l\’or, des marnes de Lumière du Vide et un objet adapté à votre spécialisation actuelle, témoignant de votre sagacité sur le terrain.', '', '', '', 'Cache de recrue', 67186), +(263286, 'frFR', '', '', '', '', 'Gong fongicien reconverti', 67186), +(273307, 'frFR', 'Fraîchement pressée par un entrepreneur ou une entrepreneuse intrépide ! Bourrée de cristaux de sucre… ou de mana ?', '', '', '', 'Fiole de citronnade intrépide', 67186), +(265790, 'frFR', 'Une sacoche contenant 10 écus de l\’aube héroïques et mythiques.', '', '', '', 'Cache d\’écus de l\’aube', 67186), +(246753, 'frFR', '', '', '', '', 'Glorieux amas d\’écus de l\’aube mythiques', 67186), +(255627, 'frFR', '', '', '', '', 'Marteau du gladiateur galactique', 67186), +(266969, 'frFR', '', '', '', '', 'Ensemble : habits de plongée', 67186), +(253582, 'frFR', '', '', '', '', 'Batteur nagedent', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'frFR', 'Tank', '$bullet; Le Thésauriseur récupère des ressources dans la pile la plus proche pendant |cFF2959D3|Hspell:1235072|h[Mesures ingénieuses]|h|r.\n$bullet; Les champignons gâtés appliquent l\’effet |cFF2959D3|Hspell:1234846|h[Spores toxiques]|h|r au contact, ce qui évite leur |cFF2959D3|Hspell:1245593|h[Explosion putride]|h|r.\n$bullet; |cFF2959D3|Hspell:1234681|h[Rugissement dévorant]|h|r et |cFF2959D3|Hspell:1235125|h[Beuglement généreux]|h|r infligent d\’importants dégâts à tous les personnages-joueurs.', 67186), +(32669, 'frFR', 'Vue d\’ensemble', 'Le Thésauriseur est prêt à tout pour empêcher le pillage de ses réserves, lançant |cFF2959D3|Hspell:1235072|h[Mesures ingénieuses]|h|r lorsque ses points de vie passent à 90 %, 60 % et 30 %, ce qui renforce l\’une de ses techniques.\n\nÀ 100 points d\’énergie, il jette des |cFF2959D3|Hspell:1234233|h[Fournitures gâtées]|h|r dans toute l\’arène, ce qui fait pousser des champignons gâtés pendant 12 s. Tout contact avec un champignon applique l\’effet |cFF2959D3|Hspell:1234846|h[Spores toxiques]|h|r et entraîne sa destruction, ce qui évite une |cFF2959D3|Hspell:1245593|h[Explosion putride]|h|r.', 67186), +(31527, 'frFR', 'Cargaison interdite', 'Une cargaison censée rester à l\’abri des regards indiscrets. Peut servir à se mettre à couvert.', 67186), +(31282, 'frFR', 'Tank', '$bullet; Kystia rend Mordicus hostile envers les personnages-joueurs grâce à |cFF2959D3|Hspell:1230289|h[Imprégnation illicite]|h|r.\n$bullet; Évitez la |cFF2959D3|Hspell:1253811|h[Vaporisation gangrenée]|h|r de Mordicus.\n$bullet; Interrompez les |cFF2959D3|Hspell:1264095|h[Images miroirs]|h|r de Kystia.', 67186), +(31281, 'frFR', 'Soins', '$bullet; Kystia rend Mordicus hostile envers les personnages-joueurs grâce à |cFF2959D3|Hspell:1230289|h[Imprégnation illicite]|h|r.\n$bullet; Évitez la |cFF2959D3|Hspell:1253811|h[Vaporisation gangrenée]|h|r de Mordicus.\n$bullet; Kystia inflige de lourds dégâts à tous les personnages-joueurs victimes de |cFF2959D3|Hspell:1265412|h[Déstabilisation]|h|r.', 67186), +(31280, 'frFR', 'DPS', '$bullet; Kystia rend Mordicus hostile envers les personnages-joueurs grâce à |cFF2959D3|Hspell:1230289|h[Imprégnation illicite]|h|r.\n$bullet; Évitez la |cFF2959D3|Hspell:1253811|h[Vaporisation gangrenée]|h|r de Mordicus.\n$bullet; Interrompez les |cFF2959D3|Hspell:1264095|h[Images miroirs]|h|r de Kystia.', 67186), +(35862, 'frFR', 'Section 18', '', 67186), +(35353, 'frFR', 'Section 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'frFR', 'Section 17', '', 67186), +(34733, 'frFR', 'Ruse de Xal\’atath', 'Xal\’atath trahit les personnages-joueurs et révoque ses pactes. En outre, les morts retirent 15 s au temps restant.', 67186), +(34732, 'frFR', 'Fortifié', 'Les unités adverses normales ont 20 % de points de vie supplémentaires et infligent jusqu\’à un maximum de 20 % de dégâts supplémentaires.', 67186), +(34731, 'frFR', 'Tyrannique', 'Les boss ont 25 % de points de vie supplémentaires. Les dégâts des boss et de leurs serviteurs sont augmentés de 15 % au maximum.', 67186), +(34730, 'frFR', 'Tyrannique et Fortifié', 'Ces affixes renforcent les adversaires dans les donjons de clé mythique. L\’un s\’active au niveau mythique 7 et l\’autre au niveau mythique 10. Change chaque semaine.', 67186), +(34727, 'frFR', 'Marché de Xal\’atath : dévorer', '', 67186), +(34725, 'frFR', 'Marché de Xal\’atath : lié par le Vide', '', 67186), +(34722, 'frFR', 'Marché de Xal\’atath : pulsar', '', 67186), +(34720, 'frFR', 'Niveau mythique 6', '$bullet;|cFF2959D3|Hspell:1284818|h[Soutien de Lindormi]|h|r a été retiré.\n\nLes personnages avec une spécialisation de tank peuvent parler à Lindormi près du portail des Voies temporelles ou à la fin d\’un donjon de clé mythique pour obtenir |cFF2959D3|Hspell:1295986|h[Lueur de Lindormi]|h|r, ce qui continuera de mettre en surbrillance les adversaires.', 67186), +(35809, 'frFR', 'Section 158', '', 67186), +(35491, 'frFR', 'Section 69', '', 67186), +(35490, 'frFR', 'Section 70', '', 67186), +(35489, 'frFR', 'Section 76', '', 67186), +(35488, 'frFR', 'Section 67', '$[!15,16\nEn mode héroïque ou supérieur, Galvaniser provoque un Courant d\’excès.$]', 67186), +(35477, 'frFR', 'Section 22', '', 67186), +(35476, 'frFR', 'Section 31', '', 67186), +(35475, 'frFR', 'Section 30', '', 67186), +(35474, 'frFR', 'Section 29', '', 67186), +(35473, 'frFR', 'Section 31', '', 67186), +(35472, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.\n$[!16\nEn mode mythique, les cristaux de l\’aube risquent l\’effet Extinction de la Lumière.$]', 67186), +(35471, 'frFR', 'Section 22', '', 67186), +(35470, 'frFR', 'Section 31', '', 67186), +(35469, 'frFR', 'Section 30', '', 67186), +(35468, 'frFR', 'Section 29', '', 67186), +(35467, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.\n$[!15\nEn mode héroïque, les cristaux de l\’aube peuvent verser des larmes de L\’ura.$]', 67186), +(35466, 'frFR', 'Section 22', '', 67186), +(35465, 'frFR', 'Section 31', '', 67186), +(35464, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.', 67186), +(35463, 'frFR', 'Section 22', '', 67186), +(35462, 'frFR', 'Section 31', '', 67186), +(35461, 'frFR', 'Section 30', '', 67186), +(35460, 'frFR', 'Section 29', '', 67186), +(35459, 'frFR', 'Section 31', '', 67186), +(35458, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.\n$[!16\nEn mode mythique, les cristaux de l\’aube risquent l\’effet Extinction de la Lumière.$]', 67186), +(35457, 'frFR', 'Section 22', '', 67186), +(35456, 'frFR', 'Section 31', '', 67186), +(35455, 'frFR', 'Section 30', '', 67186), +(35454, 'frFR', 'Section 29', '', 67186), +(35453, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.\n$[!15\nEn mode héroïque, les cristaux de l\’aube peuvent verser des larmes de L\’ura.$]', 67186), +(35452, 'frFR', 'Section 22', '', 67186), +(35451, 'frFR', 'Section 31', '', 67186), +(35450, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.', 67186), +(35449, 'frFR', 'Section 22', '', 67186), +(35448, 'frFR', 'Section 31', '', 67186), +(35447, 'frFR', 'Section 30', '', 67186), +(35446, 'frFR', 'Section 29', '', 67186), +(35445, 'frFR', 'Section 31', '', 67186), +(35444, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.\n$[!16\nEn mode mythique, les cristaux de l\’aube risquent l\’effet Extinction de la Lumière.$]', 67186), +(35443, 'frFR', 'Section 22', '', 67186), +(35442, 'frFR', 'Section 31', '', 67186), +(35441, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.', 67186), +(35440, 'frFR', 'Section 108', '', 67186), +(35439, 'frFR', 'Section 108', '', 67186), +(35438, 'frFR', 'Section 107', '', 67186), +(35435, 'frFR', 'Section 105', '', 67186), +(35434, 'frFR', 'Section 104', '', 67186), +(35418, 'frFR', 'Section 108', '', 67186), +(35373, 'frFR', 'Section 30', '', 67186), +(35371, 'frFR', 'Section 29', '', 67186), +(35366, 'frFR', 'Section 31', '', 67186), +(35361, 'frFR', 'Section 22', '', 67186), +(35360, 'frFR', 'Cristal de l\’aube', 'Un fragment de Naaru purifié qui peut être tenu par les personnages-joueurs.\n$[!15\nEn mode héroïque, les cristaux de l\’aube peuvent verser des larmes de L\’ura.$]', 67186), +(35357, 'frFR', 'Section 106', '', 67186), +(35344, 'frFR', 'Section 23', '', 67186), +(35343, 'frFR', 'Section 22', '', 67186), +(35342, 'frFR', 'Cristal de la pénombre', 'Un fragment de Naaru perdant son éclat, mais qui pourrait être restauré.', 67186), +(35341, 'frFR', 'Section 24', '', 67186), +(35340, 'frFR', 'Cristal de minuit', 'Un fragment de Naaru noir désormais irrécupérable.', 67186), +(35339, 'frFR', 'Section 19', '', 67186), +(35338, 'frFR', 'Section 18', '', 67186), +(35336, 'frFR', 'Section 16', '', 67186), +(35328, 'frFR', 'Section 11', '', 67186), +(35327, 'frFR', 'Section 10', '', 67186), +(35326, 'frFR', 'Section 9', '', 67186), +(35325, 'frFR', 'Section 8', '$[!15\nEn mode héroïque, le nombre de notes augmente à chaque mélodie.$]', 67186), +(35324, 'frFR', 'Section 11', '', 67186), +(35319, 'frFR', 'Section 80', '', 67186), +(35317, 'frFR', 'Section 69', '', 67186), +(35316, 'frFR', 'Section 70', '', 67186), +(35315, 'frFR', 'Section 76', '', 67186), +(35314, 'frFR', 'Section 67', '$[!15,16\nEn mode héroïque ou supérieur, Galvaniser provoque un Courant d\’excès.$]', 67186), +(35311, 'frFR', 'Section 69', '', 67186), +(35309, 'frFR', 'Section 74', '', 67186), +(35274, 'frFR', 'Section 70', '$[!16\nEn mode mythique, Fission cosmique atteint le point de Criticité.$]', 67186), +(35273, 'frFR', 'Section 69', '', 67186), +(35272, 'frFR', 'Section 67', '', 67186), +(35131, 'frFR', 'Section 13', '', 67186), +(35106, 'frFR', 'Section 67', '', 67186), +(35068, 'frFR', 'Section 64', '', 67186), +(35067, 'frFR', 'Section 63', '', 67186), +(35041, 'frFR', 'Section 35', '', 67186), +(35040, 'frFR', 'Section 51', '', 67186), +(35038, 'frFR', 'Section 14', '', 67186), +(35037, 'frFR', 'Section 14', '', 67186), +(35036, 'frFR', 'Intervalle : Éclipse totale', 'Voyez la lumière s\’éteindre et se fracturer.', 67186), +(34847, 'frFR', 'Section 11', '', 67186), +(34846, 'frFR', 'Section 10', '', 67186), +(34845, 'frFR', 'Section 9', '', 67186), +(34844, 'frFR', 'Section 8', '', 67186), +(34474, 'frFR', 'Section 44', '', 67186), +(34456, 'frFR', 'Section 45', '', 67186), +(34450, 'frFR', 'Section 46', '', 67186), +(34243, 'frFR', 'Section 14', '', 67186), +(34242, 'frFR', 'Section 14', '', 67186), +(34001, 'frFR', 'Section 38', '', 67186), +(34000, 'frFR', 'Section 35', '', 67186), +(33990, 'frFR', 'Section 32', '', 67186), +(33989, 'frFR', 'Section 32', '', 67186), +(33983, 'frFR', 'Section 23', '', 67186), +(33982, 'frFR', 'Section 22', '', 67186), +(33981, 'frFR', 'Cristal de la pénombre', 'Un fragment de Naaru perdant son éclat, mais qui pourrait être restauré.', 67186), +(33975, 'frFR', 'Section 25', '', 67186), +(33924, 'frFR', 'Section 24', '', 67186), +(33742, 'frFR', 'Cristal de minuit', 'Un fragment de Naaru noir désormais irrécupérable.', 67186), +(33741, 'frFR', 'Section 19', '', 67186), +(33740, 'frFR', 'Section 15', '', 67186), +(33739, 'frFR', 'Section 18', '', 67186), +(33738, 'frFR', 'Matrice d\’élimination', '', 67186), +(33737, 'frFR', 'Section 16', '', 67186), +(33640, 'frFR', 'Section 12', '', 67186), +(33638, 'frFR', 'Phase 2 : Le réacteur obscur', 'Aventurez-vous dans le moteur de la désolation.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Section 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='frFR'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='frFR'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'frFR', 'Salutations, acolyte !\n\nAdmirez la GLORIEUSE ABONDANCE qui regorge dans ce domaine, quelle merveille ! Elle déferle, bouillonne et défie toute contrainte !\n\nEn remerciement de votre dévotion envers ma divine personne, vous méritez un petit geste bienveillant. Cette fois-ci, sous la forme d\’abondance pure !\n\nEt sachez-le, aimable acolyte : certaines offrandes, telles que la vitalité fusionnée, apparaîtront désormais chez d\’autres pourvoyeurs et pourvoyeuses. Si vos escapades devaient vous mener aux abords des profondeurs de Zul\’Aman, vous les rencontrerez peut-être.\n\nQue vos récoltes soient exceptionnelles !\n\n– Dundun, Loa d\’abondance', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='frFR'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'frFR', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='frFR'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'frFR', 'Académie d\’Algeth\’ar', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'frFR', 'Déchiquetank à haut rendement', '|cFFFFD200Vendeuse :|r Lindormi|n', '', 67186), +(3009, 'frFR', 'Déchiquetank spéculatif', '|cFFFFD200Vendeuse :|r Lindormi|n', '', 67186), +(3008, 'frFR', 'Déchiquetank à liquidités', '|cFFFFD200Vendeuse :|r Lindormi|n', '', 67186), +(3007, 'frFR', 'Déchiquetank au capital stable', '|cFFFFD200Vendeuse :|r Lindormi|n', '', 67186), +(3006, 'frFR', 'Mécarmure d\’améthyste', '|cFFFFD200Vendeuse :|r Lindormi|n', '', 67186), +(3005, 'frFR', 'Marche-mort céruléen', '|cFFFFD200Vendeuse :|r Lindormi|n', '', 67186), +(2535, 'frFR', 'Lynx marqué par le Vide', '|cFFFFD200Butin :|rsac de sectatrice confisqué', 'Le dressage de lynx est une pratique traditionnelle arathie. Si les adeptes de la Noctechute restent fidèles à leur cause, cette tradition-là a perduré dans leurs rangs.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='frFR'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'frFR', 'Attraper des poissons avec la pêche des abysses', 'Parlez au plongeur Je\’ju sur les rivages des profondeurs de Zul\’Aman pour commencer à pêcher.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'frFR', '', 67186), +(158259, 'frFR', '', 67186), +(158261, 'frFR', '', 67186), +(156069, 'frFR', 'Nécessite le haut fait|nPêche des abysses : pêche en mer d\’All Blue.', 67186), +(151169, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : idole des profondeurs', 67186), +(151168, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : filet à triple filetage', 67186), +(151167, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : filet pour hauts fonds', 67186), +(151166, 'frFR', 'Nécessite le haut fait Pêche des abysses : tourelle-harpon à pointe creuse.', 67186), +(151165, 'frFR', 'Nécessite le haut fait Pêche des abysses : canon-harpon lourd.', 67186), +(151161, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : ailerons des fosses de Pahk', 67186), +(151160, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : graisse des profondeurs', 67186), +(151159, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : jointures renforcées', 67186), +(151158, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : bouteille de souffle de Nalorakk', 67186), +(151157, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : bouteille de plongée éprouvée', 67186), +(151155, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : bouteille de plongée usagée', 67186), +(155979, 'frFR', '', 67186), +(157695, 'frFR', 'Disponible uniquement dans les Gouffres de niveau 11.', 67186), +(157666, 'frFR', '', 67186), +(157603, 'frFR', 'Débloqué en progressant dans la saison 1 du périple du Gouffre.', 67186), +(154160, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154159, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154158, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154157, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154156, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154155, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154154, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154153, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154152, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(154151, 'frFR', 'Vous avez obtenu toutes les transmogrifications contenues dans cette cache.', 67186), +(157668, 'frFR', 'Achat impossible. Vous ne possédez pas de selle perdue dans le temps.', 67186), +(155203, 'frFR', '', 67186), +(155192, 'frFR', '', 67186), +(155185, 'frFR', '', 67186), +(154642, 'frFR', '', 67186), +(156525, 'frFR', '', 67186), +(156524, 'frFR', '', 67186), +(151196, 'frFR', '', 67186), +(157003, 'frFR', '', 67186), +(157002, 'frFR', '', 67186), +(156957, 'frFR', '', 67186), +(156933, 'frFR', '', 67186), +(151162, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : appât à vaileron', 67186), +(156816, 'frFR', '', 67186), +(154472, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : lunettes pressurisées', 67186), +(151164, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : chair de frôle-bourbe', 67186), +(151163, 'frFR', 'Nécessite le haut fait :|nPêche des abysses : appât à plectaileron', 67186), +(142975, 'frFR', 'Vous ne pouvez pas obtenir 10 écus de l\’aube mythiques pour le moment.', 67186), +(156592, 'frFR', '', 67186), +(156591, 'frFR', '', 67186), +(156536, 'frFR', '', 67186), +(156537, 'frFR', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'frFR', 'Pêche des abysses', 67186), +(3389, 'frFR', 'Frappe du pylône : chutes de Scintilles', 67186), +(3308, 'frFR', 'Faille du Vide : grève du Couchant', 67186), +(3291, 'frFR', 'Aspiration de puissance', 67186), +(3280, 'frFR', 'Portail d\’accès imprévisible', 67186), +(3251, 'frFR', 'Rituel du Vide : les Grisonnes', 67186), +(3245, 'frFR', 'Peine et trouble', 67186), +(3234, 'frFR', 'Reliques profanées au carex', 67186), +(3233, 'frFR', 'Abus de faiblesse', 67186), +(3229, 'frFR', 'Île de Haut-Vide', 67186), +(3209, 'frFR', '[DNT] Example Scenario', 67186), +(3206, 'frFR', 'Modèle de scénario', 67186), +(3180, 'frFR', 'Un rituel renforcé', 67186), +(3174, 'frFR', 'Incursion du Vide', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'frFR', 'Pêchez des créatures aquatiques et découvrez les trésors des profondeurs de Zul\’Aman.', 'Pêche des abysses', 67186), +(16090, 'frFR', '', 'Phase de recherche', 67186), +(16088, 'frFR', '', 'Phase de dissimulation', 67186), +(16441, 'frFR', 'Récupérez des étincelles arcaniques sur les Nagas et leurs siphons, et apportez-les aux pylônes.', 'Alimenter les pylônes', 67186), +(16376, 'frFR', 'Terrassez le commandant domanaar.', 'Briser le Falx', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'frFR', '', '', 67186), +(58555, 'frFR', '', '', 67186), +(58554, 'frFR', '', '', 67186), +(58553, 'frFR', '', '', 67186), +(58545, 'frFR', '', '', 67186), +(58544, 'frFR', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'frFR', 'Tisse-ligne algarie', '', 67186), +(8555, 'frFR', '+$k1 à la caractéristique principale et +$k2 à l\’Armure', '', 67186), +(8554, 'frFR', '+$k1 à la caractéristique principale et +$k2 à l\’Armure', '', 67186), +(5001, 'frFR', 'Pointe en ectofer', '', 67186), +(4216, 'frFR', 'Pointe en pyrium', '', 67186), +(4215, 'frFR', 'Pointe en élémentium', '', 67186), +(3748, 'frFR', 'Pointe en titane', '', 67186), +(2714, 'frFR', 'Pointe en gangracier', '', 67186), +(1704, 'frFR', 'Pointe en thorium', '', 67186), +(463, 'frFR', 'Pointe en mithril', '', 67186), +(43, 'frFR', 'Pointe en fer', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'frFR', 'Étourdissement', 67186), +(1253377, 'frFR', 'Ascension météorique', 67186), +(1270444, 'frFR', 'Rage déliée', 67186), +(441587, 'frFR', 'Couverture nuageuse', 67186), +(441429, 'frFR', 'Couverture nuageuse', 67186), +(1298446, 'frFR', 'Lien indéfectible', 67186), +(1223323, 'frFR', 'Lien indéfectible', 67186), +(1293502, 'frFR', '[DNT] Fused Vitality', 67186), +(1270491, 'frFR', 'Dévotion impie', 67186), +(1241077, 'frFR', 'Faux purulente', 67186), +(458128, 'frFR', 'Faux purulente', 67186), +(363916, 'frFR', 'Écailles d\’obsidienne', 67186), +(353319, 'frFR', 'Tisse-paix', 67186), +(125174, 'frFR', 'Toucher du karma', 67186), +(122470, 'frFR', 'Toucher du karma', 67186), +(23920, 'frFR', 'Renvoi de sort', 67186), +(1237942, 'frFR', 'Appât', 67186), +(1235216, 'frFR', 'Perception de Midnight', 67186), +(1225245, 'frFR', 'Carnassier sin\’dorei', 67186), +(1295986, 'frFR', 'Lueur de Lindormi', 67186), +(1278156, 'frFR', 'Soutien de Lindormi', 67186), +(1298074, 'frFR', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'frFR', '', 67186), +(390260, 'frFR', '', 67186), +(1297413, 'frFR', 'Provoquer les squelettes', 67186), +(149981, 'frFR', 'Provoquer les squelettes', 67186), +(1289789, 'frFR', 'Forme anthropique de combat', 67186), +(1283168, 'frFR', 'Combinaison d\’éclats du Vide ascendants', 67186), +(1282778, 'frFR', 'Noyau du Vide ascendant', 67186), +(1264876, 'frFR', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'frFR', 'Résidu spectral', 67186), +(447444, 'frFR', 'Faille entropique', 67186), +(210824, 'frFR', 'Toucher des magi', 67186), +(1280123, 'frFR', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'frFR', 'Déchiquetank spéculatif', 67186), +(1296759, 'frFR', 'Déchiquetank à haut rendement', 67186), +(1296758, 'frFR', 'Déchiquetank à liquidités', 67186), +(1296756, 'frFR', 'Déchiquetank au capital stable', 67186), +(1296734, 'frFR', 'Mécarmure d\’améthyste', 67186), +(1296731, 'frFR', 'Marche-mort céruléen', 67186), +(466930, 'frFR', 'Flèche noire', 67186), +(1291739, 'frFR', 'Faveur malveillante', 67186), +(1281946, 'frFR', 'Pêche des abysses', 67186), +(1270634, 'frFR', 'Dérivateur de trop-plein', 67186), +(1270085, 'frFR', 'Protection sinistre', 67186), +(1270079, 'frFR', 'Protection sinistre', 67186), +(1258411, 'frFR', 'Imitation de Khadgar de Kreynna', 67186), +(1258410, 'frFR', 'Imitation de Khadgar de Kreynna', 67186), +(1258336, 'frFR', 'Ultime avertissement', 67186), +(1257809, 'frFR', 'Imitation de Khadgar de Kreynna', 67186), +(1257729, 'frFR', 'Réanimation', 67186), +(1257728, 'frFR', 'Réanimation', 67186), +(1257716, 'frFR', 'Réanimation', 67186), +(1257505, 'frFR', 'Protection sinistre', 67186), +(1256189, 'frFR', 'Pêche des abysses', 67186), +(1255966, 'frFR', 'Régénération', 67186), +(1253337, 'frFR', 'Imitation de Khadgar de Kreynna', 67186), +(1253336, 'frFR', 'Imitation de Khadgar de Kreynna', 67186), +(1253194, 'frFR', 'Mesures ingénieuses', 67186), +(1253193, 'frFR', 'Mesures ingénieuses', 67186), +(1253185, 'frFR', 'Mesures ingénieuses', 67186), +(1253064, 'frFR', 'Pêche des abysses', 67186), +(1252431, 'frFR', 'Impact foudroyant (Tempête déchaînée)', 67186), +(1241032, 'frFR', 'Ultime avertissement', 67186), +(1241023, 'frFR', 'Ultime avertissement', 67186), +(1235076, 'frFR', 'Mesures ingénieuses', 67186), +(1235075, 'frFR', 'Mesures ingénieuses', 67186), +(1235072, 'frFR', 'Mesures ingénieuses', 67186), +(1235067, 'frFR', 'Mesures ingénieuses', 67186), +(1235066, 'frFR', 'Mesures ingénieuses', 67186), +(1235065, 'frFR', 'Mesures ingénieuses', 67186), +(1235037, 'frFR', 'Mesures ingénieuses', 67186), +(1233865, 'frFR', 'Couronne de néant', 67186), +(1228865, 'frFR', 'Lynx marqué par le Vide', 67186), +(1225598, 'frFR', 'Pêche des abysses', 67186), +(1225322, 'frFR', 'Bois des Chants éternels', 67186), +(1225281, 'frFR', 'Luminageoire tendre', 67186), +(1225277, 'frFR', 'Chantécaille réintroduit', 67186), +(1225273, 'frFR', 'Pieuvre sinistre', 67186), +(1225272, 'frFR', 'Poisson-hérisson chatoyant', 67186), +(444803, 'frFR', 'Cœlacanthe éveillé', 67186), +(1250759, 'frFR', 'Granule sombre', 67186), +(1276894, 'frFR', 'Transmutation de noyau du Vide élémentaire', 67186), +(1296448, 'frFR', 'Bond téméraire', 67186), +(472053, 'frFR', 'Bond téméraire', 67186), +(1296214, 'frFR', 'Matrice du Vide galactique', 67186), +(1296205, 'frFR', 'Triplication', 67186), +(1296169, 'frFR', 'Nuage d\’orage', 67186), +(1296168, 'frFR', 'Nuage d\’orage', 67186), +(1291767, 'frFR', 'Déluge de météores', 67186), +(1296406, 'frFR', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'frFR', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'frFR', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'frFR', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'frFR', 'Lueur de Lindormi', 67186), +(1265971, 'frFR', 'Armement impie', 67186), +(444769, 'frFR', 'Mort imminente', 67186), +(1256191, 'frFR', 'Terminer la plongée', 67186), +(1272821, 'frFR', 'Sagesse de la muraille', 67186), +(1244331, 'frFR', 'Flore éternelle', 67186), +(441845, 'frFR', 'Frappe en plein cœur', 67186), +(243435, 'frFR', 'Boisson fortifiante', 67186), +(221562, 'frFR', 'Asphyxier', 67186), +(205630, 'frFR', 'Emprise d\’Illidan', 67186), +(198158, 'frFR', 'Invisibilité de masse', 67186), +(108194, 'frFR', 'Asphyxier', 67186), +(1291860, 'frFR', 'Nourriture et boissons', 67186), +(1291859, 'frFR', 'Nourriture et boissons', 67186), +(1291858, 'frFR', 'Nourriture et boissons', 67186), +(1291857, 'frFR', 'Nourriture et boissons', 67186), +(1291856, 'frFR', 'Nourriture et boissons', 67186), +(1291855, 'frFR', 'Nourriture et boissons', 67186), +(1291854, 'frFR', 'Nourriture et boissons', 67186), +(1291853, 'frFR', 'Nourriture et boissons', 67186), +(1291852, 'frFR', 'Nourriture et boissons', 67186), +(1291851, 'frFR', 'Nourriture et boissons', 67186), +(1291850, 'frFR', 'Nourriture et boissons', 67186), +(1291849, 'frFR', 'Nourriture et boissons', 67186), +(1291848, 'frFR', 'Nourriture', 67186), +(1291847, 'frFR', 'Nourriture', 67186), +(1291846, 'frFR', 'Nourriture', 67186), +(1291845, 'frFR', 'Nourriture', 67186), +(1291844, 'frFR', 'Nourriture', 67186), +(1291843, 'frFR', 'Nourriture', 67186), +(1291842, 'frFR', 'Nourriture', 67186), +(1291841, 'frFR', 'Nourriture', 67186), +(1291840, 'frFR', 'Nourriture', 67186), +(1291839, 'frFR', 'Nourriture', 67186), +(1291838, 'frFR', 'Nourriture', 67186), +(1291837, 'frFR', 'Nourriture', 67186), +(1291831, 'frFR', 'Boisson', 67186), +(1291828, 'frFR', 'Nourriture', 67186), +(1291827, 'frFR', 'Nourriture', 67186), +(1291826, 'frFR', 'Nourriture', 67186), +(1291825, 'frFR', 'Nourriture', 67186), +(1291824, 'frFR', 'Nourriture', 67186), +(1291822, 'frFR', 'Nourriture', 67186), +(1291791, 'frFR', 'Boisson', 67186), +(1290929, 'frFR', 'Boisson', 67186), +(1290926, 'frFR', 'Nourriture', 67186), +(1290925, 'frFR', 'Nourriture', 67186), +(1289221, 'frFR', 'Récompense de gardien de la Lumière', 67186), +(1286537, 'frFR', 'Nourriture et boissons', 67186), +(1286536, 'frFR', 'Boisson', 67186), +(1286535, 'frFR', 'Nourriture', 67186), +(1282100, 'frFR', 'Banc animé', 67186), +(1282018, 'frFR', 'Banc animé', 67186), +(1277461, 'frFR', 'Boire', 67186), +(1269922, 'frFR', 'Nourriture', 67186), +(1269921, 'frFR', 'Nourriture', 67186), +(1269920, 'frFR', 'Nourriture', 67186), +(1269919, 'frFR', 'Boire', 67186), +(1269918, 'frFR', 'Boire', 67186), +(1269917, 'frFR', 'Nourriture et boissons', 67186), +(1269916, 'frFR', 'Nourriture et boissons', 67186), +(1232065, 'frFR', 'Nourriture et boissons', 67186), +(1295592, 'frFR', '[DNT] Clear Voidspire', 67186), +(1244341, 'frFR', 'Flore éternelle', 67186), +(1262378, 'frFR', 'Couronne d\’ébène de subjugation', 67186), +(1262377, 'frFR', 'Couronne d\’ébène de subjugation', 67186), +(1262376, 'frFR', 'Couronne d\’ébène de subjugation', 67186), +(1262365, 'frFR', 'Mandat de mort sacrée', 67186), +(1262364, 'frFR', 'Mandat de mort sacrée', 67186), +(1262359, 'frFR', 'Mandat de mort sacrée', 67186), +(1248931, 'frFR', 'Couronne d\’ébène de subjugation', 67186), +(1248927, 'frFR', 'Mandat de mort sacrée', 67186), +(1277796, 'frFR', 'Annulation de la magie', 67186), +(1256862, 'frFR', 'Flèche anti-magie', 67186), +(1256861, 'frFR', 'Bond de dissipation', 67186), +(1256860, 'frFR', 'Dissipation focalisée', 67186), +(1256010, 'frFR', 'Champ d\’annulation', 67186), +(1295508, 'frFR', 'Apprentissage', 67186), +(1295497, 'frFR', 'Nérubien', 67186), +(1295486, 'frFR', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'frFR', 'Prière sombre', 67186), +(1243616, 'frFR', 'Essence du Vide instable', 67186), +(1243615, 'frFR', 'Essence du Vide instable', 67186), +(1243613, 'frFR', 'Essence du Vide instable', 67186), +(1243605, 'frFR', 'Essence du Vide instable', 67186), +(1243602, 'frFR', 'Essence du Vide instable', 67186), +(1243588, 'frFR', 'Essence du Vide instable', 67186), +(1243586, 'frFR', 'Essence du Vide instable', 67186), +(1257701, 'frFR', 'Lacération incendiaire', 67186), +(444088, 'frFR', 'Consumation de flamme', 67186), +(1295319, 'frFR', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'frFR', 'Dissonance', 67186), +(1295278, 'frFR', 'Cible de Frénésie fracassante', 67186), +(1295243, 'frFR', 'Décharge de Néant', 67186), +(1295237, 'frFR', 'Décharge de Néant', 67186), +(1226037, 'frFR', 'Découper la viande', 67186), +(442615, 'frFR', 'Découper la viande', 67186), +(1295194, 'frFR', '[DNT] Cancel Aura', 67186), +(1241218, 'frFR', '[DNT] Vision of Self', 67186), +(1294288, 'frFR', 'Force de l\’ombre', 67186), +(1286830, 'frFR', 'Ping de bulle de pêche - disparition', 67186), +(1236092, 'frFR', 'Enchantement d\’outil – adresse des Sin\’dorei', 67186), +(1293613, 'frFR', 'Pêche des abysses', 67186), +(1286820, 'frFR', 'Pêche des abysses', 67186), +(1286703, 'frFR', 'Pêche des abysses', 67186), +(1253159, 'frFR', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'frFR', 'Ouverture de cache', 67186), +(1243683, 'frFR', 'Glorieux amas d\’écus de l\’aube mythiques', 67186), +(190784, 'frFR', 'Palefroi divin', 67186), +(1292124, 'frFR', '[DNT] Material Creation - Health', 67186), +(1266413, 'frFR', 'Brûlure du Vide', 67186), +(1244345, 'frFR', 'Brûlure lumineuse', 67186), +(1231327, 'frFR', 'Vide consumant', 67186), +(436358, 'frFR', 'Démolissage', 67186), +(1292071, 'frFR', 'Phalange', 67186), +(1294776, 'frFR', 'Granule de soleil étincelant', 67186), +(1273357, 'frFR', 'Granule de soleil étincelant', 67186), +(1294727, 'frFR', 'Repas nourrissant', 67186), +(1294726, 'frFR', 'Guimauve grillée', 67186), +(1294720, 'frFR', 'Tir', 67186), +(1294703, 'frFR', 'Tir', 67186), +(1294669, 'frFR', 'Charge', 67186), +(1294633, 'frFR', 'Crachat de feu', 67186), +(1294563, 'frFR', 'Bouclier brisé', 67186), +(1277795, 'frFR', 'Annulation de la magie', 67186), +(1272179, 'frFR', 'Pulsation eccentromagique - non achetée', 67186), +(1269655, 'frFR', 'Camouflage', 67186), +(1269654, 'frFR', 'Sentinelle mécanique', 67186), +(1269650, 'frFR', 'Bond de dissipation', 67186), +(1269641, 'frFR', 'Marche-faille', 67186), +(1269640, 'frFR', 'Champ d\’annulation', 67186), +(1264545, 'frFR', 'Échange', 67186), +(1259647, 'frFR', 'C-H1EN D3 G4RDE', 67186), +(1258362, 'frFR', 'Piège : chant d\’oiseau', 67186), +(1256009, 'frFR', 'Annulation de la magie', 67186), +(1251813, 'frFR', 'Effroi persistant', 67186), +(1294779, 'frFR', 'DNT', 67186), +(1294759, 'frFR', 'DNT', 67186), +(1294752, 'frFR', 'Symphonie macabre', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'frFR', '', 67186), +(37073, 'frFR', '', 67186), +(37072, 'frFR', '', 67186), +(37065, 'frFR', '', 67186), +(37064, 'frFR', '', 67186), +(37063, 'frFR', '', 67186), +(37050, 'frFR', '', 67186), +(37049, 'frFR', '', 67186), +(37048, 'frFR', '', 67186), +(36911, 'frFR', '', 67186), +(35166, 'frFR', '', 67186), +(35165, 'frFR', '', 67186), +(35164, 'frFR', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'frFR', 'Fabrication multiple méticuleuse', '', 'Vous développez votre maîtrise des matrices d\’enchantement, ce qui augmente la probabilité de produire des objets supplémentaires lors de la fabrication de consommables ou de la création d\’illusions. De plus, vous bénéficiez de +$ev1 $en1 par point dans cette spécialisation.', 67186), +(137685, 'frFR', '', '', 'La Fabrication multiple permet d\’obtenir jusqu\’à +$ev1 % d\’objets supplémentaires lors de la création de consommables.', 67186), +(137681, 'frFR', '', '', 'La Fabrication multiple permet d\’obtenir jusqu\’à +$ev1 % d\’objets supplémentaires lors de la création de consommables.', 67186), +(133669, 'frFR', '', '', 'Confère +$ev1 $en1 lors de la fabrication d\’alliages.|n|nVous apprend à utiliser des composants de finition lors de la fabrication d\’alliages.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='frFR'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'frFR', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'frFR', 'Costume du jardin forestier', 67186), +(5646, 'frFR', 'Habits de plongée', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='frFR' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'frFR', 'Apprenti Kurgsbane', 67186), +(7698, 'frFR', 'Marchand de duel de décoration', 67186), +(7693, 'frFR', 'Coffre', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='frFR') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='frFR') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='frFR') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='frFR') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='frFR') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='frFR') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='frFR') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='frFR') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='frFR') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='frFR') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='frFR') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='frFR') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='frFR') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='frFR') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='frFR') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='frFR') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='frFR') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='frFR') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='frFR') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='frFR') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='frFR') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='frFR') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='frFR') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='frFR') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='frFR') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='frFR') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='frFR') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='frFR') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='frFR') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='frFR') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='frFR') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='frFR') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='frFR') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='frFR') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='frFR') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='frFR') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='frFR') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='frFR') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='frFR') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='frFR') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='frFR') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='frFR') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='frFR') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='frFR') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='frFR') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='frFR') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='frFR') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='frFR') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='frFR') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='frFR') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='frFR') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='frFR') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='frFR') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='frFR') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='frFR') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='frFR') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='frFR') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='frFR') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='frFR') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='frFR') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='frFR') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='frFR') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='frFR') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='frFR') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='frFR') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='frFR') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='frFR') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='frFR') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='frFR') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='frFR') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='frFR') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='frFR') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='frFR') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='frFR') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='frFR') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='frFR') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='frFR') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='frFR') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='frFR') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='frFR') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='frFR') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='frFR') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='frFR') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='frFR') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='frFR') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='frFR') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='frFR') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='frFR') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='frFR') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='frFR') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='frFR') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='frFR') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='frFR') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='frFR') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='frFR') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='frFR') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='frFR') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='frFR') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='frFR') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='frFR') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='frFR') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='frFR') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='frFR') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='frFR') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='frFR') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='frFR') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='frFR') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='frFR') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='frFR') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='frFR') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='frFR') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='frFR') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='frFR') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='frFR') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='frFR') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='frFR') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='frFR') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='frFR') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='frFR') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='frFR') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='frFR') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='frFR') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='frFR') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='frFR') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='frFR') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='frFR') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='frFR') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='frFR') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='frFR') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='frFR') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='frFR') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='frFR') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='frFR') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='frFR') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='frFR') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='frFR') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='frFR') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='frFR') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='frFR') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='frFR') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='frFR') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='frFR') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='frFR') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='frFR') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='frFR') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='frFR') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='frFR') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='frFR') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='frFR') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='frFR'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'frFR', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'frFR', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'frFR', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'frFR', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'frFR', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'frFR', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'frFR', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'frFR', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'frFR', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'frFR', 0x000000, 67186), +(2534422486, 3918, 'frFR', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'frFR', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'frFR', 0x0044C3A967C3A2747320646520243F63325B44C3A9766173746174696F6E2067616E6772656EC3A9655D5B5261796F6E20647520566964655D206175676D656E74C3A97320646520247331C2A0252E0D0A0D0A243F63325B4C65206C616E63656D656E742064652044C3A9766173746174696F6E2067616E6772656EC3A9655D5B556E652063616E616C69736174696F6E20636F6D706CC3A87465206465205261796F6E20647520566964655D2067C3A96EC3A8726520243F63325B247334C2A0667261676D656E74732064E28099C3A26D652073757220736120647572C3A9655D5B247333C2A0244C6368617267653A636861726765733B206465205072C3A96375727365757220647520566964655D2E0000, 67186), +(3776013982, 1270444, 'frFR', 0x0043686171756520667261676D656E742064E28099C3A26D6520636F6E736F6D6DC3A920646F6E6E6520C3A0204469766973696F6E206465206CE28099C3A26D6520657420426F6D62652073706972697475656C6C6520756E65206368616E636520646520636F6E66C3A972657220526167652064C3A96C69C3A9652C20636520717569207065726D6574206465206C616E636572204DC3A974616D6F7270686F73652073616E732064C3A9636C656E6368657220736F6E2074656D70732064652072656368617267652070656E64616E7420247331C2A0732E0000, 67186), +(3776013982, 441587, 'frFR', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'frFR', 0x004CE2809961637469766174696F6E20646520243F613133373033365B506F757373C3A9652064E28099616472C3A96E616C696E655D5B4C616D6573206465206CE280996F6D6272655D206661697420617070617261C3AE74726520756E206E756167652064652066756DC3A9652070656E64616E742024343431353837642E204C65732061747461717565732065666665637475C3A9657320C3A0206CE28099696E74C3A97269657572206475206E756167652074726F75626C656E74206C61206369626C652C20657420636574206566666574206573742063756D756C61626C65206A75737175E28099C3A020243434313634306D32C2A0666F697320244C737570706CC3A96D656E74616972653A737570706CC3A96D656E7461697265733B2E0D0A0D0A4CE28099656666657420706572736973746520243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5DC2A07320617072C3A8732061766F6972207175697474C3A9206C65206E756167652E0000, 67186), +(3893700160, 445, 'frFR', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'frFR', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'frFR', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'frFR', 0x00566F75732072C3A9637570C3A972657A206C6120746563686E6971756520417070656C2064752066616D696C6965722E0D0A0D0A4C6F727371756520766F757320C3AA74657320C3A0206CE28099657874C3A972696575722C20766F7472652066616D696C69657220696E666C69676520247331C2A0252064652064C3A967C3A2747320737570706CC3A96D656E746169726573206574207375626974206465732064C3A967C3A274732072C3A9647569747320646520247332C2A0252E0000, 67186), +(3776013982, 1223323, 'frFR', 0x00566F75732072C3A9637570C3A972657A206C6120746563686E6971756520417070656C2064752066616D696C6965722E0D0A0D0A4C6F727371756520766F757320C3AA74657320C3A0206CE28099657874C3A972696575722C20766F7472652066616D696C69657220696E666C69676520247331C2A0252064652064C3A967C3A2747320737570706CC3A96D656E746169726573206574207375626974206465732064C3A967C3A274732072C3A9647569747320646520247332C2A0252E0000, 67186), +(3468628616, 1818, 'frFR', 0x4F62C3A96C697371756520736F6D62726500566F757320706F7576657A2064C3A9736F726D616973206163686574657220756E206F62C3A96C697371756520736F6D62726520C3A020526165E280996E612C20C3A0204C756E652D64E28099417267656E742E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'frFR', 0x4F62C3A96C697371756520736F6D62726500566F757320706F7576657A2064C3A9736F726D616973206163686574657220756E206F62C3A96C697371756520736F6D62726520C3A020526165E280996E612C20C3A0204C756E652D64E28099417267656E742E004F62C3A96C697371756520736F6D627265002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'frFR', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'frFR', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'frFR', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'frFR', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'frFR', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'frFR', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'frFR', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'frFR', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'frFR', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'frFR', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'frFR', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'frFR', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'frFR', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'frFR', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'frFR', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'frFR', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'frFR', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'frFR', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'frFR', 0x000000, 67186), +(3037505077, 245345, 'frFR', 0x5000, 67186), +(3776013982, 1270491, 'frFR', 0x0000566974657373652064E2809961747461717565206175676D656E74C3A96520646520247731C2A0252E00, 67186), +(3776013982, 1241077, 'frFR', 0x00566F757320616363C3A96CC3A972657A20646520247331C2A02520766F732070657374657320737572206C61206369626C652E004C657320706573746573207C3224406175726163617374657220696E666C6967656E74206465732064C3A967C3A2747320247731C2A02520706C7573207261706964656D656E742E00, 67186), +(3776013982, 458128, 'frFR', 0x00566F7573206661756368657A206C657320616476657273616972657320C3A0206D6F696E7320646520246131C2A06D20646576616E7420766F75732C2063652071756920696E666C69676520247331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D62726520657420616363C3A96CC3A8726520746F7574657320766F7320626C6573737572657320707572756C656E74657320737572206C6573206369626C657320746F756368C3A96573206166696E207175E28099656C6C657320696E666C6967656E74206C657572732064C3A967C3A274732024313234313037377331C2A02520706C7573207261706964656D656E742070656E64616E74202431323431303737642E0000, 67186), +(3899321669, 5919, 'frFR', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'frFR', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'frFR', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'frFR', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'frFR', 0x4E6F697200566F75732072656E666F7263657A20766F7320C3A96361696C6C65732C206365207175692072C3A964756974206C65732064C3A967C3A274732071756520766F757320737562697373657A20646520247331C2A02520243F733337343334385B657420766F75732072656E6420756E206D6F6E74616E7420646520706F696E74732064652076696520C3A967616C206175782064C3A967C3A2747320C3A9766974C3A97320656E2024645D5B5D2E20447572652024333734333439642E0044C3A967C3A274732073756269732072C3A9647569747320646520247731C2A025243F2465345B2065742072C3A9637570C3A9726174696F6E2064E28099756E206D6F6E74616E7420646520706F696E74732064652076696520C3A967616C206175782064C3A967C3A2747320C3A9766974C3A9732E5D5B2E5D243F2477323D315B0D0A496E73656E7369626C6520617578206566666574732064E28099696E74657272757074696F6E2065742064652073696C656E63652E5D5B5D00, 67186), +(4033975491, 589353, 'frFR', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'frFR', 0x54616C656E74204A634A0024407370656C6C6465736333353333313300496E73656E7369626C65206175782064C3A967C3A27473206D616769717565732065742061757820656666657473206EC3A96661737465732E00, 67186), +(3776013982, 125174, 'frFR', 0x0024407370656C6C646573633132323437300044C3A967C3A27473207375626973206162736F7262C3A9732E0D0A24313232343730733425206465732064C3A967C3A27473206162736F7262C3A97320736F6E742072656469726967C3A9732076657273206C612076696374696D6520646520546F7563686572206475206B61726D612E00, 67186), +(3776013982, 122470, 'frFR', 0x004162736F726265206C65732064C3A967C3A274732073756269732070656E64616E742024642C206A75737175E28099C3A0202473332520646520766F747265206D6178696D756D20646520706F696E7473206465207669652C2065742072656469726967652024733425206465206365206D6F6E74616E742076657273206C61206369626C6520656E6E656D696520736F757320666F726D652064652064C3A967C3A27473206465204E617475726520656E2024313234323830642E004C65732064C3A967C3A2747320696E666C6967C3A973206175206D6F696E6520736F6E742072656469726967C3A973207665727320766F757320736F757320666F726D652064652064C3A967C3A27473206465204E617475726520656E2024313234323830642E00, 67186), +(3776013982, 23920, 'frFR', 0x00566F7573206C6576657A20766F74726520243F63335B626F75636C6965725D5B61726D655D2C206365207175692072656E766F696520243F613231333931355B6C657320243231333931357333C2A070726F636861696E7320736F727473206C616E63C3A9735D5B6C65207072656D69657220736F7274206C616E63C3A95D20636F6E74726520766F75732065742072C3A964756974206C65732064C3A967C3A27473206D616769717565732071756520766F757320737562697373657A20646520243338353339317331C2A0252070656E64616E742024642E00243F613138383637325B52656E766F696520746F7573206C657320736F727473206C616E63C3A9732073757220766F75732E5D5B52656E766F696520756E20736F7274206C616E63C3A92073757220766F75732E5D00, 67186), +(1274215428, 190484, 'frFR', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'frFR', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'frFR', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'frFR', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'frFR', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'frFR', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'frFR', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'frFR', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'frFR', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'frFR', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'frFR', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'frFR', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'frFR', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'frFR', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'frFR', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'frFR', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'frFR', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'frFR', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'frFR', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'frFR', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'frFR', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'frFR', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'frFR', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'frFR', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'frFR', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'frFR', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'frFR', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'frFR', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'frFR', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'frFR', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'frFR', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'frFR', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'frFR', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'frFR', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'frFR', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'frFR', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'frFR', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'frFR', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'frFR', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'frFR', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'frFR', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'frFR', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'frFR', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'frFR', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'frFR', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'frFR', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'frFR', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'frFR', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'frFR', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'frFR', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'frFR', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'frFR', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'frFR', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'frFR', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'frFR', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'frFR', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'frFR', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'frFR', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'frFR', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'frFR', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'frFR', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'frFR', 0x00566F75732072656A6574657A206C6520706F6973736F6E20C3A0206CE2809965617520706F7572206761676E657220756E20626F6E75732064652024733220C3A0206C6120636F6D70C3A974656E636520656E2070C3AA636865206465204D69646E696768742070656E64616E742024642E0D0A0D0A4C652072656A657420646520706C7573696575727320706F6973736F6E73207065726D65742064E280996175676D656E746572206C6120647572C3A96520646520636574746520616DC3A96C696F726174696F6E206A75737175E28099C3A020756E206D6178696D756D20646520244D31C2A06D696E2E00436F6D70C3A974656E636520656E2070C3AA636865206465205175656CE280995468616C6173206175676D656E74C3A965206465202477322E00, 67186), +(3776013982, 1235216, 'frFR', 0x00566F75732072656A6574657A206C61206372C3A9617475726520C3A0206CE2809965617520706F7572206761676E657220756E20626F6E75732064652024733220C3A0206C612050657263657074696F6E206465204D69646E696768742070656E64616E742024642E0D0A0D0A4C652072656A657420646520706C75736965757273206372C3A9617475726573207065726D65742064E280996175676D656E746572206C6120647572C3A96520646520636574746520616DC3A96C696F726174696F6E206A75737175E28099C3A020756E206D6178696D756D20646520244D31C2A06D696E2E0050657263657074696F6E206465204D69646E69676874206175676D656E74C3A965206465202477322E00, 67186), +(3776013982, 1225245, 'frFR', 0x004365747465207061727572652064E28099C3A96361696C6C6573206372616D6F69736965732065742063C3A972756CC3A9656E6E65732065737420636172616374C3A9726973746971756520646520636520706F6973736F6E207472C3A873206167696C652E205472C3A87320636F6D6D756E2064616E73206C6520626F697320646573204368616E747320C3A97465726E656C732C206C65206361726E6173736965722073696EE28099646F7265692073652064C3A9706C61636520657420696E746572616769742061766563206C6573206561757820656E20666F6E6374696F6E2064752062616E632061757175656C20696C2061707061727469656E742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5574696C69736174696F6E207370C3A96369616C65C2A03A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F6973736F6E207072C3A973656E742064616E73206C65732072C3A967696F6E732073756976616E746573C2A03A7C520D0AE2809320626F697320646573204368616E747320C3A97465726E656C73C2A03B0D0AE28093205A756CE28099416D616E2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A42616E637320646520706F6973736F6E73C2A03A7C720D0AE2809320666C6F726169736F6E206672C3A96D697373616E7465C2A03B0D0AE280932062616E6320647520507569747320646520736F6C65696CC2A03B0D0AE28093206F6E64756C6174696F6E20646520737572666163652E0000, 67186), +(778162198, 397, 'frFR', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'frFR', 0x0100, 67186), +(3037505077, 243302, 'frFR', 0x0100, 67186), +(261693969, 95549, 'frFR', 0xFFFFFFFFFFFFFFFF416C6572746573206D6167697175657320656E2073C3A97269650000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'frFR', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'frFR', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'frFR', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'frFR', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'frFR', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'frFR', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'frFR', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'frFR', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'frFR', 0x53636F72652064652070C3AA636865C2A03A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'frFR', 0x5465726D696EC3A9007C63464631656666303050C3AA636865206465732061627973736573207465726D696EC3A965C2A02100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'frFR', 0xFFFFFFFFFFFFFFFF5061727469636970657220C3A0206C612070C3AA6368652064657320616279737365730000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'frFR', 0x506C6F6E67C3A9652070726F666F6E6465005465726D696E657A2064657320C3A976C3A86E656D656E74732064652070C3AA63686520646573206162797373657320C3A0205A756CE28099416D616E2E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'frFR', 0x506C6F6E67C3A9652070726F666F6E6465005465726D696E657A2064657320C3A976C3A86E656D656E74732064652070C3AA63686520646573206162797373657320C3A0205A756CE28099416D616E2E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'frFR', 0x50C3AA636865206465732061627973736573005061726C657A20617520706C6F6E67657572204A65E280996A7520706F7572207061727469636970657220C3A020756E6520706C6F6E67C3A9652064652070C3AA6368652064657320616279737365732E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'frFR', 0x44616E6765727320C3A96C6974657300446573206372C3A961747572657320C3A96C69746520726172657320617070617261697373656E742064C3A9736F726D61697320737572206C65732073697465732072697475656C732065742070657576656E7420766F7573206163636F726465722064657320627574696E732064652072697475656C20737570706CC3A96D656E7461697265732E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'frFR', 0x44616E6765727320C3A96C6974657300446573206372C3A961747572657320C3A96C69746520726172657320617070617261697373656E742064C3A9736F726D61697320737572206C65732073697465732072697475656C732065742070657576656E7420766F7573206163636F726465722064657320627574696E732064652072697475656C20737570706CC3A96D656E7461697265732E0044616E676572732064616E73206C65732070617261676573C2A04949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'frFR', 0x5472616E73706F727420636F72726F6D707500566F757320706F7576657A2064C3A9736F726D6169732061636865746572206C6520666175636F6E2D70C3A972C3A96772696E20746F756368C3A920706172206C6520566964652061752073657267656E7420566F726E696E2C20C3A0204C756E652D64E28099417267656E742E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'frFR', 0x5472616E73706F727420636F72726F6D707500566F757320706F7576657A2064C3A9736F726D6169732061636865746572206C6520666175636F6E2D70C3A972C3A96772696E20746F756368C3A920706172206C6520566964652061752073657267656E7420566F726E696E2C20C3A0204C756E652D64E28099417267656E742E005472616E73706F727420636F72726F6D7075002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'frFR', 0x417574656C73206465207075697373616E6365C2A0494900566F757320706F7576657A2074726F75766572206465206E6F75766561757820617574656C732064E28099616DC3A96C696F726174696F6E73206D6167697175657320737572206C65732073697465732072697475656C732E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'frFR', 0x417574656C73206465207075697373616E6365C2A0494900566F757320706F7576657A2074726F75766572206465206E6F75766561757820617574656C732064E28099616DC3A96C696F726174696F6E73206D6167697175657320737572206C65732073697465732072697475656C732E00417574656C73206465207075697373616E6365C2A04949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'frFR', 0x5472C3A9736F72732072C3A976C3A972C3A97300566F757320706F7576657A2064C3A9736F726D6169732074726F75766572206465206772616E6473207472C3A9736F727320636F6E74656E616E742064657320627574696E7320737570706CC3A96D656E74616972657320737572206C65732073697465732072697475656C732E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'frFR', 0x5472C3A9736F72732072C3A976C3A972C3A97300566F757320706F7576657A2064C3A9736F726D6169732074726F75766572206465206772616E6473207472C3A9736F727320636F6E74656E616E742064657320627574696E7320737570706CC3A96D656E74616972657320737572206C65732073697465732072697475656C732E005472C3A9736F72732072C3A976C3A972C3A973002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'frFR', 0x4D616769652072697475656C6C6520E280932061626F6E64616E63652064E280996F7262657300566F7573206176657A20646176616E74616765206465206368616E636573207175E28099756E206F7262652064652072C3A967C3A96EC3A9726174696F6E20736520666F726D6520617072C3A8732061766F6972207475C3A920756E65206372C3A9617475726520737572206C65732073697465732072697475656C732E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'frFR', 0x4D616769652072697475656C6C6520E280932061626F6E64616E63652064E280996F7262657300566F7573206176657A20646176616E74616765206465206368616E636573207175E28099756E206F7262652064652072C3A967C3A96EC3A9726174696F6E20736520666F726D6520617072C3A8732061766F6972207475C3A920756E65206372C3A9617475726520737572206C65732073697465732072697475656C732E004D616769652072697475656C6C6520E2809320736F696E73C2A0494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'frFR', 0x4DC3A96E61676572696520636F72726F6D70756500566F757320706F7576657A2064C3A9736F726D616973206163686574657220756E652073C3A96C656374696F6E206465206D6173636F747465732061752073657267656E7420566F726E696E2C20C3A0204C756E652D64E28099417267656E742E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'frFR', 0x4DC3A96E61676572696520636F72726F6D70756500566F757320706F7576657A2064C3A9736F726D616973206163686574657220756E652073C3A96C656374696F6E206465206D6173636F747465732061752073657267656E7420566F726E696E2C20C3A0204C756E652D64E28099417267656E742E004DC3A96E61676572696520636F72726F6D707565002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'frFR', 0x417574656C73206465207075697373616E636500566F757320706F7576657A2064C3A9736F726D6169732074726F757665722064657320617574656C732064E28099616DC3A96C696F726174696F6E73206D6167697175657320737572206C65732073697465732072697475656C732E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'frFR', 0x417574656C73206465207075697373616E636500566F757320706F7576657A2064C3A9736F726D6169732074726F757665722064657320617574656C732064E28099616DC3A96C696F726174696F6E73206D6167697175657320737572206C65732073697465732072697475656C732E00417574656C73206465207075697373616E6365C2A049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'frFR', 0x427574696E7320737570706CC3A96D656E74616972657300566F757320706F7576657A2064C3A9736F726D6169732074726F757665722064657320706574697473207472C3A9736F727320737570706CC3A96D656E74616972657320737572206C65732073697465732072697475656C732E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'frFR', 0x427574696E7320737570706CC3A96D656E74616972657300566F757320706F7576657A2064C3A9736F726D6169732074726F757665722064657320706574697473207472C3A9736F727320737570706CC3A96D656E74616972657320737572206C65732073697465732072697475656C732E005472C3A9736F7274732064697370657273C3A973C2A04949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'frFR', 0x44616E676572732064616E73206C6573207061726167657300446573206372C3A961747572657320726172657320617070617261697373656E742064C3A9736F726D61697320737572206C65732073697465732072697475656C732065742070657576656E7420766F7573206163636F726465722064657320627574696E732064652072697475656C20737570706CC3A96D656E7461697265732E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'frFR', 0x44616E676572732064616E73206C6573207061726167657300446573206372C3A961747572657320726172657320617070617261697373656E742064C3A9736F726D61697320737572206C65732073697465732072697475656C732065742070657576656E7420766F7573206163636F726465722064657320627574696E732064652072697475656C20737570706CC3A96D656E7461697265732E0044616E676572732064616E73206C65732070617261676573C2A049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'frFR', 0x4D616769652072697475656C6C6520E28093207075697373616E63652064E280996F726265004C657320736F696E7320646573206F726265732064652072C3A967C3A96EC3A9726174696F6E20736F6E74206175676D656E74C3A97320646520313030C2A0252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'frFR', 0x4D616769652072697475656C6C6520E28093207075697373616E63652064E280996F726265004C657320736F696E7320646573206F726265732064652072C3A967C3A96EC3A9726174696F6E20736F6E74206175676D656E74C3A97320646520313030C2A0252E004D616769652072697475656C6C6520E2809320736F696E73C2A04949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'frFR', 0xC3896CC3A96D656E742064652064C3A9636F726174696F6E2064652072697475656C00566F757320706F7576657A206163686574657220646573206163636573736F697265732064652062757265617520737572206C65207468C3A86D65206475205669646520C3A020526165E28099616E612C20C3A0204C756E652D64E28099417267656E742E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'frFR', 0xC3896CC3A96D656E742064652064C3A9636F726174696F6E2064652072697475656C00566F757320706F7576657A206163686574657220646573206163636573736F697265732064652062757265617520737572206C65207468C3A86D65206475205669646520C3A020526165E28099616E612C20C3A0204C756E652D64E28099417267656E742E004D6F62696C6965722064652072697475656C002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'frFR', 0x5472C3A9736F72732072697475656C7300566F757320706F7576657A2074726F7576657220646520706574697473207472C3A9736F727320737572206C65732073697465732072697475656C732E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'frFR', 0x5472C3A9736F72732072697475656C7300566F757320706F7576657A2074726F7576657220646520706574697473207472C3A9736F727320737572206C65732073697465732072697475656C732E005472C3A9736F72732064697370657273C3A973C2A049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'frFR', 0x4D616769652072697475656C6C6520E28093206F726265732064652072C3A967C3A96EC3A9726174696F6E00446573206F726265732064652072C3A967C3A96EC3A9726174696F6E207365206D616E6966657374656E7420737572206C65732073697465732072697475656C732C20766F75732072656E64616E74203135C2A02520646520766F7320706F696E7473206465207669652E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'frFR', 0x4D616769652072697475656C6C6520E28093206F726265732064652072C3A967C3A96EC3A9726174696F6E00446573206F726265732064652072C3A967C3A96EC3A9726174696F6E207365206D616E6966657374656E7420737572206C65732073697465732072697475656C732C20766F75732072656E64616E74203135C2A02520646520766F7320706F696E7473206465207669652E004D616769652072697475656C6C6520E2809320736F696E73C2A049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'frFR', 0x46656EC3AA747265206F6372652064E28099687964726F6D656C6C6572696500000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'frFR', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'frFR', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'frFR', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'frFR', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'frFR', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'frFR', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'frFR', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'frFR', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'frFR', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'frFR', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'frFR', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'frFR', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'frFR', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'frFR', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'frFR', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'frFR', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'frFR', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'frFR', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'frFR', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'frFR', 0x004C696E646F726D69206D657420656E20C3A9766964656E63652064657320616476657273616972657320686F727320626F73732E204C612064C3A966616974652064657320616476657273616972657320656E20C3A9766964656E6365207065726D65742064652072656D706C6972206C657320636F6E646974696F6E732072656C617469766573206175782074726F757065732061647665727365732E004C612064C3A966616974652064657320616476657273616972657320656E207375726272696C6C616E6365207065726D65742064652072656D706C6972206C657320636F6E646974696F6E732072656C617469766573206175782074726F757065732061647665727365732E00, 67186), +(3776013982, 1278156, 'frFR', 0x004C696E646F726D69206D657420656E20C3A9766964656E6365206574206166666169626C697420756E652073C3A96C656374696F6E2064E28099616476657273616972657320686F727320626F737320657420656D70C3AA636865206C612072C3A964756374696F6E2064752074656D70732072657374616E7420636F6E73C3A963757469766520C3A0206C61206D6F727420646520706572736F6E6E616765732D6A6F75657572732E0D0A0D0A4C612064C3A966616974652064657320616476657273616972657320656E207375726272696C6C616E6365207065726D65742064652072656D706C6972206C657320636F6E646974696F6E732072656C617469766573206175782074726F757065732061647665727365732E00506F696E7473206465207669652072C3A9647569747320646520247331C2A0252E0D0A44C3A967C3A2747320696E666C6967C3A9732072C3A9647569747320646520247332C2A0252E00, 67186), +(368401261, 7367, 'frFR', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'frFR', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'frFR', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'frFR', 0xB2790000, 67186), +(3495286709, 24475, 'frFR', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'frFR', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'frFR', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'frFR', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'frFR', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'frFR', 0x000000, 67186), +(3247720076, 42450, 'frFR', 0x041E000000, 67186), +(3247720076, 42449, 'frFR', 0x041E000000, 67186), +(3247720076, 42448, 'frFR', 0x04BE000000, 67186), +(3247720076, 42447, 'frFR', 0x04BE000000, 67186), +(3247720076, 42446, 'frFR', 0x0700000000, 67186), +(3247720076, 42445, 'frFR', 0x0100000000, 67186), +(3247720076, 40690, 'frFR', 0x0100000000, 67186), +(2014779773, 207, 'frFR', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'frFR', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'frFR', 0x000000, 67186), +(3776013982, 390260, 'frFR', 0x000000, 67186), +(261693969, 95304, 'frFR', 0xFFFFFFFFFFFFFFFF4E6F796175782064752056696465206EC3A962756C657578C2A03A20C3A9637573206465206CE28099617562652064652076C3A974C3A972616E0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'frFR', 0xFFFFFFFFFFFFFFFF4E6F7961752064752056696465206EC3A962756C657578C2A03A206D61726E65206465204C756D69C3A8726520647520566964650000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'frFR', 0xFFFFFFFFFFFFFFFF4E6F796175782064752056696465206EC3A962756C657578C2A03A206F720000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'frFR', 0x0000000091000000, 67186), +(1673391669, 145, 'frFR', 0x8E000000, 67186), +(2791084701, 142, 'frFR', 0x32DC0600, 67186), +(3386943305, 340484, 'frFR', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'frFR', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'frFR', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'frFR', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'frFR', 0x4475656C2064652064C3A9636F726174696F6E004A6F75657220C3A02063616368652D6361636865206176656320646573206D6575626C657300E28093204EC3A963657373697465204D69646E6967687420657420756E20706572736F6E6E616765206465206E6976656175C2A03130206D696E696D756D2E0D0AE2809320556E206D6F6465204A634A2064C3A974656E7465206574206E6F6E206CC3A974616C2E0D0AE280932046696C652064E28099617474656E746520656E20736F6C6F20756E697175656D656E742E204C612066696C652064E28099617474656E74652064652067726F7570652065737420646973706F6E69626C652061757072C3A873206465206C612074697373652D6368616D7020416D6F6C656E6E6520C3A0204C756E652D64E28099417267656E742E0D0AE2809320566F74726520706172746965207365207465726D696E65207369207175656C7175E28099756E20766F75732074726F75766520657420766F75732061747472617065C2A021009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'frFR', 0x000000, 67186), +(3776013982, 149981, 'frFR', 0x000000, 67186), +(3330775162, 1897, 'frFR', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'frFR', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'frFR', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'frFR', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'frFR', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'frFR', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'frFR', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'frFR', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'frFR', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'frFR', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'frFR', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'frFR', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'frFR', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'frFR', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'frFR', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'frFR', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'frFR', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'frFR', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'frFR', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'frFR', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'frFR', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'frFR', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'frFR', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'frFR', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'frFR', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'frFR', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'frFR', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'frFR', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'frFR', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'frFR', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'frFR', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'frFR', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'frFR', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'frFR', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'frFR', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'frFR', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'frFR', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'frFR', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'frFR', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'frFR', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'frFR', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'frFR', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'frFR', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'frFR', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'frFR', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'frFR', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'frFR', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'frFR', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'frFR', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'frFR', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'frFR', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'frFR', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'frFR', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'frFR', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'frFR', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'frFR', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'frFR', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'frFR', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'frFR', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'frFR', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'frFR', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'frFR', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'frFR', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'frFR', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'frFR', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'frFR', 0x52616369616C004163746976657A2063657420656666657420706F7572206175746F6D6174697175656D656E742061646F7074657220766F74726520666F726D6520616E7468726F7069717565207175616E6420766F7573206E65206C616E63657A2070617320646520736F72747320647261636F6E697175657320636F6D6D6520536F7566666C6520646520666575206F7520456E766F6C2E0000, 67186), +(3776013982, 1283168, 'frFR', 0x00566F757320636F6D62696E657A203520C3A9636C617473206475205669646520617363656E64616E747320706F757220666F726D657220756E206E6F796175206475205669646520617363656E64616E742063617061626C652064E280996175676D656E746572206C65206E69766561752064E280996F626A65742064E28099756E652061726D65206F752064E28099756E2062696A6F752064652072616E672048C3A9726F73206F75204D7974686520656E7469C3A872656D656E7420616DC3A96C696F72C3A9206F752066616272697175C3A92061752072616E67206D6178696D756D206176656320C389636C6174206172746973616E616C206465206C6120736169736F6EC2A031206465204D69646E696768742E0000, 67186), +(3776013982, 1282778, 'frFR', 0x004175676D656E7465206C65206E69766561752064E280996F626A65742064E28099756E652061726D65206F752064E28099756E2062696A6F752064652072616E672048C3A9726F73206F75204D7974686520656E7469C3A872656D656E7420616DC3A96C696F72C3A9206F752066616272697175C3A92061752072616E67206D6178696D756D206176656320C389636C6174206172746973616E616C206465206C6120736169736F6EC2A031206465204D69646E696768742E0000, 67186), +(3776013982, 1264876, 'frFR', 0x004C6F727371756520467261707065206D6F7274656C6C65206F7520456E636861C3AE6E656D656E7420696E666C6967656E74206465732064C3A967C3A2747320C3A020247332C2A06369626C6573206F7520706C75732C2063656C6C65732071756920736F6E742076696374696D65732064652046726170706520647520636F6C6F73736520766F69656E7420736573206566666574732070726F6C6F6E67C3A97320646520247B2473312F313030307D2E31C2A0732E0000, 67186), +(3776013982, 1255629, 'frFR', 0x004CE28099657373656E6365206C6962C3A972C3A9652072656E666F726365206C657320706572736F6E6E616765732D6A6F75657572732E20436573206465726E6965727320766F69656E74206C65757220766974657373652064652064C3A9706C6163656D656E74206175676D656E74C3A96520646520247331C2A0252C2061696E736920717565206C657572732064C3A967C3A2747320696E666C6967C3A9732C206C657572732065666665747320646520736F696E732065742064E280996162736F727074696F6E206175676D656E74C3A97320646520247332C2A0252070656E64616E742024642E20436574206566666574206573742063756D756C61626C652C206D616973206E652072C3A9696E697469616C69736520706173206C6120647572C3A9652E00566974657373652064652064C3A9706C6163656D656E74206175676D656E74C3A96520646520247331C2A0252E0D0A44C3A967C3A2747320696E666C6967C3A973206175676D656E74C3A97320646520247332C2A0252E0D0A45666665747320646520736F696E732065742064E280996162736F727074696F6E206175676D656E74C3A97320646520247333C2A0252E00, 67186), +(3776013982, 447444, 'frFR', 0x00243F63335B4F7576726520756E65206661696C6C655D5B41747461717565206D656E74616C65206F7576726520756E65204661696C6C6520656E74726F70697175655D207175692073756974206CE28099616476657273616972652070656E64616E742024343530313933642E204C6573206369626C6573207072697365732064616E7320736120636F7572736520737562697373656E7420243434373434387331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D62726520746F75746573206C657320243435393331347431C2A0732074616E74207175E28099656C6C657320736F6E7420C3A020706F7274C3A9652E0000, 67186), +(372281185, 38, 'frFR', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'frFR', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'frFR', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'frFR', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'frFR', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'frFR', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'frFR', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'frFR', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'frFR', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'frFR', 0x0024407370656C6C64657363323130373235004578706C6F736520657420696E666C6967652024773120706F696E74732064652064C3A967C3A274732064657320417263616E657320C3A02065787069726174696F6E2E00, 67186), +(3386943305, 332898, 'frFR', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'frFR', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'frFR', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'frFR', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'frFR', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'frFR', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'frFR', 0x0464000000, 67186), +(3776013982, 1280123, 'frFR', 0x000000, 67186), +(3205218938, 54794, 'frFR', 0x424353484F5254444154454E4F59454152002532246420253124420001000000, 67186), +(3205218938, 22339, 'frFR', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'frFR', 0x534C4153485F5441524745545F4D41524B455232002F6D630001000000, 67186), +(3205218938, 22331, 'frFR', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'frFR', 0x534C4153485F574F524C445F4D41524B455232002F6D7465720001000000, 67186), +(3205218938, 22329, 'frFR', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'frFR', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'frFR', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'frFR', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'frFR', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'frFR', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'frFR', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'frFR', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'frFR', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'frFR', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'frFR', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'frFR', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'frFR', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'frFR', 0x00566F75732074656E74657A2064E280996163686576657220756E65206369626C6520626C657373C3A9652C2063652071756920696E666C69676520247331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D6272652C207075697320243436383537326F31C2A0246C737570706CC3A96D656E74616972653A737570706CC3A96D656E7461697265733B20656E2024343638353732642E205574696C697361626C6520756E697175656D656E7420737572206C657320616476657273616972657320646F6E74206C657320706F696E74732064652076696520736F6E7420737570C3A972696575727320C3A020247333C2A025206F7520696E66C3A972696575727320C3A020247332C2A0252E0000, 67186), +(261693969, 95553, 'frFR', 0xFFFFFFFFFFFFFFFF4F7061636974C3A9206D616E69666573746500001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'frFR', 0xFFFFFFFFFFFFFFFF496E7665737469676174696F6E20646573206F62C3A96C69737175657320736F6D627265730000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'frFR', 0xFFFFFFFFFFFFFFFF52C3A964756374696F6E20646573206566666563746966730000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'frFR', 0xC3896361696C6C6573207065726E69636965757365730000466176657572206D616C7665696C6C616E7465206175676D656E7465206C657320706F696E747320646520766965206574206C65732064C3A967C3A27473206465206CE2809961707072656E7469204B7572677362616E652064652024313238393130327331C2A025206574206C7569207065726D65742064E280997574696C6973657220C3896361696C6C6573207065726E69636965757365732E00, 67186), +(3776013982, 1281946, 'frFR', 0x000000, 67186), +(3776013982, 1270634, 'frFR', 0x00446F75626C65206C65732064C3A967C3A2747320717565206C6520706F696E742D6E65787573204D6964E280994172206661697420737562697220C3A020756E20C3A96CC3A96D656E74616972652064657320617263616E65732070656E64616E74203135C2A0732E005375626974206465732064C3A967C3A2747320646F75626CC3A9732E00, 67186), +(3776013982, 1270085, 'frFR', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E636575736520C3A96368616E67652064657320706F696E74732064652076696520636F6E74726520756E20626F75636C6965722064E280996162736F727074696F6E20706F7576616E74206162736F7262657220756E65207175616E746974C3A92064652064C3A967C3A27473206964656E746971756520C3A0206C61207175616E746974C3A920646520706F696E74732064652076696520C3A96368616E67C3A9652E204C6520626F75636C696572207365206469737369706520656E206578706C6F73616E742C2063652071756920696E666C6967652024313237303038357331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D6272652061757820706572736F6E6E616765732D6A6F756575727320C3A0206D6F696E732064652024313237303038356131C2A06D2E004162736F72626520247731C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732E0D0A5365206469737369706520656E20696E666C696765616E742024313237303038357331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D6272652061757820706572736F6E6E616765732D6A6F756575727320C3A0206D6F696E732064652024313237303038356131C2A06D2E00, 67186), +(3776013982, 1258411, 'frFR', 0x000000, 67186), +(3776013982, 1258410, 'frFR', 0x00427576657A206365636920706F75722062C3A96EC3A96669636965722064E28099756E20656666657420636F736DC3A974697175652E00556E652076657273696F6E206DC3A964696F637265206574206E6F6E20666F6E6374696F6E6E656C6C65206465206C612062616C6C65206D65727665696C6C65757365206EE28099617474656E64207269656E20646520706C75732071756520736F6E20696EC3A976697461626C65206469737369706174696F6E2E00, 67186), +(3776013982, 1258336, 'frFR', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'frFR', 0x000000, 67186), +(3776013982, 1257729, 'frFR', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'frFR', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E636575736520656E74616D6520736F6E2070726F6365737375732064652072C3A9616E696D6174696F6E206574207265737375736369746520617665632024313235373732387331C2A02520646520736F6E206D6178696D756D20646520706F696E747320646520766965207369206C612063616E616C69736174696F6E2072C3A975737369742E00456E2072C3A9616E696D6174696F6E2E205369206C612063616E616C69736174696F6E2072C3A975737369742C206C65206C616E63657572206F75206C61206C616E6365757365207265737375736369746520617665632024313235373732387331C2A02520646520736F6E206D6178696D756D20646520706F696E7473206465207669652E00, 67186), +(3776013982, 1257505, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E636575736520C3A96368616E67652064657320706F696E74732064652076696520636F6E74726520756E20626F75636C6965722064E280996162736F727074696F6E20706F7576616E74206162736F7262657220756E65207175616E746974C3A92064652064C3A967C3A27473206964656E746971756520C3A0206C61207175616E746974C3A920646520706F696E74732064652076696520C3A96368616E67C3A9652E004162736F72626520247731C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732E00, 67186), +(3776013982, 1256189, 'frFR', 0x000000, 67186), +(3776013982, 1255966, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E63657573652072C3A9637570C3A8726520247331C2A02520646520736F6E206D6178696D756D20646520706F696E74732064652076696520746F75746573206C657320247431C2A0732E00247331C2A025206475206D6178696D756D20646520706F696E74732064652076696520246C72C3A967C3A96EC3A972C3A93A72C3A967C3A96EC3A972C3A9733B20746F75746573206C657320247431C2A0732E00, 67186), +(3776013982, 1253337, 'frFR', 0x000000, 67186), +(3776013982, 1253336, 'frFR', 0x0000436F6E74656D706C6520756E6520696C6C7573696F6E20646F7574657573652070726F766F7175C3A96520706172206C6120626F6973736F6EE280A600, 67186), +(3776013982, 1253194, 'frFR', 0x000043616E616C69736174696F6E2E00, 67186), +(3776013982, 1253193, 'frFR', 0x000043616E616C69736174696F6E2E00, 67186), +(3776013982, 1253185, 'frFR', 0x000043616E616C69736174696F6E2E00, 67186), +(3776013982, 1253064, 'frFR', 0x000000, 67186), +(3776013982, 1252431, 'frFR', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'frFR', 0x0024407370656C6C646573633132343130323300496E666C6967652024313235383333367331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064657320617263616E657320746F75746573206C657320247431C2A0732E00, 67186), +(3776013982, 1241023, 'frFR', 0x005A6FE2809967726F6E2073652070726F74C3A8676520C3A0206CE28099616964652064E28099756E206368616D7020646520666F726365206162736F7262616E74206C65732064C3A967C3A27473207265C3A775732C20657420636F6D6D656E636520C3A0206C616E63657220556C74696D65206176657274697373656D656E742E20C380206C612066696E206465206CE28099696E63616E746174696F6E2C206C65206368616D7020646520666F72636520696E666C6967652024313235383333367331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064657320617263616E657320C3A020746F7573206C657320706572736F6E6E616765732D6A6F756575727320746F75746573206C65732024313234313033327431C2A073206A75737175E28099C3A0207361206465737472756374696F6E2E004162736F72626520247731C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732E00, 67186), +(3776013982, 1235076, 'frFR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'frFR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'frFR', 0x004C65205468C3A973617572697365757220666F75696C6C65206C652074617320646520726573736F7572636573206C6520706C75732070726F6368652065742072656D706C616365206CE28099756E652064652073657320746563686E69717565732070617220756E65206E6F7576656C6C652E243F44494646387C3F4449464632335B5D5B20496C206E65207065757420646973706F736572207175652064E28099756E65207365756C6520746563686E6971756520C3A0206C6120666F69732E5D0000, 67186), +(3776013982, 1235067, 'frFR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'frFR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'frFR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'frFR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'frFR', 0x00416C6C6572696120706C616365206175746F75722064E28099756E20706572736F6E6E6167652D6A6F7565757220756E65206361726170616365206465206D6167696520647520566964652C20717569206162736F72626520247331C2A0246C706F696E743A706F696E74733B2064652076696520246C72656E64753A72656E6475733B2E20456E20636173206465206469737369706174696F6E207C3224407370656C6C6E616D65313233333836352C206C612076616C6575722064E280996162736F727074696F6E2072657374616E746520657374207472616E7366C3A972C3A96520C3A020756E20617574726520706572736F6E6E6167652D6A6F7565757220616CC3A961746F6972652E004162736F72626520247731C2A0246C706F696E74206465207669652072656E64753A706F696E7473206465207669652072656E6475733B2E0D0A0D0A456E20636173206465206469737369706174696F6E2C206C612076616C6575722064E280996162736F727074696F6E2072657374616E746520657374207472616E7366C3A972C3A96520C3A020756E20617574726520706572736F6E6E6167652D6A6F756575722E00, 67186), +(3776013982, 1228865, 'frFR', 0x00496E766F7175652065742072656E766F6965206365747465206D6F6E747572652E00243F6A31675B5669746573736520617520736F6C206175676D656E74C3A96520646520246A3167C2A0252E205D5B5D243F6A31665B5669746573736520646520766F6C206175676D656E74C3A96520646520246A3166C2A0252E205D5B5D243F6A31735B56697465737365206465206E616765206175676D656E74C3A96520646520246A3173C2A0252E205D5B5D00, 67186), +(3776013982, 1225598, 'frFR', 0x00243F50433135343832385B7C636E4951313AE28093C2A0436F6D62696E6169736F6E20646520706C6F6E67C3A96520646520626173657C525D5B5D243F50433135343832395B7C636E4951323AE28093C2A0436F6D62696E6169736F6E20C3A0206A6F696E74757265732072656E666F7263C3A965737C525D5B5D243F50433135343833305B7C636E4951333AE28093C2A0436F6D62696E6169736F6E20656E64756974652064652067726169737365206465732070726F666F6E64657572737C525D5B5D243F50433135343833325B7C636E4951343AE28093C2A0436F6D62696E6169736F6E20C3A02061696C65726F6E732064657320666F73736573206465205061686B7C525D5B5D0D0A56697465737365206465206E616765202B247731C2A0250D0A243F50433135343833365B0D0A7C636E4951313AE28093C2A0426F757465696C6C6520646520736F7566666C6520646520626173657C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313232343730306D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323AE28093C2A0426F757465696C6C6520646520706C6F6E67C3A9652075736167C3A9657C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313237313631336D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333AE28093C2A0426F757465696C6C6520646520706C6F6E67C3A96520C3A970726F7576C3A9657C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313237313631346D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343AE28093C2A0426F757465696C6C6520646520736F7566666C65206465204E616C6F72616B6B7C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313237313631356D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313AE28093C2A0417070C3A27420646520626173657C520D0A50726973657320636F6D6D756E65730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323AE28093C2A0417070C3A27420C3A0207661696C65726F6E7C520D0A5072697365732070657520636F6D6D756E65730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333AE28093C2A0417070C3A27420C3A020706C65637461696C65726F6E7C520D0A5072697365732072617265730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343AE28093C2A04368616972206465206672C3B46C652D626F757262657C520D0A50726973657320C3A97069717565730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323AE28093C2A046696C657420706F757220686175747320666F6E64737C520D0A436C616D70616E74732062617262656CC3A97320657420686970706F63616D70657320C3A970696E6575780D0A5D5B5D243F50433135323532375B0D0A7C636E4951333AE28093C2A046696C657420C3A020747269706C652066696C65746167657C520D0A506574697465732070726973657320746F7574657320657370C3A86365730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343AE28093C2A04C756E657474657320707265737375726973C3A965737C520D0A44C3A9636F7576657274652064652072656C697175657320616E6369656E6E65735D5B5D0D0A00243F50433135343832385B7C636E4951313AE28093C2A0436F6D62696E6169736F6E20646520706C6F6E67C3A96520646520626173657C525D5B5D243F50433135343832395B7C636E4951323AE28093C2A0436F6D62696E6169736F6E20C3A0206A6F696E74757265732072656E666F7263C3A965737C525D5B5D243F50433135343833305B7C636E4951333AE28093C2A0436F6D62696E6169736F6E20656E64756974652064652067726169737365206465732070726F666F6E64657572737C525D5B5D243F50433135343833325B7C636E4951343AE28093C2A0436F6D62696E6169736F6E20C3A02061696C65726F6E732064657320666F73736573206465205061686B7C525D5B5D0D0A56697465737365206465206E616765202B247731C2A0250D0A243F50433135343833365B0D0A7C636E4951313AE28093C2A0426F757465696C6C6520646520736F7566666C6520646520626173657C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313232343730306D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323AE28093C2A0426F757465696C6C6520646520706C6F6E67C3A9652075736167C3A9657C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313237313631336D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333AE28093C2A0426F757465696C6C6520646520706C6F6E67C3A96520C3A970726F7576C3A9657C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313237313631346D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343AE28093C2A0426F757465696C6C6520646520736F7566666C65206465204E616C6F72616B6B7C520D0A5175616E746974C3A92064E280996F787967C3A86E65206D6178696D756D2064652024313237313631356D36C2A0756E6974C3A9730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313AE28093C2A0417070C3A27420646520626173657C520D0A50726973657320636F6D6D756E65730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323AE28093C2A0417070C3A27420C3A0207661696C65726F6E7C520D0A5072697365732070657520636F6D6D756E65730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333AE28093C2A0417070C3A27420C3A020706C65637461696C65726F6E7C520D0A5072697365732072617265730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343AE28093C2A04368616972206465206672C3B46C652D626F757262657C520D0A50726973657320C3A97069717565730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323AE28093C2A046696C657420706F757220686175747320666F6E64737C520D0A436C616D70616E74732062617262656CC3A97320657420686970706F63616D70657320C3A970696E6575780D0A5D5B5D243F50433135323532375B0D0A7C636E4951333AE28093C2A046696C657420C3A020747269706C652066696C65746167657C520D0A506574697465732070726973657320746F7574657320657370C3A86365730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343AE28093C2A04C756E657474657320707265737375726973C3A965737C520D0A44C3A9636F7576657274652064652072656C00, 67186), +(3776013982, 1225322, 'frFR', 0x007C636E475245454E5F464F4E545F434F4C4F523A4E697665617520646520636F6D70C3A974656E6365207265636F6D6D616E64C3A9C2A03A7C7220310D0A0D0A4C657320656175782063616C6D6573206574207061697369626C657320656E20666F6E74206CE28099656E64726F6974206964C3A9616C20706F757220636F6D6D656E63657220C3A0206578706C6F72657220636520717565206C65732070726F666F6E6465757273206F6E7420C3A0206F66667269722E0D0A0D0A42617373696E732074726F7576C3A9732064616E73206365747465207A6F6E65C2A03A0D0AE280932062616E6320647520507569747320646520736F6C65696CC2A03B0D0AE2809320666C6F726169736F6E206672C3A96D697373616E7465C2A03B0D0AE280932062616E6320666C65757269C2A03B0D0AE280932056696465207669737175657578C2A03B0D0AE2809320636172676169736F6E207065752073C3BB7265C2A03B0D0AE28093207472C3A9736F722070657264752E0000, 67186), +(3776013982, 1225281, 'frFR', 0x004365747465207061697369626C65206372C3A96174757265207072C3A966C3A87265206C657320656175782063616C6D657320647520626F697320646573204368616E747320C3A97465726E656C732E2053692063657320656175782072657373656D626C656E7420C3A020756E207465727261696E206465206A6575206964C3A9616C20706F7572206C61206D616A6F726974C3A9206465732070C3AA6368657572732065742070C3AA636865757365732C20636520706F6973736F6E2D6CC3A0206E652073E280996F66667265207175E2809961757820696E64697669647573206C657320706C757320617474656E746966732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5574696C69736174696F6E207370C3A96369616C65C2A03A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F6973736F6E207072C3A973656E742064616E73206C65732072C3A967696F6E732073756976616E746573C2A03A7C520D0AE2809320626F697320646573204368616E747320C3A97465726E656C73C2A03B0D0AE2809320486172616E6461722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A42616E637320646520706F6973736F6E73C2A03A7C720D0AE2809320746F7272656E7420666C657572692E0000, 67186), +(3776013982, 1225277, 'frFR', 0x004C657320656175782064E28099486172616E64617220636F6E7469656E6E656E7420646573206D696EC3A97261757820756E6971756573207175692C20656E2070617373616E7420C3A02074726176657273206C6573206272616E63686965732064E28099756E206368616E74C3A96361696C6C652072C3A9696E74726F647569742C20C3A96D657474656E7420756E65206DC3A96C6F64696520C3A97468C3A972C3A96520736F7573206CE280996561752E204269656E207175E28099656C6C6520736F697420706C616973616E746520617578206F7265696C6C6573206465732070C3AA6368657572732065742070C3AA636865757365732C206C61206D757369717565207265706F75737365206C6573207072C3A964617465757273206772C3A2636520C3A020736573206F6E6465732073756274696C65732E20536920756E207072C3A96461746575722C20636F6D6D65206C652074C3A974726120646973746F7264752C2073E28099617070726F6368652074726F702C206C6573206F6E6465732064657669656E6E656E7420706C757320766F6C6174696C65732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5574696C69736174696F6E207370C3A96369616C65C2A03A207C520D0A0D0A24407370656C6C69636F6E313233373130342046657374696E732064652063756973696E650D0A0D0A436520706F6973736F6E20706172746963756C69C3A872656D656E742072617265206574207361766F75726575782065737420756E20696E6772C3A96469656E7420636CC3A92064616E73206465206E6F6D627265757365732072656365747465732064652063756973696E65206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F6973736F6E207072C3A973656E742064616E73206C65732072C3A967696F6E732073756976616E746573C2A03A7C520D0AE2809320626F697320646573204368616E747320C3A97465726E656C73C2A03B0D0AE2809320486172616E6461722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A42616E637320646520706F6973736F6E73C2A03A7C720D0AE280932062616E6320666C65757269C2A03B0D0AE2809320666C6F726169736F6E206672C3A96D697373616E7465C2A03B0D0AE280932062616E6320647520507569747320646520736F6C65696CC2A03B0D0AE2809320746F7272656E7420666C657572692E0000, 67186), +(3776013982, 1225273, 'frFR', 0x00556E652072C3A9736964656E746520C3A97472616E67656D656E74207265627574616E7465206465206C612074656D70C3AA7465206475205669646520646F6E74206C6573206D656D627265732064C3A970617373656E7420646573207A6F6E65732064652070C3AA63686520647520566964652E20466F757262652C206D616C69676E6520657420696E74656C6C6967656E74652C20656C6C6520636F6E73746974756520756E2064C3A9666920666F726D696461626C6520706F7572206C65732070C3AA6368657572732065742070C3AA6368657573657320717569206F6E7420617373657A20646520636F757261676520706F75722070C3AA636865722064616E73206C612074656D70C3AA746520647520566964652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5574696C69736174696F6E207370C3A96369616C65C2A03A207C520D0A0D0A24407370656C6C69636F6E313233373130342046657374696E732064652063756973696E650D0A0D0A436520706F6973736F6E20706172746963756C69C3A872656D656E742072617265206574207361766F75726575782065737420756E20696E6772C3A96469656E7420636CC3A92064616E73206465206E6F6D627265757365732072656365747465732064652063756973696E65206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F6973736F6E207072C3A973656E742064616E73206C65732072C3A967696F6E732073756976616E746573C2A03A7C520D0A0D0AE280932074656D70C3AA746520647520566964652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A42616E637320646520706F6973736F6E73C2A03A7C720D0A0D0AE2809320766F72746578206F63C3A9616E69717565C2A03B0D0AE2809320566964652076697371756575782E0000, 67186), +(3776013982, 1225272, 'frFR', 0x00556E20726F627573746520706F6973736F6E2D68C3A9726973736F6E20617267656E74C3A920646F6E74206CE280996170706172656E636520656E636F7572616765206C65732070C3AA6368657572732C2070C3AA6368657573657320657420706F6973736F6E7320C3A02076656E6972206578706C6F726572206176616E74207175E28099696C206E65206C616E636520736573207069717565732067726F737369C3A87265732064616E73206C65757220646972656374696F6E2E20496C206EE28099657374206CE28099616D69206D65727665696C6C657573656D656E7420726F6E63686F6E20646520706572736F6E6E652C206D61697320756E207472C3A9736F72206269656E76656E7520706F757220746F75742070C3AA6368657572206F752070C3AA63686575736520656E2068657262652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5574696C69736174696F6E207370C3A96369616C65C2A03A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F6973736F6E207072C3A973656E742064616E73206C65732072C3A967696F6E732073756976616E746573C2A03A7C520D0AE2809320626F697320646573204368616E747320C3A97465726E656C73C2A03B0D0AE2809320486172616E6461722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A42616E637320646520706F6973736F6E73C2A03A7C720D0AE2809320666C6F726169736F6E206672C3A96D697373616E7465C2A03B0D0AE280932062616E6320647520507569747320646520736F6C65696CC2A03B0D0AE280932062616E6320666C65757269C2A03B0D0AE2809320746F7272656E7420666C657572692E0000, 67186), +(3776013982, 444803, 'frFR', 0x00556E65206372C3A961747572652068756D626C65206574206173736F757069652E204C6F72737175E28099656C6C652065737420C3A97665696C6CC3A9652C2073657320C3A96361696C6C6573206272696C6C656E742064E28099756E20C3A9636C61742072C3A9666CC3A96368697373616E74206D616C6772C3A9206C6520706575206465206C756D69C3A87265207175E28099656C6C657320706572C3A76F6976656E742E20556E652073696C656E6369657573652073706C656E6465757220657420756E206F626A656374696620617070726F707269C3A920706F757220746F75742070C3AA63686575722065742070C3AA63686575736520656E2068657262652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5574696C69736174696F6E207370C3A96369616C65C2A03A7C720D0A0D0A24407370656C6C69636F6E3434353132372046696C65742066726169730D0A0D0A456E207574696C6973616E7420636520706F6973736F6E2061766563206C6120636F6D70C3A974656E636520656E2063756973696E652C20766F757320706F7576657A206F6274656E697220756E206E6F6D62726520696D706F7274616E742064652066696C6574732066726169732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F6973736F6E207072C3A973656E742064616E73206C65732072C3A967696F6E732073756976616E746573C2A03A7C520D0A0D0AE2809320417A6A2D4B61686574C2A03B0D0AE28093206CE280994F6173697320737572204BE2809961726573682E0000, 67186), +(3205218938, 56772, 'frFR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C4534004F666672652064E28099617373697374616E63650001000000, 67186), +(3205218938, 56771, 'frFR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300436F6D70C3A974697469660001000000, 67186), +(3205218938, 56770, 'frFR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45320044C3A9636F6E7472616374C3A90001000000, 67186), +(3205218938, 22337, 'frFR', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'frFR', 0x000000, 67186), +(1010104591, 26054, 'frFR', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'frFR', 0x4172636865206465205465727265617500000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'frFR', 0x426F7567656F69722073696EE28099646F726569206F726EC3A900000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'frFR', 0x4C616D70652073757370656E647565206465206DC3A963616E696369656E2064652054657272656D696E6500000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'frFR', 0x4D616368696E6520C3A020636166C3A92064652044616C6172616E000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'frFR', 0x4272617365726F2064652064C3A9766173746174696F6E000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'frFR', 0x4C616E7465726E6520736F7572646520656E2066657200000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'frFR', 0x456E63656E736F69722064652052756973736563C3B4746500000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'frFR', 0x52C3A976657262C3A872652070617266616974656D656E7420666961626C652064652054657272656D696E6500000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'frFR', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'frFR', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'frFR', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'frFR', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'frFR', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'frFR', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'frFR', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'frFR', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'frFR', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'frFR', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'frFR', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'frFR', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'frFR', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'frFR', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'frFR', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'frFR', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'frFR', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'frFR', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'frFR', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'frFR', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'frFR', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'frFR', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'frFR', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'frFR', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'frFR', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'frFR', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'frFR', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'frFR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'frFR', 0x0044C3A963696D7573207472616E736D757465206C657320667261676D656E747320656E20756E206E6F796175206475205669646520C3A96CC3A96D656E746169726520C3A020616A6F7574657220C3A0206C6120666F7267652064752056696465206E61697373616E74652E20247331C2A06E6F79617578206475205669646520C3A96CC3A96D656E74616972657320736F6E74206EC3A963657373616972657320706F7572207465726D696E6572206C6120666F7267652E0D0A0D0A436F6E747269627574696F6E2061637475656C6C65C2A03A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'frFR', 0xFFFFFFFFFFFFFFFF556E206E6F796175206475205669646520C3A96CC3A96D656E74616972650000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'frFR', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'frFR', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'frFR', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'frFR', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'frFR', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'frFR', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'frFR', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'frFR', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'frFR', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'frFR', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'frFR', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'frFR', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'frFR', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'frFR', 0x000000, 67186), +(3653642729, 376, 'frFR', 0x000000008D000000, 67186), +(1673391669, 141, 'frFR', 0x8A000000, 67186), +(2791084701, 138, 'frFR', 0x35D30600, 67186), +(2518885667, 13760, 'frFR', 0xC035000000000000, 67186), +(3776013982, 1296205, 'frFR', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'frFR', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'frFR', 0xFFFFFFFFFFFFFFFF417373617574732064752056696465C2A03A205A756CE28099416D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'frFR', 0xFFFFFFFFFFFFFFFF417373617574732064752056696465C2A03A20626F697320646573204368616E747320C3A97465726E656C7300003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'frFR', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'frFR', 0x000000, 67186), +(3776013982, 1296168, 'frFR', 0x000000, 67186), +(600565378, 665333, 'frFR', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'frFR', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'frFR', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'frFR', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'frFR', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'frFR', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'frFR', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'frFR', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'frFR', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'frFR', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'frFR', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'frFR', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'frFR', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'frFR', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'frFR', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'frFR', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'frFR', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'frFR', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'frFR', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'frFR', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'frFR', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'frFR', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'frFR', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'frFR', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'frFR', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'frFR', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'frFR', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'frFR', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'frFR', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'frFR', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'frFR', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'frFR', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'frFR', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'frFR', 0x898200006D670300, 67186), +(3745449290, 8614, 'frFR', 0x536974652072697475656CC2A03A205472C3B46E652062726973C3A900556E2072697475656C2064616E6765726575782065737420656E20636F7572732064616E73206C657320656E7669726F6E732E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'frFR', 0x000000, 67186), +(2575642838, 765, 'frFR', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'frFR', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'frFR', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'frFR', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'frFR', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'frFR', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'frFR', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'frFR', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'frFR', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'frFR', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'frFR', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'frFR', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'frFR', 0x46656EC3AA7472652074697373C3A96520646520726163696E6573000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'frFR', 0x5461626C65617520C2ABC2A04C616E7465726E6520646573204368616E747320C3A97465726E656C73C2A0C2BB000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'frFR', 0x506F7274652074697373C3A96520646520726163696E6573000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'frFR', 0x506572676F6C6120666F6E67697175650000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'frFR', 0x54617274652061757820626169657320736F6D7074756575736500000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'frFR', 0x506F742064E28099486172616E646172207275737469717565000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'frFR', 0x4772616E64206372697374616C206368617267C3A92064E28099C3A97468657200000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'frFR', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'frFR', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'frFR', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'frFR', 0x467B0000, 67186), +(4033975491, 620660, 'frFR', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'frFR', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'frFR', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'frFR', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'frFR', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'frFR', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'frFR', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'frFR', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'frFR', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'frFR', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'frFR', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'frFR', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'frFR', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'frFR', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'frFR', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'frFR', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'frFR', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'frFR', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'frFR', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'frFR', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'frFR', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'frFR', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'frFR', 0x000000, 67186), +(3776013982, 1295957, 'frFR', 0x000000, 67186), +(3776013982, 1295932, 'frFR', 0x000000, 67186), +(3776013982, 1295927, 'frFR', 0x004C6F727371756520766F7573206A6F75657A206C652072C3B46C652064652074616E6B20706F757220766F7472652067726F7570652C204C696E646F726D69206D657420656E20C3A9766964656E6365206C65732061647665727361697265732064657320646F6E6A6F6E7320646520636CC3A9206D797468697175652E0D0A0D0A5061726C657A20C3A0204C696E646F726D6920706F75722064C3A97361637469766572206365742065666665742E004C6F727371756520766F7573206A6F75657A206C652072C3B46C652064652074616E6B20706F757220766F7472652067726F7570652C204C696E646F726D69206D657420656E20C3A9766964656E6365206C65732061647665727361697265732064657320646F6E6A6F6E7320646520636CC3A9206D797468697175652E0D0A0D0A5061726C657A20C3A0204C696E646F726D6920706F75722064C3A97361637469766572206365742065666665742E00, 67186), +(3776013982, 1265971, 'frFR', 0x004C657320746563686E6971756573207574696C6973C3A9657320706172206C657320636176616C6965727320696E666C6967656E7420247331C2A0252064652064C3A967C3A2747320737570706CC3A96D656E7461697265732E243F63335B0D0A0D0A4C65732064C3A967C3A2747320646520766F74726520676F756C6520657420646520766F7472652061726368657220737175656C65747469717565206175676D656E74656E7420646520247333C2A025206574206365757820646520766F7320676F756C657320696E66C3A97269657572657320646520247335C2A0255D5B5D2E0000, 67186), +(336222293, 22784, 'frFR', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'frFR', 0x00436F6E66C3A87265204D6F72742073756269746520746F75746573206C657320247331C2A0246C46726170706520617373617373696E653A4672617070657320617373617373696E65733B2E0D0A0D0A4CE280997574696C69736174696F6E206465204D6F72742073756269746520616363C3A96CC3A8726520766F7472652070726F636861696E652054656D70C3AA7465206465206C616D65732C206C7569207065726D657474616E7420646520667261707065722031C2A0666F697320646520706C757320282434343536303675206175206D6178696D756D292E204C6120647572C3A96520746F74616C652064652054656D70C3AA7465206465206C616D657320726573746520696E6368616E67C3A9652E0D0A0D0A4D6F727420737562697465206120247332C2A025206465206368616E6365732064652064C3A9636C656E636865722052C3A9636F6C7465206465206C612074656D70C3AA746520C3A020247333C2A0252064E28099656666696361636974C3A92E0000, 67186), +(378810315, 666, 'frFR', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'frFR', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'frFR', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'frFR', 0x000000, 67186), +(1181150530, 752881, 'frFR', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'frFR', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'frFR', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'frFR', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'frFR', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'frFR', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'frFR', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'frFR', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'frFR', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'frFR', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'frFR', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'frFR', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'frFR', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'frFR', 0xE1570500E0570500, 67186), +(736158310, 43619, 'frFR', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'frFR', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'frFR', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'frFR', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'frFR', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'frFR', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'frFR', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'frFR', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'frFR', 0x00243F63315B496E766F636174696F6E206465204E69757A616F2C206C6520427566666C65206E6F69725D5B5AC3A96E6974685D207065726D657420C3A020243F63315B536F7566666C65206465206665755D5B436F7570206465207069656420647520736F6C65696C206C6576616E7420657420436F757020746F75726E6F79616E74206465206C6120677275655D2064652064C3A9636C656E6368657220247331C2A0666F69732044C3A96C75676520646520636F7570732E0000, 67186), +(3776013982, 1244331, 'frFR', 0x00247332C2A025206465206C6120666C6F726169736F6E2066696E616C6520646520466C6575722064652076696520736F69676E656E74206A75737175E28099C3A020247333C2A0706572736F6E6E6167657320616C6C69C3A97320626C657373C3A97320C3A0206D6F696E732064652024313234343334316131C2A06D2E0000, 67186), +(3776013982, 441845, 'frFR', 0x00243F63325B4C65732064C3A967C3A27473206465204C616D626561752C2042616C6179616765206574204772696666757265206175676D656E74656E7420646520247331C2A025206574206C65757273206368616E63657320646520636F757020637269746971756520646520247333C2A0252E5D5B4C65732064C3A967C3A27473206465204D7574696C6174696F6E206175676D656E74656E7420646520247334C2A02520657420736573206368616E63657320646520636F757020637269746971756520646520247335C2A0252E5D0D0A0D0A243F63335B4D7574696C6174696F6E20766F75732072656E6420243435383732347331C2A02520646520766F747265206D6178696D756D20646520706F696E7473206465207669652E5D5B5D0000, 67186), +(3205218938, 57068, 'frFR', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E004163686574657220746F7573206C65732061727469636C6573202825732920706F7572202573C2A03F0003000000, 67186), +(3205218938, 23377, 'frFR', 0x5343454E4152494F5F53544147455F53544154555300C38974617065202564207375722025640001000000, 67186), +(3205218938, 22841, 'frFR', 0x5343454E4152494F5F53544147450050686173652025640001000000, 67186), +(3745449290, 8459, 'frFR', 0x54726171756500417374616C6F72204C6967657373616E672061206265736F696E20646520766F747265206169646520706F7572207472617175657220646573206D656E61636573206D6F7274656C6C65732E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'frFR', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'frFR', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'frFR', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'frFR', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'frFR', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'frFR', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'frFR', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'frFR', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'frFR', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'frFR', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'frFR', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'frFR', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'frFR', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'frFR', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'frFR', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'frFR', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'frFR', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'frFR', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'frFR', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'frFR', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'frFR', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'frFR', 0x5779726D206475204EC3A9616E7400000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'frFR', 0x9201000022000000, 67186), +(3247720076, 39887, 'frFR', 0x0700000000, 67186), +(3776013982, 243435, 'frFR', 0x004368616E676520766F747265207065617520656E207069657272652C20636520717569206175676D656E746520766F7320706F696E7473206465207669652061637475656C73206574206D6178696D756D20646520247331252C2065742072C3A964756974206C65732064C3A967C3A2747320737562697320646520247332252070656E64616E742024642E004D6178696D756D20646520706F696E747320646520766965206175676D656E74C3A920646520247731252E0D0A44C3A967C3A274732073756269732072C3A9647569747320646520247732252E243F2477343E315B0D0A4162736F72626520247734C2A0706F696E74732064652064C3A967C3A274732E5D5B5D00, 67186), +(3776013982, 221562, 'frFR', 0x00536F756CC3A87665206C61206369626C6520656E6E656D69652064616E73206C657320616972732C20636F6D7072696D6520736120676F7267652061766563206465206CE28099C3A96E6572676965206E6F697265206574206CE28099C3A9746F75726469742070656E64616E742024642E0045746F757264692E00, 67186), +(3776013982, 205630, 'frFR', 0x54616C656E74204A634A00566F75732066616974657320617070656C20C3A0206C61206D616769652064C3A96D6F6E696171756520706F757220C3A97472616E676C6572206C61206369626C652C20636520717569206CE28099C3A9746F757264697420657420696E666C69676520246F34C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D62726520656E2024642074616E74207175E28099656C6C65206573742064616E73206CE28099C3A9747265696E74652E20496C2065737420706F737369626C652064652073652064C3A9706C616365722070656E64616E74206C612063616E616C69736174696F6E2E0D0A0D0A5574696C6973657220C3A0206E6F757665617520456D70726973652064E28099496C6C6964616E2070726F6A65747465206C61206369626C6520C3A020756E20656D706C6163656D656E7420C3A0206D6F696E73206465202432303831373352C2A06D2E00C389746F757264697373656D656E742E20537562697420247734C2A0706F696E74732064652064C3A967C3A274732064E280996F6D62726520746F75746573206C6573202474C2A0732E00, 67186), +(3776013982, 198158, 'frFR', 0x54616C656E74204A634A00566F757320657420766F7320616C6C69C3A97320C3A0206D6F696E7320646520244131C2A06DC3A87472657320646576656E657A20696E7374616E74616EC3A96D656E7420696E76697369626C65732070656E64616E742024642E20546F75746520616374696F6E20616E6E756C65206365742065666665742E00496E76697369626C652E20546F75746520616374696F6E20616E6E756C65206CE2809965666665742E00, 67186), +(3776013982, 108194, 'frFR', 0x00536F756CC3A87665206C61206369626C6520656E6E656D69652064616E73206C657320616972732C20636F6D7072696D6520736120676F7267652061766563206465206CE28099C3A96E6572676965206E6F697265206574206CE28099C3A9746F75726469742070656E64616E742024642E0045746F757264692E00, 67186), +(378810315, 1004, 'frFR', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'frFR', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'frFR', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'frFR', 0x077A03000705000047000000, 67186), +(378810315, 999, 'frFR', 0x530D00000509000049000000, 67186), +(378810315, 998, 'frFR', 0x530D00000509000048000000, 67186), +(378810315, 997, 'frFR', 0x530D00000509000047000000, 67186), +(378810315, 996, 'frFR', 0x78B700000409000049000000, 67186), +(378810315, 995, 'frFR', 0x78B700000409000048000000, 67186), +(378810315, 994, 'frFR', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'frFR', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'frFR', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'frFR', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'frFR', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'frFR', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'frFR', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'frFR', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'frFR', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'frFR', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'frFR', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'frFR', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'frFR', 0x989B12000706000006010000, 67186), +(378810315, 980, 'frFR', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'frFR', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'frFR', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'frFR', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'frFR', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'frFR', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'frFR', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'frFR', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'frFR', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'frFR', 0x713507000505000000010000, 67186), +(378810315, 966, 'frFR', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'frFR', 0x550300000805000046000000, 67186), +(378810315, 964, 'frFR', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'frFR', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'frFR', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'frFR', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'frFR', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'frFR', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'frFR', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'frFR', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'frFR', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'frFR', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'frFR', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'frFR', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'frFR', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'frFR', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'frFR', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'frFR', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'frFR', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'frFR', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'frFR', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'frFR', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'frFR', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'frFR', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'frFR', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'frFR', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'frFR', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'frFR', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'frFR', 0x991503000409000045020000, 67186), +(378810315, 933, 'frFR', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'frFR', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'frFR', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'frFR', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'frFR', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'frFR', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'frFR', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'frFR', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'frFR', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'frFR', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'frFR', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'frFR', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'frFR', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'frFR', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'frFR', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'frFR', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'frFR', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'frFR', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'frFR', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'frFR', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'frFR', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'frFR', 0x42E906000309000009010000, 67186), +(378810315, 902, 'frFR', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'frFR', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'frFR', 0x761800000309000009010000, 67186), +(378810315, 899, 'frFR', 0x76180000030900000A010000, 67186), +(378810315, 898, 'frFR', 0x76180000030900000B010000, 67186), +(378810315, 885, 'frFR', 0x78B700000409000047000000, 67186), +(378810315, 879, 'frFR', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'frFR', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'frFR', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'frFR', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'frFR', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'frFR', 0x980100000905000005010000, 67186), +(378810315, 858, 'frFR', 0x980100000905000004010000, 67186), +(378810315, 855, 'frFR', 0x980100000905000003010000, 67186), +(378810315, 843, 'frFR', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'frFR', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'frFR', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'frFR', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'frFR', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'frFR', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'frFR', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'frFR', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'frFR', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'frFR', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'frFR', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'frFR', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'frFR', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'frFR', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'frFR', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'frFR', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'frFR', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'frFR', 0x027F05000707000003010000, 67186), +(378810315, 720, 'frFR', 0x36A401000707000048000000, 67186), +(378810315, 719, 'frFR', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'frFR', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'frFR', 0x790200000905000046000000, 67186), +(378810315, 714, 'frFR', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'frFR', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'frFR', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'frFR', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'frFR', 0x68F905000605000067000000, 67186), +(378810315, 691, 'frFR', 0x68F905000605000066000000, 67186), +(378810315, 690, 'frFR', 0x68F905000605000069000000, 67186), +(378810315, 682, 'frFR', 0x15A905000705000041020000, 67186), +(378810315, 679, 'frFR', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'frFR', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'frFR', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'frFR', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'frFR', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'frFR', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'frFR', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'frFR', 0x16600500040800003F000000, 67186), +(378810315, 661, 'frFR', 0x16600500040900003E000000, 67186), +(378810315, 658, 'frFR', 0xE53805000209000040000000, 67186), +(378810315, 657, 'frFR', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'frFR', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'frFR', 0x166005000409000040000000, 67186), +(378810315, 648, 'frFR', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'frFR', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'frFR', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'frFR', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'frFR', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'frFR', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'frFR', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'frFR', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'frFR', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'frFR', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'frFR', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'frFR', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'frFR', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'frFR', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'frFR', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'frFR', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'frFR', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'frFR', 0x550300000805000041000000, 67186), +(378810315, 449, 'frFR', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'frFR', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'frFR', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'frFR', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'frFR', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'frFR', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'frFR', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'frFR', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'frFR', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'frFR', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'frFR', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'frFR', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'frFR', 0x57A101000505000067000000, 67186), +(378810315, 408, 'frFR', 0x638400000705000069000000, 67186), +(378810315, 407, 'frFR', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'frFR', 0xE40200000505000069000000, 67186), +(378810315, 402, 'frFR', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'frFR', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'frFR', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'frFR', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'frFR', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'frFR', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'frFR', 0xE77701000605000046000000, 67186), +(378810315, 377, 'frFR', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'frFR', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'frFR', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'frFR', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'frFR', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'frFR', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'frFR', 0x400700000409000004010000, 67186), +(378810315, 353, 'frFR', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'frFR', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'frFR', 0xE60600000605000005010000, 67186), +(378810315, 349, 'frFR', 0xE60600000605000004010000, 67186), +(378810315, 348, 'frFR', 0xE60600000605000003010000, 67186), +(378810315, 346, 'frFR', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'frFR', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'frFR', 0x301E03000509000006010000, 67186), +(378810315, 342, 'frFR', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'frFR', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'frFR', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'frFR', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'frFR', 0x66D401000505000009010000, 67186), +(378810315, 332, 'frFR', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'frFR', 0x981900000605000048000000, 67186), +(378810315, 329, 'frFR', 0x981900000605000049000000, 67186), +(378810315, 224, 'frFR', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'frFR', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'frFR', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'frFR', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'frFR', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'frFR', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'frFR', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'frFR', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'frFR', 0x242303000409000041020000, 67186), +(378810315, 205, 'frFR', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'frFR', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'frFR', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'frFR', 0x242303000409000045020000, 67186), +(378810315, 189, 'frFR', 0x743C03000805000045020000, 67186), +(378810315, 187, 'frFR', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'frFR', 0x36A401000707000049000000, 67186), +(378810315, 176, 'frFR', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'frFR', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'frFR', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'frFR', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'frFR', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'frFR', 0x36A401000707000047000000, 67186), +(378810315, 159, 'frFR', 0x981900000605000047000000, 67186), +(378810315, 158, 'frFR', 0x533301000405000066000000, 67186), +(378810315, 156, 'frFR', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'frFR', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'frFR', 0xA09001000607000066000000, 67186), +(378810315, 152, 'frFR', 0x82020000010B000046000000, 67186), +(378810315, 150, 'frFR', 0x50350300050B000046000000, 67186), +(378810315, 149, 'frFR', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'frFR', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'frFR', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'frFR', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'frFR', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'frFR', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'frFR', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'frFR', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'frFR', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'frFR', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'frFR', 0x62040000060500000B010000, 67186), +(378810315, 121, 'frFR', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'frFR', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'frFR', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'frFR', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'frFR', 0x45990100010B000009010000, 67186), +(378810315, 113, 'frFR', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'frFR', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'frFR', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'frFR', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'frFR', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'frFR', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'frFR', 0x491E03000907000007010000, 67186), +(378810315, 101, 'frFR', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'frFR', 0x301E03000509000008010000, 67186), +(378810315, 97, 'frFR', 0x301E03000509000007010000, 67186), +(378810315, 96, 'frFR', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'frFR', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'frFR', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'frFR', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'frFR', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'frFR', 0x400700000409000005010000, 67186), +(378810315, 83, 'frFR', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'frFR', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'frFR', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'frFR', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'frFR', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'frFR', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'frFR', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'frFR', 0xB63500000707000004010000, 67186), +(378810315, 70, 'frFR', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'frFR', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'frFR', 0x400700000409000003010000, 67186), +(378810315, 63, 'frFR', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'frFR', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'frFR', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'frFR', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'frFR', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'frFR', 0x82020000010B000042000000, 67186), +(378810315, 45, 'frFR', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'frFR', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'frFR', 0x82020000010B000041000000, 67186), +(378810315, 39, 'frFR', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'frFR', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'frFR', 0x790200000905000041000000, 67186), +(378810315, 35, 'frFR', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'frFR', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'frFR', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'frFR', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'frFR', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'frFR', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'frFR', 0xD39603000805000040000000, 67186), +(378810315, 21, 'frFR', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'frFR', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'frFR', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'frFR', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'frFR', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'frFR', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'frFR', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'frFR', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'frFR', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'frFR', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'frFR', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'frFR', 0x52697475616C6973746520646F6D616E61617200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313739317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291859, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313739317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291858, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313739317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291857, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313739317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291856, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313739317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291855, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313739317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291854, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313833317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291853, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313833317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291852, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313833317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291851, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313833317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291850, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313833317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291849, 'frFR', 0x005265737461757265206A75737175E28099C3A020247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E7473206465207669652065742024313239313833317731C2A025206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291848, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291847, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291846, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291845, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291844, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291843, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291842, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291841, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291840, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291839, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291838, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291837, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291831, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E0052656E6420247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1291828, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291827, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291826, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291825, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291824, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291822, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1291791, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E0052656E6420247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1290929, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E0052656E6420247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1290926, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1290925, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1289221, 'frFR', 0x004F757672657A206C6520636F6666726520706F75722064C3A9636F7576726972206365207175E28099696C20636F6E7469656E74C2A0210000, 67186), +(3776013982, 1286537, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E747320646520766965206574206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1286536, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E0052656E6420247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1286535, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1282100, 'frFR', 0x000000, 67186), +(3776013982, 1282018, 'frFR', 0x00496E766F71756520756E2062616E6320737572206C657175656C2073E28099617373656F6972C2A02100416E6E756C657A206CE280996175726120706F75722072656E766F796572206C652062616E632E00, 67186), +(3776013982, 1277461, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E00526573746175726520247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1269922, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1269921, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1269920, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E74732064652076696520706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E74732064652076696520746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1269919, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E00526573746175726520247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1269918, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F757320627576657A2E00526573746175726520247731C2A025206465206D616E6120706172207365636F6E64652E00, 67186), +(3776013982, 1269917, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E747320646520766965206574206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1269916, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E747320646520766965206574206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(3776013982, 1232065, 'frFR', 0x00526573746175726520247331C2A02520646520766F747265206D6178696D756D20646520706F696E747320646520766965206574206465206D616E6120706172207365636F6E646520656E2024642E20566F757320646576657A2072657374657220656E20706F736974696F6E206173736973652070656E64616E742071756520766F7573206D616E67657A2E0052656E6420247331C2A0252064657320706F696E747320646520766965206574206465206D616E6120746F75746573206C6573207365636F6E6465732E00, 67186), +(2948698321, 8059, 'frFR', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'frFR', 0x000000, 67186), +(3898252553, 11633, 'frFR', 0xE28200001E490300, 67186), +(3898252553, 11632, 'frFR', 0xE18200001E490300, 67186), +(3898252553, 11631, 'frFR', 0xE08200001E490300, 67186), +(3898252553, 11630, 'frFR', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'frFR', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'frFR', 0x004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247333C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247334C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247335C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247733C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247734C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247735C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E00, 67186), +(3776013982, 1262377, 'frFR', 0x004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247333C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247334C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247335C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247733C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247734C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247735C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E00, 67186), +(3776013982, 1262376, 'frFR', 0x004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247333C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247334C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247335C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247733C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247734C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247735C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E00, 67186), +(3776013982, 1262365, 'frFR', 0x004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282473352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247333C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282477352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247733C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'frFR', 0x004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282473352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247333C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A4C65206D616E646174206465206D6F72742073616372C3A965206120756E65207472C3A87320666169626C65206368616E63652064E28099C3A96C696D696E6572206C657320616476657273616972657320686F727320626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282477352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247733C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A4C65206D616E646174206465206D6F72742073616372C3A965206120756E65207472C3A87320666169626C65206368616E63652064E28099C3A96C696D696E6572206C657320616476657273616972657320686F727320626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'frFR', 0x004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282473352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247333C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A4C65206D616E646174206465206D6F72742073616372C3A965206120756E65207472C3A87320666169626C65206368616E63652064E28099C3A96C696D696E6572206C657320616476657273616972657320686F727320626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282477352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247733C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A4C65206D616E646174206465206D6F72742073616372C3A965206120756E65207472C3A87320666169626C65206368616E63652064E28099C3A96C696D696E6572206C657320616476657273616972657320686F727320626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'frFR', 0x004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247333C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247334C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247335C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E004CE280996F75766572747572652064E28099756E6520637572696F736974C3A920666F7572766F79C3A96520696E766F71756520756E2066617264656175207375626A756775C3A9207175692076C3A96EC3A8726520636520706572736F6E6E6167652070656E64616E74206C6520636F6D6261742C206C756920636F6E66C3A972616E7420756E65206175676D656E746174696F6E207C322470726920646520247733C2A0252E0D0A0D0A566F757320706F7576657A2061766F6972206A75737175E28099C3A020247734C2A0246C66617264656175207375626A756775C3A93A6661726465617578207375626A756775C3A9733B2073696D756C74616EC3A96D656E742E0D0A417072C3A8732072616C6C69656D656E742064E280996175206D6F696E7320247735C2A0246C666964C3A86C653A666964C3A86C65733B2C206368617175652066617264656175206F6374726F696520646176616E74616765207C32247072692E00, 67186), +(3776013982, 1248927, 'frFR', 0x004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282473352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247333C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033004C6F727371756520766F74726520636F6D7061676E6F6E20646520476F7566667265206C616E63652024407370656C6C6E616D65313235313630332C20756E206D616E6461742073616372C3A920657374206163636F7264C3A920617578206D656D627265732064752067726F7570652C20636F6E66C3A972616E7420C3A0206C6575727320736F72747320657420746563686E6971756573206EC3A966617374657320247B282477352F31303030292A3130307D2E31C2A025206465206368616E6365732064E28099696E666C6967657220247733C2A025206475206D6178696D756D20646520706F696E747320646520766965206465206C61206369626C6520656E2064C3A967C3A274732064752073616372C3A920737570706CC3A96D656E74616972657320706172206D616E6461742E0D0A0D0A4E6520706575742073652070726F6475697265207175E28099756E6520666F697320706172206369626C6520746F75746573206C657320243132363133323470726F63636F6F6C646F776EC2A0732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'frFR', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'frFR', 0x00566F757320646973736970657A206C657320696C6C7573696F6E7320646573206C6575727265732064616E7320756E65207A6F6E652073697475C3A96520646576616E7420766F75732C2063652071756920766F7573207065726D6574206465206C65732072C3A976C3A96C65722E0000, 67186), +(3776013982, 1256862, 'frFR', 0x00566F757320646973736970657A206C657320696C6C7573696F6E7320646573206C6575727265732064616E7320756E65207A6F6E652C2063652071756920766F7573207065726D6574206465206C65732072C3A976C3A96C65722E0000, 67186), +(3776013982, 1256861, 'frFR', 0x00566F757320626F6E64697373657A20657420646973736970657A206C657320696C6C7573696F6E7320646573206C657572726573206175746F757220646520766F74726520706F696E742064E280996174746572726973736167652E0000, 67186), +(3776013982, 1256860, 'frFR', 0x00566F757320646973736970657A206C657320696C6C7573696F6E7320646573206C65757272657320646576616E7420766F75732070656E64616E742024642C2063652071756920766F7573207065726D6574206465206C65732072C3A976C3A96C65722E0000, 67186), +(3776013982, 1256010, 'frFR', 0x00566F757320646973736970657A206C657320696C6C7573696F6E7320646573206C6575727265732064616E7320756E65207A6F6E652C2063652071756920766F7573207065726D6574206465206C65732072C3A976C3A96C65722E0000, 67186), +(1408785804, 249319, 'frFR', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'frFR', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'frFR', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'frFR', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'frFR', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'frFR', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'frFR', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'frFR', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'frFR', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'frFR', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'frFR', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'frFR', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'frFR', 0x000000, 67186), +(3776013982, 1295497, 'frFR', 0x000000, 67186), +(3776013982, 1295486, 'frFR', 0x000000, 67186), +(3776013982, 464291, 'frFR', 0x000000, 67186), +(3776013982, 1243616, 'frFR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'frFR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'frFR', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'frFR', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'frFR', 0x0044C3A967656E7472697573206C616E636520756E2074726169742064E28099C3A96E6572676965206475205669646520696E737461626C6520717569207265626F6E646974207665727320247332C2A0656D706C6163656D656E74732E204C6F7273717565206CE28099C3A96E657267696520746F75636865206C6520736F6C2C20656C6C65206578706C6F736520657420696E666C6967652024313231353135377331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D6272652061757820706572736F6E6E616765732D6A6F756575727320C3A0206D6F696E732064652024313231353135374131C2A06D20647520706F696E742064E28099696D706163742E20536920617563756E20706572736F6E6E6167652D6A6F75657572206EE280996573742064616E73206C61207A6F6E652C2064C3A9636C656E6368652024407370656C6C6E616D65313231353136312E0D0A0D0A417520626F75742064657320247332C2A0696D70616374732C206CE28099C3A96E6572676965207265626F6E64697420C3A0206E6F75766561752C20646576656E616E7420756E652024407370656C6C6E616D65313231353933372E0000, 67186), +(3776013982, 1243588, 'frFR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'frFR', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'frFR', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'frFR', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'frFR', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'frFR', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'frFR', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C72706C6F6E67657572205475E280996E616B69747C6E7C63464646464432303052C3A967696F6EC2A03A207C725A756CE28099416D616E7C6E7C634646464644323030436FC3BB74C2A03A207C7231C2A03030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C72706C6F6E67657572205475E280996E616B69747C6E7C63464646464432303052C3A967696F6EC2A03A207C725A756CE28099416D616E7C6E7C634646464644323030436FC3BB74C2A03A207C7231C2A03030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C72706C6F6E67657572205475E280996E616B69747C6E7C63464646464432303052C3A967696F6EC2A03A207C725A756CE28099416D616E7C6E7C634646464644323030436FC3BB74C2A03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C72706C6F6E67657572205475E280996E616B69747C6E7C63464646464432303052C3A967696F6EC2A03A207C725A756CE28099416D616E7C6E7C634646464644323030436FC3BB74C2A03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C72706C6F6E67657572205475E280996E616B69747C6E7C63464646464432303052C3A967696F6EC2A03A207C725A756CE28099416D616E7C6E7C634646464644323030436FC3BB74C2A03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C72706C6F6E67657572205475E280996E616B69747C6E7C63464646464432303052C3A967696F6EC2A03A207C725A756CE28099416D616E7C6E7C634646464644323030436FC3BB74C2A03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'frFR', 0x00467261707065206C61206369626C652061637475656C6C65206176656320756E6520646F75626C6520656E7461696C6C65207072C3A9636973652E204368617175652066726170706520696E666C6967652024313235373733367331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A27473207068797369717565732C2061696E7369207175652024313235373734357331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064752073616372C3A920246C737570706CC3A96D656E74616972653A737570706CC3A96D656E7461697265733B20746F75746573206C65732024313235373734357431C2A0732070656E64616E74202431323537373435642061757820616476657273616972657320C3A020706F7274C3A9652C206176616E7420646520677261766572206C61206D61727175652024407370656C6C6E616D653132353533313020617520736F6C2E0000, 67186), +(4033975491, 619581, 'frFR', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'frFR', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'frFR', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'frFR', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'frFR', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'frFR', 0x526F75676500243F63315B4C65732064C3A967C3A274732064652044C3A973696E74C3A967726174696F6E206162736F7262656E7420247B2473322F313030307D2E31C2A07320646520536F7566666C652064652066657520737572206C657320706572736F6E6E6167657320616476657273657320746F756368C3A9732065742070726F766F7175656E7420756E65206578706C6F73696F6E20696E666C696765616E7420756E206D6F6E74616E742064652064C3A967C3A2747320C3A967616C20C3A020247334C2A025206465206C61207175616E746974C3A9206162736F7262C3A9652E0D0A0D0A4C65732064C3A967C3A274732064652042C3BB63686572206162736F7262656E7420247B2473332F313030307DC2A07320646520536F7566666C652064652066657520737572206C657320706572736F6E6E6167657320616476657273657320746F756368C3A9732065742070726F766F7175656E7420756E65206578706C6F73696F6E20696E666C696765616E7420756E206D6F6E74616E742064652064C3A967C3A2747320C3A967616C20C3A020247337C2A025206465206C61207175616E746974C3A9206162736F7262C3A9652E5D5B4C657320736F696E732064E28099C389747265696E746520766572646F79616E7465206162736F7262656E7420247B2473352F313030307DC2A07320646520536F7566666C65206F6E69726971756520737572206C657320706572736F6E6E6167657320616C6C69C3A97320746F756368C3A9732065742070726F766F7175656E7420756E65206578706C6F73696F6E206C6575722072656E64616E7420756E206D6F6E74616E7420646520706F696E74732064652076696520C3A967616C20C3A020247336C2A025206465206C61207175616E746974C3A9206162736F7262C3A9652E0D0A0D0A4C657320736F696E732064E2809941726272652064E28099C3A96D657261756465206162736F7262656E7420247B2473312F313030307DC2A07320646520536F7566666C65206F6E69726971756520737572206C657320706572736F6E6E6167657320616C6C69C3A97320746F756368C3A9732065742070726F766F7175656E7420756E65206578706C6F73696F6E206C6575722072656E64616E7420756E206D6F6E74616E7420646520706F696E74732064652076696520C3A967616C20C3A020247336C2A025206465206C61207175616E746974C3A9206162736F7262C3A9652E5D0000, 67186), +(4033975491, 619554, 'frFR', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'frFR', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'frFR', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'frFR', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'frFR', 0x000000, 67186), +(2151089334, 7976, 'frFR', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'frFR', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'frFR', 0x4D61726368657572206475205669646520656666726F7961626C6500000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'frFR', 0x00556E652024407370656C6C6E616D6531323439363039206672617070C3A9652064616E73206C65206D617576616973206F72647265206372C3A96520756E2076616361726D6520726574656E74697373616E742C2072C3A964756973616E74206C61206369626C652061752073696C656E63652070656E64616E742024642E200053696C656E63652E00, 67186), +(3247720076, 42321, 'frFR', 0x0000000000, 67186), +(4033975491, 619506, 'frFR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'frFR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'frFR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'frFR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'frFR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'frFR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'frFR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'frFR', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'frFR', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'frFR', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'frFR', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'frFR', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'frFR', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'frFR', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'frFR', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'frFR', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'frFR', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'frFR', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'frFR', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'frFR', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'frFR', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'frFR', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'frFR', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'frFR', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'frFR', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'frFR', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'frFR', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'frFR', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'frFR', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'frFR', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'frFR', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'frFR', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'frFR', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'frFR', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'frFR', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'frFR', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'frFR', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'frFR', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'frFR', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'frFR', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'frFR', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'frFR', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'frFR', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'frFR', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'frFR', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'frFR', 0x536974652072697475656CC2A03A20706F696E7465206465732044616775C3A96368696E657300556E2072697475656C2064616E6765726575782065737420656E20636F7572732064616E73206C657320656E7669726F6E732E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'frFR', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'frFR', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'frFR', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E6365757365206C6962C3A8726520756E652064C3A96368617267652064E28099C3A96E657267696520617263616E697175652C20696E666C696765616E7420247331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064657320617263616E65732061757820706572736F6E6E616765732D6A6F756575727320C3A0206D6F696E7320646520244131C2A06D2E0000, 67186), +(3776013982, 1295237, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E6365757365206C6962C3A8726520756E652064C3A96368617267652064E28099C3A96E657267696520617263616E697175652C20696E666C696765616E7420247331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064657320617263616E65732061757820706572736F6E6E616765732D6A6F756575727320C3A0206D6F696E7320646520244131C2A06D2E0000, 67186), +(600565378, 632510, 'frFR', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'frFR', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'frFR', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'frFR', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'frFR', 0x00566F757320766F7573207072C3A9706172657A20C3A02064C3A9636F75706572206C61207669616E64652E2054616E742071756520636520706F75766F6972206573742061637469662C20766F7472652070726F636861696E652074656E7461746976652064652064C3A97065C3A7616765206465204D69646E6967687420766F75732070726F63757265726120C3A020636F75702073C3BB72206465206C61207669616E646520706F7576616E7420C3AA7472652063756973696EC3A9652E00412066696E69206465207365207072C3A9706172657220706F75722064C3A9636F75706572206C612070726F636861696E65206372C3A961747572652064C3A9706563C3A965206465204D69646E696768742C207175692070726F63757265726120C3A020636F75702073C3BB72206465206C61207669616E646520706F7576616E7420C3AA7472652063756973696EC3A9652E00, 67186), +(3776013982, 442615, 'frFR', 0x00566F757320766F7573207072C3A9706172657A20C3A02064C3A9636F75706572206C61207669616E64652E2054616E742071756520636520706F75766F6972206573742061637469662C20766F7472652070726F636861696E652074656E7461746976652064652064C3A97065C3A7616765206465204B68617A20416C67617220766F75732070726F63757265726120C3A020636F75702073C3BB72206465206C61207669616E646520706F7576616E7420C3AA7472652063756973696EC3A9652E00412066696E69206465207365207072C3A9706172657220706F75722064C3A9636F75706572206C612070726F636861696E65206372C3A961747572652064C3A9706563C3A965206465204B68617A20416C6761722C207175692070726F63757265726120C3A020636F75702073C3BB72206465206C61207669616E646520706F7576616E7420C3AA7472652063756973696EC3A9652E00, 67186), +(3386943305, 23675, 'frFR', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'frFR', 0x506F727465206465732064C3A96D6F6E7300000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'frFR', 0x00566F7573207175697474657A206C6120706C6F6E67C3A9652070686173697175652E0000, 67186), +(3776013982, 1241218, 'frFR', 0x000000, 67186), +(2575642838, 749, 'frFR', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'frFR', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'frFR', 0x0052656E666F7263656D656E7420706172206C61207072C3A973656E63652064E28099756E206164766572736169726520706C7573207265646F757461626C652C2072656E766F696520247731C2A025206465732064C3A967C3A27473206175206C616E63657572206F7520C3A0206C61206C616E63657573652E0052656E666F7263656D656E7420706172206C61207072C3A973656E63652064E28099756E206164766572736169726520706C7573207265646F757461626C652C2072656E766F696520247731C2A025206465732064C3A967C3A27473206175206C616E63657572206F7520C3A0206C61206C616E63657573652E0D0A0D0A52656E666F7263656D656E7420706172C2A03A243F24575332383330375B5D5B0D0AE280932024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0AE280932024407370656C6C69636F6E3132383230343220726F692064C3A96368752053616C6861646161725D00, 67186), +(3425193231, 546424, 'frFR', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'frFR', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'frFR', 0x000000, 67186), +(600565378, 664416, 'frFR', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'frFR', 0x00456E6368616E746520756E206F7574696C206465206DC3A974696572206465206D616E69C3A87265207065726D616E656E74652061766563206CE2809961647265737365206465732053696EE28099646F7265692E204175676D656E746520766F747265204164726573736520646520246563312E204E65207065757420C3AA747265206170706C697175C3A92073757220646573206F626A6574732064E28099756E206E697665617520737570C3A9726965757220C3A02024656369782E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A54616C656E7473207468616C61737369656E7320E28093207175616C6974C3A9206465205175656CE280995468616C61737C52200000, 67186), +(261693969, 93049, 'frFR', 0xFFFFFFFFFFFFFFFF4169646520617578206465766F6972730000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'frFR', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'frFR', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'frFR', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'frFR', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'frFR', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'frFR', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'frFR', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'frFR', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'frFR', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'frFR', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'frFR', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'frFR', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'frFR', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'frFR', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'frFR', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'frFR', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'frFR', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'frFR', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'frFR', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'frFR', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'frFR', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'frFR', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'frFR', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'frFR', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'frFR', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'frFR', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'frFR', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'frFR', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'frFR', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'frFR', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'frFR', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'frFR', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'frFR', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'frFR', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'frFR', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'frFR', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'frFR', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'frFR', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'frFR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'frFR', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'frFR', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'frFR', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'frFR', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'frFR', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'frFR', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'frFR', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'frFR', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'frFR', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'frFR', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'frFR', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'frFR', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'frFR', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'frFR', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'frFR', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'frFR', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'frFR', 0x00566F7573207072656E657A20756E652063616E6E6520C3A02070C3AA6368652065742074726F7576657A20756E20706F696E742064E2809965617520706F75722070C3AA636865722E20436C697175657A2061766563206C6520626F75746F6E2064726F6974206465206C6120736F7572697320737572206C6520666C6F7474657572206C6F72737175E28099696C2073E28099656E666F6E6365206166696E2064E28099617474726170657220766F74726520706F6973736F6E2E20556E6520636F6D70C3A974656E636520C3A96C6576C3A965206175676D656E746520766F73206368616E6365732064E28099617474726170657220647520706F6973736F6E2064616E73206C6573207A6F6E65732064652068617574206E69766561752E0000, 67186), +(3776013982, 1286820, 'frFR', 0x000000, 67186), +(3776013982, 1286703, 'frFR', 0x00566F7573207072656E657A20756E652063616E6E6520C3A02070C3AA6368652065742074726F7576657A20756E20706F696E742064E2809965617520706F75722070C3AA636865722E20436C697175657A2061766563206C6520626F75746F6E2064726F6974206465206C6120736F7572697320737572206C6520666C6F7474657572206C6F72737175E28099696C2073E28099656E666F6E6365206166696E2064E28099617474726170657220766F74726520706F6973736F6E2E20556E6520636F6D70C3A974656E636520C3A96C6576C3A965206175676D656E746520766F73206368616E6365732064E28099617474726170657220647520706F6973736F6E2064616E73206C6573207A6F6E65732064652068617574206E69766561752E0000, 67186), +(3776013982, 1253159, 'frFR', 0x000000, 67186), +(3359787322, 29615, 'frFR', 0xAF730000, 67186), +(3031818311, 9590, 'frFR', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'frFR', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'frFR', 0xE87A0000, 67186), +(3776013982, 1277169, 'frFR', 0x004F757672697220706F7572206F6274656E6972203130C2A0C3A9637573206465206CE28099617562652068C3A9726FC3AF71756573206574206D79746869717565732E0000, 67186), +(3776013982, 1243683, 'frFR', 0x004F6274656E657A203130C2A0C3A9637573206465206CE2809961756265206D79746869717565732E0000, 67186), +(3776013982, 190784, 'frFR', 0x00566F757320626F6E64697373657A20737572206C6520646F7320646520766F7472652064657374726965722070656E64616E742024323231383833642C20636520717569206175676D656E7465206C6120766974657373652064652064C3A9706C6163656D656E7420646520243232313838337334252E205574696C697361626C6520656E20696E74C3A97269657572206F752070656E64616E7420756E20636F6D6261742E0000, 67186), +(4033975491, 619076, 'frFR', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'frFR', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'frFR', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'frFR', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'frFR', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'frFR', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'frFR', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'frFR', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'frFR', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'frFR', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'frFR', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'frFR', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'frFR', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'frFR', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'frFR', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'frFR', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'frFR', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'frFR', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'frFR', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'frFR', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'frFR', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'frFR', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'frFR', 0x1100E18B0000, 67186), +(184881520, 18405, 'frFR', 0x0F00FC890000, 67186), +(184881520, 18404, 'frFR', 0x0E00FC890000, 67186), +(184881520, 18403, 'frFR', 0xDC00F9890000, 67186), +(184881520, 18245, 'frFR', 0x1100F9890000, 67186), +(184881520, 18244, 'frFR', 0x0F00F9890000, 67186), +(2575642838, 750, 'frFR', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'frFR', 0x000000, 67186), +(3776013982, 1266413, 'frFR', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'frFR', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'frFR', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'frFR', 0x496E6772C3A96469656E742073656372657400F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'frFR', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'frFR', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'frFR', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'frFR', 0x00566F7573206C616E63657A20756E652073C3A972696520646520636F757073207072C3A9636973206574207075697373616E747320737572206C61206369626C652C20636520717569206C756920696E666C69676520247B2434343038383473312B2434343038383673312B2434343038383873317DC2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732C206574202434343038383873312061757820616476657273616972657320C3A0206D6F696E7320646520243434303838384131C2A06D2064E28099656C6C652E2044C3A967C3A274732072C3A964756974732061752D64656CC3A020646520247331C2A06369626C65732E0D0A0D0A4C6F727371756520766F75732063616E616C6973657A2044C3A96D6F6C6973736167652C206C65732064C3A967C3A2747320737562697320736F6E742072C3A9647569747320646520247334C2A02520657420766F757320C3AA74657320696E73656E7369626C6520617578206566666574732064E28099C3A9746F757264697373656D656E742C206465207265706F757373656D656E742065742064652064C3A9706C6163656D656E7420666F7263C3A92E0D0A0D0A566F757320706F7576657A20626C6F717565722C2070617265722C206573717569766572206574207574696C69736572206365727461696E657320746563686E69717565732064C3A966656E736976657320656E2063616E616C6973616E7420636574746520746563686E697175652E0000, 67186), +(3776013982, 1292071, 'frFR', 0x004C657320706572736F6E6E6167657320616476657273657320746F756368C3A97320706172206CE280996F6E646520646520666F726365206465205068616C616E676520766F757320696E666C6967656E7420247B2473312F2D317D2E31C2A0252064652064C3A967C3A2747320656E206D6F696E732070656E64616E742024642E0D0A00496E666C696765206465732064C3A967C3A274732072C3A9647569747320646520247B2457312F2D317D2E31C2A02520C3A0202440617572616361737465722E00, 67186), +(3266400455, 1570155, 'frFR', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'frFR', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'frFR', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'frFR', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'frFR', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'frFR', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'frFR', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'frFR', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'frFR', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'frFR', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'frFR', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'frFR', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'frFR', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'frFR', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'frFR', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'frFR', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'frFR', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'frFR', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'frFR', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'frFR', 0x170B3D160100, 67186), +(1734738485, 9018, 'frFR', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'frFR', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'frFR', 0x00496D7072C3A8676E6520766F7472652061726D7572652064E28099756E20666169626C6520C3A963686F20647520507569747320646520736F6C65696C2C206365207175692064C3A9626C6F71756520646573206566666574732076697375656C7320737570706CC3A96D656E74616972657320706F7572206365727461696E7320656E73656D626C657320646520636C61737365206465206C6120736169736F6EC2A031206465204D69646E696768742E0D0A0D0A4365742065666665742073E280996170706C6971756520C3A020746F7574206C652062617461696C6C6F6E2E0000, 67186), +(3776013982, 1273357, 'frFR', 0x00496D7072C3A8676E6520766F7472652061726D7572652064E28099756E20666169626C6520C3A963686F20647520507569747320646520736F6C65696C2C206365207175692064C3A9626C6F71756520646573206566666574732076697375656C7320737570706CC3A96D656E74616972657320706F7572206365727461696E7320656E73656D626C657320646520636C61737365206465206C6120736169736F6EC2A031206465204D69646E696768742E0D0A0D0A4365742065666665742073E280996170706C6971756520C3A020746F7574206C652062617461696C6C6F6E2E0000, 67186), +(4167587713, 4140, 'frFR', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'frFR', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E536920766F75732070617373657A206175206D6F696E73203130C2A07320C3A0206D616E6765722C20766F7573206F627469656E6472657A206CE2809965666665742024407370656C6C6E616D653435373034392065742062C3A96EC3A9666963696572657A2064E28099756E20626F6E7573206465202431323139313739733720C3A0206CE28099456E647572616E6365206574206465202431323139313739733220C3A020766F74726520636172616374C3A97269737469717565207072696E636970616C652070656E64616E742024642E00436172616374C3A97269737469717565207072696E636970616C65206175676D656E74C3A96520646520247731312E00, 67186), +(3776013982, 1294726, 'frFR', 0x000000, 67186), +(3776013982, 1294720, 'frFR', 0x00546972652073757220756E20656E6E656D69206574206C756920696E666C696765206465732064C3A967C3A27473207068797369717565732E0000, 67186), +(3776013982, 1294703, 'frFR', 0x00546972652073757220756E20656E6E656D69206574206C756920696E666C696765206465732064C3A967C3A27473207068797369717565732E0000, 67186), +(3776013982, 1294669, 'frFR', 0x004C61206372C3A9617475726520766F7573206368617267652E004C61206372C3A9617475726520766F7573206368617267652E00, 67186), +(3776013982, 1294633, 'frFR', 0x004C65206C616E63657572206F75206C61206C616E6365757365206372616368652064657320626F756C6573206465206665752073757220756E20706572736F6E6E6167652D6A6F756575722070656E64616E742024642C206C756920696E666C696765616E742024313236363734357331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064652066657520746F75746573206C657320247431C2A0732E00496E666C6967652024313236363734357331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064652066657520746F75746573206C657320247431C2A0732E00, 67186), +(3776013982, 1294563, 'frFR', 0x000000, 67186), +(3776013982, 1277795, 'frFR', 0x00566F757320646973736970657A206C657320696C6C7573696F6E7320646573206C6575727265732064616E7320756E65207A6F6E652073697475C3A96520646576616E7420766F75732C2063652071756920766F7573207065726D6574206465206C65732072C3A976C3A96C65722E0000, 67186), +(3776013982, 1272179, 'frFR', 0x00416368657461626C6520656E206D61676173696E2E0D0A0D0A24407370656C6C646573633132353631373100566F757320766F757320C3AA74657320666169742061766F6972206176616E742064652072C3A9757373697220C3A020617474726170657220766F747265206369626C652E00, 67186), +(3776013982, 1269655, 'frFR', 0x00416368657461626C6520656E206D61676173696E2E0D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'frFR', 0x00416368657461626C6520656E206D61676173696E2E0D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'frFR', 0x00416368657461626C6520656E206D61676173696E2E0D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'frFR', 0x00416368657461626C6520656E206D61676173696E2E0D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'frFR', 0x00416368657461626C6520656E206D61676173696E2E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'frFR', 0x00566F757320C3A96368616E67657A20766F74726520706C616365206176656320756E20C3A96CC3A96D656E742064652064C3A9636F726174696F6E2070726F6368652E0000, 67186), +(3776013982, 1259647, 'frFR', 0x0024407370656C6C64657363343532393933004CE2809965787069726174696F6E206465732065666665747320646573207265706173206E6F757272697373616E74732C20666C61737175657320657420666C61636F6E73206465204D69646E696768742065737420696E746572726F6D7075652E00, 67186), +(3776013982, 1258362, 'frFR', 0x000D0A7C43464666666666666654656D70732064E28099696E63616E746174696F6EC2A03A20312C35C2A0732E0D0A54656D7073206465207265636861726765206475207069C3A86765C2A03A2035C2A0732E7C520D0A0D0A536920617563756E206C696D696572206EE28099657374207072C3A973656E742064616E7320756E207261796F6E206465202452C2A06D2C20766F7573206C616E63657A20756E20636F6E74656E6575722064652024407370656C6C6E616D65313235383335382064616E7320756E207261796F6E206465202472616431C2A06D20646520766F74726520706F736974696F6E2061637475656C6C652E0D0A0D0A5369206175206D6F696E7320756E206C696D69657220657374207072C3A973656E742064616E7320756E207261796F6E206465202452C2A06D2C20766F7573206C616E63657A20756E20636F6E74656E6575722064652024407370656C6C6E616D6531323538333538207072C3A873206475206C696D696572206C6520706C75732070726F63686520646520766F75732E0D0A0D0A7C43464637316435666652656D6172717565C2A03A7C52207C43464664396663666664616E73206C657320616972732C206C657320636F6E74656E65757273206E6520736F6E74207061732076697369626C657320706172206C6573206C696D696572732E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D6531323538333538C2A03A0D0A24407370656C6C64657363313235383335380D0A0D0A7C4346466230623062304365206EE2809965737420706575742DC3AA74726520706173206C6120646976657273696F6E206C6120706C7573206F726967696E616C652C206D61697320706172666F69732C206C6120766963746F697265207469656E7420C3A0207065752064652063686F7365732E7C520000, 67186), +(3776013982, 1256009, 'frFR', 0x00566F757320646973736970657A206C657320696C6C7573696F6E7320646573206C6575727265732064616E7320756E65207A6F6E652073697475C3A96520646576616E7420766F75732C2063652071756920766F7573207065726D6574206465206C65732072C3A976C3A96C65722E0000, 67186), +(3776013982, 1251813, 'frFR', 0x004C652066616E74C3B46D652063726965206C6F72737175E28099696C20657374207475C3A92C20696E666C696765616E7420247331C2A0246C706F696E743A706F696E74733B2064652064C3A967C3A274732064E280996F6D62726520C3A0206CE28099656E73656D626C652064657320706572736F6E6E616765732D6A6F75657572732E0000, 67186), +(1010104591, 22988, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C724C7972656E64616C7C6E7C63464646464432303052C3A967696F6EC2A03A207C724C756E652D64E28099417267656E747C6E7C634646464644323030436FC3BB74C2A03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E64657572C2A03A207C7259617468656F6E7C6E7C63464646464432303052C3A967696F6EC2A03A207C724C756E652D64E28099417267656E747C6E7C634646464644323030436FC3BB74C2A03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'frFR', 0x7C63464646464432303056656E64657572C2A03A207C724C7972656E64616C7C6E7C63464646464432303052C3A967696F6EC2A03A207C724C756E652D64E28099417267656E747C6E7C634646464644323030436FC3BB74C2A03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C63464646464432303056656E64657572C2A03A207C7259617468656F6E7C6E7C63464646464432303052C3A967696F6EC2A03A207C724C756E652D64E28099417267656E747C6E7C634646464644323030436FC3BB74C2A03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'frFR', 0x7C6346464646443230305370C3A96369616C69736174696F6EC2A03A207C726D6F62696C6974C3A9206465206D61726368C3A920E28093206163636573736F69726573206465206D696E6167657C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'frFR', 0x7C6346464646443230304D61C3AE747265206F75206D61C3AE747265737365206465206DC3A974696572C2A03A207C72696E67C3A96E6965726965206465204D69646E6967687420283335297C6E7C634646464644323030436FC3BB74C2A03A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'frFR', 0x7C6346464646443230305370C3A96369616C69736174696F6EC2A03A207C726D6F62696C6974C3A9206465206D61726368C3A920E28093206163636573736F697265732064E28099696E67C3A96E69657269657C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'frFR', 0xFFFFFFFFFFFFFFFF4CE28099417263616E74696E61000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'frFR', 0xFFFFFFFFFFFFFFFF4A75737465207265636F6E6E61697373616E636500001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'frFR', 0x556E206F626A6574207261726520706F7576616E742072656D626F75727365722064657320636F6D706F73616E747320617072C3A873206C61206661627269636174696F6E2E7C6E7C6E566F7573206761676E657A2024657631C2A024656E3120706F7572206365747465206661627269636174696F6E2E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'frFR', 0x4175676D656E746520766F73206368616E6365732064652072656D626F757273656D656E7420646520636F6D706F73616E747320617072C3A873206C61206661627269636174696F6E2E7C6E7C6E566F7573206761676E657A2024657631C2A024656E3120706F7572206365747465206661627269636174696F6E2E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'frFR', 0x556E6520637572696F736974C3A92064696D656E73696F6E6E656C6C652071756920657374206173737572C3A9652064E2809961626F7574697220C3A020756E2072C3A973756C746174206465206661627269636174696F6E20737570706CC3A96D656E74616972652E7C6E7C6E566F7573206761676E657A2024657631C2A024656E3120706F7572206365747465206661627269636174696F6E2E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'frFR', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500566F7573206176657A207574696C6973C3A9206C65206E6F6D627265206D6178696D756D2064652053C3A973616D6573206175746F726973C3A920706172206A6F75722E20566575696C6C657A2072C3A9657373617965722064656D61696E2E0003000000, 67186), +(3205218938, 58259, 'frFR', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F67657374696F6E6E61697265646574656D7073646572656368617267650001000000, 67186), +(3205218938, 58258, 'frFR', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F6774720001000000, 67186), +(3205218938, 55299, 'frFR', 0x4A4F55524E4559535F43555252454E545F50524F4752455353004176616E63C3A965C2A03A207C636E484947484C494748545F464F4E545F434F4C4F523A25642F25647C720001000000, 67186), +(3205218938, 49471, 'frFR', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F4752455353004176616E63656D656E74C2A03A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'frFR', 0x000000, 67186), +(3776013982, 1294759, 'frFR', 0x000000, 67186), +(2921112328, 568649, 'frFR', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'frFR', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'frFR', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'frFR', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'frFR', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'frFR', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'frFR', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'frFR', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'frFR', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'frFR', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'frFR', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'frFR', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'frFR', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'frFR', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'frFR', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='frFR') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='frFR') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='frFR') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='frFR') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x54726171756500C3896C696D696E657A206465207075697373616E747320616476657273616972657320706F757220616C696D656E746572206C657320616D626974696F6E732064E28099417374616C6F722E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x00556E65206465726E69C3A8726520C3A974696E63656C6C6520736520636F6E73756D652064616E73206C61206E756974206E6F6972652E004861726469657373652E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='frFR'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF50617320646520727974686D652064616E73206C6120706561750000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='frFR'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'frFR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='frFR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='frFR'); From 85be9a9f366c0a6aa0b12d884b7cc78cbd98da73 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:19:26 +0200 Subject: [PATCH 104/175] DB/Hotfixes: Updated itIT hotfixes to 12.0.5.67186 --- .../master/2026_04_29_05_hotfixes_itIT.sql | 2744 +++++++++++++++++ 1 file changed, 2744 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_05_hotfixes_itIT.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_05_hotfixes_itIT.sql b/sql/updates/hotfixes/master/2026_04_29_05_hotfixes_itIT.sql new file mode 100644 index 0000000000000..f3edf56c69d99 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_05_hotfixes_itIT.sql @@ -0,0 +1,2744 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'itIT', 'Compi tutte le imprese dei Pescatori dell\'Abisso elencate.', 'Pescatori dell\'Abisso: rivale per Jeju', '', 67186), +(61883, 'itIT', 'Non farti toccare durante il primo minuto di Duello di Decorazioni (x3).', 'Ora non mi vedi...', '', 67186), +(61887, 'itIT', 'Completa tutte le imprese di Duello di Decorazioni.', 'Nascosti di tutto punto', '', 67186), +(61886, 'itIT', 'Sblocca l\'accesso a tutti i potenziamenti in Duello di Decorazioni.', 'Pacchetto completo', '', 67186), +(61882, 'itIT', 'Perdi lo stato Stanato senza farti toccare in Duello di Decorazioni.', 'Elusione totale', '', 67186), +(61881, 'itIT', 'Sii l\'ultimo a non farti toccare come Nascosto della tua squadra in Duello di Decorazioni.', 'Nascosto e introvabile', '', 67186), +(61880, 'itIT', 'Nasconditi e non farti trovare per un minuto e mezzo consecutivo in Duello di Decorazioni.', 'Fa freddo qui all\'ombra', '', 67186), +(61879, 'itIT', 'Vinci un round come Cercatore dopo aver toccato tutti i Nascosti entro due minuti in Duello di Decorazioni.', 'Ti ho preso', '', 67186), +(61878, 'itIT', 'Tocca un personaggio avversario come Guardaboschi Arcano in Duello di Decorazioni.', 'Messo nel sacco', '', 67186), +(61793, 'itIT', 'Tocca un personaggio avversario come Nullificatore in Duello di Decorazioni.', 'Schierato verso il Vuoto', '', 67186), +(61792, 'itIT', 'Tocca un personaggio avversario come Spezzamagie in Duello di Decorazioni.', 'Ti ho beccato!', '', 67186), +(63263, 'itIT', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'itIT', 'Ottieni un Punteggio Mitica+ di almeno 3.400 durante la Stagione 1 di Midnight.', 'Mito delle Chiavi di Midnight: Stagione 1', 'Titolo: il Contendente Ombrale e Oggetto: Sella Senza Tempo', 67186), +(61594, 'itIT', 'Completa una spedizione Mitica+ nella Vetta dei Cieli con il miglior tempo della regione.', 'Vincitore delle Chiavi: Vetta dei Cieli', '', 67186), +(61593, 'itIT', 'Completa una spedizione Mitica+ nel Seggio del Triumvirato con il miglior tempo della regione.', 'Vincitore delle Chiavi: Seggio del Triumvirato', '', 67186), +(61592, 'itIT', 'Completa una spedizione Mitica+ nella Fossa di Saron con il miglior tempo della regione.', 'Vincitore delle Chiavi: Fossa di Saron', '', 67186), +(61591, 'itIT', 'Completa una spedizione Mitica+ nell\'Accademia di Algeth\'ar con il miglior tempo della regione.', 'Vincitore delle Chiavi: Accademia di Algeth\'ar', '', 67186), +(61590, 'itIT', 'Completa una spedizione Mitica+ nel Pinnacolo dei Ventolesto con il miglior tempo della regione.', 'Vincitore delle Chiavi: Pinnacolo dei Ventolesto', '', 67186), +(61589, 'itIT', 'Completa una spedizione Mitica+ nella Punta del Nexus Xenas con il miglior tempo della regione.', 'Vincitore Eroe delle Chiavi: Punta del Nexus Xenas', '', 67186), +(61588, 'itIT', 'Completa una spedizione Mitica+ nelle Caverne di Maisara con il miglior tempo della regione.', 'Vincitore delle Chiavi: Caverne di Maisara', '', 67186), +(61587, 'itIT', 'Completa una spedizione Mitica+ nella Terrazza dei Magistri con il miglior tempo della regione (Midnight).', 'Vincitore delle Chiavi: Terrazza dei Magistri (Midnight)', '', 67186), +(61259, 'itIT', 'Termina la Stagione 1 delle Mitiche+ di Midnight con un Punteggio Mitica+ tra i primi 0,1% di tutti i giocatori nella tua regione.', 'Eroe Ombrale: Stagione 1 di Midnight', 'Titolo: l\'Eroe Ombrale', 67186), +(61253, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 30 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 30', 'Le Chiavi del Potere non scenderanno al di sotto del livello 30 durante la Stagione 1 di Midnight.', 67186), +(61252, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 29 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 29', 'Le Chiavi del Potere non scenderanno al di sotto del livello 29 durante la Stagione 1 di Midnight.', 67186), +(61251, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 28 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 28', 'Le Chiavi del Potere non scenderanno al di sotto del livello 28 durante la Stagione 1 di Midnight.', 67186), +(61250, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 27 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 27', 'Le Chiavi del Potere non scenderanno al di sotto del livello 27 durante la Stagione 1 di Midnight.', 67186), +(61249, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 26 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 26', 'Le Chiavi del Potere non scenderanno al di sotto del livello 26 durante la Stagione 1 di Midnight.', 67186), +(61248, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 25 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 25', 'Le Chiavi del Potere non scenderanno al di sotto del livello 25 durante la Stagione 1 di Midnight.', 67186), +(61247, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 24 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 24', 'Le Chiavi del Potere non scenderanno al di sotto del livello 24 durante la Stagione 1 di Midnight.', 67186), +(61246, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 23 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 23', 'Le Chiavi del Potere non scenderanno al di sotto del livello 23 durante la Stagione 1 di Midnight.', 67186), +(61245, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 22 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 22', 'Le Chiavi del Potere non scenderanno al di sotto del livello 22 durante la Stagione 1 di Midnight.', 67186), +(61244, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 21 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 21', 'Le Chiavi del Potere non scenderanno al di sotto del livello 21 durante la Stagione 1 di Midnight.', 67186), +(61243, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 20 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 20', 'Le Chiavi del Potere non scenderanno al di sotto del livello 20 durante la Stagione 1 di Midnight.', 67186), +(61242, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 19 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 19', 'Le Chiavi del Potere non scenderanno al di sotto del livello 19 durante la Stagione 1 di Midnight.', 67186), +(61241, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 18 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 18', 'Le Chiavi del Potere non scenderanno al di sotto del livello 18 durante la Stagione 1 di Midnight.', 67186), +(61240, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 17 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 17', 'Le Chiavi del Potere non scenderanno al di sotto del livello 17 durante la Stagione 1 di Midnight.', 67186), +(61239, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 16 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 16', 'Le Chiavi del Potere non scenderanno al di sotto del livello 16 durante la Stagione 1 di Midnight.', 67186), +(61237, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 15 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 15', 'Le Chiavi del Potere non scenderanno al di sotto del livello 15 durante la Stagione 1 di Midnight.', 67186), +(61236, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 14 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 14', 'Le Chiavi del Potere non scenderanno al di sotto del livello 14 durante la Stagione 1 di Midnight.', 67186), +(61235, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 13 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 13', 'Le Chiavi del Potere non scenderanno al di sotto del livello 13 durante la Stagione 1 di Midnight.', 67186), +(61233, 'itIT', 'Completa tutte le spedizioni Mitiche+ entro il tempo limite con una Chiave del Potere di livello 12 durante la Stagione 1 di Midnight.', 'Stagione 1 di Midnight: Chiave del Potere Resiliente 12', 'Le Chiavi del Potere non scenderanno al di sotto del livello 12 durante la Stagione 1 di Midnight.', 67186), +(12009, 'itIT', 'Sconfiggi L\'ura al Seggio del Triumvirato con tutti i personaggi affetti da Oscurità Devastante in modalità Mitica.', 'Il lato più oscuro', '', 67186), +(12005, 'itIT', 'Fai in modo che Zannacupa distrugga 4 Globi del Vuoto Sigillati usando Agguato dell\'Ombra e sconfiggi Saprish al Seggio del Triumvirato in modalità Mitica.', 'Uno sfogo necessario', '', 67186), +(12004, 'itIT', 'Evoca Urjad dal Reame del Vuoto tramite Squarcio del Vuoto, quindi sconfiggi lui e Zuraal l\'Asceso al Seggio del Triumvirato in modalità Mitica.', 'Benvenuti nel Vuoto', '', 67186), +(9036, 'itIT', 'Sconfiggi l\'Alta Saggia Viryx a Vetta dei Cieli in modalità Eroica senza uccidere alcun Costrutto dello Scudo.', 'Monomania', '', 67186), +(9035, 'itIT', 'Durante lo scontro con Rukhran a Vetta dei Cieli in modalità Eroica, fai in modo che tre Pile di Cenere diano vita a delle Fenici Infuocate contemporaneamente.', 'Tre soli', '', 67186), +(9034, 'itIT', 'Sconfiggi il Costrutto Potenziato a Vetta dei Cieli in modalità Eroica.', 'Ingrandire e potenziare', '', 67186), +(9033, 'itIT', 'Sconfiggi Ranjit a Vetta dei Cieli in modalità Eroica senza subire danni dalle seguenti abilità: Lama Volteggiante, Muro di Lame Ventose, Quattro Venti e Chiarore.', 'Pronto per le incursioni IV', '', 67186), +(4525, 'itIT', 'Supera il tunnel che conduce al Signore della Piaga Tirannus nella Fossa di Saron in modalità Eroica al primo tentativo senza che alcun giocatore subisca danni dalle stalattiti.', 'Non guardare in alto', '', 67186), +(4524, 'itIT', 'Sconfiggi il Mastro Forgiatore Gargelo nella Fossa di Saron in modalità Eroica prima che qualunque giocatore raggiunga 11 accumuli di Permagelo.', 'Rivoluzione numero 11', '', 67186), +(62814, 'itIT', '', '', '', 67186), +(62813, 'itIT', '', '', '', 67186), +(62812, 'itIT', '', '', '', 67186), +(62811, 'itIT', '', '', '', 67186), +(62296, 'itIT', '', 'Emblemi dell\'Alba del Mito ottenuti', '', 67186), +(42769, 'itIT', 'Rendi gli Emblemi dell\'Alba dell\'Eroe obsoleti durante la Stagione 1 di Midnight.', 'Eroe dell\'Alba', 'Sblocco del personaggio: scambia Emblemi dell\'Alba dell\'Eroe con Emblemi dell\'Alba del Mito', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Cattura 3 volte una creatura Mitica nelle immersioni con i Pescatori dell\'Abisso.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Ottieni 250.000 punti in immersioni cumulative con i Pescatori dell\'Abisso.', `Reward_lang`='Ricompensa: ottieni un avventuroso compagno di immersioni', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura 100 pesci durante le immersioni con i Pescatori dell\'Abisso.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Usa l\'abilità Superficie! durante un\'immersione con i Pescatori dell\'Abisso quando ti restano meno di 10 secondi di fiato.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Fatti rimuovere forzatamente durante un\'immersione con i Pescatori dell\'Abisso mentre provi a nuotare oltre la fossa.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='Ricompensa: Idolo delle Profondità sbloccato per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Trova 10 Reliquie Antiche durante le immersioni con i Pescatori dell\'Abisso e ottieni il potenziamento Rete da Secche.', `Reward_lang`='Ricompensa: Rete a Triplo Filo sbloccata per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Trova 50 Reliquie Sommerse durante le immersioni con i Pescatori dell\'Abisso.', `Reward_lang`='Ricompensa: Rete da Secche sbloccata per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura ciascuna creatura elencata di seguito durante le immersioni con i Pescatori dell\'Abisso e ottieni la Bombola Testata in Profondità.', `Reward_lang`='Ricompensa: Bombola del Respiro di Nalorakk sbloccata per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura ciascuna creatura elencata di seguito durante le immersioni con i Pescatori dell\'Abisso e ottieni il potenziamento Bombola Usata del Sommozzatore.', `Reward_lang`='Ricompensa: Bombola Testata in Profondità sbloccata per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura ciascuna creatura elencata di seguito durante le immersioni con i Pescatori dell\'Abisso.', `Reward_lang`='Ricompensa: Bombola Usata del Sommozzatore sbloccata per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura almeno 500 pesci nelle immersioni con i Pescatori dell\'Abisso e ottieni il potenziamento Lubrificante delle Profondità.', `Reward_lang`='Ricompensa: Pinne della Fossa di Pahk sbloccate per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura almeno 25 pesci in una singola immersione con i Pescatori dell\'Abisso e ottieni il potenziamento Giunti Rinforzati.', `Reward_lang`='Ricompensa: Grasso delle Profondità sbloccato per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='itIT'); +UPDATE `achievement_locale` SET `Description_lang`='Cattura almeno 3 pesci durante le immersioni con i Pescatori dell\'Abisso.', `Reward_lang`='Ricompensa: Giunti Rinforzati sbloccati per l\'acquisto presso il Sommozzatore Jeju', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='itIT'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='itIT'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'itIT', 'Un vero Pescatore dell\'Abisso, certificato dal Sommozzatore Jeju in persona.', '|cFFFFD200Mercante: |rSommozzatore Tu\'nakit|n|cFFFFD200Zona: |rZul\'aman|n|cFFFFD200Costo: |r2.400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'itIT', 'Quale statistica vorresti misurare?', 'Quale statistica vorresti misurare?', 67186), +(289969, 'itIT', 'Ho già perso fin troppi dei miei per colpa del Patto d\'Argento.\n\nEra la guerra, dicono. Ci sono state perdite da entrambe le parti, dicono. I miei Predatori del Sole non hanno mai epurato nessuno da Dalaran.\n\nUna Ventolesto ha pagato per aver epurato una città. L\'altra è davanti a me, oggi.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'itIT', 'Devastatore del Vuoto %s', 'Devastatrice del Vuoto %s', 67186), +(1307, 'itIT', '%s, il Contendente Ombrale', '%s, la Contendente Ombrale', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'itIT', '', 67186), +(62821, 'itIT', '', 67186), +(62820, 'itIT', '', 67186), +(62819, 'itIT', '', 67186), +(62818, 'itIT', '', 67186), +(62817, 'itIT', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'itIT', 'Colore', 67186), +(8959, 'itIT', 'Tatuaggio', 67186), +(8958, 'itIT', 'Benda', 67186), +(8957, 'itIT', 'Corna', 67186), +(8956, 'itIT', 'Colore', 67186), +(8955, 'itIT', 'Tatuaggio', 67186), +(8954, 'itIT', 'Benda', 67186), +(8953, 'itIT', 'Corna', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'itIT', '', 67186), +(224842, 'itIT', 'Duelli di Decorazioni completati', 67186), +(224840, 'itIT', 'Duelli di Decorazioni completati', 67186), +(224838, 'itIT', 'Duelli di Decorazioni completati', 67186), +(223318, 'itIT', 'Pescatori dell\'Abisso: meraviglie ittiche (3 creature mitiche)', 67186), +(223121, 'itIT', 'Pescatori dell\'Abisso: Sommozzatore certificato', 67186), +(223119, 'itIT', 'Pescatori dell\'Abisso: Berserker della Fossa', 67186), +(222479, 'itIT', 'Pescatori dell\'Abisso: Procedura standard', 67186), +(222477, 'itIT', 'Pescatori dell\'Abisso: Il mare non può contenermi', 67186), +(222475, 'itIT', 'Pescatori dell\'Abisso: Anche i migliori', 67186), +(222466, 'itIT', 'Pescatori dell\'Abisso: Idolo delle Profondità', 67186), +(222453, 'itIT', 'Pescatori dell\'Abisso: Lanciarpioni a Torretta del Nucleocavo', 67186), +(222438, 'itIT', 'Pescatori dell\'Abisso: Lanciarpioni Pesante', 67186), +(222436, 'itIT', 'Pescatori dell\'Abisso: Rete a Triplo Filo', 67186), +(222434, 'itIT', 'Pescatori dell\'Abisso: Rete da Secche', 67186), +(222432, 'itIT', 'Pescatori dell\'Abisso: Bombola del Respiro di Nalorakk', 67186), +(222430, 'itIT', 'Pescatori dell\'Abisso: Bombola Testata in Profondità', 67186), +(222428, 'itIT', 'Pescatori dell\'Abisso: Bombola Usata del Sommozzatore', 67186), +(222426, 'itIT', 'Pescatori dell\'Abisso: Pinne della Fossa di Pahk', 67186), +(222424, 'itIT', 'Pescatori dell\'Abisso: Grasso delle Profondità', 67186), +(222422, 'itIT', 'Pescatori dell\'Abisso: Raccordi Rinforzati', 67186), +(222416, 'itIT', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'itIT', 'Imitazione di Khadgar di Kreynna', 67186), +(220967, 'itIT', 'Non farti toccare durante il primo minuto di Duello di Decorazioni.', 67186), +(220603, 'itIT', 'Bombardamento a Tappeto', 67186), +(220574, 'itIT', 'In Trappola!', 67186), +(220573, 'itIT', 'Guastafeste', 67186), +(212256, 'itIT', 'Evento del Pescatore dell\'Abisso completato', 67186), +(212255, 'itIT', 'Completa l\'evento del Pescatore dell\'Abisso', 67186), +(229140, 'itIT', '', 67186), +(229139, 'itIT', '', 67186), +(229048, 'itIT', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'itIT', 'Sconfiggi le forze degli Hal\'hadar', 67186), +(225426, 'itIT', 'Sconfiggi le forze degli Hal\'hadar', 67186), +(223423, 'itIT', 'Zampaspirito liberati', 67186), +(223697, 'itIT', '', 67186), +(223696, 'itIT', '', 67186), +(223695, 'itIT', '', 67186), +(223693, 'itIT', '', 67186), +(219734, 'itIT', '', 67186), +(209802, 'itIT', 'Fai equipaggiare un Reperto di Combattimento al tuo compagno', 67186), +(170782, 'itIT', 'Fai equipaggiare un Reperto di Combattimento al tuo compagno', 67186), +(228515, 'itIT', 'Punteggio richiesto', 67186), +(228514, 'itIT', 'Impresa - Mito delle Chiavi: Stagione 1 delle Spedizioni di Midnight', 67186), +(227753, 'itIT', '', 67186), +(227677, 'itIT', '', 67186), +(227676, 'itIT', '', 67186), +(227675, 'itIT', '', 67186), +(227674, 'itIT', '', 67186), +(227673, 'itIT', '', 67186), +(227672, 'itIT', '', 67186), +(227671, 'itIT', '', 67186), +(225639, 'itIT', '', 67186), +(225638, 'itIT', '', 67186), +(225637, 'itIT', '', 67186), +(225636, 'itIT', '', 67186), +(225635, 'itIT', '', 67186), +(225634, 'itIT', 'Pescatori dell\'Abisso: perle nell\'abisso', 67186), +(225611, 'itIT', '', 67186), +(225610, 'itIT', '', 67186), +(225609, 'itIT', 'Pescatori dell\'Abisso: collezionista d\'altri tempi', 67186), +(220963, 'itIT', 'Gioca un turno senza farti toccare.', 67186), +(220961, 'itIT', 'Non farti scoprire per 90 secondi consecutivi.', 67186), +(220959, 'itIT', 'Cercatore - Vinci entro due minuti.', 67186), +(220958, 'itIT', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'itIT', 'Tocca un Nascosto da Guardaboschi Arcano.', 67186), +(220955, 'itIT', 'Tocca un Nascosto da Nullificatore.', 67186), +(220725, 'itIT', 'Tocca un Nascosto Trovato per farlo diventare Spezzamagie', 67186), +(227430, 'itIT', '', 67186), +(223818, 'itIT', '', 67186), +(216419, 'itIT', '', 67186), +(216418, 'itIT', '', 67186), +(216417, 'itIT', '', 67186), +(227429, 'itIT', '', 67186), +(227428, 'itIT', 'Possiede una mascotte Cucciolo di Drago Fatato Solare', 67186), +(225732, 'itIT', 'Potenziamento Rete da Secche ottenuto', 67186), +(224745, 'itIT', 'Sentinella attivata', 67186), +(222969, 'itIT', 'Vocequieta difeso', 67186), +(222803, 'itIT', 'Barriere danneggiate', 67186), +(221550, 'itIT', 'Scheggia del Flagello Animata uccisa', 67186), +(219955, 'itIT', 'Veggente dell\'Alveare Sifoide ucciso', 67186), +(219466, 'itIT', 'Veggente dell\'Alveare Sifoide ucciso', 67186), +(225670, 'itIT', '', 67186), +(225668, 'itIT', '', 67186), +(225666, 'itIT', '', 67186), +(225664, 'itIT', '', 67186), +(227206, 'itIT', '', 67186), +(223209, 'itIT', 'Statistica: Emblemi dell\'Alba del Mito ottenuti', 67186), +(212362, 'itIT', 'Ottieni un livello oggetto medio di 285 durante la Stagione 1 di Midnight (rendi obsoleti gli Emblemi dell\'Alba del Mito)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='itIT'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'itIT', 'Nucleo del Vuoto Nebuloso', 'Trasmutabile in equipaggiamenti potenti dopo aver sconfitto grandi nemici nelle incursioni della Stagione 1 di Midnight o completando spedizioni Mitiche+, Scorribande Fruttuose e Cacce alla Preda in modalità Incubo.', 67186), +(3347, 'itIT', 'Emblema dell\'Alba del Mito', 'Si usa per potenziare l\'equipaggiamento Mito durante la Stagione 1 di Midnight fino ai livelli 276-289. \n\nSe si usa per l\'artigianato, in base alla qualità, imposta il livello oggetto dell\'oggetto risultante a 272-285.\n\nSi ottiene dalle attività seguenti:\n\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Mitica\n- Spedizioni Mitiche+ (da +9 e superiori)', 67186), +(3346, 'itIT', 'Emblema dell\'Alba dell\'Eroe', 'Si usa per potenziare l\'equipaggiamento Eroe durante la Stagione 1 di Midnight fino ai livelli 263-276. Si ottiene dalle attività seguenti:\n\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Eroica\n- Spedizioni Mitiche+ (da +4 a +8)\n- Scorribande (Grado 11)\n- Bottino del Cacciatore di Tesori (Grado 8+)\n- Cacce alla Preda (Incubo)', 67186), +(3345, 'itIT', 'Emblema dell\'Alba dell\'Eroe', 'Si usa per potenziare l\'equipaggiamento Eroe durante la Stagione 1 di Midnight fino ai livelli 263-276.\n\nSe si usa per l\'artigianato, in base alla qualità, imposta il livello oggetto dell\'oggetto risultante a 259-272.\n\nSi ottiene dalle attività seguenti:\n\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Eroica\n- Spedizioni Mitiche+ (da +4 a +8)\n- Scorribande (Grado 11)\n- Bottino del Cacciatore di Tesori (Grado 8+)\n- Cacce alla Preda (Incubo)', 67186), +(3344, 'itIT', 'Emblema dell\'Alba del Campione', 'Si usa per potenziare l\'equipaggiamento Campione durante la Stagione 1 di Midnight fino ai livelli 250-263. Si ottiene dalle attività seguenti:\n\n- Eventi esterni settimanali\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Normale\n- Spedizioni stagionali Mitiche\n- Spedizioni Mitiche+ (+2 e +3)\n-Scorribande (Gradi 7-10)\n- Bottino del Cacciatore di Tesori (Gradi 6 e 7)\n- Cacce alla Preda (Incubo)', 67186), +(3343, 'itIT', 'Emblema dell\'Alba del Campione', 'Si usa per potenziare l\'equipaggiamento Campione durante la Stagione 1 di Midnight fino ai livelli 250-263. Si ottiene dalle attività seguenti:\n\n- Eventi esterni settimanali\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Normale\n- Spedizioni stagionali Mitiche\n- Spedizioni Mitiche+ (+2 e +3)\n-Scorribande (Gradi 7-10)\n- Bottino del Cacciatore di Tesori (Gradi 6 e 7)\n- Cacce alla Preda (Incubo)', 67186), +(3342, 'itIT', 'Emblema dell\'Alba del Veterano', 'Si usa per potenziare l\'equipaggiamento Veterano durante la Stagione 1 di Midnight fino ai livelli 237-250. Si ottiene dalle attività seguenti:\n\n- Eventi esterni ripetibili\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Ricerca delle Incursioni\n- Spedizioni stagionali Eroiche\n- Scorribande (Gradi 5 e 6)\n- Bottino del Cacciatore di Tesori (Gradi 4 e 5)\n- Cacce alla Preda (Difficile)', 67186), +(3341, 'itIT', 'Emblema dell\'Alba del Veterano', 'Si usa per potenziare l\'equipaggiamento Veterano durante la Stagione 1 di Midnight fino ai livelli 237-250.\n\nSe si usa per l\'artigianato, in base alla qualità, imposta il livello oggetto dell\'oggetto risultante a 233-246.\n\nSi ottiene dalle attività seguenti:\n\n- Eventi esterni ripetibili\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Ricerca delle Incursioni\n- Spedizioni stagionali Eroiche\n- Scorribande (Gradi 5 e 6)\n- Bottino del Cacciatore di Tesori (Gradi 4 e 5)\n- Cacce alla Preda (Difficile)', 67186), +(3418, 'itIT', 'Nucleo del Vuoto Nebuloso', 'Trasmutabile in equipaggiamenti potenti dopo aver sconfitto grandi nemici nelle incursioni della Stagione 1 di Midnight o completando spedizioni Mitiche+, Scorribande Fruttuose e Cacce alla Preda in modalità Incubo.', 67186), +(3391, 'itIT', 'Emblema dell\'Alba dell\'Avventuriero', 'Si usa per potenziare l\'equipaggiamento Avventuriero durante la Stagione 1 di Midnight fino ai livelli 224-237. Si ottiene dalle attività seguenti:\n\n- Eventi esterni ripetibili\n- Scorribande (Grado 4)\n- Cacce alla Preda (Normale)', 67186), +(3383, 'itIT', 'Emblema dell\'Alba dell\'Avventuriero', 'Si usa per potenziare l\'equipaggiamento Avventuriero durante la Stagione 1 di Midnight fino ai livelli 224-237.\n\nSe si usa per l\'artigianato, in base alla qualità, imposta il livello oggetto dell\'oggetto risultante a 220-233.\n\nSi ottiene dalle attività seguenti:\n\n- Eventi esterni ripetibili\n- Scorribande (Grado 4)\n- Cacce alla Preda (Normale)', 67186), +(3348, 'itIT', 'Emblema dell\'Alba del Mito', 'Si usa per potenziare l\'equipaggiamento Mito durante la Stagione 1 di Midnight fino ai livelli 276-289. Si ottiene dalle attività seguenti:\n\n- Pinnacolo del Vuoto, Frattura del Sogno, Marcia su Quel\'Danas in modalità Eroica\n- Spedizioni Mitiche+ (+9 e superiori)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='itIT'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'itIT', 'Rukhran', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'itIT', 'Occhio di Acherus', 67186), +(264717, 'itIT', 'Maleficio di Protezione degli Amani', 67186), +(264338, 'itIT', 'Console di Comando dei Domanaar', 67186), +(264336, 'itIT', 'Braciere di Lucevuota', 67186), +(264332, 'itIT', 'Altare Rituale degli Amani', 67186), +(263238, 'itIT', 'Tavolo Lungo Illecito', 67186), +(263230, 'itIT', 'Scaffale del Magistro', 67186), +(256683, 'itIT', 'Manichino d\'Allenamento di Lunargenta', 67186), +(253451, 'itIT', 'Fontana di Veldiradice', 67186), +(245938, 'itIT', 'Traliccio degli Arathi Erboso', 67186), +(245560, 'itIT', 'Finestra Ocra dell\'Idromelificio', 67186), +(241044, 'itIT', 'Cassa Argussiana', 67186), +(267641, 'itIT', 'Cimiero Solare di Lunargenta Annerito', 67186), +(267640, 'itIT', 'Velo Solare di Lunargenta Annerito', 67186), +(267639, 'itIT', 'Guardia Solare di Lunargenta Annerita', 67186), +(267638, 'itIT', 'Guglia Solare di Lunargenta Annerita', 67186), +(267607, 'itIT', 'Mitene della Penombra Fosche', 67186), +(267606, 'itIT', 'Guanti della Gravità Infinita', 67186), +(267605, 'itIT', 'Guanti del Vortice Interminabile', 67186), +(267604, 'itIT', 'Guanti dei Behemoth Colossali', 67186), +(267482, 'itIT', 'Grancintura dell\'Aspirante Difensore Hara\'ti', 67186), +(267481, 'itIT', 'Cintura dell\'Aspirante Difensore Hara\'ti', 67186), +(267480, 'itIT', 'Fascione dell\'Aspirante Difensore Hara\'ti', 67186), +(267479, 'itIT', 'Fascia dell\'Aspirante Difensore Hara\'ti', 67186), +(266432, 'itIT', 'Cimiero Solare di Lunargenta', 67186), +(266431, 'itIT', 'Velo Solare di Lunargenta', 67186), +(266430, 'itIT', 'Guardia Solare di Lunargenta', 67186), +(266429, 'itIT', 'Guglia Solare di Lunargenta', 67186), +(263269, 'itIT', 'Grancintura del Difensore Hara\'ti', 67186), +(263268, 'itIT', 'Cintura del Difensore Hara\'ti', 67186), +(263267, 'itIT', 'Fascione del Difensore Hara\'ti', 67186), +(263265, 'itIT', 'Fascia del Difensore Hara\'ti', 67186), +(272961, 'itIT', 'Bastone Affilato dello Spezzamagie', 67186), +(272960, 'itIT', 'Baluardo dello Spezzamagie', 67186), +(272318, 'itIT', 'Spada della Fenice dello Spezzamagie', 67186), +(272317, 'itIT', 'Lama della Fenice dello Spezzamagie', 67186), +(272316, 'itIT', 'Lanciaffilata dello Spezzamagie', 67186), +(19355, 'itIT', 'Bastone Focalizzato delle Ali d\'Ombra', 67186), +(272338, 'itIT', 'Acciaio Incantato della Guardia Magica', 67186), +(272337, 'itIT', 'Lama Incantata della Guardia Magica', 67186), +(272336, 'itIT', 'Fracassatore della Fenditura del Nulla', 67186), +(272321, 'itIT', 'Arco Incantato del Guardaboschi Arcano', 67186), +(272320, 'itIT', 'Canalizzatore della Fenditura del Nulla', 67186), +(273874, 'itIT', 'Guisarma della Furia del Sole Toccata dal Vuoto', 67186), +(263970, 'itIT', 'Lama Toccata dal Vuoto', 67186), +(263969, 'itIT', 'Granbacchetta Toccata dal Vuoto', 67186), +(263968, 'itIT', 'Focus Toccato dal Vuoto', 67186), +(263967, 'itIT', 'Grandarco Toccato dal Vuoto', 67186), +(263966, 'itIT', 'Granlama Toccata dal Vuoto', 67186), +(263963, 'itIT', 'Spada da Duellante Toccata dal Vuoto', 67186), +(263960, 'itIT', 'Lama Ardente Toccato dal Vuoto', 67186), +(263959, 'itIT', 'Tomo Toccato dal Vuoto', 67186), +(263956, 'itIT', 'Fracassatore Toccato dal Vuoto', 67186), +(263954, 'itIT', 'Randello da Battaglia Toccato dal Vuoto', 67186), +(263952, 'itIT', 'Bastone della Furia del Sole Toccato dal Vuoto', 67186), +(263950, 'itIT', 'Vanga Toccata dal Vuoto', 67186), +(263949, 'itIT', 'Baluardo Toccato dal Vuoto', 67186), +(263946, 'itIT', 'Picchiatore Toccato dal Vuoto', 67186), +(263943, 'itIT', 'Sbudellatore Toccato dal Vuoto', 67186), +(263942, 'itIT', 'Zanna Toccata dal Vuoto', 67186), +(263941, 'itIT', 'Archibugio Toccato dal Vuoto', 67186), +(263707, 'itIT', 'Braccialetti dell\'Ira del Vuoto', 67186), +(263706, 'itIT', 'Mantello dell\'Ira del Vuoto', 67186), +(263705, 'itIT', 'Fusciacca dell\'Ira del Vuoto', 67186), +(263704, 'itIT', 'Paraspalle dell\'Ira del Vuoto', 67186), +(263703, 'itIT', 'Gambali Corazzati dell\'Ira del Vuoto', 67186), +(263702, 'itIT', 'Elmo dell\'Ira del Vuoto', 67186), +(263701, 'itIT', 'Guanti Lunghi dell\'Ira del Vuoto', 67186), +(263700, 'itIT', 'Calzari dell\'Ira del Vuoto', 67186), +(263699, 'itIT', 'Pettorale Corazzato dell\'Ira del Vuoto', 67186), +(263698, 'itIT', 'Blusa della Nemesi del Vuoto', 67186), +(263697, 'itIT', 'Bracciali della Nemesi del Vuoto', 67186), +(263696, 'itIT', 'Mantello della Nemesi del Vuoto', 67186), +(263695, 'itIT', 'Cintura della Nemesi del Vuoto', 67186), +(263694, 'itIT', 'Guardaspalle della Nemesi del Vuoto', 67186), +(263693, 'itIT', 'Gambiere della Nemesi del Vuoto', 67186), +(263692, 'itIT', 'Zucchetto della Nemesi del Vuoto', 67186), +(263691, 'itIT', 'Guanti della Nemesi del Vuoto', 67186), +(263690, 'itIT', 'Stivali della Nemesi del Vuoto', 67186), +(263689, 'itIT', 'Vesti della Nemesi del Vuoto', 67186), +(263688, 'itIT', 'Gambiere Rinforzate delle Tempeste del Vuoto', 67186), +(263687, 'itIT', 'Bracciali delle Tempeste del Vuoto', 67186), +(263686, 'itIT', 'Mantello delle Tempeste del Vuoto', 67186), +(263685, 'itIT', 'Cintura delle Tempeste del Vuoto', 67186), +(263684, 'itIT', 'Spalline delle Tempeste del Vuoto', 67186), +(263683, 'itIT', 'Kilt delle Tempeste del Vuoto', 67186), +(263682, 'itIT', 'Elmetto delle Tempeste del Vuoto', 67186), +(263681, 'itIT', 'Guanti Lunghi delle Tempeste del Vuoto', 67186), +(263680, 'itIT', 'Calzari delle Tempeste del Vuoto', 67186), +(263679, 'itIT', 'Pettorale Corazzato delle Tempeste del Vuoto', 67186), +(263678, 'itIT', 'Bracciali della Zanna del Vuoto', 67186), +(263677, 'itIT', 'Mantello della Zanna del Vuoto', 67186), +(263676, 'itIT', 'Cintura della Zanna del Vuoto', 67186), +(263675, 'itIT', 'Guardaspalle della Zanna del Vuoto', 67186), +(263674, 'itIT', 'Pantaloni della Zanna del Vuoto', 67186), +(263673, 'itIT', 'Cappuccio della Zanna del Vuoto', 67186), +(263672, 'itIT', 'Guanti della Zanna del Vuoto', 67186), +(263671, 'itIT', 'Stivali della Zanna del Vuoto', 67186), +(263670, 'itIT', 'Corazza della Zanna del Vuoto', 67186), +(263669, 'itIT', 'Blusa della Trascendenza del Vuoto', 67186), +(263668, 'itIT', 'Manette della Trascendenza del Vuoto', 67186), +(263667, 'itIT', 'Mantello della Trascendenza del Vuoto', 67186), +(263666, 'itIT', 'Cintura della Trascendenza del Vuoto', 67186), +(263665, 'itIT', 'Paraspalle della Trascendenza del Vuoto', 67186), +(263664, 'itIT', 'Gambiere della Trascendenza del Vuoto', 67186), +(263663, 'itIT', 'Aureola della Trascendenza del Vuoto', 67186), +(263662, 'itIT', 'Guardamani Foderati della Trascendenza del Vuoto', 67186), +(263661, 'itIT', 'Stivali della Trascendenza del Vuoto', 67186), +(263660, 'itIT', 'Vesti della Trascendenza del Vuoto', 67186), +(263659, 'itIT', 'Gambiere Rinforzate del Giudizio del Vuoto', 67186), +(263658, 'itIT', 'Manette del Giudizio del Vuoto', 67186), +(263657, 'itIT', 'Mantello del Giudizio del Vuoto', 67186), +(263656, 'itIT', 'Cintura del Giudizio del Vuoto', 67186), +(263655, 'itIT', 'Guardaspalle del Giudizio del Vuoto', 67186), +(263654, 'itIT', 'Gambali Corazzati del Giudizio del Vuoto', 67186), +(263653, 'itIT', 'Corona del Giudizio del Vuoto', 67186), +(263652, 'itIT', 'Guanti Lunghi del Giudizio del Vuoto', 67186), +(263651, 'itIT', 'Calzari del Giudizio del Vuoto', 67186), +(263650, 'itIT', 'Pettorale Corazzato del Giudizio del Vuoto', 67186), +(263649, 'itIT', 'Manette dell\'Accolito del Vuoto', 67186), +(263648, 'itIT', 'Mantello dell\'Accolito del Vuoto', 67186), +(263647, 'itIT', 'Fascione dell\'Accolito del Vuoto', 67186), +(263646, 'itIT', 'Guardaspalle dell\'Accolito del Vuoto', 67186), +(263645, 'itIT', 'Pantaloni dell\'Accolito del Vuoto', 67186), +(263644, 'itIT', 'Elmo dell\'Accolito del Vuoto', 67186), +(263643, 'itIT', 'Paramani dell\'Accolito del Vuoto', 67186), +(263642, 'itIT', 'Artigli dell\'Accolito del Vuoto', 67186), +(263641, 'itIT', 'Giubba dell\'Accolito del Vuoto', 67186), +(263640, 'itIT', 'Blusa del Ventovuoto', 67186), +(263639, 'itIT', 'Vincoli del Ventovuoto', 67186), +(263638, 'itIT', 'Mantello del Ventovuoto', 67186), +(263637, 'itIT', 'Cintura del Ventovuoto', 67186), +(263636, 'itIT', 'Coprispalle del Ventovuoto', 67186), +(263635, 'itIT', 'Pantaloni del Ventovuoto', 67186), +(263634, 'itIT', 'Corona del Ventovuoto', 67186), +(263633, 'itIT', 'Guanti del Ventovuoto', 67186), +(263632, 'itIT', 'Stivali del Ventovuoto', 67186), +(263631, 'itIT', 'Vesti del Ventovuoto', 67186), +(263630, 'itIT', 'Bracciali dell\'Inseguitore del Vuoto', 67186), +(263629, 'itIT', 'Mantello dell\'Inseguitore del Vuoto', 67186), +(263628, 'itIT', 'Cintura dell\'Inseguitore del Vuoto', 67186), +(263627, 'itIT', 'Guardaspalle dell\'Inseguitore del Vuoto', 67186), +(263626, 'itIT', 'Gambali Foderati dell\'Inseguitore del Vuoto', 67186), +(263625, 'itIT', 'Elmo dell\'Inseguitore del Vuoto', 67186), +(263624, 'itIT', 'Guanti Lunghi dell\'Inseguitore del Vuoto', 67186), +(263623, 'itIT', 'Gambiere Rinforzate dell\'Inseguitore del Vuoto', 67186), +(263622, 'itIT', 'Pettorale Corazzato dell\'Inseguitore del Vuoto', 67186), +(263621, 'itIT', 'Avambracci del Difensore del Vuoto', 67186), +(263620, 'itIT', 'Mantello del Difensore del Vuoto', 67186), +(263619, 'itIT', 'Cinturone del Difensore del Vuoto', 67186), +(263618, 'itIT', 'Paraspalle del Difensore del Vuoto', 67186), +(263617, 'itIT', 'Gambali Corazzati del Difensore del Vuoto', 67186), +(263616, 'itIT', 'Corona del Difensore del Vuoto', 67186), +(263615, 'itIT', 'Branche del Difensore del Vuoto', 67186), +(263614, 'itIT', 'Artigli del Difensore del Vuoto', 67186), +(263613, 'itIT', 'Pettorale Corazzato del Difensore del Vuoto', 67186), +(263612, 'itIT', 'Corazza Foderata della Furia del Vuoto', 67186), +(263611, 'itIT', 'Bracciali della Furia del Vuoto', 67186), +(263610, 'itIT', 'Mantello della Furia del Vuoto', 67186), +(263609, 'itIT', 'Cintura della Furia del Vuoto', 67186), +(263608, 'itIT', 'Paraspalle della Furia del Vuoto', 67186), +(263607, 'itIT', 'Gambali Foderati della Furia del Vuoto', 67186), +(263606, 'itIT', 'Copertura della Rabbia del Vuoto', 67186), +(263605, 'itIT', 'Guardamani Foderati della Furia del Vuoto', 67186), +(263604, 'itIT', 'Stivali della Furia del Vuoto', 67186), +(263603, 'itIT', 'Tonaca della Furia del Vuoto', 67186), +(263602, 'itIT', 'Bracciali del Camminatore del Vuoto', 67186), +(263601, 'itIT', 'Mantello del Camminatore del Vuoto', 67186), +(263600, 'itIT', 'Fascione del Camminatore del Vuoto', 67186), +(263599, 'itIT', 'Spallacci Corazzati del Camminatore del Vuoto', 67186), +(263598, 'itIT', 'Gambiere del Camminatore del Vuoto', 67186), +(263597, 'itIT', 'Zucchetto del Camminatore del Vuoto', 67186), +(263596, 'itIT', 'Guanti del Camminatore del Vuoto', 67186), +(263595, 'itIT', 'Grancalzari del Camminatore del Vuoto', 67186), +(263594, 'itIT', 'Imbracatura del Camminatore del Vuoto', 67186), +(263593, 'itIT', 'Avambracci del Cavaliere del Vuoto', 67186), +(263592, 'itIT', 'Mantello del Cavaliere del Vuoto', 67186), +(263591, 'itIT', 'Cinturone del Cavaliere del Vuoto', 67186), +(263590, 'itIT', 'Paraspalle del Cavaliere del Vuoto', 67186), +(263589, 'itIT', 'Gambiere del Cavaliere del Vuoto', 67186), +(263588, 'itIT', 'Elmo del Cavaliere del Vuoto', 67186), +(263587, 'itIT', 'Guanti del Cavaliere del Vuoto', 67186), +(263586, 'itIT', 'Calzari del Cavaliere del Vuoto', 67186), +(263585, 'itIT', 'Pettorale Corazzato del Cavaliere del Vuoto', 67186), +(251161, 'itIT', 'Manto del Cacciatore d\'Anime', 67186), +(133494, 'itIT', 'Cintura dello Zombi Scabrosa', 67186), +(49810, 'itIT', 'Cintura dello Zombi Scabrosa', 67186), +(263286, 'itIT', 'Gong Fungariano Ricondizionato', 67186), +(255627, 'itIT', 'Martello del Gladiatore Galattico', 67186), +(253582, 'itIT', 'Flagellatore Pinnazanna', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'itIT', 'Ti insegna a creare l\'incantamento Ornamento Illusorio - Sogni.', '', '', '', 'Formula: Ornamento Illusorio - Sogni', 67186), +(206969, 'itIT', '', '', '', '', 'Ornamento Illusorio - Sogni', 67186), +(206968, 'itIT', '', '', '', '', 'Ornamento Illusorio - Sogni', 67186), +(206967, 'itIT', '', '', '', '', 'Ornamento Illusorio - Sogni', 67186), +(204977, 'itIT', 'Ti insegna a creare l\'incantamento Ornamento Illusorio - Spore.', '', '', '', 'Formula: Ornamento Illusorio - Spore', 67186), +(204568, 'itIT', '', '', '', '', 'Ornamento Illusorio - Spore', 67186), +(204567, 'itIT', '', '', '', '', 'Ornamento Illusorio - Spore', 67186), +(204565, 'itIT', '', '', '', '', 'Ornamento Illusorio - Spore', 67186), +(201321, 'itIT', '', '', '', '', 'Ornamento Illusorio - Ordine', 67186), +(201320, 'itIT', '', '', '', '', 'Ornamento Illusorio - Ordine', 67186), +(201319, 'itIT', '', '', '', '', 'Ornamento Illusorio - Ordine', 67186), +(201318, 'itIT', '', '', '', '', 'Ornamento Illusorio - Aria', 67186), +(201317, 'itIT', '', '', '', '', 'Ornamento Illusorio - Aria', 67186), +(201316, 'itIT', '', '', '', '', 'Ornamento Illusorio - Aria', 67186), +(201315, 'itIT', '', '', '', '', 'Ornamento Illusorio - Terra', 67186), +(201314, 'itIT', '', '', '', '', 'Ornamento Illusorio - Terra', 67186), +(201313, 'itIT', '', '', '', '', 'Ornamento Illusorio - Terra', 67186), +(201312, 'itIT', '', '', '', '', 'Ornamento Illusorio - Gelo', 67186), +(201311, 'itIT', '', '', '', '', 'Ornamento Illusorio - Gelo', 67186), +(201310, 'itIT', '', '', '', '', 'Ornamento Illusorio - Gelo', 67186), +(200616, 'itIT', '', '', '', '', 'Ornamento Illusorio - Fuoco', 67186), +(200615, 'itIT', '', '', '', '', 'Ornamento Illusorio - Fuoco', 67186), +(200614, 'itIT', '', '', '', '', 'Ornamento Illusorio - Fuoco', 67186), +(245345, 'itIT', 'Un granulo di pura energia primordiale concentrata. Può essere ottenuto acquistandolo dal Mercante dell\'Abbondanza Chel la Scheggia o dal Sommozzatore Tu\'nakit dei Pescatori dell\'Abisso.', '', '', '', 'Vitalità Fusa', 67186), +(243343, 'itIT', 'Una finestra su qualcosa di molto, molto di più.', '', '', '', 'Anomalia del Pescatore', 67186), +(243302, 'itIT', 'Un catalizzatore di crescita travolgente.', '', '', '', 'Bocciolo di Aquarius', 67186), +(274267, 'itIT', 'Un granulo di pura energia primordiale concentrata. Può essere ottenuto acquistandolo dal Mercante dell\'Abbondanza Chel la Scheggia o dal Sommozzatore Tu\'nakit dei Pescatori dell\'Abisso.', '', '', '', 'Vitalità Fusa', 67186), +(255157, 'itIT', '', '', '', '', 'Registro di Pesca del Pescatore dell\'Abisso', 67186), +(239563, 'itIT', 'Ti insegna a evocare una Lince Sfregiata dal Vuoto, la cui velocità dipende da dove ti trovi e dalla tua competenza in Equitazione.', '', '', '', 'Guinzaglio Avvolto nell\'Ombra', 67186), +(223245, 'itIT', '', '', '', '', 'Set: Pescatore dell\'Abisso', 67186), +(267009, 'itIT', '', '', '', '', 'Manichino d\'Allenamento degli Amani', 67186), +(267007, 'itIT', '', '', '', '', 'Occhio di Acherus', 67186), +(264717, 'itIT', '', '', '', '', 'Maleficio di Protezione degli Amani', 67186), +(264342, 'itIT', '', '', '', '', 'Gingillo del Vuoto Cosmico', 67186), +(264338, 'itIT', '', '', '', '', 'Console di Comando dei Domanaar', 67186), +(264336, 'itIT', '', '', '', '', 'Braciere di Lucevuota', 67186), +(264332, 'itIT', '', '', '', '', 'Altare Rituale degli Amani', 67186), +(264330, 'itIT', '', '', '', '', 'Braciere a Sospensione degli Amani', 67186), +(264329, 'itIT', '', '', '', '', 'Tavolo da Cena degli Amani', 67186), +(264258, 'itIT', '', '', '', '', 'Forgia Rigogliosa', 67186), +(263238, 'itIT', '', '', '', '', 'Tavolo Lungo Illecito', 67186), +(263233, 'itIT', '', '', '', '', 'Libreria Girevole dei Sin\'dorei', 67186), +(263230, 'itIT', '', '', '', '', 'Scaffale del Magistro', 67186), +(263042, 'itIT', '', '', '', '', 'Lampione di Lumiradice', 67186), +(263036, 'itIT', '', '', '', '', 'Fioralbore a Sospensione', 67186), +(256683, 'itIT', '', '', '', '', 'Manichino d\'Allenamento di Lunargenta', 67186), +(253451, 'itIT', '', '', '', '', 'Fontana di Veldiradice', 67186), +(251967, 'itIT', '', '', '', '', 'Stendardo Fungariano', 67186), +(245938, 'itIT', '', '', '', '', 'Traliccio degli Arathi Erboso', 67186), +(245560, 'itIT', '', '', '', '', 'Finestra Ocra dell\'Idromelificio', 67186), +(241044, 'itIT', '', '', '', '', 'Cassa Argussiana', 67186), +(264914, 'itIT', 'Cassa che contiene Riconoscimenti sul Campo, schegge di Chiave del Coperchio del Reliquiario, materiali per potenziare l\'equipaggiamento, oro e altro ancora.', '', '', '', 'Cassa del Guardaboschi', 67186), +(275447, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Segatronchi Speculativo', 67186), +(275446, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Segatronchi ad Alto Rendimento', 67186), +(275445, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Segatronchi Verde Profitto', 67186), +(275444, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Segatronchi Blu Contante', 67186), +(275442, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Meccanotuta di Ametista', 67186), +(275440, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Calcamorte Ceruleo', 67186), +(275436, 'itIT', 'Oggetto fornito dall\'impresa Mito delle Chiavi di Midnight: Stagione 1. Lindormi a Lunargenta o nei Flussi Temporali potrebbe essere interessata a scambiarlo. Al termine della stagione scompare.', '', '', '', 'Sella Senza Tempo', 67186), +(248248, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Volatile del Vuoto Azzurro', 67186), +(247822, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Volatile del Vuoto Scarlatto', 67186), +(237141, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Segatronchi di Difesa Intraprendente', 67186), +(235549, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Segatronchi di Difesa Cremisi', 67186), +(226357, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Meccanotuta Adamantina', 67186), +(213438, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Coraceronte Infinito', 67186), +(209060, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Coraceronte Verdeggiante', 67186), +(204798, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Coraceronte Infernale', 67186), +(199412, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Coraceronte Gettagrandine', 67186), +(192557, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Calcamorte della Rigenerazione', 67186), +(187682, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Calcamorte Distorto', 67186), +(187525, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Calcamorte dall\'Anima Corrotta', 67186), +(182717, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Calcamorte Toccato dal Peccato', 67186), +(174836, 'itIT', 'Ti insegna a evocare questa cavalcatura.', '', '', '', 'Trapanamente Risvegliato', 67186), +(257741, 'itIT', 'Questo oggetto può essere comprato e venduto alla Casa d\'Aste.', '', '', '', 'B0P, Curatore dei Bum', 67186), +(257735, 'itIT', 'Questo oggetto può essere comprato e venduto alla Casa d\'Aste.', '', '', '', 'B0P, Curatore dei Bum', 67186), +(255844, 'itIT', 'Questo oggetto può essere comprato e venduto alla Casa d\'Aste.', '', '', '', 'SSSHHH, Cucciolo Imperturbabile', 67186), +(255843, 'itIT', 'Questo oggetto può essere comprato e venduto alla Casa d\'Aste.', '', '', '', 'SSSHHH, Cucciolo Imperturbabile', 67186), +(248592, 'itIT', 'Evoca B1P, il Bruciatore d\'Anime. Materiale creato grazie alla competenza in Ingegneria. Può essere comprato e venduto alla Casa d\'Aste.', '', '', '', 'B1P, il Bruciatore d\'Anime', 67186), +(248135, 'itIT', 'Evoca Bip, il Bruciatore d\'Anime. Materiale creato grazie alla competenza in Ingegneria. Può essere comprato e venduto alla Casa d\'Aste.', '', '', '', 'B1P, il Bruciatore d\'Anime', 67186), +(274427, 'itIT', 'NOTA: non è sicuro che contenga davvero una cavalcatura', '', '', '', 'Forziere dello Sha', 67186), +(267643, 'itIT', '', '', '', '', 'Collana Totemica Consumata degli Amani', 67186), +(267642, 'itIT', '', '', '', '', 'Pendente Scuoticuore Consumato degli Amani', 67186), +(267641, 'itIT', '', '', '', '', 'Cimiero Solare di Lunargenta Annerito', 67186), +(267640, 'itIT', '', '', '', '', 'Velo Solare di Lunargenta Annerito', 67186), +(267639, 'itIT', '', '', '', '', 'Guardia Solare di Lunargenta Annerita', 67186), +(267638, 'itIT', '', '', '', '', 'Guglia Solare di Lunargenta Annerita', 67186), +(267607, 'itIT', '', '', '', '', 'Mitene della Penombra Fosche', 67186), +(267606, 'itIT', '', '', '', '', 'Guanti della Gravità Infinita', 67186), +(267605, 'itIT', '', '', '', '', 'Guanti del Vortice Interminabile', 67186), +(267604, 'itIT', '', '', '', '', 'Guanti dei Behemoth Colossali', 67186), +(267482, 'itIT', '', '', '', '', 'Grancintura dell\'Aspirante Difensore Hara\'ti', 67186), +(267481, 'itIT', '', '', '', '', 'Cintura dell\'Aspirante Difensore Hara\'ti', 67186), +(267480, 'itIT', '', '', '', '', 'Fascione dell\'Aspirante Difensore Hara\'ti', 67186), +(267479, 'itIT', '', '', '', '', 'Fascia dell\'Aspirante Difensore Hara\'ti', 67186), +(266432, 'itIT', '', '', '', '', 'Cimiero Solare di Lunargenta', 67186), +(266431, 'itIT', '', '', '', '', 'Velo Solare di Lunargenta', 67186), +(266430, 'itIT', '', '', '', '', 'Guardia Solare di Lunargenta', 67186), +(266429, 'itIT', '', '', '', '', 'Guglia Solare di Lunargenta', 67186), +(265740, 'itIT', '', '', '', '', 'Collana Totemica degli Amani', 67186), +(265739, 'itIT', '', '', '', '', 'Pendente Scuoticuore degli Amani', 67186), +(264507, 'itIT', '', '', '', '', 'Crogiolo delle Energie Erratiche', 67186), +(263269, 'itIT', '', '', '', '', 'Grancintura del Difensore Hara\'ti', 67186), +(263268, 'itIT', '', '', '', '', 'Cintura del Difensore Hara\'ti', 67186), +(263267, 'itIT', '', '', '', '', 'Fascione del Difensore Hara\'ti', 67186), +(263265, 'itIT', '', '', '', '', 'Fascia del Difensore Hara\'ti', 67186), +(270562, 'itIT', 'Un campione osseo stranamente contaminato. Potrebbe interessare a Dama Vallombra.', '', '', '', 'Campione Contaminato', 67186), +(249497, 'itIT', 'Un pepe così intenso che è vietato introdurlo nel Pozzo Solare.', '', '', '', 'Peperoncino delle Terre Spettrali', 67186), +(272961, 'itIT', '', '', '', '', 'Bastone Affilato dello Spezzamagie', 67186), +(272960, 'itIT', '', '', '', '', 'Baluardo dello Spezzamagie', 67186), +(272318, 'itIT', '', '', '', '', 'Spada della Fenice dello Spezzamagie', 67186), +(272317, 'itIT', '', '', '', '', 'Lama della Fenice dello Spezzamagie', 67186), +(272316, 'itIT', '', '', '', '', 'Lanciaffilata dello Spezzamagie', 67186), +(271631, 'itIT', 'NOTA: non è sicuro che contenga davvero una cavalcatura', '', '', '', 'Ricompensa del Guardiano della Luce', 67186), +(19355, 'itIT', '', '', '', '', 'Bastone Focalizzato delle Ali d\'Ombra', 67186), +(274578, 'itIT', 'Un piccolo atto di benevolenza da parte di Dundun, Loa dell\'Abbondanza, contenente 4.500 Abbondanza Pura.', '', '', '', 'Offerta di Abbondanza Pura', 67186), +(268455, 'itIT', '', '', '', '', 'Clessidra Incantata', 67186), +(268122, 'itIT', 'Le tue monete sono state dissolte. Partecipa di più nella prossima partita.', '', '', '', 'Monete Dissolte', 67186), +(272338, 'itIT', '', '', '', '', 'Acciaio Incantato della Guardia Magica', 67186), +(272337, 'itIT', '', '', '', '', 'Lama Incantata della Guardia Magica', 67186), +(272336, 'itIT', '', '', '', '', 'Fracassatore della Fenditura del Nulla', 67186), +(272321, 'itIT', '', '', '', '', 'Arco Incantato del Guardaboschi Arcano', 67186), +(272320, 'itIT', '', '', '', '', 'Canalizzatore della Fenditura del Nulla', 67186), +(268481, 'itIT', 'Ti insegna a evocare l\'Ape Frantumatrice, la cui velocità dipende da dove ti trovi e dalla tua competenza in Equitazione.', '', '', '', 'Favo Incantato del Magistro', 67186), +(268456, 'itIT', '', '', '', '', 'Panca Animata', 67186), +(273874, 'itIT', '', '', '', '', 'Guisarma della Furia del Sole Toccata dal Vuoto', 67186), +(263970, 'itIT', '', '', '', '', 'Lama Toccata dal Vuoto', 67186), +(263969, 'itIT', '', '', '', '', 'Granbacchetta Toccata dal Vuoto', 67186), +(263968, 'itIT', '', '', '', '', 'Focus Toccato dal Vuoto', 67186), +(263967, 'itIT', '', '', '', '', 'Grandarco Toccato dal Vuoto', 67186), +(263966, 'itIT', '', '', '', '', 'Granlama Toccata dal Vuoto', 67186), +(263963, 'itIT', '', '', '', '', 'Spada da Duellante Toccata dal Vuoto', 67186), +(263960, 'itIT', '', '', '', '', 'Lama Ardente Toccato dal Vuoto', 67186), +(263959, 'itIT', '', '', '', '', 'Tomo Toccato dal Vuoto', 67186), +(263956, 'itIT', '', '', '', '', 'Fracassatore Toccato dal Vuoto', 67186), +(263954, 'itIT', '', '', '', '', 'Randello da Battaglia Toccato dal Vuoto', 67186), +(263952, 'itIT', '', '', '', '', 'Bastone della Furia del Sole Toccato dal Vuoto', 67186), +(263950, 'itIT', '', '', '', '', 'Vanga Toccata dal Vuoto', 67186), +(263949, 'itIT', '', '', '', '', 'Baluardo Toccato dal Vuoto', 67186), +(263946, 'itIT', '', '', '', '', 'Picchiatore Toccato dal Vuoto', 67186), +(263943, 'itIT', '', '', '', '', 'Sbudellatore Toccato dal Vuoto', 67186), +(263942, 'itIT', '', '', '', '', 'Zanna Toccata dal Vuoto', 67186), +(263941, 'itIT', '', '', '', '', 'Archibugio Toccato dal Vuoto', 67186), +(263707, 'itIT', '', '', '', '', 'Braccialetti dell\'Ira del Vuoto', 67186), +(263706, 'itIT', '', '', '', '', 'Mantello dell\'Ira del Vuoto', 67186), +(263705, 'itIT', '', '', '', '', 'Fusciacca dell\'Ira del Vuoto', 67186), +(263704, 'itIT', '', '', '', '', 'Paraspalle dell\'Ira del Vuoto', 67186), +(263703, 'itIT', '', '', '', '', 'Gambali Corazzati dell\'Ira del Vuoto', 67186), +(263702, 'itIT', '', '', '', '', 'Elmo dell\'Ira del Vuoto', 67186), +(263701, 'itIT', '', '', '', '', 'Guanti Lunghi dell\'Ira del Vuoto', 67186), +(263700, 'itIT', '', '', '', '', 'Calzari dell\'Ira del Vuoto', 67186), +(263699, 'itIT', '', '', '', '', 'Pettorale Corazzato dell\'Ira del Vuoto', 67186), +(263698, 'itIT', '', '', '', '', 'Blusa della Nemesi del Vuoto', 67186), +(263697, 'itIT', '', '', '', '', 'Bracciali della Nemesi del Vuoto', 67186), +(263696, 'itIT', '', '', '', '', 'Mantello della Nemesi del Vuoto', 67186), +(263695, 'itIT', '', '', '', '', 'Cintura della Nemesi del Vuoto', 67186), +(263694, 'itIT', '', '', '', '', 'Guardaspalle della Nemesi del Vuoto', 67186), +(263693, 'itIT', '', '', '', '', 'Gambiere della Nemesi del Vuoto', 67186), +(263692, 'itIT', '', '', '', '', 'Zucchetto della Nemesi del Vuoto', 67186), +(263691, 'itIT', '', '', '', '', 'Guanti della Nemesi del Vuoto', 67186), +(263690, 'itIT', '', '', '', '', 'Stivali della Nemesi del Vuoto', 67186), +(263689, 'itIT', '', '', '', '', 'Vesti della Nemesi del Vuoto', 67186), +(263688, 'itIT', '', '', '', '', 'Gambiere Rinforzate delle Tempeste del Vuoto', 67186), +(263687, 'itIT', '', '', '', '', 'Bracciali delle Tempeste del Vuoto', 67186), +(263686, 'itIT', '', '', '', '', 'Mantello delle Tempeste del Vuoto', 67186), +(263685, 'itIT', '', '', '', '', 'Cintura delle Tempeste del Vuoto', 67186), +(263684, 'itIT', '', '', '', '', 'Spalline delle Tempeste del Vuoto', 67186), +(263683, 'itIT', '', '', '', '', 'Kilt delle Tempeste del Vuoto', 67186), +(263682, 'itIT', '', '', '', '', 'Elmetto delle Tempeste del Vuoto', 67186), +(263681, 'itIT', '', '', '', '', 'Guanti Lunghi delle Tempeste del Vuoto', 67186), +(263680, 'itIT', '', '', '', '', 'Calzari delle Tempeste del Vuoto', 67186), +(263679, 'itIT', '', '', '', '', 'Pettorale Corazzato delle Tempeste del Vuoto', 67186), +(263678, 'itIT', '', '', '', '', 'Bracciali della Zanna del Vuoto', 67186), +(263677, 'itIT', '', '', '', '', 'Mantello della Zanna del Vuoto', 67186), +(263676, 'itIT', '', '', '', '', 'Cintura della Zanna del Vuoto', 67186), +(263675, 'itIT', '', '', '', '', 'Guardaspalle della Zanna del Vuoto', 67186), +(263674, 'itIT', '', '', '', '', 'Pantaloni della Zanna del Vuoto', 67186), +(263673, 'itIT', '', '', '', '', 'Cappuccio della Zanna del Vuoto', 67186), +(263672, 'itIT', '', '', '', '', 'Guanti della Zanna del Vuoto', 67186), +(263671, 'itIT', '', '', '', '', 'Stivali della Zanna del Vuoto', 67186), +(263670, 'itIT', '', '', '', '', 'Corazza della Zanna del Vuoto', 67186), +(263669, 'itIT', '', '', '', '', 'Blusa della Trascendenza del Vuoto', 67186), +(263668, 'itIT', '', '', '', '', 'Manette della Trascendenza del Vuoto', 67186), +(263667, 'itIT', '', '', '', '', 'Mantello della Trascendenza del Vuoto', 67186), +(263666, 'itIT', '', '', '', '', 'Cintura della Trascendenza del Vuoto', 67186), +(263665, 'itIT', '', '', '', '', 'Paraspalle della Trascendenza del Vuoto', 67186), +(263664, 'itIT', '', '', '', '', 'Gambiere della Trascendenza del Vuoto', 67186), +(263663, 'itIT', '', '', '', '', 'Aureola della Trascendenza del Vuoto', 67186), +(263662, 'itIT', '', '', '', '', 'Guardamani Foderati della Trascendenza del Vuoto', 67186), +(263661, 'itIT', '', '', '', '', 'Stivali della Trascendenza del Vuoto', 67186), +(263660, 'itIT', '', '', '', '', 'Vesti della Trascendenza del Vuoto', 67186), +(263659, 'itIT', '', '', '', '', 'Gambiere Rinforzate del Giudizio del Vuoto', 67186), +(263658, 'itIT', '', '', '', '', 'Manette del Giudizio del Vuoto', 67186), +(263657, 'itIT', '', '', '', '', 'Mantello del Giudizio del Vuoto', 67186), +(263656, 'itIT', '', '', '', '', 'Cintura del Giudizio del Vuoto', 67186), +(263655, 'itIT', '', '', '', '', 'Guardaspalle del Giudizio del Vuoto', 67186), +(263654, 'itIT', '', '', '', '', 'Gambali Corazzati del Giudizio del Vuoto', 67186), +(263653, 'itIT', '', '', '', '', 'Corona del Giudizio del Vuoto', 67186), +(263652, 'itIT', '', '', '', '', 'Guanti Lunghi del Giudizio del Vuoto', 67186), +(263651, 'itIT', '', '', '', '', 'Calzari del Giudizio del Vuoto', 67186), +(263650, 'itIT', '', '', '', '', 'Pettorale Corazzato del Giudizio del Vuoto', 67186), +(263649, 'itIT', '', '', '', '', 'Manette dell\'Accolito del Vuoto', 67186), +(263648, 'itIT', '', '', '', '', 'Mantello dell\'Accolito del Vuoto', 67186), +(263647, 'itIT', '', '', '', '', 'Fascione dell\'Accolito del Vuoto', 67186), +(263646, 'itIT', '', '', '', '', 'Guardaspalle dell\'Accolito del Vuoto', 67186), +(263645, 'itIT', '', '', '', '', 'Pantaloni dell\'Accolito del Vuoto', 67186), +(263644, 'itIT', '', '', '', '', 'Elmo dell\'Accolito del Vuoto', 67186), +(263643, 'itIT', '', '', '', '', 'Paramani dell\'Accolito del Vuoto', 67186), +(263642, 'itIT', '', '', '', '', 'Artigli dell\'Accolito del Vuoto', 67186), +(263641, 'itIT', '', '', '', '', 'Giubba dell\'Accolito del Vuoto', 67186), +(263640, 'itIT', '', '', '', '', 'Blusa del Ventovuoto', 67186), +(263639, 'itIT', '', '', '', '', 'Vincoli del Ventovuoto', 67186), +(263638, 'itIT', '', '', '', '', 'Mantello del Ventovuoto', 67186), +(263637, 'itIT', '', '', '', '', 'Cintura del Ventovuoto', 67186), +(263636, 'itIT', '', '', '', '', 'Coprispalle del Ventovuoto', 67186), +(263635, 'itIT', '', '', '', '', 'Pantaloni del Ventovuoto', 67186), +(263634, 'itIT', '', '', '', '', 'Corona del Ventovuoto', 67186), +(263633, 'itIT', '', '', '', '', 'Guanti del Ventovuoto', 67186), +(263632, 'itIT', '', '', '', '', 'Stivali del Ventovuoto', 67186), +(263631, 'itIT', '', '', '', '', 'Vesti del Ventovuoto', 67186), +(263630, 'itIT', '', '', '', '', 'Bracciali dell\'Inseguitore del Vuoto', 67186), +(263629, 'itIT', '', '', '', '', 'Mantello dell\'Inseguitore del Vuoto', 67186), +(263628, 'itIT', '', '', '', '', 'Cintura dell\'Inseguitore del Vuoto', 67186), +(263627, 'itIT', '', '', '', '', 'Guardaspalle dell\'Inseguitore del Vuoto', 67186), +(263626, 'itIT', '', '', '', '', 'Gambali Foderati dell\'Inseguitore del Vuoto', 67186), +(263625, 'itIT', '', '', '', '', 'Elmo dell\'Inseguitore del Vuoto', 67186), +(263624, 'itIT', '', '', '', '', 'Guanti Lunghi dell\'Inseguitore del Vuoto', 67186), +(263623, 'itIT', '', '', '', '', 'Gambiere Rinforzate dell\'Inseguitore del Vuoto', 67186), +(263622, 'itIT', '', '', '', '', 'Pettorale Corazzato dell\'Inseguitore del Vuoto', 67186), +(263621, 'itIT', '', '', '', '', 'Avambracci del Difensore del Vuoto', 67186), +(263620, 'itIT', '', '', '', '', 'Mantello del Difensore del Vuoto', 67186), +(263619, 'itIT', '', '', '', '', 'Cinturone del Difensore del Vuoto', 67186), +(263618, 'itIT', '', '', '', '', 'Paraspalle del Difensore del Vuoto', 67186), +(263617, 'itIT', '', '', '', '', 'Gambali Corazzati del Difensore del Vuoto', 67186), +(263616, 'itIT', '', '', '', '', 'Corona del Difensore del Vuoto', 67186), +(263615, 'itIT', '', '', '', '', 'Branche del Difensore del Vuoto', 67186), +(263614, 'itIT', '', '', '', '', 'Artigli del Difensore del Vuoto', 67186), +(263613, 'itIT', '', '', '', '', 'Pettorale Corazzato del Difensore del Vuoto', 67186), +(263612, 'itIT', '', '', '', '', 'Corazza Foderata della Furia del Vuoto', 67186), +(263611, 'itIT', '', '', '', '', 'Bracciali della Furia del Vuoto', 67186), +(263610, 'itIT', '', '', '', '', 'Mantello della Furia del Vuoto', 67186), +(263609, 'itIT', '', '', '', '', 'Cintura della Furia del Vuoto', 67186), +(263608, 'itIT', '', '', '', '', 'Paraspalle della Furia del Vuoto', 67186), +(263607, 'itIT', '', '', '', '', 'Gambali Foderati della Furia del Vuoto', 67186), +(263606, 'itIT', '', '', '', '', 'Copertura della Rabbia del Vuoto', 67186), +(263605, 'itIT', '', '', '', '', 'Guardamani Foderati della Furia del Vuoto', 67186), +(263604, 'itIT', '', '', '', '', 'Stivali della Furia del Vuoto', 67186), +(263603, 'itIT', '', '', '', '', 'Tonaca della Furia del Vuoto', 67186), +(263602, 'itIT', '', '', '', '', 'Bracciali del Camminatore del Vuoto', 67186), +(263601, 'itIT', '', '', '', '', 'Mantello del Camminatore del Vuoto', 67186), +(263600, 'itIT', '', '', '', '', 'Fascione del Camminatore del Vuoto', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'itIT', '', '', '', '', 'Spallacci Corazzati del Camminatore del Vuoto', 67186), +(263598, 'itIT', '', '', '', '', 'Gambiere del Camminatore del Vuoto', 67186), +(263597, 'itIT', '', '', '', '', 'Zucchetto del Camminatore del Vuoto', 67186), +(263596, 'itIT', '', '', '', '', 'Guanti del Camminatore del Vuoto', 67186), +(263595, 'itIT', '', '', '', '', 'Grancalzari del Camminatore del Vuoto', 67186), +(263594, 'itIT', '', '', '', '', 'Imbracatura del Camminatore del Vuoto', 67186), +(263593, 'itIT', '', '', '', '', 'Avambracci del Cavaliere del Vuoto', 67186), +(263592, 'itIT', '', '', '', '', 'Mantello del Cavaliere del Vuoto', 67186), +(263591, 'itIT', '', '', '', '', 'Cinturone del Cavaliere del Vuoto', 67186), +(263590, 'itIT', '', '', '', '', 'Paraspalle del Cavaliere del Vuoto', 67186), +(263589, 'itIT', '', '', '', '', 'Gambiere del Cavaliere del Vuoto', 67186), +(263588, 'itIT', '', '', '', '', 'Elmo del Cavaliere del Vuoto', 67186), +(263587, 'itIT', '', '', '', '', 'Guanti del Cavaliere del Vuoto', 67186), +(263586, 'itIT', '', '', '', '', 'Calzari del Cavaliere del Vuoto', 67186), +(263585, 'itIT', '', '', '', '', 'Pettorale Corazzato del Cavaliere del Vuoto', 67186), +(251161, 'itIT', 'Una reliquia dei rituali segreti e corrotti dei Ramovile.', '', '', '', 'Manto del Cacciatore d\'Anime', 67186), +(133494, 'itIT', '', '', '', '', 'Cintura dello Zombi Scabrosa', 67186), +(49810, 'itIT', '', '', '', '', 'Cintura dello Zombi Scabrosa', 67186), +(264323, 'itIT', 'Contiene un\'arma cosmetica Toccata dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Armi Toccate dal Vuoto', 67186), +(264322, 'itIT', 'Contiene stivali cosmetici Toccati dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Stivali Toccati dal Vuoto', 67186), +(264321, 'itIT', 'Contiene gambiere cosmetiche Toccate dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Gambiere Toccate dal Vuoto', 67186), +(264320, 'itIT', 'Contiene cinture cosmetiche Toccate dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Cinture Toccate dal Vuoto', 67186), +(264319, 'itIT', 'Contiene guanti cosmetici Toccati dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Guanti Toccati dal Vuoto', 67186), +(264318, 'itIT', 'Contiene bracciali cosmetici Toccati dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Bracciali Toccati dal Vuoto', 67186), +(264317, 'itIT', 'Contiene una corazza cosmetica Toccata dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Corazze Toccate dal Vuoto', 67186), +(264316, 'itIT', 'Contiene un mantello cosmetico Toccato dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Mantelli Toccati dal Vuoto', 67186), +(264315, 'itIT', 'Contiene spalline cosmetiche Toccate dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Spalliere Toccate dal Vuoto', 67186), +(264314, 'itIT', 'Contiene un elmo cosmetico Toccato dal Vuoto che non hai ancora nella tua collezione.', '', '', '', 'Cassa di Copricapi Toccati dal Vuoto', 67186), +(256700, 'itIT', 'Ti insegna a creare un Anello con Sigillo delle Benedizioni Azerothiane.', '', '', '', 'Modello: Anello con Sigillo delle Benedizioni Azerothiane', 67186), +(250445, 'itIT', '', '', '', '', 'Eco dell\'Abbondanza: Incantamento', 67186), +(250360, 'itIT', '', '', '', '', 'Eco dell\'Abbondanza: Scuoiatura', 67186), +(250443, 'itIT', '', '', '', '', 'Eco dell\'Abbondanza: Erbalismo', 67186), +(272125, 'itIT', 'Contiene oro, Marna di Lucevuota e un oggetto per la tua specializzazione attuale, come segno di riconoscimento della tua competenza sul campo.', '', '', '', 'Cassa da Recluta', 67186), +(263286, 'itIT', '', '', '', '', 'Gong Fungariano Ricondizionato', 67186), +(273307, 'itIT', 'Appena spremuta da un imprenditore intrepido! Scintilla di cristalli di zucchero... o cristalli di mana?', '', '', '', 'Fiala di Limonata Intrepida', 67186), +(265790, 'itIT', 'Una borsa che contiene 10 Emblemi dell\'Alba del Mito e dell\'Eroe.', '', '', '', 'Cassa di Emblemi dell\'Alba', 67186), +(246753, 'itIT', '', '', '', '', 'Aggregato Glorioso di Emblemi dell\'Alba del Mito', 67186), +(255627, 'itIT', '', '', '', '', 'Martello del Gladiatore Galattico', 67186), +(266969, 'itIT', '', '', '', '', 'Set: Paramenti del Sommozzatore', 67186), +(253582, 'itIT', '', '', '', '', 'Flagellatore Pinnazanna', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'itIT', 'Difensori', '$bullet;L\'Accumulatore si rifornisce dal cumulo di risorse più vicino durante |cFF2959D3|Hspell:1235072|h[Misure Ingegnose]|h|r.\n$bullet;I Funghi Marci applicano |cFF2959D3|Hspell:1234846|h[Spore Tossiche]|h|r al contatto, impedendo lo scoppio in un\'|cFF2959D3|Hspell:1245593|h[Esplosione Putrida]|h|r.\n$bullet;|cFF2959D3|Hspell:1234681|h[Grido Vorace]|h|r e |cFF2959D3|Hspell:1235125|h[Grido Vigoroso]|h|r infliggono ingenti danni a tutti i personaggi.', 67186), +(32669, 'itIT', 'Sommario', 'L\'Accumulatore impedisce a tutti i costi che le sue riserve vengano saccheggiate, lanciando |cFF2959D3|Hspell:1235072|h[Misure Ingegnose]|h|r quando raggiunge il 90%, il 60% e il 30% di salute restante e potenziando una delle sue abilità.\n\nQuando raggiunge 100 energia, lancia |cFF2959D3|Hspell:1234233|h[Rifornimenti Avariati]|h|r in tutta l\'arena, facendo crescere dei Funghi Marci per 12 s. Al contatto, applicano |cFF2959D3|Hspell:1234846|h[Spore Tossiche]|h|r e distruggono i funghi, impedendo l\'|cFF2959D3|Hspell:1245593|h[Esplosione Putrida]|h|r.', 67186), +(31527, 'itIT', 'Merce Proibita', 'Un carico destinato a restare lontano da occhi indiscreti. Fornisce un\'eccellente copertura.', 67186), +(31282, 'itIT', 'Difensore', '$bullet;Kystia rende Vilmordino ostile ai personaggi con |cFF2959D3|Hspell:1230289|h[Infusione Illecita]|h|r.\n$bullet;Evitare |cFF2959D3|Hspell:1253811|h[Vilspruzzo]|h|r di Vilmordino.\n$bullet;Interrompere |cFF2959D3|Hspell:1264095|h[Immagini Speculari]|h|r di Kystia.', 67186), +(31281, 'itIT', 'Guaritori', '$bullet;Kystia rende Vilmordino ostile ai personaggi con |cFF2959D3|Hspell:1230289|h[Infusione Illecita]|h|r.\n$bullet;Evitare |cFF2959D3|Hspell:1253811|h[Vilspruzzo]|h|r di Vilmordino.\n$bullet; Kystia infligge ingenti danni a tutti i personaggi mentre è |cFF2959D3|Hspell:1265412|h[Destabilizzata]|h|r.', 67186), +(31280, 'itIT', 'Assaltatori', '$bullet;Kystia rende Vilmordino ostile ai personaggi con |cFF2959D3|Hspell:1230289|h[Infusione Illecita]|h|r.\n$bullet;Evitare |cFF2959D3|Hspell:1253811|h[Vilspruzzo]|h|r di Vilmordino.\n$bullet;Interrompere |cFF2959D3|Hspell:1264095|h[Immagini Speculari]|h|r di Kystia.', 67186), +(35862, 'itIT', 'Section 18', '', 67186), +(35353, 'itIT', 'Sezione 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'itIT', 'Sezione 17', '', 67186), +(34733, 'itIT', 'Inganno di Xal\'atath', 'Xal\'atath tradisce i personaggi, revocando i suoi patti e facendo in modo che le morti sottraggano 15 s al tempo restante.', 67186), +(34732, 'itIT', 'Potenziamento', 'Aumenta la salute e i danni inflitti dai nemici che non sono boss del 20%.', 67186), +(34731, 'itIT', 'Tirannia', 'Aumenta la salute dei boss del 25%. Aumenta i danni inflitti dai boss e dai suoi servitori fino al 15%.', 67186), +(34730, 'itIT', 'Tirannia e Potenziamento', 'Questi modificatori potenziano ulteriormente i nemici nelle spedizioni Mitiche+. Uno si attiva al livello 7 della modalità Mitica e l\'altro al livello 10 della modalità Mitica, cambiando settimanalmente.', 67186), +(34727, 'itIT', 'Patto di Xal\'atath: Voracità', '', 67186), +(34725, 'itIT', 'Patto di Xal\'atath: Vincolato dal Vuoto', '', 67186), +(34722, 'itIT', 'Patto di Xal\'atath: Pulsar', '', 67186), +(34720, 'itIT', 'Mitica livello 6', '$bullet;|cFF2959D3|Hspell:1284818|h[Guida di Lindormi]|h|r viene rimossa.\n\nI personaggi che sono specializzati come difensori possono parlare con Lindormi vicino al portale dei Flussi Temporali o alla fine di una spedizione Mitica+ per ottenere |cFF2959D3|Hspell:1295986|h[Bagliore di Lindormi]|h|r, che continua a evidenziare le forze nemiche.', 67186), +(35809, 'itIT', 'Section 158', '', 67186), +(35491, 'itIT', 'Sezione 69', '', 67186), +(35490, 'itIT', 'Sezione 70', '', 67186), +(35489, 'itIT', 'Sezione 76', '', 67186), +(35488, 'itIT', 'Sezione 67', '$[!15,16\nIn modalità Eroica e superiore, Galvanizzazione scarica una Corrente Eccessiva.$]', 67186), +(35477, 'itIT', 'Sezione 22', '', 67186), +(35476, 'itIT', 'Sezione 31', '', 67186), +(35475, 'itIT', 'Sezione 30', '', 67186), +(35474, 'itIT', 'Sezione 29', '', 67186), +(35473, 'itIT', 'Sezione 31', '', 67186), +(35472, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.\n$[!16\nIn modalità Mitica, i Cristalli dell\'Alba sono a rischio di Fine della Luce.$]', 67186), +(35471, 'itIT', 'Sezione 22', '', 67186), +(35470, 'itIT', 'Sezione 31', '', 67186), +(35469, 'itIT', 'Sezione 30', '', 67186), +(35468, 'itIT', 'Sezione 29', '', 67186), +(35467, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.\n$[!15\nIn modalità Eroica, i Cristalli dell\'Alba potrebbero versare Lacrime di L\'ura.$]', 67186), +(35466, 'itIT', 'Sezione 22', '', 67186), +(35465, 'itIT', 'Sezione 31', '', 67186), +(35464, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.', 67186), +(35463, 'itIT', 'Sezione 22', '', 67186), +(35462, 'itIT', 'Sezione 31', '', 67186), +(35461, 'itIT', 'Sezione 30', '', 67186), +(35460, 'itIT', 'Sezione 29', '', 67186), +(35459, 'itIT', 'Sezione 31', '', 67186), +(35458, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.\n$[!16\nIn modalità Mitica, i Cristalli dell\'Alba sono a rischio di Fine della Luce.$]', 67186), +(35457, 'itIT', 'Sezione 22', '', 67186), +(35456, 'itIT', 'Sezione 31', '', 67186), +(35455, 'itIT', 'Sezione 30', '', 67186), +(35454, 'itIT', 'Sezione 29', '', 67186), +(35453, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.\n$[!15\nIn modalità Eroica, i Cristalli dell\'Alba potrebbero versare Lacrime di L\'ura.$]', 67186), +(35452, 'itIT', 'Sezione 22', '', 67186), +(35451, 'itIT', 'Sezione 31', '', 67186), +(35450, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.', 67186), +(35449, 'itIT', 'Sezione 22', '', 67186), +(35448, 'itIT', 'Sezione 31', '', 67186), +(35447, 'itIT', 'Sezione 30', '', 67186), +(35446, 'itIT', 'Sezione 29', '', 67186), +(35445, 'itIT', 'Sezione 31', '', 67186), +(35444, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.\n$[!16\nIn modalità Mitica, i Cristalli dell\'Alba sono a rischio di Fine della Luce.$]', 67186), +(35443, 'itIT', 'Sezione 22', '', 67186), +(35442, 'itIT', 'Sezione 31', '', 67186), +(35441, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.', 67186), +(35440, 'itIT', 'Sezione 108', '', 67186), +(35439, 'itIT', 'Sezione 108', '', 67186), +(35438, 'itIT', 'Sezione 107', '', 67186), +(35435, 'itIT', 'Sezione 105', '', 67186), +(35434, 'itIT', 'Sezione 104', '', 67186), +(35418, 'itIT', 'Sezione 108', '', 67186), +(35373, 'itIT', 'Sezione 30', '', 67186), +(35371, 'itIT', 'Sezione 29', '', 67186), +(35366, 'itIT', 'Sezione 31', '', 67186), +(35361, 'itIT', 'Sezione 22', '', 67186), +(35360, 'itIT', 'Cristallo dell\'Alba', 'Un frammento purificato di una Naaru che può essere trasportato dai personaggi.\n$[!15\nIn modalità Eroica, i Cristalli dell\'Alba potrebbero versare Lacrime di L\'ura.$]', 67186), +(35357, 'itIT', 'Sezione 106', '', 67186), +(35344, 'itIT', 'Sezione 23', '', 67186), +(35343, 'itIT', 'Sezione 22', '', 67186), +(35342, 'itIT', 'Cristallo del Vespro', 'Un frammento attenuato di una Naaru che può essere ripristinato.', 67186), +(35341, 'itIT', 'Sezione 24', '', 67186), +(35340, 'itIT', 'Cristallo della Mezzanotte', 'Frammento di una Naaru Oscura, ormai impossibile da salvare.', 67186), +(35339, 'itIT', 'Sezione 19', '', 67186), +(35338, 'itIT', 'Sezione 18', '', 67186), +(35336, 'itIT', 'Sezione 16', '', 67186), +(35328, 'itIT', 'Sezione 11', '', 67186), +(35327, 'itIT', 'Sezione 10', '', 67186), +(35326, 'itIT', 'Sezione 9', '', 67186), +(35325, 'itIT', 'Sezione 8', '$[!15\nIn modalità Eroica, il numero di note aumenta a ogni melodia.$]', 67186), +(35324, 'itIT', 'Sezione 11', '', 67186), +(35319, 'itIT', 'Sezione 80', '', 67186), +(35317, 'itIT', 'Sezione 69', '', 67186), +(35316, 'itIT', 'Sezione 70', '', 67186), +(35315, 'itIT', 'Sezione 76', '', 67186), +(35314, 'itIT', 'Sezione 67', '$[!15,16\nIn modalità Eroica e superiore, Galvanizzazione scarica una Corrente Eccessiva.$]', 67186), +(35311, 'itIT', 'Sezione 69', '', 67186), +(35309, 'itIT', 'Sezione 74', '', 67186), +(35274, 'itIT', 'Sezione 70', '$[!16\nIn modalità Mitica, Fissione Cosmica raggiunge la Criticità.$]', 67186), +(35273, 'itIT', 'Sezione 69', '', 67186), +(35272, 'itIT', 'Sezione 67', '', 67186), +(35131, 'itIT', 'Sezione 13', '', 67186), +(35106, 'itIT', 'Sezione 67', '', 67186), +(35068, 'itIT', 'Sezione 64', '', 67186), +(35067, 'itIT', 'Sezione 63', '', 67186), +(35041, 'itIT', 'Sezione 35', '', 67186), +(35040, 'itIT', 'Sezione 51', '', 67186), +(35038, 'itIT', 'Sezione 14', '', 67186), +(35037, 'itIT', 'Sezione 14', '', 67186), +(35036, 'itIT', 'Intermezzo: Eclissi totale', 'Osserva la luce affievolirsi e andare in frantumi.', 67186), +(34847, 'itIT', 'Sezione 11', '', 67186), +(34846, 'itIT', 'Sezione 10', '', 67186), +(34845, 'itIT', 'Sezione 9', '', 67186), +(34844, 'itIT', 'Sezione 8', '', 67186), +(34474, 'itIT', 'Sezione 44', '', 67186), +(34456, 'itIT', 'Sezione 45', '', 67186), +(34450, 'itIT', 'Sezione 46', '', 67186), +(34243, 'itIT', 'Sezione 14', '', 67186), +(34242, 'itIT', 'Sezione 14', '', 67186), +(34001, 'itIT', 'Sezione 38', '', 67186), +(34000, 'itIT', 'Sezione 35', '', 67186), +(33990, 'itIT', 'Sezione 32', '', 67186), +(33989, 'itIT', 'Sezione 32', '', 67186), +(33983, 'itIT', 'Sezione 23', '', 67186), +(33982, 'itIT', 'Sezione 22', '', 67186), +(33981, 'itIT', 'Cristallo del Vespro', 'Un frammento attenuato di una Naaru che può essere ripristinato.', 67186), +(33975, 'itIT', 'Sezione 25', '', 67186), +(33924, 'itIT', 'Sezione 24', '', 67186), +(33742, 'itIT', 'Cristallo della Mezzanotte', 'Frammento di una Naaru Oscura, ormai impossibile da salvare.', 67186), +(33741, 'itIT', 'Sezione 19', '', 67186), +(33740, 'itIT', 'Sezione 15', '', 67186), +(33739, 'itIT', 'Sezione 18', '', 67186), +(33738, 'itIT', 'Matrice di Soppressione', '', 67186), +(33737, 'itIT', 'Sezione 16', '', 67186), +(33640, 'itIT', 'Sezione 12', '', 67186), +(33638, 'itIT', 'Fase 2: Il Reattore Oscuro', 'Avventurati nel motore della desolazione.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Sezione 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='itIT'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='itIT'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'itIT', 'Salve!\n\nContempla la meraviglia di questo dominio traboccante di ABBONDANZA GLORIOSA! Essa dilaga, avanza e rifiuta ogni contenimento.\n\nLa tua devozione verso il divino merita un piccolo gesto di benevolenza. Questa volta, sotto forma di Abbondanza Pura.\n\nSappi che alcune offerte, come Vitalità Fusa, ora compariranno anche presso altri mercanti. Qualora le tue avventure ti conducessero nei pressi degli Abissi di Zul\'aman, li incontrerai sicuramente.\n\nA te, raccolti cospicui.\n\n- Dundun, Loa dell\'Abbondanza', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='itIT'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'itIT', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='itIT'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'itIT', 'Accademia di Algeth\'ar', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'itIT', 'Segatronchi ad Alto Rendimento', '|cFFFFD200Mercante:|r Lindormi|n', '', 67186), +(3009, 'itIT', 'Segatronchi Speculativo', '|cFFFFD200Mercante:|r Lindormi|n', '', 67186), +(3008, 'itIT', 'Segatronchi Verde Profitto', '|cFFFFD200Mercante:|r Lindormi|n', '', 67186), +(3007, 'itIT', 'Segatronchi Blu Contante', '|cFFFFD200Mercante:|r Lindormi|n', '', 67186), +(3006, 'itIT', 'Meccanotuta di Ametista', '|cFFFFD200Mercante:|r Lindormi|n', '', 67186), +(3005, 'itIT', 'Calcamorte Ceruleo', '|cFFFFD200Mercante:|r Lindormi|n', '', 67186), +(2535, 'itIT', 'Lince Sfregiata dal Vuoto', '|cFFFFD200Bottino:|r Borsa del Cultista Confiscata', 'Domare le linci è una pratica che gli Arathi hanno affinato per anni. Benché i cultisti del Tramonto restino devoti alla loro causa, continuano a tramandare questa tradizione.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='itIT'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'itIT', 'Cattura pesci con i Pescatori dell\'Abisso', 'Parla con il Sommozzatore Jeju sulla costa degli Abissi di Zul\'aman per iniziare a catturare pesci.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'itIT', '', 67186), +(158259, 'itIT', '', 67186), +(158261, 'itIT', '', 67186), +(156069, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: cuore dei mari', 67186), +(151169, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Idolo delle Profondità', 67186), +(151168, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Rete a Triplo Filo', 67186), +(151167, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Rete da Secche', 67186), +(151166, 'itIT', 'Richiede l\'impresa: Pescatori dell\'Abisso: Lanciarpioni a Torretta del Nucleocavo', 67186), +(151165, 'itIT', 'Richiede l\'impresa: Pescatori dell\'Abisso: Lanciarpioni Pesante', 67186), +(151161, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Pinne della Fossa di Pahk', 67186), +(151160, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Grasso delle Profondità', 67186), +(151159, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Raccordi Rinforzati', 67186), +(151158, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Bombola del Respiro di Nalorakk', 67186), +(151157, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Bombola Testata in Profondità', 67186), +(151155, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Bombola Usata del Sommozzatore', 67186), +(155979, 'itIT', '', 67186), +(157695, 'itIT', 'Disponibile solo nelle Scorribande di Grado 11.', 67186), +(157666, 'itIT', '', 67186), +(157603, 'itIT', 'Si sblocca coi progressi nella Stagione 1 dei Viaggi nelle Scorribande.', 67186), +(154160, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154159, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154158, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154157, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154156, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154155, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154154, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154153, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154152, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(154151, 'itIT', 'Hai già ottenuto tutte le trasmogrificazioni contenute in questa cassa.', 67186), +(157668, 'itIT', 'Non possiedi una Sella Senza Tempo, quindi non puoi acquistare questo oggetto.', 67186), +(155203, 'itIT', '', 67186), +(155192, 'itIT', '', 67186), +(155185, 'itIT', '', 67186), +(154642, 'itIT', '', 67186), +(156525, 'itIT', '', 67186), +(156524, 'itIT', '', 67186), +(151196, 'itIT', '', 67186), +(157003, 'itIT', '', 67186), +(157002, 'itIT', '', 67186), +(156957, 'itIT', '', 67186), +(156933, 'itIT', '', 67186), +(151162, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Esca per Pinnette', 67186), +(156816, 'itIT', '', 67186), +(154472, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Monocolo Pressurizzato', 67186), +(151164, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Carne di Metagerride', 67186), +(151163, 'itIT', 'Richiede l\'impresa:|nPescatori dell\'Abisso: Esca per Plecopinna', 67186), +(142975, 'itIT', 'Non puoi ottenere 10 Emblemi dell\'Alba del Mito al momento.', 67186), +(156592, 'itIT', '', 67186), +(156591, 'itIT', '', 67186), +(156536, 'itIT', '', 67186), +(156537, 'itIT', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'itIT', 'Pescatori dell\'Abisso', 67186), +(3389, 'itIT', 'Assalto ai Piloni: Cascate Scintillas', 67186), +(3308, 'itIT', 'Fenditura del Vuoto: Spiaggia del Tramonto', 67186), +(3291, 'itIT', 'Vuoto di Potenza', 67186), +(3280, 'itIT', 'Portale Imprevedibile', 67186), +(3251, 'itIT', 'Rituale del Vuoto: Grizzly', 67186), +(3245, 'itIT', 'Fatica e Fermento', 67186), +(3234, 'itIT', 'Reliquie Corrotte della Palude', 67186), +(3233, 'itIT', 'Mentre siamo a terra', 67186), +(3229, 'itIT', 'Isola del Calcavuoto', 67186), +(3209, 'itIT', '[DNT] Example Scenario', 67186), +(3206, 'itIT', 'Modello Scenario', 67186), +(3180, 'itIT', 'Rituale Rinvigorito', 67186), +(3174, 'itIT', 'Incursione del Vuoto', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'itIT', 'Cattura la fauna acquatica e scopri tesori negli Abissi di Zul\'aman.', 'Pescatori dell\'Abisso', 67186), +(16090, 'itIT', '', 'Fase di Ricerca', 67186), +(16088, 'itIT', '', 'Fase di Occultamento', 67186), +(16441, 'itIT', 'Raccogli le Scintille Arcane dai Naga e dai loro prosciugatori e portale ai Piloni.', 'Dare energia ai piloni', 67186), +(16376, 'itIT', 'Sconfiggi il Comandante Domanaar.', 'Falx e Martello', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'itIT', '', '', 67186), +(58555, 'itIT', '', '', 67186), +(58554, 'itIT', '', '', 67186), +(58553, 'itIT', '', '', 67186), +(58545, 'itIT', '', '', 67186), +(58544, 'itIT', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'itIT', 'Tessilenza degli Algari', '', 67186), +(8555, 'itIT', '+$k1 Attributo Primario e +$k2 Armatura', '', 67186), +(8554, 'itIT', '+$k1 Attributo Primario e +$k2 Armatura', '', 67186), +(5001, 'itIT', 'Chiodatura di Ectoferro', '', 67186), +(4216, 'itIT', 'Chiodatura di Pirio', '', 67186), +(4215, 'itIT', 'Chiodatura d\'Elementio', '', 67186), +(3748, 'itIT', 'Chiodatura di Titanio', '', 67186), +(2714, 'itIT', 'Chiodatura di Vilacciaio', '', 67186), +(1704, 'itIT', 'Chiodatura di Torio', '', 67186), +(463, 'itIT', 'Chiodatura di Mithril', '', 67186), +(43, 'itIT', 'Chiodatura di Ferro', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'itIT', 'Stordito', 67186), +(1253377, 'itIT', 'Sollevazione Meteoritica', 67186), +(1270444, 'itIT', 'Rabbia Slegata', 67186), +(441587, 'itIT', 'Copertura Nuvolosa', 67186), +(441429, 'itIT', 'Copertura Nuvolosa', 67186), +(1298446, 'itIT', 'Legame Indistruttibile', 67186), +(1223323, 'itIT', 'Legame Indistruttibile', 67186), +(1293502, 'itIT', '[DNT] Fused Vitality', 67186), +(1270491, 'itIT', 'Devozione Empia', 67186), +(1241077, 'itIT', 'Falce Putrescente', 67186), +(458128, 'itIT', 'Falce Putrescente', 67186), +(363916, 'itIT', 'Scaglie d\'Ossidiana', 67186), +(353319, 'itIT', 'Tessipace', 67186), +(125174, 'itIT', 'Tocco del Karma', 67186), +(122470, 'itIT', 'Tocco del Karma', 67186), +(23920, 'itIT', 'Rifletti Incantesimo', 67186), +(1237942, 'itIT', 'Esca', 67186), +(1235216, 'itIT', 'Percezione di Midnight', 67186), +(1225245, 'itIT', 'Brulicatore dei Sin\'dorei', 67186), +(1295986, 'itIT', 'Bagliore di Lindormi', 67186), +(1278156, 'itIT', 'Guida di Lindormi', 67186), +(1298074, 'itIT', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'itIT', '', 67186), +(390260, 'itIT', '', 67186), +(1297413, 'itIT', 'Provocazione Scheletri', 67186), +(149981, 'itIT', 'Provocazione Scheletri', 67186), +(1289789, 'itIT', 'Sembianza Battagliera', 67186), +(1283168, 'itIT', 'Combinazione Schegge del Vuoto Ascendenti', 67186), +(1282778, 'itIT', 'Nucleo del Vuoto Ascendente', 67186), +(1264876, 'itIT', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'itIT', 'Residuo Spettrale', 67186), +(447444, 'itIT', 'Fenditura Entropica', 67186), +(210824, 'itIT', 'Tocco del Magus', 67186), +(1280123, 'itIT', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'itIT', 'Segatronchi Speculativo', 67186), +(1296759, 'itIT', 'Segatronchi ad Alto Rendimento', 67186), +(1296758, 'itIT', 'Segatronchi Verde Profitto', 67186), +(1296756, 'itIT', 'Segatronchi Blu Contante', 67186), +(1296734, 'itIT', 'Meccanotuta di Ametista', 67186), +(1296731, 'itIT', 'Calcamorte Ceruleo', 67186), +(466930, 'itIT', 'Freccia Nera', 67186), +(1291739, 'itIT', 'Dono Malevolo', 67186), +(1281946, 'itIT', 'Pescatore dell\'Abisso', 67186), +(1270634, 'itIT', 'Deviatore di Sovraccarico', 67186), +(1270085, 'itIT', 'Protezione Cupa', 67186), +(1270079, 'itIT', 'Protezione Cupa', 67186), +(1258411, 'itIT', 'Imitazione di Khadgar di Kreynna', 67186), +(1258410, 'itIT', 'Imitazione di Khadgar di Kreynna', 67186), +(1258336, 'itIT', 'Ultimo Avvertimento', 67186), +(1257809, 'itIT', 'Imitazione di Khadgar di Kreynna', 67186), +(1257729, 'itIT', 'Rianimazione', 67186), +(1257728, 'itIT', 'Rianimazione', 67186), +(1257716, 'itIT', 'Rianimazione', 67186), +(1257505, 'itIT', 'Protezione Cupa', 67186), +(1256189, 'itIT', 'Pescatore dell\'Abisso', 67186), +(1255966, 'itIT', 'Rigenerazione', 67186), +(1253337, 'itIT', 'Imitazione di Khadgar di Kreynna', 67186), +(1253336, 'itIT', 'Imitazione di Khadgar di Kreynna', 67186), +(1253194, 'itIT', 'Misure Ingegnose', 67186), +(1253193, 'itIT', 'Misure Ingegnose', 67186), +(1253185, 'itIT', 'Misure Ingegnose', 67186), +(1253064, 'itIT', 'Pescatore dell\'Abisso', 67186), +(1252431, 'itIT', 'Schianto di Fulmini (Scatenato)', 67186), +(1241032, 'itIT', 'Ultimo Avvertimento', 67186), +(1241023, 'itIT', 'Ultimo Avvertimento', 67186), +(1235076, 'itIT', 'Misure Ingegnose', 67186), +(1235075, 'itIT', 'Misure Ingegnose', 67186), +(1235072, 'itIT', 'Misure Ingegnose', 67186), +(1235067, 'itIT', 'Misure Ingegnose', 67186), +(1235066, 'itIT', 'Misure Ingegnose', 67186), +(1235065, 'itIT', 'Misure Ingegnose', 67186), +(1235037, 'itIT', 'Misure Ingegnose', 67186), +(1233865, 'itIT', 'Corona del Nulla', 67186), +(1228865, 'itIT', 'Lince Sfregiata dal Vuoto', 67186), +(1225598, 'itIT', 'Pescatore dell\'Abisso', 67186), +(1225322, 'itIT', 'Boschi di Cantoeterno', 67186), +(1225281, 'itIT', 'Lumipinna Tenero', 67186), +(1225277, 'itIT', 'Pescecanto Ripristinato', 67186), +(1225273, 'itIT', 'Polpo Minaccioso', 67186), +(1225272, 'itIT', 'Pesce Scorpione Luccicante', 67186), +(444803, 'itIT', 'Celacanto Risvegliato', 67186), +(1250759, 'itIT', 'Granulo Oscuro', 67186), +(1276894, 'itIT', 'Trasmutazione: Nucleo del Vuoto Elementale', 67186), +(1296448, 'itIT', 'Balzo Sprezzante', 67186), +(472053, 'itIT', 'Balzo Sprezzante', 67186), +(1296214, 'itIT', 'Matrice del Vuoto Galattico', 67186), +(1296205, 'itIT', 'Triplice Copia', 67186), +(1296169, 'itIT', 'Nube della Tempesta', 67186), +(1296168, 'itIT', 'Nube della Tempesta', 67186), +(1291767, 'itIT', 'Pioggia di Meteore', 67186), +(1296406, 'itIT', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'itIT', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'itIT', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'itIT', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'itIT', 'Bagliore di Lindormi', 67186), +(1265971, 'itIT', 'Armamenti Empi', 67186), +(444769, 'itIT', 'Disfatta Imminente', 67186), +(1256191, 'itIT', 'Conclusione dell\'Immersione', 67186), +(1272821, 'itIT', 'Saggezza del Muro', 67186), +(1244331, 'itIT', 'Ultrafioritura', 67186), +(441845, 'itIT', 'Colpo al Cuore', 67186), +(243435, 'itIT', 'Birra Fortificante', 67186), +(221562, 'itIT', 'Asfissia', 67186), +(205630, 'itIT', 'Presa di Illidan', 67186), +(198158, 'itIT', 'Invisibilità di Massa', 67186), +(108194, 'itIT', 'Asfissia', 67186), +(1291860, 'itIT', 'Cibo e Bevande', 67186), +(1291859, 'itIT', 'Cibo e Bevande', 67186), +(1291858, 'itIT', 'Cibo e Bevande', 67186), +(1291857, 'itIT', 'Cibo e Bevande', 67186), +(1291856, 'itIT', 'Cibo e Bevande', 67186), +(1291855, 'itIT', 'Cibo e Bevande', 67186), +(1291854, 'itIT', 'Cibo e Bevande', 67186), +(1291853, 'itIT', 'Cibo e Bevande', 67186), +(1291852, 'itIT', 'Cibo e Bevande', 67186), +(1291851, 'itIT', 'Cibo e Bevande', 67186), +(1291850, 'itIT', 'Cibo e Bevande', 67186), +(1291849, 'itIT', 'Cibo e Bevande', 67186), +(1291848, 'itIT', 'Cibo', 67186), +(1291847, 'itIT', 'Cibo', 67186), +(1291846, 'itIT', 'Cibo', 67186), +(1291845, 'itIT', 'Cibo', 67186), +(1291844, 'itIT', 'Cibo', 67186), +(1291843, 'itIT', 'Cibo', 67186), +(1291842, 'itIT', 'Cibo', 67186), +(1291841, 'itIT', 'Cibo', 67186), +(1291840, 'itIT', 'Cibo', 67186), +(1291839, 'itIT', 'Cibo', 67186), +(1291838, 'itIT', 'Cibo', 67186), +(1291837, 'itIT', 'Cibo', 67186), +(1291831, 'itIT', 'Bevanda', 67186), +(1291828, 'itIT', 'Cibo', 67186), +(1291827, 'itIT', 'Cibo', 67186), +(1291826, 'itIT', 'Cibo', 67186), +(1291825, 'itIT', 'Cibo', 67186), +(1291824, 'itIT', 'Cibo', 67186), +(1291822, 'itIT', 'Cibo', 67186), +(1291791, 'itIT', 'Bevanda', 67186), +(1290929, 'itIT', 'Bevanda', 67186), +(1290926, 'itIT', 'Cibo', 67186), +(1290925, 'itIT', 'Cibo', 67186), +(1289221, 'itIT', 'Ricompensa del Guardiano della Luce', 67186), +(1286537, 'itIT', 'Cibo e Bevande', 67186), +(1286536, 'itIT', 'Bevanda', 67186), +(1286535, 'itIT', 'Cibo', 67186), +(1282100, 'itIT', 'Panca Animata', 67186), +(1282018, 'itIT', 'Panca Animata', 67186), +(1277461, 'itIT', 'Bevanda', 67186), +(1269922, 'itIT', 'Cibo', 67186), +(1269921, 'itIT', 'Cibo', 67186), +(1269920, 'itIT', 'Cibo', 67186), +(1269919, 'itIT', 'Bevanda', 67186), +(1269918, 'itIT', 'Bevanda', 67186), +(1269917, 'itIT', 'Cibo e Bevande', 67186), +(1269916, 'itIT', 'Cibo e Bevande', 67186), +(1232065, 'itIT', 'Cibo e Bevande', 67186), +(1295592, 'itIT', '[DNT] Clear Voidspire', 67186), +(1244341, 'itIT', 'Ultrafioritura', 67186), +(1262378, 'itIT', 'Corona d\'Ebano del Soggiogamento', 67186), +(1262377, 'itIT', 'Corona d\'Ebano del Soggiogamento', 67186), +(1262376, 'itIT', 'Corona d\'Ebano del Soggiogamento', 67186), +(1262365, 'itIT', 'Mandato della Morte Sacra', 67186), +(1262364, 'itIT', 'Mandato della Morte Sacra', 67186), +(1262359, 'itIT', 'Mandato della Morte Sacra', 67186), +(1248931, 'itIT', 'Corona d\'Ebano del Soggiogamento', 67186), +(1248927, 'itIT', 'Mandato della Morte Sacra', 67186), +(1277796, 'itIT', 'Annulla Magia', 67186), +(1256862, 'itIT', 'Freccia Antimagia', 67186), +(1256861, 'itIT', 'Salto Dissolvente', 67186), +(1256860, 'itIT', 'Focus Dissolvente', 67186), +(1256010, 'itIT', 'Campo di Annullamento', 67186), +(1295508, 'itIT', 'Apprendimento', 67186), +(1295497, 'itIT', 'Nerubiano', 67186), +(1295486, 'itIT', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'itIT', 'Preghiera Oscura', 67186), +(1243616, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1243615, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1243613, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1243605, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1243602, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1243588, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1243586, 'itIT', 'Essenza del Vuoto Instabile', 67186), +(1257701, 'itIT', 'Squartamento Rovente', 67186), +(444088, 'itIT', 'Consumo Fiamma', 67186), +(1295319, 'itIT', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'itIT', 'Dissonanza', 67186), +(1295278, 'itIT', 'Bersaglio di Frenesia Frantumante', 67186), +(1295243, 'itIT', 'Scarica Fatua', 67186), +(1295237, 'itIT', 'Scarica Fatua', 67186), +(1226037, 'itIT', 'Strappacarne', 67186), +(442615, 'itIT', 'Strappacarne', 67186), +(1295194, 'itIT', '[DNT] Cancel Aura', 67186), +(1241218, 'itIT', '[DNT] Vision of Self', 67186), +(1294288, 'itIT', 'Forza nelle Ombre', 67186), +(1286830, 'itIT', 'Segnale Bolla di Pesca - Sparizione', 67186), +(1236092, 'itIT', 'Incantamento Attrezzo - Destrezza dei Sin\'dorei', 67186), +(1293613, 'itIT', 'Pesca dei Pescatori dell\'Abisso', 67186), +(1286820, 'itIT', 'Pesca dei Pescatori dell\'Abisso', 67186), +(1286703, 'itIT', 'Pesca dei Pescatori dell\'Abisso', 67186), +(1253159, 'itIT', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'itIT', 'Apertura Cassa', 67186), +(1243683, 'itIT', 'Aggregato Glorioso di Emblemi dell\'Alba del Mito', 67186), +(190784, 'itIT', 'Destriero Divino', 67186), +(1292124, 'itIT', '[DNT] Material Creation - Health', 67186), +(1266413, 'itIT', 'Bruciatura da Vuoto', 67186), +(1244345, 'itIT', 'Bruciatura da Luce', 67186), +(1231327, 'itIT', 'Consumo del Vuoto', 67186), +(436358, 'itIT', 'Demolizione', 67186), +(1292071, 'itIT', 'Falange', 67186), +(1294776, 'itIT', 'Granulo del Sole Lucente', 67186), +(1273357, 'itIT', 'Granulo del Sole Lucente', 67186), +(1294727, 'itIT', 'Ben Nutrito', 67186), +(1294726, 'itIT', 'Arrostimento Toffolette', 67186), +(1294720, 'itIT', 'Tiro', 67186), +(1294703, 'itIT', 'Tiro', 67186), +(1294669, 'itIT', 'Carica', 67186), +(1294633, 'itIT', 'Sputo di Fuoco', 67186), +(1294563, 'itIT', 'Scudo Rotto', 67186), +(1277795, 'itIT', 'Annulla Magia', 67186), +(1272179, 'itIT', 'Impulso Eccentromagico - Non Acquistato', 67186), +(1269655, 'itIT', 'Furtività', 67186), +(1269654, 'itIT', 'Sentinella Meccanica', 67186), +(1269650, 'itIT', 'Salto Dissolvente', 67186), +(1269641, 'itIT', 'Passavarchi', 67186), +(1269640, 'itIT', 'Campo di Annullamento', 67186), +(1264545, 'itIT', 'Scambio', 67186), +(1259647, 'itIT', 'C4N3 D4 GU4RD14', 67186), +(1258362, 'itIT', 'Trappola: Uccello Canterino', 67186), +(1256009, 'itIT', 'Annulla Magia', 67186), +(1251813, 'itIT', 'Terrore Persistente', 67186), +(1294779, 'itIT', 'DNT', 67186), +(1294759, 'itIT', 'DNT', 67186), +(1294752, 'itIT', 'Sinfonia Tetra', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'itIT', '', 67186), +(37073, 'itIT', '', 67186), +(37072, 'itIT', '', 67186), +(37065, 'itIT', '', 67186), +(37064, 'itIT', '', 67186), +(37063, 'itIT', '', 67186), +(37050, 'itIT', '', 67186), +(37049, 'itIT', '', 67186), +(37048, 'itIT', '', 67186), +(36911, 'itIT', '', 67186), +(35166, 'itIT', '', 67186), +(35165, 'itIT', '', 67186), +(35164, 'itIT', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'itIT', 'Multipla e Meticolosa', '', 'Migliora le matrici d\'Incantamento, aumentando la probabilità di produrre oggetti aggiuntivi quando si creano illusioni o consumabili. Inoltre, fornisce +$ev1 $en1 per ogni punto in questa specializzazione.', 67186), +(137685, 'itIT', '', '', 'Creazione Multipla fornisce fino al +$ev1% di prodotti aggiuntivi quando si creano consumabili.', 67186), +(137681, 'itIT', '', '', 'Creazione Multipla fornisce fino al +$ev1% di prodotti aggiuntivi quando si creano consumabili.', 67186), +(133669, 'itIT', '', '', ' +$ev1 $en1 quando si creano leghe.|n|n Sblocca l\'abilità di usare i Reagenti di Finitura quando si creano leghe.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='itIT'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'itIT', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'itIT', 'Vesti del Giardino dell\'Abitante della Foresta', 67186), +(5646, 'itIT', 'Paramenti del Sommozzatore', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='itIT' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'itIT', 'Apprendista Kurgsbane', 67186), +(7698, 'itIT', 'Mercante di Duello di Decorazioni', 67186), +(7693, 'itIT', 'Forziere', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='itIT') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='itIT') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='itIT') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='itIT') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='itIT') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='itIT') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='itIT') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='itIT') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='itIT') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='itIT') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='itIT') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='itIT') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='itIT') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='itIT') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='itIT') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='itIT') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='itIT') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='itIT') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='itIT') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='itIT') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='itIT') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='itIT') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='itIT') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='itIT') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='itIT') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='itIT') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='itIT') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='itIT') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='itIT') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='itIT') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='itIT') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='itIT') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='itIT') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='itIT') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='itIT') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='itIT') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='itIT') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='itIT') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='itIT') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='itIT') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='itIT') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='itIT') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='itIT') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='itIT') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='itIT') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='itIT') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='itIT') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='itIT') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='itIT') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='itIT') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='itIT') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='itIT') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='itIT') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='itIT') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='itIT') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='itIT') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='itIT') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='itIT') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='itIT') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='itIT') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='itIT') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='itIT') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='itIT') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='itIT') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='itIT') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='itIT') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='itIT') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='itIT') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='itIT') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='itIT') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='itIT') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='itIT') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='itIT') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='itIT') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='itIT') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='itIT') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='itIT') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='itIT') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='itIT') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='itIT') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='itIT') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='itIT') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='itIT') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='itIT') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='itIT') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='itIT') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='itIT') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='itIT') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='itIT') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='itIT') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='itIT') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='itIT') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='itIT') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='itIT') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='itIT') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='itIT') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='itIT') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='itIT') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='itIT') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='itIT') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='itIT') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='itIT') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='itIT') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='itIT') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='itIT') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='itIT') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='itIT') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='itIT') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='itIT') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='itIT') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='itIT') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='itIT') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='itIT') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='itIT') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='itIT') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='itIT') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='itIT') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='itIT') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='itIT') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='itIT') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='itIT') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='itIT') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='itIT') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='itIT') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='itIT') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='itIT') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='itIT') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='itIT') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='itIT') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='itIT') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='itIT') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='itIT') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='itIT') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='itIT') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='itIT') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='itIT') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='itIT') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='itIT') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='itIT') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='itIT') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='itIT') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='itIT') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='itIT') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='itIT') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='itIT') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='itIT') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='itIT') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='itIT') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='itIT') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='itIT'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'itIT', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'itIT', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'itIT', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'itIT', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'itIT', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'itIT', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'itIT', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'itIT', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'itIT', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'itIT', 0x000000, 67186), +(2534422486, 3918, 'itIT', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'itIT', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'itIT', 0x0041756D656E746120692064616E6E6920696E666C6974746920646120243F63325B56696C646576617374617A696F6E655D5B52616767696F2064656C2056756F746F5D2064656C20247331252E0D0A0D0A243F63325B56696C646576617374617A696F6E655D5B436F6D706C6574617265206C612063616E616C697A7A617A696F6E652064692052616767696F2064656C2056756F746F5D20666F726E6973636520243F63325B24733420246C4672616D6D656E746F3A4672616D6D656E74693B2064656C6C27416E696D61206E656C20636F72736F2064656C6C6120737561206475726174615D5B24733320244C616363756D756C6F3A616363756D756C693B206469204361647574612064616C2056756F746F5D2E0000, 67186), +(3776013982, 1270444, 'itIT', 0x0046656E64656E7465206427416E696D61206520426F6D62612053706972697475616C652068616E6E6F20756E612070726F626162696C6974C3A020706572206F676E69204672616D6D656E746F2064656C6C27416E696D6120636F6E73756D61746F20646920666F726E6972652052616262696120536C65676174612C20636865207065726D65747465206469206174746976617265204D6574616D6F72666F73692044656D6F6E696163612073656E7A6120617474697661726E6520696C2074656D706F20646920726563757065726F2070657220756E61206475726174612064692024733120732E0000, 67186), +(3776013982, 441587, 'itIT', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'itIT', 0x00417474697661726520243F613133373033365B53636172696361206427416472656E616C696E615D5B4C616D652064274F6D6272615D206372656120756E61206E7562652064692066756D6F207065722024343431353837642C207065726D657474656E646F2061676C692061747461636368692064616C6C27696E7465726E6F2064656C6C61206E756265206469206170706C6963617265205475726261746F2E20536920616363756D756C612066696E6F206120243434313634306D3220244C766F6C74612061676769756E746976613A766F6C74652061676769756E746976653B2E0D0A0D0A4C276566666574746F2070657273697374652070657220243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D207320646F706F20657373657265207573636974692064616C6C61206E7562652E0000, 67186), +(3893700160, 445, 'itIT', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'itIT', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'itIT', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'itIT', 0x005269666F726E69736365206C276163636573736F2061205269636869616D6F3A2046616D69676C696F2E0D0A0D0A416C6C2765737465726E6F2C2061756D656E746120692064616E6E6920696E666C697474692064616C2066616D69676C696F2064656C20247331252065206E652072696475636520692064616E6E69207375626974692064656C20247332252E0000, 67186), +(3776013982, 1223323, 'itIT', 0x005269666F726E69736365206C276163636573736F2061205269636869616D6F3A2046616D69676C696F2E0D0A0D0A416C6C2765737465726E6F2C2061756D656E746120692064616E6E6920696E666C697474692064616C2066616D69676C696F2064656C20247331252065206E652072696475636520692064616E6E69207375626974692064656C20247332252E0000, 67186), +(3468628616, 1818, 'itIT', 0x4F62656C6973636F204F736375726F004F726120C3A820706F73736962696C65206163717569737461726520756E204F62656C6973636F204F736375726F20646120526165276E612061204C756E617267656E74612E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'itIT', 0x4F62656C6973636F204F736375726F004F726120C3A820706F73736962696C65206163717569737461726520756E204F62656C6973636F204F736375726F20646120526165276E612061204C756E617267656E74612E004F62656C6973636F204F736375726F002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'itIT', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'itIT', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'itIT', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'itIT', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'itIT', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'itIT', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'itIT', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'itIT', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'itIT', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'itIT', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'itIT', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'itIT', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'itIT', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'itIT', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'itIT', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'itIT', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'itIT', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'itIT', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'itIT', 0x000000, 67186), +(3037505077, 245345, 'itIT', 0x5000, 67186), +(3776013982, 1270491, 'itIT', 0x000056656C6F636974C3A02064276174746163636F2061756D656E746174612064656C20247731252E00, 67186), +(3776013982, 1241077, 'itIT', 0x0041756D656E7461206C612076656C6F636974C3A02064656C6C6520747565205069616768652073756C206265727361676C696F2064656C20247331252E0056656C6F636974C3A0206120637569206C65205069616768652064692024406175726163617374657220696E666C6967676F6E6F2064616E6E692061756D656E746174612064656C20247731252E00, 67186), +(3776013982, 458128, 'itIT', 0x00436F6C70697363652074757474692069206E656D6963692066726F6E74616C6920656E74726F20246131206D2C20696E666C696767656E646F202473312064616E6E69206461206F6D62726120652061756D656E74616E646F206C612076656C6F636974C3A0206120637569207475747465206C65207475652050696167686520696E666C6967676F6E6F2064616E6E69206169206265727361676C6920636F6C706974692064656C20243132343130373773312520706572202431323431303737642E0000, 67186), +(3899321669, 5919, 'itIT', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'itIT', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'itIT', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'itIT', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'itIT', 0x4E65726F0052696E666F727A61206C652074756520736361676C69652C207269647563656E646F20692064616E6E69207375626974692064656C2024733125243F733337343334385B206520726967656E6572616E646F20696E2024333734333439642073616C75746520706172692061692064616E6E6920696D7065646974695D5B5D2E20447572612024642E0044616E6E6920737562697469207269646F7474692064656C20247731252E243F2465345B2053616C75746520726967656E657261746120706172692061692064616E6E6920696D7065646974692E5D5B2E5D243F2477323D315B0D0A496D6D756E6520612065666665747469206427696E74657272757A696F6E6520652073696C656E7A69616D656E746F2E5D5B5D00, 67186), +(4033975491, 589353, 'itIT', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'itIT', 0x54616C656E746F205076500024407370656C6C6465736333353333313300496D6D756E652061692064616E6E69206D616769636920652061676C6920656666657474692064616E6E6F7369206D61676963692E00, 67186), +(3776013982, 125174, 'itIT', 0x0024407370656C6C646573633132323437300044616E6E6920737562697469206173736F72626974692E0D0A24313232343730733425206465692064616E6E69206173736F7262697469207265696E646972697A7A61746920616C6C612076697474696D61206166666C6974746120646120546F63636F2064656C204B61726D612E00, 67186), +(3776013982, 122470, 'itIT', 0x004173736F72626520692064616E6E6920737562697469207065722024642C2066696E6F206120756E206D617373696D6F2064656C20247333252064656C6C612073616C757465206D617373696D612065206E65207265696E646972697A7A6120696C20247334252073756C206265727361676C696F206E656D69636F20636F6D652064616E6E69206461206E617475726120696E2024313234323830642E0044616E6E6920696E666C6974746920616C204D6F6E61636F207265696E646972697A7A6174692073752071756573746F206265727361676C696F20636F6D652064616E6E69206461206E617475726120696E2024313234323830642E00, 67186), +(3776013982, 23920, 'itIT', 0x00416C7A6120243F63335B6C6F20736375646F5D5B6C2761726D615D20706572207269666C65747465726520243F613231333931355B6920737563636573736976692024323133393135733320696E63616E746573696D69206C616E63696174695D5B696C207072696D6F20696E63616E746573696D6F206C616E636961746F5D20636F6E74726F2064692074652065207269647572726520692064616E6E69206D6167696369207375626974692064656C2024333835333931733125207065722024642E00243F613138383637325B547574746920676C6920696E63616E746573696D6920737562697469207269666C657373692E5D5B5375636365737369766F20696E63616E746573696D6F2073756269746F207269666C6573736F2E5D00, 67186), +(1274215428, 190484, 'itIT', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'itIT', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'itIT', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'itIT', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'itIT', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'itIT', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'itIT', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'itIT', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'itIT', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'itIT', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'itIT', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'itIT', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'itIT', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'itIT', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'itIT', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'itIT', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'itIT', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'itIT', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'itIT', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'itIT', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'itIT', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'itIT', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'itIT', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'itIT', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'itIT', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'itIT', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'itIT', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'itIT', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'itIT', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'itIT', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'itIT', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'itIT', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'itIT', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'itIT', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'itIT', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'itIT', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'itIT', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'itIT', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'itIT', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'itIT', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'itIT', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'itIT', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'itIT', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'itIT', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'itIT', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'itIT', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'itIT', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'itIT', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'itIT', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'itIT', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'itIT', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'itIT', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'itIT', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'itIT', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'itIT', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'itIT', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'itIT', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'itIT', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'itIT', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'itIT', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'itIT', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'itIT', 0x0052696C616E63696120696C20706573636520696E20616371756120706572206F7474656E6572652024733220636F6D706574656E7A6120696E205065736361206469204D69646E69676874207065722024642E0D0A0D0A4C616E6369617265207069C3B920706573636920657374656E64652071756573746F2062656E65666963696F2066696E6F2061206D617373696D6F20244D31206D696E2E00436F6D706574656E7A6120696E205065736361206469205175656C275468616C61732061756D656E74617461206469202477322E00, 67186), +(3776013982, 1235216, 'itIT', 0x0052696C616E636961206C6120637265617475726120696E206163717561207065722061756D656E74617265206C612050657263657A696F6E65206469204D69646E6967687420646920247332207065722024642E0D0A0D0A4C616E6369617265207069C3B920637265617475726520657374656E6465206C61206475726174612064656C2062656E65666963696F2066696E6F206120756E206D617373696D6F20646920244D31206D696E2E0050657263657A696F6E65206469204D69646E696768742061756D656E74617461206469202477322E00, 67186), +(3776013982, 1225245, 'itIT', 0x00556E206D6973746F20646920736361676C6965206372656D697369206520636572756C65652061646F726E612071756573746F206167696C652070657363652E2050697574746F73746F20636F6D756E65206E656920426F736368692064692043616E746F657465726E6F2C20696C204272756C696361746F7265206465692053696E27646F726569207369206D756F7665206520696E74657261676973636520636F6E206C6520616371756520696E206261736520616C2062616E636F206469206375692066612070617274652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C653A7C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4172656520696E20637569207369207075C3B22074726F766172652071756573746F2070657363653A7C520D0A2D20426F736368692064692043616E746F657465726E6F0D0A2D205A756C27616D616E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F7A7A652064692050657363613A7C720D0A2D2046696F726974757261205269626F6C6C656E74650D0A2D20536369616D652064656C20506F7A7A6F20536F6C6172650D0A2D20496E6372657370617475726120537570657266696369616C650000, 67186), +(778162198, 397, 'itIT', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'itIT', 0x0100, 67186), +(3037505077, 243302, 'itIT', 0x0100, 67186), +(261693969, 95549, 'itIT', 0xFFFFFFFFFFFFFFFF416C6C61726D65206D616769636F0000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'itIT', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'itIT', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'itIT', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'itIT', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'itIT', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'itIT', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'itIT', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'itIT', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'itIT', 0x50756E74656767696F206461205065736361746F72653A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'itIT', 0x436F6D706C657461007C6346463165666630305065736361746F72692064656C6C2741626973736F3A20636F6D706C657461746F2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'itIT', 0xFFFFFFFFFFFFFFFF556E69727369206169205065736361746F72692064656C6C2741626973736F0000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'itIT', 0x536F6D6D6F7A7A61746F72652064656C2050726F666F6E646F00436F6D706C65746120676C69206576656E74692064656C205065736361746F72652064656C6C2741626973736F2061205A756C27616D616E2E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'itIT', 0x536F6D6D6F7A7A61746F72652064656C2050726F666F6E646F00436F6D706C65746120676C69206576656E74692064656C205065736361746F72652064656C6C2741626973736F2061205A756C27616D616E2E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'itIT', 0x5065736361746F72692064656C6C2741626973736F005061726C6120636F6E20696C20536F6D6D6F7A7A61746F7265204A656A752070657220696D6D6572676572746920636F6E2069205065736361746F72692064656C6C2741626973736F2E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'itIT', 0x50657269636F6C69206427C3896C697465004F7261206E656920536974692052697475616C6920636F6D7061696F6E6F206E656D6963692072617269206427C3A96C6974652063686520706F73736F6E6F206573736572652073636F6E666974746920706572206F7474656E6572652073706F676C69652072697475616C692061676769756E746976652E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'itIT', 0x50657269636F6C69206427C3896C697465004F7261206E656920536974692052697475616C6920636F6D7061696F6E6F206E656D6963692072617269206427C3A96C6974652063686520706F73736F6E6F206573736572652073636F6E666974746920706572206F7474656E6572652073706F676C69652072697475616C692061676769756E746976652E0050657269636F6C692050657269666572696369204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'itIT', 0x54726173706F72746F20436F72726F74746F004F726120C3A820706F73736962696C652061637175697374617265206C6F205A616D70616C6573746120546F636361746F2064616C2056756F746F2064616C2053657267656E746520566F726E696E2061204C756E617267656E74612E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'itIT', 0x54726173706F72746F20436F72726F74746F004F726120C3A820706F73736962696C652061637175697374617265206C6F205A616D70616C6573746120546F636361746F2064616C2056756F746F2064616C2053657267656E746520566F726E696E2061204C756E617267656E74612E0054726173706F72746F20436F72726F74746F002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'itIT', 0x53616E74756172692064656C20506F74657265204949004E756F76692073616E747561726920636F6E2062656E6566696369206D616769636920706F73736F6E6F206573736572652074726F76617469206E656920536974692052697475616C692E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'itIT', 0x53616E74756172692064656C20506F74657265204949004E756F76692073616E747561726920636F6E2062656E6566696369206D616769636920706F73736F6E6F206573736572652074726F76617469206E656920536974692052697475616C692E0053616E74756172692064656C20506F74657265204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'itIT', 0x5465736F7269205269766572697469004F7261206772616E6469207465736F726920706F73736F6E6F206573736572652074726F76617469206E656920536974692052697475616C6920706572206F7474656E6572652073706F676C69652061676769756E746976652E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'itIT', 0x5465736F7269205269766572697469004F7261206772616E6469207465736F726920706F73736F6E6F206573736572652074726F76617469206E656920536974692052697475616C6920706572206F7474656E6572652073706F676C69652061676769756E746976652E005465736F7269205269766572697469002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'itIT', 0x4D616769612052697475616C65202D204162626F6E64616E7A6120646920476C6F6269004327C3A820756E612070726F626162696C6974C3A0207069C3B920616C746120636865207369206D616E69666573746920756E20476C6F626F2064656C6C6120526967656E6572617A696F6E6520646F706F20756E277563636973696F6E65206E656920536974692052697475616C692E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'itIT', 0x4D616769612052697475616C65202D204162626F6E64616E7A6120646920476C6F6269004327C3A820756E612070726F626162696C6974C3A0207069C3B920616C746120636865207369206D616E69666573746920756E20476C6F626F2064656C6C6120526967656E6572617A696F6E6520646F706F20756E277563636973696F6E65206E656920536974692052697475616C692E004D616769612052697475616C65202D20477561726967696F6E6520494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'itIT', 0x5365727261676C696F20436F72726F74746F004F726120C3A820706F73736962696C652061637175697374617265206D6173636F7474652073656C657A696F6E6174652064616C2053657267656E746520566F726E696E2061204C756E617267656E74612E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'itIT', 0x5365727261676C696F20436F72726F74746F004F726120C3A820706F73736962696C652061637175697374617265206D6173636F7474652073656C657A696F6E6174652064616C2053657267656E746520566F726E696E2061204C756E617267656E74612E005365727261676C696F20436F72726F74746F002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'itIT', 0x53616E74756172692064656C20506F74657265004F726120C3A820706F73736962696C652074726F76617265206465692073616E747561726920636F6E2062656E6566696369206D6167696369206E656920536974692052697475616C692E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'itIT', 0x53616E74756172692064656C20506F74657265004F726120C3A820706F73736962696C652074726F76617265206465692073616E747561726920636F6E2062656E6566696369206D6167696369206E656920536974692052697475616C692E0053616E74756172692064656C20506F746572652049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'itIT', 0x53706F676C69652041676769756E74697665004F726120C3A820706F73736962696C652074726F7661726520706963636F6C69207465736F72692061676769756E74697669206E656920536974692052697475616C692E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'itIT', 0x53706F676C69652041676769756E74697665004F726120C3A820706F73736962696C652074726F7661726520706963636F6C69207465736F72692061676769756E74697669206E656920536974692052697475616C692E005465736F7269205370657264757469204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'itIT', 0x50657269636F6C692050657269666572696369004F7261206E656920536974692052697475616C6920636F6D7061696F6E6F206E656D69636920726172692063686520706F73736F6E6F206573736572652073636F6E666974746920706572206F7474656E6572652073706F676C69652072697475616C692061676769756E746976652E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'itIT', 0x50657269636F6C692050657269666572696369004F7261206E656920536974692052697475616C6920636F6D7061696F6E6F206E656D69636920726172692063686520706F73736F6E6F206573736572652073636F6E666974746920706572206F7474656E6572652073706F676C69652072697475616C692061676769756E746976652E0050657269636F6C6920506572696665726963692049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'itIT', 0x4D616769612052697475616C65202D20506F74656E7A612064656920476C6F62690041756D656E7461206C65206375726520666F726E6974652064616C20476C6F626F2064656C6C6120526967656E6572617A696F6E652064656C20313030252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'itIT', 0x4D616769612052697475616C65202D20506F74656E7A612064656920476C6F62690041756D656E7461206C65206375726520666F726E6974652064616C20476C6F626F2064656C6C6120526967656E6572617A696F6E652064656C20313030252E004D616769612052697475616C65202D20477561726967696F6E65204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'itIT', 0x4465636F72617A696F6E652052697475616C6500C38820706F73736962696C652061637175697374617265206163636573736F7269206461207363726976616E696120612074656D612056756F746F2064612052616527616E612061204C756E617267656E74612E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'itIT', 0x4465636F72617A696F6E652052697475616C6500C38820706F73736962696C652061637175697374617265206163636573736F7269206461207363726976616E696120612074656D612056756F746F2064612052616527616E612061204C756E617267656E74612E004172726564616D656E74692052697475616C69002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'itIT', 0x5465736F72692052697475616C6900506963636F6C69207465736F726920706F73736F6E6F206573736572652074726F76617469206E656920536974692052697475616C692E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'itIT', 0x5465736F72692052697475616C6900506963636F6C69207465736F726920706F73736F6E6F206573736572652074726F76617469206E656920536974692052697475616C692E005465736F72692053706572647574692049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'itIT', 0x4D616769612052697475616C65202D20476C6F62692064656C6C6120526967656E6572617A696F6E65004920476C6F62692064656C6C6120526967656E6572617A696F6E65207369206D616E6966657374616E6F206E656920536974692052697475616C692C20726967656E6572616E646F20696C203135252064656C6C612073616C757465206D617373696D612E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'itIT', 0x4D616769612052697475616C65202D20476C6F62692064656C6C6120526967656E6572617A696F6E65004920476C6F62692064656C6C6120526967656E6572617A696F6E65207369206D616E6966657374616E6F206E656920536974692052697475616C692C20726967656E6572616E646F20696C203135252064656C6C612073616C757465206D617373696D612E004D616769612052697475616C65202D20477561726967696F6E652049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'itIT', 0x46696E6573747261204F6372612064656C6C274964726F6D656C69666963696F00000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'itIT', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'itIT', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'itIT', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'itIT', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'itIT', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'itIT', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'itIT', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'itIT', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'itIT', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'itIT', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'itIT', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'itIT', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'itIT', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'itIT', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'itIT', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'itIT', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'itIT', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'itIT', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'itIT', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'itIT', 0x004C696E646F726D692065766964656E7A69612069206E656D6963692073656C657A696F6E61746920636865206E6F6E20736F6E6F20626F73732E2053636F6E666967676572652074757474692069206E656D6963692065766964656E7A6961746920736F64646973666572C3A020696C2072657175697369746F2072656C617469766F20616C6C6520666F727A65206E656D696368652E0053636F6E666967676572652074757474692069206E656D6963692065766964656E7A6961746920736F64646973666572C3A020696C2072657175697369746F2072656C617469766F20616C6C6520666F727A65206E656D696368652E00, 67186), +(3776013982, 1278156, 'itIT', 0x004C696E646F726D692065766964656E7A6961206520696E6465626F6C697363652069206E656D6963692073656C657A696F6E61746920636865206E6F6E20736F6E6F20626F73732C206520696D7065646973636520636865206C61206D6F7274652064656920706572736F6E616767692072696475636120696C2074656D706F2072657374616E74652E0D0A0D0A53636F6E666967676572652074757474692069206E656D6963692065766964656E7A6961746920736F64646973666572C3A020696C2072657175697369746F2072656C617469766F20616C6C6520666F727A65206E656D696368652E0053616C757465207269646F7474612064656C20247331252E0D0A44616E6E6920696E666C69747469207269646F7474692064656C20247332252E00, 67186), +(368401261, 7367, 'itIT', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'itIT', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'itIT', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'itIT', 0xB2790000, 67186), +(3495286709, 24475, 'itIT', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'itIT', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'itIT', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'itIT', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'itIT', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'itIT', 0x000000, 67186), +(3247720076, 42450, 'itIT', 0x041E000000, 67186), +(3247720076, 42449, 'itIT', 0x041E000000, 67186), +(3247720076, 42448, 'itIT', 0x04BE000000, 67186), +(3247720076, 42447, 'itIT', 0x04BE000000, 67186), +(3247720076, 42446, 'itIT', 0x0700000000, 67186), +(3247720076, 42445, 'itIT', 0x0100000000, 67186), +(3247720076, 40690, 'itIT', 0x0100000000, 67186), +(2014779773, 207, 'itIT', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'itIT', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'itIT', 0x000000, 67186), +(3776013982, 390260, 'itIT', 0x000000, 67186), +(261693969, 95304, 'itIT', 0xFFFFFFFFFFFFFFFF4E75636C656F2064656C2056756F746F204E6562756C6F736F3A20456D626C656D612064656C6C27416C62612064656C205665746572616E6F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'itIT', 0xFFFFFFFFFFFFFFFF4E75636C65692064656C2056756F746F204E6562756C6F73693A204D61726E61206469204C75636576756F74610000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'itIT', 0xFFFFFFFFFFFFFFFF4E75636C656F2064656C2056756F746F204E6562756C6F736F3A204F726F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'itIT', 0x0000000091000000, 67186), +(1673391669, 145, 'itIT', 0x8E000000, 67186), +(2791084701, 142, 'itIT', 0x32DC0600, 67186), +(3386943305, 340484, 'itIT', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'itIT', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'itIT', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'itIT', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'itIT', 0x4475656C6C6F206469204465636F72617A696F6E690047696F63612061206E6173636F6E64696E6F20636F6E206C276172726564616D656E746F002D205269636869656465204D69646E69676874206520696C206C6976656C6C6F2031302E0D0A2D205076502063617375616C652C206E6F6E206C6574616C652E0D0A2D20536F6C6F20636F646120696E20736F6C6974617269612E204C6120636F646120696E2067727570706F20C3A820646973706F6E6962696C652064616C6C6120546573736963616D706920416D6F6C656E6E652061204C756E617267656E74612E0D0A2D205365207469207374616E616E6F206520746920746F6363616E6F2C207365692066756F726921009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'itIT', 0x000000, 67186), +(3776013982, 149981, 'itIT', 0x000000, 67186), +(3330775162, 1897, 'itIT', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'itIT', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'itIT', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'itIT', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'itIT', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'itIT', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'itIT', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'itIT', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'itIT', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'itIT', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'itIT', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'itIT', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'itIT', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'itIT', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'itIT', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'itIT', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'itIT', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'itIT', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'itIT', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'itIT', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'itIT', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'itIT', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'itIT', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'itIT', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'itIT', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'itIT', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'itIT', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'itIT', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'itIT', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'itIT', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'itIT', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'itIT', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'itIT', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'itIT', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'itIT', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'itIT', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'itIT', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'itIT', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'itIT', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'itIT', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'itIT', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'itIT', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'itIT', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'itIT', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'itIT', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'itIT', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'itIT', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'itIT', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'itIT', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'itIT', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'itIT', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'itIT', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'itIT', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'itIT', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'itIT', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'itIT', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'itIT', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'itIT', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'itIT', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'itIT', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'itIT', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'itIT', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'itIT', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'itIT', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'itIT', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'itIT', 0x52617A7A69616C65005065726D6574746520646920617373756D657265206175746F6D61746963616D656E7465206C612053656D6269616E7A61207175616E646F206E6F6E207369207374616E6E6F206C616E6369616E646F20696E63616E746573696D6920647261636F6E6963692C20636F6D6520536F6666696F2064692046756F636F206F20566F6C74656767696F2E0000, 67186), +(3776013982, 1283168, 'itIT', 0x00436F6D62696E61203520536368656767652064656C2056756F746F20417363656E64656E7469207065722063726561726520756E204E75636C656F2064656C2056756F746F20417363656E64656E746520696E20677261646F2064692061756D656E7461726520696C206C6976656C6C6F20646920756E206F67676574746F20636F6D706C6574616D656E746520706F74656E7A6961746F20646920677261646F2045726F65206F204D69746F206F20646920756E2761726D61206F20756E206D6F6E696C65206469206D617373696D61207175616C6974C3A020417274696769616E616C6520526164696F736F2064656C6C612053746167696F6E652031206469204D69646E696768742E0000, 67186), +(3776013982, 1282778, 'itIT', 0x0041756D656E746120696C206C6976656C6C6F20646920756E206F67676574746F20636F6D706C6574616D656E746520706F74656E7A6961746F20646920677261646F2045726F65206F204D69746F206F20646920756E2761726D61206F20756E206D6F6E696C65206469206D617373696D61207175616C6974C3A020417274696769616E616C6520526164696F736F2064656C6C612053746167696F6E652031206469204D69646E696768742E0000, 67186), +(3776013982, 1264876, 'itIT', 0x00496E666C6967676572652064616E6E69206120756E206265727361676C696F206166666574746F20646120436F6C706F2064656C20436F6C6F73736F20636F6E20417373616C746F204D6F7274616C65206F2046656E64656E746520636F6C70656E646F20247332206F207069C3B9206265727361676C6920657374656E6465206C61206475726174612064656C6C276566666574746F20646920436F6C706F2064656C20436F6C6F73736F207375206469206C6F726F20646920247B2473312F313030307D2E3120732E0000, 67186), +(3776013982, 1255629, 'itIT', 0x004C27657373656E7A612072696C6173636961746120706F74656E7A6961206920706572736F6E616767692C2061756D656E74616E646F6E65206C612076656C6F636974C3A0206469206D6F76696D656E746F2064656C2024733125206520692064616E6E6920696E666C697474692C206C652063757265206520676C692065666665747469206469206173736F7262696D656E746F20666F726E6974692064656C2024733225207065722024642E20536920616363756D756C612C206D61206C6120647572617461206E6F6E2073692072696E6E6F76612E0056656C6F636974C3A0206469206D6F76696D656E746F2061756D656E746174612064656C20247331252E0D0A44616E6E6920696E666C697474692061756D656E746174692064656C20247332252E0D0A437572652065642065666665747469206469206173736F7262696D656E746F20666F726E6974692061756D656E746174692064656C20247333252E00, 67186), +(3776013982, 447444, 'itIT', 0x00243F63335B4170726520756E612066656E6469747572615D5B4465746F6E617A696F6E65204D656E74616C65206170726520756E612046656E64697475726120456E74726F706963615D2063686520736567756520696C206E656D69636F207065722024343530313933642E2049206E656D6963692073756C6C6120747261696574746F726961207375626973636F6E6F202434343734343873312064616E6E69206461206F6D627261206F676E692024343539333134743120732066696E6368C3A920736F6E6F206120706F72746174612E0000, 67186), +(372281185, 38, 'itIT', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'itIT', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'itIT', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'itIT', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'itIT', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'itIT', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'itIT', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'itIT', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'itIT', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'itIT', 0x0024407370656C6C6465736332313037323500416C207465726D696E65206573706C6F64652C20696E666C696767656E646F202477312064616E6E6920646120617263616E6F2E00, 67186), +(3386943305, 332898, 'itIT', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'itIT', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'itIT', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'itIT', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'itIT', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'itIT', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'itIT', 0x0464000000, 67186), +(3776013982, 1280123, 'itIT', 0x000000, 67186), +(3205218938, 54794, 'itIT', 0x424353484F5254444154454E4F59454152002532246420253124420001000000, 67186), +(3205218938, 22339, 'itIT', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'itIT', 0x534C4153485F5441524745545F4D41524B455232002F69620001000000, 67186), +(3205218938, 22331, 'itIT', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'itIT', 0x534C4153485F574F524C445F4D41524B455232002F696D0001000000, 67186), +(3205218938, 22329, 'itIT', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'itIT', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'itIT', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'itIT', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'itIT', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'itIT', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'itIT', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'itIT', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'itIT', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'itIT', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'itIT', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'itIT', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'itIT', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'itIT', 0x0054656E74612064692066696E69726520756E206265727361676C696F2066657269746F2C20696E666C696767656E646F202473312064616E6E69206461206F6D627261206520243436383537326F312064616E6E69206461206F6D62726120696E2024343638353732642E205574696C697A7A6162696C6520736F6C6F207375206E656D696369206368652068616E6E6F207069C3B92064656C2024733325206F206D656E6F2064656C20247332252064656C6C612073616C7574652072657374616E74652E0000, 67186), +(261693969, 95553, 'itIT', 0xFFFFFFFFFFFFFFFF44656E736974C3A0206D616E696665737461746100001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'itIT', 0xFFFFFFFFFFFFFFFF496E646167696E652073756C6C274F62656C6973636F204F736375726F0000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'itIT', 0xFFFFFFFFFFFFFFFF53666F6C7469726520692072616E6768690000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'itIT', 0x536361676C6965204D616C69676E650000466F726E6973636520756E20446F6E6F204D616C65766F6C6F20616C6C2741707072656E6469737461204B7572677362616E652C2061756D656E74616E646F6E65206C612073616C757465206520692064616E6E6920696E666C697474692064656C202431323839313032733125206520666F726E656E646F676C69206C276162696C6974C3A0206469206C616E63696172652054656D70657374652064656C6C612056656767656E7A612E00, 67186), +(3776013982, 1281946, 'itIT', 0x000000, 67186), +(3776013982, 1270634, 'itIT', 0x00526164646F7070696120692064616E6E692073756269746920646120756E20456C656D656E74616C6520417263616E6F2064616C6C612050756E74612064656C204E65787573204D69642761722070657220313520732E0044616E6E692073756269746920726164646F7070696174692E00, 67186), +(3776013982, 1270085, 'itIT', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'itIT', 0x004C27696E63616E7461746F7265207363616D626961206C612073616C75746520636F6E20756E6F20736375646F20636865206173736F7262652064616E6E692073756269746920706172692061207175656C6C27616D6D6F6E746172652E2053652072696D6F73736F2C206C6F20736375646F206573706C6F64652C20696E666C696767656E646F20243132373030383573312064616E6E69206461206F6D62726120616920706572736F6E6167676920656E74726F2024313237303038356131206D2E002477312064616E6E6920737562697469206173736F72626974692E0D0A53652072696D6F73736F2C20243132373030383573312064616E6E69206461206F6D62726120696E666C6974746920616920706572736F6E6167676920656E74726F2024313237303038356131206D2E00, 67186), +(3776013982, 1258411, 'itIT', 0x000000, 67186), +(3776013982, 1258410, 'itIT', 0x004265726C6120666F726E6973636520756E206566666574746F20636F736D657469636F2E00556E612076657273696F6E65206465626F6C652065206E6F6E2066756E7A696F6E616E74652064656C6C612050616C6C61204D6572617669676C696F7361206E6F6E20617474656E646520616C74726F20636865206C612073756120696E657669746162696C6520646973736F6C757A696F6E652E00, 67186), +(3776013982, 1258336, 'itIT', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'itIT', 0x000000, 67186), +(3776013982, 1257729, 'itIT', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'itIT', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'itIT', 0x004C27696E63616E7461746F726520696E697A69612061207269616E696D617273692C207265737573636974616E646F20636F6E20696C2024313235373732387331252064656C6C612073616C757465206D617373696D61207365206C612063616E616C697A7A617A696F6E65207669656E6520636F6D706C65746174612E005269616E696D617A696F6E652E205365206C612063616E616C697A7A617A696F6E65207669656E6520636F6D706C65746174612C206C27696E63616E7461746F72652072657375736369746120636F6E20696C2024313235373732387331252064656C6C612073616C757465206D617373696D612E00, 67186), +(3776013982, 1257505, 'itIT', 0x004C27696E63616E7461746F7265207363616D626961206C612073616C75746520636F6E20756E6F20736375646F20636865206173736F7262652064616E6E6920737562697469207061726920616C6C6120737465737361207175616E746974C3A02E002477312064616E6E6920737562697469206173736F72626974692E00, 67186), +(3776013982, 1256189, 'itIT', 0x000000, 67186), +(3776013982, 1255966, 'itIT', 0x004C27696E63616E7461746F726520726967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E692024743120732E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E692024743120732E00, 67186), +(3776013982, 1253337, 'itIT', 0x000000, 67186), +(3776013982, 1253336, 'itIT', 0x0000496D7065676E61746F2061206F737365727661726520756E27696C6C7573696F6E65206469736375746962696C652070726F766F636174612064616C6C27616C636F6CE280A600, 67186), +(3776013982, 1253194, 'itIT', 0x000043616E616C697A7A617A696F6E652E00, 67186), +(3776013982, 1253193, 'itIT', 0x000043616E616C697A7A617A696F6E652E00, 67186), +(3776013982, 1253185, 'itIT', 0x000043616E616C697A7A617A696F6E652E00, 67186), +(3776013982, 1253064, 'itIT', 0x000000, 67186), +(3776013982, 1252431, 'itIT', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'itIT', 0x0024407370656C6C646573633132343130323300243132353833333673312064616E6E6920646120617263616E6F20696E666C69747469206F676E692024743120732E00, 67186), +(3776013982, 1241023, 'itIT', 0x005A6F2767726F6E2073692070726F746567676520636F6E20756E6120626172726965726120636865206173736F72626520692064616E6E6920737562697469206D656E747265206C616E63696120556C74696D6F20417676657274696D656E746F2E20416C207465726D696E652064656C206C616E63696F2C206C612062617272696572612070756C7361206520696E666C6967676520243132353833333673312064616E6E6920646120617263616E6F2061207475747469206920706572736F6E61676769206F676E69202431323431303332743120732066696E6368C3A9206E6F6E207669656E65206469737472757474612E002477312064616E6E6920737562697469206173736F72626974692E00, 67186), +(3776013982, 1235076, 'itIT', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'itIT', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'itIT', 0x004C27416363756D756C61746F726520617474696E676520616C6C612070696C61206469207269736F727365207069C3B920766963696E612C20736F7374697475656E646F20756E612064656C6C6520737565206162696C6974C3A020636F6E20756E27616C7472612E243F44494646387C3F4449464632335B5D5B205075C3B220617665726520756E6120736F6C61206162696C6974C3A02070657220766F6C74612E5D0000, 67186), +(3776013982, 1235067, 'itIT', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'itIT', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'itIT', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'itIT', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'itIT', 0x00416C6C65726961207069617A7A6120696E746F726E6F206120756E20706572736F6E616767696F20756E6F20736375646F206469206D616769612064656C2056756F746F2C20636865206173736F7262652024733120637572652072696365767574652E2053652024407370656C6C6E616D6531323333383635207669656E6520646973736F6C74612C206C6F20736375646F2064276173736F7262696D656E746F2072696D616E656E74652073616C746120737520756E20616C74726F20706572736F6E616767696F2063617375616C652E002477312063757265207269636576757465206173736F72626974652E0D0A0D0A5365207669656E6520646973736F6C746F2C206C6F20736375646F2064276173736F7262696D656E746F2072696D616E656E74652073616C746120737520756E20616C74726F20706572736F6E616767696F2E00, 67186), +(3776013982, 1228865, 'itIT', 0x0045766F6361206520636F6E676564612071756573746120636176616C6361747572612E00243F6A31675B56656C6F636974C3A020612074657272612061756D656E746174612064656C20246A3167252E205D5B5D243F6A31665B56656C6F636974C3A020646920766F6C6F2061756D656E746174612064656C20246A3166252E205D5B5D243F6A31735B56656C6F636974C3A0206469206E756F746F2061756D656E746174612064656C20246A3173252E205D5B5D00, 67186), +(3776013982, 1225598, 'itIT', 0x00243F50433135343832385B7C636E4951313A2D204D7574612053756261637175656120426173657C525D5B5D243F50433135343832395B7C636E4951323A2D205475746120636F6E204769756E747572652052696E666F727A6174657C525D5B5D243F50433135343833305B7C636E4951333A2D2054757461204C756272696669636174612064612050726F666F6E646974C3A07C525D5B5D243F50433135343833325B7C636E4951343A2D205475746120636F6E2050696E6E652064656C6C6120466F737361206469205061686B7C525D5B5D0D0A56656C6F636974C3A0206469206E756F746F202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20426F6D626F6C612064656C205265737069726F20426173657C520D0A4F73736967656E6F206D617373696D6F2024313232343730306D3620756E6974C3A00D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20426F6D626F6C612055736174612064656C20536F6D6D6F7A7A61746F72657C520D0A4F73736967656E6F206D617373696D6F2024313237313631336D3620756E6974C3A00D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20426F6D626F6C61205465737461746120696E2050726F666F6E646974C3A07C520D0A4F73736967656E6F206D617373696D6F2024313237313631346D3620756E6974C3A00D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20426F6D626F6C612064656C205265737069726F206469204E616C6F72616B6B7C520D0A4F73736967656E6F206D617373696D6F2024313237313631356D3620756E6974C3A00D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D204573636120426173657C520D0A637265617475726520706573636162696C6920636F6D756E690D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D2045736361207065722050696E6E657474657C520D0A637265617475726520706573636162696C692070726567696174650D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20457363612070657220506C65636F70696E6E617C520D0A637265617475726520706573636162696C6920726172650D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D2045736361206469204361726E65206469204D657461676572726964657C520D0A637265617475726520706573636162696C69206570696368650D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D2052657465206461205365636368657C520D0A43726F7374616365692050756E67656E7469206520436176616C6C75636369204D6172696E69205370696E6F73690D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D2052657465206120547269706C6F2046696C6F7C520D0A7475747465206C6520637265617475726520706963636F6C650D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D204D6F6E6F636F6C6F2050726573737572697A7A61746F7C520D0A616E74696368652072656C69717569652073636F70726962696C695D5B5D0D0A00243F50433135343832385B7C636E4951313A2D204D7574612053756261637175656120426173657C525D5B5D243F50433135343832395B7C636E4951323A2D205475746120636F6E204769756E747572652052696E666F727A6174657C525D5B5D243F50433135343833305B7C636E4951333A2D2054757461204C756272696669636174612064612050726F666F6E646974C3A07C525D5B5D243F50433135343833325B7C636E4951343A2D205475746120636F6E2050696E6E652064656C6C6120466F737361206469205061686B7C525D5B5D0D0A56656C6F636974C3A0206469206E756F746F202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20426F6D626F6C612064656C205265737069726F20426173657C520D0A4F73736967656E6F206D617373696D6F2024313232343730306D3620756E6974C3A00D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20426F6D626F6C612055736174612064656C20536F6D6D6F7A7A61746F72657C520D0A4F73736967656E6F206D617373696D6F2024313237313631336D3620756E6974C3A00D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20426F6D626F6C61205465737461746120696E2050726F666F6E646974C3A07C520D0A4F73736967656E6F206D617373696D6F2024313237313631346D3620756E6974C3A00D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20426F6D626F6C612064656C205265737069726F206469204E616C6F72616B6B7C520D0A4F73736967656E6F206D617373696D6F2024313237313631356D3620756E6974C3A00D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D204573636120426173657C520D0A637265617475726520706573636162696C6920636F6D756E690D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D2045736361207065722050696E6E657474657C520D0A637265617475726520706573636162696C692070726567696174650D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20457363612070657220506C65636F70696E6E617C520D0A637265617475726520706573636162696C6920726172650D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D2045736361206469204361726E65206469204D657461676572726964657C520D0A637265617475726520706573636162696C69206570696368650D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D2052657465206461205365636368657C520D0A43726F7374616365692050756E67656E7469206520436176616C6C75636369204D6172696E69205370696E6F73690D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D2052657465206120547269706C6F2046696C6F7C520D0A7475747465206C6520637265617475726520706963636F6C650D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D204D6F6E6F636F6C6F2050726573737572697A7A61746F7C520D0A616E74696368652072656C69717569652073636F70726962696C695D5B5D00, 67186), +(3776013982, 1225322, 'itIT', 0x007C636E475245454E5F464F4E545F434F4C4F523A436F6D706574656E7A6120636F6E7369676C696174613A7C7220310D0A0D0A41637175652063616C6D65206520736572656E65206E652066616E6E6F20696C206C756F676F20696465616C65207065722069207065736361746F72692063686520766F676C696F6E6F20696E697A696172652061206573706C6F72617265206C65206D6572617669676C69652064656C6C652070726F666F6E646974C3A02E0D0A0D0A506F7A7A6520646973706F6E6962696C6920696E20717565737461207A6F6E613A0D0A2D20536369616D652064656C20506F7A7A6F20536F6C6172650D0A2D2046696F726974757261205269626F6C6C656E74650D0A2D20536369616D652064656C6C612046696F7269747572610D0A2D2056756F746F20566973636F736F0D0A2D2043617269636F2044697374726174746F0D0A2D205465736F726920506572647574690000, 67186), +(3776013982, 1225281, 'itIT', 0x00556E612063726561747572612067656E74696C65206368652070726566657269736365206C652061637175652063616C6D652064656920426F736368692064692043616E746F657465726E6F2E20506572207175616E746F207065736361726520696E2071756573746520616371756520706F7373612073656D62726172652073656D706C6963652C2071756573746F207061727469636F6C617265207065736365207369206C61736369612063617474757261726520736F6C6F20646169207065736361746F7269207069C3B920706572737069636163692E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C653A7C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4172656520696E20637569207369207075C3B22074726F766172652071756573746F2070657363653A7C520D0A2D20426F736368692064692043616E746F657465726E6F0D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F7A7A652064692050657363613A7C720D0A2D20546F7272656E74652046696F72656E74650000, 67186), +(3776013982, 1225277, 'itIT', 0x004C6520616371756520646920486172616E64617220636F6E74656E676F6E6F206D696E6572616C6920756E696369206368652C207175616E646F2070617373616E6F206174747261766572736F206C65206272616E6368696520646920756E20506573636563616E746F2052697072697374696E61746F2C20656D6574746F6E6F20756E27657465726561206D656C6F646961207375626163717565612E2051756573746F2063616E746F2C206772616465766F6C65207065722069207065736361746F72692C20616C6C6F6E74616E612069207072656461746F7269206772617A6965206120736F7474696C692076696272617A696F6E692E20536520756E207072656461746F726520636F6D65206C6120546574726120436F72726F74746120646F7665737365206176766963696E617273692074726F70706F2C206C652076696272617A696F6E6920646976656E74657265626265726F207069C3B920696E73746162696C692E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C653A7C520D0A0D0A24407370656C6C69636F6E313233373130342042616E63686574746920646920437563696E610D0A0D0A51756573746F2070657363652065737472656D616D656E7465207261726F2065207361706F7269746F20C3A820756E20696E6772656469656E746520696D706F7274616E7465206469206D6F6C746520726963657474652064656C6C6120437563696E61206469204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4172656520696E20637569207369207075C3B22074726F766172652071756573746F2070657363653A7C520D0A2D20426F736368692064692043616E746F657465726E6F0D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F7A7A652064692050657363613A7C720D0A2D20536369616D652064656C6C612046696F7269747572610D0A2D2046696F726974757261205269626F6C6C656E74650D0A2D20536369616D652064656C20506F7A7A6F20536F6C6172650D0A2D20546F7272656E74652046696F72656E74650000, 67186), +(3776013982, 1225273, 'itIT', 0x00556E2061626974616E74652064656C6C612054656D70657374612064656C2056756F746F206368652073656D62726120737472616E616D656E746520736772616465766F6C652E204C652073756520617070656E64696369207261676769756E676F6E6F206F676E6920616E676F6C6F20706573636162696C652064656C2056756F746F2E2041737475746F2C20667572626F206520696E74656C6C6967656E74652C2072617070726573656E746120756E6120736669646120616666617363696E616E746520706572207175616C7369617369207065736361746F726520616262617374616E7A6120636F72616767696F736F2064612070657363617265206E656C6C612054656D70657374612064656C2056756F746F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C653A7C520D0A0D0A24407370656C6C69636F6E313233373130342042616E63686574746920646920437563696E610D0A0D0A51756573746F2070657363652065737472656D616D656E7465207261726F2065207361706F7269746F20C3A820756E20696E6772656469656E746520696D706F7274616E7465206469206D6F6C746520726963657474652064656C6C6120437563696E61206469204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4172656520696E20637569207369207075C3B22074726F766172652071756573746F2070657363653A7C520D0A0D0A2D2054656D70657374612064656C2056756F746F0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F7A7A652064692050657363613A7C720D0A0D0A2D20566F7274696365204F6365616E69636F0D0A2D2056756F746F20566973636F736F0000, 67186), +(3776013982, 1225272, 'itIT', 0x00556E2074656E6163652070657363652073636F7270696F6E6520617267656E7461746F2C20696C2063756920636F72706F207269636F706572746F206469206163756C656920616666696C617469207370696E6765207065736361746F726920652070657363692061206573706C6F7261726520616C74726F7665207072696D6120646920696E676167676961726C6F2E20556E20636F6D7061676E6F206275726265726F20636F6E20636869756E7175652C206D6120756E207465736F726F20616D6269746F20706572207175616C7369617369206173706972616E7465207065736361746F72652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C653A7C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4172656520696E20637569207369207075C3B22074726F766172652071756573746F2070657363653A7C520D0A2D20426F736368692064692043616E746F657465726E6F0D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A506F7A7A652064692050657363613A7C720D0A2D2046696F726974757261205269626F6C6C656E74650D0A2D20536369616D652064656C20506F7A7A6F20536F6C6172650D0A2D20536369616D652064656C6C612046696F7269747572610D0A2D20546F7272656E74652046696F72656E74650000, 67186), +(3776013982, 444803, 'itIT', 0x00556E6120637265617475726120756D696C65206520646F726D69656E74652E205175616E646F20C3A820737665676C696F2C206C652073756520736361676C6965206272696C6C616E6F20616E63686520736520C3A82070726573656E746520706F6361206C7563652E20556E61206D616573746F736974C3A02073696C656E7A696F73612C20756E206F626965747469766F2061646174746F2061206F676E69206173706972616E7465207065736361746F72652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A5370656369616C653A7C720D0A0D0A24407370656C6C69636F6E3434353132372046696C6574746F2046726573636F0D0A0D0A526563757065726172652071756573746F20706573636520636F6E206C6120636F6D706574656E7A6120696E20437563696E61207075C3B22070726F647572726520756E61206772616E6465207175616E746974C3A02064692046696C6574746F2046726573636F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A4172656520696E20637569207369207075C3B22074726F766172652071756573746F2070657363653A7C520D0A0D0A2D20417A6A2D4B616865740D0A2D204F617369206469204B2761726573680000, 67186), +(3205218938, 56772, 'itIT', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45340054726173706F72746F206F66666572746F0001000000, 67186), +(3205218938, 56771, 'itIT', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300436F6D706574697469766F0001000000, 67186), +(3205218938, 56770, 'itIT', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45320052696C61737361746F0001000000, 67186), +(3205218938, 22337, 'itIT', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'itIT', 0x000000, 67186), +(1010104591, 26054, 'itIT', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'itIT', 0x417263617461206469204C6F616D6D00000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'itIT', 0x43616E64656C69657265206465692053696E27646F7265692041646F726E61746F00000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'itIT', 0x4C616D70616461206120536F7370656E73696F6E652064656C204D656363616E69636F2064692043617661666F6E646100000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'itIT', 0x4D61636368696E612070657220457370726573736F2064692044616C6172616E000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'itIT', 0x42726163696572652064656C2044657661737461746F7265000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'itIT', 0x4C616E7465726E6120646920466572726F20496E636170707563636961746100000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'itIT', 0x4C616E7465726E612046756D6F7361206469205269766F666F73636F00000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'itIT', 0x4C616D70696F6E652064692043617661666F6E6461204D6F6C746F2041666669646162696C6500000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'itIT', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'itIT', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'itIT', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'itIT', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'itIT', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'itIT', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'itIT', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'itIT', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'itIT', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'itIT', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'itIT', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'itIT', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'itIT', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'itIT', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'itIT', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'itIT', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'itIT', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'itIT', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'itIT', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'itIT', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'itIT', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'itIT', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'itIT', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'itIT', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'itIT', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'itIT', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'itIT', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'itIT', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'itIT', 0x00446563696D757320747261736D757461206C65207363686567676520696E20756E204E75636C656F2064656C2056756F746F20456C656D656E74616C6520646120696E74657373657265206E656C6C6120466F726769612064656C2056756F746F204E617363656E74652E204C6120466F726769612064656C2056756F746F20726963686965646520247331204E75636C65692064656C2056756F746F20456C656D656E74616C692070657220696C2073756F20636F6D706C6574616D656E746F2E0D0A0D0A436F6E747269627574692061747475616C693A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'itIT', 0xFFFFFFFFFFFFFFFF556E204E75636C656F2064656C2056756F746F20456C656D656E746172650000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'itIT', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'itIT', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'itIT', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'itIT', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'itIT', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'itIT', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'itIT', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'itIT', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'itIT', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'itIT', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'itIT', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'itIT', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'itIT', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'itIT', 0x000000, 67186), +(3653642729, 376, 'itIT', 0x000000008D000000, 67186), +(1673391669, 141, 'itIT', 0x8A000000, 67186), +(2791084701, 138, 'itIT', 0x35D30600, 67186), +(2518885667, 13760, 'itIT', 0xC035000000000000, 67186), +(3776013982, 1296205, 'itIT', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'itIT', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'itIT', 0xFFFFFFFFFFFFFFFF417373616C74692064656C2056756F746F3A205A756C27616D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'itIT', 0xFFFFFFFFFFFFFFFF417373616C74692064656C2056756F746F3A20426F736368692064692043616E746F657465726E6F00003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'itIT', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'itIT', 0x000000, 67186), +(3776013982, 1296168, 'itIT', 0x000000, 67186), +(600565378, 665333, 'itIT', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'itIT', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'itIT', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'itIT', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'itIT', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'itIT', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'itIT', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'itIT', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'itIT', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'itIT', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'itIT', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'itIT', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'itIT', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'itIT', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'itIT', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'itIT', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'itIT', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'itIT', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'itIT', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'itIT', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'itIT', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'itIT', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'itIT', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'itIT', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'itIT', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'itIT', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'itIT', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'itIT', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'itIT', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'itIT', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'itIT', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'itIT', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'itIT', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'itIT', 0x898200006D670300, 67186), +(3745449290, 8614, 'itIT', 0x5369746F2052697475616C653A2054726F6E6F2044697374727574746F00556E2070657269636F6C6F736F2072697475616C6520C3A820696E20636F72736F206E656C6C6520766963696E616E7A652E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'itIT', 0x000000, 67186), +(2575642838, 765, 'itIT', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'itIT', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'itIT', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'itIT', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'itIT', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'itIT', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'itIT', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'itIT', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'itIT', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'itIT', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'itIT', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'itIT', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'itIT', 0x46696E65737472612064692052616469636920496E747265636369617465000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'itIT', 0x51756164726F20224C616E7465726E612064692043616E746F657465726E6F22000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'itIT', 0x506F7274612064692052616469636920496E747265636369617465000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'itIT', 0x506572676F6C612046756E67696E610000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'itIT', 0x546F727461206169204D697274696C6C692053706C656E6469646100000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'itIT', 0x5661736F2064692046696F726920646920486172616E646172205275737469636F000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'itIT', 0x4372697374616C6C6F2045746572636172696361746F204D616573746F736F00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'itIT', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'itIT', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'itIT', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'itIT', 0x467B0000, 67186), +(4033975491, 620660, 'itIT', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'itIT', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'itIT', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'itIT', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'itIT', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'itIT', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'itIT', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'itIT', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'itIT', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'itIT', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'itIT', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'itIT', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'itIT', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'itIT', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'itIT', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'itIT', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'itIT', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'itIT', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'itIT', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'itIT', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'itIT', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'itIT', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'itIT', 0x000000, 67186), +(3776013982, 1295957, 'itIT', 0x000000, 67186), +(3776013982, 1295932, 'itIT', 0x000000, 67186), +(3776013982, 1295927, 'itIT', 0x005175616E646F207369207269636F70726520696C2072756F6C6F20646120646966656E736F72652064656C2067727570706F2C204C696E646F726E692065766964656E7A61206C6520666F727A65206E656D69636865206E656C6C652073706564697A696F6E69204D6974696368652B2E0D0A0D0A5061726C6120636F6E204C696E646F726D69207065722064697361747469766172652071756573746F206566666574746F2E005175616E646F207369207269636F70726520696C2072756F6C6F20646120646966656E736F72652064656C2067727570706F2C204C696E646F726E692065766964656E7A61206C6520666F727A65206E656D69636865206E656C6C652073706564697A696F6E69204D6974696368652B2E0D0A0D0A5061726C6120636F6E204C696E646F726D69207065722064697361747469766172652071756573746F206566666574746F2E00, 67186), +(3776013982, 1265971, 'itIT', 0x0041756D656E746120692064616E6E6920696E666C697474692064616C6C65206162696C6974C3A02064656920436176616C696572692064656C20247331252E243F63335B0D0A0D0A41756D656E746120692064616E6E6920696E666C697474692064616C2047686F756C20652064616C6C276172636965726520736368656C65747269636F2064656C2024733325206520692064616E6E6920696E666C69747469206461692047686F756C204D696E6F72692064656C20247335252E5D5B5D0000, 67186), +(336222293, 22784, 'itIT', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'itIT', 0x004F676E692024733120417373616C74692064656C204361726E6566696365207369206F747469656E65204D6F72746520496D70726F76766973612E0D0A0D0A5573617265204D6F72746520496D70726F767669736120616363656C657261206C6120737563636573736976612054656D7065737461206469204C616D652C2063686520636F6C7069736365203120766F6C74612061676769756E74697661202866696E6F206120756E206D617373696D6F206469202434343536303675292E204C612064757261746120746F74616C652064692054656D7065737461206469204C616D6520726573746120696E766172696174612E0D0A0D0A4D6F72746520496D70726F767669736120686120756E612070726F626162696C6974C3A02064656C2024733225206469206174746976617265204D6965746974656D706573746120616C20247333252064656C6C276566666963616369612E0000, 67186), +(378810315, 666, 'itIT', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'itIT', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'itIT', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'itIT', 0x000000, 67186), +(1181150530, 752881, 'itIT', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'itIT', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'itIT', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'itIT', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'itIT', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'itIT', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'itIT', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'itIT', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'itIT', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'itIT', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'itIT', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'itIT', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'itIT', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'itIT', 0xE1570500E0570500, 67186), +(736158310, 43619, 'itIT', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'itIT', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'itIT', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'itIT', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'itIT', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'itIT', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'itIT', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'itIT', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'itIT', 0x00243F63315B496E766F63617A696F6E653A204E69757A616F2C206C6F2059616B204E65726F5D5B5A656E6974685D2066612073C3AC2063686520243F63315B536F6666696F2064692046756F636F206C616E63695D5B43616C63696F2064656C20536F6C65204E617363656E746520652043616C63696F20526F74616E74652064656C6C6120477275206C616E63696E6F5D2024733120417373616C7469206120526166666963612E0000, 67186), +(3776013982, 1244331, 'itIT', 0x00496C20247332252064656C6C6520637572652066696E616C6920666F726E69746520646120426F6363696F6C6F206469205669746120637572612066696E6F20612024733320616C6C656174692066657269746920656E74726F2024313234343334316131206D2E0000, 67186), +(3776013982, 441845, 'itIT', 0x00243F63325B41756D656E746120692064616E6E6920696E666C697474692064612041727469676C696174612C205370617A7A6174612065204772616666696F2064656C20247331252065206C61206C6F726F2070726F626162696C6974C3A0206469206372697469636F2064656C20247333252E5D5B41756D656E746120692064616E6E6920696E666C697474692064612044696C616E69616D656E746F2064656C20247334252065206C61207375612070726F626162696C6974C3A0206469206372697469636F2064656C20247335252E5D0D0A0D0A243F63335B44696C616E69616D656E746F20726967656E65726120696C20243435383732347331252064656C6C612073616C757465206D617373696D612E5D5B5D0000, 67186), +(3205218938, 57068, 'itIT', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E0056756F69206163717569737461207475747469202825732920676C692061727469636F6C69207065722025733F0003000000, 67186), +(3205218938, 23377, 'itIT', 0x5343454E4152494F5F53544147455F53544154555300466173652025642064692025640001000000, 67186), +(3205218938, 22841, 'itIT', 0x5343454E4152494F5F535441474500466173652025640001000000, 67186), +(3745449290, 8459, 'itIT', 0x507265646100416420417374616C6F7220476975726173616E67756520736572766520696C2074756F20616975746F2070657220656C696D696E6172652064656C6C65206D696E61636365206D6F7274616C692E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'itIT', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'itIT', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'itIT', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'itIT', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'itIT', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'itIT', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'itIT', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'itIT', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'itIT', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'itIT', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'itIT', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'itIT', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'itIT', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'itIT', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'itIT', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'itIT', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'itIT', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'itIT', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'itIT', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'itIT', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'itIT', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'itIT', 0x447261676F6E666174756F00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'itIT', 0x9201000022000000, 67186), +(3247720076, 39887, 'itIT', 0x0700000000, 67186), +(3776013982, 243435, 'itIT', 0x0054692072656E6465207069C3B920726573697374656E74652C2061756D656E74616E646F206C612073616C7574652061747475616C652065206D617373696D612064656C20247331252065207269647563656E646F20692064616E6E69207375626974692064656C2024733225207065722024642E0053616C757465206D617373696D612061756D656E746174612064656C20247731252E0D0A44616E6E6920737562697469207269646F7474692064656C20247732252E243F2477343E315B0D0A2477342064616E6E6920737562697469206173736F72626974692E5D5B5D00, 67186), +(3776013982, 221562, 'itIT', 0x00536F6C6C65766120696C206E656D69636F2064616C2074657272656E6F2C20737472696E67656E646F676C69206C6120676F6C6120636F6E206C27656E6572676961206F736375726120652073746F7264656E646F6C6F207065722024642E0053746F726469746F2E00, 67186), +(3776013982, 205630, 'itIT', 0x54616C656E746F2050765000537472616E676F6C6120696C206265727361676C696F20636F6E206C61206D616769612064656D6F6E696163612C2073746F7264656E646F6C6F206520696E666C696767656E646F20246F342064616E6E69206461206F6D62726120696E2024642066696E6368C3A920696C206265727361676C696F20C3A8206E656C6C6120737472657474612E20C38820706F73736962696C65206D756F766572736920647572616E7465206C612063616E616C697A7A617A696F6E652E0D0A0D0A4C616E6369617265206E756F76616D656E746520507265736120646920496C6C6964616E206C616E63696120696C206265727361676C696F20737520756E6120706F73697A696F6E6520656E74726F202432303831373352206D2E0053746F726469746F2E2477342064616E6E69206461206F6D62726120696E666C69747469206F676E6920247420732E00, 67186), +(3776013982, 198158, 'itIT', 0x54616C656E746F205076500052656E646520696E7669736962696C69207465206520676C6920616C6C6561746920656E74726F20244131206D207065722024642E204576656E7475616C6920617A696F6E6920616E6E756C6C616E6F206C276566666574746F2E00496E7669736962696C652E204576656E7475616C6920617A696F6E6920616E6E756C6C616E6F206C276566666574746F2E00, 67186), +(3776013982, 108194, 'itIT', 0x00536F6C6C65766120696C206E656D69636F2064616C2074657272656E6F2C20737472696E67656E646F676C69206C6120676F6C6120636F6E206C27656E6572676961206F736375726120652073746F7264656E646F6C6F207065722024642E0053746F726469746F2E00, 67186), +(378810315, 1004, 'itIT', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'itIT', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'itIT', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'itIT', 0x077A03000705000047000000, 67186), +(378810315, 999, 'itIT', 0x530D00000509000049000000, 67186), +(378810315, 998, 'itIT', 0x530D00000509000048000000, 67186), +(378810315, 997, 'itIT', 0x530D00000509000047000000, 67186), +(378810315, 996, 'itIT', 0x78B700000409000049000000, 67186), +(378810315, 995, 'itIT', 0x78B700000409000048000000, 67186), +(378810315, 994, 'itIT', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'itIT', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'itIT', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'itIT', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'itIT', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'itIT', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'itIT', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'itIT', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'itIT', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'itIT', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'itIT', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'itIT', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'itIT', 0x989B12000706000006010000, 67186), +(378810315, 980, 'itIT', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'itIT', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'itIT', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'itIT', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'itIT', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'itIT', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'itIT', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'itIT', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'itIT', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'itIT', 0x713507000505000000010000, 67186), +(378810315, 966, 'itIT', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'itIT', 0x550300000805000046000000, 67186), +(378810315, 964, 'itIT', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'itIT', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'itIT', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'itIT', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'itIT', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'itIT', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'itIT', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'itIT', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'itIT', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'itIT', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'itIT', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'itIT', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'itIT', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'itIT', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'itIT', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'itIT', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'itIT', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'itIT', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'itIT', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'itIT', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'itIT', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'itIT', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'itIT', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'itIT', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'itIT', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'itIT', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'itIT', 0x991503000409000045020000, 67186), +(378810315, 933, 'itIT', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'itIT', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'itIT', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'itIT', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'itIT', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'itIT', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'itIT', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'itIT', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'itIT', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'itIT', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'itIT', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'itIT', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'itIT', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'itIT', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'itIT', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'itIT', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'itIT', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'itIT', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'itIT', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'itIT', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'itIT', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'itIT', 0x42E906000309000009010000, 67186), +(378810315, 902, 'itIT', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'itIT', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'itIT', 0x761800000309000009010000, 67186), +(378810315, 899, 'itIT', 0x76180000030900000A010000, 67186), +(378810315, 898, 'itIT', 0x76180000030900000B010000, 67186), +(378810315, 885, 'itIT', 0x78B700000409000047000000, 67186), +(378810315, 879, 'itIT', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'itIT', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'itIT', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'itIT', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'itIT', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'itIT', 0x980100000905000005010000, 67186), +(378810315, 858, 'itIT', 0x980100000905000004010000, 67186), +(378810315, 855, 'itIT', 0x980100000905000003010000, 67186), +(378810315, 843, 'itIT', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'itIT', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'itIT', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'itIT', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'itIT', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'itIT', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'itIT', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'itIT', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'itIT', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'itIT', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'itIT', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'itIT', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'itIT', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'itIT', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'itIT', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'itIT', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'itIT', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'itIT', 0x027F05000707000003010000, 67186), +(378810315, 720, 'itIT', 0x36A401000707000048000000, 67186), +(378810315, 719, 'itIT', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'itIT', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'itIT', 0x790200000905000046000000, 67186), +(378810315, 714, 'itIT', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'itIT', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'itIT', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'itIT', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'itIT', 0x68F905000605000067000000, 67186), +(378810315, 691, 'itIT', 0x68F905000605000066000000, 67186), +(378810315, 690, 'itIT', 0x68F905000605000069000000, 67186), +(378810315, 682, 'itIT', 0x15A905000705000041020000, 67186), +(378810315, 679, 'itIT', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'itIT', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'itIT', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'itIT', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'itIT', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'itIT', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'itIT', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'itIT', 0x16600500040800003F000000, 67186), +(378810315, 661, 'itIT', 0x16600500040900003E000000, 67186), +(378810315, 658, 'itIT', 0xE53805000209000040000000, 67186), +(378810315, 657, 'itIT', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'itIT', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'itIT', 0x166005000409000040000000, 67186), +(378810315, 648, 'itIT', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'itIT', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'itIT', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'itIT', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'itIT', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'itIT', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'itIT', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'itIT', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'itIT', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'itIT', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'itIT', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'itIT', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'itIT', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'itIT', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'itIT', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'itIT', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'itIT', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'itIT', 0x550300000805000041000000, 67186), +(378810315, 449, 'itIT', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'itIT', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'itIT', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'itIT', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'itIT', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'itIT', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'itIT', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'itIT', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'itIT', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'itIT', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'itIT', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'itIT', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'itIT', 0x57A101000505000067000000, 67186), +(378810315, 408, 'itIT', 0x638400000705000069000000, 67186), +(378810315, 407, 'itIT', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'itIT', 0xE40200000505000069000000, 67186), +(378810315, 402, 'itIT', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'itIT', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'itIT', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'itIT', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'itIT', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'itIT', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'itIT', 0xE77701000605000046000000, 67186), +(378810315, 377, 'itIT', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'itIT', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'itIT', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'itIT', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'itIT', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'itIT', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'itIT', 0x400700000409000004010000, 67186), +(378810315, 353, 'itIT', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'itIT', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'itIT', 0xE60600000605000005010000, 67186), +(378810315, 349, 'itIT', 0xE60600000605000004010000, 67186), +(378810315, 348, 'itIT', 0xE60600000605000003010000, 67186), +(378810315, 346, 'itIT', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'itIT', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'itIT', 0x301E03000509000006010000, 67186), +(378810315, 342, 'itIT', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'itIT', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'itIT', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'itIT', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'itIT', 0x66D401000505000009010000, 67186), +(378810315, 332, 'itIT', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'itIT', 0x981900000605000048000000, 67186), +(378810315, 329, 'itIT', 0x981900000605000049000000, 67186), +(378810315, 224, 'itIT', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'itIT', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'itIT', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'itIT', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'itIT', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'itIT', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'itIT', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'itIT', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'itIT', 0x242303000409000041020000, 67186), +(378810315, 205, 'itIT', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'itIT', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'itIT', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'itIT', 0x242303000409000045020000, 67186), +(378810315, 189, 'itIT', 0x743C03000805000045020000, 67186), +(378810315, 187, 'itIT', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'itIT', 0x36A401000707000049000000, 67186), +(378810315, 176, 'itIT', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'itIT', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'itIT', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'itIT', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'itIT', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'itIT', 0x36A401000707000047000000, 67186), +(378810315, 159, 'itIT', 0x981900000605000047000000, 67186), +(378810315, 158, 'itIT', 0x533301000405000066000000, 67186), +(378810315, 156, 'itIT', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'itIT', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'itIT', 0xA09001000607000066000000, 67186), +(378810315, 152, 'itIT', 0x82020000010B000046000000, 67186), +(378810315, 150, 'itIT', 0x50350300050B000046000000, 67186), +(378810315, 149, 'itIT', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'itIT', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'itIT', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'itIT', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'itIT', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'itIT', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'itIT', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'itIT', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'itIT', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'itIT', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'itIT', 0x62040000060500000B010000, 67186), +(378810315, 121, 'itIT', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'itIT', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'itIT', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'itIT', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'itIT', 0x45990100010B000009010000, 67186), +(378810315, 113, 'itIT', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'itIT', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'itIT', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'itIT', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'itIT', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'itIT', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'itIT', 0x491E03000907000007010000, 67186), +(378810315, 101, 'itIT', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'itIT', 0x301E03000509000008010000, 67186), +(378810315, 97, 'itIT', 0x301E03000509000007010000, 67186), +(378810315, 96, 'itIT', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'itIT', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'itIT', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'itIT', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'itIT', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'itIT', 0x400700000409000005010000, 67186), +(378810315, 83, 'itIT', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'itIT', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'itIT', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'itIT', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'itIT', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'itIT', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'itIT', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'itIT', 0xB63500000707000004010000, 67186), +(378810315, 70, 'itIT', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'itIT', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'itIT', 0x400700000409000003010000, 67186), +(378810315, 63, 'itIT', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'itIT', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'itIT', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'itIT', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'itIT', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'itIT', 0x82020000010B000042000000, 67186), +(378810315, 45, 'itIT', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'itIT', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'itIT', 0x82020000010B000041000000, 67186), +(378810315, 39, 'itIT', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'itIT', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'itIT', 0x790200000905000041000000, 67186), +(378810315, 35, 'itIT', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'itIT', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'itIT', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'itIT', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'itIT', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'itIT', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'itIT', 0xD39603000805000040000000, 67186), +(378810315, 21, 'itIT', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'itIT', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'itIT', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'itIT', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'itIT', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'itIT', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'itIT', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'itIT', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'itIT', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'itIT', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'itIT', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'itIT', 0x52697475616C6973746120446F6D616E61617200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313739317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291859, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313739317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291858, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313739317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291857, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313739317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291856, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313739317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291855, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313739317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291854, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313833317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291853, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313833317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291852, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313833317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291851, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313833317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291850, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313833317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291849, 'itIT', 0x00526967656E6572612066696E6F20616C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120652024313239313833317731252064656C206D616E61206D617373696D6F20726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291848, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291847, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291846, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291845, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291844, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291843, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291842, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291841, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291840, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291839, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291838, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291837, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291831, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291828, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291827, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291826, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291825, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291824, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291822, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1291791, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1290929, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1290926, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1290925, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1289221, 'itIT', 0x004170726920696C20666F727A6965726520652073636F70726920636F736120636F6E7469656E65210000, 67186), +(3776013982, 1286537, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C75746520652064656C206D616E61206D617373696D6920726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1286536, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1286535, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1282100, 'itIT', 0x000000, 67186), +(3776013982, 1282018, 'itIT', 0x0045766F636120756E612070616E63612073752063756920736564657273692100436C6963636172652073756C6C276175726120706572206661722073706172697265206C612070616E63612E00, 67186), +(3776013982, 1277461, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269922, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269921, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269920, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D61206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C757465206D617373696D6120726967656E6572617461206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269919, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269918, 'itIT', 0x00526967656E65726120696C20247331252064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E204465766920736564657274692070657220626572652E00247731252064656C206D616E61206D617373696D6F20726967656E657261746F206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269917, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C75746520652064656C206D616E61206D617373696D6920726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1269916, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C75746520652064656C206D616E61206D617373696D6920726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(3776013982, 1232065, 'itIT', 0x00526967656E65726120696C20247331252064656C6C612073616C757465206D617373696D6120652064656C206D616E61206D617373696D6F206F676E69207365636F6E646F20696E2024642E2044657669207365646572746920706572206D616E67696172652E00247331252064656C6C612073616C75746520652064656C206D616E61206D617373696D6920726967656E6572617469206F676E69207365636F6E646F2E00, 67186), +(2948698321, 8059, 'itIT', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'itIT', 0x000000, 67186), +(3898252553, 11633, 'itIT', 0xE28200001E490300, 67186), +(3898252553, 11632, 'itIT', 0xE18200001E490300, 67186), +(3898252553, 11631, 'itIT', 0xE08200001E490300, 67186), +(3898252553, 11630, 'itIT', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'itIT', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'itIT', 0x0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247333252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202473342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202473352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247733252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202477342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202477352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E00, 67186), +(3776013982, 1262377, 'itIT', 0x0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247333252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202473342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202473352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247733252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202477342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202477352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E00, 67186), +(3776013982, 1262376, 'itIT', 0x0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247333252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202473342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202473352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247733252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202477342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202477352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E00, 67186), +(3776013982, 1262365, 'itIT', 0x005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282473352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247333252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282477352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247733252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'itIT', 0x005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282473352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247333252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F2064656C6C61204D6F72746520536163726120686120756E612070726F626162696C6974C3A0206D6F6C746F20626173736120646920756363696465726520697374616E74616E65616D656E74652069206E656D69636920636865206E6F6E20736F6E6F20626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282477352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247733252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F2064656C6C61204D6F72746520536163726120686120756E612070726F626162696C6974C3A0206D6F6C746F20626173736120646920756363696465726520697374616E74616E65616D656E74652069206E656D69636920636865206E6F6E20736F6E6F20626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'itIT', 0x005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282473352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247333252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F2064656C6C61204D6F72746520536163726120686120756E612070726F626162696C6974C3A0206D6F6C746F20626173736120646920756363696465726520697374616E74616E65616D656E74652069206E656D69636920636865206E6F6E20736F6E6F20626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282477352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247733252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F2064656C6C61204D6F72746520536163726120686120756E612070726F626162696C6974C3A0206D6F6C746F20626173736120646920756363696465726520697374616E74616E65616D656E74652069206E656D69636920636865206E6F6E20736F6E6F20626F73732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'itIT', 0x0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247333252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202473342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202473352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E0041707269726520756E6120437572696F736974C3A020536D6172726974612065766F636120756E2046617264656C6C6F20536F6767696F6761746F206368652074692076656E65726120647572616E746520696C20636F6D62617474696D656E746F2C2061756D656E74616E646F205B247072695D2064656C20247733252E0D0A0D0AC38820706F73736962696C65206176657265206D617373696D6F202477342046617264656C6C6920536F6767696F6761746920616C6C6120766F6C74612E0D0A416C207261676769756E67696D656E746F20646920616C6D656E6F202477352076656E657261746F72692C206C61207175616E746974C3A0206469205B247072695D20666F726E697461206461206F676E692046617264656C6C6F20536F6767696F6761746F2061756D656E74612E00, 67186), +(3776013982, 1248927, 'itIT', 0x005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282473352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247333252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F20696C2074756F20636F6D7061676E6F2064656C6C652053636F72726962616E6465206C616E6369612024407370656C6C6E616D65313235313630332C20756E204D616E6461746F20536163726F207669656E6520636F6E66657269746F206169206D656D6272692064656C2067727570706F2C20666F726E656E646F2061676C6920696E63616E746573696D69206520616C6C65206162696C6974C3A02064276174746163636F20756E612070726F626162696C6974C3A02064656C20247B282477352F31303030292A3130307D2E312520646920696E666C6967676572652064616E6E6920646120736163726F2061676769756E74697669207061726920616C20247733252064656C6C612073616C757465206D617373696D612064656C206265727361676C696F20706572206F676E69204D616E6461746F2E0D0A0D0A5075C3B220766572696669636172736920736F6C6F20756E6120766F6C746120706572206265727361676C696F206F676E6920243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'itIT', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'itIT', 0x00446973736F6C7665206C6520696C6C7573696F6E6920646569204E6173636F73746920696E20756E27617265612066726F6E74616C652C2072656E64656E646F6C69205374616E6174692E0000, 67186), +(3776013982, 1256862, 'itIT', 0x00446973736F6C7665206C6520696C6C7573696F6E6920646169204E6173636F73746920696E20756E27617265612C2072656E64656E646F6C69205374616E6174692E0000, 67186), +(3776013982, 1256861, 'itIT', 0x0053616C746120737520756E6120706F73697A696F6E652C20646973736F6C76656E646F206C6520696C6C7573696F6E6920646569204E6173636F737469206E656C6C2761726561206427696D706174746F2E0000, 67186), +(3776013982, 1256860, 'itIT', 0x00446973736F6C7665206C6520696C6C7573696F6E6920646569204E6173636F7374692066726F6E74616C69207065722024642C2072656E64656E646F6C69205374616E6174692E0000, 67186), +(3776013982, 1256010, 'itIT', 0x00446973736F6C7665206C6520696C6C7573696F6E6920646569204E6173636F73746920696E20756E27617265612C2072656E64656E646F6C69205374616E6174692E0000, 67186), +(1408785804, 249319, 'itIT', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'itIT', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'itIT', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'itIT', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'itIT', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'itIT', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'itIT', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'itIT', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'itIT', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'itIT', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'itIT', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'itIT', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'itIT', 0x000000, 67186), +(3776013982, 1295497, 'itIT', 0x000000, 67186), +(3776013982, 1295486, 'itIT', 0x000000, 67186), +(3776013982, 464291, 'itIT', 0x000000, 67186), +(3776013982, 1243616, 'itIT', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'itIT', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'itIT', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'itIT', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'itIT', 0x00446567656E7472697573206C616E63696120756E20646172646F20646920656E65726769612064656C2056756F746F20696E73746162696C65206368652072696D62616C7A612073752024733220706F73697A696F6E692E205175616E646F206C27656E657267696120696D706174746120636F6E20696C2073756F6C6F2C206573706C6F64652C20696E666C696767656E646F20243132313531353773312064616E6E69206461206F6D62726120616920706572736F6E6167676920656E74726F2024313231353135374131206D2064616C2070756E746F206427696D706174746F2E205365206E6F6E20636920736F6E6F20706572736F6E6167676920696E207175656C6C27617265612C2073692073636174656E612024407370656C6C6E616D65313231353136312E0D0A0D0A446F706F2024733220696D70617474692C206C27656E65726769612072696D62616C7A6120756E27756C74696D6120766F6C74612C20646976656E74616E646F20756E612024407370656C6C6E616D65313231353933372E0000, 67186), +(3776013982, 1243588, 'itIT', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'itIT', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'itIT', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'itIT', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'itIT', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'itIT', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'itIT', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'itIT', 0x7C6346464646443230304D657263616E74653A207C72536F6D6D6F7A7A61746F7265205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27616D616E7C6E7C634646464644323030436F73746F3A207C72312E3030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'itIT', 0x7C6346464646443230304D657263616E74653A207C72536F6D6D6F7A7A61746F7265205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27616D616E7C6E7C634646464644323030436F73746F3A207C72312E3030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'itIT', 0x7C6346464646443230304D657263616E74653A207C72536F6D6D6F7A7A61746F7265205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27616D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'itIT', 0x7C6346464646443230304D657263616E74653A207C72536F6D6D6F7A7A61746F7265205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27616D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'itIT', 0x7C6346464646443230304D657263616E74653A207C72536F6D6D6F7A7A61746F7265205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27616D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'itIT', 0x7C6346464646443230304D657263616E74653A207C72536F6D6D6F7A7A61746F7265205475276E616B69747C6E7C6346464646443230305A6F6E613A207C725A756C27616D616E7C6E7C634646464644323030436F73746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'itIT', 0x004C6F7468726178696F6E2073636174656E6120756E20646F7070696F2066656E64656E746520616363757261746F20636F6E74726F20696C206265727361676C696F2061747475616C652E204F676E6920636F6C706F20696E666C6967676520243132353737333673312064616E6E692066697369636920697374616E74616E65616D656E7465206520243132353737343573312064616E6E6920646120736163726F2061676769756E74697669206F676E6920243132353737343574312073207065722024313235373734356420612074757474692069206E656D696369206120706F72746174612C2063617573616E646F20696E6F6C74726520756E6F2024407370656C6C6E616D653132353533313020612074657272612E0000, 67186), +(4033975491, 619581, 'itIT', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'itIT', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'itIT', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'itIT', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'itIT', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'itIT', 0x526F73736F00243F63315B492064616E6E6920696E666C6974746920646120446973696E74656772617A696F6E6520636F6E73756D616E6F20247B2473322F313030307D2E31207320646920536F6666696F2064692046756F636F20646169206E656D6963692063686520636F6C706973636F6E6F2C206465746F6E616E646F206520696E666C696767656E646F20696C20247334252064656C6C27616D6D6F6E7461726520636F6E73756D61746F2E0D0A0D0A492064616E6E6920696E666C69747469206461205069726120636F6E73756D616E6F20247B2473332F313030307D207320646920536F6666696F2064692046756F636F20646169206E656D6963692063686520636F6C706973636F6E6F2C206465746F6E616E646F206520696E666C696767656E646F20696C20247337252064656C6C27616D6D6F6E7461726520636F6E73756D61746F2E5D5B4C65206375726520666F726E6974652064612041626272616363696F204C757373757265676769616E746520636F6E73756D616E6F20247B2473352F313030307D207320646920536F6666696F2064656C20536F676E6F206461676C6920616C6C656174692063686520637572616E6F2C206465746F6E616E646F206520637572616E646F6C692064656C20247336252064656C6C27616D6D6F6E7461726520636F6E73756D61746F2E0D0A0D0A4C65206375726520666F726E69746520646120426F6363696F6C6F20646920536D6572616C646F20636F6E73756D616E6F20247B2473312F313030307D207320646920536F6666696F2064656C20536F676E6F206461676C6920616C6C656174692063686520637572616E6F2C206465746F6E616E646F206520637572616E646F6C692064656C20247336252064656C6C27616D6D6F6E7461726520636F6E73756D61746F2E5D0000, 67186), +(4033975491, 619554, 'itIT', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'itIT', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'itIT', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'itIT', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'itIT', 0x000000, 67186), +(2151089334, 7976, 'itIT', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'itIT', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'itIT', 0x4F6D6272612064656C2056756F746F205465727269666963616E746500000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'itIT', 0x00556E612024407370656C6C6E616D653132343936303920636F6C706974612073656E7A612073656775697265206C276F7264696E65206372656120756E20636C616D6F72652065636865676769616E74652C2073696C656E7A69616E646F20696C206265727361676C696F207065722024642E200053696C656E7A6961746F2E00, 67186), +(3247720076, 42321, 'itIT', 0x0000000000, 67186), +(4033975491, 619506, 'itIT', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'itIT', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'itIT', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'itIT', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'itIT', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'itIT', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'itIT', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'itIT', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'itIT', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'itIT', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'itIT', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'itIT', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'itIT', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'itIT', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'itIT', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'itIT', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'itIT', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'itIT', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'itIT', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'itIT', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'itIT', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'itIT', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'itIT', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'itIT', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'itIT', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'itIT', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'itIT', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'itIT', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'itIT', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'itIT', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'itIT', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'itIT', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'itIT', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'itIT', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'itIT', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'itIT', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'itIT', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'itIT', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'itIT', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'itIT', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'itIT', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'itIT', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'itIT', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'itIT', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'itIT', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'itIT', 0x5369746F2052697475616C653A2050726F6D6F6E746F72696F20646569204C6973636167757A7A6100556E2070657269636F6C6F736F2072697475616C6520C3A820696E20636F72736F206E656C6C6520766963696E616E7A652E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'itIT', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'itIT', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'itIT', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'itIT', 0x004C27696E63616E7461746F72652073636174656E6120756E61207363617269636120646920706F7465726520617263616E6F2C20696E666C696767656E646F202473312064616E6E6920646120617263616E6F20616920706572736F6E6167676920656E74726F20244131206D2E0000, 67186), +(3776013982, 1295237, 'itIT', 0x004C27696E63616E7461746F72652073636174656E6120756E61207363617269636120646920706F7465726520617263616E6F2C20696E666C696767656E646F202473312064616E6E6920646120617263616E6F20616920706572736F6E6167676920656E74726F20244131206D2E0000, 67186), +(600565378, 632510, 'itIT', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'itIT', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'itIT', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'itIT', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'itIT', 0x004369207369207072657061726120616C2070726F636573736F206469206D6163656C6C617A696F6E652E2046696E6368C3A920C3A82061747469766F2C20696C207375636365737369766F20696E74657276656E746F206469205363756F696174757261206469204D69646E6967687420676172616E74697363652064656C6C61206361726E65207574696C697A7A6162696C6520696E20437563696E612E0050726F6E746F2061206D6163656C6C617265206C612070726F7373696D61206372656174757261206469204D69646E69676874207363756F6961746120706572206F7474656E6572652064656C6C61206361726E65207574696C697A7A6162696C6520696E20437563696E612E00, 67186), +(3776013982, 442615, 'itIT', 0x004369207369207072657061726120616C2070726F636573736F206469206D6163656C6C617A696F6E652E2046696E6368C3A920C3A82061747469766F2C20696C207375636365737369766F20696E74657276656E746F206469205363756F696174757261206469204B68617A20416C67617220676172616E74697363652064656C6C61206361726E65207574696C697A7A6162696C6520696E20437563696E612E0050726F6E746F2061206D6163656C6C617265206C612070726F7373696D61206372656174757261206469204B68617A20416C676172207363756F6961746120706572206F7474656E6572652064656C6C61206361726E65207574696C697A7A6162696C6520696E20437563696E612E00, 67186), +(3386943305, 23675, 'itIT', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'itIT', 0x566172636F2044656D6F6E6961636F00000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'itIT', 0x005065726D65747465206469207573636972652064616C6C274573706C6F72617A696F6E65204661736963612E0000, 67186), +(3776013982, 1241218, 'itIT', 0x000000, 67186), +(2575642838, 749, 'itIT', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'itIT', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'itIT', 0x004C612070726573656E7A6120646920756E206E656D69636F207375706572696F726520706F74656E7A69612065207065726D65747465206469207269666C65747465726520696C202477312520646920747574746920692064616E6E69207375626974692073756C6C27617474616363616E74652E00506F74656E7A6961746F2064616C6C612070726573656E7A6120646920756E206E656D69636F207375706572696F72652E202477312520646920747574746920692064616E6E6920737562697469207269666C657373692073756C6C27617474616363616E74652E0D0A0D0A506F74656E7A6961746F2064613A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E313238323034322052652043616475746F2053616C6861646161725D00, 67186), +(3425193231, 546424, 'itIT', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'itIT', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'itIT', 0x000000, 67186), +(600565378, 664416, 'itIT', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'itIT', 0x00496E63616E746120696E206D6F646F207065726D616E656E746520756E2061747472657A7A6F2064656C6C652070726F66657373696F6E6920636F6E206C61204465737472657A7A61206465692053696E27646F7265692C2061756D656E74616E646F206C61204465737472657A7A6120646920246563312E204E6F6E206170706C69636162696C65206120756E206F67676574746F206469206C6976656C6C6F207375706572696F726520612024656369782E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A54616C656E7469205468616C61737369616E69202D205175616C6974C3A0206469205175656C275468616C61737C52200000, 67186), +(261693969, 93049, 'itIT', 0xFFFFFFFFFFFFFFFF537570706F72746F20706572206920636F6D70697469206120636173610000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'itIT', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'itIT', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'itIT', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'itIT', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'itIT', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'itIT', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'itIT', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'itIT', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'itIT', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'itIT', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'itIT', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'itIT', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'itIT', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'itIT', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'itIT', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'itIT', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'itIT', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'itIT', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'itIT', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'itIT', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'itIT', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'itIT', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'itIT', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'itIT', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'itIT', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'itIT', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'itIT', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'itIT', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'itIT', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'itIT', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'itIT', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'itIT', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'itIT', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'itIT', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'itIT', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'itIT', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'itIT', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'itIT', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'itIT', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'itIT', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'itIT', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'itIT', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'itIT', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'itIT', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'itIT', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'itIT', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'itIT', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'itIT', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'itIT', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'itIT', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'itIT', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'itIT', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'itIT', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'itIT', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'itIT', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'itIT', 0x005065726D65747465206120756E207065736361746F72652064692065717569706167676961726520756E612063616E6E6120646120706573636120652074726F7661726520756E6F20737065636368696F20642761637175612070657220706573636172652E20436C6963636120636F6C2070756C73616E74652064657374726F2073756C2067616C6C65676769616E7465207175616E646F207369206D756F76652065206361747475726120636F73C3AC20696C2074756F2070657363652E20556E6120636F6D706574656E7A61206D616767696F72652061756D656E7461206C612070726F626162696C6974C3A020636865206C6120706573636120736961206672757474756F7361206E656C6C652061726565206469206C6976656C6C6F207069C3B920616C746F2E0000, 67186), +(3776013982, 1286820, 'itIT', 0x000000, 67186), +(3776013982, 1286703, 'itIT', 0x005065726D65747465206120756E207065736361746F72652064692065717569706167676961726520756E612063616E6E6120646120706573636120652074726F7661726520756E6F20737065636368696F20642761637175612070657220706573636172652E20436C6963636120636F6C2070756C73616E74652064657374726F2073756C2067616C6C65676769616E7465207175616E646F207369206D756F76652065206361747475726120636F73C3AC20696C2074756F2070657363652E20556E6120636F6D706574656E7A61206D616767696F72652061756D656E7461206C612070726F626162696C6974C3A020636865206C6120706573636120736961206672757474756F7361206E656C6C652061726565206469206C6976656C6C6F207069C3B920616C746F2E0000, 67186), +(3776013982, 1253159, 'itIT', 0x000000, 67186), +(3359787322, 29615, 'itIT', 0xAF730000, 67186), +(3031818311, 9590, 'itIT', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'itIT', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'itIT', 0xE87A0000, 67186), +(3776013982, 1277169, 'itIT', 0x0044612061707269726520706572206F7474656E65726520313020456D626C656D692064656C6C27416C62612064656C204D69746F20652064656C6C2745726F652E0000, 67186), +(3776013982, 1243683, 'itIT', 0x00466F726E6973636520313020456D626C656D692064656C6C27416C62612064656C204D69746F2E0000, 67186), +(3776013982, 190784, 'itIT', 0x0053616C74612073756C2074756F2044657374726965726F207065722024323231383833642C2061756D656E74616E646F206C612076656C6F636974C3A0206469206D6F76696D656E746F2064656C20243232313838337334252E205574696C697A7A6162696C6520616C20636F706572746F206F20696E20636F6D62617474696D656E746F2E0000, 67186), +(4033975491, 619076, 'itIT', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'itIT', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'itIT', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'itIT', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'itIT', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'itIT', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'itIT', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'itIT', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'itIT', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'itIT', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'itIT', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'itIT', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'itIT', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'itIT', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'itIT', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'itIT', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'itIT', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'itIT', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'itIT', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'itIT', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'itIT', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'itIT', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'itIT', 0x1100E18B0000, 67186), +(184881520, 18405, 'itIT', 0x0F00FC890000, 67186), +(184881520, 18404, 'itIT', 0x0E00FC890000, 67186), +(184881520, 18403, 'itIT', 0xDC00F9890000, 67186), +(184881520, 18245, 'itIT', 0x1100F9890000, 67186), +(184881520, 18244, 'itIT', 0x0F00F9890000, 67186), +(2575642838, 750, 'itIT', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'itIT', 0x000000, 67186), +(3776013982, 1266413, 'itIT', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'itIT', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'itIT', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'itIT', 0x496E6772656469656E7465205365677265746F00F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'itIT', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'itIT', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'itIT', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'itIT', 0x0053636174656E6120756E6120736572696520646920636F6C70692070726563697369206520706F74656E7469206120756E206265727361676C696F2C20696E666C696767656E646F20247B2434343038383473312B2434343038383673312B2434343038383873317D2064616E6E6920616C206265727361676C696F2065202434343038383873312064616E6E69206169206E656D69636920656E74726F20243434303838384131206D206461206573736F2E2044616E6E69207269646F747469206F6C74726520247331206265727361676C692E0D0A0D0A447572616E7465206C612063616E616C697A7A617A696F6E652064692044656D6F6C697A696F6E652C20692064616E6E69207375626974692073692072696475636F6E6F2064656C2024733425206520736920C3A820696D6D756E69206120656666657474692064692073746F7264696D656E746F2C2072657370696E74612065206D6F76696D656E746F20666F727A61746F2E0D0A0D0A447572616E7465206C612063616E616C697A7A617A696F6E652064692044656D6F6C697A696F6E6520C3A820706F73736962696C6520626C6F63636172652C207061726172652C2073636869766172652065206C616E636961726520616C63756E65206162696C6974C3A020646966656E736976652E0000, 67186), +(3776013982, 1292071, 'itIT', 0x0049206E656D6963692064616E6E656767696174692064616C6C276F6E6461746120646920666F727A612064692046616C616E676520746920696E666C6967676F6E6F20696C20247B2473312F2D317D2E31252064692064616E6E69207269646F747469207065722024642E0D0A0044616E6E6920696E666C69747469206120244061757261636173746572207269646F7474692064656C20247B2457312F2D317D2E31252E00, 67186), +(3266400455, 1570155, 'itIT', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'itIT', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'itIT', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'itIT', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'itIT', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'itIT', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'itIT', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'itIT', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'itIT', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'itIT', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'itIT', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'itIT', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'itIT', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'itIT', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'itIT', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'itIT', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'itIT', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'itIT', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'itIT', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'itIT', 0x170B3D160100, 67186), +(1734738485, 9018, 'itIT', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'itIT', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'itIT', 0x00496E666F6E6465206C2761726D617475726120636F6E20756E61206465626F6C652065636F2064656C20506F7A7A6F20536F6C6172652C2073626C6F6363616E646F206566666574746920677261666963692061676769756E746976692070657220616C63756E692073657420646920636C617373652064656C6C612053746167696F6E652031206469204D69646E696768742E0D0A0D0A4C276566666574746F20C3A82061206C6976656C6C6F20646920427269676174610000, 67186), +(3776013982, 1273357, 'itIT', 0x00496E666F6E6465206C2761726D617475726120636F6E20756E61206465626F6C652065636F2064656C20506F7A7A6F20536F6C6172652C2073626C6F6363616E646F206566666574746920677261666963692061676769756E746976692070657220616C63756E692073657420646920636C617373652064656C6C612053746167696F6E652031206469204D69646E696768742E0D0A0D0A4C276566666574746F20C3A82061206C6976656C6C6F20646920427269676174610000, 67186), +(4167587713, 4140, 'itIT', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'itIT', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E5365206D616E67692070657220616C6D656E6F203130207320646976656E74692024407370656C6C6E616D653435373034392065206775616461676E6920243132313931373973372054656D707261206520243132313931373973322064656C2074756F2061747472696275746F207072696D6172696F207065722024642E0041747472696275746F207072696D6172696F2061756D656E7461746F20646920247731312E00, 67186), +(3776013982, 1294726, 'itIT', 0x000000, 67186), +(3776013982, 1294720, 'itIT', 0x005469726120636F6E74726F20756E206E656D69636F2C20696E666C696767656E646F2064616E6E69206669736963692E0000, 67186), +(3776013982, 1294703, 'itIT', 0x005469726120636F6E74726F20756E206E656D69636F2C20696E666C696767656E646F2064616E6E69206669736963692E0000, 67186), +(3776013982, 1294669, 'itIT', 0x004C61206372656174757261207469206361726963612E00436172696361746F2064616C6C612063726561747572612E00, 67186), +(3776013982, 1294633, 'itIT', 0x004C27696E63616E7461746F72652073707574612070616C6C652064692066756F636F20636F6E74726F20756E20706572736F6E616767696F207065722024642C20696E666C696767656E646F20243132363637343573312064616E6E692064612066756F636F206F676E692024743120732E00243132363637343573312064616E6E692064612066756F636F20696E666C69747469206F676E692024743120732E00, 67186), +(3776013982, 1294563, 'itIT', 0x000000, 67186), +(3776013982, 1277795, 'itIT', 0x00446973736F6C7665206C6520696C6C7573696F6E6920646169204E6173636F73746920696E20756E27617265612066726F6E74616C652C2072656E64656E646F6C69205374616E6174692E0000, 67186), +(3776013982, 1272179, 'itIT', 0x00446120616371756973746172652070726573736F20756E206D657263616E74652E0D0A0D0A24407370656C6C64657363313235363137310054692068616E6E6F2074726F7661746F207072696D612063686520706F746573736920746F636361726C692E00, 67186), +(3776013982, 1269655, 'itIT', 0x004163717569737461726520646120756E206D657263616E74652E0D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'itIT', 0x004163717569737461726520646120756E206D657263616E74652E0D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'itIT', 0x004163717569737461726520646120756E206D657263616E74652E0D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'itIT', 0x004163717569737461726520646120756E206D657263616E74652E0D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'itIT', 0x00446120616371756973746172652070726573736F20756E206D657263616E74652E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'itIT', 0x005065726D65747465206469207363616D626961726520696C20706F73746F20636F6E20756E61206465636F72617A696F6E6520766963696E612E0000, 67186), +(3776013982, 1259647, 'itIT', 0x0024407370656C6C64657363343532393933004C612073636164656E7A612064656C6C6520666961736368652C206669616C6520656420656666657474692042656E204E75747269746F206469204D69646E6967687420C3A820737461746120736F73706573612E00, 67186), +(3776013982, 1258362, 'itIT', 0x000D0A7C43464666666666666654656D706F206469206C616E63696F3A20312C3520732E0D0A54656D706F20646920726563757065726F2074726170706F6C613A203520732E7C520D0A0D0A5365206E6F6E20636920736F6E6F204365726361746F726920656E74726F202452206D2C206C616E63696120756E20636F6E74656E69746F72652064692024407370656C6C6E616D653132353833353820656E74726F202472616431206D2064616C6C6120706F73697A696F6E652061747475616C652E0D0A0D0A5365206E6F6E20636920736F6E6F204365726361746F726920656E74726F202452206D2C206C616E63696120756E20636F6E74656E69746F72652064692024407370656C6C6E616D653132353833353820766963696E6F20616C6C6120706F73697A696F6E652064656C204365726361746F7265207069C3B920766963696E6F2E0D0A0D0A7C4346463731643566664E6F74613A7C52207C4346466439666366666920636F6E74656E69746F72692063686520766961676769616E6F20696E206172696120736F6E6F20696E7669736962696C69206169204365726361746F72692E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D6531323538333538203A0D0A24407370656C6C64657363313235383335380D0A0D0A7C4346466230623062304E6F6E20736172C3A0206C6120636F7361207069C3B9206170706172697363656E74652C206D61206120766F6C746520626173746120756E61206469737472617A696F6E652073656D706C69636520706572206173736963757261727369206C6120766974746F7269612E7C520000, 67186), +(3776013982, 1256009, 'itIT', 0x00446973736F6C7665206C6520696C6C7573696F6E6920646169204E6173636F73746920696E20756E27617265612066726F6E74616C652C2072656E64656E646F6C69205374616E6174692E0000, 67186), +(3776013982, 1251813, 'itIT', 0x005175616E646F207669656E652075636369736F2C206C6F207370657474726F2075726C612C20696E666C696767656E646F202473312064616E6E69206461206F6D6272612061207475747469206920706572736F6E616767692E0000, 67186), +(1010104591, 22988, 'itIT', 0x7C6346464646443230304D657263616E74653A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E613A207C724C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6346464646443230304D657263616E74653A207C7259617468656F6E7C6E7C6346464646443230305A6F6E613A207C724C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'itIT', 0x7C6346464646443230304D657263616E74653A207C724C7972656E64616C7C6E7C6346464646443230305A6F6E613A207C724C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6346464646443230304D657263616E74653A207C7259617468656F6E7C6E7C6346464646443230305A6F6E613A207C724C756E617267656E74617C6E7C634646464644323030436F73746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'itIT', 0x7C6346464646443230305370656369616C697A7A617A696F6E653A207C724D6F62696C6974C3A0206469204D65726361746F202D204163636573736F7269207065722045737472617A696F6E657C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'itIT', 0x7C634646464644323030497374727574746F72652064656C6C652050726F66657373696F6E693A207C72496E6765676E65726961206469204D69646E6967687420283335297C6E7C634646464644323030436F73746F3A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'itIT', 0x7C6346464646443230305370656369616C697A7A617A696F6E653A207C724D6F62696C6974C3A0206469204D65726361746F202D204163636573736F72692070657220496E6765676E657269617C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'itIT', 0xFFFFFFFFFFFFFFFF4C27417263616E74696E61000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'itIT', 0xFFFFFFFFFFFFFFFF5269636F6E6F7363696D656E746F20646F7675746F00001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'itIT', 0x556E206F67676574746F207261726F20636865207075C3B2207265737469747569726520616C63756E692072656167656E746920616C207465726D696E652064656C6C6120637265617A696F6E652E7C6E7C6E466F726E6973636520246576312024656E31207065722071756573746120637265617A696F6E652E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'itIT', 0x41756D656E7461206C612070726F626162696C6974C3A0206469207265637570657261726520616C63756E692072656167656E746920616C207465726D696E652064656C6C6120637265617A696F6E652E7C6E7C6E466F726E6973636520246576312024656E31207065722071756573746120637265617A696F6E652E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'itIT', 0x556E6120737472616E657A7A612064696D656E73696F6E616C652063686520676172616E746973636520637265617A696F6E692061676769756E746976652E7C6E7C6E466F726E6973636520246576312024656E31207065722071756573746120637265617A696F6E652E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'itIT', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C45004E756D65726F206D617373696D6F20646920706F74656E7A69616D656E746920697374616E74616E6569207261676769756E746F20706572206F6767692E20526970726F766120646F6D616E692E0003000000, 67186), +(3205218938, 58259, 'itIT', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F676573746F726574656D70696469726563757065726F0001000000, 67186), +(3205218938, 58258, 'itIT', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F6774720001000000, 67186), +(3205218938, 55299, 'itIT', 0x4A4F55524E4559535F43555252454E545F50524F47524553530050726F6772657373692061747475616C693A207C636E484947484C494748545F464F4E545F434F4C4F523A2564202F2025647C720001000000, 67186), +(3205218938, 49471, 'itIT', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F47524553530050726F67726573736F2061747475616C653A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'itIT', 0x000000, 67186), +(3776013982, 1294759, 'itIT', 0x000000, 67186), +(2921112328, 568649, 'itIT', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'itIT', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'itIT', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'itIT', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'itIT', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'itIT', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'itIT', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'itIT', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'itIT', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'itIT', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'itIT', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'itIT', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'itIT', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'itIT', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'itIT', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='itIT') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='itIT') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='itIT') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='itIT') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x50726564610053636F6E666967676920706F74656E7469206E656D696369207065722072696361726963617265206C6520696D707265736520646920417374616C6F722E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x00556E27756C74696D61207363696E74696C6C61206272696C6C61206E656C6C61206E6F747465207069C3B920627569612E00496E636F726167676961746F2E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='itIT'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF43692076756F6C65207269746D6F0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='itIT'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 273277, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 272911, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'itIT', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='itIT' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='itIT'); From 0795fd4b4930a54f3f7adf236b292ae7bcdaa17e Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:19:42 +0200 Subject: [PATCH 105/175] DB/Hotfixes: Updated koKR hotfixes to 12.0.5.67186 --- .../master/2026_04_29_06_hotfixes_koKR.sql | 2857 +++++++++++++++++ 1 file changed, 2857 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_06_hotfixes_koKR.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_06_hotfixes_koKR.sql b/sql/updates/hotfixes/master/2026_04_29_06_hotfixes_koKR.sql new file mode 100644 index 0000000000000..0963cb4843308 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_06_hotfixes_koKR.sql @@ -0,0 +1,2857 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'koKR', '아래 나열된 각각의 심연 강태공 업적 완료', '심연 강태공: 제주의 새로운 경쟁자', '', 67186), +(61883, 'koKR', '하우징 장식 결투에서 처음 1분 동안 잡히지 않기 (3회)', '이젠 안 보일걸...', '', 67186), +(61887, 'koKR', '모든 하우징 장식 결투 업적 완료', '철두철미한 변장', '', 67186), +(61886, 'koKR', '하우징 장식 결투에서 모든 도구 강화 획득', '도구 완벽 수집', '', 67186), +(61882, 'koKR', '하우징 장식 결투에서 잡히지 않고 성공적으로 발견 상태 해제', '발각 무효', '', 67186), +(61881, 'koKR', '하우징 장식 결투에서 은신자 팀으로 마지막까지 잡히지 않고 살아남기', '숨바꼭질 초고수', '', 67186), +(61880, 'koKR', '하우징 장식 결투에서 숨은 채 1분 30초 연속으로 들키지 않기', '이런 데서 자면 감기 걸려', '', 67186), +(61879, 'koKR', '하우징 장식 결투에서 술래 소속으로 2분 안에 모든 은신자를 잡아 라운드 승리', '이제 네가 술래야', '', 67186), +(61878, 'koKR', '하우징 장식 결투에서 비전 순찰자로 상대 플레이어 잡기', '깔끔한 포획', '', 67186), +(61793, 'koKR', '하우징 장식 결투에서 무위술사로 상대 플레이어 잡기', '공허로의 배치', '', 67186), +(61792, 'koKR', '하우징 장식 결투에서 주문파괴자로 상대 플레이어 잡기', '잡았다, 넌 내 거야!', '', 67186), +(63263, 'koKR', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'koKR', '한밤 1 시즌 동안 신화+ 평점 3,400점 이상 달성', '한밤 쐐기돌 신화: 1 시즌', '칭호: 암영의 경쟁자 및 아이템: 잃어버린 시간의 안장', 67186), +(61594, 'koKR', '하늘탑 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 하늘탑', '', 67186), +(61593, 'koKR', '삼두정의 권좌 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 삼두정의 권좌', '', 67186), +(61592, 'koKR', '사론의 구덩이 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 사론의 구덩이', '', 67186), +(61591, 'koKR', '알게타르 대학 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 알게타르 대학', '', 67186), +(61590, 'koKR', '윈드러너 첨탑 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 윈드러너 첨탑', '', 67186), +(61589, 'koKR', '공결탑 제나스 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 공결탑 제나스', '', 67186), +(61588, 'koKR', '마이사라 동굴 쐐기돌 던전 지역 최고 기록 달성', '쐐기돌 승자: 마이사라 동굴', '', 67186), +(61587, 'koKR', '마법학자의 정원 쐐기돌 던전 지역 최고 기록 달성 (한밤)', '쐐기돌 승자: 마법학자의 정원 (한밤)', '', 67186), +(61259, 'koKR', '한밤 신화+ 1 시즌을 속한 지역의 신화+ 평점 상위 0.1%로 마무리', '암영의 영웅: 한밤 1 시즌', '칭호: 암영의 영웅', 67186), +(61253, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 30 레벨)', '한밤 1 시즌: 견고한 쐐기돌 30', '한밤 1 시즌 기간 동안 쐐기돌이 30 레벨 미만으로 감소하지 않게 됨', 67186), +(61252, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 29 레벨)', '한밤 1 시즌: 견고한 쐐기돌 29', '한밤 1 시즌 기간 동안 쐐기돌이 29 레벨 미만으로 감소하지 않게 됨', 67186), +(61251, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 28 레벨)', '한밤 1 시즌: 견고한 쐐기돌 28', '한밤 1 시즌 기간 동안 쐐기돌이 28 레벨 미만으로 감소하지 않게 됨', 67186), +(61250, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 27 레벨)', '한밤 1 시즌: 견고한 쐐기돌 27', '한밤 1 시즌 기간 동안 쐐기돌이 27 레벨 미만으로 감소하지 않게 됨', 67186), +(61249, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 26 레벨)', '한밤 1 시즌: 견고한 쐐기돌 26', '한밤 1 시즌 기간 동안 쐐기돌이 26 레벨 미만으로 감소하지 않게 됨', 67186), +(61248, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 25 레벨)', '한밤 1 시즌: 견고한 쐐기돌 25', '한밤 1 시즌 기간 동안 쐐기돌이 25 레벨 미만으로 감소하지 않게 됨', 67186), +(61247, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 24 레벨)', '한밤 1 시즌: 견고한 쐐기돌 24', '한밤 1 시즌 기간 동안 쐐기돌이 24 레벨 미만으로 감소하지 않게 됨', 67186), +(61246, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 23 레벨)', '한밤 1 시즌: 견고한 쐐기돌 23', '한밤 1 시즌 기간 동안 쐐기돌이 23 레벨 미만으로 감소하지 않게 됨', 67186), +(61245, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 22 레벨)', '한밤 1 시즌: 견고한 쐐기돌 22', '한밤 1 시즌 기간 동안 쐐기돌이 22 레벨 미만으로 감소하지 않게 됨', 67186), +(61244, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 21 레벨)', '한밤 1 시즌: 견고한 쐐기돌 21', '한밤 1 시즌 기간 동안 쐐기돌이 21 레벨 미만으로 감소하지 않게 됨', 67186), +(61243, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 20 레벨)', '한밤 1 시즌: 견고한 쐐기돌 20', '한밤 1 시즌 기간 동안 쐐기돌이 20 레벨 미만으로 감소하지 않게 됨', 67186), +(61242, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 19 레벨)', '한밤 1 시즌: 견고한 쐐기돌 19', '한밤 1 시즌 기간 동안 쐐기돌이 19 레벨 미만으로 감소하지 않게 됨', 67186), +(61241, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 18 레벨)', '한밤 1 시즌: 견고한 쐐기돌 18', '한밤 1 시즌 기간 동안 쐐기돌이 18 레벨 미만으로 감소하지 않게 됨', 67186), +(61240, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 17 레벨)', '한밤 1 시즌: 견고한 쐐기돌 17', '한밤 1 시즌 기간 동안 쐐기돌이 17 레벨 미만으로 감소하지 않게 됨', 67186), +(61239, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 16 레벨)', '한밤 1 시즌: 견고한 쐐기돌 16', '한밤 1 시즌 기간 동안 쐐기돌이 16 레벨 미만으로 감소하지 않게 됨', 67186), +(61237, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 15 레벨)', '한밤 1 시즌: 견고한 쐐기돌 15', '한밤 1 시즌 기간 동안 쐐기돌이 15 레벨 미만으로 감소하지 않게 됨', 67186), +(61236, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 14 레벨)', '한밤 1 시즌: 견고한 쐐기돌 14', '한밤 1 시즌 기간 동안 쐐기돌이 14 레벨 미만으로 감소하지 않게 됨', 67186), +(61235, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 13 레벨)', '한밤 1 시즌: 견고한 쐐기돌 13', '한밤 1 시즌 기간 동안 쐐기돌이 13 레벨 미만으로 감소하지 않게 됨', 67186), +(61233, 'koKR', '한밤 1 시즌 동안 제한 시간 안에 모든 신화+ 던전 완료 (쐐기돌 12 레벨)', '한밤 1 시즌: 견고한 쐐기돌 12', '한밤 1 시즌 기간 동안 쐐기돌이 12 레벨 미만으로 감소하지 않게 됨', 67186), +(12009, 'koKR', '삼두정의 권좌에서 모든 파티원이 짓이기는 어둠에 걸린 상태로 르우라 처치 (신화)', '어둠이 날뛰고 있어서 말이지', '', 67186), +(12005, 'koKR', '삼두정의 권좌에서 검은송곳니가 어둠의 암습을 사용해 봉인된 공허 보관함 4개를 파괴하도록 유도한 뒤 사프리쉬 처치 (신화)', '쟤가 그랬어요', '', 67186), +(12004, 'koKR', '삼두정의 권좌에서 공허의 틈새를 이용해 공허 영역에서 우르자드를 데려온 다음 승천자 주라알과 함께 처치 (신화)', '공허를 맞이하라', '', 67186), +(9036, 'koKR', '하늘탑에서 보호 피조물을 처지하지 않고 대현자 비릭스 처치 (영웅)', '편집광', '', 67186), +(9035, 'koKR', '하늘탑에서 루크란과의 싸움 중에 잿더미 3개를 동시에 태양의 섬광으로 만들기 (영웅)', '세 개의 태양', '', 67186), +(9034, 'koKR', '하늘탑에서 강화된 아라코아 피조물 처치 (영웅)', '강화하고, 처치한다', '', 67186), +(9033, 'koKR', '하늘탑에서 회전 칼날, 바람의 벽, 네 바람, 렌즈 반사광에 피해를 받지 않고 란지트 처치 (영웅)', '공격 준비 완료 IV', '', 67186), +(4525, 'koKR', '사론의 구덩이에 있는 스컬지군주 티라누스 앞 동굴에서 파티원 어느 누구도 첫 번째 시도에 떨어지는 고드름에 피해를 입지 않고 동굴 안의 모든 적 처치 (영웅)', '머리 조심', '', 67186), +(4524, 'koKR', '사론의 구덩이에서 파티원이 영구 결빙 공격을 11번 이상 중복해서 받기 전에 제련장인 가프로스트 처치 (영웅)', '11번은 제발!', '', 67186), +(62814, 'koKR', '', '', '', 67186), +(62813, 'koKR', '', '', '', 67186), +(62812, 'koKR', '', '', '', 67186), +(62811, 'koKR', '', '', '', 67186), +(62296, 'koKR', '', '신화 여명문장 획득', '', 67186), +(42769, 'koKR', '한밤 1 시즌 동안 영웅 여명문장이 더 이상 필요 없을 정도로 성장', '여명의 영웅', '캐릭터 해제: 영웅 여명문장을 신화 여명문장으로 교환', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 신화 생명체 3회 잡기', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수에서 누적 250,000점 획득', `Reward_lang`='보상: 모험심 강한 잠수 동료', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 물고기 100마리 잡기', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 호흡이 10초 미만으로 남은 상태에서 수면으로! 능력 사용', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 도랑 너머로 이동을 시도하여 강제로 추방당하기', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='보상: 심연잠수부 투나킷에게서 심해의 우상 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 고대 유물 10개 발견 및 여울 그물 강화 획득', `Reward_lang`='보상: 심연잠수부 제주에게서 세 번 엮은 그물 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 가라앉은 유물 50개 발견', `Reward_lang`='보상: 심연잠수부 제주에게서 여울 그물 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 아래 나열된 모든 생명체 수집 및 심해용 산소통 획득', `Reward_lang`='보상: 심연잠수부 제주에게서 날로라크의 숨결통 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 아래 나열된 모든 생명체 획득 및 심연 잠수부의 중고 산소통 강화 획득', `Reward_lang`='보상: 심연잠수부 제주에게서 심해용 산소통 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 아래 나열된 모든 생명체 획득', `Reward_lang`='보상: 심연잠수부 제주에게서 심연 잠수부의 중고 산소통 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수로 물고기 500마리 이상 잡기 및 심연의 기름 강화 획득', `Reward_lang`='보상: 심연잠수부 제주에게서 파크 도랑 지느러미 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='한 번의 심연 강태공 잠수 중 물고기 25마리 이상 잡기 및 강화된 관절 강화 획득', `Reward_lang`='보상: 심연잠수부 제주에게서 심연의 기름 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='koKR'); +UPDATE `achievement_locale` SET `Description_lang`='심연 강태공 잠수 중 물고기 3마리 이상 잡기', `Reward_lang`='보상: 심연잠수부 제주에게서 강화된 관절 구매 가능', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='koKR'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='koKR'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'koKR', '심연잠수부 제주 본인이 인정한, 진정한 심연 강태공입니다.', '|cFFFFD200상인: |r심연잠수부 투나킷|n|cFFFFD200지역: |r줄아만|n|cFFFFD200가격: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'koKR', '어떤 기록을 측정하시겠습니까?', '어떤 기록을 측정하시겠습니까?', 67186), +(289969, 'koKR', '나는 은빛 서약단의 손에 이미 많은 동족을 잃었소.\n\n전시라 어쩔 수 없었다고 하더군. 양측 모두 피해를 입었다는 얘기도. 하지만 우리 선리버는 달라란에서 그 누구도 추방하지 않았소.\n\n한 윈드러너는 숙청의 죗값을 치렀고, 또 다른 하나는 오늘 이 자리에서 나를 마주하고 있구려.', '', 67186); + +UPDATE `broadcast_text_locale` SET `Text_lang`='만나서 반갑소, 대영주! 인생이 참, 생각했던 것과 많이 달라졌소. 처음에는 은빛 손을 회수했고, 이젠 믿기 어렵게도 위대한 티탄 수호자 티르 님이 돌아오셨지.\n\n이렇게 아르칸티나에서 당신을 비롯해... 상상조차 어려운 일을 직접 본 사람들과 쉬고 있는 게 위안이 되는구려.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=308983 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='빛나무 무기 배송이 왜 늦는지 알아보려고 온 건가? 그렇다면 잘 찾아왔네.\n\n황혼의 칼날단이 우리 야영지를 알아냈고, 아마니에게 강력한 빛나무 무기를 공급한다는 것도 눈치챘지. 그래서 요즘은 수시로 들이닥쳐서 일만 방해하고 있어.\n\n그 와중에 어떤 엘프 아이가 야영지에 들이닥쳐서는 여동생 얘기를 하며 고래고래 소리를 지르지 뭔가. 지금 황혼의 칼날단 상대하기도 바쁜데, 엘프 농부의 화나고 길 잃은 자식까지 돌볼 시간은 없네!\n\n나이도 어리고, 뭐든 다 안다고 착각해. 하지만 나라고 다 모르는 건 아니거든...\n\n자네가 이 두 가지 문제를 한꺼번에 해결해 줄 수 있을지도 모르겠군.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=308778 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='너는 샬라드라실의 뿌리감시관 루이아 앞에 서 있다. 나는 이 저주받은 뿌리들을 지키며 85년을 보냈다. 내 스승께서 흙으로 돌아가기 전 그렇게 했던 것처럼 말이다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=308501 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='칸자는... 남달라.\n\n어렸을 때는 말을 하지도 않고, 웃지도 않고, 누구와 눈도 마주치려 하지 않았지.\n\n하지만 내 어머니와 칸자의 아버지, 쌍둥이 자매의 도움으로 조금씩 말도 하고, 놀기도 하고, 또래 아이들처럼 지낼 수 있게 되었어.\n\n그런데 내 어머니가 세상을 떠났고, 아버지는 일로 점점 더 바빠졌고, 자나카는 혈액 질병으로 목숨을 잃었지.\n\n자나카가 떠난 이후로, 칸자는 다시 입을 닫았어. 지금껏 시간을 주고 있었는데... 벌써 3년이 흘렀군.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=307197 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='그래도 썩은가지한테 잡히진 않았고, 아버지도 무사히 돌아오셨으니 다행이군.\n\n우리 작은 가족은 이미 겪을 만큼 겪었어. 더는 안 돼.\n\n그나저나, 칸자는 또 어디 갔지?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=306852 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='칸자가 간 방향...\n\n그리고 챙겨 간 물건들...\n\n필로를 부를 수 있는 건 아이뿐이고, 아이의 마음으로 불러야 해.\n\n찻주전자, 소풍 바구니... 칸자는 필로랑 놀고 싶었던 거야.\n\n그런데 찻주전자는 깨졌고, 음식을 가득 담은 바구니는 떨어뜨려 버렸으니, 이젠 어쩌려는지...', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=306851 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='흠... 코비스라...', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=305742 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='<종이들의 위치와 주변 발자국을 보면 누군가 급히 자리를 떴고, 여러 멀록에게 쫓긴 것으로 보입니다.>\n\n심해지느러미가 벌인 토착민 습격은 계획 중 일부에 불과했던 것 같다. 또 다른 목표는 아탈아바시의 무덤이었다.\n\n심해지느러미는 지금까지 멀록에게서 볼 수 없었던 강력한 강령술을 갖추고 있다. 트롤의 유해를 되살려 언데드로 만들 정도니까! 이 힘을 어디서 배운 걸까? 근처의 썩은가지 트롤에게서 전수받은 걸지도 모르겠다.\n\n어쨌든, 이건 단순한 습격이 아니다. 심해지느러미는 언데드 군대를 일으키고 있다. 목적이 무엇인지는 아직 알 수 없다.\n\n<발자국은 북서쪽으로 이어져 있습니다.>', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=305450 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='조용히 해, 브웜!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=304509 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='거봐!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=304508 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='알았어요. 하나... 둘...', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=304505 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='이렇게. 쾅!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=303990 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='그러더니 갑자기 나한테 뛰어드는 거 있지!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=303988 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='저리 가!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=303870 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='아스테레이도 아직 도움이 필요할 겁니다. 저는 여기서 마무리할 테니 중앙 탑에 들러보세요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=303530 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='요원을 하나 제거했군요. 좋아요. 이제 부정한 빗물로 가죠.\n\n이쪽으로 들어갈 수 있어요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=303469 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='...그래서 내가 이렇게 말했소. \'그대의 귀가 길다고 해도, 내 꼬리는 더 길다오!\'', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=302008 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='밖에 녹색 횃불이 있는 곳에 지룡이 좀 있을지도 모릅니다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=301005 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='이걸 좀 더 일찍 깨우치고 더 나은 지도자가 됐더라면.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=300642 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='할라지는 절대 마른나무껍질을 죽게 두지 않지. 아킬존이 우리를 지켜주듯이.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=300632 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='예전같진 않을거야, 잔. 하지만 네가 내 그늘에서 시들게 두진 않을거다. 넌 여전히 내 오른팔이자 동생이니까.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=299668 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='그리고 홀로 버티던 기억도.. 하지만 우리는 로아와 손을 잡아야해. 고킨예와도.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=299666 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='저랑 베도란, 거기에 $p 님까지 있으니 걱정하실 필요 없습니다, 대장님.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=298821 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='이 수정 용기는... 놀라울 정도로 튼튼한 우주의 물질로 만들어졌습니다. 흥미롭군요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=296530 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='줄잔을 찾게 되면... 무슨 일이 생겨도 우린 피를 나눈 남매라는 걸 전해다오.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=296471 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='우리에 대해 뭘 알고 있는지 보려고 시험하는 중이에요! 제가 여기에 도청 장치 심어둔 거 아시죠?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=296185 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='그 장치가 생명체에 깃든 타락을 측정할 거예요. 흩어져서 수색하죠.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=296020 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='아스테레이, 발사린... 다른 순찰대원들 도와주세요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=295738 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='맞아요! 이상한 마법이 있었고... 잠깐. 던러너 대장님께 무슨 문제라도 있나요?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=295405 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='긴장해. 지금까지 나온 건 애송이들뿐이니까.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=295258 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='저희 오빠는 성가신 방해를 받으면 신경이 곤두서요. 땅과 하늘을 모두 정리해 주세요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=293787 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='전부터 돌려주려고 한 거네요! 어떻게든 야전 조리로 해야죠.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=293774 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='정말 감사합니다! 잠깐... 이것 좀 내려놓고, 도서관에서 뵐게요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=293748 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='편히 잠드소서.\n\n$xgc $xgn 이곳에 묻히다.\n\n$xgd, $xgt.', `Text1_lang`='편히 잠드소서.\n\n$xgc $xgn 이곳에 묻히다.\n\n$xgd, $xgt.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=293576 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='친구여! 도와 주시니 감사합니다. 솔라르의 이름에 큰 영광이 될 겁니다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=292410 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='건투를 빌지, 뭐. 날로라크께서 네 얼굴을 물어뜯어도 난 두 발 뻗고 잘 수 있을 것 같군.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=291754 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='전사들이 계속 실종되고 있는 이 와중에, 그대는 로아 유령을 쫓아가겠단 말인가?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=291236 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='벌레 같은 자식... 아무튼, 감사합니다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=289399 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='자네 딸 아마시에게 주는 건 어떻겠나? 온 마을 사람들에게 새로운 요리를 먹이고 있던데.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=288359 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='이번만큼은 저도 멜레도어의 말에 동의합니다. 죄송하지만, 저도 돕지 않겠습니다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=288133 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='...일지?!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=287914 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='토르톨란은 당분간 머물러도 되네. 나만큼이나 고집이 센 친구구먼!', `Text1_lang`='토르톨란은 당분간 머물러도 되네. 나만큼이나 고집이 센 친구구먼!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=287852 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='토르톨란의 말이 진심이었다고? 정말 얼굴을 내밀었단 말인가?\n\n<호탕하게 웃는 장로 렌젠>\n\n편지를 그렇게도 보냈으니! 정작 난 무시로 일관했지만. 그러다 결국 친구에게 허락만 기다리지 말고 하고 싶은 걸 하라고 했네. 그래도 기다리겠다고 하더군!\n\n어찌 거절하겠나? 그래서 \"허락 편지\"를 보냈네. 몇 년 동안 한 번도 주지 않았던 건데!\n\n결정을 존중하겠네. 자고로 탐구자는 스스로 원하는 길을 갈 자유가 있지. 어차피 마른나무껍질이 토르톨란 손님들을 지켜볼 게야. 이 땅을 찾은 방문객한테는 다 그렇게 하고 있으니.', `Text1_lang`='토르톨란의 말이 진심이었다고? 정말 얼굴을 내밀었단 말인가?\n\n<호탕하게 웃는 장로 렌젠>\n\n편지를 그렇게도 보냈으니! 정작 난 무시로 일관했지만. 그러다 결국 친구에게 허락만 기다리지 말고 하고 싶은 걸 하라고 했네. 그래도 기다리겠다고 하더군!\n\n어찌 거절하겠나? 그래서 \"허락 편지\"를 보냈네. 몇 년 동안 한 번도 주지 않았던 건데!\n\n결정을 존중하겠네. 자고로 탐구자는 스스로 원하는 길을 갈 자유가 있지. 어차피 마른나무껍질이 토르톨란 손님들을 지켜볼 게야. 이 땅을 찾은 방문객한테는 다 그렇게 하고 있으니.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=287847 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='다음 달에 사냥을 주관할 생각이야. 혹시 함께할 수 있겠어?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=287600 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='토룬도가 보낸 건가? 빛나무 무기 배송이 왜 늦는지 알아보라고? 그렇다면 잘 찾아왔네.\n\n황혼의 칼날단이 우리 야영지를 알아냈고, 아마니에게 강력한 빛나무 무기를 공급한다는 것도 눈치챘지. 그래서 요즘은 수시로 들이닥쳐서 일만 방해하고 있어.\n\n그 와중에 어떤 엘프 아이가 야영지에 들이닥쳐서는 여동생 얘기를 하며 고래고래 소리를 지르지 뭔가. 지금 황혼의 칼날단 상대하기도 바쁜데, 엘프 농부의 화나고 길 잃은 자식까지 돌볼 시간은 없네!\n\n나이도 어리고, 뭐든 다 안다고 착각해. 하지만 나라고 다 모르는 건 아니거든...\n\n자네가 이 두 가지 문제를 한꺼번에 해결해 줄 수 있을지도 모르겠군.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=286257 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='<뾰족한 이를 드러내며 환히 웃는 마르직스>', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=247439 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='명심하시오. 눈앞에서 폭발한다면 제대로 찾았단 뜻이오!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=239474 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (273277,272911,295984)); +UPDATE `broadcast_text_locale` SET `Text1_lang`='바텐더가 독한 술로 들겠냐고 묻더군. 이미 죽은 몸인데, 좀 독하게 마신다고 뭐가 달라지겠나.\n\n<주변을 훑으며 잔을 천천히 한 모금 마시는 릴리안>\n\n이곳은 시끄럽고, 탄 맥주 냄새가 가득하네... 그런데 기묘하게도 고향처럼 푸근해. 더 이상한 건, 호드와 얼라이언스 바로 옆에 앉아 있으면서도 묘한 평온을 느낀다는 걸세. 이곳의 활기찬 분위기는 특이하지만, 참 반갑구먼.\n\n우리 모두가 공유하는 건 단 하나, 쉴 수 있는 순간은 천금과도 같다는 걸세. 쉽게 사라지니까 더욱더 열심히 붙들게 되지.\n\n혹시 술에서 독 맛이 난다면, 내 탓은 아닐세. 오늘은 정말 쉬고 싶거든.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=308821 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='나는 발리라 생귀나르라고 해. 스스로 길을 개척하는 블러드 엘프지.\n\n내 과거는... 복잡해. 그래도 믿을 건 언제나 나 자신이었어.\n\n나는 린 가문과 함께 싸웠고, 지금은 실버문과 섭정의 아군이야.\n\n나는 누구의 하수인도, 첩자도 아니야. 내가 신뢰하는 이들의 동료일 뿐이지.\n\n그 정도로 충분하다면, 언젠가 우리도 함께할 기회가 올 거야.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=301657 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='그럼 가보겠다. 동족을 위해, 그리고 외숙부님을 위해서요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=299055 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='한낱 필멸자가 만든 무기는 잘아타스 님의 위대한 계획에 흠집도 내지 못한다!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=297004 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='아마니를 파괴하라! 부숴라! 잘아타스 님을 위해 혼돈을 뿌려라!', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=296930 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='그자들은 힘이 부족했죠. 우리가 두번 다 짓눌러버렸고요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=295985 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='이미 마법학자에, 기사단에, 무기까지 다 가져갔으면서, 이젠 음식도 내놓으라고?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=295318 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='저는 리 리의 오빠 스싸이라고 합니다. 직접 맞이해 드리지 못한 게 아쉽네요. 이젠 모두 우리만 기다리고 있는 걸까요?\n\n며칠 전 축제를 준비하려고 우쏭 마을에 갔는데, 가장 중요한 폭죽이 사라졌더군요! 집에 돌아와 찾아봤지만 아직도 못 찾고 있네요. 시간이 얼마 남지 않았으니 그냥 없는 대로 해야 할지도 모릅니다.\n\n<이마의 땀을 훔치는 스싸이>\n\n리 리의 친구를 만나 정말 반갑습니다. 마지막으로 동생을 본 지 오래된 터라, 풀어야 할 회포가 산더미예요. 물론 대부분은 리 리의 이야기를 듣는 시간이겠지만요. 전 집을 떠나 지금은 아침 바람 마을에서 살고 있습니다. 호숫가에 자리한 정말 아름다운 곳이죠.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=294283 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='여기 있었군, 파올! 우릴 왜 이런 황량한 땅으로 데려온 건가?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=294167 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='물론이죠, 어둠에 물든 동족이여.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=293822 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='전 외숙부님 얘기를 듣는 걸 좋아했어요. 사실일까 궁금하기도 했지만요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=291856 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='아킬존, 할라지, 잔알라이, 날로라크에 대한 이야기와... 그들이 우릴 어떻게 지켜줬는지 기억합니다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=291853 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='화물이 하나 더 남긴 했는데, 거의 끝나 간다.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=291585 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='태양샘에서 터져 나온 마력은... 제가 지금껏 봐온 어떤 마법보다도 강력했습니다. 참고로 전 마법을 수련한 기간이 결코 짧지 않아요. 저 군대가 우릴 지켜주러 온 거라는데, 마력 쇄도를 일으킨 것도 저들이라고 들었습니다! 뭘 제대로 알고 건드리기나 하는 걸까요?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=290937 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='이 괴물은 강대한 힘을 지녔음에도, 고통에 휩싸여 있었습니다. 저도 분노에 삼켜졌을 때 고통에 휘둘려 폭발했지요. 공허도 빛과 같은 걸까요?', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=288987 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text_lang`='반갑네, $p!\n\n이 어둠과 공허 속에서도 빛은 더욱 강하게 타오르고 있네. 언데드인 내 몸엔 언제나 그 고통이 따르지만, 포식의 군단은 나보다도 훨씬 더 그 분노에 취약하지.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=283177 AND `locale`='koKR'); +UPDATE `broadcast_text_locale` SET `Text1_lang`='같이 어머니를 기억할 수 있어서 기뻐요.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=273965 AND `locale`='koKR'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'koKR', '공허 돌파자 %s', '공허 돌파자 %s', 67186), +(1307, 'koKR', '암영의 경쟁자 %s', '암영의 경쟁자 %s', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'koKR', '', 67186), +(62821, 'koKR', '', 67186), +(62820, 'koKR', '', 67186), +(62819, 'koKR', '', 67186), +(62818, 'koKR', '', 67186), +(62817, 'koKR', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'koKR', '문신 색', 67186), +(8959, 'koKR', '문신', 67186), +(8958, 'koKR', '눈가리개', 67186), +(8957, 'koKR', '뿔', 67186), +(8956, 'koKR', '문신 색', 67186), +(8955, 'koKR', '문신', 67186), +(8954, 'koKR', '눈가리개', 67186), +(8953, 'koKR', '뿔', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'koKR', '', 67186), +(224842, 'koKR', '하우징 장식 결투 완료', 67186), +(224840, 'koKR', '하우징 장식 결투 완료', 67186), +(224838, 'koKR', '하우징 장식 결투 완료', 67186), +(223318, 'koKR', '심연 강태공: 최고의 물고기 (3 신화)', 67186), +(223121, 'koKR', '심연 강태공: 공인 심연잠수부', 67186), +(223119, 'koKR', '심연 강태공: 도랑 광전사', 67186), +(222479, 'koKR', '심연 강태공: 적절한 절차', 67186), +(222477, 'koKR', '심연 강태공: 바다의 굴레를 벗어나', 67186), +(222475, 'koKR', '심연 강태공: 설령 최고라도', 67186), +(222466, 'koKR', '심연 강태공: 심해의 우상', 67186), +(222453, 'koKR', '심연 강태공: 공동핵심 작살 포탑', 67186), +(222438, 'koKR', '심연 강태공: 중형 작살 대포', 67186), +(222436, 'koKR', '심연 강태공: 세 번 엮은 그물', 67186), +(222434, 'koKR', '심연 강태공: 여울 그물', 67186), +(222432, 'koKR', '심연 강태공: 날로라크의 숨결통', 67186), +(222430, 'koKR', '심연 강태공: 심해용 산소통', 67186), +(222428, 'koKR', '심연 강태공: 심연 잠수부의 중고 산소통', 67186), +(222426, 'koKR', '심연 강태공: 파크 도랑 지느러미', 67186), +(222424, 'koKR', '심연 강태공: 심연의 기름', 67186), +(222422, 'koKR', '심연 강태공: 강화된 관절', 67186), +(222416, 'koKR', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'koKR', '키렌나의 카드가의 모방품', 67186), +(220967, 'koKR', '하우징 장식 결투에서 처음 1분 동안 잡히지 않기', 67186), +(220603, 'koKR', '폭격', 67186), +(220574, 'koKR', '덫에 걸림!', 67186), +(220573, 'koKR', '연회 훼방꾼', 67186), +(212256, 'koKR', '심연 강태공 이벤트 완료', 67186), +(212255, 'koKR', '심연 강태공 이벤트 완료', 67186), +(229140, 'koKR', '', 67186), +(229139, 'koKR', '', 67186), +(229048, 'koKR', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'koKR', '할하다르 병력 처치', 67186), +(225426, 'koKR', '할하다르 병력 처치', 67186), +(223423, 'koKR', '영혼발바닥 풀어주기', 67186), +(223697, 'koKR', '', 67186), +(223696, 'koKR', '', 67186), +(223695, 'koKR', '', 67186), +(223693, 'koKR', '', 67186), +(219734, 'koKR', '', 67186), +(209802, 'koKR', '전투 수집품을 동료에게 착용시키기', 67186), +(170782, 'koKR', '전투 수집품을 동료에게 착용시키기', 67186), +(228515, 'koKR', '평점 조건', 67186), +(228514, 'koKR', '업적 - 쐐기돌 신화: 한밤 던전 1 시즌', 67186), +(227753, 'koKR', '', 67186), +(227677, 'koKR', '', 67186), +(227676, 'koKR', '', 67186), +(227675, 'koKR', '', 67186), +(227674, 'koKR', '', 67186), +(227673, 'koKR', '', 67186), +(227672, 'koKR', '', 67186), +(227671, 'koKR', '', 67186), +(225639, 'koKR', '', 67186), +(225638, 'koKR', '', 67186), +(225637, 'koKR', '', 67186), +(225636, 'koKR', '', 67186), +(225635, 'koKR', '', 67186), +(225634, 'koKR', '심연 강태공: 진주는 심연 속으로', 67186), +(225611, 'koKR', '', 67186), +(225610, 'koKR', '', 67186), +(225609, 'koKR', '심연 강태공: 골동품 수집가', 67186), +(220963, 'koKR', '잡히지 않고 한 라운드 참여', 67186), +(220961, 'koKR', '방해받지 않고 90초 동안 발견되지 않기', 67186), +(220959, 'koKR', '술래 - 2분 내로 승리', 67186), +(220958, 'koKR', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'koKR', '비전 순찰자로 발견된 은신자 잡기', 67186), +(220955, 'koKR', '무위술사로 발견된 은신자 잡기', 67186), +(220725, 'koKR', '주문파괴자로 발견된 은신자 잡기', 67186), +(227430, 'koKR', '', 67186), +(223818, 'koKR', '', 67186), +(216419, 'koKR', '', 67186), +(216418, 'koKR', '', 67186), +(216417, 'koKR', '', 67186), +(227429, 'koKR', '', 67186), +(227428, 'koKR', '새끼 화살태양용 애완동물 보유', 67186), +(225732, 'koKR', '여울 그물 강화 획득', 67186), +(224745, 'koKR', '파수병 활성화', 67186), +(222969, 'koKR', '잔잔한 속삭임 방어', 67186), +(222803, 'koKR', '방벽 손상', 67186), +(221550, 'koKR', '살아 움직이는 스컬지 조각 처치', 67186), +(219955, 'koKR', '흡수체 군락 선견자 처치', 67186), +(219466, 'koKR', '흡수체 군락 선견자 처치', 67186), +(225670, 'koKR', '', 67186), +(225668, 'koKR', '', 67186), +(225666, 'koKR', '', 67186), +(225664, 'koKR', '', 67186), +(227206, 'koKR', '', 67186), +(223209, 'koKR', '통계: 신화 여명문장 획득', 67186), +(212362, 'koKR', '한밤 1 시즌 동안 평균 아이템 레벨 285 달성 (신화 여명문장 이상)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='koKR'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'koKR', '성운의 공허핵', '한밤 1 시즌 공격대에서 강력한 적을 처치하거나, 신화+ 던전, 풍요로운 구렁, 악몽 난이도 사냥감 추적 완료 시 강력한 장비로 변환할 수 있습니다.', 67186), +(3347, 'koKR', '신화 여명문장', '한밤 1 시즌 기간에 신화 장비를 최대 아이템 레벨 276~289로 강화하는 데 사용됩니다.\n\n제작에 사용 시 완성되는 아이템의 아이템 레벨을 품질에 따라 272~285로 설정합니다.\n\n아래 활동을 완료하여 획득할 수 있습니다.\n\n- 신화 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 9 레벨 이상의 신화 쐐기돌 던전', 67186), +(3346, 'koKR', '영웅 여명문장', '한밤 1 시즌 기간에 영웅 장비를 최대 아이템 레벨 263~276으로 강화하는 데 사용됩니다. 아래 활동을 완료하여 획득할 수 있습니다.\n\n- 영웅 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 4~8 레벨 신화 쐐기돌 던전\n- 11 레벨 구렁\n- 8 레벨 이상의 보물 추적자의 은혜\n- 사냥감 추적 (악몽)', 67186), +(3345, 'koKR', '영웅 여명문장', '한밤 1 시즌 기간에 영웅 장비를 최대 아이템 레벨 263~276으로 강화하는 데 사용됩니다.\n\n제작에 사용 시 완성되는 아이템의 아이템 레벨을 품질에 따라 259~272로 설정합니다.\n\n아래 활동을 완료하여 획득할 수 있습니다.\n\n- 영웅 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 4~8 레벨 신화 쐐기돌 던전\n- 11 레벨 구렁\n- 8 레벨 이상의 보물 추적자의 은혜\n- 사냥감 추적 (악몽)', 67186), +(3344, 'koKR', '챔피언 여명문장', '한밤 1 시즌 기간에 챔피언 장비를 최대 아이템 레벨 250~263으로 강화하는 데 사용됩니다. 아래 활동을 완료하여 획득할 수 있습니다.\n\n- 주간 야외 이벤트\n- 일반 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 신화 시즌 던전\n- 2~3 레벨 신화 쐐기돌 던전\n- 7~10 레벨 구렁\n- 6~7 레벨 보물 추적자의 은혜\n- 사냥감 추적 (악몽)', 67186), +(3343, 'koKR', '챔피언 여명문장', '한밤 1 시즌 기간에 챔피언 장비를 최대 아이템 레벨 250~263으로 강화하는 데 사용됩니다. 아래 활동을 완료하여 획득할 수 있습니다.\n\n- 주간 야외 이벤트\n- 일반 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 신화 시즌 던전\n- 2~3 레벨 신화 쐐기돌 던전\n- 7~10 레벨 구렁\n- 6~7 레벨 보물 추적자의 은혜\n- 사냥감 추적 (악몽)', 67186), +(3342, 'koKR', '노련가 여명문장', '한밤 1 시즌 기간에 노련가 장비를 최대 아이템 레벨 237~250으로 강화하는 데 사용됩니다. 아래 활동을 완료하여 획득할 수 있습니다.\n\n- 반복 가능 야외 이벤트\n- 공격대 찾기 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 영웅 시즌 던전\n- 5~6 레벨 구렁\n- 4~5 레벨 보물 추적자의 은혜\n- 사냥감 추적 (어려움)', 67186), +(3341, 'koKR', '노련가 여명문장', '한밤 1 시즌 기간에 노련가 장비를 최대 아이템 레벨 237~250으로 강화하는 데 사용됩니다.\n\n제작에 사용 시 완성되는 아이템의 아이템 레벨을 품질에 따라 233~246으로 설정합니다.\n\n아래 활동을 완료하여 획득할 수 있습니다.\n\n- 반복 가능 야외 이벤트\n- 공격대 찾기 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 영웅 시즌 던전\n- 5~6 레벨 구렁\n- 4~5 레벨 보물 추적자의 은혜\n- 사냥감 추적 (어려움)', 67186), +(3418, 'koKR', '성운의 공허핵', '한밤 1 시즌 공격대에서 강력한 적을 처치하거나, 신화+ 던전, 풍요로운 구렁, 악몽 난이도 사냥감 추적 완료 시 강력한 장비로 변환할 수 있습니다.', 67186), +(3391, 'koKR', '모험가 여명문장', '한밤 1 시즌 기간에 모험가 장비를 최대 아이템 레벨 224~237로 강화하는 데 사용됩니다. 아래 활동을 완료하여 획득할 수 있습니다.\n\n- 반복 가능 야외 이벤트\n- 4 레벨 구렁\n- 사냥감 추적 (일반)', 67186), +(3383, 'koKR', '모험가 여명문장', '한밤 1 시즌 기간에 모험가 장비를 최대 아이템 레벨 224~237로 강화하는 데 사용됩니다.\n\n제작에 사용 시 완성되는 아이템의 아이템 레벨을 품질에 따라 220~233으로 설정합니다.\n\n아래 활동을 완료하여 획득할 수 있습니다.\n\n- 반복 가능 야외 이벤트\n- 4 레벨 구렁\n- 사냥감 추적 (일반)', 67186), +(3348, 'koKR', '신화 여명문장', '한밤 1 시즌 기간에 신화 장비를 최대 아이템 레벨 276~289로 강화하는 데 사용됩니다. 아래 활동을 완료하여 획득할 수 있습니다.\n\n- 영웅 공허첨탑, 꿈의 균열, 쿠엘다나스 진격로\n- 9 레벨 이상의 신화 쐐기돌 던전', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='koKR'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'koKR', '루크란', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'koKR', '아케루스의 눈', 67186), +(264717, 'koKR', '아마니 수호물 사술', 67186), +(264338, 'koKR', '도마나르 제어 장치', 67186), +(264336, 'koKR', '공허불빛 화로', 67186), +(264332, 'koKR', '아마니 의식 제단', 67186), +(263238, 'koKR', '부정한 긴 탁자', 67186), +(263230, 'koKR', '마법학자의 책장', 67186), +(256683, 'koKR', '실버문 훈련용 허수아비', 67186), +(253451, 'koKR', '장막뿌리 분수대', 67186), +(245938, 'koKR', '지나치게 자란 아라시 격자망', 67186), +(245560, 'koKR', '양조장 황토색 창문', 67186), +(241044, 'koKR', '아르거시안 상자', 67186), +(267641, 'koKR', '빛바랜 실버문 태양벼슬', 67186), +(267640, 'koKR', '빛바랜 실버문 태양장막', 67186), +(267639, 'koKR', '빛바랜 실버문 태양보호대', 67186), +(267638, 'koKR', '빛바랜 실버문 태양첨탑', 67186), +(267607, 'koKR', '희미한 암영의 손등싸개', 67186), +(267606, 'koKR', '무한한 중력의 장갑', 67186), +(267605, 'koKR', '끝없는 소용돌이 손아귀', 67186), +(267604, 'koKR', '가공할 거수의 손아귀', 67186), +(267482, 'koKR', '유망한 하라티 수호병의 철갑허리띠', 67186), +(267481, 'koKR', '유망한 하라티 수호병의 허리띠', 67186), +(267480, 'koKR', '유망한 하라티 수호병의 장식끈', 67186), +(267479, 'koKR', '유망한 하라티 수호병의 장식띠', 67186), +(266432, 'koKR', '실버문 태양벼슬', 67186), +(266431, 'koKR', '실버문 태양장막', 67186), +(266430, 'koKR', '실버문 태양보호대', 67186), +(266429, 'koKR', '실버문 태양첨탑', 67186), +(263269, 'koKR', '하라티 수호병의 철갑허리띠', 67186), +(263268, 'koKR', '하라티 수호병의 허리띠', 67186), +(263267, 'koKR', '하라티 수호병의 장식끈', 67186), +(263265, 'koKR', '하라티 수호병의 장식띠', 67186), +(272961, 'koKR', '주문파괴자의 칼날지팡이', 67186), +(272960, 'koKR', '주문파괴자의 방패벽', 67186), +(272318, 'koKR', '주문파괴자의 불사조칼날', 67186), +(272317, 'koKR', '주문파괴자의 불사조전투검', 67186), +(272316, 'koKR', '주문파괴자의 칼날창', 67186), +(19355, 'koKR', '그림자날개 지팡이', 67186), +(272338, 'koKR', '마법사 경비병의 마법대검', 67186), +(272337, 'koKR', '마법사 경비병의 마법단검', 67186), +(272336, 'koKR', '무위봉화 균열 파쇄기', 67186), +(272321, 'koKR', '비전 순찰자의 마법활', 67186), +(272320, 'koKR', '무위봉화 균열 집중 장치', 67186), +(273874, 'koKR', '공허에 물든 성난태양 도끼장창', 67186), +(263970, 'koKR', '공허에 물든 글레이브검', 67186), +(263969, 'koKR', '공허에 물든 대마법봉', 67186), +(263968, 'koKR', '공허에 물든 집중 장치', 67186), +(263967, 'koKR', '공허에 물든 큰활', 67186), +(263966, 'koKR', '공허에 물든 대검', 67186), +(263963, 'koKR', '공허에 물든 결투검', 67186), +(263960, 'koKR', '공허에 물든 불꽃검', 67186), +(263959, 'koKR', '공허에 물든 고서', 67186), +(263956, 'koKR', '공허에 물든 파쇄기', 67186), +(263954, 'koKR', '공허에 물든 전투 지휘봉', 67186), +(263952, 'koKR', '공허에 물든 성난태양 지팡이', 67186), +(263950, 'koKR', '공허에 물든 삼각창', 67186), +(263949, 'koKR', '공허에 물든 보루 방패', 67186), +(263946, 'koKR', '공허에 물든 분쇄기', 67186), +(263943, 'koKR', '공허에 물든 식칼', 67186), +(263942, 'koKR', '공허에 물든 송곳니', 67186), +(263941, 'koKR', '공허에 물든 소총', 67186), +(263707, 'koKR', '공허의 진노 팔찌', 67186), +(263706, 'koKR', '공허의 진노 망토', 67186), +(263705, 'koKR', '공허의 진노 허리보호띠', 67186), +(263704, 'koKR', '공허의 진노 견갑', 67186), +(263703, 'koKR', '공허의 진노 다리갑옷', 67186), +(263702, 'koKR', '공허의 진노 투구', 67186), +(263701, 'koKR', '공허의 진노 건틀릿', 67186), +(263700, 'koKR', '공허의 진노 발덮개', 67186), +(263699, 'koKR', '공허의 진노 가슴보호갑', 67186), +(263698, 'koKR', '공허의 천벌의 블라우스', 67186), +(263697, 'koKR', '공허의 천벌의 팔보호구', 67186), +(263696, 'koKR', '공허의 천벌의 망토', 67186), +(263695, 'koKR', '공허의 천벌의 허리띠', 67186), +(263694, 'koKR', '공허의 천벌의 어깨덮개', 67186), +(263693, 'koKR', '공허의 천벌의 다리보호구', 67186), +(263692, 'koKR', '공허의 천벌의 해골모자', 67186), +(263691, 'koKR', '공허의 천벌의 장갑', 67186), +(263690, 'koKR', '공허의 천벌의 장화', 67186), +(263689, 'koKR', '공허의 천벌의 로브', 67186), +(263688, 'koKR', '공허의 폭풍 경갑', 67186), +(263687, 'koKR', '공허의 폭풍 팔보호구', 67186), +(263686, 'koKR', '공허의 폭풍 망토', 67186), +(263685, 'koKR', '공허의 폭풍 허리띠', 67186), +(263684, 'koKR', '공허의 폭풍 견장', 67186), +(263683, 'koKR', '공허의 폭풍 킬트', 67186), +(263682, 'koKR', '공허의 폭풍 보호모', 67186), +(263681, 'koKR', '공허의 폭풍 건틀릿', 67186), +(263680, 'koKR', '공허의 폭풍 발덮개', 67186), +(263679, 'koKR', '공허의 폭풍 가슴보호갑', 67186), +(263678, 'koKR', '공허송곳니 팔보호구', 67186), +(263677, 'koKR', '공허송곳니 망토', 67186), +(263676, 'koKR', '공허송곳니 허리띠', 67186), +(263675, 'koKR', '공허송곳니 어깨덮개', 67186), +(263674, 'koKR', '공허송곳니 바지', 67186), +(263673, 'koKR', '공허송곳니 두건', 67186), +(263672, 'koKR', '공허송곳니 장갑', 67186), +(263671, 'koKR', '공허송곳니 장화', 67186), +(263670, 'koKR', '공허송곳니 가슴보호구', 67186), +(263669, 'koKR', '공허승천의 블라우스', 67186), +(263668, 'koKR', '공허승천의 손목띠', 67186), +(263667, 'koKR', '공허승천의 망토', 67186), +(263666, 'koKR', '공허승천의 허리띠', 67186), +(263665, 'koKR', '공허승천의 견갑', 67186), +(263664, 'koKR', '공허승천의 다리보호구', 67186), +(263663, 'koKR', '공허승천의 후광', 67186), +(263662, 'koKR', '공허승천의 손보호대', 67186), +(263661, 'koKR', '공허승천의 장화', 67186), +(263660, 'koKR', '공허승천의 로브', 67186), +(263659, 'koKR', '공허의 심판 경갑', 67186), +(263658, 'koKR', '공허의 심판 손목띠', 67186), +(263657, 'koKR', '공허의 심판 망토', 67186), +(263656, 'koKR', '공허의 심판 허리띠', 67186), +(263655, 'koKR', '공허의 심판 어깨덮개', 67186), +(263654, 'koKR', '공허의 심판 다리갑옷', 67186), +(263653, 'koKR', '공허의 심판 왕관', 67186), +(263652, 'koKR', '공허의 심판 건틀릿', 67186), +(263651, 'koKR', '공허의 심판 발덮개', 67186), +(263650, 'koKR', '공허의 심판 가슴보호갑', 67186), +(263649, 'koKR', '공허 수행사제의 손목띠', 67186), +(263648, 'koKR', '공허 수행사제의 망토', 67186), +(263647, 'koKR', '공허 수행사제의 장식끈', 67186), +(263646, 'koKR', '공허 수행사제의 어깨덮개', 67186), +(263645, 'koKR', '공허 수행사제의 바지', 67186), +(263644, 'koKR', '공허 수행사제의 투구', 67186), +(263643, 'koKR', '공허 수행사제의 손장갑', 67186), +(263642, 'koKR', '공허 수행사제의 갈퀴발톱', 67186), +(263641, 'koKR', '공허 수행사제의 조끼', 67186), +(263640, 'koKR', '공허바람 블라우스', 67186), +(263639, 'koKR', '공허바람 손목띠', 67186), +(263638, 'koKR', '공허바람 망토', 67186), +(263637, 'koKR', '공허바람 허리띠', 67186), +(263636, 'koKR', '공허바람 어깨덧옷', 67186), +(263635, 'koKR', '공허바람 바지', 67186), +(263634, 'koKR', '공허바람 왕관', 67186), +(263633, 'koKR', '공허바람 장갑', 67186), +(263632, 'koKR', '공허바람 장화', 67186), +(263631, 'koKR', '공허바람 로브', 67186), +(263630, 'koKR', '공허추적자의 팔보호구', 67186), +(263629, 'koKR', '공허추적자의 망토', 67186), +(263628, 'koKR', '공허추적자의 허리띠', 67186), +(263627, 'koKR', '공허추적자의 어깨덮개', 67186), +(263626, 'koKR', '공허추적자의 다리보호대', 67186), +(263625, 'koKR', '공허추적자의 투구', 67186), +(263624, 'koKR', '공허추적자의 건틀릿', 67186), +(263623, 'koKR', '공허추적자의 경갑', 67186), +(263622, 'koKR', '공허추적자의 가슴보호갑', 67186), +(263621, 'koKR', '공허수호병의 완갑', 67186), +(263620, 'koKR', '공허수호병의 망토', 67186), +(263619, 'koKR', '공허수호병의 요대', 67186), +(263618, 'koKR', '공허수호병의 견갑', 67186), +(263617, 'koKR', '공허수호병의 다리갑옷', 67186), +(263616, 'koKR', '공허수호병의 왕관', 67186), +(263615, 'koKR', '공허수호병의 발톱', 67186), +(263614, 'koKR', '공허수호병의 갈퀴발톱', 67186), +(263613, 'koKR', '공허수호병의 가슴보호갑', 67186), +(263612, 'koKR', '공허분노 가슴보호대', 67186), +(263611, 'koKR', '공허분노 팔보호구', 67186), +(263610, 'koKR', '공허분노 망토', 67186), +(263609, 'koKR', '공허분노 허리띠', 67186), +(263608, 'koKR', '공허분노 견갑', 67186), +(263607, 'koKR', '공허분노 다리보호대', 67186), +(263606, 'koKR', '공허분노 머리쓰개', 67186), +(263605, 'koKR', '공허분노 손보호대', 67186), +(263604, 'koKR', '공허분노 장화', 67186), +(263603, 'koKR', '공허분노 로브', 67186), +(263602, 'koKR', '공허방랑자의 팔보호구', 67186), +(263601, 'koKR', '공허방랑자의 망토', 67186), +(263600, 'koKR', '공허방랑자의 장식끈', 67186), +(263599, 'koKR', '공허방랑자의 어깨칼날', 67186), +(263598, 'koKR', '공허방랑자의 다리보호구', 67186), +(263597, 'koKR', '공허방랑자의 해골모자', 67186), +(263596, 'koKR', '공허방랑자의 장갑', 67186), +(263595, 'koKR', '공허방랑자의 덧신', 67186), +(263594, 'koKR', '공허방랑자의 멜빵', 67186), +(263593, 'koKR', '공허의 기수의 완갑', 67186), +(263592, 'koKR', '공허의 기수의 망토', 67186), +(263591, 'koKR', '공허의 기수의 요대', 67186), +(263590, 'koKR', '공허의 기수의 견갑', 67186), +(263589, 'koKR', '공허의 기수의 다리보호구', 67186), +(263588, 'koKR', '공허의 기수의 투구', 67186), +(263587, 'koKR', '공허의 기수의 장갑', 67186), +(263586, 'koKR', '공허의 기수의 발덮개', 67186), +(263585, 'koKR', '공허의 기수의 가슴보호갑', 67186), +(251161, 'koKR', '영혼사냥꾼의 장막', 67186), +(133494, 'koKR', '거친 좀비 허리띠', 67186), +(49810, 'koKR', '거친 좀비 허리띠', 67186), +(263286, 'koKR', '개조된 버섯전사 방패', 67186), +(255627, 'koKR', '우주를 호령하는 검투사의 망치', 67186), +(253582, 'koKR', '송곳니지느러미 도리깨', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'koKR', '환영 장식: 꿈 마법을 부여하는 법을 배웁니다.', '', '', '', '주문식: 환영 장식: 꿈', 67186), +(206969, 'koKR', '', '', '', '', '환영 장식: 꿈', 67186), +(206968, 'koKR', '', '', '', '', '환영 장식: 꿈', 67186), +(206967, 'koKR', '', '', '', '', '환영 장식: 꿈', 67186), +(204977, 'koKR', '환영 장식: 포자 마법을 부여하는 법을 배웁니다.', '', '', '', '주문식: 환영 장식: 포자', 67186), +(204568, 'koKR', '', '', '', '', '환영 장식: 포자', 67186), +(204567, 'koKR', '', '', '', '', '환영 장식: 포자', 67186), +(204565, 'koKR', '', '', '', '', '환영 장식: 포자', 67186), +(201321, 'koKR', '', '', '', '', '환영 장식: 질서', 67186), +(201320, 'koKR', '', '', '', '', '환영 장식: 질서', 67186), +(201319, 'koKR', '', '', '', '', '환영 장식: 질서', 67186), +(201318, 'koKR', '', '', '', '', '환영 장식: 바람', 67186), +(201317, 'koKR', '', '', '', '', '환영 장식: 바람', 67186), +(201316, 'koKR', '', '', '', '', '환영 장식: 바람', 67186), +(201315, 'koKR', '', '', '', '', '환영 장식: 대지', 67186), +(201314, 'koKR', '', '', '', '', '환영 장식: 대지', 67186), +(201313, 'koKR', '', '', '', '', '환영 장식: 대지', 67186), +(201312, 'koKR', '', '', '', '', '환영 장식: 냉기', 67186), +(201311, 'koKR', '', '', '', '', '환영 장식: 냉기', 67186), +(201310, 'koKR', '', '', '', '', '환영 장식: 냉기', 67186), +(200616, 'koKR', '', '', '', '', '환영 장식: 화염', 67186), +(200615, 'koKR', '', '', '', '', '환영 장식: 화염', 67186), +(200614, 'koKR', '', '', '', '', '환영 장식: 화염', 67186), +(245345, 'koKR', '순수한 원시 마력이 응축된 티끌입니다. 풍요 상인 부스러기 첼 또는 심연 강태공 심연잠수부 투나킷에게서 구매할 수 있습니다.', '', '', '', '융합된 활력', 67186), +(243343, 'koKR', '훨씬, 훨씬 거대한 무언가로 변할 수 있는 창문입니다.', '', '', '', '강태공의 변형물', 67186), +(243302, 'koKR', '압도적인 성장의 촉매입니다.', '', '', '', '물의 꽃송이', 67186), +(274267, 'koKR', '순수한 원시 마력이 응축된 티끌입니다. 풍요 상인 부스러기 첼 또는 심연 강태공 심연잠수부 투나킷에게서 구매할 수 있습니다.', '', '', '', '융합된 활력', 67186), +(255157, 'koKR', '', '', '', '', '심연 강태공의 낚시 기록', 67186), +(239563, 'koKR', '공허의 자취가 남은 스라소니 소환하는 법을 배웁니다. 타기 숙련도와 위치에 따라 달라지는 탈것입니다.', '', '', '', '어둠결속 목줄', 67186), +(223245, 'koKR', '', '', '', '', '복장: 심연 강태공', 67186), +(267009, 'koKR', '', '', '', '', '아마니 훈련용 허수아비', 67186), +(267007, 'koKR', '', '', '', '', '아케루스의 눈', 67186), +(264717, 'koKR', '', '', '', '', '아마니 수호물 사술', 67186), +(264342, 'koKR', '', '', '', '', '우주의 공허 보관함', 67186), +(264338, 'koKR', '', '', '', '', '도마나르 제어 장치', 67186), +(264336, 'koKR', '', '', '', '', '공허불빛 화로', 67186), +(264332, 'koKR', '', '', '', '', '아마니 의식 제단', 67186), +(264330, 'koKR', '', '', '', '', '아마니 벽걸이 화로', 67186), +(264329, 'koKR', '', '', '', '', '아마니 연회 탁자', 67186), +(264258, 'koKR', '', '', '', '', '만발하는 가열로', 67186), +(263238, 'koKR', '', '', '', '', '부정한 긴 탁자', 67186), +(263233, 'koKR', '', '', '', '', '신도레이 회전식 도서관', 67186), +(263230, 'koKR', '', '', '', '', '마법학자의 책장', 67186), +(263042, 'koKR', '', '', '', '', '뿌리불빛 가로등불', 67186), +(263036, 'koKR', '', '', '', '', '벽걸이 여명화', 67186), +(256683, 'koKR', '', '', '', '', '실버문 훈련용 허수아비', 67186), +(253451, 'koKR', '', '', '', '', '장막뿌리 분수대', 67186), +(251967, 'koKR', '', '', '', '', '버섯전사 깃발', 67186), +(245938, 'koKR', '', '', '', '', '지나치게 자란 아라시 격자망', 67186), +(245560, 'koKR', '', '', '', '', '양조장 황토색 창문', 67186), +(241044, 'koKR', '', '', '', '', '아르거시안 상자', 67186), +(264914, 'koKR', '야전 훈장과 유물 금고 열쇠 파편, 장비 강화 재료, 골드 등이 들어 있습니다.', '', '', '', '순찰자의 은닉함', 67186), +(275447, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '투기꾼 벌목전차', 67186), +(275446, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '고수익 벌목전차', 67186), +(275445, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '수익형 벌목전차', 67186), +(275444, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '유망주 벌목전차', 67186), +(275442, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '자수정 기계복', 67186), +(275440, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '청록빛 죽음방랑자', 67186), +(275436, 'koKR', '한밤 쐐기돌 신화: 1 시즌 업적 달성 시 증정됩니다. 실버문 혹은 시간의 길에서 린도르미를 통해 교환할 수 있습니다. 시즌이 끝날 때 만료됩니다.', '', '', '', '잃어버린 시간의 안장', 67186), +(248248, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '하늘빛 공허 비행수', 67186), +(247822, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '진홍빛 공허 비행수', 67186), +(237141, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '진취적인 벌목전차', 67186), +(235549, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '진홍빛 벌목전차', 67186), +(226357, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '다이아몬드 기계복', 67186), +(213438, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '무한의 장갑무소', 67186), +(209060, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '신록의 장갑무소', 67186), +(204798, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '지옥불 장갑무소', 67186), +(199412, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '우박폭풍 장갑무소', 67186), +(192557, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '질서를 바로잡는 죽음방랑자', 67186), +(187682, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '허망하게 뒤틀린 죽음방랑자', 67186), +(187525, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '영혼이 뒤틀린 죽음방랑자', 67186), +(182717, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '죄악에 물든 죽음방랑자', 67186), +(174836, 'koKR', '탈것 소환하는 법을 배웁니다.', '', '', '', '깨어난 정신탐식자', 67186), +(257741, 'koKR', '경매장에서 거래할 수 있습니다.', '', '', '', '폭발의 관리인 보프', 67186), +(257735, 'koKR', '경매장에서 거래할 수 있습니다.', '', '', '', '폭발의 관리인 보프', 67186), +(255844, 'koKR', '경매장에서 거래할 수 있습니다.', '', '', '', '차분한 강아지 소.곤.이', 67186), +(255843, 'koKR', '경매장에서 거래할 수 있습니다.', '', '', '', '차분한 강아지 소.곤.이', 67186), +(248592, 'koKR', '영혼의 소각자 B1P를 소환합니다. 기계공학 기술을 보유한 플레이어가 제작합니다. 경매장에서 거래할 수 있습니다.', '', '', '', '영혼의 소각자 B1P', 67186), +(248135, 'koKR', '영혼의 소각자 비프를 소환합니다. 기계공학 기술을 보유한 플레이어가 제작합니다. 경매장에서 거래할 수 있습니다.', '', '', '', '영혼의 소각자 B1P', 67186), +(274427, 'koKR', '주의: 실제 탈것이 들어 있지 않을 수도 있습니다.', '', '', '', '샤 전리품 상자', 67186), +(267643, 'koKR', '', '', '', '', '마모된 아마니 토템끈', 67186), +(267642, 'koKR', '', '', '', '', '마모된 아마니 심장끈 펜던트', 67186), +(267641, 'koKR', '', '', '', '', '빛바랜 실버문 태양벼슬', 67186), +(267640, 'koKR', '', '', '', '', '빛바랜 실버문 태양장막', 67186), +(267639, 'koKR', '', '', '', '', '빛바랜 실버문 태양보호대', 67186), +(267638, 'koKR', '', '', '', '', '빛바랜 실버문 태양첨탑', 67186), +(267607, 'koKR', '', '', '', '', '희미한 암영의 손등싸개', 67186), +(267606, 'koKR', '', '', '', '', '무한한 중력의 장갑', 67186), +(267605, 'koKR', '', '', '', '', '끝없는 소용돌이 손아귀', 67186), +(267604, 'koKR', '', '', '', '', '가공할 거수의 손아귀', 67186), +(267482, 'koKR', '', '', '', '', '유망한 하라티 수호병의 철갑허리띠', 67186), +(267481, 'koKR', '', '', '', '', '유망한 하라티 수호병의 허리띠', 67186), +(267480, 'koKR', '', '', '', '', '유망한 하라티 수호병의 장식끈', 67186), +(267479, 'koKR', '', '', '', '', '유망한 하라티 수호병의 장식띠', 67186), +(266432, 'koKR', '', '', '', '', '실버문 태양벼슬', 67186), +(266431, 'koKR', '', '', '', '', '실버문 태양장막', 67186), +(266430, 'koKR', '', '', '', '', '실버문 태양보호대', 67186), +(266429, 'koKR', '', '', '', '', '실버문 태양첨탑', 67186), +(265740, 'koKR', '', '', '', '', '아마니 토템끈', 67186), +(265739, 'koKR', '', '', '', '', '아마니 심장끈 펜던트', 67186), +(264507, 'koKR', '', '', '', '', '뒤틀린 마력의 도가니', 67186), +(263269, 'koKR', '', '', '', '', '하라티 수호병의 철갑허리띠', 67186), +(263268, 'koKR', '', '', '', '', '하라티 수호병의 허리띠', 67186), +(263267, 'koKR', '', '', '', '', '하라티 수호병의 장식끈', 67186), +(263265, 'koKR', '', '', '', '', '하라티 수호병의 장식띠', 67186), +(270562, 'koKR', '기이하게도 오염된 뼈 표본입니다. 여군주 다크글렌이 관심을 보일지도 모릅니다.', '', '', '', '오염된 표본', 67186), +(249497, 'koKR', '태양샘조차 들이는 걸 막을 만큼 매운 고추입니다.', '', '', '', '유령의 땅 고추', 67186), +(272961, 'koKR', '', '', '', '', '주문파괴자의 칼날지팡이', 67186), +(272960, 'koKR', '', '', '', '', '주문파괴자의 방패벽', 67186), +(272318, 'koKR', '', '', '', '', '주문파괴자의 불사조칼날', 67186), +(272317, 'koKR', '', '', '', '', '주문파괴자의 불사조전투검', 67186), +(272316, 'koKR', '', '', '', '', '주문파괴자의 칼날창', 67186), +(271631, 'koKR', '주의: 실제 탈것이 들어 있지 않을 수도 있습니다.', '', '', '', '빛의 수호자의 보상', 67186), +(19355, 'koKR', '', '', '', '', '그림자날개 지팡이', 67186), +(274578, 'koKR', '풍요의 로아 둔둔이 내린 작은 은혜입니다. 순수한 풍요 4,500개가 들어 있습니다.', '', '', '', '순수한 풍요의 공물', 67186), +(268455, 'koKR', '', '', '', '', '마력 깃든 모래시계', 67186), +(268122, 'koKR', '동전에 걸린 마법이 무효화됐습니다. 다음 경기에서는 좀 더 적극적으로 참여하십시오.', '', '', '', '무효화된 동전', 67186), +(272338, 'koKR', '', '', '', '', '마법사 경비병의 마법대검', 67186), +(272337, 'koKR', '', '', '', '', '마법사 경비병의 마법단검', 67186), +(272336, 'koKR', '', '', '', '', '무위봉화 균열 파쇄기', 67186), +(272321, 'koKR', '', '', '', '', '비전 순찰자의 마법활', 67186), +(272320, 'koKR', '', '', '', '', '무위봉화 균열 집중 장치', 67186), +(268481, 'koKR', '파괴자 벌 소환하는 법을 배웁니다. 타기 숙련도와 위치에 따라 달라지는 탈것입니다.', '', '', '', '마법학자의 마법 벌집', 67186), +(268456, 'koKR', '', '', '', '', '살아 움직이는 긴 의자', 67186), +(273874, 'koKR', '', '', '', '', '공허에 물든 성난태양 도끼장창', 67186), +(263970, 'koKR', '', '', '', '', '공허에 물든 글레이브검', 67186), +(263969, 'koKR', '', '', '', '', '공허에 물든 대마법봉', 67186), +(263968, 'koKR', '', '', '', '', '공허에 물든 집중 장치', 67186), +(263967, 'koKR', '', '', '', '', '공허에 물든 큰활', 67186), +(263966, 'koKR', '', '', '', '', '공허에 물든 대검', 67186), +(263963, 'koKR', '', '', '', '', '공허에 물든 결투검', 67186), +(263960, 'koKR', '', '', '', '', '공허에 물든 불꽃검', 67186), +(263959, 'koKR', '', '', '', '', '공허에 물든 고서', 67186), +(263956, 'koKR', '', '', '', '', '공허에 물든 파쇄기', 67186), +(263954, 'koKR', '', '', '', '', '공허에 물든 전투 지휘봉', 67186), +(263952, 'koKR', '', '', '', '', '공허에 물든 성난태양 지팡이', 67186), +(263950, 'koKR', '', '', '', '', '공허에 물든 삼각창', 67186), +(263949, 'koKR', '', '', '', '', '공허에 물든 보루 방패', 67186), +(263946, 'koKR', '', '', '', '', '공허에 물든 분쇄기', 67186), +(263943, 'koKR', '', '', '', '', '공허에 물든 식칼', 67186), +(263942, 'koKR', '', '', '', '', '공허에 물든 송곳니', 67186), +(263941, 'koKR', '', '', '', '', '공허에 물든 소총', 67186), +(263707, 'koKR', '', '', '', '', '공허의 진노 팔찌', 67186), +(263706, 'koKR', '', '', '', '', '공허의 진노 망토', 67186), +(263705, 'koKR', '', '', '', '', '공허의 진노 허리보호띠', 67186), +(263704, 'koKR', '', '', '', '', '공허의 진노 견갑', 67186), +(263703, 'koKR', '', '', '', '', '공허의 진노 다리갑옷', 67186), +(263702, 'koKR', '', '', '', '', '공허의 진노 투구', 67186), +(263701, 'koKR', '', '', '', '', '공허의 진노 건틀릿', 67186), +(263700, 'koKR', '', '', '', '', '공허의 진노 발덮개', 67186), +(263699, 'koKR', '', '', '', '', '공허의 진노 가슴보호갑', 67186), +(263698, 'koKR', '', '', '', '', '공허의 천벌의 블라우스', 67186), +(263697, 'koKR', '', '', '', '', '공허의 천벌의 팔보호구', 67186), +(263696, 'koKR', '', '', '', '', '공허의 천벌의 망토', 67186), +(263695, 'koKR', '', '', '', '', '공허의 천벌의 허리띠', 67186), +(263694, 'koKR', '', '', '', '', '공허의 천벌의 어깨덮개', 67186), +(263693, 'koKR', '', '', '', '', '공허의 천벌의 다리보호구', 67186), +(263692, 'koKR', '', '', '', '', '공허의 천벌의 해골모자', 67186), +(263691, 'koKR', '', '', '', '', '공허의 천벌의 장갑', 67186), +(263690, 'koKR', '', '', '', '', '공허의 천벌의 장화', 67186), +(263689, 'koKR', '', '', '', '', '공허의 천벌의 로브', 67186), +(263688, 'koKR', '', '', '', '', '공허의 폭풍 경갑', 67186), +(263687, 'koKR', '', '', '', '', '공허의 폭풍 팔보호구', 67186), +(263686, 'koKR', '', '', '', '', '공허의 폭풍 망토', 67186), +(263685, 'koKR', '', '', '', '', '공허의 폭풍 허리띠', 67186), +(263684, 'koKR', '', '', '', '', '공허의 폭풍 견장', 67186), +(263683, 'koKR', '', '', '', '', '공허의 폭풍 킬트', 67186), +(263682, 'koKR', '', '', '', '', '공허의 폭풍 보호모', 67186), +(263681, 'koKR', '', '', '', '', '공허의 폭풍 건틀릿', 67186), +(263680, 'koKR', '', '', '', '', '공허의 폭풍 발덮개', 67186), +(263679, 'koKR', '', '', '', '', '공허의 폭풍 가슴보호갑', 67186), +(263678, 'koKR', '', '', '', '', '공허송곳니 팔보호구', 67186), +(263677, 'koKR', '', '', '', '', '공허송곳니 망토', 67186), +(263676, 'koKR', '', '', '', '', '공허송곳니 허리띠', 67186), +(263675, 'koKR', '', '', '', '', '공허송곳니 어깨덮개', 67186), +(263674, 'koKR', '', '', '', '', '공허송곳니 바지', 67186), +(263673, 'koKR', '', '', '', '', '공허송곳니 두건', 67186), +(263672, 'koKR', '', '', '', '', '공허송곳니 장갑', 67186), +(263671, 'koKR', '', '', '', '', '공허송곳니 장화', 67186), +(263670, 'koKR', '', '', '', '', '공허송곳니 가슴보호구', 67186), +(263669, 'koKR', '', '', '', '', '공허승천의 블라우스', 67186), +(263668, 'koKR', '', '', '', '', '공허승천의 손목띠', 67186), +(263667, 'koKR', '', '', '', '', '공허승천의 망토', 67186), +(263666, 'koKR', '', '', '', '', '공허승천의 허리띠', 67186), +(263665, 'koKR', '', '', '', '', '공허승천의 견갑', 67186), +(263664, 'koKR', '', '', '', '', '공허승천의 다리보호구', 67186), +(263663, 'koKR', '', '', '', '', '공허승천의 후광', 67186), +(263662, 'koKR', '', '', '', '', '공허승천의 손보호대', 67186), +(263661, 'koKR', '', '', '', '', '공허승천의 장화', 67186), +(263660, 'koKR', '', '', '', '', '공허승천의 로브', 67186), +(263659, 'koKR', '', '', '', '', '공허의 심판 경갑', 67186), +(263658, 'koKR', '', '', '', '', '공허의 심판 손목띠', 67186), +(263657, 'koKR', '', '', '', '', '공허의 심판 망토', 67186), +(263656, 'koKR', '', '', '', '', '공허의 심판 허리띠', 67186), +(263655, 'koKR', '', '', '', '', '공허의 심판 어깨덮개', 67186), +(263654, 'koKR', '', '', '', '', '공허의 심판 다리갑옷', 67186), +(263653, 'koKR', '', '', '', '', '공허의 심판 왕관', 67186), +(263652, 'koKR', '', '', '', '', '공허의 심판 건틀릿', 67186), +(263651, 'koKR', '', '', '', '', '공허의 심판 발덮개', 67186), +(263650, 'koKR', '', '', '', '', '공허의 심판 가슴보호갑', 67186), +(263649, 'koKR', '', '', '', '', '공허 수행사제의 손목띠', 67186), +(263648, 'koKR', '', '', '', '', '공허 수행사제의 망토', 67186), +(263647, 'koKR', '', '', '', '', '공허 수행사제의 장식끈', 67186), +(263646, 'koKR', '', '', '', '', '공허 수행사제의 어깨덮개', 67186), +(263645, 'koKR', '', '', '', '', '공허 수행사제의 바지', 67186), +(263644, 'koKR', '', '', '', '', '공허 수행사제의 투구', 67186), +(263643, 'koKR', '', '', '', '', '공허 수행사제의 손장갑', 67186), +(263642, 'koKR', '', '', '', '', '공허 수행사제의 갈퀴발톱', 67186), +(263641, 'koKR', '', '', '', '', '공허 수행사제의 조끼', 67186), +(263640, 'koKR', '', '', '', '', '공허바람 블라우스', 67186), +(263639, 'koKR', '', '', '', '', '공허바람 손목띠', 67186), +(263638, 'koKR', '', '', '', '', '공허바람 망토', 67186), +(263637, 'koKR', '', '', '', '', '공허바람 허리띠', 67186), +(263636, 'koKR', '', '', '', '', '공허바람 어깨덧옷', 67186), +(263635, 'koKR', '', '', '', '', '공허바람 바지', 67186), +(263634, 'koKR', '', '', '', '', '공허바람 왕관', 67186), +(263633, 'koKR', '', '', '', '', '공허바람 장갑', 67186), +(263632, 'koKR', '', '', '', '', '공허바람 장화', 67186), +(263631, 'koKR', '', '', '', '', '공허바람 로브', 67186), +(263630, 'koKR', '', '', '', '', '공허추적자의 팔보호구', 67186), +(263629, 'koKR', '', '', '', '', '공허추적자의 망토', 67186), +(263628, 'koKR', '', '', '', '', '공허추적자의 허리띠', 67186), +(263627, 'koKR', '', '', '', '', '공허추적자의 어깨덮개', 67186), +(263626, 'koKR', '', '', '', '', '공허추적자의 다리보호대', 67186), +(263625, 'koKR', '', '', '', '', '공허추적자의 투구', 67186), +(263624, 'koKR', '', '', '', '', '공허추적자의 건틀릿', 67186), +(263623, 'koKR', '', '', '', '', '공허추적자의 경갑', 67186), +(263622, 'koKR', '', '', '', '', '공허추적자의 가슴보호갑', 67186), +(263621, 'koKR', '', '', '', '', '공허수호병의 완갑', 67186), +(263620, 'koKR', '', '', '', '', '공허수호병의 망토', 67186), +(263619, 'koKR', '', '', '', '', '공허수호병의 요대', 67186), +(263618, 'koKR', '', '', '', '', '공허수호병의 견갑', 67186), +(263617, 'koKR', '', '', '', '', '공허수호병의 다리갑옷', 67186), +(263616, 'koKR', '', '', '', '', '공허수호병의 왕관', 67186), +(263615, 'koKR', '', '', '', '', '공허수호병의 발톱', 67186), +(263614, 'koKR', '', '', '', '', '공허수호병의 갈퀴발톱', 67186), +(263613, 'koKR', '', '', '', '', '공허수호병의 가슴보호갑', 67186), +(263612, 'koKR', '', '', '', '', '공허분노 가슴보호대', 67186), +(263611, 'koKR', '', '', '', '', '공허분노 팔보호구', 67186), +(263610, 'koKR', '', '', '', '', '공허분노 망토', 67186), +(263609, 'koKR', '', '', '', '', '공허분노 허리띠', 67186), +(263608, 'koKR', '', '', '', '', '공허분노 견갑', 67186), +(263607, 'koKR', '', '', '', '', '공허분노 다리보호대', 67186), +(263606, 'koKR', '', '', '', '', '공허분노 머리쓰개', 67186), +(263605, 'koKR', '', '', '', '', '공허분노 손보호대', 67186), +(263604, 'koKR', '', '', '', '', '공허분노 장화', 67186), +(263603, 'koKR', '', '', '', '', '공허분노 로브', 67186), +(263602, 'koKR', '', '', '', '', '공허방랑자의 팔보호구', 67186), +(263601, 'koKR', '', '', '', '', '공허방랑자의 망토', 67186), +(263600, 'koKR', '', '', '', '', '공허방랑자의 장식끈', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'koKR', '', '', '', '', '공허방랑자의 어깨칼날', 67186), +(263598, 'koKR', '', '', '', '', '공허방랑자의 다리보호구', 67186), +(263597, 'koKR', '', '', '', '', '공허방랑자의 해골모자', 67186), +(263596, 'koKR', '', '', '', '', '공허방랑자의 장갑', 67186), +(263595, 'koKR', '', '', '', '', '공허방랑자의 덧신', 67186), +(263594, 'koKR', '', '', '', '', '공허방랑자의 멜빵', 67186), +(263593, 'koKR', '', '', '', '', '공허의 기수의 완갑', 67186), +(263592, 'koKR', '', '', '', '', '공허의 기수의 망토', 67186), +(263591, 'koKR', '', '', '', '', '공허의 기수의 요대', 67186), +(263590, 'koKR', '', '', '', '', '공허의 기수의 견갑', 67186), +(263589, 'koKR', '', '', '', '', '공허의 기수의 다리보호구', 67186), +(263588, 'koKR', '', '', '', '', '공허의 기수의 투구', 67186), +(263587, 'koKR', '', '', '', '', '공허의 기수의 장갑', 67186), +(263586, 'koKR', '', '', '', '', '공허의 기수의 발덮개', 67186), +(263585, 'koKR', '', '', '', '', '공허의 기수의 가슴보호갑', 67186), +(251161, 'koKR', '썩은가지만이 전수받는 뒤틀린 의식의 유물입니다.', '', '', '', '영혼사냥꾼의 장막', 67186), +(133494, 'koKR', '', '', '', '', '거친 좀비 허리띠', 67186), +(49810, 'koKR', '', '', '', '', '거친 좀비 허리띠', 67186), +(264323, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 무기가 들어 있습니다.', '', '', '', '공허에 물든 무기 보관함', 67186), +(264322, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 장화가 들어 있습니다.', '', '', '', '공허에 물든 장화 보관함', 67186), +(264321, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 다리보호구가 들어 있습니다.', '', '', '', '공허에 물든 다리보호구 보관함', 67186), +(264320, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 허리띠가 들어 있습니다.', '', '', '', '공허에 물든 허리띠 보관함', 67186), +(264319, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 장갑이 들어 있습니다.', '', '', '', '공허에 물든 장갑 보관함', 67186), +(264318, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 팔보호구가 들어 있습니다.', '', '', '', '공허에 물든 팔보호구 보관함', 67186), +(264317, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 가슴보호구가 들어 있습니다.', '', '', '', '공허에 물든 가슴보호구 보관함', 67186), +(264316, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 망토가 들어 있습니다.', '', '', '', '공허에 물든 망토 보관함', 67186), +(264315, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 어깨보호구가 들어 있습니다.', '', '', '', '공허에 물든 어깨보호구 보관함', 67186), +(264314, 'koKR', '수집품에 보유하고 있지 않은 꾸미기용 공허에 물든 투구가 들어 있습니다.', '', '', '', '공허에 물든 머리보호구 보관함', 67186), +(256700, 'koKR', '아제로스의 축복 인장 만드는 법을 배웁니다.', '', '', '', '디자인: 아제로스의 축복 인장', 67186), +(250445, 'koKR', '', '', '', '', '풍요의 메아리: 마법부여', 67186), +(250360, 'koKR', '', '', '', '', '풍요의 메아리: 무두질', 67186), +(250443, 'koKR', '', '', '', '', '풍요의 메아리: 약초채집', 67186), +(272125, 'koKR', '골드와 공허불빛 이회토가 들어 있으며, 현재 전문화에 알맞은 아이템을 획득합니다. 야전에서 세운 공로를 인정하는 의미로 지급됐습니다.', '', '', '', '신병의 보관함', 67186), +(263286, 'koKR', '', '', '', '', '개조된 버섯전사 방패', 67186), +(273307, 'koKR', '용감한 사업가가 착즙한 산뜻한 음료입니다! 설탕 결정이 들어 있어 반짝거린답니다... 아니지, 마나 결정인가?', '', '', '', '용감한 레모네이드가 든 병', 67186), +(265790, 'koKR', '영웅 및 신화 여명문장 10개가 들어 있는 주머니입니다.', '', '', '', '여명문장 보관함', 67186), +(246753, 'koKR', '', '', '', '', '영광스러운 신화 여명문장 묶음', 67186), +(255627, 'koKR', '', '', '', '', '우주를 호령하는 검투사의 망치', 67186), +(266969, 'koKR', '', '', '', '', '복장: 심연잠수부 예복', 67186), +(253582, 'koKR', '', '', '', '', '송곳니지느러미 도리깨', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'koKR', '방어 담당', '$bullet; 비축광은 |cFF2959D3|Hspell:1235072|h[자원 활용책]|h|r 지속시간 동안 가장 가까운 자원 더미를 모읍니다.\n$bullet; 썩은 버섯은 접촉 시 |cFF2959D3|Hspell:1234846|h[독성 포자]|h|r를 부여하며, |cFF2959D3|Hspell:1245593|h[부패의 파열]|h|r 폭발을 방지합니다.\n$bullet; |cFF2959D3|Hspell:1234681|h[게걸스러운 고함]|h|r과 |cFF2959D3|Hspell:1235125|h[풍족한 고함]|h|r은 모든 플레이어에게 막대한 피해를 입힙니다.', 67186), +(32669, 'koKR', '개요', '비축광은 수단과 방법을 가리지 않고 도둑을 방지하려고 하며, 생명력이 90%, 60%, 30% 이하로 떨어지면 |cFF2959D3|Hspell:1235072|h[자원 활용책]|h|r을 시전하여 능력을 하나 강화합니다.\n\n기력이 100에 도달하면 |cFF2959D3|Hspell:1234233|h[더럽혀진 보급품]|h|r을 전장에 던져 12초 동안 썩은 버섯이 자라나게 합니다. 버섯과 접촉 시 |cFF2959D3|Hspell:1234846|h[독성 포자]|h|r가 부여되고 버섯은 파괴되며, |cFF2959D3|Hspell:1245593|h[부패의 파열]|h|r이 방지됩니다.', 67186), +(31527, 'koKR', '금지된 화물', '눈에 띄지 않도록 잘 숨겨져 있던 화물입니다. 훌륭한 엄폐물이 되어줍니다.', 67186), +(31282, 'koKR', '방어 담당', '$bullet; 키스티아는 냠냠이에게 |cFF2959D3|Hspell:1230289|h[부정한 주입]|h|r을 걸어 플레이어를 적대하게 만듭니다.\n$bullet; 냠냠이의 |cFF2959D3|Hspell:1253811|h[지옥 분사]|h|r를 피해야 합니다.\n$bullet; 키스티아의 |cFF2959D3|Hspell:1264095|h[환영 복제]|h|r를 방해해야 합니다.', 67186), +(31281, 'koKR', '치유 담당', '$bullet; 키스티아는 냠냠이에게 |cFF2959D3|Hspell:1230289|h[부정한 주입]|h|r을 걸어 플레이어를 적대하게 만듭니다.\n$bullet; 냠냠이의 |cFF2959D3|Hspell:1253811|h[지옥 분사]|h|r를 피해야 합니다.\n$bullet; 키스티아는 |cFF2959D3|Hspell:1265412|h[불안정화]|h|r에 걸리면 모든 플레이어에게 막대한 피해를 입힙니다.', 67186), +(31280, 'koKR', '공격 담당', '$bullet; 키스티아는 냠냠이에게 |cFF2959D3|Hspell:1230289|h[부정한 주입]|h|r을 걸어 플레이어를 적대하게 만듭니다.\n$bullet; 냠냠이의 |cFF2959D3|Hspell:1253811|h[지옥 분사]|h|r를 피해야 합니다.\n$bullet; 키스티아의 |cFF2959D3|Hspell:1264095|h[환영 복제]|h|r를 방해해야 합니다.', 67186), +(35862, 'koKR', 'Section 18', '', 67186), +(35353, 'koKR', '17구역', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'koKR', '17구역', '', 67186), +(34733, 'koKR', '잘아타스의 기만', '잘아타스가 플레이어를 배신해 자신이 베푼 혜택을 박탈하며, 사망 시 남은 시간이 15초만큼 차감되게 합니다.', 67186), +(34732, 'koKR', '경화', '우두머리가 아닌 적의 생명력이 20%만큼, 공격력이 20%만큼 증가합니다.', 67186), +(34731, 'koKR', '폭군', '우두머리의 생명력이 25%만큼 증가합니다. 우두머리와 그 하수인의 공격력이 최대 15%만큼 증가합니다.', 67186), +(34730, 'koKR', '폭군 및 경화', '이 속성은 신화 쐐기돌 던전 내 적을 추가로 강화합니다. 신화 7 레벨에 하나, 10 레벨에 다른 하나가 활성화됩니다. 매주 순환됩니다.', 67186), +(34727, 'koKR', '잘아타스의 제안: 탐식', '', 67186), +(34725, 'koKR', '잘아타스의 제안: 공허결속', '', 67186), +(34722, 'koKR', '잘아타스의 제안: 맥동성', '', 67186), +(34720, 'koKR', '신화 6 레벨', '$bullet;|cFF2959D3|Hspell:1284818|h[린도르미의 인도]|h|r가 제거됩니다.\n\n방어 담당 전문화를 가진 캐릭터는 시간의 길 차원문이나 쐐기돌 던전 종료 지점에서 린도르미에게 말을 걸어 |cFF2959D3|Hspell:1295986|h[린도르미의 광채]|h|r를 부여받을 수 있습니다. 이 효과는 지속적으로 적 병력을 강조 표시합니다.', 67186), +(35809, 'koKR', 'Section 158', '', 67186), +(35491, 'koKR', '69구역', '', 67186), +(35490, 'koKR', '70구역', '', 67186), +(35489, 'koKR', '76구역', '', 67186), +(35488, 'koKR', '67구역', '$[!15,16\n영웅 이상 난이도에서는 활력 주입이 과잉 살상 전류를 방출합니다.$]', 67186), +(35477, 'koKR', '22구역', '', 67186), +(35476, 'koKR', '31구역', '', 67186), +(35475, 'koKR', '30구역', '', 67186), +(35474, 'koKR', '29구역', '', 67186), +(35473, 'koKR', '31구역', '', 67186), +(35472, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.\n$[!16\n신화 난이도에서는 여명의 수정이 빛의 최후로 위험해집니다.$]', 67186), +(35471, 'koKR', '22구역', '', 67186), +(35470, 'koKR', '31구역', '', 67186), +(35469, 'koKR', '30구역', '', 67186), +(35468, 'koKR', '29구역', '', 67186), +(35467, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.\n$[!15\n영웅 난이도에서는 여명의 수정에서 르우라의 눈물이 떨어질 수 있습니다.$]', 67186), +(35466, 'koKR', '22구역', '', 67186), +(35465, 'koKR', '31구역', '', 67186), +(35464, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.', 67186), +(35463, 'koKR', '22구역', '', 67186), +(35462, 'koKR', '31구역', '', 67186), +(35461, 'koKR', '30구역', '', 67186), +(35460, 'koKR', '29구역', '', 67186), +(35459, 'koKR', '31구역', '', 67186), +(35458, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.\n$[!16\n신화 난이도에서는 여명의 수정이 빛의 최후로 위험해집니다.$]', 67186), +(35457, 'koKR', '22구역', '', 67186), +(35456, 'koKR', '31구역', '', 67186), +(35455, 'koKR', '30구역', '', 67186), +(35454, 'koKR', '29구역', '', 67186), +(35453, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.\n$[!15\n영웅 난이도에서는 여명의 수정에서 르우라의 눈물이 떨어질 수 있습니다.$]', 67186), +(35452, 'koKR', '22구역', '', 67186), +(35451, 'koKR', '31구역', '', 67186), +(35450, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.', 67186), +(35449, 'koKR', '22구역', '', 67186), +(35448, 'koKR', '31구역', '', 67186), +(35447, 'koKR', '30구역', '', 67186), +(35446, 'koKR', '29구역', '', 67186), +(35445, 'koKR', '31구역', '', 67186), +(35444, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.\n$[!16\n신화 난이도에서는 여명의 수정이 빛의 최후로 위험해집니다.$]', 67186), +(35443, 'koKR', '22구역', '', 67186), +(35442, 'koKR', '31구역', '', 67186), +(35441, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.', 67186), +(35440, 'koKR', '108구역', '', 67186), +(35439, 'koKR', '108구역', '', 67186), +(35438, 'koKR', '107구역', '', 67186), +(35435, 'koKR', '105구역', '', 67186), +(35434, 'koKR', '104구역', '', 67186), +(35418, 'koKR', '108구역', '', 67186), +(35373, 'koKR', '30구역', '', 67186), +(35371, 'koKR', '29구역', '', 67186), +(35366, 'koKR', '31구역', '', 67186), +(35361, 'koKR', '22구역', '', 67186), +(35360, 'koKR', '여명의 수정', '정화된 나루의 파편으로, 플레이어가 보유할 수 있습니다.\n$[!15\n영웅 난이도에서는 여명의 수정에서 르우라의 눈물이 떨어질 수 있습니다.$]', 67186), +(35357, 'koKR', '106구역', '', 67186), +(35344, 'koKR', '23구역', '', 67186), +(35343, 'koKR', '22구역', '', 67186), +(35342, 'koKR', '황혼의 수정', '점점 어두워지는 나루의 파편으로, 복원할 수 있을지도 모릅니다.', 67186), +(35341, 'koKR', '24구역', '', 67186), +(35340, 'koKR', '한밤의 수정', '구원의 여지가 없는 어둠의 나루의 파편입니다.', 67186), +(35339, 'koKR', '19구역', '', 67186), +(35338, 'koKR', '18구역', '', 67186), +(35336, 'koKR', '16구역', '', 67186), +(35328, 'koKR', '11구역', '', 67186), +(35327, 'koKR', '10구역', '', 67186), +(35326, 'koKR', '9구역', '', 67186), +(35325, 'koKR', '8구역', '$[!15\n영웅 난이도에서는 선율에 따라 음표의 수가 증가합니다.$]', 67186), +(35324, 'koKR', '11구역', '', 67186), +(35319, 'koKR', '80구역', '', 67186), +(35317, 'koKR', '69구역', '', 67186), +(35316, 'koKR', '70구역', '', 67186), +(35315, 'koKR', '76구역', '', 67186), +(35314, 'koKR', '67구역', '$[!15,16\n영웅 이상 난이도에서는 활력 주입이 과잉 살상 전류를 방출합니다.$]', 67186), +(35311, 'koKR', '69구역', '', 67186), +(35309, 'koKR', '74구역', '', 67186), +(35274, 'koKR', '70구역', '$[!16\n신화 난이도에서는 우주의 분열이 임계점에 도달합니다.$]', 67186), +(35273, 'koKR', '69구역', '', 67186), +(35272, 'koKR', '67구역', '', 67186), +(35131, 'koKR', '13구역', '', 67186), +(35106, 'koKR', '67구역', '', 67186), +(35068, 'koKR', '64구역', '', 67186), +(35067, 'koKR', '63구역', '', 67186), +(35041, 'koKR', '35구역', '', 67186), +(35040, 'koKR', '51구역', '', 67186), +(35038, 'koKR', '14구역', '', 67186), +(35037, 'koKR', '14구역', '', 67186), +(35036, 'koKR', '사잇단계: 개기 월식', '빛이 사라지고 분열하는 광경을 목도하십시오.', 67186), +(34847, 'koKR', '11구역', '', 67186), +(34846, 'koKR', '10구역', '', 67186), +(34845, 'koKR', '9구역', '', 67186), +(34844, 'koKR', '8구역', '', 67186), +(34474, 'koKR', '44구역', '', 67186), +(34456, 'koKR', '45구역', '', 67186), +(34450, 'koKR', '46구역', '', 67186), +(34243, 'koKR', '14구역', '', 67186), +(34242, 'koKR', '14구역', '', 67186), +(34001, 'koKR', '38구역', '', 67186), +(34000, 'koKR', '35구역', '', 67186), +(33990, 'koKR', '32구역', '', 67186), +(33989, 'koKR', '32구역', '', 67186), +(33983, 'koKR', '23구역', '', 67186), +(33982, 'koKR', '22구역', '', 67186), +(33981, 'koKR', '황혼의 수정', '점점 어두워지는 나루의 파편으로, 복원할 수 있을지도 모릅니다.', 67186), +(33975, 'koKR', '25구역', '', 67186), +(33924, 'koKR', '24구역', '', 67186), +(33742, 'koKR', '한밤의 수정', '구원의 여지가 없는 어둠의 나루의 파편입니다.', 67186), +(33741, 'koKR', '19구역', '', 67186), +(33740, 'koKR', '15구역', '', 67186), +(33739, 'koKR', '18구역', '', 67186), +(33738, 'koKR', '말소 매트릭스', '', 67186), +(33737, 'koKR', '16구역', '', 67186), +(33640, 'koKR', '12구역', '', 67186), +(33638, 'koKR', '2단계: 검은 반응로', '황폐의 동력장치로 나아가야 합니다.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='157구역', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='koKR'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='koKR'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'koKR', '반갑네, 수행사제여!\n\n영광스러운 풍요로 넘실대는 이 영역의 경이를 목도하게나! 끝없이 솟구치고 부풀어 오르며, 그 어떤 억압이나 굴레도 거부하지!\n\n이 몸의 신성을 향한 자네의 헌신을 갸륵하게 여겨, 보답으로 작은 자비를 베풀기로 했네. 그러므로 이번에 순수한 풍요를 하사하겠네!\n\n참, 기특한 수행사제여, 명심할 것이 있네. 융합된 활력과 같은 특정한 공물들은 이제 다른 상인들을 통해서도 유통될 걸세. 무슨 말이냐고? 자네의 여정이 줄아만 심연 근처로 이어진다면, 필경 그 귀한 것들을 발견하게 될 거란 얘기라네.\n\n자네의 앞길에 경이로운 수확이 함께하기를 바라네.\n\n- 풍요의 로아 둔둔', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='koKR'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'koKR', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='koKR'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'koKR', '알게타르 대학', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'koKR', '고수익 벌목전차', '|cFFFFD200상인:|r 린도르미|n', '', 67186), +(3009, 'koKR', '투기꾼 벌목전차', '|cFFFFD200상인:|r 린도르미|n', '', 67186), +(3008, 'koKR', '수익형 벌목전차', '|cFFFFD200상인:|r 린도르미|n', '', 67186), +(3007, 'koKR', '유망주 벌목전차', '|cFFFFD200상인:|r 린도르미|n', '', 67186), +(3006, 'koKR', '자수정 기계복', '|cFFFFD200상인:|r 린도르미|n', '', 67186), +(3005, 'koKR', '청록빛 죽음방랑자', '|cFFFFD200상인:|r 린도르미|n', '', 67186), +(2535, 'koKR', '공허의 자취가 남은 스라소니', '|cFFFFD200획득:|r 압수된 이교도의 가방', '스라소니 조련은 아라시가 긴 세월 연마한 기술입니다. 일몰 이교도는 자신들의 목적에 헌신을 바치지만, 그렇다고 해서 전통을 등지진 않았습니다.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='koKR'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'koKR', '심연 강태공과 물고기 잡기', '줄아만 심연 해안에서 심연잠수부 제주와 대화하여 물고기를 낚아야 합니다.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'koKR', '', 67186), +(158259, 'koKR', '', 67186), +(158261, 'koKR', '', 67186), +(156069, 'koKR', '업적 필요:|n심연 강태공: 황금 어장', 67186), +(151169, 'koKR', '업적 필요:|n심연 강태공: 심해의 우상', 67186), +(151168, 'koKR', '업적 필요:|n심연 강태공: 세 번 엮은 그물', 67186), +(151167, 'koKR', '업적 필요:|n심연 강태공: 여울 그물', 67186), +(151166, 'koKR', '업적: 심연 강태공: 공동핵심 작살 포탑 필요', 67186), +(151165, 'koKR', '업적: 심연 강태공: 중형 작살 대포 필요', 67186), +(151161, 'koKR', '업적 필요:|n심연 강태공: 파크 도랑 지느러미', 67186), +(151160, 'koKR', '업적 필요:|n심연 강태공: 심연의 기름', 67186), +(151159, 'koKR', '업적 필요:|n심연 강태공: 강화된 관절', 67186), +(151158, 'koKR', '업적 필요:|n심연 강태공: 날로라크의 숨결통', 67186), +(151157, 'koKR', '업적 필요:|n심연 강태공: 심해용 산소통', 67186), +(151155, 'koKR', '업적 필요:|n심연 강태공: 심연 잠수부의 중고 산소통', 67186), +(155979, 'koKR', '', 67186), +(157695, 'koKR', '11 레벨 구렁에서만 가능합니다.', 67186), +(157666, 'koKR', '', 67186), +(157603, 'koKR', '1 시즌 구렁 탐험가의 여정을 진행하여 해제합니다.', 67186), +(154160, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154159, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154158, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154157, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154156, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154155, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154154, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154153, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154152, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(154151, 'koKR', '이 보관함에 속한 모든 형상변환을 수집했습니다.', 67186), +(157668, 'koKR', '잃어버린 시간의 안장이 없습니다. 해당 아이템을 구매할 수 없습니다.', 67186), +(155203, 'koKR', '', 67186), +(155192, 'koKR', '', 67186), +(155185, 'koKR', '', 67186), +(154642, 'koKR', '', 67186), +(156525, 'koKR', '', 67186), +(156524, 'koKR', '', 67186), +(151196, 'koKR', '', 67186), +(157003, 'koKR', '', 67186), +(157002, 'koKR', '', 67186), +(156957, 'koKR', '', 67186), +(156933, 'koKR', '', 67186), +(151162, 'koKR', '업적 필요:|n심연 강태공: 지느러미민어 떡밥', 67186), +(156816, 'koKR', '', 67186), +(154472, 'koKR', '업적 필요:|n심연 강태공: 가압식 안경', 67186), +(151164, 'koKR', '업적 필요:|n심연 강태공: 먹물날치 고기', 67186), +(151163, 'koKR', '업적 필요:|n심연 강태공: 플레코핀 미끼', 67186), +(142975, 'koKR', '지금은 신화 여명문장 10개를 획득할 수 없습니다.', 67186), +(156592, 'koKR', '', 67186), +(156591, 'koKR', '', 67186), +(156536, 'koKR', '', 67186), +(156537, 'koKR', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'koKR', '심연 강태공', 67186), +(3389, 'koKR', '수정탑 타격: 신틸라스 폭포', 67186), +(3308, 'koKR', '공허의 균열: 노을의 해변', 67186), +(3291, 'koKR', '힘의 공백', 67186), +(3280, 'koKR', '방황하는 차원문', 67186), +(3251, 'koKR', '공허의 의식: 불곰', 67186), +(3245, 'koKR', '고난과 역경', 67186), +(3234, 'koKR', '더럽혀진 부락의 유물', 67186), +(3233, 'koKR', '일어나기 전에', 67186), +(3229, 'koKR', '공허길잡이 섬', 67186), +(3209, 'koKR', '[DNT] Example Scenario', 67186), +(3206, 'koKR', '견본 시나리오', 67186), +(3180, 'koKR', '강화된 의식', 67186), +(3174, 'koKR', '공허 침입', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'koKR', '줄아만 심연에서 수생 생명을 잡고 보물을 발견해야 합니다.', '심연 강태공', 67186), +(16090, 'koKR', '', '탐색 단계', 67186), +(16088, 'koKR', '', '숨기 단계', 67186), +(16441, 'koKR', '나가와 흡수기에서 비전 불꽃을 모아, 수정탑으로 불꽃을 가져가야 합니다.', '수정탑 동력 공급', 67186), +(16376, 'koKR', '도마나르 사령관을 처치해야 합니다.', '골치 아픈 문제', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'koKR', '', '', 67186), +(58555, 'koKR', '', '', 67186), +(58554, 'koKR', '', '', 67186), +(58553, 'koKR', '', '', 67186), +(58545, 'koKR', '', '', 67186), +(58544, 'koKR', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'koKR', '알가르 직공줄', '', 67186), +(8555, 'koKR', '주 능력치 +$k1 / 방어도 +$k2', '', 67186), +(8554, 'koKR', '주 능력치 +$k1 / 방어도 +$k2', '', 67186), +(5001, 'koKR', '유령무쇠 방패 쐐기', '', 67186), +(4216, 'koKR', '황철 쐐기', '', 67186), +(4215, 'koKR', '엘레멘티움 쐐기', '', 67186), +(3748, 'koKR', '티타늄 쐐기', '', 67186), +(2714, 'koKR', '지옥 강철 쐐기', '', 67186), +(1704, 'koKR', '토륨 쐐기', '', 67186), +(463, 'koKR', '미스릴 쐐기', '', 67186), +(43, 'koKR', '철제 쐐기', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'koKR', '기절함', 67186), +(1253377, 'koKR', '치솟는 유성', 67186), +(1270444, 'koKR', '고삐 풀린 분노', 67186), +(441587, 'koKR', '구름 덮개', 67186), +(441429, 'koKR', '구름 덮개', 67186), +(1298446, 'koKR', '끊어지지 않는 유대', 67186), +(1223323, 'koKR', '끊어지지 않는 유대', 67186), +(1293502, 'koKR', '[DNT] Fused Vitality', 67186), +(1270491, 'koKR', '부정한 헌신', 67186), +(1241077, 'koKR', '부패의 낫', 67186), +(458128, 'koKR', '부패의 낫', 67186), +(363916, 'koKR', '흑요석 비늘', 67186), +(353319, 'koKR', '평화의 수사', 67186), +(125174, 'koKR', '업보의 손아귀', 67186), +(122470, 'koKR', '업보의 손아귀', 67186), +(23920, 'koKR', '주문 반사', 67186), +(1237942, 'koKR', '미끼', 67186), +(1235216, 'koKR', '한밤 인지력', 67186), +(1225245, 'koKR', '신도레이 무리붙이', 67186), +(1295986, 'koKR', '린도르미의 광채', 67186), +(1278156, 'koKR', '린도르미의 인도', 67186), +(1298074, 'koKR', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'koKR', '', 67186), +(390260, 'koKR', '', 67186), +(1297413, 'koKR', '해골 도발', 67186), +(149981, 'koKR', '해골 도발', 67186), +(1289789, 'koKR', '전투 형상', 67186), +(1283168, 'koKR', '승천의 공허조각 결합', 67186), +(1282778, 'koKR', '승천의 공허핵 상자', 67186), +(1264876, 'koKR', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'koKR', '유령 잔류물', 67186), +(447444, 'koKR', '혼돈의 균열', 67186), +(210824, 'koKR', '비전의 여파', 67186), +(1280123, 'koKR', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'koKR', '투기꾼 벌목전차', 67186), +(1296759, 'koKR', '고수익 벌목전차', 67186), +(1296758, 'koKR', '수익형 벌목전차', 67186), +(1296756, 'koKR', '유망주 벌목전차', 67186), +(1296734, 'koKR', '자수정 기계복', 67186), +(1296731, 'koKR', '청록빛 죽음방랑자', 67186), +(466930, 'koKR', '검은 화살', 67186), +(1291739, 'koKR', '사악한 은혜', 67186), +(1281946, 'koKR', '심연 강태공', 67186), +(1270634, 'koKR', '과잉 전환기', 67186), +(1270085, 'koKR', '암울한 수호물', 67186), +(1270079, 'koKR', '암울한 수호물', 67186), +(1258411, 'koKR', '키렌나의 카드가의 모방품', 67186), +(1258410, 'koKR', '키렌나의 카드가의 모방품', 67186), +(1258336, 'koKR', '마지막 경고', 67186), +(1257809, 'koKR', '키렌나의 카드가의 모방품', 67186), +(1257729, 'koKR', '되살아나기', 67186), +(1257728, 'koKR', '되살아나기', 67186), +(1257716, 'koKR', '되살아나기', 67186), +(1257505, 'koKR', '암울한 수호물', 67186), +(1256189, 'koKR', '심연 강태공', 67186), +(1255966, 'koKR', '집중 재생', 67186), +(1253337, 'koKR', '키렌나의 카드가의 모방품', 67186), +(1253336, 'koKR', '키렌나의 카드가의 모방품', 67186), +(1253194, 'koKR', '자원 활용책', 67186), +(1253193, 'koKR', '자원 활용책', 67186), +(1253185, 'koKR', '자원 활용책', 67186), +(1253064, 'koKR', '심연 강태공', 67186), +(1252431, 'koKR', '낙뢰 (해방)', 67186), +(1241032, 'koKR', '마지막 경고', 67186), +(1241023, 'koKR', '마지막 경고', 67186), +(1235076, 'koKR', '자원 활용책', 67186), +(1235075, 'koKR', '자원 활용책', 67186), +(1235072, 'koKR', '자원 활용책', 67186), +(1235067, 'koKR', '자원 활용책', 67186), +(1235066, 'koKR', '자원 활용책', 67186), +(1235065, 'koKR', '자원 활용책', 67186), +(1235037, 'koKR', '자원 활용책', 67186), +(1233865, 'koKR', '무위의 광환', 67186), +(1228865, 'koKR', '공허의 자취가 남은 스라소니', 67186), +(1225598, 'koKR', '심연 강태공', 67186), +(1225322, 'koKR', '영원노래 숲', 67186), +(1225281, 'koKR', '부드러운 빛지느러미', 67186), +(1225277, 'koKR', '복원된 노래고기', 67186), +(1225273, 'koKR', '불길한 문어', 67186), +(1225272, 'koKR', '일렁이는 가시고기', 67186), +(444803, 'koKR', '깨어난 코엘라칸스', 67186), +(1250759, 'koKR', '암흑티끌', 67186), +(1276894, 'koKR', '근간의 공허핵 변환', 67186), +(1296448, 'koKR', '무모한 도약', 67186), +(472053, 'koKR', '무모한 도약', 67186), +(1296214, 'koKR', '우주의 공허 매트릭스', 67186), +(1296205, 'koKR', '3중 복제', 67186), +(1296169, 'koKR', '폭풍 구름', 67186), +(1296168, 'koKR', '폭풍 구름', 67186), +(1291767, 'koKR', '유성우', 67186), +(1296406, 'koKR', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'koKR', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'koKR', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'koKR', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'koKR', '린도르미의 광채', 67186), +(1265971, 'koKR', '부정한 무장', 67186), +(444769, 'koKR', '임박한 파멸', 67186), +(1256191, 'koKR', '잠수 종료', 67186), +(1272821, 'koKR', '장벽의 지혜', 67186), +(1244331, 'koKR', '상록숲', 67186), +(441845, 'koKR', '심장을 향해', 67186), +(243435, 'koKR', '강화주', 67186), +(221562, 'koKR', '어둠의 질식', 67186), +(205630, 'koKR', '일리단의 손아귀', 67186), +(198158, 'koKR', '대규모 투명화', 67186), +(108194, 'koKR', '어둠의 질식', 67186), +(1291860, 'koKR', '음식과 음료', 67186), +(1291859, 'koKR', '음식과 음료', 67186), +(1291858, 'koKR', '음식과 음료', 67186), +(1291857, 'koKR', '음식과 음료', 67186), +(1291856, 'koKR', '음식과 음료', 67186), +(1291855, 'koKR', '음식과 음료', 67186), +(1291854, 'koKR', '음식과 음료', 67186), +(1291853, 'koKR', '음식과 음료', 67186), +(1291852, 'koKR', '음식과 음료', 67186), +(1291851, 'koKR', '음식과 음료', 67186), +(1291850, 'koKR', '음식과 음료', 67186), +(1291849, 'koKR', '음식과 음료', 67186), +(1291848, 'koKR', '음식', 67186), +(1291847, 'koKR', '음식', 67186), +(1291846, 'koKR', '음식', 67186), +(1291845, 'koKR', '음식', 67186), +(1291844, 'koKR', '음식', 67186), +(1291843, 'koKR', '음식', 67186), +(1291842, 'koKR', '음식', 67186), +(1291841, 'koKR', '음식', 67186), +(1291840, 'koKR', '음식', 67186), +(1291839, 'koKR', '음식', 67186), +(1291838, 'koKR', '음식', 67186), +(1291837, 'koKR', '음식', 67186), +(1291831, 'koKR', '음료', 67186), +(1291828, 'koKR', '음식', 67186), +(1291827, 'koKR', '음식', 67186), +(1291826, 'koKR', '음식', 67186), +(1291825, 'koKR', '음식', 67186), +(1291824, 'koKR', '음식', 67186), +(1291822, 'koKR', '음식', 67186), +(1291791, 'koKR', '음료', 67186), +(1290929, 'koKR', '음료', 67186), +(1290926, 'koKR', '음식', 67186), +(1290925, 'koKR', '음식', 67186), +(1289221, 'koKR', '빛의 수호자의 보상', 67186), +(1286537, 'koKR', '음식과 음료', 67186), +(1286536, 'koKR', '음료', 67186), +(1286535, 'koKR', '음식', 67186), +(1282100, 'koKR', '살아 움직이는 긴 의자', 67186), +(1282018, 'koKR', '살아 움직이는 긴 의자', 67186), +(1277461, 'koKR', '음료', 67186), +(1269922, 'koKR', '음식', 67186), +(1269921, 'koKR', '음식', 67186), +(1269920, 'koKR', '음식', 67186), +(1269919, 'koKR', '음료', 67186), +(1269918, 'koKR', '음료', 67186), +(1269917, 'koKR', '음식과 음료', 67186), +(1269916, 'koKR', '음식과 음료', 67186), +(1232065, 'koKR', '음식과 음료', 67186), +(1295592, 'koKR', '[DNT] Clear Voidspire', 67186), +(1244341, 'koKR', '상록숲', 67186), +(1262378, 'koKR', '속박의 칠흑 왕관', 67186), +(1262377, 'koKR', '속박의 칠흑 왕관', 67186), +(1262376, 'koKR', '속박의 칠흑 왕관', 67186), +(1262365, 'koKR', '성스러운 죽음의 명령', 67186), +(1262364, 'koKR', '성스러운 죽음의 명령', 67186), +(1262359, 'koKR', '성스러운 죽음의 명령', 67186), +(1248931, 'koKR', '속박의 칠흑 왕관', 67186), +(1248927, 'koKR', '성스러운 죽음의 명령', 67186), +(1277796, 'koKR', '마법 없애기', 67186), +(1256862, 'koKR', '대마법 화살', 67186), +(1256861, 'koKR', '무효화의 도약', 67186), +(1256860, 'koKR', '매개체 무효화', 67186), +(1256010, 'koKR', '무효화장', 67186), +(1295508, 'koKR', '배우기', 67186), +(1295497, 'koKR', '네루비안', 67186), +(1295486, 'koKR', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'koKR', '어둠의 기도', 67186), +(1243616, 'koKR', '불안정한 공허의 정수', 67186), +(1243615, 'koKR', '불안정한 공허의 정수', 67186), +(1243613, 'koKR', '불안정한 공허의 정수', 67186), +(1243605, 'koKR', '불안정한 공허의 정수', 67186), +(1243602, 'koKR', '불안정한 공허의 정수', 67186), +(1243588, 'koKR', '불안정한 공허의 정수', 67186), +(1243586, 'koKR', '불안정한 공허의 정수', 67186), +(1257701, 'koKR', '이글거리는 분쇄', 67186), +(444088, 'koKR', '화염 흡수', 67186), +(1295319, 'koKR', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'koKR', '불화', 67186), +(1295278, 'koKR', '파괴의 광란 대상', 67186), +(1295243, 'koKR', '황천 파열', 67186), +(1295237, 'koKR', '황천 파열', 67186), +(1226037, 'koKR', '고기 베어내기', 67186), +(442615, 'koKR', '고기 베어내기', 67186), +(1295194, 'koKR', '[DNT] Cancel Aura', 67186), +(1241218, 'koKR', '[DNT] Vision of Self', 67186), +(1294288, 'koKR', '어둠에 깃든 힘', 67186), +(1286830, 'koKR', '낚시 거품 신호 - 소환 해제', 67186), +(1236092, 'koKR', '도구 마법부여 - 신도레이의 능숙함', 67186), +(1293613, 'koKR', '심연 강태공 낚시', 67186), +(1286820, 'koKR', '심연 강태공 낚시', 67186), +(1286703, 'koKR', '심연 강태공 낚시', 67186), +(1253159, 'koKR', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'koKR', '보관함 열기', 67186), +(1243683, 'koKR', '영광스러운 신화 여명문장 묶음', 67186), +(190784, 'koKR', '천상의 군마', 67186), +(1292124, 'koKR', '[DNT] Material Creation - Health', 67186), +(1266413, 'koKR', '공허 화상', 67186), +(1244345, 'koKR', '빛 화상', 67186), +(1231327, 'koKR', '공허의 침식', 67186), +(436358, 'koKR', '쇄파', 67186), +(1292071, 'koKR', '결사단원', 67186), +(1294776, 'koKR', '빛나는 태양티끌', 67186), +(1273357, 'koKR', '빛나는 태양티끌', 67186), +(1294727, 'koKR', '포만감', 67186), +(1294726, 'koKR', '마시멜로 굽기', 67186), +(1294720, 'koKR', '사격', 67186), +(1294703, 'koKR', '사격', 67186), +(1294669, 'koKR', '돌진', 67186), +(1294633, 'koKR', '불꽃 숨결', 67186), +(1294563, 'koKR', '보호막 파괴', 67186), +(1277795, 'koKR', '마법 없애기', 67186), +(1272179, 'koKR', '편심성 마법 파동 - 미구매', 67186), +(1269655, 'koKR', '은신', 67186), +(1269654, 'koKR', '시계태엽 파수꾼', 67186), +(1269650, 'koKR', '무효화의 도약', 67186), +(1269641, 'koKR', '균열걸음', 67186), +(1269640, 'koKR', '무효화장', 67186), +(1264545, 'koKR', '교체', 67186), +(1259647, 'koKR', '감.시.견', 67186), +(1258362, 'koKR', '덫: 명금', 67186), +(1256009, 'koKR', '마법 없애기', 67186), +(1251813, 'koKR', '잔존하는 공포', 67186), +(1294779, 'koKR', 'DNT', 67186), +(1294759, 'koKR', 'DNT', 67186), +(1294752, 'koKR', '암울한 교향곡', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'koKR', '', 67186), +(37073, 'koKR', '', 67186), +(37072, 'koKR', '', 67186), +(37065, 'koKR', '', 67186), +(37064, 'koKR', '', 67186), +(37063, 'koKR', '', 67186), +(37050, 'koKR', '', 67186), +(37049, 'koKR', '', 67186), +(37048, 'koKR', '', 67186), +(36911, 'koKR', '', 67186), +(35166, 'koKR', '', 67186), +(35165, 'koKR', '', 67186), +(35164, 'koKR', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'koKR', '꼼꼼한 복수 제작', '', '마법부여 행렬을 개선하여 환영 또는 소비용품 제작 시 추가로 물품을 생산할 확률을 증가시킵니다. 추가로 해당 전문화 점수당 $en1|1이;가; $ev1만큼 증가합니다.', 67186), +(137685, 'koKR', '', '', '소비용품 제작 시 복수 제작의 효과로 최대 $ev1%의 물품을 추가로 만듭니다.', 67186), +(137681, 'koKR', '', '', '소비용품 제작 시 복수 제작의 효과로 최대 $ev1%의 물품을 추가로 만듭니다.', 67186), +(133669, 'koKR', '', '', '합금 제작 시 $en1|1이;가; $ev1만큼 증가합니다.|n|n합금 제작 시 마무리 재료를 사용할 수 있도록 합니다.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='koKR'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'koKR', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'koKR', '숲 주민의 정원 의복', 67186), +(5646, 'koKR', '심연잠수부 예복', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='koKR' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'koKR', '수습생 쿠르그베인', 67186), +(7698, 'koKR', '하우징 장식 결투 상인', 67186), +(7693, 'koKR', '보관함', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='koKR') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='koKR') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='koKR') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='koKR') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='koKR') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='koKR') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='koKR') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='koKR') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='koKR') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='koKR') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='koKR') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='koKR') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='koKR') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='koKR') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='koKR') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='koKR') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='koKR') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='koKR') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='koKR') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='koKR') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='koKR') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='koKR') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='koKR') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='koKR') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='koKR') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='koKR') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='koKR') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='koKR') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='koKR') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='koKR') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='koKR') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='koKR') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='koKR') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='koKR') OR (`TableHash`=2533050585 AND `RecordId`=1529 AND `locale`='koKR') OR (`TableHash`=2533050585 AND `RecordId`=1528 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5037 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5036 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5035 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5034 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5033 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5032 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5031 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5030 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5029 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5028 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5026 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5025 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5024 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5023 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5022 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5021 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5020 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5019 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5018 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5017 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5016 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5015 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5014 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5013 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5012 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5011 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5010 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5009 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5008 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5007 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5006 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5005 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5004 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5003 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5002 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5001 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5000 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4999 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4998 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4997 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4996 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4995 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4993 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=4992 AND `locale`='koKR') OR (`TableHash`=21457424 AND `RecordId`=1552 AND `locale`='koKR') OR (`TableHash`=21457424 AND `RecordId`=1551 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='koKR') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='koKR') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='koKR') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='koKR') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='koKR') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='koKR') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='koKR') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='koKR') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='koKR') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='koKR') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='koKR') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='koKR') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='koKR') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='koKR') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='koKR') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='koKR') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='koKR') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='koKR') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='koKR') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='koKR') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='koKR') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='koKR') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='koKR') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='koKR') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='koKR') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='koKR') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='koKR') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='koKR') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='koKR') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='koKR') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='koKR') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='koKR') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='koKR') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='koKR') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='koKR') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='koKR') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='koKR') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='koKR') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='koKR') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='koKR') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='koKR') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='koKR') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='koKR') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='koKR') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='koKR') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='koKR') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='koKR') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='koKR') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='koKR') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='koKR') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='koKR') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='koKR') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='koKR') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='koKR') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='koKR') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='koKR') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='koKR') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='koKR') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='koKR') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='koKR') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='koKR') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='koKR') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='koKR') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='koKR') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='koKR') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='koKR') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='koKR') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='koKR') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='koKR') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='koKR') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='koKR') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='koKR') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='koKR') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='koKR') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='koKR') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='koKR') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='koKR') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='koKR') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='koKR') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='koKR') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='koKR') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='koKR') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='koKR') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='koKR') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='koKR') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='koKR') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='koKR') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='koKR') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='koKR') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='koKR') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='koKR') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='koKR') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='koKR') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='koKR') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='koKR') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='koKR') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='koKR') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='koKR') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='koKR') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='koKR') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='koKR') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='koKR') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='koKR') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='koKR') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='koKR') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='koKR') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='koKR') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='koKR') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='koKR') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='koKR') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='koKR') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='koKR') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='koKR') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='koKR') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='koKR'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'koKR', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'koKR', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'koKR', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'koKR', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'koKR', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'koKR', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'koKR', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'koKR', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'koKR', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'koKR', 0x000000, 67186), +(2534422486, 3918, 'koKR', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'koKR', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'koKR', 0x00243F63325BECA780EC98A520ED99A9ED8F905D5BEAB3B5ED978820EAB491EC84A05DEC9D9820EAB3B5EAB2A9EBA0A5EC9DB42024733125EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E0D0A0D0A243F63325BECA780EC98A520ED99A9ED8F9020EC8B9CECA08420EC8B9C5D5BEAB3B5ED978820EAB491EC84A020EC8B9CECA084EC9D8420EB819DEAB98CECA78020EBA788ECB998EBA9B45D20243F63325BECA780EC868DEC8B9CEAB084EC979020EAB1B8ECB39020EC9881ED98BC20ED8C8CED8EB820247334EAB09CEBA5BC20EC839DEC84B1ED95A9EB8B88EB8BA42E5D5BEAB3B5ED9788EB82B4EBA6BC20247333ECA491ECB2A9EC9D8420EC839DEC84B1ED95A9EB8B88EB8BA42E5D0000, 67186), +(3776013982, 1270444, 'koKR', 0x00EC9881ED98BC20EBB2A0EC96B4EB82B4EAB8B0EC998020EC9881ED98BC20ED8FADED838420EC8B9CECA08420EC8B9C20ED9DA1EC8898ED959C20EC9881ED98BC20ED8C8CED8EB820ED9598EB8298EB8BB920EC9DBCECA09520ED9995EBA5A0EBA19C20EAB3A0EC829020ED9280EBA6B020EBB684EB85B8EAB08020EBB680EC97ACEB9098EC96B420ED8388ED839CEBA5BC20EC9EACEC82ACEC9AA920EB8C80EAB8B0EC8B9CEAB084EC9D8420EBB09CEB8F99EC8B9CED82A4ECA78020EC958AEAB3A020EC8B9CECA084ED95A020EC889820EC9E88EC9CBCEBA9B02C20247331ECB48820EB8F99EC958820ECA780EC868DEB90A9EB8B88EB8BA42E0000, 67186), +(3776013982, 441587, 'koKR', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'koKR', 0x00243F613133373033365BEC9584EB939CEBA088EB82A0EBA6B020ECB489ECA7845D5BEC96B4EB91A0EC9D9820ECB9BCEB82A05D20ED999CEC84B1ED999420EC8B9C20243434313538376420EB8F99EC958820EC97B0EBA789EC9D8420EC839DEC84B1ED95A9EB8B88EB8BA42E20EC97B0EBA78920EBB294EC9C8420EC9588EC9790EC849C20EAB3B5EAB2A920EC8B9C20EB8BB9ED98B920EC8381ED839CEBA5BC20EBB680EC97ACED9598EBA9B02C20ECB694EAB080EBA19C20ECB59CEB8C8020243434313634306D32EBB288EAB98CECA78020ECA491ECB2A9EB90A9EB8B88EB8BA42E0D0A0D0AEC9DB420ED9AA8EAB3BCEB8A9420EC97B0EBA789EC9D8420EBB297EC96B4EB829C20ED9B84EC9790EB8F8420243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5DECB48820EB8F99EC958820ECA780EC868DEB90A9EB8B88EB8BA42E0000, 67186), +(3893700160, 445, 'koKR', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'koKR', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'koKR', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'koKR', 0x00EB8BA4EC8B9C20EC95BCEC889820EBB680EBA5B4EAB8B0EBA5BC20EC82ACEC9AA9ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0A0D0AEC95BCEC99B8EC9790EC849C20EC95BCEC8898EC9D9820EAB3B5EAB2A9EBA0A5EC9DB42024733125EBA78CED81BC20ECA69DEAB080ED9598EAB3A020EBB09BEB8A9420ED94BCED95B4EB8A942024733225EBA78CED81BC20EAB090EC868CED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1223323, 'koKR', 0x00EB8BA4EC8B9C20EC95BCEC889820EBB680EBA5B4EAB8B0EBA5BC20EC82ACEC9AA9ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0A0D0AEC95BCEC99B8EC9790EC849C20EC95BCEC8898EC9D9820EAB3B5EAB2A9EBA0A5EC9DB42024733125EBA78CED81BC20ECA69DEAB080ED9598EAB3A020EBB09BEB8A9420ED94BCED95B4EB8A942024733225EBA78CED81BC20EAB090EC868CED95A9EB8B88EB8BA42E0000, 67186), +(3468628616, 1818, 'koKR', 0xEC9594ED9D9120EBB0A9ECB2A8ED839100EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420EBA088EC9584EB8298EC9790EAB28CEC849C20EC9594ED9D9120EBB0A9ECB2A8ED8391EC9D8420EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'koKR', 0xEC9594ED9D9120EBB0A9ECB2A8ED839100EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420EBA088EC9584EB8298EC9790EAB28CEC849C20EC9594ED9D9120EBB0A9ECB2A8ED8391EC9D8420EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E00EC9594ED9D9120EBB0A9ECB2A8ED8391002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'koKR', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'koKR', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'koKR', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'koKR', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'koKR', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'koKR', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'koKR', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'koKR', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'koKR', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'koKR', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'koKR', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'koKR', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'koKR', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'koKR', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'koKR', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'koKR', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'koKR', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'koKR', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'koKR', 0x000000, 67186), +(3037505077, 245345, 'koKR', 0x5000, 67186), +(3776013982, 1270491, 'koKR', 0x0000EAB3B5EAB2A920EC868DEB8F842024773125EBA78CED81BC20ECA69DEAB08000, 67186), +(3776013982, 1241077, 'koKR', 0x00EB8C80EC8381EC9790EAB28C20EAB1B8EBA6B020EC97ADEBB391EC9D842024733125EBA78CED81BC20ECB489ECA784ED95A9EB8B88EB8BA42E00244061757261636173746572EC9D9820EC97ADEBB391EC9DB420EB8C80EC8381EC9790EAB28C20ED94BCED95B4EBA5BC2024773125EBA78CED81BC20EB8D9420EBB9A8EBA6AC20EC9E85ED9E9800, 67186), +(3776013982, 458128, 'koKR', 0x00ECA084EBB0A920246131EBAFB8ED84B020EB82B4EC9D9820EBAAA8EB93A020ECA081EC9D8420EBB2A0EC96B420247331EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E88EAB3A020ECA081ECA491EB8BB9ED959C20EB8C80EC8381EC9790EAB28C20EAB1B8EBA6B020EBAAA8EB93A020EC97ADEBB391EC9D8420ECB489ECA784ED95B42024313234313037376420EB8F99EC958820ED94BCED95B4EBA5BC202431323431303737733125EBA78CED81BC20EB8D9420EBB9A8EBA6AC20EC9E85ED9E88EAB28C20ED95A9EB8B88EB8BA42E0000, 67186), +(3899321669, 5919, 'koKR', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'koKR', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'koKR', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'koKR', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'koKR', 0xEAB280EC9D80EC838900EBB984EB8A98EC9D8420EAB095ED9994ED95B420EBB09BEB8A9420ED94BCED95B4EAB0802024733125EBA78CED81BC20EAB090EC868CED95A9EB8B88EB8BA42E243F733337343334385B20ECB694EAB080EBA19C202433373433343964EC979020EAB1B8ECB39020EBB0A9ECA780ED959C20ED94BCED95B4EBA78CED81BC20EC839DEBAA85EBA0A5EC9D8420ED9A8CEBB3B5ED95A9EB8B88EB8BA42E5D5B5D20246420EB8F99EC958820ECA780EC868DEB90A9EB8B88EB8BA42E00EBB09BEB8A9420ED94BCED95B42024773125EBA78CED81BC20EAB090EC868C243F2465345B0D0AEBB0A9ECA780ED959C20ED94BCED95B4EBA78CED81BC20EC839DEBAA85EBA0A520ED9A8CEBB3B55D5B5D243F2477323D315B0D0AECA3BCEBACB820EBB0A9ED95B420EBB08F20ECB9A8EBACB520ED9AA8EAB3BCEC979020EBA9B4EC97AD5D5B5D00, 67186), +(4033975491, 589353, 'koKR', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'koKR', 0xED948CEBA088EC9DB4EC96B420EAB08420ECA084ED88AC20ED8AB9EC84B10024407370656C6C6465736333353333313300EBA788EBB29520ED94BCED95B420EBB08F20ED95B4EBA19CEC9AB420ED9AA8EAB3BCEC979020EBA9B4EC97AD00, 67186), +(3776013982, 125174, 'koKR', 0x0024407370656C6C6465736331323234373000EBB09BEB8A9420EBAAA8EB93A020ED94BCED95B420ED9DA1EC88980D0AED94BCED95B420ED9DA1EC8898EB9F89EC9D982024313232343730733425EBA78CED81BC20EC9785EBB3B4EC9D9820EC8690EC9584EAB78020EB8C80EC8381EC9790EAB28C20EC9DB4ECA08400, 67186), +(3776013982, 122470, 'koKR', 0x00246420EB8F99EC958820ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D9820ECB59CEB8C802024733325EBA78CED81BC20EC9E90EC8BA0EC9DB420EBB09BEB8A9420EBAAA8EB93A020ED94BCED95B4EBA5BC20ED9DA1EC8898ED9598EAB3A02C20ED9DA1EC8898EB9F89EC9D982024733425EBA78CED81BC202431323432383064EC979020EAB1B8ECB39020ECA08120EB8C80EC8381EC9790EAB28C20EC9E90EC97B020ED94BCED95B4EBA19C20EC9DB4ECA084EC8B9CED82B5EB8B88EB8BA42E00EC8898EB8F84EC82ACEAB08020EBB09BEB8A9420ED94BCED95B4EAB080202431323432383064EC979020EAB1B8ECB39020EC9E90EC8BA0EC9790EAB28C20EC9E90EC97B020ED94BCED95B4EBA19C20EC9DB4ECA08400, 67186), +(3776013982, 23920, 'koKR', 0x00243F63335BEBB0A9ED8CA85D5BEBACB4EAB8B05D7C31EC9D843BEBA5BC3B20ECB998ECBC9CEC84B8EC9B8C20EC9E90EC8BA0EC9790EAB28C20EC8B9CECA084EB9098EB8A9420243F613231333931355BEB8BA4EC9D8C20243231333931357333ED9A8CEC9D9820ECA3BCEBACB85D5BECB2AB20EBB288ECA7B820ECA3BCEBACB85DEC9D8420EBB098EC82ACED95A9EB8B88EB8BA42E20EB9890ED959C20246420EB8F99EC958820EBB09BEB8A9420EBA788EBB29520ED94BCED95B4EAB0802024333835333931733125EBA78CED81BC20EAB090EC868CED95A9EB8B88EB8BA42E00243F613138383637325BEC9E90EC8BA0EC9790EAB28C20EC8B9CECA084EB9098EB8A9420EBAAA8EB93A020ECA3BCEBACB820EBB098EC82AC5D5BEC9E90EC8BA0EC9790EAB28C20EC8B9CECA084EB9098EB8A9420ECA3BCEBACB820EBB098EC82AC5D00, 67186), +(1274215428, 190484, 'koKR', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'koKR', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'koKR', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'koKR', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'koKR', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'koKR', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'koKR', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'koKR', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'koKR', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'koKR', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'koKR', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'koKR', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'koKR', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'koKR', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'koKR', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'koKR', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'koKR', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'koKR', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'koKR', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'koKR', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'koKR', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'koKR', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'koKR', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'koKR', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'koKR', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'koKR', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'koKR', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'koKR', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'koKR', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'koKR', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'koKR', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'koKR', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'koKR', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'koKR', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'koKR', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'koKR', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'koKR', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'koKR', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'koKR', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'koKR', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'koKR', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'koKR', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'koKR', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'koKR', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'koKR', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'koKR', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'koKR', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'koKR', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'koKR', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'koKR', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'koKR', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'koKR', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'koKR', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'koKR', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'koKR', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'koKR', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'koKR', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'koKR', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'koKR', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'koKR', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'koKR', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'koKR', 0x00EBACBCEAB3A0EAB8B0EBA5BC20EBACBCEC979020EB8F8CEBA0A4EBB3B4EB82B420246420EB8F99EC958820ED959CEBB0A420EB829AEC8B9C20EC8899EBA0A8EB8F84EAB08020247332EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E0D0A0D0AEB8BA4EC8898EC9D9820EBACBCEAB3A0EAB8B0EBA5BC20EB8F8CEBA0A4EBB3B4EB82B4EBA9B420EAB095ED999420ED9AA8EAB3BCEC9D9820ECA780EC868DEC8B9CEAB084EC9DB420ECB59CEB8C8020244D31EBB684EAB98CECA78020ECA69DEAB080ED95A9EB8B88EB8BA42E00ECBFA0EC9798ED8388EB9DBCEC8AA420EB829AEC8B9C20247732EBA78CED81BC20ECA69DEAB08000, 67186), +(3776013982, 1235216, 'koKR', 0x00EC839DEBAA85ECB2B4EBA5BC20EBACBCEC979020EB8F8CEBA0A4EBB3B4EB82B420246420EB8F99EC958820ED959CEBB0A420EC9DB8ECA780EBA0A5EC9DB420247332EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E0D0A0D0AEB8BA4EC8898EC9D9820EC839DEBAA85ECB2B4EBA5BC20EB8F8CEBA0A4EBB3B4EB82B4EBA9B420EAB095ED999420ED9AA8EAB3BCEC9D9820ECA780EC868DEC8B9CEAB084EC9DB420ECB59CEB8C8020244D31EBB684EAB98CECA78020ECA69DEAB080ED95A9EB8B88EB8BA42E00ED959CEBB0A420EC9DB8ECA780EBA0A520247732EBA78CED81BC20ECA69DEAB08000, 67186), +(3776013982, 1225245, 'koKR', 0x00ECA784ED998DEBB99BEAB3BC20ED9598EB8A98EBB99BEC9DB420EC96B4EC9AB0EB9FACECA78420EBB984EB8A98EC9DB420EC9DB420EB82A0EBA0B5ED959C20EBACBCEAB3A0EAB8B0EBA5BC20EC9EA5EC8B9DED9598EAB3A020EC9E88EC8AB5EB8B88EB8BA42E20EC8BA0EB8F84EBA088EC9DB420EBACB4EBA6ACEBB699EC9DB4EB8A9420EC9881EC9B90EB85B8EB9E9820EC88B2EC9790EC849C20ED9D94ED9E8820EC9EA1ED9E88EB8A9420EBACBCEAB3A0EAB8B0EC9DB4EBA9B02C20EBACB4EBA6ACEC9D9820ED9D90EBA684EC979020EB94B0EB9DBC20ED95A8EABB9820EC9DB4EB8F99ED9598EAB3A020EBACBCEC868DEC9790EC849C20EAB590EAB090ED9598EBA9B020EC82B4EC9584EAB091EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AED8AB9EC8898207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEC9DB420EC839DEC84A0EC9D8420EC9EA1EC9D8420EC889820EC9E88EB8A9420ECA780EC97AD7C520D0A2D20EC9881EC9B90EB85B8EB9E9820EC88B20D0A2D20ECA484EC9584EBA78C0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEB829AEC8B9C20EC9B85EB8DA9EC9DB47C720D0A2D20EBB680EAB880EAB1B0EBA6ACEB8A9420EABD83EC86A1EC9DB40D0A2D20ED839CEC9691EC839820EB96BC0D0A2D20ED919CEBA9B4EC9D9820EC9E94EBACBCEAB2B00000, 67186), +(778162198, 397, 'koKR', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'koKR', 0x0100, 67186), +(3037505077, 243302, 'koKR', 0x0100, 67186), +(261693969, 95549, 'koKR', 0xFFFFFFFFFFFFFFFFEBA788EBB29520EAB2BDEBB3B4EBA5BC20EC9AB8EBA0A4EB9DBC0000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'koKR', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'koKR', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'koKR', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'koKR', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'koKR', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'koKR', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'koKR', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'koKR', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'koKR', 0xEAB095ED839CEAB3B520ECA090EC88983A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'koKR', 0xEC9984EBA38C007C634646316566663030EC8BACEC97B020EAB095ED839CEAB3B520EC9984EBA38C2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'koKR', 0xFFFFFFFFFFFFFFFFEC8BACEC97B020EAB095ED839CEAB3B520EAB080EC9E850000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'koKR', 0xEC8BACEC97B0EC9EA0EC8898EBB68000ECA484EC9584EBA78CEC9790EC849C20EC8BACEC97B020EAB095ED839CEAB3B520EC9DB4EBB2A4ED8AB8EBA5BC20EC9984EBA38CED95B4EC95BC20ED95A9EB8B88EB8BA42E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'koKR', 0xEC8BACEC97B0EC9EA0EC8898EBB68000ECA484EC9584EBA78CEC9790EC849C20EC8BACEC97B020EAB095ED839CEAB3B520EC9DB4EBB2A4ED8AB8EBA5BC20EC9984EBA38CED95B4EC95BC20ED95A9EB8B88EB8BA42E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'koKR', 0xEC8BACEC97B020EAB095ED839CEAB3B500EC8BACEC97B0EC9EA0EC8898EBB68020ECA09CECA3BCEC998020EB8C80ED9994ED9598EC97AC20EC8BACEC97B020EAB095ED839CEAB3B5EAB3BC20ED95A8EABB9820EC9EA0EC8898ED95B4EC95BC20ED95A9EB8B88EB8BA42E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'koKR', 0xECA095EC988820EC9C84ED979800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ED9DACEAB78020ECA095EC988820ECA081EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E20EC9DB4EB9FACED959C20ECA081EC9D8420ECB298ECB998ED9598EBA9B420ECB694EAB08020EC9D98EC8B9D20ECA084EBA6ACED9288EC9D8420ED9A8DEB939DED95A9EB8B88EB8BA42E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'koKR', 0xECA095EC988820EC9C84ED979800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ED9DACEAB78020ECA095EC988820ECA081EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E20EC9DB4EB9FACED959C20ECA081EC9D8420ECB298ECB998ED9598EBA9B420ECB694EAB08020EC9D98EC8B9D20ECA084EBA6ACED9288EC9D8420ED9A8DEB939DED95A9EB8B88EB8BA42E00EAB2BDEAB38420EBB096EC9D9820EC9C84ED9798204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'koKR', 0xEC98A4EC97BCEB909C20EC9DB4EB8F9920EC8898EB8BA800EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420ED9598EC82ACEAB48020EBB3B4EBA5B4EB8B8CEC9790EAB28CEC849C20EAB3B5ED9788EC979020EBACBCEB93A020EBA7A4ED8380ECA1B0EBA5BC20EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'koKR', 0xEC98A4EC97BCEB909C20EC9DB4EB8F9920EC8898EB8BA800EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420ED9598EC82ACEAB48020EBB3B4EBA5B4EB8B8CEC9790EAB28CEC849C20EAB3B5ED9788EC979020EBACBCEB93A020EBA7A4ED8380ECA1B0EBA5BC20EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E00EC98A4EC97BCEB909C20EC9DB4EB8F9920EC8898EB8BA8002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'koKR', 0xED9E98EC9D9820ECA09CEB8BA820494900EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EC8388EBA19CEC9AB420EBA788EBB29520EAB095ED999420ED9AA8EAB3BC20ECA09CEB8BA8EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'koKR', 0xED9E98EC9D9820ECA09CEB8BA820494900EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EC8388EBA19CEC9AB420EBA788EBB29520EAB095ED999420ED9AA8EAB3BC20ECA09CEB8BA8EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E00ED9E98EC9D9820ECA09CEB8BA8204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'koKR', 0xEAB2BDEC99B8EBA19CEC9AB420EBB3B4EBACBC00EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ECB694EAB08020ECA084EBA6ACED9288EC9D8420ECA09CEAB3B5ED9598EB8A9420EB8C80ED989520EBB3B4EBACBCEC9D8420EBB09CEAB2ACED95A020EC889820EC9E88EAB28C20EB90A9EB8B88EB8BA42E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'koKR', 0xEAB2BDEC99B8EBA19CEC9AB420EBB3B4EBACBC00EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ECB694EAB08020ECA084EBA6ACED9288EC9D8420ECA09CEAB3B5ED9598EB8A9420EB8C80ED989520EBB3B4EBACBCEC9D8420EBB09CEAB2ACED95A020EC889820EC9E88EAB28C20EB90A9EB8B88EB8BA42E00EAB2BDEC99B8EBA19CEC9AB420EBB3B4EBACBC002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'koKR', 0xEC9D98EC8B9DEC9D9820EBA788EBB295202D20EB8498ECB998EB8A9420EBB3B4ECA3BC00EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ECA08120ECB298ECB99820EC8B9C20EC9EACEC839DEC9D9820EBB3B4ECA3BCEAB08020EC839DEC84B1EB90A020ED9995EBA5A0EC9DB420ECA69DEAB080ED95A9EB8B88EB8BA42E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'koKR', 0xEC9D98EC8B9DEC9D9820EBA788EBB295202D20EB8498ECB998EB8A9420EBB3B4ECA3BC00EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ECA08120ECB298ECB99820EC8B9C20EC9EACEC839DEC9D9820EBB3B4ECA3BCEAB08020EC839DEC84B1EB90A020ED9995EBA5A0EC9DB420ECA69DEAB080ED95A9EB8B88EB8BA42E00EC9D98EC8B9DEC9D9820EBA788EBB295202D20ECB998EC9CA020494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'koKR', 0xEC98A4EC97BCEB909C20EB8F99EBACBCEC9B9000EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420ED9598EC82ACEAB48020EBB3B4EBA5B4EB8B8CEC9790EAB28CEC849C20EC95A0EC9984EB8F99EBACBCEC9D8420EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'koKR', 0xEC98A4EC97BCEB909C20EB8F99EBACBCEC9B9000EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420ED9598EC82ACEAB48020EBB3B4EBA5B4EB8B8CEC9790EAB28CEC849C20EC95A0EC9984EB8F99EBACBCEC9D8420EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E00EC98A4EC97BCEB909C20EB8F99EBACBCEC9B90002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'koKR', 0xED9E98EC9D9820ECA09CEB8BA800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EBA788EBB29520EAB095ED999420ED9AA8EAB3BCEBA5BC20EBB680EC97ACED9598EB8A9420ECA09CEB8BA8EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'koKR', 0xED9E98EC9D9820ECA09CEB8BA800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EBA788EBB29520EAB095ED999420ED9AA8EAB3BCEBA5BC20EBB680EC97ACED9598EB8A9420ECA09CEB8BA8EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E00ED9E98EC9D9820ECA09CEB8BA82049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'koKR', 0xECB694EAB08020ECA084EBA6ACED928800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EC868CED989520EBB3B4EBACBCEC9D8420EB8D9420EBA78EEC9DB420EBB09CEAB2ACED95A020EC889820EC9E88EAB28C20EB90A9EB8B88EB8BA42E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'koKR', 0xECB694EAB08020ECA084EBA6ACED928800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EC868CED989520EBB3B4EBACBCEC9D8420EB8D9420EBA78EEC9DB420EBB09CEAB2ACED95A020EC889820EC9E88EAB28C20EB90A9EB8B88EB8BA42E00ED9D98EBA6B020EBB3B4EBACBC204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'koKR', 0xEAB2BDEAB38420EBB096EC9D9820EC9C84ED979800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ED9DACEAB78020ECA081EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E20EC9DB4EB9FACED959C20ECA081EC9D8420ECB298ECB998ED9598EBA9B420ECB694EAB08020EC9D98EC8B9D20ECA084EBA6ACED9288EC9D8420ED9A8DEB939DED95A9EB8B88EB8BA42E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'koKR', 0xEAB2BDEAB38420EBB096EC9D9820EC9C84ED979800EC9D98EC8B9D20ECA780ECA090EC9790EC849C20ED9DACEAB78020ECA081EC9DB420ECB69CED9884ED95A9EB8B88EB8BA42E20EC9DB4EB9FACED959C20ECA081EC9D8420ECB298ECB998ED9598EBA9B420ECB694EAB08020EC9D98EC8B9D20ECA084EBA6ACED9288EC9D8420ED9A8DEB939DED95A9EB8B88EB8BA42E00EAB2BDEAB38420EBB096EC9D9820EC9C84ED97982049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'koKR', 0xEC9D98EC8B9DEC9D9820EBA788EBB295202D20EBB3B4ECA3BCEC9D9820ED9AA8EB8AA500EC9EACEC839DEC9D9820EBB3B4ECA3BCEC9D9820ECB998EC9CA0EB9F89EC9DB42031303025EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'koKR', 0xEC9D98EC8B9DEC9D9820EBA788EBB295202D20EBB3B4ECA3BCEC9D9820ED9AA8EB8AA500EC9EACEC839DEC9D9820EBB3B4ECA3BCEC9D9820ECB998EC9CA0EB9F89EC9DB42031303025EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E00EC9D98EC8B9DEC9D9820EBA788EBB295202D20ECB998EC9CA0204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'koKR', 0xEC9D98EC8B9D20ED9598EC9AB0ECA79520EC9EA5EC8B9D00EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420EBA088EC9584EB8298EC9790EAB28CEC849C20EAB3B5ED9788EBA5BC20ECA3BCECA09CEBA19C20ED959C20ECB185EC838120EC9EA5EC8B9DEC9D8420EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'koKR', 0xEC9D98EC8B9D20ED9598EC9AB0ECA79520EC9EA5EC8B9D00EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420EBA088EC9584EB8298EC9790EAB28CEC849C20EAB3B5ED9788EBA5BC20ECA3BCECA09CEBA19C20ED959C20ECB185EC838120EC9EA5EC8B9DEC9D8420EAB5ACEBA7A4ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E00EC9D98EC8B9D20EAB080EAB5AC002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'koKR', 0xEC9D98EC8B9DEC9D9820EBB3B4EBACBC00EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EC868CED989520EBB3B4EBACBCEC9D8420EBB09CEAB2ACED95A020EC889820EC9E88EAB28C20EB90A9EB8B88EB8BA42E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'koKR', 0xEC9D98EC8B9DEC9D9820EBB3B4EBACBC00EC9D98EC8B9D20ECA780ECA090EC9790EC849C20EC868CED989520EBB3B4EBACBCEC9D8420EBB09CEAB2ACED95A020EC889820EC9E88EAB28C20EB90A9EB8B88EB8BA42E00ED9D98EBA6B020EBB3B4EBACBC2049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'koKR', 0xEC9D98EC8B9DEC9D9820EBA788EBB295202D20EC9EACEC839DEC9D9820EBB3B4ECA3BC00EC9D98EC8B9D20ECA780ECA090EC979020313525EC9D9820EC839DEBAA85EBA0A5EC9D8420ED9A8CEBB3B5EC8B9CED82A4EB8A9420EC9EACEC839DEC9D9820EBB3B4ECA3BCEAB08020EC839DEC84B1EB90A9EB8B88EB8BA42E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'koKR', 0xEC9D98EC8B9DEC9D9820EBA788EBB295202D20EC9EACEC839DEC9D9820EBB3B4ECA3BC00EC9D98EC8B9D20ECA780ECA090EC979020313525EC9D9820EC839DEBAA85EBA0A5EC9D8420ED9A8CEBB3B5EC8B9CED82A4EB8A9420EC9EACEC839DEC9D9820EBB3B4ECA3BCEAB08020EC839DEC84B1EB90A9EB8B88EB8BA42E00EC9D98EC8B9DEC9D9820EBA788EBB295202D20ECB998EC9CA02049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'koKR', 0xEC9691ECA1B0EC9EA520ED99A9ED86A0EC838920ECB0BDEBACB800000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'koKR', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'koKR', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'koKR', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'koKR', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'koKR', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'koKR', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'koKR', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'koKR', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'koKR', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'koKR', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'koKR', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'koKR', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'koKR', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'koKR', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'koKR', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'koKR', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'koKR', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'koKR', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'koKR', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'koKR', 0x00EBA6B0EB8F84EBA5B4EBAFB8EAB08020EC9DBCEBB68020EC9AB0EB9190EBA8B8EBA6AC20EC99B8EC9D9820ECA081EC9D8420EAB095ECA1B020ED919CEC8B9CED95A9EB8B88EB8BA42E20EAB095ECA1B020ED919CEC8B9CEB909C20ECA081EC9D8420EBAAA8EB919020ECB298ECB998ED9598EBA9B420ECA08120EBB391EBA0A520EC9A94EAB5AC20ECA1B0EAB1B4EC9DB420EB8BACEC84B1EB90A9EB8B88EB8BA42E00EAB095ECA1B020ED919CEC8B9CEB909C20ECA08120EBAAA8EB919020ECB298ECB99820EC8B9C20ECA08120EBB391EBA0A520EC9A94EAB5AC20ECA1B0EAB1B420EB8BACEC84B100, 67186), +(3776013982, 1278156, 'koKR', 0x00EBA6B0EB8F84EBA5B4EBAFB8EAB08020EC9DBCEBB68020EC9AB0EB9190EBA8B8EBA6AC20EC99B8EC9D9820ECA081EC9D8420EAB095ECA1B020ED919CEC8B9CED959C20ED9B8420EC95BDED9994EC8B9CED82A4EBA9B02C20ED948CEBA088EC9DB4EC96B4EAB08020EC82ACEBA79DED95B4EB8F8420EB82A8EC9D8020EC8B9CEAB084EC9DB420ECB0A8EAB090EB9098ECA78020EC958AEB8F84EBA19D20EBB0A9ECA780ED95A9EB8B88EB8BA42E0D0A0D0AEAB095ECA1B020ED919CEC8B9CEB909C20ECA081EC9D8420EBAAA8EB919020ECB298ECB998ED9598EBA9B420ECA08120EBB391EBA0A520EC9A94EAB5AC20ECA1B0EAB1B4EC9DB420EB8BACEC84B1EB90A9EB8B88EB8BA42E00EC839DEBAA85EBA0A52024733125EBA78CED81BC20EAB090EC868C0D0AEAB3B5EAB2A9EBA0A52024733225EBA78CED81BC20EAB090EC868C00, 67186), +(368401261, 7367, 'koKR', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'koKR', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'koKR', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'koKR', 0xB2790000, 67186), +(3495286709, 24475, 'koKR', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'koKR', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'koKR', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'koKR', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'koKR', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'koKR', 0x000000, 67186), +(3247720076, 42450, 'koKR', 0x041E000000, 67186), +(3247720076, 42449, 'koKR', 0x041E000000, 67186), +(3247720076, 42448, 'koKR', 0x04BE000000, 67186), +(3247720076, 42447, 'koKR', 0x04BE000000, 67186), +(3247720076, 42446, 'koKR', 0x0700000000, 67186), +(3247720076, 42445, 'koKR', 0x0100000000, 67186), +(3247720076, 40690, 'koKR', 0x0100000000, 67186), +(2014779773, 207, 'koKR', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'koKR', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'koKR', 0x000000, 67186), +(3776013982, 390260, 'koKR', 0x000000, 67186), +(261693969, 95304, 'koKR', 0xFFFFFFFFFFFFFFFFEC84B1EC9AB4EC9D9820EAB3B5ED9788ED95B53A20EB85B8EBA0A8EAB08020EC97ACEBAA85EBACB8EC9EA50000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'koKR', 0xFFFFFFFFFFFFFFFFEC84B1EC9AB4EC9D9820EAB3B5ED9788ED95B53A20EAB3B5ED9788EBB688EBB99B20EC9DB4ED9A8CED86A00000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'koKR', 0xFFFFFFFFFFFFFFFFEC84B1EC9AB4EC9D9820EAB3B5ED9788ED95B53A20EAB3A8EB939C0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'koKR', 0x0000000091000000, 67186), +(1673391669, 145, 'koKR', 0x8E000000, 67186), +(2791084701, 142, 'koKR', 0x32DC0600, 67186), +(2533050585, 1529, 'koKR', 0x7072696D61727900000000000000000000000000000000000000000000000000F9050000100600000100000000000000000000000000000000000000000000000000000000000009421F85AB3F14AEC642, 67186), +(2533050585, 1528, 'koKR', 0x7072696D61727900EC51B83DEC51B83DEC51B83D000000000000000000000000F80500000F0600000100000000000000000000000000000000000000000000000000000000000003427B14AE3F52B8C642, 67186), +(2930840720, 5037, 'koKR', 0x706574320014AE6F4166665641A470BD3FAD1300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5036, 'koKR', 0x7065743100C3F53841713D2E4152B886C0AC1300001006000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(2930840720, 5035, 'koKR', 0x70657438000AD783BF48E12A41295C4FC0AB1300001006000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 5034, 'koKR', 0x7065743130007B148241713DCAC085EB51C0AA1300001006000000000000AA0000007B142EC00000000000000000AE47E13D, 67186), +(2930840720, 5033, 'koKR', 0x70657439001F85DBC0F628C4C05C8F3240A91300001006000000000000AA0000007B142EC00AD7233E0000000000000000, 67186), +(2930840720, 5032, 'koKR', 0x70657437005C8F6641CDCC4CC1C3F5E83FA81300001006000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 5031, 'koKR', 0x70657436001F85E3C052B8D6C0CDCC0CC0A71300001006000000000000AA000000EC5138C0000000000000000000000000, 67186), +(2930840720, 5030, 'koKR', 0x7065743500B81E9741295C03C1AE47E1BDA61300001006000000000000AA000000D7A320C0000000000000000000000000, 67186), +(2930840720, 5029, 'koKR', 0x7065743400295C4FC085EB11400AD7E33FA51300001006000000000000AA00000014AE4740000000000000000000000000, 67186), +(2930840720, 5028, 'koKR', 0x70657433000AD78B40B81E29C1EC5138C0A41300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5026, 'koKR', 0x706574323200EC5110C114AE9F407B140EC0A21300001006000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5025, 'koKR', 0x7065743231003D0AF7BF3333F3401F852BC0A11300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5024, 'koKR', 0x7065743230001F851F4152B89EC0CDCC7C40A01300001006000000000000AA0000001F853BC06666E63E0000000000000000, 67186), +(2930840720, 5023, 'koKR', 0x7065743139000AD7E33F3D0A9FC05C8F42C09F1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5022, 'koKR', 0x706574313800C3F59EC148E1FABF5C8F02C09E1300001006000000000000AA0000005C8F42C0000000000000000000000000, 67186), +(2930840720, 5021, 'koKR', 0x70657431370014AE27C05C8F32C014AE37C09D1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5020, 'koKR', 0x706574313600AE4761BEC3F52C41C3F528C09C1300001006000000000000AA0000009A992940000000000000000000000000, 67186), +(2930840720, 5019, 'koKR', 0x7065743135009A999FC1713DEA409A999FC19B1300001006000000000000A9010000C3F548400000000000000000E17A943E, 67186), +(2930840720, 5018, 'koKR', 0x706574313400295C9FC18FC235C09A9999BF9A1300001006000000000000AA0000000AD733C0CDCCCCBD0000000000000000, 67186), +(2930840720, 5017, 'koKR', 0x706574313300A4708DC1713D1A40D7A3D0BF991300001006000000000000AA000000713D3A40000000000000000000000000, 67186), +(2930840720, 5016, 'koKR', 0x706574313200C3F588BF333333405C8F42C0981300001006000000000000AA000000CDCC3C40000000000000000000000000, 67186), +(2930840720, 5015, 'koKR', 0x706574313100EC510CC1666626BF9A9919C0971300001006000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5014, 'koKR', 0x706574323200B81E01C1AE4799407B140EC0961300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5013, 'koKR', 0x706574323100CDCCCCBF8FC2DD4014AE27C0951300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5012, 'koKR', 0x70657432300052B85E41EC51F8C0E17A2440941300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 5011, 'koKR', 0x706574313900295C63C148E1F2C08FC255C0931300000F06000000000000AA0000003D0A37C00000000000000000AE47E13D, 67186), +(2930840720, 5010, 'koKR', 0x70657431380066669EC15C8F02C05C8F02C0921300000F06000000000000AA000000333343C0000000000000000000000000, 67186), +(2930840720, 5009, 'koKR', 0x70657431370048E10AC048E13AC0D7A340C0911300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5008, 'koKR', 0x706574313600F6282C409A9931413D0A27C0901300000F06000000000000AA000000C3F52840000000000000000000000000, 67186), +(2930840720, 5007, 'koKR', 0x706574313500C3F59EC1A4708F41C3F59EC18F1300000F06000000000000A9010000CDCC3C40000000008FC2F5BCE17A943E, 67186), +(2930840720, 5006, 'koKR', 0x7065743134005C8F9EC1AE4701C0A4709DBF8E1300000F06000000000000AA0000000AD733C000000000295C8F3D00000000, 67186), +(2930840720, 5005, 'koKR', 0x706574313300CDCC8CC10AD713406666C6BF8D1300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5004, 'koKR', 0x706574313200CDCC4C3D3D0A3740295C5FC08C1300000F06000000000000AA000000CDCC3C40000000008FC2F5BD00000000, 67186), +(2930840720, 5003, 'koKR', 0x706574313100E17AFCC0295C4FBFAE4721C08B1300000F06000000000000AA0000007B142EC0CDCC4C3D8FC2F53C00000000, 67186), +(2930840720, 5002, 'koKR', 0x70657431300000008041CDCCC4C0295C4FC08A1300000F06000000000000AA0000003D0A47C00000000000000000AE47E13D, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(2930840720, 5001, 'koKR', 0x706574390085EBD9C0B81E85BF9A99B93F891300000F06000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5000, 'koKR', 0x7065743800A4707DBF713D26415C8F42C0881300000F06000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 4999, 'koKR', 0x706574370014AE87413D0A57C18FC2F53C871300000F06000000000000AA0000003D0A47C0000000000000000000000000, 67186), +(2930840720, 4998, 'koKR', 0x706574360085EBE1C0A470D5C09A9909C0861300000F06000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 4997, 'koKR', 0x70657435008FC297411F850BC11F851BC0851300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 4996, 'koKR', 0x70657434003D0A17BF66661640CDCCEC3F841300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 4995, 'koKR', 0x70657433008FC221411F8543C13D0A57C0831300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 4993, 'koKR', 0x7065743200E17A7041C3F53C410AD723BC811300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 4992, 'koKR', 0x70657431009A99394133335741AE4721C0801300000F06000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(21457424, 1552, 'koKR', 0x100600000000000000FFFFFFFF, 67186), +(21457424, 1551, 'koKR', 0x0F0600000000000000FFFFFFFF, 67186), +(3386943305, 340484, 'koKR', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'koKR', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'koKR', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'koKR', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'koKR', 0xED9598EC9AB0ECA79520EC9EA5EC8B9D20EAB2B0ED88AC00EAB080EAB5ACEBA5BC20ED999CEC9AA9ED9598EB8A9420EC88A8EBB094EABCADECA788EC979020ECB0B8EC97ACED9598EC8BADEC8B9CEC98A42E002D20ED959CEBB0A4EC9DB420ED9584EC9A94ED9598EBA9B020313020EBA088EBB2A820EC9DB4EC8381EC9DB4EC96B4EC95BC20ED95A9EB8B88EB8BA42E0D0A2D20EAB080EBB2BCEC9AB420ECB99CEC84A0EC9AA920ED948CEBA088EC9DB4EC96B420EAB08420ECA084ED88AC20EBAAA8EB939CEC9E85EB8B88EB8BA42E0D0A2D2031EC9DB820EB8C80EAB8B0EC97B420ECA084EC9AA9EC9E85EB8B88EB8BA42E20ED8C8CED8BB020EB8C80EAB8B0EC97B4EC9D8020EC8BA4EBB284EBACB8EC979020EC9E88EB8A9420ECA780EB8C80EC88A0EC82AC20EC9584EBAAB0EBA08CEB8A90EBA5BC20ED86B5ED95B420EB93B1EBA19DED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0A2D20EBB09CEAB2ACEB9098EC96B420EC9EA1ED9E88EBA9B420EAB2BDEAB8B0EC9790EC849C20ECA09CEC99B8EB90A9EB8B88EB8BA421009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'koKR', 0x000000, 67186), +(3776013982, 149981, 'koKR', 0x000000, 67186), +(3330775162, 1897, 'koKR', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'koKR', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'koKR', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'koKR', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'koKR', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'koKR', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'koKR', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'koKR', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'koKR', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'koKR', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'koKR', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'koKR', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'koKR', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'koKR', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'koKR', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'koKR', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'koKR', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'koKR', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'koKR', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'koKR', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'koKR', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'koKR', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'koKR', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'koKR', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'koKR', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'koKR', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'koKR', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'koKR', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'koKR', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'koKR', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186), +(1408785804, 249390, 'koKR', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'koKR', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'koKR', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'koKR', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'koKR', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'koKR', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'koKR', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'koKR', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'koKR', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'koKR', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'koKR', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'koKR', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'koKR', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'koKR', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'koKR', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'koKR', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'koKR', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'koKR', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'koKR', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'koKR', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'koKR', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'koKR', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'koKR', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'koKR', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'koKR', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'koKR', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'koKR', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'koKR', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'koKR', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'koKR', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'koKR', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'koKR', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'koKR', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'koKR', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'koKR', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'koKR', 0xECA285ECA1B120ED8AB9EC84B100ED999CEC84B1ED999420EC8B9C20EBB688EC9D9820EC88A8EAB2B0EAB3BC20EBB984EC838120EAB099EC9D8020EC9AA9ECA1B120ECA3BCEBACB8EC9D8420EC8B9CECA084ED9598ECA78020EC958AEC9D8420EB958C20EC9E90EB8F99EC9CBCEBA19C20EC9DB8EAB08420ED9895EC8381EC9D8420ECB7A8ED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1283168, 'koKR', 0x00EC8AB9ECB29CEC9D9820EAB3B5ED9788ECA1B0EAB0812035EAB09CEBA5BC20EC8AB9ECB29CEC9D9820EAB3B5ED9788ED95B5EC9CBCEBA19C20EAB2B0ED95A9ED95A9EB8B88EB8BA42E20EC8AB9ECB29CEC9D9820EAB3B5ED9788ED95B5EC9D8020EC9984ECA084ED9E8820EAB095ED9994EB909C20ED959CEBB0A4203120EC8B9CECA68C20EC9881EC9B8520EBB08F20EC8BA0ED99942C20ED98B9EC9D8020ECB59CEAB3A020ED9288ECA78820EAB491ED9C9820ECA09CEC9E9120EBACB4EAB8B020EBB08F20EC9EA5EC8BA0EAB5ACEC9D9820EC9584EC9DB4ED859C20EBA088EBB2A8EC9D8420ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E0000, 67186), +(3776013982, 1282778, 'koKR', 0x00EC9984ECA084ED9E8820EAB095ED9994EB909C20ED959CEBB0A4203120EC8B9CECA68C20EC9881EC9B8520EBB08F20EC8BA0ED99942C20ED98B9EC9D8020ECB59CEAB3A020ED9288ECA78820EAB491ED9C9820ECA09CEC9E9120EBACB4EAB8B020EBB08F20EC9EA5EC8BA0EAB5ACEC9D9820EC9584EC9DB4ED859C20EBA088EBB2A8EC9D8420ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E0000, 67186), +(3776013982, 1264876, 'koKR', 0x00EAB1B0EC9DB8EC9D9820EAB095ED8380EC979020EC9881ED96A5EC9D8420EBB09BEB8A9420EB8C80EC8381EC9790EAB28C20ED9584EC82ACEC9D9820EC9DBCEAB2A920EB9890EB8A9420247332EBAA8520EC9DB4EC8381EC9D9820EB8C80EC8381EC9790EAB28C20ECA081ECA491ED9598EB8A9420ED9A8CECA084EBB2A0EAB8B0EBA19C20ED94BCED95B4EBA5BC20EC9E85ED9E88EBA9B42C20ED95B4EB8BB920EB8C80EC8381EC9790EAB28C20EBB680EC97ACEB909C20EAB1B0EC9DB8EC9D9820EAB095ED8380EC9D9820ECA780EC868DEC8B9CEAB084EC9DB420247B2473312F313030307D2E31ECB488EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1255629, 'koKR', 0x00ED95B4EBB0A9EB909C20ECA095EC8898EAB08020ED948CEBA088EC9DB4EC96B4EBA5BC20EAB095ED9994ED9598EC97AC20246420EB8F99EC958820EC9DB4EB8F9920EC868DEB8F84EBA5BC2024733125EBA78CED81BC2C20EAB3B5EAB2A9EBA0A5EAB3BC20ECB998EC9CA0EB9F8920EBB08F20ED94BCED95B420ED9DA1EC8898EB9F89EC9D842024733225EBA78CED81BC20ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E20EC9DB420ED9AA8EAB3BCEB8A9420ECA491ECB2A9EB90A9EB8B88EB8BA42E20EB8BA82C20ECA780EC868DEC8B9CEAB084EC9DB420EAB0B1EC8BA0EB9098ECA780EB8A9420EC958AEC8AB5EB8B88EB8BA42E00EC9DB4EB8F9920EC868DEB8F842024733125EBA78CED81BC20ECA69DEAB0800D0AEAB3B5EAB2A9EBA0A52024733225EBA78CED81BC20ECA69DEAB0800D0AECB998EC9CA0EB9F89EAB3BC20ED94BCED95B420ED9DA1EC8898EB9F892024733325EBA78CED81BC20ECA69DEAB08000, 67186), +(3776013982, 447444, 'koKR', 0x00243F63335BEAB7A0EC97B4EC9D8420EC97B4EC96B45D5BECA095EC8BA020EBB684EC97B420EC8B9CECA08420EC8B9C20ED98BCEB8F88EC9D9820EAB7A0EC97B4EC9D8420EC97B4EC96B45D20243435303139336420EB8F99EC958820ECA081EC9D8420EB94B0EB9DBCEB8BA4EB8B88EAB28C20ED95A9EB8B88EB8BA42E20EAB7A0EC97B4EC979020ED9C98EBA790EBA6B020ECA081EC9D8020EBB294EC9C8420EC9588EC979020EC9E88EB8A9420EB8F99EC958820243435393331347431ECB488EBA788EB8BA420243434373434387331EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EBB09BEC8AB5EB8B88EB8BA42E0000, 67186), +(372281185, 38, 'koKR', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'koKR', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'koKR', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'koKR', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'koKR', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'koKR', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'koKR', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'koKR', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'koKR', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'koKR', 0x0024407370656C6C6465736332313037323500ED9AA8EAB3BC20EBA78CEBA38C20EC8B9C20ED8FADEBB09CED9598EBA9B020247731EC9D9820EBB984ECA08420ED94BCED95B400, 67186), +(3386943305, 332898, 'koKR', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'koKR', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'koKR', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'koKR', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'koKR', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'koKR', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'koKR', 0x0464000000, 67186), +(3776013982, 1280123, 'koKR', 0x000000, 67186), +(3205218938, 54794, 'koKR', 0x424353484F5254444154454E4F594541520025422025640001000000, 67186), +(3205218938, 22339, 'koKR', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'koKR', 0x534C4153485F5441524745545F4D41524B455232002FEB8C80ED919C0001000000, 67186), +(3205218938, 22331, 'koKR', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'koKR', 0x534C4153485F574F524C445F4D41524B455232002FEC9C84ED919C0001000000, 67186), +(3205218938, 22329, 'koKR', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'koKR', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'koKR', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'koKR', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'koKR', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'koKR', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'koKR', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'koKR', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'koKR', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'koKR', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'koKR', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'koKR', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'koKR', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'koKR', 0x00EBB680EC8381EB8BB9ED959C20EB8C80EC8381EC9790EAB28C20ECB59CED9B84EC9D9820EC9DBCEAB2A9EC9D8420EC8B9CEB8F84ED95B420247331EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E88EAB3A020ECB694EAB080EBA19C202434363835373264EC979020EAB1B8ECB39020243436383537326F31EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E20EC839DEBAA85EBA0A5EC9DB4202473332520EC9DB4EC8381EC9DB4EAB1B0EB8298202473322520EBAFB8EBA78CEC9CBCEBA19C20EB96A8EC96B4ECA78420ECA081EC9790EAB28CEBA78C20EC82ACEC9AA9ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0000, 67186), +(261693969, 95553, 'koKR', 0xFFFFFFFFFFFFFFFFEC8BA4ECB2B4ED9994EB909C20EBB080EB8F8400001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'koKR', 0xFFFFFFFFFFFFFFFFEC9594ED9D9120EBB0A9ECB2A8ED839120ECA1B0EC82AC0000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'koKR', 0xFFFFFFFFFFFFFFFFECA084EBA0A520EC95BDED9994EC8B9CED82A4EAB8B00000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'koKR', 0xEC82ACEC9585ED959C20EBB984EB8A980000EC8898EC8AB5EC839D20ECBFA0EBA5B4EAB7B8EBB2A0EC9DB8EC9790EAB28C20EC82ACEC9585ED959C20EC9D80ED989CEBA5BC20EBB680EC97ACED9598EC97AC20EC839DEBAA85EBA0A5EAB3BC20EAB3B5EAB2A9EBA0A5202431323839313032733125EBA78CED81BC20ECA69DEAB08020EBB08F20EC82ACEC9585ED959C20EBB984EB8A9820EB8AA5EBA0A520EBB680EC97AC00, 67186), +(3776013982, 1281946, 'koKR', 0x000000, 67186), +(3776013982, 1270634, 'koKR', 0x003135ECB48820EB8F99EC958820EAB3B5EAB2B0ED839120EBAFB8EB939CEC9584EBA5B4EC979020EC9E88EB8A9420EBB984ECA084EC9D9820ECA095EBA0B9EC9790EAB28C20EBB09BEB8A9420ED94BCED95B4EAB08020EB919020EBB0B0EBA19C20ECA69DEAB080ED95A9EB8B88EB8BA42E00EBB09BEB8A9420ED94BCED95B4EAB08020EB919020EBB0B000, 67186), +(3776013982, 1270085, 'koKR', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020EC839DEBAA85EBA0A5EC9D8420ED94BCED95B420ED9DA1EC889820EBB3B4ED98B8EBA789EC9CBCEBA19C20EBA79EEBB094EABF89EB8B88EB8BA42E20EBA79EEBB094EABEBC20EC839DEBAA85EBA0A5EC979020ED95B4EB8BB9ED9598EB8A9420EBB3B4ED98B8EBA789EC9D8420EC96BBEC8AB5EB8B88EB8BA42E20EBB3B4ED98B8EBA789EC9D8020EC82ACEB9DBCECA78820EB958C20ED8FADEBB09CED9598EC97AC2024313237303038356131EBAFB8ED84B020EB82B4EC9D9820ED948CEBA088EC9DB4EC96B4EC9790EAB28C2024313237303038357331EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E00247731EC9D9820ED94BCED95B420ED9DA1EC88980D0AED9AA8EAB3BC20ECA09CEAB1B020EC8B9C2024313237303038356131EBAFB8ED84B020EB82B4EC9D9820ED948CEBA088EC9DB4EC96B4EC9790EAB28C2024313237303038357331EC9D9820EC9594ED9D9120ED94BCED95B400, 67186), +(3776013982, 1258411, 'koKR', 0x000000, 67186), +(3776013982, 1258410, 'koKR', 0x00EC84ADECB7A820EC8B9C20EABEB8EBAFB8EAB8B020ED9AA8EAB3BCEAB08020EBB680EC97ACEB90A9EB8B88EB8BA42E00ECB7A8EC95BDED9598EAB3A020EC9584EBACB420EAB8B0EB8AA5EB8F8420EC9786EB8A9420EAB2BDEC9DB4EC9D9820EAB3B5EC9DB420ED9584EC97B0ECA081EC9DB820EC868CEBA9B8EC9D8420EAB8B0EB8BA4EBA6ACEB8A9420ECA49100, 67186), +(3776013982, 1258336, 'koKR', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'koKR', 0x000000, 67186), +(3776013982, 1257729, 'koKR', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'koKR', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020EB9098EC82B4EC9584EB8298EAB8B020EC8B9CEC9E91ED95B42C20ECA095EC8BA020ECA791ECA491EC9DB420EB819DEB8298EBA9B420EC8B9CECA084EC9E90EAB08020ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D98202431323537373238733125EBA5BC20ECA780EB8B8C20ECB184EBA19C20EBB680ED999CED95A9EB8B88EB8BA42E00EBB680ED999C20ECA4910D0AECA095EC8BA020ECA791ECA491EC9DB420EB819DEB8298EBA9B420EC8B9CECA084EC9E90EAB08020ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D98202431323537373238733125EBA5BC20ECA780EB8B8C20ECB184EBA19C20EBB680ED999C00, 67186), +(3776013982, 1257505, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020EC839DEBAA85EBA0A5EC9D8420ED94BCED95B420ED9DA1EC889820EBB3B4ED98B8EBA789EC9CBCEBA19C20EBA79EEBB094EABF89EB8B88EB8BA42E20EBA79EEBB094EABEBC20EC839DEBAA85EBA0A5EC979020ED95B4EB8BB9ED9598EB8A9420EBB3B4ED98B8EBA789EC9D8420EC96BBEC8AB5EB8B88EB8BA42E00247731EC9D9820ED94BCED95B420ED9DA1EC889800, 67186), +(3776013982, 1256189, 'koKR', 0x000000, 67186), +(3776013982, 1255966, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020247431ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E00247431ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA78CED81BC20ED9A8CEBB3B500, 67186), +(3776013982, 1253337, 'koKR', 0x000000, 67186), +(3776013982, 1253336, 'koKR', 0x0000EC9D8CEBA38CEBA5BC20EBA788EC8B9CEAB3A020EC8898EC8381ED959C20ED9998EAB2BD20EBAAA9EAB2A920ECA4912E2E2E00, 67186), +(3776013982, 1253194, 'koKR', 0x0000ECA095EC8BA020ECA791ECA49100, 67186), +(3776013982, 1253193, 'koKR', 0x0000ECA095EC8BA020ECA791ECA49100, 67186), +(3776013982, 1253185, 'koKR', 0x0000ECA095EC8BA020ECA791ECA49100, 67186), +(3776013982, 1253064, 'koKR', 0x000000, 67186), +(3776013982, 1252431, 'koKR', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'koKR', 0x0024407370656C6C646573633132343130323300247431ECB488EBA788EB8BA42024313235383333367331EC9D9820EBB984ECA08420ED94BCED95B400, 67186), +(3776013982, 1241023, 'koKR', 0x00ECA1B0EAB7B8EBA1A0EC9DB420EBB0A9EBB2BDEC9CBCEBA19C20EC9E90EC8BA0EC9D8420EAB090EC8BB820EBB09BEB8A9420ED94BCED95B4EBA5BC20ED9DA1EC8898ED9598EAB3A020EBA788ECA780EBA78920EAB2BDEAB3A0EBA5BC20EC8B9CECA084ED95A9EB8B88EB8BA42E20EC8B9CECA084EC9DB420EB819DEB8298EBA9B420EBAAA8EB93A020ED948CEBA088EC9DB4EC96B4EC9790EAB28C20EBB0A9EBB2BDEC9DB420ED8C8CEAB4B4EB90A020EB958CEAB98CECA7802024313234313033327431ECB488EBA788EB8BA42024313235383333367331EC9D9820EBB984ECA08420ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E00247731EC9D9820EBB09BEB8A9420ED94BCED95B420ED9DA1EC889800, 67186), +(3776013982, 1235076, 'koKR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'koKR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'koKR', 0x00EBB984ECB695EAB491EC9DB420EAB080EC9EA520EAB080EAB98CEC9AB420EC9E90EC9B9020EB8D94EBAFB8EBA5BC20EB818CEC96B420EBAAA8EC958420EC9E90EC8BA0EC9D9820EB8AA5EBA0A5EC9D8420EC8388EBA19CEC9AB420EB8AA5EBA0A5EC9CBCEBA19C20EB8C80ECB2B4ED95A9EB8B88EB8BA42E243F44494646387C3F4449464632335B5D5B20EBB984ECB695EAB491EC9D8020EB8F99EC8B9CEC979020ED9598EB8298EC9D9820EB8AA5EBA0A5EBA78C20EC9CA0ECA780ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E5D0000, 67186), +(3776013982, 1235067, 'koKR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'koKR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'koKR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'koKR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'koKR', 0x00EC958CEBA088EBA6ACEC9584EAB08020247331EC9D9820ECB998EC9CA0EB9F89EC9D8420ED9DA1EC8898ED9598EB8A9420EAB3B5ED978820EBA788EBB295EC9D9820EABB8DECA788EC9D8420ED948CEBA088EC9DB4EC96B4EC9790EAB28C20EB9190EBA685EB8B88EB8BA42E2024407370656C6C6E616D65313233333836357C31EC9DB43BEAB0803B20EBACB4ED9AA8ED9994EB9098EBA9B42C20EB8298EBA8B8ECA78020ED9DA1EC8898EB9F89EC9D8020EBACB4EC9E91EC9C84EC9D9820ED948CEBA088EC9DB4EC96B4EC9790EAB28C20ECA084EB8BACEB90A9EB8B88EB8BA42E00247731EC9D9820ECB998EC9CA0EB9F8920ED9DA1EC88980D0A0D0AEBACB4ED9AA8ED9994ED9598EBA9B420EB82A8EC9D8020ED9DA1EC8898EB9F89EC9DB420EB8BA4EBA5B820ED948CEBA088EC9DB4EC96B4EC9790EAB28C20ECA084EB8BACEB90A800, 67186), +(3776013982, 1228865, 'koKR', 0x00ED8388EAB283EC979020EC98ACEB9DBCED8380EAB1B0EB829820EB82B4EBA6BDEB8B88EB8BA42E00243F6A31675BECA780EC838120EC9DB4EB8F9920EC868DEB8F8420246A316725EBA78CED81BC20ECA69DEAB0805D5B5D243F6A31665BEBB984ED968920EC868DEB8F8420246A316625EBA78CED81BC20ECA69DEAB0805D5B5D243F6A31735BEC8898EC988120EC868DEB8F8420246A317325EBA78CED81BC20ECA69DEAB0805D5B5D00, 67186), +(3776013982, 1225598, 'koKR', 0x00243F50433135343832385B7C636E4951313A2D20EAB8B0EBB3B820EC9EA0EC8898EBB3B57C525D5B5D243F50433135343832395B7C636E4951323A2D20EAB095ED9994EB909C20EAB480ECA08820EC9EA0EC8898EBB3B57C525D5B5D243F50433135343833305B7C636E4951333A2D20EC8BACEC97B0EC9D9820EAB8B0EBA68420EC9EA0EC8898EBB3B57C525D5B5D243F50433135343833325B7C636E4951343A2D20ED8C8CED81AC20EB8F84EB9E9120ECA780EB8A90EB9FACEBAFB820EC9EA0EC8898EBB3B57C525D5B5D0D0AEC8898EC988120EC868DEB8F84202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20EAB8B0EBB3B820EC82B0EC868CED86B57C520D0A24313232343730306D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20EC8BACEC97B020EC9EA0EC8898EBB680EC9D9820ECA491EAB3A020EC82B0EC868CED86B57C520D0A24313237313631336D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20EC8BACED95B4EC9AA920EC82B0EC868CED86B57C520D0A24313237313631346D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20EB82A0EBA19CEB9DBCED81ACEC9D9820EC88A8EAB2B0ED86B57C520D0A24313237313631356D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20EAB8B0EBB3B820EBAFB8EB81BC7C520D0AEC9DBCEBB09820EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20ECA780EB8A90EB9FACEBAFB8EBAFBCEC96B420EB96A1EBB0A520EBAFB8EB81BC7C520D0AEAB3A0EAB88920EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20ED948CEBA088ECBD94ED958020EBAFB8EB81BC7C520D0AED9DACEAB78020EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20EBA8B9EBACBCEB82A0ECB99820EAB3A0EAB8B020EBAFB8EB81BC7C520D0AEC9881EC9B8520EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20EC97ACEC9AB820EAB7B8EBACBC7C520D0AEBAFB8EB8A98EAB080EC8B9CEAB28C20EBB08F20EAB080EC8B9CED95B4EBA7880D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20EC84B820EBB28820EC97AEEC9D8020EAB7B8EBACBC7C520D0AEBAAA8EB93A020EC868CED989520EC839DEBAA85ECB2B40D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20EAB080EC9595EC8B9D20EC9588EAB2BD7C520D0AEAB3A0EB8C8020EC9CA0EBACBC20EBB09CEAB2AC20EAB080EB8AA55D5B5D0D0A00243F50433135343832385B7C636E4951313A2D20EAB8B0EBB3B820EC9EA0EC8898EBB3B57C525D5B5D243F50433135343832395B7C636E4951323A2D20EAB095ED9994EB909C20EAB480ECA08820EC9EA0EC8898EBB3B57C525D5B5D243F50433135343833305B7C636E4951333A2D20EC8BACEC97B0EC9D9820EAB8B0EBA68420EC9EA0EC8898EBB3B57C525D5B5D243F50433135343833325B7C636E4951343A2D20ED8C8CED81AC20EB8F84EB9E9120ECA780EB8A90EB9FACEBAFB820EC9EA0EC8898EBB3B57C525D5B5D0D0AEC8898EC988120EC868DEB8F84202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20EAB8B0EBB3B820EC82B0EC868CED86B57C520D0A24313232343730306D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20EC8BACEC97B020EC9EA0EC8898EBB680EC9D9820ECA491EAB3A020EC82B0EC868CED86B57C520D0A24313237313631336D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20EC8BACED95B4EC9AA920EC82B0EC868CED86B57C520D0A24313237313631346D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20EB82A0EBA19CEB9DBCED81ACEC9D9820EC88A8EAB2B0ED86B57C520D0A24313237313631356D36EC9D9820ECB59CEB8C8020EC82B0EC868C0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20EAB8B0EBB3B820EBAFB8EB81BC7C520D0AEC9DBCEBB09820EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20ECA780EB8A90EB9FACEBAFB8EBAFBCEC96B420EB96A1EBB0A520EBAFB8EB81BC7C520D0AEAB3A0EAB88920EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20ED948CEBA088ECBD94ED958020EBAFB8EB81BC7C520D0AED9DACEAB78020EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20EBA8B9EBACBCEB82A0ECB99820EAB3A0EAB8B020EBAFB8EB81BC7C520D0AEC9881EC9B8520EC839DEBAA85ECB2B420EB829AEC8B9C20EAB080EB8AA50D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20EC97ACEC9AB820EAB7B8EBACBC7C520D0AEBAFB8EB8A98EAB080EC8B9CEAB28C20EBB08F20EAB080EC8B9CED95B4EBA7880D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20EC84B820EBB28820EC97AEEC9D8020EAB7B8EBACBC7C520D0AEBAAA8EB93A020EC868CED989520EC839DEBAA85ECB2B40D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20EAB080EC9595EC8B9D20EC9588EAB2BD7C520D0AEAB3A0EB8C8020EC9CA0EBACBC20EBB09CEAB2AC20EAB080EB8AA55D5B5D00, 67186), +(3776013982, 1225322, 'koKR', 0x007C636E475245454E5F464F4E545F434F4C4F523AEAB68CEC9EA520EC8899EBA0A8EB8F843A7C7220310D0A0D0AEAB3A0EC9A94ED9598EAB3A020ED8F89ED9994EBA19CEC9AB420EBACBCECA484EAB8B0EB8A9420EAB095ED839CEAB3B5EC9DB420EC8BACED95B4EAB08020ED9288EC9D8020EBB984EBB080EC9D8420ED8390ED9798ED9598EAB8B0EC979020EC9DB4EC8381ECA081EC9DB820EC9EA5EC868CEC9E85EB8B88EB8BA42E0D0A0D0AEC9DB420ECA780EC97ADEC9D9820EC9B85EB8DA9EC9DB40D0A2D20ED839CEC9691EC839820EB96BC0D0A2D20EBB680EAB880EAB1B0EBA6ACEB8A9420EABD83EC86A1EC9DB40D0A2D20EABD83EC86A1EC9DB420EB96BC0D0A2D20ED9D90EBACBCEAB1B0EBA6ACEB8A9420EAB3B5ED97880D0A2D20EBB680ECA3BCEC9D98ED959C20ED9994EBACBC0D0A2D20EC9E83EC96B4EBB284EBA6B020EBB3B4EBACBC0000, 67186), +(3776013982, 1225281, 'koKR', 0x00EC9881EC9B90EB85B8EB9E9820EC88B2EC9D9820EC9E94EC9E94ED959C20EBACBCEC9D8420ECA28BEC9584ED9598EB8A9420EC98A8EC889CED959C20EBACBCEAB3A0EAB8B0EC9E85EB8B88EB8BA42E20EC9DBCEBB098ECA081EC9DB820EAB095ED839CEAB3B5EC9DB4EB9DBCEBA9B420EC9DB4EB9FB020EB829AEC8B9CED84B0EAB08020EC96B4EBA0B5ECA78020EC958AEAB28C20EB8A90EABBB4ECA780EAB2A0ECA780EBA78C2C20EC9DB420EBACBCEAB3A0EAB8B0EBA78CED81BCEC9D8020EC9888EBA6ACED959C20EB8888EC8DB0EBAFB8EBA5BC20EAB080ECA78420EAB095ED839CEAB3B5EC9790EAB28CEBA78C20EBAAA8EC8AB5EC9D8420EB939CEB9FACEB8385EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AED8AB9EC88987C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEC9DB420EC839DEC84A0EC9D8420EC9EA1EC9D8420EC889820EC9E88EB8A9420ECA780EC97AD7C520D0A2D20EC9881EC9B90EB85B8EB9E9820EC88B20D0A2D20ED9598EB9E80EB8BA4EBA5B40D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEB829AEC8B9C20EC9B85EB8DA9EC9DB47C720D0A2D20EBA78CEBB09CED9598EB8A9420EAB2A9EBA5980000, 67186), +(3776013982, 1225277, 'koKR', 0x00ED9598EB9E80EB8BA4EBA5B420EBACBCECA484EAB8B0EC9790EB8A9420EB8F85ED8AB9ED959C20EAB491EBACBCEC9DB420EC849EEC97AC20EC9E88EC96B42C20EBB3B5EC9B90EB909C20EB85B8EB9E98EAB3A0EAB8B0EC9D9820EC9584EAB080EBAFB8EBA5BC20ED86B5EAB3BCED95A020EB958C20EC8BA0EBB984EBA19CEC9AB420EC84A0EC9CA8EC9D8420EBBF9CEC96B4EB8385EB8B88EB8BA42E20EC9DB420EB85B8EB9E98EB8A9420EAB095ED839CEAB3B5EC9790EAB28CEB8A9420EB93A3EAB8B020ECA28BEC9D8020EC9D8CEC9585EC9DB4ECA780EBA78C2C20EC9D80EC9D80ED959C20ECA784EB8F99EC9D8420EBB09CEC839DEC8B9CECBC9C20ED8FACEC8B9DEC9E90EB93A4EC9D8420ECAB93EC9584EB8385EB8B88EB8BA42E20EB92A4ED8B80EBA6B020EC97B4EB8C80EC96B4EC998020EAB099EC9D8020ED8FACEC8B9DEC9E90EAB08020EB8BA4EAB080EC98A4EBA9B420ECA784EB8F99EC9DB420ED959CECB8B520EB8D9420EAB1B0ECB9A0EC96B4ECA791EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AED8AB9EC88987C520D0A0D0A24407370656C6C69636F6E3132333731303420EC9A94EBA6AC20EC9E94ECB9ABEC83810D0A0D0AEC9DB420EBACB4ECB299EC9DB4EB829820ED9DACEAB780ED9598EAB3A020EBA79BEC9E88EB8A9420EBACBCEAB3A0EAB8B0EB8A9420EC97ACEB9FAC20ED959CEBB0A420EC9A94EBA6ACEBB295EC9790EC849C20ED95B5EC8BAC20EC9EACEBA38CEBA19C20EC82ACEC9AA9EB90A9EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEC9DB420EC839DEC84A0EC9D8420EC9EA1EC9D8420EC889820EC9E88EB8A9420ECA780EC97AD7C520D0A2D20EC9881EC9B90EB85B8EB9E9820EC88B20D0A2D20ED9598EB9E80EB8BA4EBA5B40D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEB829AEC8B9C20EC9B85EB8DA9EC9DB47C720D0A2D20EABD83EC86A1EC9DB420EB96BC0D0A2D20EBB680EAB880EAB1B0EBA6ACEB8A9420EABD83EC86A1EC9DB40D0A2D20ED839CEC9691EC839820EB96BC0D0A2D20EBA78CEBB09CED9598EB8A9420EAB2A9EBA5980000, 67186), +(3776013982, 1225273, 'koKR', 0x00EAB3B5ED9788ED8FADED928DEC9790EC849C20EB829AEC9D8420EC889820EC9E88EB8A9420EBACBCEAB3A0EAB8B0EBA19C2C20EAB8B0EBAC98ED9598EAB28C20EBB688ED8EB8ED959C20EB8A90EB828CEC9D8420ECA48DEB8B88EB8BA42E20EAB3B5ED9788EC9790EC849C20EB8298EC98A820EB8BA4EBA6ACEBA5BC20EB829AEC9D8420EC889820EC9E88ECA3A02E20EAB590ED999CED9598EAB3A020EC9881EBA6ACED9598EBA9B020ECA780EB9EB5EC9D8420EAB096ECB69820EC9DB4EB93A4EC9D8020EAB3B5ED9788ED8FADED928DEC9790EC849C20EB829AEC8B9CED95A020EC9AA9EAB8B0EBA5BC20ECA780EB8B8C20EAB095ED839CEAB3B5EC9790EAB28C20EC8381EB8BB9ED959C20EB8F84ECA084EC9DB420EB90A9EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AED8AB9EC8898207C520D0A0D0A24407370656C6C69636F6E3132333731303420EC9A94EBA6AC20EC9E94ECB9ABEC83810D0A0D0AEC9DB420EBACB4ECB299EC9DB4EB829820ED9DACEAB780ED9598EAB3A020EBA79BEC9E88EB8A9420EBACBCEAB3A0EAB8B0EB8A9420EC97ACEB9FAC20ED959CEBB0A420EC9A94EBA6ACEBB295EC9790EC849C20ED95B5EC8BAC20EC9EACEBA38CEBA19C20EC82ACEC9AA9EB90A9EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEC9DB420EC839DEC84A0EC9D8420EC9EA1EC9D8420EC889820EC9E88EB8A9420ECA780EC97AD7C520D0A0D0A2D20EAB3B5ED9788ED8FADED928D0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEB829AEC8B9C20EC9B85EB8DA9EC9DB47C720D0A0D0A2D20EB8C80EC9691EC9D9820EC868CEC9AA9EB8F8CEC9DB40D0A2D20ED9D90EBACBCEAB1B0EBA6ACEB8A9420EAB3B5ED97880000, 67186), +(3776013982, 1225272, 'koKR', 0x00EC9D80EBB99BEC9D9820EAB080EC8B9CEAB3A0EAB8B0EBA19C2C20EAB095ED839CEAB3B5EAB3BC20EB8BA4EBA5B820EBACBCEAB3A0EAB8B0EB93A4EC9D8420EC9CA0EC9DB8ED959C20EB8BA4EC9D8C20EBBBA3EBBBA3ED959C20EAB080EC8B9CEBA5BC20EAB3A7EC9EA520EC84B8EC9B8C20EC9C84ED9891ED95A9EB8B88EB8BA42E20EB8884EAB5ACEC9790EAB28CEB8F8420EC9AB0ED98B8ECA081EC9DB4ECA78020EC958AEAB3A020ED88ACEB8D9CEAB1B0EBA6ACEBA78C20ED9598EB8A9420ECB99CEAB5AC20EAB099ECA780EBA78C2C20EC9CA0EBA79DED959C20EAB095ED839CEAB3B5EC9790EAB28CEB8A9420EBB098EAB080EC9AB420EBB3B4EBACBCEC9E85EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AED8AB9EC8898207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEC9DB420EC839DEC84A0EC9D8420EC9EA1EC9D8420EC889820EC9E88EB8A9420ECA780EC97AD7C520D0A2D20EC9881EC9B90EB85B8EB9E9820EC88B20D0A2D20ED9598EB9E80EB8BA4EBA5B40D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEB829AEC8B9C20EC9B85EB8DA9EC9DB47C720D0A2D20EBB680EAB880EAB1B0EBA6ACEB8A9420EABD83EC86A1EC9DB40D0A2D20ED839CEC9691EC839820EB96BC0D0A2D20EABD83EC86A1EC9DB420EB96BC0D0A2D20EBA78CEBB09CED9598EB8A9420EAB2A9EBA5980000, 67186), +(3776013982, 444803, 'koKR', 0x00EC968CECA084ED9E8820ED9CB4EBA9B4EC9D8420ECB7A8ED9598EB8A9420EC839DEBAA85ECB2B4EC9E85EB8B88EB8BA42E20EAB9A8EC96B4EB829820EC9E88EC9D8420EB959020EBB99BEC9DB420EAB1B0EC9D9820EB8BBFECA78020EC958AEB8A9420ED9998EAB2BDEC9790EC849CEB8F8420EBB984EB8A98EC9DB420EBB098EC82ACEB909C20EBB99BEC9D8420EBA8B8EAB888EC96B420EC9584EBA5B8EAB1B0EBA6BDEB8B88EB8BA42E20ECA1B0EC9AA9ED959C20ECA09CEC9995EC9DB4EB9DBCEAB3A0EB829820ED95A0EAB98CEC9A943F20EAB095ED839CEAB3B5EC9D8420EABF88EABEB8EB8A9420EBAAA8EB93A020EC9DB4EAB08020EBAAA9ED919CEBA19C20EC82BCEC9D8420EBA78CED959C20EBACBCEAB3A0EAB8B0EC9E85EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AED8AB9EC88987C720D0A0D0A24407370656C6C69636F6E34343531323720EC8BA0EC84A0ED959C20EC839DEC84A0EC82B40D0A0D0AEC9A94EBA6AC20ECA084EBACB8EAB8B0EC88A0EBA19C20EC9DB420EBACBCEAB3A0EAB8B0EBA5BC20EC8690ECA788ED9598EBA9B420EB8C80EB9F89EC9D9820EC8BA0EC84A0ED959C20EC839DEC84A0EC82B4EC9D8420ED9A8DEB939DED95A9EB8B88EB8BA42E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AEC9DB420EC839DEC84A0EC9D8420EC9EA1EC9D8420EC889820EC9E88EB8A9420ECA780EC97AD7C520D0A0D0A2D20EC9584ECA688ECB9B4ED97A4ED8AB80D0A2D20ED81ACEC9584EBA088EC89AC20EC98A4EC9584EC8B9CEC8AA40000, 67186), +(3205218938, 56772, 'koKR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453400ECBA90EBA6AC20ECA09CEAB3B50001000000, 67186), +(3205218938, 56771, 'koKR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300ECA784ECA780ED9598EAB28C0001000000, 67186), +(3205218938, 56770, 'koKR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453200ED8EB8ED9598EAB28C0001000000, 67186), +(3205218938, 22337, 'koKR', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'koKR', 0x000000, 67186), +(1010104591, 26054, 'koKR', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'koKR', 0xEBA19CEC959420ED998DEC9888EBACB800000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'koKR', 0xED9994EBA0A4ED959C20EC8BA0EB8F84EBA088EC9DB420ECB49BEB8C8000000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'koKR', 0xEC96B8EB8D94EBA788EC9DB820ECA095EBB984EC82ACEC9D9820EAB1B8EC9DB4EC8B9D20EB93B1EBB68800000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'koKR', 0xEB8BACEB9DBCEB9E8020EC8C8DED9994ECB0A820EAB8B0EAB384000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'koKR', 0xEC9595EB8F84EC9E90EC9D9820ED9994EBA19C000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'koKR', 0xEB8DAEEAB09C20EBACB4EC87A020EB93B1EBB68800000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'koKR', 0xEBB88CEBA088EC9DB4EB93A0EC8AA4EBB88CEBA3A920EC97B0EAB8B020EB93B1EBB68800000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'koKR', 0xEBA7A4EC9AB020EC9588ECA095ECA081EC9DB820EC96B8EB8D94EBA788EC9DB820EAB080EBA19CEB93B1EBB68800000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'koKR', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'koKR', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'koKR', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'koKR', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'koKR', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'koKR', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'koKR', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'koKR', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'koKR', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'koKR', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'koKR', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'koKR', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'koKR', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'koKR', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'koKR', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'koKR', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'koKR', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'koKR', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'koKR', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'koKR', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'koKR', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'koKR', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'koKR', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'koKR', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'koKR', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'koKR', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'koKR', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'koKR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'koKR', 0x00EB8DB0EC8B9CEBACB4EC8AA4EAB08020ECA1B0EAB081EC9D8420EAB7BCEAB084EC9D9820EAB3B5ED9788ED95B5EC9CBCEBA19C20EBB380ED9998ED9598EC97AC2C20EAB09320EBA78CEB93A4EC96B4ECA78420EAB3B5ED9788ECA09CEBA0A8EC868CEBA5BC20EBA78CEB939CEB8A9420EB8DB020EC82ACEC9AA9ED95A9EB8B88EB8BA42E20EAB3B5ED9788ECA09CEBA0A8EC868CEAB08020EC9984EC84B1EB9098EBA0A4EBA9B420EAB7BCEAB084EC9D9820EAB3B5ED9788ED95B520247331EAB09CEAB08020ED9584EC9A94ED95A9EB8B88EB8BA42E0D0A0D0AED9884EC9EAC20EAB8B0EC97AC3A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'koKR', 0xFFFFFFFFFFFFFFFFEAB7BCEAB084EC9D9820EAB3B5ED9788ED95B50000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'koKR', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'koKR', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'koKR', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'koKR', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'koKR', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'koKR', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'koKR', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'koKR', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'koKR', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'koKR', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'koKR', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'koKR', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'koKR', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'koKR', 0x000000, 67186), +(3653642729, 376, 'koKR', 0x000000008D000000, 67186), +(1673391669, 141, 'koKR', 0x8A000000, 67186), +(2791084701, 138, 'koKR', 0x35D30600, 67186), +(2518885667, 13760, 'koKR', 0xC035000000000000, 67186), +(3776013982, 1296205, 'koKR', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'koKR', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'koKR', 0xFFFFFFFFFFFFFFFFEAB3B5ED978820EAB3B5EC84B83A20ECA484EC9584EBA78C00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'koKR', 0xFFFFFFFFFFFFFFFFEAB3B5ED978820EAB3B5EC84B83A20EC9881EC9B90EB85B8EB9E9820EC88B200003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(476847390, 192, 'koKR', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'koKR', 0x000000, 67186), +(3776013982, 1296168, 'koKR', 0x000000, 67186), +(600565378, 665333, 'koKR', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'koKR', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'koKR', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'koKR', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'koKR', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'koKR', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'koKR', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'koKR', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'koKR', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'koKR', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'koKR', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'koKR', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'koKR', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'koKR', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'koKR', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'koKR', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'koKR', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'koKR', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'koKR', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'koKR', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'koKR', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'koKR', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'koKR', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'koKR', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'koKR', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'koKR', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'koKR', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'koKR', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'koKR', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'koKR', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'koKR', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'koKR', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'koKR', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'koKR', 0x898200006D670300, 67186), +(3745449290, 8614, 'koKR', 0xEC9D98EC8B9D20ECA780ECA0903A20EBB680EC849CECA78420EC9995ECA28C00ECA3BCEBB380EC9790EC849C20EC9C84ED9798ED959C20EC9D98EC8B9DEC9DB420EAB1B0ED9689EB9098EAB3A020EC9E88EC8AB5EB8B88EB8BA42E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'koKR', 0x000000, 67186), +(2575642838, 765, 'koKR', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'koKR', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'koKR', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'koKR', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'koKR', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'koKR', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'koKR', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'koKR', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'koKR', 0x5615130000070000FF000000, 67186), +(378810315, 810, 'koKR', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'koKR', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'koKR', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'koKR', 0xEBBF8CEBA6ACEBA7A4EB93AD20ECB0BDEBACB8000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'koKR', 0x22EC9881EC9B90EB85B8EB9E9820EB93B1EBB6882220EAB7B8EBA6BC000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'koKR', 0xEBBF8CEBA6ACEBA7A4EB93AD20EBACB8000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'koKR', 0xECA784EAB7A020ED8E98EBA5B4EAB3A8EB9DBC0000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'koKR', 0xED98B8ED9994EBA19CEC9AB420EC97B4EBA7A420ED8C8CEC9DB400000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'koKR', 0xED88ACEBB095ED959C20ED9598EB9E80EB8BA4EBA5B420ED9994EBB684000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'koKR', 0xEC9EA5EC9784ED959C20EC9790ED858CEBA5B420ECB6A9ECA08420EC8898ECA09500000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'koKR', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'koKR', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'koKR', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'koKR', 0x467B0000, 67186), +(4033975491, 620660, 'koKR', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'koKR', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'koKR', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'koKR', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'koKR', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'koKR', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'koKR', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'koKR', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'koKR', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'koKR', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'koKR', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'koKR', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'koKR', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'koKR', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'koKR', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'koKR', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'koKR', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'koKR', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'koKR', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'koKR', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'koKR', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'koKR', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'koKR', 0x000000, 67186), +(3776013982, 1295957, 'koKR', 0x000000, 67186), +(3776013982, 1295932, 'koKR', 0x000000, 67186), +(3776013982, 1295927, 'koKR', 0x00ED8C8CED8BB0EC9790EC849C20EBB0A9EC96B420EB8BB4EB8BB9EC9D8420EBA7A1EC9D8420EAB2BDEC9AB02C20EBA6B0EB8F84EBA5B4EBAFB8EAB08020EC9090EAB8B0EB8F8C20EB8D98ECA08420EB82B420ECA08120EBB391EBA0A5EC9D8420EAB095ECA1B020ED919CEC8B9CED95A9EB8B88EB8BA42E0D0A0D0AEBA6B0EB8F84EBA5B4EBAFB8EC998020EB8C80ED9994ED9598EC97AC20ED9AA8EAB3BCEBA5BC20EBB984ED999CEC84B1ED9994ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E00ED8C8CED8BB0EC9790EC849C20EBB0A9EC96B420EB8BB4EB8BB9EC9D8420EBA7A1EC9D8420EAB2BDEC9AB020EBA6B0EB8F84EBA5B4EBAFB8EAB08020EC9090EAB8B0EB8F8C20EB8D98ECA08420EB82B420ECA08120EBB391EBA0A5EC9D8420EAB095ECA1B020ED919CEC8B9C0D0A0D0AEBA6B0EB8F84EBA5B4EBAFB8EC998020EB8C80ED9994ED9598EC97AC20ED9AA8EAB3BC20EBB984ED999CEC84B1ED999420EAB080EB8AA500, 67186), +(3776013982, 1265971, 'koKR', 0x00EAB8B0EC82ACEB8BA8EC9DB420EC8B9CECA084ED9598EB8A9420EB8AA5EBA0A5EC9DB42024733125EC9D9820ECB694EAB08020ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E243F63335B0D0A0D0AEC8B9CECA084EC9E90EC9D9820EAB5ACEC9AB8EAB3BC20ED95B4EAB3A820EAB681EC8898EAB0802024733325EC9D9820ECB694EAB08020ED94BCED95B4EBA5BC2C20ED9598EAB88920EAB5ACEC9AB8EC9D802024733525EC9D9820ECB694EAB08020ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E5D5B5D0000, 67186), +(336222293, 22784, 'koKR', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'koKR', 0x00ED9599EC82B4EC9E90EC9D9820EC9DBCEAB2A9EC9D8420247331ED9A8C20EC82ACEC9AA9ED95A020EB958CEBA788EB8BA420EAB889EC82B4EC9DB420EBB680EC97ACEB90A9EB8B88EB8BA42E0D0A0D0AEAB889EC82B420EC82ACEC9AA920EC8B9C20EB8BA4EC9D8C20ECB9BCEB82A0ED8FADED928DEC9DB420EAB080EC868DED9994EB9098EC96B420ECB694EAB080EBA19C2031ED9A8C20EAB3B5EAB2A9EC9D8420EAB080ED95A9EB8B88EB8BA42E20ECB59CEB8C80202434343536303675ED9A8CEC9D9820EAB3B5EAB2A9EC9D8420EAB080ED95A9EB8B88EB8BA42E20ECB9BCEB82A0ED8FADED928DEC9D9820ECA084ECB2B420ECA780EC868DEC8B9CEAB084EC9D8020EBB380EAB2BDEB9098ECA78020EC958AEC8AB5EB8B88EB8BA42E0D0A0D0AEAB889EC82B4EC9DB42024733225EC9D9820ED9995EBA5A0EBA19C20ED8FADED928DEC9D8420EAB1B0EB9190EB8A9420EC9E90EBA5BC2024733325EC9D9820ED9AA8EC9CA8EBA19C20EBB09CEB8F99EC8B9CED82B5EB8B88EB8BA42E0000, 67186), +(378810315, 666, 'koKR', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'koKR', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'koKR', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'koKR', 0x000000, 67186), +(1181150530, 752881, 'koKR', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'koKR', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'koKR', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'koKR', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'koKR', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'koKR', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'koKR', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'koKR', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'koKR', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'koKR', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'koKR', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'koKR', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'koKR', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'koKR', 0xE1570500E0570500, 67186), +(736158310, 43619, 'koKR', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'koKR', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'koKR', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'koKR', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'koKR', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'koKR', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'koKR', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'koKR', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'koKR', 0x00243F63315BED9D91EC9AB020EB8B88EC9AB0ECA79CEC98A4EC9D9820EC9B90EBA0B95D5BEB93B1EC84A05D20EC82ACEC9AA920EC8B9C20243F63315BEBB688EC9D9820EC88A8EAB2B05D5BED95B4EC98A4EBA684ECB0A8EAB8B020EBB08F20ED9A8CECA08420ED9599EB8BA4EBA6ACECB0A8EAB8B05D7C31EC9DB43BEAB0803B20ECA788ED928DEAB2A9EC9D8420247331ED9A8C20EBB0A9ECB69CED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1244331, 'koKR', 0x00ED94BCEC96B4EB8298EB8A9420EC839DEBAA85EC9D9820EBA788ECA780EBA78920ECB998EC9CA020ED9AA8EAB3BC20EBB09CEB8F9920EC8B9C2024313234343334316131EBAFB8ED84B020EB82B420ECB59CEB8C8020247333EBAA85EC9D9820EBB680EC8381EB8BB9ED959C20EC9584EAB5B0EC9D8420ECB998EC9CA0EB9F89EC9D982024733225EBA78CED81BC20ED9A8CEBB3B5EC8B9CED82B5EB8B88EB8BA42E0000, 67186), +(3776013982, 441845, 'koKR', 0x00243F63325BECB9BCEB82A020EBB09CED86B12C20ED9C98EB9198EB9FACECB998EAB8B02C20EAB088ED80B420EBB09CED86B1EC9D9820EAB3B5EAB2A9EBA0A5EC9DB42024733125EBA78CED81BC2C20ECB998EBAA85ED838020EBB08F20EAB7B9EB8C80ED9994EC9CA8EC9D802024733325EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E5D5BECA793EC9DB4EAB8B0EAB8B0EC9D9820EAB3B5EAB2A9EBA0A5EC9DB42024733425EBA78CED81BC2C20ECB998EBAA85ED838020EBB08F20EAB7B9EB8C80ED9994EC9CA8EC9D802024733525EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E5D0D0A0D0A243F63335BECA793EC9DB4EAB8B0EAB8B020EC82ACEC9AA920EC8B9C20ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024343538373234733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E5D5B5D0000, 67186), +(3205218938, 57068, 'koKR', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00EC9584EC9DB4ED859C20ECA084ECB2B4282573EAB09C29EBA5BC202573EC979020EAB5ACEBA7A4ED9598EC8B9CEAB2A0EC8AB5EB8B88EAB98C3F0003000000, 67186), +(3205218938, 23377, 'koKR', 0x5343454E4152494F5F53544147455F535441545553002564202F202564EB8BA8EAB3840001000000, 67186), +(3205218938, 22841, 'koKR', 0x5343454E4152494F5F5354414745002564EB8BA8EAB3840001000000, 67186), +(3745449290, 8459, 'koKR', 0xEC82ACEB83A5EAB09000EC9584EC8AA4ED8388EBA19CEBA5B420EBB894EB9FACEB939CEC8AA4EC9B90EC9DB420ECB998EBAA85ECA081EC9DB820EC9C84ED9891EC9D8420ECB694ECA081ED9598EB8A9420EB8DB020EB8BB9EC8BA0EC9D9820EB8F84EC9B80EC9DB420ED9584EC9A94ED95A9EB8B88EB8BA42E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'koKR', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'koKR', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'koKR', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'koKR', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'koKR', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'koKR', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'koKR', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'koKR', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'koKR', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'koKR', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'koKR', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'koKR', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'koKR', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'koKR', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'koKR', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'koKR', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'koKR', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'koKR', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'koKR', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'koKR', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'koKR', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'koKR', 0xED99A9ECB29CECA780EBA3A100000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'koKR', 0x9201000022000000, 67186), +(3247720076, 39887, 'koKR', 0x0700000000, 67186), +(3776013982, 243435, 'koKR', 0x00ED94BCEBB680EAB08020EB8F8CEBA19C20EBB380ED95B420246420EB8F99EC958820ECB59CEB8C8020EC839DEBAA85EBA0A5EC9DB42024733125EBA78CED81BC20ECA69DEAB080ED9598EAB3A02C20EBB09BEB8A9420ED94BCED95B4EAB0802024733225EBA78CED81BC20EAB090EC868CED95A9EB8B88EB8BA42E00ECB59CEB8C8020EC839DEBAA85EBA0A52024773125EBA78CED81BC20ECA69DEAB0800D0AEBB09BEB8A9420ED94BCED95B42024773225EBA78CED81BC20EAB090EC868C243F2477343E315B0D0A247734EC9D9820ED94BCED95B420ED9DA1EC88985D5B5D00, 67186), +(3776013982, 221562, 'koKR', 0x00EC9594ED9D9120EBA788EBA0A5EC9CBCEBA19C20ECA08120EB8C80EC8381EC9D8420ECA780EBA9B4EC9790EC849C20EB93A4EC96B4EC98ACEBA6ACEAB3A020EBAAA9EC9D8420ED9C98EAB090EC958420246420EB8F99EC958820EAB8B0ECA088EC8B9CED82B5EB8B88EB8BA42E00EAB8B0ECA088ED95A800, 67186), +(3776013982, 205630, 'koKR', 0xED948CEBA088EC9DB4EC96B420EAB08420ECA084ED88AC20ED8AB9EC84B100EC9585EBA788EC9D9820EBA788EBB295EC9CBCEBA19C20EB8C80EC8381EC9D9820EBAAA9EC9D8420EB8F99EC958820246420EB8F99EC958820ECA09CEC9E90EBA6ACEC979020EBA7A4EB8BACEAB3A02C20ECA780EC868DEC8B9CEAB084EC979020EAB1B8ECB39020246F34EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E20EC8B9CECA084ED9598EB8A9420EB8F99EC958820EC9DB4EB8F99ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0A0D0AEC9DBCEBA6ACEB8BA8EC9D9820EC8690EC9584EAB780EBA5BC20EB8BA4EC8B9C20EC82ACEC9AA9ED9598EBA9B420EB8C80EC8381EC9D84202432303831373352EBAFB8ED84B020EB82B4EC9D9820EC9EA5EC868CEBA19C20ECA791EC96B4EB8D98ECA791EB8B88EB8BA42E00EAB8B0ECA088ED95A80D0A2474ECB488EBA788EB8BA420247734EC9D9820EC9594ED9D9120ED94BCED95B400, 67186), +(3776013982, 198158, 'koKR', 0xED948CEBA088EC9DB4EC96B420EAB08420ECA084ED88AC20ED8AB9EC84B100EC9E90EC8BA0EAB3BC20244131EBAFB8ED84B020EB82B4EC9D9820EC9584EAB5B0EC9DB420ECA689EC8B9C20246420EB8F99EC958820ED88ACEBAA8520EC8381ED839CEAB08020EB90A9EB8B88EB8BA42E20ED9689EB8F99EC9D8420ECB7A8ED9598EBA9B420ED9AA8EAB3BCEAB08020EC82ACEB9DBCECA791EB8B88EB8BA42E00ED88ACEBAA8520EC8381ED839C0D0AED9689EB8F99EC9D8420ECB7A8ED9598EBA9B420ED9AA8EAB3BCEAB08020ECB7A8EC868CEB90A800, 67186), +(3776013982, 108194, 'koKR', 0x00EC9594ED9D9120EBA788EBA0A5EC9CBCEBA19C20ECA08120EB8C80EC8381EC9D8420ECA780EBA9B4EC9790EC849C20EB93A4EC96B4EC98ACEBA6ACEAB3A020EBAAA9EC9D8420ED9C98EAB090EC958420246420EB8F99EC958820EAB8B0ECA088EC8B9CED82B5EB8B88EB8BA42E00EAB8B0ECA088ED95A800, 67186), +(378810315, 1004, 'koKR', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'koKR', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'koKR', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'koKR', 0x077A03000705000047000000, 67186), +(378810315, 999, 'koKR', 0x530D00000509000049000000, 67186), +(378810315, 998, 'koKR', 0x530D00000509000048000000, 67186), +(378810315, 997, 'koKR', 0x530D00000509000047000000, 67186), +(378810315, 996, 'koKR', 0x78B700000409000049000000, 67186), +(378810315, 995, 'koKR', 0x78B700000409000048000000, 67186), +(378810315, 994, 'koKR', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'koKR', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'koKR', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'koKR', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'koKR', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'koKR', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'koKR', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'koKR', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'koKR', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'koKR', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'koKR', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'koKR', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'koKR', 0x989B12000706000006010000, 67186), +(378810315, 980, 'koKR', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'koKR', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'koKR', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'koKR', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'koKR', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'koKR', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'koKR', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'koKR', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'koKR', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'koKR', 0x713507000505000000010000, 67186), +(378810315, 966, 'koKR', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'koKR', 0x550300000805000046000000, 67186), +(378810315, 964, 'koKR', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'koKR', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'koKR', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'koKR', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'koKR', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'koKR', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'koKR', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'koKR', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'koKR', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'koKR', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'koKR', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'koKR', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'koKR', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'koKR', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'koKR', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'koKR', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'koKR', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'koKR', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'koKR', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'koKR', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'koKR', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'koKR', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'koKR', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'koKR', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'koKR', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'koKR', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'koKR', 0x991503000409000045020000, 67186), +(378810315, 933, 'koKR', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'koKR', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'koKR', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'koKR', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'koKR', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'koKR', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'koKR', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'koKR', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'koKR', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'koKR', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'koKR', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'koKR', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'koKR', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'koKR', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'koKR', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'koKR', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'koKR', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'koKR', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'koKR', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'koKR', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'koKR', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'koKR', 0x42E906000309000009010000, 67186), +(378810315, 902, 'koKR', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'koKR', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'koKR', 0x761800000309000009010000, 67186), +(378810315, 899, 'koKR', 0x76180000030900000A010000, 67186), +(378810315, 898, 'koKR', 0x76180000030900000B010000, 67186), +(378810315, 885, 'koKR', 0x78B700000409000047000000, 67186), +(378810315, 879, 'koKR', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'koKR', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'koKR', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'koKR', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'koKR', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'koKR', 0x980100000905000005010000, 67186), +(378810315, 858, 'koKR', 0x980100000905000004010000, 67186), +(378810315, 855, 'koKR', 0x980100000905000003010000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 843, 'koKR', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'koKR', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'koKR', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'koKR', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'koKR', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'koKR', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'koKR', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'koKR', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'koKR', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'koKR', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'koKR', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'koKR', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'koKR', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'koKR', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'koKR', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'koKR', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'koKR', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'koKR', 0x027F05000707000003010000, 67186), +(378810315, 720, 'koKR', 0x36A401000707000048000000, 67186), +(378810315, 719, 'koKR', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'koKR', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'koKR', 0x790200000905000046000000, 67186), +(378810315, 714, 'koKR', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'koKR', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'koKR', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'koKR', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'koKR', 0x68F905000605000067000000, 67186), +(378810315, 691, 'koKR', 0x68F905000605000066000000, 67186), +(378810315, 690, 'koKR', 0x68F905000605000069000000, 67186), +(378810315, 682, 'koKR', 0x15A905000705000041020000, 67186), +(378810315, 679, 'koKR', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'koKR', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'koKR', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'koKR', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'koKR', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'koKR', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'koKR', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'koKR', 0x16600500040800003F000000, 67186), +(378810315, 661, 'koKR', 0x16600500040900003E000000, 67186), +(378810315, 658, 'koKR', 0xE53805000209000040000000, 67186), +(378810315, 657, 'koKR', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'koKR', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'koKR', 0x166005000409000040000000, 67186), +(378810315, 648, 'koKR', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'koKR', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'koKR', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'koKR', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'koKR', 0x8C8D0500010B0000BB050000, 67186), +(378810315, 575, 'koKR', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'koKR', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'koKR', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'koKR', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'koKR', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'koKR', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'koKR', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'koKR', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'koKR', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'koKR', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'koKR', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'koKR', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'koKR', 0x550300000805000041000000, 67186), +(378810315, 449, 'koKR', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'koKR', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'koKR', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'koKR', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'koKR', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'koKR', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'koKR', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'koKR', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'koKR', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'koKR', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'koKR', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'koKR', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'koKR', 0x57A101000505000067000000, 67186), +(378810315, 408, 'koKR', 0x638400000705000069000000, 67186), +(378810315, 407, 'koKR', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'koKR', 0xE40200000505000069000000, 67186), +(378810315, 402, 'koKR', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'koKR', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'koKR', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'koKR', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'koKR', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'koKR', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'koKR', 0xE77701000605000046000000, 67186), +(378810315, 377, 'koKR', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'koKR', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'koKR', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'koKR', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'koKR', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'koKR', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'koKR', 0x400700000409000004010000, 67186), +(378810315, 353, 'koKR', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'koKR', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'koKR', 0xE60600000605000005010000, 67186), +(378810315, 349, 'koKR', 0xE60600000605000004010000, 67186), +(378810315, 348, 'koKR', 0xE60600000605000003010000, 67186), +(378810315, 346, 'koKR', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'koKR', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'koKR', 0x301E03000509000006010000, 67186), +(378810315, 342, 'koKR', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'koKR', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'koKR', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'koKR', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'koKR', 0x66D401000505000009010000, 67186), +(378810315, 332, 'koKR', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'koKR', 0x981900000605000048000000, 67186), +(378810315, 329, 'koKR', 0x981900000605000049000000, 67186), +(378810315, 224, 'koKR', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'koKR', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'koKR', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'koKR', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'koKR', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'koKR', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'koKR', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'koKR', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'koKR', 0x242303000409000041020000, 67186), +(378810315, 205, 'koKR', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'koKR', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'koKR', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'koKR', 0x242303000409000045020000, 67186), +(378810315, 189, 'koKR', 0x743C03000805000045020000, 67186), +(378810315, 187, 'koKR', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'koKR', 0x36A401000707000049000000, 67186), +(378810315, 176, 'koKR', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'koKR', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'koKR', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'koKR', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'koKR', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'koKR', 0x36A401000707000047000000, 67186), +(378810315, 159, 'koKR', 0x981900000605000047000000, 67186), +(378810315, 158, 'koKR', 0x533301000405000066000000, 67186), +(378810315, 156, 'koKR', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'koKR', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'koKR', 0xA09001000607000066000000, 67186), +(378810315, 152, 'koKR', 0x82020000010B000046000000, 67186), +(378810315, 150, 'koKR', 0x50350300050B000046000000, 67186), +(378810315, 149, 'koKR', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'koKR', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'koKR', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'koKR', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'koKR', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'koKR', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'koKR', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'koKR', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'koKR', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'koKR', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'koKR', 0x62040000060500000B010000, 67186), +(378810315, 121, 'koKR', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'koKR', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'koKR', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'koKR', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'koKR', 0x45990100010B000009010000, 67186), +(378810315, 113, 'koKR', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'koKR', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'koKR', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'koKR', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'koKR', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'koKR', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'koKR', 0x491E03000907000007010000, 67186), +(378810315, 101, 'koKR', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'koKR', 0x301E03000509000008010000, 67186), +(378810315, 97, 'koKR', 0x301E03000509000007010000, 67186), +(378810315, 96, 'koKR', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'koKR', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'koKR', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'koKR', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'koKR', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'koKR', 0x400700000409000005010000, 67186), +(378810315, 83, 'koKR', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'koKR', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'koKR', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'koKR', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'koKR', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'koKR', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'koKR', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'koKR', 0xB63500000707000004010000, 67186), +(378810315, 70, 'koKR', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'koKR', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'koKR', 0x400700000409000003010000, 67186), +(378810315, 63, 'koKR', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'koKR', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'koKR', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'koKR', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'koKR', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'koKR', 0x82020000010B000042000000, 67186), +(378810315, 45, 'koKR', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'koKR', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'koKR', 0x82020000010B000041000000, 67186), +(378810315, 39, 'koKR', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'koKR', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'koKR', 0x790200000905000041000000, 67186), +(378810315, 35, 'koKR', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'koKR', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'koKR', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'koKR', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'koKR', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'koKR', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'koKR', 0xD39603000805000040000000, 67186), +(378810315, 21, 'koKR', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'koKR', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'koKR', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'koKR', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'koKR', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'koKR', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'koKR', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'koKR', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'koKR', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'koKR', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'koKR', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'koKR', 0xEB8F84EBA788EB8298EBA5B420EC9D98EC8B9DEC88A0EC82AC00000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931373931773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291859, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931373931773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291858, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931373931773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291857, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931373931773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291856, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931373931773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291855, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931373931773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291854, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931383331773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291853, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931383331773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291852, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931383331773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291851, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931383331773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291850, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931383331773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291849, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EBA5BC20ECB59CEB8C802024733125EBA78CED81BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A5EAB3BC202431323931383331773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291848, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291847, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291846, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291845, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291844, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291843, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291842, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291841, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291840, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291839, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291838, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291837, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291831, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1291828, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291827, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291826, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291825, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291824, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291822, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1291791, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1290929, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1290926, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1290925, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1289221, 'koKR', 0x00EC8381EC9E90EBA5BC20EC97B4EC96B420EB82B4EC9AA9EBACBCEC9D8420ED9995EC9DB8ED95A9EB8B88EB8BA4210000, 67186), +(3776013982, 1286537, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520EBB08F20EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1286536, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1286535, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1282100, 'koKR', 0x000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1282018, 'koKR', 0x00EC9589EC9D8420EC9D98EC9E90EBA5BC20EC868CED9998ED95A9EB8B88EB8BA42100EC98A4EB9DBC20ECB7A8EC868C20EC8B9C20EAB8B420EC9D98EC9E9020EC868CED999820ED95B4ECA09C00, 67186), +(3776013982, 1277461, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1269922, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1269921, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1269920, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520ED9A8CEBB3B500, 67186), +(3776013982, 1269919, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1269918, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEBA38CEBA5BC20EBA788EC8B9CEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024773125EC9D9820EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1269917, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520EBB08F20EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1269916, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520EBB08F20EBA788EB829820ED9A8CEBB3B500, 67186), +(3776013982, 1232065, 'koKR', 0x002464EC979020EAB1B8ECB3902031ECB488EBA788EB8BA420ECB59CEB8C8020EC839DEBAA85EBA0A5EAB3BC20EBA788EB8298EC9D982024733125EBA5BC20ED9A8CEBB3B5ED95A9EB8B88EB8BA42E20EC9D8CEC8B9DEC9D8420EBA8B9EC9CBCEBA0A4EBA9B420EC9589EC958420EC9E88EC96B4EC95BC20ED95A9EB8B88EB8BA42E0031ECB488EBA788EB8BA42024733125EC9D9820EC839DEBAA85EBA0A520EBB08F20EBA788EB829820ED9A8CEBB3B500, 67186), +(2948698321, 8059, 'koKR', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'koKR', 0x000000, 67186), +(3898252553, 11633, 'koKR', 0xE28200001E490300, 67186), +(3898252553, 11632, 'koKR', 0xE18200001E490300, 67186), +(3898252553, 11631, 'koKR', 0xE08200001E490300, 67186), +(3898252553, 11630, 'koKR', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'koKR', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'koKR', 0x00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024733325EBA78CED81BC20ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E0D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247334EBAA85EAB98CECA78020EBB3B4EC9CA0ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0AEC88ADEBB0B0EC9E90EAB08020247335EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB080ED95A9EB8B88EB8BA42E00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024773325EBA78CED81BC20ECA69DEAB080EC8B9CED82B40D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247734EBAA85EAB98CECA78020EBB3B4EC9CA020EAB080EB8AA50D0AEC88ADEBB0B0EC9E90EAB08020247735EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB08000, 67186), +(3776013982, 1262377, 'koKR', 0x00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024733325EBA78CED81BC20ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E0D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247334EBAA85EAB98CECA78020EBB3B4EC9CA0ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0AEC88ADEBB0B0EC9E90EAB08020247335EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB080ED95A9EB8B88EB8BA42E00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024773325EBA78CED81BC20ECA69DEAB080EC8B9CED82B40D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247734EBAA85EAB98CECA78020EBB3B4EC9CA020EAB080EB8AA50D0AEC88ADEBB0B0EC9E90EAB08020247735EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB08000, 67186), +(3776013982, 1262376, 'koKR', 0x00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024733325EBA78CED81BC20ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E0D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247334EBAA85EAB98CECA78020EBB3B4EC9CA0ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0AEC88ADEBB0B0EC9E90EAB08020247335EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB080ED95A9EB8B88EB8BA42E00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024773325EBA78CED81BC20ECA69DEAB080EC8B9CED82B40D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247734EBAA85EAB98CECA78020EBB3B4EC9CA020EAB080EB8AA50D0AEC88ADEBB0B0EC9E90EAB08020247735EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB08000, 67186), +(3776013982, 1262365, 'koKR', 0x00EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282473352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B4EBA5BC20EC9E85ED9E88EB8F84EBA19D20ED95A9EB8B88EB8BA42E0D0A0D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F99ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282477352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024773325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B40D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F990D0A0D0AEC84B1EC8AA4EB9FACEC9AB420ECA3BDEC9D8CEC9D9820EBAA85EBA0B9EC9D8020EBA7A4EC9AB020EB82AEEC9D8020ED9995EBA5A0EBA19C20EC9AB0EB9190EBA8B8EBA6ACEAB08020EC9584EB8B8C20ECA081EC9D8420ECB298ED98950D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'koKR', 0x00EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282473352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B4EBA5BC20EC9E85ED9E88EB8F84EBA19D20ED95A9EB8B88EB8BA42E0D0A0D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F99ED95A9EB8B88EB8BA42E0D0A0D0AEC84B1EC8AA4EB9FACEC9AB420ECA3BDEC9D8CEC9D9820EBAA85EBA0B9EC9D8020EBA7A4EC9AB020EB82AEEC9D8020ED9995EBA5A0EBA19C20EC9AB0EB9190EBA8B8EBA6ACEAB08020EC9584EB8B8C20ECA081EC9D8420ECB298ED9895ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282477352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024773325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B40D0A0D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F990D0A0D0AEC84B1EC8AA4EB9FACEC9AB420ECA3BDEC9D8CEC9D9820EBAA85EBA0B9EC9D8020EBA7A4EC9AB020EB82AEEC9D8020ED9995EBA5A0EBA19C20EC9AB0EB9190EBA8B8EBA6ACEAB08020EC9584EB8B8C20ECA081EC9D8420ECB298ED98950D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'koKR', 0x00EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282473352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B4EBA5BC20EC9E85ED9E88EB8F84EBA19D20ED95A9EB8B88EB8BA42E0D0A0D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F99ED95A9EB8B88EB8BA42E0D0A0D0AEC84B1EC8AA4EB9FACEC9AB420ECA3BDEC9D8CEC9D9820EBAA85EBA0B9EC9D8020EBA7A4EC9AB020EB82AEEC9D8020ED9995EBA5A0EBA19C20EC9AB0EB9190EBA8B8EBA6ACEAB08020EC9584EB8B8C20ECA081EC9D8420ECB298ED9895ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282477352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024773325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B40D0A0D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F990D0A0D0AEC84B1EC8AA4EB9FACEC9AB420ECA3BDEC9D8CEC9D9820EBAA85EBA0B9EC9D8020EBA7A4EC9AB020EB82AEEC9D8020ED9995EBA5A0EBA19C20EC9AB0EB9190EBA8B8EBA6ACEAB08020EC9584EB8B8C20ECA081EC9D8420ECB298ED98950D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'koKR', 0x00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024733325EBA78CED81BC20ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E0D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247334EBAA85EAB98CECA78020EBB3B4EC9CA0ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0D0AEC88ADEBB0B0EC9E90EAB08020247335EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB080ED95A9EB8B88EB8BA42E00EC9E98EBAABB20EB8693EC9DB820ECA784EAB780ED9288EC9D8420EC97B4EBA9B420EC9888EC868DEB909C20ECA790EC9DB420EC868CED9998EB9098EBA9B02C20ECA084ED88AC20ECA49120EC8B9CECA084EC9E90EBA5BC20EC88ADEBB0B0ED95B420247072697C31EC9D843BEBA5BC3B2024773325EBA78CED81BC20ECA69DEAB080EC8B9CED82B40D0A0D0AEC9888EC868DEB909C20ECA790EC9D8020ED959C20EBB288EC979020ECB59CEB8C8020247734EBAA85EAB98CECA78020EBB3B4EC9CA020EAB080EB8AA50D0AEC88ADEBB0B0EC9E90EAB08020247735EBAA8520EC9DB4EC838120EBAAA8EC9DB4EBA9B420ECA79020ED9598EB8298EB8BB920ECA69DEAB080ED9598EB8A9420247072697C31EC9DB43BEAB0803B20ECA69DEAB08000, 67186), +(3776013982, 1248927, 'koKR', 0x00EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282473352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024733325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B4EBA5BC20EC9E85ED9E88EB8F84EBA19D20ED95A9EB8B88EB8BA42E0D0A0D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F99ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300EAB5ACEBA08120EB8F99EBA38CEAB0802024407370656C6C6E616D653132353136303320EC82ACEC9AA920EC8B9C20ED8C8CED8BB0EC9B90EC9790EAB28C20EC8BA0EC84B1ED959C20EBAA85EBA0B9EC9DB420EBB680EC97ACEB9098EC96B42C20ED95B4EBA19CEC9AB420ECA3BCEBACB820EBB08F20EB8AA5EBA0A520EC82ACEC9AA920EC8B9C20247B282477352F31303030292A3130307D2E3125EC9D9820ED9995EBA5A0EBA19C20EBAA85EBA0B920ED9598EB8298EB8BB920EB8C80EC838120ECB59CEB8C8020EC839DEBAA85EBA0A5EC9D982024773325EC979020ED95B4EB8BB9ED9598EB8A9420ECB694EAB08020EC8BA0EC84B120ED94BCED95B40D0AEAB08120EB8C80EC8381EBB384EBA19C20243132363133323470726F63636F6F6C646F776EECB488EC979020ED959C20EBB288EC94A9EBA78C20EBB09CEB8F990D0A0D0AEC84B1EC8AA4EB9FACEC9AB420ECA3BDEC9D8CEC9D9820EBAA85EBA0B9EC9D8020EBA7A4EC9AB020EB82AEEC9D8020ED9995EBA5A0EBA19C20EC9AB0EB9190EBA8B8EBA6ACEAB08020EC9584EB8B8C20ECA081EC9D8420ECB298ED98950D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'koKR', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'koKR', 0x00ECA084EBB0A920ECA780EC97AD20EB82B420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED9598EC97AC2C20EBB09CEAB2AC20EC8381ED839CEBA19C20EBA78CEB93ADEB8B88EB8BA42E0000, 67186), +(3776013982, 1256862, 'koKR', 0x00ED95B4EB8BB920ECA780EC97AD20EB82B420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED9598EC97AC2C20EBB09CEAB2AC20EC8381ED839CEBA19C20EBA78CEB93ADEB8B88EB8BA42E0000, 67186), +(3776013982, 1256861, 'koKR', 0x00EB8C80EC838120ECA780ECA090EC9CBCEBA19C20EB8F84EC95BDED95B42C20ECB6A9EAB2A920ECA780ECA090EC979020EC9E88EB8A9420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1256860, 'koKR', 0x002464EC979020EAB1B8ECB39020ECA084EBB0A9EC979020EC9E88EB8A9420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED9598EC97AC2C20EBB09CEAB2AC20EC8381ED839CEBA19C20EBA78CEB93ADEB8B88EB8BA42E0000, 67186), +(3776013982, 1256010, 'koKR', 0x00ED95B4EB8BB920ECA780EC97AD20EB82B420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED9598EC97AC2C20EBB09CEAB2AC20EC8381ED839CEBA19C20EBA78CEB93ADEB8B88EB8BA42E0000, 67186), +(1408785804, 249319, 'koKR', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'koKR', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'koKR', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'koKR', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'koKR', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'koKR', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'koKR', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'koKR', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'koKR', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'koKR', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'koKR', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'koKR', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'koKR', 0x000000, 67186), +(3776013982, 1295497, 'koKR', 0x000000, 67186), +(3776013982, 1295486, 'koKR', 0x000000, 67186), +(3776013982, 464291, 'koKR', 0x000000, 67186), +(3776013982, 1243616, 'koKR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243615, 'koKR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'koKR', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'koKR', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'koKR', 0x00EB9494ECA0A0ED8AB8EBA6ACEC9AB0EC8AA4EAB08020247332EAB09C20ECA780ECA090EC9CBCEBA19C20ED8A95EAB8B0EB8A9420EBB688EC9588ECA095ED959C20EAB3B5ED978820EBA788EBA0A5EC9D8420EBB09CEC82ACED95A9EB8B88EB8BA42E20EBA788EBA0A5EC9DB420ECA780EBA9B4EC979020ECA091ECB489ED9598EBA9B420ED8FADEBB09CED95B420ECB6A9EAB2A920ECA780ECA0902024313231353135374131EBAFB8ED84B020EB82B4EC9D9820EBAAA8EB93A020ED948CEBA088EC9DB4EC96B4EC9790EAB28C2024313231353135377331EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E20ED95B4EB8BB920ECA780EC97ADEC979020ED948CEBA088EC9DB4EC96B4EAB08020EC9786EB8BA4EBA9B42024407370656C6C6E616D65313231353136317C31EC9DB43BEAB0803B20EBB09CEB8F99EB90A9EB8B88EB8BA42E0D0A0D0A247332ED9A8C20ECB6A9EB8F8C20ED9B84EC9790EB8A9420EBA788EBA0A5EC9DB420ED959C20EBB28820EB8D9420ED8A95EAB8B0EBA9B02024407370656C6C6E616D65313231353933377C31EC9DB43BEAB0803B20EB90A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1243588, 'koKR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'koKR', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'koKR', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'koKR', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'koKR', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'koKR', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'koKR', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EC8BACEC97B0EC9EA0EC8898EBB68020ED88ACEB8298ED82B77C6E7C634646464644323030ECA780EC97AD3A207C72ECA484EC9584EBA78C7C6E7C634646464644323030EAB080EAB2A93A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EC8BACEC97B0EC9EA0EC8898EBB68020ED88ACEB8298ED82B77C6E7C634646464644323030ECA780EC97AD3A207C72ECA484EC9584EBA78C7C6E7C634646464644323030EAB080EAB2A93A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EC8BACEC97B0EC9EA0EC8898EBB68020ED88ACEB8298ED82B77C6E7C634646464644323030ECA780EC97AD3A207C72ECA484EC9584EBA78C7C6E7C634646464644323030EAB080EAB2A93A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EC8BACEC97B0EC9EA0EC8898EBB68020ED88ACEB8298ED82B77C6E7C634646464644323030ECA780EC97AD3A207C72ECA484EC9584EBA78C7C6E7C634646464644323030EAB080EAB2A93A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EC8BACEC97B0EC9EA0EC8898EBB68020ED88ACEB8298ED82B77C6E7C634646464644323030ECA780EC97AD3A207C72ECA484EC9584EBA78C7C6E7C634646464644323030EAB080EAB2A93A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EC8BACEC97B0EC9EA0EC8898EBB68020ED88ACEB8298ED82B77C6E7C634646464644323030ECA780EC97AD3A207C72ECA484EC9584EBA78C7C6E7C634646464644323030EAB080EAB2A93A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'koKR', 0x00ED9884EC9EAC20EB8C80EC8381EC9D8420ECA095ED9995ED9598EAB28C2032EBB28820EBB2A0EC96B4EB8385EB8B88EB8BA42E20EAB3B5EAB2A9ED95A020EB958CEBA788EB8BA42024313235373733367331EC9D9820EBACBCEBA6AC20ED94BCED95B4EBA5BC20EC9E85ED9E88EBA9B02C20EC82ACECA095EAB1B0EBA6AC20EB82B420EBAAA8EB93A020ECA081EC9790EAB28C2024313235373734356420EB8F99EC95882024313235373734357431ECB488EBA788EB8BA42024313235373734357331EC9D9820ECB694EAB08020EC8BA0EC84B120ED94BCED95B4EBA5BC20EC9E85ED9E88EAB3A020ECA780EBA9B4EC97902024407370656C6C6E616D65313235353331307C31EC9D843BEBA5BC3B20EC8388EAB981EB8B88EB8BA42E0000, 67186), +(4033975491, 619581, 'koKR', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'koKR', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'koKR', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'koKR', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'koKR', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'koKR', 0xEBB689EC9D80EC838900243F63315BED8C8CEC97B4EBA19C20ED94BCED95B4EBA5BC20EC9E85ED9E88EBA9B420ECA081EC9790EAB28C20EAB1B8EBA6B020EBB688EC9D9820EC88A8EAB2B020ECA780EC868DEC8B9CEAB084EC9D9820247B2473322F313030307D2E31ECB488EBA5BC20EC868CEBAAA8ED9598EC97AC2C20ED8FADEBB09CEC9D8420EC9DBCEC9CBCECBC9C20EC868CEBAAA8EB9F89EC9D982024733425EC979020ED95B4EB8BB9ED9598EB8A9420ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0D0A0D0AEAB8B0EC97BCEC9CBCEBA19C20ED94BCED95B4EBA5BC20EC9E85ED9E88EBA9B420ECA081EC9790EAB28C20EAB1B8EBA6B020EBB688EC9D9820EC88A8EAB2B020ECA780EC868DEC8B9CEAB084EC9D9820247B2473332F313030307DECB488EBA5BC20EC868CEBAAA8ED9598EC97AC2C20ED8FADEBB09CEC9D8420EC9DBCEC9CBCECBC9C20EC868CEBAAA8EB9F89EC9D982024733725EC979020ED95B4EB8BB9ED9598EB8A9420ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E5D5BEC8BA0EBA19DEC9D9820ED9288EC9CBCEBA19C20ECB998EC9CA0ED9598EBA9B420EC9584EAB5B0EC9790EAB28C20EBB680EC97ACEB909C20EABF88EC9D9820EC88A8EAB2B020ECA780EC868DEC8B9CEAB084EC9D9820247B2473352F313030307DECB488EBA5BC20EC868CEBAAA8ED9598EC97AC2C20ED8FADEBB09CEC9D8420EC9DBCEC9CBCECBC9C20EC868CEBAAA8EB9F89EC9D982024733625EC979020ED95B4EB8BB9ED9598EB8A9420EC839DEBAA85EBA0A5EC9D8420ED9A8CEBB3B5EC8B9CED82B5EB8B88EB8BA42E0D0A0D0AEC9790EBA994EB9E84EB939C20EABD83EC9CBCEBA19C20ECB998EC9CA0ED9598EBA9B420EC9584EAB5B0EC9790EAB28C20EBB680EC97ACEB909C20EABF88EC9D9820EC88A8EAB2B020ECA780EC868DEC8B9CEAB084EC9D9820247B2473312F313030307DECB488EBA5BC20EC868CEBAAA8ED9598EC97AC2C20ED8FADEBB09CEC9D8420EC9DBCEC9CBCECBC9C20EC868CEBAAA8EB9F89EC9D982024733625EC979020ED95B4EB8BB9ED9598EB8A9420EC839DEBAA85EBA0A5EC9D8420ED9A8CEBB3B5EC8B9CED82B5EB8B88EB8BA42E5D0000, 67186), +(4033975491, 619554, 'koKR', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'koKR', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'koKR', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'koKR', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'koKR', 0x000000, 67186), +(2151089334, 7976, 'koKR', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'koKR', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'koKR', 0xEC84ACEB9CA9ED959C20EAB3B5ED9788EBB0A9EB9E91EC9E9000000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'koKR', 0x0024407370656C6C6E616D65313234393630397C31EC9D843BEBA5BC3B20EC9E98EBAABBEB909C20EC889CEC849CEBA19C20ECA081ECA491EC8B9CED82A4EBA9B420EC9AB8EBA6ACEB8A9420EC868CEC9D8CEC9DB420EBB09CEC839DED95B420EB8C80EC8381EC9DB420246420EB8F99EC958820ECB9A8EBACB520EC8381ED839CEAB08020EB90A9EB8B88EB8BA42E2000ECB9A8EBACB520ECA49100, 67186), +(3247720076, 42321, 'koKR', 0x0000000000, 67186), +(4033975491, 619506, 'koKR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'koKR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'koKR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'koKR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'koKR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'koKR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'koKR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'koKR', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'koKR', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'koKR', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'koKR', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'koKR', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'koKR', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'koKR', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'koKR', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'koKR', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'koKR', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'koKR', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'koKR', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'koKR', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'koKR', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'koKR', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'koKR', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'koKR', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'koKR', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'koKR', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'koKR', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'koKR', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'koKR', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'koKR', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'koKR', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'koKR', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'koKR', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'koKR', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'koKR', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'koKR', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'koKR', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'koKR', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'koKR', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'koKR', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'koKR', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'koKR', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'koKR', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'koKR', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'koKR', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'koKR', 0xEC9D98EC8B9D20ECA780ECA0903A20EBB984EC8898EAB080EC8B9C20ECA780ECA09000ECA3BCEBB380EC9790EC849C20EC9C84ED9798ED959C20EC9D98EC8B9DEC9DB420EAB1B0ED9689EB9098EAB3A020EC9E88EC8AB5EB8B88EB8BA42E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'koKR', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'koKR', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'koKR', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020EBB984ECA08420EBA788EBA0A5EC9D8420EBB0A9ECB69CED95B420244131EBAFB8ED84B020EB82B4EC9D9820ED948CEBA088EC9DB4EC96B4EC9790EAB28C20247331EC9D9820EBB984ECA08420ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0000, 67186), +(3776013982, 1295237, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020EBB984ECA08420EBA788EBA0A5EC9D8420EBB0A9ECB69CED95B420244131EBAFB8ED84B020EB82B4EC9D9820ED948CEBA088EC9DB4EC96B4EC9790EAB28C20247331EC9D9820EBB984ECA08420ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0000, 67186), +(600565378, 632510, 'koKR', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'koKR', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'koKR', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'koKR', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'koKR', 0x00EB8F84EC82B4EC979020ECB0A9EC8898ED95A020ECA480EBB984EBA5BC20ED95A9EB8B88EB8BA42E20EC9DB420ED9AA8EAB3BCEAB08020ED999CEC84B1ED9994EB909C20EB8F99EC958820EB8BA4EC9D8C20ED959CEBB0A420EBACB4EB9190ECA78820EC82ACEC9AA920EC8B9C20EC9A94EBA6ACEC979020EC82ACEC9AA9ED95A020EC889820EC9E88EB8A9420EAB3A0EAB8B0EBA5BC20EBB098EB939CEC8B9C20ED9A8DEB939DED95A9EB8B88EB8BA42E00EB8BA4EC9D8CEC979020EBACB4EB9190ECA788ED9598EB8A9420ED959CEBB0A420EC839DEBAA85ECB2B420EB8F84ECB69520ECA480EBB98420EC9984EBA38C0D0AEBB098EB939CEC8B9C20EC9A94EBA6ACEC979020EC82ACEC9AA920EAB080EB8AA5ED959C20EAB3A0EAB8B020ED9A8DEB939D00, 67186), +(3776013982, 442615, 'koKR', 0x00EB8F84EC82B4EC979020ECB0A9EC8898ED95A020ECA480EBB984EBA5BC20ED95A9EB8B88EB8BA42E20EC9DB420ED9AA8EAB3BCEAB08020ED999CEC84B1ED9994EB909C20EB8F99EC958820EB8BA4EC9D8C20ECB9B4ECA68820EC958CEAB080EBA5B420EBACB4EB9190ECA78820EC82ACEC9AA920EC8B9C20EC9A94EBA6ACEC979020EC82ACEC9AA9ED95A020EC889820EC9E88EB8A9420EAB3A0EAB8B0EBA5BC20EBB098EB939CEC8B9C20ED9A8DEB939DED95A9EB8B88EB8BA42E00EB8BA4EC9D8CEC979020EBACB4EB9190ECA788ED9598EB8A9420ECB9B4ECA68820EC958CEAB080EBA5B420EC839DEBAA85ECB2B420EB8F84ECB69520ECA480EBB98420EC9984EBA38C0D0AEBB098EB939CEC8B9C20EC9A94EBA6ACEC979020EC82ACEC9AA920EAB080EB8AA5ED959C20EAB3A0EAB8B020ED9A8DEB939D00, 67186), +(3386943305, 23675, 'koKR', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'koKR', 0xEC9585EBA788EC9D9820EAB480EBACB800000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'koKR', 0x00EC9C84EC838120EC9EA0EC8898EBA5BC20ECA285EBA38CED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1241218, 'koKR', 0x000000, 67186), +(2575642838, 749, 'koKR', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'koKR', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'koKR', 0x00EAB095EBA0A5ED959C20ECA081EC9D9820EAB8B0EC9AB4EC9CBCEBA19C20EAB095ED9994EB9098EC96B420EBB09BEB8A9420EBAAA8EB93A020ED94BCED95B4EC9D982024773125EBA5BC20EC8B9CECA084EC9E90EC9790EAB28C20EBB098EC82ACED95A9EB8B88EB8BA42E00EAB095EBA0A5ED959C20ECA081EC9D9820EAB8B0EC9AB4EC9CBCEBA19C20EAB095ED9994EB9098EC96B420EBB09BEB8A9420EBAAA8EB93A020ED94BCED95B4EC9D982024773125EBA5BC20EC8B9CECA084EC9E90EC9790EAB28C20EBB098EC82AC0D0A0D0AEAB095ED9994EC9E903A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120EBB3B4EB9DBCEC8B9CEC9AB0EC8AA45D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220EBAAB0EB9DBDED959C20EC999520EC82B4EB9DBCEB8BA4EBA5B45D00, 67186), +(3425193231, 546424, 'koKR', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'koKR', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'koKR', 0x000000, 67186), +(600565378, 664416, 'koKR', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'koKR', 0x00ECA084EBACB820EAB8B0EC88A020EB8F84EAB5ACEC979020EC9881EAB5ACECA081EC9CBCEBA19C20EC8BA0EB8F84EBA088EC9DB4EC9D9820EB8AA5EC8899ED95A820EBA788EBB295EC9D8420EBB680EC97ACED95B420EB8AA5EC8899ED95A8EC9D842024656331EBA78CED81BC20ECA69DEAB080EC8B9CED82B5EB8B88EB8BA42E20246563697820EBA088EBB2A8EC9D8420ECB488EAB3BCED9598EB8A9420EC9584EC9DB4ED859CEC9790EB8A9420EC82ACEC9AA9ED95A020EC889820EC9786EC8AB5EB8B88EB8BA42E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523AED8388EB9DBCEC8B9CEC9588EC9D9820EC9EACEB8AA5202D20ECBFA0EC9798ED8388EB9DBCEC8AA420ED9288ECA7887C52200000, 67186), +(261693969, 93049, 'koKR', 0xFFFFFFFFFFFFFFFFEC8899ECA09C20EB8F95EAB8B00000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'koKR', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'koKR', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'koKR', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'koKR', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'koKR', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'koKR', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'koKR', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'koKR', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'koKR', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'koKR', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'koKR', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'koKR', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'koKR', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'koKR', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'koKR', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'koKR', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'koKR', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'koKR', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'koKR', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'koKR', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'koKR', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'koKR', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'koKR', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'koKR', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'koKR', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'koKR', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'koKR', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'koKR', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'koKR', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'koKR', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'koKR', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'koKR', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'koKR', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'koKR', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'koKR', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'koKR', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'koKR', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'koKR', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'koKR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'koKR', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'koKR', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'koKR', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'koKR', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'koKR', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'koKR', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'koKR', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'koKR', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'koKR', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'koKR', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'koKR', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'koKR', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'koKR', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'koKR', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'koKR', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'koKR', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'koKR', 0x00EB829AEC8BAFEB8C80EBA5BC20ECB0A9EC9AA9ED9598EAB3A020EBACBCEAB080EC9790EC849C20EC82ACEC9AA9ED9598EBA9B420EB829AEC8B9CEBA5BC20EC8B9CEC9E91ED95A9EB8B88EB8BA42E20ECB08CEAB08020ED9D94EB93A4EBA6B420EB958C20EC98A4EBA5B8ECAABD20ED81B4EBA6ADEC9D8420ED9598EC97AC20EBACBCEAB3A0EAB8B0EBA5BC20EB829AEC9D8420EC889820EC9E88EC8AB5EB8B88EB8BA42E20EC8899EBA0A8EB8F84EAB08020EB8692EC9CBCEBA9B420EAB3A0EBA088EBB2A820ECA780EC97ADEC9790EC849C20EBACBCEAB3A0EAB8B0EBA5BC20EB829AEC9D8420ED9995EBA5A0EC9DB420EB8692EC9584ECA791EB8B88EB8BA42E0000, 67186), +(3776013982, 1286820, 'koKR', 0x000000, 67186), +(3776013982, 1286703, 'koKR', 0x00EB829AEC8BAFEB8C80EBA5BC20ECB0A9EC9AA9ED9598EAB3A020EBACBCEAB080EC9790EC849C20EC82ACEC9AA9ED9598EBA9B420EB829AEC8B9CEBA5BC20EC8B9CEC9E91ED95A9EB8B88EB8BA42E20ECB08CEAB08020ED9D94EB93A4EBA6B420EB958C20EC98A4EBA5B8ECAABD20ED81B4EBA6ADEC9D8420ED9598EC97AC20EBACBCEAB3A0EAB8B0EBA5BC20EB829AEC9D8420EC889820EC9E88EC8AB5EB8B88EB8BA42E20EC8899EBA0A8EB8F84EAB08020EB8692EC9CBCEBA9B420EAB3A0EBA088EBB2A820ECA780EC97ADEC9790EC849C20EBACBCEAB3A0EAB8B0EBA5BC20EB829AEC9D8420ED9995EBA5A0EC9DB420EB8692EC9584ECA791EB8B88EB8BA42E0000, 67186), +(3776013982, 1253159, 'koKR', 0x000000, 67186), +(3359787322, 29615, 'koKR', 0xAF730000, 67186), +(3031818311, 9590, 'koKR', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'koKR', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'koKR', 0xE87A0000, 67186), +(3776013982, 1277169, 'koKR', 0x00EC9881EC9B8520EBB08F20EC8BA0ED999420EC97ACEBAA85EBACB8EC9EA5203130EAB09CEBA5BC20ED9A8DEB939DED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1243683, 'koKR', 0x00EC8BA0ED999420EC97ACEBAA85EBACB8EC9EA5203130EAB09CEBA5BC20ED9A8DEB939DED95A9EB8B88EB8BA42E0000, 67186), +(3776013982, 190784, 'koKR', 0x00EAB5B0EBA788EC979020EC98ACEB9DBCED838020243232313838336420EB8F99EC958820EC9DB4EB8F9920EC868DEB8F84EAB0802024323231383833733425EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E20EC8BA4EB82B420EB9890EB8A9420ECA084ED88AC20ECA491EC9790EB8F8420EC82ACEC9AA9ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0000, 67186), +(4033975491, 619076, 'koKR', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'koKR', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'koKR', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'koKR', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'koKR', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'koKR', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'koKR', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'koKR', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'koKR', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'koKR', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'koKR', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'koKR', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'koKR', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'koKR', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'koKR', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'koKR', 0x05000000F1F304003F0D0400, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1181150530, 750840, 'koKR', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'koKR', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'koKR', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'koKR', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'koKR', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'koKR', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'koKR', 0x1100E18B0000, 67186), +(184881520, 18405, 'koKR', 0x0F00FC890000, 67186), +(184881520, 18404, 'koKR', 0x0E00FC890000, 67186), +(184881520, 18403, 'koKR', 0xDC00F9890000, 67186), +(184881520, 18245, 'koKR', 0x1100F9890000, 67186), +(184881520, 18244, 'koKR', 0x0F00F9890000, 67186), +(2575642838, 750, 'koKR', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'koKR', 0x000000, 67186), +(3776013982, 1266413, 'koKR', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'koKR', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'koKR', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'koKR', 0xEBB984EBB08020EC9EACEBA38C00F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'koKR', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'koKR', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'koKR', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'koKR', 0x00ECA095EBB080ED9598EAB3A020EAB095EBA0A5ED959C20EAB3B5EAB2A9EC9D8420EC97B0EB8BACEC958420EB82A0EBA0A420EB8C80EC8381EC9790EAB28CEB8A9420247B2434343038383473312B2434343038383673312B2434343038383873317DEC9D9820ED94BCED95B4EBA5BC2C20243434303838384131EBAFB8ED84B020EB82B4EC9D9820ECA081EC9790EAB28CEB8A9420243434303838387331EC9D9820ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E20247331EBAA85EC9D8420ECB488EAB3BCED9598EB8A9420EB8C80EC8381EC9790EAB28CEB8A9420EAB090EC868CEB909C20ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0D0A0D0AEC8784ED8C8CEC979020ECA095EC8BA0EC9D8420ECA791ECA491ED9598EB8A9420EB8F99EC958820EBB09BEB8A9420ED94BCED95B4EAB0802024733425EBA78CED81BC20EAB090EC868CED9598EAB3A020EAB8B0ECA0882C20EBB080ECB390EB82B4EAB8B02C20EAB095ECA09C20EC9DB4EB8F9920ED9AA8EAB3BCEC979020EBA9B4EC97ADEC9DB420EB90A9EB8B88EB8BA42E0D0A0D0AEC8784ED8C8CEC979020ECA095EC8BA0EC9D8420ECA791ECA491ED9598EB8A9420EB8F99EC958820EBB0A9ED8CA820EBA789EAB8B0EC998020EBACB4EAB8B020EBA789EAB8B02C20ED9A8CED94BCEAB08020EAB080EB8AA5ED9598EBA9B020ED8AB9ECA09520EBB0A9EC96B420EB8AA5EBA0A5EC9D8420EC82ACEC9AA9ED95A020EC889820EC9E88EC8AB5EB8B88EB8BA42E0000, 67186), +(3776013982, 1292071, 'koKR', 0x00EAB2B0EC82ACEB8BA8EC9B90EC9D9820ECB6A9EAB2A9EC9D9820ED8C8CEC9EA5EC979020ED94BCED95B4EBA5BC20EBB09BEC9D8020ECA081EC9D8020246420EB8F99EC958820EC8B9CECA084EC9E90EC9790EAB28C20EC9E85ED9E88EB8A9420ED94BCED95B4EAB08020247B2473312F2D317D2E3125EBA78CED81BC20EAB090EC868CED95A9EB8B88EB8BA42E0D0A00244061757261636173746572EC9790EAB28C20EC9E85ED9E88EB8A9420ED94BCED95B420247B2457312F2D317D2E3125EBA78CED81BC20EAB090EC868C00, 67186), +(3266400455, 1570155, 'koKR', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'koKR', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'koKR', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'koKR', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'koKR', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'koKR', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'koKR', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'koKR', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'koKR', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'koKR', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'koKR', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'koKR', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'koKR', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'koKR', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'koKR', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'koKR', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'koKR', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'koKR', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'koKR', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'koKR', 0x170B3D160100, 67186), +(1734738485, 9018, 'koKR', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'koKR', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'koKR', 0x00EBB0A9EC96B4EAB5ACEC979020ED9DACEBAFB8ED959C20EC9E94ED96A5EC9CBCEBA19C20EB82A8EC9D8020ED839CEC9691EC8398EC9D9820ED9E98EC9D8420ECA3BCEC9E85ED95B42C20ED8AB9ECA09520ED959CEBB0A4203120EC8B9CECA68C20ECA781EC978520EC84B8ED8AB820ED9895EC8381EC979020EB8C80ED959C20ECB694EAB08020EC8B9CEAB08120ED9AA8EAB3BCEBA5BC20ED95B4ECA09CED95A9EB8B88EB8BA42E0D0A0D0AED95B4EB8BB920ED9AA8EAB3BCEB8A9420ECA084ED88ACEBB680EB8C80EC979020ECA081EC9AA9EB90A9EB8B88EB8BA42E0000, 67186), +(3776013982, 1273357, 'koKR', 0x00EBB0A9EC96B4EAB5ACEC979020ED9DACEBAFB8ED959C20EC9E94ED96A5EC9CBCEBA19C20EB82A8EC9D8020ED839CEC9691EC8398EC9D9820ED9E98EC9D8420ECA3BCEC9E85ED95B42C20ED8AB9ECA09520ED959CEBB0A4203120EC8B9CECA68C20ECA781EC978520EC84B8ED8AB820ED9895EC8381EC979020EB8C80ED959C20ECB694EAB08020EC8B9CEAB08120ED9AA8EAB3BCEBA5BC20ED95B4ECA09CED95A9EB8B88EB8BA42E0D0A0D0AED95B4EB8BB920ED9AA8EAB3BCEB8A9420ECA084ED88ACEBB680EB8C80EC979020ECA081EC9AA9EB90A9EB8B88EB8BA42E0000, 67186), +(4167587713, 4140, 'koKR', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186), +(3776013982, 1294727, 'koKR', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6EEC9D8CEC8B9DEC9D8420EABEB8ECA480ED9E88203130ECB48820EC9DB4EC838120EBA8B9EC9CBCEBA9B42024407370656C6C6E616D6534353730343920EC8381ED839CEAB08020EB9098EAB3A020246420EB8F99EC958820ECB2B4EBA0A5EC9DB42024313231393137397337EBA78CED81BC2C20ECA3BC20EB8AA5EBA0A5ECB998EAB0802024313231393137397332EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E00ECA3BC20EB8AA5EBA0A5ECB9982024773131EBA78CED81BC20ECA69DEAB08000, 67186), +(3776013982, 1294726, 'koKR', 0x000000, 67186), +(3776013982, 1294720, 'koKR', 0x00ECA081EC9D8420EC8FB420EBACBCEBA6AC20ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0000, 67186), +(3776013982, 1294703, 'koKR', 0x00ECA081EC9D8420EC8FB420EBACBCEBA6AC20ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0000, 67186), +(3776013982, 1294669, 'koKR', 0x00EC839DEBAA85ECB2B4EAB08020EB8BB9EC8BA0EC9790EAB28CEBA19C20EB8F8CECA784ED95A9EB8B88EB8BA42E00EC839DEBAA85ECB2B4EAB08020EB8BB9EC8BA0EC9790EAB28CEBA19C20EB8F8CECA784ED95A800, 67186), +(3776013982, 1294633, 'koKR', 0x00EC8B9CECA084EC9E90EAB08020ED948CEBA088EC9DB4EC96B4EC9790EAB28C20ED9994EC97BCEAB5ACEBA5BC20EB82B4EBBF9CEC96B420246420EB8F99EC958820247431ECB488EBA788EB8BA42024313236363734357331EC9D9820ED9994EC97BC20ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E00247431ECB488EBA788EB8BA42024313236363734357331EC9D9820ED9994EC97BC20ED94BCED95B400, 67186), +(3776013982, 1294563, 'koKR', 0x000000, 67186), +(3776013982, 1277795, 'koKR', 0x00ECA084EBB0A920ECA780EC97AD20EB82B420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED9598EC97AC2C20EBB09CEAB2AC20EC8381ED839CEBA19C20EBA78CEB93ADEB8B88EB8BA42E0000, 67186), +(3776013982, 1272179, 'koKR', 0x00EC8381EC9DB8EC9790EAB28CEC849C20EAB5ACEBA7A4ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C646573633132353631373100EC9EA1EAB8B020ECA084EC979020EB8BB9ED95A800, 67186), +(3776013982, 1269655, 'koKR', 0x00EC8381EC9DB8EC9790EAB28CEC849C20EAB5ACEBA7A4ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'koKR', 0x00EC8381EC9DB8EC9790EAB28CEC849C20EAB5ACEBA7A4ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'koKR', 0x00EC8381EC9DB8EC9790EAB28CEC849C20EAB5ACEBA7A4ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'koKR', 0x00EC8381EC9DB8EC9790EAB28CEC849C20EAB5ACEBA7A4ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'koKR', 0x00EC8381EC9DB8EC9790EAB28CEC849C20EAB5ACEBA7A4ED95A9EB8B88EB8BA42E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'koKR', 0x00ECA3BCEC9C8420ED9598EC9AB0ECA79520EC9EA5EC8B9DEAB3BC20EC9C84ECB998EBA5BC20EBB094EABF89EB8B88EB8BA42E0000, 67186), +(3776013982, 1259647, 'koKR', 0x0024407370656C6C6465736334353239393300ED959CEBB0A420EC9881EC95BD2C20EC95BDEBB3912C20ED8FACEBA78CEAB09020ED9AA8EAB3BCEC9D9820EBA78CEBA38CEAB08020ECA095ECA780EB90A800, 67186), +(3776013982, 1258362, 'koKR', 0x000D0A7C434646666666666666EC8B9CECA08420EC8B9CEAB0843A20312E35ECB4882E0D0AEB8DAB20EC9EACEC82ACEC9AA920EB8C80EAB8B0EC8B9CEAB0843A2035ECB4882E7C520D0A0D0A2452EBAFB8ED84B020EB82B4EC979020EC88A0EB9E98EAB08020EC9786EC9CBCEBA9B420ED9884EC9EAC20EC9C84ECB998202472616431EBAFB8ED84B020EB82B4EC97902024407370656C6C6E616D653132353833353820EC9AA9EAB8B0EBA5BC20EB8D98ECA791EB8B88EB8BA42E0D0A0D0A2452EBAFB8ED84B020EB82B4EC979020EC88A0EB9E98EAB08020ED959C20EBAA8520EC9DB4EC838120EC9E88EC9CBCEBA9B420EC9E90EC8BA0EAB3BC20EAB080EC9EA520EAB080EAB98CEC9AB420EC88A0EB9E9820ECA3BCEC9C84EC97902024407370656C6C6E616D653132353833353820EC9AA9EAB8B0EBA5BC20EB8D98ECA791EB8B88EB8BA42E0D0A0D0A7C434646373164356666ECB0B8EAB3A020EC82ACED95AD3A7C52207C434646643966636666EC9AA9EAB8B0EB8A9420EB82A0EC9584EAB08820EB958C20EC88A0EB9E98EC9790EAB28C20EBB3B4EC9DB4ECA78020EC958AEC8AB5EB8B88EB8BA42E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C434646623062306230EBA78920EAB7B8EBA087EAB28C20ED9994EBA0A4ED9598ECA780EB8A9420EC958AECA780EBA78C2C20EB958CEBA19CEB8A9420EB8BA8EC889CED959C20EBB0A9ED95B420ED959C20EBB288EC9DB4EBA9B420EC8AB9EBA6ACEBA5BC20EAB5B3ED9E88EAB8B0EC979020ECB6A9EBB684ED95A9EB8B88EB8BA42E7C520000, 67186), +(3776013982, 1256009, 'koKR', 0x00ECA084EBB0A920ECA780EC97AD20EB82B420EC9D80EC8BA0EC9E90EC9D9820ED9998EC9881EC9D8420EBACB4ED9AA8ED9994ED9598EC97AC2C20EBB09CEAB2AC20EC8381ED839CEBA19C20EBA78CEB93ADEB8B88EB8BA42E0000, 67186), +(3776013982, 1251813, 'koKR', 0x00EC9585EBA0B9EC9D8020EC82ACEBA79D20EC8B9C20ECA088EAB79CEBA5BC20EB82B4ECA788EB9FAC20EBAAA8EB93A020ED948CEBA088EC9DB4EC96B4EC9790EAB28C20247331EC9D9820EC9594ED9D9120ED94BCED95B4EBA5BC20EC9E85ED9E99EB8B88EB8BA42E0000, 67186), +(1010104591, 22988, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EB9DBCEC9DB4EBA08CEB8BAC7C6E7C634646464644323030ECA780EC97AD3A207C72EC8BA4EBB284EBACB87C6E7C634646464644323030EAB080EAB2A93A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030EC8381EC9DB83A207C72EC95BCEC84B8EC98A87C6E7C634646464644323030ECA780EC97AD3A207C72EC8BA4EBB284EBACB87C6E7C634646464644323030EAB080EAB2A93A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'koKR', 0x7C634646464644323030EC8381EC9DB83A207C72EB9DBCEC9DB4EBA08CEB8BAC7C6E7C634646464644323030ECA780EC97AD3A207C72EC8BA4EBB284EBACB87C6E7C634646464644323030EAB080EAB2A93A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030EC8381EC9DB83A207C72EC95BCEC84B8EC98A87C6E7C634646464644323030ECA780EC97AD3A207C72EC8BA4EBB284EBACB87C6E7C634646464644323030EAB080EAB2A93A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'koKR', 0x7C634646464644323030ECA084EBACB8ED99943A207C72EC8B9CEC9EA520EC9CA0EB8F99EC84B1202D20ECB184EAB49120EC9EA5EC8B9D7C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'koKR', 0x7C634646464644323030EAB8B0EC88A020ECA084EBACB8EAB0803A207C72ED959CEBB0A420EAB8B0EAB384EAB3B5ED959920283335297C6E7C634646464644323030EAB080EAB2A93A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'koKR', 0x7C634646464644323030ECA084EBACB8ED99943A207C72EC8B9CEC9EA520EC9CA0EB8F99EC84B1202D20EAB8B0EAB384EAB3B5ED959920EC9EA5EC8B9D7C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'koKR', 0xFFFFFFFFFFFFFFFFEC9584EBA5B4ECB9B8ED8BB0EB8298000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'koKR', 0xFFFFFFFFFFFFFFFFEC9D91EB8BB9ED959C20EC9DB8ECA09500001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'koKR', 0xECA09CEC9E91EC9D8420EC9984EBA38CED959C20ED9B8420EC9DBCECA09520ED9995EBA5A0EBA19C20EC9EACEBA38C20EC9DBCEBB680EBA5BC20EBB098ED9998ED9598EB8A9420ED9DACEAB78020EBACBCED92887C6E7C6EEC9DB420ECA09CEC9E91ED9288EC9D8420EBA78CEB93A420EB958C2024656E317C31EC9DB43BEAB0803B2024657631EBA78CED81BC20ECA69DEAB080004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'koKR', 0xECA09CEC9E91EC9D8420EC9984EBA38CED959C20ED9B8420EC9EACEBA38C20EC9DBCEBB680EBA5BC20EBB098ED9998EBB09BEC9D8420ED9995EBA5A020ECA69DEAB0807C6E7C6EEC9DB420ECA09CEC9E91ED9288EC9D8420EBA78CEB93A420EB958C2024656E317C31EC9DB43BEAB0803B2024657631EBA78CED81BC20ECA69DEAB080004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'koKR', 0xECA09CEC9E9120EC8898EB9F89EC9D8420ECA69DEAB080EC8B9CED82AC20EC889820EC9E88EB8A9420ECB0A8EC9B90EC9D9820ECA784EAB780ED92887C6E7C6EEC9DB420ECA09CEC9E91ED9288EC9D8420EBA78CEB93A420EB958C2024656E317C31EC9DB43BEAB0803B2024657631EBA78CED81BC20ECA69DEAB080004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'koKR', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500EC9DBCEC9DBC20ECBA90EBA6ADED84B020EC9785EAB7B8EBA088EC9DB4EB939C20ED9A9FEC889820ECA09CED959CEC979020EB8F84EB8BACED9688EC8AB5EB8B88EB8BA42E20EB82B4EC9DBC20EB8BA4EC8B9C20EC8B9CEB8F84ED95B420ECA3BCEC8BADEC8B9CEC98A42E0003000000, 67186), +(3205218938, 58259, 'koKR', 0x534C4153485F434F4F4C444F574E4D414E4147455234002FEC9EACEC82ACEC9AA9EB8C80EAB8B0EC8B9CEAB084EAB480EBA6ACEC9E900001000000, 67186), +(3205218938, 58258, 'koKR', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F63646D0001000000, 67186), +(3205218938, 55299, 'koKR', 0x4A4F55524E4559535F43555252454E545F50524F475245535300ED9884EC9EAC20ECA784ED968920EC8381ED99A93A207C636E484947484C494748545F464F4E545F434F4C4F523A2564202F2025647C720001000000, 67186), +(3205218938, 49471, 'koKR', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F475245535300ED9884EC9EAC20ECA784ED968920EC8381ED99A93A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'koKR', 0x000000, 67186), +(3776013982, 1294759, 'koKR', 0x000000, 67186), +(2921112328, 568649, 'koKR', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'koKR', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'koKR', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'koKR', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'koKR', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'koKR', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'koKR', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'koKR', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'koKR', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'koKR', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'koKR', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'koKR', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'koKR', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'koKR', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'koKR', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='koKR') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='koKR') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='koKR') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='koKR') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xEC82ACEB83A5EAB09000EAB095EBA0A5ED959C20ECA081EC9D8420ECB298ECB998ED9598EC97AC20EC9584EC8AA4ED8388EBA19CEBA5B4EAB08020ECA784ED968920ECA491EC9DB820EC97B0EAB5ACEC9D9820EC9B90EB8F99EBA0A5EC9CBCEBA19C20EC82BCEC9584EC95BC20ED95A9EB8B88EB8BA42E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x00ECB59CED9B84EC9D9820EBB688EABD83EC9DB420ECA799EC9D8020EBB0A420EC868DEC9790EC849C20ED8380EC98A4EBA685EB8B88EB8BA42E00EB8C80EB8BB4ED95B4ECA79000, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0x00EC8BA0EC84B1ED959C20ED9E98EC9D8420EC868CEBAAA8ED9598EB8A9420EB8AA5EBA0A5EC9D9820EAB3B5EAB2A9EBA0A5EC9DB42024733125EBA78CED81BC20ECA69DEAB080ED95A9EB8B88EB8BA42E0D0A0D0AEC82ACED989520EC84A0EAB3A020EC8B9CECA08420ED9B8420EB8BA4EC9D8C20243132353331373475ED9A8CEC9D9820EC8BA0EC84B1ED959C20ED9E98EC9D8420EC868CEBAAA8ED9598EB8A9420EB8AA5EBA0A5EC9D8020EC868CEBAAA8ED959C20EC8BA0EC84B1ED959C20ED9E98EC9D8420EBB098ED9998ED95A9EB8B88EB8BA42E0000, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='koKR'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFFEC82ACEB9DBCECA78420EBB095EC9E90EAB0900000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='koKR'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 273277, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 272911, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'koKR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='koKR' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='koKR'); From ef63589c02019b39405c9f77a957e7b11c8f0153 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:19:59 +0200 Subject: [PATCH 106/175] DB/Hotfixes: Updated ptBR hotfixes to 12.0.5.67186 --- .../master/2026_04_29_07_hotfixes_ptBR.sql | 2742 +++++++++++++++++ 1 file changed, 2742 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_07_hotfixes_ptBR.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_07_hotfixes_ptBR.sql b/sql/updates/hotfixes/master/2026_04_29_07_hotfixes_ptBR.sql new file mode 100644 index 0000000000000..26ce2e1a01655 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_07_hotfixes_ptBR.sql @@ -0,0 +1,2742 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'ptBR', 'Obter todas as conquistas de Pescadores do Abismo listadas.', 'Pescadores do Abismo: O novo rival de Jeju', '', 67186), +(61883, 'ptBR', 'Não ser marcado no primeiro minuto do Duelo de Decoração (x3).', 'Truque de mestre', '', 67186), +(61887, 'ptBR', 'Concluir todas as conquistas do Duelo de Decoração.', 'Disfarce sob medida', '', 67186), +(61886, 'ptBR', 'Adquirir acesso a todos os Aprimoramentos de Kit no Duelo de Decoração.', 'De kit, mala e cuia', '', 67186), +(61882, 'ptBR', 'Perder o status de Encontrado sem ser marcado no Duelo de Decoração.', 'Nulo e de nenhum efeito', '', 67186), +(61881, 'ptBR', 'Ser o último Escondido não marcado na equipe no Duelo de Decoração.', 'Não-achados e perdidos', '', 67186), +(61880, 'ptBR', 'Ficar escondido por um minuto e meio sem ser encontrado no Duelo de Decoração.', 'Juntando teias', '', 67186), +(61879, 'ptBR', 'Vencer uma rodada como Caçador com todos os Escondidos sendo marcados em até dois minutos no Duelo de Decoração.', 'Tá com você', '', 67186), +(61878, 'ptBR', 'Marcar com sucesso jogadores adversários como Patrulheiro Arcano no Duelo de Decoração.', 'Enquadro arcano', '', 67186), +(61793, 'ptBR', 'Marcar com sucesso jogadores adversários como Nulificador no Duelo de Decoração.', 'Nulificados com sucesso', '', 67186), +(61792, 'ptBR', 'Marcar com sucesso jogadores adversários como Quebra-feitiço no Duelo de Decoração.', 'Quebra-esconderijo', '', 67186), +(63263, 'ptBR', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'ptBR', 'Obter a classificação Mítica+ de ao menos 3400 durante a Série 1 de Midnight.', 'Mito da Pedra-chave de Midnight: Série 1', 'Título: o Competidor Umbrático e Item: Sela Perdida no Tempo', 67186), +(61594, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Beira-céu.', 'Vencedor da Pedra-chave: Beira-céu', '', 67186), +(61593, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Sede do Triunvirato.', 'Vencedor da Pedra-chave: Sede do Triunvirato', '', 67186), +(61592, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Fosso de Saron.', 'Vencedor da Pedra-chave: Fosso de Saron', '', 67186), +(61591, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Academia Algeth\'ar.', 'Vencedor da Pedra-chave: Academia Algeth\'ar', '', 67186), +(61590, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Pico dos Correventos.', 'Vencedor da Pedra-chave: Pico dos Correventos', '', 67186), +(61589, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Ponto de Nexus Xenas.', 'Vencedor da Pedra-chave: Ponto de Nexus Xenas', '', 67186), +(61588, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Cavernas de Maisara.', 'Vencedor da Pedra-chave: Cavernas de Maisara', '', 67186), +(61587, 'ptBR', 'Conseguir a melhor conclusão regional de uma masmorra de pedra-chave para Terraço dos Magísteres (Midnight).', 'Vencedor da Pedra-chave: Terraço dos Magísteres (Midnight)', '', 67186), +(61259, 'ptBR', 'Encerrar a Série 1 de Midnight no modo Mítico+ classificando-se entre os primeiros 0,1% entre todos os jogadores da sua região.', 'Herói Umbrático: Série 1 de Midnight', 'Título: o Herói Umbrático', 67186), +(61253, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 30 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 30', 'Pedras-chave não se exaurem mais abaixo do nível 30 durante a Série 1 de Midnight.', 67186), +(61252, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 29 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 29', 'Pedras-chave não se exaurem mais abaixo do nível 29 durante a Série 1 de Midnight.', 67186), +(61251, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 28 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 28', 'Pedras-chave não se exaurem mais abaixo do nível 28 durante a Série 1 de Midnight.', 67186), +(61250, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 27 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 27', 'Pedras-chave não se exaurem mais abaixo do nível 27 durante a Série 1 de Midnight.', 67186), +(61249, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 26 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 26', 'Pedras-chave não se exaurem mais abaixo do nível 26 durante a Série 1 de Midnight.', 67186), +(61248, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 25 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 25', 'Pedras-chave não se exaurem mais abaixo do nível 25 durante a Série 1 de Midnight.', 67186), +(61247, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 24 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 24', 'Pedras-chave não se exaurem mais abaixo do nível 24 durante a Série 1 de Midnight.', 67186), +(61246, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 23 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 23', 'Pedras-chave não se exaurem mais abaixo do nível 23 durante a Série 1 de Midnight.', 67186), +(61245, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 22 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 22', 'Pedras-chave não se exaurem mais abaixo do nível 22 durante a Série 1 de Midnight.', 67186), +(61244, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 21 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 21', 'Pedras-chave não se exaurem mais abaixo do nível 21 durante a Série 1 de Midnight.', 67186), +(61243, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 20 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 20', 'Pedras-chave não se exaurem mais abaixo do nível 20 durante a Série 1 de Midnight.', 67186), +(61242, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 19 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 19', 'Pedras-chave não se exaurem mais abaixo do nível 19 durante a Série 1 de Midnight.', 67186), +(61241, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 18 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 18', 'Pedras-chave não se exaurem mais abaixo do nível 18 durante a Série 1 de Midnight.', 67186), +(61240, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 17 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 17', 'Pedras-chave não se exaurem mais abaixo do nível 17 durante a Série 1 de Midnight.', 67186), +(61239, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 16 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 16', 'Pedras-chave não se exaurem mais abaixo do nível 16 durante a Série 1 de Midnight.', 67186), +(61237, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 15 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 15', 'Pedras-chave não se exaurem mais abaixo do nível 15 durante a Série 1 de Midnight.', 67186), +(61236, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 14 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 14', 'Pedras-chave não se exaurem mais abaixo do nível 14 durante a Série 1 de Midnight.', 67186), +(61235, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 13 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 13', 'Pedras-chave não se exaurem mais abaixo do nível 13 durante a Série 1 de Midnight.', 67186), +(61233, 'ptBR', 'Concluir todas as masmorras Míticas+ durante a Série 1 de Midnight dentro do limite de tempo no nível 12 de pedra-chave.', 'Midnight Série 1: Pedra-chave Resiliente 12', 'Pedras-chave não se exaurem mais abaixo do nível 12 durante a Série 1 de Midnight.', 67186), +(12009, 'ptBR', 'Derrotar L\'ura na Sede do Triunvirato com todos os integrantes do grupo afetados por Escuridão Acachapante no modo Mítico.', 'Lado Sombrio', '', 67186), +(12005, 'ptBR', 'Fazer com que Presanegra destrua 4 Baús do Caos Selados usando Salto das Sombras, depois derrotar Saprish na Sede do Triunvirato, no modo Mítico.', 'Soltou os caoschorros', '', 67186), +(12004, 'ptBR', 'Usar Rasgo do Caos para tirar Urjad do reino do Caos e, em seguida, derrotar Urjad e Zuraal, o Elevado, na Sede do Triunvirato no modo Mítico.', 'Boas-vindas ao Caos', '', 67186), +(9036, 'ptBR', 'Derrotar a Alta Sábia Viryx sem matar nenhum dos Constructos de Escudo, em Beira-céu, na dificuldade Heroica.', 'Monomania', '', 67186), +(9035, 'ptBR', 'Fazer com que os três Pilares de Cinza formem Clarões Solares ao mesmo tempo durante a luta contra Rukhran em Beira-céu na dificuldade Heroica.', 'Lá vem o Solis', '', 67186), +(9034, 'ptBR', 'Derrotar o Constructo Energizado em Beira-céu na dificuldade Heroica.', 'Ampliar... Aprimorar', '', 67186), +(9033, 'ptBR', 'Derrotar Ranjit em Beira-céu sem receber dano de nenhuma das habilidades abaixo, na dificuldade Heroica: Lâmina Giratória, Barreira de Vento, Quatro Ventos, Clarão da Lente.', 'Pronto pro raide IV', '', 67186), +(4525, 'ptBR', 'Limpar o corredor que precede o Senhor do Flagelo Tyrannus no Fosso de Saron, no modo Heroico, sem que ninguém recebe dano dos sincelos na primeira tentativa.', 'Não Olhe para Cima', '', 67186), +(4524, 'ptBR', 'No modo Heroico, derrotar o Mestre Forjador Criomal no Fosso de Saron antes que um jogador acumule Permafrio 11 vezes.', 'Masmorra abaixo de onze', '', 67186), +(62814, 'ptBR', '', '', '', 67186), +(62813, 'ptBR', '', '', '', 67186), +(62812, 'ptBR', '', '', '', 67186), +(62811, 'ptBR', '', '', '', 67186), +(62296, 'ptBR', '', 'Brasões Aurorais Míticos obtidos', '', 67186), +(42769, 'ptBR', 'Superar o uso de Brasões Aurorais do Herói durante a Série 1 de Midnight.', 'Herói da aurora', 'Desbloqueio de personagem: trocar Brasões Aurorais do Herói por Míticos', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Pescar uma criatura Mítica 3 vezes durante mergulhos em Pescadores do Abismo.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Ganhar 250.000 pontos cumulativos em mergulhos em Pescadores do Abismo.', `Reward_lang`='Recompensa: ganhe um companheiro de mergulho para aventuras', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Pescar 100 peixes durante mergulhos em Pescadores do Abismo.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Usar sua habilidade Voltar à Tona! durante um mergulho de Pescadores do Abismo com menos de 10 s de fôlego restantes.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Ser expulso de um mergulho em Pescadores do Abismo ao tentar nadar para além da fossa.', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='Recompensa: desbloqueia Ídolo das Profundezas para compra com Tu\'nakit, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Descobrir 10 Relíquias Ancestrais durante seus mergulhos em Pescadores do Abismo e adquirir o aprimoramento Rede de Baixio.', `Reward_lang`='Recompensa: desbloqueia Rede com Fios Triplos para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Descobrir 50 Relíquias Submersas durante seus mergulhos em Pescadores do Abismo.', `Reward_lang`='Recompensa: desbloqueia Rede de Baixio para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Coletar cada uma das criaturas listadas abaixo durante mergulhos em Pescadores do Abismo e adquirir o Tanque Testado nas Profundezas.', `Reward_lang`='Recompensa: desbloqueia Tanque de Respiração de Nalorakk para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Coletar cada uma das criaturas listadas abaixo durante mergulhos em Pescadores do Abismo e adquirir o aprimoramento Tanque Usado do Mergulhador das Profundezas.', `Reward_lang`='Recompensa: desbloqueia Tanque Testado nas Profundezas para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Coletar cada uma das criaturas listadas abaixo durante mergulhos em Pescadores do Abismo.', `Reward_lang`='Recompensa: desbloqueia Tanque Usado do Mergulhador das Profundezas para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Pescar pelo menos 500 peixes durante mergulhos em Pescadores do Abismo e adquirir o aprimoramento Graxa das Profundezas.', `Title_lang`='Pescadores do Abismo: Barbatanas da Fossa de Pahk', `Reward_lang`='Recompensa: desbloquear Barbatanas da Fossa de Pahk para compra', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Pescar pelo menos 25 peixes durante um único mergulho em Pescadores do Abismo e adquirir o aprimoramento Juntas Reforçadas.', `Reward_lang`='Recompensa: desbloqueia Graxa das Profundezas para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='ptBR'); +UPDATE `achievement_locale` SET `Description_lang`='Pescar pelo menos 3 peixes durante mergulhos em Pescadores do Abismo.', `Reward_lang`='Recompensa: Desbloqueia Articulações Reforçadas para compra com Jeju, o Mergulhador Profundo', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='ptBR'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='ptBR'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'ptBR', 'Uma verdadeira Pescadora do Abismo, certificada por Jeju, o Mergulhador Profundo.', '|cFFFFD200Comerciante: |rMergulhador das Profundezas Tu\'nakit|n|cFFFFD200Área: |rZul\'Aman|n|cFFFFD200Custo: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'ptBR', 'Qual atributo você gostaria de medir?', 'Qual atributo você gostaria de medir?', 67186), +(289969, 'ptBR', 'Perdi gente o bastante de meu povo para o Pacto de Prata. \n\nMe diziam que era guerra. Que os dois lados tiveram baixas. Mas meus Fendessol nunca purgaram ninguém de Dalaran. \n\nUma Correventos encontrou justiça por purgar uma cidade. A outra me enfrenta aqui hoje.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'ptBR', 'Invasor do Caos %s', 'Invasora do Caos %s', 67186), +(1307, 'ptBR', '%s, o Competidor Umbrático', '%s, a Competidora Umbrática', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'ptBR', '', 67186), +(62821, 'ptBR', '', 67186), +(62820, 'ptBR', '', 67186), +(62819, 'ptBR', '', 67186), +(62818, 'ptBR', '', 67186), +(62817, 'ptBR', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'ptBR', 'Cor da tatuagem', 67186), +(8959, 'ptBR', 'Tatuagem', 67186), +(8958, 'ptBR', 'Venda', 67186), +(8957, 'ptBR', 'Chifres', 67186), +(8956, 'ptBR', 'Cor da tatuagem', 67186), +(8955, 'ptBR', 'Tatuagem', 67186), +(8954, 'ptBR', 'Venda', 67186), +(8953, 'ptBR', 'Chifres', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'ptBR', '', 67186), +(224842, 'ptBR', 'Duelos de Decoração concluídos', 67186), +(224840, 'ptBR', 'Duelos de Decoração concluídos', 67186), +(224838, 'ptBR', 'Duelos de Decoração concluídos', 67186), +(223318, 'ptBR', 'Pescadores do Abismo: Peixe de primeira (3 Míticos)', 67186), +(223121, 'ptBR', 'Pescadores do Abismo: Mergulhador das profundezas certificado', 67186), +(223119, 'ptBR', 'Pescadores do Abismo: Berserker da fossa', 67186), +(222479, 'ptBR', 'Pescadores do Abismo: Procedimento perfeito', 67186), +(222477, 'ptBR', 'Pescadores do Abismo: Nenhum mar me contém', 67186), +(222475, 'ptBR', 'Pescadores do Abismo: Até os melhores', 67186), +(222466, 'ptBR', 'Pescadores do Abismo: Ídolo das Profundezas', 67186), +(222453, 'ptBR', 'Pescadores do Abismo: Torreta de Arpão de Núcleo Oco', 67186), +(222438, 'ptBR', 'Pescadores do Abismo: Canhão de Arpão Pesado', 67186), +(222436, 'ptBR', 'Pescadores do Abismo: Rede com Fios Triplos', 67186), +(222434, 'ptBR', 'Pescadores do Abismo: Rede de Baixio', 67186), +(222432, 'ptBR', 'Pescadores do Abismo: Tanque de Respiração de Nalorakk', 67186), +(222430, 'ptBR', 'Pescadores do Abismo: Tanque Testado nas Profundezas', 67186), +(222428, 'ptBR', 'Pescadores do Abismo: Tanque Usado do Mergulhador das Profundezas', 67186), +(222426, 'ptBR', 'Pescadores do Abismo: Barbatanas da Fossa de Pahk', 67186), +(222424, 'ptBR', 'Pescadores do Abismo: Graxa das Profundezas', 67186), +(222422, 'ptBR', 'Pescadores do Abismo: Juntas Reforçadas', 67186), +(222416, 'ptBR', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'ptBR', 'Imitação de Hadggar de Kryenna', 67186), +(220967, 'ptBR', 'Não ser marcado no primeiro minuto do Duelo de Decoração.', 67186), +(220603, 'ptBR', 'Passagem de Bombardeio', 67186), +(220574, 'ptBR', 'Preso!', 67186), +(220573, 'ptBR', 'Penetra na festa', 67186), +(212256, 'ptBR', 'Evento Pescador do Abismo concluído', 67186), +(212255, 'ptBR', 'Concluir o evento Pescador do Abismo', 67186), +(229140, 'ptBR', '', 67186), +(229139, 'ptBR', '', 67186), +(229048, 'ptBR', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'ptBR', 'Derrotar as forças de Hal\'hadar', 67186), +(225426, 'ptBR', 'Derrotar as forças de Hal\'hadar', 67186), +(223423, 'ptBR', 'Espiriturso libertado', 67186), +(223697, 'ptBR', '', 67186), +(223696, 'ptBR', '', 67186), +(223695, 'ptBR', '', 67186), +(223693, 'ptBR', '', 67186), +(219734, 'ptBR', '', 67186), +(209802, 'ptBR', 'Equipar um Badulaque de Combate em seu companheiro', 67186), +(170782, 'ptBR', 'Equipar um Badulaque de Combate em seu companheiro', 67186), +(228515, 'ptBR', 'Requisito de classificação', 67186), +(228514, 'ptBR', 'Conquista - Mito da Pedra-chave: Série 1 das Masmorras de Midnight', 67186), +(227753, 'ptBR', '', 67186), +(227677, 'ptBR', '', 67186), +(227676, 'ptBR', '', 67186), +(227675, 'ptBR', '', 67186), +(227674, 'ptBR', '', 67186), +(227673, 'ptBR', '', 67186), +(227672, 'ptBR', '', 67186), +(227671, 'ptBR', '', 67186), +(225639, 'ptBR', '', 67186), +(225638, 'ptBR', '', 67186), +(225637, 'ptBR', '', 67186), +(225636, 'ptBR', '', 67186), +(225635, 'ptBR', '', 67186), +(225634, 'ptBR', 'Pescadores do Abismo: Pérolas ao abismo', 67186), +(225611, 'ptBR', '', 67186), +(225610, 'ptBR', '', 67186), +(225609, 'ptBR', 'Pescadores do Abismo: Colecionador de antiguidades', 67186), +(220963, 'ptBR', 'Jogar uma rodada sem ser marcado.', 67186), +(220961, 'ptBR', 'Permanecer sem ser encontrado por 90 segundos ininterruptos.', 67186), +(220959, 'ptBR', 'Vitória como Caçador em menos de dois minutos.', 67186), +(220958, 'ptBR', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'ptBR', 'Marcar um Escondido Encontrado como Patrulheiro Arcano.', 67186), +(220955, 'ptBR', 'Marcar um Escondido Encontrado como Nulificador.', 67186), +(220725, 'ptBR', 'Marcar um Escondido Encontrado como Quebra-feitiço', 67186), +(227430, 'ptBR', '', 67186), +(223818, 'ptBR', '', 67186), +(216419, 'ptBR', '', 67186), +(216418, 'ptBR', '', 67186), +(216417, 'ptBR', '', 67186), +(227429, 'ptBR', '', 67186), +(227428, 'ptBR', 'Tem uma mascote Filhote de Dardejante do Sol', 67186), +(225732, 'ptBR', 'Aprimoramento Rede de Baixio adquirido', 67186), +(224745, 'ptBR', 'Sentinela ativada', 67186), +(222969, 'ptBR', 'Eterno Sussurro defendido', 67186), +(222803, 'ptBR', 'Barreiras danificadas', 67186), +(221550, 'ptBR', 'Estilhaço do Flagelo Animado morto', 67186), +(219955, 'ptBR', 'Vidente da Colmeia Sifonoide morto', 67186), +(219466, 'ptBR', 'Vidente da Colmeia Sifonoide morto', 67186), +(225670, 'ptBR', '', 67186), +(225668, 'ptBR', '', 67186), +(225666, 'ptBR', '', 67186), +(225664, 'ptBR', '', 67186), +(227206, 'ptBR', '', 67186), +(223209, 'ptBR', 'Estatísticas: Brasões Aurorais Míticos obtidos', 67186), +(212362, 'ptBR', 'Obter um nível de item médio de 285 durante a Série 1 de Midnight (superar os Brasões Aurorais Míticos)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='ptBR'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'ptBR', 'Núcleo Caótico Nebuloso', 'Pode ser transmutado em um equipamento poderoso ao derrotar inimigos fortes em raides de Midnight Série 1 ou concluir masmorras Míticas+, Imersões Abundantes e Caças à Presa no modo Pesadelo.', 67186), +(3347, 'ptBR', 'Brasão Auroral Mítico', 'Usado para aprimorar equipamentos Míticos na Série 1 de Midnight até os níveis de item 276–289. \n\nQuando usado para a criação, define o nível criado para 272–285 de acordo com a Qualidade.\n\nObtido nas seguintes atividades:\n\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no modo Mítico\n- Masmorras de Pedra-chave Mítica (+9 e acima)', 67186), +(3346, 'ptBR', 'Brasão Auroral do Herói', 'Usado para aprimorar equipamentos de Herói na Série 1 de Midnight até os níveis de item 263–276. Obtido nas seguintes atividades:\n\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no modo Heroico\n- Masmorras de Pedra-chave Mítica (+4 a +8)\n- Imersões (Grau 11)\n- Recompensa do Caça-tesouros (Grau 8+)\n- Caças às Presas (Pesadelo)', 67186), +(3345, 'ptBR', 'Brasão Auroral do Herói', 'Usado para aprimorar equipamentos de Herói na Série 1 de Midnight até os níveis de item 263–276. \n\nQuando usado para a criação, define o nível criado para 259–272 de acordo com a Qualidade.\n\nObtido nas seguintes atividades:\n\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no modo Heroico\n- Masmorras de Pedra-chave Mítica (+4 a +8)\n- Imersões (Grau 11)\n- Recompensa do Caça-tesouros (Grau +8)\n- Caças às Presas (Pesadelo)', 67186), +(3344, 'ptBR', 'Brasão Auroral do Campeão', 'Usado para aprimorar equipamentos de Campeão na Série 1 de Midnight até os níveis de item 250–263. Obtido nas seguintes atividades:\n\n- Eventos externos semanais\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no modo Normal\n- Masmorras Míticas da Série\n- Masmorras de Pedra-chave Mítica (+2 a +3)\n- Imersões (Graus 7 a 10)\n- Recompensa do Caça-tesouros (Graus 6 a 7)\n- Caças às Presas (Pesadelo)', 67186), +(3343, 'ptBR', 'Brasão Auroral do Campeão', 'Usado para aprimorar equipamentos de Campeão na Série 1 de Midnight até os níveis de item 250–263. Obtido nas seguintes atividades:\n\n- Eventos externos semanais\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no modo Normal\n- Masmorras Míticas da Série\n- Masmorras de Pedra-chave Mítica (+2 a +3)\n- Imersões (Graus 7 a 10)\n- Recompensa do Caça-tesouros (Graus 6 a 7)\n- Caças às Presas (Pesadelo)', 67186), +(3342, 'ptBR', 'Brasão Auroral do Veterano', 'Usado para aprimorar equipamentos de Veterano na Série 1 de Midnight até os níveis de item 237–250. Obtido nas seguintes atividades:\n\n- Eventos externos repetíveis\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no Localizador de Raides\n- Masmorras Heroicas da Série\n- Imersões (Graus 5 a 6)\n- Recompensa do Caça-tesouros (Graus 4 a 5)\n- Caças às Presas (Difícil)', 67186), +(3341, 'ptBR', 'Brasão Auroral do Veterano', 'Usado para aprimorar equipamentos de Veterano na Série 1 de Midnight até os níveis de item 237–250. \n\nQuando usado para a criação, define o nível criado para 233–246 de acordo com a Qualidade.\n\nObtido nas seguintes atividades:\n\n- Eventos externos repetíveis\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no Localizador de Raides\n- Masmorras Heroicas da Série\n- Imersões (Graus 5 a 6)\n- Recompensa do Caça-tesouros (Graus 4 a 5)\n- Caças às Presas (Difícil)', 67186), +(3418, 'ptBR', 'Núcleo Caótico Nebuloso', 'Pode ser transmutado em um equipamento poderoso ao derrotar inimigos fortes em raides de Midnight Série 1 ou concluir masmorras Míticas+, Imersões Abundantes e Caças à Presa no modo Pesadelo.', 67186), +(3391, 'ptBR', 'Brasão Auroral do Aventureiro', 'Usado para aprimorar equipamentos de Aventureiro na Série 1 de Midnight até os níveis de item 224–237. Obtido nas seguintes atividades:\n\n- Eventos externos repetíveis\n- Imersões de Grau 4\n- Caças às Presas (Normal)', 67186), +(3383, 'ptBR', 'Brasão Auroral do Aventureiro', 'Usado para aprimorar equipamentos de Aventureiro na Série 1 de Midnight até os níveis de item 224–237. \n\nQuando usado para a criação, define o nível criado para 220–233 de acordo com a Qualidade.\n\nObtido nas seguintes atividades:\n\n- Eventos externos repetíveis\n- Imersões de Grau 4\n- Caças às Presas (Normal)', 67186), +(3348, 'ptBR', 'Brasão Auroral Mítico', 'Usado para aprimorar equipamentos Míticos na Série 1 de Midnight até os níveis de item 276–289. Obtido nas seguintes atividades:\n\n- Torre do Caos, Fenda Onírica e Marcha em Quel\'Danas no modo Heroico\n- Masmorras de Pedra-chave Mítica (+9 e acima)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='ptBR'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'ptBR', 'Rukhran', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'ptBR', 'Olho de Áquerus', 67186), +(264717, 'ptBR', 'Bagata de Proteção Amani', 67186), +(264338, 'ptBR', 'Painel de Controle Domanaar', 67186), +(264336, 'ptBR', 'Braseiro da Luz Caótica', 67186), +(264332, 'ptBR', 'Altar Ritualístico Amani', 67186), +(263238, 'ptBR', 'Mesa Longa Ilícita', 67186), +(263230, 'ptBR', 'Estante de Livros do Magíster', 67186), +(256683, 'ptBR', 'Boneco de Treinamento de Luaprata', 67186), +(253451, 'ptBR', 'Fonte Radivéu', 67186), +(245938, 'ptBR', 'Treliça Arathi Abundante', 67186), +(245560, 'ptBR', 'Janela Ocre de Hidromelaria', 67186), +(241044, 'ptBR', 'Caixote Argussiano', 67186), +(267641, 'ptBR', 'Timbressol de Luaprata Manchado', 67186), +(267640, 'ptBR', 'Clarovéu de Luaprata Manchado', 67186), +(267639, 'ptBR', 'Gardassol de Luaprata Manchado', 67186), +(267638, 'ptBR', 'Torre do Sol de Luaprata Manchada', 67186), +(267607, 'ptBR', 'Mitenes Penumbral Obnubilado', 67186), +(267606, 'ptBR', 'Luvas da Gravidade Infinita', 67186), +(267605, 'ptBR', 'Agarres do Vórtice Perpétuo', 67186), +(267604, 'ptBR', 'Garras dos Beemotes Colossais', 67186), +(267482, 'ptBR', 'Correão do Defensor Hara\'ti Aspirante', 67186), +(267481, 'ptBR', 'Cinto do Defensor Hara\'ti Aspirante', 67186), +(267480, 'ptBR', 'Cordão do Defensor Hara\'ti Aspirante', 67186), +(267479, 'ptBR', 'Faixa do Defensor Hara\'ti Aspirante', 67186), +(266432, 'ptBR', 'Timbressol de Luaprata', 67186), +(266431, 'ptBR', 'Clarovéu de Luaprata', 67186), +(266430, 'ptBR', 'Gardassol de Luaprata', 67186), +(266429, 'ptBR', 'Torre do Sol de Luaprata', 67186), +(263269, 'ptBR', 'Correão do Defensor Hara\'ti', 67186), +(263268, 'ptBR', 'Cinto do Defensor Hara\'ti', 67186), +(263267, 'ptBR', 'Cordão do Defensor Hara\'ti', 67186), +(263265, 'ptBR', 'Faixa do Defensor Hara\'ti', 67186), +(272961, 'ptBR', 'Cajado Afiado do Quebra-feitiço', 67186), +(272960, 'ptBR', 'Parede de Escudos dos Quebra-feitiços', 67186), +(272318, 'ptBR', 'Lâmina-fênix do Quebra-feitiço', 67186), +(272317, 'ptBR', 'Glaive-fênix do Quebra-feitiço', 67186), +(272316, 'ptBR', 'Lança-espada do Quebra-feitiço', 67186), +(19355, 'ptBR', 'Cajado de Foco da Asa Sombria', 67186), +(272338, 'ptBR', 'Magiaço do Guarda Mago', 67186), +(272337, 'ptBR', 'Magilâmina do Guarda Mago', 67186), +(272336, 'ptBR', 'Arrebentador de Fissura Nulifarol', 67186), +(272321, 'ptBR', 'Arco Enfeitiçador do Patrulheiro Arcano', 67186), +(272320, 'ptBR', 'Canalizador de Fissura Nulifarol', 67186), +(273874, 'ptBR', 'Acha-de-armas Solfúria Tocada pelo Caos', 67186), +(263970, 'ptBR', 'Grande Glaive Tocada pelo Caos', 67186), +(263969, 'ptBR', 'Grande Varinha Tocada pelo Caos', 67186), +(263968, 'ptBR', 'Foci Tocado pelo Caos', 67186), +(263967, 'ptBR', 'Arco Grande Tocado pelo Caos', 67186), +(263966, 'ptBR', 'Grande Lâmina Tocada pelo Caos', 67186), +(263963, 'ptBR', 'Lâmina de Duelo Tocada pelo Caos', 67186), +(263960, 'ptBR', 'Lâmina Incandescente Tocada pelo Caos', 67186), +(263959, 'ptBR', 'Tomo Tocado pelo Caos', 67186), +(263956, 'ptBR', 'Despedaçador Tocado pelo Caos', 67186), +(263954, 'ptBR', 'Bastão de Batalha Tocado pelo Caos', 67186), +(263952, 'ptBR', 'Báculo Solfúria Tocado pelo Caos', 67186), +(263950, 'ptBR', 'Pá Tocada pelo Caos', 67186), +(263949, 'ptBR', 'Baluarte Tocado pelo Caos', 67186), +(263946, 'ptBR', 'Esmagador Tocado pelo Caos', 67186), +(263943, 'ptBR', 'Eviscerador Tocado pelo Caos', 67186), +(263942, 'ptBR', 'Presa Tocada pelo Caos', 67186), +(263941, 'ptBR', 'Rifle Tocado pelo Caos', 67186), +(263707, 'ptBR', 'Braceletes da Ira do Caos', 67186), +(263706, 'ptBR', 'Manto da Ira do Caos', 67186), +(263705, 'ptBR', 'Cintel da Ira do Caos', 67186), +(263704, 'ptBR', 'Brafoneiras da Ira do Caos', 67186), +(263703, 'ptBR', 'Coxotes da Ira do Caos', 67186), +(263702, 'ptBR', 'Elmo da Ira do Caos', 67186), +(263701, 'ptBR', 'Manoplas da Ira do Caos', 67186), +(263700, 'ptBR', 'Escarpes da Ira do Caos', 67186), +(263699, 'ptBR', 'Peitoral da Ira do Caos', 67186), +(263698, 'ptBR', 'Blusa da Nêmesis do Caos', 67186), +(263697, 'ptBR', 'Braçadeiras da Nêmesis do Caos', 67186), +(263696, 'ptBR', 'Manto da Nêmesis do Caos', 67186), +(263695, 'ptBR', 'Cinto da Nêmesis do Caos', 67186), +(263694, 'ptBR', 'Espaldares da Nêmesis do Caos', 67186), +(263693, 'ptBR', 'Perneiras da Nêmesis do Caos', 67186), +(263692, 'ptBR', 'Casquete da Nêmesis do Caos', 67186), +(263691, 'ptBR', 'Luvas da Nêmesis do Caos', 67186), +(263690, 'ptBR', 'Botas da Nêmesis do Caos', 67186), +(263689, 'ptBR', 'Vestes da Nêmesis do Caos', 67186), +(263688, 'ptBR', 'Grevas das Tempestades do Caos', 67186), +(263687, 'ptBR', 'Braçadeiras das Tempestades do Caos', 67186), +(263686, 'ptBR', 'Manto das Tempestades do Caos', 67186), +(263685, 'ptBR', 'Cinto das Tempestades do Caos', 67186), +(263684, 'ptBR', 'Palas das Tempestades do Caos', 67186), +(263683, 'ptBR', 'Kilt das Tempestades do Caos', 67186), +(263682, 'ptBR', 'Capacete das Tempestades do Caos', 67186), +(263681, 'ptBR', 'Manoplas das Tempestades do Caos', 67186), +(263680, 'ptBR', 'Escarpes das Tempestades do Caos', 67186), +(263679, 'ptBR', 'Peitoral das Tempestades do Caos', 67186), +(263678, 'ptBR', 'Braçadeiras Garracaos', 67186), +(263677, 'ptBR', 'Manto Garracaos', 67186), +(263676, 'ptBR', 'Cinto Garracaos', 67186), +(263675, 'ptBR', 'Espaldares Garracaos', 67186), +(263674, 'ptBR', 'Calças Garracaos', 67186), +(263673, 'ptBR', 'Capuz Garracaos', 67186), +(263672, 'ptBR', 'Luvas Garracaos', 67186), +(263671, 'ptBR', 'Botas Garracaos', 67186), +(263670, 'ptBR', 'Peito d\'Armas Garracaos', 67186), +(263669, 'ptBR', 'Blusa da Caoscendência ', 67186), +(263668, 'ptBR', 'Amarras da Caoscendência', 67186), +(263667, 'ptBR', 'Manto da Caoscendência', 67186), +(263666, 'ptBR', 'Cinto da Caoscendência', 67186), +(263665, 'ptBR', 'Brafoneiras da Caoscendência', 67186), +(263664, 'ptBR', 'Perneiras da Caoscendência', 67186), +(263663, 'ptBR', 'Halo da Caoscendência', 67186), +(263662, 'ptBR', 'Protetores de Mão da Caoscendência', 67186), +(263661, 'ptBR', 'Botas da Caoscendência', 67186), +(263660, 'ptBR', 'Vestes da Caoscendência', 67186), +(263659, 'ptBR', 'Grevas do Julgamento do Caos', 67186), +(263658, 'ptBR', 'Amarras do Julgamento do Caos', 67186), +(263657, 'ptBR', 'Manto do Julgamento do Caos', 67186), +(263656, 'ptBR', 'Cinto do Julgamento do Caos', 67186), +(263655, 'ptBR', 'Espaldares do Julgamento do Caos', 67186), +(263654, 'ptBR', 'Coxotes do Julgamento do Caos', 67186), +(263653, 'ptBR', 'Coroa do Julgamento do Caos', 67186), +(263652, 'ptBR', 'Manoplas do Julgamento do Caos', 67186), +(263651, 'ptBR', 'Escarpes do Julgamento do Caos', 67186), +(263650, 'ptBR', 'Peitoral do Julgamento do Caos', 67186), +(263649, 'ptBR', 'Amarras do Acólito do Caos', 67186), +(263648, 'ptBR', 'Manto do Acólito do Caos', 67186), +(263647, 'ptBR', 'Cordão do Acólito do Caos', 67186), +(263646, 'ptBR', 'Espaldares do Acólito do Caos', 67186), +(263645, 'ptBR', 'Calças do Acólito do Caos', 67186), +(263644, 'ptBR', 'Elmo do Acólito do Caos', 67186), +(263643, 'ptBR', 'Guantes do Acólito do Caos', 67186), +(263642, 'ptBR', 'Garras do Acólito do Caos', 67186), +(263641, 'ptBR', 'Colete do Acólito do Caos', 67186), +(263640, 'ptBR', 'Blusa Venticaos', 67186), +(263639, 'ptBR', 'Amarras Venticaos', 67186), +(263638, 'ptBR', 'Manto Venticaos', 67186), +(263637, 'ptBR', 'Cinto Venticaos', 67186), +(263636, 'ptBR', 'Dragonas Venticaos', 67186), +(263635, 'ptBR', 'Calças Venticaos', 67186), +(263634, 'ptBR', 'Coroa Venticaos', 67186), +(263633, 'ptBR', 'Luvas Venticaos', 67186), +(263632, 'ptBR', 'Botas Venticaos', 67186), +(263631, 'ptBR', 'Vestes Venticaos', 67186), +(263630, 'ptBR', 'Braçadeiras do Espreitador do Caos', 67186), +(263629, 'ptBR', 'Manto do Espreitador do Caos', 67186), +(263628, 'ptBR', 'Cinto do Espreitador do Caos', 67186), +(263627, 'ptBR', 'Espaldares do Espreitador do Caos', 67186), +(263626, 'ptBR', 'Guarda-pernas do Espreitador do Caos', 67186), +(263625, 'ptBR', 'Elmo do Espreitador do Caos', 67186), +(263624, 'ptBR', 'Manoplas do Espreitador do Caos', 67186), +(263623, 'ptBR', 'Grevas do Espreitador do Caos', 67186), +(263622, 'ptBR', 'Peitoral do Espreitador do Caos', 67186), +(263621, 'ptBR', 'Avambraços do Guardador do Caos', 67186), +(263620, 'ptBR', 'Manto do Guardador do Caos', 67186), +(263619, 'ptBR', 'Cinturão do Guardador do Caos', 67186), +(263618, 'ptBR', 'Brafoneiras do Guardador do Caos', 67186), +(263617, 'ptBR', 'Coxotes do Guardador do Caos', 67186), +(263616, 'ptBR', 'Coroa do Guardador do Caos', 67186), +(263615, 'ptBR', 'Garras do Guardador do Caos', 67186), +(263614, 'ptBR', 'Unhas do Guardador do Caos', 67186), +(263613, 'ptBR', 'Peitoral do Guardador do Caos', 67186), +(263612, 'ptBR', 'Couraça da Ira Caótica', 67186), +(263611, 'ptBR', 'Braçadeiras da Ira Caótica', 67186), +(263610, 'ptBR', 'Manto da Ira Caótica', 67186), +(263609, 'ptBR', 'Cinto da Ira Caótica', 67186), +(263608, 'ptBR', 'Brafoneiras da Ira Caótica', 67186), +(263607, 'ptBR', 'Guarda-pernas da Ira Caótica', 67186), +(263606, 'ptBR', 'Mantel da Ira Caótica', 67186), +(263605, 'ptBR', 'Protetores de Mão da Ira Caótica', 67186), +(263604, 'ptBR', 'Botas da Ira Caótica', 67186), +(263603, 'ptBR', 'Veste da Ira Caótica', 67186), +(263602, 'ptBR', 'Braçadeiras do Emissário do Caos', 67186), +(263601, 'ptBR', 'Manto do Emissário do Caos', 67186), +(263600, 'ptBR', 'Cordão do Emissário do Caos', 67186), +(263599, 'ptBR', 'Ombreiras do Emissário do Caos', 67186), +(263598, 'ptBR', 'Perneiras do Emissário do Caos', 67186), +(263597, 'ptBR', 'Morrião do Emissário do Caos', 67186), +(263596, 'ptBR', 'Luvas do Emissário do Caos', 67186), +(263595, 'ptBR', 'Sandálias do Emissário do Caos', 67186), +(263594, 'ptBR', 'Arnês do Emissário do Caos', 67186), +(263593, 'ptBR', 'Avambraços do Ginete do Caos', 67186), +(263592, 'ptBR', 'Manto do Ginete do Caos', 67186), +(263591, 'ptBR', 'Cinturão do Ginete do Caos', 67186), +(263590, 'ptBR', 'Brafoneiras do Ginete do Caos', 67186), +(263589, 'ptBR', 'Perneiras do Ginete do Caos', 67186), +(263588, 'ptBR', 'Elmo do Ginete do Caos', 67186), +(263587, 'ptBR', 'Luvas do Ginete do Caos', 67186), +(263586, 'ptBR', 'Escarpes do Ginete do Caos', 67186), +(263585, 'ptBR', 'Peitoral do Ginete do Caos', 67186), +(251161, 'ptBR', 'Mortalha do Caçador de Almas', 67186), +(133494, 'ptBR', 'Cinto do Zumbi Escabroso', 67186), +(49810, 'ptBR', 'Cinto do Zumbi Escabroso', 67186), +(263286, 'ptBR', 'Gongo Fungoriano Reaproveitado', 67186), +(255627, 'ptBR', 'Martelo do Gladiador Galáctico', 67186), +(253582, 'ptBR', 'Açoitador Presatana', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'ptBR', 'Ensina a realizar o encantamento de Adorno Ilusório: Sonhos.', '', '', '', 'Fórmula: Adorno Ilusório: Sonhos', 67186), +(206969, 'ptBR', '', '', '', '', 'Adorno Ilusório: Sonhos', 67186), +(206968, 'ptBR', '', '', '', '', 'Adorno Ilusório: Sonhos', 67186), +(206967, 'ptBR', '', '', '', '', 'Adorno Ilusório: Sonhos', 67186), +(204977, 'ptBR', 'Ensina a realizar o encantamento de Adorno Ilusório: Esporos.', '', '', '', 'Fórmula: Adorno Ilusório: Esporos', 67186), +(204568, 'ptBR', '', '', '', '', 'Adorno Ilusório: Esporos', 67186), +(204567, 'ptBR', '', '', '', '', 'Adorno Ilusório: Esporos', 67186), +(204565, 'ptBR', '', '', '', '', 'Adorno Ilusório: Esporos', 67186), +(201321, 'ptBR', '', '', '', '', 'Adorno Ilusório: Ordem', 67186), +(201320, 'ptBR', '', '', '', '', 'Adorno Ilusório: Ordem', 67186), +(201319, 'ptBR', '', '', '', '', 'Adorno Ilusório: Ordem', 67186), +(201318, 'ptBR', '', '', '', '', 'Adorno Ilusório: Ar', 67186), +(201317, 'ptBR', '', '', '', '', 'Adorno Ilusório: Ar', 67186), +(201316, 'ptBR', '', '', '', '', 'Adorno Ilusório: Ar', 67186), +(201315, 'ptBR', '', '', '', '', 'Adorno Ilusório: Terra', 67186), +(201314, 'ptBR', '', '', '', '', 'Adorno Ilusório: Terra', 67186), +(201313, 'ptBR', '', '', '', '', 'Adorno Ilusório: Terra', 67186), +(201312, 'ptBR', '', '', '', '', 'Adorno Ilusório: Gelo', 67186), +(201311, 'ptBR', '', '', '', '', 'Adorno Ilusório: Gelo', 67186), +(201310, 'ptBR', '', '', '', '', 'Adorno Ilusório: Gelo', 67186), +(200616, 'ptBR', '', '', '', '', 'Adorno Ilusório: Fogo', 67186), +(200615, 'ptBR', '', '', '', '', 'Adorno Ilusório: Fogo', 67186), +(200614, 'ptBR', '', '', '', '', 'Adorno Ilusório: Fogo', 67186), +(245345, 'ptBR', 'Grânulo coalescido de pura energia primeva. Pode ser comprado da Comerciante de Abundância Chel, a Estilha, ou do Mergulhador das Profundezas Tu\'nakit.', '', '', '', 'Vitalidade Fundida', 67186), +(243343, 'ptBR', 'Uma janela para algo muito, muito maior.', '', '', '', 'Anomalia do Pescador', 67186), +(243302, 'ptBR', 'Um catalisador de crescimento que é avassalador.', '', '', '', 'Floração de Aquário', 67186), +(274267, 'ptBR', 'Grânulo coalescido de pura energia primeva. Pode ser comprado da Comerciante de Abundância Chel, a Estilha, ou do Mergulhador das Profundezas Tu\'nakit.', '', '', '', 'Vitalidade Fundida', 67186), +(255157, 'ptBR', '', '', '', '', 'Registro de Peixes do Pescador do Abismo', 67186), +(239563, 'ptBR', 'Ensina a evocar o Lince Marcado pelo Caos. A montaria muda de acordo com a sua perícia em montaria e com o local em que você está.', '', '', '', 'Coleira do Agrilhoamento Sombrio', 67186), +(223245, 'ptBR', '', '', '', '', 'Indumentária: Pescador do Abismo', 67186), +(267009, 'ptBR', '', '', '', '', 'Boneco de Treinamento Amani', 67186), +(267007, 'ptBR', '', '', '', '', 'Olho de Áquerus', 67186), +(264717, 'ptBR', '', '', '', '', 'Bagata de Proteção Amani', 67186), +(264342, 'ptBR', '', '', '', '', 'Baú do Caos Cósmico', 67186), +(264338, 'ptBR', '', '', '', '', 'Painel de Controle Domanaar', 67186), +(264336, 'ptBR', '', '', '', '', 'Braseiro da Luz Caótica', 67186), +(264332, 'ptBR', '', '', '', '', 'Altar Ritualístico Amani', 67186), +(264330, 'ptBR', '', '', '', '', 'Braseiro Pendente Amani', 67186), +(264329, 'ptBR', '', '', '', '', 'Mesa de Jantar Amani', 67186), +(264258, 'ptBR', '', '', '', '', 'Forja Florescente', 67186), +(263238, 'ptBR', '', '', '', '', 'Mesa Longa Ilícita', 67186), +(263233, 'ptBR', '', '', '', '', 'Biblioteca Giratória Sin\'dorei', 67186), +(263230, 'ptBR', '', '', '', '', 'Estante de Livros do Magíster', 67186), +(263042, 'ptBR', '', '', '', '', 'Poste de Luz de Raiz', 67186), +(263036, 'ptBR', '', '', '', '', 'Flor d\'Alvorada Pendente', 67186), +(256683, 'ptBR', '', '', '', '', 'Boneco de Treinamento de Luaprata', 67186), +(253451, 'ptBR', '', '', '', '', 'Fonte Radivéu', 67186), +(251967, 'ptBR', '', '', '', '', 'Estandarte Fungoriano', 67186), +(245938, 'ptBR', '', '', '', '', 'Treliça Arathi Abundante', 67186), +(245560, 'ptBR', '', '', '', '', 'Janela Ocre de Hidromelaria', 67186), +(241044, 'ptBR', '', '', '', '', 'Caixote Argussiano', 67186), +(264914, 'ptBR', 'Tesouro contendo Galardões de Campo, fragmentos de Chave da Arca de Relíquias, materiais para aprimorar equipamentos, ouro e mais.', '', '', '', 'Tesouro do Patrulheiro', 67186), +(275447, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Tanquetalhador Especulativo', 67186), +(275446, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Tanquetalhador Alto-rendimento', 67186), +(275445, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Tanquetalhador Verde-lucro', 67186), +(275444, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Tanquetalhador Primeira-linha', 67186), +(275442, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Traje de Meca de Ametista', 67186), +(275440, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Mortívago Cerúleo', 67186), +(275436, 'ptBR', 'Concedida pela conquista Mito da Pedra-chave de Midnight: Série 1. Lindormi, em Luaprata ou nos Percursos Temporais, estaria interessada em negociar este item. Expira no fim da temporada.', '', '', '', 'Sela Perdida no Tempo', 67186), +(248248, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Voador do Caos Lazúli', 67186), +(247822, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Voador do Caos Escarlate', 67186), +(237141, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Tanquetalhador Empreendedor', 67186), +(235549, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Tanquetalhador Carmesim', 67186), +(226357, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Traje de Meca de Diamante', 67186), +(213438, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Armadurado Infinito', 67186), +(209060, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Armadurado Verdejante', 67186), +(204798, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Armadurado Infernal', 67186), +(199412, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Armadurado do Granizo', 67186), +(192557, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Mortívago da Restauração', 67186), +(187682, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Mortívago Rebotalho', 67186), +(187525, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Mortívago Almatorpe', 67186), +(182717, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Mortívago Pecaminoso', 67186), +(174836, 'ptBR', 'Ensina a evocar esta montaria.', '', '', '', 'Furamentes Desperto', 67186), +(257741, 'ptBR', 'Pode ser comprado e vendido na Casa de Leilões.', '', '', '', 'B0P, Seletor de Cabuns', 67186), +(257735, 'ptBR', 'Pode ser comprado e vendido na Casa de Leilões.', '', '', '', 'B0P, Seletor de Cabuns', 67186), +(255844, 'ptBR', 'Pode ser comprado e vendido na Casa de Leilões.', '', '', '', 'P51U, Filhotinho Sossegado', 67186), +(255843, 'ptBR', 'Pode ser comprado e vendido na Casa de Leilões.', '', '', '', 'P51U, Filhotinho Sossegado', 67186), +(248592, 'ptBR', 'Evoca B1P, Calcinador de Almas. Produto criado por jogadores com perícia em Engenharia. Pode ser comprado e vendido na Casa de Leilões.', '', '', '', 'B1P, Calcinador de Almas', 67186), +(248135, 'ptBR', 'Evoca Bip, Calcinador de Alma. Produto criado por jogadores com perícia em Engenharia. Pode ser comprado e vendido na Casa de Leilões.', '', '', '', 'B1P, Calcinador de Almas', 67186), +(274427, 'ptBR', 'NOTA: Não há garantia de conter uma montaria de verdade.', '', '', '', 'Caixa de Saques do Sha', 67186), +(267643, 'ptBR', '', '', '', '', 'Totencordis Amani Gasto', 67186), +(267642, 'ptBR', '', '', '', '', 'Pingente de Coracordis Amani Gasto', 67186), +(267641, 'ptBR', '', '', '', '', 'Timbressol de Luaprata Manchado', 67186), +(267640, 'ptBR', '', '', '', '', 'Clarovéu de Luaprata Manchado', 67186), +(267639, 'ptBR', '', '', '', '', 'Gardassol de Luaprata Manchado', 67186), +(267638, 'ptBR', '', '', '', '', 'Torre do Sol de Luaprata Manchada', 67186), +(267607, 'ptBR', '', '', '', '', 'Mitenes Penumbral Obnubilado', 67186), +(267606, 'ptBR', '', '', '', '', 'Luvas da Gravidade Infinita', 67186), +(267605, 'ptBR', '', '', '', '', 'Agarres do Vórtice Perpétuo', 67186), +(267604, 'ptBR', '', '', '', '', 'Garras dos Beemotes Colossais', 67186), +(267482, 'ptBR', '', '', '', '', 'Correão do Defensor Hara\'ti Aspirante', 67186), +(267481, 'ptBR', '', '', '', '', 'Cinto do Defensor Hara\'ti Aspirante', 67186), +(267480, 'ptBR', '', '', '', '', 'Cordão do Defensor Hara\'ti Aspirante', 67186), +(267479, 'ptBR', '', '', '', '', 'Faixa do Defensor Hara\'ti Aspirante', 67186), +(266432, 'ptBR', '', '', '', '', 'Timbressol de Luaprata', 67186), +(266431, 'ptBR', '', '', '', '', 'Clarovéu de Luaprata', 67186), +(266430, 'ptBR', '', '', '', '', 'Gardassol de Luaprata', 67186), +(266429, 'ptBR', '', '', '', '', 'Torre do Sol de Luaprata', 67186), +(265740, 'ptBR', '', '', '', '', 'Totencordis Amani', 67186), +(265739, 'ptBR', '', '', '', '', 'Pingente de Coracordis Amani', 67186), +(264507, 'ptBR', '', '', '', '', 'Crisol das Energias Erráticas', 67186), +(263269, 'ptBR', '', '', '', '', 'Correão do Defensor Hara\'ti', 67186), +(263268, 'ptBR', '', '', '', '', 'Cinto do Defensor Hara\'ti', 67186), +(263267, 'ptBR', '', '', '', '', 'Cordão do Defensor Hara\'ti', 67186), +(263265, 'ptBR', '', '', '', '', 'Faixa do Defensor Hara\'ti', 67186), +(270562, 'ptBR', 'Uma amostra de osso estranhamente maculada. Talvez Lady Valenero se interesse por ela.', '', '', '', 'Amostra Maculada', 67186), +(249497, 'ptBR', 'É tão picante que a Nascente do Sol proíbe sua entrada.', '', '', '', 'Pimenta da Terra Fantasma', 67186), +(272961, 'ptBR', '', '', '', '', 'Cajado Afiado do Quebra-feitiço', 67186), +(272960, 'ptBR', '', '', '', '', 'Parede de Escudos dos Quebra-feitiços', 67186), +(272318, 'ptBR', '', '', '', '', 'Lâmina-fênix do Quebra-feitiço', 67186), +(272317, 'ptBR', '', '', '', '', 'Glaive-fênix do Quebra-feitiço', 67186), +(272316, 'ptBR', '', '', '', '', 'Lança-espada do Quebra-feitiço', 67186), +(271631, 'ptBR', 'NOTA: Não há garantia de conter uma montaria de verdade', '', '', '', 'Recompensa do Guardião da Luz', 67186), +(19355, 'ptBR', '', '', '', '', 'Cajado de Foco da Asa Sombria', 67186), +(274578, 'ptBR', 'Pequena benevolência de Dundun, Loa da Abundância, contendo 4500 de Abundância Impoluta.', '', '', '', 'Oferenda de Abundância Impoluta', 67186), +(268455, 'ptBR', '', '', '', '', 'Ampulheta Encantada', 67186), +(268122, 'ptBR', 'Suas moedas foram dissipadas. Participe mais na próxima partida.', '', '', '', 'Moedas Dissipadas', 67186), +(272338, 'ptBR', '', '', '', '', 'Magiaço do Guarda Mago', 67186), +(272337, 'ptBR', '', '', '', '', 'Magilâmina do Guarda Mago', 67186), +(272336, 'ptBR', '', '', '', '', 'Arrebentador de Fissura Nulifarol', 67186), +(272321, 'ptBR', '', '', '', '', 'Arco Enfeitiçador do Patrulheiro Arcano', 67186), +(272320, 'ptBR', '', '', '', '', 'Canalizador de Fissura Nulifarol', 67186), +(268481, 'ptBR', 'Ensina a evocar a Abelha Quebradora. Esta montaria muda de acordo com a sua perícia em montaria e com o local em que você está.', '', '', '', 'Favo de Abelha Sabida do Magíster', 67186), +(268456, 'ptBR', '', '', '', '', 'Banco Animado', 67186), +(273874, 'ptBR', '', '', '', '', 'Acha-de-armas Solfúria Tocada pelo Caos', 67186), +(263970, 'ptBR', '', '', '', '', 'Grande Glaive Tocada pelo Caos', 67186), +(263969, 'ptBR', '', '', '', '', 'Grande Varinha Tocada pelo Caos', 67186), +(263968, 'ptBR', '', '', '', '', 'Foci Tocado pelo Caos', 67186), +(263967, 'ptBR', '', '', '', '', 'Arco Grande Tocado pelo Caos', 67186), +(263966, 'ptBR', '', '', '', '', 'Grande Lâmina Tocada pelo Caos', 67186), +(263963, 'ptBR', '', '', '', '', 'Lâmina de Duelo Tocada pelo Caos', 67186), +(263960, 'ptBR', '', '', '', '', 'Lâmina Incandescente Tocada pelo Caos', 67186), +(263959, 'ptBR', '', '', '', '', 'Tomo Tocado pelo Caos', 67186), +(263956, 'ptBR', '', '', '', '', 'Despedaçador Tocado pelo Caos', 67186), +(263954, 'ptBR', '', '', '', '', 'Bastão de Batalha Tocado pelo Caos', 67186), +(263952, 'ptBR', '', '', '', '', 'Báculo Solfúria Tocado pelo Caos', 67186), +(263950, 'ptBR', '', '', '', '', 'Pá Tocada pelo Caos', 67186), +(263949, 'ptBR', '', '', '', '', 'Baluarte Tocado pelo Caos', 67186), +(263946, 'ptBR', '', '', '', '', 'Esmagador Tocado pelo Caos', 67186), +(263943, 'ptBR', '', '', '', '', 'Eviscerador Tocado pelo Caos', 67186), +(263942, 'ptBR', '', '', '', '', 'Presa Tocada pelo Caos', 67186), +(263941, 'ptBR', '', '', '', '', 'Rifle Tocado pelo Caos', 67186), +(263707, 'ptBR', '', '', '', '', 'Braceletes da Ira do Caos', 67186), +(263706, 'ptBR', '', '', '', '', 'Manto da Ira do Caos', 67186), +(263705, 'ptBR', '', '', '', '', 'Cintel da Ira do Caos', 67186), +(263704, 'ptBR', '', '', '', '', 'Brafoneiras da Ira do Caos', 67186), +(263703, 'ptBR', '', '', '', '', 'Coxotes da Ira do Caos', 67186), +(263702, 'ptBR', '', '', '', '', 'Elmo da Ira do Caos', 67186), +(263701, 'ptBR', '', '', '', '', 'Manoplas da Ira do Caos', 67186), +(263700, 'ptBR', '', '', '', '', 'Escarpes da Ira do Caos', 67186), +(263699, 'ptBR', '', '', '', '', 'Peitoral da Ira do Caos', 67186), +(263698, 'ptBR', '', '', '', '', 'Blusa da Nêmesis do Caos', 67186), +(263697, 'ptBR', '', '', '', '', 'Braçadeiras da Nêmesis do Caos', 67186), +(263696, 'ptBR', '', '', '', '', 'Manto da Nêmesis do Caos', 67186), +(263695, 'ptBR', '', '', '', '', 'Cinto da Nêmesis do Caos', 67186), +(263694, 'ptBR', '', '', '', '', 'Espaldares da Nêmesis do Caos', 67186), +(263693, 'ptBR', '', '', '', '', 'Perneiras da Nêmesis do Caos', 67186), +(263692, 'ptBR', '', '', '', '', 'Casquete da Nêmesis do Caos', 67186), +(263691, 'ptBR', '', '', '', '', 'Luvas da Nêmesis do Caos', 67186), +(263690, 'ptBR', '', '', '', '', 'Botas da Nêmesis do Caos', 67186), +(263689, 'ptBR', '', '', '', '', 'Vestes da Nêmesis do Caos', 67186), +(263688, 'ptBR', '', '', '', '', 'Grevas das Tempestades do Caos', 67186), +(263687, 'ptBR', '', '', '', '', 'Braçadeiras das Tempestades do Caos', 67186), +(263686, 'ptBR', '', '', '', '', 'Manto das Tempestades do Caos', 67186), +(263685, 'ptBR', '', '', '', '', 'Cinto das Tempestades do Caos', 67186), +(263684, 'ptBR', '', '', '', '', 'Palas das Tempestades do Caos', 67186), +(263683, 'ptBR', '', '', '', '', 'Kilt das Tempestades do Caos', 67186), +(263682, 'ptBR', '', '', '', '', 'Capacete das Tempestades do Caos', 67186), +(263681, 'ptBR', '', '', '', '', 'Manoplas das Tempestades do Caos', 67186), +(263680, 'ptBR', '', '', '', '', 'Escarpes das Tempestades do Caos', 67186), +(263679, 'ptBR', '', '', '', '', 'Peitoral das Tempestades do Caos', 67186), +(263678, 'ptBR', '', '', '', '', 'Braçadeiras Garracaos', 67186), +(263677, 'ptBR', '', '', '', '', 'Manto Garracaos', 67186), +(263676, 'ptBR', '', '', '', '', 'Cinto Garracaos', 67186), +(263675, 'ptBR', '', '', '', '', 'Espaldares Garracaos', 67186), +(263674, 'ptBR', '', '', '', '', 'Calças Garracaos', 67186), +(263673, 'ptBR', '', '', '', '', 'Capuz Garracaos', 67186), +(263672, 'ptBR', '', '', '', '', 'Luvas Garracaos', 67186), +(263671, 'ptBR', '', '', '', '', 'Botas Garracaos', 67186), +(263670, 'ptBR', '', '', '', '', 'Peito d\'Armas Garracaos', 67186), +(263669, 'ptBR', '', '', '', '', 'Blusa da Caoscendência ', 67186), +(263668, 'ptBR', '', '', '', '', 'Amarras da Caoscendência', 67186), +(263667, 'ptBR', '', '', '', '', 'Manto da Caoscendência', 67186), +(263666, 'ptBR', '', '', '', '', 'Cinto da Caoscendência', 67186), +(263665, 'ptBR', '', '', '', '', 'Brafoneiras da Caoscendência', 67186), +(263664, 'ptBR', '', '', '', '', 'Perneiras da Caoscendência', 67186), +(263663, 'ptBR', '', '', '', '', 'Halo da Caoscendência', 67186), +(263662, 'ptBR', '', '', '', '', 'Protetores de Mão da Caoscendência', 67186), +(263661, 'ptBR', '', '', '', '', 'Botas da Caoscendência', 67186), +(263660, 'ptBR', '', '', '', '', 'Vestes da Caoscendência', 67186), +(263659, 'ptBR', '', '', '', '', 'Grevas do Julgamento do Caos', 67186), +(263658, 'ptBR', '', '', '', '', 'Amarras do Julgamento do Caos', 67186), +(263657, 'ptBR', '', '', '', '', 'Manto do Julgamento do Caos', 67186), +(263656, 'ptBR', '', '', '', '', 'Cinto do Julgamento do Caos', 67186), +(263655, 'ptBR', '', '', '', '', 'Espaldares do Julgamento do Caos', 67186), +(263654, 'ptBR', '', '', '', '', 'Coxotes do Julgamento do Caos', 67186), +(263653, 'ptBR', '', '', '', '', 'Coroa do Julgamento do Caos', 67186), +(263652, 'ptBR', '', '', '', '', 'Manoplas do Julgamento do Caos', 67186), +(263651, 'ptBR', '', '', '', '', 'Escarpes do Julgamento do Caos', 67186), +(263650, 'ptBR', '', '', '', '', 'Peitoral do Julgamento do Caos', 67186), +(263649, 'ptBR', '', '', '', '', 'Amarras do Acólito do Caos', 67186), +(263648, 'ptBR', '', '', '', '', 'Manto do Acólito do Caos', 67186), +(263647, 'ptBR', '', '', '', '', 'Cordão do Acólito do Caos', 67186), +(263646, 'ptBR', '', '', '', '', 'Espaldares do Acólito do Caos', 67186), +(263645, 'ptBR', '', '', '', '', 'Calças do Acólito do Caos', 67186), +(263644, 'ptBR', '', '', '', '', 'Elmo do Acólito do Caos', 67186), +(263643, 'ptBR', '', '', '', '', 'Guantes do Acólito do Caos', 67186), +(263642, 'ptBR', '', '', '', '', 'Garras do Acólito do Caos', 67186), +(263641, 'ptBR', '', '', '', '', 'Colete do Acólito do Caos', 67186), +(263640, 'ptBR', '', '', '', '', 'Blusa Venticaos', 67186), +(263639, 'ptBR', '', '', '', '', 'Amarras Venticaos', 67186), +(263638, 'ptBR', '', '', '', '', 'Manto Venticaos', 67186), +(263637, 'ptBR', '', '', '', '', 'Cinto Venticaos', 67186), +(263636, 'ptBR', '', '', '', '', 'Dragonas Venticaos', 67186), +(263635, 'ptBR', '', '', '', '', 'Calças Venticaos', 67186), +(263634, 'ptBR', '', '', '', '', 'Coroa Venticaos', 67186), +(263633, 'ptBR', '', '', '', '', 'Luvas Venticaos', 67186), +(263632, 'ptBR', '', '', '', '', 'Botas Venticaos', 67186), +(263631, 'ptBR', '', '', '', '', 'Vestes Venticaos', 67186), +(263630, 'ptBR', '', '', '', '', 'Braçadeiras do Espreitador do Caos', 67186), +(263629, 'ptBR', '', '', '', '', 'Manto do Espreitador do Caos', 67186), +(263628, 'ptBR', '', '', '', '', 'Cinto do Espreitador do Caos', 67186), +(263627, 'ptBR', '', '', '', '', 'Espaldares do Espreitador do Caos', 67186), +(263626, 'ptBR', '', '', '', '', 'Guarda-pernas do Espreitador do Caos', 67186), +(263625, 'ptBR', '', '', '', '', 'Elmo do Espreitador do Caos', 67186), +(263624, 'ptBR', '', '', '', '', 'Manoplas do Espreitador do Caos', 67186), +(263623, 'ptBR', '', '', '', '', 'Grevas do Espreitador do Caos', 67186), +(263622, 'ptBR', '', '', '', '', 'Peitoral do Espreitador do Caos', 67186), +(263621, 'ptBR', '', '', '', '', 'Avambraços do Guardador do Caos', 67186), +(263620, 'ptBR', '', '', '', '', 'Manto do Guardador do Caos', 67186), +(263619, 'ptBR', '', '', '', '', 'Cinturão do Guardador do Caos', 67186), +(263618, 'ptBR', '', '', '', '', 'Brafoneiras do Guardador do Caos', 67186), +(263617, 'ptBR', '', '', '', '', 'Coxotes do Guardador do Caos', 67186), +(263616, 'ptBR', '', '', '', '', 'Coroa do Guardador do Caos', 67186), +(263615, 'ptBR', '', '', '', '', 'Garras do Guardador do Caos', 67186), +(263614, 'ptBR', '', '', '', '', 'Unhas do Guardador do Caos', 67186), +(263613, 'ptBR', '', '', '', '', 'Peitoral do Guardador do Caos', 67186), +(263612, 'ptBR', '', '', '', '', 'Couraça da Ira Caótica', 67186), +(263611, 'ptBR', '', '', '', '', 'Braçadeiras da Ira Caótica', 67186), +(263610, 'ptBR', '', '', '', '', 'Manto da Ira Caótica', 67186), +(263609, 'ptBR', '', '', '', '', 'Cinto da Ira Caótica', 67186), +(263608, 'ptBR', '', '', '', '', 'Brafoneiras da Ira Caótica', 67186), +(263607, 'ptBR', '', '', '', '', 'Guarda-pernas da Ira Caótica', 67186), +(263606, 'ptBR', '', '', '', '', 'Mantel da Ira Caótica', 67186), +(263605, 'ptBR', '', '', '', '', 'Protetores de Mão da Ira Caótica', 67186), +(263604, 'ptBR', '', '', '', '', 'Botas da Ira Caótica', 67186), +(263603, 'ptBR', '', '', '', '', 'Veste da Ira Caótica', 67186), +(263602, 'ptBR', '', '', '', '', 'Braçadeiras do Emissário do Caos', 67186), +(263601, 'ptBR', '', '', '', '', 'Manto do Emissário do Caos', 67186), +(263600, 'ptBR', '', '', '', '', 'Cordão do Emissário do Caos', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'ptBR', '', '', '', '', 'Ombreiras do Emissário do Caos', 67186), +(263598, 'ptBR', '', '', '', '', 'Perneiras do Emissário do Caos', 67186), +(263597, 'ptBR', '', '', '', '', 'Morrião do Emissário do Caos', 67186), +(263596, 'ptBR', '', '', '', '', 'Luvas do Emissário do Caos', 67186), +(263595, 'ptBR', '', '', '', '', 'Sandálias do Emissário do Caos', 67186), +(263594, 'ptBR', '', '', '', '', 'Arnês do Emissário do Caos', 67186), +(263593, 'ptBR', '', '', '', '', 'Avambraços do Ginete do Caos', 67186), +(263592, 'ptBR', '', '', '', '', 'Manto do Ginete do Caos', 67186), +(263591, 'ptBR', '', '', '', '', 'Cinturão do Ginete do Caos', 67186), +(263590, 'ptBR', '', '', '', '', 'Brafoneiras do Ginete do Caos', 67186), +(263589, 'ptBR', '', '', '', '', 'Perneiras do Ginete do Caos', 67186), +(263588, 'ptBR', '', '', '', '', 'Elmo do Ginete do Caos', 67186), +(263587, 'ptBR', '', '', '', '', 'Luvas do Ginete do Caos', 67186), +(263586, 'ptBR', '', '', '', '', 'Escarpes do Ginete do Caos', 67186), +(263585, 'ptBR', '', '', '', '', 'Peitoral do Ginete do Caos', 67186), +(251161, 'ptBR', 'Uma relíquia dos rituais secretos e deturpados dos Ramatorpes.', '', '', '', 'Mortalha do Caçador de Almas', 67186), +(133494, 'ptBR', '', '', '', '', 'Cinto do Zumbi Escabroso', 67186), +(49810, 'ptBR', '', '', '', '', 'Cinto do Zumbi Escabroso', 67186), +(264323, 'ptBR', 'Contém um cosmético de Arma Tocada pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Armas Tocadas pelo Caos', 67186), +(264322, 'ptBR', 'Contém cosméticos de Botas Tocadas pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Botas Tocadas pelo Caos', 67186), +(264321, 'ptBR', 'Contém cosméticos de Vestes de Perna Tocadas pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Vestes de Perna Tocadas pelo Caos', 67186), +(264320, 'ptBR', 'Contém cosméticos de Cintos Tocados pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Cintos Tocadas pelo Caos', 67186), +(264319, 'ptBR', 'Contém cosméticos de Luvas Tocadas pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Luvas Tocadas pelo Caos', 67186), +(264318, 'ptBR', 'Contém cosméticos de Braçadeiras Tocadas pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Braçadeiras Tocadas pelo Caos', 67186), +(264317, 'ptBR', 'Contém um cosmético de Peito d\'Armas Tocado pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Peito d\'Armas Tocado pelo Caos', 67186), +(264316, 'ptBR', 'Contém um cosmético de Manto Tocado pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Mantos Tocados pelo Caos', 67186), +(264315, 'ptBR', 'Contém cosméticos de Omoplatas Tocadas pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Vestes de Ombro Tocadas pelo Caos', 67186), +(264314, 'ptBR', 'Contém um cosmético de Elmo Tocado pelo Caos que você não tem em sua coleção.', '', '', '', 'Reserva de Almofre Tocado pelo Caos', 67186), +(256700, 'ptBR', 'Ensina a fazer Sinete das Bênçãos Azerothianas.', '', '', '', 'Desenho: Sinete das Bênçãos Azerothianas', 67186), +(250445, 'ptBR', '', '', '', '', 'Eco de Abundância: Encantamento', 67186), +(250360, 'ptBR', '', '', '', '', 'Eco de Abundância: Esfolamento', 67186), +(250443, 'ptBR', '', '', '', '', 'Eco de Abundância: Herborismo', 67186), +(272125, 'ptBR', 'Contém ouro, Silte de Luz Caótica e um item para sua especialização atual em reconhecimento à sua competência em campo.', '', '', '', 'Baú do Recruta', 67186), +(263286, 'ptBR', '', '', '', '', 'Gongo Fungoriano Reaproveitado', 67186), +(273307, 'ptBR', 'Recém-espremida por um empreendedor intrépido! Cintilando com cristais de açúcar... Ou seriam cristais de mana?', '', '', '', 'Ampola de Limonada Intrépida', 67186), +(265790, 'ptBR', 'Uma algibeira contendo 10 Brasões Aurorais Heroicos e Míticos.', '', '', '', 'Baú de Brasões Aurorais', 67186), +(246753, 'ptBR', '', '', '', '', 'Punhado Glorioso de Brasões Aurorais Míticos', 67186), +(255627, 'ptBR', '', '', '', '', 'Martelo do Gladiador Galáctico', 67186), +(266969, 'ptBR', '', '', '', '', 'Indumentária: Vestimenta do Mergulhador das Profundezas', 67186), +(253582, 'ptBR', '', '', '', '', 'Açoitador Presatana', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'ptBR', 'Tanques', '$bullet; O Acumulista junta recursos da pilha mais próxima durante |cFF2959D3|Hspell:1235072|h[Medidas Providenciais]|h|r.\n$bullet; Cogumelos Podres aplicam |cFF2959D3|Hspell:1234846|h[Esporos Tóxicos]|h|r com o contato, impedindo que explodam num |cFF2959D3|Hspell:1245593|h[Estouro Pútrido]|h|r.\n$bullet; |cFF2959D3|Hspell:1234681|h[Urro Voraz]|h|r e |cFF2959D3|Hspell:1235125|h[Urro Substancial]|h|r causam dano elevado a todos os jogadores.', 67186), +(32669, 'ptBR', 'Visão Geral', 'O Acumulista impede que as reservas dele sejam furtadas a qualquer custo, lançando |cFF2959D3|Hspell:1235072|h[Medidas Providenciais]|h|r ao atingir 90%, 60% e 30% dos pontos de vida, fortalecendo uma das habilidades dele.\n\nAo atingir 100 de energia, ele lança |cFF2959D3|Hspell:1234233|h[Suprimentos Estragados]|h|r pela arena, criando Cogumelos Podres por 12 s. Com o contato, os cogumelos aplicam |cFF2959D3|Hspell:1234846|h[Esporos Tóxicos]|h|r e são destruídos, evitando o |cFF2959D3|Hspell:1245593|h[Estouro Pútrido]|h|r.', 67186), +(31527, 'ptBR', 'Carga Proibida', 'Um carregamento que deve ficar longe de olhares curiosos. Funciona como uma excelente cobertura.', 67186), +(31282, 'ptBR', 'Tanque', '$bullet; Kystia usa a |cFF2959D3|Hspell:1230289|h[Infusão Ilícita]|h|r para tornar Mordisco agressivo contra os jogadores.\n$bullet;Esquive-se do |cFF2959D3|Hspell:1253811|h[Spray Vil]|h|r de Mordisco.\n$bullet; Interrompa as |cFF2959D3|Hspell:1264095|h[Imagens Espelhadas]|h|r de Kystia.', 67186), +(31281, 'ptBR', 'Curadores', '$bullet; Kystia usa a |cFF2959D3|Hspell:1230289|h[Infusão Ilícita]|h|r para tornar Mordisco agressivo contra os jogadores.\n$bullet;Esquive-se do |cFF2959D3|Hspell:1253811|h[Spray Vil]|h|r de Mordisco.\n$bullet; Kystia causa muito dano a todos os jogadores enquanto está |cFF2959D3|Hspell:1265412|h[Desestabilizada]|h|r.', 67186), +(31280, 'ptBR', 'Causadores de Dano', '$bullet; Kystia usa a |cFF2959D3|Hspell:1230289|h[Infusão Ilícita]|h|r para tornar Mordisco agressivo contra os jogadores.\n$bullet;Esquive-se do |cFF2959D3|Hspell:1253811|h[Spray Vil]|h|r de Mordisco.\n$bullet; Interrompa as |cFF2959D3|Hspell:1264095|h[Imagens Espelhadas]|h|r de Kystia.', 67186), +(35862, 'ptBR', 'Section 18', '', 67186), +(35353, 'ptBR', 'Seção 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'ptBR', 'Seção 17', '', 67186), +(34733, 'ptBR', 'Astúcia de Xal\'atath', 'Xal\'atath trai os jogadores, revogando as barganhas dela e fazendo com que mortes subtraiam 15 segundos do tempo restante.', 67186), +(34732, 'ptBR', 'Fortificação', 'Inimigos normais têm 20% mais pontos de vida e causam até 20% a mais de dano.', 67186), +(34731, 'ptBR', 'Tirania', 'Chefes têm 25% a mais de pontos de vida. Chefes e seus lacaios causam até 15% a mais de dano.', 67186), +(34730, 'ptBR', 'Tirânica e Fortificada', 'Esses afixos fortalecem ainda mais os inimigos nas Masmorras de Pedra-chave Mítica. Um se ativa no Nível Mítico 7 e o outro no 10, mudando toda semana.', 67186), +(34727, 'ptBR', 'Barganha de Xal\'atath: Devorar', '', 67186), +(34725, 'ptBR', 'Barganha de Xal\'atath: Distorcido pelo Caos', '', 67186), +(34722, 'ptBR', 'Barganha de Xal\'atath: Pulsar', '', 67186), +(34720, 'ptBR', 'Nível Mítico 6', '$bullet;|cFF2959D3|Hspell:1284818|h[Orientação de Lindormi]|h|r foi removida.\n\nPersonagens com uma especialização de tanque podem falar com Lindormi perto do portal dos Percursos Temporais ou ao final de uma Masmorra de Pedra-chave para obter |cFF2959D3|Hspell:1295986|h[Brilho de Lindormi]|h|r, que continuará a destacar as forças inimigas.', 67186), +(35809, 'ptBR', 'Section 158', '', 67186), +(35491, 'ptBR', 'Seção 69', '', 67186), +(35490, 'ptBR', 'Seção 70', '', 67186), +(35489, 'ptBR', 'Seção 76', '', 67186), +(35488, 'ptBR', 'Seção 67', '$[!15,16\nNo modo Heroico ou acima, Galvanizar libera uma Corrente do Morticínio.$]', 67186), +(35477, 'ptBR', 'Seção 22', '', 67186), +(35476, 'ptBR', 'Seção 31', '', 67186), +(35475, 'ptBR', 'Seção 30', '', 67186), +(35474, 'ptBR', 'Seção 29', '', 67186), +(35473, 'ptBR', 'Seção 31', '', 67186), +(35472, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.\n$[!16\nNo modo Mítico, os Cristais da Aurora correm o risco de sofrer Fim da Luz.$]', 67186), +(35471, 'ptBR', 'Seção 22', '', 67186), +(35470, 'ptBR', 'Seção 31', '', 67186), +(35469, 'ptBR', 'Seção 30', '', 67186), +(35468, 'ptBR', 'Seção 29', '', 67186), +(35467, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.\n$[!15\nNo modo Heroico, os Cristais da Aurora podem liberar Lágrimas de L\'ura.$]', 67186), +(35466, 'ptBR', 'Seção 22', '', 67186), +(35465, 'ptBR', 'Seção 31', '', 67186), +(35464, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.', 67186), +(35463, 'ptBR', 'Seção 22', '', 67186), +(35462, 'ptBR', 'Seção 31', '', 67186), +(35461, 'ptBR', 'Seção 30', '', 67186), +(35460, 'ptBR', 'Seção 29', '', 67186), +(35459, 'ptBR', 'Seção 31', '', 67186), +(35458, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.\n$[!16\nNo modo Mítico, os Cristais da Aurora correm o risco de sofrer Fim da Luz.$]', 67186), +(35457, 'ptBR', 'Seção 22', '', 67186), +(35456, 'ptBR', 'Seção 31', '', 67186), +(35455, 'ptBR', 'Seção 30', '', 67186), +(35454, 'ptBR', 'Seção 29', '', 67186), +(35453, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.\n$[!15\nNo modo Heroico, os Cristais da Aurora podem liberar Lágrimas de L\'ura.$]', 67186), +(35452, 'ptBR', 'Seção 22', '', 67186), +(35451, 'ptBR', 'Seção 31', '', 67186), +(35450, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.', 67186), +(35449, 'ptBR', 'Seção 22', '', 67186), +(35448, 'ptBR', 'Seção 31', '', 67186), +(35447, 'ptBR', 'Seção 30', '', 67186), +(35446, 'ptBR', 'Seção 29', '', 67186), +(35445, 'ptBR', 'Seção 31', '', 67186), +(35444, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.\n$[!16\nNo modo Mítico, os Cristais da Aurora correm o risco de sofrer Fim da Luz.$]', 67186), +(35443, 'ptBR', 'Seção 22', '', 67186), +(35442, 'ptBR', 'Seção 31', '', 67186), +(35441, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.', 67186), +(35440, 'ptBR', 'Seção 108', '', 67186), +(35439, 'ptBR', 'Seção 108', '', 67186), +(35438, 'ptBR', 'Seção 107', '', 67186), +(35435, 'ptBR', 'Seção 105', '', 67186), +(35434, 'ptBR', 'Seção 104', '', 67186), +(35418, 'ptBR', 'Seção 108', '', 67186), +(35373, 'ptBR', 'Seção 30', '', 67186), +(35371, 'ptBR', 'Seção 29', '', 67186), +(35366, 'ptBR', 'Seção 31', '', 67186), +(35361, 'ptBR', 'Seção 22', '', 67186), +(35360, 'ptBR', 'Cristal da Aurora', 'Fragmento naaru purificado que pode ser segurado pelos jogadores.\n$[!15\nNo modo Heroico, os Cristais da Aurora podem liberar Lágrimas de L\'ura.$]', 67186), +(35357, 'ptBR', 'Seção 106', '', 67186), +(35344, 'ptBR', 'Seção 23', '', 67186), +(35343, 'ptBR', 'Seção 22', '', 67186), +(35342, 'ptBR', 'Cristal Crepuscular', 'Fragmento naaru desvanecente que pode ser restaurado.', 67186), +(35341, 'ptBR', 'Seção 24', '', 67186), +(35340, 'ptBR', 'Cristal da Meia-noite', 'Fragmento naaru sombrio sem salvação.', 67186), +(35339, 'ptBR', 'Seção 19', '', 67186), +(35338, 'ptBR', 'Seção 18', '', 67186), +(35336, 'ptBR', 'Seção 16', '', 67186), +(35328, 'ptBR', 'Seção 11', '', 67186), +(35327, 'ptBR', 'Seção 10', '', 67186), +(35326, 'ptBR', 'Seção 9', '', 67186), +(35325, 'ptBR', 'Seção 8', '$[!15\nNo modo Heroico, o número de notas aumenta com cada melodia.$]', 67186), +(35324, 'ptBR', 'Seção 11', '', 67186), +(35319, 'ptBR', 'Seção 80', '', 67186), +(35317, 'ptBR', 'Seção 69', '', 67186), +(35316, 'ptBR', 'Seção 70', '', 67186), +(35315, 'ptBR', 'Seção 76', '', 67186), +(35314, 'ptBR', 'Seção 67', '$[!15,16\nNo modo Heroico ou acima, Galvanizar libera uma Corrente do Morticínio.$]', 67186), +(35311, 'ptBR', 'Seção 69', '', 67186), +(35309, 'ptBR', 'Seção 74', '', 67186), +(35274, 'ptBR', 'Seção 70', '$[!16\nNo modo Mítico, a Fissão Cósmica alcança Criticalidade.$]', 67186), +(35273, 'ptBR', 'Seção 69', '', 67186), +(35272, 'ptBR', 'Seção 67', '', 67186), +(35131, 'ptBR', 'Seção 13', '', 67186), +(35106, 'ptBR', 'Seção 67', '', 67186), +(35068, 'ptBR', 'Seção 64', '', 67186), +(35067, 'ptBR', 'Seção 63', '', 67186), +(35041, 'ptBR', 'Seção 35', '', 67186), +(35040, 'ptBR', 'Seção 51', '', 67186), +(35038, 'ptBR', 'Seção 14', '', 67186), +(35037, 'ptBR', 'Seção 14', '', 67186), +(35036, 'ptBR', 'Intervalo: Eclipse Total', 'Contemple a luz se partir e desvanecer.', 67186), +(34847, 'ptBR', 'Seção 11', '', 67186), +(34846, 'ptBR', 'Seção 10', '', 67186), +(34845, 'ptBR', 'Seção 9', '', 67186), +(34844, 'ptBR', 'Seção 8', '', 67186), +(34474, 'ptBR', 'Seção 44', '', 67186), +(34456, 'ptBR', 'Seção 45', '', 67186), +(34450, 'ptBR', 'Seção 46', '', 67186), +(34243, 'ptBR', 'Seção 14', '', 67186), +(34242, 'ptBR', 'Seção 14', '', 67186), +(34001, 'ptBR', 'Seção 38', '', 67186), +(34000, 'ptBR', 'Seção 35', '', 67186), +(33990, 'ptBR', 'Seção 32', '', 67186), +(33989, 'ptBR', 'Seção 32', '', 67186), +(33983, 'ptBR', 'Seção 23', '', 67186), +(33982, 'ptBR', 'Seção 22', '', 67186), +(33981, 'ptBR', 'Cristal Crepuscular', 'Fragmento naaru desvanecente que pode ser restaurado.', 67186), +(33975, 'ptBR', 'Seção 25', '', 67186), +(33924, 'ptBR', 'Seção 24', '', 67186), +(33742, 'ptBR', 'Cristal da Meia-noite', 'Fragmento naaru sombrio sem salvação.', 67186), +(33741, 'ptBR', 'Seção 19', '', 67186), +(33740, 'ptBR', 'Seção 15', '', 67186), +(33739, 'ptBR', 'Seção 18', '', 67186), +(33738, 'ptBR', 'Matriz de Extermínio', '', 67186), +(33737, 'ptBR', 'Seção 16', '', 67186), +(33640, 'ptBR', 'Seção 12', '', 67186), +(33638, 'ptBR', 'Estágio Dois: O Reator Sombrio', 'Aventure-se no engenho de desolação.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Seção 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='ptBR'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='ptBR'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'ptBR', 'Saudações, $Gacólito:acólita;!\n\nContemple a maravilha deste domínio, que transborda de ABUNDÂNCIA GLORIOSA! Ela fervilha, se assoma e não se deixa conter!\n\nSua devoção ao meu ser divino merece uma pequena benevolência. Desta vez, na forma de Abundância Impoluta!\n\nE saiba de uma coisa, $Ggentil acólito:gentil acólita;: certas oferendas, como a Vitalidade Fundida, aparecem com outros fornecedores. Talvez você os encontre caso decida se aventurar nas Profundezas de Zul\'Aman.\n\nDesejo a você as melhores colheitas!\n\nDundun, Loa da Abundância', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='ptBR'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'ptBR', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='ptBR'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'ptBR', 'Academia Algeth\'ar', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'ptBR', 'Tanquetalhador Alto-rendimento', '|cFFFFD200Comerciante:|r Lindormi|n', '', 67186), +(3009, 'ptBR', 'Tanquetalhador Especulativo', '|cFFFFD200Comerciante:|r Lindormi|n', '', 67186), +(3008, 'ptBR', 'Tanquetalhador Verde-lucro', '|cFFFFD200Comerciante:|r Lindormi|n', '', 67186), +(3007, 'ptBR', 'Tanquetalhador Primeira-linha', '|cFFFFD200Comerciante:|r Lindormi|n', '', 67186), +(3006, 'ptBR', 'Traje de Meca de Ametista', '|cFFFFD200Comerciante:|r Lindormi|n', '', 67186), +(3005, 'ptBR', 'Mortívago Cerúleo', '|cFFFFD200Comerciante:|r Lindormi|n', '', 67186), +(2535, 'ptBR', 'Lince Marcado pelo Caos', '|cFFFFD200Saque:|r Bolsa do Sectário Confiscada', 'Domar linces é uma prática que os Arathi aperfeiçoaram por anos e anos. Embora os sectários do Ocaso permaneçam devotados à própria causa, eles ainda seguem essa tradição.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='ptBR'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'ptBR', 'Pescar com os Pescadores do Abismo', 'Fale com Jeju, o Mergulhador Profundo, na praia de Profundezas de Zul\'Aman para começar a pescar.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'ptBR', '', 67186), +(158259, 'ptBR', '', 67186), +(158261, 'ptBR', '', 67186), +(156069, 'ptBR', 'Requer conquista:|nPescadores do Abismo: Explorador do infinito azul', 67186), +(151169, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Ídolo das Profundezas', 67186), +(151168, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Rede com Fios Triplos', 67186), +(151167, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Rede de Baixio', 67186), +(151166, 'ptBR', 'Requer a conquista: Pescadores do Abismo: Torreta de Arpão de Núcleo Oco', 67186), +(151165, 'ptBR', 'Requer conquista: Pescadores do Abismo: Canhão de Arpão Pesado', 67186), +(151161, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Barbatanas da Fossa de Pahk', 67186), +(151160, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Graxa das Profundezas', 67186), +(151159, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Juntas Reforçadas', 67186), +(151158, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Tanque de Respiração de Nalorakk', 67186), +(151157, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Tanque Testado nas Profundezas', 67186), +(151155, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Tanque Usado do Mergulhador das Profundezas', 67186), +(155979, 'ptBR', '', 67186), +(157695, 'ptBR', 'Disponível apenas nas imersões de grau 11.', 67186), +(157666, 'ptBR', '', 67186), +(157603, 'ptBR', 'Desbloqueie ao progredir na Jornada do Imersor da Série 1.', 67186), +(154160, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154159, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154158, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154157, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154156, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154155, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154154, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154153, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154152, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(154151, 'ptBR', 'Você coletou todos os visuais de transmogrificação contidos nesse tesouro.', 67186), +(157668, 'ptBR', 'Você não tem uma Sela Perdida no Tempo. Não é possível comprar este item.', 67186), +(155203, 'ptBR', '', 67186), +(155192, 'ptBR', '', 67186), +(155185, 'ptBR', '', 67186), +(154642, 'ptBR', '', 67186), +(156525, 'ptBR', '', 67186), +(156524, 'ptBR', '', 67186), +(151196, 'ptBR', '', 67186), +(157003, 'ptBR', '', 67186), +(157002, 'ptBR', '', 67186), +(156957, 'ptBR', '', 67186), +(156933, 'ptBR', '', 67186), +(151162, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Engodo de Nadisco', 67186), +(156816, 'ptBR', '', 67186), +(154472, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Luneta Pressurizada', 67186), +(151164, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Carne de Lamatriscapé', 67186), +(151163, 'ptBR', 'Requer a conquista:|nPescadores do Abismo: Isca de Barbagre', 67186), +(142975, 'ptBR', 'Você não pode ganhar 10 Brasões Aurorais Míticos no momento.', 67186), +(156592, 'ptBR', '', 67186), +(156591, 'ptBR', '', 67186), +(156536, 'ptBR', '', 67186), +(156537, 'ptBR', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'ptBR', 'Pescadores do Abismo', 67186), +(3389, 'ptBR', 'Golpe aos Pilares: Cachoeira Cintília', 67186), +(3308, 'ptBR', 'Fissura do Caos: Praia do Entardecer', 67186), +(3291, 'ptBR', 'Vácuo de Poder', 67186), +(3280, 'ptBR', 'Pórtico Errante', 67186), +(3251, 'ptBR', 'Ritual do Caos: Gris', 67186), +(3245, 'ptBR', 'Trabalho e Tormento', 67186), +(3234, 'ptBR', 'Relíquias Profanadas do Junco', 67186), +(3233, 'ptBR', 'Enquanto Estivermos Caídos', 67186), +(3229, 'ptBR', 'Ilha dos Andacaos', 67186), +(3209, 'ptBR', '[DNT] Example Scenario', 67186), +(3206, 'ptBR', 'Cenário Modelo', 67186), +(3180, 'ptBR', 'Um Ritual Reforçado', 67186), +(3174, 'ptBR', 'Incursão do Caos', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'ptBR', 'Apanhe vida aquática e descubra tesouros nas Profundezas de Zul\'Aman.', 'Pescadores do Abismo', 67186), +(16090, 'ptBR', '', 'Fase de buscar', 67186), +(16088, 'ptBR', '', 'Fase de se esconder', 67186), +(16441, 'ptBR', 'Colete Centelhas Arcanas das nagas e de seus sifões, depois leve as centelhas até os Pilares.', 'Potencializando os pilares', 67186), +(16376, 'ptBR', 'Derrote o comandante domanaar.', 'Falxidade tem limite', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'ptBR', '', '', 67186), +(58555, 'ptBR', '', '', 67186), +(58554, 'ptBR', '', '', 67186), +(58553, 'ptBR', '', '', 67186), +(58545, 'ptBR', '', '', 67186), +(58544, 'ptBR', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'ptBR', 'Linha de Tecelã Algari', '', 67186), +(8555, 'ptBR', '+$k1 de Atributo Primário e +$k2 de Armadura', '', 67186), +(8554, 'ptBR', '+$k1 de Atributo Primário e +$k2 de Armadura', '', 67186), +(5001, 'ptBR', 'Espigão de Ferro Fantasma', '', 67186), +(4216, 'ptBR', 'Espigão de Pírio', '', 67186), +(4215, 'ptBR', 'Espigão de Elemêntio', '', 67186), +(3748, 'ptBR', 'Espigão de Titânio', '', 67186), +(2714, 'ptBR', 'Espigão de Açovil', '', 67186), +(1704, 'ptBR', 'Espigão de Tório', '', 67186), +(463, 'ptBR', 'Espigão de Mithril', '', 67186), +(43, 'ptBR', 'Espigão de Ferro', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'ptBR', 'Atordoado', 67186), +(1253377, 'ptBR', 'Ascensão Meteórica', 67186), +(1270444, 'ptBR', 'Raiva Desprendida', 67186), +(441587, 'ptBR', 'Cobertura Nublosa', 67186), +(441429, 'ptBR', 'Cobertura Nublosa', 67186), +(1298446, 'ptBR', 'Vínculo Inquebrável', 67186), +(1223323, 'ptBR', 'Vínculo Inquebrável', 67186), +(1293502, 'ptBR', '[DNT] Fused Vitality', 67186), +(1270491, 'ptBR', 'Devoção Profana', 67186), +(1241077, 'ptBR', 'Foice Purulenta', 67186), +(458128, 'ptBR', 'Foice Purulenta', 67186), +(363916, 'ptBR', 'Escamas de Obsidiana', 67186), +(353319, 'ptBR', 'Tece-paz', 67186), +(125174, 'ptBR', 'Toque do Karma', 67186), +(122470, 'ptBR', 'Toque do Karma', 67186), +(23920, 'ptBR', 'Reflexão de Feitiço', 67186), +(1237942, 'ptBR', 'Isquinha', 67186), +(1235216, 'ptBR', 'Percepção da Meia-noite', 67186), +(1225245, 'ptBR', 'Enxameador Sin\'dorei', 67186), +(1295986, 'ptBR', 'Brilho de Lindormi', 67186), +(1278156, 'ptBR', 'Orientação de Lindormi', 67186), +(1298074, 'ptBR', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'ptBR', '', 67186), +(390260, 'ptBR', '', 67186), +(1297413, 'ptBR', 'Provocar Esqueletos', 67186), +(149981, 'ptBR', 'Provocar Esqueletos', 67186), +(1289789, 'ptBR', 'Semblante de Batalha', 67186), +(1283168, 'ptBR', 'Combinar Estilhaços do Caos Ascendente', 67186), +(1282778, 'ptBR', 'Núcleo Caótico Ascendente', 67186), +(1264876, 'ptBR', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'ptBR', 'Resíduo Espectral', 67186), +(447444, 'ptBR', 'Fenda Entrópica', 67186), +(210824, 'ptBR', 'Toque dos Magos', 67186), +(1280123, 'ptBR', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'ptBR', 'Tanquetalhador Especulativo', 67186), +(1296759, 'ptBR', 'Tanquetalhador Alto-rendimento', 67186), +(1296758, 'ptBR', 'Tanquetalhador Verde-lucro', 67186), +(1296756, 'ptBR', 'Tanquetalhador Primeira-linha', 67186), +(1296734, 'ptBR', 'Traje de Meca de Ametista', 67186), +(1296731, 'ptBR', 'Mortívago Cerúleo', 67186), +(466930, 'ptBR', 'Flecha Negra', 67186), +(1291739, 'ptBR', 'Dádiva Malevolente', 67186), +(1281946, 'ptBR', 'Pescador do Abismo', 67186), +(1270634, 'ptBR', 'Desviador de Transbordamento', 67186), +(1270085, 'ptBR', 'Proteção Macabra', 67186), +(1270079, 'ptBR', 'Proteção Macabra', 67186), +(1258411, 'ptBR', 'Imitação de Hadggar de Kryenna', 67186), +(1258410, 'ptBR', 'Imitação de Hadggar de Kryenna', 67186), +(1258336, 'ptBR', 'Aviso Final', 67186), +(1257809, 'ptBR', 'Imitação de Hadggar de Kryenna', 67186), +(1257729, 'ptBR', 'Reanimação', 67186), +(1257728, 'ptBR', 'Reanimação', 67186), +(1257716, 'ptBR', 'Reanimação', 67186), +(1257505, 'ptBR', 'Proteção Macabra', 67186), +(1256189, 'ptBR', 'Pescador do Abismo', 67186), +(1255966, 'ptBR', 'Aquela Regenerada', 67186), +(1253337, 'ptBR', 'Imitação de Hadggar de Kryenna', 67186), +(1253336, 'ptBR', 'Imitação de Hadggar de Kryenna', 67186), +(1253194, 'ptBR', 'Medidas Providenciais', 67186), +(1253193, 'ptBR', 'Medidas Providenciais', 67186), +(1253185, 'ptBR', 'Medidas Providenciais', 67186), +(1253064, 'ptBR', 'Pescador do Abismo', 67186), +(1252431, 'ptBR', 'Raio Poderoso (Liberto)', 67186), +(1241032, 'ptBR', 'Aviso Final', 67186), +(1241023, 'ptBR', 'Aviso Final', 67186), +(1235076, 'ptBR', 'Medidas Providenciais', 67186), +(1235075, 'ptBR', 'Medidas Providenciais', 67186), +(1235072, 'ptBR', 'Medidas Providenciais', 67186), +(1235067, 'ptBR', 'Medidas Providenciais', 67186), +(1235066, 'ptBR', 'Medidas Providenciais', 67186), +(1235065, 'ptBR', 'Medidas Providenciais', 67186), +(1235037, 'ptBR', 'Medidas Providenciais', 67186), +(1233865, 'ptBR', 'Corona Nula', 67186), +(1228865, 'ptBR', 'Lince Marcado pelo Caos', 67186), +(1225598, 'ptBR', 'Pescador do Abismo', 67186), +(1225322, 'ptBR', 'Floresta do Canto Eterno', 67186), +(1225281, 'ptBR', 'Lumitana Macio', 67186), +(1225277, 'ptBR', 'Peixe-canção Restaurado', 67186), +(1225273, 'ptBR', 'Polvo Agourento', 67186), +(1225272, 'ptBR', 'Peixe-espinho Cintilante', 67186), +(444803, 'ptBR', 'Celacanto despertado', 67186), +(1250759, 'ptBR', 'Grânulo Negro', 67186), +(1276894, 'ptBR', 'Transmutar Núcleo Caótico Elemental', 67186), +(1296448, 'ptBR', 'Salto Temerário', 67186), +(472053, 'ptBR', 'Salto Temerário', 67186), +(1296214, 'ptBR', 'Matriz do Caos Galáctica', 67186), +(1296205, 'ptBR', 'Triplicar', 67186), +(1296169, 'ptBR', 'Nuvem Tempestuosa', 67186), +(1296168, 'ptBR', 'Nuvem Tempestuosa', 67186), +(1291767, 'ptBR', 'Chuva de Meteoros', 67186), +(1296406, 'ptBR', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'ptBR', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'ptBR', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'ptBR', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'ptBR', 'Brilho de Lindormi', 67186), +(1265971, 'ptBR', 'Armamentos Profanos', 67186), +(444769, 'ptBR', 'Fim Iminente', 67186), +(1256191, 'ptBR', 'Encerrar Mergulho', 67186), +(1272821, 'ptBR', 'Sabedoria da Muralha', 67186), +(1244331, 'ptBR', 'Floretérnia', 67186), +(441845, 'ptBR', 'Mirar no Coração', 67186), +(243435, 'ptBR', 'Cerveja Fortificante', 67186), +(221562, 'ptBR', 'Asfixiar', 67186), +(205630, 'ptBR', 'Agarrão de Illidan', 67186), +(198158, 'ptBR', 'Invisibilidade em Massa', 67186), +(108194, 'ptBR', 'Asfixiar', 67186), +(1291860, 'ptBR', 'Comida e Bebida', 67186), +(1291859, 'ptBR', 'Comida e Bebida', 67186), +(1291858, 'ptBR', 'Comida e Bebida', 67186), +(1291857, 'ptBR', 'Comida e Bebida', 67186), +(1291856, 'ptBR', 'Comida e Bebida', 67186), +(1291855, 'ptBR', 'Comida e Bebida', 67186), +(1291854, 'ptBR', 'Comida e Bebida', 67186), +(1291853, 'ptBR', 'Comida e Bebida', 67186), +(1291852, 'ptBR', 'Comida e Bebida', 67186), +(1291851, 'ptBR', 'Comida e Bebida', 67186), +(1291850, 'ptBR', 'Comida e Bebida', 67186), +(1291849, 'ptBR', 'Comida e Bebida', 67186), +(1291848, 'ptBR', 'Comida', 67186), +(1291847, 'ptBR', 'Comida', 67186), +(1291846, 'ptBR', 'Comida', 67186), +(1291845, 'ptBR', 'Comida', 67186), +(1291844, 'ptBR', 'Comida', 67186), +(1291843, 'ptBR', 'Comida', 67186), +(1291842, 'ptBR', 'Comida', 67186), +(1291841, 'ptBR', 'Comida', 67186), +(1291840, 'ptBR', 'Comida', 67186), +(1291839, 'ptBR', 'Comida', 67186), +(1291838, 'ptBR', 'Comida', 67186), +(1291837, 'ptBR', 'Comida', 67186), +(1291831, 'ptBR', 'Bebida', 67186), +(1291828, 'ptBR', 'Comida', 67186), +(1291827, 'ptBR', 'Comida', 67186), +(1291826, 'ptBR', 'Comida', 67186), +(1291825, 'ptBR', 'Comida', 67186), +(1291824, 'ptBR', 'Comida', 67186), +(1291822, 'ptBR', 'Comida', 67186), +(1291791, 'ptBR', 'Bebida', 67186), +(1290929, 'ptBR', 'Bebida', 67186), +(1290926, 'ptBR', 'Comida', 67186), +(1290925, 'ptBR', 'Comida', 67186), +(1289221, 'ptBR', 'Recompensa do Guardião da Luz', 67186), +(1286537, 'ptBR', 'Comida e Bebida', 67186), +(1286536, 'ptBR', 'Bebida', 67186), +(1286535, 'ptBR', 'Comida', 67186), +(1282100, 'ptBR', 'Banco Animado', 67186), +(1282018, 'ptBR', 'Banco Animado', 67186), +(1277461, 'ptBR', 'Bebida', 67186), +(1269922, 'ptBR', 'Comida', 67186), +(1269921, 'ptBR', 'Comida', 67186), +(1269920, 'ptBR', 'Comida', 67186), +(1269919, 'ptBR', 'Bebida', 67186), +(1269918, 'ptBR', 'Bebida', 67186), +(1269917, 'ptBR', 'Comida e Bebida', 67186), +(1269916, 'ptBR', 'Comida e Bebida', 67186), +(1232065, 'ptBR', 'Comida e Bebida', 67186), +(1295592, 'ptBR', '[DNT] Clear Voidspire', 67186), +(1244341, 'ptBR', 'Floretérnia', 67186), +(1262378, 'ptBR', 'Coroa de Ébano da Subjugação', 67186), +(1262377, 'ptBR', 'Coroa de Ébano da Subjugação', 67186), +(1262376, 'ptBR', 'Coroa de Ébano da Subjugação', 67186), +(1262365, 'ptBR', 'Mandato da Morte Sagrada', 67186), +(1262364, 'ptBR', 'Mandato da Morte Sagrada', 67186), +(1262359, 'ptBR', 'Mandato da Morte Sagrada', 67186), +(1248931, 'ptBR', 'Coroa de Ébano da Subjugação', 67186), +(1248927, 'ptBR', 'Mandato da Morte Sagrada', 67186), +(1277796, 'ptBR', 'Anular Mágica', 67186), +(1256862, 'ptBR', 'Flecha Antimagia', 67186), +(1256861, 'ptBR', 'Salto Dissipador', 67186), +(1256860, 'ptBR', 'Foco Dissipador', 67186), +(1256010, 'ptBR', 'Campo de Nulificação', 67186), +(1295508, 'ptBR', 'Aprendendo', 67186), +(1295497, 'ptBR', 'Nerubiano', 67186), +(1295486, 'ptBR', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'ptBR', 'Oração Sombria', 67186), +(1243616, 'ptBR', 'Essência do Caos Instável', 67186), +(1243615, 'ptBR', 'Essência do Caos Instável', 67186), +(1243613, 'ptBR', 'Essência do Caos Instável', 67186), +(1243605, 'ptBR', 'Essência do Caos Instável', 67186), +(1243602, 'ptBR', 'Essência do Caos Instável', 67186), +(1243588, 'ptBR', 'Essência do Caos Instável', 67186), +(1243586, 'ptBR', 'Essência do Caos Instável', 67186), +(1257701, 'ptBR', 'Dilaceramento Calcinante', 67186), +(444088, 'ptBR', 'Consumir Chama', 67186), +(1295319, 'ptBR', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'ptBR', 'Dissonância', 67186), +(1295278, 'ptBR', 'Alvo do Frenesi Arrebentador', 67186), +(1295243, 'ptBR', 'Estouro Etéreo', 67186), +(1295237, 'ptBR', 'Estouro Etéreo', 67186), +(1226037, 'ptBR', 'Trinchar Carne', 67186), +(442615, 'ptBR', 'Trinchar Carne', 67186), +(1295194, 'ptBR', '[DNT] Cancel Aura', 67186), +(1241218, 'ptBR', '[DNT] Vision of Self', 67186), +(1294288, 'ptBR', 'Força nas Sombras', 67186), +(1286830, 'ptBR', 'Ping de Bolha de Pescaria - Desaparecimento', 67186), +(1236092, 'ptBR', 'Encantamento de Destreza Sin\'dorei - Ferramenta', 67186), +(1293613, 'ptBR', 'Pescaria de Pescador do Abismo', 67186), +(1286820, 'ptBR', 'Pescaria de Pescador do Abismo', 67186), +(1286703, 'ptBR', 'Pescaria de Pescador do Abismo', 67186), +(1253159, 'ptBR', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'ptBR', 'Abrir o Tesouro', 67186), +(1243683, 'ptBR', 'Punhado Glorioso de Brasões Aurorais Míticos', 67186), +(190784, 'ptBR', 'Corcel Divino', 67186), +(1292124, 'ptBR', '[DNT] Material Creation - Health', 67186), +(1266413, 'ptBR', 'Queimadura do Caos', 67186), +(1244345, 'ptBR', 'Queimadura de Luz', 67186), +(1231327, 'ptBR', 'Caos Consumidor', 67186), +(436358, 'ptBR', 'Demolir', 67186), +(1292071, 'ptBR', 'Falange', 67186), +(1294776, 'ptBR', 'Partícula de Sol Rebrilhante', 67186), +(1273357, 'ptBR', 'Partícula de Sol Rebrilhante', 67186), +(1294727, 'ptBR', 'Bem Alimentado', 67186), +(1294726, 'ptBR', 'Assar Marshmallow', 67186), +(1294720, 'ptBR', 'Atirar', 67186), +(1294703, 'ptBR', 'Atirar', 67186), +(1294669, 'ptBR', 'Investida', 67186), +(1294633, 'ptBR', 'Cuspir Fogo', 67186), +(1294563, 'ptBR', 'Escudo Quebrado', 67186), +(1277795, 'ptBR', 'Anular Mágica', 67186), +(1272179, 'ptBR', 'Pulso Excentro-Mágico - Não Comprado', 67186), +(1269655, 'ptBR', 'Furtividade', 67186), +(1269654, 'ptBR', 'Sentinela Movida a Corda', 67186), +(1269650, 'ptBR', 'Salto Dissipador', 67186), +(1269641, 'ptBR', 'Travessia da Fenda', 67186), +(1269640, 'ptBR', 'Campo de Nulificação', 67186), +(1264545, 'ptBR', 'Trocar', 67186), +(1259647, 'ptBR', 'C40 D3 GU4RD4', 67186), +(1258362, 'ptBR', 'Armadilha: Pássaro Canoro', 67186), +(1256009, 'ptBR', 'Anular Mágica', 67186), +(1251813, 'ptBR', 'Pavor Duradouro', 67186), +(1294779, 'ptBR', 'DNT', 67186), +(1294759, 'ptBR', 'DNT', 67186), +(1294752, 'ptBR', 'Sinfonia Macabra', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'ptBR', '', 67186), +(37073, 'ptBR', '', 67186), +(37072, 'ptBR', '', 67186), +(37065, 'ptBR', '', 67186), +(37064, 'ptBR', '', 67186), +(37063, 'ptBR', '', 67186), +(37050, 'ptBR', '', 67186), +(37049, 'ptBR', '', 67186), +(37048, 'ptBR', '', 67186), +(36911, 'ptBR', '', 67186), +(35166, 'ptBR', '', 67186), +(35165, 'ptBR', '', 67186), +(35164, 'ptBR', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'ptBR', 'Multicriação Meticulosa', '', 'Melhora suas matrizes de Encantamento, aumentando a chance de produzir itens adicionais ao criar ilusões ou consumíveis. Além disso, você ganha +$ev1 de $en1 por ponto nesta especialização.', 67186), +(137685, 'ptBR', '', '', 'Multicriação concede até +$ev1% de mercadorias adicionais ao criar consumíveis.', 67186), +(137681, 'ptBR', '', '', 'Multicriação concede até +$ev1% de mercadorias adicionais ao criar consumíveis.', 67186), +(133669, 'ptBR', '', '', 'Ganha +$ev1 de $en1 ao criar ligas.|n|nDesbloqueia a habilidade de usar reagentes de finalização ao criar ligas.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='ptBR'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'ptBR', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'ptBR', 'Indumentária de Jardim do Aldeão da Floresta', 67186), +(5646, 'ptBR', 'Vestimenta do Mergulhador das Profundezas', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ptBR' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'ptBR', 'Aprendiz Kurgcida', 67186), +(7698, 'ptBR', 'Comerciante do Duelo de Decoração', 67186), +(7693, 'ptBR', 'Baú', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='ptBR') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='ptBR') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='ptBR') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='ptBR') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='ptBR') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='ptBR') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='ptBR') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='ptBR') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='ptBR') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='ptBR') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='ptBR') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='ptBR') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='ptBR') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='ptBR') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='ptBR') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='ptBR') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='ptBR') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='ptBR') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='ptBR') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='ptBR') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='ptBR') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='ptBR') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='ptBR') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='ptBR') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='ptBR') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='ptBR') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='ptBR') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='ptBR') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='ptBR') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='ptBR') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='ptBR') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='ptBR') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='ptBR') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='ptBR') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='ptBR') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='ptBR') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='ptBR') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='ptBR') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='ptBR') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='ptBR') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='ptBR') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='ptBR') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='ptBR') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='ptBR') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='ptBR') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='ptBR') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='ptBR') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='ptBR') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='ptBR') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='ptBR') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='ptBR') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='ptBR') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='ptBR') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='ptBR') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='ptBR') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='ptBR') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='ptBR') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='ptBR') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='ptBR') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='ptBR') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='ptBR') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='ptBR') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='ptBR') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='ptBR') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='ptBR') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='ptBR') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='ptBR') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='ptBR') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='ptBR') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='ptBR') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='ptBR') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='ptBR') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='ptBR') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='ptBR') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='ptBR') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='ptBR') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='ptBR') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='ptBR') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='ptBR') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='ptBR') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='ptBR') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='ptBR') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='ptBR') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='ptBR') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='ptBR') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='ptBR') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='ptBR') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='ptBR') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='ptBR') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='ptBR') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='ptBR') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='ptBR') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='ptBR') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='ptBR') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='ptBR') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='ptBR') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='ptBR') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='ptBR') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='ptBR') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='ptBR') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='ptBR') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='ptBR') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='ptBR') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='ptBR') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='ptBR') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='ptBR') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='ptBR') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='ptBR') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='ptBR') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='ptBR') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='ptBR') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='ptBR') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='ptBR') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='ptBR') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='ptBR') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='ptBR') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='ptBR') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='ptBR') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='ptBR') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='ptBR') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='ptBR') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='ptBR') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='ptBR') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='ptBR') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='ptBR') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='ptBR') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='ptBR') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='ptBR') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='ptBR') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='ptBR') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='ptBR') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='ptBR') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='ptBR') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='ptBR') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='ptBR') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='ptBR') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='ptBR') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='ptBR') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='ptBR') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='ptBR') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='ptBR') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='ptBR') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='ptBR') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='ptBR') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='ptBR') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='ptBR') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='ptBR') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='ptBR') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='ptBR') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='ptBR'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'ptBR', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'ptBR', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'ptBR', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'ptBR', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'ptBR', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'ptBR', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'ptBR', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'ptBR', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'ptBR', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'ptBR', 0x000000, 67186), +(2534422486, 3918, 'ptBR', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'ptBR', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'ptBR', 0x00243F63325B44657661737461C3A7C3A36F2056696C5D5B5261696F20646F2043616F735D2074656D206F2064616E6F2061756D656E7461646F20656D20247331252E0D0A0D0A243F63325B44657661737461C3A7C3A36F2056696C5D5B43616E616C697A6172205261696F20646F2043616F7320706F7220636F6D706C65746F5D206765726120243F63325B24733420467261676D656E746F7320646520416C6D6120616F206C6F6E676F2064612064757261C3A7C3A36F5D5B24733320244C61706C696361C3A7C3A36F3A61706C696361C3A7C3B565733B20646520517565646120646F2043616F735D2E0000, 67186), +(3776013982, 1270444, 'ptBR', 0x00437574696C61646120646120416C6D61206520426F6D6261204573706972697475616C2074C3AA6D206368616E63652C2070617261206361646120467261676D656E746F20646520416C6D6120636F6E73756D69646F2C20646520636F6E6365646572205261697661204465737072656E646964612C207065726D6974696E646F20717565204D6574616D6F72666F73652073656A61206C616EC3A76164612073656D20616665746172206120726563617267612C20636F6D2064757261C3A7C3A36F2064652024733120732E0000, 67186), +(3776013982, 441587, 'ptBR', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'ptBR', 0x0041746976617220243F613133373033365B416472656E616C696E615D5B4CC3A26D696E617320536F6D62726961735D206372696120756D61206E7576656D2064652066756D61C3A76120706F722024343431353837642C207065726D6974696E646F2071756520617461717565732064656E74726F206461206E7576656D2061706C697175656D205065727475726261646F2C206163756D756C616E646F206174C3A920243434313634306D3220244C76657A3A76657A65733B2061206D6169732E0D0A0D0A4F2065666569746F20706572736973746520706F7220243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D2073206170C3B373206465697861722061206E7576656D2E0000, 67186), +(3893700160, 445, 'ptBR', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'ptBR', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'ptBR', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'ptBR', 0x005265637570657261206F2061636573736F2061204368616D617220416A7564616E74652E0D0A0D0A456D20616D6269656E7465732065787465726E6F732C2073657520616A7564616E746520636175736120247331252061206D6169732064652064616E6F20652072656365626520247332252061206D656E6F732064652064616E6F2E0000, 67186), +(3776013982, 1223323, 'ptBR', 0x005265637570657261206F2061636573736F2061204368616D617220416A7564616E74652E0D0A0D0A456D20616D6269656E7465732065787465726E6F732C2073657520616A7564616E746520636175736120247331252061206D6169732064652064616E6F20652072656365626520247332252061206D656E6F732064652064616E6F2E0000, 67186), +(3468628616, 1818, 'ptBR', 0x4F62656C6973636F20536F6D6272696F0041676F726120766F63C3AA20706F646520636F6D7072617220756D204F62656C6973636F20536F6D6272696F20636F6D20526165276E6120656D204C756170726174612E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'ptBR', 0x4F62656C6973636F20536F6D6272696F0041676F726120766F63C3AA20706F646520636F6D7072617220756D204F62656C6973636F20536F6D6272696F20636F6D20526165276E6120656D204C756170726174612E004F62656C6973636F20536F6D6272696F002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'ptBR', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'ptBR', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'ptBR', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'ptBR', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'ptBR', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'ptBR', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'ptBR', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'ptBR', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'ptBR', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'ptBR', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'ptBR', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'ptBR', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'ptBR', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'ptBR', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'ptBR', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'ptBR', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'ptBR', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'ptBR', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'ptBR', 0x000000, 67186), +(3037505077, 245345, 'ptBR', 0x5000, 67186), +(3776013982, 1270491, 'ptBR', 0x000056656C6F636964616465206465206174617175652061756D656E7461646120656D20247731252E00, 67186), +(3776013982, 1241077, 'ptBR', 0x004163656C65726120656D2024733125207375617320506573746573206E6F20616C766F2E00417320506573746573206465202440617572616361737465722063617573616D2064616E6F2024773125206D6169732072C3A17069646F2E00, 67186), +(3776013982, 458128, 'ptBR', 0x00506173736120636F7274616E646F20746F646F73206F7320696E696D69676F7320656D20756D207261696F20646520246131C2A06D20C3A020737561206672656E74652C2063617573616E646F202473312064652064616E6F20646520536F6D6272612065206163656C6572616E646F20746F646173206173207375617320506573746573206E6F7320616C766F73206174696E6769646F732070617261206361757361722064616E6F202431323431303737733125206D6169732072C3A17069646F20706F72202431323431303737642E0000, 67186), +(3899321669, 5919, 'ptBR', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'ptBR', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'ptBR', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'ptBR', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'ptBR', 0x4E65677261005265666F72C3A7612073756120657363616D61732C20726564757A696E646F20656D2024733125206F2064616E6F20726563656269646F243F733337343334385B20652066617A656E646F20636F6D2071756520766F63C3AA2072656365626120616F206C6F6E676F20646520243337343334396420756D612063757261206571756976616C656E746520616F2064616E6F206576697461646F5D5B5D2E20447572612024642E0044616E6F20726563656269646F20726564757A69646F20656D2024773125243F2465345B206520637572616E646F206F206571756976616C656E746520616F2064616E6F206576697461646F2E5D5B2E5D243F2477323D315B0D0A496D756E6520612065666569746F7320646520696E746572727570C3A7C3A36F20652073696CC3AA6E63696F2E5D5B5D00, 67186), +(4033975491, 589353, 'ptBR', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'ptBR', 0x54616C656E746F204A784A0024407370656C6C6465736333353333313300496D756E6520612064616E6F206DC3A16769636F206520612065666569746F73206E6F6369766F732E00, 67186), +(3776013982, 125174, 'ptBR', 0x0024407370656C6C6465736331323234373000546F646F206F2064616E6F20726563656269646F20C3A9206162736F727669646F2E0D0A2431323234373073342520646F2064616E6F206162736F727669646F20C3A92072656469726563696F6E61646F20706172612061732076C3AD74696D61732061666574616461732070656C6F20546F71756520646F204B61726D612E00, 67186), +(3776013982, 122470, 'ptBR', 0x004162736F72766520746F646F206F2064616E6F20726563656269646F20706F722024642C206174C3A9202473332520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612C20652072656469726563696F6E612024733425206465737361207175616E7469646164652070617261206F20616C766F20696E696D69676F20636F6D6F2064616E6F206465204E61747572657A6120616F206C6F6E676F2064652024313234323830642E004F2064616E6F206361757361646F20616F204D6F6E676520C3A92072656469726563696F6E61646F207061726120766F63C3AA20636F6D6F2064616E6F206465204E61747572657A6120616F206C6F6E676F2064652024313234323830642E00, 67186), +(3776013982, 23920, 'ptBR', 0x00457267756520243F63335B7365752065736375646F5D5B7375612061726D615D2C207265666C6574696E646F20243F613231333931355B6F73207072C3B378696D6F7320243231333931357333206665697469C3A76F73206C616EC3A761646F735D5B6F207072696D6569726F206665697469C3A76F206C616EC3A761646F5D20636F6E74726120766F63C3AA206520726564757A696E646F20656D2024333835333931733125206F2064616E6F206DC3A16769636F2071756520766F63C3AA2072656365626520706F722024642E00243F613138383637325B5265666C6574696E646F20746F646F73206F73206665697469C3A76F73206C616EC3A761646F7320636F6E74726120766F63C3AA2E5D5B5265666C65746520756D206665697469C3A76F206C616EC3A761646F20636F6E74726120766F63C3AA2E5D00, 67186), +(1274215428, 190484, 'ptBR', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'ptBR', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'ptBR', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'ptBR', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'ptBR', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'ptBR', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'ptBR', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'ptBR', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'ptBR', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'ptBR', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'ptBR', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'ptBR', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'ptBR', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'ptBR', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'ptBR', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'ptBR', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'ptBR', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'ptBR', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'ptBR', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'ptBR', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'ptBR', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'ptBR', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'ptBR', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'ptBR', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'ptBR', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'ptBR', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'ptBR', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'ptBR', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'ptBR', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'ptBR', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'ptBR', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'ptBR', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'ptBR', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'ptBR', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'ptBR', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'ptBR', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'ptBR', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'ptBR', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'ptBR', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'ptBR', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'ptBR', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'ptBR', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'ptBR', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'ptBR', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'ptBR', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'ptBR', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'ptBR', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'ptBR', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'ptBR', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'ptBR', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'ptBR', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'ptBR', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'ptBR', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'ptBR', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'ptBR', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'ptBR', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'ptBR', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'ptBR', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'ptBR', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'ptBR', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'ptBR', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'ptBR', 0x004A6F6761206F20706569786520646520766F6C7461206E6120C3A167756120706172612067616E68617220247332206465205065736361206465204D69646E6967687420706F722024642E0D0A0D0A4A6F6761722076C3A172696F732070656978657320706F646520657374656E64657220657374652062C3B46E75732070617261206174C3A920244D31206D696E2E005065736361206465205175656C277468616C61732061756D656E7461646120656D202477322E00, 67186), +(3776013982, 1235216, 'ptBR', 0x004A6F6761206120637269617475726120646520766F6C7461206E6120C3A167756120706172612067616E6861722024733220646520506572636570C3A7C3A36F206461204D6569612D6E6F69746520706F722024642E0D0A0D0A4A6F6761722076C3A1726961732063726961747572617320706F646520657374656E64657220657374652062C3B46E75732070617261206174C3A920244D31206D696E2E00506572636570C3A7C3A36F206465204D69646E696768742061756D656E7461646120656D202477322E00, 67186), +(3776013982, 1225245, 'ptBR', 0x00556D61206D69737475726120646520657363616D6173206361726D6573696E73206520636572C3BA6C6561732061646F726E61206573746520706569786520C3A167696C2E20436F6D756D206E6120466C6F726573746120646F2043616E746F20457465726E6F2C206F20456E78616D6561646F722053696E27646F726569207365206D6F76696D656E7461206520696E74657261676520636F6D20617320C3A1677561732064652061636F72646F20636F6D206F2063617264756D6520646F207175616C2066617A2070617274652E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC38172656173206465206F636F7272C3AA6E6369612064657373652070656978653A7C520D0A2D20466C6F726573746120646F2043616E746F20457465726E6F0D0A2D205A756C27416D616E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A50657371756569726F733A7C720D0A2D20466C6F7261C3A7C3A36F20426F7262756C68616E74650D0A2D20456E78616D65206461204E617363656E746520646F20536F6C0D0A2D204F6E64696E686120537570657266696369616C0000, 67186), +(778162198, 397, 'ptBR', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'ptBR', 0x0100, 67186), +(3037505077, 243302, 'ptBR', 0x0100, 67186), +(261693969, 95549, 'ptBR', 0xFFFFFFFFFFFFFFFF41746976616E646F20616C61726D6573206DC3A16769636F730000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'ptBR', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'ptBR', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'ptBR', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'ptBR', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'ptBR', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'ptBR', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'ptBR', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'ptBR', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'ptBR', 0x506F6E747561C3A7C3A36F206465205065736361646F723A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'ptBR', 0x436F6E636C75C3AD646F007C6346463165666630305065736361646F72657320646F20416269736D6F20636F6E636C75C3AD646F2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'ptBR', 0xFFFFFFFFFFFFFFFF4A756E74616E646F2D736520616F73205065736361646F72657320646F20416269736D6F0000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'ptBR', 0x4D657267756C6861646F722070726F66756E646F00436F6E636C7561206F206576656E746F205065736361646F7220646F20416269736D6F20656D205A756C27416D616E2E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'ptBR', 0x4D657267756C6861646F722070726F66756E646F00436F6E636C7561206F206576656E746F205065736361646F7220646F20416269736D6F20656D205A756C27416D616E2E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'ptBR', 0x5065736361646F72657320646F20416269736D6F0046616C6520636F6D204A656A752C206F204D657267756C6861646F722050726F66756E646F2C2070617261206D657267756C68617220636F6D206F73205065736361646F72657320646F20416269736D6F2E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'ptBR', 0x50657269676F7320646520456C6974650041676F726120617061726563656D20656D2053C3AD74696F732052697475616CC3AD737469636F7320696E696D69676F7320646520456C697465207261726F732071756520706F64656D2073657220646572726F7461646F73207061726120657370C3B36C696F7320726974756169732061646963696F6E6169732E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'ptBR', 0x50657269676F7320646520456C6974650041676F726120617061726563656D20656D2053C3AD74696F732052697475616CC3AD737469636F7320696E696D69676F7320646520456C697465207261726F732071756520706F64656D2073657220646572726F7461646F73207061726120657370C3B36C696F7320726974756169732061646963696F6E6169732E0050657269676F7320646F732041727265646F726573204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'ptBR', 0x5472616E73706F72746520436F72726F6D7069646F0041676F726120766F63C3AA20706F646520636F6D70726172206F2046616C636F737472757A20546F6361646F2070656C6F2043616F7320636F6D206F2053617267656E746F20566F726E696E20656D204C756170726174612E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'ptBR', 0x5472616E73706F72746520436F72726F6D7069646F0041676F726120766F63C3AA20706F646520636F6D70726172206F2046616C636F737472757A20546F6361646F2070656C6F2043616F7320636F6D206F2053617267656E746F20566F726E696E20656D204C756170726174612E005472616E73706F72746520436F72726F6D7069646F002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'ptBR', 0x416C746172657320646F20506F646572204949004E6F766F732073616E7475C3A172696F7320636F6D2062C3B46E7573206DC3A16769636F7320706F64656D2073657220656E636F6E747261646F7320656D2053C3AD74696F732052697475616CC3AD737469636F732E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'ptBR', 0x416C746172657320646F20506F646572204949004E6F766F732073616E7475C3A172696F7320636F6D2062C3B46E7573206DC3A16769636F7320706F64656D2073657220656E636F6E747261646F7320656D2053C3AD74696F732052697475616CC3AD737469636F732E00416C746172657320646F20506F646572204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'ptBR', 0x5465736F75726F73205265766572656E636961646F730041676F726120C3A920706F7373C3AD76656C20656E636F6E74726172207465736F75726F73206772616E64657320656D2053C3AD74696F732052697475616CC3AD737469636F73207061726120657370C3B36C696F732061646963696F6E6169732E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'ptBR', 0x5465736F75726F73205265766572656E636961646F730041676F726120C3A920706F7373C3AD76656C20656E636F6E74726172207465736F75726F73206772616E64657320656D2053C3AD74696F732052697475616CC3AD737469636F73207061726120657370C3B36C696F732061646963696F6E6169732E005465736F75726F73205265766572656E636961646F73002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'ptBR', 0x4D616769612052697475616C202D204F72626573204162756E64616E74657300566F63C3AA2074656D206D616973206368616E636520646520756D204F72626520646520526567656E657261C3A7C3A36F206170617265636572206170C3B3732061626174657320656D2053C3AD74696F732052697475616CC3AD737469636F732E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'ptBR', 0x4D616769612052697475616C202D204F72626573204162756E64616E74657300566F63C3AA2074656D206D616973206368616E636520646520756D204F72626520646520526567656E657261C3A7C3A36F206170617265636572206170C3B3732061626174657320656D2053C3AD74696F732052697475616CC3AD737469636F732E004D616769612052697475616C202D204375726120494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'ptBR', 0x5669766569726F20436F72726F6D7069646F0041676F726120766F63C3AA20706F646520636F6D70726172206D6173636F7465732073656C6563696F6E6164617320636F6D206F2053617267656E746F20566F726E696E20656D204C756170726174612E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'ptBR', 0x5669766569726F20436F72726F6D7069646F0041676F726120766F63C3AA20706F646520636F6D70726172206D6173636F7465732073656C6563696F6E6164617320636F6D206F2053617267656E746F20566F726E696E20656D204C756170726174612E005669766569726F20436F72726F6D7069646F002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'ptBR', 0x416C746172657320646F20506F6465720041676F726120766F63C3AA20656E636F6E7472612073616E7475C3A172696F7320636F6D2062C3B46E7573206DC3A16769636F7320656D2053C3AD74696F732052697475616CC3AD737469636F732E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'ptBR', 0x416C746172657320646F20506F6465720041676F726120766F63C3AA20656E636F6E7472612073616E7475C3A172696F7320636F6D2062C3B46E7573206DC3A16769636F7320656D2053C3AD74696F732052697475616CC3AD737469636F732E00416C746172657320646F20506F6465722049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'ptBR', 0x457370C3B36C696F73204578747261730041676F726120766F63C3AA20656E636F6E7472612070657175656E6F73207465736F75726F732061646963696F6E61697320656D2053C3AD74696F732052697475616CC3AD737469636F732E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'ptBR', 0x457370C3B36C696F73204578747261730041676F726120766F63C3AA20656E636F6E7472612070657175656E6F73207465736F75726F732061646963696F6E61697320656D2053C3AD74696F732052697475616CC3AD737469636F732E005465736F75726F7320536F6C746F73204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'ptBR', 0x50657269676F7320646F732041727265646F7265730041676F726120617061726563656D20656D2053C3AD74696F732052697475616CC3AD737469636F7320696E696D69676F73207261726F732071756520706F64656D2073657220646572726F7461646F73207061726120657370C3B36C696F7320726974756169732061646963696F6E6169732E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'ptBR', 0x50657269676F7320646F732041727265646F7265730041676F726120617061726563656D20656D2053C3AD74696F732052697475616CC3AD737469636F7320696E696D69676F73207261726F732071756520706F64656D2073657220646572726F7461646F73207061726120657370C3B36C696F7320726974756169732061646963696F6E6169732E0050657269676F7320646F732041727265646F7265732049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'ptBR', 0x4D616769612052697475616C202D20506F74C3AA6E636961206465204F726265004375726120646F204F72626520646520526567656E657261C3A7C3A36F2061756D656E7461646120656D20313030252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'ptBR', 0x4D616769612052697475616C202D20506F74C3AA6E636961206465204F726265004375726120646F204F72626520646520526567656E657261C3A7C3A36F2061756D656E7461646120656D20313030252E004D616769612052697475616C202D2043757261204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'ptBR', 0x4465636F7261C3A7C3A36F2052697475616C00566F63C3AA20706F646520636F6D70726172206163657373C3B372696F732074656DC3A17469636F7320646F2043616F73207061726120657363726976616E696E686120636F6D2052616527616E612C20656D204C756170726174612E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'ptBR', 0x4465636F7261C3A7C3A36F2052697475616C00566F63C3AA20706F646520636F6D70726172206163657373C3B372696F732074656DC3A17469636F7320646F2043616F73207061726120657363726976616E696E686120636F6D2052616527616E612C20656D204C756170726174612E004D6F62C3AD6C69617320646F204C61722052697475616C002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'ptBR', 0x5465736F75726F73205269747561697300C38920706F7373C3AD76656C20656E636F6E747261722070657175656E6F73207465736F75726F7320656D20746F726E6F2064652053C3AD74696F732052697475616CC3AD737469636F732E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'ptBR', 0x5465736F75726F73205269747561697300C38920706F7373C3AD76656C20656E636F6E747261722070657175656E6F73207465736F75726F7320656D20746F726E6F2064652053C3AD74696F732052697475616CC3AD737469636F732E005465736F75726F7320536F6C746F732049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'ptBR', 0x4D616769612052697475616C202D204F7262657320646520526567656E657261C3A7C3A36F004F7262657320646520526567656E657261C3A7C3A36F207365206D616E6966657374616D20656D2053C3AD74696F732052697475616CC3AD737469636F732C20637572616E646F2031352520646F73207365757320706F6E746F7320646520766964612E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'ptBR', 0x4D616769612052697475616C202D204F7262657320646520526567656E657261C3A7C3A36F004F7262657320646520526567656E657261C3A7C3A36F207365206D616E6966657374616D20656D2053C3AD74696F732052697475616CC3AD737469636F732C20637572616E646F2031352520646F73207365757320706F6E746F7320646520766964612E004D616769612052697475616C202D20437572612049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'ptBR', 0x4A616E656C61204F63726520646520486964726F6D656C6172696100000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'ptBR', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'ptBR', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'ptBR', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'ptBR', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'ptBR', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'ptBR', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'ptBR', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'ptBR', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'ptBR', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'ptBR', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'ptBR', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'ptBR', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'ptBR', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'ptBR', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'ptBR', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'ptBR', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'ptBR', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'ptBR', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'ptBR', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'ptBR', 0x004C696E646F726D69206465737461636120696E696D69676F732073656C6563696F6E61646F7320717565206EC3A36F2073656A616D206368656665732E20446572726F74617220746F646F73206F7320696E696D69676F732064657374616361646F7320636F6D706C65746172C3A1206F2072657175697369746F20646520666F72C3A7617320696E696D696761732E00446572726F74617220746F646F73206F7320696E696D69676F732064657374616361646F7320636F6D706C65746172C3A1206F2072657175697369746F20646520666F72C3A7617320696E696D696761732E00, 67186), +(3776013982, 1278156, 'ptBR', 0x004C696E646F726D692064657374616361206520656E667261717565636520696E696D69676F732073656C6563696F6E61646F7320717565206EC3A36F2073656A616D20636865666573206520696D7065646520717565206173206D6F7274657320646F73206A6F6761646F72657320726564757A616D206F2074656D706F2072657374616E74652E0D0A0D0A446572726F74617220746F646F73206F7320696E696D69676F732064657374616361646F7320636F6D706C65746172C3A1206F2072657175697369746F20646520666F72C3A7617320696E696D696761732E00506F6E746F73206465207669646120726564757A69646F7320656D20247331252E0D0A44616E6F206361757361646F20726564757A69646F20656D20247332252E00, 67186), +(368401261, 7367, 'ptBR', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'ptBR', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'ptBR', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'ptBR', 0xB2790000, 67186), +(3495286709, 24475, 'ptBR', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'ptBR', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'ptBR', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'ptBR', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'ptBR', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'ptBR', 0x000000, 67186), +(3247720076, 42450, 'ptBR', 0x041E000000, 67186), +(3247720076, 42449, 'ptBR', 0x041E000000, 67186), +(3247720076, 42448, 'ptBR', 0x04BE000000, 67186), +(3247720076, 42447, 'ptBR', 0x04BE000000, 67186), +(3247720076, 42446, 'ptBR', 0x0700000000, 67186), +(3247720076, 42445, 'ptBR', 0x0100000000, 67186), +(3247720076, 40690, 'ptBR', 0x0100000000, 67186), +(2014779773, 207, 'ptBR', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'ptBR', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'ptBR', 0x000000, 67186), +(3776013982, 390260, 'ptBR', 0x000000, 67186), +(261693969, 95304, 'ptBR', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F73204361C3B37469636F73204E6562756C6F736F733A2042726173C3A36F204175726F72616C20646F205665746572616E6F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'ptBR', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F73204361C3B37469636F73204E6562756C6F736F733A2053696C7465206465204C757A204361C3B3746963610000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'ptBR', 0xFFFFFFFFFFFFFFFF4EC3BA636C656F73204361C3B37469636F73204E6562756C6F736F733A204F75726F0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'ptBR', 0x0000000091000000, 67186), +(1673391669, 145, 'ptBR', 0x8E000000, 67186), +(2791084701, 142, 'ptBR', 0x32DC0600, 67186), +(3386943305, 340484, 'ptBR', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'ptBR', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'ptBR', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'ptBR', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'ptBR', 0x4475656C6F206465204465636F7261C3A7C3A36F004272696E717565206465204573636F6E64652D6573636F6E646520636F6D2061206D6F62C3AD6C6961002D20526571756572204D69646E696768742C206EC3AD76656C206DC3AD6E696D6F2031302E0D0A2D204A784A2063617375616C2C206EC3A36F206C6574616C2E0D0A2D204170656E61732066696C6120696E646976696475616C2E2046696C6120656D20677275706F20646973706F6EC3AD76656C206170656E617320636F6D2061205465636563616D706F20416D6F6C656E6E6520656D204C756170726174612E0D0A2D20536520766F63C3AA20666F7220656E636F6E747261646F2065206D61726361646F2C20736572C3A120656C696D696E61646F21009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'ptBR', 0x000000, 67186), +(3776013982, 149981, 'ptBR', 0x000000, 67186), +(3330775162, 1897, 'ptBR', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'ptBR', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'ptBR', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'ptBR', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'ptBR', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'ptBR', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'ptBR', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'ptBR', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'ptBR', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'ptBR', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'ptBR', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'ptBR', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'ptBR', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'ptBR', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'ptBR', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'ptBR', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'ptBR', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'ptBR', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'ptBR', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'ptBR', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'ptBR', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'ptBR', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'ptBR', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'ptBR', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'ptBR', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'ptBR', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'ptBR', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'ptBR', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'ptBR', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'ptBR', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1408785804, 249390, 'ptBR', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'ptBR', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'ptBR', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'ptBR', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'ptBR', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'ptBR', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'ptBR', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'ptBR', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'ptBR', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'ptBR', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'ptBR', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'ptBR', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'ptBR', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'ptBR', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'ptBR', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'ptBR', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'ptBR', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'ptBR', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'ptBR', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'ptBR', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'ptBR', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'ptBR', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'ptBR', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'ptBR', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'ptBR', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'ptBR', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'ptBR', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'ptBR', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'ptBR', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'ptBR', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'ptBR', 0x52616369616C004174697665207061726120617373756D6972206175746F6D61746963616D656E74652073756120466F726D612050616973616E61207175616E646F206EC3A36F2065737469766572206C616EC3A7616E646F206665697469C3A76F732064726163C3B46E69636F7320636F6D6F20536F70726F20646520466F676F206520566F617220416C746F2E0000, 67186), +(3776013982, 1283168, 'ptBR', 0x00436F6D62696E612063696E636F20457374696C6861C3A76F7320646F2043616F7320417363656E64656E746520656D20756D204EC3BA636C656F204361C3B37469636F20417363656E64656E746520636170617A2064652061756D656E746172206F206EC3AD76656C206465206974656D20646520756D206265726C6F717565206F752061726D612063726961646120646520526573706C656E646F72206465206DC3A178696D61207175616C6964616465206F75204DC3AD74696361206F75204865726F6963612C2064657364652071756520617072696D6F7261646120616F206DC3A178696D6F2C2064612073C3A97269652031206465204D69646E696768742E0000, 67186), +(3776013982, 1282778, 'ptBR', 0x0041756D656E7461206F206EC3AD76656C206465206974656D20646520756D206265726C6F717565206F752061726D612063726961646120646520526573706C656E646F72206465206DC3A178696D61207175616C6964616465206F75204DC3AD74696361206F75204865726F6963612C2064657364652071756520617072696D6F7261646120616F206DC3A178696D6F2C2064612073C3A97269652031206465204D69646E696768742E0000, 67186), +(3776013982, 1264876, 'ptBR', 0x004361757361722064616E6F206120756D20616C766F206166657461646F20706F7220476F6C706520436F6C6F7373616C20636F6D20756D20476F6C7065204D6F7274616C206F7520437574696C61646120717565206174696E6A616D2024733220616C766F73206F75206D6169732070726F6C6F6E676120656D20247B2473312F313030307D2E31207320612064757261C3A7C3A36F20646520476F6C706520436F6C6F7373616C206E656C65732E0000, 67186), +(3776013982, 1255629, 'ptBR', 0x004120657373C3AA6E636961206C6962657261646120706F74656E6369616C697A61206F73206A6F6761646F7265732C2061756D656E74616E646F20656D2024733125207375612076656C6F636964616465206465206D6F76696D656E746F206520656D2024733225207365752064616E6F2C206375726120652065666569746F73206465206162736F72C3A7C3A36F20706F722024642E20457374652065666569746F206163756D756C612C206D6173207375612064757261C3A7C3A36F206EC3A36F2073652072656E6F76612E0056656C6F636964616465206465206D6F76696D656E746F2061756D656E7461646120656D20247331252E0D0A44616E6F206361757361646F2061756D656E7461646F20656D20247332252E0D0A4375726120652065666569746F73206465206162736F72C3A7C3A36F207265616C697A61646F732061756D656E7461646F7320656D20247333252E00, 67186), +(3776013982, 447444, 'ptBR', 0x00243F63335B4162726520756D612066656E64615D5B496D706163746F204D656E74616C206162726520756D612046656E646120456E7472C3B3706963615D20717565207365677565206F20696E696D69676F20706F722024343530313933642E204F7320696E696D69676F73206174696E6769646F732070656C6F2063616D696E686F207265636562656D202434343734343873312064652064616E6F20646520536F6D6272612061206361646120243435393331347431207320656E7175616E746F2065737469766572656D206E6F20616C63616E63652064612066656E64612E0000, 67186), +(372281185, 38, 'ptBR', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'ptBR', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'ptBR', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'ptBR', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'ptBR', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'ptBR', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'ptBR', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'ptBR', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'ptBR', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'ptBR', 0x0024407370656C6C64657363323130373235004578706C6F646520616F20657870697261722C2063617573616E646F202477312064652064616E6F20417263616E6F2E00, 67186), +(3386943305, 332898, 'ptBR', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'ptBR', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'ptBR', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'ptBR', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'ptBR', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'ptBR', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'ptBR', 0x0464000000, 67186), +(3776013982, 1280123, 'ptBR', 0x000000, 67186), +(3205218938, 54794, 'ptBR', 0x424353484F5254444154454E4F59454152002532246420646520253124420001000000, 67186), +(3205218938, 22339, 'ptBR', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'ptBR', 0x534C4153485F5441524745545F4D41524B455232002F6D610001000000, 67186), +(3205218938, 22331, 'ptBR', 0x534C4153485F574F524C445F4D41524B455233002F696E64696361646F72676C6F62616C0001000000, 67186), +(3205218938, 22330, 'ptBR', 0x534C4153485F574F524C445F4D41524B455232002F69670001000000, 67186), +(3205218938, 22329, 'ptBR', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'ptBR', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'ptBR', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'ptBR', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'ptBR', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'ptBR', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'ptBR', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'ptBR', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'ptBR', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'ptBR', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'ptBR', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'ptBR', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'ptBR', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'ptBR', 0x00566F63C3AA2074656E746120657865637574617220756D20616C766F2066657269646F2C2063617573616E646F202473312064652064616E6F20646520536F6D627261206520243436383537326F312064652064616E6F20646520536F6D62726120616F206C6F6E676F2064652024343638353732642E2053C3B320706F64652073657220757361646F20656D20696E696D69676F7320636F6D206D61697320646520247333252C206F75206D656E6F7320646520247332252C20646F7320706F6E746F7320646520766964612E0000, 67186), +(261693969, 95553, 'ptBR', 0xFFFFFFFFFFFFFFFF44656E736964616465206D616E69666573746100001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'ptBR', 0xFFFFFFFFFFFFFFFF496E76657374696761C3A7C3A36F20646F206F62656C6973636F20736F6D6272696F0000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'ptBR', 0xFFFFFFFFFFFFFFFF526564757A612061732066696C65697261730000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'ptBR', 0x457363616D6173204D616CC3A9766F6C61730000436F6E636564656E646F20756D612044C3A164697661204D616C65766F6C656E746520616F20417072656E64697A204B757267636964612C207175652061756D656E746120656D202431323839313032733125207365757320706F6E746F73206465207669646120652064616E6F2C2065206120706F73736962696C6964616465206465206C616EC3A7617220457363616D6173204D616CC3A9766F6C61732E00, 67186), +(3776013982, 1281946, 'ptBR', 0x000000, 67186), +(3776013982, 1270634, 'ptBR', 0x00446F627261206F2064616E6F20726563656269646F20706F7220756D20656C656D656E74616C20617263616E6F20646F20506F6E746F206465204E65787573204D696427617220706F7220313520732E005265636562656E646F206F20646F62726F2064652064616E6F2E00, 67186), +(3776013982, 1270085, 'ptBR', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'ptBR', 0x004F206C616EC3A761646F722074726F6361206F73207072C3B37072696F7320706F6E746F73206465207669646120706F7220756D2065736375646F206465206162736F72C3A7C3A36F206465206D65736D6F2076616C6F722E204F2065736375646F206573746F75726120616F207365722072656D6F7669646F2C2063617573616E646F20243132373030383573312064652064616E6F20646520536F6D62726120616F73206A6F6761646F72657320656D20756D207261696F2064652024313237303038356131206D2E004162736F727665202477312064652064616E6F2E0D0A416F207365722072656D6F7669646F2C20636175736120243132373030383573312064652064616E6F20646520536F6D62726120616F73206A6F6761646F72657320656D20756D207261696F2064652024313237303038356131206D2E00, 67186), +(3776013982, 1258411, 'ptBR', 0x000000, 67186), +(3776013982, 1258410, 'ptBR', 0x00426562612070617261206F6274657220756D2065666569746F20636F736DC3A97469636F2E00556D612076657273C3A36F2066726163612065206EC3A36F2066756E63696F6E616C20646120426F6C61204D61726176696C696E6461206EC3A36F20657370657261206E6164612C2061206EC3A36F2073657220612073756120696E65766974C3A176656C2064697373697061C3A7C3A36F2E00, 67186), +(3776013982, 1258336, 'ptBR', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'ptBR', 0x000000, 67186), +(3776013982, 1257729, 'ptBR', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'ptBR', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'ptBR', 0x004F206C616EC3A761646F7220636F6D65C3A761206120726576697665722C2072657373757267696E646F20636F6D20243132353737323873312520646F206DC3A178696D6F20646520706F6E746F73206465207669646120736520612063616E616C697A61C3A7C3A36F20666F7220636F6E636C75C3AD64612E005265616E696D616E646F2E20536520612063616E616C697A61C3A7C3A36F20666F7220636F6E636C75C3AD64612C206F206C616EC3A761646F722072657669766520636F6D20243132353737323873312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612E00, 67186), +(3776013982, 1257505, 'ptBR', 0x004F206C616EC3A761646F722074726F6361206F73207072C3B37072696F7320706F6E746F73206465207669646120706F7220756D2065736375646F206465206162736F72C3A7C3A36F206465206D65736D6F2076616C6F722E004162736F727665202477312064652064616E6F2E00, 67186), +(3776013982, 1256189, 'ptBR', 0x000000, 67186), +(3776013982, 1255966, 'ptBR', 0x004F206C616EC3A761646F7220726567656E657261202473312520646F206DC3A178696D6F20646520706F6E746F732064652076696461206120636164612024743120732E002473312520646F206DC3A178696D6F20646520706F6E746F73206465207669646120726567656E657261646F206120636164612024743120732E00, 67186), +(3776013982, 1253337, 'ptBR', 0x000000, 67186), +(3776013982, 1253336, 'ptBR', 0x0000436F6E74656D706C616E646F20756D6120696C7573C3A36F207175657374696F6EC3A176656C2070726F706F7263696F6E6164612070656C61206265626964612E2E2E00, 67186), +(3776013982, 1253194, 'ptBR', 0x000063616E616C697A617200, 67186), +(3776013982, 1253193, 'ptBR', 0x000063616E616C697A617200, 67186), +(3776013982, 1253185, 'ptBR', 0x000063616E616C697A617200, 67186), +(3776013982, 1253064, 'ptBR', 0x000000, 67186), +(3776013982, 1252431, 'ptBR', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'ptBR', 0x0024407370656C6C646573633132343130323300436175736120243132353833333673312064652064616E6F20417263616E6F206120636164612024743120732E00, 67186), +(3776013982, 1241023, 'ptBR', 0x005A6F2767726F6E20736520656E766F6C766520656D20756D6120626172726569726120717565206162736F727665206F2064616E6F20726563656269646F20656E7175616E746F20636F6E6A75726120417669736F2046696E616C2E20416F20636F6E636C7569722C20612062617272656972612070756C73612C2063617573616E646F20243132353833333673312064652064616E6F20417263616E6F206120746F646F73206F73206A6F6761646F7265732061206361646120243132343130333274312073206174C3A92073657220646573747275C3AD64612E004162736F7276656E646F2024773120646F2064616E6F20726563656269646F2E00, 67186), +(3776013982, 1235076, 'ptBR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'ptBR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'ptBR', 0x004F204163756D756C697374612070656761207265637572736F732064612070696C6861206D616973207072C3B378696D612C2074726F63616E646F20756D612064617320686162696C6964616465732064656C6520706F7220756D61206E6F76612E243F44494646387C3F4449464632335B5D5B20456C652073C3B320706F64652074657220756D6120686162696C696461646520706F722076657A2E5D0000, 67186), +(3776013982, 1235067, 'ptBR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'ptBR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'ptBR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'ptBR', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'ptBR', 0x00416C6C6572696120636F6C6F636120756D6120636F62657274757261206465206D61676961206361C3B37469636120656D20746F726E6F20646520756D206A6F6761646F7220717565206162736F7276652024733120646520637572612E2053652024407370656C6C6E616D653132333338363520666F72206469737369706164612C2061206162736F72C3A7C3A36F2072656D616E657363656E74652073652070726F706167612070617261206F7574726F206A6F6761646F7220616C656174C3B372696F2E004162736F7276652024773120646520637572612E0D0A0D0A536520666F722064697373697061646F2C2061206162736F72C3A7C3A36F2072656D616E657363656E74652073652070726F706167612070617261206F7574726F206A6F6761646F722E00, 67186), +(3776013982, 1228865, 'ptBR', 0x0045766F636120652064697370656E73612065737461206D6F6E74617269612E00243F6A31675B41756D656E746120656D20246A31672520612076656C6F636964616465207465727265737472652E205D5B5D243F6A31665B41756D656E746120656D20246A31662520612076656C6F63696461646520646520766F6F2E205D5B5D243F6A31735B41756D656E746120656D20246A31732520612076656C6F636964616465206465206E61646F2E205D5B5D00, 67186), +(3776013982, 1225598, 'ptBR', 0x00243F50433135343832385B7C636E4951313A2D205472616A65206465204D657267756C686F2042C3A17369636F7C525D5B5D243F50433135343832395B7C636E4951323A2D205472616A65206465204A756E746173205265666F72C3A7616461737C525D5B5D243F50433135343833305B7C636E4951333A2D205472616A6520456E6772617861646F206461732050726F66756E64657A61737C525D5B5D243F50433135343833325B7C636E4951343A2D205472616A6520646520426172626174616E617320646120466F737361206465205061686B7C525D5B5D0D0A2B247731252064652076656C6F636964616465206465206E61646F0D0A243F50433135343833365B0D0A7C636E4951313A2D2054616E7175652064652052657370697261C3A7C3A36F2042C3A17369636F7C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313232343730306D3620756E6964616465730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2054616E71756520557361646F20646F204D657267756C6861646F72206461732050726F66756E64657A61737C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313237313631336D3620756E6964616465730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D2054616E717565205465737461646F206E61732050726F66756E64657A61737C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313237313631346D3620756E6964616465730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D2054616E7175652064652052657370697261C3A7C3A36F206465204E616C6F72616B6B7C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313237313631356D3620756E6964616465730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20497363612042C3A1736963617C520D0A4372696174757261732070657363C3A17665697320636F6D756E730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D204973636120646520456E676F646F206465204E61646973636F7C520D0A4372696174757261732070657363C3A17665697320696E636F6D756E730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20497363612064652042617262616772657C520D0A4372696174757261732070657363C3A1766569732072617261730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D2049736361206465204361726E65206465204C616D6174726973636170C3A97C520D0A4372696174757261732070657363C3A17665697320C3A970696361730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20526564652064652042616978696F7C520D0A4261726261746973636F73206520436176616C6F732D6D6172696E686F7320457370696E686F736F730D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D205265646520636F6D2046696F7320547269706C6F737C520D0A546F646173206173206372696174757261732070657175656E61730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D204C756E6574612050726573737572697A6164617C520D0A506F646520646573636F627269722052656CC3AD717569617320416E63657374726169735D5B5D0D0A00243F50433135343832385B7C636E4951313A2D205472616A65206465204D657267756C686F2042C3A17369636F7C525D5B5D243F50433135343832395B7C636E4951323A2D205472616A65206465204A756E746173205265666F72C3A7616461737C525D5B5D243F50433135343833305B7C636E4951333A2D205472616A6520456E6772617861646F206461732050726F66756E64657A61737C525D5B5D243F50433135343833325B7C636E4951343A2D205472616A6520646520426172626174616E617320646120466F737361206465205061686B7C525D5B5D0D0A2B247731252064652076656C6F636964616465206465206E61646F0D0A243F50433135343833365B0D0A7C636E4951313A2D2054616E7175652064652052657370697261C3A7C3A36F2042C3A17369636F7C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313232343730306D3620756E6964616465730D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D2054616E71756520557361646F20646F204D657267756C6861646F72206461732050726F66756E64657A61737C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313237313631336D3620756E6964616465730D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D2054616E717565205465737461646F206E61732050726F66756E64657A61737C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313237313631346D3620756E6964616465730D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D2054616E7175652064652052657370697261C3A7C3A36F206465204E616C6F72616B6B7C520D0A4F786967C3AA6E696F206DC3A178696D6F2064652024313237313631356D3620756E6964616465730D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20497363612042C3A1736963617C520D0A4372696174757261732070657363C3A17665697320636F6D756E730D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D204973636120646520456E676F646F206465204E61646973636F7C520D0A4372696174757261732070657363C3A17665697320696E636F6D756E730D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20497363612064652042617262616772657C520D0A4372696174757261732070657363C3A1766569732072617261730D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D2049736361206465204361726E65206465204C616D6174726973636170C3A97C520D0A4372696174757261732070657363C3A17665697320C3A970696361730D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20526564652064652042616978696F7C520D0A4261726261746973636F73206520436176616C6F732D6D6172696E686F7320457370696E686F736F730D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D205265646520636F6D2046696F7320547269706C6F737C520D0A546F646173206173206372696174757261732070657175656E61730D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D204C756E6574612050726573737572697A6164617C520D0A506F646520646573636F627269722052656CC3AD717569617300, 67186), +(3776013982, 1225322, 'ptBR', 0x007C636E475245454E5F464F4E545F434F4C4F523A506572C3AD636961207265636F6D656E646164613A7C7220310D0A0D0AC381677561732063616C6D6173206520736572656E617320746F726E616D2065737465206C6F63616C20696465616C2070617261207065736361646F72657320636F6D65C3A76172656D2061206578706C6F726172206F207175652061732070726F66756E64657A61732074C3AA6D2061206F666572656365722E0D0A0D0A50657371756569726F7320656E636F6E747261646F73206E6573736120C3A17265613A0D0A2D20456E78616D65206461204E617363656E746520646F20536F6C0D0A2D20466C6F7261C3A7C3A36F20426F7262756C68616E74650D0A2D20456E78616D6520646520466C6F7261C3A7C3B565730D0A2D2043616F7320566973636F736F0D0A2D20436172676120446573637569646164610D0A2D205465736F75726F73205065726469646F730000, 67186), +(3776013982, 1225281, 'ptBR', 0x00556D612063726961747572612067656E74696C20717565207072656665726520617320C3A1677561732063616C6D617320646120466C6F726573746120646F2043616E746F20457465726E6F2E20456D626F726120617320C3A167756173207065726D6974616D2071756520756D207065736361646F7220636F6D756D206C616E636520737561206C696E68612C206573746520706569786520656D20706172746963756C61722073C3B320657374C3A120646973706F6EC3AD76656C2070617261206F73206D616973207065726365707469766F732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC38172656173206465206F636F7272C3AA6E6369612064657373652070656978653A7C520D0A2D20466C6F726573746120646F2043616E746F20457465726E6F0D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A50657371756569726F733A7C720D0A2D20546F7272656E746520646120466C6F7261C3A7C3A36F0000, 67186), +(3776013982, 1225277, 'ptBR', 0x00417320C3A16775617320646520486172616E64617220636F6E74C3AA6D206D696E657261697320C3BA6E69636F73207175652C20616F20706173736172656D2070656C6173206775656C72617320646520756D2050656978652D63616EC3A7C3A36F205265737461757261646F2C20656D6974656D20756D61206D656C6F646961206574C3A972656120737562617175C3A1746963612E20456D626F7261206167726164C3A176656C2070617261207065736361646F7265732C20657373612063616EC3A7C3A36F20616661737461207072656461646F72657320636F6D20737561207669627261C3A7C3A36F20737574696C2E20536520756D207072656461646F722C20636F6D6F206F20546574726120506572766572736F2C207365206170726F78696D61722064656D6169732C206173207669627261C3A7C3B5657320746F726E616D2D7365206D61697320766F6CC3A1746569732E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373130342042616E7175657465732064652043756C696EC3A17269610D0A0D0A4573746520706569786520657370656369616C6D656E7465207261726F2065207361626F726F736F20C3A920756D20696E6772656469656E746520696D706F7274616E746520656D206D75697461732072656365697461732064652043756C696EC3A1726961206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC38172656173206465206F636F7272C3AA6E6369612064657373652070656978653A7C520D0A2D20466C6F726573746120646F2043616E746F20457465726E6F0D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A50657371756569726F733A7C720D0A2D20456E78616D6520646520466C6F7261C3A7C3B565730D0A2D20466C6F7261C3A7C3A36F20426F7262756C68616E74650D0A2D20456E78616D65206461204E617363656E746520646F20536F6C0D0A2D20546F7272656E746520646120466C6F7261C3A7C3A36F0000, 67186), +(3776013982, 1225273, 'ptBR', 0x00556D206861626974616E74652064612054656D7065737461646520646F2043616F7320637572696F73616D656E7465206465736167726164C3A176656C2E2053657573206D656D62726F7320736520657374656E64656D20612070617274697220646F7320636F6E66696E7320646F2043616F73206F6E646520C3A920706F7373C3AD76656C207065736361722E2041737475746F2C20617264696C6F736F2C20696E74656C6967656E7465206520756D206465736166696F20666F726D6964C3A176656C2070617261207175616C71756572207065736361646F7220636F72616A6F736F206F2062617374616E7465207061726120706573636172206E612072656769C3A36F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373130342042616E7175657465732064652043756C696EC3A17269610D0A0D0A4573746520706569786520657370656369616C6D656E7465207261726F2065207361626F726F736F20C3A920756D20696E6772656469656E746520696D706F7274616E746520656D206D75697461732072656365697461732064652043756C696EC3A1726961206465204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC38172656173206465206F636F7272C3AA6E6369612064657373652070656978653A7C520D0A0D0A2D2054656D7065737461646520646F2043616F730D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A50657371756569726F733A7C720D0A0D0A2D2056C3B37274696365204F6365C3A26E69636F0D0A2D2043616F7320566973636F736F0000, 67186), +(3776013982, 1225272, 'ptBR', 0x00556D20696D706F6E656E74652070656978652D657370696E686F20707261746561646F2063756A6F20636F72706F20696E73746967612074616E746F207065736361646F726573207175616E746F206F7574726F73207065697865732061207365206170726F78696D6172656D2C207061726120656E74C3A36F206C616EC3A76172207365757320657370696E686F73206475726F7320656D207375612064697265C3A7C3A36F2E205261627567656E746F206520636F6D206361726120646520706F75636F7320616D69676F732C206D617320756D207465736F75726F20646573656A61646F20706F72207175616C71756572206173706972616E74652061207065736361646F722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC38172656173206465206F636F7272C3AA6E6369612064657373652070656978653A7C520D0A2D20466C6F726573746120646F2043616E746F20457465726E6F0D0A2D20486172616E6461720D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A50657371756569726F733A7C720D0A2D20466C6F7261C3A7C3A36F20426F7262756C68616E74650D0A2D20456E78616D65206461204E617363656E746520646F20536F6C0D0A2D20456E78616D6520646520466C6F7261C3A7C3B565730D0A2D20546F7272656E746520646120466C6F7261C3A7C3A36F0000, 67186), +(3776013982, 444803, 'ptBR', 0x00556D612063726961747572612068756D696C64652C2061646F726D65636964612E20416F206465737065727461722C207375617320657363616D617320656D6974656D20756D206272696C686F207265666C657869766F206D65736D6F20656D20636F6E7461746F20636F6D20756D206DC3AD6E696D6F206465206C757A2E20556D61206D616A6573746164652064697363726574612C206F626A657469766F20696465616C2070617261207175616C71756572206173706972616E74652061205065736361646F722E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523A457370656369616C3A7C720D0A0D0A24407370656C6C69636F6E3434353132372046696CC3A92046726573636F0D0A0D0A54726162616C686172206573746520706569786520636F6D206120706572C3AD6369612064652043756C696EC3A172696120706F64652070726F64757A697220756D61206772616E6465207175616E7469646164652064652046696CC3A92046726573636F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AC38172656173206465206F636F7272C3AA6E6369612064657373652070656978653A7C520D0A0D0A2D20417A6A2D4B616865740D0A2D204FC3A1736973206465204B2761726573680000, 67186), +(3205218938, 56772, 'ptBR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453400416C6775C3A96D206361727265676120766F63C3AA0001000000, 67186), +(3205218938, 56771, 'ptBR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300436F6D706574697469766F0001000000, 67186), +(3205218938, 56770, 'ptBR', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C45320052656C617861646F0001000000, 67186), +(3205218938, 22337, 'ptBR', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'ptBR', 0x000000, 67186), +(1010104591, 26054, 'ptBR', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'ptBR', 0x4172636F20646520417267C3AD6C696100000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'ptBR', 0x4172616E64656C612053696E27646F726569204F726E61646100000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'ptBR', 0x4CC3A26D706164612053757370656E736120646F204D6563C3A26E69636F20646120496E6672616D696E6100000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'ptBR', 0x4DC3A17175696E6120646520457370726573736F2064652044616C6172616E000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'ptBR', 0x427261736569726F20646F2044657661737461646F72000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'ptBR', 0x4C616E7465726E6120646520466572726F20456E636F626572746100000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'ptBR', 0x4C616E7465726E612064652046756D61C3A7612064652042726164656E7362726F6F6B00000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'ptBR', 0x506F737465206465204C757A20646120496E6672616D696E61204D7569746F20436F6E6669C3A176656C00000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'ptBR', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'ptBR', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'ptBR', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'ptBR', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'ptBR', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'ptBR', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'ptBR', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'ptBR', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'ptBR', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'ptBR', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'ptBR', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'ptBR', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'ptBR', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'ptBR', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'ptBR', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'ptBR', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'ptBR', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'ptBR', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'ptBR', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'ptBR', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'ptBR', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'ptBR', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'ptBR', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'ptBR', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'ptBR', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'ptBR', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'ptBR', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'ptBR', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'ptBR', 0x00446563696D7573207472616E736D757461206F7320667261676D656E746F73206E756D204EC3BA636C656F204361C3B37469636F20456C656D656E74616C20706172612073657220696E7465677261646F20C3A020466F726A6120646F2043616F73204E617363656E74652E204120466F726A6120646F2043616F7320657869676520247331204EC3BA636C656F73204361C3B37469636F7320456C656D656E746169732070617261207175652073656A6120636F6E636C75C3AD64612E0D0A0D0A436F6E747269627569C3A7C3B56573206174756169733A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'ptBR', 0xFFFFFFFFFFFFFFFF556D204EC3BA636C656F204361C3B37469636F20456C656D656E74616C0000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'ptBR', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'ptBR', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'ptBR', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'ptBR', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'ptBR', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'ptBR', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'ptBR', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'ptBR', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'ptBR', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'ptBR', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'ptBR', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'ptBR', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'ptBR', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'ptBR', 0x000000, 67186), +(3653642729, 376, 'ptBR', 0x000000008D000000, 67186), +(1673391669, 141, 'ptBR', 0x8A000000, 67186), +(2791084701, 138, 'ptBR', 0x35D30600, 67186), +(2518885667, 13760, 'ptBR', 0xC035000000000000, 67186), +(3776013982, 1296205, 'ptBR', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'ptBR', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'ptBR', 0xFFFFFFFFFFFFFFFF496E766573746964617320646F2043616F733A205A756C27416D616E00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'ptBR', 0xFFFFFFFFFFFFFFFF496E766573746964617320646F2043616F733A20466C6F726573746120646F2043616E746F20457465726E6F00003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(476847390, 192, 'ptBR', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'ptBR', 0x000000, 67186), +(3776013982, 1296168, 'ptBR', 0x000000, 67186), +(600565378, 665333, 'ptBR', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'ptBR', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'ptBR', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'ptBR', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'ptBR', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'ptBR', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'ptBR', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'ptBR', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'ptBR', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'ptBR', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'ptBR', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'ptBR', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'ptBR', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'ptBR', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'ptBR', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'ptBR', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'ptBR', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'ptBR', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'ptBR', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'ptBR', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'ptBR', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'ptBR', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'ptBR', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'ptBR', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'ptBR', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'ptBR', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'ptBR', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'ptBR', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'ptBR', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'ptBR', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'ptBR', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'ptBR', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'ptBR', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'ptBR', 0x898200006D670300, 67186), +(3745449290, 8614, 'ptBR', 0x53C3AD74696F2052697475616CC3AD737469636F3A2054726F6E6F205061727469646F00556D2072697475616C2070657269676F736F20657374C3A12073656E646F207265616C697A61646F206E61732070726F78696D6964616465732E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'ptBR', 0x000000, 67186), +(2575642838, 765, 'ptBR', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'ptBR', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'ptBR', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'ptBR', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'ptBR', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'ptBR', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'ptBR', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'ptBR', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'ptBR', 0x5615130000070000FF000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 810, 'ptBR', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'ptBR', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'ptBR', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'ptBR', 0x4A616E656C61206465205261C3AD7A657320456E7472656C61C3A761646173000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'ptBR', 0x51756164726F20224C616E7465726E612064652043616E746F20457465726E6F000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'ptBR', 0x506F727461206465205261C3AD7A657320456E7472656C61C3A761646173000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'ptBR', 0x50C3A972676F6C612046C3BA6E676963610000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'ptBR', 0x546F7274612064652046727574696E6861732053756E74756F736100000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'ptBR', 0x5661736F20646520486172616E6461722052C3BA737469636F000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'ptBR', 0x4372697374616C2043617272656761646F2064652041C3A9746572204772616E64696F736F00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'ptBR', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'ptBR', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'ptBR', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'ptBR', 0x467B0000, 67186), +(4033975491, 620660, 'ptBR', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'ptBR', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'ptBR', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'ptBR', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'ptBR', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'ptBR', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'ptBR', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'ptBR', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'ptBR', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'ptBR', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'ptBR', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'ptBR', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'ptBR', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'ptBR', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'ptBR', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'ptBR', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'ptBR', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'ptBR', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'ptBR', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'ptBR', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'ptBR', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'ptBR', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'ptBR', 0x000000, 67186), +(3776013982, 1295957, 'ptBR', 0x000000, 67186), +(3776013982, 1295932, 'ptBR', 0x000000, 67186), +(3776013982, 1295927, 'ptBR', 0x00416F20646573656D70656E68617220612066756EC3A7C3A36F2064652074616E71756520646F20677275706F2C204C696E646F726D69206465737461636120617320666F72C3A7617320696E696D6967617320656D204D61736D6F727261732064652050656472612D63686176652E0D0A0D0A46616C6520636F6D204C696E646F726D6920706172612064657361746976617220657373652065666569746F2E00416F20646573656D70656E68617220612066756EC3A7C3A36F2064652074616E71756520646F20677275706F2C204C696E646F726D69206465737461636120617320666F72C3A7617320696E696D6967617320656D204D61736D6F727261732064652050656472612D63686176652E0D0A0D0A46616C6520636F6D204C696E646F726D6920706172612064657361746976617220657373652065666569746F2E00, 67186), +(3776013982, 1265971, 'ptBR', 0x00417320686162696C696461646573206C616EC3A7616461732070656C6F7320436176616C6569726F732063617573616D20247331252061206D6169732064652064616E6F2E243F63335B0D0A0D0A536575204361726E69C3A7616C206520617271756569726F206465736361726E61646F2063617573616D20247333252065204361726E69C3A7616973204D656E6F7265732063617573616D2024733525206D6169732064616E6F5D5B5D2E0000, 67186), +(336222293, 22784, 'ptBR', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'ptBR', 0x004120636164612024733120476F6C70657320646F2045787465726D696E61646F722C20766F63C3AA2067616E6861204D6F7274652053C3BA626974612E0D0A0D0A55736172204D6F7274652053C3BA62697461206163656C65726120736575207072C3B378696D6F20546F726E61646F2064652041C3A76F2C206163657274616E646F20312076657A2061206D61697320286DC3A178696D6F206465202434343536303675292E20412064757261C3A7C3A36F20746F74616C20646520546F726E61646F2064652041C3A76F207065726D616E6563652061206D65736D612E0D0A0D0A4D6F7274652053C3BA626974612074656D2024733225206465206368616E6365206465206174697661722043656966617220612054656D7065737461646520636F6D20247333252064652065666963C3A16369612E0000, 67186), +(378810315, 666, 'ptBR', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'ptBR', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'ptBR', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'ptBR', 0x000000, 67186), +(1181150530, 752881, 'ptBR', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'ptBR', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'ptBR', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'ptBR', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'ptBR', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'ptBR', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'ptBR', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'ptBR', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'ptBR', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'ptBR', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'ptBR', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'ptBR', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'ptBR', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'ptBR', 0xE1570500E0570500, 67186), +(736158310, 43619, 'ptBR', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'ptBR', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'ptBR', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'ptBR', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'ptBR', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'ptBR', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'ptBR', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'ptBR', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'ptBR', 0x00243F63315B45766F636172204E69757A616F2C206F20426F69204E6567726F2C5D5B5AC3AA6E6974655D2066617A20636F6D2071756520243F63315B4261666F7261646120646520466F676F20646573666972615D5B436875746520646F20536F6C204E617363656E74652065204368757465204769726174C3B372696F20646120476172C3A76120646573666972616D5D202473312052616A6164617320646520476F6C7065732E0000, 67186), +(3776013982, 1244331, 'ptBR', 0x002473322520646120666C6F7261C3A7C3A36F2066696E616C2064652042726F74617220646120566964612063757261206174C3A92024733320616C6961646F732066657269646F7320656D20756D207261696F2064652024313234343334316131206D2E0000, 67186), +(3776013982, 441845, 'ptBR', 0x00243F63325B41756D656E746120656D2024733125206F2064616E6F206520656D20247333252061206368616E63652064652061636572746F206372C3AD7469636F2064652044657370656461C3A761722C205061746164612065204573747261C3A7616C6861722E5D5B41756D656E746120656D2024733425206F2064616E6F206520656D20247335252061206368616E63652064652061636572746F206372C3AD7469636F2064652044657374726FC3A761722E5D0D0A0D0A243F63335B44657374726FC3A761722063757261202434353837323473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612E5D5B5D0000, 67186), +(3205218938, 57068, 'ptBR', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00436F6D7072617220746F646F73206F73206974656E73202825732920706F722025733F0003000000, 67186), +(3205218938, 23377, 'ptBR', 0x5343454E4152494F5F53544147455F53544154555300457374C3A167696F2025642064652025640001000000, 67186), +(3205218938, 22841, 'ptBR', 0x5343454E4152494F5F535441474500457374C3A167696F2025640001000000, 67186), +(3745449290, 8459, 'ptBR', 0x507265736100417374616C6F72204A7572617373616E67756520706564652073756120616A7564612070617261206361C3A7617220616D6561C3A76173206D6F72746169732E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'ptBR', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'ptBR', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'ptBR', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'ptBR', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'ptBR', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'ptBR', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'ptBR', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'ptBR', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'ptBR', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'ptBR', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'ptBR', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'ptBR', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'ptBR', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'ptBR', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'ptBR', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'ptBR', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'ptBR', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'ptBR', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'ptBR', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'ptBR', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'ptBR', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'ptBR', 0x5365727065204574C3A972656100000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'ptBR', 0x9201000022000000, 67186), +(3247720076, 39887, 'ptBR', 0x0700000000, 67186), +(3776013982, 243435, 'ptBR', 0x005472616E73666F726D61207375612070656C6520656D2070656472612C2061756D656E74616E646F20656D202473312520736575206DC3A178696D6F20646520706F6E746F7320646520766964612065207365757320706F6E746F732064652076696461206174756169732C20616CC3A96D20646520726564757A697220656D2024733225206F2064616E6F20726563656269646F20706F722024642E004DC3A178696D6F20646520706F6E746F7320646520766964612061756D656E7461646F20656D20247731252E0D0A44616E6F20726563656269646F20726564757A69646F20656D20247732252E243F2477343E315B0D0A4162736F727665202477342064652064616E6F2E5D5B5D00, 67186), +(3776013982, 221562, 'ptBR', 0x004572677565206F20696E696D69676F20646F206368C3A36F2C2065736D6167616E646F207375612067617267616E746120636F6D20656E657267696120736F6D6272696120652061746F72646F616E646F2D6F20706F722024642E0041746F72646F61646F2E00, 67186), +(3776013982, 205630, 'ptBR', 0x54616C656E746F206465204A784A00566F63C3AA2065737472616E67756C61206F20616C766F20636F6D206D616769612064656D6F6EC3AD6163612C2061746F72646F616E646F2D6F206E6F206C7567617220652063617573616E646F20246F342064652064616E6F20646520536F6D62726120616F206C6F6E676F20646520246420656E7175616E746F206F20616C766F206573746976657220707265736F2E20C38920706F7373C3AD76656C207365206D6F76657220647572616E746520612063616E616C697A61C3A7C3A36F2E0D0A0D0A557365206F204167617272C3A36F20646520496C6C6964616E206E6F76616D656E7465207061726120617272656D6573736172206F20616C766F20656D20616C67756D206C75676172206E756D207261696F206465202432303831373352206D2E0041746F72646F61646F2E205265636562656E646F202477342064652064616E6F20646520536F6D6272612061206361646120247420732E00, 67186), +(3776013982, 198158, 'ptBR', 0x54616C656E746F206465204A784A00566F63C3AA2065207365757320616C6961646F7320656D20756D207261696F20646520244131206D20666963616D20696E766973C3AD7665697320696E7374616E74616E65616D656E746520706F722024642E205265616C697A6172207175616C717565722061C3A7C3A36F2063616E63656C61206F2065666569746F2E00496E766973C3AD76656C2E205265616C697A6172207175616C717565722061C3A7C3A36F2063616E63656C61206F2065666569746F2E00, 67186), +(3776013982, 108194, 'ptBR', 0x004572677565206F20696E696D69676F20646F206368C3A36F2C2065736D6167616E646F207375612067617267616E746120636F6D20656E657267696120736F6D6272696120652061746F72646F616E646F2D6F20706F722024642E0041746F72646F61646F2E00, 67186), +(378810315, 1004, 'ptBR', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'ptBR', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'ptBR', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'ptBR', 0x077A03000705000047000000, 67186), +(378810315, 999, 'ptBR', 0x530D00000509000049000000, 67186), +(378810315, 998, 'ptBR', 0x530D00000509000048000000, 67186), +(378810315, 997, 'ptBR', 0x530D00000509000047000000, 67186), +(378810315, 996, 'ptBR', 0x78B700000409000049000000, 67186), +(378810315, 995, 'ptBR', 0x78B700000409000048000000, 67186), +(378810315, 994, 'ptBR', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'ptBR', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'ptBR', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'ptBR', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'ptBR', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'ptBR', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'ptBR', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'ptBR', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'ptBR', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'ptBR', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'ptBR', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'ptBR', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'ptBR', 0x989B12000706000006010000, 67186), +(378810315, 980, 'ptBR', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'ptBR', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'ptBR', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'ptBR', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'ptBR', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'ptBR', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'ptBR', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'ptBR', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'ptBR', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'ptBR', 0x713507000505000000010000, 67186), +(378810315, 966, 'ptBR', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'ptBR', 0x550300000805000046000000, 67186), +(378810315, 964, 'ptBR', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'ptBR', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'ptBR', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'ptBR', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'ptBR', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'ptBR', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'ptBR', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'ptBR', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'ptBR', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'ptBR', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'ptBR', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'ptBR', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'ptBR', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'ptBR', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'ptBR', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'ptBR', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'ptBR', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'ptBR', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'ptBR', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'ptBR', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'ptBR', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'ptBR', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'ptBR', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'ptBR', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'ptBR', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'ptBR', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'ptBR', 0x991503000409000045020000, 67186), +(378810315, 933, 'ptBR', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'ptBR', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'ptBR', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'ptBR', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'ptBR', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'ptBR', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'ptBR', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'ptBR', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'ptBR', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'ptBR', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'ptBR', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'ptBR', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'ptBR', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'ptBR', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'ptBR', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'ptBR', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'ptBR', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'ptBR', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'ptBR', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'ptBR', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'ptBR', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'ptBR', 0x42E906000309000009010000, 67186), +(378810315, 902, 'ptBR', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'ptBR', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'ptBR', 0x761800000309000009010000, 67186), +(378810315, 899, 'ptBR', 0x76180000030900000A010000, 67186), +(378810315, 898, 'ptBR', 0x76180000030900000B010000, 67186), +(378810315, 885, 'ptBR', 0x78B700000409000047000000, 67186), +(378810315, 879, 'ptBR', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'ptBR', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'ptBR', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'ptBR', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'ptBR', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'ptBR', 0x980100000905000005010000, 67186), +(378810315, 858, 'ptBR', 0x980100000905000004010000, 67186), +(378810315, 855, 'ptBR', 0x980100000905000003010000, 67186), +(378810315, 843, 'ptBR', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'ptBR', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'ptBR', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'ptBR', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'ptBR', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'ptBR', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'ptBR', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'ptBR', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'ptBR', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'ptBR', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'ptBR', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'ptBR', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'ptBR', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'ptBR', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'ptBR', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'ptBR', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'ptBR', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'ptBR', 0x027F05000707000003010000, 67186), +(378810315, 720, 'ptBR', 0x36A401000707000048000000, 67186), +(378810315, 719, 'ptBR', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'ptBR', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'ptBR', 0x790200000905000046000000, 67186), +(378810315, 714, 'ptBR', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'ptBR', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'ptBR', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'ptBR', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'ptBR', 0x68F905000605000067000000, 67186), +(378810315, 691, 'ptBR', 0x68F905000605000066000000, 67186), +(378810315, 690, 'ptBR', 0x68F905000605000069000000, 67186), +(378810315, 682, 'ptBR', 0x15A905000705000041020000, 67186), +(378810315, 679, 'ptBR', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'ptBR', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'ptBR', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'ptBR', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'ptBR', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'ptBR', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'ptBR', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'ptBR', 0x16600500040800003F000000, 67186), +(378810315, 661, 'ptBR', 0x16600500040900003E000000, 67186), +(378810315, 658, 'ptBR', 0xE53805000209000040000000, 67186), +(378810315, 657, 'ptBR', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'ptBR', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'ptBR', 0x166005000409000040000000, 67186), +(378810315, 648, 'ptBR', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'ptBR', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'ptBR', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'ptBR', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'ptBR', 0x8C8D0500010B0000BB050000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 575, 'ptBR', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'ptBR', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'ptBR', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'ptBR', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'ptBR', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'ptBR', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'ptBR', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'ptBR', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'ptBR', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'ptBR', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'ptBR', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'ptBR', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'ptBR', 0x550300000805000041000000, 67186), +(378810315, 449, 'ptBR', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'ptBR', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'ptBR', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'ptBR', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'ptBR', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'ptBR', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'ptBR', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'ptBR', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'ptBR', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'ptBR', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'ptBR', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'ptBR', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'ptBR', 0x57A101000505000067000000, 67186), +(378810315, 408, 'ptBR', 0x638400000705000069000000, 67186), +(378810315, 407, 'ptBR', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'ptBR', 0xE40200000505000069000000, 67186), +(378810315, 402, 'ptBR', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'ptBR', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'ptBR', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'ptBR', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'ptBR', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'ptBR', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'ptBR', 0xE77701000605000046000000, 67186), +(378810315, 377, 'ptBR', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'ptBR', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'ptBR', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'ptBR', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'ptBR', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'ptBR', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'ptBR', 0x400700000409000004010000, 67186), +(378810315, 353, 'ptBR', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'ptBR', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'ptBR', 0xE60600000605000005010000, 67186), +(378810315, 349, 'ptBR', 0xE60600000605000004010000, 67186), +(378810315, 348, 'ptBR', 0xE60600000605000003010000, 67186), +(378810315, 346, 'ptBR', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'ptBR', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'ptBR', 0x301E03000509000006010000, 67186), +(378810315, 342, 'ptBR', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'ptBR', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'ptBR', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'ptBR', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'ptBR', 0x66D401000505000009010000, 67186), +(378810315, 332, 'ptBR', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'ptBR', 0x981900000605000048000000, 67186), +(378810315, 329, 'ptBR', 0x981900000605000049000000, 67186), +(378810315, 224, 'ptBR', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'ptBR', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'ptBR', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'ptBR', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'ptBR', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'ptBR', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'ptBR', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'ptBR', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'ptBR', 0x242303000409000041020000, 67186), +(378810315, 205, 'ptBR', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'ptBR', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'ptBR', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'ptBR', 0x242303000409000045020000, 67186), +(378810315, 189, 'ptBR', 0x743C03000805000045020000, 67186), +(378810315, 187, 'ptBR', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'ptBR', 0x36A401000707000049000000, 67186), +(378810315, 176, 'ptBR', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'ptBR', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'ptBR', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'ptBR', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'ptBR', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'ptBR', 0x36A401000707000047000000, 67186), +(378810315, 159, 'ptBR', 0x981900000605000047000000, 67186), +(378810315, 158, 'ptBR', 0x533301000405000066000000, 67186), +(378810315, 156, 'ptBR', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'ptBR', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'ptBR', 0xA09001000607000066000000, 67186), +(378810315, 152, 'ptBR', 0x82020000010B000046000000, 67186), +(378810315, 150, 'ptBR', 0x50350300050B000046000000, 67186), +(378810315, 149, 'ptBR', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'ptBR', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'ptBR', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'ptBR', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'ptBR', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'ptBR', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'ptBR', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'ptBR', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'ptBR', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'ptBR', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'ptBR', 0x62040000060500000B010000, 67186), +(378810315, 121, 'ptBR', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'ptBR', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'ptBR', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'ptBR', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'ptBR', 0x45990100010B000009010000, 67186), +(378810315, 113, 'ptBR', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'ptBR', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'ptBR', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'ptBR', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'ptBR', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'ptBR', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'ptBR', 0x491E03000907000007010000, 67186), +(378810315, 101, 'ptBR', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'ptBR', 0x301E03000509000008010000, 67186), +(378810315, 97, 'ptBR', 0x301E03000509000007010000, 67186), +(378810315, 96, 'ptBR', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'ptBR', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'ptBR', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'ptBR', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'ptBR', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'ptBR', 0x400700000409000005010000, 67186), +(378810315, 83, 'ptBR', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'ptBR', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'ptBR', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'ptBR', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'ptBR', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'ptBR', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'ptBR', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'ptBR', 0xB63500000707000004010000, 67186), +(378810315, 70, 'ptBR', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'ptBR', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'ptBR', 0x400700000409000003010000, 67186), +(378810315, 63, 'ptBR', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'ptBR', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'ptBR', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'ptBR', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'ptBR', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'ptBR', 0x82020000010B000042000000, 67186), +(378810315, 45, 'ptBR', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'ptBR', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'ptBR', 0x82020000010B000041000000, 67186), +(378810315, 39, 'ptBR', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'ptBR', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'ptBR', 0x790200000905000041000000, 67186), +(378810315, 35, 'ptBR', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'ptBR', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'ptBR', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'ptBR', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'ptBR', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'ptBR', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'ptBR', 0xD39603000805000040000000, 67186), +(378810315, 21, 'ptBR', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'ptBR', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'ptBR', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'ptBR', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'ptBR', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'ptBR', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'ptBR', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'ptBR', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'ptBR', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'ptBR', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'ptBR', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'ptBR', 0x52697475616C6973746120446F6D616E61617200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393137393177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291859, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393137393177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291858, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393137393177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291857, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393137393177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291856, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393137393177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291855, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393137393177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291854, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393138333177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291853, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393138333177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291852, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393138333177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291851, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393138333177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291850, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393138333177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291849, 'ptBR', 0x005265737461757261206174C3A9202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F732064652076696461206520243132393138333177312520646F7320706F6E746F73206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291848, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291847, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291846, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291845, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291844, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291843, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291842, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291841, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291840, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291839, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291838, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291837, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291831, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F73206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291828, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291827, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291826, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291825, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291824, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291822, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1291791, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F73206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1290929, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F73206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1290926, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1290925, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1289221, 'ptBR', 0x0041627261206F206261C3BA207061726120766572206F207175652074656D2064656E74726F210000, 67186), +(3776013982, 1286537, 'ptBR', 0x005265737461757261202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612065206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1286536, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F73206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1286535, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052656375706572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1282100, 'ptBR', 0x000000, 67186), +(3776013982, 1282018, 'ptBR', 0x0045766F636120756D2062616E636F207061726120766F63C3AA2073656E746172210043616E63656C652061206175726120706172612064697370656E736172206F2062616E636F2E00, 67186), +(3776013982, 1277461, 'ptBR', 0x005265737461757261202473312520646F20746F74616C206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269922, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269921, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269920, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F7320646520766964612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269919, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F73206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269918, 'ptBR', 0x005265737461757261202473312520646F206DC3A178696D6F20646520706F6E746F73206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20626562652E0052657374617572616E646F2024773125206465206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269917, 'ptBR', 0x005265737461757261202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612065206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1269916, 'ptBR', 0x005265737461757261202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612065206D616E612061206361646120736567756E646F2E00, 67186), +(3776013982, 1232065, 'ptBR', 0x005265737461757261202473312520646F20736575206DC3A178696D6F20646520706F6E746F7320646520766964612065206465206D616E612061206361646120736567756E646F20616F206C6F6E676F2064652024642E20C389207072656369736F207065726D616E656365722073656E7461646F20656E7175616E746F20636F6D652E0052657374617572616E646F202473312520646F7320706F6E746F7320646520766964612065206D616E612061206361646120736567756E646F2E00, 67186), +(2948698321, 8059, 'ptBR', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'ptBR', 0x000000, 67186), +(3898252553, 11633, 'ptBR', 0xE28200001E490300, 67186), +(3898252553, 11632, 'ptBR', 0xE18200001E490300, 67186), +(3898252553, 11631, 'ptBR', 0xE08200001E490300, 67186), +(3898252553, 11630, 'ptBR', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'ptBR', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'ptBR', 0x00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202473332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024733420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247335206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202477332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024773420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247735206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00, 67186), +(3776013982, 1262377, 'ptBR', 0x00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202473332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024733420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247335206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202477332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024773420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247735206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00, 67186), +(3776013982, 1262376, 'ptBR', 0x00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202473332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024733420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247335206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202477332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024773420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247735206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00, 67186), +(3776013982, 1262365, 'ptBR', 0x005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282473352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202473332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282477352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202477332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'ptBR', 0x005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282473352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202473332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206461204D6F72746520536167726164612074656D20756D61206368616E6365206D7569746F2070657175656E6120646520657865637574617220696E696D69676F7320717565206EC3A36F2073656A616D206368656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282477352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202477332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206461204D6F72746520536167726164612074656D20756D61206368616E6365206D7569746F2070657175656E6120646520657865637574617220696E696D69676F7320717565206EC3A36F2073656A616D206368656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'ptBR', 0x005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282473352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202473332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206461204D6F72746520536167726164612074656D20756D61206368616E6365206D7569746F2070657175656E6120646520657865637574617220696E696D69676F7320717565206EC3A36F2073656A616D206368656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282477352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202477332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A4D616E6461746F206461204D6F72746520536167726164612074656D20756D61206368616E6365206D7569746F2070657175656E6120646520657865637574617220696E696D69676F7320717565206EC3A36F2073656A616D206368656665732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'ptBR', 0x00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202473332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024733420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247335206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00416272697220756D6120437572696F7369646164652044657376696164612065766F636120756D20466172646F205375626A756761646F207175652069646F6C6174726120766F63C3AA20647572616E7465206F20636F6D626174652C20636F6E636564656E646F202477332520646520247072692E0D0A0D0A566F63C3AA20706F646520746572206174C3A92024773420466172646F73205375626A756761646F732073696D756C74616E65616D656E74652E0D0A4170C3B373207265756E6972206174C3A920247735206964C3B36C61747261732C2061207175616E746964616465206465202470726920636F6E63656469646120706F7220466172646F2061756D656E74612E00, 67186), +(3776013982, 1248927, 'ptBR', 0x005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282473352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202473332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C6465736331323531363033005175616E646F2073657520636F6D70616E686569726F20646520696D657273C3A36F206C616EC3A7612024407370656C6C6E616D65313235313630332C20756D204D616E6461746F205361677261646F20C3A920636F6E63656469646F20616F7320696E74656772616E74657320646F20677275706F2C2064616E646F20C3A07320686162696C6964616465732065206665697469C3A76F73206E6F6369766F732064656C657320756D61206368616E636520646520247B282477352F31303030292A3130307D2E3125206465206361757361722064616E6F205361677261646F2061646963696F6E616C206571756976616C656E74652061202477332520646F206DC3A178696D6F20646520706F6E746F73206465207669646120646F20616C766F20706F72204D616E6461746F2E0D0A0D0A53C3B320706F6465206F636F7272657220756D612076657A20706F7220616C766F2061206361646120243132363133323470726F63636F6F6C646F776E20732E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'ptBR', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'ptBR', 0x004469737369706120617320696C7573C3B5657320646F73204573636F6E6469646F7320656D20756D6120C3A172656120C3A020737561206672656E74652065206F73206D6172636120636F6D6F20456E636F6E747261646F732E0000, 67186), +(3776013982, 1256862, 'ptBR', 0x004469737369706120617320696C7573C3B5657320646F73204573636F6E6469646F7320656D20756D6120C3A17265612065206F73206D6172636120636F6D6F20456E636F6E747261646F732E0000, 67186), +(3776013982, 1256861, 'ptBR', 0x0050756C61206174C3A920756D206C6F63616C2C20646973736970616E646F20617320696C7573C3B5657320646F73204573636F6E6469646F7320656D20746F726E6F20646120C3A172656120646520696D706163746F2E0000, 67186), +(3776013982, 1256860, 'ptBR', 0x004469737369706120617320696C7573C3B5657320646F73204573636F6E6469646F7320C3A020737561206672656E746520706F722024642065206F73206D6172636120636F6D6F20456E636F6E747261646F732E0000, 67186), +(3776013982, 1256010, 'ptBR', 0x004469737369706120617320696C7573C3B5657320646F73204573636F6E6469646F7320656D20756D6120C3A17265612065206F73206D6172636120636F6D6F20456E636F6E747261646F732E0000, 67186), +(1408785804, 249319, 'ptBR', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'ptBR', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'ptBR', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'ptBR', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'ptBR', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'ptBR', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'ptBR', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'ptBR', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'ptBR', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'ptBR', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'ptBR', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'ptBR', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'ptBR', 0x000000, 67186), +(3776013982, 1295497, 'ptBR', 0x000000, 67186), +(3776013982, 1295486, 'ptBR', 0x000000, 67186), +(3776013982, 464291, 'ptBR', 0x000000, 67186), +(3776013982, 1243616, 'ptBR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1243615, 'ptBR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'ptBR', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'ptBR', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'ptBR', 0x00446567656E7472697573206C616EC3A76120756D61207365746120646520656E657267696120646F2063616F7320696E7374C3A176656C20717565207269636F6368657465696120656D20247332206C6F636169732E20416F206174696E676972206F206368C3A36F2C206120656E6572676961206578706C6F64652C2063617573616E646F20243132313531353773312064652064616E6F20646520536F6D62726120616F73206A6F6761646F72657320656D20756D207261696F2064652024313231353135374131206D20646F20706F6E746F20646520696D706163746F2E205365206EC3A36F20686F75766572206E656E68756D206A6F6761646F72206E6120C3A17265612C20617469766120756D612024407370656C6C6E616D65313231353136312E0D0A0D0A4465706F697320646520746F646F73206F732024733220696D706163746F732C206120656E6572676961207269636F63686574656961206D61697320756D612076657A2C20746F726E616E646F2D736520756D612024407370656C6C6E616D65313231353933372E0000, 67186), +(3776013982, 1243588, 'ptBR', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'ptBR', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'ptBR', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'ptBR', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'ptBR', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'ptBR', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'ptBR', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724D657267756C6861646F72206461732050726F66756E64657A6173205475276E616B69747C6E7C634646464644323030C3817265613A207C725A756C27416D616E7C6E7C634646464644323030437573746F3A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724D657267756C6861646F72206461732050726F66756E64657A6173205475276E616B69747C6E7C634646464644323030C3817265613A207C725A756C27416D616E7C6E7C634646464644323030437573746F3A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724D657267756C6861646F72206461732050726F66756E64657A6173205475276E616B69747C6E7C634646464644323030C3817265613A207C725A756C27416D616E7C6E7C634646464644323030437573746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724D657267756C6861646F72206461732050726F66756E64657A6173205475276E616B69747C6E7C634646464644323030C3817265613A207C725A756C27416D616E7C6E7C634646464644323030437573746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724D657267756C6861646F72206461732050726F66756E64657A6173205475276E616B69747C6E7C634646464644323030C3817265613A207C725A756C27416D616E7C6E7C634646464644323030437573746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724D657267756C6861646F72206461732050726F66756E64657A6173205475276E616B69747C6E7C634646464644323030C3817265613A207C725A756C27416D616E7C6E7C634646464644323030437573746F3A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'ptBR', 0x0041C3A76F69746120636F6D20756D2074616C686F206475706C6F207072656369736F20636F6E747261206F20616C766F20617475616C2E204361646120676F6C706520636175736120243132353737333673312064652064616E6F2046C3AD7369636F20636F6D206D61697320243132353737343573312064652064616E6F205361677261646F206120636164612024313235373734357431207320706F722024313235373734356420616F7320696E696D69676F7320616F20616C63616E6365206520646569786120756D612024407370656C6C6E616D6531323535333130206E6F206368C3A36F2E0000, 67186), +(4033975491, 619581, 'ptBR', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'ptBR', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'ptBR', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'ptBR', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'ptBR', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'ptBR', 0x5665726D656C686100243F63315B4F2064616E6F20646520446573696E74656772617220636F6E736F6D6520247B2473322F313030307D2E31207320646F20536F70726F20646520466F676F20646F7320696E696D69676F73206174696E6769646F732C206465746F6E616E646F2D6F20652063617573616E646F2064616E6F206571756976616C656E746520612024733425206461207175616E74696461646520636F6E73756D6964612E0D0A0D0A4F2064616E6F206465205069726120636F6E736F6D6520247B2473332F313030307D207320646F20536F70726F20646520466F676F20646F7320696E696D69676F73206174696E6769646F732C206465746F6E616E646F2D6F20652063617573616E646F2064616E6F206571756976616C656E746520612024733725206461207175616E74696461646520636F6E73756D6964612E5D5B4120637572612064652041627261C3A76F2056657264656A616E746520636F6E736F6D6520247B2473352F313030307D207320646F20536F70726F204F6EC3AD7269636F20646F7320616C6961646F732063757261646F732C206465746F6E616E646F2D6F206520637572616E646F206F206571756976616C656E746520612024733625206461207175616E74696461646520636F6E73756D6964612E0D0A0D0A41206375726120646520466C6F722064652045736D6572616C646120636F6E736F6D6520247B2473312F313030307D207320646F20536F70726F204F6EC3AD7269636F20646F7320616C6961646F732063757261646F732C206465746F6E616E646F2D6F206520637572616E646F206F206571756976616C656E746520612024733625206461207175616E74696461646520636F6E73756D6964612E5D0000, 67186), +(4033975491, 619554, 'ptBR', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'ptBR', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'ptBR', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'ptBR', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'ptBR', 0x000000, 67186), +(2151089334, 7976, 'ptBR', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'ptBR', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'ptBR', 0x456D697373C3A172696F20646F2043616F73205061766F726F736F00000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'ptBR', 0x00556D612024407370656C6C6E616D6531323439363039206174696E6769646120666F7261206465206F7264656D206372696120756D20636C616D6F722065636F616E74652C2073696C656E6369616E646F206F20616C766F20706F722024642E200053696C656E636961646F2E00, 67186), +(3247720076, 42321, 'ptBR', 0x0000000000, 67186), +(4033975491, 619506, 'ptBR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'ptBR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'ptBR', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'ptBR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'ptBR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'ptBR', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'ptBR', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'ptBR', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'ptBR', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'ptBR', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'ptBR', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'ptBR', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'ptBR', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'ptBR', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'ptBR', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'ptBR', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'ptBR', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'ptBR', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'ptBR', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'ptBR', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'ptBR', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'ptBR', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'ptBR', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'ptBR', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'ptBR', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'ptBR', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'ptBR', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'ptBR', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'ptBR', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'ptBR', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'ptBR', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'ptBR', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'ptBR', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'ptBR', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'ptBR', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'ptBR', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'ptBR', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'ptBR', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'ptBR', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'ptBR', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'ptBR', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'ptBR', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'ptBR', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'ptBR', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'ptBR', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'ptBR', 0x53C3AD74696F2052697475616CC3AD737469636F3A20506F6E746F20646520457370696E68616461676100556D2072697475616C2070657269676F736F20657374C3A12073656E646F207265616C697A61646F206E61732070726F78696D6964616465732E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'ptBR', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'ptBR', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'ptBR', 0x004F206C616EC3A761646F72206C696265726120756D61206578706C6F73C3A36F20646520706F64657220617263616E6F2C2063617573616E646F202473312064652064616E6F20417263616E6F20616F73206A6F6761646F72657320656D20756D207261696F20646520244131206D2E0000, 67186), +(3776013982, 1295237, 'ptBR', 0x004F206C616EC3A761646F72206C696265726120756D61206578706C6F73C3A36F20646520706F64657220617263616E6F2C2063617573616E646F202473312064652064616E6F20417263616E6F20616F73206A6F6761646F72657320656D20756D207261696F20646520244131206D2E0000, 67186), +(600565378, 632510, 'ptBR', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'ptBR', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'ptBR', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'ptBR', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'ptBR', 0x00507265706172612D73652070617261207472696E636861722061206361726E652E205175616E646F20657374C3A12061746976612C20737561207072C3B378696D612074656E746174697661206465204573666F6C616D656E746F206465204D69646E6967687420636F6E6365646572C3A1206361726E6520706172612073657220757361646120656D2063756C696EC3A17269612E0050726570617261646F2070617261207472696E636861722061206361726E65206461207072C3B378696D61206372696174757261206465204D69646E696768742071756520766F63C3AA206573666F6C61722C206F6274656E646F206361726E6520706172612075736F20656D2063756C696EC3A17269612E00, 67186), +(3776013982, 442615, 'ptBR', 0x00507265706172612D73652070617261207472696E636861722061206361726E652E205175616E646F20657374C3A12061746976612C20737561207072C3B378696D612074656E746174697661206465204573666F6C616D656E746F206465204B68617A20416C67617220636F6E6365646572C3A1206361726E6520706172612073657220757361646120656D2063756C696EC3A17269612E0050726570617261646F2070617261207472696E636861722061206361726E65206461207072C3B378696D61206372696174757261206465204B68617A20416C6761722071756520766F63C3AA206573666F6C61722C206F6274656E646F206361726E6520706172612075736F20656D2063756C696EC3A17269612E00, 67186), +(3386943305, 23675, 'ptBR', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'ptBR', 0x506F7274616C2044656D6F6EC3AD61636F00000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'ptBR', 0x0053616920646F204D657267756C686F2046C3A17369636F2E0000, 67186), +(3776013982, 1241218, 'ptBR', 0x000000, 67186), +(2575642838, 749, 'ptBR', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'ptBR', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'ptBR', 0x00506F74656E6369616C697A61646F2070656C612070726573656EC3A76120646520756D20696E696D69676F207375706572696F722C207265666C6574696E646F202477312520646520746F646F206F2064616E6F20646520766F6C74612070617261206F206C616EC3A761646F722E00506F74656E6369616C697A61646F2070656C612070726573656EC3A76120646520756D20696E696D69676F207375706572696F722C207265666C6574696E646F202477312520646520746F646F206F2064616E6F20646520766F6C74612070617261206F206C616EC3A761646F722E0D0A0D0A506F74656E6369616C697A61646F20706F723A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120566F7261736975735D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220526569204361C3AD646F2053616C6861646161725D00, 67186), +(3425193231, 546424, 'ptBR', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'ptBR', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'ptBR', 0x000000, 67186), +(600565378, 664416, 'ptBR', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'ptBR', 0x00456E63616E7461207065726D616E656E74656D656E746520756D612066657272616D656E74612070726F66697373696F6E616C20636F6D204465737472657A612053696E27646F7265692C2061756D656E74616E646F20656D20246563312061204465737472657A612E204EC3A36F20706F64652073657220757361646F20656D206974656E73206465206EC3AD76656C206D61696F7220646F207175652024656369782E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523A54616C656E746F732054616C61737369616E6F73202D205175616C6964616465206465205175656C277468616C61737C52200000, 67186), +(261693969, 93049, 'ptBR', 0xFFFFFFFFFFFFFFFF416A756461206E6F20646576657220646520636173610000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'ptBR', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'ptBR', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'ptBR', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'ptBR', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'ptBR', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'ptBR', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'ptBR', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'ptBR', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'ptBR', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'ptBR', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'ptBR', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'ptBR', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'ptBR', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'ptBR', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'ptBR', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'ptBR', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'ptBR', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'ptBR', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'ptBR', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'ptBR', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'ptBR', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'ptBR', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'ptBR', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'ptBR', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'ptBR', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'ptBR', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'ptBR', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'ptBR', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'ptBR', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'ptBR', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'ptBR', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'ptBR', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'ptBR', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'ptBR', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'ptBR', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'ptBR', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'ptBR', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'ptBR', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'ptBR', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'ptBR', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'ptBR', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'ptBR', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'ptBR', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'ptBR', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'ptBR', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'ptBR', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'ptBR', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'ptBR', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'ptBR', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'ptBR', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'ptBR', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'ptBR', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'ptBR', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'ptBR', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'ptBR', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'ptBR', 0x004571756970652D736520636F6D20756D61205661726120646520506573636172206520656E636F6E74726520756D20636F72706F206427C3A16775612E20436C6971756520636F6D206F20626F74C3A36F206469726569746F206E6120626F6961206465207065736361207175616E646F20656C612062616C616EC3A76172207061726120666973676172206F2070656978652E205175616E746F206D61696F7220666F7220612073756120706572C3AD6369612C206D61696F7220736572C3A1206120737561206368616E6365206465206669736761722070656978657320656D20C3A172656173206465206EC3AD76656C20616C746F2E0000, 67186), +(3776013982, 1286820, 'ptBR', 0x000000, 67186), +(3776013982, 1286703, 'ptBR', 0x004571756970652D736520636F6D20756D61205661726120646520506573636172206520656E636F6E74726520756D20636F72706F206427C3A16775612E20436C6971756520636F6D206F20626F74C3A36F206469726569746F206E6120626F6961206465207065736361207175616E646F20656C612062616C616EC3A76172207061726120666973676172206F2070656978652E205175616E746F206D61696F7220666F7220612073756120706572C3AD6369612C206D61696F7220736572C3A1206120737561206368616E6365206465206669736761722070656978657320656D20C3A172656173206465206EC3AD76656C20616C746F2E0000, 67186), +(3776013982, 1253159, 'ptBR', 0x000000, 67186), +(3359787322, 29615, 'ptBR', 0xAF730000, 67186), +(3031818311, 9590, 'ptBR', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'ptBR', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'ptBR', 0xE87A0000, 67186), +(3776013982, 1277169, 'ptBR', 0x0041627261207061726120636F6C657461722031302042726173C3B56573204175726F72616973204865726F69636F732065204DC3AD7469636F732E0000, 67186), +(3776013982, 1243683, 'ptBR', 0x00436F6C6574612031302042726173C3B56573204175726F72616973204DC3AD7469636F2E0000, 67186), +(3776013982, 190784, 'ptBR', 0x0053616C746120706172612063696D6120646F2073657520636F7263656C20706F722024323231383833642C2061756D656E74616E646F20656D202432323138383373342520612076656C6F636964616465206465206D6F76696D656E746F2E20506F64652073657220757361646F20656D20616D6269656E74657320696E7465726E6F73206520656D20636F6D626174652E0000, 67186), +(4033975491, 619076, 'ptBR', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'ptBR', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'ptBR', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'ptBR', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'ptBR', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'ptBR', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'ptBR', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'ptBR', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'ptBR', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'ptBR', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'ptBR', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'ptBR', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'ptBR', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'ptBR', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'ptBR', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'ptBR', 0x05000000F1F304003F0D0400, 67186), +(1181150530, 750840, 'ptBR', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'ptBR', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'ptBR', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'ptBR', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'ptBR', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'ptBR', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'ptBR', 0x1100E18B0000, 67186), +(184881520, 18405, 'ptBR', 0x0F00FC890000, 67186), +(184881520, 18404, 'ptBR', 0x0E00FC890000, 67186), +(184881520, 18403, 'ptBR', 0xDC00F9890000, 67186), +(184881520, 18245, 'ptBR', 0x1100F9890000, 67186), +(184881520, 18244, 'ptBR', 0x0F00F9890000, 67186), +(2575642838, 750, 'ptBR', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'ptBR', 0x000000, 67186), +(3776013982, 1266413, 'ptBR', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'ptBR', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'ptBR', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'ptBR', 0x496E6772656469656E7465205365637265746F00F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'ptBR', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'ptBR', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'ptBR', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'ptBR', 0x004469737061726120756D612073C3A97269652064652061746171756573207072656369736F73206520706F6465726F736F7320636F6E747261206F20616C766F2C2063617573616E646F20247B2434343038383473312B2434343038383673312B2434343038383873317D2064652064616E6F206120656C652065202434343038383873312064652064616E6F20616F7320696E696D69676F7320656D20756D207261696F20646520243434303838384131206D2064656C652E204F2064616E6F20C3A920726564757A69646F206163696D612064652024733120616C766F732E0D0A0D0A447572616E746520612063616E616C697A61C3A7C3A36F2064652044656D6F6C69722C20766F63C3AA2072656365626520247334252061206D656E6F732064652064616E6F2065206669636120696D756E6520612065666569746F732064652061746F72646F616D656E746F2C20726570756C73C3A36F2065206D6F76696D656E746F20666F72C3A761646F2E0D0A0D0A566F63C3AA20706F646520626C6F71756561722C206170617261722C2073652065737175697661722065207573617220616C67756D617320686162696C6964616465732064652064656665736120616F2063616E616C697A61722044656D6F6C69722E0000, 67186), +(3776013982, 1292071, 'ptBR', 0x00496E696D69676F73206174696E6769646F732070656C61206F6E646120646520666F72C3A7612064652046616C616E67652063617573616D20247B2473312F2D317D2E31252061206D656E6F732064652064616E6F206120766F63C3AA20706F722024642E0D0A0043617573616E646F20247B2457312F2D317D2E31252061206D656E6F732064652064616E6F2061202440617572616361737465722E00, 67186), +(3266400455, 1570155, 'ptBR', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'ptBR', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'ptBR', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'ptBR', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'ptBR', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'ptBR', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'ptBR', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'ptBR', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'ptBR', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'ptBR', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'ptBR', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'ptBR', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'ptBR', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'ptBR', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'ptBR', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'ptBR', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'ptBR', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'ptBR', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'ptBR', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'ptBR', 0x170B3D160100, 67186), +(1734738485, 9018, 'ptBR', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'ptBR', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'ptBR', 0x00496D627569207375612061726D616475726120636F6D20756D2065636F2064C3A962696C206461204E617363656E746520646F20536F6C2C20646573626C6F717565616E646F2065666569746F7320766973756169732061646963696F6E6169732070617261206365727461732061706172C3AA6E6369617320646520636F6E6A756E746F7320646520636C617373652064612053C3A97269652031206465204D69646E696768742E0D0A0D0A45666569746F2076C3A16C69646F207061726120746F646F206F2042616E646F206465204775657272612E0000, 67186), +(3776013982, 1273357, 'ptBR', 0x00496D627569207375612061726D616475726120636F6D20756D2065636F2064C3A962696C206461204E617363656E746520646F20536F6C2C20646573626C6F717565616E646F2065666569746F7320766973756169732061646963696F6E6169732070617261206365727461732061706172C3AA6E6369617320646520636F6E6A756E746F7320646520636C617373652064612053C3A97269652031206465204D69646E696768742E0D0A0D0A45666569746F2076C3A16C69646F207061726120746F646F206F2042616E646F206465204775657272612E0000, 67186), +(4167587713, 4140, 'ptBR', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1294727, 'ptBR', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6E536520766F63C3AA207061737361722070656C6F206D656E6F73203130207320636F6D656E646F2C206669636172C3A12024407370656C6C6E616D6534353730343920652067616E686172C3A12024313231393137397337206465205669676F722065202431323139313739733220646F2073657520617472696275746F207072696DC3A172696F20706F722024642E00417472696275746F207072696DC3A172696F2061756D656E7461646F20656D20247731312E00, 67186), +(3776013982, 1294726, 'ptBR', 0x000000, 67186), +(3776013982, 1294720, 'ptBR', 0x00417469726120656D20756D20696E696D69676F2C2063617573616E646F2064616E6F2046C3AD7369636F2E0000, 67186), +(3776013982, 1294703, 'ptBR', 0x00417469726120656D20756D20696E696D69676F2C2063617573616E646F2064616E6F2046C3AD7369636F2E0000, 67186), +(3776013982, 1294669, 'ptBR', 0x0041206372696174757261207365206C616EC3A76120636F6E74726120766F63C3AA2E0041206372696174757261207365206C616EC3A76120636F6E74726120766F63C3AA2E00, 67186), +(3776013982, 1294633, 'ptBR', 0x004F206C616EC3A761646F7220636F73706520626F6C617320646520666F676F20656D20756D206A6F6761646F7220706F722024642C2063617573616E646F20243132363637343573312064652064616E6F20646520466F676F206120636164612024743120732E00436175736120243132363637343573312064652064616E6F20646520466F676F206120636164612024743120732E00, 67186), +(3776013982, 1294563, 'ptBR', 0x000000, 67186), +(3776013982, 1277795, 'ptBR', 0x004469737369706120617320696C7573C3B5657320646F73206573636F6E6469646F7320656D20756D6120C3A172656120C3A020737561206672656E74652065206F73206D6172636120636F6D6F20456E636F6E747261646F732E0000, 67186), +(3776013982, 1272179, 'ptBR', 0x00436F6D70726520636F6D20756D20636F6D65726369616E74652E0D0A0D0A24407370656C6C646573633132353631373100537572707265656E646572616D20766F63C3AA20616E7465732071756520766F63C3AA2070756465737365206D617263617220656C65732E00, 67186), +(3776013982, 1269655, 'ptBR', 0x00436F6D70726520636F6D20756D20636F6D65726369616E74652E0D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'ptBR', 0x00436F6D70726520636F6D20756D20636F6D65726369616E74652E0D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'ptBR', 0x00436F6D70726520636F6D20756D20636F6D65726369616E74652E0D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'ptBR', 0x00436F6D70726520636F6D20756D20636F6D65726369616E74652E0D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'ptBR', 0x00436F6D70726520636F6D20756D20636F6D65726369616E74652E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'ptBR', 0x0054726F6361206465206C7567617220636F6D20756D61206465636F7261C3A7C3A36F207072C3B378696D612E0000, 67186), +(3776013982, 1259647, 'ptBR', 0x0024407370656C6C64657363343532393933004120657870697261C3A7C3A36F20646F732065666569746F732064652046726173636F732C20416D706F6C617320652042656D20416C696D656E7461646F206465204D69646E6967687420666F6920696E746572726F6D706964612E00, 67186), +(3776013982, 1258362, 'ptBR', 0x000D0A7C43464666666666666654656D706F206465206C616EC3A7616D656E746F3A20312C3520732E0D0A526563617267612064612061726D6164696C68613A203520732E7C520D0A0D0A5365206EC3A36F20686F75766572206E656E68756D204361C3A761646F7220656D20756D207261696F206465202452206D2C20766F63C3AA206A6F676120756D20636F6E74C3AA696E65722064652024407370656C6C6E616D653132353833353820656D20756D207261696F206465202472616431206D2064612073756120706F7369C3A7C3A36F20617475616C2E0D0A0D0A536520686F757665722070656C6F206D656E6F7320756D204361C3A761646F7220656D20756D207261696F206465202452206D2C20766F63C3AA206C616EC3A76120756D20636F6E74C3AA696E65722064652024407370656C6C6E616D653132353833353820706572746F20646120706F7369C3A7C3A36F20646F204361C3A761646F72206D616973207072C3B378696D6F20646520766F63C3AA2E0D0A0D0A7C4346463731643566664F62732E3A7C52207C4346466439666366664F7320636F6E74C3AA696E6572657320666963616D20696E766973C3AD766569732070617261206F73204361C3A761646F72657320656E7175616E746F2065737469766572656D206372757A616E646F206F2061722E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C4346466230623062304EC3A36F20C3A9206120636F697361206D61697320657370616C68616661746F73612C206D617320C3A0732076657A657320626173746120756D612073696D706C657320646973747261C3A7C3A36F207061726120676172616E746972206120766974C3B37269612E7C520000, 67186), +(3776013982, 1256009, 'ptBR', 0x004469737369706120617320696C7573C3B5657320646F73206573636F6E6469646F7320656D20756D6120C3A172656120C3A020737561206672656E74652065206F73206D6172636120636F6D6F20456E636F6E747261646F732E0000, 67186), +(3776013982, 1251813, 'ptBR', 0x004F2066616E7461736D6120677269746120616F2073657220656C696D696E61646F2C2063617573616E646F202473312064652064616E6F20646520536F6D627261206120746F646F73206F73206A6F6761646F7265732E0000, 67186), +(1010104591, 22988, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724C7972656E64616C7C6E7C634646464644323030C3817265613A207C724C756170726174617C6E7C634646464644323030437573746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030436F6D65726369616E74653A207C7259617468656F6E7C6E7C634646464644323030C3817265613A207C724C756170726174617C6E7C634646464644323030437573746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'ptBR', 0x7C634646464644323030436F6D65726369616E74653A207C724C7972656E64616C7C6E7C634646464644323030C3817265613A207C724C756170726174617C6E7C634646464644323030437573746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030436F6D65726369616E74653A207C7259617468656F6E7C6E7C634646464644323030C3817265613A207C724C756170726174617C6E7C634646464644323030437573746F3A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'ptBR', 0x7C634646464644323030457370656369616C697A61C3A7C3A36F3A207C724D6F62696C6964616465206465204D65726361646F202D204163657373C3B372696F73206465204D696E657261C3A7C3A36F7C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'ptBR', 0x7C634646464644323030547265696E616D656E746F2064652050726F66697373C3A36F3A207C72456E67656E6861726961206465204D69646E6967687420283335297C6E7C634646464644323030437573746F3A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'ptBR', 0x7C634646464644323030457370656369616C697A61C3A7C3A36F3A207C724D6F62696C6964616465206465204D65726361646F202D204163657373C3B372696F7320646520456E67656E68617269617C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'ptBR', 0xFFFFFFFFFFFFFFFF417263616E74696E61000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'ptBR', 0xFFFFFFFFFFFFFFFF5265636F6E686563696D656E746F2064657669646F00001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'ptBR', 0x556D206974656D207261726F20717565206465766F6C766520616C67756E732072656167656E746573207061726120766F63C3AA206170C3B37320612063726961C3A7C3A36F2E7C6E7C6E436F6E6365646520246576312064652024656E31207061726120657374612063726961C3A7C3A36F2E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'ptBR', 0x41756D656E74612061206368616E63652064652071756520616C67756E732072656167656E7465732073656A616D206465766F6C7669646F73207061726120766F63C3AA206170C3B37320612063726961C3A7C3A36F2E7C6E7C6E436F6E6365646520246576312064652024656E31207061726120657374612063726961C3A7C3A36F2E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'ptBR', 0x556D6120616E6F6D616C69612064696D656E73696F6E616C2071756520676172616E74652070726F6475C3A7C3A36F2061646963696F6E616C20616F2063726961722E7C6E7C6E436F6E6365646520246576312064652024656E31207061726120657374612063726961C3A7C3A36F2E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'ptBR', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C45004174696E676975206F206C696D697465206469C3A172696F20646520757067726164657320646520706572736F6E6167656D2E2054656E746520616D616E68C3A32E0003000000, 67186), +(3205218938, 58259, 'ptBR', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F676572656E636961646F726465726563617267610001000000, 67186), +(3205218938, 58258, 'ptBR', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F6764720001000000, 67186), +(3205218938, 55299, 'ptBR', 0x4A4F55524E4559535F43555252454E545F50524F47524553530050726F67726573736F3A207C636E484947484C494748545F464F4E545F434F4C4F523A25642F25647C720001000000, 67186), +(3205218938, 49471, 'ptBR', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F47524553530050726F67726573736F3A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'ptBR', 0x000000, 67186), +(3776013982, 1294759, 'ptBR', 0x000000, 67186), +(2921112328, 568649, 'ptBR', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'ptBR', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'ptBR', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'ptBR', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'ptBR', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'ptBR', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'ptBR', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'ptBR', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'ptBR', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'ptBR', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'ptBR', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'ptBR', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'ptBR', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'ptBR', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'ptBR', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='ptBR') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='ptBR') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='ptBR') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='ptBR') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x507265736100446572726F746520696E696D69676F7320706F6465726F736F73207061726120636F6E7472696275697220636F6D206F73206573666F72C3A76F7320646520417374616C6F722E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x00556D6120C3BA6C74696D612063656E74656C686120717565696D6120656D206D65696F20C3A0206E6F697465206D61697320736F6D627269612E00456E636F72616A61646F2E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='ptBR'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFF5269746D6F207A65726F0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='ptBR'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'ptBR', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='ptBR' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ptBR'); From bbc7469d9d891eb81f7869d5edddb695b46e462a Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:20:17 +0200 Subject: [PATCH 107/175] DB/Hotfixes: Updated ruRU hotfixes to 12.0.5.67186 --- .../master/2026_04_29_08_hotfixes_ruRU.sql | 2792 +++++++++++++++++ 1 file changed, 2792 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_08_hotfixes_ruRU.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_08_hotfixes_ruRU.sql b/sql/updates/hotfixes/master/2026_04_29_08_hotfixes_ruRU.sql new file mode 100644 index 0000000000000..52038ca125783 --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_08_hotfixes_ruRU.sql @@ -0,0 +1,2792 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'ruRU', 'Заработайте все перечисленные ниже достижения глубоководной рыбалки.', 'Глубоководная рыбалка: новый соперник Джеджу', '', 67186), +(61883, 'ruRU', 'Трижды избегайте осаливания в течение первой минуты матча в \"Дуэли декораторов\"', 'Фокус с исчезновением', '', 67186), +(61887, 'ruRU', 'Получите все достижения \"Дуэли декораторов\".', 'Маскировка до зубов', '', 67186), +(61886, 'ruRU', 'Откройте все улучшения наборов в \"Дуэли декораторов\".', 'Для полного набора', '', 67186), +(61882, 'ruRU', 'Сбросьте эффект разоблачения в \"Дуэли декораторов\" до того, как вас осалят.', 'Насилу ушли', '', 67186), +(61881, 'ruRU', 'Останьтесь последним неосаленным игроком вашей команды в \"Дуэли декораторов\".', 'Тише воды', '', 67186), +(61880, 'ruRU', 'Прячьтесь в течение полутора минут подряд во время \"Дуэли декораторов\".', 'Так холодно в тени', '', 67186), +(61879, 'ruRU', 'Выиграйте раунд, осалив всех спрятавшихся игроков за две минуты во время \"Дуэли декораторов\".', 'Теперь ты води', '', 67186), +(61878, 'ruRU', 'Осальте игроков-противников в роли чародейского следопыта во время \"Дуэли декораторов\".', 'Попались', '', 67186), +(61793, 'ruRU', 'Осальте игроков-противников в роли нейтрализатора во время \"Дуэли декораторов\".', 'Набег из Бездны', '', 67186), +(61792, 'ruRU', 'Осальте игроков-противников в роли разрушителя чар во время \"Дуэли декораторов\".', 'Метка с надписью \"Плохо прячешься\"', '', 67186), +(63263, 'ruRU', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'ruRU', 'Добейтесь счета не менее 3400 в первом сезоне Midnight в режиме \"Эпохальный+\".', 'Эпохальный герой ключей Midnight: 1-й сезон', 'Звание \"Сумрачный претендент\" и предмет \"Затерянное во времени седло\"', 67186), +(61594, 'ruRU', 'Пройдите подземелье \"Небесный Путь\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: Небесный Путь', '', 67186), +(61593, 'ruRU', 'Пройдите подземелье \"Престол Триумвирата\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: Престол Триумвирата', '', 67186), +(61592, 'ruRU', 'Пройдите подземелье \"Яма Сарона\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: Яма Сарона', '', 67186), +(61591, 'ruRU', 'Пройдите подземелье \"Академия Алгет\'ар\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: академия Алгет\'ар', '', 67186), +(61590, 'ruRU', 'Пройдите подземелье \"Шпили Ветрокрылых\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: Шпиль Ветрокрылых', '', 67186), +(61589, 'ruRU', 'Пройдите подземелье \"Узел Нексуса Зенас\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: узел Нексуса Зенас', '', 67186), +(61588, 'ruRU', 'Пройдите подземелье \"Пещеры Маисара\" с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: пещеры Маисара', '', 67186), +(61587, 'ruRU', 'Пройдите подземелье \"Терраса Магистров\" (Midnight) с эпохальным ключом с лучшим результатом в своем регионе.', 'Триумфатор ключей: Терраса Магистров (Midnight)', '', 67186), +(61259, 'ruRU', 'Закончите 1-й сезон Midnight в режиме \"Эпохальный+\", попав в первые 0,1% игроков в вашем регионе.', 'Сумрачный герой: 1-й сезон Midnight', 'Звание: Сумрачный герой', 67186), +(61253, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 30-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 30', 'Уровень ключей не опустится ниже 30-го до конца 1-го сезона Midnight.', 67186), +(61252, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 29-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 29', 'Уровень ключей не опустится ниже 29-го до конца 1-го сезона Midnight.', 67186), +(61251, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 28-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 28', 'Уровень ключей не опустится ниже 28-го до конца 1-го сезона Midnight.', 67186), +(61250, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 27-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 27', 'Уровень ключей не опустится ниже 27-го до конца 1-го сезона Midnight.', 67186), +(61249, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 26-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 26', 'Уровень ключей не опустится ниже 26-го до конца 1-го сезона Midnight.', 67186), +(61248, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 25-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 25', 'Уровень ключей не опустится ниже 25-го до конца 1-го сезона Midnight.', 67186), +(61247, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 24-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 24', 'Уровень ключей не опустится ниже 24-го до конца 1-го сезона Midnight.', 67186), +(61246, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 23-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 23', 'Уровень ключей не опустится ниже 23-го до конца 1-го сезона Midnight.', 67186), +(61245, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 22-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 22', 'Уровень ключей не опустится ниже 22-го до конца 1-го сезона Midnight.', 67186), +(61244, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 21-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 21', 'Уровень ключей не опустится ниже 21-го до конца 1-го сезона Midnight.', 67186), +(61243, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 20-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 20', 'Уровень ключей не опустится ниже 20-го до конца 1-го сезона Midnight.', 67186), +(61242, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 19-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 19', 'Уровень ключей не опустится ниже 19-го до конца 1-го сезона Midnight.', 67186), +(61241, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 18-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 18', 'Уровень ключей не опустится ниже 18-го до конца 1-го сезона Midnight.', 67186), +(61240, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 17-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 17', 'Уровень ключей не опустится ниже 17-го до конца 1-го сезона Midnight.', 67186), +(61239, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 16-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 16', 'Уровень ключей не опустится ниже 16-го до конца 1-го сезона Midnight.', 67186), +(61237, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 15-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 15', 'Уровень ключей не опустится ниже 15-го до конца 1-го сезона Midnight.', 67186), +(61236, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 14-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 14', 'Уровень ключей не опустится ниже 14-го до конца 1-го сезона Midnight.', 67186), +(61235, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 13-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 13', 'Уровень ключей не опустится ниже 13-го до конца 1-го сезона Midnight.', 67186), +(61233, 'ruRU', 'Пройдите все подземелья с ключом \"Эпохальный+\" 12-го уровня за отведенное время в 1-м сезоне Midnight.', 'Midnight, 1-й сезон: прочность ключа – 12', 'Уровень ключей не опустится ниже 12-го до конца 1-го сезона Midnight.', 67186), +(12009, 'ruRU', 'Победите Л\'уру в Престоле Триумвирата в эпохальном режиме, когда все участники группы поражены сокрушающей тьмой.', 'Темная сторона', '', 67186), +(12005, 'ruRU', 'Заставьте Черноклыка уничтожить четыре запечатанных тайника Бездны, используя \"Прыжок тени\", после чего победите Сарпиша в Престоле Триумвирата в эпохальном режиме.', 'Не сдерживайся', '', 67186), +(12004, 'ruRU', 'Вызовите Урджада из мира Бездны с помощью прорыва Бездны, а затем победите его и Зураала Перерожденного в Престоле Триумвирата в эпохальном режиме.', 'Добро пожаловать в Бездну', '', 67186), +(9036, 'ruRU', 'Победите высшего мудреца Вирикс на Небесном Пути в героическом режиме, не уничтожая при этом големов-защитников.', 'Мономания', '', 67186), +(9035, 'ruRU', 'Сделайте в Небесном Пути в героическом режиме так, чтобы три кучки пепла одновременно превратились в солнечные вспышки в бою Рухраном.', 'И была вспышка', '', 67186), +(9034, 'ruRU', 'Победите усиленного голема в Небесном Пути в героическом режиме.', 'Увеличить… Усилить', '', 67186), +(9033, 'ruRU', 'Победите Ранжита в Небесном Пути в героическом режиме, не получая урона от следующих способностей: \"Вращающийся клинок\", \"Стена ветра\", \"Четыре ветра\" и \"Сфокусированный луч света\".', 'К рейду готов IV', '', 67186), +(4525, 'ruRU', 'Расчистите путь к Повелителю Плети Тиранию в Яме Сарона в героическом режиме. Во время первой попытки ни один участник рейда не должен получить урона от сосулек.', 'Носите каски', '', 67186), +(4524, 'ruRU', 'Убейте начальника кузни Гархлада в Яме Сарона в героическом режиме прежде, чем эффект \"Вечная мерзлота\" суммируется 11 раз на любом из игроков.', 'Не жди до одиннадцати!', '', 67186), +(62814, 'ruRU', '', '', '', 67186), +(62813, 'ruRU', '', '', '', 67186), +(62812, 'ruRU', '', '', '', 67186), +(62811, 'ruRU', '', '', '', 67186), +(62296, 'ruRU', '', 'Полученные гербы зари эпохи', '', 67186), +(42769, 'ruRU', 'Перерастите гербы зари героя во время 1-го сезона Midnight.', 'Герой зари', 'Награда: обмен гербов зари героя на гербы зари эпохи', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='Поймайте эпохальное существо 3 раза во время глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: изысканнейшая из рыб', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Наберите в общей сложности 250 000 очков во время глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: матерый глубинный ныряльщик', `Reward_lang`='Награда: отважный спутник, ныряющий вместе с вами', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Поймайте 100 рыб во время глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: гроза впадины', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Воспользуйтесь способностью \"Всплытие!\" во время глубоководной рыбалки, когда запаса воздуха осталось меньше чем на 10 секунд.', `Title_lang`='Глубоководная рыбалка: установленный порядок', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Вынужденно завершите глубоководную рыбалку, попытавшись уплыть за пределы Впадины.', `Title_lang`='Глубоководная рыбалка: морю меня не сдержать', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Истощите запас воздуха в ходе погружения с глубоководными рыбаками.', `Title_lang`='Глубоководная рыбалка: даже лучшие', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62218 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Заработайте все перечисленные ниже достижения глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: идол глубин', `Reward_lang`='Награда: возможность приобрести идол глубин у водолаза Ту\'накита', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Поймайте всех перечисленных ниже существ из Впадины в ходе погружений с глубоководными рыбаками.', `Title_lang`='Глубоководная рыбалка: полая гарпунная турель', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62216 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Поймайте всех перечисленных ниже существ с отмели в ходе погружений с глубоководными рыбаками.', `Title_lang`='Глубоководная рыбалка: тяжелая гарпунная пушка', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62215 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Найдите 10 древних реликвий во время глубоководной рыбалки и откройте мелководную сеть.', `Title_lang`='Глубоководная рыбалка: сеть с тройной нитью', `Reward_lang`='Награда: возможность приобрести сеть с тройной нитью у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Найдите 50 затонувших реликвий во время глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: мелководная сеть', `Reward_lang`='Награда: возможность приобрести мелководную сеть у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Выловите все перечисленные существа во время глубоководной рыбалки и откройте проверенный на безопасной глубине баллон.', `Title_lang`='Глубоководная рыбалка: баллон Налоракка с воздухом', `Reward_lang`='Награда: возможность приобрести баллон Налоракка с воздухом у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Выловите все перечисленные существа во время глубоководной рыбалки и откройте использованный баллон глубинного ныряльщика.', `Title_lang`='Глубоководная рыбалка: проверенный на безопасной глубине баллон', `Reward_lang`='Награда: возможность приобрести проверенный на безопасной глубине баллон у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Выловите каждое перечисленное существо во время глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: использованный баллон глубинного ныряльщика', `Reward_lang`='Награда: возможность приобрести использованный баллон глубинного ныряльщика у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Поймайте как минимум 500 рыб во время глубоководной рыбалки и откройте глубинную смазку.', `Title_lang`='Глубоководная рыбалка: плавники Пака для Впадины', `Reward_lang`='Награда: возможность приобрести плавники Пака для Впадины у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Поймайте как минимум 25 рыб за одно погружение во время глубоководной рыбалки и откройте укрепленные шарниры.', `Title_lang`='Глубоководная рыбалка: глубинная смазка', `Reward_lang`='Награда: возможность приобрести глубинную смазку у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='ruRU'); +UPDATE `achievement_locale` SET `Description_lang`='Поймайте как минимум 3 рыб во время глубоководной рыбалки.', `Title_lang`='Глубоководная рыбалка: укрепленные шарниры', `Reward_lang`='Награда: возможность приобрести укрепленные шарниры у водолаза Джеджу', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='ruRU'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='ruRU'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'ruRU', 'Истинный глубоководный рыбак, заслуживший одобрение самого водолаза Дже\'джy.', '|cFFFFD200Торговец: |rводолаз Ту\'накит|n|cFFFFD200Зона: |rЗул\'Аман|n|cFFFFD200Цена: |r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (309753,289969)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'ruRU', 'Какой параметр \"Дуэли декораторов\" нужно измерить?', 'Какой параметр \"Дуэли декораторов\" нужно измерить?', 67186), +(289969, 'ruRU', 'Серебряный Союз отнял много жизней моих братьев и сестер.\n\nБыла война, говорили они. Обе стороны понесли потери, говорили они. Но мои Похитители Солнца никого не истребляли в Даларане.\n\nОдна из Ветрокрылых получила свое за то, что уничтожила город. Другая теперь стоит передо мной.', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,295258,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294283,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'ruRU', 'Идущий через Бездну %s', 'Идущая через Бездну %s', 67186), +(1307, 'ruRU', 'Сумрачный претендент %s', 'Сумрачная претендентка %s', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'ruRU', '', 67186), +(62821, 'ruRU', '', 67186), +(62820, 'ruRU', '', 67186), +(62819, 'ruRU', '', 67186), +(62818, 'ruRU', '', 67186), +(62817, 'ruRU', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'ruRU', 'Цвет татуировки', 67186), +(8959, 'ruRU', 'Татуировка', 67186), +(8958, 'ruRU', 'Повязка на глаза', 67186), +(8957, 'ruRU', 'Вид рогов', 67186), +(8956, 'ruRU', 'Цвет татуировки', 67186), +(8955, 'ruRU', 'Татуировка', 67186), +(8954, 'ruRU', 'Повязка на глаза', 67186), +(8953, 'ruRU', 'Вид рогов', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'ruRU', '', 67186), +(224842, 'ruRU', 'Завершите матчи в \"Дуэли декораторов\"', 67186), +(224840, 'ruRU', 'Завершите матчи в \"Дуэли декораторов\"', 67186), +(224838, 'ruRU', 'Завершите матчи в \"Дуэли декораторов\"', 67186), +(223318, 'ruRU', 'Глубоководная рыбалка: изысканнейшая из рыб (3 эпохальных)', 67186), +(223121, 'ruRU', 'Глубоководная рыбалка: матерый глубинный ныряльщик', 67186), +(223119, 'ruRU', 'Глубоководная рыбалка: гроза впадины', 67186), +(222479, 'ruRU', 'Глубоководная рыбалка: установленный порядок', 67186), +(222477, 'ruRU', 'Глубоководная рыбалка: морю меня не сдержать', 67186), +(222475, 'ruRU', 'Глубоководная рыбалка: даже лучшие', 67186), +(222466, 'ruRU', 'Глубоководная рыбалка: идол глубин', 67186), +(222453, 'ruRU', 'Глубоководная рыбалка: полая гарпунная турель', 67186), +(222438, 'ruRU', 'Глубоководная рыбалка: тяжелая гарпунная пушка', 67186), +(222436, 'ruRU', 'Глубоководная рыбалка: сеть с тройной нитью', 67186), +(222434, 'ruRU', 'Глубоководная рыбалка: мелководная сеть', 67186), +(222432, 'ruRU', 'Глубоководная рыбалка: баллон Налоракка с воздухом', 67186), +(222430, 'ruRU', 'Глубоководная рыбалка: проверенный на безопасной глубине баллон', 67186), +(222428, 'ruRU', 'Глубоководная рыбалка: использованный баллон глубинного ныряльщика', 67186), +(222426, 'ruRU', 'Глубоководная рыбалка: плавники Пака для Впадины', 67186), +(222424, 'ruRU', 'Глубоководная рыбалка: глубинная смазка', 67186), +(222422, 'ruRU', 'Глубоководная рыбалка: укрепленные шарниры', 67186), +(222416, 'ruRU', 'Глубоководная рыбалка: мешок для улова из шкуры вепря', 67186), +(222290, 'ruRU', 'Кадгарова имитация Криенны', 67186), +(220967, 'ruRU', 'Избегайте осаливания в течение первой минуты матча в \"Дуэли декораторов\"', 67186), +(220603, 'ruRU', 'Заход на цель', 67186), +(220574, 'ruRU', 'В ловушке!', 67186), +(220573, 'ruRU', 'Незваный гость', 67186), +(212256, 'ruRU', 'Пройдите событие \"Глубоководная рыбалка\"', 67186), +(212255, 'ruRU', 'Пройдите событие \"Глубоководная рыбалка\"', 67186), +(229140, 'ruRU', '', 67186), +(229139, 'ruRU', '', 67186), +(229048, 'ruRU', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'ruRU', 'Победите хал\'хадарские войска', 67186), +(225426, 'ruRU', 'Победите хал\'хадарские войска', 67186), +(223423, 'ruRU', 'Освободите фурболгов из племени Призрачной Лапы', 67186), +(223697, 'ruRU', '', 67186), +(223696, 'ruRU', '', 67186), +(223695, 'ruRU', '', 67186), +(223693, 'ruRU', '', 67186), +(219734, 'ruRU', '', 67186), +(209802, 'ruRU', 'Снарядите спутника боевой диковинкой', 67186), +(170782, 'ruRU', 'Снарядите спутника боевой диковинкой', 67186), +(228515, 'ruRU', 'Необходимый счет', 67186), +(228514, 'ruRU', 'Достижение \"Эпохальный герой ключей: 1-й сезон подземелий Midnight\"', 67186), +(227753, 'ruRU', '', 67186), +(227677, 'ruRU', '', 67186), +(227676, 'ruRU', '', 67186), +(227675, 'ruRU', '', 67186), +(227674, 'ruRU', '', 67186), +(227673, 'ruRU', '', 67186), +(227672, 'ruRU', '', 67186), +(227671, 'ruRU', '', 67186), +(225639, 'ruRU', '', 67186), +(225638, 'ruRU', '', 67186), +(225637, 'ruRU', '', 67186), +(225636, 'ruRU', '', 67186), +(225635, 'ruRU', '', 67186), +(225634, 'ruRU', 'Глубоководная рыбалка: жемчужины глубин', 67186), +(225611, 'ruRU', '', 67186), +(225610, 'ruRU', '', 67186), +(225609, 'ruRU', 'Глубоководная рыбалка: коллекционер антиквариата', 67186), +(220963, 'ruRU', 'Завершите раунд и не дайте ни разу себя осалить', 67186), +(220961, 'ruRU', 'Прячьтесь в течение 90 секунд подряд', 67186), +(220959, 'ruRU', 'Победа искателей за две минуты', 67186), +(220958, 'ruRU', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'ruRU', 'Осальте найденного игрока в роли чародейского следопыта', 67186), +(220955, 'ruRU', 'Осальте найденного игрока в роли нейтрализатора', 67186), +(220725, 'ruRU', 'Осальте найденного игрока в роли разрушителя чар', 67186), +(227430, 'ruRU', '', 67186), +(223818, 'ruRU', '', 67186), +(216419, 'ruRU', '', 67186), +(216418, 'ruRU', '', 67186), +(216417, 'ruRU', '', 67186), +(227429, 'ruRU', '', 67186), +(227428, 'ruRU', 'Есть питомец \"Детеныш солнечного хамелеона\"', 67186), +(225732, 'ruRU', 'Получите улучшение \"Мелководная сеть\"', 67186), +(224745, 'ruRU', 'Активируйте часового', 67186), +(222969, 'ruRU', 'Защитите пруд Тихого Шелеста', 67186), +(222803, 'ruRU', 'Повредите барьеры', 67186), +(221550, 'ruRU', 'Убейте оживленный осколок Плети', 67186), +(219955, 'ruRU', 'Убейте стайного сифоноида-оракула', 67186), +(219466, 'ruRU', 'Убейте стайного сифоноида-оракула', 67186), +(225670, 'ruRU', '', 67186), +(225668, 'ruRU', '', 67186), +(225666, 'ruRU', '', 67186), +(225664, 'ruRU', '', 67186), +(227206, 'ruRU', '', 67186), +(223209, 'ruRU', 'Статистика: получите гербы зари эпохи', 67186), +(212362, 'ruRU', 'Достигните среднего уровня предметов 285 во время 1-го сезона Midnight (перерастите гербы зари эпохи)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='ruRU'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'ruRU', 'Туманный сердечник Бездны', 'Можно трансмутировать в мощное снаряжение после победы над сильными врагами в рейдах 1-го сезона Midnight или прохождения эпохальных подземелий с ключом, многообещающих вылазок и охоты в кошмарном режиме.', 67186), +(3347, 'ruRU', 'Герб зари эпохи', 'Используется для улучшения эпохального снаряжения в ходе 1-го сезона Midnight до уровня предмета 276-289. \n\nПри использовании в процессе изготовления изменяет уровень итогового предмета на 272-285 в зависимости от качества.\n\nМожно получить, выполняя следующие задачи:\n\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в эпохальном режиме\n- Подземелья с эпохальным ключом (уровень 9+)', 67186), +(3346, 'ruRU', 'Герб зари героя', 'Используется для улучшения снаряжения героя в ходе 1-го сезона Midnight до уровня предмета 263-276. Можно получить, выполняя следующие задачи:\n\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в героическом режиме\n- Подземелья с эпохальным ключом (уровень 4-8)\n- Вылазки (уровень 11)\n- Трофей охотника за сокровищами (уровень 8+)\n- Охота (кошмарный режим)', 67186), +(3345, 'ruRU', 'Герб зари героя', 'Используется для улучшения снаряжения героя в ходе 1-го сезона Midnight до уровня предмета 263-276. \n\nПри использовании в процессе изготовления изменяет уровень итогового предмета на 259-272 в зависимости от качества.\n\nМожно получить, выполняя следующие задачи:\n\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в героическом режиме\n- Подземелья с эпохальным ключом (уровень 4-8)\n- Вылазки (уровень 11)\n- Трофей охотника за сокровищами (уровень 8+)\n- Охота (кошмарный режим)', 67186), +(3344, 'ruRU', 'Герб зари защитника', 'Используется для улучшения снаряжения защитника в ходе 1-го сезона Midnight до уровня предмета 250-263. Можно получить, выполняя следующие задачи:\n\n- Еженедельные события в открытом мире\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в обычном режиме\n- Сезонные подземелья в эпохальном режиме\nПодземелья с эпохальным ключом (уровень 2-3)\n- Вылазки (уровень 7-10)\n- Трофей охотника за сокровищами (уровень 6-7)\n- Охота (кошмарный режим)', 67186), +(3343, 'ruRU', 'Герб зари защитника', 'Используется для улучшения снаряжения защитника в ходе 1-го сезона Midnight до уровня предмета 250-263. Можно получить, выполняя следующие задачи:\n\n- Еженедельные события в открытом мире\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в обычном режиме\n- Сезонные подземелья в эпохальном режиме\nПодземелья с эпохальным ключом (уровень 2-3)\n- Вылазки (уровень 7-10)\n- Трофей охотника за сокровищами (уровень 6-7)\n- Охота (кошмарный режим)', 67186), +(3342, 'ruRU', 'Герб зари ветерана', 'Используется для улучшения снаряжения ветерана в ходе 1-го сезона Midnight до уровня предмета 237-250. Можно получить, выполняя следующие задачи:\n\n- Повторяемые события в открытом мире\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в режиме поиска рейда\n- Сезонные подземелья в героическом режиме\n- Вылазки (уровень 5-6)\n- Трофей охотника за сокровищами (уровень 4-5)\n- Охота (сложный режим)', 67186), +(3341, 'ruRU', 'Герб зари ветерана', 'Используется для улучшения снаряжения ветерана в ходе 1-го сезона Midnight до уровня предмета 237-250. \n\nПри использовании в процессе изготовления изменяет уровень итогового предмета на 233-246 в зависимости от качества.\n\nМожно получить, выполняя следующие задачи:\n\n- Повторяемые события в открытом мире\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в режиме поиска рейда\n- Сезонные подземелья в героическом режиме\n- Вылазки (уровень 5-6)\n- Трофей охотника за сокровищами (уровень 4-5)\n- Охота (сложный режим)', 67186), +(3418, 'ruRU', 'Туманный сердечник Бездны', 'Можно трансмутировать в мощное снаряжение после победы над сильными врагами в рейдах 1-го сезона Midnight или прохождения эпохальных подземелий с ключом, многообещающих вылазок и охоты в кошмарном режиме.', 67186), +(3391, 'ruRU', 'Герб зари искателя приключений', 'Используется для улучшения снаряжения искателя приключений в ходе 1-го сезона Midnight до уровня предмета 224-237. Можно получить, выполняя следующие задачи:\n\n- Повторяемые события в открытом мире\n- Вылазки (уровень 4)\n- Охота (обычный режим)', 67186), +(3383, 'ruRU', 'Герб зари искателя приключений', 'Используется для улучшения снаряжения искателя приключений в ходе 1-го сезона Midnight до уровня предмета 224-237. \n\nПри использовании в процессе изготовления изменяет уровень итогового предмета на 220-233 в зависимости от качества.\n\nМожно получить, выполняя следующие задачи:\n\n- Повторяемые события в открытом мире\n- Вылазки (уровень 4)\n- Охота (обычный режим)', 67186), +(3348, 'ruRU', 'Герб зари эпохи', 'Используется для улучшения эпохального снаряжения в ходе 1-го сезона Midnight до уровня предмета 276-289. Можно получить, выполняя следующие задачи:\n\n- \"Шпиль Бездны\", \"Провал снов\", \"Марш на Кель\'Данас\" в героическом режиме\n- Подземелья с эпохальным ключом (уровень 9+)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='ruRU'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'ruRU', 'Рухран', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'ruRU', 'Око Акеруса', 67186), +(264717, 'ruRU', 'Сторожевой сглаз амани', 67186), +(264338, 'ruRU', 'Доманаарская панель управления', 67186), +(264336, 'ruRU', 'Мракозарная жаровня', 67186), +(264332, 'ruRU', 'Ритуальный алтарь амани', 67186), +(263238, 'ruRU', 'Темный длинный стол', 67186), +(263230, 'ruRU', 'Книжная полка магистра', 67186), +(256683, 'ruRU', 'Луносветский тренировочный манекен', 67186), +(253451, 'ruRU', 'Фонтан Скрытых Корней', 67186), +(245938, 'ruRU', 'Заросшая аратийская шпалера', 67186), +(245560, 'ruRU', 'Охряное окно медоварни', 67186), +(241044, 'ruRU', 'Аргусский ящик', 67186), +(267641, 'ruRU', 'Поблекший луносветский солнечный гребень', 67186), +(267640, 'ruRU', 'Поблекший луносветский солнечный покров', 67186), +(267639, 'ruRU', 'Поблекший луносветский солнечный шлем', 67186), +(267638, 'ruRU', 'Поблекший луносветский солнечный шпиль', 67186), +(267607, 'ruRU', 'Дымчатые теневые повязки', 67186), +(267606, 'ruRU', 'Перчатки бесконечной гравитации', 67186), +(267605, 'ruRU', 'Захваты непрестанного вихря', 67186), +(267604, 'ruRU', 'Когти великих исполинов', 67186), +(267482, 'ruRU', 'Большой пояс защитника-претендента хара\'ти', 67186), +(267481, 'ruRU', 'Пояс защитника-претендента хара\'ти', 67186), +(267480, 'ruRU', 'Шнурованный ремень защитника-претендента хара\'ти', 67186), +(267479, 'ruRU', 'Кушак защитника-претендента хара\'ти', 67186), +(266432, 'ruRU', 'Луносветский солнечный гребень', 67186), +(266431, 'ruRU', 'Луносветский солнечный покров', 67186), +(266430, 'ruRU', 'Луносветский солнечный шлем', 67186), +(266429, 'ruRU', 'Луносветский солнечный шпиль', 67186), +(263269, 'ruRU', 'Большой пояс защитника хара\'ти', 67186), +(263268, 'ruRU', 'Пояс защитника хара\'ти', 67186), +(263267, 'ruRU', 'Шнурованный ремень защитника хара\'ти', 67186), +(263265, 'ruRU', 'Кушак защитника хара\'ти', 67186), +(272961, 'ruRU', 'Заостренный посох разрушителя чар', 67186), +(272960, 'ruRU', 'Стена щитов разрушителей чар', 67186), +(272318, 'ruRU', 'Пламенный клинок разрушителя чар', 67186), +(272317, 'ruRU', 'Пламенная глефа разрушителя чар', 67186), +(272316, 'ruRU', 'Клинковая пика разрушителя чар', 67186), +(19355, 'ruRU', 'Фокусирующий посох Крыла тени', 67186), +(272338, 'ruRU', 'Чарокрад мага-стража', 67186), +(272337, 'ruRU', 'Чародейский клинок мага-стража', 67186), +(272336, 'ruRU', 'Крушитель разломов нуль-маяка', 67186), +(272321, 'ruRU', 'Магический лук чародейского следопыта', 67186), +(272320, 'ruRU', 'Передатчик разломов нуль-маяка', 67186), +(273874, 'ruRU', 'Меченный Бездной полэкс Ярости Солнца', 67186), +(263970, 'ruRU', 'Меченное Бездной боевое лезвие', 67186), +(263969, 'ruRU', 'Меченный Бездной великий жезл', 67186), +(263968, 'ruRU', 'Меченное Бездной средоточие', 67186), +(263967, 'ruRU', 'Меченный Бездной большой лук', 67186), +(263966, 'ruRU', 'Меченный Бездной великий клинок', 67186), +(263963, 'ruRU', 'Меченный Бездной дуэльный клинок', 67186), +(263960, 'ruRU', 'Меченный Бездной расширяющийся клинок', 67186), +(263959, 'ruRU', 'Меченный Бездной фолиант', 67186), +(263956, 'ruRU', 'Меченный Бездной крушитель', 67186), +(263954, 'ruRU', 'Меченный Бездной боевой жезл', 67186), +(263952, 'ruRU', 'Меченный Бездной посох Ярости Солнца', 67186), +(263950, 'ruRU', 'Меченная Бездной пика', 67186), +(263949, 'ruRU', 'Меченный Бездной бастион', 67186), +(263946, 'ruRU', 'Меченный Бездной дробитель', 67186), +(263943, 'ruRU', 'Меченный Бездной потрошитель', 67186), +(263942, 'ruRU', 'Меченный Бездной клык', 67186), +(263941, 'ruRU', 'Меченное Бездной ружье', 67186), +(263707, 'ruRU', 'Браслеты гнева Бездны', 67186), +(263706, 'ruRU', 'Плащ гнева Бездны', 67186), +(263705, 'ruRU', 'Боевой пояс гнева Бездны', 67186), +(263704, 'ruRU', 'Наплечье гнева Бездны', 67186), +(263703, 'ruRU', 'Ножные латы гнева Бездны', 67186), +(263702, 'ruRU', 'Шлем гнева Бездны', 67186), +(263701, 'ruRU', 'Рукавицы гнева Бездны', 67186), +(263700, 'ruRU', 'Латные башмаки гнева Бездны', 67186), +(263699, 'ruRU', 'Кираса гнева Бездны', 67186), +(263698, 'ruRU', 'Рубашка возмездия Бездны', 67186), +(263697, 'ruRU', 'Наручи возмездия Бездны', 67186), +(263696, 'ruRU', 'Плащ возмездия Бездны', 67186), +(263695, 'ruRU', 'Пояс возмездия Бездны', 67186), +(263694, 'ruRU', 'Наплеч возмездия Бездны', 67186), +(263693, 'ruRU', 'Поножи возмездия Бездны', 67186), +(263692, 'ruRU', 'Наголовник возмездия Бездны', 67186), +(263691, 'ruRU', 'Перчатки возмездия Бездны', 67186), +(263690, 'ruRU', 'Сапоги возмездия Бездны', 67186), +(263689, 'ruRU', 'Одеяния возмездия Бездны', 67186), +(263688, 'ruRU', 'Наголенники штормов Бездны', 67186), +(263687, 'ruRU', 'Наручи штормов Бездны', 67186), +(263686, 'ruRU', 'Плащ штормов Бездны', 67186), +(263685, 'ruRU', 'Пояс штормов Бездны', 67186), +(263684, 'ruRU', 'Эполеты штормов Бездны', 67186), +(263683, 'ruRU', 'Килт штормов Бездны', 67186), +(263682, 'ruRU', 'Шлем штормов Бездны', 67186), +(263681, 'ruRU', 'Рукавицы штормов Бездны', 67186), +(263680, 'ruRU', 'Башмаки штормов Бездны', 67186), +(263679, 'ruRU', 'Кираса штормов Бездны', 67186), +(263678, 'ruRU', 'Наручи клыка Бездны', 67186), +(263677, 'ruRU', 'Плащ клыка Бездны', 67186), +(263676, 'ruRU', 'Пояс клыка Бездны', 67186), +(263675, 'ruRU', 'Наплеч клыка Бездны', 67186), +(263674, 'ruRU', 'Штаны клыка Бездны', 67186), +(263673, 'ruRU', 'Капюшон клыка Бездны', 67186), +(263672, 'ruRU', 'Перчатки клыка Бездны', 67186), +(263671, 'ruRU', 'Сапоги клыка Бездны', 67186), +(263670, 'ruRU', 'Нагрудник клыка Бездны', 67186), +(263669, 'ruRU', 'Рубашка сопричастности Бездне', 67186), +(263668, 'ruRU', 'Наручники сопричастности Бездне', 67186), +(263667, 'ruRU', 'Плащ сопричастности Бездне', 67186), +(263666, 'ruRU', 'Пояс сопричастности Бездне', 67186), +(263665, 'ruRU', 'Наплечье сопричастности Бездне', 67186), +(263664, 'ruRU', 'Поножи сопричастности Бездне', 67186), +(263663, 'ruRU', 'Нимб сопричастности Бездне', 67186), +(263662, 'ruRU', 'Боевые рукавицы сопричастности Бездне', 67186), +(263661, 'ruRU', 'Сапоги сопричастности Бездне', 67186), +(263660, 'ruRU', 'Одеяния сопричастности Бездне', 67186), +(263659, 'ruRU', 'Наголенники правосудия Бездны', 67186), +(263658, 'ruRU', 'Наручники правосудия Бездны', 67186), +(263657, 'ruRU', 'Плащ правосудия Бездны', 67186), +(263656, 'ruRU', 'Пояс правосудия Бездны', 67186), +(263655, 'ruRU', 'Наплеч правосудия Бездны', 67186), +(263654, 'ruRU', 'Ножные латы правосудия Бездны', 67186), +(263653, 'ruRU', 'Корона правосудия Бездны', 67186), +(263652, 'ruRU', 'Рукавицы правосудия Бездны', 67186), +(263651, 'ruRU', 'Латные башмаки правосудия Бездны', 67186), +(263650, 'ruRU', 'Кираса правосудия Бездны', 67186), +(263649, 'ruRU', 'Наручники аколита Бездны', 67186), +(263648, 'ruRU', 'Плащ аколита Бездны', 67186), +(263647, 'ruRU', 'Шнурованный ремень аколита Бездны', 67186), +(263646, 'ruRU', 'Наплеч аколита Бездны', 67186), +(263645, 'ruRU', 'Штаны аколита Бездны', 67186), +(263644, 'ruRU', 'Шлем аколита Бездны', 67186), +(263643, 'ruRU', 'Захваты аколита Бездны', 67186), +(263642, 'ruRU', 'Когти аколита Бездны', 67186), +(263641, 'ruRU', 'Жилет аколита Бездны', 67186), +(263640, 'ruRU', 'Рубашка ветра Бездны', 67186), +(263639, 'ruRU', 'Наручники ветра Бездны', 67186), +(263638, 'ruRU', 'Плащ ветра Бездны', 67186), +(263637, 'ruRU', 'Пояс ветра Бездны', 67186), +(263636, 'ruRU', 'Оплечье ветра Бездны', 67186), +(263635, 'ruRU', 'Штаны ветра Бездны', 67186), +(263634, 'ruRU', 'Корона ветра Бездны', 67186), +(263633, 'ruRU', 'Перчатки ветра Бездны', 67186), +(263632, 'ruRU', 'Сапоги ветра Бездны', 67186), +(263631, 'ruRU', 'Одеяния ветра Бездны', 67186), +(263630, 'ruRU', 'Наручи ловчего Бездны', 67186), +(263629, 'ruRU', 'Плащ ловчего Бездны', 67186), +(263628, 'ruRU', 'Пояс ловчего Бездны', 67186), +(263627, 'ruRU', 'Наплеч ловчего Бездны', 67186), +(263626, 'ruRU', 'Набедренники ловчего Бездны', 67186), +(263625, 'ruRU', 'Шлем ловчего Бездны', 67186), +(263624, 'ruRU', 'Рукавицы ловчего Бездны', 67186), +(263623, 'ruRU', 'Наголенники ловчего Бездны', 67186), +(263622, 'ruRU', 'Кираса ловчего Бездны', 67186), +(263621, 'ruRU', 'Тяжелые наручи хранителя Бездны', 67186), +(263620, 'ruRU', 'Плащ хранителя Бездны', 67186), +(263619, 'ruRU', 'Ремень хранителя Бездны', 67186), +(263618, 'ruRU', 'Наплечье хранителя Бездны', 67186), +(263617, 'ruRU', 'Ножные латы хранителя Бездны', 67186), +(263616, 'ruRU', 'Корона хранителя Бездны', 67186), +(263615, 'ruRU', 'Когти хранителя Бездны', 67186), +(263614, 'ruRU', 'Лапы хранителя Бездны', 67186), +(263613, 'ruRU', 'Кираса хранителя Бездны', 67186), +(263612, 'ruRU', 'Нагрудный доспех ярости Бездны', 67186), +(263611, 'ruRU', 'Наручи ярости Бездны', 67186), +(263610, 'ruRU', 'Плащ ярости Бездны', 67186), +(263609, 'ruRU', 'Пояс ярости Бездны', 67186), +(263608, 'ruRU', 'Наплечные щитки ярости Бездны', 67186), +(263607, 'ruRU', 'Набедренники ярости Бездны', 67186), +(263606, 'ruRU', 'Убор ярости Бездны', 67186), +(263605, 'ruRU', 'Боевые рукавицы ярости Бездны', 67186), +(263604, 'ruRU', 'Сапоги ярости Бездны', 67186), +(263603, 'ruRU', 'Одеяние ярости Бездны', 67186), +(263602, 'ruRU', 'Наручи демона Бездны', 67186), +(263601, 'ruRU', 'Плащ демона Бездны', 67186), +(263600, 'ruRU', 'Шнурованный ремень демона Бездны', 67186), +(263599, 'ruRU', 'Наплечные лезвия демона Бездны', 67186), +(263598, 'ruRU', 'Поножи демона Бездны', 67186), +(263597, 'ruRU', 'Наголовник демона Бездны', 67186), +(263596, 'ruRU', 'Перчатки демона Бездны', 67186), +(263595, 'ruRU', 'Сандалии демона Бездны', 67186), +(263594, 'ruRU', 'Портупея демона Бездны', 67186), +(263593, 'ruRU', 'Тяжелые наручи странника Бездны', 67186), +(263592, 'ruRU', 'Плащ странника Бездны', 67186), +(263591, 'ruRU', 'Ремень странника Бездны', 67186), +(263590, 'ruRU', 'Наплечье странника Бездны', 67186), +(263589, 'ruRU', 'Поножи странника Бездны', 67186), +(263588, 'ruRU', 'Шлем странника Бездны', 67186), +(263587, 'ruRU', 'Перчатки странника Бездны', 67186), +(263586, 'ruRU', 'Латные башмаки странника Бездны', 67186), +(263585, 'ruRU', 'Кираса странника Бездны', 67186), +(251161, 'ruRU', 'Покров ловца душ', 67186), +(133494, 'ruRU', 'Пояс бородавчатого зомби', 67186), +(49810, 'ruRU', 'Пояс бородавчатого зомби', 67186), +(263286, 'ruRU', 'Переделанный гонг грибостражей', 67186), +(255627, 'ruRU', 'Молот галактического гладиатора', 67186), +(253582, 'ruRU', 'Остроплавниковый барахтун', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'ruRU', 'Обучает наложению чар \"Иллюзорное убранство: сновидения\".', '', '', '', 'Формула \"Иллюзорное убранство: сновидения\"', 67186), +(206969, 'ruRU', '', '', '', '', 'Иллюзорное убранство: сновидения', 67186), +(206968, 'ruRU', '', '', '', '', 'Иллюзорное убранство: сновидения', 67186), +(206967, 'ruRU', '', '', '', '', 'Иллюзорное убранство: сновидения', 67186), +(204977, 'ruRU', 'Обучает наложению чар \"Иллюзорное убранство: споры\".', '', '', '', 'Формула: \"Иллюзорное убранство: споры\"', 67186), +(204568, 'ruRU', '', '', '', '', 'Иллюзорное убранство: споры', 67186), +(204567, 'ruRU', '', '', '', '', 'Иллюзорное убранство: споры', 67186), +(204565, 'ruRU', '', '', '', '', 'Иллюзорное убранство: споры', 67186), +(201321, 'ruRU', '', '', '', '', 'Иллюзорное убранство: порядок', 67186), +(201320, 'ruRU', '', '', '', '', 'Иллюзорное убранство: порядок', 67186), +(201319, 'ruRU', '', '', '', '', 'Иллюзорное убранство: порядок', 67186), +(201318, 'ruRU', '', '', '', '', 'Иллюзорное убранство: воздух', 67186), +(201317, 'ruRU', '', '', '', '', 'Иллюзорное убранство: воздух', 67186), +(201316, 'ruRU', '', '', '', '', 'Иллюзорное убранство: воздух', 67186), +(201315, 'ruRU', '', '', '', '', 'Иллюзорное убранство: земля', 67186), +(201314, 'ruRU', '', '', '', '', 'Иллюзорное убранство: земля', 67186), +(201313, 'ruRU', '', '', '', '', 'Иллюзорное убранство: земля', 67186), +(201312, 'ruRU', '', '', '', '', 'Иллюзорное убранство: лед', 67186), +(201311, 'ruRU', '', '', '', '', 'Иллюзорное убранство: лед', 67186), +(201310, 'ruRU', '', '', '', '', 'Иллюзорное убранство: лед', 67186), +(200616, 'ruRU', '', '', '', '', 'Иллюзорное убранство: огонь', 67186), +(200615, 'ruRU', '', '', '', '', 'Иллюзорное убранство: огонь', 67186), +(200614, 'ruRU', '', '', '', '', 'Иллюзорное убранство: огонь', 67186), +(245345, 'ruRU', 'Концентрированная частица изначальной энергии. Можно приобрести у продавца \"Всего в изобилии\" Чель Щербинки или глубоководного рыбака Ту\'накита.', '', '', '', 'Конденсированная жизненная сила', 67186), +(243343, 'ruRU', 'Окно в мир безграничных возможностей.', '', '', '', 'Рыболовная аномалия', 67186), +(243302, 'ruRU', 'Невероятно мощный катализатор роста.', '', '', '', 'Водоцвет', 67186), +(274267, 'ruRU', 'Концентрированная частица изначальной энергии. Можно приобрести у продавца \"Всего в изобилии\" Чель Щербинки или глубоководного рыбака Ту\'накита.', '', '', '', 'Конденсированная жизненная сила', 67186), +(255157, 'ruRU', '', '', '', '', 'Рыболовный журнал глубоководного рыбака', 67186), +(239563, 'ruRU', 'Обучает призывать израненную Бездной рысь. Ее свойства могут меняться в зависимости от навыка верховой езды и местонахождения.', '', '', '', 'Поводок связи Тьмы', 67186), +(223245, 'ruRU', '', '', '', '', 'Комплект: глубоководный рыбак', 67186), +(267009, 'ruRU', '', '', '', '', 'Аманийский тренировочный манекен', 67186), +(267007, 'ruRU', '', '', '', '', 'Око Акеруса', 67186), +(264717, 'ruRU', '', '', '', '', 'Сторожевой сглаз амани', 67186), +(264342, 'ruRU', '', '', '', '', 'Тайник космической Бездны', 67186), +(264338, 'ruRU', '', '', '', '', 'Доманаарская панель управления', 67186), +(264336, 'ruRU', '', '', '', '', 'Мракозарная жаровня', 67186), +(264332, 'ruRU', '', '', '', '', 'Ритуальный алтарь амани', 67186), +(264330, 'ruRU', '', '', '', '', 'Подвесная жаровня амани', 67186), +(264329, 'ruRU', '', '', '', '', 'Аманийский обеденный стол', 67186), +(264258, 'ruRU', '', '', '', '', 'Цветущий горн', 67186), +(263238, 'ruRU', '', '', '', '', 'Темный длинный стол', 67186), +(263233, 'ruRU', '', '', '', '', 'Вращающаяся библиотека син\'дорай', 67186), +(263230, 'ruRU', '', '', '', '', 'Книжная полка магистра', 67186), +(263042, 'ruRU', '', '', '', '', 'Фонарный столб из сияющего корня', 67186), +(263036, 'ruRU', '', '', '', '', 'Висящий рассветный цветок', 67186), +(256683, 'ruRU', '', '', '', '', 'Луносветский тренировочный манекен', 67186), +(253451, 'ruRU', '', '', '', '', 'Фонтан Скрытых Корней', 67186), +(251967, 'ruRU', '', '', '', '', 'Знамя грибостражей', 67186), +(245938, 'ruRU', '', '', '', '', 'Заросшая аратийская шпалера', 67186), +(245560, 'ruRU', '', '', '', '', 'Охряное окно медоварни', 67186), +(241044, 'ruRU', '', '', '', '', 'Аргусский ящик', 67186), +(264914, 'ruRU', 'Тайник, содержащий полевые награды, осколки ключа от реликвария, материалы для улучшения снаряжения, золото и другие предметы.', '', '', '', 'Тайник следопыта', 67186), +(275447, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Спекулятивный танкокрошшер', 67186), +(275446, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Высокодоходный танкокрошшер', 67186), +(275445, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Танкокрошшер \"Зеленый куш\"', 67186), +(275444, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Танкокрошшер \"Голубая фишка\"', 67186), +(275442, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Аметистовый мехакостюм', 67186), +(275440, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Лазурный вестник смерти', 67186), +(275436, 'ruRU', 'Награда за достижение \"Эпохальный герой ключей Midnight: 1-й сезон\". Линдорми, которую можно найти в Луносвете и в Потоках времени, наверняка обменяет это на что-то ценное. Необходимо использовать до конца сезона.', '', '', '', 'Затерянное во времени седло', 67186), +(248248, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Лазурный летун Бездны', 67186), +(247822, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Багровый летун Бездны', 67186), +(237141, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Предприимчивый танкокрошшер', 67186), +(235549, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Багровый танкокрошшер', 67186), +(226357, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Алмазный мехакостюм', 67186), +(213438, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Бесконечный бронедон', 67186), +(209060, 'ruRU', 'Обучает призывать этот транспорт.', '', '', '', 'Изумрудный бронедон', 67186), +(204798, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Инфернальный бронедон', 67186), +(199412, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Штормовой бронедон', 67186), +(192557, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Восстановленный вестник смерти', 67186), +(187682, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Искаженный вестник смерти Пустошей', 67186), +(187525, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Искаженный вестник смерти', 67186), +(182717, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Запятнанный грехом вестник смерти', 67186), +(174836, 'ruRU', 'Учит призывать этот транспорт.', '', '', '', 'Пробужденный червь сомнения', 67186), +(257741, 'ruRU', 'Можно купить или продать на аукционе.', '', '', '', 'Б0П, куратор взрывов', 67186), +(257735, 'ruRU', 'Можно купить или продать на аукционе.', '', '', '', 'Б0П, куратор взрывов', 67186), +(255844, 'ruRU', 'Можно купить или продать на аукционе.', '', '', '', 'Ц61Ц, очень спокойный щенок', 67186), +(255843, 'ruRU', 'Можно купить или продать на аукционе.', '', '', '', 'Ц61Ц, очень спокойный щенок', 67186), +(248592, 'ruRU', 'Призывает Б1Па Обжигателя Душ. Изготавливается игроками с навыком инженерного дела. Можно купить или продать на аукционе.', '', '', '', 'Б1П Обжигатель Душ', 67186), +(248135, 'ruRU', 'Призывает Бипа Обжигателя Душ. Изготавливается игроками с навыком инженерного дела. Можно купить или продать на аукционе.', '', '', '', 'Б1П Обжигатель Душ', 67186), +(274427, 'ruRU', 'ВНИМАНИЕ: наличие внутри транспорта не гарантировано.', '', '', '', 'Контейнер с добычей ша', 67186), +(267643, 'ruRU', '', '', '', '', 'Изношенная тотемная струна амани', 67186), +(267642, 'ruRU', '', '', '', '', 'Изношенный аманийский кулон радости', 67186), +(267641, 'ruRU', '', '', '', '', 'Поблекший луносветский солнечный гребень', 67186), +(267640, 'ruRU', '', '', '', '', 'Поблекший луносветский солнечный покров', 67186), +(267639, 'ruRU', '', '', '', '', 'Поблекший луносветский солнечный шлем', 67186), +(267638, 'ruRU', '', '', '', '', 'Поблекший луносветский солнечный шпиль', 67186), +(267607, 'ruRU', '', '', '', '', 'Дымчатые теневые повязки', 67186), +(267606, 'ruRU', '', '', '', '', 'Перчатки бесконечной гравитации', 67186), +(267605, 'ruRU', '', '', '', '', 'Захваты непрестанного вихря', 67186), +(267604, 'ruRU', '', '', '', '', 'Когти великих исполинов', 67186), +(267482, 'ruRU', '', '', '', '', 'Большой пояс защитника-претендента хара\'ти', 67186), +(267481, 'ruRU', '', '', '', '', 'Пояс защитника-претендента хара\'ти', 67186), +(267480, 'ruRU', '', '', '', '', 'Шнурованный ремень защитника-претендента хара\'ти', 67186), +(267479, 'ruRU', '', '', '', '', 'Кушак защитника-претендента хара\'ти', 67186), +(266432, 'ruRU', '', '', '', '', 'Луносветский солнечный гребень', 67186), +(266431, 'ruRU', '', '', '', '', 'Луносветский солнечный покров', 67186), +(266430, 'ruRU', '', '', '', '', 'Луносветский солнечный шлем', 67186), +(266429, 'ruRU', '', '', '', '', 'Луносветский солнечный шпиль', 67186), +(265740, 'ruRU', '', '', '', '', 'Тотемная струна амани', 67186), +(265739, 'ruRU', '', '', '', '', 'Аманийский кулон радости', 67186), +(264507, 'ruRU', '', '', '', '', 'Тигель беспорядочной энергии', 67186), +(263269, 'ruRU', '', '', '', '', 'Большой пояс защитника хара\'ти', 67186), +(263268, 'ruRU', '', '', '', '', 'Пояс защитника хара\'ти', 67186), +(263267, 'ruRU', '', '', '', '', 'Шнурованный ремень защитника хара\'ти', 67186), +(263265, 'ruRU', '', '', '', '', 'Кушак защитника хара\'ти', 67186), +(270562, 'ruRU', 'Образец кости со странной порчей. Госпожа Мракодол наверняка заинтересуется.', '', '', '', 'Оскверненный образец', 67186), +(249497, 'ruRU', 'Такой острый, что сам Солнечный Колодец его не подпускает.', '', '', '', 'Перец Призрачных земель', 67186), +(272961, 'ruRU', '', '', '', '', 'Заостренный посох разрушителя чар', 67186), +(272960, 'ruRU', '', '', '', '', 'Стена щитов разрушителей чар', 67186), +(272318, 'ruRU', '', '', '', '', 'Пламенный клинок разрушителя чар', 67186), +(272317, 'ruRU', '', '', '', '', 'Пламенная глефа разрушителя чар', 67186), +(272316, 'ruRU', '', '', '', '', 'Клинковая пика разрушителя чар', 67186), +(271631, 'ruRU', 'ВНИМАНИЕ: наличие внутри транспорта не гарантировано', '', '', '', 'Награда стража Света', 67186), +(19355, 'ruRU', '', '', '', '', 'Фокусирующий посох Крыла тени', 67186), +(274578, 'ruRU', 'Небольшой подарок от Дандана, лоа изобилия. Содержит 4500 ед. чистого изобилия.', '', '', '', 'Подношение чистого изобилия', 67186), +(268455, 'ruRU', '', '', '', '', 'Зачарованные песочные часы', 67186), +(268122, 'ruRU', 'Ваши монеты расколдованы. Принимайте более активное участие в следующем матче.', '', '', '', 'Расколдованные монеты', 67186), +(272338, 'ruRU', '', '', '', '', 'Чарокрад мага-стража', 67186), +(272337, 'ruRU', '', '', '', '', 'Чародейский клинок мага-стража', 67186), +(272336, 'ruRU', '', '', '', '', 'Крушитель разломов нуль-маяка', 67186), +(272321, 'ruRU', '', '', '', '', 'Магический лук чародейского следопыта', 67186), +(272320, 'ruRU', '', '', '', '', 'Передатчик разломов нуль-маяка', 67186), +(268481, 'ruRU', 'Обучает призывать погромную пчелу. Ее свойства могут меняться в зависимости от навыка верховой езды и местонахождения.', '', '', '', 'Соты премудрой пчелы магистра', 67186), +(268456, 'ruRU', '', '', '', '', 'Сотворенная скамья', 67186), +(273874, 'ruRU', '', '', '', '', 'Меченный Бездной полэкс Ярости Солнца', 67186), +(263970, 'ruRU', '', '', '', '', 'Меченное Бездной боевое лезвие', 67186), +(263969, 'ruRU', '', '', '', '', 'Меченный Бездной великий жезл', 67186), +(263968, 'ruRU', '', '', '', '', 'Меченное Бездной средоточие', 67186), +(263967, 'ruRU', '', '', '', '', 'Меченный Бездной большой лук', 67186), +(263966, 'ruRU', '', '', '', '', 'Меченный Бездной великий клинок', 67186), +(263963, 'ruRU', '', '', '', '', 'Меченный Бездной дуэльный клинок', 67186), +(263960, 'ruRU', '', '', '', '', 'Меченный Бездной расширяющийся клинок', 67186), +(263959, 'ruRU', '', '', '', '', 'Меченный Бездной фолиант', 67186), +(263956, 'ruRU', '', '', '', '', 'Меченный Бездной крушитель', 67186), +(263954, 'ruRU', '', '', '', '', 'Меченный Бездной боевой жезл', 67186), +(263952, 'ruRU', '', '', '', '', 'Меченный Бездной посох Ярости Солнца', 67186), +(263950, 'ruRU', '', '', '', '', 'Меченная Бездной пика', 67186), +(263949, 'ruRU', '', '', '', '', 'Меченный Бездной бастион', 67186), +(263946, 'ruRU', '', '', '', '', 'Меченный Бездной дробитель', 67186), +(263943, 'ruRU', '', '', '', '', 'Меченный Бездной потрошитель', 67186), +(263942, 'ruRU', '', '', '', '', 'Меченный Бездной клык', 67186), +(263941, 'ruRU', '', '', '', '', 'Меченное Бездной ружье', 67186), +(263707, 'ruRU', '', '', '', '', 'Браслеты гнева Бездны', 67186), +(263706, 'ruRU', '', '', '', '', 'Плащ гнева Бездны', 67186), +(263705, 'ruRU', '', '', '', '', 'Боевой пояс гнева Бездны', 67186), +(263704, 'ruRU', '', '', '', '', 'Наплечье гнева Бездны', 67186), +(263703, 'ruRU', '', '', '', '', 'Ножные латы гнева Бездны', 67186), +(263702, 'ruRU', '', '', '', '', 'Шлем гнева Бездны', 67186), +(263701, 'ruRU', '', '', '', '', 'Рукавицы гнева Бездны', 67186), +(263700, 'ruRU', '', '', '', '', 'Латные башмаки гнева Бездны', 67186), +(263699, 'ruRU', '', '', '', '', 'Кираса гнева Бездны', 67186), +(263698, 'ruRU', '', '', '', '', 'Рубашка возмездия Бездны', 67186), +(263697, 'ruRU', '', '', '', '', 'Наручи возмездия Бездны', 67186), +(263696, 'ruRU', '', '', '', '', 'Плащ возмездия Бездны', 67186), +(263695, 'ruRU', '', '', '', '', 'Пояс возмездия Бездны', 67186), +(263694, 'ruRU', '', '', '', '', 'Наплеч возмездия Бездны', 67186), +(263693, 'ruRU', '', '', '', '', 'Поножи возмездия Бездны', 67186), +(263692, 'ruRU', '', '', '', '', 'Наголовник возмездия Бездны', 67186), +(263691, 'ruRU', '', '', '', '', 'Перчатки возмездия Бездны', 67186), +(263690, 'ruRU', '', '', '', '', 'Сапоги возмездия Бездны', 67186), +(263689, 'ruRU', '', '', '', '', 'Одеяния возмездия Бездны', 67186), +(263688, 'ruRU', '', '', '', '', 'Наголенники штормов Бездны', 67186), +(263687, 'ruRU', '', '', '', '', 'Наручи штормов Бездны', 67186), +(263686, 'ruRU', '', '', '', '', 'Плащ штормов Бездны', 67186), +(263685, 'ruRU', '', '', '', '', 'Пояс штормов Бездны', 67186), +(263684, 'ruRU', '', '', '', '', 'Эполеты штормов Бездны', 67186), +(263683, 'ruRU', '', '', '', '', 'Килт штормов Бездны', 67186), +(263682, 'ruRU', '', '', '', '', 'Шлем штормов Бездны', 67186), +(263681, 'ruRU', '', '', '', '', 'Рукавицы штормов Бездны', 67186), +(263680, 'ruRU', '', '', '', '', 'Башмаки штормов Бездны', 67186), +(263679, 'ruRU', '', '', '', '', 'Кираса штормов Бездны', 67186), +(263678, 'ruRU', '', '', '', '', 'Наручи клыка Бездны', 67186), +(263677, 'ruRU', '', '', '', '', 'Плащ клыка Бездны', 67186), +(263676, 'ruRU', '', '', '', '', 'Пояс клыка Бездны', 67186), +(263675, 'ruRU', '', '', '', '', 'Наплеч клыка Бездны', 67186), +(263674, 'ruRU', '', '', '', '', 'Штаны клыка Бездны', 67186), +(263673, 'ruRU', '', '', '', '', 'Капюшон клыка Бездны', 67186), +(263672, 'ruRU', '', '', '', '', 'Перчатки клыка Бездны', 67186), +(263671, 'ruRU', '', '', '', '', 'Сапоги клыка Бездны', 67186), +(263670, 'ruRU', '', '', '', '', 'Нагрудник клыка Бездны', 67186), +(263669, 'ruRU', '', '', '', '', 'Рубашка сопричастности Бездне', 67186), +(263668, 'ruRU', '', '', '', '', 'Наручники сопричастности Бездне', 67186), +(263667, 'ruRU', '', '', '', '', 'Плащ сопричастности Бездне', 67186), +(263666, 'ruRU', '', '', '', '', 'Пояс сопричастности Бездне', 67186), +(263665, 'ruRU', '', '', '', '', 'Наплечье сопричастности Бездне', 67186), +(263664, 'ruRU', '', '', '', '', 'Поножи сопричастности Бездне', 67186), +(263663, 'ruRU', '', '', '', '', 'Нимб сопричастности Бездне', 67186), +(263662, 'ruRU', '', '', '', '', 'Боевые рукавицы сопричастности Бездне', 67186), +(263661, 'ruRU', '', '', '', '', 'Сапоги сопричастности Бездне', 67186), +(263660, 'ruRU', '', '', '', '', 'Одеяния сопричастности Бездне', 67186), +(263659, 'ruRU', '', '', '', '', 'Наголенники правосудия Бездны', 67186), +(263658, 'ruRU', '', '', '', '', 'Наручники правосудия Бездны', 67186), +(263657, 'ruRU', '', '', '', '', 'Плащ правосудия Бездны', 67186), +(263656, 'ruRU', '', '', '', '', 'Пояс правосудия Бездны', 67186), +(263655, 'ruRU', '', '', '', '', 'Наплеч правосудия Бездны', 67186), +(263654, 'ruRU', '', '', '', '', 'Ножные латы правосудия Бездны', 67186), +(263653, 'ruRU', '', '', '', '', 'Корона правосудия Бездны', 67186), +(263652, 'ruRU', '', '', '', '', 'Рукавицы правосудия Бездны', 67186), +(263651, 'ruRU', '', '', '', '', 'Латные башмаки правосудия Бездны', 67186), +(263650, 'ruRU', '', '', '', '', 'Кираса правосудия Бездны', 67186), +(263649, 'ruRU', '', '', '', '', 'Наручники аколита Бездны', 67186), +(263648, 'ruRU', '', '', '', '', 'Плащ аколита Бездны', 67186), +(263647, 'ruRU', '', '', '', '', 'Шнурованный ремень аколита Бездны', 67186), +(263646, 'ruRU', '', '', '', '', 'Наплеч аколита Бездны', 67186), +(263645, 'ruRU', '', '', '', '', 'Штаны аколита Бездны', 67186), +(263644, 'ruRU', '', '', '', '', 'Шлем аколита Бездны', 67186), +(263643, 'ruRU', '', '', '', '', 'Захваты аколита Бездны', 67186), +(263642, 'ruRU', '', '', '', '', 'Когти аколита Бездны', 67186), +(263641, 'ruRU', '', '', '', '', 'Жилет аколита Бездны', 67186), +(263640, 'ruRU', '', '', '', '', 'Рубашка ветра Бездны', 67186), +(263639, 'ruRU', '', '', '', '', 'Наручники ветра Бездны', 67186), +(263638, 'ruRU', '', '', '', '', 'Плащ ветра Бездны', 67186), +(263637, 'ruRU', '', '', '', '', 'Пояс ветра Бездны', 67186), +(263636, 'ruRU', '', '', '', '', 'Оплечье ветра Бездны', 67186), +(263635, 'ruRU', '', '', '', '', 'Штаны ветра Бездны', 67186), +(263634, 'ruRU', '', '', '', '', 'Корона ветра Бездны', 67186), +(263633, 'ruRU', '', '', '', '', 'Перчатки ветра Бездны', 67186), +(263632, 'ruRU', '', '', '', '', 'Сапоги ветра Бездны', 67186), +(263631, 'ruRU', '', '', '', '', 'Одеяния ветра Бездны', 67186), +(263630, 'ruRU', '', '', '', '', 'Наручи ловчего Бездны', 67186), +(263629, 'ruRU', '', '', '', '', 'Плащ ловчего Бездны', 67186), +(263628, 'ruRU', '', '', '', '', 'Пояс ловчего Бездны', 67186), +(263627, 'ruRU', '', '', '', '', 'Наплеч ловчего Бездны', 67186), +(263626, 'ruRU', '', '', '', '', 'Набедренники ловчего Бездны', 67186), +(263625, 'ruRU', '', '', '', '', 'Шлем ловчего Бездны', 67186), +(263624, 'ruRU', '', '', '', '', 'Рукавицы ловчего Бездны', 67186), +(263623, 'ruRU', '', '', '', '', 'Наголенники ловчего Бездны', 67186), +(263622, 'ruRU', '', '', '', '', 'Кираса ловчего Бездны', 67186), +(263621, 'ruRU', '', '', '', '', 'Тяжелые наручи хранителя Бездны', 67186), +(263620, 'ruRU', '', '', '', '', 'Плащ хранителя Бездны', 67186), +(263619, 'ruRU', '', '', '', '', 'Ремень хранителя Бездны', 67186), +(263618, 'ruRU', '', '', '', '', 'Наплечье хранителя Бездны', 67186), +(263617, 'ruRU', '', '', '', '', 'Ножные латы хранителя Бездны', 67186), +(263616, 'ruRU', '', '', '', '', 'Корона хранителя Бездны', 67186), +(263615, 'ruRU', '', '', '', '', 'Когти хранителя Бездны', 67186), +(263614, 'ruRU', '', '', '', '', 'Лапы хранителя Бездны', 67186), +(263613, 'ruRU', '', '', '', '', 'Кираса хранителя Бездны', 67186), +(263612, 'ruRU', '', '', '', '', 'Нагрудный доспех ярости Бездны', 67186), +(263611, 'ruRU', '', '', '', '', 'Наручи ярости Бездны', 67186), +(263610, 'ruRU', '', '', '', '', 'Плащ ярости Бездны', 67186), +(263609, 'ruRU', '', '', '', '', 'Пояс ярости Бездны', 67186), +(263608, 'ruRU', '', '', '', '', 'Наплечные щитки ярости Бездны', 67186), +(263607, 'ruRU', '', '', '', '', 'Набедренники ярости Бездны', 67186), +(263606, 'ruRU', '', '', '', '', 'Убор ярости Бездны', 67186), +(263605, 'ruRU', '', '', '', '', 'Боевые рукавицы ярости Бездны', 67186), +(263604, 'ruRU', '', '', '', '', 'Сапоги ярости Бездны', 67186), +(263603, 'ruRU', '', '', '', '', 'Одеяние ярости Бездны', 67186), +(263602, 'ruRU', '', '', '', '', 'Наручи демона Бездны', 67186), +(263601, 'ruRU', '', '', '', '', 'Плащ демона Бездны', 67186), +(263600, 'ruRU', '', '', '', '', 'Шнурованный ремень демона Бездны', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'ruRU', '', '', '', '', 'Наплечные лезвия демона Бездны', 67186), +(263598, 'ruRU', '', '', '', '', 'Поножи демона Бездны', 67186), +(263597, 'ruRU', '', '', '', '', 'Наголовник демона Бездны', 67186), +(263596, 'ruRU', '', '', '', '', 'Перчатки демона Бездны', 67186), +(263595, 'ruRU', '', '', '', '', 'Сандалии демона Бездны', 67186), +(263594, 'ruRU', '', '', '', '', 'Портупея демона Бездны', 67186), +(263593, 'ruRU', '', '', '', '', 'Тяжелые наручи странника Бездны', 67186), +(263592, 'ruRU', '', '', '', '', 'Плащ странника Бездны', 67186), +(263591, 'ruRU', '', '', '', '', 'Ремень странника Бездны', 67186), +(263590, 'ruRU', '', '', '', '', 'Наплечье странника Бездны', 67186), +(263589, 'ruRU', '', '', '', '', 'Поножи странника Бездны', 67186), +(263588, 'ruRU', '', '', '', '', 'Шлем странника Бездны', 67186), +(263587, 'ruRU', '', '', '', '', 'Перчатки странника Бездны', 67186), +(263586, 'ruRU', '', '', '', '', 'Латные башмаки странника Бездны', 67186), +(263585, 'ruRU', '', '', '', '', 'Кираса странника Бездны', 67186), +(251161, 'ruRU', 'Реликвия для безумных ритуалов, известных лишь племени Порочной Ветви.', '', '', '', 'Покров ловца душ', 67186), +(133494, 'ruRU', '', '', '', '', 'Пояс бородавчатого зомби', 67186), +(49810, 'ruRU', '', '', '', '', 'Пояс бородавчатого зомби', 67186), +(264323, 'ruRU', 'Содержит декоративное меченное Бездной оружие, которого еще нет в вашей коллекции.', '', '', '', 'Сундук с меченным Бездной оружием', 67186), +(264322, 'ruRU', 'Содержит декоративные меченные Бездной сапоги, которых еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной сапогами', 67186), +(264321, 'ruRU', 'Содержит декоративные меченные Бездной поножи, которых еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной поножами', 67186), +(264320, 'ruRU', 'Содержит декоративные меченные Бездной пояса, которых еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной поясами', 67186), +(264319, 'ruRU', 'Содержит декоративные меченные Бездной перчатки, которых еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной перчатками', 67186), +(264318, 'ruRU', 'Содержит декоративные меченные Бездной наручи, которых еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной наручами', 67186), +(264317, 'ruRU', 'Содержит декоративный меченный Бездной нагрудник, которого еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной нагрудниками', 67186), +(264316, 'ruRU', 'Содержит декоративный меченный Бездной плащ, которого еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной плащами', 67186), +(264315, 'ruRU', 'Содержит декоративные меченные Бездной наплечники, которых еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной наплечниками', 67186), +(264314, 'ruRU', 'Содержит декоративный меченный Бездной шлем, которого еще нет в вашей коллекции.', '', '', '', 'Сундук с меченными Бездной головными уборами', 67186), +(256700, 'ruRU', 'Обучает изготовлению печатки азеротских благословений.', '', '', '', 'Эскиз: печатка азеротских благословений', 67186), +(250445, 'ruRU', '', '', '', '', 'Эхо изобилия: наложение чар', 67186), +(250360, 'ruRU', '', '', '', '', 'Эхо изобилия: снятие шкур', 67186), +(250443, 'ruRU', '', '', '', '', 'Эхо изобилия: травничество', 67186), +(272125, 'ruRU', 'Золото, мракозарный мергель и предмет для текущей специализации в качестве приза за смекалку.', '', '', '', 'Тайник рекрута', 67186), +(263286, 'ruRU', '', '', '', '', 'Переделанный гонг грибостражей', 67186), +(273307, 'ruRU', 'Свежевыжатый лимонад, приготовленный отважным предпринимателем! В нем плавают кристаллики сахара... или это кристаллы маны?', '', '', '', 'Флакон лимонада отваги', 67186), +(265790, 'ruRU', 'Контейнер, содержащий 10 гербов зари героя и гербов зари эпохи.', '', '', '', 'Сундук с гербами зари', 67186), +(246753, 'ruRU', '', '', '', '', 'Великолепная горсть гербов зари эпохи', 67186), +(255627, 'ruRU', '', '', '', '', 'Молот галактического гладиатора', 67186), +(266969, 'ruRU', '', '', '', '', 'Комплект: одежды глубинного ныряльщика', 67186), +(253582, 'ruRU', '', '', '', '', 'Остроплавниковый барахтун', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'ruRU', 'Танки', '$bullet; Прозапасник копается в ближайшей горе ресурсов, применяя |cFF2959D3|Hspell:1235072|h[Использование ресурсов]|h|r.\n$bullet; При контакте гнилые грибы применяют эффект |cFF2959D3|Hspell:1234846|h[Отравляющие споры]|h|r, что предотвращает их |cFF2959D3|Hspell:1245593|h[гнилостный взрыв]|h|r.\n$bullet; |cFF2959D3|Hspell:1234681|h[Голодный рев]|h|r и |cFF2959D3|Hspell:1235125|h[Сытый рев]|h|r наносят значительный урон всем игрокам.', 67186), +(32669, 'ruRU', 'Обзор', 'Прозапасник готов защищать свое богатство любой ценой. Когда его уровень здоровья опускается до 90%, 60% и 30%, он решает |cFF2959D3|Hspell:1235072|h[использовать ресурсы]|h|r и усиливает одну из своих способностей.\n\nНакопив 100 ед. энергии, он начинает бросать на поле боя |cFF2959D3|Hspell:1234233|h[порченые припасы]|h|r, в течение 12 секунд выращивая гнилые грибы. Если на гриб наступить, игрока покрывают |cFF2959D3|Hspell:1234846|h[отравляющие споры]|h|r, – но при этом гриб уничтожается, и |cFF2959D3|Hspell:1245593|h[гнилостный взрыв]|h|r не происходит.', 67186), +(31527, 'ruRU', 'Запретный груз', 'Партия груза, спрятанная от любопытных глаз. Может послужить отличным укрытием.', 67186), +(31282, 'ruRU', 'Танк', '$bullet; Кистия обращает Грызунчик против игроков с помощью |cFF2959D3|Hspell:1230289|h[Темного насыщения]|h|r.\n$bullet; Избегайте |cFF2959D3|Hspell:1253811|h[Брызг Скверны]|h|r Грызунчик.\n$bullet; Прерывайте |cFF2959D3|Hspell:1264095|h[Зеркальные отражения]|h|r Кистии.', 67186), +(31281, 'ruRU', 'Лекари', '$bullet; Кистия обращает Грызунчик против игроков с помощью |cFF2959D3|Hspell:1230289|h[Темного насыщения]|h|r.\n$bullet; Избегайте |cFF2959D3|Hspell:1253811|h[Брызг Скверны]|h|r.\n$bullet; Когда на Кистию действует |cFF2959D3|Hspell:1265412|h[Дестабилизация]|h|r, она наносит значительный урон всем игрокам.', 67186), +(31280, 'ruRU', 'Бойцы', '$bullet; Кистия обращает Грызунчик против игроков с помощью |cFF2959D3|Hspell:1230289|h[Темного насыщения]|h|r.\n$bullet; Избегайте |cFF2959D3|Hspell:1253811|h[Брызг Скверны]|h|r Грызунчик.\n$bullet; Прерывайте |cFF2959D3|Hspell:1264095|h[Зеркальные отражения]|h|r Кистии.', 67186), +(35862, 'ruRU', 'Section 18', '', 67186), +(35353, 'ruRU', 'Раздел 17', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'ruRU', 'Раздел 17', '', 67186), +(34733, 'ruRU', 'Вероломство Ксал\'атат', 'Ксал\'атат предает игроков и отменяет сделку, после чего каждая смерть отнимает 15 сек. от оставшегося времени.', 67186), +(34732, 'ruRU', 'Укрепленный', 'У противников, не являющихся боссами, на 20% больше здоровья. Они наносят на 20% больше урона.', 67186), +(34731, 'ruRU', 'Тиранический', 'У противников-боссов на 25% больше здоровья. Боссы и их прислужники наносят до 15% дополнительного урона.', 67186), +(34730, 'ruRU', '\"Тиранический\" и \"Укрепленный\"', 'Эти свойства дополнительно усиливают противников в подземельях с эпохальным ключом. Одно активируется на 7-м эпохальном уровне, а другое – на 10-м. Свойства меняются каждую неделю.', 67186), +(34727, 'ruRU', 'Сделка с Ксал\'атат: пожирание', '', 67186), +(34725, 'ruRU', 'Сделка с Ксал\'атат: слуга Бездны', '', 67186), +(34722, 'ruRU', 'Сделка с Ксал\'атат: пульсар', '', 67186), +(34720, 'ruRU', 'Эпохальный уровень: 6', '$bullet;Эффект |cFF2959D3|Hspell:1284818|h[Наставление Линдорми]|h|r снят.\n\nПерсонажи со специализацией \"Танк\" могут поговорить с Линдорми возле портала в Потоки времени или в конце подземелья, открытого с помощью эпохального ключа, чтобы получить |cFF2959D3|Hspell:1295986|h[Сияние Линдорми]|h|r, подсвечивающее противников.', 67186), +(35809, 'ruRU', 'Section 158', '', 67186), +(35491, 'ruRU', 'Раздел 69', '', 67186), +(35490, 'ruRU', 'Раздел 70', '', 67186), +(35489, 'ruRU', 'Раздел 76', '', 67186), +(35488, 'ruRU', 'Раздел 67', '$[!15,16\nВ героическом или более сложном режиме \"Гальванизация\" выпускает \"Чрезмерный поток\".$]', 67186), +(35477, 'ruRU', 'Раздел 22', '', 67186), +(35476, 'ruRU', 'Раздел 31', '', 67186), +(35475, 'ruRU', 'Раздел 30', '', 67186), +(35474, 'ruRU', 'Раздел 29', '', 67186), +(35473, 'ruRU', 'Раздел 31', '', 67186), +(35472, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.\n$[!16\nВ эпохальном режиме кристаллы зари могут подвергнуться воздействию \"Погибели Света\".$]', 67186), +(35471, 'ruRU', 'Раздел 22', '', 67186), +(35470, 'ruRU', 'Раздел 31', '', 67186), +(35469, 'ruRU', 'Раздел 30', '', 67186), +(35468, 'ruRU', 'Раздел 29', '', 67186), +(35467, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.\n$[!15\nВ героическом режиме кристаллы зари могут извергать слезы Л\'уры.$]', 67186), +(35466, 'ruRU', 'Раздел 22', '', 67186), +(35465, 'ruRU', 'Раздел 31', '', 67186), +(35464, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.', 67186), +(35463, 'ruRU', 'Раздел 22', '', 67186), +(35462, 'ruRU', 'Раздел 31', '', 67186), +(35461, 'ruRU', 'Раздел 30', '', 67186), +(35460, 'ruRU', 'Раздел 29', '', 67186), +(35459, 'ruRU', 'Раздел 31', '', 67186), +(35458, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.\n$[!16\nВ эпохальном режиме кристаллы зари могут подвергнуться воздействию \"Погибели Света\".$]', 67186), +(35457, 'ruRU', 'Раздел 22', '', 67186), +(35456, 'ruRU', 'Раздел 31', '', 67186), +(35455, 'ruRU', 'Раздел 30', '', 67186), +(35454, 'ruRU', 'Раздел 29', '', 67186), +(35453, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.\n$[!15\nВ героическом режиме кристаллы зари могут извергать слезы Л\'уры.$]', 67186), +(35452, 'ruRU', 'Раздел 22', '', 67186), +(35451, 'ruRU', 'Раздел 31', '', 67186), +(35450, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.', 67186), +(35449, 'ruRU', 'Раздел 22', '', 67186), +(35448, 'ruRU', 'Раздел 31', '', 67186), +(35447, 'ruRU', 'Раздел 30', '', 67186), +(35446, 'ruRU', 'Раздел 29', '', 67186), +(35445, 'ruRU', 'Раздел 31', '', 67186), +(35444, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.\n$[!16\nВ эпохальном режиме кристаллы зари могут подвергнуться воздействию \"Погибели Света\".$]', 67186), +(35443, 'ruRU', 'Раздел 22', '', 67186), +(35442, 'ruRU', 'Раздел 31', '', 67186), +(35441, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.', 67186), +(35440, 'ruRU', 'Раздел 108', '', 67186), +(35439, 'ruRU', 'Раздел 108', '', 67186), +(35438, 'ruRU', 'Раздел 107', '', 67186), +(35435, 'ruRU', 'Раздел 105', '', 67186), +(35434, 'ruRU', 'Раздел 104', '', 67186), +(35418, 'ruRU', 'Раздел 108', '', 67186), +(35373, 'ruRU', 'Раздел 30', '', 67186), +(35371, 'ruRU', 'Раздел 29', '', 67186), +(35366, 'ruRU', 'Раздел 31', '', 67186), +(35361, 'ruRU', 'Раздел 22', '', 67186), +(35360, 'ruRU', 'Кристалл зари', 'Очищенный фрагмент наару, который могут подбирать игроки.\n$[!15\nВ героическом режиме кристаллы зари могут извергать слезы Л\'уры.$]', 67186), +(35357, 'ruRU', 'Раздел 106', '', 67186), +(35344, 'ruRU', 'Раздел 23', '', 67186), +(35343, 'ruRU', 'Раздел 22', '', 67186), +(35342, 'ruRU', 'Кристалл сумерек', 'Угасающий фрагмент наару, который еще можно восстановить.', 67186), +(35341, 'ruRU', 'Раздел 24', '', 67186), +(35340, 'ruRU', 'Кристалл полуночи', 'Темный фрагмент наару, который уже не спасти.', 67186), +(35339, 'ruRU', 'Раздел 19', '', 67186), +(35338, 'ruRU', 'Раздел 18', '', 67186), +(35336, 'ruRU', 'Раздел 16', '', 67186), +(35328, 'ruRU', 'Раздел 11', '', 67186), +(35327, 'ruRU', 'Раздел 10', '', 67186), +(35326, 'ruRU', 'Раздел 9', '', 67186), +(35325, 'ruRU', 'Раздел 8', '$[!15\nВ героическом режиме количество нот увеличивается с каждой мелодией.$]', 67186), +(35324, 'ruRU', 'Раздел 11', '', 67186), +(35319, 'ruRU', 'Раздел 80', '', 67186), +(35317, 'ruRU', 'Раздел 69', '', 67186), +(35316, 'ruRU', 'Раздел 70', '', 67186), +(35315, 'ruRU', 'Раздел 76', '', 67186), +(35314, 'ruRU', 'Раздел 67', '$[!15,16\nВ героическом или более сложном режиме \"Гальванизация\" выпускает \"Чрезмерный поток\".$]', 67186), +(35311, 'ruRU', 'Раздел 69', '', 67186), +(35309, 'ruRU', 'Раздел 74', '', 67186), +(35274, 'ruRU', 'Раздел 70', '$[!16\nВ эпохальном режиме \"Космический распад\" достигает \"Критичности\".$]', 67186), +(35273, 'ruRU', 'Раздел 69', '', 67186), +(35272, 'ruRU', 'Раздел 67', '', 67186), +(35131, 'ruRU', 'Раздел 13', '', 67186), +(35106, 'ruRU', 'Раздел 67', '', 67186), +(35068, 'ruRU', 'Раздел 64', '', 67186), +(35067, 'ruRU', 'Раздел 63', '', 67186), +(35041, 'ruRU', 'Раздел 35', '', 67186), +(35040, 'ruRU', 'Раздел 51', '', 67186), +(35038, 'ruRU', 'Раздел 14', '', 67186), +(35037, 'ruRU', 'Раздел 14', '', 67186), +(35036, 'ruRU', 'Смена фаз: полное затмение', 'Свет угасает, раскол неизбежен.', 67186), +(34847, 'ruRU', 'Раздел 11', '', 67186), +(34846, 'ruRU', 'Раздел 10', '', 67186), +(34845, 'ruRU', 'Раздел 9', '', 67186), +(34844, 'ruRU', 'Раздел 8', '', 67186), +(34474, 'ruRU', 'Раздел 44', '', 67186), +(34456, 'ruRU', 'Раздел 45', '', 67186), +(34450, 'ruRU', 'Раздел 46', '', 67186), +(34243, 'ruRU', 'Раздел 14', '', 67186), +(34242, 'ruRU', 'Раздел 14', '', 67186), +(34001, 'ruRU', 'Раздел 38', '', 67186), +(34000, 'ruRU', 'Раздел 35', '', 67186), +(33990, 'ruRU', 'Раздел 32', '', 67186), +(33989, 'ruRU', 'Раздел 32', '', 67186), +(33983, 'ruRU', 'Раздел 23', '', 67186), +(33982, 'ruRU', 'Раздел 22', '', 67186), +(33981, 'ruRU', 'Кристалл сумерек', 'Угасающий фрагмент наару, который еще можно восстановить.', 67186), +(33975, 'ruRU', 'Раздел 25', '', 67186), +(33924, 'ruRU', 'Раздел 24', '', 67186), +(33742, 'ruRU', 'Кристалл полуночи', 'Темный фрагмент наару, который уже не спасти.', 67186), +(33741, 'ruRU', 'Раздел 19', '', 67186), +(33740, 'ruRU', 'Раздел 15', '', 67186), +(33739, 'ruRU', 'Раздел 18', '', 67186), +(33738, 'ruRU', 'Матрица ликвидации', '', 67186), +(33737, 'ruRU', 'Раздел 16', '', 67186), +(33640, 'ruRU', 'Раздел 12', '', 67186), +(33638, 'ruRU', 'Фаза 2: Темный реактор', 'Отправьтесь в глубины механизма разрушений.', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='Раздел 157', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='ruRU'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='ruRU'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'ruRU', 'Здравствуй, $gпослушник:послушница;!\n\nУзри ВЕЛИКОЛЕПНОЕ ИЗОБИЛИЕ этих земель! Оно неудержимо растет, множится, заполняет весь мир!\n\nТы преданно поклоняешься мне и за это заслуживаешь небольшой дар. В этот раз я ниспошлю тебе чистое изобилие!\n\nИ знай, $gдорогой послушник:дорогая послушница;, что теперь тебе могут встретиться новые подношения, включая конденсированную жизненную силу. Возможно, когда-нибудь ты найдешь их, если приключения заведут тебя в глубины Зул\'Амана.\n\nЖелаю тебе славной жатвы!\n\nДандан, лоа изобилия', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='ruRU'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'ruRU', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='ruRU'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'ruRU', 'Академия Алгет\'ар', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'ruRU', 'Высокодоходный танкокрошшер', '|cFFFFD200Торговец:|r Линдорми|n', '', 67186), +(3009, 'ruRU', 'Спекулятивный танкокрошшер', '|cFFFFD200Торговец:|r Линдорми|n', '', 67186), +(3008, 'ruRU', 'Танкокрошшер \"Зеленый куш\"', '|cFFFFD200Торговец:|r Линдорми|n', '', 67186), +(3007, 'ruRU', 'Танкокрошшер \"Голубая фишка\"', '|cFFFFD200Торговец:|r Линдорми|n', '', 67186), +(3006, 'ruRU', 'Аметистовый мехакостюм', '|cFFFFD200Торговец:|r Линдорми|n', '', 67186), +(3005, 'ruRU', 'Лазурный вестник смерти', '|cFFFFD200Торговец:|r Линдорми|n', '', 67186), +(2535, 'ruRU', 'Израненная Бездной рысь', '|cFFFFD200Источник:|r конфискованная сумка сектанта', 'Народ арати годами оттачивал искусство приручения рысей. Хотя сумеречные сектанты служат своим собственным замыслам, они не отказываются от этой традиции.', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='ruRU'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'ruRU', 'Ловите рыбу с глубоководными рыбаками', 'Поговорите с водолазом Джеджу на берегу Глубин Зул\'Амана, чтобы начать ловить рыбу.', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'ruRU', '', 67186), +(158259, 'ruRU', '', 67186), +(158261, 'ruRU', '', 67186), +(156069, 'ruRU', 'Требуется достижение|n\"Глубоководная рыбалка: универсальный рыбак\"', 67186), +(151169, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: идол глубин\"', 67186), +(151168, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: сеть с тройной нитью\"', 67186), +(151167, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: мелководная сеть\"', 67186), +(151166, 'ruRU', 'Требуется достижение \"Глубоководная рыбалка: полая гарпунная турель\"', 67186), +(151165, 'ruRU', 'Требуется достижение \"Глубоководная рыбалка: тяжелая гарпунная пушка\"', 67186), +(151161, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: плавники Пака для Впадины\"', 67186), +(151160, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: глубинная смазка\"', 67186), +(151159, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: укрепленные шарниры\"', 67186), +(151158, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: баллон Налоракка с воздухом\"', 67186), +(151157, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: проверенный на безопасной глубине баллон\"', 67186), +(151155, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: использованный баллон глубинного ныряльщика\"', 67186), +(155979, 'ruRU', '', 67186), +(157695, 'ruRU', 'Можно использовать только в вылазках 11-го уровня.', 67186), +(157666, 'ruRU', '', 67186), +(157603, 'ruRU', 'Открывается при продвижении по пути участника вылазки 1-го сезона.', 67186), +(154160, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154159, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154158, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154157, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154156, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154155, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154154, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154153, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154152, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(154151, 'ruRU', 'Вы собрали все облики для трансмогрификации, которые можно получить из этого контейнера.', 67186), +(157668, 'ruRU', 'У вас нет затерянного во времени седла. Вы не можете приобрести этот предмет.', 67186), +(155203, 'ruRU', '', 67186), +(155192, 'ruRU', '', 67186), +(155185, 'ruRU', '', 67186), +(154642, 'ruRU', '', 67186), +(156525, 'ruRU', '', 67186), +(156524, 'ruRU', '', 67186), +(151196, 'ruRU', '', 67186), +(157003, 'ruRU', '', 67186), +(157002, 'ruRU', '', 67186), +(156957, 'ruRU', '', 67186), +(156933, 'ruRU', '', 67186), +(151162, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: наживка из плавунка\"', 67186), +(156816, 'ruRU', '', 67186), +(154472, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: высокопрочные очки\"', 67186), +(151164, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: мясо мутномера\"', 67186), +(151163, 'ruRU', 'Требуется достижение:|n\"Глубоководная рыбалка: приманка из лучепера\"', 67186), +(142975, 'ruRU', 'Вы пока не можете получить 10 гербов зари эпохи.', 67186), +(156592, 'ruRU', '', 67186), +(156591, 'ruRU', '', 67186), +(156536, 'ruRU', '', 67186), +(156537, 'ruRU', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'ruRU', 'Глубоководная рыбалка', 67186), +(3389, 'ruRU', 'Удар по столпам: Мерцающий водопад', 67186), +(3308, 'ruRU', 'Разлом Бездны: Закатная отмель', 67186), +(3291, 'ruRU', 'Спорная территория', 67186), +(3280, 'ruRU', 'Беспутные путевые врата', 67186), +(3251, 'ruRU', 'Ритуал Бездны: гризли', 67186), +(3245, 'ruRU', 'Кипи, котел', 67186), +(3234, 'ruRU', 'Оскверненные реликвии Тростинника', 67186), +(3233, 'ruRU', 'Пока мы без сил', 67186), +(3229, 'ruRU', 'Остров Скитальца Бездны', 67186), +(3209, 'ruRU', '[DNT] Example Scenario', 67186), +(3206, 'ruRU', 'Шаблон сценария', 67186), +(3180, 'ruRU', 'Усиленный ритуал', 67186), +(3174, 'ruRU', 'Вторжение Бездны', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'ruRU', 'Ловите подводных обитателей и находите сокровища в Глубинах Зул\'Амана.', 'Глубоководная рыбалка', 67186), +(16090, 'ruRU', '', 'Этап поиска', 67186), +(16088, 'ruRU', '', 'Этап пряток', 67186), +(16441, 'ruRU', 'Добудьте чародейские искры у наг и их вытягивателей, а затем отнесите искры к пилонам.', 'Зарядка пилонов', 67186), +(16376, 'ruRU', 'Победите доманаарского командира.', 'Сломать фалькс', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'ruRU', '', '', 67186), +(58555, 'ruRU', '', '', 67186), +(58554, 'ruRU', '', '', 67186), +(58553, 'ruRU', '', '', 67186), +(58545, 'ruRU', '', '', 67186), +(58544, 'ruRU', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'ruRU', 'Алгарийская плетеная леска', '', 67186), +(8555, 'ruRU', '+$k1 к основной характеристике и +$k2 к броне', '', 67186), +(8554, 'ruRU', '+$k1 к основной характеристике и +$k2 к броне', '', 67186), +(5001, 'ruRU', 'Шип из призрачного железа', '', 67186), +(4216, 'ruRU', 'Колчедановый шип', '', 67186), +(4215, 'ruRU', 'Элементиевый шип', '', 67186), +(3748, 'ruRU', 'Титановый шип', '', 67186), +(2714, 'ruRU', 'Шип из оскверненной стали', '', 67186), +(1704, 'ruRU', 'Ториевый шип', '', 67186), +(463, 'ruRU', 'Мифриловый шип', '', 67186), +(43, 'ruRU', 'Железный шип', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'ruRU', 'Оглушение', 67186), +(1253377, 'ruRU', 'Стремительный взлет', 67186), +(1270444, 'ruRU', 'Необузданная ярость', 67186), +(441587, 'ruRU', 'Скрывающее облако', 67186), +(441429, 'ruRU', 'Скрывающее облако', 67186), +(1298446, 'ruRU', 'Неразрывная связь', 67186), +(1223323, 'ruRU', 'Неразрывная связь', 67186), +(1293502, 'ruRU', '[DNT] Fused Vitality', 67186), +(1270491, 'ruRU', 'Нечестивая преданность', 67186), +(1241077, 'ruRU', 'Гнойная коса', 67186), +(458128, 'ruRU', 'Гнойная коса', 67186), +(363916, 'ruRU', 'Обсидиановая чешуя', 67186), +(353319, 'ruRU', 'Ткач мира', 67186), +(125174, 'ruRU', 'Закон кармы', 67186), +(122470, 'ruRU', 'Закон кармы', 67186), +(23920, 'ruRU', 'Отражение заклинаний', 67186), +(1237942, 'ruRU', 'Приманка', 67186), +(1235216, 'ruRU', 'Полуночная внимательность', 67186), +(1225245, 'ruRU', 'Син\'дорайский роевик', 67186), +(1295986, 'ruRU', 'Сияние Линдорми', 67186), +(1278156, 'ruRU', 'Наставление Линдорми', 67186), +(1298074, 'ruRU', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'ruRU', '', 67186), +(390260, 'ruRU', '', 67186), +(1297413, 'ruRU', 'Провокация скелетов', 67186), +(149981, 'ruRU', 'Провокация скелетов', 67186), +(1289789, 'ruRU', 'Боевой облик', 67186), +(1283168, 'ruRU', 'Объединение вознесенных осколков Бездны', 67186), +(1282778, 'ruRU', 'Вознесенный сердечник Бездны', 67186), +(1264876, 'ruRU', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'ruRU', 'Призрачный осадок', 67186), +(447444, 'ruRU', 'Энтропический разлом', 67186), +(210824, 'ruRU', 'Касание мага', 67186), +(1280123, 'ruRU', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'ruRU', 'Спекулятивный танкокрошшер', 67186), +(1296759, 'ruRU', 'Высокодоходный танкокрошшер', 67186), +(1296758, 'ruRU', 'Танкокрошшер \"Зеленый куш\"', 67186), +(1296756, 'ruRU', 'Танкокрошшер \"Голубая фишка\"', 67186), +(1296734, 'ruRU', 'Аметистовый мехакостюм', 67186), +(1296731, 'ruRU', 'Лазурный вестник смерти', 67186), +(466930, 'ruRU', 'Черная стрела', 67186), +(1291739, 'ruRU', 'Зловещий дар', 67186), +(1281946, 'ruRU', 'Глубоководный рыбак', 67186), +(1270634, 'ruRU', 'Энергоотвод', 67186), +(1270085, 'ruRU', 'Мрачный оберег', 67186), +(1270079, 'ruRU', 'Мрачный оберег', 67186), +(1258411, 'ruRU', 'Кадгарова имитация Криенны', 67186), +(1258410, 'ruRU', 'Кадгарова имитация Криенны', 67186), +(1258336, 'ruRU', 'Последнее предупреждение', 67186), +(1257809, 'ruRU', 'Кадгарова имитация Криенны', 67186), +(1257729, 'ruRU', 'Оживление', 67186), +(1257728, 'ruRU', 'Оживление', 67186), +(1257716, 'ruRU', 'Оживление', 67186), +(1257505, 'ruRU', 'Мрачный оберег', 67186), +(1256189, 'ruRU', 'Глубоководный рыбак', 67186), +(1255966, 'ruRU', 'Регенерация', 67186), +(1253337, 'ruRU', 'Кадгарова имитация Криенны', 67186), +(1253336, 'ruRU', 'Кадгарова имитация Криенны', 67186), +(1253194, 'ruRU', 'Использование ресурсов', 67186), +(1253193, 'ruRU', 'Использование ресурсов', 67186), +(1253185, 'ruRU', 'Использование ресурсов', 67186), +(1253064, 'ruRU', 'Глубоководный рыбак', 67186), +(1252431, 'ruRU', 'Сокрушающая молния (активация)', 67186), +(1241032, 'ruRU', 'Последнее предупреждение', 67186), +(1241023, 'ruRU', 'Последнее предупреждение', 67186), +(1235076, 'ruRU', 'Использование ресурсов', 67186), +(1235075, 'ruRU', 'Использование ресурсов', 67186), +(1235072, 'ruRU', 'Использование ресурсов', 67186), +(1235067, 'ruRU', 'Использование ресурсов', 67186), +(1235066, 'ruRU', 'Использование ресурсов', 67186), +(1235065, 'ruRU', 'Использование ресурсов', 67186), +(1235037, 'ruRU', 'Использование ресурсов', 67186), +(1233865, 'ruRU', 'Нуль-венец', 67186), +(1228865, 'ruRU', 'Израненная Бездной рысь', 67186), +(1225598, 'ruRU', 'Глубоководный рыбак', 67186), +(1225322, 'ruRU', 'Леса Вечной Песни', 67186), +(1225281, 'ruRU', 'Мягкий светоплав', 67186), +(1225277, 'ruRU', 'Восстановленная рыба-певунья', 67186), +(1225273, 'ruRU', 'Зловещий осьминог', 67186), +(1225272, 'ruRU', 'Мерцающая иглоспинка', 67186), +(444803, 'ruRU', 'Пробужденный целакант', 67186), +(1250759, 'ruRU', 'Темная частица', 67186), +(1276894, 'ruRU', 'Трансмутация стихийного сердечника Бездны', 67186), +(1296448, 'ruRU', 'Отчаянный прыжок', 67186), +(472053, 'ruRU', 'Отчаянный прыжок', 67186), +(1296214, 'ruRU', 'Галактическая матрица Бездны', 67186), +(1296205, 'ruRU', 'Утроение', 67186), +(1296169, 'ruRU', 'Грозовая туча', 67186), +(1296168, 'ruRU', 'Грозовая туча', 67186), +(1291767, 'ruRU', 'Метеоритный дождь', 67186), +(1296406, 'ruRU', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'ruRU', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'ruRU', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'ruRU', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'ruRU', 'Сияние Линдорми', 67186), +(1265971, 'ruRU', 'Оружие мрака', 67186), +(444769, 'ruRU', 'Неминуемая смерть', 67186), +(1256191, 'ruRU', 'Завершить подводное плавание', 67186), +(1272821, 'ruRU', 'Мудрость Стены', 67186), +(1244331, 'ruRU', 'Вечное цветение', 67186), +(441845, 'ruRU', 'Бей в сердце', 67186), +(243435, 'ruRU', 'Укрепляющий отвар', 67186), +(221562, 'ruRU', 'Асфиксия', 67186), +(205630, 'ruRU', 'Хватка Иллидана', 67186), +(198158, 'ruRU', 'Массовая невидимость', 67186), +(108194, 'ruRU', 'Асфиксия', 67186), +(1291860, 'ruRU', 'Еда и питье', 67186), +(1291859, 'ruRU', 'Еда и питье', 67186), +(1291858, 'ruRU', 'Еда и питье', 67186), +(1291857, 'ruRU', 'Еда и питье', 67186), +(1291856, 'ruRU', 'Еда и питье', 67186), +(1291855, 'ruRU', 'Еда и питье', 67186), +(1291854, 'ruRU', 'Еда и питье', 67186), +(1291853, 'ruRU', 'Еда и питье', 67186), +(1291852, 'ruRU', 'Еда и питье', 67186), +(1291851, 'ruRU', 'Еда и питье', 67186), +(1291850, 'ruRU', 'Еда и питье', 67186), +(1291849, 'ruRU', 'Еда и питье', 67186), +(1291848, 'ruRU', 'Еда', 67186), +(1291847, 'ruRU', 'Еда', 67186), +(1291846, 'ruRU', 'Еда', 67186), +(1291845, 'ruRU', 'Еда', 67186), +(1291844, 'ruRU', 'Еда', 67186), +(1291843, 'ruRU', 'Еда', 67186), +(1291842, 'ruRU', 'Еда', 67186), +(1291841, 'ruRU', 'Еда', 67186), +(1291840, 'ruRU', 'Еда', 67186), +(1291839, 'ruRU', 'Еда', 67186), +(1291838, 'ruRU', 'Еда', 67186), +(1291837, 'ruRU', 'Еда', 67186), +(1291831, 'ruRU', 'Питье', 67186), +(1291828, 'ruRU', 'Еда', 67186), +(1291827, 'ruRU', 'Еда', 67186), +(1291826, 'ruRU', 'Еда', 67186), +(1291825, 'ruRU', 'Еда', 67186), +(1291824, 'ruRU', 'Еда', 67186), +(1291822, 'ruRU', 'Еда', 67186), +(1291791, 'ruRU', 'Питье', 67186), +(1290929, 'ruRU', 'Питье', 67186), +(1290926, 'ruRU', 'Еда', 67186), +(1290925, 'ruRU', 'Еда', 67186), +(1289221, 'ruRU', 'Награда стража Света', 67186), +(1286537, 'ruRU', 'Еда и питье', 67186), +(1286536, 'ruRU', 'Питье', 67186), +(1286535, 'ruRU', 'Еда', 67186), +(1282100, 'ruRU', 'Оживленная скамья', 67186), +(1282018, 'ruRU', 'Оживленная скамья', 67186), +(1277461, 'ruRU', 'Питье', 67186), +(1269922, 'ruRU', 'Еда', 67186), +(1269921, 'ruRU', 'Еда', 67186), +(1269920, 'ruRU', 'Еда', 67186), +(1269919, 'ruRU', 'Питье', 67186), +(1269918, 'ruRU', 'Питье', 67186), +(1269917, 'ruRU', 'Еда и питье', 67186), +(1269916, 'ruRU', 'Еда и питье', 67186), +(1232065, 'ruRU', 'Еда и питье', 67186), +(1295592, 'ruRU', '[DNT] Clear Voidspire', 67186), +(1244341, 'ruRU', 'Вечное цветение', 67186), +(1262378, 'ruRU', 'Черная корона подавления', 67186), +(1262377, 'ruRU', 'Черная корона подавления', 67186), +(1262376, 'ruRU', 'Черная корона подавления', 67186), +(1262365, 'ruRU', 'Рескрипт священной смерти', 67186), +(1262364, 'ruRU', 'Рескрипт священной смерти', 67186), +(1262359, 'ruRU', 'Рескрипт священной смерти', 67186), +(1248931, 'ruRU', 'Черная корона подавления', 67186), +(1248927, 'ruRU', 'Рескрипт священной смерти', 67186), +(1277796, 'ruRU', 'Рассеивание магии', 67186), +(1256862, 'ruRU', 'Антимагическая стрела', 67186), +(1256861, 'ruRU', 'Рассеивающий прыжок', 67186), +(1256860, 'ruRU', 'Специализация на рассеивании', 67186), +(1256010, 'ruRU', 'Поле нейтрализации', 67186), +(1295508, 'ruRU', 'Изучение', 67186), +(1295497, 'ruRU', 'Неруб', 67186), +(1295486, 'ruRU', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'ruRU', 'Темная молитва', 67186), +(1243616, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1243615, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1243613, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1243605, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1243602, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1243588, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1243586, 'ruRU', 'Нестабильная сущность Бездны', 67186), +(1257701, 'ruRU', 'Обжигающее рассечение', 67186), +(444088, 'ruRU', 'Поглощение пламени', 67186), +(1295319, 'ruRU', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'ruRU', 'Диссонанс', 67186), +(1295278, 'ruRU', 'Цель \"Крушащего бешенства', 67186), +(1295243, 'ruRU', 'Взрыв Пустоты', 67186), +(1295237, 'ruRU', 'Взрыв Пустоты', 67186), +(1226037, 'ruRU', 'Отрезание мяса', 67186), +(442615, 'ruRU', 'Отрезать кусок мяса', 67186), +(1295194, 'ruRU', '[DNT] Cancel Aura', 67186), +(1241218, 'ruRU', '[DNT] Vision of Self', 67186), +(1294288, 'ruRU', 'Сила в тенях', 67186), +(1286830, 'ruRU', 'Ping Fishing Bubble - Despawn', 67186), +(1236092, 'ruRU', 'Зачарование инструментов – син\'дорайская сноровка', 67186), +(1293613, 'ruRU', 'Глубоководная рыбалка', 67186), +(1286820, 'ruRU', 'Глубоководная рыбалка', 67186), +(1286703, 'ruRU', 'Глубоководная рыбалка', 67186), +(1253159, 'ruRU', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'ruRU', 'Открыть тайник', 67186), +(1243683, 'ruRU', 'Великолепная горсть гербов зари эпохи', 67186), +(190784, 'ruRU', 'Божественный скакун', 67186), +(1292124, 'ruRU', '[DNT] Material Creation - Health', 67186), +(1266413, 'ruRU', 'Ожог Бездны', 67186), +(1244345, 'ruRU', 'Ожог Света', 67186), +(1231327, 'ruRU', 'Поглощающая Бездна', 67186), +(436358, 'ruRU', 'Разрушение', 67186), +(1292071, 'ruRU', 'Фаланга', 67186), +(1294776, 'ruRU', 'Блестящая частица солнца', 67186), +(1273357, 'ruRU', 'Блестящая частица солнца', 67186), +(1294727, 'ruRU', 'Сытость', 67186), +(1294726, 'ruRU', 'Жареный зефир', 67186), +(1294720, 'ruRU', 'Выстрел', 67186), +(1294703, 'ruRU', 'Выстрел', 67186), +(1294669, 'ruRU', 'Рывок', 67186), +(1294633, 'ruRU', 'Огненный плевок', 67186), +(1294563, 'ruRU', 'Сломанный щит', 67186), +(1277795, 'ruRU', 'Рассеивание магии', 67186), +(1272179, 'ruRU', 'Эксцентромагический импульс – не приобретено', 67186), +(1269655, 'ruRU', 'Незаметность', 67186), +(1269654, 'ruRU', 'Механический часовой', 67186), +(1269650, 'ruRU', 'Рассеивающий прыжок', 67186), +(1269641, 'ruRU', 'Путешествие по разломам', 67186), +(1269640, 'ruRU', 'Поле нейтрализации', 67186), +(1264545, 'ruRU', 'Поменяться местами', 67186), +(1259647, 'ruRU', 'Ц3РБ3Р', 67186), +(1258362, 'ruRU', 'Ловушка: певчая птица', 67186), +(1256009, 'ruRU', 'Рассеивание магии', 67186), +(1251813, 'ruRU', 'Непроходящий ужас', 67186), +(1294779, 'ruRU', 'DNT', 67186), +(1294759, 'ruRU', 'DNT', 67186), +(1294752, 'ruRU', 'Мрачная симфония', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'ruRU', '', 67186), +(37073, 'ruRU', '', 67186), +(37072, 'ruRU', '', 67186), +(37065, 'ruRU', '', 67186), +(37064, 'ruRU', '', 67186), +(37063, 'ruRU', '', 67186), +(37050, 'ruRU', '', 67186), +(37049, 'ruRU', '', 67186), +(37048, 'ruRU', '', 67186), +(36911, 'ruRU', '', 67186), +(35166, 'ruRU', '', 67186), +(35165, 'ruRU', '', 67186), +(35164, 'ruRU', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'ruRU', 'Педантичное перепроизводство', '', 'Вы лучше изучаете матрицы начертания, увеличивая вероятность изготовить дополнительные иллюзии или расходуемые предметы. $en1 повышается на $ev1 за каждое очко в этой специализации.', 67186), +(137685, 'ruRU', '', '', 'Перепроизводство дает до $ev1% дополнительных товаров при изготовлении расходуемых предметов.', 67186), +(137681, 'ruRU', '', '', 'Перепроизводство дает до $ev1% дополнительных товаров при изготовлении расходуемых предметов.', 67186), +(133669, 'ruRU', '', '', '$en1 повышается на $ev1 при изготовлении сплавов.|n|nОбучает применять завершающие реагенты при изготовлении сплавов.', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='ruRU'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'ruRU', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'ruRU', 'Садовый костюм лесного обитателя', 67186), +(5646, 'ruRU', 'Одежды глубинного ныряльщика', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='ruRU' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'ruRU', 'Ученица Кургсбейн', 67186), +(7698, 'ruRU', 'Продавец \"Дуэли декораторов\"', 67186), +(7693, 'ruRU', 'Сундук', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='ruRU') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='ruRU') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='ruRU') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='ruRU') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='ruRU') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='ruRU') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='ruRU') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='ruRU') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='ruRU') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='ruRU') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='ruRU') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='ruRU') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='ruRU') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='ruRU') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='ruRU') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='ruRU') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='ruRU') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='ruRU') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='ruRU') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='ruRU') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='ruRU') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='ruRU') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='ruRU') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='ruRU') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='ruRU') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='ruRU') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='ruRU') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='ruRU') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='ruRU') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='ruRU') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='ruRU') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='ruRU') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='ruRU') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='ruRU') OR (`TableHash`=2533050585 AND `RecordId`=1529 AND `locale`='ruRU') OR (`TableHash`=2533050585 AND `RecordId`=1528 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5037 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5036 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5035 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5034 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5033 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5032 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5031 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5030 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5029 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5028 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5026 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5025 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5024 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5023 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5022 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5021 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5020 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5019 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5018 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5017 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5016 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5015 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5014 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5013 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5012 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5011 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5010 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5009 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5008 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5007 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5006 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5005 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5004 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5003 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5002 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5001 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5000 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4999 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4998 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4997 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4996 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4995 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4993 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=4992 AND `locale`='ruRU') OR (`TableHash`=21457424 AND `RecordId`=1552 AND `locale`='ruRU') OR (`TableHash`=21457424 AND `RecordId`=1551 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='ruRU') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='ruRU') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='ruRU') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='ruRU') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='ruRU') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='ruRU') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='ruRU') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='ruRU') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='ruRU') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='ruRU') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='ruRU') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='ruRU') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='ruRU') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='ruRU') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='ruRU') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='ruRU') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='ruRU') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='ruRU') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='ruRU') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='ruRU') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='ruRU') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='ruRU') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='ruRU') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='ruRU') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='ruRU') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='ruRU') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='ruRU') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='ruRU') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='ruRU') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='ruRU') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='ruRU') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='ruRU') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='ruRU') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='ruRU') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='ruRU') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='ruRU') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='ruRU') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='ruRU') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='ruRU') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='ruRU') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='ruRU') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='ruRU') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='ruRU') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='ruRU') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='ruRU') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='ruRU') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='ruRU') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='ruRU') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='ruRU') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='ruRU') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='ruRU') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='ruRU') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='ruRU') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='ruRU') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='ruRU') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='ruRU') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='ruRU') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='ruRU') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='ruRU') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='ruRU') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='ruRU') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='ruRU') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='ruRU') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='ruRU') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='ruRU') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='ruRU') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='ruRU') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='ruRU') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='ruRU') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='ruRU') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='ruRU') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='ruRU') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='ruRU') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='ruRU') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='ruRU') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='ruRU') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='ruRU') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='ruRU') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='ruRU') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='ruRU') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='ruRU') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='ruRU') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='ruRU') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='ruRU') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='ruRU') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='ruRU') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='ruRU') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='ruRU') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='ruRU') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='ruRU') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='ruRU') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='ruRU') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='ruRU') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='ruRU') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='ruRU') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='ruRU') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='ruRU') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='ruRU') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='ruRU') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='ruRU') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='ruRU') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='ruRU') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='ruRU') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='ruRU') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='ruRU') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='ruRU') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='ruRU') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='ruRU') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='ruRU') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='ruRU') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='ruRU') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='ruRU') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='ruRU') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='ruRU') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='ruRU'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'ruRU', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'ruRU', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'ruRU', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'ruRU', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'ruRU', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'ruRU', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'ruRU', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'ruRU', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'ruRU', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'ruRU', 0x000000, 67186), +(2534422486, 3918, 'ruRU', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'ruRU', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'ruRU', 0x00243F63325B22D09ED0BFD183D181D182D0BED188D0B5D0BDD0B8D0B520D0A1D0BAD0B2D0B5D180D0BDD0BED0B9225D5B22D09BD183D18720D091D0B5D0B7D0B4D0BDD18B225D20D0BDD0B0D0BDD0BED181D0B8D18220D0BDD0B0202473312520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B02E0D0A0D0A243F63325B22D09ED0BFD183D181D182D0BED188D0B5D0BDD0B8D0B520D0A1D0BAD0B2D0B5D180D0BDD0BED0B9225D5BD09FD0BED0BBD0BDD0BED0B520D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D0B52022D09BD183D187D0B020D091D0B5D0B7D0B4D0BDD18B225D20D0B4D0B0D0B5D18220243F63325B24733420246CD184D180D0B0D0B3D0BCD0B5D0BDD1823AD184D180D0B0D0B3D0BCD0B5D0BDD182D0B03AD184D180D0B0D0B3D0BCD0B5D0BDD182D0BED0B23B20D0B4D183D188D0B820D0B7D0B020D0B2D180D0B5D0BCD18F20D0B4D0B5D0B9D181D182D0B2D0B8D18F5D5B24733320246CD18DD184D184D0B5D0BAD1823AD18DD184D184D0B5D0BAD182D0B03AD18DD184D184D0B5D0BAD182D0BED0B23B2022D091D0B5D0B7D0B4D0BDD0BED0BFD0B0D0B4D0B0225D2E0000, 67186), +(3776013982, 1270444, 'ruRU', 0x0022D0A0D0B0D181D0BAD0B0D0BBD18BD0B2D0B0D0BDD0B8D0B520D0B4D183D1882220D0B82022D092D0B7D180D18BD0B2D0BDD0B0D18F20D0B4D183D188D0B02220D18120D0BDD0B5D0BAD0BED182D0BED180D0BED0B920D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20D0B7D0B020D0BAD0B0D0B6D0B4D183D18E20D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0BDD183D18E20D0B4D183D188D18320D0B4D0B0D18ED18220D18DD184D184D0B5D0BAD1822022D09DD0B5D0BED0B1D183D0B7D0B4D0B0D0BDD0BDD0B0D18F20D18FD180D0BED181D182D18C222E20D09ED0BD20D0BFD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0BCD0B5D0BDD0B8D182D18C2022D09CD0B5D182D0B0D0BCD0BED180D184D0BED0B7D1832220D18120D0B2D180D0B5D0BCD0B5D0BDD0B5D0BC20D0B4D0B5D0B9D181D182D0B2D0B8D18F2024733120D181D0B5D0BA2E2C20D0BDD0B520D0B7D0B0D0BFD183D181D0BAD0B0D18F20D0B2D180D0B5D0BCD18F20D0B2D0BED181D181D182D0B0D0BDD0BED0B2D0BBD0B5D0BDD0B8D18F2E0000, 67186), +(3776013982, 441587, 'ruRU', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'ruRU', 0x00D09FD180D0B820D0B0D0BAD182D0B8D0B2D0B0D186D0B8D0B820243F613133373033365B22D092D18BD0B1D180D0BED181D0B020D0B0D0B4D180D0B5D0BDD0B0D0BBD0B8D0BDD0B0225D5B22D0A2D0B5D0BDD0B5D0B2D18BD18520D0BAD0BBD0B8D0BDD0BAD0BED0B2225D20D0B2D18B20D181D0BED0B7D0B4D0B0D0B5D182D0B520D0BED0B1D0BBD0B0D0BAD0BE20D0B4D18BD0BCD0B020D0BDD0B02024343431353837642E20D09FD0BED0BAD0B020D0B2D18B20D0BDD0B0D185D0BED0B4D0B8D182D0B5D181D18C20D0B220D0BED0B1D0BBD0B0D0BAD0B52C20D0B2D0B0D188D0B820D0B0D182D0B0D0BAD0B820D0BFD180D0B8D0BCD0B5D0BDD18FD18ED18220D0BA20D186D0B5D0BBD18FD0BC20D18DD184D184D0B5D0BAD1822022D0A1D0BCD18FD182D0B5D0BDD0B8D0B5222C20D181D183D0BCD0BCD0B8D180D183D18ED189D0B8D0B9D181D18F20D0B5D189D0B520243434313634306D3220244CD180D0B0D0B73AD180D0B0D0B7D0B03AD180D0B0D0B73B2E0D0A0D0AD0ADD184D184D0B5D0BAD18220D0BFD180D0BED0B4D0BED0BBD0B6D0B0D0B5D18220D0B4D0B5D0B9D181D182D0B2D0BED0B2D0B0D182D18C20D0B220D182D0B5D187D0B5D0BDD0B8D0B520243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5D20D181D0B5D0BA2E20D0BFD0BED181D0BBD0B520D0B2D18BD185D0BED0B4D0B020D0B8D0B720D0BED0B1D0BBD0B0D0BAD0B02E0000, 67186), +(3893700160, 445, 'ruRU', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'ruRU', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'ruRU', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'ruRU', 0x00D092D18B20D181D0BDD0BED0B2D0B020D0BFD0BED0BBD183D187D0B0D0B5D182D0B52022D09FD180D0B8D0B7D18BD0B220D0BFD0B8D182D0BED0BCD186D0B0222E0D0A0D0AD092D0BDD0B520D0BFD0BED0BCD0B5D189D0B5D0BDD0B8D0B920D0B2D0B0D18820D0BFD0B8D182D0BED0BCD0B5D18620D0BDD0B0D0BDD0BED181D0B8D18220D0BDD0B0202473312520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B020D0B820D0BFD0BED0BBD183D187D0B0D0B5D18220D0BDD0B0202473322520D0BCD0B5D0BDD18CD188D0B520D183D180D0BED0BDD0B02E0000, 67186), +(3776013982, 1223323, 'ruRU', 0x00D092D18B20D181D0BDD0BED0B2D0B020D0BFD0BED0BBD183D187D0B0D0B5D182D0B52022D09FD180D0B8D0B7D18BD0B220D0BFD0B8D182D0BED0BCD186D0B0222E0D0A0D0AD092D0BDD0B520D0BFD0BED0BCD0B5D189D0B5D0BDD0B8D0B920D0B2D0B0D18820D0BFD0B8D182D0BED0BCD0B5D18620D0BDD0B0D0BDD0BED181D0B8D18220D0BDD0B0202473312520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B020D0B820D0BFD0BED0BBD183D187D0B0D0B5D18220D0BDD0B0202473322520D0BCD0B5D0BDD18CD188D0B520D183D180D0BED0BDD0B02E0000, 67186), +(3468628616, 1818, 'ruRU', 0xD09ED0B1D0B5D0BBD0B8D181D0BA20D182D18CD0BCD18B00D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D0BED0B1D0B5D0BBD0B8D181D0BA20D182D18CD0BCD18B20D18320D0A0D0B0D0B527D0B0D0BDD18B20D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'ruRU', 0xD09ED0B1D0B5D0BBD0B8D181D0BA20D182D18CD0BCD18B00D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D0BED0B1D0B5D0BBD0B8D181D0BA20D182D18CD0BCD18B20D18320D0A0D0B0D0B527D0B0D0BDD18B20D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E00D09ED0B1D0B5D0BBD0B8D181D0BA20D182D18CD0BCD18B002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'ruRU', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'ruRU', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'ruRU', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'ruRU', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'ruRU', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'ruRU', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'ruRU', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'ruRU', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'ruRU', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'ruRU', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'ruRU', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'ruRU', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'ruRU', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'ruRU', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'ruRU', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'ruRU', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'ruRU', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'ruRU', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'ruRU', 0x000000, 67186), +(3037505077, 245345, 'ruRU', 0x5000, 67186), +(3776013982, 1270491, 'ruRU', 0x0000D0A1D0BAD0BED180D0BED181D182D18C20D0B0D182D0B0D0BAD0B820D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020247731252E00, 67186), +(3776013982, 1241077, 'ruRU', 0x00D0A3D181D0BAD0BED180D18FD0B5D18220D0B4D0B5D0B9D181D182D0B2D0B8D0B520D0B2D181D0B5D18520D0B2D0B0D188D0B8D18520D0B2D0B8D0B4D0BED0B220D187D183D0BCD18B20D0BDD0B020247331252E00D092D181D0B520D0B2D0B8D0B4D18B20D187D183D0BCD18B20D0B8D0B3D180D0BED0BAD0B02024406175726163617374657220D0BDD0B0D0BDD0BED181D18FD18220D183D180D0BED0BD20D0BDD0B0202477312520D0B1D18BD181D182D180D0B5D0B52E00, 67186), +(3776013982, 458128, 'ruRU', 0x00D092D18B20D180D0B0D181D181D0B5D0BAD0B0D0B5D182D0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B220D0B220D180D0B0D0B4D0B8D183D181D0B52024613120D0BC20D0BFD0B5D180D0B5D0B420D181D0BED0B1D0BED0B92C20D0BDD0B0D0BDD0BED181D0B8D182D0B52024733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B820D183D181D0BAD0BED180D18FD0B5D182D0B520D0B4D0B5D0B9D181D182D0B2D0B8D0B520D0B2D0B0D188D0B8D18520D18DD184D184D0B5D0BAD182D0BED0B220D187D183D0BCD18B20D0BDD0B020D186D0B5D0BBD0B820D0BDD0B020243132343130373773312520D0BDD0B0202431323431303737642E0000, 67186), +(3899321669, 5919, 'ruRU', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'ruRU', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'ruRU', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'ruRU', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'ruRU', 0xD0A7D0B5D180D0BDD18BD0B900D0A3D0BAD180D0B5D0BFD0BBD18FD0B5D18220D0B2D0B0D188D18320D187D0B5D188D183D18E2C20D183D0BCD0B5D0BDD18CD188D0B0D18F20D0BFD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D0BDD0B02024733125243F733337343334385B20D0B820D0B2D0BED181D0BFD0BED0BBD0BDD18FD18F20D0B7D0B4D0BED180D0BED0B2D18CD0B520D0B220D0BED0B1D18AD0B5D0BCD0B52C20D180D0B0D0B2D0BDD0BED0BC20D0BFD180D0B5D0B4D0BED182D0B2D180D0B0D189D0B5D0BDD0BDD0BED0BCD18320D183D180D0BED0BDD1832C20D0B7D0B02024333734333439645D5B5D2E20D092D180D0B5D0BCD18F20D0B4D0B5D0B9D181D182D0B2D0B8D18F20E280932024642E00D09FD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D183D0BCD0B5D0BDD18CD188D0B5D0BD20D0BDD0B02024773125243F2E2465345B20D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B520D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B220D0BED0B1D18AD0B5D0BCD0B52C20D180D0B0D0B2D0BDD0BED0BC20D0BFD180D0B5D0B4D0BED182D0B2D180D0B0D189D0B5D0BDD0BDD0BED0BCD18320D183D180D0BED0BDD1832E5D5B5D243F2477323D315B0D0AD09DD0B5D0B2D0BED181D0BFD180D0B8D0B8D0BCD187D0B8D0B2D0BED181D182D18C20D0BA20D18DD184D184D0B5D0BAD182D0B0D0BC20D0BFD180D0B5D180D18BD0B2D0B0D0BDD0B8D18F20D0B820D0BDD0B5D0BCD0BED182D18B2E5D5B5D00, 67186), +(4033975491, 589353, 'ruRU', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'ruRU', 0x5076502DD182D0B0D0BBD0B0D0BDD1820024407370656C6C6465736333353333313300D09DD0B5D0B2D0BED181D0BFD180D0B8D0B8D0BCD187D0B8D0B2D0BED181D182D18C20D0BA20D0BCD0B0D0B3D0B8D187D0B5D181D0BAD0BED0BCD18320D183D180D0BED0BDD18320D0B820D0BED182D180D0B8D186D0B0D182D0B5D0BBD18CD0BDD18BD0BC20D18DD184D184D0B5D0BAD182D0B0D0BC2E00, 67186), +(3776013982, 125174, 'ruRU', 0x0024407370656C6C6465736331323234373000D09FD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D0BFD0BED0B3D0BBD0BED189D0B0D0B5D182D181D18F2E0D0A2431323234373073342520D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0BDD0BED0B3D0BE20D183D180D0BED0BDD0B020D0BFD0B5D180D0B5D0BDD0B0D0BFD180D0B0D0B2D0BBD18FD0B5D182D181D18F20D0BDD0B020D186D0B5D0BBD18C2C20D0BDD0B0D185D0BED0B4D18FD189D183D18ED181D18F20D0BFD0BED0B420D0B4D0B5D0B9D181D182D0B2D0B8D0B5D0BC2022D097D0B0D0BAD0BED0BDD0B020D0BAD0B0D180D0BCD18B222E00, 67186), +(3776013982, 122470, 'ruRU', 0x00D09220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D0BFD0BED0B3D0BBD0BED189D0B0D0B5D18220D0BFD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D0B220D0BED0B1D18AD0B5D0BCD0B520D0B4D0BE202473332520D0B2D0B0D188D0B5D0B3D0BE20D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BFD0B5D180D0B5D0BDD0B0D0BFD180D0B0D0B2D0BBD18FD0B5D182202473342520D18DD182D0BED0B3D0BE20D183D180D0BED0BDD0B020D0BDD0B020D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B02C20D0BDD0B0D0BDD0BED181D18F20D0B5D0BCD18320D183D180D0BED0BD20D0BED18220D181D0B8D0BB20D0BFD180D0B8D180D0BED0B4D18B20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024313234323830642E00D0A3D180D0BED0BD2C20D0BDD0B0D0BDD0B5D181D0B5D0BDD0BDD18BD0B920D0BCD0BED0BDD0B0D185D1832C20D0BFD0B5D180D0B5D0BDD0B0D0BFD180D0B0D0B2D0BBD18FD0B5D182D181D18F20D0BDD0B020D0B2D0B0D18120D0B220D0B2D0B8D0B4D0B520D183D180D0BED0BDD0B020D0BED18220D181D0B8D0BB20D0BFD180D0B8D180D0BED0B4D18B20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024313234323830642E00, 67186), +(3776013982, 23920, 'ruRU', 0x00D092D18B20D0BFD0BED0B4D0BDD0B8D0BCD0B0D0B5D182D0B520243F63335BD189D0B8D1825D5BD0BED180D183D0B6D0B8D0B55D2C20D0BED182D180D0B0D0B6D0B0D18F20243F613231333931355B24323133393135733320246CD181D0BBD0B5D0B4D183D18ED189D0B5D0B520D0BDD0B0D0BFD180D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B520D0B220D0B2D0B0D18120D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D0B53AD181D0BBD0B5D0B4D183D18ED189D0B8D18520D0BDD0B0D0BFD180D0B0D0B2D0BBD0B5D0BDD0BDD18BD18520D0B220D0B2D0B0D18120D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F3AD181D0BBD0B5D0B4D183D18ED189D0B8D18520D0BDD0B0D0BFD180D0B0D0B2D0BBD0B5D0BDD0BDD18BD18520D0B220D0B2D0B0D18120D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D0B93B5D5BD0BFD0B5D180D0B2D0BED0B520D0BDD0B0D0BFD180D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B520D0B220D0B2D0B0D18120D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D0B55D20D0B820D183D0BCD0B5D0BDD18CD188D0B0D18F20D0BFD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D0BCD0B0D0B3D0B8D187D0B5D181D0BAD0B8D0B920D183D180D0BED0BD20D0BDD0B0202433383533393173312520D0BDD0B02024642E00243F613138383637325BD09ED182D180D0B0D0B6D0B0D0B5D18220D0BDD0B0D0BFD180D0B0D0B2D0BBD0B5D0BDD0BDD18BD0B520D0B220D0B2D0B0D18120D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F2E5D5BD09ED182D180D0B0D0B6D0B0D0B5D18220D0BFD0B5D180D0B2D0BED0B520D0BDD0B0D0BFD180D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B520D0B220D0B2D0B0D18120D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D0B52E5D00, 67186), +(1274215428, 190484, 'ruRU', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'ruRU', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'ruRU', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'ruRU', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'ruRU', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'ruRU', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'ruRU', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'ruRU', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'ruRU', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'ruRU', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'ruRU', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'ruRU', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'ruRU', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'ruRU', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'ruRU', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'ruRU', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'ruRU', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'ruRU', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'ruRU', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'ruRU', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'ruRU', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'ruRU', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'ruRU', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'ruRU', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'ruRU', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'ruRU', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'ruRU', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'ruRU', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'ruRU', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'ruRU', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'ruRU', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'ruRU', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'ruRU', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'ruRU', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'ruRU', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'ruRU', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'ruRU', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'ruRU', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'ruRU', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'ruRU', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'ruRU', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'ruRU', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'ruRU', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'ruRU', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'ruRU', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'ruRU', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'ruRU', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'ruRU', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'ruRU', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'ruRU', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'ruRU', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'ruRU', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'ruRU', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'ruRU', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'ruRU', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'ruRU', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'ruRU', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'ruRU', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'ruRU', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'ruRU', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'ruRU', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'ruRU', 0x00D091D180D0BED181D0B8D182D18C20D180D18BD0B1D18320D0B220D0B2D0BED0B4D1832C20D187D182D0BED0B1D18B20D0BFD0BED0B2D18BD181D0B8D182D18C20D0BDD0B0D0B2D18BD0BA20D180D18BD0B1D0BDD0BED0B920D0BBD0BED0B2D0BBD0B8204D69646E6967687420D0BDD0B02024733220D0BDD0B02024642E0D0A0D0AD091D180D0BED181D0B8D0B220D0BDD0B5D181D0BAD0BED0BBD18CD0BAD0BE20D180D18BD0B12C20D0BCD0BED0B6D0BDD0BE20D0BFD180D0BED0B4D0BBD0B8D182D18C20D0B4D0B5D0B9D181D182D0B2D0B8D0B520D18DD184D184D0B5D0BAD182D0B020D0B4D0BE20244D3120D0BCD0B8D0BD2E00D09DD0B0D0B2D18BD0BA20D180D18BD0B1D0BDD0BED0B920D0BBD0BED0B2D0BBD0B820D0B220D09AD0B5D0BBD18C27D0A2D0B0D0BBD0B0D181D0B520D0BFD0BED0B2D18BD188D0B5D0BD20D0BDD0B0202477322E00, 67186), +(3776013982, 1235216, 'ruRU', 0x00D091D180D0BED181D0B8D182D18C20D181D183D189D0B5D181D182D0B2D0BE20D0B220D0B2D0BED0B4D1832C20D187D182D0BED0B1D18B20D0BFD0BED0B2D18BD181D0B8D182D18C20D0BFD0BED0BBD183D0BDD0BED187D0BDD183D18E20D0B2D0BDD0B8D0BCD0B0D182D0B5D0BBD18CD0BDD0BED181D182D18C20D0BDD0B02024733220D0BDD0B02024642E0D0A0D0AD091D180D0BED181D0B8D0B220D0BDD0B5D181D0BAD0BED0BBD18CD0BAD0BE20D181D183D189D0B5D181D182D0B22C20D0BCD0BED0B6D0BDD0BE20D0BFD180D0BED0B4D0BBD0B8D182D18C20D0B4D0B5D0B9D181D182D0B2D0B8D0B520D18DD184D184D0B5D0BAD182D0B020D0B4D0BE20244D3120D0BCD0B8D0BD2E00D09FD0BED0BBD183D0BDD0BED187D0BDD0B0D18F20D0B2D0BDD0B8D0BCD0B0D182D0B5D0BBD18CD0BDD0BED181D182D18C20D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B0202477322E00, 67186), +(3776013982, 1225245, 'ruRU', 0x00D0A1D0B8D0BD27D0B4D0BED180D0B0D0B9D181D0BAD0B8D0B920D180D0BED0B5D0B2D0B8D0BA20E2809320D0BFD180D0BED0B2D0BED180D0BDD0B0D18F20D180D18BD0B1D0B020D18120D0B1D0B0D0B3D180D0BED0B2D0BED0B920D0B820D0B3D0BED0BBD183D0B1D0BED0B920D187D0B5D188D183D0B5D0B92C20D187D0B0D181D182D0BE20D0B2D181D182D180D0B5D187D0B0D18ED189D0B0D18FD181D18F20D0B220D0BBD0B5D181D0B0D18520D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B82E20D0A0D0B0D0B7D0BDD18BD0B520D0BAD0BED181D18FD0BAD0B820D18DD182D0B8D18520D180D18BD0B120D0BCD0BED0B3D183D18220D0B2D0B5D181D182D0B820D181D0B5D0B1D18F20D0BED187D0B5D0BDD18C20D0BFD0BE2DD180D0B0D0B7D0BDD0BED0BCD1832E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09ED181D0BED0B1D0BED0B520D181D0B2D0BED0B9D181D182D0B2D0BE3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD097D0BED0BDD18B20D0BED0B1D0B8D182D0B0D0BDD0B8D18F3A7C520D0A2D20D09BD0B5D181D0B020D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B80D0A2D20D097D183D0BB27D090D0BCD0B0D0BD0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09AD0BED181D18FD0BAD0B820D180D18BD0B13A7C720D0A2D20D091D183D180D0BBD18FD189D0B8D0B920D180D0B0D181D186D0B2D0B5D1820D0A2D20D0A1D182D0B0D18F20D0A1D0BED0BBD0BDD0B5D187D0BDD0BED0B3D0BE20D09AD0BED0BBD0BED0B4D186D0B00D0A2D20D0A0D18FD0B1D18C20D0BDD0B020D0BFD0BED0B2D0B5D180D185D0BDD0BED181D182D0B80000, 67186), +(778162198, 397, 'ruRU', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'ruRU', 0x0100, 67186), +(3037505077, 243302, 'ruRU', 0x0100, 67186), +(261693969, 95549, 'ruRU', 0xFFFFFFFFFFFFFFFFD09CD0B0D0B3D0B8D187D0B5D181D0BAD0B0D18F20D182D180D0B5D0B2D0BED0B3D0B00000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'ruRU', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'ruRU', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'ruRU', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'ruRU', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'ruRU', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'ruRU', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'ruRU', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'ruRU', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'ruRU', 0xD0A1D187D0B5D18220D180D18BD0B1D0B0D0BAD0B03A207C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'ruRU', 0xD097D0B0D0B2D0B5D180D188D0B5D0BDD0BE007C634646316566663030D0A1D0BED0B1D18BD182D0B8D0B52022D093D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD0B0D18F20D180D18BD0B1D0B0D0BBD0BAD0B02220D0B7D0B0D0B2D0B5D180D188D0B5D0BDD0BE2100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'ruRU', 0xFFFFFFFFFFFFFFFFD09FD180D0B8D181D0BED0B5D0B4D0B8D0BDD0B5D0BDD0B8D0B520D0BA20D0B3D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD18BD0BC20D180D18BD0B1D0B0D0BAD0B0D0BC0000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'ruRU', 0xD093D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD18BD0B920D0BDD18BD180D18FD0BBD18CD189D0B8D0BA00D09FD180D0BED0B9D0B4D0B8D182D0B520D181D0BED0B1D18BD182D0B8D18F2022D093D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD0B0D18F20D180D18BD0B1D0B0D0BBD0BAD0B02220D0B220D097D183D0BB27D090D0BCD0B0D0BDD0B52E00AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'ruRU', 0xD093D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD18BD0B920D0BDD18BD180D18FD0BBD18CD189D0B8D0BA00D09FD180D0BED0B9D0B4D0B8D182D0B520D181D0BED0B1D18BD182D0B8D18F2022D093D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD0B0D18F20D180D18BD0B1D0B0D0BBD0BAD0B02220D0B220D097D183D0BB27D090D0BCD0B0D0BDD0B52E004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'ruRU', 0xD093D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD0B0D18F20D180D18BD0B1D0B0D0BBD0BAD0B000D09FD0BED0B3D0BED0B2D0BED180D0B8D182D0B520D18120D0B2D0BED0B4D0BED0BBD0B0D0B7D0BED0BC20D094D0B6D0B527D0B4D0B6D1832C20D187D182D0BED0B1D18B20D181D0BED0B2D0B5D180D188D0B8D182D18C20D0BFD0BED0B3D180D183D0B6D0B5D0BDD0B8D0B520D18120D0B3D0BBD183D0B1D0BED0BAD0BED0B2D0BED0B4D0BDD18BD0BCD0B820D180D18BD0B1D0B0D0BAD0B0D0BCD0B82E008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'ruRU', 0xD0ADD0BBD0B8D182D0BDD18BD0B520D0BED0BFD0B0D181D0BDD0BED181D182D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BFD0BED18FD0B2D0BBD18FD18ED182D181D18F20D180D0B5D0B4D0BAD0B8D0B520D18DD0BBD0B8D182D0BDD18BD0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B82C20D0B7D0B020D0BFD0BED0B1D0B5D0B4D18320D0BDD0B0D0B420D0BAD0BED182D0BED180D18BD0BCD0B820D0BCD0BED0B6D0BDD0BE20D0BFD0BED0BBD183D187D0B8D182D18C20D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D180D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D182D180D0BED184D0B5D0B82E002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'ruRU', 0xD0ADD0BBD0B8D182D0BDD18BD0B520D0BED0BFD0B0D181D0BDD0BED181D182D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BFD0BED18FD0B2D0BBD18FD18ED182D181D18F20D180D0B5D0B4D0BAD0B8D0B520D18DD0BBD0B8D182D0BDD18BD0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B82C20D0B7D0B020D0BFD0BED0B1D0B5D0B4D18320D0BDD0B0D0B420D0BAD0BED182D0BED180D18BD0BCD0B820D0BCD0BED0B6D0BDD0BE20D0BFD0BED0BBD183D187D0B8D182D18C20D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D180D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D182D180D0BED184D0B5D0B82E00D09ED181D0BED0B1D0B5D0BDD0BDD18BD0B520D0BED0BFD0B0D181D0BDD0BED181D182D0B8204949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'ruRU', 0xD09ED181D0BAD0B2D0B5D180D0BDD0B5D0BDD0BDD18BD0B920D182D180D0B0D0BDD181D0BFD0BED180D18200D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D0BCD0B5D187D0B5D0BDD0BDD0BED0B3D0BE20D091D0B5D0B7D0B4D0BDD0BED0B920D0BAD180D18BD0BBD0BED0B1D0B5D0B3D0B020D18320D181D0B5D180D0B6D0B0D0BDD182D0B020D092D0BED180D0BDD0B8D0BDD0B020D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'ruRU', 0xD09ED181D0BAD0B2D0B5D180D0BDD0B5D0BDD0BDD18BD0B920D182D180D0B0D0BDD181D0BFD0BED180D18200D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D0BCD0B5D187D0B5D0BDD0BDD0BED0B3D0BE20D091D0B5D0B7D0B4D0BDD0BED0B920D0BAD180D18BD0BBD0BED0B1D0B5D0B3D0B020D18320D181D0B5D180D0B6D0B0D0BDD182D0B020D092D0BED180D0BDD0B8D0BDD0B020D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E00D09ED181D0BAD0B2D0B5D180D0BDD0B5D0BDD0BDD18BD0B920D182D180D0B0D0BDD181D0BFD0BED180D182002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'ruRU', 0xD090D0BBD182D0B0D180D0B820D181D0B8D0BBD18B20494900D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0BDD0BED0B2D18BD0B520D181D0B2D18FD182D0B8D0BBD0B8D189D0B020D18120D0BCD0B0D0B3D0B8D187D0B5D181D0BAD0B8D0BCD0B820D183D181D0B8D0BBD0B5D0BDD0B8D18FD0BCD0B82E002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'ruRU', 0xD090D0BBD182D0B0D180D0B820D181D0B8D0BBD18B20494900D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0BDD0BED0B2D18BD0B520D181D0B2D18FD182D0B8D0BBD0B8D189D0B020D18120D0BCD0B0D0B3D0B8D187D0B5D181D0BAD0B8D0BCD0B820D183D181D0B8D0BBD0B5D0BDD0B8D18FD0BCD0B82E00D090D0BBD182D0B0D180D0B820D181D0B8D0BBD18B204949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'ruRU', 0xD09FD0BED187D0B8D182D0B0D0B5D0BCD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B000D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0B1D0BED0BBD18CD188D0B8D0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B020D18120D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0BCD0B820D182D180D0BED184D0B5D18FD0BCD0B82E002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'ruRU', 0xD09FD0BED187D0B8D182D0B0D0B5D0BCD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B000D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0B1D0BED0BBD18CD188D0B8D0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B020D18120D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0BCD0B820D182D180D0BED184D0B5D18FD0BCD0B82E00D09FD0BED187D0B8D182D0B0D0B5D0BCD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B0002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0BCD0BDD0BED0B6D0B5D181D182D0B2D0BE20D181D184D0B5D18000D09FD0BED0B2D18BD188D0B5D0BDD0B020D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18C20D182D0BED0B3D0BE2C20D187D182D0BE20D0BFD180D0B820D183D0B1D0B8D0B9D181D182D0B2D0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B020D0B220D0BCD0B5D181D182D0B520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0B020D0BFD0BED18FD0B2D0B8D182D181D18F20D181D184D0B5D180D0B020D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B82E002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0BCD0BDD0BED0B6D0B5D181D182D0B2D0BE20D181D184D0B5D18000D09FD0BED0B2D18BD188D0B5D0BDD0B020D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18C20D182D0BED0B3D0BE2C20D187D182D0BE20D0BFD180D0B820D183D0B1D0B8D0B9D181D182D0B2D0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B020D0B220D0BCD0B5D181D182D0B520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0B020D0BFD0BED18FD0B2D0B8D182D181D18F20D181D184D0B5D180D0B020D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B82E00D0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0B8D181D186D0B5D0BBD0B5D0BDD0B8D0B520494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'ruRU', 0xD09ED181D0BAD0B2D0B5D180D0BDD0B5D0BDD0BDD18BD0B920D0B7D0B2D0B5D180D0B8D0BDD0B5D18600D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D180D18FD0B420D0BFD0B8D182D0BED0BCD186D0B5D0B220D18320D181D0B5D180D0B6D0B0D0BDD182D0B020D092D0BED180D0BDD0B8D0BDD0B020D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'ruRU', 0xD09ED181D0BAD0B2D0B5D180D0BDD0B5D0BDD0BDD18BD0B920D0B7D0B2D0B5D180D0B8D0BDD0B5D18600D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D180D18FD0B420D0BFD0B8D182D0BED0BCD186D0B5D0B220D18320D181D0B5D180D0B6D0B0D0BDD182D0B020D092D0BED180D0BDD0B8D0BDD0B020D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E00D09ED181D0BAD0B2D0B5D180D0BDD0B5D0BDD0BDD18BD0B920D0B7D0B2D0B5D180D0B8D0BDD0B5D186002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'ruRU', 0xD090D0BBD182D0B0D180D0B820D181D0B8D0BBD18B00D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D181D0B2D18FD182D0B8D0BBD0B8D189D0B020D18120D0BCD0B0D0B3D0B8D187D0B5D181D0BAD0B8D0BCD0B820D183D181D0B8D0BBD0B5D0BDD0B8D18FD0BCD0B82E002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'ruRU', 0xD090D0BBD182D0B0D180D0B820D181D0B8D0BBD18B00D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D181D0B2D18FD182D0B8D0BBD0B8D189D0B020D18120D0BCD0B0D0B3D0B8D187D0B5D181D0BAD0B8D0BCD0B820D183D181D0B8D0BBD0B5D0BDD0B8D18FD0BCD0B82E00D090D0BBD182D0B0D180D0B820D181D0B8D0BBD18B2049002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'ruRU', 0xD094D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D182D180D0BED184D0B5D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D0BDD0B5D0B1D0BED0BBD18CD188D0B8D0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B02E002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'ruRU', 0xD094D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D182D180D0BED184D0B5D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D0BDD0B5D0B1D0BED0BBD18CD188D0B8D0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B02E00D09FD0BED182D0B5D180D18FD0BDD0BDD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B0204949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'ruRU', 0xD09ED181D0BED0B1D0B5D0BDD0BDD18BD0B520D0BED0BFD0B0D181D0BDD0BED181D182D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BFD0BED18FD0B2D0BBD18FD18ED182D181D18F20D180D0B5D0B4D0BAD0B8D0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B82C20D0B7D0B020D0BFD0BED0B1D0B5D0B4D18320D0BDD0B0D0B420D0BAD0BED182D0BED180D18BD0BCD0B820D0BCD0BED0B6D0BDD0BE20D0BFD0BED0BBD183D187D0B8D182D18C20D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D180D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D182D180D0BED184D0B5D0B82E002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'ruRU', 0xD09ED181D0BED0B1D0B5D0BDD0BDD18BD0B520D0BED0BFD0B0D181D0BDD0BED181D182D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D182D0B5D0BFD0B5D180D18C20D0BFD0BED18FD0B2D0BBD18FD18ED182D181D18F20D180D0B5D0B4D0BAD0B8D0B520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B82C20D0B7D0B020D0BFD0BED0B1D0B5D0B4D18320D0BDD0B0D0B420D0BAD0BED182D0BED180D18BD0BCD0B820D0BCD0BED0B6D0BDD0BE20D0BFD0BED0BBD183D187D0B8D182D18C20D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D180D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D182D180D0BED184D0B5D0B82E00D09ED181D0BED0B1D0B5D0BDD0BDD18BD0B520D0BED0BFD0B0D181D0BDD0BED181D182D0B82049002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0BCD0BED189D18C20D181D184D0B5D18000D098D181D186D0B5D0BBD0B5D0BDD0B8D0B520D0BED18220D181D184D0B5D18020D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B820D183D181D0B8D0BBD0B5D0BDD0BE20D0BDD0B020313030252E002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0BCD0BED189D18C20D181D184D0B5D18000D098D181D186D0B5D0BBD0B5D0BDD0B8D0B520D0BED18220D181D184D0B5D18020D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B820D183D181D0B8D0BBD0B5D0BDD0BE20D0BDD0B020313030252E00D0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0B8D181D186D0B5D0BBD0B5D0BDD0B8D0B5204949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD18BD0B920D0B4D0B5D0BAD0BED18000D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D0BDD0B0D181D182D0BED0BBD18CD0BDD18BD0B520D0B0D0BAD181D0B5D181D181D183D0B0D180D18B20D091D0B5D0B7D0B4D0BDD18B20D18320D0A0D0B0D0B527D0B0D0BDD18B20D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD18BD0B920D0B4D0B5D0BAD0BED18000D092D18B20D0BCD0BED0B6D0B5D182D0B520D0BFD180D0B8D0BED0B1D180D0B5D181D182D0B820D0BDD0B0D181D182D0BED0BBD18CD0BDD18BD0B520D0B0D0BAD181D0B5D181D181D183D0B0D180D18B20D091D0B5D0B7D0B4D0BDD18B20D18320D0A0D0B0D0B527D0B0D0BDD18B20D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E00D0A0D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D183D0BAD180D0B0D188D0B5D0BDD0B8D18F20D0B4D0BBD18F20D0B4D0BED0BCD0B0002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B000D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0BDD0B5D0B1D0BED0BBD18CD188D0B8D0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B02E002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B000D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D0BCD0BED0B6D0BDD0BE20D0BDD0B0D0B9D182D0B820D0BDD0B5D0B1D0BED0BBD18CD188D0B8D0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B02E00D09FD0BED182D0B5D180D18FD0BDD0BDD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B02049002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D181D184D0B5D180D18B20D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D0BFD0BED18FD0B2D0BBD18FD18ED182D181D18F20D181D184D0B5D180D18B20D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B82C20D0B2D0BED181D0BFD0BED0BBD0BDD18FD18ED189D0B8D0B520D0B2D0B0D0BC2031352520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F2E002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'ruRU', 0xD0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D181D184D0B5D180D18B20D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B800D09220D0BCD0B5D181D182D0B0D18520D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B220D0BFD0BED18FD0B2D0BBD18FD18ED182D181D18F20D181D184D0B5D180D18B20D180D0B5D0B3D0B5D0BDD0B5D180D0B0D186D0B8D0B82C20D0B2D0BED181D0BFD0BED0BBD0BDD18FD18ED189D0B8D0B520D0B2D0B0D0BC2031352520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F2E00D0A0D0B8D182D183D0B0D0BBD18CD0BDD0B0D18F20D0BCD0B0D0B3D0B8D18F20E2809320D0B8D181D186D0B5D0BBD0B5D0BDD0B8D0B52049002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'ruRU', 0xD09ED185D180D18FD0BDD0BED0B520D0BED0BAD0BDD0BE20D0BCD0B5D0B4D0BED0B2D0B0D180D0BDD0B800000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'ruRU', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'ruRU', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'ruRU', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'ruRU', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'ruRU', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'ruRU', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'ruRU', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'ruRU', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'ruRU', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'ruRU', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'ruRU', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'ruRU', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'ruRU', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'ruRU', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'ruRU', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'ruRU', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'ruRU', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'ruRU', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'ruRU', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'ruRU', 0x00D09BD0B8D0BDD0B4D0BED180D0BCD0B820D0BFD0BED0B4D181D0B2D0B5D187D0B8D0B2D0B0D0B5D18220D0BED0BFD180D0B5D0B4D0B5D0BBD0B5D0BDD0BDD18BD18520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0BDD0B520D18FD0B2D0BBD18FD18ED189D0B8D185D181D18F20D0B1D0BED181D181D0B0D0BCD0B82E20D09FD0BED0B1D0B5D0B4D0B8D182D0B520D0B2D181D0B5D18520D0BED182D0BCD0B5D187D0B5D0BDD0BDD18BD18520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D187D182D0BED0B1D18B20D0B2D18BD0BFD0BED0BBD0BDD0B8D182D18C20D182D180D0B5D0B1D0BED0B2D0B0D0BDD0B8D0B520D0BFD0BE20D183D0BDD0B8D187D182D0BED0B6D0B5D0BDD0B8D18E20D0B2D180D0B0D0B6D0B5D181D0BAD0B8D18520D181D0B8D0BB2E00D09FD0BED0B1D0B5D0B4D0B8D0B220D0B2D181D0B5D18520D0BED182D0BCD0B5D187D0B5D0BDD0BDD18BD18520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0B2D18B20D0B2D18BD0BFD0BED0BBD0BDD0B8D182D0B520D182D180D0B5D0B1D0BED0B2D0B0D0BDD0B8D0B520D0BFD0BE20D183D0BDD0B8D187D182D0BED0B6D0B5D0BDD0B8D18E20D0B2D180D0B0D0B6D0B5D181D0BAD0B8D18520D181D0B8D0BB2E00, 67186), +(3776013982, 1278156, 'ruRU', 0x00D09BD0B8D0BDD0B4D0BED180D0BCD0B820D0B2D18BD0B4D0B5D0BBD18FD0B5D18220D0B820D0BED181D0BBD0B0D0B1D0BBD18FD0B5D18220D0BED0BFD180D0B5D0B4D0B5D0BBD0B5D0BDD0BDD18BD18520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0BDD0B520D18FD0B2D0BBD18FD18ED189D0B8D185D181D18F20D0B1D0BED181D181D0B0D0BCD0B83B20D0BAD180D0BED0BCD0B520D182D0BED0B3D0BE2C20D181D0BCD0B5D180D182D0B820D0B8D0B3D180D0BED0BAD0BED0B220D0B1D0BED0BBD18CD188D0B520D0BDD0B520D183D0BCD0B5D0BDD18CD188D0B0D18ED18220D0BED181D182D0B0D0B2D188D0B8D0B9D181D18F20D0B7D0B0D0BFD0B0D18120D0B2D180D0B5D0BCD0B5D0BDD0B820D0BDD0B020D0BFD180D0BED185D0BED0B6D0B4D0B5D0BDD0B8D0B52E0D0A0D0AD09FD0BED0B1D0B5D0B4D0B8D0B220D0B2D181D0B5D18520D0B2D18BD0B4D0B5D0BBD0B5D0BDD0BDD18BD18520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0B2D18B20D0B2D18BD0BFD0BED0BBD0BDD0B8D182D0B520D182D180D0B5D0B1D0BED0B2D0B0D0BDD0B8D18F20D0BFD0BE20D0BAD0BED0BBD0B8D187D0B5D181D182D0B2D18320D183D0BDD0B8D187D182D0BED0B6D0B5D0BDD0BDD18BD18520D0B2D180D0B0D0B6D0B5D181D0BAD0B8D18520D181D0B8D0BB2E00D097D0B0D0BFD0B0D18120D0B7D0B4D0BED180D0BED0B2D18CD18F20D183D0BCD0B5D0BDD18CD188D0B5D0BD20D0BDD0B020247331252E0D0AD09DD0B0D0BDD0BED181D0B8D0BCD18BD0B920D183D180D0BED0BD20D183D0BCD0B5D0BDD18CD188D0B5D0BD20D0BDD0B020247332252E00, 67186), +(368401261, 7367, 'ruRU', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'ruRU', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'ruRU', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'ruRU', 0xB2790000, 67186), +(3495286709, 24475, 'ruRU', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'ruRU', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'ruRU', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'ruRU', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'ruRU', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'ruRU', 0x000000, 67186), +(3247720076, 42450, 'ruRU', 0x041E000000, 67186), +(3247720076, 42449, 'ruRU', 0x041E000000, 67186), +(3247720076, 42448, 'ruRU', 0x04BE000000, 67186), +(3247720076, 42447, 'ruRU', 0x04BE000000, 67186), +(3247720076, 42446, 'ruRU', 0x0700000000, 67186), +(3247720076, 42445, 'ruRU', 0x0100000000, 67186), +(3247720076, 40690, 'ruRU', 0x0100000000, 67186), +(2014779773, 207, 'ruRU', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'ruRU', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'ruRU', 0x000000, 67186), +(3776013982, 390260, 'ruRU', 0x000000, 67186), +(261693969, 95304, 'ruRU', 0xFFFFFFFFFFFFFFFFD0A2D183D0BCD0B0D0BDD0BDD18BD0B520D181D0B5D180D0B4D0B5D187D0BDD0B8D0BAD0B820D091D0B5D0B7D0B4D0BDD18B3A20D0B3D0B5D180D0B120D0B7D0B0D180D0B820D0B2D0B5D182D0B5D180D0B0D0BDD0B00000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'ruRU', 0xFFFFFFFFFFFFFFFFD0A2D183D0BCD0B0D0BDD0BDD18BD0B520D181D0B5D180D0B4D0B5D187D0BDD0B8D0BAD0B820D091D0B5D0B7D0B4D0BDD18B3A20D0BCD180D0B0D0BAD0BED0B7D0B0D180D0BDD18BD0B920D0BCD0B5D180D0B3D0B5D0BBD18C0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'ruRU', 0xFFFFFFFFFFFFFFFFD0A2D183D0BCD0B0D0BDD0BDD18BD0B520D181D0B5D180D0B4D0B5D187D0BDD0B8D0BAD0B820D091D0B5D0B7D0B4D0BDD18B3A20D0B7D0BED0BBD0BED182D0BE0000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'ruRU', 0x0000000091000000, 67186), +(1673391669, 145, 'ruRU', 0x8E000000, 67186), +(2791084701, 142, 'ruRU', 0x32DC0600, 67186), +(2533050585, 1529, 'ruRU', 0x7072696D61727900000000000000000000000000000000000000000000000000F9050000100600000100000000000000000000000000000000000000000000000000000000000009421F85AB3F14AEC642, 67186), +(2533050585, 1528, 'ruRU', 0x7072696D61727900EC51B83DEC51B83DEC51B83D000000000000000000000000F80500000F0600000100000000000000000000000000000000000000000000000000000000000003427B14AE3F52B8C642, 67186), +(2930840720, 5037, 'ruRU', 0x706574320014AE6F4166665641A470BD3FAD1300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5036, 'ruRU', 0x7065743100C3F53841713D2E4152B886C0AC1300001006000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(2930840720, 5035, 'ruRU', 0x70657438000AD783BF48E12A41295C4FC0AB1300001006000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 5034, 'ruRU', 0x7065743130007B148241713DCAC085EB51C0AA1300001006000000000000AA0000007B142EC00000000000000000AE47E13D, 67186), +(2930840720, 5033, 'ruRU', 0x70657439001F85DBC0F628C4C05C8F3240A91300001006000000000000AA0000007B142EC00AD7233E0000000000000000, 67186), +(2930840720, 5032, 'ruRU', 0x70657437005C8F6641CDCC4CC1C3F5E83FA81300001006000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 5031, 'ruRU', 0x70657436001F85E3C052B8D6C0CDCC0CC0A71300001006000000000000AA000000EC5138C0000000000000000000000000, 67186), +(2930840720, 5030, 'ruRU', 0x7065743500B81E9741295C03C1AE47E1BDA61300001006000000000000AA000000D7A320C0000000000000000000000000, 67186), +(2930840720, 5029, 'ruRU', 0x7065743400295C4FC085EB11400AD7E33FA51300001006000000000000AA00000014AE4740000000000000000000000000, 67186), +(2930840720, 5028, 'ruRU', 0x70657433000AD78B40B81E29C1EC5138C0A41300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5026, 'ruRU', 0x706574323200EC5110C114AE9F407B140EC0A21300001006000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5025, 'ruRU', 0x7065743231003D0AF7BF3333F3401F852BC0A11300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5024, 'ruRU', 0x7065743230001F851F4152B89EC0CDCC7C40A01300001006000000000000AA0000001F853BC06666E63E0000000000000000, 67186), +(2930840720, 5023, 'ruRU', 0x7065743139000AD7E33F3D0A9FC05C8F42C09F1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5022, 'ruRU', 0x706574313800C3F59EC148E1FABF5C8F02C09E1300001006000000000000AA0000005C8F42C0000000000000000000000000, 67186), +(2930840720, 5021, 'ruRU', 0x70657431370014AE27C05C8F32C014AE37C09D1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5020, 'ruRU', 0x706574313600AE4761BEC3F52C41C3F528C09C1300001006000000000000AA0000009A992940000000000000000000000000, 67186), +(2930840720, 5019, 'ruRU', 0x7065743135009A999FC1713DEA409A999FC19B1300001006000000000000A9010000C3F548400000000000000000E17A943E, 67186), +(2930840720, 5018, 'ruRU', 0x706574313400295C9FC18FC235C09A9999BF9A1300001006000000000000AA0000000AD733C0CDCCCCBD0000000000000000, 67186), +(2930840720, 5017, 'ruRU', 0x706574313300A4708DC1713D1A40D7A3D0BF991300001006000000000000AA000000713D3A40000000000000000000000000, 67186), +(2930840720, 5016, 'ruRU', 0x706574313200C3F588BF333333405C8F42C0981300001006000000000000AA000000CDCC3C40000000000000000000000000, 67186), +(2930840720, 5015, 'ruRU', 0x706574313100EC510CC1666626BF9A9919C0971300001006000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5014, 'ruRU', 0x706574323200B81E01C1AE4799407B140EC0961300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5013, 'ruRU', 0x706574323100CDCCCCBF8FC2DD4014AE27C0951300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5012, 'ruRU', 0x70657432300052B85E41EC51F8C0E17A2440941300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 5011, 'ruRU', 0x706574313900295C63C148E1F2C08FC255C0931300000F06000000000000AA0000003D0A37C00000000000000000AE47E13D, 67186), +(2930840720, 5010, 'ruRU', 0x70657431380066669EC15C8F02C05C8F02C0921300000F06000000000000AA000000333343C0000000000000000000000000, 67186), +(2930840720, 5009, 'ruRU', 0x70657431370048E10AC048E13AC0D7A340C0911300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5008, 'ruRU', 0x706574313600F6282C409A9931413D0A27C0901300000F06000000000000AA000000C3F52840000000000000000000000000, 67186), +(2930840720, 5007, 'ruRU', 0x706574313500C3F59EC1A4708F41C3F59EC18F1300000F06000000000000A9010000CDCC3C40000000008FC2F5BCE17A943E, 67186), +(2930840720, 5006, 'ruRU', 0x7065743134005C8F9EC1AE4701C0A4709DBF8E1300000F06000000000000AA0000000AD733C000000000295C8F3D00000000, 67186), +(2930840720, 5005, 'ruRU', 0x706574313300CDCC8CC10AD713406666C6BF8D1300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5004, 'ruRU', 0x706574313200CDCC4C3D3D0A3740295C5FC08C1300000F06000000000000AA000000CDCC3C40000000008FC2F5BD00000000, 67186), +(2930840720, 5003, 'ruRU', 0x706574313100E17AFCC0295C4FBFAE4721C08B1300000F06000000000000AA0000007B142EC0CDCC4C3D8FC2F53C00000000, 67186), +(2930840720, 5002, 'ruRU', 0x70657431300000008041CDCCC4C0295C4FC08A1300000F06000000000000AA0000003D0A47C00000000000000000AE47E13D, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(2930840720, 5001, 'ruRU', 0x706574390085EBD9C0B81E85BF9A99B93F891300000F06000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5000, 'ruRU', 0x7065743800A4707DBF713D26415C8F42C0881300000F06000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 4999, 'ruRU', 0x706574370014AE87413D0A57C18FC2F53C871300000F06000000000000AA0000003D0A47C0000000000000000000000000, 67186), +(2930840720, 4998, 'ruRU', 0x706574360085EBE1C0A470D5C09A9909C0861300000F06000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 4997, 'ruRU', 0x70657435008FC297411F850BC11F851BC0851300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 4996, 'ruRU', 0x70657434003D0A17BF66661640CDCCEC3F841300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 4995, 'ruRU', 0x70657433008FC221411F8543C13D0A57C0831300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 4993, 'ruRU', 0x7065743200E17A7041C3F53C410AD723BC811300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 4992, 'ruRU', 0x70657431009A99394133335741AE4721C0801300000F06000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(21457424, 1552, 'ruRU', 0x100600000000000000FFFFFFFF, 67186), +(21457424, 1551, 'ruRU', 0x0F0600000000000000FFFFFFFF, 67186), +(3386943305, 340484, 'ruRU', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'ruRU', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'ruRU', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'ruRU', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'ruRU', 0xD094D183D18DD0BBD18C20D0B4D0B5D0BAD0BED180D0B0D182D0BED180D0BED0B200D098D0B3D180D0B0D0B9D182D0B520D0B220D0BFD180D18FD182D0BAD0B820D181D180D0B5D0B4D0B820D0BCD0B5D0B1D0B5D0BBD0B8002D20D0A2D180D0B5D0B1D183D0B5D182D181D18F20D0B4D0BED0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5204D69646E696768742C20D0BCD0B8D0BDD0B8D0BCD0B0D0BBD18CD0BDD18BD0B920D183D180D0BED0B2D0B5D0BDD18C2031302E0D0A2D20D09CD0B8D0BDD0B82D50765020D0B1D0B5D0B720D183D0B1D0B8D0B9D181D182D0B22E0D0A2D20D0A2D0BED0BBD18CD0BAD0BE20D0BED0B4D0B8D0BDD0BED187D0BDD0B0D18F20D0BED187D0B5D180D0B5D0B4D18C2E20D093D180D183D0BFD0BFD0BED0B2D0B0D18F20D0BED187D0B5D180D0B5D0B4D18C20D0B4D0BED181D182D183D0BFD0BDD0B020D18320D0B1D0BED0B5D0B2D0BED0B920D187D0B0D180D0BED0B4D0B5D0B9D0BAD0B820D090D0BCD0BED0BBD0B5D0BDD0BDD18B20D0B220D09BD183D0BDD0BED181D0B2D0B5D182D0B52E0D0A2D20D095D181D0BBD0B820D0B2D0B0D18120D0BDD0B0D0B9D0B4D183D18220D0B820D0BED181D0B0D0BBD18FD1822C20D0B2D18B20D0BFD180D0BED0B8D0B3D180D0B0D0BBD0B821009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'ruRU', 0x000000, 67186), +(3776013982, 149981, 'ruRU', 0x000000, 67186), +(3330775162, 1897, 'ruRU', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'ruRU', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'ruRU', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'ruRU', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'ruRU', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'ruRU', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'ruRU', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'ruRU', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'ruRU', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'ruRU', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'ruRU', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'ruRU', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'ruRU', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'ruRU', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'ruRU', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'ruRU', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'ruRU', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'ruRU', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'ruRU', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'ruRU', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'ruRU', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'ruRU', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'ruRU', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'ruRU', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'ruRU', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'ruRU', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'ruRU', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'ruRU', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'ruRU', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'ruRU', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186), +(1408785804, 249390, 'ruRU', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'ruRU', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'ruRU', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'ruRU', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'ruRU', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'ruRU', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'ruRU', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'ruRU', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'ruRU', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'ruRU', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'ruRU', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'ruRU', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'ruRU', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'ruRU', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'ruRU', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'ruRU', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'ruRU', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'ruRU', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'ruRU', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'ruRU', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'ruRU', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'ruRU', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'ruRU', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'ruRU', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'ruRU', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'ruRU', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'ruRU', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'ruRU', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'ruRU', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'ruRU', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'ruRU', 0xD0A0D0B0D181D0BED0B2D0B0D18F20D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D18C00D090D0BAD182D0B8D0B2D0B8D180D183D0B9D182D0B52C20D187D182D0BED0B1D18B20D0B0D0B2D182D0BED0BCD0B0D182D0B8D187D0B5D181D0BAD0B820D0BFD180D0B8D0BDD0B8D0BCD0B0D182D18C20D0BED0B1D0BBD0B8D0BA20D187D0B5D0BBD0BED0B2D0B5D0BAD0B02C20D0BFD0BED0BAD0B020D0B2D18B20D0BDD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182D0B520D0B4D180D0B0D0BAD0BED0BDD18CD0B820D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B2D180D0BED0B4D0B52022D09ED0B3D0BDD0B5D0BDD0BDD0BED0B3D0BE20D0B4D18BD185D0B0D0BDD0B8D18F2220D0B82022D09FD0B0D180D0B5D0BDD0B8D18F222E0000, 67186), +(3776013982, 1283168, 'ruRU', 0x00D09ED0B1D18AD0B5D0B4D0B8D0BDD0B8D182D18C20D0BFD18FD182D18C20D0B2D0BED0B7D0BDD0B5D181D0B5D0BDD0BDD18BD18520D0BED181D0BAD0BED0BBD0BAD0BED0B220D091D0B5D0B7D0B4D0BDD18B20D0B820D181D0BED0B7D0B4D0B0D182D18C20D0B2D0BED0B7D0BDD0B5D181D0B5D0BDD0BDD18BD0B920D181D0B5D180D0B4D0B5D187D0BDD0B8D0BA20D091D0B5D0B7D0B4D0BDD18B2C20D0BFD0BED0B7D0B2D0BED0BBD18FD18ED189D0B8D0B920D0BFD0BED0B2D18BD181D0B8D182D18C20D183D180D0BED0B2D0B5D0BDD18C20D0BED180D183D0B6D0B8D18F20D0B8D0BBD0B820D0B0D0BAD181D0B5D181D181D183D0B0D180D0B020D0B8D0B720312DD0B3D0BE20D181D0B5D0B7D0BED0BDD0B0204D69646E696768742E20D094D0B5D0B9D181D182D0B2D183D0B5D18220D0BDD0B020D0BFD0BED0BBD0BDD0BED181D182D18CD18E20D183D0BBD183D187D188D0B5D0BDD0BDD18BD0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B20D181D0BDD0B0D180D18FD0B6D0B5D0BDD0B8D18F20D0B3D0B5D180D0BED18F20D0B8D0BBD0B820D18DD0BFD0BED185D0B0D0BBD18CD0BDD18BD0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B20D181D0BDD0B0D180D18FD0B6D0B5D0BDD0B8D18F2C20D0B020D182D0B0D0BAD0B6D0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B20D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D183D180D0BED0B2D0BDD18F20D0BAD0B0D187D0B5D181D182D0B2D0B02C20D0B8D0B7D0B3D0BED182D0BED0B2D0BBD0B5D0BDD0BDD18BD0B520D18120D0B8D181D0BAD180D0BED0B920D181D0B8D18FD0BDD0B8D18F2E0000, 67186), +(3776013982, 1282778, 'ruRU', 0x00D09FD0BED0B2D18BD188D0B0D0B5D18220D183D180D0BED0B2D0B5D0BDD18C20D0BED180D183D0B6D0B8D18F20D0B8D0BBD0B820D0B0D0BAD181D0B5D181D181D183D0B0D180D0B020D0B8D0B720312DD0B3D0BE20D181D0B5D0B7D0BED0BDD0B0204D69646E696768742E20D094D0B5D0B9D181D182D0B2D183D0B5D18220D0BDD0B020D0BFD0BED0BBD0BDD0BED181D182D18CD18E20D183D0BBD183D187D188D0B5D0BDD0BDD18BD0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B20D181D0BDD0B0D180D18FD0B6D0B5D0BDD0B8D18F20D0B3D0B5D180D0BED18F20D0B8D0BBD0B820D18DD0BFD0BED185D0B0D0BBD18CD0BDD18BD0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B20D181D0BDD0B0D180D18FD0B6D0B5D0BDD0B8D18F2C20D0B020D182D0B0D0BAD0B6D0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B20D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D183D180D0BED0B2D0BDD18F20D0BAD0B0D187D0B5D181D182D0B2D0B02C20D0B8D0B7D0B3D0BED182D0BED0B2D0BBD0B5D0BDD0BDD18BD0B520D18120D0B8D181D0BAD180D0BED0B920D181D0B8D18FD0BDD0B8D18F2E0000, 67186), +(3776013982, 1264876, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D0B2D18B20D0BDD0B0D0BDD0BED181D0B8D182D0B520D183D180D0BED0BD20D186D0B5D0BBD0B82C20D0BDD0B020D0BAD0BED182D0BED180D183D18E20D0B4D0B5D0B9D181D182D0B2D183D0B5D1822022D0A3D0B4D0B0D18020D0BAD0BED0BBD0BED181D181D0B0222C2022D0A1D0BCD0B5D180D182D0B5D0BBD18CD0BDD18BD0BC20D183D0B4D0B0D180D0BED0BC2220D0B8D0BBD0B82022D0A0D0B0D181D181D0B5D0BAD0B0D18ED189D0B8D0BC20D183D0B4D0B0D180D0BED0BC222C20D0BFD0BED180D0B0D0B6D0B0D18ED189D0B8D0BC20D0BDD0B520D0BCD0B5D0BDD0B5D0B52024733220D186D0B5D0BBD0B5D0B92C20D0B2D180D0B5D0BCD18F20D0B4D0B5D0B9D181D182D0B2D0B8D18F2022D0A3D0B4D0B0D180D0B020D0BAD0BED0BBD0BED181D181D0B02220D0BFD180D0BED0B4D0BBD0B5D0B2D0B0D0B5D182D181D18F20D0BDD0B020247B2473312F313030307D2E3120D181D0B5D0BA2E0000, 67186), +(3776013982, 1255629, 'ruRU', 0x00D092D18BD181D0B2D0BED0B1D0BED0B6D0B4D0B5D0BDD0BDD0B0D18F20D181D183D189D0BDD0BED181D182D18C20D183D181D0B8D0BBD0B8D0B2D0B0D0B5D18220D0B8D0B3D180D0BED0BAD0BED0B22C20D0BFD0BED0B2D18BD188D0B0D18F20D181D0BAD0BED180D0BED181D182D18C20D0BFD0B5D180D0B5D0B4D0B2D0B8D0B6D0B5D0BDD0B8D18F20D0BDD0B0202473312520D0B820D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D18F20D0BDD0B0D0BDD0BED181D0B8D0BCD18BD0B920D183D180D0BED0BD2C20D0B020D182D0B0D0BAD0B6D0B520D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD0BED181D182D18C20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F20D0B820D189D0B8D182D0BED0B220D0BDD0B0202473322520D0BDD0B02024642E20D0ADD184D184D0B5D0BAD18220D181D183D0BCD0BCD0B8D180D183D0B5D182D181D18F2C20D0BDD0BE20D0BDD0B520D0BED0B1D0BDD0BED0B2D0BBD18FD0B5D18220D0B2D180D0B5D0BCD18F20D0B4D0B5D0B9D181D182D0B2D0B8D18F20D183D181D0B8D0BBD0B5D0BDD0B8D18F2E00D0A1D0BAD0BED180D0BED181D182D18C20D0BFD0B5D180D0B5D0B4D0B2D0B8D0B6D0B5D0BDD0B8D18F20D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020247331252E0D0AD09DD0B0D0BDD0BED181D0B8D0BCD18BD0B920D183D180D0BED0BD20D183D0B2D0B5D0BBD0B8D187D0B5D0BD20D0BDD0B020247332252E0D0AD0ADD184D184D0B5D0BAD182D0B8D0B2D0BDD0BED181D182D18C20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F20D0B820D189D0B8D182D0BED0B220D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020247333252E00, 67186), +(3776013982, 447444, 'ruRU', 0x00243F63335BD0A0D0B0D0B7D180D18BD0B2D0B0D0B5D18220D182D0BAD0B0D0BDD18C20D180D0B5D0B0D0BBD18CD0BDD0BED181D182D0B820D0B820D181D0BED0B7D0B4D0B0D0B5D18220D180D0B0D0B7D0BBD0BED0BC5D5B22D092D0B7D180D18BD0B220D180D0B0D0B7D183D0BCD0B02220D180D0B0D0B7D180D18BD0B2D0B0D0B5D18220D182D0BAD0B0D0BDD18C20D180D0B5D0B0D0BBD18CD0BDD0BED181D182D0B820D0B820D181D0BED0B7D0B4D0B0D0B5D18220D18DD0BDD182D180D0BED0BFD0B8D187D0B5D181D0BAD0B8D0B920D180D0B0D0B7D0BBD0BED0BC5D2C20D0BAD0BED182D0BED180D18BD0B920D0BFD180D0B5D181D0BBD0B5D0B4D183D0B5D18220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B020D0B220D182D0B5D187D0B5D0BDD0B8D0B52024343530313933642E20D09FD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B820D0BDD0B020D0BFD183D182D0B820D180D0B0D0B7D0BBD0BED0BCD0B020D0BFD0BED0BBD183D187D0B0D18ED1822024343437343438733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D180D0B0D0B720D0B22024343539333134743120D181D0B5D0BA2E0000, 67186), +(372281185, 38, 'ruRU', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'ruRU', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'ruRU', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'ruRU', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'ruRU', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'ruRU', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'ruRU', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'ruRU', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'ruRU', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'ruRU', 0x0024407370656C6C6465736332313037323500D09FD0BE20D0BED0BAD0BED0BDD187D0B0D0BDD0B8D0B820D0B2D180D0B5D0BCD0B5D0BDD0B820D0B4D0B5D0B9D181D182D0B2D0B8D18F20D0BDD0B0D0BDD0B5D181D0B5D1822024773120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B0D0B9D0BDD0BED0B920D0BCD0B0D0B3D0B8D0B82E00, 67186), +(3386943305, 332898, 'ruRU', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'ruRU', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'ruRU', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'ruRU', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'ruRU', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'ruRU', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'ruRU', 0x0464000000, 67186), +(3776013982, 1280123, 'ruRU', 0x000000, 67186), +(3205218938, 54794, 'ruRU', 0x424353484F5254444154454E4F594541520025422025640001000000, 67186), +(3205218938, 22339, 'ruRU', 0x534C4153485F5441524745545F4D41524B455233002FD0BCD0B5D182D0BAD0B0D186D0B5D0BBD0B80001000000, 67186), +(3205218938, 22338, 'ruRU', 0x534C4153485F5441524745545F4D41524B455232002F746D0001000000, 67186), +(3205218938, 22331, 'ruRU', 0x534C4153485F574F524C445F4D41524B455233002FD0BCD0B5D182D0BAD0B00001000000, 67186), +(3205218938, 22330, 'ruRU', 0x534C4153485F574F524C445F4D41524B455232002F776D0001000000, 67186), +(3205218938, 22329, 'ruRU', 0x534C4153485F574F524C445F4D41524B455231002FD0BC0001000000, 67186), +(2202435563, 1276526, 'ruRU', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'ruRU', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'ruRU', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'ruRU', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'ruRU', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'ruRU', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'ruRU', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'ruRU', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'ruRU', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'ruRU', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'ruRU', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'ruRU', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E0024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'ruRU', 0x00D092D18B20D0BFD18BD182D0B0D0B5D182D0B5D181D18C20D0B4D0BED0B1D0B8D182D18C20D180D0B0D0BDD0B5D0BDD183D18E20D186D0B5D0BBD18C2C20D0BDD0B0D0BDD0BED181D18F2024733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D0BCD0B3D0BDD0BED0B2D0B5D0BDD0BDD0BE20D0B820D0B5D189D0B520243436383537326F3120D0B5D0B42E20D0BFD0B5D180D0B8D0BED0B4D0B8D187D0B5D181D0BAD0BED0B3D0BE20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B7D0B02024343638353732642E20D094D0B5D0B9D181D182D0B2D183D0B5D18220D182D0BED0BBD18CD0BAD0BE20D0BDD0B020D186D0B5D0BBD0B820D18120D183D180D0BED0B2D0BDD0B5D0BC20D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B2D18BD188D0B5202473332520D0B8D0BBD0B820D0BDD0B8D0B6D0B520247332252E0000, 67186), +(261693969, 95553, 'ruRU', 0xFFFFFFFFFFFFFFFFD097D0BBD0BED0B2D180D0B5D0B4D0BDD18BD0B520D0B2D0BED0BFD0BBD0BED189D0B5D0BDD0B8D18F00001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'ruRU', 0xFFFFFFFFFFFFFFFFD098D181D181D0BBD0B5D0B4D0BED0B2D0B0D0BDD0B8D0B520D0BED0B1D0B5D0BBD0B8D181D0BAD0BED0B220D182D18CD0BCD18B0000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'ruRU', 0xFFFFFFFFFFFFFFFFD0A1D0BED0BAD180D0B0D182D0B8D182D18C20D0B8D18520D187D0B8D181D0BBD0BE0000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'ruRU', 0xD093D0B8D0B1D0B5D0BBD18CD0BDD0B0D18F20D187D0B5D188D183D18F0000D097D0BBD0BED0B2D0B5D189D0B8D0B920D0B4D0B0D18020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D18220D0B7D0B0D0BFD0B0D18120D0B7D0B4D0BED180D0BED0B2D18CD18F20D183D187D0B5D0BDD0B8D186D18B20D09AD183D180D0B3D181D0B1D0B5D0B9D0BD20D0B820D0BDD0B0D0BDD0BED181D0B8D0BCD18BD0B920D0B5D18E20D183D180D0BED0BD20D0BDD0B02024313238393130327331252C20D0B020D182D0B0D0BAD0B6D0B520D0BFD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0BCD0B5D0BDD18FD182D18C2022D093D0B8D0B1D0B5D0BBD18CD0BDD183D18E20D187D0B5D188D183D18E222E00, 67186), +(3776013982, 1281946, 'ruRU', 0x000000, 67186), +(3776013982, 1270634, 'ruRU', 0x00D0A3D0B4D0B2D0B0D0B8D0B2D0B0D0B5D18220D183D180D0BED0BD2C20D0BFD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D187D0B0D180D0BED0B4D0B5D0B9D181D0BAD0B8D0BC20D18DD0BBD0B5D0BCD0B5D0BDD182D0B0D0BBD0B5D0BC20D0B8D0B720D183D0B7D0BBD0B020D09DD0B5D0BAD181D183D181D0B020D09CD0B8D0B427D0B0D1802C20D0BDD0B020313520D181D0B5D0BA2E00D09FD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D183D0B4D0B2D0BED0B5D0BD2E00, 67186), +(3776013982, 1270085, 'ruRU', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'ruRU', 0x00D0A0D0B0D181D185D0BED0B4D183D0B5D18220D0B7D0B4D0BED180D0BED0B2D18CD0B520D0B820D0BFD0BED0BBD183D187D0B0D0B5D18220D189D0B8D1822C20D0BFD0BED0B3D0BBD0BED189D0B0D18ED189D0B8D0B920D183D180D0BED0BD20D0B220D182D0BED0BC20D0B6D0B520D0BED0B1D18AD0B5D0BCD0B52E20D09FD180D0B820D181D0BDD18FD182D0B8D0B820D189D0B8D18220D0B2D0B7D180D18BD0B2D0B0D0B5D182D181D18F2C20D0BDD0B0D0BDD0BED181D18F20D0B8D0B3D180D0BED0BAD0B0D0BC20D0B220D180D0B0D0B4D0B8D183D181D0B5202431323730303835613120D0BC202431323730303835733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B82E00D09FD0BED0B3D0BBD0BED189D0B0D0B5D1822024773120D0B5D0B42E20D183D180D0BED0BDD0B02E0D0AD09FD180D0B820D181D0BDD18FD182D0B8D0B820D0BDD0B0D0BDD0B5D181D0B5D18220D0B8D0B3D180D0BED0BAD0B0D0BC20D0B220D180D0B0D0B4D0B8D183D181D0B5202431323730303835613120D0BC202431323730303835733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B82E00, 67186), +(3776013982, 1258411, 'ruRU', 0x000000, 67186), +(3776013982, 1258410, 'ruRU', 0x00D092D18BD0BFD0B8D182D18C20D0BDD0B0D0BFD0B8D182D0BED0BA2C20D0B4D0B0D18ED189D0B8D0B920D0B4D0B5D0BAD0BED180D0B0D182D0B8D0B2D0BDD18BD0B920D18DD184D184D0B5D0BAD1822E00D0A1D0BBD0B0D0B1D0B0D18F20D0B820D0B1D0B5D181D0BFD0BED0BBD0B5D0B7D0BDD0B0D18F20D0B8D0BCD0B8D182D0B0D186D0B8D18F20D0A7D183D0B4D0B5D181D0BDD0BED0B3D0BE20D0B1D0B0D0BBD0B02E20D092D181D0BAD0BED180D0B520D0BED0BDD0B020D0BDD0B5D0B8D0B7D0B1D0B5D0B6D0BDD0BE20D180D0B0D181D181D0B5D0B5D182D181D18F20D0B1D0B5D0B720D181D0BBD0B5D0B4D0B02E00, 67186), +(3776013982, 1258336, 'ruRU', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'ruRU', 0x000000, 67186), +(3776013982, 1257729, 'ruRU', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'ruRU', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'ruRU', 0x00D09DD0B0D187D0B8D0BDD0B0D0B5D18220D0BED0B6D0B8D0B2D0B0D182D18C20D0B820D0B2D0BED0B7D180D0BED0B6D0B4D0B0D0B5D182D181D18F20D18120243132353737323873312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F2C20D0B5D181D0BBD0B820D183D181D0BFD0B5D188D0BDD0BE20D0B7D0B0D0B2D0B5D180D188D0B0D0B5D18220D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D0B520D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B82E00D09FD0BED0BFD18BD182D0BAD0B020D0B2D0B5D180D0BDD183D182D18CD181D18F20D0BA20D0B6D0B8D0B7D0BDD0B82E20D095D181D0BBD0B820D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D0B520D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D0B7D0B0D0B2D0B5D180D188D0B8D182D181D18F2C20D0B2D0BED0B7D180D0BED0B4D0B8D182D181D18F20D18120243132353737323873312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F2E00, 67186), +(3776013982, 1257505, 'ruRU', 0x00D0A0D0B0D181D185D0BED0B4D183D0B5D18220D0B7D0B4D0BED180D0BED0B2D18CD0B520D0B820D0BFD0BED0BBD183D187D0B0D0B5D18220D189D0B8D1822C20D0BFD0BED0B3D0BBD0BED189D0B0D18ED189D0B8D0B920D183D180D0BED0BD20D0B220D182D0BED0BC20D0B6D0B520D0BED0B1D18AD0B5D0BCD0B52E00D09FD0BED0B3D0BBD0BED189D0B0D0B5D1822024773120D0B5D0B42E20D183D180D0BED0BDD0B02E00, 67186), +(3776013982, 1256189, 'ruRU', 0x000000, 67186), +(3776013982, 1255966, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B22024743120D181D0B5D0BA2E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B22024743120D181D0B5D0BA2E00, 67186), +(3776013982, 1253337, 'ruRU', 0x000000, 67186), +(3776013982, 1253336, 'ruRU', 0x0000D09DD0B0D0BFD0B8D182D0BED0BA20D0B2D18BD0B7D18BD0B2D0B0D0B5D18220D181D0BED0BCD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D0B3D0B0D0BBD0BBD18ED186D0B8D0BDD0B0D186D0B8D0B82E2E2E00, 67186), +(3776013982, 1253194, 'ruRU', 0x0000D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D0B500, 67186), +(3776013982, 1253193, 'ruRU', 0x0000D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D0B500, 67186), +(3776013982, 1253185, 'ruRU', 0x0000D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D0B500, 67186), +(3776013982, 1253064, 'ruRU', 0x000000, 67186), +(3776013982, 1252431, 'ruRU', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'ruRU', 0x0024407370656C6C6465736331323431303233002431323538333336733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B0D0B9D0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D180D0B0D0B720D0B22024743120D181D0B5D0BA2E00, 67186), +(3776013982, 1241023, 'ruRU', 0x00D097D0BE27D0B3D180D0BED0BD20D183D0BAD180D18BD0B2D0B0D0B5D18220D181D0B5D0B1D18F20D0B1D0B0D180D18CD0B5D180D0BED0BC2C20D0BFD0BED0B3D0BBD0BED189D0B0D18ED189D0B8D0BC20D0BFD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD2C20D0B820D0BDD0B0D187D0B8D0BDD0B0D0B5D18220D0BFD180D0B8D0BCD0B5D0BDD18FD182D18C2022D09FD0BED181D0BBD0B5D0B4D0BDD0B5D0B520D0BFD180D0B5D0B4D183D0BFD180D0B5D0B6D0B4D0B5D0BDD0B8D0B5222E20D09FD0BE20D0B7D0B0D0B2D0B5D180D188D0B5D0BDD0B8D0B820D0B1D0B0D180D18CD0B5D18020D0BDD0B0D187D0B8D0BDD0B0D0B5D18220D0BFD183D0BBD18CD181D0B8D180D0BED0B2D0B0D182D18C2C20D0BDD0B0D0BDD0BED181D18F20D0B8D0B3D180D0BED0BAD0B0D0BC202431323538333336733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B0D0B9D0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D180D0B0D0B720D0B2202431323431303332743120D181D0B5D0BA2E20D0B4D0BE20D182D0B5D18520D0BFD0BED1802C20D0BFD0BED0BAD0B020D0BDD0B520D0B1D183D0B4D0B5D18220D183D0BDD0B8D187D182D0BED0B6D0B5D0BD2E00D09FD0BED0B3D0BBD0BED189D0B5D0BDD0B8D0B52024773120D0B5D0B42E20D183D180D0BED0BDD0B02E00, 67186), +(3776013982, 1235076, 'ruRU', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'ruRU', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'ruRU', 0x00D09FD180D0BED0B7D0B0D0BFD0B0D181D0BDD0B8D0BA20D180D0BED0B5D182D181D18F20D0B220D0B1D0BBD0B8D0B6D0B0D0B9D188D0B5D0B920D0BAD183D187D0B520D180D0B5D181D183D180D181D0BED0B22C20D0B7D0B0D0BCD0B5D0BDD18FD18F20D0BED0B4D0BDD18320D0B8D0B720D181D0B2D0BED0B8D18520D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B5D0B920D0BDD0B020D0BDD0BED0B2D183D18E2E243F44494646387C3F4449464632335B5D5B20D0A320D0BDD0B5D0B3D0BE20D0BCD0BED0B6D0B5D18220D0B1D18BD182D18C20D182D0BED0BBD18CD0BAD0BE20D0BED0B4D0BDD0B020D182D0B0D0BAD0B0D18F20D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D18C20D0B5D0B4D0B8D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE2E5D0000, 67186), +(3776013982, 1235067, 'ruRU', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'ruRU', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'ruRU', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'ruRU', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'ruRU', 0x00D090D0BBD0BBD0B5D180D0B8D18F20D0BED0BAD180D183D0B6D0B0D0B5D18220D186D0B5D0BBD18C20D0B0D183D180D0BED0B920D0BCD0B0D0B3D0B8D0B820D091D0B5D0B7D0B4D0BDD18B2C20D0BFD0BED0B3D0BBD0BED189D0B0D18ED189D0B5D0B92024733120D0B5D0B42E20D0BFD0BED0BBD183D187D0B0D0B5D0BCD0BED0B3D0BE20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F2E20D095D181D0BBD0B8202224407370656C6C6E616D65313233333836352220D180D0B0D181D181D0B5D0B8D0B2D0B0D18ED1822C20D0BED181D182D0B0D0B2D188D0B8D0B9D181D18F20D18DD184D184D0B5D0BAD18220D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0B8D18F20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F20D0BFD0B5D180D0B5D185D0BED0B4D0B8D18220D0BDD0B020D0B4D180D183D0B3D0BED0B3D0BE20D181D0BBD183D187D0B0D0B9D0BDD0BED0B3D0BE20D0B8D0B3D180D0BED0BAD0B02E00D09FD0BED0B3D0BBD0BED189D0B0D0B5D1822024773120D0B5D0B42E20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F2E0D0A0D0AD09FD180D0B820D181D0BDD18FD182D0B8D0B820D0BED181D182D0B0D0B2D188D0B8D0B9D181D18F20D18DD184D184D0B5D0BAD18220D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0B8D18F20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F20D0BFD0B5D180D0B5D0B9D0B4D0B5D18220D0BDD0B020D0B4D180D183D0B3D0BED0B3D0BE20D0B8D0B3D180D0BED0BAD0B02E00, 67186), +(3776013982, 1228865, 'ruRU', 0x00D09FD0BED0B7D0B2D0BED0BBD18FD0B5D18220D0BFD180D0B8D0B7D18BD0B2D0B0D182D18C20D0B820D0BED182D0BFD183D181D0BAD0B0D182D18C20D18DD182D0BED18220D182D180D0B0D0BDD181D0BFD0BED180D1822E00243F6A31675BD0A1D0BAD0BED180D0BED181D182D18C20D0BFD0B5D180D0B5D0B4D0B2D0B8D0B6D0B5D0BDD0B8D18F20D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020246A3167252E205D5B5D243F6A31665BD0A1D0BAD0BED180D0BED181D182D18C20D0BFD0BED0BBD0B5D182D0B020D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020246A3166252E205D5B5D243F6A31735BD0A1D0BAD0BED180D0BED181D182D18C20D0BFD0BBD0B0D0B2D0B0D0BDD0B8D18F20D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020246A3173252E205D5B5D00, 67186), +(3776013982, 1225598, 'ruRU', 0x00243F50433135343832385B7C636E4951313A2D20D091D0B0D0B7D0BED0B2D18BD0B920D0BAD0BED181D182D18ED0BC20D0BDD18BD180D18FD0BBD18CD189D0B8D0BAD0B07C525D5B5D243F50433135343832395B7C636E4951323A2D20D09AD0BED181D182D18ED0BC20D18120D183D0BAD180D0B5D0BFD0BBD0B5D0BDD0BDD18BD0BCD0B820D188D0B0D180D0BDD0B8D180D0B0D0BCD0B87C525D5B5D243F50433135343833305B7C636E4951333A2D20D09AD0BED181D182D18ED0BC20D18120D0B3D0BBD183D0B1D0B8D0BDD0BDD0BED0B920D181D0BCD0B0D0B7D0BAD0BED0B97C525D5B5D243F50433135343833325B7C636E4951343A2D20D09AD0BED181D182D18ED0BC20D18120D0BFD0BBD0B0D0B2D0BDD0B8D0BAD0B0D0BCD0B820D09FD0B0D0BAD0B020D0B4D0BBD18F20D092D0BFD0B0D0B4D0B8D0BDD18B7C525D5B5D0D0AD0A1D0BAD0BED180D0BED181D182D18C20D0BFD0BBD0B0D0B2D0B0D0BDD0B8D18F202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20D091D0B0D0B7D0BED0B2D18BD0B920D0B1D0B0D0BBD0BBD0BED0BD20D18120D0B2D0BED0B7D0B4D183D185D0BED0BC7C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313232343730306D3620D0B5D0B42E0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20D09FD0BED0B4D0B5D180D0B6D0B0D0BDD0BDD18BD0B920D0B1D0B0D0BBD0BBD0BED0BD20D0BDD18BD180D18FD0BBD18CD189D0B8D0BAD0B07C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313237313631336D3620D0B5D0B42E0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20D09FD180D0BED0B2D0B5D180D0B5D0BDD0BDD18BD0B920D0BDD0B020D0B1D0B5D0B7D0BED0BFD0B0D181D0BDD0BED0B920D0B3D0BBD183D0B1D0B8D0BDD0B520D0B1D0B0D0BBD0BBD0BED0BD7C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313237313631346D3620D0B5D0B42E0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20D091D0B0D0BBD0BBD0BED0BD20D09DD0B0D0BBD0BED180D0B0D0BAD0BAD0B020D18120D0B2D0BED0B7D0B4D183D185D0BED0BC7C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313237313631356D3620D0B5D0B42E0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20D091D0B0D0B7D0BED0B2D0B0D18F20D0BDD0B0D0B6D0B8D0B2D0BAD0B07C520D0AD09ED0B1D18BD187D0BDD18BD0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20D09DD0B0D0B6D0B8D0B2D0BAD0B020D0B8D0B720D0BFD0BBD0B0D0B2D183D0BDD0BAD0B07C520D0AD09DD0B5D0BED0B1D18BD187D0BDD18BD0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20D09FD180D0B8D0BCD0B0D0BDD0BAD0B020D0B8D0B720D0BBD183D187D0B5D0BFD0B5D180D0B07C520D0AD0A0D0B5D0B4D0BAD0B8D0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20D09DD0B0D0B6D0B8D0B2D0BAD0B020D0B8D0B720D0BCD18FD181D0B020D0BCD183D182D0BDD0BED0BCD0B5D180D0B07C520D0AD0ADD0BFD0B8D187D0B5D181D0BAD0B8D0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20D09CD0B5D0BBD0BAD0BED0B2D0BED0B4D0BDD0B0D18F20D181D0B5D182D18C7C520D0AD09AD0BED0BBD18ED187D0B8D0B520D0BAD180D0B0D0B1D18B20D0B820D0BAD0BED0BBD18ED187D0B8D0B520D0BCD0BED180D181D0BAD0B8D0B520D0BAD0BED0BDD18CD0BAD0B80D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20D0A1D0B5D182D18C20D18120D182D180D0BED0B9D0BDD0BED0B920D0BDD0B8D182D18CD18E7C520D0AD092D181D0B520D0BCD0B5D0BBD0BAD0B8D0B520D181D183D189D0B5D181D182D0B2D0B00D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20D092D18BD181D0BED0BAD0BED0BFD180D0BED187D0BDD18BD0B520D0BED187D0BAD0B87C520D0AD092D0BED0B7D0BCD0BED0B6D0BDD0BED181D182D18C20D0BDD0B0D185D0BED0B4D0B8D182D18C20D0B4D180D0B5D0B2D0BDD0B8D0B520D180D0B5D0BBD0B8D0BAD0B2D0B8D0B85D5B5D0D0A00243F50433135343832385B7C636E4951313A2D20D091D0B0D0B7D0BED0B2D18BD0B920D0BAD0BED181D182D18ED0BC20D0BDD18BD180D18FD0BBD18CD189D0B8D0BAD0B07C525D5B5D243F50433135343832395B7C636E4951323A2D20D09AD0BED181D182D18ED0BC20D18120D183D0BAD180D0B5D0BFD0BBD0B5D0BDD0BDD18BD0BCD0B820D188D0B0D180D0BDD0B8D180D0B0D0BCD0B87C525D5B5D243F50433135343833305B7C636E4951333A2D20D09AD0BED181D182D18ED0BC20D18120D0B3D0BBD183D0B1D0B8D0BDD0BDD0BED0B920D181D0BCD0B0D0B7D0BAD0BED0B97C525D5B5D243F50433135343833325B7C636E4951343A2D20D09AD0BED181D182D18ED0BC20D18120D0BFD0BBD0B0D0B2D0BDD0B8D0BAD0B0D0BCD0B820D09FD0B0D0BAD0B020D0B4D0BBD18F20D092D0BFD0B0D0B4D0B8D0BDD18B7C525D5B5D0D0AD0A1D0BAD0BED180D0BED181D182D18C20D0BFD0BBD0B0D0B2D0B0D0BDD0B8D18F202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20D091D0B0D0B7D0BED0B2D18BD0B920D0B1D0B0D0BBD0BBD0BED0BD20D18120D0B2D0BED0B7D0B4D183D185D0BED0BC7C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313232343730306D3620D0B5D0B42E0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20D09FD0BED0B4D0B5D180D0B6D0B0D0BDD0BDD18BD0B920D0B1D0B0D0BBD0BBD0BED0BD20D0BDD18BD180D18FD0BBD18CD189D0B8D0BAD0B07C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313237313631336D3620D0B5D0B42E0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20D09FD180D0BED0B2D0B5D180D0B5D0BDD0BDD18BD0B920D0BDD0B020D0B1D0B5D0B7D0BED0BFD0B0D181D0BDD0BED0B920D0B3D0BBD183D0B1D0B8D0BDD0B520D0B1D0B0D0BBD0BBD0BED0BD7C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313237313631346D3620D0B5D0B42E0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20D091D0B0D0BBD0BBD0BED0BD20D09DD0B0D0BBD0BED180D0B0D0BAD0BAD0B020D18120D0B2D0BED0B7D0B4D183D185D0BED0BC7C520D0AD09CD0B0D0BAD1812E20D0B7D0B0D0BFD0B0D18120D0BAD0B8D181D0BBD0BED180D0BED0B4D0B03A2024313237313631356D3620D0B5D0B42E0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20D091D0B0D0B7D0BED0B2D0B0D18F20D0BDD0B0D0B6D0B8D0B2D0BAD0B07C520D0AD09ED0B1D18BD187D0BDD18BD0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20D09DD0B0D0B6D0B8D0B2D0BAD0B020D0B8D0B720D0BFD0BBD0B0D0B2D183D0BDD0BAD0B07C520D0AD09DD0B5D0BED0B1D18BD187D0BDD18BD0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20D09FD180D0B8D0BCD0B0D0BDD0BAD0B020D0B8D0B720D0BBD183D187D0B5D0BFD0B5D180D0B07C520D0AD0A0D0B5D0B4D0BAD0B8D0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20D09DD0B0D0B6D0B8D0B2D0BAD0B020D0B8D0B720D0BCD18FD181D0B020D0BCD183D182D0BDD0BED0BCD0B5D180D0B07C520D0AD0ADD0BFD0B8D187D0B5D181D0BAD0B8D0B520D181D183D189D0B5D181D182D0B2D0B02DD183D0BBD0BED0B20D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20D09CD0B5D0BBD0BAD0BED0B2D0BED0B4D0BDD0B0D18F20D181D0B5D182D18C7C520D0AD09AD0BED0BBD18ED187D0B8D0B520D0BAD180D0B0D0B1D18B20D0B820D0BAD0BED0BBD18ED187D0B8D0B520D0BCD0BED180D181D0BAD0B8D0B520D0BAD0BED0BDD18CD0BAD0B80D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20D0A1D0B5D182D18C20D18120D182D180D0BED0B9D0BDD0BED0B920D0BDD0B8D182D18CD18E7C520D0AD092D181D0B520D0BCD0B5D0BBD0BAD0B8D0B520D181D183D189D0B5D181D182D0B2D0B00D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20D092D18BD181D0BED0BAD0BED0BFD180D0BED187D0BDD18BD0B520D0BED187D0BAD0B87C520D0AD092D0BED0B7D0BCD0BED0B6D0BDD0BED181D182D18C20D0BDD0B0D185D0BED0B4D0B8D182D18C20D0B4D180D0B5D0B2D0BDD0B8D0B520D180D0B5D0BBD0B8D0BAD0B2D0B8D0B85D5B5D00, 67186), +(3776013982, 1225322, 'ruRU', 0x007C636E475245454E5F464F4E545F434F4C4F523AD0A0D0B5D0BAD0BED0BCD0B5D0BDD0B4D183D0B5D0BCD18BD0B920D183D180D0BED0B2D0B5D0BDD18C20D0BDD0B0D0B2D18BD0BAD0B03A7C7220310D0A0D0AD0A2D0B8D185D0B8D0B520D0B820D181D0BFD0BED0BAD0BED0B9D0BDD18BD0B520D0B2D0BED0B4D18B20D0B8D0B4D0B5D0B0D0BBD18CD0BDD0BE20D0BFD0BED0B4D185D0BED0B4D18FD18220D0B4D0BBD18F20D0BDD0B0D187D0B8D0BDD0B0D18ED189D0B8D18520D180D18BD0B1D0B0D0BAD0BED0B22E0D0A0D0AD09AD0BED181D18FD0BAD0B820D180D18BD0B120D0B220D18DD182D0BED0B920D0B7D0BED0BDD0B53A0D0A2D20D0A1D182D0B0D18F20D0A1D0BED0BBD0BDD0B5D187D0BDD0BED0B3D0BE20D09AD0BED0BBD0BED0B4D186D0B00D0A2D20D091D183D180D0BBD18FD189D0B8D0B920D180D0B0D181D186D0B2D0B5D1820D0A2D20D0A6D0B2D0B5D182D0BED181D182D0B0D18F0D0A2D20D096D0B8D0B6D0B020D091D0B5D0B7D0B4D0BDD18B0D0A2D20D09DD0B5D180D18FD188D0BBD0B8D0B2D18BD0B920D0B3D180D183D0B70D0A2D20D09FD0BED182D0B5D180D18FD0BDD0BDD18BD0B520D181D0BED0BAD180D0BED0B2D0B8D189D0B00000, 67186), +(3776013982, 1225281, 'ruRU', 0x00D091D0B5D0B7D0BED0B1D0B8D0B4D0BDD0BED0B520D181D183D189D0B5D181D182D0B2D0BE2C20D0BFD180D0B5D0B4D0BFD0BED187D0B8D182D0B0D18ED189D0B5D0B520D181D0BFD0BED0BAD0BED0B9D0BDD18BD0B520D0B2D0BED0B4D18B20D0BBD0B5D181D0BED0B220D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B82E20D09220D0BCD0B5D181D182D0BDD18BD18520D0B2D0BED0B4D0BED0B5D0BCD0B0D18520D0BCD0BED0B3D183D18220D180D18BD0B1D0B0D187D0B8D182D18C20D0B2D181D0B520D0B6D0B5D0BBD0B0D18ED189D0B8D0B52C20D0BDD0BE20D18DD182D0B820D180D18BD0B1D18B20D0BFD0BED0BFD0B0D0B4D0B0D18ED182D181D18F20D182D0BED0BBD18CD0BAD0BE20D181D0B0D0BCD18BD0BC20D0B2D0BDD0B8D0BCD0B0D182D0B5D0BBD18CD0BDD18BD0BC20D180D18BD0B1D0B0D0BAD0B0D0BC2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09ED181D0BED0B1D0BED0B520D181D0B2D0BED0B9D181D182D0B2D0BE3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD097D0BED0BDD18B20D0BED0B1D0B8D182D0B0D0BDD0B8D18F3A7C520D0A2D20D09BD0B5D181D0B020D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B80D0A2D20D0A5D0B0D180D0B0D0BDD0B4D0B0D1800D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09AD0BED181D18FD0BAD0B820D180D18BD0B13A7C720D0A2D20D0A6D0B2D0B5D182D183D189D0B8D0B920D0BFD0BED182D0BED0BA0000, 67186), +(3776013982, 1225277, 'ruRU', 0x00D09220D0B2D0BED0B4D0B0D18520D0A5D0B0D180D0B0D0BDD0B4D0B0D180D0B020D0B2D181D182D180D0B5D187D0B0D18ED182D181D18F20D183D0BDD0B8D0BAD0B0D0BBD18CD0BDD18BD0B520D0BCD0B8D0BDD0B5D180D0B0D0BBD18B2C20D0BAD0BED182D0BED180D18BD0B52C20D0BFD180D0BED185D0BED0B4D18F20D187D0B5D180D0B5D0B720D0B6D0B0D0B1D180D18B20D0B2D0BED181D181D182D0B0D0BDD0BED0B2D0BBD0B5D0BDD0BDD0BED0B920D180D18BD0B1D18B2DD0BFD0B5D0B2D183D0BDD18CD0B82C20D0B8D0B7D0B4D0B0D18ED18220D18DD184D0B8D180D0BDD183D18E20D0BCD0B5D0BBD0BED0B4D0B8D18E2E20D094D0BBD18F20D181D0BBD183D185D0B020D180D18BD0B1D0B0D0BAD0BED0B220D18DD182D0B020D0BFD0B5D181D0BDD18F20D0BED187D0B5D0BDD18C20D0BFD180D0B8D18FD182D0BDD0B02C20D0BDD0BE20D0BED0BDD0B020D182D0B0D0BAD0B6D0B520D0BED182D0B3D0BED0BDD18FD0B5D18220D185D0B8D189D0BDD0B8D0BAD0BED0B220D181D0B2D0BED0B8D0BCD0B820D0BBD0B5D0B3D0BAD0B8D0BCD0B820D0B2D0B8D0B1D180D0B0D186D0B8D18FD0BCD0B82E20D09FD180D0B820D0BFD180D0B8D0B1D0BBD0B8D0B6D0B5D0BDD0B8D0B820D185D0B8D189D0BDD0BED0B920D180D18BD0B1D18B2C20D182D0B0D0BAD0BED0B920D0BAD0B0D0BA20D0B8D181D0BAD0B0D0B6D0B5D0BDD0BDD0B0D18F20D182D0B5D182D180D0B02C20D0B2D0B8D0B1D180D0B0D186D0B8D0B820D183D181D0B8D0BBD0B8D0B2D0B0D18ED182D181D18F2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09ED181D0BED0B1D0BED0B520D181D0B2D0BED0B9D181D182D0B2D0BE3A7C520D0A0D0A24407370656C6C69636F6E3132333731303420D093D0BED182D0BED0B2D0BAD0B020D0BFD0B8D180D0BED0B20D0A0D0AD0ADD182D0B020D0BED181D0BED0B1D0B5D0BDD0BDD0BE20D180D0B5D0B4D0BAD0B0D18F20D0B820D0B2D0BAD183D181D0BDD0B0D18F20D180D18BD0B1D0B020E2809320D0B2D0B0D0B6D0BDD18BD0B920D0B8D0BDD0B3D180D0B5D0B4D0B8D0B5D0BDD18220D0B4D0BBD18F20D0BCD0BDD0BED0B3D0B8D18520D180D0B5D186D0B5D0BFD182D0BED0B220D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B8204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD097D0BED0BDD18B20D0BED0B1D0B8D182D0B0D0BDD0B8D18F3A7C520D0A2D20D09BD0B5D181D0B020D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B80D0A2D20D0A5D0B0D180D0B0D0BDD0B4D0B0D1800D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09AD0BED181D18FD0BAD0B820D180D18BD0B13A7C720D0A2D20D0A6D0B2D0B5D182D0BED181D182D0B0D18F0D0A2D20D091D183D180D0BBD18FD189D0B8D0B920D180D0B0D181D186D0B2D0B5D1820D0A2D20D0A1D182D0B0D18F20D0A1D0BED0BBD0BDD0B5D187D0BDD0BED0B3D0BE20D09AD0BED0BBD0BED0B4D186D0B00D0A2D20D0A6D0B2D0B5D182D183D189D0B8D0B920D0BFD0BED182D0BED0BA0000, 67186), +(3776013982, 1225273, 'ruRU', 0x00D09BD18ED0B1D0BED0BFD18BD182D0BDD18BD0B920D0B820D0B2D0B5D181D18CD0BCD0B020D0BDD0B5D0BFD180D0B8D18FD182D0BDD18BD0B920D0BED0B1D0B8D182D0B0D182D0B5D0BBD18C20D091D183D180D0B820D091D0B5D0B7D0B4D0BDD18B2C20D0BAD0BED0BDD0B5D187D0BDD0BED181D182D0B820D0BAD0BED182D0BED180D0BED0B3D0BE20D187D0B0D181D182D0BE20D0B2D0B8D0B4D0BDD0B5D18ED182D181D18F20D0B220D182D0B5D18520D0BED0B1D0BBD0B0D181D182D18FD18520D091D0B5D0B7D0B4D0BDD18B2C20D0B3D0B4D0B520D0BCD0BED0B6D0BDD0BE20D183D0B4D0B8D182D18C20D180D18BD0B1D1832E20D0A5D0B8D182D180D18BD0B92C20D183D0BCD0BDD18BD0B920D0B820D0BED0BFD0B0D181D0BDD18BD0B920D0BED181D18CD0BCD0B8D0BDD0BED0B320E2809320D181D0B5D180D18CD0B5D0B7D0BDD0B0D18F20D183D0B3D180D0BED0B7D0B020D0B4D0BBD18F20D0B2D181D18FD0BAD0BED0B3D0BE2C20D0BAD182D0BE20D0BED182D0B2D0B0D0B6D0B8D182D181D18F20D180D18BD0B1D0B0D187D0B8D182D18C20D0B220D0B1D183D180D0B520D091D0B5D0B7D0B4D0BDD18B2E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09ED181D0BED0B1D0BED0B520D181D0B2D0BED0B9D181D182D0B2D0BE3A207C520D0A0D0A24407370656C6C69636F6E3132333731303420D093D0BED182D0BED0B2D0BAD0B020D0BFD0B8D180D0BED0B20D0A0D0AD0ADD182D0B020D0BED181D0BED0B1D0B5D0BDD0BDD0BE20D180D0B5D0B4D0BAD0B0D18F20D0B820D0B2D0BAD183D181D0BDD0B0D18F20D180D18BD0B1D0B020E2809320D0B2D0B0D0B6D0BDD18BD0B920D0B8D0BDD0B3D180D0B5D0B4D0B8D0B5D0BDD18220D0B4D0BBD18F20D0BCD0BDD0BED0B3D0B8D18520D180D0B5D186D0B5D0BFD182D0BED0B220D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B8204D69646E696768742E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD097D0BED0BDD18B20D0BED0B1D0B8D182D0B0D0BDD0B8D18F3A7C520D0A0D0A2D20D091D183D180D18F20D091D0B5D0B7D0B4D0BDD18B0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09AD0BED181D18FD0BAD0B820D180D18BD0B13A7C720D0A0D0A2D20D09ED0BAD0B5D0B0D0BDD0B8D187D0B5D181D0BAD0B0D18F20D0B2D0BED180D0BED0BDD0BAD0B00D0A2D20D096D0B8D0B6D0B020D091D0B5D0B7D0B4D0BDD18B0000, 67186), +(3776013982, 1225272, 'ruRU', 0x00D0A1D0B5D180D0B5D0B1D180D0B8D181D182D0B0D18F20D0B8D0B3D0BBD0BED181D0BFD0B8D0BDD0BAD0B020D0B7D0B0D181D182D0B0D0B2D0BBD18FD0B5D18220D0B820D0B4D180D183D0B3D183D18E20D180D18BD0B1D1832C20D0B820D180D18BD0B1D0B0D0BAD0BED0B220D0B2D0BDD0B8D0BCD0B0D182D0B5D0BBD18CD0BDD0BE20D0BED181D0BCD0B0D182D180D0B8D0B2D0B0D182D18CD181D18F20D0BFD0BE20D181D182D0BED180D0BED0BDD0B0D0BC2C20D187D182D0BED0B1D18B20D0BDD0B520D0BDD0B0D0BFD0BED180D0BED182D18CD181D18F20D0BDD0B020D0B5D0B520D188D0B8D0BFD18B2E20D09ED187D0B5D0BDD18C20D0BAD180D0B0D181D0B8D0B2D0B0D18F20D180D18BD0B1D0B02DD0BED0B4D0B8D0BDD0BED187D0BAD0B020D0B820D0B6D0B5D0BBD0B0D0BDD0BDD18BD0B920D182D180D0BED184D0B5D0B920D0B4D0BBD18F20D0BBD18ED0B1D0BED0B3D0BE20D187D0B5D181D182D0BED0BBD18ED0B1D0B8D0B2D0BED0B3D0BE20D180D18BD0B1D0B0D0BAD0B02E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09ED181D0BED0B1D0BED0B520D181D0B2D0BED0B9D181D182D0B2D0BE3A207C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD097D0BED0BDD18B20D0BED0B1D0B8D182D0B0D0BDD0B8D18F3A7C520D0A2D20D09BD0B5D181D0B020D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B80D0A2D20D0A5D0B0D180D0B0D0BDD0B4D0B0D1800D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09AD0BED181D18FD0BAD0B820D180D18BD0B13A7C720D0A2D20D091D183D180D0BBD18FD189D0B8D0B920D180D0B0D181D186D0B2D0B5D1820D0A2D20D0A1D182D0B0D18F20D0A1D0BED0BBD0BDD0B5D187D0BDD0BED0B3D0BE20D09AD0BED0BBD0BED0B4D186D0B00D0A2D20D0A6D0B2D0B5D182D0BED181D182D0B0D18F0D0A2D20D0A6D0B2D0B5D182D183D189D0B8D0B920D0BFD0BED182D0BED0BA0000, 67186), +(3776013982, 444803, 'ruRU', 0x00D0A1D0BFD0BED0BAD0BED0B9D0BDD0BED0B520D181D183D189D0B5D181D182D0B2D0BE2C20D0BFD180D0BED0B2D0BED0B4D18FD189D0B5D0B520D0B1D0BED0BBD18CD188D183D18E20D187D0B0D181D182D18C20D0B2D180D0B5D0BCD0B5D0BDD0B820D0B220D181D0BFD18FD187D0BAD0B52E20D09AD0BED0B3D0B4D0B020D0BED0BDD0BE20D0BFD180D0BED0B1D183D0B6D0B4D0B0D0B5D182D181D18F2C20D0B5D0B3D0BE20D187D0B5D188D183D18F20D0BDD0B0D187D0B8D0BDD0B0D0B5D18220D0BCD0B5D180D186D0B0D182D18C2C20D0BDD0B5D181D0BCD0BED182D180D18F20D0BDD0B020D0BFD0BED187D182D0B820D0BFD0BED0BBD0BDD0BED0B520D0BED182D181D183D182D181D182D0B2D0B8D0B520D181D0B2D0B5D182D0B020D0B220D181D180D0B5D0B4D0B520D0BED0B1D0B8D182D0B0D0BDD0B8D18F2E20D0ADD182D0BE20D0B2D0B5D0BBD0B8D187D0B5D181D182D0B2D0B5D0BDD0BDD0BED0B520D181D0BED0B7D0B4D0B0D0BDD0B8D0B520D181D182D0B0D0BDD0B5D18220D0B4D0BED181D182D0BED0B9D0BDD18BD0BC20D0BFD0BED0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5D0BC20D0BAD0BED0BBD0BBD0B5D0BAD186D0B8D0B820D0BBD18ED0B1D0BED0B3D0BE20D183D0B2D0B0D0B6D0B0D18ED189D0B5D0B3D0BE20D181D0B5D0B1D18F20D180D18BD0B1D0B0D0BAD0B02E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD09ED181D0BED0B1D0BED0B520D181D0B2D0BED0B9D181D182D0B2D0BE3A7C720D0A0D0A24407370656C6C69636F6E34343531323720D0A1D0B2D0B5D0B6D0B5D0B520D184D0B8D0BBD0B50D0A0D0AD0A120D0BFD0BED0BCD0BED189D18CD18E20D0BDD0B0D0B2D18BD0BAD0B020D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B820D0BCD0BED0B6D0BDD0BE20D180D0B0D0B7D0B4D0B5D0BBD0B0D182D18C20D18DD182D18320D180D18BD0B1D18320D0B820D0B8D0B7D0B3D0BED182D0BED0B2D0B8D182D18C20D0B1D0BED0BBD18CD188D0BED0B520D0BAD0BED0BBD0B8D187D0B5D181D182D0B2D0BE20D0BFD0BED180D186D0B8D0B920D181D0B2D0B5D0B6D0B5D0B3D0BE20D184D0B8D0BBD0B52E0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AD097D0BED0BDD18B20D0BED0B1D0B8D182D0B0D0BDD0B8D18F3A7C520D0A0D0A2D20D090D0B72DD09AD0B0D185D0B5D1820D0A2D20D09A27D0B0D180D0B5D188D181D0BAD0B8D0B92022D09ED0B0D0B7D0B8D181220000, 67186), +(3205218938, 56772, 'ruRU', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453400D09FD180D0BED0B2D0B5D0B4D0B5D0BC20D181D0BBD0B0D0B1D18BD18520D0B8D0B3D180D0BED0BAD0BED0B20001000000, 67186), +(3205218938, 56771, 'ruRU', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300D0A1D0B5D180D18CD0B5D0B7D0BDD18BD0B90001000000, 67186), +(3205218938, 56770, 'ruRU', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453200D09DD0B5D0BFD180D0B8D0BDD183D0B6D0B4D0B5D0BDD0BDD18BD0B90001000000, 67186), +(3205218938, 22337, 'ruRU', 0x534C4153485F5441524745545F4D41524B455231002FD0BCD1860001000000, 67186), +(3776013982, 1250759, 'ruRU', 0x000000, 67186), +(1010104591, 26054, 'ruRU', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'ruRU', 0xD09BD0BED0B0D0BCD0BCD181D0BAD0B0D18F20D0B0D180D0BAD0B000000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'ruRU', 0xD098D0B7D18BD181D0BAD0B0D0BDD0BDD18BD0B920D181D0B2D0B5D182D0B8D0BBD18CD0BDD0B8D0BA20D181D0B8D0BD27D0B4D0BED180D0B0D0B900000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'ruRU', 0xD09FD0BED0B4D0B2D0B5D181D0BDD0B0D18F20D0BBD0B0D0BCD0BFD0B020D0BCD0B5D185D0B0D0BDD0B8D0BAD0B020D09DD0B8D0B6D0BDD0B5D0B920D0A8D0B0D185D182D18B00000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'ruRU', 0xD094D0B0D0BBD0B0D180D0B0D0BDD181D0BAD0B0D18F20D0BAD0B0D184D0B0D0B2D0B0D180D0BAD0B0000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'ruRU', 0xD096D0B0D180D0BED0B2D0BDD18F20D0BED0BFD183D181D182D0BED188D0B8D182D0B5D0BBD18F000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'ruRU', 0xD096D0B5D0BBD0B5D0B7D0BDD18BD0B920D184D0BED0BDD0B0D180D18C20D18120D0BAD180D18BD188D0BAD0BED0B900000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'ruRU', 0xD094D18BD0BCD18FD189D0B8D0B920D181D0B2D0B5D182D0B8D0BBD18CD0BDD0B8D0BA20D091D180D0B0D0B4D0B5D0BDD181D0B1D180D183D0BAD0B000000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'ruRU', 0xD09ED187D0B5D0BDD18C20D0BDD0B0D0B4D0B5D0B6D0BDD18BD0B920D184D0BED0BDD0B0D180D0BDD18BD0B920D181D182D0BED0BBD0B120D09DD0B8D0B6D0BDD0B5D0B920D0A8D0B0D185D182D18B00000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'ruRU', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'ruRU', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'ruRU', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'ruRU', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'ruRU', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'ruRU', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'ruRU', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'ruRU', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'ruRU', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'ruRU', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'ruRU', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'ruRU', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'ruRU', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'ruRU', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'ruRU', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'ruRU', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'ruRU', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'ruRU', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'ruRU', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'ruRU', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'ruRU', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'ruRU', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'ruRU', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'ruRU', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'ruRU', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'ruRU', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'ruRU', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'ruRU', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'ruRU', 0x00D094D0B5D186D0B8D0BC20D182D180D0B0D0BDD181D0BCD183D182D0B8D180D183D0B5D18220D0BED181D0BAD0BED0BBD0BAD0B820D0B220D181D182D0B8D185D0B8D0B9D0BDD18BD0B920D181D0B5D180D0B4D0B5D187D0BDD0B8D0BA20D091D0B5D0B7D0B4D0BDD18B2C20D0BAD0BED182D0BED180D18BD0B920D0BCD0BED0B6D0BDD0BE20D0B2D0BFD0BBD0B5D181D182D0B820D0B220D0BDD0BED0B2D0BED0B520D0B3D0BED180D0BDD0B8D0BBD0BE20D091D0B5D0B7D0B4D0BDD18B2E20D0A7D182D0BED0B1D18B20D181D0BED0B7D0B4D0B0D182D18C20D0B3D0BED180D0BDD0B8D0BBD0BE20D091D0B5D0B7D0B4D0BDD18B2C20D182D180D0B5D0B1D183D0B5D182D181D18F2024733120246CD182D0B0D0BAD0BED0B920D181D0B5D180D0B4D0B5D187D0BDD0B8D0BA3AD182D0B0D0BAD0B8D18520D181D0B5D180D0B4D0B5D187D0BDD0B8D0BAD0B03AD182D0B0D0BAD0B8D18520D181D0B5D180D0B4D0B5D187D0BDD0B8D0BAD0BED0B23B2E0D0A0D0AD0A2D0B5D0BAD183D189D0B8D0B920D0B2D0B7D0BDD0BED1813A20244063757272656E6379333430390000, 67186), +(261693969, 94625, 'ruRU', 0xFFFFFFFFFFFFFFFFD0A1D182D0B8D185D0B8D0B9D0BDD18BD0B920D181D0B5D180D0B4D0B5D187D0BDD0B8D0BA20D091D0B5D0B7D0B4D0BDD18B0000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'ruRU', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'ruRU', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'ruRU', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'ruRU', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'ruRU', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'ruRU', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'ruRU', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'ruRU', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'ruRU', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'ruRU', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'ruRU', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'ruRU', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'ruRU', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'ruRU', 0x000000, 67186), +(3653642729, 376, 'ruRU', 0x000000008D000000, 67186), +(1673391669, 141, 'ruRU', 0x8A000000, 67186), +(2791084701, 138, 'ruRU', 0x35D30600, 67186), +(2518885667, 13760, 'ruRU', 0xC035000000000000, 67186), +(3776013982, 1296205, 'ruRU', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'ruRU', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'ruRU', 0xFFFFFFFFFFFFFFFFD09DD0B0D182D0B8D181D0BAD0B820D091D0B5D0B7D0B4D0BDD18B3A20D097D183D0BB27D090D0BCD0B0D0BD00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'ruRU', 0xFFFFFFFFFFFFFFFFD09DD0B0D182D0B8D181D0BAD0B820D091D0B5D0B7D0B4D0BDD18B3A20D0BBD0B5D181D0B020D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B800003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(476847390, 192, 'ruRU', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'ruRU', 0x000000, 67186), +(3776013982, 1296168, 'ruRU', 0x000000, 67186), +(600565378, 665333, 'ruRU', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'ruRU', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'ruRU', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'ruRU', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'ruRU', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'ruRU', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'ruRU', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'ruRU', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'ruRU', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'ruRU', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'ruRU', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'ruRU', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'ruRU', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'ruRU', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'ruRU', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'ruRU', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'ruRU', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'ruRU', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'ruRU', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'ruRU', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'ruRU', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'ruRU', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'ruRU', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'ruRU', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'ruRU', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'ruRU', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'ruRU', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'ruRU', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'ruRU', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'ruRU', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'ruRU', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'ruRU', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'ruRU', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'ruRU', 0x898200006D670300, 67186), +(3745449290, 8614, 'ruRU', 0xD09CD0B5D181D182D0BE20D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B23A20D0A0D0B0D0B7D180D183D188D0B5D0BDD0BDD18BD0B920D182D180D0BED0BD00D0A0D18FD0B4D0BED0BC20D0BFD180D0BED185D0BED0B4D0B8D18220D0BED0BFD0B0D181D0BDD18BD0B920D180D0B8D182D183D0B0D0BB2E00A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'ruRU', 0x000000, 67186), +(2575642838, 765, 'ruRU', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'ruRU', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'ruRU', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'ruRU', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'ruRU', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'ruRU', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'ruRU', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'ruRU', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'ruRU', 0x5615130000070000FF000000, 67186), +(378810315, 810, 'ruRU', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'ruRU', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'ruRU', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'ruRU', 0xD0A3D0B2D0B8D182D0BED0B520D0BAD0BED180D0BDD18FD0BCD0B820D0BED0BAD0BDD0BE000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'ruRU', 0xD09AD0B0D180D182D0B8D0BDD0B02022D0A4D0BED0BDD0B0D180D18C20D092D0B5D187D0BDD0BED0B920D09FD0B5D181D0BDD0B822000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'ruRU', 0xD0A3D0B2D0B8D182D0B0D18F20D0BAD0BED180D0BDD18FD0BCD0B820D0B4D0B2D0B5D180D18C000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'ruRU', 0xD093D180D0B8D0B1D0BDD0B0D18F20D0B1D0B5D181D0B5D0B4D0BAD0B00000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'ruRU', 0xD094D0B5D0BBD0B8D0BAD0B0D182D0B5D181D0BDD18BD0B920D18FD0B3D0BED0B4D0BDD18BD0B920D0BFD0B8D180D0BED0B300000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'ruRU', 0xD093D180D183D0B1D18BD0B920D185D0B0D180D0B0D0BDD0B4D0B0D180D181D0BAD0B8D0B920D0B3D0BED180D188D0BED0BA000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'ruRU', 0xD092D0B5D0BBD0B8D0BAD0B8D0B920D18DD184D0B8D180D0BDD18BD0B920D0BAD180D0B8D181D182D0B0D0BBD0BB00000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'ruRU', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'ruRU', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'ruRU', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'ruRU', 0x467B0000, 67186), +(4033975491, 620660, 'ruRU', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'ruRU', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'ruRU', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'ruRU', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'ruRU', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'ruRU', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'ruRU', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'ruRU', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'ruRU', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'ruRU', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'ruRU', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'ruRU', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'ruRU', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'ruRU', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'ruRU', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'ruRU', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'ruRU', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'ruRU', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'ruRU', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'ruRU', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'ruRU', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'ruRU', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'ruRU', 0x000000, 67186), +(3776013982, 1295957, 'ruRU', 0x000000, 67186), +(3776013982, 1295932, 'ruRU', 0x000000, 67186), +(3776013982, 1295927, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D0B2D18B20D0B8D181D0BFD0BED0BBD0BDD18FD0B5D182D0B520D180D0BED0BBD18C20D182D0B0D0BDD0BAD0B02C20D09BD0B8D0BDD0B4D0BED180D0BCD0B820D0BFD0BED0B4D181D0B2D0B5D187D0B8D0B2D0B0D0B5D18220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B220D0B220D0BFD0BED0B4D0B7D0B5D0BCD0B5D0BBD18CD18FD1852C20D0BED182D0BAD180D18BD182D18BD18520D18120D0BFD0BED0BCD0BED189D18CD18E20D18DD0BFD0BED185D0B0D0BBD18CD0BDD0BED0B3D0BE20D0BAD0BBD18ED187D0B02E0D0A0D0AD09FD0BED0B3D0BED0B2D0BED180D0B8D182D0B520D18120D09BD0B8D0BDD0B4D0BED180D0BCD0B82C20D187D182D0BED0B1D18B20D0BED182D0BAD0BBD18ED187D0B8D182D18C20D18DD182D0BED18220D18DD184D184D0B5D0BAD1822E00D09AD0BED0B3D0B4D0B020D0B2D18B20D0B8D181D0BFD0BED0BBD0BDD18FD0B5D182D0B520D180D0BED0BBD18C20D182D0B0D0BDD0BAD0B02C20D09BD0B8D0BDD0B4D0BED180D0BCD0B820D0BFD0BED0B4D181D0B2D0B5D187D0B8D0B2D0B0D0B5D18220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B220D0B220D0BFD0BED0B4D0B7D0B5D0BCD0B5D0BBD18CD18FD1852C20D0BED182D0BAD180D18BD182D18BD18520D18120D0BFD0BED0BCD0BED189D18CD18E20D18DD0BFD0BED185D0B0D0BBD18CD0BDD0BED0B3D0BE20D0BAD0BBD18ED187D0B02E0D0A0D0AD09FD0BED0B3D0BED0B2D0BED180D0B8D182D0B520D18120D09BD0B8D0BDD0B4D0BED180D0BCD0B82C20D187D182D0BED0B1D18B20D0BED182D0BAD0BBD18ED187D0B8D182D18C20D18DD182D0BED18220D18DD184D184D0B5D0BAD1822E00, 67186), +(3776013982, 1265971, 'ruRU', 0x00D0A1D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B82C20D0BAD0BED182D0BED180D18BD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD18ED18220D0B2D181D0B0D0B4D0BDD0B8D0BAD0B82C20D0BDD0B0D0BDD0BED181D18FD18220D0BDD0B0202473312520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B02E243F63335B0D0A0D0AD092D183D180D0B4D0B0D0BBD0B0D0BA20D0B820D181D0BAD0B5D0BBD0B5D1822DD0BBD183D187D0BDD0B8D0BA20D0BDD0B0D0BDD0BED181D18FD18220D0BDD0B0202473332520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B02C20D0B020D0BCD0B5D0BBD0BAD0B8D0B520D0B2D183D180D0B4D0B0D0BBD0B0D0BAD0B820E2809320D0BDD0B0202473352520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B05D5B5D2E0000, 67186), +(336222293, 22784, 'ruRU', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'ruRU', 0x00D09AD0B0D0B6D0B4D18BD0B9202473312DD0B92022D0A3D0B4D0B0D18020D0BFD0B0D0BBD0B0D187D0B02220D0B4D0B0D0B5D18220D0B2D0B0D0BC20D18DD184D184D0B5D0BAD1822022D092D0BDD0B5D0B7D0B0D0BFD0BDD0B0D18F20D181D0BCD0B5D180D182D18C222E0D0A0D0A22D092D0BDD0B5D0B7D0B0D0BFD0BDD0B0D18F20D181D0BCD0B5D180D182D18C2220D183D181D0BAD0BED180D18FD0B5D18220D181D0BBD0B5D0B4D183D18ED189D0B8D0B92022D092D0B8D185D180D18C20D0BAD0BBD0B8D0BDD0BAD0BED0B2222C20D0BFD0BED0B7D0B2D0BED0BBD18FD18F20D0B5D0BCD18320D0BDD0B0D0BDD0B5D181D182D0B8203120D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D0B4D0B0D18020D0B7D0B020D182D0BE20D0B6D0B520D0B2D180D0B5D0BCD18F2E20D0ADD184D184D0B5D0BAD18220D181D183D0BCD0BCD0B8D180D183D0B5D182D181D18F20D0B4D0BE20243434353630367520D180D0B0D0B72E0D0A0D0A22D092D0BDD0B5D0B7D0B0D0BFD0BDD0B0D18F20D181D0BCD0B5D180D182D18C2220D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E202473322520D0B2D18BD0B7D18BD0B2D0B0D0B5D18220D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0BDD0B8D0B520D18DD184D184D0B5D0BAD182D0B02022D09FD0BED0B6D0B8D0BDD0B0D18F20D0B1D183D180D18E2220D18120D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD0BED181D182D18CD18E20247333252E0000, 67186), +(378810315, 666, 'ruRU', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'ruRU', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'ruRU', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'ruRU', 0x000000, 67186), +(1181150530, 752881, 'ruRU', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'ruRU', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'ruRU', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'ruRU', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'ruRU', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'ruRU', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'ruRU', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'ruRU', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'ruRU', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'ruRU', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'ruRU', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'ruRU', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'ruRU', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'ruRU', 0xE1570500E0570500, 67186), +(736158310, 43619, 'ruRU', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'ruRU', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'ruRU', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'ruRU', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'ruRU', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'ruRU', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'ruRU', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'ruRU', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'ruRU', 0x00D09FD0BED0BAD0B020D0B4D0B5D0B9D181D182D0B2D183D0B5D18220243F63315B22D09FD180D0B8D0B7D18BD0B220D09DD18ED186D0B7D0B0D0BE2C20D0A7D0B5D180D0BDD0BED0B3D0BE20D091D18BD0BAD0B0225D5B22D097D0B5D0BDD0B8D182225D2C20243F63315B22D09FD0BBD0B0D0BCD0B5D0BDD0BDD0BED0B520D0B4D18BD185D0B0D0BDD0B8D0B52220D0B0D0BAD182D0B8D0B2D0B8D180D183D0B5D1825D5B22D0A3D0B4D0B0D18020D0B2D0BED181D185D0BED0B4D18FD189D0B5D0B3D0BE20D181D0BED0BBD0BDD186D0B02220D0B82022D0A2D0B0D0BDD186D183D18ED189D0B8D0B920D0B6D183D180D0B0D0B2D0BBD18C2220D0B0D0BAD182D0B8D0B2D0B8D180D183D18ED1825D2024733120246C22D0A1D182D180D0B5D0BCD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D0B4D0B0D180223A22D0A1D182D180D0B5D0BCD0B8D182D0B5D0BBD18CD0BDD18BD18520D183D0B4D0B0D180D0B0223A22D0A1D182D180D0B5D0BCD0B8D182D0B5D0BBD18CD0BDD18BD18520D183D0B4D0B0D180D0BED0B2223B2E0000, 67186), +(3776013982, 1244331, 'ruRU', 0x00D09FD0BED181D0BBD0B5D0B4D0BDD0B8D0B920D180D0B0D181D186D0B2D0B5D1822022D096D0B8D0B7D0BDD0B5D186D0B2D0B5D182D0B02220D182D0B0D0BAD0B6D0B520D0B8D181D186D0B5D0BBD18FD0B5D18220D0B4D0BE2024733320D181D0BED18ED0B7D0BDD0B8D0BAD0BED0B220D0B220D180D0B0D0B4D0B8D183D181D0B5202431323434333431613120D0BC20D18120D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD0BED181D182D18CD18E20247332252E0000, 67186), +(3776013982, 441845, 'ruRU', 0x00243F63325BD0A1D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B82022D09FD0BED0BBD0BED181D0BDD183D182D18C222C2022D0A0D0B0D0B7D0BCD0B0D1852220D0B82022D093D0BBD183D0B1D0BED0BAD0B0D18F20D180D0B0D0BDD0B02220D0BDD0B0D0BDD0BED181D18FD18220D0BDD0B0202473312520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B02C20D0B020D0B8D18520D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18C20D0BAD180D0B8D182D0B8D187D0B5D181D0BAD0BED0B3D0BE20D183D0B4D0B0D180D0B020D0BFD0BED0B2D18BD188D0B0D0B5D182D181D18F20D0BDD0B020247333252E5D5B22D0A3D0B2D0B5D187D18CD0B52220D0BDD0B0D0BDD0BED181D0B8D18220D0BDD0B0202473342520D0B1D0BED0BBD18CD188D0B520D183D180D0BED0BDD0B02C20D0B020D0B5D0B3D0BE20D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18C20D0BAD180D0B8D182D0B8D187D0B5D181D0BAD0BED0B3D0BE20D183D0B4D0B0D180D0B020D0BFD0BED0B2D18BD188D0B0D0B5D182D181D18F20D0BDD0B020247335252E5D0D0A0D0A243F63335B22D0A3D0B2D0B5D187D18CD0B52220D0B2D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B2D0B0D0BC202434353837323473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F2E5D5B5D0000, 67186), +(3205218938, 57068, 'ruRU', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D0B2D181D0B520D0BFD180D0B5D0B4D0BCD0B5D182D18B202825732920D0B7D0B02025733F0003000000, 67186), +(3205218938, 23377, 'ruRU', 0x5343454E4152494F5F53544147455F53544154555300D0ADD182D0B0D0BF20256420D0B8D0B72025640001000000, 67186), +(3205218938, 22841, 'ruRU', 0x5343454E4152494F5F53544147450025642DD0B920D18DD182D0B0D0BF0001000000, 67186), +(3745449290, 8459, 'ruRU', 0xD09ED185D0BED182D0B000D090D181D182D0B0D0BBD0BED180D18320D09AD180D0BED0B2D0B0D0B2D0B0D18F20D09AD0BBD18FD182D0B2D0B020D0BDD183D0B6D0BDD0B020D0B2D0B0D188D0B020D0BFD0BED0BCD0BED189D18C2C20D187D182D0BED0B1D18B20D0BDD0B0D0B9D182D0B820D0B820D183D0BDD0B8D187D182D0BED0B6D0B8D182D18C20D181D0BCD0B5D180D182D0BED0BDD0BED181D0BDD18BD18520D0B2D180D0B0D0B3D0BED0B22E000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'ruRU', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'ruRU', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'ruRU', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'ruRU', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'ruRU', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'ruRU', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'ruRU', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'ruRU', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'ruRU', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'ruRU', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'ruRU', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'ruRU', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'ruRU', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'ruRU', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'ruRU', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'ruRU', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'ruRU', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'ruRU', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'ruRU', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'ruRU', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'ruRU', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'ruRU', 0xD097D0BCD0B5D0B920D09FD183D181D182D0BED182D18B00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'ruRU', 0x9201000022000000, 67186), +(3247720076, 39887, 'ruRU', 0x0700000000, 67186), +(3776013982, 243435, 'ruRU', 0x00D09FD180D0B5D0B2D180D0B0D189D0B0D0B5D18220D0B2D0B0D188D18320D0BAD0BED0B6D18320D0B220D0BAD0B0D0BCD0B5D0BDD18C2C20D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D18F20D182D0B5D0BAD183D189D0B8D0B920D0B820D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD18BD0B920D0B7D0B0D0BFD0B0D18120D0B7D0B4D0BED180D0BED0B2D18CD18F20D0BDD0B0202473312520D0B820D183D0BCD0B5D0BDD18CD188D0B0D18F20D0BFD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D0BDD0B0202473322520D0BDD0B02024642E00D09CD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD18BD0B920D0B7D0B0D0BFD0B0D18120D0B7D0B4D0BED180D0BED0B2D18CD18F20D183D0B2D0B5D0BBD0B8D187D0B5D0BD20D0BDD0B020247731252E0D0AD09FD0BED0BBD183D187D0B0D0B5D0BCD18BD0B920D183D180D0BED0BD20D183D0BCD0B5D0BDD18CD188D0B5D0BD20D0BDD0B020247732252E243F2477343E315B0D0AD09FD0BED0B3D0BBD0BED189D0B0D0B5D1822024773420D0B5D0B42E20D183D180D0BED0BDD0B02E5D5B5D00, 67186), +(3776013982, 221562, 'ruRU', 0x00D09FD0BED0B4D0BDD0B8D0BCD0B0D0B5D18220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B020D0B220D0B2D0BED0B7D0B4D183D18520D0B820D181D182D0B8D181D0BAD0B8D0B2D0B0D0B5D18220D0B5D0B3D0BE20D0B3D0BED180D0BBD0BE20D18120D0BFD0BED0BCD0BED189D18CD18E20D182D0B5D0BCD0BDD0BED0B920D18DD0BDD0B5D180D0B3D0B8D0B82C20D0BED0B3D0BBD183D188D0B0D18F20D0B5D0B3D0BE20D0BDD0B02024642E00D09ED0B3D0BBD183D188D0B5D0BDD0B8D0B52E00, 67186), +(3776013982, 205630, 'ruRU', 0x5076502DD182D0B0D0BBD0B0D0BDD18200D092D18B20D0B4D183D188D0B8D182D0B520D186D0B5D0BBD18C20D0B4D0B5D0BCD0BED0BDD0B8D187D0B5D181D0BAD0BED0B920D0BCD0B0D0B3D0B8D0B5D0B92C20D0BFD180D0B8D0BAD0BED0B2D18BD0B2D0B0D18F20D0B5D0B520D0BA20D0BCD0B5D181D182D1832C20D0BED0B3D0BBD183D188D0B0D18F20D0B820D0BDD0B0D0BDD0BED181D18F20246F3420D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B7D0B02024642E20D09CD0BED0B6D0BDD0BE20D0BFD0BED0B4D0B4D0B5D180D0B6D0B8D0B2D0B0D182D18C20D0BDD0B020D185D0BED0B4D1832E0D0A0D0AD09FD180D0B820D0BFD0BED0B2D182D0BED180D0BDD0BED0BC20D0B8D181D0BFD0BED0BBD18CD0B7D0BED0B2D0B0D0BDD0B8D0B82022D0A5D0B2D0B0D182D0BAD0B820D098D0BBD0BBD0B8D0B4D0B0D0BDD0B02220D0B2D18B20D0B1D180D0BED181D0B0D0B5D182D0B520D186D0B5D0BBD18C20D0B220D182D0BED187D0BAD18320D0B220D0BFD180D0B5D0B4D0B5D0BBD0B0D18520243230383137335220D0BC2E00D09ED0B3D0BBD183D188D0B5D0BDD0B8D0B52E24773420D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D180D0B0D0B720D0B220247420D181D0B5D0BA2E00, 67186), +(3776013982, 198158, 'ruRU', 0x5076502DD182D0B0D0BBD0B0D0BDD18200D092D18B20D0B820D0B2D0B0D188D0B820D181D0BED18ED0B7D0BDD0B8D0BAD0B820D0B220D180D0B0D0B4D0B8D183D181D0B52024413120D0BC20D0BCD0B3D0BDD0BED0B2D0B5D0BDD0BDD0BE20D181D182D0B0D0BDD0BED0B2D0B8D182D0B5D181D18C20D0BDD0B5D0B2D0B8D0B4D0B8D0BCD18BD0BCD0B820D0BDD0B02024642E20D09BD18ED0B1D0BED0B520D0B4D0B5D0B9D181D182D0B2D0B8D0B520D181D0BDD0B8D0BCD0B0D0B5D18220D18DD184D184D0B5D0BAD1822E00D09DD0B5D0B2D0B8D0B4D0B8D0BCD0BED181D182D18C2E20D09BD18ED0B1D0BED0B520D0B4D0B5D0B9D181D182D0B2D0B8D0B520D0BED182D0BCD0B5D0BDD0B8D18220D18DD182D0BED18220D18DD184D184D0B5D0BAD1822E00, 67186), +(3776013982, 108194, 'ruRU', 0x00D09FD0BED0B4D0BDD0B8D0BCD0B0D0B5D18220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B020D0B220D0B2D0BED0B7D0B4D183D18520D0B820D181D182D0B8D181D0BAD0B8D0B2D0B0D0B5D18220D0B5D0B3D0BE20D0B3D0BED180D0BBD0BE20D18120D0BFD0BED0BCD0BED189D18CD18E20D182D0B5D0BCD0BDD0BED0B920D18DD0BDD0B5D180D0B3D0B8D0B82C20D0BED0B3D0BBD183D188D0B0D18F20D0B5D0B3D0BE20D0BDD0B02024642E00D09ED0B3D0BBD183D188D0B5D0BDD0B8D0B52E00, 67186), +(378810315, 1004, 'ruRU', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'ruRU', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'ruRU', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'ruRU', 0x077A03000705000047000000, 67186), +(378810315, 999, 'ruRU', 0x530D00000509000049000000, 67186), +(378810315, 998, 'ruRU', 0x530D00000509000048000000, 67186), +(378810315, 997, 'ruRU', 0x530D00000509000047000000, 67186), +(378810315, 996, 'ruRU', 0x78B700000409000049000000, 67186), +(378810315, 995, 'ruRU', 0x78B700000409000048000000, 67186), +(378810315, 994, 'ruRU', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'ruRU', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'ruRU', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'ruRU', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'ruRU', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'ruRU', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'ruRU', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'ruRU', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'ruRU', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'ruRU', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'ruRU', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'ruRU', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'ruRU', 0x989B12000706000006010000, 67186), +(378810315, 980, 'ruRU', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'ruRU', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'ruRU', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'ruRU', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'ruRU', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'ruRU', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'ruRU', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'ruRU', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'ruRU', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'ruRU', 0x713507000505000000010000, 67186), +(378810315, 966, 'ruRU', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'ruRU', 0x550300000805000046000000, 67186), +(378810315, 964, 'ruRU', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'ruRU', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'ruRU', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'ruRU', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'ruRU', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'ruRU', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'ruRU', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'ruRU', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'ruRU', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'ruRU', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'ruRU', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'ruRU', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'ruRU', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'ruRU', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'ruRU', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'ruRU', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'ruRU', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'ruRU', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'ruRU', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'ruRU', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'ruRU', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'ruRU', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'ruRU', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'ruRU', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'ruRU', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'ruRU', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'ruRU', 0x991503000409000045020000, 67186), +(378810315, 933, 'ruRU', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'ruRU', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'ruRU', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'ruRU', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'ruRU', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'ruRU', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'ruRU', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'ruRU', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'ruRU', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'ruRU', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'ruRU', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'ruRU', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'ruRU', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'ruRU', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'ruRU', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'ruRU', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'ruRU', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'ruRU', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'ruRU', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'ruRU', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'ruRU', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'ruRU', 0x42E906000309000009010000, 67186), +(378810315, 902, 'ruRU', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'ruRU', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'ruRU', 0x761800000309000009010000, 67186), +(378810315, 899, 'ruRU', 0x76180000030900000A010000, 67186), +(378810315, 898, 'ruRU', 0x76180000030900000B010000, 67186), +(378810315, 885, 'ruRU', 0x78B700000409000047000000, 67186), +(378810315, 879, 'ruRU', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'ruRU', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'ruRU', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'ruRU', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'ruRU', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'ruRU', 0x980100000905000005010000, 67186), +(378810315, 858, 'ruRU', 0x980100000905000004010000, 67186), +(378810315, 855, 'ruRU', 0x980100000905000003010000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 843, 'ruRU', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'ruRU', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'ruRU', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'ruRU', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'ruRU', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'ruRU', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'ruRU', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'ruRU', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'ruRU', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'ruRU', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'ruRU', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'ruRU', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'ruRU', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'ruRU', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'ruRU', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'ruRU', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'ruRU', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'ruRU', 0x027F05000707000003010000, 67186), +(378810315, 720, 'ruRU', 0x36A401000707000048000000, 67186), +(378810315, 719, 'ruRU', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'ruRU', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'ruRU', 0x790200000905000046000000, 67186), +(378810315, 714, 'ruRU', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'ruRU', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'ruRU', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'ruRU', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'ruRU', 0x68F905000605000067000000, 67186), +(378810315, 691, 'ruRU', 0x68F905000605000066000000, 67186), +(378810315, 690, 'ruRU', 0x68F905000605000069000000, 67186), +(378810315, 682, 'ruRU', 0x15A905000705000041020000, 67186), +(378810315, 679, 'ruRU', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'ruRU', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'ruRU', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'ruRU', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'ruRU', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'ruRU', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'ruRU', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'ruRU', 0x16600500040800003F000000, 67186), +(378810315, 661, 'ruRU', 0x16600500040900003E000000, 67186), +(378810315, 658, 'ruRU', 0xE53805000209000040000000, 67186), +(378810315, 657, 'ruRU', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'ruRU', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'ruRU', 0x166005000409000040000000, 67186), +(378810315, 648, 'ruRU', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'ruRU', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'ruRU', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'ruRU', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'ruRU', 0x8C8D0500010B0000BB050000, 67186), +(378810315, 575, 'ruRU', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'ruRU', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'ruRU', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'ruRU', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'ruRU', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'ruRU', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'ruRU', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'ruRU', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'ruRU', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'ruRU', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'ruRU', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'ruRU', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'ruRU', 0x550300000805000041000000, 67186), +(378810315, 449, 'ruRU', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'ruRU', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'ruRU', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'ruRU', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'ruRU', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'ruRU', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'ruRU', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'ruRU', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'ruRU', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'ruRU', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'ruRU', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'ruRU', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'ruRU', 0x57A101000505000067000000, 67186), +(378810315, 408, 'ruRU', 0x638400000705000069000000, 67186), +(378810315, 407, 'ruRU', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'ruRU', 0xE40200000505000069000000, 67186), +(378810315, 402, 'ruRU', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'ruRU', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'ruRU', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'ruRU', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'ruRU', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'ruRU', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'ruRU', 0xE77701000605000046000000, 67186), +(378810315, 377, 'ruRU', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'ruRU', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'ruRU', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'ruRU', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'ruRU', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'ruRU', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'ruRU', 0x400700000409000004010000, 67186), +(378810315, 353, 'ruRU', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'ruRU', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'ruRU', 0xE60600000605000005010000, 67186), +(378810315, 349, 'ruRU', 0xE60600000605000004010000, 67186), +(378810315, 348, 'ruRU', 0xE60600000605000003010000, 67186), +(378810315, 346, 'ruRU', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'ruRU', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'ruRU', 0x301E03000509000006010000, 67186), +(378810315, 342, 'ruRU', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'ruRU', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'ruRU', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'ruRU', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'ruRU', 0x66D401000505000009010000, 67186), +(378810315, 332, 'ruRU', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'ruRU', 0x981900000605000048000000, 67186), +(378810315, 329, 'ruRU', 0x981900000605000049000000, 67186), +(378810315, 224, 'ruRU', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'ruRU', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'ruRU', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'ruRU', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'ruRU', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'ruRU', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'ruRU', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'ruRU', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'ruRU', 0x242303000409000041020000, 67186), +(378810315, 205, 'ruRU', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'ruRU', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'ruRU', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'ruRU', 0x242303000409000045020000, 67186), +(378810315, 189, 'ruRU', 0x743C03000805000045020000, 67186), +(378810315, 187, 'ruRU', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'ruRU', 0x36A401000707000049000000, 67186), +(378810315, 176, 'ruRU', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'ruRU', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'ruRU', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'ruRU', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'ruRU', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'ruRU', 0x36A401000707000047000000, 67186), +(378810315, 159, 'ruRU', 0x981900000605000047000000, 67186), +(378810315, 158, 'ruRU', 0x533301000405000066000000, 67186), +(378810315, 156, 'ruRU', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'ruRU', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'ruRU', 0xA09001000607000066000000, 67186), +(378810315, 152, 'ruRU', 0x82020000010B000046000000, 67186), +(378810315, 150, 'ruRU', 0x50350300050B000046000000, 67186), +(378810315, 149, 'ruRU', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'ruRU', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'ruRU', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'ruRU', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'ruRU', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'ruRU', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'ruRU', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'ruRU', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'ruRU', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'ruRU', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'ruRU', 0x62040000060500000B010000, 67186), +(378810315, 121, 'ruRU', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'ruRU', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'ruRU', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'ruRU', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'ruRU', 0x45990100010B000009010000, 67186), +(378810315, 113, 'ruRU', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'ruRU', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'ruRU', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'ruRU', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'ruRU', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'ruRU', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'ruRU', 0x491E03000907000007010000, 67186), +(378810315, 101, 'ruRU', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'ruRU', 0x301E03000509000008010000, 67186), +(378810315, 97, 'ruRU', 0x301E03000509000007010000, 67186), +(378810315, 96, 'ruRU', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'ruRU', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'ruRU', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'ruRU', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'ruRU', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'ruRU', 0x400700000409000005010000, 67186), +(378810315, 83, 'ruRU', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'ruRU', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'ruRU', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'ruRU', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'ruRU', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'ruRU', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'ruRU', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'ruRU', 0xB63500000707000004010000, 67186), +(378810315, 70, 'ruRU', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'ruRU', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'ruRU', 0x400700000409000003010000, 67186), +(378810315, 63, 'ruRU', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'ruRU', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'ruRU', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'ruRU', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'ruRU', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'ruRU', 0x82020000010B000042000000, 67186), +(378810315, 45, 'ruRU', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'ruRU', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'ruRU', 0x82020000010B000041000000, 67186), +(378810315, 39, 'ruRU', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'ruRU', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'ruRU', 0x790200000905000041000000, 67186), +(378810315, 35, 'ruRU', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'ruRU', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'ruRU', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'ruRU', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'ruRU', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'ruRU', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'ruRU', 0xD39603000805000040000000, 67186), +(378810315, 21, 'ruRU', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'ruRU', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'ruRU', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'ruRU', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'ruRU', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'ruRU', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'ruRU', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'ruRU', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'ruRU', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'ruRU', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'ruRU', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'ruRU', 0xD094D0BED0BCD0B0D0BDD0B0D0B0D180D181D0BAD0B8D0B920D180D0B8D182D183D0B0D0BBD0B8D181D18200000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393137393177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291859, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393137393177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291858, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393137393177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291857, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393137393177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291856, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393137393177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291855, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393137393177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291854, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393138333177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291853, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393138333177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291852, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393138333177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291851, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393138333177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291850, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393138333177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291849, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D18220D0B4D0BE202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820243132393138333177312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291848, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291847, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291846, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291845, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291844, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291843, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291842, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291841, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291840, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291839, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291838, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291837, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291831, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291828, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291827, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291826, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291825, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291824, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291822, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1291791, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1290929, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1290926, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1290925, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1289221, 'ruRU', 0x00D09ED182D0BAD180D18BD182D18C20D181D183D0BDD0B4D183D0BA20D0B820D183D0B7D0BDD0B0D182D18C2C20D187D182D0BE20D0B2D0BDD183D182D180D0B8210000, 67186), +(3776013982, 1286537, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B5D0B42E20D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1286536, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1286535, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1282100, 'ruRU', 0x000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1282018, 'ruRU', 0x00D09FD180D0B8D0B7D18BD0B2D0B0D0B5D18220D181D0BAD0B0D0BCD18CD18E2C20D0BDD0B020D0BAD0BED182D0BED180D183D18E20D0BCD0BED0B6D0BDD0BE20D181D0B5D181D182D18C2100D09ED182D0BCD0B5D0BDD0B8D182D0B520D0B0D183D180D1832C20D187D182D0BED0B1D18B20D183D0B1D180D0B0D182D18C20D181D0BAD0B0D0BCD18CD18E2E00, 67186), +(3776013982, 1277461, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269922, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269921, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269920, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B7D0B4D0BED180D0BED0B2D18CD18F20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269919, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269918, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202477312520D0B7D0B0D0BFD0B0D181D0B020D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269917, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B5D0B42E20D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1269916, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B5D0B42E20D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(3776013982, 1232065, 'ruRU', 0x00D092D0BED181D0BFD0BED0BBD0BDD18FD0B5D182202473312520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E20D094D0B5D0B9D181D182D0B2D0B8D0B520D0BFD180D0B5D180D18BD0B2D0B0D0B5D182D181D18F2C20D0B5D181D0BBD0B820D0B2D181D182D0B0D182D18C20D18120D0BCD0B5D181D182D0B02E00D092D0BED181D0BFD0BED0BBD0BDD0B5D0BDD0B8D0B5202473312520D0B5D0B42E20D0B7D0B4D0BED180D0BED0B2D18CD18F20D0B820D0BCD0B0D0BDD18B20D180D0B0D0B720D0B220D181D0B5D0BA2E00, 67186), +(2948698321, 8059, 'ruRU', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'ruRU', 0x000000, 67186), +(3898252553, 11633, 'ruRU', 0xE28200001E490300, 67186), +(3898252553, 11632, 'ruRU', 0xE18200001E490300, 67186), +(3898252553, 11631, 'ruRU', 0xE08200001E490300, 67186), +(3898252553, 11630, 'ruRU', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'ruRU', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'ruRU', 0x00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247333252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024733420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024733520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247733252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024773420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024773520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00, 67186), +(3776013982, 1262377, 'ruRU', 0x00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247333252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024733420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024733520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247733252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024773420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024773520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00, 67186), +(3776013982, 1262376, 'ruRU', 0x00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247333252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024733420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024733520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247733252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024773420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024773520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00, 67186), +(3776013982, 1262365, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282473352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202473332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282477352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202477332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282473352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202473332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A22D0A0D0B5D181D0BAD180D0B8D0BFD18220D181D0B2D18FD189D0B5D0BDD0BDD0BED0B920D181D0BCD0B5D180D182D0B82220D18120D0BED187D0B5D0BDD18C20D0BDD0B8D0B7D0BAD0BED0B920D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20D0BCD0BED0B6D0B5D18220D0BAD0B0D0B7D0BDD0B8D182D18C20D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0BDD0B520D18FD0B2D0BBD18FD18ED189D0B8D185D181D18F20D0B1D0BED181D181D0B0D0BCD0B82E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282477352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202477332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A22D0A0D0B5D181D0BAD180D0B8D0BFD18220D181D0B2D18FD189D0B5D0BDD0BDD0BED0B920D181D0BCD0B5D180D182D0B82220D18120D0BED187D0B5D0BDD18C20D0BDD0B8D0B7D0BAD0BED0B920D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20D0BCD0BED0B6D0B5D18220D0BAD0B0D0B7D0BDD0B8D182D18C20D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0BDD0B520D18FD0B2D0BBD18FD18ED189D0B8D185D181D18F20D0B1D0BED181D181D0B0D0BCD0B82E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282473352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202473332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A22D0A0D0B5D181D0BAD180D0B8D0BFD18220D181D0B2D18FD189D0B5D0BDD0BDD0BED0B920D181D0BCD0B5D180D182D0B82220D18120D0BED187D0B5D0BDD18C20D0BDD0B8D0B7D0BAD0BED0B920D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20D0BCD0BED0B6D0B5D18220D0BAD0B0D0B7D0BDD0B8D182D18C20D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0BDD0B520D18FD0B2D0BBD18FD18ED189D0B8D185D181D18F20D0B1D0BED181D181D0B0D0BCD0B82E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282477352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202477332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A22D0A0D0B5D181D0BAD180D0B8D0BFD18220D181D0B2D18FD189D0B5D0BDD0BDD0BED0B920D181D0BCD0B5D180D182D0B82220D18120D0BED187D0B5D0BDD18C20D0BDD0B8D0B7D0BAD0BED0B920D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20D0BCD0BED0B6D0B5D18220D0BAD0B0D0B7D0BDD0B8D182D18C20D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D0BDD0B520D18FD0B2D0BBD18FD18ED189D0B8D185D181D18F20D0B1D0BED181D181D0B0D0BCD0B82E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'ruRU', 0x00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247333252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024733420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B2D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024733520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00D09ED182D0BAD180D18BD0B2D0B0D18F20D0BFD0BED182D0B5D180D18FD0BDD0BDD183D18E20D0B2D0B5D189D0B8D186D1832C20D0B2D18B20D0BFD180D0B8D0B7D18BD0B2D0B0D0B5D182D0B520D0B4D183D18520D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B1D180D0B5D0BCD0B5D0BDD0B82C20D0BAD0BED182D0BED180D18BD0B920D0BFD0BED0BAD0BBD0BED0BDD18FD0B5D182D181D18F20D0B2D0B0D0BC20D0B2D0BE20D0B2D180D0B5D0BCD18F20D0B1D0BED18F20D0B820D0BFD0BED0B2D18BD188D0B0D0B5D18220D0BED181D0BDD0BED0B2D0BDD183D18E20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD1832028247072692920D0BDD0B020247733252E0D0A0D0AD09ED0B4D0BDD0BED0B2D180D0B5D0BCD0B5D0BDD0BDD0BE20D0BCD0BED0B6D0BDD0BE20D0BFD180D0B8D0B7D0B2D0B0D182D18C20D0B4D0BE2024773420D0B4D183D185D0BED0B220D0BFD0BED0B4D0B0D0B2D0BBD0B5D0BDD0BDD0BED0B3D0BE20D0B2D180D0B5D0BCD0B5D0BDD0B82E0D0AD09AD0BED0B3D0B4D0B020D18320D0B2D0B0D18120D0B5D181D182D18C2024773520246CD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18C3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD18F3AD0BFD0BED187D0B8D182D0B0D182D0B5D0BBD0B5D0B93B20D0B8D0BBD0B820D0B1D0BED0BBD18CD188D0B52C20D0BFD180D0B8D0B1D0B0D0B2D0BAD0B020D0BA20D0BED181D0BDD0BED0B2D0BDD0BED0B920D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B52028247072692920D0B7D0B020D0BAD0B0D0B6D0B4D0BED0B3D0BE20D0B4D183D185D0B020D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D182D181D18F2E00, 67186), +(3776013982, 1248927, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282473352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202473332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300D09AD0BED0B3D0B4D0B020D0B2D0B0D18820D181D0BFD183D182D0BDD0B8D0BA20D0B220D0B2D18BD0BBD0B0D0B7D0BAD0B520D0BFD180D0B8D0BCD0B5D0BDD18FD0B5D182202224407370656C6C6E616D6531323531363033222C20D183D187D0B0D181D182D0BDD0B8D0BAD0B820D0B3D180D183D0BFD0BFD18B20D0BFD0BED0BBD183D187D0B0D18ED18220D181D0B2D18FD189D0B5D0BDD0BDD18BD0B920D180D0B5D181D0BAD180D0B8D0BFD1822E20D098D18520D0BDD0B0D0BDD0BED181D18FD189D0B8D0B520D183D180D0BED0BD20D0B7D0B0D0BAD0BBD0B8D0BDD0B0D0BDD0B8D18F20D0B820D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D18120D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18CD18E20247B282477352F31303030292A3130307D2E312520D0BDD0B0D0BDD0BED181D18FD18220D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B920D183D180D0BED0BD20D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B220D0BED0B1D18AD0B5D0BCD0B5202477332520D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B3D0BE20D0B7D0B0D0BFD0B0D181D0B020D0B7D0B4D0BED180D0BED0B2D18CD18F20D186D0B5D0BBD0B820D0B7D0B020D0BAD0B0D0B6D0B4D18BD0B920D18DD184D184D0B5D0BAD1822E0D0A0D0AD09FD180D0BED182D0B8D0B220D0BAD0B0D0B6D0B4D0BED0B920D186D0B5D0BBD0B820D181D180D0B0D0B1D0B0D182D18BD0B2D0B0D0B5D18220D0BDD0B520D187D0B0D189D0B520D180D0B0D0B7D0B020D0B220243132363133323470726F63636F6F6C646F776E20D181D0B5D0BA2E0D0A0D0A24407370656C6C69636F6E313235313630332024407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'ruRU', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'ruRU', 0x00D0A0D0B0D181D181D0B5D0B8D0B2D0B0D0B5D18220D0B8D0BBD0BBD18ED0B7D0B8D0B820D0B220D0BED0B1D0BBD0B0D181D182D0B820D0BFD0B5D180D0B5D0B420D0B2D0B0D0BCD0B82C20D0BED0B1D0BDD0B0D180D183D0B6D0B8D0B2D0B0D18F20D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B22E0000, 67186), +(3776013982, 1256862, 'ruRU', 0x00D0A0D0B0D181D181D0B5D0B8D0B2D0B0D0B5D18220D0B8D0BBD0BBD18ED0B7D0B8D0B820D0B220D0BED0B1D0BBD0B0D181D182D0B82C20D0BED0B1D0BDD0B0D180D183D0B6D0B8D0B2D0B0D18F20D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B22E0000, 67186), +(3776013982, 1256861, 'ruRU', 0x00D0A1D0BED0B2D0B5D180D188D0B0D0B5D18220D0BFD180D18BD0B6D0BED0BA2C20D180D0B0D181D181D0B5D0B8D0B2D0B0D18F20D0B8D0BBD0BBD18ED0B7D0B8D0B820D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B220D0B220D0BED0B1D0BBD0B0D181D182D0B820D0B2D0BED0BAD180D183D0B320D0BCD0B5D181D182D0B020D0BFD180D0B8D0B7D0B5D0BCD0BBD0B5D0BDD0B8D18F2E0000, 67186), +(3776013982, 1256860, 'ruRU', 0x00D0A0D0B0D181D181D0B5D0B8D0B2D0B0D0B5D18220D0B8D0BBD0BBD18ED0B7D0B8D0B820D0BFD0B5D180D0B5D0B420D0B2D0B0D0BCD0B820D0B7D0B02024642E2C20D0BED0B1D0BDD0B0D180D183D0B6D0B8D0B2D0B0D18F20D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B22E0000, 67186), +(3776013982, 1256010, 'ruRU', 0x00D0A0D0B0D181D181D0B5D0B8D0B2D0B0D0B5D18220D0B8D0BBD0BBD18ED0B7D0B8D0B820D0B220D0BED0B1D0BBD0B0D181D182D0B82C20D0BED0B1D0BDD0B0D180D183D0B6D0B8D0B2D0B0D18F20D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B22E0000, 67186), +(1408785804, 249319, 'ruRU', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'ruRU', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'ruRU', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'ruRU', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'ruRU', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'ruRU', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'ruRU', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'ruRU', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'ruRU', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'ruRU', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'ruRU', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'ruRU', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'ruRU', 0x000000, 67186), +(3776013982, 1295497, 'ruRU', 0x000000, 67186), +(3776013982, 1295486, 'ruRU', 0x000000, 67186), +(3776013982, 464291, 'ruRU', 0x000000, 67186), +(3776013982, 1243616, 'ruRU', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243615, 'ruRU', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'ruRU', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'ruRU', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'ruRU', 0x00D094D0B5D0B3D0B5D0BDD182D180D0B8D0B920D0B2D18BD0BFD183D181D0BAD0B0D0B5D18220D180D0B0D0B7D180D18FD0B420D0BDD0B5D181D182D0B0D0B1D0B8D0BBD18CD0BDD0BED0B920D18DD0BDD0B5D180D0B3D0B8D0B820D091D0B5D0B7D0B4D0BDD18B2C20D0BAD0BED182D0BED180D18BD0B920D180D0B8D0BAD0BED188D0B5D182D0B8D1822024733220246CD180D0B0D0B73AD180D0B0D0B7D0B03AD180D0B0D0B73B2E20D09AD0B0D0B6D0B4D18BD0B920D180D0B0D0B72C20D0BAD0BED0B3D0B4D0B020D18DD0BDD0B5D180D0B3D0B8D18F20D0BAD0B0D181D0B0D0B5D182D181D18F20D0B7D0B5D0BCD0BBD0B82C20D0BFD180D0BED0B8D181D185D0BED0B4D0B8D18220D0B2D0B7D180D18BD0B22C20D0BDD0B0D0BDD0BED181D18FD189D0B8D0B9202431323135313537733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B820D0B8D0B3D180D0BED0BAD0B0D0BC20D0B220D180D0B0D0B4D0B8D183D181D0B5202431323135313537413120D0BC2E20D095D181D0BBD0B820D0B220D0BED0B1D0BBD0B0D181D182D0B820D0B4D0B5D0B9D181D182D0B2D0B8D18F20D0BDD0B5D18220D0B8D0B3D180D0BED0BAD0BED0B22C20D0BFD180D0BED0B8D181D185D0BED0B4D0B8D182202224407370656C6C6E616D6531323135313631222E0D0A0D0AD09FD0BED181D0BBD0B520D0B2D181D0B5D1852024733220D183D0B4D0B0D180D0BED0B220D180D0B0D0B7D180D18FD0B420D180D0B8D0BAD0BED188D0B5D182D0B8D18220D0B5D189D0B520D180D0B0D0B72C20D0B820D0BED0B1D180D0B0D0B7D183D0B5D182D181D18F202224407370656C6C6E616D6531323135393337222E0000, 67186), +(3776013982, 1243588, 'ruRU', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'ruRU', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'ruRU', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'ruRU', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'ruRU', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'ruRU', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'ruRU', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0B2D0BED0B4D0BED0BBD0B0D0B720D0A2D18327D0BDD0B0D0BAD0B8D1827C6E7C634646464644323030D097D0BED0BDD0B03A207C72D097D183D0BB27D090D0BCD0B0D0BD7C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0B2D0BED0B4D0BED0BBD0B0D0B720D0A2D18327D0BDD0B0D0BAD0B8D1827C6E7C634646464644323030D097D0BED0BDD0B03A207C72D097D183D0BB27D090D0BCD0B0D0BD7C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0B2D0BED0B4D0BED0BBD0B0D0B720D0A2D18327D0BDD0B0D0BAD0B8D1827C6E7C634646464644323030D097D0BED0BDD0B03A207C72D097D183D0BB27D090D0BCD0B0D0BD7C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0B2D0BED0B4D0BED0BBD0B0D0B720D0A2D18327D0BDD0B0D0BAD0B8D1827C6E7C634646464644323030D097D0BED0BDD0B03A207C72D097D183D0BB27D090D0BCD0B0D0BD7C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0B2D0BED0B4D0BED0BBD0B0D0B720D0A2D18327D0BDD0B0D0BAD0B8D1827C6E7C634646464644323030D097D0BED0BDD0B03A207C72D097D183D0BB27D090D0BCD0B0D0BD7C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0B2D0BED0B4D0BED0BBD0B0D0B720D0A2D18327D0BDD0B0D0BAD0B8D1827C6E7C634646464644323030D097D0BED0BDD0B03A207C72D097D183D0BB27D090D0BCD0B0D0BD7C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'ruRU', 0x00D09ED0B1D180D183D188D0B8D0B2D0B0D0B5D18220D0BDD0B020D186D0B5D0BBD18C20D182D0BED187D0BDD18BD0B920D0B4D0B2D0BED0B9D0BDD0BED0B920D183D0B4D0B0D1802E20D09AD0B0D0B6D0B4D18BD0B920D0B2D0B7D0BCD0B0D18520D0BDD0B0D0BDD0BED181D0B8D18220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B0D0BC20D0B220D0BED0B1D0BBD0B0D181D182D0B820D0B4D0B5D0B9D181D182D0B2D0B8D18F202431323537373336733120D0B5D0B42E20D184D0B8D0B7D0B8D187D0B5D181D0BAD0BED0B3D0BE20D183D180D0BED0BDD0B020D181D180D0B0D0B7D18320D0B820D0B5D189D0B5202431323537373435733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D181D0B2D0B5D182D0BBD0BED0B920D0BCD0B0D0B3D0B8D0B820D180D0B0D0B720D0B2202431323537373435743120D181D0B5D0BA2E20D0B220D182D0B5D187D0B5D0BDD0B8D0B5202431323537373435642E20D09AD180D0BED0BCD0B520D182D0BED0B3D0BE2C20D0B2D18BD180D0B5D0B7D0B0D0B5D18220D0BDD0B020D0B7D0B5D0BCD0BBD0B5202224407370656C6C6E616D6531323535333130222E0000, 67186), +(4033975491, 619581, 'ruRU', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'ruRU', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'ruRU', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'ruRU', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'ruRU', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'ruRU', 0xD09AD180D0B0D181D0BDD18BD0B900243F63315BD0A3D180D0BED0BD20D0BED1822022D094D0B5D0B7D0B8D0BDD182D0B5D0B3D180D0B0D186D0B8D0B82220D0BFD0BED0B3D0BBD0BED189D0B0D0B5D18220247B2473322F313030307D2E3120D181D0B5D0BA2E2022D09ED0B3D0BDD0B5D0BDD0BDD0BED0B3D0BE20D0B4D18BD185D0B0D0BDD0B8D18F2220D0BDD0B020D0BFD0BED180D0B0D0B6D0B5D0BDD0BDD18BD18520D186D0B5D0BBD18FD1852C20D0BDD0B0D0BDD0BED181D18F202473342520D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0BDD0BED0B3D0BE20D183D180D0BED0BDD0B02E0D0A0D0AD0A3D180D0BED0BD20D0BED1822022D09FD0BED0B3D180D0B5D0B1D0B0D0BBD18CD0BDD0BED0B3D0BE20D0BAD0BED181D182D180D0B02220D0BFD0BED0B3D0BBD0BED189D0B0D0B5D18220247B2473332F313030307D20D181D0B5D0BA2E2022D09ED0B3D0BDD0B5D0BDD0BDD0BED0B3D0BE20D0B4D18BD185D0B0D0BDD0B8D18F2220D0BDD0B020D0BFD0BED180D0B0D0B6D0B5D0BDD0BDD18BD18520D186D0B5D0BBD18FD1852C20D0BDD0B0D0BDD0BED181D18F202473372520D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0BDD0BED0B3D0BE20D183D180D0BED0BDD0B02E5D5BD098D181D186D0B5D0BBD0B5D0BDD0B8D0B520D0BED1822022D096D0B8D0B2D0B8D182D0B5D0BBD18CD0BDD18BD18520D0BED0B1D18AD18FD182D0B8D0B92220D0BFD0BED0B3D0BBD0BED189D0B0D0B5D18220247B2473352F313030307D20D181D0B5D0BA2E2022D098D0B7D183D0BCD180D183D0B4D0BDD0BED0B3D0BE20D0B4D18BD185D0B0D0BDD0B8D18F2220D0BDD0B020D181D0BED18ED0B7D0BDD0B8D0BAD0B0D1852C20D0B2D0BED181D0BFD0BED0BBD0BDD18FD18F20D0B8D0BC20D0B7D0B4D0BED180D0BED0B2D18CD0B520D0B220D0BED0B1D18AD0B5D0BCD0B5202473362520D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0BDD0BED0B3D0BE20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F2E0D0A0D0AD098D181D186D0B5D0BBD0B5D0BDD0B8D0B520D0BED1822022D098D0B7D183D0BCD180D183D0B4D0BDD0BED0B3D0BE20D186D0B2D0B5D182D0BAD0B02220D0BFD0BED0B3D0BBD0BED189D0B0D0B5D18220247B2473312F313030307D20D181D0B5D0BA2E2022D098D0B7D183D0BCD180D183D0B4D0BDD0BED0B3D0BE20D0B4D18BD185D0B0D0BDD0B8D18F2220D0BDD0B020D181D0BED18ED0B7D0BDD0B8D0BAD0B0D1852C20D0B2D0BED181D0BFD0BED0BBD0BDD18FD18F20D0B8D0BC20D0B7D0B4D0BED180D0BED0B2D18CD0B520D0B220D0BED0B1D18AD0B5D0BCD0B5202473362520D0BFD0BED0B3D0BBD0BED189D0B5D0BDD0BDD0BED0B3D0BE20D0B8D181D186D0B5D0BBD0B5D0BDD0B8D18F2E5D0000, 67186), +(4033975491, 619554, 'ruRU', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'ruRU', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'ruRU', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'ruRU', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'ruRU', 0x000000, 67186), +(2151089334, 7976, 'ruRU', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'ruRU', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'ruRU', 0xD0A7D183D0B4D0BED0B2D0B8D189D0BDD18BD0B920D0B4D0B5D0BCD0BED0BD20D091D0B5D0B7D0B4D0BDD18B00000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'ruRU', 0x00D09AD0BED0B3D0B4D0B020D18DD184D184D0B5D0BAD182D18B202224407370656C6C6E616D65313234393630392220D0B0D0BAD182D0B8D0B2D0B8D180D183D18ED182D181D18F20D0B220D0BDD0B5D0BFD180D0B0D0B2D0B8D0BBD18CD0BDD0BED0BC20D0BFD0BED180D18FD0B4D0BAD0B52C20D180D0B0D0B7D0B4D0B0D0B5D182D181D18F20D0BDD0B5D181D182D180D0BED0B9D0BDD18BD0B920D0B3D183D0BB2C20D0BFD0BED180D0B0D0B6D0B0D18ED189D0B8D0B920D186D0B5D0BBD18C20D0BDD0B5D0BCD0BED182D0BED0B920D0BDD0B02024642E2000D09DD0B5D0BCD0BED182D0B02E00, 67186), +(3247720076, 42321, 'ruRU', 0x0000000000, 67186), +(4033975491, 619506, 'ruRU', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'ruRU', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'ruRU', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'ruRU', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'ruRU', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'ruRU', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'ruRU', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'ruRU', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'ruRU', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'ruRU', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'ruRU', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'ruRU', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'ruRU', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'ruRU', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'ruRU', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'ruRU', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'ruRU', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'ruRU', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'ruRU', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'ruRU', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'ruRU', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'ruRU', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'ruRU', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'ruRU', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'ruRU', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'ruRU', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'ruRU', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'ruRU', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'ruRU', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'ruRU', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'ruRU', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'ruRU', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'ruRU', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'ruRU', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'ruRU', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'ruRU', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'ruRU', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'ruRU', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'ruRU', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'ruRU', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'ruRU', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'ruRU', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'ruRU', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'ruRU', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'ruRU', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'ruRU', 0xD09CD0B5D181D182D0BE20D0BFD180D0BED0B2D0B5D0B4D0B5D0BDD0B8D18F20D180D0B8D182D183D0B0D0BBD0BED0B23A20D092D18BD181D0BED182D0B020D09FD180D0BED0BDD0B7D0B0D18ED189D0B5D0B3D0BE20D093D180D0B5D0B1D0BDD18F00D0A0D18FD0B4D0BED0BC20D0BFD180D0BED185D0BED0B4D0B8D18220D0BED0BFD0B0D181D0BDD18BD0B920D180D0B8D182D183D0B0D0BB2E00A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'ruRU', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'ruRU', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'ruRU', 0x00D092D18BD0B7D18BD0B2D0B0D0B5D18220D0B2D0B7D180D18BD0B220D187D0B0D180D0BED0B4D0B5D0B9D181D0BAD0BED0B920D18DD0BDD0B5D180D0B3D0B8D0B82C20D0BDD0B0D0BDD0BED181D18FD189D0B8D0B920D0B8D0B3D180D0BED0BAD0B0D0BC20D0B220D180D0B0D0B4D0B8D183D181D0B52024413120D0BC2024733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B0D0B9D0BDD0BED0B920D0BCD0B0D0B3D0B8D0B82E0000, 67186), +(3776013982, 1295237, 'ruRU', 0x00D092D18BD0B7D18BD0B2D0B0D0B5D18220D0B2D0B7D180D18BD0B220D187D0B0D180D0BED0B4D0B5D0B9D181D0BAD0BED0B920D18DD0BDD0B5D180D0B3D0B8D0B82C20D0BDD0B0D0BDD0BED181D18FD189D0B8D0B920D0B8D0B3D180D0BED0BAD0B0D0BC20D0B220D180D0B0D0B4D0B8D183D181D0B52024413120D0BC2024733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B0D0B9D0BDD0BED0B920D0BCD0B0D0B3D0B8D0B82E0000, 67186), +(600565378, 632510, 'ruRU', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'ruRU', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'ruRU', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'ruRU', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'ruRU', 0x00D092D18B20D0B3D0BED182D0BED0B2D0B8D182D0B5D181D18C20D0BA20D180D0B0D0B7D0B4D0B5D0BBD0BAD0B520D182D183D188D0B82E20D09FD0BED0BAD0B020D0B4D0B5D0B9D181D182D0B2D183D0B5D18220D18DD182D0BED18220D18DD184D184D0B5D0BAD1822C20D0BFD180D0B820D181D0BBD0B5D0B4D183D18ED189D0B5D0BC20D181D0BDD18FD182D0B8D0B820D188D0BAD183D180D18B20D18120D181D183D189D0B5D181D182D0B2D0B0204D69646E6967687420D0B2D18B20D0B3D0B0D180D0B0D0BDD182D0B8D180D0BED0B2D0B0D0BDD0BDD0BE20D0BFD0BED0BBD183D187D0B0D0B5D182D0B520D0BCD18FD181D0BE20D0B4D0BBD18F20D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B82E00D093D0BED182D0BED0B2D0BDD0BED181D182D18C20D0BA20D180D0B0D0B7D0B4D0B5D0BBD0BAD0B520D182D183D188D0B82E20D09FD180D0B820D181D0BBD0B5D0B4D183D18ED189D0B5D0BC20D181D0BDD18FD182D0B8D0B820D188D0BAD183D180D18B20D18120D181D183D189D0B5D181D182D0B2D0B0204D69646E6967687420D0B2D18B20D182D0B0D0BAD0B6D0B520D0BFD0BED0BBD183D187D0B8D182D0B520D0BCD18FD181D0BE20D0B4D0BBD18F20D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B82E00, 67186), +(3776013982, 442615, 'ruRU', 0x00D092D18B20D0B3D0BED182D0BED0B2D0B8D182D0B5D181D18C20D0BA20D180D0B0D0B7D0B4D0B5D0BBD0BAD0B520D182D183D188D0B82E20D09FD0BED0BAD0B020D0B4D0B5D0B9D181D182D0B2D183D0B5D18220D18DD182D0BED18220D18DD184D184D0B5D0BAD1822C20D0BFD180D0B820D181D0BBD0B5D0B4D183D18ED189D0B5D0BC20D181D0BDD18FD182D0B8D0B820D188D0BAD183D180D18B20D18120D181D183D189D0B5D181D182D0B2D0B020D09AD0B0D0B720D090D0BBD0B3D0B0D180D0B020D0B2D18B20D0B3D0B0D180D0B0D0BDD182D0B8D180D0BED0B2D0B0D0BDD0BDD0BE20D0BFD0BED0BBD183D187D0B0D0B5D182D0B520D0BCD18FD181D0BE20D0B4D0BBD18F20D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B82E00D093D0BED182D0BED0B2D0BDD0BED181D182D18C20D0BA20D180D0B0D0B7D0B4D0B5D0BBD0BAD0B520D182D183D188D0B82E20D09FD180D0B820D181D0BBD0B5D0B4D183D18ED189D0B5D0BC20D181D0BDD18FD182D0B8D0B820D188D0BAD183D180D18B20D18120D181D183D189D0B5D181D182D0B2D0B020D09AD0B0D0B720D090D0BBD0B3D0B0D180D0B020D0B2D18B20D182D0B0D0BAD0B6D0B520D0BFD0BED0BBD183D187D0B8D182D0B520D0BCD18FD181D0BE20D0B4D0BBD18F20D0BAD183D0BBD0B8D0BDD0B0D180D0B8D0B82E00, 67186), +(3386943305, 23675, 'ruRU', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'ruRU', 0xD094D0B5D0BCD0BED0BDD0B8D187D0B5D181D0BAD0B8D0B520D0B2D180D0B0D182D0B000000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'ruRU', 0x00D097D0B0D0B2D0B5D180D188D0B8D182D18C20D184D0B0D0B7D0BED0B2D18BD0B920D0BFD0B5D180D0B5D185D0BED0B42E0000, 67186), +(3776013982, 1241218, 'ruRU', 0x000000, 67186), +(2575642838, 749, 'ruRU', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'ruRU', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'ruRU', 0x00D0A3D181D0B8D0BBD0B8D0B2D0B0D0B5D182D181D18F20D0B220D0BFD180D0B8D181D183D182D181D182D0B2D0B8D0B820D0BCD0BED189D0BDD0BED0B3D0BE20D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B02E20D09ED182D180D0B0D0B6D0B0D0B5D182202477312520D0BFD0BED0BBD183D187D0B0D0B5D0BCD0BED0B3D0BE20D183D180D0BED0BDD0B02E00D0A3D181D0B8D0BBD0B8D0B2D0B0D0B5D182D181D18F20D0B220D0BFD180D0B8D181D183D182D181D182D0B2D0B8D0B820D0BCD0BED189D0BDD0BED0B3D0BE20D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B02E20D09ED182D180D0B0D0B6D0B0D0B5D182202477312520D0BFD0BED0BBD183D187D0B0D0B5D0BCD0BED0B3D0BE20D183D180D0BED0BDD0B02E0D0A0D0AD098D181D182D0BED187D0BDD0B8D0BA20D183D181D0B8D0BBD0B5D0BDD0B8D18F3A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120D09DD0B5D0BDD0B0D181D18BD182D0BDD0B8D0BAD183D1815D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220D09FD0B0D0B2D188D0B8D0B920D0BAD0BED180D0BED0BBD18C20D0A1D0B0D0BBD185D0B0D0B4D0B0D0B0D1805D00, 67186), +(3425193231, 546424, 'ruRU', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'ruRU', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'ruRU', 0x000000, 67186), +(600565378, 664416, 'ruRU', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'ruRU', 0x00D09FD180D0B8D0BCD0B5D0BDD18FD0B5D18220D0BA20D0B8D0BDD181D182D180D183D0BCD0B5D0BDD182D18320D0B4D0BBD18F20D0BFD180D0BED184D0B5D181D181D0B8D0B820D0BFD0BED181D182D0BED18FD0BDD0BDD18BD0B520D187D0B0D180D18B2022D0A1D0B8D0BD27D0B4D0BED180D0B0D0B9D181D0BAD0B0D18F20D181D0BDD0BED180D0BED0B2D0BAD0B0222C20D0BFD0BED0B2D18BD188D0B0D18ED189D0B8D0B520D181D0BDD0BED180D0BED0B2D0BAD18320D0BDD0B020246563312E20D09DD0B5D0BBD18CD0B7D18F20D0BFD180D0B8D0BCD0B5D0BDD0B8D182D18C20D0BA20D0BFD180D0B5D0B4D0BCD0B5D182D0B0D0BC20D0B2D18BD188D0B52024656369782DD0B3D0BE20D183D180D0BED0B2D0BDD18F2E0D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523AD0A2D0B0D0BBD0B0D181D181D0B8D0B9D181D0BAD0B8D0B520D182D0B0D0BBD0B0D0BDD182D18B20E2809320D0BAD0B5D0BBD18C27D182D0B0D0BBD0B0D181D181D0BAD0BED0B520D0BAD0B0D187D0B5D181D182D0B2D0BE7C52200000, 67186), +(261693969, 93049, 'ruRU', 0xFFFFFFFFFFFFFFFFD09FD0BED0BCD0BED189D18C20D18120D183D180D0BED0BAD0B0D0BCD0B80000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'ruRU', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'ruRU', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'ruRU', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'ruRU', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'ruRU', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'ruRU', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'ruRU', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'ruRU', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'ruRU', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'ruRU', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'ruRU', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'ruRU', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'ruRU', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'ruRU', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'ruRU', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'ruRU', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'ruRU', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'ruRU', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'ruRU', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'ruRU', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'ruRU', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'ruRU', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'ruRU', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'ruRU', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'ruRU', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'ruRU', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'ruRU', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'ruRU', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'ruRU', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'ruRU', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'ruRU', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'ruRU', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'ruRU', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'ruRU', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'ruRU', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'ruRU', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'ruRU', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'ruRU', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'ruRU', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'ruRU', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'ruRU', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'ruRU', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'ruRU', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'ruRU', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'ruRU', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'ruRU', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'ruRU', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'ruRU', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'ruRU', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'ruRU', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'ruRU', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'ruRU', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'ruRU', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'ruRU', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'ruRU', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'ruRU', 0x00D092D0BED0B7D18CD0BCD0B8D182D0B520D0B220D180D183D0BAD0B820D183D0B4D0BED187D0BAD18320D0B820D0BDD0B0D0B9D0B4D0B8D182D0B520D0B2D0BED0B4D0BED0B5D0BC2C20D0B220D0BAD0BED182D0BED180D0BED0BC20D0BCD0BED0B6D0BDD0BE20D0BFD0BED180D18BD0B1D0B0D187D0B8D182D18C2E20D09AD0BED0B3D0B4D0B020D0BFD0BED181D0BBD18BD188D0B8D182D181D18F20D0B2D181D0BFD0BBD0B5D181D0BA2C20D189D0B5D0BBD0BAD0BDD0B8D182D0B520D0BFD0BE20D0BFD0BED0BFD0BBD0B0D0B2D0BAD18320D09FD09AD09C2C20D187D182D0BED0B1D18B20D0B2D18BD182D0B0D189D0B8D182D18C20D0BFD0BED0B9D0BCD0B0D0BDD0BDD183D18E20D180D18BD0B1D1832E20D0A7D0B5D0BC20D0B2D18BD188D0B520D0B2D0B0D18820D0BDD0B0D0B2D18BD0BA2C20D182D0B5D0BC20D0B1D0BED0BBD18CD188D0B520D188D0B0D0BDD181D0BED0B220D0BFD0BED0B9D0BCD0B0D182D18C20D180D18BD0B1D18320D0B220D0B2D0BED0B4D0BED0B5D0BCD0B0D18520D0B7D0BED0BD2C20D180D0B0D181D181D187D0B8D182D0B0D0BDD0BDD18BD18520D0BDD0B020D0B2D18BD181D0BED0BAD0B8D0B920D183D180D0BED0B2D0B5D0BDD18C20D0BFD0B5D180D181D0BED0BDD0B0D0B6D0B02E0000, 67186), +(3776013982, 1286820, 'ruRU', 0x000000, 67186), +(3776013982, 1286703, 'ruRU', 0x00D092D0BED0B7D18CD0BCD0B8D182D0B520D0B220D180D183D0BAD0B820D183D0B4D0BED187D0BAD18320D0B820D0BDD0B0D0B9D0B4D0B8D182D0B520D0B2D0BED0B4D0BED0B5D0BC2C20D0B220D0BAD0BED182D0BED180D0BED0BC20D0BCD0BED0B6D0BDD0BE20D0BFD0BED180D18BD0B1D0B0D187D0B8D182D18C2E20D09AD0BED0B3D0B4D0B020D0BFD0BED181D0BBD18BD188D0B8D182D181D18F20D0B2D181D0BFD0BBD0B5D181D0BA2C20D189D0B5D0BBD0BAD0BDD0B8D182D0B520D0BFD0BE20D0BFD0BED0BFD0BBD0B0D0B2D0BAD18320D09FD09AD09C2C20D187D182D0BED0B1D18B20D0B2D18BD182D0B0D189D0B8D182D18C20D0BFD0BED0B9D0BCD0B0D0BDD0BDD183D18E20D180D18BD0B1D1832E20D0A7D0B5D0BC20D0B2D18BD188D0B520D0B2D0B0D18820D0BDD0B0D0B2D18BD0BA2C20D182D0B5D0BC20D0B1D0BED0BBD18CD188D0B520D188D0B0D0BDD181D0BED0B220D0BFD0BED0B9D0BCD0B0D182D18C20D180D18BD0B1D18320D0B220D0B2D0BED0B4D0BED0B5D0BCD0B0D18520D0B7D0BED0BD2C20D180D0B0D181D181D187D0B8D182D0B0D0BDD0BDD18BD18520D0BDD0B020D0B2D18BD181D0BED0BAD0B8D0B920D183D180D0BED0B2D0B5D0BDD18C20D0BFD0B5D180D181D0BED0BDD0B0D0B6D0B02E0000, 67186), +(3776013982, 1253159, 'ruRU', 0x000000, 67186), +(3359787322, 29615, 'ruRU', 0xAF730000, 67186), +(3031818311, 9590, 'ruRU', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'ruRU', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'ruRU', 0xE87A0000, 67186), +(3776013982, 1277169, 'ruRU', 0x00D09FD0BED0BBD183D187D0B8D182D18C20313020D0B3D0B5D180D0B1D0BED0B220D0B7D0B0D180D0B820D0B3D0B5D180D0BED18F20D0B820D0B3D0B5D180D0B1D0BED0B220D0B7D0B0D180D0B820D18DD0BFD0BED185D0B82E0000, 67186), +(3776013982, 1243683, 'ruRU', 0x00D09FD0BED0BBD183D187D0B8D182D18C20313020D0B3D0B5D180D0B1D0BED0B220D0B7D0B0D180D0B820D18DD0BFD0BED185D0B82E0000, 67186), +(3776013982, 190784, 'ruRU', 0x00D092D18B20D0B7D0B0D0BFD180D18BD0B3D0B8D0B2D0B0D0B5D182D0B520D0BDD0B020D181D0BAD0B0D0BAD183D0BDD0B020D0B820D0BCD187D0B8D182D0B5D181D18C20D0B2D0BFD0B5D180D0B5D0B42E20D09FD0BED0B2D18BD188D0B0D0B5D18220D181D0BAD0BED180D0BED181D182D18C20D0BFD0B5D180D0B5D0B4D0B2D0B8D0B6D0B5D0BDD0B8D18F20D0BDD0B0202432323138383373342520D0BDD0B02024323231383833642E20D094D0B5D0B9D181D182D0B2D183D0B5D18220D0B220D0B1D0BED18E20D0B820D0B220D0BFD0BED0BCD0B5D189D0B5D0BDD0B8D18FD1852E0000, 67186), +(4033975491, 619076, 'ruRU', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'ruRU', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'ruRU', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'ruRU', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'ruRU', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'ruRU', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'ruRU', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'ruRU', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'ruRU', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'ruRU', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'ruRU', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'ruRU', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'ruRU', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'ruRU', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'ruRU', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'ruRU', 0x05000000F1F304003F0D0400, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1181150530, 750840, 'ruRU', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'ruRU', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'ruRU', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'ruRU', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'ruRU', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'ruRU', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'ruRU', 0x1100E18B0000, 67186), +(184881520, 18405, 'ruRU', 0x0F00FC890000, 67186), +(184881520, 18404, 'ruRU', 0x0E00FC890000, 67186), +(184881520, 18403, 'ruRU', 0xDC00F9890000, 67186), +(184881520, 18245, 'ruRU', 0x1100F9890000, 67186), +(184881520, 18244, 'ruRU', 0x0F00F9890000, 67186), +(2575642838, 750, 'ruRU', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'ruRU', 0x000000, 67186), +(3776013982, 1266413, 'ruRU', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'ruRU', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'ruRU', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'ruRU', 0xD0A1D0B5D0BAD180D0B5D182D0BDD18BD0B920D0B8D0BDD0B3D180D0B5D0B4D0B8D0B5D0BDD18200F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'ruRU', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'ruRU', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'ruRU', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'ruRU', 0x00D092D18B20D181D0BED0B2D0B5D180D188D0B0D0B5D182D0B520D181D0B5D180D0B8D18E20D182D0BED187D0BDD18BD18520D0B820D0BCD0BED189D0BDD18BD18520D183D0B4D0B0D180D0BED0B22C20D0BDD0B0D0BDD0BED181D18F20247B2434343038383473312B2434343038383673312B2434343038383873317D20D0B5D0B42E20D183D180D0BED0BDD0B020D186D0B5D0BBD0B820D0B82024343430383838733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B0D0BC20D0B220D180D0B0D0B4D0B8D183D181D0B52024343430383838413120D0BC20D0BED18220D0BDD0B5D0B52E20D0A6D0B5D0BBD0B820D0BFD0BED181D0BBD0B5202473312DD0B920D0BFD0BED0BBD183D187D0B0D18ED18220D183D0BCD0B5D0BDD18CD188D0B5D0BDD0BDD18BD0B920D183D180D0BED0BD2E0D0A0D0AD09FD0BED0BAD0B020D0B2D18B20D0BFD0BED0B4D0B4D0B5D180D0B6D0B8D0B2D0B0D0B5D182D0B52022D0A0D0B0D0B7D180D183D188D0B5D0BDD0B8D0B5222C20D0B2D18B20D0BFD0BED0BBD183D187D0B0D0B5D182D0B520D0BDD0B0202473342520D0BCD0B5D0BDD18CD188D0B520D183D180D0BED0BDD0B020D0B820D181D182D0B0D0BDD0BED0B2D0B8D182D0B5D181D18C20D0BDD0B5D0B2D0BED181D0BFD180D0B8D0B8D0BCD187D0B8D0B2D18B20D0BA20D0BED0B3D0BBD183D188D0B5D0BDD0B8D18E2C20D0BED182D0B1D180D0B0D181D18BD0B2D0B0D0BDD0B8D18E20D0B820D18DD184D184D0B5D0BAD182D0B0D0BC20D0BDD0B0D0B2D18FD0B7D0B0D0BDD0BDD0BED0B3D0BE20D0BFD0B5D180D0B5D0BCD0B5D189D0B5D0BDD0B8D18F2E0D0A0D0AD092D0BE20D0B2D180D0B5D0BCD18F20D0BFD0BED0B4D0B4D0B5D180D0B6D0B0D0BDD0B8D18F20D18DD182D0BED0B920D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B820D0B2D18B20D0BCD0BED0B6D0B5D182D0B520D0B1D0BBD0BED0BAD0B8D180D0BED0B2D0B0D182D18C20D0B820D0BFD0B0D180D0B8D180D0BED0B2D0B0D182D18C20D0B0D182D0B0D0BAD0B82C20D183D0BAD0BBD0BED0BDD18FD182D18CD181D18F20D0BED18220D0BDD0B8D1852C20D0B020D182D0B0D0BAD0B6D0B520D0B8D181D0BFD0BED0BBD18CD0B7D0BED0B2D0B0D182D18C20D0BED0BFD180D0B5D0B4D0B5D0BBD0B5D0BDD0BDD18BD0B520D0B7D0B0D189D0B8D182D0BDD18BD0B520D181D0BFD0BED181D0BED0B1D0BDD0BED181D182D0B82E0000, 67186), +(3776013982, 1292071, 'ruRU', 0x00D09FD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B82C20D0BFD0BED0BBD183D187D0B8D0B2D188D0B8D0B520D183D180D0BED0BD20D0BED18220D183D0B4D0B0D180D0BDD0BED0B920D0B2D0BED0BBD0BDD18B2022D0A4D0B0D0BBD0B0D0BDD0B3D0B8222C20D0BDD0B0D0BDD0BED181D18FD18220D0B2D0B0D0BC20D0BDD0B020247B2473312F2D317D2E312520D0BCD0B5D0BDD18CD188D0B520D183D180D0BED0BDD0B020D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E0D0A00D09DD0B0D0BDD0BED181D0B8D18220D0BDD0B020247B2457312F2D317D2E312520D0BCD0B5D0BDD18CD188D0B520D183D180D0BED0BDD0B020D0B8D0B3D180D0BED0BAD183202440617572616361737465722E00, 67186), +(3266400455, 1570155, 'ruRU', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'ruRU', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'ruRU', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'ruRU', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'ruRU', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'ruRU', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'ruRU', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'ruRU', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'ruRU', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'ruRU', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'ruRU', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'ruRU', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'ruRU', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'ruRU', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'ruRU', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'ruRU', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'ruRU', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'ruRU', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'ruRU', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'ruRU', 0x170B3D160100, 67186), +(1734738485, 9018, 'ruRU', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'ruRU', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'ruRU', 0x00D09DD0B0D181D18BD189D0B0D0B5D18220D0B1D180D0BED0BDD18E20D181D0BBD0B0D0B1D18BD0BC20D0BED182D0B7D0B2D183D0BAD0BED0BC20D0A1D0BED0BBD0BDD0B5D187D0BDD0BED0B3D0BE20D09AD0BED0BBD0BED0B4D186D0B02C20D0BED182D0BAD180D18BD0B2D0B0D18F20D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D18DD184D184D0B5D0BAD182D18B20D0B2D0BDD0B5D188D0BDD0B5D0B3D0BE20D0B2D0B8D0B4D0B020D0BAD0BBD0B0D181D181D0BED0B2D18BD18520D0BAD0BED0BCD0BFD0BBD0B5D0BAD182D0BED0B220D0B8D0B720312DD0B3D0BE20D181D0B5D0B7D0BED0BDD0B0204D69646E696768742E0D0A0D0AD094D0B5D0B9D181D182D0B2D183D0B5D18220D0B4D0BBD18F20D0B2D181D0B5D0B3D0BE20D0BED182D180D18FD0B4D0B02E0000, 67186), +(3776013982, 1273357, 'ruRU', 0x00D09DD0B0D181D18BD189D0B0D0B5D18220D0B1D180D0BED0BDD18E20D181D0BBD0B0D0B1D18BD0BC20D0BED182D0B7D0B2D183D0BAD0BED0BC20D0A1D0BED0BBD0BDD0B5D187D0BDD0BED0B3D0BE20D09AD0BED0BBD0BED0B4D186D0B02C20D0BED182D0BAD180D18BD0B2D0B0D18F20D0B4D0BED0BFD0BED0BBD0BDD0B8D182D0B5D0BBD18CD0BDD18BD0B520D18DD184D184D0B5D0BAD182D18B20D0B2D0BDD0B5D188D0BDD0B5D0B3D0BE20D0B2D0B8D0B4D0B020D0BAD0BBD0B0D181D181D0BED0B2D18BD18520D0BAD0BED0BCD0BFD0BBD0B5D0BAD182D0BED0B220D0B8D0B720312DD0B3D0BE20D181D0B5D0B7D0BED0BDD0B0204D69646E696768742E0D0A0D0AD094D0B5D0B9D181D182D0B2D183D0B5D18220D0B4D0BBD18F20D0B2D181D0B5D0B3D0BE20D0BED182D180D18FD0B4D0B02E0000, 67186), +(4167587713, 4140, 'ruRU', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186), +(3776013982, 1294727, 'ruRU', 0x0024407370656C6C69636F6E3435373034392024407370656C6C6E616D653435373034397C6ED09FD0BE20D0B8D181D182D0B5D187D0B5D0BDD0B8D0B820313020D181D0B5D0BA2E20D0BFD0B5D180D181D0BED0BDD0B0D0B620D0BFD0BED0BBD183D187D0B0D0B5D18220D18DD184D184D0B5D0BAD182202224407370656C6C6E616D65343537303439222C20D0B820D0B5D0B3D0BE20D0B2D18BD0BDD0BED181D0BBD0B8D0B2D0BED181D182D18C20D0BFD0BED0B2D18BD188D0B0D0B5D182D181D18F20D0BDD0B020243132313931373973372C20D0B020D0BED181D0BDD0BED0B2D0BDD0B0D18F20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B020E2809320D0BDD0B0202431323139313739733220D0BDD0B02024642E00D09ED181D0BDD0BED0B2D0BDD0B0D18F20D185D0B0D180D0B0D0BAD182D0B5D180D0B8D181D182D0B8D0BAD0B020D0BFD0BED0B2D18BD188D0B5D0BDD0B020D0BDD0B020247731312E00, 67186), +(3776013982, 1294726, 'ruRU', 0x000000, 67186), +(3776013982, 1294720, 'ruRU', 0x00D0A1D182D180D0B5D0BBD18FD0B5D18220D0B220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B02C20D0BDD0B0D0BDD0BED181D18F20D184D0B8D0B7D0B8D187D0B5D181D0BAD0B8D0B920D183D180D0BED0BD2E0000, 67186), +(3776013982, 1294703, 'ruRU', 0x00D0A1D182D180D0B5D0BBD18FD0B5D18220D0B220D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0B02C20D0BDD0B0D0BDD0BED181D18F20D184D0B8D0B7D0B8D187D0B5D181D0BAD0B8D0B920D183D180D0BED0BD2E0000, 67186), +(3776013982, 1294669, 'ruRU', 0x00D0A1D183D189D0B5D181D182D0B2D0BE20D181D0BED0B2D0B5D180D188D0B0D0B5D18220D180D18BD0B2D0BED0BA20D0BA20D0B2D0B0D0BC2E00D0A1D183D189D0B5D181D182D0B2D0BE20D181D0BED0B2D0B5D180D188D0B0D0B5D18220D180D18BD0B2D0BED0BA20D0BA20D0B2D0B0D0BC2E00, 67186), +(3776013982, 1294633, 'ruRU', 0x00D098D0B7D180D18BD0B3D0B0D0B5D18220D0B220D0B8D0B3D180D0BED0BAD0B020D0BED0B3D0BDD0B5D0BDD0BDD18BD0B520D188D0B0D180D18B20D0B220D182D0B5D187D0B5D0BDD0B8D0B52024642E2C20D0BDD0B0D0BDD0BED181D18F202431323636373435733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D0BED0B3D0BDD18F20D180D0B0D0B720D0B22024743120D181D0B5D0BA2E002431323636373435733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D0BED0B3D0BDD18F20D180D0B0D0B720D0B22024743120D181D0B5D0BA2E00, 67186), +(3776013982, 1294563, 'ruRU', 0x000000, 67186), +(3776013982, 1277795, 'ruRU', 0x00D0A0D0B0D181D181D0B5D0B8D0B2D0B0D0B5D18220D0B8D0BBD0BBD18ED0B7D0B8D0B820D0B220D0BED0B1D0BBD0B0D181D182D0B820D0BFD0B5D180D0B5D0B420D0B2D0B0D0BCD0B82C20D0BED0B1D0BDD0B0D180D183D0B6D0B8D0B2D0B0D18F20D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B22E0000, 67186), +(3776013982, 1272179, 'ruRU', 0x00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D18320D182D0BED180D0B3D0BED0B2D186D0B02E0D0A0D0A24407370656C6C646573633132353631373100D092D0B0D18120D0BFD0BED0B9D0BCD0B0D0BBD0B820D0BFD180D0B5D0B6D0B4D0B52C20D187D0B5D0BC20D0B2D18B20D181D0BCD0BED0B3D0BBD0B820D0BED181D0B0D0BBD0B8D182D18C20D186D0B5D0BBD18C2E00, 67186), +(3776013982, 1269655, 'ruRU', 0x00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D18320D182D0BED180D0B3D0BED0B2D186D0B02E0D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'ruRU', 0x00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D18320D182D0BED180D0B3D0BED0B2D186D0B02E0D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'ruRU', 0x00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D18320D182D0BED180D0B3D0BED0B2D186D0B02E0D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'ruRU', 0x00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D18320D182D0BED180D0B3D0BED0B2D186D0B02E0D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'ruRU', 0x00D09FD180D0B8D0BED0B1D180D0B5D181D182D0B820D18320D182D0BED180D0B3D0BED0B2D186D0B02E0D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'ruRU', 0x00D09FD0BED0BCD0B5D0BDD18FD182D18CD181D18F20D0BCD0B5D181D182D0B0D0BCD0B820D18120D0BDD0B0D185D0BED0B4D18FD189D0B8D0BCD181D18F20D180D18FD0B4D0BED0BC20D0BFD180D0B5D0B4D0BCD0B5D182D0BED0BC20D0B4D0B5D0BAD0BED180D0B02E0000, 67186), +(3776013982, 1259647, 'ruRU', 0x0024407370656C6C6465736334353239393300D092D180D0B5D0BCD18F20D0B4D0B5D0B9D181D182D0B2D0B8D18F20D0BDD0B0D181D182D0BED0B5D0B220D0B820D184D0BBD0B0D0BAD0BED0BDD0BED0B2204D69646E696768742C20D0B020D182D0B0D0BAD0B6D0B520D18DD184D184D0B5D0BAD182D0B020D181D18BD182D0BED181D182D0B820D0BDD0B520D181D0BED0BAD180D0B0D189D0B0D0B5D182D181D18F2E00, 67186), +(3776013982, 1258362, 'ruRU', 0x000D0A7C434646666666666666D092D180D0B5D0BCD18F20D0BFD180D0B8D0BCD0B5D0BDD0B5D0BDD0B8D18F3A20312C3520D181D0B5D0BA2E0D0AD092D180D0B5D0BCD18F20D0B2D0BED181D181D182D0B0D0BDD0BED0B2D0BBD0B5D0BDD0B8D18F20D0BBD0BED0B2D183D188D0BAD0B83A203520D181D0B5D0BA2E7C520D0A0D0AD095D181D0BBD0B820D0B220D180D0B0D0B4D0B8D183D181D0B520245220D0BC20D0BDD0B5D18220D0B8D181D0BAD0B0D182D0B5D0BBD0B5D0B92C20D0B2D18B20D0B1D180D0BED181D0B0D0B5D182D0B520D0BAD0BED0BDD182D0B5D0B9D0BDD0B5D18020D18120D0BBD0BED0B2D183D188D0BAD0BED0B9202224407370656C6C6E616D65313235383335382220D0B220D180D0B0D0B4D0B8D183D181D0B520247261643120D0BC20D0BED18220D181D0B5D0B1D18F2E0D0A0D0AD095D181D0BBD0B820D0B220D180D0B0D0B4D0B8D183D181D0B520245220D0BC20D0B5D181D182D18C20D185D0BED182D18F20D0B1D18B20D0BED0B4D0B8D0BD20D0B8D181D0BAD0B0D182D0B5D0BBD18C2C20D0B2D18B20D0B1D180D0BED181D0B0D0B5D182D0B520D0BAD0BED0BDD182D0B5D0B9D0BDD0B5D18020D18120D0BBD0BED0B2D183D188D0BAD0BED0B9202224407370656C6C6E616D65313235383335382220D180D18FD0B4D0BED0BC20D18120D0B1D0BBD0B8D0B6D0B0D0B9D188D0B8D0BC20D0B8D181D0BAD0B0D182D0B5D0BBD0B5D0BC2E0D0A0D0A7C434646373164356666D09FD180D0B8D0BCD0B5D187D0B0D0BDD0B8D0B53A7C52207C434646643966636666D0BFD0BED0BAD0B020D0BAD0BED0BDD182D0B5D0B9D0BDD0B5D18020D0BBD0B5D182D0B8D1822C20D0BED0BD20D0BDD0B5D0B2D0B8D0B4D0B8D0BC20D0B4D0BBD18F20D0B8D181D0BAD0B0D182D0B5D0BBD0B5D0B92E7C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D65313235383335383A0D0A24407370656C6C64657363313235383335380D0A0D0A7C434646623062306230D09DD0B520D181D0B0D0BCD0B0D18F20D0B2D0BFD0B5D187D0B0D182D0BBD18FD18ED189D0B0D18F20D0BBD0BED0B2D183D188D0BAD0B02C20D0BDD0BE20D0B8D0BDD0BED0B3D0B4D0B020D0B4D0BBD18F20D0BFD0BED0B1D0B5D0B4D18B20D0B4D0BED181D182D0B0D182D0BED187D0BDD0BE20D0BFD180D0BED181D182D0BE20D0BED182D0B2D0BBD0B5D187D18C20D0B2D0BDD0B8D0BCD0B0D0BDD0B8D0B520D181D0BED0BFD0B5D180D0BDD0B8D0BAD0B02E7C520000, 67186), +(3776013982, 1256009, 'ruRU', 0x00D0A0D0B0D181D181D0B5D0B8D0B2D0B0D0B5D18220D0B8D0BBD0BBD18ED0B7D0B8D0B820D0B220D0BED0B1D0BBD0B0D181D182D0B820D0BFD0B5D180D0B5D0B420D0B2D0B0D0BCD0B82C20D0BED0B1D0BDD0B0D180D183D0B6D0B8D0B2D0B0D18F20D181D0BFD180D18FD182D0B0D0B2D188D0B8D185D181D18F20D0B8D0B3D180D0BED0BAD0BED0B22E0000, 67186), +(3776013982, 1251813, 'ruRU', 0x00D0A3D0B1D0B8D182D18BD0B920D184D0B0D0BDD182D0BED0BC20D0B8D0B7D0B4D0B0D0B5D18220D0BFD0BED181D0BBD0B5D0B4D0BDD0B8D0B920D0BAD180D0B8D0BA2C20D0BDD0B0D0BDD0BED181D18F20D0B8D0B3D180D0BED0BAD0B0D0BC2024733120D0B5D0B42E20D183D180D0BED0BDD0B020D0BED18220D182D0B5D0BCD0BDD0BED0B920D0BCD0B0D0B3D0B8D0B82E0000, 67186), +(1010104591, 22988, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D09BD0B8D180D0B5D0BDD0B4D0B0D0BBD18C7C6E7C634646464644323030D097D0BED0BDD0B03A207C72D09BD183D0BDD0BED181D0B2D0B5D1827C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0AFD182D0B5D0BED0BD7C6E7C634646464644323030D097D0BED0BDD0B03A207C72D09BD183D0BDD0BED181D0B2D0B5D1827C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'ruRU', 0x7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D09BD0B8D180D0B5D0BDD0B4D0B0D0BBD18C7C6E7C634646464644323030D097D0BED0BDD0B03A207C72D09BD183D0BDD0BED181D0B2D0B5D1827C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030D0A2D0BED180D0B3D0BED0B2D0B5D1863A207C72D0AFD182D0B5D0BED0BD7C6E7C634646464644323030D097D0BED0BDD0B03A207C72D09BD183D0BDD0BED181D0B2D0B5D1827C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'ruRU', 0x7C634646464644323030D0A1D0BFD0B5D186D0B8D0B0D0BBD0B8D0B7D0B0D186D0B8D18F3A207C7222D0A0D18BD0BDD0BED187D0BDD0B0D18F20D0BCD0BED0B1D0B8D0BBD18CD0BDD0BED181D182D18C22202D2022D090D0BAD181D0B5D181D181D183D0B0D180D18B20D0B4D0BBD18F20D0B3D0BED180D0BDD0BED0B3D0BE20D0B4D0B5D0BBD0B0227C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'ruRU', 0x7C634646464644323030D0A3D187D0B8D182D0B5D0BBD18C20D0BFD180D0BED184D0B5D181D181D0B8D0B83A207C72D0B8D0BDD0B6D0B5D0BDD0B5D180D0BDD0BED0B520D0B4D0B5D0BBD0BE204D69646E6967687420283335297C6E7C634646464644323030D0A6D0B5D0BDD0B03A207C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'ruRU', 0x7C634646464644323030D0A1D0BFD0B5D186D0B8D0B0D0BBD0B8D0B7D0B0D186D0B8D18F3A207C7222D0A0D18BD0BDD0BED187D0BDD0B0D18F20D0BCD0BED0B1D0B8D0BBD18CD0BDD0BED181D182D18C22202D2022D090D0BAD181D0B5D181D181D183D0B0D180D18B20D0B4D0BBD18F20D0B8D0BDD0B6D0B5D0BDD0B5D180D0BDD0BED0B3D0BE20D0B4D0B5D0BBD0B0227C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'ruRU', 0xFFFFFFFFFFFFFFFFD0A2D0B0D0B9D0BDD0B0D18F20D182D0B0D0B2D0B5D180D0BDD0B0000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'ruRU', 0xFFFFFFFFFFFFFFFFD094D0BED0BBD0B6D0BDD0BED0B520D0BFD180D0B8D0B7D0BDD0B0D0BDD0B8D0B500001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'ruRU', 0xD0A0D0B5D0B4D0BAD0B8D0B920D0BFD180D0B5D0B4D0BCD0B5D1822C20D0BAD0BED182D0BED180D18BD0B920D0BCD0BED0B6D0B5D18220D0B2D0B5D180D0BDD183D182D18C20D0BDD0B5D0BAD0BED182D0BED180D0BED0B520D0BAD0BED0BBD0B8D187D0B5D181D182D0B2D0BE20D0B7D0B0D182D180D0B0D187D0B5D0BDD0BDD18BD18520D180D0B5D0B0D0B3D0B5D0BDD182D0BED0B22E7C6E7C6ED09FD180D0B820D0B8D0B7D0B3D0BED182D0BED0B2D0BBD0B5D0BDD0B8D0B820D18DD182D0BED0B3D0BE20D180D0B5D186D0B5D0BFD182D0B02024656E3120D0BFD0BED0B2D18BD188D0B0D0B5D182D181D18F20D0BDD0B020246576312E004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'ruRU', 0xD09FD0BED0B2D18BD188D0B0D0B5D18220D0B2D0B5D180D0BED18FD182D0BDD0BED181D182D18C20D0B2D0B5D180D0BDD183D182D18C20D0BDD0B5D0BAD0BED182D0BED180D0BED0B520D0BAD0BED0BBD0B8D187D0B5D181D182D0B2D0BE20D0B7D0B0D182D180D0B0D187D0B5D0BDD0BDD18BD18520D180D0B5D0B0D0B3D0B5D0BDD182D0BED0B22E7C6E7C6ED09FD180D0B820D0B8D0B7D0B3D0BED182D0BED0B2D0BBD0B5D0BDD0B8D0B820D18DD182D0BED0B3D0BE20D180D0B5D186D0B5D0BFD182D0B02024656E3120D0BFD0BED0B2D18BD188D0B0D0B5D182D181D18F20D0BDD0B020246576312E004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'ruRU', 0xD0A1D182D180D0B0D0BDD0BDD18BD0B920D0BCD0B5D0B6D0BFD180D0BED181D182D180D0B0D0BDD181D182D0B2D0B5D0BDD0BDD18BD0B920D184D0B5D0BDD0BED0BCD0B5D0BD2C20D0BAD0BED182D0BED180D18BD0B920D0B3D0B0D180D0B0D0BDD182D0B8D180D0BED0B2D0B0D0BDD0BDD0BE20D183D0B2D0B5D0BBD0B8D187D0B8D0B2D0B0D0B5D18220D0BAD0BED0BBD0B8D187D0B5D181D182D0B2D0BE20D0B8D0B7D0B3D0BED182D0BED0B2D0BBD0B5D0BDD0BDD18BD18520D0BFD180D0B5D0B4D0BCD0B5D182D0BED0B22E7C6E7C6ED09FD180D0B820D0B8D0B7D0B3D0BED182D0BED0B2D0BBD0B5D0BDD0B8D0B820D18DD182D0BED0B3D0BE20D180D0B5D186D0B5D0BFD182D0B02024656E3120D0BFD0BED0B2D18BD188D0B0D0B5D182D181D18F20D0BDD0B020246576312E004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'ruRU', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500D094D0BED181D182D0B8D0B3D0BDD183D182D0BE20D0BCD0B0D0BAD181D0B8D0BCD0B0D0BBD18CD0BDD0BED0B520D0BAD0BED0BBD0B8D187D0B5D181D182D0B2D0BE20D0BFD0BED0B2D18BD188D0B5D0BDD0B8D0B920D183D180D0BED0B2D0BDD18F20D0B7D0B020D0B4D0B5D0BDD18C2E20D09FD0BED0BFD180D0BED0B1D183D0B9D182D0B520D0B7D0B0D0B2D182D180D0B02E0003000000, 67186), +(3205218938, 58259, 'ruRU', 0x534C4153485F434F4F4C444F574E4D414E4147455234002FD182D180D0B5D0BAD0B5D180D0B2D0BED181D181D182D0B0D0BDD0BED0B2D0BBD0B5D0BDD0B8D18F0001000000, 67186), +(3205218938, 58258, 'ruRU', 0x534C4153485F434F4F4C444F574E4D414E4147455232002FD182D0B2D0BED1810001000000, 67186), +(3205218938, 55299, 'ruRU', 0x4A4F55524E4559535F43555252454E545F50524F475245535300D0A2D0B5D0BAD183D189D0B8D0B920D0BFD180D0BED0B3D180D0B5D181D1813A207C636E484947484C494748545F464F4E545F434F4C4F523A2564202F2025647C720001000000, 67186), +(3205218938, 49471, 'ruRU', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F475245535300D0A2D0B5D0BAD183D189D0B8D0B920D0BFD180D0BED0B3D180D0B5D181D1813A207C636666666666666666253124642F253224647C720001000000, 67186), +(3776013982, 1294779, 'ruRU', 0x000000, 67186), +(3776013982, 1294759, 'ruRU', 0x000000, 67186), +(2921112328, 568649, 'ruRU', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'ruRU', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'ruRU', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'ruRU', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'ruRU', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'ruRU', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'ruRU', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'ruRU', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'ruRU', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'ruRU', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'ruRU', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'ruRU', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'ruRU', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'ruRU', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'ruRU', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='ruRU') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='ruRU') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='ruRU') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='ruRU') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xD09ED185D0BED182D0B000D09FD0BED0B1D0B5D0B4D0B8D182D0B520D0BCD0BED0B3D183D187D0B8D18520D0BFD180D0BED182D0B8D0B2D0BDD0B8D0BAD0BED0B22C20D187D182D0BED0B1D18B20D0BFD0B5D180D0B5D0B4D0B0D182D18C20D18DD0BDD0B5D180D0B3D0B8D18E20D090D181D182D0B0D0BBD0BED180D1832E00FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x00D09FD0BED181D0BBD0B5D0B4D0BDD18FD18F20D0B8D181D0BAD180D0B020D0B3D0BED180D0B8D18220D0B220D182D0B5D0BCD0BDD0B5D0B9D188D0B5D0B920D0BDD0BED187D0B82E00D09ED0B1D0BED0B4D180D0B5D0BDD0B8D0B52E00, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='ruRU'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFFD09DD0B5D18220D187D183D0B2D181D182D0B2D0B020D180D0B8D182D0BCD0B00000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='ruRU'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'ruRU', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='ruRU' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='ruRU'); From c93745cada670bc034c5e2fde75614a44500d0e9 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:20:29 +0200 Subject: [PATCH 108/175] DB/Hotfixes: Updated zhCN hotfixes to 12.0.5.67186 --- .../master/2026_04_29_09_hotfixes_zhCN.sql | 2795 +++++++++++++++++ 1 file changed, 2795 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_09_hotfixes_zhCN.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_09_hotfixes_zhCN.sql b/sql/updates/hotfixes/master/2026_04_29_09_hotfixes_zhCN.sql new file mode 100644 index 0000000000000..f4b521834fb6b --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_09_hotfixes_zhCN.sql @@ -0,0 +1,2795 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'zhCN', '完成下列每一个深渊钓客成就。', '深渊钓客:杰祖的新对手', '', 67186), +(61883, 'zhCN', '在装饰决斗开始的第一分钟内不被抓获(3次)。', '现在你看不到我了……', '', 67186), +(61887, 'zhCN', '完成所有装饰决斗成就。', '百变大咖', '', 67186), +(61886, 'zhCN', '在装饰决斗中,获取所有的技能包升级。', '全副武装', '', 67186), +(61882, 'zhCN', '在装饰决斗中,成功摆脱“被发现”状态且未被抓获。', '众里寻他千百度', '', 67186), +(61881, 'zhCN', '在装饰决斗中,成为你的队伍里最后一个未被抓获的躲藏者。', '藏影无踪', '', 67186), +(61880, 'zhCN', '在装饰决斗中,连续躲藏并保持不被发现状态达到一分半钟。', '影中寒蝉', '', 67186), +(61879, 'zhCN', '在装饰决斗中,作为抓捕者赢得一个回合,且所有躲藏者在两分钟内被抓获。', '你是“鬼”了', '', 67186), +(61878, 'zhCN', '在装饰决斗中,作为奥术游侠成功抓获敌对玩家。', '插标卖首', '', 67186), +(61793, 'zhCN', '在装饰决斗中,作为废止者成功抓获敌对玩家。', '虚空空降兵', '', 67186), +(61792, 'zhCN', '在装饰决斗中,作为破法者成功抓获敌对玩家。', '逮个正着!', '', 67186), +(63263, 'zhCN', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'zhCN', '在“至暗之夜”第一赛季中的史诗钥石评分达到至少3400。', '“至暗之夜”钥石神话:第一赛季', '头衔:晦暗竞争者;物品:迷时鞍座', 67186), +(61594, 'zhCN', '获得一次通天峰钥石地下城地区最佳。', '钥石胜利者:通天峰', '', 67186), +(61593, 'zhCN', '获得一次执政团之座钥石地下城地区最佳。', '钥石胜利者:执政团之座', '', 67186), +(61592, 'zhCN', '获得一次萨隆矿坑钥石地下城地区最佳。', '钥石胜利者:萨隆矿坑', '', 67186), +(61591, 'zhCN', '获得一次艾杰斯亚学院钥石地下城地区最佳。', '钥石胜利者:艾杰斯亚学院', '', 67186), +(61590, 'zhCN', '获得一次风行者之塔钥石地下城地区最佳。', '钥石胜利者:风行者之塔', '', 67186), +(61589, 'zhCN', '获得一次节点希纳斯钥石地下城地区最佳。', '钥石胜利者:节点希纳斯', '', 67186), +(61588, 'zhCN', '获得一次迈萨拉洞窟钥石地下城地区最佳。', '钥石胜利者:迈萨拉洞窟', '', 67186), +(61587, 'zhCN', '获得一次魔导师平台(“至暗之夜”)钥石地下城地区最佳。', '钥石胜利者:魔导师平台(“至暗之夜”)', '', 67186), +(61259, 'zhCN', '在你的地区的所有玩家中以排名前0.1%的史诗钥石评分结束“至暗之夜”史诗钥石第1赛季。', '晦暗英雄:“至暗之夜”第一赛季', '头衔:晦暗英雄', 67186), +(61253, 'zhCN', '在时限内于钥石等级30完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石30', '“至暗之夜”第1赛季期间,等级低于30的钥石不会再耗尽。', 67186), +(61252, 'zhCN', '在时限内于钥石等级29完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石29', '“至暗之夜”第1赛季期间,等级低于29的钥石不会再耗尽。', 67186), +(61251, 'zhCN', '在时限内于钥石等级28完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石28', '“至暗之夜”第1赛季期间,等级低于28的钥石不会再耗尽。', 67186), +(61250, 'zhCN', '在时限内于钥石等级27完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石27', '“至暗之夜”第1赛季期间,等级低于27的钥石不会再耗尽。', 67186), +(61249, 'zhCN', '在时限内于钥石等级26完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石26', '“至暗之夜”第1赛季期间,等级低于26的钥石不会再耗尽。', 67186), +(61248, 'zhCN', '在时限内于钥石等级25完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石25', '“至暗之夜”第1赛季期间,等级低于25的钥石不会再耗尽。', 67186), +(61247, 'zhCN', '在时限内于钥石等级24完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石24', '“至暗之夜”第1赛季期间,等级低于24的钥石不会再耗尽。', 67186), +(61246, 'zhCN', '在时限内于钥石等级23完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石23', '“至暗之夜”第1赛季期间,等级低于23的钥石不会再耗尽。', 67186), +(61245, 'zhCN', '在时限内于钥石等级22完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石22', '“至暗之夜”第1赛季期间,等级低于22的钥石不会再耗尽。', 67186), +(61244, 'zhCN', '在时限内于钥石等级21完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石21', '“至暗之夜”第1赛季期间,等级低于21的钥石不会再耗尽。', 67186), +(61243, 'zhCN', '在时限内于钥石等级20完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石20', '“至暗之夜”第1赛季期间,等级低于20的钥石不会再耗尽。', 67186), +(61242, 'zhCN', '在时限内于钥石等级19完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石19', '“至暗之夜”第1赛季期间,等级低于19的钥石不会再耗尽。', 67186), +(61241, 'zhCN', '在时限内于钥石等级18完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石18', '“至暗之夜”第1赛季期间,等级低于18的钥石不会再耗尽。', 67186), +(61240, 'zhCN', '在时限内于钥石等级17完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石17', '“至暗之夜”第1赛季期间,等级低于17的钥石不会再耗尽。', 67186), +(61239, 'zhCN', '在时限内于钥石等级16完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石16', '“至暗之夜”第1赛季期间,等级低于16的钥石不会再耗尽。', 67186), +(61237, 'zhCN', '在时限内于钥石等级15完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石15', '“至暗之夜”第1赛季期间,等级低于15的钥石不会再耗尽。', 67186), +(61236, 'zhCN', '在时限内于钥石等级14完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石14', '“至暗之夜”第1赛季期间,等级低于14的钥石不会再耗尽。', 67186), +(61235, 'zhCN', '在时限内于钥石等级13完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石13', '“至暗之夜”第1赛季期间,等级低于13的钥石不会再耗尽。', 67186), +(61233, 'zhCN', '在时限内于钥石等级12完成“至暗之夜”第一赛季所有的史诗钥石地下城。', '至暗之夜第1赛季:坚韧钥石12', '“至暗之夜”第1赛季期间,等级低于12的钥石不会再耗尽。', 67186), +(12009, 'zhCN', '在执政团之座中,在所有队友都受到粉碎黑暗的效果影响的情况下,击败鲁拉(史诗难度)。', '黑暗无界', '', 67186), +(12005, 'zhCN', '在执政团之座中,让黯牙使用暗影突袭摧毁4个封印的贮藏虚空后,击败萨普瑞什(史诗难度)。', '大砸一通', '', 67186), +(12004, 'zhCN', '在执政团之座中,利用虚空裂缝把乌贾德从虚空世界带过来,然后击败他和晋升者祖拉尔(史诗难度)。', '迎接虚空', '', 67186), +(9036, 'zhCN', '在不消灭任何防护构装体的情况下击败通天峰的高阶贤者维里克斯(英雄难度)。', '单恋一只鸦', '', 67186), +(9035, 'zhCN', '在通天峰与鲁克兰的战斗中让3个灰烬堆同时转化成太阳耀斑(英雄难度)。', '阳光灿烂', '', 67186), +(9034, 'zhCN', '在通天峰击败强能构装体(英雄难度)。', '放大……增强', '', 67186), +(9033, 'zhCN', '在不受下列任何技能伤害的情况下击败通天峰的兰吉特(英雄难度):回旋利刃、风墙、四风呼啸和眩光。', '准备突袭第四季', '', 67186), +(4525, 'zhCN', '在萨隆矿坑副本中,在首次挑战天灾领主泰兰努斯之前,清理通道时无人受到冰锥的伤害(英雄难度)。', '别往上看', '', 67186), +(4524, 'zhCN', '在萨隆矿坑副本中,在任何玩家获得11层永冻效果前击败熔炉领主加弗斯特(英雄难度)。', '11大限', '', 67186), +(62814, 'zhCN', '', '', '', 67186), +(62813, 'zhCN', '', '', '', 67186), +(62812, 'zhCN', '', '', '', 67186), +(62811, 'zhCN', '', '', '', 67186), +(62296, 'zhCN', '', '获得的神话曙光纹章', '', 67186), +(42769, 'zhCN', '在“至暗之夜”第1赛季中不再需要使用英雄曙光纹章。', '曙光英雄', '角色解锁:用英雄曙光纹章交易神话曙光纹章', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水过程中捕捉3次神话生物。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水中累计获得250000点分数。', `Reward_lang`='奖励:获得一位爱冒险的潜水伙伴', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间,捕获100条鱼。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间,在剩余呼吸时间不足10秒时使用“安全上浮!”能力。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间,因尝试游出海沟而被强制移出。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='奖励:在深潜者图纳基特处解锁深海神像购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水过程中发现10个上古圣物,并获得浅滩网升级。', `Reward_lang`='奖励:在深潜者杰祖处解锁三股线网购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水过程中,发现50个沉没的圣物。', `Reward_lang`='奖励:在深潜者杰祖处解锁浅滩网购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间,收集下列所有生物,并获得科技深水测试过的气罐。', `Reward_lang`='奖励:在深潜者杰祖处解锁纳洛拉克的呼吸罐购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间,收集下列所有生物,并获得深潜者的旧气罐升级。', `Reward_lang`='奖励:在深潜者杰祖处解锁深水测试过的气罐购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间,收集下列所有生物。', `Reward_lang`='奖励:在深潜者杰祖处解锁深潜者的旧气罐购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水中捕获至少500条鱼,并获得深潜机油升级。', `Reward_lang`='奖励:在深潜者杰祖处解锁帕科海沟脚蹼购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在单次深渊钓客潜水中捕获至少25条鱼,并获得加固关节升级。', `Reward_lang`='奖励:在深潜者杰祖处解锁深潜机油购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='zhCN'); +UPDATE `achievement_locale` SET `Description_lang`='在深渊钓客潜水期间捕获至少3条鱼。', `Reward_lang`='奖励:解锁深潜者杰祖处的加固关节购买权', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='zhCN'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='zhCN'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'zhCN', '真正的深渊钓客,由深潜者杰祖亲自认证。', '|cFFFFD200商人出售:|r深潜者图纳基特|n|cFFFFD200地区:|r祖阿曼|n|cFFFFD200价格:|r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (309753,303469,295258,289969,294283)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'zhCN', '你想测量哪项指标?', '你想测量哪项指标?', 67186), +(303469, 'zhCN', '总算解决掉一个特工。很好。下一个是“非法降雨”。\n\n我们可以从这里进去。', '', 67186), +(295258, 'zhCN', '', '小心,看起来那几个还只是幼崽。', 67186), +(289969, 'zhCN', '我已经在银色盟约手中失去了太多同胞。\n\n他们说那是战争。他们说双方都有伤亡。可我的夺日者从未对达拉然的任何人进行过清洗。\n\n有一个风行者因为清洗城市而得到了应有的报应。而另一个今天就站在我面前。', '', 67186), +(294283, 'zhCN', '我是西塞,丽丽的哥哥。真遗憾没能亲自在那里迎接你。现在是不是所有人都在等我们?\n\n前几天我去武松村筹备节庆,结果发现我们最珍贵的烟花不翼而飞了!我匆忙赶回家寻找,到现在还是毫无线索。时间越来越紧了。看来只能凑合过一场没有烟花的节日了。\n\n<西塞用爪子抹了抹额上的汗珠。>\n\n很荣幸认识你,丽丽的朋友。我们二人已有数年未见,想必有无数冒险经历可以分享——当然,多半是她的精彩故事,而我的平淡无奇。那之后我就从家乡搬到了晨息村。那里风景如画,临湖而居。', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'zhCN', '虚空突围者 %s', '虚空突围者 %s', 67186), +(1307, 'zhCN', '晦暗竞争者 %s', '晦暗竞争者 %s', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'zhCN', '', 67186), +(62821, 'zhCN', '', 67186), +(62820, 'zhCN', '', 67186), +(62819, 'zhCN', '', 67186), +(62818, 'zhCN', '', 67186), +(62817, 'zhCN', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'zhCN', '纹身颜色', 67186), +(8959, 'zhCN', '纹身', 67186), +(8958, 'zhCN', '眼罩', 67186), +(8957, 'zhCN', '犄角', 67186), +(8956, 'zhCN', '纹身颜色', 67186), +(8955, 'zhCN', '纹身', 67186), +(8954, 'zhCN', '眼罩', 67186), +(8953, 'zhCN', '犄角', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'zhCN', '', 67186), +(224842, 'zhCN', '完成装饰决斗', 67186), +(224840, 'zhCN', '完成装饰决斗', 67186), +(224838, 'zhCN', '完成装饰决斗', 67186), +(223318, 'zhCN', '深渊钓客:天下第一鱼(3条史诗)', 67186), +(223121, 'zhCN', '深渊钓客:认证深潜者', 67186), +(223119, 'zhCN', '深渊钓客:海沟狂人', 67186), +(222479, 'zhCN', '深渊钓客:正规流程', 67186), +(222477, 'zhCN', '深渊钓客:四海任我游', 67186), +(222475, 'zhCN', '深渊钓客:人有失手', 67186), +(222466, 'zhCN', '深渊钓客:深海神像', 67186), +(222453, 'zhCN', '深渊钓客:空核鱼叉炮台', 67186), +(222438, 'zhCN', '深渊钓客:重型鱼叉炮', 67186), +(222436, 'zhCN', '深渊钓客:三股渔网', 67186), +(222434, 'zhCN', '深渊钓客:浅滩网', 67186), +(222432, 'zhCN', '深渊钓客:纳洛拉克的呼吸罐', 67186), +(222430, 'zhCN', '深渊钓客:深水测试过的气罐', 67186), +(222428, 'zhCN', '深渊钓客:深潜者的旧气罐', 67186), +(222426, 'zhCN', '深渊钓客:帕科海沟脚蹼', 67186), +(222424, 'zhCN', '深渊钓客:深潜机油', 67186), +(222422, 'zhCN', '深渊钓客:加固关节', 67186), +(222416, 'zhCN', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'zhCN', '克琳娜的卡德加仿制酒', 67186), +(220967, 'zhCN', '在装饰决斗开始的第一分钟内未被抓获', 67186), +(220603, 'zhCN', '爆破突袭', 67186), +(220574, 'zhCN', '团团受困!', 67186), +(220573, 'zhCN', '派对搅局者', 67186), +(212256, 'zhCN', '完成深渊钓客事件', 67186), +(212255, 'zhCN', '完成深渊钓客事件', 67186), +(229140, 'zhCN', '', 67186), +(229139, 'zhCN', '', 67186), +(229048, 'zhCN', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'zhCN', '击败哈尔哈达尔的部队', 67186), +(225426, 'zhCN', '击败哈尔哈达尔的部队', 67186), +(223423, 'zhCN', '释放灵爪', 67186), +(223697, 'zhCN', '', 67186), +(223696, 'zhCN', '', 67186), +(223695, 'zhCN', '', 67186), +(223693, 'zhCN', '', 67186), +(219734, 'zhCN', '', 67186), +(209802, 'zhCN', '为你的伙伴装备一个战斗珍玩', 67186), +(170782, 'zhCN', '为你的伙伴装备一个战斗珍玩', 67186), +(228515, 'zhCN', '评级要求', 67186), +(228514, 'zhCN', '成就 - 钥石神话:“至暗之夜”地下城第1赛季', 67186), +(227753, 'zhCN', '', 67186), +(227677, 'zhCN', '', 67186), +(227676, 'zhCN', '', 67186), +(227675, 'zhCN', '', 67186), +(227674, 'zhCN', '', 67186), +(227673, 'zhCN', '', 67186), +(227672, 'zhCN', '', 67186), +(227671, 'zhCN', '', 67186), +(225639, 'zhCN', '', 67186), +(225638, 'zhCN', '', 67186), +(225637, 'zhCN', '', 67186), +(225636, 'zhCN', '', 67186), +(225635, 'zhCN', '', 67186), +(225634, 'zhCN', '深渊钓客:深渊珍珠', 67186), +(225611, 'zhCN', '', 67186), +(225610, 'zhCN', '', 67186), +(225609, 'zhCN', '深渊钓客:复古收藏家', 67186), +(220963, 'zhCN', '完成一个回合且未被抓获。', 67186), +(220961, 'zhCN', '连续90秒保持不被发现。', 67186), +(220959, 'zhCN', '作为抓获者在两分钟内获胜。', 67186), +(220958, 'zhCN', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'zhCN', '作为奥术游侠抓获一名被发现的躲藏者。', 67186), +(220955, 'zhCN', '作为废止者抓获一名被发现的躲藏者。', 67186), +(220725, 'zhCN', '作为破法者抓获一名被发现的躲藏者', 67186), +(227430, 'zhCN', '', 67186), +(223818, 'zhCN', '', 67186), +(216419, 'zhCN', '', 67186), +(216418, 'zhCN', '', 67186), +(216417, 'zhCN', '', 67186), +(227429, 'zhCN', '', 67186), +(227428, 'zhCN', '获得一只太阳龙宝宝宠物', 67186), +(225732, 'zhCN', '获得浅滩网升级', 67186), +(224745, 'zhCN', '激活哨兵', 67186), +(222969, 'zhCN', '保卫萦语水池', 67186), +(222803, 'zhCN', '对屏障造成伤害', 67186), +(221550, 'zhCN', '消灭活化的天灾碎片', 67186), +(219955, 'zhCN', '消灭虹虚魔巢穴先知', 67186), +(219466, 'zhCN', '消灭虹虚魔巢穴先知', 67186), +(225670, 'zhCN', '', 67186), +(225668, 'zhCN', '', 67186), +(225666, 'zhCN', '', 67186), +(225664, 'zhCN', '', 67186), +(227206, 'zhCN', '', 67186), +(223209, 'zhCN', '统计:获得的神话曙光纹章', 67186), +(212362, 'zhCN', '在“至暗之夜”第1赛季中平均物品等级达到285。(成长到不再需要神话曙光纹章)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='zhCN'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'zhCN', '晦暗虚空核心', '在“至暗之夜”第1赛季团队副本中击败强大的敌人,或完成史诗钥石地下城、丰裕地下堡以及梦魇难度的狩猎,即可将其转化为强大的装备。', 67186), +(3347, 'zhCN', '神话曙光纹章', '用于升级“至暗之夜”第1赛季的神话装备,最多升级至物品等级276-289。\n\n用于制造时,根据品质将制成品的物品等级设定为272-285。\n\n可以从以下活动获得:\n\n- 史诗难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 9级及以上的史诗钥石地下城', 67186), +(3346, 'zhCN', '英雄曙光纹章', '用于升级“至暗之夜”第1赛季的英雄装备,最多升级至物品等级263-276。可以从以下活动获得:\n\n- 英雄难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 4-8级的史诗钥石地下城\n- 地下堡(难度11)\n- 珍宝猎手的奖赏(难度8及以上)\n- 狩猎(梦魇)', 67186), +(3345, 'zhCN', '英雄曙光纹章', '用于升级“至暗之夜”第1赛季的英雄装备,最多升级至物品等级263-276。\n\n用于制造时,根据品质将制成品的物品等级设定为259-272。\n\n可以从以下活动获得:\n\n- 英雄难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 4-8级的史诗钥石地下城\n- 地下堡(难度11)\n- 珍宝猎手的奖赏(难度8及以上)\n- 狩猎(梦魇)', 67186), +(3344, 'zhCN', '勇士曙光纹章', '用于升级“至暗之夜”第1赛季的勇士装备,最多升级至物品等级250-263。可以从以下活动获得:\n\n- 每周户外活动\n- 普通难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 史诗难度的赛季地下城\n- 2-3级的史诗钥石地下城\n- 地下堡(难度7-10)\n- 珍宝猎手的奖赏(难度6-7)\n- 狩猎(梦魇)', 67186), +(3343, 'zhCN', '勇士曙光纹章', '用于升级“至暗之夜”第1赛季的勇士装备,最多升级至物品等级250-263。可以从以下活动获得:\n\n- 每周户外活动\n- 普通难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 史诗难度的赛季地下城\n- 2-3级的史诗钥石地下城\n- 地下堡(难度7-10)\n- 珍宝猎手的奖赏(难度6-7)\n- 狩猎(梦魇)', 67186), +(3342, 'zhCN', '老兵曙光纹章', '用于升级“至暗之夜”第1赛季的老兵装备,最多升级至物品等级237-250。可以从以下活动获得:\n\n- 可重复的户外活动\n- 随机难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 英雄难度的赛季地下城\n- 地下堡(难度5-6)\n- 珍宝猎手的奖赏(难度4-5)\n- 狩猎(困难)', 67186), +(3341, 'zhCN', '老兵曙光纹章', '用于升级“至暗之夜”第1赛季的老兵装备,最多升级至物品等级237-250。\n\n用于制造时,根据品质将制成品的物品等级设定为233-246。\n\n可以从以下活动获得:\n\n- 可重复的户外活动\n- 随机难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 英雄难度的赛季地下城\n- 地下堡(难度5-6)\n- 珍宝猎手的奖赏(难度4-5)\n- 狩猎(困难)', 67186), +(3418, 'zhCN', '晦暗虚空核心', '在“至暗之夜”第1赛季团队副本中击败强大的敌人,或完成史诗钥石地下城、丰裕地下堡以及梦魇难度的狩猎,即可将其转化为强大的装备。', 67186), +(3391, 'zhCN', '冒险者曙光纹章', '用于升级“至暗之夜”第1赛季的冒险者装备,最多升级至物品等级224-237。可以从以下活动获得:\n\n- 可重复的户外活动\n- 地下堡(难度4)\n- 狩猎(普通)', 67186), +(3383, 'zhCN', '冒险者曙光纹章', '用于升级“至暗之夜”第1赛季的冒险者装备,最多升级至物品等级224-237。\n\n用于制造时,根据品质将制成品的物品等级设定为220-233。\n\n可以从以下活动获得:\n\n- 可重复的户外活动\n- 地下堡(难度4)\n- 狩猎(普通)', 67186), +(3348, 'zhCN', '神话曙光纹章', '用于升级“至暗之夜”第1赛季的神话装备,最多升级至物品等级276-289。可以从以下活动获得:\n\n 英雄难度的虚影尖塔、梦境裂隙和进军奎尔丹纳斯\n- 9级及以上的史诗钥石地下城', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='zhCN'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'zhCN', '鲁克兰', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'zhCN', '阿彻鲁斯之眼', 67186), +(264717, 'zhCN', '阿曼尼防护妖术', 67186), +(264338, 'zhCN', '多曼纳尔控制台', 67186), +(264336, 'zhCN', '虚光火盆', 67186), +(264332, 'zhCN', '阿曼尼仪式祭坛', 67186), +(263238, 'zhCN', '非法降雨长桌', 67186), +(263230, 'zhCN', '魔导师的书架', 67186), +(256683, 'zhCN', '银月城训练假人', 67186), +(253451, 'zhCN', '帷根喷泉', 67186), +(245938, 'zhCN', '蔓生的阿拉希篱笆', 67186), +(245560, 'zhCN', '酒庄赭色窗户', 67186), +(241044, 'zhCN', '阿古斯箱子', 67186), +(267641, 'zhCN', '褪色的银月城日顶头盔', 67186), +(267640, 'zhCN', '褪色的银月城日纱兜帽', 67186), +(267639, 'zhCN', '褪色的银月城日卫护面', 67186), +(267638, 'zhCN', '褪色的银月城太阳之塔头冠', 67186), +(267607, 'zhCN', '朦胧半影裹手', 67186), +(267606, 'zhCN', '无限引力手套', 67186), +(267605, 'zhCN', '无尽漩涡之握', 67186), +(267604, 'zhCN', '巨兽攫握', 67186), +(267482, 'zhCN', '新晋哈籁提防御者的重型腰带', 67186), +(267481, 'zhCN', '新晋哈籁提防御者的腰索', 67186), +(267480, 'zhCN', '新晋哈籁提防御者的腰带', 67186), +(267479, 'zhCN', '新晋哈籁提防御者的腰绳', 67186), +(266432, 'zhCN', '银月城日顶头盔', 67186), +(266431, 'zhCN', '银月城日纱兜帽', 67186), +(266430, 'zhCN', '银月城日卫护面', 67186), +(266429, 'zhCN', '银月城太阳之塔头冠', 67186), +(263269, 'zhCN', '哈籁提防御者的重型腰带', 67186), +(263268, 'zhCN', '哈籁提防御者的腰带', 67186), +(263267, 'zhCN', '哈籁提防御者的腰带', 67186), +(263265, 'zhCN', '哈籁提防御者的腰绳', 67186), +(272961, 'zhCN', '破法者的刃杖', 67186), +(272960, 'zhCN', '破法者的神盾', 67186), +(272318, 'zhCN', '破法者的凤凰之剑', 67186), +(272317, 'zhCN', '破法者的凤凰战刃', 67186), +(272316, 'zhCN', '破法者的刃枪', 67186), +(19355, 'zhCN', '暗影之翼', 67186), +(272338, 'zhCN', '法师卫队的精钢长剑', 67186), +(272337, 'zhCN', '法师卫队的魔刃', 67186), +(272336, 'zhCN', '废至信标裂隙重锤', 67186), +(272321, 'zhCN', '奥术游侠的魔弓', 67186), +(272320, 'zhCN', '废至信标裂隙引导杖', 67186), +(273874, 'zhCN', '虚空之触日怒长柄斧', 67186), +(263970, 'zhCN', '虚空之触战刃', 67186), +(263969, 'zhCN', '虚空之触巨杖', 67186), +(263968, 'zhCN', '虚空之触法器', 67186), +(263967, 'zhCN', '虚空之触巨弓', 67186), +(263966, 'zhCN', '虚空之触巨剑', 67186), +(263963, 'zhCN', '虚空之触决斗之刃', 67186), +(263960, 'zhCN', '虚空之触阔刃剑', 67186), +(263959, 'zhCN', '虚空之触秘典', 67186), +(263956, 'zhCN', '虚空之触击碎者', 67186), +(263954, 'zhCN', '虚空之触战斗短杖', 67186), +(263952, 'zhCN', '虚空之触日怒法杖', 67186), +(263950, 'zhCN', '虚空之触长铲', 67186), +(263949, 'zhCN', '虚空之触壁垒', 67186), +(263946, 'zhCN', '虚空之触粉碎者', 67186), +(263943, 'zhCN', '虚空之触剔骨者', 67186), +(263942, 'zhCN', '虚空之触尖牙', 67186), +(263941, 'zhCN', '虚空之触步枪', 67186), +(263707, 'zhCN', '虚空之怒护腕', 67186), +(263706, 'zhCN', '虚空之怒披风', 67186), +(263705, 'zhCN', '虚空之怒腰带', 67186), +(263704, 'zhCN', '虚空之怒护肩', 67186), +(263703, 'zhCN', '虚空之怒腿甲', 67186), +(263702, 'zhCN', '虚空之怒头盔', 67186), +(263701, 'zhCN', '虚空之怒护手', 67186), +(263700, 'zhCN', '虚空之怒战靴', 67186), +(263699, 'zhCN', '虚空之怒胸甲', 67186), +(263698, 'zhCN', '虚空宿敌上衣', 67186), +(263697, 'zhCN', '虚空宿敌护腕', 67186), +(263696, 'zhCN', '虚空宿敌披风', 67186), +(263695, 'zhCN', '虚空宿敌腰带', 67186), +(263694, 'zhCN', '虚空宿敌肩甲', 67186), +(263693, 'zhCN', '虚空宿敌护腿', 67186), +(263692, 'zhCN', '虚空宿敌便帽', 67186), +(263691, 'zhCN', '虚空宿敌手套', 67186), +(263690, 'zhCN', '虚空宿敌靴子', 67186), +(263689, 'zhCN', '虚空宿敌长袍', 67186), +(263688, 'zhCN', '虚影风暴护胫', 67186), +(263687, 'zhCN', '虚影风暴护腕', 67186), +(263686, 'zhCN', '虚影风暴披风', 67186), +(263685, 'zhCN', '虚影风暴腰带', 67186), +(263684, 'zhCN', '虚影风暴肩章', 67186), +(263683, 'zhCN', '虚影风暴护裙', 67186), +(263682, 'zhCN', '虚影风暴头盔', 67186), +(263681, 'zhCN', '虚影风暴护手', 67186), +(263680, 'zhCN', '虚影风暴战靴', 67186), +(263679, 'zhCN', '虚影风暴胸甲', 67186), +(263678, 'zhCN', '虚空之牙护腕', 67186), +(263677, 'zhCN', '虚空之牙披风', 67186), +(263676, 'zhCN', '虚空之牙腰带', 67186), +(263675, 'zhCN', '虚空之牙护肩', 67186), +(263674, 'zhCN', '虚空之牙长裤', 67186), +(263673, 'zhCN', '虚空之牙兜帽', 67186), +(263672, 'zhCN', '虚空之牙手套', 67186), +(263671, 'zhCN', '虚空之牙靴子', 67186), +(263670, 'zhCN', '虚空之牙胸甲', 67186), +(263669, 'zhCN', '虚空升腾上衣', 67186), +(263668, 'zhCN', '虚空升腾护腕', 67186), +(263667, 'zhCN', '虚空升腾披风', 67186), +(263666, 'zhCN', '虚空升腾腰带', 67186), +(263665, 'zhCN', '虚空升腾护肩', 67186), +(263664, 'zhCN', '虚空升腾护腿', 67186), +(263663, 'zhCN', '虚空升腾之环', 67186), +(263662, 'zhCN', '虚空升腾手套', 67186), +(263661, 'zhCN', '虚空升腾靴子', 67186), +(263660, 'zhCN', '虚空升腾长袍', 67186), +(263659, 'zhCN', '虚空审判胫甲', 67186), +(263658, 'zhCN', '虚空审判束腕', 67186), +(263657, 'zhCN', '虚空审判披风', 67186), +(263656, 'zhCN', '虚空审判腰带', 67186), +(263655, 'zhCN', '虚空审判肩铠', 67186), +(263654, 'zhCN', '虚空审判腿铠', 67186), +(263653, 'zhCN', '虚空审判头冠', 67186), +(263652, 'zhCN', '虚空审判护手', 67186), +(263651, 'zhCN', '虚空审判马靴', 67186), +(263650, 'zhCN', '虚空审判胸甲', 67186), +(263649, 'zhCN', '虚空侍从的腕轮', 67186), +(263648, 'zhCN', '虚空侍从的披风', 67186), +(263647, 'zhCN', '虚空侍从的腰带', 67186), +(263646, 'zhCN', '虚空侍从的披肩', 67186), +(263645, 'zhCN', '虚空侍从的长裤', 67186), +(263644, 'zhCN', '虚空侍从的头盔', 67186), +(263643, 'zhCN', '虚空侍从的护手', 67186), +(263642, 'zhCN', '虚空侍从的指爪', 67186), +(263641, 'zhCN', '虚空侍从的马甲', 67186), +(263640, 'zhCN', '虚空之风上衣', 67186), +(263639, 'zhCN', '虚空之风腕轮', 67186), +(263638, 'zhCN', '虚空之风披风', 67186), +(263637, 'zhCN', '虚空之风腰带', 67186), +(263636, 'zhCN', '虚空之风衬肩', 67186), +(263635, 'zhCN', '虚空之风长裤', 67186), +(263634, 'zhCN', '虚空之风冠冕', 67186), +(263633, 'zhCN', '虚空之风手套', 67186), +(263632, 'zhCN', '虚空之风靴子', 67186), +(263631, 'zhCN', '虚空之风长袍', 67186), +(263630, 'zhCN', '虚空追猎者的护腕', 67186), +(263629, 'zhCN', '虚空追猎者的披风', 67186), +(263628, 'zhCN', '虚空追猎者的腰带', 67186), +(263627, 'zhCN', '虚空追猎者的肩甲', 67186), +(263626, 'zhCN', '虚空追猎者的护腿', 67186), +(263625, 'zhCN', '虚空追猎者的头盔', 67186), +(263624, 'zhCN', '虚空追猎者的护手', 67186), +(263623, 'zhCN', '虚空追猎者的护胫', 67186), +(263622, 'zhCN', '虚空追猎者的胸甲', 67186), +(263621, 'zhCN', '虚空卫士的护腕', 67186), +(263620, 'zhCN', '虚空卫士的披风', 67186), +(263619, 'zhCN', '虚空卫士的束带', 67186), +(263618, 'zhCN', '虚空卫士的护肩', 67186), +(263617, 'zhCN', '虚空卫士的腿甲', 67186), +(263616, 'zhCN', '虚空卫士的冠冕', 67186), +(263615, 'zhCN', '虚空卫士的利爪', 67186), +(263614, 'zhCN', '虚空卫士的指爪', 67186), +(263613, 'zhCN', '虚空卫士的胸甲', 67186), +(263612, 'zhCN', '虚空邪怒护胸', 67186), +(263611, 'zhCN', '虚空邪怒护腕', 67186), +(263610, 'zhCN', '虚空邪怒披风', 67186), +(263609, 'zhCN', '虚空邪怒腰带', 67186), +(263608, 'zhCN', '虚空邪怒护肩', 67186), +(263607, 'zhCN', '虚空邪怒护腿', 67186), +(263606, 'zhCN', '虚空邪怒罩帽', 67186), +(263605, 'zhCN', '虚空邪怒手套', 67186), +(263604, 'zhCN', '虚空邪怒靴子', 67186), +(263603, 'zhCN', '虚空邪怒长袍', 67186), +(263602, 'zhCN', '虚空行者的腕轮', 67186), +(263601, 'zhCN', '虚空行者的披风', 67186), +(263600, 'zhCN', '虚空行者的腰带', 67186), +(263599, 'zhCN', '虚空行者的肩甲', 67186), +(263598, 'zhCN', '虚空行者的护腿', 67186), +(263597, 'zhCN', '虚空行者的颅帽', 67186), +(263596, 'zhCN', '虚空行者的手套', 67186), +(263595, 'zhCN', '虚空行者的便鞋', 67186), +(263594, 'zhCN', '虚空行者的护甲', 67186), +(263593, 'zhCN', '虚空骑手的护腕', 67186), +(263592, 'zhCN', '虚空骑手的披风', 67186), +(263591, 'zhCN', '虚空骑手的束带', 67186), +(263590, 'zhCN', '虚空骑手的护肩', 67186), +(263589, 'zhCN', '虚空骑手的护腿', 67186), +(263588, 'zhCN', '虚空骑手的头盔', 67186), +(263587, 'zhCN', '虚空骑手的手套', 67186), +(263586, 'zhCN', '虚空骑手的战靴', 67186), +(263585, 'zhCN', '虚空骑手的胸甲', 67186), +(251161, 'zhCN', '猎魂者的斗篷', 67186), +(133494, 'zhCN', '凶尸腰索', 67186), +(49810, 'zhCN', '凶尸腰索', 67186), +(263286, 'zhCN', '改装的真菌人之锣', 67186), +(255627, 'zhCN', '星河角斗士的战锤', 67186), +(253582, 'zhCN', '牙鳍抽击锤', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'zhCN', '教你学会施加幻影魔饰:梦的附魔效果。', '', '', '', '公式:幻影魔饰:梦', 67186), +(206969, 'zhCN', '', '', '', '', '幻影魔饰:梦', 67186), +(206968, 'zhCN', '', '', '', '', '幻影魔饰:梦', 67186), +(206967, 'zhCN', '', '', '', '', '幻影魔饰:梦', 67186), +(204977, 'zhCN', '教你学会施加幻影魔饰:孢的附魔效果。', '', '', '', '公式:幻影魔饰:孢', 67186), +(204568, 'zhCN', '', '', '', '', '幻影魔饰:孢', 67186), +(204567, 'zhCN', '', '', '', '', '幻影魔饰:孢', 67186), +(204565, 'zhCN', '', '', '', '', '幻影魔饰:孢', 67186), +(201321, 'zhCN', '', '', '', '', '幻影魔饰:秩序', 67186), +(201320, 'zhCN', '', '', '', '', '幻影魔饰:秩序', 67186), +(201319, 'zhCN', '', '', '', '', '幻影魔饰:秩序', 67186), +(201318, 'zhCN', '', '', '', '', '幻影魔饰:气', 67186), +(201317, 'zhCN', '', '', '', '', '幻影魔饰:气', 67186), +(201316, 'zhCN', '', '', '', '', '幻影魔饰:气', 67186), +(201315, 'zhCN', '', '', '', '', '幻影魔饰:土', 67186), +(201314, 'zhCN', '', '', '', '', '幻影魔饰:土', 67186), +(201313, 'zhCN', '', '', '', '', '幻影魔饰:土', 67186), +(201312, 'zhCN', '', '', '', '', '幻影魔饰:霜', 67186), +(201311, 'zhCN', '', '', '', '', '幻影魔饰:霜', 67186), +(201310, 'zhCN', '', '', '', '', '幻影魔饰:霜', 67186), +(200616, 'zhCN', '', '', '', '', '幻影魔饰:火', 67186), +(200615, 'zhCN', '', '', '', '', '幻影魔饰:火', 67186), +(200614, 'zhCN', '', '', '', '', '幻影魔饰:火', 67186), +(245345, 'zhCN', '由纯粹的原始能量凝结而成的微粒。可向丰饶商人削凿者切尔或深渊钓客深潜者图纳基特购买。', '', '', '', '熔铸活力', 67186), +(243343, 'zhCN', '这一扇窗户打开了万千可能。', '', '', '', '垂钓客的畸体', 67186), +(243302, 'zhCN', '一种效力强劲的生长催化剂。', '', '', '', '宝瓶花', 67186), +(274267, 'zhCN', '由纯粹的原始能量凝结而成的微粒。可向丰饶商人削凿者切尔或深渊钓客深潜者图纳基特购买。', '', '', '', '熔铸活力', 67186), +(255157, 'zhCN', '', '', '', '', '深渊钓客的钓鱼日志', 67186), +(239563, 'zhCN', '教你学会召唤虚痕山猫。这种坐骑的速度会根据你的骑术等级和所在区域改变。', '', '', '', '影缚束带', 67186), +(223245, 'zhCN', '', '', '', '', '套装:深渊钓客', 67186), +(267009, 'zhCN', '', '', '', '', '阿曼尼训练假人', 67186), +(267007, 'zhCN', '', '', '', '', '阿彻鲁斯之眼', 67186), +(264717, 'zhCN', '', '', '', '', '阿曼尼防护妖术', 67186), +(264342, 'zhCN', '', '', '', '', '宇宙虚空宝箱', 67186), +(264338, 'zhCN', '', '', '', '', '多曼纳尔控制台', 67186), +(264336, 'zhCN', '', '', '', '', '虚光火盆', 67186), +(264332, 'zhCN', '', '', '', '', '阿曼尼仪式祭坛', 67186), +(264330, 'zhCN', '', '', '', '', '阿曼尼悬挂火盆', 67186), +(264329, 'zhCN', '', '', '', '', '阿曼尼餐桌', 67186), +(264258, 'zhCN', '', '', '', '', '盛放熔炉', 67186), +(263238, 'zhCN', '', '', '', '', '非法降雨长桌', 67186), +(263233, 'zhCN', '', '', '', '', '辛多雷旋转书库', 67186), +(263230, 'zhCN', '', '', '', '', '魔导师的书架', 67186), +(263042, 'zhCN', '', '', '', '', '根光路灯', 67186), +(263036, 'zhCN', '', '', '', '', '悬挂的晨花', 67186), +(256683, 'zhCN', '', '', '', '', '银月城训练假人', 67186), +(253451, 'zhCN', '', '', '', '', '帷根喷泉', 67186), +(251967, 'zhCN', '', '', '', '', '真菌人旗帜', 67186), +(245938, 'zhCN', '', '', '', '', '蔓生的阿拉希篱笆', 67186), +(245560, 'zhCN', '', '', '', '', '酒庄赭色窗户', 67186), +(241044, 'zhCN', '', '', '', '', '阿古斯箱子', 67186), +(264914, 'zhCN', '该宝箱包含战地奖赏、遗物宝匣钥匙碎片、升级装备的材料、金币等。', '', '', '', '游侠的宝箱', 67186), +(275447, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '投机型切割坦克', 67186), +(275446, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '高收益切割坦克', 67186), +(275445, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '盈利绿切割坦克', 67186), +(275444, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '蓝筹股切割坦克', 67186), +(275442, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '紫水晶机甲', 67186), +(275440, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '天蓝死亡行者', 67186), +(275436, 'zhCN', '由“\‘至暗之夜\’钥石神话:第一赛季”成就奖励。身处银月城或时间流中的林多尔米很有兴趣和你交易这个物品。将在赛季结束时过期。', '', '', '', '迷时鞍座', 67186), +(248248, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '碧蓝虚空飞镰虫', 67186), +(247822, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '赤红虚空飞镰虫', 67186), +(237141, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '进取型切割坦克', 67186), +(235549, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '赤红切割坦克', 67186), +(226357, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '钻石机甲', 67186), +(213438, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '永恒厚甲龙', 67186), +(209060, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '苍郁厚甲龙', 67186), +(204798, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '地狱火厚甲龙', 67186), +(199412, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '雹风厚甲龙', 67186), +(192557, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '复苏死亡行者', 67186), +(187682, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '荒折死亡行者', 67186), +(187525, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '曲魂死亡行者', 67186), +(182717, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '罪触死亡行者', 67186), +(174836, 'zhCN', '教你学会召唤这种坐骑。', '', '', '', '觉醒的钻心之蛇', 67186), +(257741, 'zhCN', '可以在拍卖行购买和出售。', '', '', '', '爆破馆长B0P', 67186), +(257735, 'zhCN', '可以在拍卖行购买和出售。', '', '', '', '爆破馆长B0P', 67186), +(255844, 'zhCN', '可以在拍卖行购买和出售。', '', '', '', '冷漠幼犬HU5H', 67186), +(255843, 'zhCN', '可以在拍卖行购买和出售。', '', '', '', '冷漠幼犬HU5H', 67186), +(248592, 'zhCN', '召唤焚魂者B1P。可由拥有工程学技能的玩家制作。可以在拍卖行购买和出售。', '', '', '', '焚魂者B1P', 67186), +(248135, 'zhCN', '召唤焚魂者比普。可由拥有工程学技能的玩家制作。可以在拍卖行购买和出售。', '', '', '', '焚魂者B1P', 67186), +(274427, 'zhCN', '注意:不保证装有坐骑。', '', '', '', '附煞宝箱', 67186), +(267643, 'zhCN', '', '', '', '', '破损的阿曼尼图腾索', 67186), +(267642, 'zhCN', '', '', '', '', '破损的阿曼尼心弦吊坠', 67186), +(267641, 'zhCN', '', '', '', '', '褪色的银月城日顶头盔', 67186), +(267640, 'zhCN', '', '', '', '', '褪色的银月城日纱兜帽', 67186), +(267639, 'zhCN', '', '', '', '', '褪色的银月城日卫护面', 67186), +(267638, 'zhCN', '', '', '', '', '褪色的银月城太阳之塔头冠', 67186), +(267607, 'zhCN', '', '', '', '', '朦胧半影裹手', 67186), +(267606, 'zhCN', '', '', '', '', '无限引力手套', 67186), +(267605, 'zhCN', '', '', '', '', '无尽漩涡之握', 67186), +(267604, 'zhCN', '', '', '', '', '巨兽攫握', 67186), +(267482, 'zhCN', '', '', '', '', '新晋哈籁提防御者的重型腰带', 67186), +(267481, 'zhCN', '', '', '', '', '新晋哈籁提防御者的腰索', 67186), +(267480, 'zhCN', '', '', '', '', '新晋哈籁提防御者的腰带', 67186), +(267479, 'zhCN', '', '', '', '', '新晋哈籁提防御者的腰绳', 67186), +(266432, 'zhCN', '', '', '', '', '银月城日顶头盔', 67186), +(266431, 'zhCN', '', '', '', '', '银月城日纱兜帽', 67186), +(266430, 'zhCN', '', '', '', '', '银月城日卫护面', 67186), +(266429, 'zhCN', '', '', '', '', '银月城太阳之塔头冠', 67186), +(265740, 'zhCN', '', '', '', '', '阿曼尼图腾索', 67186), +(265739, 'zhCN', '', '', '', '', '阿曼尼心弦吊坠', 67186), +(264507, 'zhCN', '', '', '', '', '异变能量坩埚', 67186), +(263269, 'zhCN', '', '', '', '', '哈籁提防御者的重型腰带', 67186), +(263268, 'zhCN', '', '', '', '', '哈籁提防御者的腰带', 67186), +(263267, 'zhCN', '', '', '', '', '哈籁提防御者的腰带', 67186), +(263265, 'zhCN', '', '', '', '', '哈籁提防御者的腰绳', 67186), +(270562, 'zhCN', '一个带有奇特污痕的骨骼样本。暗谷女士或许会对这东西感兴趣。', '', '', '', '受污样本', 67186), +(249497, 'zhCN', '这种胡椒过于火辣,甚至被太阳之井拒于门外。', '', '', '', '幽魂之地胡椒', 67186), +(272961, 'zhCN', '', '', '', '', '破法者的刃杖', 67186), +(272960, 'zhCN', '', '', '', '', '破法者的神盾', 67186), +(272318, 'zhCN', '', '', '', '', '破法者的凤凰之剑', 67186), +(272317, 'zhCN', '', '', '', '', '破法者的凤凰战刃', 67186), +(272316, 'zhCN', '', '', '', '', '破法者的刃枪', 67186), +(271631, 'zhCN', '注意:不保证装有真实坐骑。', '', '', '', '圣光守卫者的奖赏', 67186), +(19355, 'zhCN', '', '', '', '', '暗影之翼', 67186), +(274578, 'zhCN', '钝顿,丰饶之神赐予的小小恩惠,内含4500份纯粹丰饶。', '', '', '', '纯粹丰饶供品', 67186), +(268455, 'zhCN', '', '', '', '', '附魔沙漏', 67186), +(268122, 'zhCN', '你的硬币已消散。请在下一场比赛中继续表现。', '', '', '', '消散的硬币', 67186), +(272338, 'zhCN', '', '', '', '', '法师卫队的精钢长剑', 67186), +(272337, 'zhCN', '', '', '', '', '法师卫队的魔刃', 67186), +(272336, 'zhCN', '', '', '', '', '废至信标裂隙重锤', 67186), +(272321, 'zhCN', '', '', '', '', '奥术游侠的魔弓', 67186), +(272320, 'zhCN', '', '', '', '', '废至信标裂隙引导杖', 67186), +(268481, 'zhCN', '教你学会召唤破阵蜜蜂。这种坐骑的速度会根据你的骑术等级和所在区域改变。', '', '', '', '魔导师的法术之蜂蜂巢', 67186), +(268456, 'zhCN', '', '', '', '', '活化长椅', 67186), +(273874, 'zhCN', '', '', '', '', '虚空之触日怒长柄斧', 67186), +(263970, 'zhCN', '', '', '', '', '虚空之触战刃', 67186), +(263969, 'zhCN', '', '', '', '', '虚空之触巨杖', 67186), +(263968, 'zhCN', '', '', '', '', '虚空之触法器', 67186), +(263967, 'zhCN', '', '', '', '', '虚空之触巨弓', 67186), +(263966, 'zhCN', '', '', '', '', '虚空之触巨剑', 67186), +(263963, 'zhCN', '', '', '', '', '虚空之触决斗之刃', 67186), +(263960, 'zhCN', '', '', '', '', '虚空之触阔刃剑', 67186), +(263959, 'zhCN', '', '', '', '', '虚空之触秘典', 67186), +(263956, 'zhCN', '', '', '', '', '虚空之触击碎者', 67186), +(263954, 'zhCN', '', '', '', '', '虚空之触战斗短杖', 67186), +(263952, 'zhCN', '', '', '', '', '虚空之触日怒法杖', 67186), +(263950, 'zhCN', '', '', '', '', '虚空之触长铲', 67186), +(263949, 'zhCN', '', '', '', '', '虚空之触壁垒', 67186), +(263946, 'zhCN', '', '', '', '', '虚空之触粉碎者', 67186), +(263943, 'zhCN', '', '', '', '', '虚空之触剔骨者', 67186), +(263942, 'zhCN', '', '', '', '', '虚空之触尖牙', 67186), +(263941, 'zhCN', '', '', '', '', '虚空之触步枪', 67186), +(263707, 'zhCN', '', '', '', '', '虚空之怒护腕', 67186), +(263706, 'zhCN', '', '', '', '', '虚空之怒披风', 67186), +(263705, 'zhCN', '', '', '', '', '虚空之怒腰带', 67186), +(263704, 'zhCN', '', '', '', '', '虚空之怒护肩', 67186), +(263703, 'zhCN', '', '', '', '', '虚空之怒腿甲', 67186), +(263702, 'zhCN', '', '', '', '', '虚空之怒头盔', 67186), +(263701, 'zhCN', '', '', '', '', '虚空之怒护手', 67186), +(263700, 'zhCN', '', '', '', '', '虚空之怒战靴', 67186), +(263699, 'zhCN', '', '', '', '', '虚空之怒胸甲', 67186), +(263698, 'zhCN', '', '', '', '', '虚空宿敌上衣', 67186), +(263697, 'zhCN', '', '', '', '', '虚空宿敌护腕', 67186), +(263696, 'zhCN', '', '', '', '', '虚空宿敌披风', 67186), +(263695, 'zhCN', '', '', '', '', '虚空宿敌腰带', 67186), +(263694, 'zhCN', '', '', '', '', '虚空宿敌肩甲', 67186), +(263693, 'zhCN', '', '', '', '', '虚空宿敌护腿', 67186), +(263692, 'zhCN', '', '', '', '', '虚空宿敌便帽', 67186), +(263691, 'zhCN', '', '', '', '', '虚空宿敌手套', 67186), +(263690, 'zhCN', '', '', '', '', '虚空宿敌靴子', 67186), +(263689, 'zhCN', '', '', '', '', '虚空宿敌长袍', 67186), +(263688, 'zhCN', '', '', '', '', '虚影风暴护胫', 67186), +(263687, 'zhCN', '', '', '', '', '虚影风暴护腕', 67186), +(263686, 'zhCN', '', '', '', '', '虚影风暴披风', 67186), +(263685, 'zhCN', '', '', '', '', '虚影风暴腰带', 67186), +(263684, 'zhCN', '', '', '', '', '虚影风暴肩章', 67186), +(263683, 'zhCN', '', '', '', '', '虚影风暴护裙', 67186), +(263682, 'zhCN', '', '', '', '', '虚影风暴头盔', 67186), +(263681, 'zhCN', '', '', '', '', '虚影风暴护手', 67186), +(263680, 'zhCN', '', '', '', '', '虚影风暴战靴', 67186), +(263679, 'zhCN', '', '', '', '', '虚影风暴胸甲', 67186), +(263678, 'zhCN', '', '', '', '', '虚空之牙护腕', 67186), +(263677, 'zhCN', '', '', '', '', '虚空之牙披风', 67186), +(263676, 'zhCN', '', '', '', '', '虚空之牙腰带', 67186), +(263675, 'zhCN', '', '', '', '', '虚空之牙护肩', 67186), +(263674, 'zhCN', '', '', '', '', '虚空之牙长裤', 67186), +(263673, 'zhCN', '', '', '', '', '虚空之牙兜帽', 67186), +(263672, 'zhCN', '', '', '', '', '虚空之牙手套', 67186), +(263671, 'zhCN', '', '', '', '', '虚空之牙靴子', 67186), +(263670, 'zhCN', '', '', '', '', '虚空之牙胸甲', 67186), +(263669, 'zhCN', '', '', '', '', '虚空升腾上衣', 67186), +(263668, 'zhCN', '', '', '', '', '虚空升腾护腕', 67186), +(263667, 'zhCN', '', '', '', '', '虚空升腾披风', 67186), +(263666, 'zhCN', '', '', '', '', '虚空升腾腰带', 67186), +(263665, 'zhCN', '', '', '', '', '虚空升腾护肩', 67186), +(263664, 'zhCN', '', '', '', '', '虚空升腾护腿', 67186), +(263663, 'zhCN', '', '', '', '', '虚空升腾之环', 67186), +(263662, 'zhCN', '', '', '', '', '虚空升腾手套', 67186), +(263661, 'zhCN', '', '', '', '', '虚空升腾靴子', 67186), +(263660, 'zhCN', '', '', '', '', '虚空升腾长袍', 67186), +(263659, 'zhCN', '', '', '', '', '虚空审判胫甲', 67186), +(263658, 'zhCN', '', '', '', '', '虚空审判束腕', 67186), +(263657, 'zhCN', '', '', '', '', '虚空审判披风', 67186), +(263656, 'zhCN', '', '', '', '', '虚空审判腰带', 67186), +(263655, 'zhCN', '', '', '', '', '虚空审判肩铠', 67186), +(263654, 'zhCN', '', '', '', '', '虚空审判腿铠', 67186), +(263653, 'zhCN', '', '', '', '', '虚空审判头冠', 67186), +(263652, 'zhCN', '', '', '', '', '虚空审判护手', 67186), +(263651, 'zhCN', '', '', '', '', '虚空审判马靴', 67186), +(263650, 'zhCN', '', '', '', '', '虚空审判胸甲', 67186), +(263649, 'zhCN', '', '', '', '', '虚空侍从的腕轮', 67186), +(263648, 'zhCN', '', '', '', '', '虚空侍从的披风', 67186), +(263647, 'zhCN', '', '', '', '', '虚空侍从的腰带', 67186), +(263646, 'zhCN', '', '', '', '', '虚空侍从的披肩', 67186), +(263645, 'zhCN', '', '', '', '', '虚空侍从的长裤', 67186), +(263644, 'zhCN', '', '', '', '', '虚空侍从的头盔', 67186), +(263643, 'zhCN', '', '', '', '', '虚空侍从的护手', 67186), +(263642, 'zhCN', '', '', '', '', '虚空侍从的指爪', 67186), +(263641, 'zhCN', '', '', '', '', '虚空侍从的马甲', 67186), +(263640, 'zhCN', '', '', '', '', '虚空之风上衣', 67186), +(263639, 'zhCN', '', '', '', '', '虚空之风腕轮', 67186), +(263638, 'zhCN', '', '', '', '', '虚空之风披风', 67186), +(263637, 'zhCN', '', '', '', '', '虚空之风腰带', 67186), +(263636, 'zhCN', '', '', '', '', '虚空之风衬肩', 67186), +(263635, 'zhCN', '', '', '', '', '虚空之风长裤', 67186), +(263634, 'zhCN', '', '', '', '', '虚空之风冠冕', 67186), +(263633, 'zhCN', '', '', '', '', '虚空之风手套', 67186), +(263632, 'zhCN', '', '', '', '', '虚空之风靴子', 67186), +(263631, 'zhCN', '', '', '', '', '虚空之风长袍', 67186), +(263630, 'zhCN', '', '', '', '', '虚空追猎者的护腕', 67186), +(263629, 'zhCN', '', '', '', '', '虚空追猎者的披风', 67186), +(263628, 'zhCN', '', '', '', '', '虚空追猎者的腰带', 67186), +(263627, 'zhCN', '', '', '', '', '虚空追猎者的肩甲', 67186), +(263626, 'zhCN', '', '', '', '', '虚空追猎者的护腿', 67186), +(263625, 'zhCN', '', '', '', '', '虚空追猎者的头盔', 67186), +(263624, 'zhCN', '', '', '', '', '虚空追猎者的护手', 67186), +(263623, 'zhCN', '', '', '', '', '虚空追猎者的护胫', 67186), +(263622, 'zhCN', '', '', '', '', '虚空追猎者的胸甲', 67186), +(263621, 'zhCN', '', '', '', '', '虚空卫士的护腕', 67186), +(263620, 'zhCN', '', '', '', '', '虚空卫士的披风', 67186), +(263619, 'zhCN', '', '', '', '', '虚空卫士的束带', 67186), +(263618, 'zhCN', '', '', '', '', '虚空卫士的护肩', 67186), +(263617, 'zhCN', '', '', '', '', '虚空卫士的腿甲', 67186), +(263616, 'zhCN', '', '', '', '', '虚空卫士的冠冕', 67186), +(263615, 'zhCN', '', '', '', '', '虚空卫士的利爪', 67186), +(263614, 'zhCN', '', '', '', '', '虚空卫士的指爪', 67186), +(263613, 'zhCN', '', '', '', '', '虚空卫士的胸甲', 67186), +(263612, 'zhCN', '', '', '', '', '虚空邪怒护胸', 67186), +(263611, 'zhCN', '', '', '', '', '虚空邪怒护腕', 67186), +(263610, 'zhCN', '', '', '', '', '虚空邪怒披风', 67186), +(263609, 'zhCN', '', '', '', '', '虚空邪怒腰带', 67186), +(263608, 'zhCN', '', '', '', '', '虚空邪怒护肩', 67186), +(263607, 'zhCN', '', '', '', '', '虚空邪怒护腿', 67186), +(263606, 'zhCN', '', '', '', '', '虚空邪怒罩帽', 67186), +(263605, 'zhCN', '', '', '', '', '虚空邪怒手套', 67186), +(263604, 'zhCN', '', '', '', '', '虚空邪怒靴子', 67186), +(263603, 'zhCN', '', '', '', '', '虚空邪怒长袍', 67186), +(263602, 'zhCN', '', '', '', '', '虚空行者的腕轮', 67186), +(263601, 'zhCN', '', '', '', '', '虚空行者的披风', 67186), +(263600, 'zhCN', '', '', '', '', '虚空行者的腰带', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'zhCN', '', '', '', '', '虚空行者的肩甲', 67186), +(263598, 'zhCN', '', '', '', '', '虚空行者的护腿', 67186), +(263597, 'zhCN', '', '', '', '', '虚空行者的颅帽', 67186), +(263596, 'zhCN', '', '', '', '', '虚空行者的手套', 67186), +(263595, 'zhCN', '', '', '', '', '虚空行者的便鞋', 67186), +(263594, 'zhCN', '', '', '', '', '虚空行者的护甲', 67186), +(263593, 'zhCN', '', '', '', '', '虚空骑手的护腕', 67186), +(263592, 'zhCN', '', '', '', '', '虚空骑手的披风', 67186), +(263591, 'zhCN', '', '', '', '', '虚空骑手的束带', 67186), +(263590, 'zhCN', '', '', '', '', '虚空骑手的护肩', 67186), +(263589, 'zhCN', '', '', '', '', '虚空骑手的护腿', 67186), +(263588, 'zhCN', '', '', '', '', '虚空骑手的头盔', 67186), +(263587, 'zhCN', '', '', '', '', '虚空骑手的手套', 67186), +(263586, 'zhCN', '', '', '', '', '虚空骑手的战靴', 67186), +(263585, 'zhCN', '', '', '', '', '虚空骑手的胸甲', 67186), +(251161, 'zhCN', '邪枝巨魔秘而不宣的扭曲仪式遗物。', '', '', '', '猎魂者的斗篷', 67186), +(133494, 'zhCN', '', '', '', '', '凶尸腰索', 67186), +(49810, 'zhCN', '', '', '', '', '凶尸腰索', 67186), +(264323, 'zhCN', '包含一件尚未收藏的虚空之触武器幻化。', '', '', '', '虚空之触武器宝箱', 67186), +(264322, 'zhCN', '包含一件尚未收藏的虚空之触靴子幻化。', '', '', '', '虚空之触靴子宝箱', 67186), +(264321, 'zhCN', '包含一件尚未收藏的虚空之触腿甲幻化。', '', '', '', '虚空之触腿甲宝箱', 67186), +(264320, 'zhCN', '包含一件尚未收藏的虚空之触腰带幻化。', '', '', '', '虚空之触腰带宝箱', 67186), +(264319, 'zhCN', '包含一件尚未收藏的虚空之触手套幻化。', '', '', '', '虚空之触手套宝箱', 67186), +(264318, 'zhCN', '包含一件尚未收藏的虚空之触护腕幻化。', '', '', '', '虚空之触护腕宝箱', 67186), +(264317, 'zhCN', '包含一件尚未收藏的虚空之触胸甲幻化。', '', '', '', '虚空之触胸甲宝箱', 67186), +(264316, 'zhCN', '包含一件尚未收藏的虚空之触披风幻化。', '', '', '', '虚空之触披风宝箱', 67186), +(264315, 'zhCN', '包含一件尚未收藏的虚空之触护肩幻化。', '', '', '', '虚空之触护肩宝箱', 67186), +(264314, 'zhCN', '包含一件尚未收藏的虚空之触头饰幻化。', '', '', '', '虚空之触头饰宝箱', 67186), +(256700, 'zhCN', '教你学会制作艾泽拉斯祝福印戒。', '', '', '', '图鉴:艾泽拉斯祝福印戒', 67186), +(250445, 'zhCN', '', '', '', '', '丰饶回响:附魔', 67186), +(250360, 'zhCN', '', '', '', '', '丰饶回响:剥皮', 67186), +(250443, 'zhCN', '', '', '', '', '丰饶回响:草药学', 67186), +(272125, 'zhCN', '内含金币、虚光灰岩,以及一件符合你当前专精的装备,以此彰显你在该领域的敏锐洞察力。', '', '', '', '新兵宝箱', 67186), +(263286, 'zhCN', '', '', '', '', '改装的真菌人之锣', 67186), +(273307, 'zhCN', '由一位无畏的企业家新鲜压榨!闪烁着糖晶……或者法力水晶的光芒?', '', '', '', '无畏柠檬水瓶', 67186), +(265790, 'zhCN', '一个背包,内含10个英雄和神话曙光纹章。', '', '', '', '曙光纹章宝箱', 67186), +(246753, 'zhCN', '', '', '', '', '一簇辉煌的神话曙光纹章', 67186), +(255627, 'zhCN', '', '', '', '', '星河角斗士的战锤', 67186), +(266969, 'zhCN', '', '', '', '', '套装:深潜者服饰', 67186), +(253582, 'zhCN', '', '', '', '', '牙鳍抽击锤', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'zhCN', '坦克', '$bullet;囤宝狂人在施放|cFF2959D3|Hspell:1235072|h[资源巧用]|h|r期间会从最近的资源堆中收集资源。\n$bullet;接触腐烂的蘑菇会施加|cFF2959D3|Hspell:1234846|h[剧毒孢子]|h|r,阻止其引发|cFF2959D3|Hspell:1245593|h[腐烂爆发]|h|r。\n$bullet;|cFF2959D3|Hspell:1234681|h[贪婪咆哮]|h|r和|cFF2959D3|Hspell:1235125|h[饕餮怒吼]|h|r对所有玩家造成高额伤害。', 67186), +(32669, 'zhCN', '综述', '囤宝狂人会不惜一切代价阻止他的囤宝被盗,在生命值达到90%、60%和30%时施放|cFF2959D3|Hspell:1235072|h[资源巧用]|h|r,强化他的一个技能。\n\n能量达到100时,他会扔出|cFF2959D3|Hspell:1234233|h[腐坏补给]|h|r,使其生长成腐烂的蘑菇,持续12秒。接触后,这些蘑菇会施加|cFF2959D3|Hspell:1234846|h[剧毒孢子]|h|r并被摧毁,阻止|cFF2959D3|Hspell:1245593|h[腐烂爆发]|h|r。', 67186), +(31527, 'zhCN', '违禁的货物', '一批需要避人耳目的货物。可以作为绝佳的掩体。', 67186), +(31282, 'zhCN', '坦克', '$bullet;凯斯媞亚通过|cFF2959D3|Hspell:1230289|h[非法灌注]|h|r使咬咬对玩家怀有敌意。\n$bullet;躲开咬咬的|cFF2959D3|Hspell:1253811|h[邪能飞溅]|h|r。\n$bullet;打断凯斯媞亚的|cFF2959D3|Hspell:1264095|h[镜像]|h|r。', 67186), +(31281, 'zhCN', '治疗者', '$bullet;凯斯媞亚通过|cFF2959D3|Hspell:1230289|h[非法灌注]|h|r使咬咬对玩家怀有敌意。\n$bullet;躲开咬咬的|cFF2959D3|Hspell:1253811|h[邪能飞溅]|h|r。\n$bullet;凯斯媞亚在|cFF2959D3|Hspell:1265412|h[不稳定]|h|r状态下会对所有玩家造成大量伤害。', 67186), +(31280, 'zhCN', '伤害输出者', '$bullet;凯斯媞亚通过|cFF2959D3|Hspell:1230289|h[非法灌注]|h|r使咬咬对玩家怀有敌意。\n$bullet;躲开咬咬的|cFF2959D3|Hspell:1253811|h[邪能飞溅]|h|r。\n$bullet;打断凯斯媞亚的|cFF2959D3|Hspell:1264095|h[镜像]|h|r。', 67186), +(35862, 'zhCN', 'Section 18', '', 67186), +(35353, 'zhCN', '第17部分', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'zhCN', '第17部分', '', 67186), +(34733, 'zhCN', '萨拉塔斯的狡诈', '萨拉塔斯背叛了玩家,撤销了自己的交易,而且每次角色死亡都会让剩余时间减少15秒。', 67186), +(34732, 'zhCN', '强韧', '非首领敌人的生命值提高20%,造成的伤害最多提高20%。', 67186), +(34731, 'zhCN', '残暴', '首领的生命值提高25%,首领及其爪牙造成的伤害最多提高15%。', 67186), +(34730, 'zhCN', '残暴与强韧', '这些词缀会进一步强化史诗钥石地下城中的敌人。一个在史诗等级7激活,另一个在史诗等级10激活,每周轮换。', 67186), +(34727, 'zhCN', '萨拉塔斯的交易:吞噬', '', 67186), +(34725, 'zhCN', '萨拉塔斯的交易:虚缚', '', 67186), +(34722, 'zhCN', '萨拉塔斯的交易:脉冲', '', 67186), +(34720, 'zhCN', '史诗等级6', '$bullet;|cFF2959D3|Hspell:1284818|h[林多尔米的指引]|h|r被移除。\n\n拥有坦克专精的角色可以与时间流传送门附近或史诗钥石地下城终点处的林多尔米交谈,获得|cFF2959D3|Hspell:1295986|h[林多尔米的光辉]|h|r,该效果将继续标记敌方部队。', 67186), +(35809, 'zhCN', 'Section 158', '', 67186), +(35491, 'zhCN', '第69部分', '', 67186), +(35490, 'zhCN', '第70部分', '', 67186), +(35489, 'zhCN', '第76部分', '', 67186), +(35488, 'zhCN', '第67部分', '$[!15,16\n在英雄及更高难度下,充电会释放过载电流。$]', 67186), +(35477, 'zhCN', '第22部分', '', 67186), +(35476, 'zhCN', '第31部分', '', 67186), +(35475, 'zhCN', '第30部分', '', 67186), +(35474, 'zhCN', '第29部分', '', 67186), +(35473, 'zhCN', '第31部分', '', 67186), +(35472, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。\n$[!16\n在史诗难度下,黎明水晶有受到圣光终末的风险。$]', 67186), +(35471, 'zhCN', '第22部分', '', 67186), +(35470, 'zhCN', '第31部分', '', 67186), +(35469, 'zhCN', '第30部分', '', 67186), +(35468, 'zhCN', '第29部分', '', 67186), +(35467, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。\n$[!15\n在英雄难度下,黎明水晶可能会溢出鲁拉之泪。$]', 67186), +(35466, 'zhCN', '第22部分', '', 67186), +(35465, 'zhCN', '第31部分', '', 67186), +(35464, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。', 67186), +(35463, 'zhCN', '第22部分', '', 67186), +(35462, 'zhCN', '第31部分', '', 67186), +(35461, 'zhCN', '第30部分', '', 67186), +(35460, 'zhCN', '第29部分', '', 67186), +(35459, 'zhCN', '第31部分', '', 67186), +(35458, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。\n$[!16\n在史诗难度下,黎明水晶有受到圣光终末的风险。$]', 67186), +(35457, 'zhCN', '第22部分', '', 67186), +(35456, 'zhCN', '第31部分', '', 67186), +(35455, 'zhCN', '第30部分', '', 67186), +(35454, 'zhCN', '第29部分', '', 67186), +(35453, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。\n$[!15\n在英雄难度下,黎明水晶可能会溢出鲁拉之泪。$]', 67186), +(35452, 'zhCN', '第22部分', '', 67186), +(35451, 'zhCN', '第31部分', '', 67186), +(35450, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。', 67186), +(35449, 'zhCN', '第22部分', '', 67186), +(35448, 'zhCN', '第31部分', '', 67186), +(35447, 'zhCN', '第30部分', '', 67186), +(35446, 'zhCN', '第29部分', '', 67186), +(35445, 'zhCN', '第31部分', '', 67186), +(35444, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。\n$[!16\n在史诗难度下,黎明水晶有受到圣光终末的风险。$]', 67186), +(35443, 'zhCN', '第22部分', '', 67186), +(35442, 'zhCN', '第31部分', '', 67186), +(35441, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。', 67186), +(35440, 'zhCN', '第108部分', '', 67186), +(35439, 'zhCN', '第108部分', '', 67186), +(35438, 'zhCN', '第107部分', '', 67186), +(35435, 'zhCN', '第105部分', '', 67186), +(35434, 'zhCN', '第104部分', '', 67186), +(35418, 'zhCN', '第108部分', '', 67186), +(35373, 'zhCN', '第30部分', '', 67186), +(35371, 'zhCN', '第29部分', '', 67186), +(35366, 'zhCN', '第31部分', '', 67186), +(35361, 'zhCN', '第22部分', '', 67186), +(35360, 'zhCN', '黎明水晶', '一个可由玩家携带的、被净化的纳鲁碎片。\n$[!15\n在英雄难度下,黎明水晶可能会溢出鲁拉之泪。$]', 67186), +(35357, 'zhCN', '第106部分', '', 67186), +(35344, 'zhCN', '第23部分', '', 67186), +(35343, 'zhCN', '第22部分', '', 67186), +(35342, 'zhCN', '暮色水晶', '一个正在变暗的纳鲁碎片,或许可以被修复。', 67186), +(35341, 'zhCN', '第24部分', '', 67186), +(35340, 'zhCN', '午夜水晶', '一个无法挽救的黑暗纳鲁碎片。', 67186), +(35339, 'zhCN', '第19部分', '', 67186), +(35338, 'zhCN', '第18部分', '', 67186), +(35336, 'zhCN', '第16部分', '', 67186), +(35328, 'zhCN', '第11部分', '', 67186), +(35327, 'zhCN', '第10部分', '', 67186), +(35326, 'zhCN', '第9部分', '', 67186), +(35325, 'zhCN', '第8部分', '$[!15\n在英雄难度下,音符的数量会随着每段旋律而增加。$]', 67186), +(35324, 'zhCN', '第11部分', '', 67186), +(35319, 'zhCN', '第80部分', '', 67186), +(35317, 'zhCN', '第69部分', '', 67186), +(35316, 'zhCN', '第70部分', '', 67186), +(35315, 'zhCN', '第76部分', '', 67186), +(35314, 'zhCN', '第67部分', '$[!15,16\n在英雄及更高难度下,充电会释放过载电流。$]', 67186), +(35311, 'zhCN', '第69部分', '', 67186), +(35309, 'zhCN', '第74部分', '', 67186), +(35274, 'zhCN', '第70部分', '$[!16\n在史诗难度下,宇宙裂变将达到临界状态。$]', 67186), +(35273, 'zhCN', '第69部分', '', 67186), +(35272, 'zhCN', '第67部分', '', 67186), +(35131, 'zhCN', '第13部分', '', 67186), +(35106, 'zhCN', '第67部分', '', 67186), +(35068, 'zhCN', '第64部分', '', 67186), +(35067, 'zhCN', '第63部分', '', 67186), +(35041, 'zhCN', '第35部分', '', 67186), +(35040, 'zhCN', '第51部分', '', 67186), +(35038, 'zhCN', '第14部分', '', 67186), +(35037, 'zhCN', '第14部分', '', 67186), +(35036, 'zhCN', '阶段转换:全蚀', '见证圣光的凋零与破碎。', 67186), +(34847, 'zhCN', '第11部分', '', 67186), +(34846, 'zhCN', '第10部分', '', 67186), +(34845, 'zhCN', '第9部分', '', 67186), +(34844, 'zhCN', '第8部分', '', 67186), +(34474, 'zhCN', '第44部分', '', 67186), +(34456, 'zhCN', '第45部分', '', 67186), +(34450, 'zhCN', '第46部分', '', 67186), +(34243, 'zhCN', '第14部分', '', 67186), +(34242, 'zhCN', '第14部分', '', 67186), +(34001, 'zhCN', '第38部分', '', 67186), +(34000, 'zhCN', '第35部分', '', 67186), +(33990, 'zhCN', '第32部分', '', 67186), +(33989, 'zhCN', '第32部分', '', 67186), +(33983, 'zhCN', '第23部分', '', 67186), +(33982, 'zhCN', '第22部分', '', 67186), +(33981, 'zhCN', '暮色水晶', '一个正在变暗的纳鲁碎片,或许可以被修复。', 67186), +(33975, 'zhCN', '第25部分', '', 67186), +(33924, 'zhCN', '第24部分', '', 67186), +(33742, 'zhCN', '午夜水晶', '一个无法挽救的黑暗纳鲁碎片。', 67186), +(33741, 'zhCN', '第19部分', '', 67186), +(33740, 'zhCN', '第15部分', '', 67186), +(33739, 'zhCN', '第18部分', '', 67186), +(33738, 'zhCN', '终结矩阵', '', 67186), +(33737, 'zhCN', '第16部分', '', 67186), +(33640, 'zhCN', '第12部分', '', 67186), +(33638, 'zhCN', '第二阶段:黑暗反应堆', '深入荒芜引擎。', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='第157部分', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='zhCN'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='zhCN'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'zhCN', '你好,虔诚的信徒!\n\n快来领略这片领地的奇迹——这里充盈着无上的丰饶!这股伟力在翻腾,在扩张,万物皆无法束缚其生机!\n\n你对我这尊神格的虔诚,理应得到一份小小的嘉奖。这次,便以此纯粹丰饶作为恩赏!\n\n此外,睿智的信徒,请留意:如熔铸活力在内的某些祭品现在也会在其他商贩处上架。若你的冒险足迹经过祖阿曼深渊附近,或许能与他们不期而遇。\n\n愿你岁岁大丰收。\n\n——钝顿,丰饶之神', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='zhCN'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'zhCN', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='zhCN'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'zhCN', '艾杰斯亚学院', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'zhCN', '高收益切割坦克', '|cFFFFD200商人出售:|r林多尔米|n', '', 67186), +(3009, 'zhCN', '投机型切割坦克', '|cFFFFD200商人出售:|r林多尔米|n', '', 67186), +(3008, 'zhCN', '盈利绿切割坦克', '|cFFFFD200商人出售:|r林多尔米|n', '', 67186), +(3007, 'zhCN', '蓝筹股切割坦克', '|cFFFFD200商人出售:|r林多尔米|n', '', 67186), +(3006, 'zhCN', '紫水晶机甲', '|cFFFFD200商人出售:|r林多尔米|n', '', 67186), +(3005, 'zhCN', '天蓝死亡行者', '|cFFFFD200商人出售:|r林多尔米|n', '', 67186), +(2535, 'zhCN', '虚痕山猫', '|cFFFFD200掉落:|r没收的密教徒背包', '驯服山猫是阿拉希人精修了多年的技术。虽然夜幕教徒依然对自己的大业忠心耿耿,但他们依然将这项传统传承了下去。', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='zhCN'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'zhCN', '与深渊钓客一起捕鱼', '与祖阿曼深渊海岸的深潜者杰祖交谈以开始捕鱼。', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'zhCN', '', 67186), +(158259, 'zhCN', '', 67186), +(158261, 'zhCN', '', 67186), +(156069, 'zhCN', '需要成就:|n深渊钓客:蓝海钓客', 67186), +(151169, 'zhCN', '需要成就:|n深渊钓客:深海神像', 67186), +(151168, 'zhCN', '需要成就:|n深渊钓客:三股线网', 67186), +(151167, 'zhCN', '需要成就:|n深渊钓客:浅滩网', 67186), +(151166, 'zhCN', '需要成就:深渊钓客:空核鱼叉炮台', 67186), +(151165, 'zhCN', '需要成就:深渊钓客:重型鱼叉炮', 67186), +(151161, 'zhCN', '需要成就:|n深渊钓客:帕科海沟脚蹼', 67186), +(151160, 'zhCN', '需要成就:|n深渊钓客:深潜机油', 67186), +(151159, 'zhCN', '需要成就:|n深渊钓客:加固关节', 67186), +(151158, 'zhCN', '需要成就:|n深渊钓客:纳洛拉克的呼吸罐', 67186), +(151157, 'zhCN', '需要成就:|n深渊钓客:深水测试过的气罐', 67186), +(151155, 'zhCN', '需要成就:|n深渊钓客:深潜者的旧气罐', 67186), +(155979, 'zhCN', '', 67186), +(157695, 'zhCN', '只能在难度11的地下堡内获得。', 67186), +(157666, 'zhCN', '', 67186), +(157603, 'zhCN', '通过推进第1赛季地下堡行者的旅程解锁。', 67186), +(154160, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154159, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154158, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154157, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154156, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154155, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154154, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154153, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154152, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(154151, 'zhCN', '你已收集该宝箱中包含的所有幻化外观。', 67186), +(157668, 'zhCN', '你没有迷时鞍座。无法购买此物品。', 67186), +(155203, 'zhCN', '', 67186), +(155192, 'zhCN', '', 67186), +(155185, 'zhCN', '', 67186), +(154642, 'zhCN', '', 67186), +(156525, 'zhCN', '', 67186), +(156524, 'zhCN', '', 67186), +(151196, 'zhCN', '', 67186), +(157003, 'zhCN', '', 67186), +(157002, 'zhCN', '', 67186), +(156957, 'zhCN', '', 67186), +(156933, 'zhCN', '', 67186), +(151162, 'zhCN', '需要成就:|n深渊钓客:芬诺尔鱼饵', 67186), +(156816, 'zhCN', '', 67186), +(154472, 'zhCN', '需要成就:|n深渊钓客:承压目镜', 67186), +(151164, 'zhCN', '需要成就:|n深渊钓客:浊水掠行鱼肉', 67186), +(151163, 'zhCN', '需要成就:|n深渊钓客:褶鳍鲨诱饵', 67186), +(142975, 'zhCN', '你现在还不能获得10枚神话曙光纹章。', 67186), +(156592, 'zhCN', '', 67186), +(156591, 'zhCN', '', 67186), +(156536, 'zhCN', '', 67186), +(156537, 'zhCN', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'zhCN', '深渊钓客', 67186), +(3389, 'zhCN', '晶塔打击:星芒瀑布', 67186), +(3308, 'zhCN', '虚空裂隙:日落之滨', 67186), +(3291, 'zhCN', '力量真空', 67186), +(3280, 'zhCN', '迷失的界门', 67186), +(3251, 'zhCN', '虚空仪式:灰熊', 67186), +(3245, 'zhCN', '不惮辛劳不惮烦', 67186), +(3234, 'zhCN', '被亵渎的莎台圣物', 67186), +(3233, 'zhCN', '趁虚而入', 67186), +(3229, 'zhCN', '踏虚岛', 67186), +(3209, 'zhCN', '[DNT] Example Scenario', 67186), +(3206, 'zhCN', '场景模板', 67186), +(3180, 'zhCN', '强化仪式', 67186), +(3174, 'zhCN', '虚空侵攻', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'zhCN', '在祖阿曼深渊中捕捉水生生物,寻找隐藏的珍宝。', '深渊钓客', 67186), +(16090, 'zhCN', '', '抓捕阶段', 67186), +(16088, 'zhCN', '', '躲藏阶段', 67186), +(16441, 'zhCN', '从纳迦及其虹吸器处收集奥能火花,并带回晶塔。', '为晶塔供能', 67186), +(16376, 'zhCN', '击败多曼纳尔指挥官。', '摧毁长镰', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'zhCN', '', '', 67186), +(58555, 'zhCN', '', '', 67186), +(58554, 'zhCN', '', '', 67186), +(58553, 'zhCN', '', '', 67186), +(58545, 'zhCN', '', '', 67186), +(58544, 'zhCN', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'zhCN', '阿加梭绸鱼线', '', 67186), +(8555, 'zhCN', '+$k1 主属性,+$k2 护甲', '', 67186), +(8554, 'zhCN', '+$k1 主属性,+$k2 护甲', '', 67186), +(5001, 'zhCN', '幽冥铁盾刺', '', 67186), +(4216, 'zhCN', '燃钢盾刺', '', 67186), +(4215, 'zhCN', '源质盾刺', '', 67186), +(3748, 'zhCN', '泰坦神铁盾刺', '', 67186), +(2714, 'zhCN', '魔钢盾刺', '', 67186), +(1704, 'zhCN', '瑟银盾刺', '', 67186), +(463, 'zhCN', '秘银盾刺', '', 67186), +(43, 'zhCN', '铁盾刺', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'zhCN', '昏迷', 67186), +(1253377, 'zhCN', '迅疾冲霄', 67186), +(1270444, 'zhCN', '无羁邪怒', 67186), +(441587, 'zhCN', '云雾笼罩', 67186), +(441429, 'zhCN', '云雾笼罩', 67186), +(1298446, 'zhCN', '不破之谊', 67186), +(1223323, 'zhCN', '不破之谊', 67186), +(1293502, 'zhCN', '[DNT] Fused Vitality', 67186), +(1270491, 'zhCN', '冒渎虔诚', 67186), +(1241077, 'zhCN', '脓疮毒镰', 67186), +(458128, 'zhCN', '脓疮毒镰', 67186), +(363916, 'zhCN', '黑曜鳞片', 67186), +(353319, 'zhCN', '静心织魂', 67186), +(125174, 'zhCN', '业报之触', 67186), +(122470, 'zhCN', '业报之触', 67186), +(23920, 'zhCN', '法术反射', 67186), +(1237942, 'zhCN', '鱼饵', 67186), +(1235216, 'zhCN', '至暗之夜感知', 67186), +(1225245, 'zhCN', '辛多雷群聚鱼', 67186), +(1295986, 'zhCN', '林多尔米的光辉', 67186), +(1278156, 'zhCN', '林多尔米的指引', 67186), +(1298074, 'zhCN', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'zhCN', '', 67186), +(390260, 'zhCN', '', 67186), +(1297413, 'zhCN', '嘲讽骷髅', 67186), +(149981, 'zhCN', '嘲讽骷髅', 67186), +(1289789, 'zhCN', '战斗幻容', 67186), +(1283168, 'zhCN', '组合晋升虚空碎片', 67186), +(1282778, 'zhCN', '晋升虚空核心', 67186), +(1264876, 'zhCN', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'zhCN', '幽魂残渣', 67186), +(447444, 'zhCN', '熵能裂隙', 67186), +(210824, 'zhCN', '大法师之触', 67186), +(1280123, 'zhCN', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'zhCN', '投机型切割坦克', 67186), +(1296759, 'zhCN', '高收益切割坦克', 67186), +(1296758, 'zhCN', '盈利绿切割坦克', 67186), +(1296756, 'zhCN', '蓝筹股切割坦克', 67186), +(1296734, 'zhCN', '紫水晶机甲', 67186), +(1296731, 'zhCN', '天蓝死亡行者', 67186), +(466930, 'zhCN', '黑蚀箭', 67186), +(1291739, 'zhCN', '恶毒恩典', 67186), +(1281946, 'zhCN', '深渊钓客', 67186), +(1270634, 'zhCN', '过载分流器', 67186), +(1270085, 'zhCN', '骇物结界', 67186), +(1270079, 'zhCN', '骇物结界', 67186), +(1258411, 'zhCN', '克琳娜的卡德加仿制酒', 67186), +(1258410, 'zhCN', '克琳娜的卡德加仿制酒', 67186), +(1258336, 'zhCN', '最终警告', 67186), +(1257809, 'zhCN', '克琳娜的卡德加仿制酒', 67186), +(1257729, 'zhCN', '复活', 67186), +(1257728, 'zhCN', '复活', 67186), +(1257716, 'zhCN', '复活', 67186), +(1257505, 'zhCN', '骇物结界', 67186), +(1256189, 'zhCN', '深渊钓客', 67186), +(1255966, 'zhCN', '再生', 67186), +(1253337, 'zhCN', '克琳娜的卡德加仿制酒', 67186), +(1253336, 'zhCN', '克琳娜的卡德加仿制酒', 67186), +(1253194, 'zhCN', '资源巧用', 67186), +(1253193, 'zhCN', '资源巧用', 67186), +(1253185, 'zhCN', '资源巧用', 67186), +(1253064, 'zhCN', '深渊钓客', 67186), +(1252431, 'zhCN', '毁灭闪电(释放)', 67186), +(1241032, 'zhCN', '最终警告', 67186), +(1241023, 'zhCN', '最终警告', 67186), +(1235076, 'zhCN', '资源巧用', 67186), +(1235075, 'zhCN', '资源巧用', 67186), +(1235072, 'zhCN', '资源巧用', 67186), +(1235067, 'zhCN', '资源巧用', 67186), +(1235066, 'zhCN', '资源巧用', 67186), +(1235065, 'zhCN', '资源巧用', 67186), +(1235037, 'zhCN', '资源巧用', 67186), +(1233865, 'zhCN', '空无之冕', 67186), +(1228865, 'zhCN', '虚痕山猫', 67186), +(1225598, 'zhCN', '深渊钓客', 67186), +(1225322, 'zhCN', '永歌森林', 67186), +(1225281, 'zhCN', '嫩滑光鳍鱼', 67186), +(1225277, 'zhCN', '活跃的轻歌鱼', 67186), +(1225273, 'zhCN', '不祥章鱼', 67186), +(1225272, 'zhCN', '烁光脊鱼', 67186), +(444803, 'zhCN', '觉醒的腔棘鱼', 67186), +(1250759, 'zhCN', '黑暗微粒', 67186), +(1276894, 'zhCN', '转化初级虚空核心', 67186), +(1296448, 'zhCN', '无情跳跃', 67186), +(472053, 'zhCN', '无情跳跃', 67186), +(1296214, 'zhCN', '星河虚空矩阵', 67186), +(1296205, 'zhCN', '三重复制', 67186), +(1296169, 'zhCN', '风暴雷云', 67186), +(1296168, 'zhCN', '风暴雷云', 67186), +(1291767, 'zhCN', '流星雨', 67186), +(1296406, 'zhCN', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'zhCN', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'zhCN', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'zhCN', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'zhCN', '林多尔米的光辉', 67186), +(1265971, 'zhCN', '邪恶军备', 67186), +(444769, 'zhCN', '殒命在即', 67186), +(1256191, 'zhCN', '结束潜水', 67186), +(1272821, 'zhCN', '城壁之智', 67186), +(1244331, 'zhCN', '永茂', 67186), +(441845, 'zhCN', '直取要害', 67186), +(243435, 'zhCN', '壮胆酒', 67186), +(221562, 'zhCN', '窒息', 67186), +(205630, 'zhCN', '伊利丹之握', 67186), +(198158, 'zhCN', '群体隐形', 67186), +(108194, 'zhCN', '窒息', 67186), +(1291860, 'zhCN', '进食饮水', 67186), +(1291859, 'zhCN', '进食饮水', 67186), +(1291858, 'zhCN', '进食饮水', 67186), +(1291857, 'zhCN', '进食饮水', 67186), +(1291856, 'zhCN', '进食饮水', 67186), +(1291855, 'zhCN', '进食饮水', 67186), +(1291854, 'zhCN', '进食饮水', 67186), +(1291853, 'zhCN', '进食饮水', 67186), +(1291852, 'zhCN', '进食饮水', 67186), +(1291851, 'zhCN', '进食饮水', 67186), +(1291850, 'zhCN', '进食饮水', 67186), +(1291849, 'zhCN', '进食饮水', 67186), +(1291848, 'zhCN', '进食', 67186), +(1291847, 'zhCN', '进食', 67186), +(1291846, 'zhCN', '进食', 67186), +(1291845, 'zhCN', '进食', 67186), +(1291844, 'zhCN', '进食', 67186), +(1291843, 'zhCN', '进食', 67186), +(1291842, 'zhCN', '进食', 67186), +(1291841, 'zhCN', '进食', 67186), +(1291840, 'zhCN', '进食', 67186), +(1291839, 'zhCN', '进食', 67186), +(1291838, 'zhCN', '进食', 67186), +(1291837, 'zhCN', '进食', 67186), +(1291831, 'zhCN', '饮水', 67186), +(1291828, 'zhCN', '进食', 67186), +(1291827, 'zhCN', '进食', 67186), +(1291826, 'zhCN', '进食', 67186), +(1291825, 'zhCN', '进食', 67186), +(1291824, 'zhCN', '进食', 67186), +(1291822, 'zhCN', '进食', 67186), +(1291791, 'zhCN', '饮水', 67186), +(1290929, 'zhCN', '饮水', 67186), +(1290926, 'zhCN', '进食', 67186), +(1290925, 'zhCN', '进食', 67186), +(1289221, 'zhCN', '圣光守卫者的奖赏', 67186), +(1286537, 'zhCN', '进食饮水', 67186), +(1286536, 'zhCN', '饮水', 67186), +(1286535, 'zhCN', '进食', 67186), +(1282100, 'zhCN', '活化长椅', 67186), +(1282018, 'zhCN', '活化长椅', 67186), +(1277461, 'zhCN', '饮水', 67186), +(1269922, 'zhCN', '进食', 67186), +(1269921, 'zhCN', '进食', 67186), +(1269920, 'zhCN', '进食', 67186), +(1269919, 'zhCN', '饮水', 67186), +(1269918, 'zhCN', '饮水', 67186), +(1269917, 'zhCN', '食物和饮料', 67186), +(1269916, 'zhCN', '食物和饮料', 67186), +(1232065, 'zhCN', '食物和饮料', 67186), +(1295592, 'zhCN', '[DNT] Clear Voidspire', 67186), +(1244341, 'zhCN', '永茂', 67186), +(1262378, 'zhCN', '黑檀征服王冠', 67186), +(1262377, 'zhCN', '黑檀征服王冠', 67186), +(1262376, 'zhCN', '黑檀征服王冠', 67186), +(1262365, 'zhCN', '圣洁死亡之谕', 67186), +(1262364, 'zhCN', '圣洁死亡之谕', 67186), +(1262359, 'zhCN', '圣洁死亡之谕', 67186), +(1248931, 'zhCN', '黑檀征服王冠', 67186), +(1248927, 'zhCN', '圣洁死亡之谕', 67186), +(1277796, 'zhCN', '抵消魔法', 67186), +(1256862, 'zhCN', '反魔法箭', 67186), +(1256861, 'zhCN', '驱散跃迁', 67186), +(1256860, 'zhCN', '驱散焦点', 67186), +(1256010, 'zhCN', '中和力场', 67186), +(1295508, 'zhCN', '学习', 67186), +(1295497, 'zhCN', '蛛魔', 67186), +(1295486, 'zhCN', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'zhCN', '黑暗祷言', 67186), +(1243616, 'zhCN', '不稳定的虚空精华', 67186), +(1243615, 'zhCN', '不稳定的虚空精华', 67186), +(1243613, 'zhCN', '不稳定的虚空精华', 67186), +(1243605, 'zhCN', '不稳定的虚空精华', 67186), +(1243602, 'zhCN', '不稳定的虚空精华', 67186), +(1243588, 'zhCN', '不稳定的虚空精华', 67186), +(1243586, 'zhCN', '不稳定的虚空精华', 67186), +(1257701, 'zhCN', '灼热撕裂', 67186), +(444088, 'zhCN', '吞噬烈焰', 67186), +(1295319, 'zhCN', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'zhCN', '不谐', 67186), +(1295278, 'zhCN', '粉碎狂乱目标', 67186), +(1295243, 'zhCN', '虚空爆发', 67186), +(1295237, 'zhCN', '虚空爆发', 67186), +(1226037, 'zhCN', '割肉', 67186), +(442615, 'zhCN', '割肉', 67186), +(1295194, 'zhCN', '[DNT] Cancel Aura', 67186), +(1241218, 'zhCN', '[DNT] Vision of Self', 67186), +(1294288, 'zhCN', '暗影蕴力', 67186), +(1286830, 'zhCN', '标记钓鱼气泡 - 消失', 67186), +(1236092, 'zhCN', '附魔工具 - 辛多雷熟练', 67186), +(1293613, 'zhCN', '深渊钓客钓鱼', 67186), +(1286820, 'zhCN', '深渊钓客钓鱼', 67186), +(1286703, 'zhCN', '深渊钓客钓鱼', 67186), +(1253159, 'zhCN', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'zhCN', '打开宝箱', 67186), +(1243683, 'zhCN', '一簇辉煌的神话曙光纹章', 67186), +(190784, 'zhCN', '神圣马驹', 67186), +(1292124, 'zhCN', '[DNT] Material Creation - Health', 67186), +(1266413, 'zhCN', '虚空灼烧', 67186), +(1244345, 'zhCN', '圣光灼烧', 67186), +(1231327, 'zhCN', '吞噬虚空', 67186), +(436358, 'zhCN', '崩摧', 67186), +(1292071, 'zhCN', '英武方阵', 67186), +(1294776, 'zhCN', '闪耀太阳微粒', 67186), +(1273357, 'zhCN', '闪耀太阳微粒', 67186), +(1294727, 'zhCN', '进食充分', 67186), +(1294726, 'zhCN', '烤蘑菇', 67186), +(1294720, 'zhCN', '射击', 67186), +(1294703, 'zhCN', '射击', 67186), +(1294669, 'zhCN', '冲锋', 67186), +(1294633, 'zhCN', '火焰吐息', 67186), +(1294563, 'zhCN', '破盾', 67186), +(1277795, 'zhCN', '抵消魔法', 67186), +(1272179, 'zhCN', '怪异魔法脉冲 - 未购买', 67186), +(1269655, 'zhCN', '潜行', 67186), +(1269654, 'zhCN', '发条哨兵', 67186), +(1269650, 'zhCN', '驱散跃迁', 67186), +(1269641, 'zhCN', '裂隙传送', 67186), +(1269640, 'zhCN', '中和力场', 67186), +(1264545, 'zhCN', '位置交换', 67186), +(1259647, 'zhCN', 'W-47CH D0G型看门狗', 67186), +(1258362, 'zhCN', '陷阱:鸣禽', 67186), +(1256009, 'zhCN', '抵消魔法', 67186), +(1251813, 'zhCN', '萦绕恐惧', 67186), +(1294779, 'zhCN', 'DNT', 67186), +(1294759, 'zhCN', 'DNT', 67186), +(1294752, 'zhCN', '黯灭协奏', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'zhCN', '', 67186), +(37073, 'zhCN', '', 67186), +(37072, 'zhCN', '', 67186), +(37065, 'zhCN', '', 67186), +(37064, 'zhCN', '', 67186), +(37063, 'zhCN', '', 67186), +(37050, 'zhCN', '', 67186), +(37049, 'zhCN', '', 67186), +(37048, 'zhCN', '', 67186), +(36911, 'zhCN', '', 67186), +(35166, 'zhCN', '', 67186), +(35165, 'zhCN', '', 67186), +(35164, 'zhCN', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'zhCN', '细致产能', '', '改良你的附魔配方,提升你在制作幻象或消耗品时生产出额外物品的几率。另外,每有一点此专精,你将获得+$ev1 $en1。', 67186), +(137685, 'zhCN', '', '', '制作消耗品时,产能使你获得最多+ $ev1%额外物品。', 67186), +(137681, 'zhCN', '', '', '制作消耗品时,产能使你获得最多+ $ev1%额外物品。', 67186), +(133669, 'zhCN', '', '', '制作合金时,+$ev1 $en1。|n|n解锁在制作合金时使用成品材料的能力。', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='zhCN'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'zhCN', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'zhCN', '林中客的庭园服装', 67186), +(5646, 'zhCN', '深潜者服饰', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhCN' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'zhCN', '学徒库格斯班', 67186), +(7698, 'zhCN', '装饰决斗商人', 67186), +(7693, 'zhCN', '宝箱', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='zhCN') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='zhCN') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='zhCN') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='zhCN') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='zhCN') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='zhCN') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='zhCN') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='zhCN') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='zhCN') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='zhCN') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='zhCN') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='zhCN') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='zhCN') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='zhCN') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='zhCN') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='zhCN') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='zhCN') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='zhCN') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='zhCN') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='zhCN') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='zhCN') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='zhCN') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='zhCN') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='zhCN') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='zhCN') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='zhCN') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='zhCN') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='zhCN') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='zhCN') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='zhCN') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='zhCN') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='zhCN') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='zhCN') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='zhCN') OR (`TableHash`=2533050585 AND `RecordId`=1529 AND `locale`='zhCN') OR (`TableHash`=2533050585 AND `RecordId`=1528 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5037 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5036 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5035 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5034 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5033 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5032 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5031 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5030 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5029 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5028 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5026 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5025 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5024 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5023 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5022 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5021 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5020 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5019 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5018 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5017 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5016 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5015 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5014 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5013 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5012 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5011 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5010 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5009 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5008 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5007 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5006 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5005 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5004 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5003 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5002 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5001 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5000 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4999 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4998 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4997 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4996 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4995 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4993 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=4992 AND `locale`='zhCN') OR (`TableHash`=21457424 AND `RecordId`=1552 AND `locale`='zhCN') OR (`TableHash`=21457424 AND `RecordId`=1551 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='zhCN') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='zhCN') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='zhCN') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='zhCN') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='zhCN') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='zhCN') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='zhCN') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='zhCN') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='zhCN') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='zhCN') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='zhCN') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='zhCN') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='zhCN') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='zhCN') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='zhCN') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='zhCN') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='zhCN') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='zhCN') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='zhCN') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='zhCN') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='zhCN') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='zhCN') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='zhCN') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='zhCN') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='zhCN') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='zhCN') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='zhCN') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='zhCN') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='zhCN') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='zhCN') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='zhCN') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='zhCN') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='zhCN') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='zhCN') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='zhCN') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='zhCN') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='zhCN') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='zhCN') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='zhCN') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='zhCN') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='zhCN') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='zhCN') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='zhCN') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='zhCN') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='zhCN') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='zhCN') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='zhCN') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='zhCN') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='zhCN') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='zhCN') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='zhCN') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='zhCN') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='zhCN') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='zhCN') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='zhCN') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='zhCN') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='zhCN') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='zhCN') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='zhCN') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='zhCN') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='zhCN') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='zhCN') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='zhCN') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='zhCN') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='zhCN') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='zhCN') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='zhCN') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='zhCN') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='zhCN') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='zhCN') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='zhCN') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='zhCN') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='zhCN') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='zhCN') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='zhCN') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='zhCN') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='zhCN') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='zhCN') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='zhCN') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='zhCN') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='zhCN') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='zhCN') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='zhCN') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='zhCN') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='zhCN') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='zhCN') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='zhCN') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='zhCN') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='zhCN') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='zhCN') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='zhCN') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='zhCN') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='zhCN') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='zhCN') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='zhCN') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='zhCN') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='zhCN') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='zhCN') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='zhCN') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='zhCN') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='zhCN') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='zhCN') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='zhCN') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='zhCN') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='zhCN') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='zhCN') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='zhCN') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='zhCN') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='zhCN') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='zhCN') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='zhCN') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='zhCN') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='zhCN') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='zhCN') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='zhCN'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'zhCN', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'zhCN', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'zhCN', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'zhCN', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'zhCN', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'zhCN', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'zhCN', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'zhCN', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'zhCN', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'zhCN', 0x000000, 67186), +(2534422486, 3918, 'zhCN', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'zhCN', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'zhCN', 0x00243F63325BE982AAE883BDE6AF81E781AD5D5BE8999AE7A9BAE5B084E7BABF5DE79A84E4BCA4E5AEB3E68F90E9AB9824733125E380820D0A0D0A243F63325BE982AAE883BDE6AF81E781AD5D5BE5AE8CE695B4E5BC95E5AFBCE8999AE7A9BAE5B084E7BABF5DE4BC9A243F63325BE59CA8E585B6E68C81E7BBADE697B6E997B4E58685E7949FE68890247334E4B8AAE781B5E9AD82E6AE8BE789875D5BE4BDBFE4BDA0E88EB7E5BE97247333E5B182E8999AE890BD5DE380820000, 67186), +(3776013982, 1270444, 'zhCN', 0x00E781B5E9AD82E8A382E58A88E5928CE5B9BDE9AD82E782B8E5BCB9E6AF8FE6B688E88097E4B880E4B8AAE781B5E9AD82E6AE8BE78987E983BDE69C89E587A0E78E87E4BDBFE4BDA0E88EB7E5BE97E697A0E7BE81E982AAE68092EFBC8CE4BDBFE4BDA0E58FAFE4BBA5E696BDE694BEE681B6E9AD94E58F98E5BDA2E4B894E4B88DE8A7A6E58F91E586B7E58DB4E697B6E997B4EFBC8CE68C81E7BBAD247331E7A792E380820000, 67186), +(3776013982, 441587, 'zhCN', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'zhCN', 0x00E6BF80E6B4BB243F613133373033365BE586B2E58AA85D5BE69A97E5BDB1E4B98BE588835DE4BC9AE5889BE980A0E587BAE4B880E78987E68C81E7BBAD2434343135383764E79A84E7839FE99BBEEFBC8CE4BDBFE4BDA0E59CA8E7839FE99BBEE4B8ADE58F91E58AA8E79A84E694BBE587BBE58FAFE4BBA5E696BDE58AA0E6838AE6858CE69588E69E9CEFBC8CE69C80E5A49AE9A29DE5A496E58FA0E58AA0243434313634306D32E6ACA1E380820D0A0D0AE7A6BBE5BC80E7839FE99BBEE5908EEFBC8CE8AFA5E69588E69E9CE4BB8DE58FAFE7BBB4E68C81243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5DE7A792E380820000, 67186), +(3893700160, 445, 'zhCN', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'zhCN', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'zhCN', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'zhCN', 0x00E9878DE696B0E88EB7E5BE97E58FACE594A4E5AEA0E789A9E380820D0A0D0AE59CA8E688B7E5A496E697B6EFBC8CE4BDA0E79A84E5AEA0E789A9E980A0E68890E79A84E4BCA4E5AEB3E68F90E9AB9824733125EFBC8CE58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24733225E380820000, 67186), +(3776013982, 1223323, 'zhCN', 0x00E9878DE696B0E88EB7E5BE97E58FACE594A4E5AEA0E789A9E380820D0A0D0AE59CA8E688B7E5A496E697B6EFBC8CE4BDA0E79A84E5AEA0E789A9E980A0E68890E79A84E4BCA4E5AEB3E68F90E9AB9824733125EFBC8CE58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24733225E380820000, 67186), +(3468628616, 1818, 'zhCN', 0xE9BB91E69A97E696B9E5B096E7A29100E4BDA0E78EB0E59CA8E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E88EB1E998BFE5A89CE5A484E8B4ADE4B9B0E9BB91E69A97E696B9E5B096E7A291E38082002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'zhCN', 0xE9BB91E69A97E696B9E5B096E7A29100E4BDA0E78EB0E59CA8E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E88EB1E998BFE5A89CE5A484E8B4ADE4B9B0E9BB91E69A97E696B9E5B096E7A291E3808200E9BB91E69A97E696B9E5B096E7A291002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'zhCN', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'zhCN', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'zhCN', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'zhCN', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'zhCN', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'zhCN', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'zhCN', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'zhCN', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'zhCN', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'zhCN', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'zhCN', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'zhCN', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'zhCN', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'zhCN', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'zhCN', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'zhCN', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'zhCN', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'zhCN', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'zhCN', 0x000000, 67186), +(3037505077, 245345, 'zhCN', 0x5000, 67186), +(3776013982, 1270491, 'zhCN', 0x0000E694BBE587BBE9809FE5BAA6E68F90E9AB9824773125E3808200, 67186), +(3776013982, 1241077, 'zhCN', 0x00E4BDA0E59CA8E79BAEE6A087E8BAABE4B88AE696BDE58AA0E79A84E7989FE796ABE58AA0E9809F24733125E3808200244061757261636173746572E696BDE58AA0E79A84E7989FE796ABE980A0E68890E4BCA4E5AEB3E79A84E9809FE5BAA6E68F90E9AB9824773125E3808200, 67186), +(3776013982, 458128, 'zhCN', 0x00E696A9E587BBE5898DE696B9246131E7A081E58685E79A84E68980E69C89E6958CE4BABAEFBC8CE980A0E68890247331E782B9E69A97E5BDB1E4BCA4E5AEB3EFBC8CE5B9B6E4BDBFE79BAEE6A087E8BAABE4B88AE68980E69C89E796ABE79785E4BCA4E5AEB3E7949FE69588E9809FE5BAA6E58AA0E5BFAB2431323431303737733125EFBC8CE68C81E7BBAD243132343130373764E380820000, 67186), +(3899321669, 5919, 'zhCN', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'zhCN', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'zhCN', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'zhCN', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'zhCN', 0xE9BB91E9BE9900E5BCBAE58C96E4BDA0E79A84E9B39EE78987EFBC8CE4BDBFE58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24733125243F733337343334385BEFBC8CE5B9B6E59CA82433373433343964E58685E681A2E5A48DE79BB8E5BD93E4BA8EE68980E998BBE68CA1E4BCA4E5AEB3E9878FE79A84E7949FE591BDE580BC5D5B5DE38082E68C81E7BBAD2464E3808200E58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24773125243F2465345BEFBC8CE5B9B6E681A2E5A48DE79BB8E5BD93E4BA8EE68980E998BBE68CA1E4BCA4E5AEB3E9878FE79A84E7949FE591BDE580BCE380825D5BE380825D243F2477323D315B0D0AE5858DE796ABE68993E696ADE5928CE6B289E9BB98E69588E69E9CE380825D5B5D00, 67186), +(4033975491, 589353, 'zhCN', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'zhCN', 0x507650E5A4A9E8B58B0024407370656C6C6465736333353333313300E5858DE796ABE9AD94E6B395E4BCA4E5AEB3E5928CE69C89E5AEB3E69588E69E9CE3808200, 67186), +(3776013982, 125174, 'zhCN', 0x0024407370656C6C6465736331323234373000E590B8E694B6E58F97E588B0E79A84E68980E69C89E4BCA4E5AEB3E380820D0AE68980E590B8E694B6E4BCA4E5AEB3E79A8424313232343730733425E8BDACE794B1E58F97E588B0E4B89AE68AA5E4B98BE8A7A6E5BDB1E5938DE79A84E79BAEE6A087E689BFE58F97E3808200, 67186), +(3776013982, 122470, 'zhCN', 0x00E59CA82464E58685E590B8E694B6E58F97E588B0E79A84E68980E69C89E4BCA4E5AEB3EFBC8CE69C80E5A49AE58FAFE590B8E694B6E4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733325EFBC8CE5B9B6E5B086E68980E590B8E694B6E4BCA4E5AEB3E79A8424733425E8BDACE7A7BBE7BB99E6958CE696B9E79BAEE6A087EFBC8CE59CA82431323432383064E58685E68C81E7BBADE980A0E68890E887AAE784B6E4BCA4E5AEB3E3808200E5AFB9E6ADA6E583A7E980A0E68890E79A84E4BCA4E5AEB3E983BDE8A2ABE8BDACE7A7BBE7BB99E4BA86E4BDA0EFBC8CE59CA82431323432383064E58685E68C81E7BBADE980A0E68890E887AAE784B6E4BCA4E5AEB3E3808200, 67186), +(3776013982, 23920, 'zhCN', 0x00E4B8BEE8B5B7E4BDA0E79A84243F63335BE79BBEE7898C5D5BE6ADA6E599A85DEFBC8CE58F8DE5B084243F613231333931355BE68EA5E4B88BE69DA5243231333931357333E4B8AA5D5BE7ACACE4B880E4B8AA5DE5AFB9E4BDA0E696BDE694BEE79A84E6B395E69CAFEFBC8CE5908CE697B6E4BDBFE4BDA0E58F97E588B0E79A84E9AD94E6B395E4BCA4E5AEB3E9998DE4BD8E24333835333931733125EFBC8CE68C81E7BBAD2464E3808200243F613138383637325BE58F8DE5B084E5AFB9E4BDA0E696BDE694BEE79A84E68980E69C89E6B395E69CAFE380825D5BE58F8DE5B084E5AFB9E4BDA0E696BDE694BEE79A84E4B880E4B8AAE6B395E69CAFE380825D00, 67186), +(1274215428, 190484, 'zhCN', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'zhCN', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'zhCN', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'zhCN', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'zhCN', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'zhCN', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'zhCN', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'zhCN', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'zhCN', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'zhCN', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'zhCN', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'zhCN', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'zhCN', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'zhCN', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'zhCN', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'zhCN', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'zhCN', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'zhCN', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'zhCN', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'zhCN', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'zhCN', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'zhCN', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'zhCN', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'zhCN', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'zhCN', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'zhCN', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'zhCN', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'zhCN', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'zhCN', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'zhCN', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'zhCN', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'zhCN', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'zhCN', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'zhCN', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'zhCN', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'zhCN', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'zhCN', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'zhCN', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'zhCN', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'zhCN', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'zhCN', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'zhCN', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'zhCN', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'zhCN', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'zhCN', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'zhCN', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'zhCN', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'zhCN', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'zhCN', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'zhCN', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'zhCN', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'zhCN', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'zhCN', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'zhCN', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'zhCN', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'zhCN', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'zhCN', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'zhCN', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'zhCN', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'zhCN', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'zhCN', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'zhCN', 0x00E5B086E9B1BCE68994E59B9EE6B0B4E4B8ADE58FAFE4BBA5E4BDBFE887B3E69A97E4B98BE5A49CE99293E9B1BCE68A80E883BDE68F90E9AB98247332E782B9EFBC8CE68C81E7BBAD2464E380820D0A0D0AE68A95E68EB7E5A49AE69DA1E9B1BCE69C80E5A49AE58FAFE4BBA5E5B086E8BF99E4B8AAE5A29EE79B8AE69588E69E9CE68C81E7BBADE697B6E997B4E5BBB6E995BFE887B3244D31E58886E9929FE3808200E5A58EE5B094E890A8E68B89E696AFE99293E9B1BCE68A80E883BDE68F90E9AB98247732E782B9E3808200, 67186), +(3776013982, 1235216, 'zhCN', 0x00E5B086E7949FE789A9E68994E59B9EE6B0B4E4B8ADE58FAFE4BBA5E88EB7E5BE97247332E5B182E887B3E69A97E4B98BE5A49CE6849FE79FA5EFBC8CE68C81E7BBAD2464E380820D0A0D0AE68A95E68EB7E5A49AE58FAAE7949FE789A9E69C80E5A49AE58FAFE4BBA5E5B086E8BF99E4B8AAE5A29EE79B8AE69588E69E9CE68C81E7BBADE697B6E997B4E5BBB6E995BFE887B3244D31E58886E9929FE3808200E887B3E69A97E4B98BE5A49CE6849FE79FA5E68F90E9AB98247732E3808200, 67186), +(3776013982, 1225245, 'zhCN', 0x00E6B7B1E7BAA2E4B88EE5A4A9E8939DE889B2E79A84E9B39EE78987E8A385E782B9E79D80E8BF99E7A78DE6958FE68DB7E79A84E9B1BCE7B1BBE38082E4BD9CE4B8BAE6B0B8E6AD8CE6A3AEE69E97E79A84E5B8B8E8A781E9B1BCE7A78DEFBC8CE8BE9BE5A49AE99BB7E7BEA4E8819AE9B1BCE4BC9AE6A0B9E68DAEE68980E5B19EE7BEA4E4BD93E59CA8E6B0B4E4B8ADE58D8FE8B083E6B8B8E58AA8E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AE69588E69E9CEFBC9A7C520D0A0D0A24407370656C6C69636F6E313233373934322024407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E8BF99E7A78DE9B1BCE79A84E59CB0E696B9EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E7A596E998BFE69BBC0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE59E82E99293E6B1A0EFBC9A7C720D0A2D20E58692E6B3A1E4B98BE88AB10D0A2D20E5A4AAE998B3E4B98BE4BA95E9B1BCE7BEA40D0A2D20E6B5AEE99DA2E6B69FE6BCAA0000, 67186), +(778162198, 397, 'zhCN', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'zhCN', 0x0100, 67186), +(3037505077, 243302, 'zhCN', 0x0100, 67186), +(261693969, 95549, 'zhCN', 0xFFFFFFFFFFFFFFFFE8A7A6E58AA8E9AD94E6B395E8ADA6E68AA50000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'zhCN', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'zhCN', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'zhCN', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'zhCN', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'zhCN', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'zhCN', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'zhCN', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'zhCN', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'zhCN', 0xE99293E5AEA2E5BE97E58886EFBC9A7C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'zhCN', 0xE5AE8CE68890007C634646316566663030E6B7B1E6B88AE99293E5AEA2E5B7B2E5AE8CE68890EFBC8100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'zhCN', 0xFFFFFFFFFFFFFFFFE58AA0E585A5E6B7B1E6B88AE99293E5AEA20000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'zhCN', 0xE6B7B1E6B5B7E6BD9CE6B0B400E59CA8E7A596E998BFE69BBCE5AE8CE68890E6B7B1E6B88AE99293E5AEA2E4BA8BE4BBB600AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'zhCN', 0xE6B7B1E6B5B7E6BD9CE6B0B400E59CA8E7A596E998BFE69BBCE5AE8CE68890E6B7B1E6B88AE99293E5AEA2E4BA8BE4BBB6004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'zhCN', 0xE6B7B1E6B88AE99293E5AEA200E4B88EE6B7B1E6BD9CE88085E69DB0E7A596E4BAA4E8B088EFBC8CE5928CE6B7B1E6B88AE99293E5AEA2E4B880E5908CE6BD9CE6B0B4E38082008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'zhCN', 0xE7B2BEE88BB1E5A881E8838100E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE588B7E696B0E7A880E69C89E7B2BEE88BB1E6958CE4BABAEFBC8CE587BBE8B4A5E5AE83E4BBACE58FAFE88EB7E5BE97E9A29DE5A496E79A84E4BBAAE5BC8FE68898E588A9E59381E38082002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'zhCN', 0xE7B2BEE88BB1E5A881E8838100E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE588B7E696B0E7A880E69C89E7B2BEE88BB1E6958CE4BABAEFBC8CE587BBE8B4A5E5AE83E4BBACE58FAFE88EB7E5BE97E9A29DE5A496E79A84E4BBAAE5BC8FE68898E588A9E59381E3808200E5A496E59BB4E5A881E883814949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'zhCN', 0xE88590E58C96E8BDBDE585B700E4BDA0E78EB0E59CA8E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E6B283E5AE81E4B8ADE5A3ABE5A484E8B4ADE4B9B0E8999AE7A9BAE4B98BE8A7A6E99986E8A18CE9B89FE38082002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'zhCN', 0xE88590E58C96E8BDBDE585B700E4BDA0E78EB0E59CA8E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E6B283E5AE81E4B8ADE5A3ABE5A484E8B4ADE4B9B0E8999AE7A9BAE4B98BE8A7A6E99986E8A18CE9B89FE3808200E88590E58C96E8BDBDE585B7002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'zhCN', 0xE58A9BE9878FE7A59EE9BE9B494900E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE587BAE78EB0E585A8E696B0E79A84E9AD94E6B395E5A29EE79B8AE7A59EE9BE9BE38082002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'zhCN', 0xE58A9BE9878FE7A59EE9BE9B494900E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE587BAE78EB0E585A8E696B0E79A84E9AD94E6B395E5A29EE79B8AE7A59EE9BE9BE3808200E58A9BE9878FE7A59EE9BE9B4949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'zhCN', 0xE5B487E695ACE5AE9DE8978F00E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE587BAE78EB0E5A4A7E59E8BE5AE9DE8978FEFBC8CE58FAFE68F90E4BE9BE9A29DE5A496E79A84E68898E588A9E59381E38082002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'zhCN', 0xE5B487E695ACE5AE9DE8978F00E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE587BAE78EB0E5A4A7E59E8BE5AE9DE8978FEFBC8CE58FAFE68F90E4BE9BE9A29DE5A496E79A84E68898E588A9E59381E3808200E5B487E695ACE5AE9DE8978F002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'zhCN', 0xE4BBAAE5BC8FE9AD94E6B395202D20E5AE9DE78FA0E58585E6B29B00E59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE587BBE69D80E6958CE4BABAE5908EEFBC8CE7949FE68890E5A48DE88B8FE5AE9DE78FA0E79A84E587A0E78E87E68F90E9AB98E38082002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'zhCN', 0xE4BBAAE5BC8FE9AD94E6B395202D20E5AE9DE78FA0E58585E6B29B00E59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE587BBE69D80E6958CE4BABAE5908EEFBC8CE7949FE68890E5A48DE88B8FE5AE9DE78FA0E79A84E587A0E78E87E68F90E9AB98E3808200E4BBAAE5BC8FE9AD94E6B395202D20E6B2BBE79697494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'zhCN', 0xE88590E58C96E79A87E5AEB6E78C8EE88B9100E4BDA0E78EB0E59CA8E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E6B283E5AE81E4B8ADE5A3ABE5A484E8B4ADE4B9B0E7B2BEE98089E5AEA0E789A9E38082002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'zhCN', 0xE88590E58C96E79A87E5AEB6E78C8EE88B9100E4BDA0E78EB0E59CA8E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E6B283E5AE81E4B8ADE5A3ABE5A484E8B4ADE4B9B0E7B2BEE98089E5AEA0E789A9E3808200E88590E58C96E79A87E5AEB6E78C8EE88B91002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'zhCN', 0xE58A9BE9878FE7A59EE9BE9B00E4BDA0E78EB0E59CA8E58FAFE4BBA5E59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE689BEE588B0E68F90E4BE9BE5A29EE79B8AE79A84E9AD94E6B395E7A59EE9BE9BE38082002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'zhCN', 0xE58A9BE9878FE7A59EE9BE9B00E4BDA0E78EB0E59CA8E58FAFE4BBA5E59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE689BEE588B0E68F90E4BE9BE5A29EE79B8AE79A84E9AD94E6B395E7A59EE9BE9BE3808200E58A9BE9878FE7A59EE9BE9B49002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'zhCN', 0xE9A29DE5A496E68898E588A9E5938100E4BDA0E78EB0E59CA8E58FAFE4BBA5E59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE689BEE588B0E9A29DE5A496E79A84E5BEAEE59E8BE5AE9DE8978FE38082002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'zhCN', 0xE9A29DE5A496E68898E588A9E5938100E4BDA0E78EB0E59CA8E58FAFE4BBA5E59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE689BEE588B0E9A29DE5A496E79A84E5BEAEE59E8BE5AE9DE8978FE3808200E695A3E890BDE79A84E5AE9DE8978F4949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'zhCN', 0xE5A496E59BB4E5A881E8838100E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE588B7E696B0E7A880E69C89E6958CE4BABAEFBC8CE587BBE8B4A5E5AE83E4BBACE58FAFE88EB7E5BE97E9A29DE5A496E79A84E4BBAAE5BC8FE68898E588A9E59381E38082002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'zhCN', 0xE5A496E59BB4E5A881E8838100E4BBAAE5BC8FE59CBAE59CB0E78EB0E59CA8E4BC9AE588B7E696B0E7A880E69C89E6958CE4BABAEFBC8CE587BBE8B4A5E5AE83E4BBACE58FAFE88EB7E5BE97E9A29DE5A496E79A84E4BBAAE5BC8FE68898E588A9E59381E3808200E5A496E59BB4E5A881E8838149002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'zhCN', 0xE4BBAAE5BC8FE9AD94E6B395202D20E5AE9DE78FA0E69588E883BD00E5A48DE88B8FE5AE9DE78FA0E79A84E6B2BBE79697E69588E69E9CE68F90E58D8731303025E38082002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'zhCN', 0xE4BBAAE5BC8FE9AD94E6B395202D20E5AE9DE78FA0E69588E883BD00E5A48DE88B8FE5AE9DE78FA0E79A84E6B2BBE79697E69588E69E9CE68F90E58D8731303025E3808200E4BBAAE5BC8FE9AD94E6B395202D20E6B2BBE796974949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'zhCN', 0xE4BBAAE5BC8FE8A385E9A5B000E4BDA0E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E88EB1E998BFE5A89CE5A484E8B4ADE4B9B0E8999AE7A9BAE4B8BBE9A298E79A84E4B9A6E6A18CE9A5B0E59381E38082002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'zhCN', 0xE4BBAAE5BC8FE8A385E9A5B000E4BDA0E58FAFE4BBA5E4BB8EE993B6E69C88E59F8EE79A84E88EB1E998BFE5A89CE5A484E8B4ADE4B9B0E8999AE7A9BAE4B8BBE9A298E79A84E4B9A6E6A18CE9A5B0E59381E3808200E4BBAAE5BC8FE5AEB6E5B185E99988E8AEBE002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'zhCN', 0xE4BBAAE5BC8FE5AE9DE8978F00E59CA8E4BBAAE5BC8FE59CBAE59CB0E59084E5A484E58FAFE4BBA5E689BEE588B0E5BEAEE59E8BE5AE9DE8978FE38082002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'zhCN', 0xE4BBAAE5BC8FE5AE9DE8978F00E59CA8E4BBAAE5BC8FE59CBAE59CB0E59084E5A484E58FAFE4BBA5E689BEE588B0E5BEAEE59E8BE5AE9DE8978FE3808200E695A3E890BDE79A84E5AE9DE8978F49002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'zhCN', 0xE4BBAAE5BC8FE9AD94E6B395202D20E5A48DE88B8FE5AE9DE78FA000E5A48DE88B8FE5AE9DE78FA0E4BC9AE59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE698BEE78EB0EFBC8CE4B8BAE4BDA0E681A2E5A48D313525E79A84E7949FE591BDE580BCE38082002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'zhCN', 0xE4BBAAE5BC8FE9AD94E6B395202D20E5A48DE88B8FE5AE9DE78FA000E5A48DE88B8FE5AE9DE78FA0E4BC9AE59CA8E4BBAAE5BC8FE59CBAE59CB0E4B8ADE698BEE78EB0EFBC8CE4B8BAE4BDA0E681A2E5A48D313525E79A84E7949FE591BDE580BCE3808200E4BBAAE5BC8FE9AD94E6B395202D20E6B2BBE7969749002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'zhCN', 0xE98592E5BA84E8B5ADE889B2E7AA97E688B700000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'zhCN', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'zhCN', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'zhCN', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'zhCN', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'zhCN', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'zhCN', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'zhCN', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'zhCN', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'zhCN', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'zhCN', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'zhCN', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'zhCN', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'zhCN', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'zhCN', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'zhCN', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'zhCN', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'zhCN', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'zhCN', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'zhCN', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'zhCN', 0x00E69E97E5A49AE5B094E7B1B3E4BC9AE6A087E8AEB0E789B9E5AE9AE79A84E99D9EE9A696E9A286E6958CE4BABAE38082E587BBE8B4A5E68980E69C89E8A2ABE6A087E8AEB0E79A84E79BAEE6A087E58DB3E58FAFE5AE8CE68890E6958CE696B9E983A8E9989FE8BF9BE5BAA6E3808200E587BBE8B4A5E68980E69C89E8A2ABE6A087E8AEB0E79A84E79BAEE6A087E58DB3E58FAFE5AE8CE68890E6958CE696B9E983A8E9989FE8BF9BE5BAA6E3808200, 67186), +(3776013982, 1278156, 'zhCN', 0x00E69E97E5A49AE5B094E7B1B3E4BC9AE6A087E8AEB0E5B9B6E5898AE5BCB1E789B9E5AE9AE79A84E99D9EE9A696E9A286E6958CE4BABAEFBC8CE4B894E78EA9E5AEB6E6ADBBE4BAA1E4B88DE4BC9AE689A3E999A4E589A9E4BD99E697B6E997B4E380820D0A0D0AE587BBE8B4A5E68980E69C89E8A2ABE6A087E8AEB0E79A84E79BAEE6A087E58DB3E58FAFE5AE8CE68890E6958CE696B9E983A8E9989FE8BF9BE5BAA6E3808200E7949FE591BDE580BCE9998DE4BD8E24733125E380820D0AE980A0E68890E79A84E4BCA4E5AEB3E9998DE4BD8E24733225E3808200, 67186), +(368401261, 7367, 'zhCN', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'zhCN', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'zhCN', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'zhCN', 0xB2790000, 67186), +(3495286709, 24475, 'zhCN', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'zhCN', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'zhCN', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'zhCN', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'zhCN', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'zhCN', 0x000000, 67186), +(3247720076, 42450, 'zhCN', 0x041E000000, 67186), +(3247720076, 42449, 'zhCN', 0x041E000000, 67186), +(3247720076, 42448, 'zhCN', 0x04BE000000, 67186), +(3247720076, 42447, 'zhCN', 0x04BE000000, 67186), +(3247720076, 42446, 'zhCN', 0x0700000000, 67186), +(3247720076, 42445, 'zhCN', 0x0100000000, 67186), +(3247720076, 40690, 'zhCN', 0x0100000000, 67186), +(2014779773, 207, 'zhCN', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'zhCN', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'zhCN', 0x000000, 67186), +(3776013982, 390260, 'zhCN', 0x000000, 67186), +(261693969, 95304, 'zhCN', 0xFFFFFFFFFFFFFFFFE699A6E69A97E8999AE7A9BAE6A0B8E5BF83EFBC9AE88081E585B5E69B99E58589E7BAB9E7ABA00000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'zhCN', 0xFFFFFFFFFFFFFFFFE699A6E69A97E8999AE7A9BAE6A0B8E5BF83EFBC9AE8999AE58589E781B0E5B2A90000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'zhCN', 0xFFFFFFFFFFFFFFFFE699A6E69A97E8999AE7A9BAE6A0B8E5BF83EFBC9AE98791E5B8810000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'zhCN', 0x0000000091000000, 67186), +(1673391669, 145, 'zhCN', 0x8E000000, 67186), +(2791084701, 142, 'zhCN', 0x32DC0600, 67186), +(2533050585, 1529, 'zhCN', 0x7072696D61727900000000000000000000000000000000000000000000000000F9050000100600000100000000000000000000000000000000000000000000000000000000000009421F85AB3F14AEC642, 67186), +(2533050585, 1528, 'zhCN', 0x7072696D61727900EC51B83DEC51B83DEC51B83D000000000000000000000000F80500000F0600000100000000000000000000000000000000000000000000000000000000000003427B14AE3F52B8C642, 67186), +(2930840720, 5037, 'zhCN', 0x706574320014AE6F4166665641A470BD3FAD1300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5036, 'zhCN', 0x7065743100C3F53841713D2E4152B886C0AC1300001006000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(2930840720, 5035, 'zhCN', 0x70657438000AD783BF48E12A41295C4FC0AB1300001006000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 5034, 'zhCN', 0x7065743130007B148241713DCAC085EB51C0AA1300001006000000000000AA0000007B142EC00000000000000000AE47E13D, 67186), +(2930840720, 5033, 'zhCN', 0x70657439001F85DBC0F628C4C05C8F3240A91300001006000000000000AA0000007B142EC00AD7233E0000000000000000, 67186), +(2930840720, 5032, 'zhCN', 0x70657437005C8F6641CDCC4CC1C3F5E83FA81300001006000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 5031, 'zhCN', 0x70657436001F85E3C052B8D6C0CDCC0CC0A71300001006000000000000AA000000EC5138C0000000000000000000000000, 67186), +(2930840720, 5030, 'zhCN', 0x7065743500B81E9741295C03C1AE47E1BDA61300001006000000000000AA000000D7A320C0000000000000000000000000, 67186), +(2930840720, 5029, 'zhCN', 0x7065743400295C4FC085EB11400AD7E33FA51300001006000000000000AA00000014AE4740000000000000000000000000, 67186), +(2930840720, 5028, 'zhCN', 0x70657433000AD78B40B81E29C1EC5138C0A41300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5026, 'zhCN', 0x706574323200EC5110C114AE9F407B140EC0A21300001006000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5025, 'zhCN', 0x7065743231003D0AF7BF3333F3401F852BC0A11300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5024, 'zhCN', 0x7065743230001F851F4152B89EC0CDCC7C40A01300001006000000000000AA0000001F853BC06666E63E0000000000000000, 67186), +(2930840720, 5023, 'zhCN', 0x7065743139000AD7E33F3D0A9FC05C8F42C09F1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5022, 'zhCN', 0x706574313800C3F59EC148E1FABF5C8F02C09E1300001006000000000000AA0000005C8F42C0000000000000000000000000, 67186), +(2930840720, 5021, 'zhCN', 0x70657431370014AE27C05C8F32C014AE37C09D1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5020, 'zhCN', 0x706574313600AE4761BEC3F52C41C3F528C09C1300001006000000000000AA0000009A992940000000000000000000000000, 67186), +(2930840720, 5019, 'zhCN', 0x7065743135009A999FC1713DEA409A999FC19B1300001006000000000000A9010000C3F548400000000000000000E17A943E, 67186), +(2930840720, 5018, 'zhCN', 0x706574313400295C9FC18FC235C09A9999BF9A1300001006000000000000AA0000000AD733C0CDCCCCBD0000000000000000, 67186), +(2930840720, 5017, 'zhCN', 0x706574313300A4708DC1713D1A40D7A3D0BF991300001006000000000000AA000000713D3A40000000000000000000000000, 67186), +(2930840720, 5016, 'zhCN', 0x706574313200C3F588BF333333405C8F42C0981300001006000000000000AA000000CDCC3C40000000000000000000000000, 67186), +(2930840720, 5015, 'zhCN', 0x706574313100EC510CC1666626BF9A9919C0971300001006000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5014, 'zhCN', 0x706574323200B81E01C1AE4799407B140EC0961300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5013, 'zhCN', 0x706574323100CDCCCCBF8FC2DD4014AE27C0951300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5012, 'zhCN', 0x70657432300052B85E41EC51F8C0E17A2440941300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 5011, 'zhCN', 0x706574313900295C63C148E1F2C08FC255C0931300000F06000000000000AA0000003D0A37C00000000000000000AE47E13D, 67186), +(2930840720, 5010, 'zhCN', 0x70657431380066669EC15C8F02C05C8F02C0921300000F06000000000000AA000000333343C0000000000000000000000000, 67186), +(2930840720, 5009, 'zhCN', 0x70657431370048E10AC048E13AC0D7A340C0911300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5008, 'zhCN', 0x706574313600F6282C409A9931413D0A27C0901300000F06000000000000AA000000C3F52840000000000000000000000000, 67186), +(2930840720, 5007, 'zhCN', 0x706574313500C3F59EC1A4708F41C3F59EC18F1300000F06000000000000A9010000CDCC3C40000000008FC2F5BCE17A943E, 67186), +(2930840720, 5006, 'zhCN', 0x7065743134005C8F9EC1AE4701C0A4709DBF8E1300000F06000000000000AA0000000AD733C000000000295C8F3D00000000, 67186), +(2930840720, 5005, 'zhCN', 0x706574313300CDCC8CC10AD713406666C6BF8D1300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5004, 'zhCN', 0x706574313200CDCC4C3D3D0A3740295C5FC08C1300000F06000000000000AA000000CDCC3C40000000008FC2F5BD00000000, 67186), +(2930840720, 5003, 'zhCN', 0x706574313100E17AFCC0295C4FBFAE4721C08B1300000F06000000000000AA0000007B142EC0CDCC4C3D8FC2F53C00000000, 67186), +(2930840720, 5002, 'zhCN', 0x70657431300000008041CDCCC4C0295C4FC08A1300000F06000000000000AA0000003D0A47C00000000000000000AE47E13D, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(2930840720, 5001, 'zhCN', 0x706574390085EBD9C0B81E85BF9A99B93F891300000F06000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5000, 'zhCN', 0x7065743800A4707DBF713D26415C8F42C0881300000F06000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 4999, 'zhCN', 0x706574370014AE87413D0A57C18FC2F53C871300000F06000000000000AA0000003D0A47C0000000000000000000000000, 67186), +(2930840720, 4998, 'zhCN', 0x706574360085EBE1C0A470D5C09A9909C0861300000F06000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 4997, 'zhCN', 0x70657435008FC297411F850BC11F851BC0851300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 4996, 'zhCN', 0x70657434003D0A17BF66661640CDCCEC3F841300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 4995, 'zhCN', 0x70657433008FC221411F8543C13D0A57C0831300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 4993, 'zhCN', 0x7065743200E17A7041C3F53C410AD723BC811300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 4992, 'zhCN', 0x70657431009A99394133335741AE4721C0801300000F06000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(21457424, 1552, 'zhCN', 0x100600000000000000FFFFFFFF, 67186), +(21457424, 1551, 'zhCN', 0x0F0600000000000000FFFFFFFF, 67186), +(3386943305, 340484, 'zhCN', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'zhCN', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'zhCN', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'zhCN', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'zhCN', 0xE8A385E9A5B0E586B3E6969700E5928CE5AEB6E585B7E78EA9E68D89E8BFB7E8978F002D20E99C80E8A681E2809CE887B3E69A97E4B98BE5A49CE2809DEFBC8CE69C80E4BD8EE7AD89E7BAA73130E380820D0A2D20E4BC91E997B2E99D9EE887B4E591BDE59E8B507650E380820D0A2D20E4BB85E99990E58D95E68E92E38082E5A682E99C80E7BB84E9989FE68E92E9989FEFBC8CE8AFB7E5898DE5BE80E993B6E69C88E59F8EE5AFBBE689BEE59CBAE59CB0E7BB84E7BB87E88085E998BFE691A9E790B3E380820D0A2D20E8A2ABE2809CE58F91E78EB0E2809DE5B9B6E2809CE68A93E88EB7E2809DE5908EEFBC8CE4BDA0E5B0B1E587BAE5B180E4BA86EFBC81009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'zhCN', 0x000000, 67186), +(3776013982, 149981, 'zhCN', 0x000000, 67186), +(3330775162, 1897, 'zhCN', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'zhCN', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'zhCN', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'zhCN', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'zhCN', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'zhCN', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'zhCN', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'zhCN', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'zhCN', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'zhCN', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'zhCN', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'zhCN', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'zhCN', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'zhCN', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'zhCN', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'zhCN', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'zhCN', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'zhCN', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'zhCN', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'zhCN', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'zhCN', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'zhCN', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'zhCN', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'zhCN', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'zhCN', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'zhCN', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'zhCN', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'zhCN', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'zhCN', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'zhCN', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186), +(1408785804, 249390, 'zhCN', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'zhCN', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'zhCN', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'zhCN', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'zhCN', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'zhCN', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'zhCN', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'zhCN', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'zhCN', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'zhCN', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'zhCN', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'zhCN', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'zhCN', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'zhCN', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'zhCN', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'zhCN', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'zhCN', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'zhCN', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'zhCN', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'zhCN', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'zhCN', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'zhCN', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'zhCN', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'zhCN', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'zhCN', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'zhCN', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'zhCN', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'zhCN', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'zhCN', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'zhCN', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'zhCN', 0xE7A78DE6978FE789B9E995BF00E6BF80E6B4BBE5908EEFBC8CE5BD93E4BDA0E69CAAE696BDE694BEE5B7A8E9BE99E6B395E69CAFEFBC88E5A682E781ABE784B0E59090E681AFE5928CE7BFB1E7BF94EFBC89E697B6EFBC8CE5B086E887AAE58AA8E58F98E4B8BAE4BDA0E79A84E5B9BBE5AEB9E5BDA2E68081E380820000, 67186), +(3776013982, 1283168, 'zhCN', 0x00E5B086E4BA94E4B8AAE6998BE58D87E8999AE7A9BAE7A28EE78987E59088E68890E4B8BAE4B880E4B8AAE6998BE58D87E8999AE7A9BAE6A0B8E5BF83E38082E887B3E69A97E4B98BE5A49CE7ACAC31E8B59BE5ADA3E4B8ADEFBC8CE58FAFE794A8E4BA8EE68F90E58D87E5B7B2E6BBA1E7BAA7E88BB1E99B84E68896E7A59EE8AF9DE6ADA6E599A8E68896E9A5B0E59381E79A84E789A9E59381E7AD89E7BAA7EFBC8CE68896E698AFE68F90E58D87E58589E88080E588B6E980A0E6ADA6E599A8E68896E9A5B0E59381E79A84E69C80E9AB98E59381E8B4A8E380820000, 67186), +(3776013982, 1282778, 'zhCN', 0x00E887B3E69A97E4B98BE5A49CE7ACAC31E8B59BE5ADA3E4B8ADEFBC8CE58FAFE794A8E4BA8EE68F90E58D87E5B7B2E6BBA1E7BAA7E88BB1E99B84E68896E7A59EE8AF9DE6ADA6E599A8E68896E9A5B0E59381E79A84E789A9E59381E7AD89E7BAA7EFBC8CE68896E698AFE68F90E58D87E58589E88080E588B6E980A0E6ADA6E599A8E68896E9A5B0E59381E79A84E69C80E9AB98E59381E8B4A8E380820000, 67186), +(3776013982, 1264876, 'zhCN', 0x00E794A8E887B4E6ADBBE68993E587BBE68896E9A1BAE58A88E696A9E591BDE4B8AD247332E4B8AAE68896E69BB4E5A49AE79BAEE6A087E697B6EFBC8CE5AFB9E58F97E5B7A8E4BABAE68993E587BBE5BDB1E5938DE79A84E79BAEE6A087E980A0E68890E4BCA4E5AEB3EFBC8CE5B9B6E4BDBFE5B7A8E4BABAE68993E587BBE5AFB9E585B6E79A84E69588E69E9CE5BBB6E995BF247B2473312F313030307D2E31E7A792E380820000, 67186), +(3776013982, 1255629, 'zhCN', 0x00E9878AE694BEE79A84E7B2BEE58D8EE4BC9AE5BCBAE58C96E78EA9E5AEB6EFBC8CE4BDBFE585B6E7A7BBE58AA8E9809FE5BAA6E68F90E9AB9824733125EFBC8CE980A0E68890E79A84E4BCA4E5AEB3E38081E6B2BBE79697E5928CE590B8E694B6E69588E69E9CE68F90E9AB9824733225EFBC8CE68C81E7BBAD2464E38082E8AFA5E69588E69E9CE58FAFE58FA0E58AA0EFBC8CE4BD86E4B88DE4BC9AE588B7E696B0E585B6E68C81E7BBADE697B6E997B4E3808200E7A7BBE58AA8E9809FE5BAA6E68F90E9AB9824733125E380820D0AE980A0E68890E79A84E4BCA4E5AEB3E68F90E9AB9824733225E380820D0AE6B2BBE79697E5928CE590B8E694B6E69588E69E9CE68F90E9AB9824733325E3808200, 67186), +(3776013982, 447444, 'zhCN', 0x00243F63335BE69295E5BC80E4B880E98193E8BFBDE8B8AAE6958CE4BABAE79A84E8A382E99A995D5BE5BF83E781B5E99C87E78886E69295E5BC80E4B880E98193E8BFBDE8B8AAE6958CE4BABAE79A84E786B5E883BDE8A382E99A995DEFBC8CE68C81E7BBAD2434353031393364E38082E4BD8DE4BA8EE8B7AFE5BE84E4B8ADE79A84E6958CE4BABAE5A484E4BA8EE88C83E59BB4E58685E697B6EFBC8CE6AF8F243435393331347431E7A792E58F97E588B0243434373434387331E782B9E69A97E5BDB1E4BCA4E5AEB3E380820000, 67186), +(372281185, 38, 'zhCN', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'zhCN', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'zhCN', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'zhCN', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'zhCN', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'zhCN', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'zhCN', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'zhCN', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'zhCN', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'zhCN', 0x0024407370656C6C6465736332313037323500E69588E69E9CE7BB93E69D9FE5908EE4BC9AE78886E782B8EFBC8CE980A0E68890247731E782B9E5A5A5E69CAFE4BCA4E5AEB3E3808200, 67186), +(3386943305, 332898, 'zhCN', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'zhCN', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'zhCN', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'zhCN', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'zhCN', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'zhCN', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'zhCN', 0x0464000000, 67186), +(3776013982, 1280123, 'zhCN', 0x000000, 67186), +(3205218938, 54794, 'zhCN', 0x424353484F5254444154454E4F594541520025422025640001000000, 67186), +(3205218938, 22339, 'zhCN', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'zhCN', 0x534C4153485F5441524745545F4D41524B455232002FE9989FE4BC8DE6A087E8AEB00001000000, 67186), +(3205218938, 22331, 'zhCN', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'zhCN', 0x534C4153485F574F524C445F4D41524B455232002FE4B896E7958CE6A087E8AEB00001000000, 67186), +(3205218938, 22329, 'zhCN', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'zhCN', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'zhCN', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'zhCN', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'zhCN', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'zhCN', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'zhCN', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'zhCN', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'zhCN', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'zhCN', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'zhCN', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'zhCN', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'zhCN', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'zhCN', 0x00E4BDA0E5B09DE8AF95E7BB88E7BB93E4B880E4B8AAE58F97E4BCA4E79A84E79BAEE6A087EFBC8CE980A0E68890247331E782B9E69A97E5BDB1E4BCA4E5AEB3EFBC8CE5B9B6E59CA82434363835373264E58685E980A0E68890243436383537326F31E782B9E69A97E5BDB1E4BCA4E5AEB3E38082E58FAAE883BDE5AFB9E7949FE591BDE580BCE9AB98E4BA8E24733325E68896E4BD8EE4BA8E24733225E79A84E6958CE4BABAE4BDBFE794A8E380820000, 67186), +(261693969, 95553, 'zhCN', 0xFFFFFFFFFFFFFFFFE585B7E78EB0E5AF86E5BAA600001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'zhCN', 0xFFFFFFFFFFFFFFFFE8B083E69FA5E9BB91E69A97E696B9E5B096E7A2910000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'zhCN', 0xFFFFFFFFFFFFFFFFE5898AE5878FE4BABAE695B00000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'zhCN', 0xE982AAE681B6E9B39EE789870000E8B58BE4BA88E5ADA6E5BE92E5BA93E6A0BCE696AFE78FADE681B6E6AF92E681A9E585B8EFBC8CE4BDBFE585B6E7949FE591BDE580BCE5928CE4BCA4E5AEB3E68F90E9AB982431323839313032733125EFBC8CE5B9B6E4B894E883BDE5A49FE696BDE694BEE982AAE681B6E9B39EE78987E3808200, 67186), +(3776013982, 1281946, 'zhCN', 0x000000, 67186), +(3776013982, 1270634, 'zhCN', 0x00E4BDBFE88A82E782B9E7B1B3E8BEBEE5B094E5AFB9E5A5A5E69CAFE58583E7B4A0E980A0E68890E79A84E4BCA4E5AEB3E7BFBBE5808DEFBC8CE68C81E7BBAD3135E7A792E3808200E58F97E588B0E58F8CE5808DE4BCA4E5AEB3E3808200, 67186), +(3776013982, 1270085, 'zhCN', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'zhCN', 0x00E696BDE6B395E88085E794A8E887AAE8BAABE7949FE591BDE580BCE68DA2E58F96E7AD89E9878FE79A84E590B8E694B6E68AA4E79BBEE38082E68AA4E79BBEE8A2ABE7A7BBE999A4E697B6E4BAA7E7949FE78886E58F91EFBC8CE5AFB924313237303038356131E7A081E88C83E59BB4E58685E79A84E78EA9E5AEB6E980A0E6889024313237303038357331E782B9E69A97E5BDB1E4BCA4E5AEB3E3808200E590B8E694B6247731E782B9E4BCA4E5AEB3E380820D0AE69588E69E9CE7A7BBE999A4E5908EEFBC8CE5AFB924313237303038356131E7A081E88C83E59BB4E58685E79A84E78EA9E5AEB6E980A0E6889024313237303038357331E782B9E69A97E5BDB1E4BCA4E5AEB3E3808200, 67186), +(3776013982, 1258411, 'zhCN', 0x000000, 67186), +(3776013982, 1258410, 'zhCN', 0x00E9A5AEE794A8EFBC8CE88EB7E5BE97E4B880E4B8AAE8A385E9A5B0E69588E69E9CE3808200E4B880E4B8AAE8999AE5BCB1E79A84E38081E697A0E6B395E4BDBFE794A8E79A84E7A59EE5A587E4B98BE79083EFBC8CE999A4E4BA86E4B88DE58FAFE981BFE5858DE79A84E6B688E695A3E4B98BE5A496EFBC8CE585B6E4BB96E588ABE697A0E68980E5BE85E3808200, 67186), +(3776013982, 1258336, 'zhCN', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'zhCN', 0x000000, 67186), +(3776013982, 1257729, 'zhCN', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'zhCN', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'zhCN', 0x00E696BDE6B395E88085E5BC80E5A78BE5A48DE6B4BBEFBC8CE5A682E69E9CE5BC95E5AFBCE5AE8CE68890EFBC8CE5B086E4BBA5E69C80E5A4A7E7949FE591BDE580BCE79A842431323537373238733125E5A48DE6B4BBE3808200E6ADA3E59CA8E5A48DE6B4BBE38082E5A682E69E9CE5BC95E5AFBCE5AE8CE68890EFBC8CE696BDE6B395E88085E5B086E4BBA5E69C80E5A4A7E7949FE591BDE580BCE79A842431323537373238733125E5A48DE6B4BBE3808200, 67186), +(3776013982, 1257505, 'zhCN', 0x00E696BDE6B395E88085E794A8E887AAE8BAABE7949FE591BDE580BCE68DA2E58F96E7AD89E9878FE79A84E590B8E694B6E68AA4E79BBEE3808200E590B8E694B6247731E782B9E4BCA4E5AEB3E3808200, 67186), +(3776013982, 1256189, 'zhCN', 0x000000, 67186), +(3776013982, 1255966, 'zhCN', 0x00E696BDE6B395E88085E6AF8F247431E7A792E681A2E5A48DE585B6E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E3808200E6AF8F247431E7A792E681A2E5A48DE69C80E5A4A7E7949FE591BDE580BCE79A8424733125E3808200, 67186), +(3776013982, 1253337, 'zhCN', 0x000000, 67186), +(3776013982, 1253336, 'zhCN', 0x0000E4BB8EE9A5AEE69699E4B8ADE79BAEE79DB9E4BA86E4B880E4B8AAE58FAFE79691E79A84E5B9BBE8B1A1E280A6E280A600, 67186), +(3776013982, 1253194, 'zhCN', 0x0000E5BC95E5AFBC00, 67186), +(3776013982, 1253193, 'zhCN', 0x0000E5BC95E5AFBC00, 67186), +(3776013982, 1253185, 'zhCN', 0x0000E5BC95E5AFBC00, 67186), +(3776013982, 1253064, 'zhCN', 0x000000, 67186), +(3776013982, 1252431, 'zhCN', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'zhCN', 0x0024407370656C6C646573633132343130323300E6AF8F247431E7A792E980A0E6889024313235383333367331E782B9E5A5A5E69CAFE4BCA4E5AEB3E3808200, 67186), +(3776013982, 1241023, 'zhCN', 0x00E4BD90C2B7E6A0BCE4BCA6E794A8E5B18FE99A9CE4BF9DE68AA4E887AAE5B7B1EFBC8CE590B8E694B6E58F97E588B0E79A84E4BCA4E5AEB3E5B9B6E5BC80E5A78BE696BDE694BEE69C80E7BB88E8ADA6E5918AE38082E696BDE6B395E7BB93E69D9FE697B6EFBC8CE5B18FE99A9CE6AF8F24313234313033327431E7A792E5AFB9E68980E69C89E78EA9E5AEB6E980A0E6889024313235383333367331E782B9E5A5A5E69CAFE4BCA4E5AEB3EFBC8CE79BB4E887B3E8A2ABE691A7E6AF81E3808200E590B8E694B6E68EA5E4B88BE69DA5E58F97E588B0E79A84247731E782B9E4BCA4E5AEB3E3808200, 67186), +(3776013982, 1235076, 'zhCN', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'zhCN', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'zhCN', 0x00E59BA4E5AE9DE78B82E4BABAE7BFBBE68DA1E8B79DE7A6BBE69C80E8BF91E79A84E8B584E6BA90E5A086EFBC8CE5B086E887AAE5B7B1E79A84E4B880E9A1B9E68A80E883BDE69BBFE68DA2E4B8BAE585A8E696B0E79A84E68A80E883BDE38082243F44494646387C3F4449464632335B5D5BE4BB96E4B880E6ACA1E58FAAE883BDE4BF9DE79599E4B880E7A78DE68A80E883BDE380825D0000, 67186), +(3776013982, 1235067, 'zhCN', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'zhCN', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'zhCN', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'zhCN', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'zhCN', 0x00E5A5A5E895BEE88E89E4BA9AE4B8BAE4B880E5908DE78EA9E5AEB6E696BDE58AA0E8999AE7A9BAE9AD94E6B395E5B18FE99A9CEFBC8CE590B8E694B6247331E782B9E6B2BBE79697E69588E69E9CE38082E5A682E69E9C24407370656C6C6E616D6531323333383635E8A2ABE9A9B1E695A3EFBC8CE589A9E4BD99E590B8E694B6E9878FE4BC9AE99A8FE69CBAE8BDACE7A7BBE588B0E58FA6E4B880E5908DE78EA9E5AEB6E8BAABE4B88AE3808200E590B8E694B6247731E782B9E6B2BBE79697E9878FE380820D0A0D0AE4B880E697A6E8A2ABE9A9B1E695A3EFBC8CE589A9E4BD99E6B2BBE79697E590B8E694B6E69588E69E9CE4BC9AE8BDACE7A7BBE588B0E585B6E4BB96E78EA9E5AEB6E8BAABE4B88AE3808200, 67186), +(3776013982, 1228865, 'zhCN', 0x00E58FACE594A4E68896E8A7A3E695A3E8BF99E7A78DE59D90E9AA91E3808200243F6A31675BE59CB0E99DA2E7A7BBE58AA8E9809FE5BAA6E68F90E9AB98246A316725E380825D5B5D243F6A31665BE9A39EE8A18CE9809FE5BAA6E68F90E9AB98246A316625E380825D5B5D243F6A31735BE6B8B8E6B3B3E9809FE5BAA6E68F90E9AB98246A317325E380825D5B5D00, 67186), +(3776013982, 1225598, 'zhCN', 0x00243F50433135343832385B7C636E4951313A2D20E59FBAE7A180E6BD9CE6B0B4E69C8D7C525D5B5D243F50433135343832395B7C636E4951323A2D20E58AA0E59BBAE585B3E88A82E6BD9CE6B0B4E69C8D7C525D5B5D243F50433135343833305B7C636E4951333A2D20E6B7B1E6BD9CE6B6A6E6BB91E6BD9CE6B0B4E69C8D7C525D5B5D243F50433135343833325B7C636E4951343A2D20E5B895E7A791E6B5B7E6B29FE8849AE8B9BCE6BD9CE6B0B4E69C8D7C525D5B5D0D0AE6B8B8E6B3B3E9809FE5BAA6202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20E59FBAE7A180E6B0A7E6B094E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313232343730306D36E58D95E4BD8D0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20E6B7B1E6BD9CE88085E79A84E697A7E6B094E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313237313631336D36E58D95E4BD8D0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20E6B7B1E6B0B4E6B58BE8AF95E8BF87E79A84E6B094E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313237313631346D36E58D95E4BD8D0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20E7BAB3E6B49BE68B89E5858BE79A84E591BCE590B8E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313237313631356D36E58D95E4BD8D0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20E59FBAE7A180E9B1BCE9A5B57C520D0AE699AEE9809AE58FAFE99293E7949FE789A90D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20E88AACE8AFBAE5B094E9B1BCE9A5B57C520D0AE4BC98E7A780E58FAFE99293E7949FE789A90D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20E8A4B6E9B38DE9B2A8E8AFB1E9A5B57C520D0AEFBC9AE7B2BEE889AFE58FAFE99293E7949FE789A90D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20E6B58AE6B0B4E68EA0E8A18CE9B1BCE88289E9B1BCE9A5B57C520D0AEFBC9AE58FB2E8AF97E58FAFE99293E7949FE789A90D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20E6B585E6BBA9E7BD917C520D0AEFBC9AE5B096E588BAE788ACE89FB9E5928CE5A49AE588BAE79A84E6B5B7E9A9AC0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20E4B889E882A1E7BABFE7BD917C520D0AEFBC9AE68980E69C89E5B08FE59E8BE7949FE789A90D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20E689BFE58E8BE79BAEE9959C7C520D0AEFBC9AE58FAFE58F91E78EB0E4B88AE58FA4E59CA3E789A95D5B5D0D0A00243F50433135343832385B7C636E4951313A2D20E59FBAE7A180E6BD9CE6B0B4E69C8D7C525D5B5D243F50433135343832395B7C636E4951323A2D20E58AA0E59BBAE585B3E88A82E6BD9CE6B0B4E69C8D7C525D5B5D243F50433135343833305B7C636E4951333A2D20E6B7B1E6BD9CE6B6A6E6BB91E6BD9CE6B0B4E69C8D7C525D5B5D243F50433135343833325B7C636E4951343A2D20E5B895E7A791E6B5B7E6B29FE8849AE8B9BCE6BD9CE6B0B4E69C8D7C525D5B5D0D0AE6B8B8E6B3B3E9809FE5BAA6202B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20E59FBAE7A180E6B0A7E6B094E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313232343730306D36E58D95E4BD8D0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20E6B7B1E6BD9CE88085E79A84E697A7E6B094E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313237313631336D36E58D95E4BD8D0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20E6B7B1E6B0B4E6B58BE8AF95E8BF87E79A84E6B094E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313237313631346D36E58D95E4BD8D0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20E7BAB3E6B49BE68B89E5858BE79A84E591BCE590B8E7BD907C520D0AE69C80E5A4A7E6B0A7E6B094E580BC24313237313631356D36E58D95E4BD8D0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20E59FBAE7A180E9B1BCE9A5B57C520D0AE699AEE9809AE58FAFE99293E7949FE789A90D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20E88AACE8AFBAE5B094E9B1BCE9A5B57C520D0AE4BC98E7A780E58FAFE99293E7949FE789A90D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20E8A4B6E9B38DE9B2A8E8AFB1E9A5B57C520D0AEFBC9AE7B2BEE889AFE58FAFE99293E7949FE789A90D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20E6B58AE6B0B4E68EA0E8A18CE9B1BCE88289E9B1BCE9A5B57C520D0AEFBC9AE58FB2E8AF97E58FAFE99293E7949FE789A90D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20E6B585E6BBA9E7BD917C520D0AEFBC9AE5B096E588BAE788ACE89FB9E5928CE5A49AE588BAE79A84E6B5B7E9A9AC0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20E4B889E882A1E7BABFE7BD917C520D0AEFBC9AE68980E69C89E5B08FE59E8BE7949FE789A90D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20E689BFE58E8BE79BAEE9959C7C520D0AEFBC9AE58FAFE58F91E78EB0E4B88AE58FA4E59CA3E789A95D5B5D00, 67186), +(3776013982, 1225322, 'zhCN', 0x007C636E475245454E5F464F4E545F434F4C4F523AE68EA8E88D90E68A80E883BDE7AD89E7BAA7EFBC9A7C72310D0A0D0AE5B9B3E99D99E5AE89E5AE81E79A84E6B0B4E59F9FEFBC8CE698AFE59E82E99293E5AEA2E5BC80E5A78BE68EA2E7B4A2E6B7B1E6B5B7E5A5A5E7A798E79A84E79086E683B3E4B98BE59CB0E380820D0A0D0AE8AFA5E59CB0E58CBAE58FAFE689BEE588B0E79A84E59E82E99293E6B1A0EFBC9A0D0A2D20E5A4AAE998B3E4B98BE4BA95E9B1BCE7BEA40D0A2D20E58692E6B3A1E4B98BE88AB10D0A2D20E7BBBDE58D8EE4B98BE7BEA40D0A2D20E7B298E7A8A0E79A84E8999AE7A9BA0D0A2D20E695A3E890BDE79A84E8B4A7E789A90D0A2D20E4B8A2E5A4B1E79A84E5AE9DE789A90000, 67186), +(3776013982, 1225281, 'zhCN', 0x00E8BF99E7A78DE6B8A9E5928CE79A84E7949FE789A9E5818FE788B1E6B0B8E6AD8CE6A3AEE69E97E79A84E5AE81E99D99E6B0B4E59F9FE38082E8BF99E4BA9BE6B0B4E59F9FE5AFB9E699AEE9809AE59E82E99293E5AEA2E69DA5E8AFB4E79C8BE4BCBCE5B9B3E5B8B8EFBC8CE8808CE58FAAE69C89E69C80E6958FE99490E79A84E4BABAE6898DE883BDE58F91E78EB0E8BF99E7A78DE789B9E6AE8AE79A84E9B1BCE7B1BBE380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AE69588E69E9CEFBC9A7C520D0A0D0A24407370656C6C69636F6E3132333739343224407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E8BF99E7A78DE9B1BCE79A84E59CB0E696B9EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E59388E7B181E681A9E8BEBEE5B0940D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE59E82E99293E6B1A0EFBC9A7C720D0A2D20E79B9BE694BEE6BF80E6B5810000, 67186), +(3776013982, 1225277, 'zhCN', 0x00E59388E7B181E681A9E8BEBEE5B094E79A84E6B0B4E59F9FE590ABE69C89E78BACE789B9E79FBFE789A9E8B4A8EFBC8CE5BD93E6B581E7BB8FE6B4BBE8B783E79A84E8BDBBE6AD8CE9B1BCE79A84E9B383E983A8E697B6EFBC8CE4BC9AE4BAA7E7949FE7A9BAE781B5E79A84E6B0B4E4B88BE6978BE5BE8BE38082E8BF99E6AD8CE5A3B0E5AFB9E59E82E99293E5AEA2E8808CE8A880E682A6E880B3E58AA8E590ACEFBC8CE58DB4E883BDE794A8E5BEAEE5A699E79A84E68CAFE58AA8E9A9B1E8B5B6E68D95E9A39FE88085E38082E5A682E69E9CE68D95E9A39FE88085EFBC88E6AF94E5A682E689ADE69BB2E79A84E88482E9B2A4EFBC89E99DA0E5BE97E5A4AAE8BF91EFBC8CE68CAFE58AA8E4BC9AE58F98E5BE97E69BB4E58AA0E589A7E78388E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AE69588E69E9CEFBC9A7C520D0A0D0A24407370656C6C69636F6E31323337313034E783B9E9A5AAE79B9BE5AEB40D0A0D0AE8BF99E7A78DE69E81E585B6E7A880E69C89E7BE8EE591B3E79A84E9B1BCE7B1BBE698AFE8AEB8E5A49AE887B3E69A97E4B98BE5A49CE783B9E9A5AAE9858DE696B9E79A84E9878DE8A681E9A39FE69D90E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E8BF99E7A78DE9B1BCE79A84E59CB0E696B9EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E59388E7B181E681A9E8BEBEE5B0940D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE59E82E99293E6B1A0EFBC9A7C720D0A2D20E7BBBDE58D8EE4B98BE7BEA40D0A2D20E58692E6B3A1E4B98BE88AB10D0A2D20E5A4AAE998B3E4B98BE4BA95E9B1BCE7BEA40D0A2D20E79B9BE694BEE6BF80E6B5810000, 67186), +(3776013982, 1225273, 'zhCN', 0x00E8999AE5BDB1E9A38EE69AB4E4B8ADE4BBA4E4BABAE4B88DE5AE89E79A84E5A587E789B9E5B185E6B091EFBC8CE8BF99E7A78DE58FAFE4BBA5E4B88AE992A9E79A84E8999AE7A9BAE58C96E8BAABE995BFE79D80E695B0E69DA1E59091E5A496E5BBB6E4BCB8E79A84E882A2E4BD93E38082E78BA1E78CBEE38081E69CBAE6958FE38081E881AAE685A7EFBC8CE5AFB9E4BBBBE4BD95E695A2E59CA8E8999AE5BDB1E9A38EE69AB4E59E82E99293E79A84E58B87E5A3ABE69DA5E8AFB4E983BDE698AFE58FAFE7958FE79A84E68C91E68898E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AE69588E69E9CEFBC9A7C520D0A0D0A24407370656C6C69636F6E31323337313034E783B9E9A5AAE79B9BE5AEB40D0A0D0AE8BF99E7A78DE69E81E585B6E7A880E69C89E7BE8EE591B3E79A84E9B1BCE7B1BBE698AFE8AEB8E5A49AE887B3E69A97E4B98BE5A49CE783B9E9A5AAE9858DE696B9E79A84E9878DE8A681E9A39FE69D90E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E8BF99E7A78DE9B1BCE79A84E59CB0E696B9EFBC9A7C520D0A0D0A2D20E8999AE5BDB1E9A38EE69AB40D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE59E82E99293E6B1A0EFBC9A7C720D0A0D0A2D20E6B5B7E6B48BE6BCA9E6B6A10D0A2D20E7B298E7A8A0E79A84E8999AE7A9BA0000, 67186), +(3776013982, 1225272, 'zhCN', 0x00E8BF99E7A78DE59D9AE7A1ACE79A84E993B6E889B2E8848AE9B1BCE8BAABE4BD93E4BC9AE590B8E5BC95E59E82E99293E5AEA2E5928CE585B6E4BB96E9B1BCE7B1BBE5898DE69DA5E68EA2E7B4A2EFBC8CE784B6E5908EE794A8E7B297E7B399E79A84E8848AE588BAE8BF8EE68EA5E69DA5E88085E38082E899BDE784B6E5AFB9E8B081E983BDE4B88DE58F8BE59684EFBC8CE4BD86E5AFB9E4BBBBE4BD95E69C89E5BF97E59091E79A84E59E82E99293E5AEA2E69DA5E8AFB4E983BDE698AFE78F8DE8B4B5E79A84E694B6E88EB7E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AE69588E69E9CEFBC9A7C520D0A0D0A24407370656C6C69636F6E3132333739343224407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E8BF99E7A78DE9B1BCE79A84E59CB0E696B9EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E59388E7B181E681A9E8BEBEE5B0940D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE59E82E99293E6B1A0EFBC9A7C720D0A2D20E58692E6B3A1E4B98BE88AB10D0A2D20E5A4AAE998B3E4B98BE4BA95E9B1BCE7BEA40D0A2D20E7BBBDE58D8EE4B98BE7BEA40D0A2D20E79B9BE694BEE6BF80E6B5810000, 67186), +(3776013982, 444803, 'zhCN', 0x00E4B880E7A78DE6B8A9E5928CE79A84E4BC91E79CA0E680A7E7949FE789A9E38082E88B8FE98692E697B6E58FAAE8A681E8A7A6E58F8AE5BEAEE58589EFBC8CE9B39EE78987E5B0B1E4BC9AE58F8DE5B084E587BAE5A4BAE79BAEE79A84E8BE89E58589E38082E6B289E99D99EFBC8CE5BA84E4B8A5EFBC8CE4BBBBE4BD95E69C89E5BF97E59091E79A84E59E82E99293E88085E983BDE4BC9AE4BBA5E5AE83E4BD9CE4B8BAE79BAEE6A087E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AE69588E69E9CEFBC9A7C720D0A0D0A24407370656C6C69636F6E343435313237E9B29CE9B1BCE789870D0A0D0AE4BDBFE794A8E783B9E9A5AAE68A80E883BDE5A484E79086E8BF99E69DA1E9B1BCE58FAFE4BBA5E4BAA7E587BAE5A4A7E9878FE9B29CE9B1BCE78987E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E8BF99E7A78DE9B1BCE79A84E59CB0E696B9EFBC9A7C520D0A0D0A2D20E889BEE59FBA2DE58DA1E8B5ABE789B90D0A2D20E58DA1E99BB7E4BB80E7BBBFE6B4B20000, 67186), +(3205218938, 56772, 'zhCN', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453400E88081E6898BE5B8A6E9989F0001000000, 67186), +(3205218938, 56771, 'zhCN', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300E9AB98E998B6E68C91E688980001000000, 67186), +(3205218938, 56770, 'zhCN', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453200E4BC91E997B2E5A8B1E4B9900001000000, 67186), +(3205218938, 22337, 'zhCN', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'zhCN', 0x000000, 67186), +(1010104591, 26054, 'zhCN', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'zhCN', 0xE5B388E5A786E68BB1E997A800000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'zhCN', 0xE58D8EE4B8BDE79A84E8BE9BE5A49AE99BB7E781AFE58FB000000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'zhCN', 0xE5AE89E5BEB7E9BAA6E68A80E5B7A5E79A84E682ACE68C82E781AF00000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'zhCN', 0xE8BEBEE68B89E784B6E6B593E7BCA9E59296E595A1E69CBA000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'zhCN', 0xE6B9AEE781ADE5B888E79A84E781ABE79B86000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'zhCN', 0xE89299E4BD8FE79A84E99381E588B6E781AFE7ACBC00000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'zhCN', 0xE9B291E9B1BCE6BAAAE7BCADE7839FE781AFE7ACBC00000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'zhCN', 0xE99D9EE5B8B8E58FAFE99DA0E79A84E5AE89E5BEB7E9BAA6E8B7AFE781AF00000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'zhCN', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'zhCN', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'zhCN', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'zhCN', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'zhCN', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'zhCN', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'zhCN', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'zhCN', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'zhCN', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'zhCN', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'zhCN', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'zhCN', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'zhCN', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'zhCN', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'zhCN', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'zhCN', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'zhCN', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'zhCN', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'zhCN', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'zhCN', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'zhCN', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'zhCN', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'zhCN', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'zhCN', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'zhCN', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'zhCN', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'zhCN', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'zhCN', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'zhCN', 0x00E6AE86E5B88CE88EABE696AFE5B086E7A28EE78987E8BDACE58C96E4B8BAE5889DE7BAA7E8999AE7A9BAE6A0B8E5BF83EFBC8CE7BC96E7BB87E8BF9BE5889DE7949FE8999AE7A9BAE78694E78289E38082E8999AE7A9BAE78694E78289E99C80E8A681247331E4B8AAE5889DE7BAA7E8999AE7A9BAE6A0B8E5BF83E6898DE883BDE5AE8CE68890E380820D0A0D0AE5BD93E5898DE8B4A1E78CAEEFBC9A244063757272656E6379333430390000, 67186), +(261693969, 94625, 'zhCN', 0xFFFFFFFFFFFFFFFFE4B880E4B8AAE5889DE7BAA7E8999AE7A9BAE6A0B8E5BF830000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'zhCN', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'zhCN', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'zhCN', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'zhCN', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'zhCN', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'zhCN', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'zhCN', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'zhCN', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'zhCN', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'zhCN', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'zhCN', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'zhCN', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'zhCN', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'zhCN', 0x000000, 67186), +(3653642729, 376, 'zhCN', 0x000000008D000000, 67186), +(1673391669, 141, 'zhCN', 0x8A000000, 67186), +(2791084701, 138, 'zhCN', 0x35D30600, 67186), +(2518885667, 13760, 'zhCN', 0xC035000000000000, 67186), +(3776013982, 1296205, 'zhCN', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'zhCN', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'zhCN', 0xFFFFFFFFFFFFFFFFE8999AE7A9BAE4BEB5E8A2ADEFBC9AE7A596E998BFE69BBC00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'zhCN', 0xFFFFFFFFFFFFFFFFE8999AE7A9BAE4BEB5E8A2ADEFBC9AE6B0B8E6AD8CE6A3AEE69E9700003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(476847390, 192, 'zhCN', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'zhCN', 0x000000, 67186), +(3776013982, 1296168, 'zhCN', 0x000000, 67186), +(600565378, 665333, 'zhCN', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'zhCN', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'zhCN', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'zhCN', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'zhCN', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'zhCN', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'zhCN', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'zhCN', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'zhCN', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'zhCN', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'zhCN', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'zhCN', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'zhCN', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'zhCN', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'zhCN', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'zhCN', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'zhCN', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'zhCN', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'zhCN', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'zhCN', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'zhCN', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'zhCN', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'zhCN', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'zhCN', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'zhCN', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'zhCN', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'zhCN', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'zhCN', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'zhCN', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'zhCN', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'zhCN', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'zhCN', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'zhCN', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'zhCN', 0x898200006D670300, 67186), +(3745449290, 8614, 'zhCN', 0xE4BBAAE5BC8FE59CBAE59CB0EFBC9AE6AE8BE7A0B4E7A59EE5BA9900E99984E8BF91E6ADA3E59CA8E4B8BEE8A18CE4B880E59CBAE58DB1E999A9E79A84E4BBAAE5BC8FE3808200A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'zhCN', 0x000000, 67186), +(2575642838, 765, 'zhCN', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'zhCN', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'zhCN', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'zhCN', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'zhCN', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'zhCN', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'zhCN', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'zhCN', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'zhCN', 0x5615130000070000FF000000, 67186), +(378810315, 810, 'zhCN', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'zhCN', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'zhCN', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'zhCN', 0xE6A0B9E7BB87E7AA97E688B7000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'zhCN', 0xE2809CE6B0B8E6AD8CE8B7AFE781AFE2809DE794BBE4BD9C000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'zhCN', 0xE6A0B9E7BB87E4B98BE997A8000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'zhCN', 0xE79C9FE88F8CE58789E6A39A0000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'zhCN', 0xE5A5A2E58D8EE6B586E69E9CE9A685E9A5BC00000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'zhCN', 0xE8B4A8E69CB4E59388E7B181E681A9E8BEBEE5B094E88AB1E6A7BD000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'zhCN', 0xE5AE8FE4BC9FE4BBA5E5A4AAE58585E883BDE6B0B4E699B600000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'zhCN', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'zhCN', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'zhCN', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'zhCN', 0x467B0000, 67186), +(4033975491, 620660, 'zhCN', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'zhCN', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'zhCN', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'zhCN', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'zhCN', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'zhCN', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'zhCN', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'zhCN', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'zhCN', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'zhCN', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'zhCN', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'zhCN', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'zhCN', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'zhCN', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'zhCN', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'zhCN', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'zhCN', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'zhCN', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'zhCN', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'zhCN', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'zhCN', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'zhCN', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'zhCN', 0x000000, 67186), +(3776013982, 1295957, 'zhCN', 0x000000, 67186), +(3776013982, 1295932, 'zhCN', 0x000000, 67186), +(3776013982, 1295927, 'zhCN', 0x00E5BD93E4BDA0E59CA8E5B08FE9989FE4B8ADE68B85E4BBBBE59DA6E5858BE8818CE8B4A3E697B6EFBC8CE69E97E5A49AE5B094E7B1B3E4BC9AE59CA8E58FB2E8AF97E992A5E79FB3E59CB0E4B88BE59F8EE4B8ADE6A087E8AEB0E6958CE696B9E983A8E9989FE380820D0A0D0AE4B88EE69E97E5A49AE5B094E7B1B3E4BAA4E8B088E58FAFE7A681E794A8E6ADA4E69588E69E9CE3808200E5BD93E4BDA0E59CA8E5B08FE9989FE4B8ADE68B85E4BBBBE59DA6E5858BE8818CE8B4A3E697B6EFBC8CE69E97E5A49AE5B094E7B1B3E4BC9AE59CA8E58FB2E8AF97E992A5E79FB3E59CB0E4B88BE59F8EE4B8ADE6A087E8AEB0E6958CE696B9E983A8E9989FE380820D0A0D0AE4B88EE69E97E5A49AE5B094E7B1B3E4BAA4E8B088E58FAFE7A681E794A8E6ADA4E69588E69E9CE3808200, 67186), +(3776013982, 1265971, 'zhCN', 0x00E5A4A9E590AFE9AA91E5A3ABE696BDE694BEE79A84E68A80E883BDE980A0E68890E79A84E4BCA4E5AEB3E68F90E9AB9824733125E38082243F63335B0D0A0D0AE4BDA0E79A84E9A39FE5B0B8E9ACBCE5928CE9AAB7E9AB85E5B084E6898BE980A0E68890E79A84E4BCA4E5AEB3E68F90E9AB9824733325EFBC8CE6ACA1E7BAA7E9A39FE5B0B8E9ACBCE980A0E68890E79A84E4BCA4E5AEB3E68F90E9AB9824733525E380825D5B5D0000, 67186), +(336222293, 22784, 'zhCN', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'zhCN', 0x00E6AF8FE696BDE694BE247331E6ACA1E5B1A0E688AEE88085E68993E587BBEFBC8CE88EB7E5BE97E78C9DE6ADBBE380820D0A0D0AE4BDBFE794A8E78C9DE6ADBBE4BC9AE58AA0E5BFABE4BDA0E79A84E4B88BE4B880E4B8AAE58991E58883E9A38EE69AB4EFBC8CE4BDBFE585B6E9A29DE5A496E68993E587BB31E6ACA1EFBC88E69C80E5A49A2434343536303675E6ACA1EFBC89E38082E58991E58883E9A38EE69AB4E79A84E680BBE68C81E7BBADE697B6E997B4E4B88DE58F98E380820D0A0D0AE78C9DE6ADBBE69C8924733225E79A84E587A0E78E87E8A7A6E58F9124733325E69588E69E9CE79A84E68EA0E6ADA6E9A38EE69AB4E380820000, 67186), +(378810315, 666, 'zhCN', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'zhCN', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'zhCN', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'zhCN', 0x000000, 67186), +(1181150530, 752881, 'zhCN', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'zhCN', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'zhCN', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'zhCN', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'zhCN', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'zhCN', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'zhCN', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'zhCN', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'zhCN', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'zhCN', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'zhCN', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'zhCN', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'zhCN', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'zhCN', 0xE1570500E0570500, 67186), +(736158310, 43619, 'zhCN', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'zhCN', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'zhCN', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'zhCN', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'zhCN', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'zhCN', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'zhCN', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'zhCN', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'zhCN', 0x00243F63315BE78E84E7899BE4B88BE587A15D5BE4B9BEE58583E4B98BE5B7855DE4BC9AE4BDBF243F63315BE781ABE784B0E59090E681AF5D5BE697ADE697A5E4B89CE58D87E8B8A2E5928CE7A59EE9B9A4E5BC95E9A1B9E8B8A25DE696BDE694BE247331E6ACA1E796BEE9A38EE4B9B1E68993E380820000, 67186), +(3776013982, 1244331, 'zhCN', 0x00E7949FE591BDE7BBBDE694BEE69C80E5908EE4B880E8B7B3E6B2BBE79697E9878FE79A84247332E4BC9AE6B2BBE7969724313234343334316131E7A081E88C83E59BB4E58685E887B3E5A49A247333E5908DE58F97E4BCA4E79A84E79B9FE58F8BE380820000, 67186), +(3776013982, 441845, 'zhCN', 0x00243F63325BE69295E7A28EE38081E6A8AAE689ABE5928CE6969CE68EA0E79A84E4BCA4E5AEB3E68F90E9AB9824733125EFBC8CE78886E587BBE587A0E78E87E68F90E9AB9824733325E380825D5BE8A382E4BCA4E79A84E4BCA4E5AEB3E68F90E9AB9824733425EFBC8CE78886E587BBE587A0E78E87E68F90E9AB9824733525E380825D0D0A0D0A243F63335BE8A382E4BCA4E4B8BAE4BDA0E681A2E5A48D24343538373234733125E79A84E69C80E5A4A7E7949FE591BDE580BCE380825D5B5D0000, 67186), +(3205218938, 57068, 'zhCN', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00E88AB1E8B4B92573E8B4ADE4B9B0E68980E69C89EFBC882573E4BBB6EFBC89E789A9E59381EFBC9F0003000000, 67186), +(3205218938, 23377, 'zhCN', 0x5343454E4152494F5F53544147455F53544154555300E7ACAC2564E998B6E6AEB5EFBC88E585B12564E4B8AAE998B6E6AEB5EFBC890001000000, 67186), +(3205218938, 22841, 'zhCN', 0x5343454E4152494F5F535441474500E7ACAC2564E998B6E6AEB50001000000, 67186), +(3745449290, 8459, 'zhCN', 0xE78BA9E78C8E00E998BFE696AFE5A194E6B49BC2B7E8A180E8AA93E99C80E8A681E4BDA0E58D8FE58AA9E78C8EE69D80E887B4E591BDE79A84E5BCBAE6958CE38082000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'zhCN', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'zhCN', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'zhCN', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'zhCN', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'zhCN', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'zhCN', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'zhCN', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'zhCN', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'zhCN', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'zhCN', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'zhCN', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'zhCN', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'zhCN', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'zhCN', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'zhCN', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'zhCN', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'zhCN', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'zhCN', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'zhCN', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'zhCN', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'zhCN', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'zhCN', 0xE8999AE7A9BAE6B5AEE9BE9900000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'zhCN', 0x9201000022000000, 67186), +(3247720076, 39887, 'zhCN', 0x0700000000, 67186), +(3776013982, 243435, 'zhCN', 0x00E79AAEE882A4E58C96E4B8BAE59D9AE79FB3EFBC8CE4BDBFE69C80E5A4A7E7949FE591BDE580BCE5928CE5BD93E5898DE7949FE591BDE580BCE68F90E9AB9824733125EFBC8CE5B9B6E4BDBFE58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24733225EFBC8CE68C81E7BBAD2464E3808200E69C80E5A4A7E7949FE591BDE580BCE68F90E9AB9824773125E380820D0AE58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24773225E38082243F2477343E315B0D0AE590B8E694B6247734E782B9E4BCA4E5AEB3E380825D5B5D00, 67186), +(3776013982, 221562, 'zhCN', 0x00E5B086E6958CE696B9E79BAEE6A087E4B8BEE588B0E7A9BAE4B8ADEFBC8CE794A8E9BB91E69A97E883BDE9878FE689BCE4BD8FE4BB96E4BBACE79A84E592BDE59689EFBC8CE4BDBFE585B6E6988FE8BFB72464E3808200E6988FE8BFB7E3808200, 67186), +(3776013982, 205630, 'zhCN', 0x507650E5A4A9E8B58B00E4BDA0E4BDBFE794A8E681B6E9AD94E9AD94E6B395E689BCE4BD8FE79BAEE6A087E79A84E59689E59299EFBC8CE4BDBFE585B6E59CA82464E58685E6988FE8BFB7EFBC8CE5B9B6E59CA8E689BCE59689E69C9FE997B4E980A0E68890246F34E782B9E69A97E5BDB1E4BCA4E5AEB3E38082E58FAFE4BBA5E59CA8E5BC95E5AFBCE697B6E7A7BBE58AA8E380820D0A0D0AE5868DE6ACA1E4BDBFE794A8E4BC8AE588A9E4B8B9E4B98BE68FA1E58FAFE4BBA5E5B086E79BAEE6A087E68A95E68EB7E588B02432303831373352E7A081E58685E79A84E4BD8DE7BDAEE3808200E6988FE8BFB7E38082E6AF8F2474E7A792E58F97E588B0247734E782B9E69A97E5BDB1E4BCA4E5AEB3E3808200, 67186), +(3776013982, 198158, 'zhCN', 0x507650E5A4A9E8B58B00E4BDA0E5928C244131E7A081E58685E79A84E79B9FE58F8BE7AB8BE58DB3E8BF9BE585A5E99A90E5BDA2E78AB6E68081EFBC8CE68C81E7BBAD2464E38082E5819AE587BAE4BBBBE4BD95E58AA8E4BD9CE983BDE4BC9AE58F96E6B688E6ADA4E69588E69E9CE3808200E99A90E5BDA2E38082E5819AE587BAE4BBBBE4BD95E58AA8E4BD9CE983BDE4BC9AE58F96E6B688E6ADA4E69588E69E9CE3808200, 67186), +(3776013982, 108194, 'zhCN', 0x00E5B086E6958CE696B9E79BAEE6A087E4B8BEE588B0E7A9BAE4B8ADEFBC8CE794A8E9BB91E69A97E883BDE9878FE689BCE4BD8FE4BB96E4BBACE79A84E592BDE59689EFBC8CE4BDBFE585B6E6988FE8BFB72464E3808200E6988FE8BFB7E3808200, 67186), +(378810315, 1004, 'zhCN', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'zhCN', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'zhCN', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'zhCN', 0x077A03000705000047000000, 67186), +(378810315, 999, 'zhCN', 0x530D00000509000049000000, 67186), +(378810315, 998, 'zhCN', 0x530D00000509000048000000, 67186), +(378810315, 997, 'zhCN', 0x530D00000509000047000000, 67186), +(378810315, 996, 'zhCN', 0x78B700000409000049000000, 67186), +(378810315, 995, 'zhCN', 0x78B700000409000048000000, 67186), +(378810315, 994, 'zhCN', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'zhCN', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'zhCN', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'zhCN', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'zhCN', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'zhCN', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'zhCN', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'zhCN', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'zhCN', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'zhCN', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'zhCN', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'zhCN', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'zhCN', 0x989B12000706000006010000, 67186), +(378810315, 980, 'zhCN', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'zhCN', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'zhCN', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'zhCN', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'zhCN', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'zhCN', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'zhCN', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'zhCN', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'zhCN', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'zhCN', 0x713507000505000000010000, 67186), +(378810315, 966, 'zhCN', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'zhCN', 0x550300000805000046000000, 67186), +(378810315, 964, 'zhCN', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'zhCN', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'zhCN', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'zhCN', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'zhCN', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'zhCN', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'zhCN', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'zhCN', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'zhCN', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'zhCN', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'zhCN', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'zhCN', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'zhCN', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'zhCN', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'zhCN', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'zhCN', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'zhCN', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'zhCN', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'zhCN', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'zhCN', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'zhCN', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'zhCN', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'zhCN', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'zhCN', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'zhCN', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'zhCN', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'zhCN', 0x991503000409000045020000, 67186), +(378810315, 933, 'zhCN', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'zhCN', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'zhCN', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'zhCN', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'zhCN', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'zhCN', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'zhCN', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'zhCN', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'zhCN', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'zhCN', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'zhCN', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'zhCN', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'zhCN', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'zhCN', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'zhCN', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'zhCN', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'zhCN', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'zhCN', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'zhCN', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'zhCN', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'zhCN', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'zhCN', 0x42E906000309000009010000, 67186), +(378810315, 902, 'zhCN', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'zhCN', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'zhCN', 0x761800000309000009010000, 67186), +(378810315, 899, 'zhCN', 0x76180000030900000A010000, 67186), +(378810315, 898, 'zhCN', 0x76180000030900000B010000, 67186), +(378810315, 885, 'zhCN', 0x78B700000409000047000000, 67186), +(378810315, 879, 'zhCN', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'zhCN', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'zhCN', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'zhCN', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'zhCN', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'zhCN', 0x980100000905000005010000, 67186), +(378810315, 858, 'zhCN', 0x980100000905000004010000, 67186), +(378810315, 855, 'zhCN', 0x980100000905000003010000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 843, 'zhCN', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'zhCN', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'zhCN', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'zhCN', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'zhCN', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'zhCN', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'zhCN', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'zhCN', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'zhCN', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'zhCN', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'zhCN', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'zhCN', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'zhCN', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'zhCN', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'zhCN', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'zhCN', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'zhCN', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'zhCN', 0x027F05000707000003010000, 67186), +(378810315, 720, 'zhCN', 0x36A401000707000048000000, 67186), +(378810315, 719, 'zhCN', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'zhCN', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'zhCN', 0x790200000905000046000000, 67186), +(378810315, 714, 'zhCN', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'zhCN', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'zhCN', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'zhCN', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'zhCN', 0x68F905000605000067000000, 67186), +(378810315, 691, 'zhCN', 0x68F905000605000066000000, 67186), +(378810315, 690, 'zhCN', 0x68F905000605000069000000, 67186), +(378810315, 682, 'zhCN', 0x15A905000705000041020000, 67186), +(378810315, 679, 'zhCN', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'zhCN', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'zhCN', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'zhCN', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'zhCN', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'zhCN', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'zhCN', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'zhCN', 0x16600500040800003F000000, 67186), +(378810315, 661, 'zhCN', 0x16600500040900003E000000, 67186), +(378810315, 658, 'zhCN', 0xE53805000209000040000000, 67186), +(378810315, 657, 'zhCN', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'zhCN', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'zhCN', 0x166005000409000040000000, 67186), +(378810315, 648, 'zhCN', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'zhCN', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'zhCN', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'zhCN', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'zhCN', 0x8C8D0500010B0000BB050000, 67186), +(378810315, 575, 'zhCN', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'zhCN', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'zhCN', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'zhCN', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'zhCN', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'zhCN', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'zhCN', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'zhCN', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'zhCN', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'zhCN', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'zhCN', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'zhCN', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'zhCN', 0x550300000805000041000000, 67186), +(378810315, 449, 'zhCN', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'zhCN', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'zhCN', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'zhCN', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'zhCN', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'zhCN', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'zhCN', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'zhCN', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'zhCN', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'zhCN', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'zhCN', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'zhCN', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'zhCN', 0x57A101000505000067000000, 67186), +(378810315, 408, 'zhCN', 0x638400000705000069000000, 67186), +(378810315, 407, 'zhCN', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'zhCN', 0xE40200000505000069000000, 67186), +(378810315, 402, 'zhCN', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'zhCN', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'zhCN', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'zhCN', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'zhCN', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'zhCN', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'zhCN', 0xE77701000605000046000000, 67186), +(378810315, 377, 'zhCN', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'zhCN', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'zhCN', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'zhCN', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'zhCN', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'zhCN', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'zhCN', 0x400700000409000004010000, 67186), +(378810315, 353, 'zhCN', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'zhCN', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'zhCN', 0xE60600000605000005010000, 67186), +(378810315, 349, 'zhCN', 0xE60600000605000004010000, 67186), +(378810315, 348, 'zhCN', 0xE60600000605000003010000, 67186), +(378810315, 346, 'zhCN', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'zhCN', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'zhCN', 0x301E03000509000006010000, 67186), +(378810315, 342, 'zhCN', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'zhCN', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'zhCN', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'zhCN', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'zhCN', 0x66D401000505000009010000, 67186), +(378810315, 332, 'zhCN', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'zhCN', 0x981900000605000048000000, 67186), +(378810315, 329, 'zhCN', 0x981900000605000049000000, 67186), +(378810315, 224, 'zhCN', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'zhCN', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'zhCN', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'zhCN', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'zhCN', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'zhCN', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'zhCN', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'zhCN', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'zhCN', 0x242303000409000041020000, 67186), +(378810315, 205, 'zhCN', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'zhCN', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'zhCN', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'zhCN', 0x242303000409000045020000, 67186), +(378810315, 189, 'zhCN', 0x743C03000805000045020000, 67186), +(378810315, 187, 'zhCN', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'zhCN', 0x36A401000707000049000000, 67186), +(378810315, 176, 'zhCN', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'zhCN', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'zhCN', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'zhCN', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'zhCN', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'zhCN', 0x36A401000707000047000000, 67186), +(378810315, 159, 'zhCN', 0x981900000605000047000000, 67186), +(378810315, 158, 'zhCN', 0x533301000405000066000000, 67186), +(378810315, 156, 'zhCN', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'zhCN', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'zhCN', 0xA09001000607000066000000, 67186), +(378810315, 152, 'zhCN', 0x82020000010B000046000000, 67186), +(378810315, 150, 'zhCN', 0x50350300050B000046000000, 67186), +(378810315, 149, 'zhCN', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'zhCN', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'zhCN', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'zhCN', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'zhCN', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'zhCN', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'zhCN', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'zhCN', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'zhCN', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'zhCN', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'zhCN', 0x62040000060500000B010000, 67186), +(378810315, 121, 'zhCN', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'zhCN', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'zhCN', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'zhCN', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'zhCN', 0x45990100010B000009010000, 67186), +(378810315, 113, 'zhCN', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'zhCN', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'zhCN', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'zhCN', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'zhCN', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'zhCN', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'zhCN', 0x491E03000907000007010000, 67186), +(378810315, 101, 'zhCN', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'zhCN', 0x301E03000509000008010000, 67186), +(378810315, 97, 'zhCN', 0x301E03000509000007010000, 67186), +(378810315, 96, 'zhCN', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'zhCN', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'zhCN', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'zhCN', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'zhCN', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'zhCN', 0x400700000409000005010000, 67186), +(378810315, 83, 'zhCN', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'zhCN', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'zhCN', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'zhCN', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'zhCN', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'zhCN', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'zhCN', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'zhCN', 0xB63500000707000004010000, 67186), +(378810315, 70, 'zhCN', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'zhCN', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'zhCN', 0x400700000409000003010000, 67186), +(378810315, 63, 'zhCN', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'zhCN', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'zhCN', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'zhCN', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'zhCN', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'zhCN', 0x82020000010B000042000000, 67186), +(378810315, 45, 'zhCN', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'zhCN', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'zhCN', 0x82020000010B000041000000, 67186), +(378810315, 39, 'zhCN', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'zhCN', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'zhCN', 0x790200000905000041000000, 67186), +(378810315, 35, 'zhCN', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'zhCN', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'zhCN', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'zhCN', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'zhCN', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'zhCN', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'zhCN', 0xD39603000805000040000000, 67186), +(378810315, 21, 'zhCN', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'zhCN', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'zhCN', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'zhCN', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'zhCN', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'zhCN', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'zhCN', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'zhCN', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'zhCN', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'zhCN', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'zhCN', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'zhCN', 0xE5A49AE69BBCE7BAB3E5B094E4BBAAE7A5ADE5B88800000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931373931773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291859, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931373931773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291858, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931373931773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291857, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931373931773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291856, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931373931773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291855, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931373931773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291854, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931383331773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291853, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931383331773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291852, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931383331773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291851, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931383331773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291850, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931383331773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291849, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E69C80E5A49AE681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928C2431323931383331773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291848, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291847, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291846, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291845, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291844, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291843, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291842, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291841, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291840, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291839, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291838, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291837, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291831, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E59B9EE5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E59B9EE5A48D24773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1291828, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291827, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291826, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291825, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291824, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291822, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1291791, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E59B9EE5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E59B9EE5A48D24773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1290929, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E59B9EE5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E59B9EE5A48D24773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1290926, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1290925, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1289221, 'zhCN', 0x00E68993E5BC80E7AEB1E5AD90EFBC8CE79C8BE79C8BE9878CE99DA2E69C89E4BA9BE4BB80E4B988EFBC810000, 67186), +(3776013982, 1286537, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E59B9EE5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E59B9EE5A48D24733125E79A84E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1286536, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E59B9EE5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E59B9EE5A48D24773125E79A84E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1286535, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1282100, 'zhCN', 0x000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1282018, 'zhCN', 0x00E58FACE594A4E4B880E5BCA0E995BFE6A485E59D90E4B88AE58EBBEFBC8100E58F96E6B688E58589E78EAFE4BBA5E694B6E59B9EE4BDA0E79A84E995BFE6A485E3808200, 67186), +(3776013982, 1277461, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24773125E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1269922, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1269921, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1269920, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE3808200, 67186), +(3776013982, 1269919, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24773125E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1269918, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E6B395E58A9BE580BCE79A8424733125E38082E9A5AEE6B0B4E697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24773125E6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1269917, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1269916, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE3808200, 67186), +(3776013982, 1232065, 'zhCN', 0x00E59CA82464E58685E6AF8FE7A792E681A2E5A48DE4BDA0E69C80E5A4A7E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE79A8424733125E38082E8BF9BE9A39FE697B6E5BF85E9A1BBE4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5A48D24733125E79A84E7949FE591BDE580BCE5928CE6B395E58A9BE580BCE3808200, 67186), +(2948698321, 8059, 'zhCN', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'zhCN', 0x000000, 67186), +(3898252553, 11633, 'zhCN', 0xE28200001E490300, 67186), +(3898252553, 11632, 'zhCN', 0xE18200001E490300, 67186), +(3898252553, 11631, 'zhCN', 0xE08200001E490300, 67186), +(3898252553, 11630, 'zhCN', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'zhCN', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'zhCN', 0x00E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724733325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247334E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247335E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724773325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247734E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247735E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200, 67186), +(3776013982, 1262377, 'zhCN', 0x00E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724733325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247334E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247335E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724773325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247734E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247735E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200, 67186), +(3776013982, 1262376, 'zhCN', 0x00E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724733325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247334E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247335E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724773325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247734E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247735E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200, 67186), +(3776013982, 1262365, 'zhCN', 0x00E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24733325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24773325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'zhCN', 0x00E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24733325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0AE59CA3E6B481E6ADBBE4BAA1E4B98BE8B095E69C89E69E81E4BD8EE587A0E78E87E79BB4E68EA5E5A484E586B3E99D9EE9A696E9A286E6958CE4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24773325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0AE59CA3E6B481E6ADBBE4BAA1E4B98BE8B095E69C89E69E81E4BD8EE587A0E78E87E79BB4E68EA5E5A484E586B3E99D9EE9A696E9A286E6958CE4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'zhCN', 0x00E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24733325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0AE59CA3E6B481E6ADBBE4BAA1E4B98BE8B095E69C89E69E81E4BD8EE587A0E78E87E79BB4E68EA5E5A484E586B3E99D9EE9A696E9A286E6958CE4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24773325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0AE59CA3E6B481E6ADBBE4BAA1E4B98BE8B095E69C89E69E81E4BD8EE587A0E78E87E79BB4E68EA5E5A484E586B3E99D9EE9A696E9A286E6958CE4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'zhCN', 0x00E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724733325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247334E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247335E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200E5BC80E590AFE4B880E4B8AAE99499E694BEE79A84E5A587E78F8DE4BC9AE58FACE594A4E4B880E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85EFBC8CE59CA8E68898E69697E4B8ADE5B487E68B9CE4BDA0EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E58D8724773325E380820D0A0D0AE5908CE4B880E697B6E997B4E69C80E5A49AE58FAFE4BBA5E68BA5E69C89247734E4B8AAE8A2ABE5BE81E69C8DE79A84E8B49FE68B85E380820D0AE8819AE99B86E887B3E5B091247735E4B8AAE5B487E68B9CE88085E5908EEFBC8CE6AF8FE4B8AAE8B49FE68B85E68F90E4BE9BE79A8424707269E5A29EE79B8AE69588E69E9CE4BC9AE68F90E9AB98E3808200, 67186), +(3776013982, 1248927, 'zhCN', 0x00E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24733325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E5BD93E4BDA0E79A84E59CB0E4B88BE5A0A1E4BC99E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E697B6EFBC8CE9989FE4BC8DE68890E59198E5B086E88EB7E5BE97E59CA3E6B481E8B095E4BBA4EFBC8CE6AF8FE5B182E8B095E4BBA4E4BDBFE585B6E4BCA4E5AEB3E680A7E6B395E69CAFE5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E587A0E78E87E980A0E68890E79BAEE6A087E69C80E5A4A7E7949FE591BDE580BC24773325E79A84E9A29DE5A496E7A59EE59CA3E4BCA4E5AEB3E380820D0A0D0AE6AF8FE4B8AAE79BAEE6A087E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7A6E58F91E4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'zhCN', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'zhCN', 0x00E9A9B1E695A3E4BDA0E99DA2E5898DE58CBAE59F9FE58685E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B9B6E5B086E585B6E6A087E8AEB0E4B8BAE8A2ABE58F91E78EB0E380820000, 67186), +(3776013982, 1256862, 'zhCN', 0x00E9A9B1E695A3E4B880E5AE9AE58CBAE59F9FE58685E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B9B6E5B086E585B6E6A087E8AEB0E4B8BAE8A2ABE58F91E78EB0E380820000, 67186), +(3776013982, 1256861, 'zhCN', 0x00E8B783E59091E79BAEE6A087E59CB0E782B9EFBC8CE9A9B1E695A3E586B2E587BBE58CBAE59F9FE591A8E59BB4E8BAB2E8978FE88085E79A84E5B9BBE8B1A1E380820000, 67186), +(3776013982, 1256860, 'zhCN', 0x00E59CA82464E58685E9A9B1E695A3E4BDA0E99DA2E5898DE58CBAE59F9FE58685E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B9B6E5B086E585B6E6A087E8AEB0E4B8BAE8A2ABE58F91E78EB0E380820000, 67186), +(3776013982, 1256010, 'zhCN', 0x00E9A9B1E695A3E4B880E5AE9AE58CBAE59F9FE58685E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B9B6E5B086E585B6E6A087E8AEB0E4B8BAE8A2ABE58F91E78EB0E380820000, 67186), +(1408785804, 249319, 'zhCN', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'zhCN', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'zhCN', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'zhCN', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'zhCN', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'zhCN', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'zhCN', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'zhCN', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'zhCN', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'zhCN', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'zhCN', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'zhCN', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'zhCN', 0x000000, 67186), +(3776013982, 1295497, 'zhCN', 0x000000, 67186), +(3776013982, 1295486, 'zhCN', 0x000000, 67186), +(3776013982, 464291, 'zhCN', 0x000000, 67186), +(3776013982, 1243616, 'zhCN', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243615, 'zhCN', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'zhCN', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'zhCN', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'zhCN', 0x00E8BFAAE8A9B9E5B494E4B98CE696AFE58F91E5B084E587BAE4B88DE7A8B3E5AE9AE79A84E8999AE7A9BAE883BDE9878FE79083E38082E883BDE9878FE79083E4BC9AE5BCB9E5B084E588B0247332E4B8AAE4BD8DE7BDAEEFBC8CE5BD93E6929EE587BBE59CB0E99DA2E697B6E4BC9AE4BAA7E7949FE78886E782B8EFBC8CE5AFB9E586B2E587BBE782B924313231353135374131E7A081E88C83E59BB4E58685E79A84E68980E69C89E78EA9E5AEB6E980A0E6889024313231353135377331E782B9E69A97E5BDB1E4BCA4E5AEB3E38082E5A682E69E9CE8AFA5E58CBAE59F9FE58685E6B2A1E69C89E78EA9E5AEB6EFBC8CE58899E8A7A6E58F9124407370656C6C6E616D6531323135313631E380820D0A0D0AE585A8E983A8247332E6ACA1E6929EE587BBE5908EEFBC8CE883BDE9878FE79083E4BC9AE5868DE6ACA1E5BCB9E8B7B3EFBC8CE58F98E6889024407370656C6C6E616D6531323135393337E380820000, 67186), +(3776013982, 1243588, 'zhCN', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'zhCN', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'zhCN', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'zhCN', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'zhCN', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'zhCN', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'zhCN', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E6B7B1E6BD9CE88085E59BBEE7BAB3E59FBAE789B97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E6B7B1E6BD9CE88085E59BBEE7BAB3E59FBAE789B97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E6B7B1E6BD9CE88085E59BBEE7BAB3E59FBAE789B97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E6B7B1E6BD9CE88085E59BBEE7BAB3E59FBAE789B97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E6B7B1E6BD9CE88085E59BBEE7BAB3E59FBAE789B97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E6B7B1E6BD9CE88085E59BBEE7BAB3E59FBAE789B97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'zhCN', 0x00E5AFB9E5BD93E5898DE79BAEE6A087E58F91E58AA8E7B2BEE58786E79A84E58F8CE9878DE696A9E587BBE38082E6AF8FE6ACA1E696A9E587BBE5AFB9E88C83E59BB4E58685E79A84E68980E69C89E6958CE4BABAE980A0E6889024313235373733367331E782B9E789A9E79086E4BCA4E5AEB3EFBC8CE5B9B6E59CA8E68EA5E4B88BE69DA5243132353737343564E58685E6AF8F24313235373734357431E7A792E9A29DE5A496E980A0E6889024313235373734357331E782B9E7A59EE59CA3E4BCA4E5AEB3EFBC8CE5908CE697B6E59CA8E59CB0E99DA2E588BBE4B88BE4B880E9819324407370656C6C6E616D6531323535333130E380820000, 67186), +(4033975491, 619581, 'zhCN', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'zhCN', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'zhCN', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'zhCN', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'zhCN', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'zhCN', 0xE7BAA2E9BE9900243F63315BE8A382E8A7A3E980A0E68890E79A84E4BCA4E5AEB3E4BC9AE6B688E88097E58F97E588B0E4BCA4E5AEB3E79A84E6958CE4BABAE8BAABE4B88A247B2473322F313030307D2E31E7A792E79A84E781ABE784B0E59090E681AFE69588E69E9CEFBC8CE5B9B6E5B086E585B6E5BC95E78886EFBC8CE980A0E68890E79BB8E5BD93E4BA8EE6B688E88097E9878F24733425E79A84E4BCA4E5AEB3E380820D0A0D0AE891ACE781ABE980A0E68890E79A84E4BCA4E5AEB3E4BC9AE6B688E88097E58F97E588B0E4BCA4E5AEB3E79A84E6958CE4BABAE8BAABE4B88A247B2473332F313030307DE7A792E79A84E781ABE784B0E59090E681AFE69588E69E9CEFBC8CE5B9B6E5B086E585B6E5BC95E78886EFBC8CE980A0E68890E79BB8E5BD93E4BA8EE6B688E88097E9878F24733725E79A84E4BCA4E5AEB3E380825D5BE99D92E7BFA0E4B98BE68BA5E980A0E68890E79A84E6B2BBE79697E4BC9AE6B688E88097E58F97E588B0E6B2BBE79697E79A84E79B9FE58F8BE8BAABE4B88A247B2473352F313030307DE7A792E79A84E6A2A6E5A283E59090E681AFE69588E69E9CEFBC8CE5B9B6E5B086E585B6E5BC95E78886EFBC8CE4B8BAE585B6E681A2E5A48DE79BB8E5BD93E4BA8EE6B688E88097E9878F24733625E79A84E7949FE591BDE580BCE380820D0A0D0AE7BFA1E7BFA0E4B98BE88AB1E980A0E68890E79A84E6B2BBE79697E4BC9AE6B688E88097E58F97E588B0E6B2BBE79697E79A84E79B9FE58F8BE8BAABE4B88A247B2473312F313030307DE7A792E79A84E6A2A6E5A283E59090E681AFE69588E69E9CEFBC8CE5B9B6E5B086E585B6E5BC95E78886EFBC8CE4B8BAE585B6E681A2E5A48DE79BB8E5BD93E4BA8EE6B688E88097E9878F24733625E79A84E7949FE591BDE580BCE380825D0000, 67186), +(4033975491, 619554, 'zhCN', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'zhCN', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'zhCN', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'zhCN', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'zhCN', 0x000000, 67186), +(2151089334, 7976, 'zhCN', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'zhCN', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'zhCN', 0xE68190E68096E79A84E8999AE7A9BAE8A18CE8808500000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'zhCN', 0x00E69CAAE68C89E6ADA3E7A1AEE9A1BAE5BA8FE587BBE4B8AD24407370656C6C6E616D6531323439363039E4BC9AE5BC95E58F91E59B9EE5938DE596A7E59AA3EFBC8CE4BDBFE79BAEE6A087E6B289E9BB982464E380822000E8A2ABE6B289E9BB98E3808200, 67186), +(3247720076, 42321, 'zhCN', 0x0000000000, 67186), +(4033975491, 619506, 'zhCN', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'zhCN', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'zhCN', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'zhCN', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'zhCN', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'zhCN', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'zhCN', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'zhCN', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'zhCN', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'zhCN', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'zhCN', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'zhCN', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'zhCN', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'zhCN', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'zhCN', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'zhCN', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'zhCN', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'zhCN', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'zhCN', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'zhCN', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'zhCN', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'zhCN', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'zhCN', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'zhCN', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'zhCN', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'zhCN', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'zhCN', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'zhCN', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'zhCN', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'zhCN', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'zhCN', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'zhCN', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'zhCN', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'zhCN', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'zhCN', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'zhCN', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'zhCN', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'zhCN', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'zhCN', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'zhCN', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'zhCN', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'zhCN', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'zhCN', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'zhCN', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'zhCN', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'zhCN', 0xE4BBAAE5BC8FE59CBAE59CB0EFBC9AE588BAE8848AE890A500E99984E8BF91E6ADA3E59CA8E4B8BEE8A18CE4B880E59CBAE58DB1E999A9E79A84E4BBAAE5BC8FE3808200A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'zhCN', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'zhCN', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'zhCN', 0x00E696BDE6B395E88085E9878AE694BEE587BAE4B880E882A1E5A5A5E69CAFE883BDE9878FE78886E58F91EFBC8CE5AFB9244131E7A081E88C83E59BB4E58685E79A84E78EA9E5AEB6E980A0E68890247331E782B9E5A5A5E69CAFE4BCA4E5AEB3E380820000, 67186), +(3776013982, 1295237, 'zhCN', 0x00E696BDE6B395E88085E9878AE694BEE587BAE4B880E882A1E5A5A5E69CAFE883BDE9878FE78886E58F91EFBC8CE5AFB9244131E7A081E88C83E59BB4E58685E79A84E78EA9E5AEB6E980A0E68890247331E782B9E5A5A5E69CAFE4BCA4E5AEB3E380820000, 67186), +(600565378, 632510, 'zhCN', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'zhCN', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'zhCN', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'zhCN', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'zhCN', 0x00E58786E5A487E5BC80E5B195E5BA96E8A7A3E5B7A5E5BA8FE38082E6BF80E6B4BBE697B6EFBC8CE4BDA0E79A84E4B88BE4B880E6ACA1E887B3E69A97E4B98BE5A49CE589A5E79AAEE5BF85E5AE9AE88EB7E5BE97E883BDE5A49FE794A8E4BA8EE783B9E9A5AAE79A84E88289E7B1BBE3808200E58786E5A487E5BA96E8A7A3E4BDA0E589A5E79AAEE79A84E4B88BE4B880E4B8AAE887B3E69A97E4B98BE5A49CE7949FE789A9EFBC8CE5BF85E5AE9AE88EB7E5BE97E883BDE5A49FE794A8E4BA8EE783B9E9A5AAE79A84E88289E7B1BBE3808200, 67186), +(3776013982, 442615, 'zhCN', 0x00E58786E5A487E5BC80E5B195E5BA96E8A7A3E5B7A5E5BA8FE38082E6BF80E6B4BBE697B6EFBC8CE4BDA0E79A84E4B88BE4B880E6ACA1E58DA1E585B9E998BFE58AA0E589A5E79AAEE5BF85E5AE9AE88EB7E5BE97E883BDE5A49FE794A8E4BA8EE783B9E9A5AAE79A84E88289E7B1BBE3808200E58786E5A487E5BA96E8A7A3E4BDA0E589A5E79AAEE79A84E4B88BE4B880E4B8AAE58DA1E585B9E998BFE58AA0E7949FE789A9EFBC8CE5BF85E5AE9AE88EB7E5BE97E883BDE5A49FE794A8E4BA8EE783B9E9A5AAE79A84E88289E7B1BBE3808200, 67186), +(3386943305, 23675, 'zhCN', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'zhCN', 0xE681B6E9AD94E4BCA0E98081E997A800000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'zhCN', 0x00E7A6BBE5BC80E79BB8E4BD8DE6BD9CE8A18CE380820000, 67186), +(3776013982, 1241218, 'zhCN', 0x000000, 67186), +(2575642838, 749, 'zhCN', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'zhCN', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'zhCN', 0x00E59BA0E5BCBAE6958CE79A84E5AD98E59CA8E88EB7E5BE97E5BCBAE58C96EFBC8CE58F8DE5B084E68980E58F97E585A8E983A8E4BCA4E5AEB3E79A8424773125E7BB99E696BDE6B395E88085E3808200E59BA0E5BCBAE6958CE79A84E5AD98E59CA8E88EB7E5BE97E5BCBAE58C96EFBC8CE58F8DE5B084E68980E58F97E585A8E983A8E4BCA4E5AEB3E79A8424773125E7BB99E696BDE6B395E88085E380820D0A0D0AE5BCBAE58C96E69DA5E6BA90EFBC9A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E3132383230343120E5BC97E68B89E5B88CE4B98CE696AF5D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E3132383230343220E999A8E890BDE4B98BE78E8BE890A8E59388E8BEBEE5B0945D00, 67186), +(3425193231, 546424, 'zhCN', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'zhCN', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'zhCN', 0x000000, 67186), +(600565378, 664416, 'zhCN', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'zhCN', 0x00E6B0B8E4B985E680A7E59CB0E4B8BAE4B893E4B89AE5B7A5E585B7E99984E9AD94E8BE9BE5A49AE99BB7E7869FE7BB83EFBC8CE4BDBFE7869FE7BB83E68F90E9AB9824656331E38082E4B88DE883BDE5AFB9E789A9E59381E7AD89E7BAA7E9AB98E4BA8E2465636978E79A84E789A9E59381E4BDBFE794A8E380820D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523AE890A8E68B89E696AFE5A4A9E8B58B202D20E5A58EE5B094E890A8E68B89E696AFE59381E8B4A87C52200000, 67186), +(261693969, 93049, 'zhCN', 0xFFFFFFFFFFFFFFFFE4BD9CE4B89AE68FB4E58AA90000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'zhCN', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'zhCN', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'zhCN', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'zhCN', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'zhCN', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'zhCN', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'zhCN', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'zhCN', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'zhCN', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'zhCN', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'zhCN', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'zhCN', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'zhCN', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'zhCN', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'zhCN', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'zhCN', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'zhCN', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'zhCN', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'zhCN', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'zhCN', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'zhCN', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'zhCN', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'zhCN', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'zhCN', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'zhCN', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'zhCN', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'zhCN', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'zhCN', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'zhCN', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'zhCN', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'zhCN', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'zhCN', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'zhCN', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'zhCN', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'zhCN', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'zhCN', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'zhCN', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'zhCN', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'zhCN', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'zhCN', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'zhCN', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'zhCN', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'zhCN', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'zhCN', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'zhCN', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'zhCN', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'zhCN', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'zhCN', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'zhCN', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'zhCN', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'zhCN', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'zhCN', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'zhCN', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'zhCN', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'zhCN', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'zhCN', 0x00E8A385E5A487E9B1BCE7ABBFE4B98BE5908EE58FAFE4BBA5E5AFBBE689BEE4B880E78987E6B0B4E59F9FE99293E9B1BCE38082E5BD93E6B0B4E4B8ADE79A84E9B1BCE6BC82E6BA85E8B5B7E6B0B4E88AB1E79A84E697B6E58099EFBC8CE7AB8BE588BBE58FB3E994AEE782B9E587BBE9B1BCE6BC82E4BBA5E68D95E68D89E4B88AE992A9E79A84E9B1BCE38082E99293E9B1BCE68A80E883BDE79A84E7AD89E7BAA7E8B68AE9AB98EFBC8CE4BDA0E8B68AE69C89E58FAFE883BDE59CA8E9AB98E7AD89E7BAA7E79A84E6B0B4E59F9FE4B8ADE99293E588B0E9B1BCE380820000, 67186), +(3776013982, 1286820, 'zhCN', 0x000000, 67186), +(3776013982, 1286703, 'zhCN', 0x00E8A385E5A487E9B1BCE7ABBFE4B98BE5908EE58FAFE4BBA5E5AFBBE689BEE4B880E78987E6B0B4E59F9FE99293E9B1BCE38082E5BD93E6B0B4E4B8ADE79A84E9B1BCE6BC82E6BA85E8B5B7E6B0B4E88AB1E79A84E697B6E58099EFBC8CE7AB8BE588BBE58FB3E994AEE782B9E587BBE9B1BCE6BC82E4BBA5E68D95E68D89E4B88AE992A9E79A84E9B1BCE38082E99293E9B1BCE68A80E883BDE79A84E7AD89E7BAA7E8B68AE9AB98EFBC8CE4BDA0E8B68AE69C89E58FAFE883BDE59CA8E9AB98E7AD89E7BAA7E79A84E6B0B4E59F9FE4B8ADE99293E588B0E9B1BCE380820000, 67186), +(3776013982, 1253159, 'zhCN', 0x000000, 67186), +(3359787322, 29615, 'zhCN', 0xAF730000, 67186), +(3031818311, 9590, 'zhCN', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'zhCN', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'zhCN', 0xE87A0000, 67186), +(3776013982, 1277169, 'zhCN', 0x00E68993E5BC80E4BBA5E694B6E99B863130E4B8AAE88BB1E99B84E5928CE7A59EE8AF9DE69B99E58589E7BAB9E7ABA0E380820000, 67186), +(3776013982, 1243683, 'zhCN', 0x00E694B6E99B863130E4B8AAE7A59EE8AF9DE69B99E58589E7BAB9E7ABA0E380820000, 67186), +(3776013982, 190784, 'zhCN', 0x00E8B783E4B88AE68898E9A9ACEFBC8CE7A7BBE58AA8E9809FE5BAA6E68F90E9AB9824323231383833733425EFBC8CE68C81E7BBAD2432323138383364E38082E58FAFE4BBA5E59CA8E5AEA4E58685E68896E68898E69697E4B8ADE4BDBFE794A8E380820000, 67186), +(4033975491, 619076, 'zhCN', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'zhCN', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'zhCN', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'zhCN', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'zhCN', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'zhCN', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'zhCN', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'zhCN', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'zhCN', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'zhCN', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'zhCN', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'zhCN', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'zhCN', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'zhCN', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'zhCN', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'zhCN', 0x05000000F1F304003F0D0400, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1181150530, 750840, 'zhCN', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'zhCN', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'zhCN', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'zhCN', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'zhCN', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'zhCN', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'zhCN', 0x1100E18B0000, 67186), +(184881520, 18405, 'zhCN', 0x0F00FC890000, 67186), +(184881520, 18404, 'zhCN', 0x0E00FC890000, 67186), +(184881520, 18403, 'zhCN', 0xDC00F9890000, 67186), +(184881520, 18245, 'zhCN', 0x1100F9890000, 67186), +(184881520, 18244, 'zhCN', 0x0F00F9890000, 67186), +(2575642838, 750, 'zhCN', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'zhCN', 0x000000, 67186), +(3776013982, 1266413, 'zhCN', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'zhCN', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'zhCN', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'zhCN', 0xE7A798E5AF86E58E9FE6969900F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'zhCN', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'zhCN', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'zhCN', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'zhCN', 0x00E5AFB9E79BAEE6A087E696BDE5B195E4B880E8BF9EE4B8B2E7B2BEE58786E79A84E5BCBAE58A9BE68993E587BBEFBC8CE5AFB9E585B6E980A0E68890247B2434343038383473312B2434343038383673312B2434343038383873317DE782B9E4BCA4E5AEB3EFBC8CE5AFB9243434303838384131E7A081E58685E79A84E6958CE4BABAE980A0E68890243434303838387331E782B9E4BCA4E5AEB3E38082E79BAEE6A087E8B685E8BF87247331E4B8AAE697B6E4BCA4E5AEB3E9998DE4BD8EE380820D0A0D0AE5BC95E5AFBCE5B4A9E691A7E697B6EFBC8CE4BDA0E58F97E588B0E79A84E4BCA4E5AEB3E9998DE4BD8E24733425EFBC8CE5B9B6E4B894E5858DE796ABE6988FE8BFB7E38081E587BBE98080E4B88EE5BCBAE588B6E7A7BBE58AA8E69588E69E9CE380820D0A0D0AE4BDA0E58FAFE4BBA5E59CA8E5BC95E5AFBCE5B4A9E691A7E697B6E6A0BCE68CA1E38081E68B9BE69EB6E38081E8BAB2E997AAE5928CE4BDBFE794A8E789B9E5AE9AE998B2E5BEA1E68A80E883BDE380820000, 67186), +(3776013982, 1292071, 'zhCN', 0x00E58F97E588B0E88BB1E6ADA6E696B9E998B5E586B2E587BBE6B3A2E4BCA4E5AEB3E79A84E6958CE4BABAE5AFB9E4BDA0E980A0E68890E79A84E4BCA4E5AEB3E9998DE4BD8E247B2473312F2D317D2E3125EFBC8CE68C81E7BBAD2464E380820D0A00E5AFB9244061757261636173746572E980A0E68890E79A84E4BCA4E5AEB3E9998DE4BD8E247B2457312F2D317D2E3125E3808200, 67186), +(3266400455, 1570155, 'zhCN', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'zhCN', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'zhCN', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'zhCN', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'zhCN', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'zhCN', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'zhCN', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'zhCN', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'zhCN', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'zhCN', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'zhCN', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'zhCN', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'zhCN', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'zhCN', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'zhCN', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'zhCN', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'zhCN', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'zhCN', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'zhCN', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'zhCN', 0x170B3D160100, 67186), +(1734738485, 9018, 'zhCN', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'zhCN', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'zhCN', 0x00E5B086E5A4AAE998B3E4B98BE4BA95E79A84E5BEAEE5BCB1E59B9EE5938DE6B3A8E585A5E4BDA0E79A84E68AA4E794B2EFBC8CE4B8BAE69F90E4BA9BE2809CE887B3E69A97E4B98BE5A49CE2809DE7ACAC31E8B59BE5ADA3E8818CE4B89AE5A597E8A385E5A496E8A782E8A7A3E99481E9A29DE5A496E79A84E8A786E8A789E69588E69E9CE380820D0A0D0AE6ADA4E69588E69E9CE585A8E68898E59BA2E585B1E4BAABE380820000, 67186), +(3776013982, 1273357, 'zhCN', 0x00E5B086E5A4AAE998B3E4B98BE4BA95E79A84E5BEAEE5BCB1E59B9EE5938DE6B3A8E585A5E4BDA0E79A84E68AA4E794B2EFBC8CE4B8BAE69F90E4BA9BE2809CE887B3E69A97E4B98BE5A49CE2809DE7ACAC31E8B59BE5ADA3E8818CE4B89AE5A597E8A385E5A496E8A782E8A7A3E99481E9A29DE5A496E79A84E8A786E8A789E69588E69E9CE380820D0A0D0AE6ADA4E69588E69E9CE585A8E68898E59BA2E585B1E4BAABE380820000, 67186), +(4167587713, 4140, 'zhCN', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186), +(3776013982, 1294727, 'zhCN', 0x0024407370656C6C69636F6E34353730343924407370656C6C6E616D653435373034397C6EE5A682E69E9CE4BDA0E88AB1E8B4B9E887B3E5B0913130E7A792E8BF9BE9A39FEFBC8CE4BDA0E5B086E88EB7E5BE9724407370656C6C6E616D65343537303439E69588E69E9CEFBC8CE88090E58A9BE68F90E9AB9824313231393137397337E782B9EFBC8CE4B8BBE8A681E5B19EE680A7E68F90E9AB9824313231393137397332E782B9EFBC8CE68C81E7BBAD2464E3808200E4B8BBE8A681E5B19EE680A7E68F90E9AB9824773131E782B9E3808200, 67186), +(3776013982, 1294726, 'zhCN', 0x000000, 67186), +(3776013982, 1294720, 'zhCN', 0x00E5B084E587BBE6958CE4BABAEFBC8CE5AFB9E585B6E980A0E68890E789A9E79086E4BCA4E5AEB3E380820000, 67186), +(3776013982, 1294703, 'zhCN', 0x00E5B084E587BBE6958CE4BABAEFBC8CE5AFB9E585B6E980A0E68890E789A9E79086E4BCA4E5AEB3E380820000, 67186), +(3776013982, 1294669, 'zhCN', 0x00E8AFA5E7949FE789A9E59CA8E69C9DE4BDA0E586B2E9948BE3808200E8AFA5E7949FE789A9E59CA8E69C9DE4BDA0E586B2E9948BE3808200, 67186), +(3776013982, 1294633, 'zhCN', 0x00E696BDE6B395E88085E69C9DE4B880E5908DE78EA9E5AEB6E596B7E59090E781ABE79083EFBC8CE6AF8F247431E7A792E980A0E6889024313236363734357331E782B9E781ABE784B0E4BCA4E5AEB3EFBC8CE68C81E7BBAD2464E3808200E6AF8F247431E7A792E980A0E6889024313236363734357331E782B9E781ABE784B0E4BCA4E5AEB3E3808200, 67186), +(3776013982, 1294563, 'zhCN', 0x000000, 67186), +(3776013982, 1277795, 'zhCN', 0x00E9A9B1E695A3E4BDA0E99DA2E5898DE58CBAE59F9FE58685E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B9B6E5B086E585B6E6A087E8AEB0E4B8BAE8A2ABE58F91E78EB0E380820000, 67186), +(3776013982, 1272179, 'zhCN', 0x00E59CA8E59586E4BABAE5A484E8B4ADE4B9B0E380820D0A0D0A24407370656C6C646573633132353631373100E4BDA0E8BF98E6B2A1E69DA5E5BE97E58F8AE68A93E588B0E585B6E4BB96E4BABAE5B0B1E4B8ADE68B9BE4BA86E3808200, 67186), +(3776013982, 1269655, 'zhCN', 0x00E59CA8E59586E4BABAE5A484E8B4ADE4B9B00D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'zhCN', 0x00E59CA8E59586E4BABAE5A484E8B4ADE4B9B00D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'zhCN', 0x00E59CA8E59586E4BABAE5A484E8B4ADE4B9B00D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'zhCN', 0x00E59CA8E59586E4BABAE5A484E8B4ADE4B9B00D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'zhCN', 0x00E59CA8E59586E4BABAE5A484E8B4ADE4B9B00D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'zhCN', 0x00E4B88EE99984E8BF91E79A84E8A385E9A5B0E4BAA4E68DA2E4BD8DE7BDAEE380820000, 67186), +(3776013982, 1259647, 'zhCN', 0x0024407370656C6C6465736334353239393300E887B3E69A97E4B98BE5A49CE59088E58982E38081E793B6E58982E5928CE8BF9BE9A39FE58585E58886E79A84E68C81E7BBADE697B6E997B4E5B7B2E8A2ABE69A82E5819CE3808200, 67186), +(3776013982, 1258362, 'zhCN', 0x000D0A7C434646666666666666E696BDE6B395E697B6E997B4EFBC9A312E35E7A792E380820D0AE999B7E998B1E586B7E58DB4EFBC9A35E7A792E380827C520D0A0D0AE5A682E69E9C2452E7A081E88C83E59BB4E58685E6B2A1E69C89E68A93E68D95E88085EFBC8CE69C9DE4BDA0E5BD93E5898DE4BD8DE7BDAE2472616431E7A081E88C83E59BB4E58685E68A95E68EB7E4B880E4B8AA24407370656C6C6E616D6531323538333538E5AEB9E599A8E380820D0A0D0AE5A682E69E9C2452E7A081E88C83E59BB4E58685E69C89E887B3E5B091E4B880E5908DE68A93E68D95E88085EFBC8CE69C9DE8B79DE7A6BBE4BDA0E69C80E8BF91E79A84E68A93E68D95E88085E68980E59CA8E4BD8DE7BDAEE99984E8BF91E68A95E68EB7E4B880E4B8AA24407370656C6C6E616D6531323538333538E5AEB9E599A8E380820D0A0D0A7C434646373164356666E6B3A8E6848FEFBC9A7C527C434646643966636666E5AEB9E599A8E59CA8E7A9BAE4B8ADE697B6E5AFB9E68A93E68D95E88085E4B88DE58FAFE8A781E380827C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D6531323538333538EFBC9A0D0A24407370656C6C64657363313235383335380D0A0D0A7C434646623062306230E6B2A1E982A3E4B988E88AB1E9878CE883A1E593A8EFBC8CE4BD86E69C89E697B6E4B880E782B9E5B08FE5B08FE79A84E5B9B2E689B0E8B6B3E4BBA5E587BAE5A587E588B6E8839CE380827C520000, 67186), +(3776013982, 1256009, 'zhCN', 0x00E9A9B1E695A3E4BDA0E99DA2E5898DE58CBAE59F9FE58685E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B9B6E5B086E585B6E6A087E8AEB0E4B8BAE8A2ABE58F91E78EB0E380820000, 67186), +(3776013982, 1251813, 'zhCN', 0x00E5B9BBE5BDB1E8A2ABE6B688E781ADE697B6E58F91E587BAE5B096E595B8EFBC8CE5AFB9E68980E69C89E78EA9E5AEB6E980A0E68890247331E782B9E69A97E5BDB1E4BCA4E5AEB3E380820000, 67186), +(1010104591, 22988, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E88EB1E4BCA6E8BEBEE5B0947C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E993B6E69C88E59F8E7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E4BA9AE7919FE681A97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E993B6E69C88E59F8E7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'zhCN', 0x7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E88EB1E4BCA6E8BEBEE5B0947C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E993B6E69C88E59F8E7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030E59586E4BABAE587BAE594AEEFBC9A7C72E4BA9AE7919FE681A97C6E7C634646464644323030E59CB0E58CBAEFBC9A7C72E993B6E69C88E59F8E7C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'zhCN', 0x7C634646464644323030E4B893E7B2BEEFBC9A7C72E5B882E59CBAE6B581E58AA8202D20E98787E79FBFE9858DE9A5B07C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'zhCN', 0x7C634646464644323030E4B893E4B89AE8AEADE7BB83E5B888EFBC9A7C72E887B3E69A97E4B98BE5A49CE5B7A5E7A88BE5ADA6EFBC883335EFBC897C6E7C634646464644323030E4BBB7E6A0BCEFBC9A7C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'zhCN', 0x7C634646464644323030E4B893E7B2BEEFBC9A7C72E5B882E59CBAE6B581E58AA8202D20E5B7A5E7A88BE5ADA6E9858DE9A5B07C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'zhCN', 0xFFFFFFFFFFFFFFFFE5A5A5E69CAFE7A798E7A4BE000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'zhCN', 0xFFFFFFFFFFFFFFFFE5AE9EE887B3E5908DE5BD9200001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'zhCN', 0xE4B880E7A78DE7BD95E8A781E79A84E789A9E59381EFBC8CE883BDE5A49FE59CA8E5AE8CE68890E588B6E4BD9CE5908EE8BF94E8BF98E4B880E983A8E58886E69D90E69699E380827C6E7C6EE8AFA5E6ACA1E588B6E4BD9CE88EB7E5BE97246576312024656E31E38082004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'zhCN', 0xE68F90E9AB98E4BDA0E59CA8E5AE8CE68890E588B6E4BD9CE5908EE8BF94E8BF98E4B880E983A8E58886E69D90E69699E380827C6E7C6EE8AFA5E6ACA1E588B6E4BD9CE88EB7E5BE97246576312024656E31E38082004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'zhCN', 0xE4B880E7A78DE7BBB4E5BAA6E5A587E789A9EFBC8CE5BF85E5AE9AE68F90E9AB98E588B6E4BD9CE79A84E4BAA7E587BAE380827C6E7C6EE8AFA5E6ACA1E588B6E4BD9CE88EB7E5BE97246576312024656E31E38082004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'zhCN', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500E5BD93E697A5E8A792E889B2E79BB4E58D87E6ACA1E695B0E5B7B2E8BEBEE4B88AE99990E38082E8AFB7E6988EE5A4A9E5868DE8AF95E380820003000000, 67186), +(3205218938, 58259, 'zhCN', 0x534C4153485F434F4F4C444F574E4D414E4147455234002FE586B7E58DB4E7AEA1E79086E599A80001000000, 67186), +(3205218938, 58258, 'zhCN', 0x534C4153485F434F4F4C444F574E4D414E4147455232002FE586B7E58DB4E8AEBEE7BDAE0001000000, 67186), +(3205218938, 55299, 'zhCN', 0x4A4F55524E4559535F43555252454E545F50524F475245535300E5BD93E5898DE8BF9BE5BAA6EFBC9A7C636E484947484C494748545F464F4E545F434F4C4F523A25642F25647C720001000000, 67186), +(3205218938, 49471, 'zhCN', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F475245535300E5BD93E5898DE8BF9BE5BAA6EFBC9A7C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'zhCN', 0x000000, 67186), +(3776013982, 1294759, 'zhCN', 0x000000, 67186), +(2921112328, 568649, 'zhCN', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'zhCN', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'zhCN', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'zhCN', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'zhCN', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'zhCN', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'zhCN', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'zhCN', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'zhCN', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'zhCN', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'zhCN', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'zhCN', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'zhCN', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'zhCN', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'zhCN', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='zhCN') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='zhCN') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='zhCN') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='zhCN') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xE78BA9E78C8E00E587BBE8B4A5E5BCBAE5A4A7E79A84E6958CE4BABAEFBC8CE694AFE68C81E998BFE696AFE5A194E6B49BE79A84E6B182E7B4A2E3808200FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x00E69C80E5908EE79A84E6989FE781ABE59CA8E887B3E9BB91E4B98BE5A49CE4B8ADE59CA8E78783E783A7E3808200E8A2ABE9BC93E8889EE3808200, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='zhCN'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFFE8889EE6ADA5E6B7B7E4B9B10000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='zhCN'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 273277, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 272911, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'zhCN', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='zhCN' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhCN'); From d29eae3f4543bd4b3cf9a63d7b6d27de6b4fba53 Mon Sep 17 00:00:00 2001 From: Meji Date: Wed, 29 Apr 2026 00:20:42 +0200 Subject: [PATCH 109/175] DB/Hotfixes: Updated zhTW hotfixes to 12.0.5.67186 --- .../master/2026_04_29_10_hotfixes_zhTW.sql | 2794 +++++++++++++++++ 1 file changed, 2794 insertions(+) create mode 100644 sql/updates/hotfixes/master/2026_04_29_10_hotfixes_zhTW.sql diff --git a/sql/updates/hotfixes/master/2026_04_29_10_hotfixes_zhTW.sql b/sql/updates/hotfixes/master/2026_04_29_10_hotfixes_zhTW.sql new file mode 100644 index 0000000000000..a19424c464aeb --- /dev/null +++ b/sql/updates/hotfixes/master/2026_04_29_10_hotfixes_zhTW.sql @@ -0,0 +1,2794 @@ +-- +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (62773,61883,61887,61886,61882,61881,61880,61879,61878,61793,61792,63263,63097,61594,61593,61592,61591,61590,61589,61588,61587,61259,61253,61252,61251,61250,61249,61248,61247,61246,61245,61244,61243,61242,61241,61240,61239,61237,61236,61235,61233,12009,12005,12004,9036,9035,9034,9033,4525,4524,62814,62813,62812,62811,62296,42769)); +INSERT INTO `achievement_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `Reward_lang`, `VerifiedBuild`) VALUES +(62773, 'zhTW', '完成下列每一個深淵釣手成就。', '深淵釣手:捷朱的新對手', '', 67186), +(61883, 'zhTW', '在裝迷藏競賽的第一分鐘不被抓到(x3)。', '你看不見我…', '', 67186), +(61887, 'zhTW', '完成所有裝迷藏競賽成就。', '極致偽裝', '', 67186), +(61886, 'zhTW', '在裝迷藏競賽中,取得所有技能組升級。', '整套技能', '', 67186), +(61882, 'zhTW', '在裝迷藏競賽中,在不被抓到的情況下成功解除被找到的狀態。', '抓到才算數', '', 67186), +(61881, 'zhTW', '在裝迷藏競賽中,成為隊伍中最後一個沒被抓到的躲藏者。', '躲貓貓專家', '', 67186), +(61880, 'zhTW', '在裝迷藏競賽中,躲藏且維持不被找到長達一分半鐘。', '陰影之下冷颼颼', '', 67186), +(61879, 'zhTW', '在裝迷藏競賽中,以追尋者的身分贏得一個回合,且在兩分鐘內抓到所有的躲藏者。', '換你當鬼', '', 67186), +(61878, 'zhTW', '在裝迷藏競賽中,以秘法遊俠的身分成功抓到敵對玩家。', '打包抓走', '', 67186), +(61793, 'zhTW', '在裝迷藏競賽中,以淨化者的身分成功抓到敵對玩家。', '發配虛無', '', 67186), +(61792, 'zhTW', '在裝迷藏競賽中,以破法者的身分成功抓到敵對玩家。', '你被逮捕了!', '', 67186), +(63263, 'zhTW', '', '[DNT]Midnight Keystone Myth: Season One Personal Achievement', '', 67186), +(63097, 'zhTW', '在至暗之夜第一季期間獲得至少3400點的傳奇鑰石分數。', '至暗之夜鑰石神話:第一季', '頭銜:晦影爭奪者與物品:時間迷失鞍具', 67186), +(61594, 'zhTW', '獲得擎天峰的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:擎天峰', '', 67186), +(61593, 'zhTW', '獲得三傑議會之座的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:三傑議會之座', '', 67186), +(61592, 'zhTW', '獲得薩倫之淵的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:薩倫之淵', '', 67186), +(61591, 'zhTW', '獲得阿爾蓋薩學院的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:阿爾蓋薩學院', '', 67186), +(61590, 'zhTW', '獲得風行者塔的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:風行者塔', '', 67186), +(61589, 'zhTW', '獲得奧核點瑟納斯的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:奧核點瑟納斯', '', 67186), +(61588, 'zhTW', '獲得梅薩拉洞穴的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:梅薩拉洞穴', '', 67186), +(61587, 'zhTW', '獲得博學者殿堂(至暗之夜)的地區最佳鑰石地城通關紀錄。', '鑰石勝利者:博學者殿堂(至暗之夜)', '', 67186), +(61259, 'zhTW', '在《至暗之夜》傳奇鑰石難度第1賽季結束時,傳奇鑰石分數在所在地區的所有玩家中排名前0.1%。', '晦影英雄:至暗之夜第一季', '頭銜:晦影英雄', 67186), +(61253, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有30級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石30', '在至暗之夜第1季期間,30級以下將不再會消耗鑰石。', 67186), +(61252, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有29級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石29', '在至暗之夜第1季期間,29級以下將不再會消耗鑰石。', 67186), +(61251, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有28級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石28', '在至暗之夜第1季期間,28級以下將不再會消耗鑰石。', 67186), +(61250, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有27級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石27', '在至暗之夜第1季期間,27級以下將不再會消耗鑰石。', 67186), +(61249, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有26級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石26', '在至暗之夜第1季期間,26級以下將不再會消耗鑰石。', 67186), +(61248, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有25級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石25', '在至暗之夜第1季期間,25級以下將不再會消耗鑰石。', 67186), +(61247, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有24級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石24', '在至暗之夜第1季期間,24級以下將不再會消耗鑰石。', 67186), +(61246, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有23級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石23', '在至暗之夜第1季期間,23級以下將不再會消耗鑰石。', 67186), +(61245, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有22級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石22', '在至暗之夜第1季期間,22級以下將不再會消耗鑰石。', 67186), +(61244, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有21級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石21', '在至暗之夜第1季期間,21級以下將不再會消耗鑰石。', 67186), +(61243, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有20級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石20', '在至暗之夜第1季期間,20級以下將不再會消耗鑰石。', 67186), +(61242, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有19級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石19', '在至暗之夜第1季期間,19級以下將不再會消耗鑰石。', 67186), +(61241, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有18級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石18', '在至暗之夜第1季期間,18級以下將不再會消耗鑰石。', 67186), +(61240, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有17級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石17', '在至暗之夜第1季期間,17級以下將不再會消耗鑰石。', 67186), +(61239, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有16級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石16', '在至暗之夜第1季期間,16級以下將不再會消耗鑰石。', 67186), +(61237, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有15級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石15', '在至暗之夜第1季期間,15級以下將不再會消耗鑰石。', 67186), +(61236, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有14級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石14', '在至暗之夜第1季期間,14級以下將不再會消耗鑰石。', 67186), +(61235, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有13級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石13', '在至暗之夜第1季期間,13級以下將不再會消耗鑰石。', 67186), +(61233, 'zhTW', '在至暗之夜第一季期間,於時間限制內完成所有12級傳奇鑰石難度地城。', '至暗之夜第1季:強韌鑰石12', '在至暗之夜第1季期間,12級以下將不再會消耗鑰石。', 67186), +(12009, 'zhTW', '在傳奇難度的三傑議會之座中,所有隊伍成員受到沉重黑暗效果影響後再擊敗路拉。', '黑暗面', '', 67186), +(12005, 'zhTW', '在傳奇難度的三傑議會之座中,讓暗牙使用暗影突襲破壞4個密封的虛無寶箱後擊敗賽普瑞許。', '開箱高手', '', 67186), +(12004, 'zhTW', '在傳奇難度的三傑議會之座中,使用虛無裂口將厄加德帶出虛無之域,再擊敗他跟『超凡者』祖拉爾。', '恭迎虛無', '', 67186), +(9036, 'zhTW', '在英雄難度中,於不殺死任何護盾傀儡的情況下擊敗擎天峰的大賢者維瑞思。', '偏執狂', '', 67186), +(9035, 'zhTW', '在英雄難度中,於擎天峰與盧克然的交鋒過程中同時使三個灰燼堆形成太陽閃焰。', '明心見性', '', 67186), +(9034, 'zhTW', '在英雄難度中,擊敗擎天峰的強化傀儡。', '放大…強化', '', 67186), +(9033, 'zhTW', '在英雄難度中,擊敗擎天峰的蘭吉特而不受到以下任何技能的傷害:旋轉利刃、風牆、四方之風、眩光。', '準備好出副本之四', '', 67186), +(4525, 'zhTW', '英雄難度中,在第一次交戰數且沒有人受到冰柱傷害的情況下,剷除所有在薩倫之淵中天譴領主提朗紐斯前走廊內的所有敵人。', '別往上看', '', 67186), +(4524, 'zhTW', '英雄難度中,在極寒冰霜累積到11層前,擊敗薩倫之淵的鍛造大師加弗羅斯。', '別到十一', '', 67186), +(62814, 'zhTW', '', '', '', 67186), +(62813, 'zhTW', '', '', '', 67186), +(62812, 'zhTW', '', '', '', 67186), +(62811, 'zhTW', '', '', '', 67186), +(62296, 'zhTW', '', '獲得神話晨曦紋章', '', 67186), +(42769, 'zhTW', '在至暗之夜第1賽季達到不再適用英雄晨曦紋章的程度。', '黎明英雄', '角色解鎖:以英雄晨曦紋章交換神話晨曦紋章', 67186); + +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水期間,捕捉傳奇生物3次。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62342 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水中累積獲得250,000點。', `Reward_lang`='獎勵:獲得愛冒險的夥伴', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62272 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水的過程中,捕捉100條魚。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62271 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手的潛水者剩餘呼吸少於10秒時使用你的「升至水面!」技能。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62220 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在嘗試游到海溝範圍外的過程中,被強制退出深淵釣手潛水。', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62219 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (62218,62216,62215)); +UPDATE `achievement_locale` SET `Reward_lang`='獎勵:可向深海潛水者圖納基特購買深海塑像', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62217 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水的過程中,發現10個古代聖物,並取得淺灘網子升級項目。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買三重絲網', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62214 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水的過程中,發現50個沉沒的聖物。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買淺灘網子', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62213 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水期間,捕捉下列每一種生物,並取得深淵試煉氧氣瓶。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買納羅拉克的呼吸瓶', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62212 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水的過程中,捕捉下列每一種生物,並取得深海潛水者用過的氧氣瓶升級項目。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買深淵試煉氧氣瓶', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62211 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水的過程中,捕捉下列每一種生物。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買深海潛水者用過的氧氣瓶', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62210 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水中至少捕捉到500條魚,並取得深海油汙升級項目。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買帕克深溝之鰭', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62209 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在一次深淵釣手潛水中至少捕捉到25條魚,並取得強化接頭升級項目。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買深海油汙', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62208 AND `locale`='zhTW'); +UPDATE `achievement_locale` SET `Description_lang`='在深淵釣手潛水中至少捕捉到3條魚。', `Reward_lang`='獎勵:可向深海潛水者捷朱購買強化接頭', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=62207 AND `locale`='zhTW'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `ID`=5065 AND `locale`='zhTW'); +INSERT INTO `battle_pet_species_locale` (`ID`, `locale`, `Description_lang`, `SourceText_lang`, `VerifiedBuild`) VALUES +(5065, 'zhTW', '真正的深淵釣手,由深海潛水者捷朱親自認證。', '|cFFFFD200商人:|r深海潛水者圖納基特|n|cFFFFD200區域:|r祖阿曼|n|cFFFFD200花費:|r2400|Hcurrency:3373|h|TInterface\\ICONS\\Item_enchantedpearl.blp:0|t|h|n|n', 67186); + +DELETE FROM `broadcast_text_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (309753,295258,289969,294283)); +INSERT INTO `broadcast_text_locale` (`ID`, `locale`, `Text_lang`, `Text1_lang`, `VerifiedBuild`) VALUES +(309753, 'zhTW', '你想要測量哪一項數據?', '你想要測量哪一項數據?', 67186), +(295258, 'zhTW', '', '做好準備。看來剛才的不過是些小卒子。', 67186), +(289969, 'zhTW', '我有太多的族人死在白銀誓盟手中。\n\n他們告訴我,那是戰爭。他們說,雙方都損失慘重。我們奪日者一族從未殺害達拉然的任何一個人。\n\n一個風行者已經因屠城而遭到報應。今天輪到另一個了。', '', 67186), +(294283, 'zhTW', '我是莉莉的哥哥,希賽。真希望你來的那天我能去歡迎你。現在大家都在等我們嗎?\n\n我前幾天在武松村裡為節慶做準備,結果發現最特別的煙火不見了!我回到家裡去找,但卻一無所獲。我們時間不多。只能臨機應變了。\n\n<希賽用爪子拂過眉梢。>\n\n很高興見到你,莉莉的朋友。我有好幾年沒見過她了,我也知道我們還有很多冒險故事可以聊。當然,主要是聽她說啦。之後我就搬家到晨風村。就在湖旁邊而已,那裡的景色很優美。', '', 67186); + +UPDATE `broadcast_text_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (308983,308778,308501,307197,306852,306851,305742,305450,304509,304508,304505,303990,303988,303870,303530,303469,302008,301005,300642,300632,299668,299666,298821,296530,296471,296185,296020,295738,295405,293787,293774,293748,293576,292410,291754,291236,289399,288359,288133,287914,287852,287847,287600,286257,247439,239474,273277,272911,295984,308821,301657,299055,297004,296930,295985,295318,294167,293822,291856,291853,291585,290937,288987,283177,273965)); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (1306,1307)); +INSERT INTO `char_titles_locale` (`ID`, `locale`, `Name_lang`, `Name1_lang`, `VerifiedBuild`) VALUES +(1306, 'zhTW', '虛無破壞者%s', '虛無破壞者%s', 67186), +(1307, 'zhTW', '『晦影爭奪者』%s', '『晦影爭奪者』%s', 67186); + +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (62822,62821,62820,62819,62818,62817)); +INSERT INTO `chr_customization_choice_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(62822, 'zhTW', '', 67186), +(62821, 'zhTW', '', 67186), +(62820, 'zhTW', '', 67186), +(62819, 'zhTW', '', 67186), +(62818, 'zhTW', '', 67186), +(62817, 'zhTW', '', 67186); + +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (8960,8959,8958,8957,8956,8955,8954,8953)); +INSERT INTO `chr_customization_option_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(8960, 'zhTW', '刺青顏色', 67186), +(8959, 'zhTW', '刺青', 67186), +(8958, 'zhTW', '眼罩', 67186), +(8957, 'zhTW', '犄角造型', 67186), +(8956, 'zhTW', '刺青顏色', 67186), +(8955, 'zhTW', '刺青', 67186), +(8954, 'zhTW', '眼罩', 67186), +(8953, 'zhTW', '犄角造型', 67186); + +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (229126,224842,224840,224838,223318,223121,223119,222479,222477,222475,222466,222453,222438,222436,222434,222432,222430,222428,222426,222424,222422,222416,222290,220967,220603,220574,220573,212256,212255,229140,229139,229048,225427,225426,223423,223697,223696,223695,223693,219734,209802,170782,228515,228514,227753,227677,227676,227675,227674,227673,227672,227671,225639,225638,225637,225636,225635,225634,225611,225610,225609,220963,220961,220959,220958,220957,220955,220725,227430,223818,216419,216418,216417,227429,227428,225732,224745,222969,222803,221550,219955,219466,225670,225668,225666,225664,227206,223209,212362)); +INSERT INTO `criteria_tree_locale` (`ID`, `locale`, `Description_lang`, `VerifiedBuild`) VALUES +(229126, 'zhTW', '', 67186), +(224842, 'zhTW', '完成裝迷藏競賽', 67186), +(224840, 'zhTW', '完成裝迷藏競賽', 67186), +(224838, 'zhTW', '完成裝迷藏競賽', 67186), +(223318, 'zhTW', '深淵釣手:魚中之王(3隻傳奇)', 67186), +(223121, 'zhTW', '深淵釣手:認證深海潛水者', 67186), +(223119, 'zhTW', '深淵釣手:海溝狂戰士', 67186), +(222479, 'zhTW', '深淵釣手:正常程序', 67186), +(222477, 'zhTW', '深淵釣手:就連大海也攔不住我', 67186), +(222475, 'zhTW', '深淵釣手:善泳者溺', 67186), +(222466, 'zhTW', '深淵釣手:深海塑像', 67186), +(222453, 'zhTW', '深淵釣手:空心魚叉槍', 67186), +(222438, 'zhTW', '深淵釣手:重型魚叉槍', 67186), +(222436, 'zhTW', '深淵釣手:三重絲網', 67186), +(222434, 'zhTW', '深淵釣手:淺灘網子', 67186), +(222432, 'zhTW', '深淵釣手:納羅拉克的呼吸瓶', 67186), +(222430, 'zhTW', '深淵釣手:深淵試煉氧氣瓶', 67186), +(222428, 'zhTW', '深淵釣手:深海潛水者用過的氧氣瓶', 67186), +(222426, 'zhTW', '深淵釣手:帕克深溝之鰭', 67186), +(222424, 'zhTW', '深淵釣手:深海油汙', 67186), +(222422, 'zhTW', '深淵釣手:強化接頭', 67186), +(222416, 'zhTW', 'zzOLD Abyss Anglers: Boarhide Catch Sack (OLD)', 67186), +(222290, 'zhTW', '克萊娜的卡德加模仿', 67186), +(220967, 'zhTW', '在裝迷藏競賽的第一分鐘不被抓到。', 67186), +(220603, 'zhTW', '轟炸任務', 67186), +(220574, 'zhTW', '受困!', 67186), +(220573, 'zhTW', '派對破壞者', 67186), +(212256, 'zhTW', '完成深淵釣手事件', 67186), +(212255, 'zhTW', '完成深淵釣手事件', 67186), +(229140, 'zhTW', '', 67186), +(229139, 'zhTW', '', 67186), +(229048, 'zhTW', 'Achievement - Keystone Myth: Midnight Dungeons Season 1', 67186), +(225427, 'zhTW', '擊敗赫哈達部隊', 67186), +(225426, 'zhTW', '擊敗赫哈達部隊', 67186), +(223423, 'zhTW', '釋放靈爪', 67186), +(223697, 'zhTW', '', 67186), +(223696, 'zhTW', '', 67186), +(223695, 'zhTW', '', 67186), +(223693, 'zhTW', '', 67186), +(219734, 'zhTW', '', 67186), +(209802, 'zhTW', '為你的夥伴裝備一件戰鬥古董', 67186), +(170782, 'zhTW', '為你的夥伴裝備一件戰鬥古董', 67186), +(228515, 'zhTW', '積分要求', 67186), +(228514, 'zhTW', '成就 - 鑰石神話:至暗之夜地城第1賽季', 67186), +(227753, 'zhTW', '', 67186), +(227677, 'zhTW', '', 67186), +(227676, 'zhTW', '', 67186), +(227675, 'zhTW', '', 67186), +(227674, 'zhTW', '', 67186), +(227673, 'zhTW', '', 67186), +(227672, 'zhTW', '', 67186), +(227671, 'zhTW', '', 67186), +(225639, 'zhTW', '', 67186), +(225638, 'zhTW', '', 67186), +(225637, 'zhTW', '', 67186), +(225636, 'zhTW', '', 67186), +(225635, 'zhTW', '', 67186), +(225634, 'zhTW', '深淵釣手:深淵珍珠', 67186), +(225611, 'zhTW', '', 67186), +(225610, 'zhTW', '', 67186), +(225609, 'zhTW', '深淵釣手:古董收藏家', 67186), +(220963, 'zhTW', '在未被抓到的情況下玩一輪遊戲。', 67186), +(220961, 'zhTW', '連續90秒維持未被找到的狀態。', 67186), +(220959, 'zhTW', '追尋者在兩分鐘內獲勝。', 67186), +(220958, 'zhTW', '12.0.5 Event Prop Hunt - Achievements - Seeker - Team Gets All Hiders < 2min', 67186), +(220957, 'zhTW', '抓到一名被找到的躲藏者並將其轉化為秘法遊俠。', 67186), +(220955, 'zhTW', '抓到一名被找到的躲藏者並將其轉化為淨化者。', 67186), +(220725, 'zhTW', '抓到一名被找到的躲藏者並將其轉化為破法者', 67186), +(227430, 'zhTW', '', 67186), +(223818, 'zhTW', '', 67186), +(216419, 'zhTW', '', 67186), +(216418, 'zhTW', '', 67186), +(216417, 'zhTW', '', 67186), +(227429, 'zhTW', '', 67186), +(227428, 'zhTW', '擁有逐日精靈龍寶寶寵物', 67186), +(225732, 'zhTW', '取得淺灘網子升級項目', 67186), +(224745, 'zhTW', '啟動哨兵', 67186), +(222969, 'zhTW', '守護靜語', 67186), +(222803, 'zhTW', '破壞屏障', 67186), +(221550, 'zhTW', '殺死活化的天譴裂片', 67186), +(219955, 'zhTW', '殺死刺水母巢穴先知', 67186), +(219466, 'zhTW', '殺死刺水母巢穴先知', 67186), +(225670, 'zhTW', '', 67186), +(225668, 'zhTW', '', 67186), +(225666, 'zhTW', '', 67186), +(225664, 'zhTW', '', 67186), +(227206, 'zhTW', '', 67186), +(223209, 'zhTW', '統計:已獲得神話晨曦紋章', 67186), +(212362, 'zhTW', '於至暗之夜第1賽季期間,物品等級平均達到285(超出神話晨曦紋章)', 67186); + +UPDATE `criteria_tree_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=223694 AND `locale`='zhTW'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (3513,3347,3346,3345,3344,3343,3342,3341,3418,3391,3383,3348)); +INSERT INTO `currency_types_locale` (`ID`, `locale`, `Name_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3513, 'zhTW', '星雲虛無之核', '在至暗之夜第1賽季團隊副本中擊敗強大的敵人,或完成傳奇鑰石地城、豐碩探究和夢魘難度的狩獵時,可轉化為強力的裝備。', 67186), +(3347, 'zhTW', '神話晨曦紋章', '用來升級至暗之夜第1季的傳奇裝備,最高可到物品等級276-289。\n\n製作時使用,會取決品級將物品等級定為272-285。\n\n透過下列活動獲取:\n\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯傳奇難度\n- 傳奇鑰石難度地城(+9以上)', 67186), +(3346, 'zhTW', '英雄晨曦紋章', '用來升級至暗之夜第1季的英雄裝備,最高可到物品等級263-276。透過下列活動獲取:\n\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯英雄難度\n- 傳奇鑰石難度地城(+4至+8)\n- 探究(級別11)\n- 寶箱獵人的獎賞(級別8以上)\n- 狩獵(夢魘)', 67186), +(3345, 'zhTW', '英雄晨曦紋章', '用來升級至暗之夜第1季的英雄裝備,最高可到物品等級263-276。\n\n製作時使用,會取決品級將物品等級定為259-272。\n\n透過下列活動獲取:\n\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯英雄難度\n- 傳奇鑰石難度地城(+4至+8)\n- 探究(級別11)\n- 寶箱獵人的獎賞(級別8以上)\n- 狩獵(夢魘)', 67186), +(3344, 'zhTW', '勇士晨曦紋章', '用來升級至暗之夜第1季的勇士裝備,最高可到物品等級250-263。透過下列活動獲取:\n\n- 每週戶外活動\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯普通難度\n- 傳奇難度賽季地城\n- 傳奇鑰石難度地城(+2至+3)\n- 探究(級別7至10)\n- 寶箱獵人的獎賞(級別6至7)\n- 狩獵(夢魘)', 67186), +(3343, 'zhTW', '勇士晨曦紋章', '用來升級至暗之夜第1季的勇士裝備,最高可到物品等級250-263。透過下列活動獲取:\n\n- 每週戶外活動\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯普通難度\n- 傳奇難度賽季地城\n- 傳奇鑰石難度地城(+2至+3)\n- 探究(級別7至10)\n- 寶箱獵人的獎賞(級別6至7)\n- 狩獵(夢魘)', 67186), +(3342, 'zhTW', '精兵晨曦紋章', '用來升級至暗之夜第1季的精兵裝備,最高可到物品等級237-250。透過下列活動獲取:\n\n- 重複進行的戶外活動\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯隨機團隊難度\n- 英雄難度賽季地城\n- 探究(級別5至6)\n- 寶箱獵人的獎賞(級別4至5)\n- 狩獵(困難)', 67186), +(3341, 'zhTW', '精兵晨曦紋章', '用來升級至暗之夜第1季的精兵裝備,最高可到物品等級237-250。\n\n製作時使用,會取決品級將物品等級定為233-246。\n\n透過下列活動獲取:\n\n- 重複進行的戶外活動\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯隨機團隊難度\n- 英雄難度賽季地城\n- 探究(級別5至6)\n- 寶箱獵人的獎賞(級別4至5)\n- 狩獵(困難)', 67186), +(3418, 'zhTW', '星雲虛無之核', '在至暗之夜第1賽季團隊副本中擊敗強大的敵人,或完成傳奇鑰石地城、豐碩探究和夢魘難度的狩獵時,可轉化為強力的裝備。', 67186), +(3391, 'zhTW', '冒險者晨曦紋章', '用來升級至暗之夜第1季的冒險者裝備,最高可到物品等級224-237。透過下列活動獲取:\n\n- 重複進行的戶外活動\n- 級別4探究\n- 狩獵(普通)', 67186), +(3383, 'zhTW', '冒險者晨曦紋章', '用來升級至暗之夜第1季的冒險者裝備,最高可到物品等級224-237。\n\n製作時使用,會取決品級將物品等級定為220-233。\n\n透過下列活動獲取:\n\n- 重複進行的戶外活動\n- 級別4探究\n- 狩獵(普通)', 67186), +(3348, 'zhTW', '神話晨曦紋章', '用來升級至暗之夜第1季的傳奇裝備,最高可到物品等級276-289。透過下列活動獲取:\n\n- 虛無之尖、夢境裂隙、進軍奎爾達納斯英雄難度\n- 傳奇鑰石難度地城(+9以上)', 67186); + +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `ID`=1700 AND `locale`='zhTW'); +INSERT INTO `dungeon_encounter_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1700, 'zhTW', '盧克然', 67186); + +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (267007,264717,264338,264336,264332,263238,263230,256683,253451,245938,245560,241044,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,263269,263268,263267,263265,272961,272960,272318,272317,272316,19355,272338,272337,272336,272321,272320,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,263286,255627,253582)); +INSERT INTO `item_search_name_locale` (`ID`, `locale`, `Display_lang`, `VerifiedBuild`) VALUES +(267007, 'zhTW', '亞榭洛之眼', 67186), +(264717, 'zhTW', '阿曼尼結界妖術', 67186), +(264338, 'zhTW', '多曼納爾控制臺', 67186), +(264336, 'zhTW', '虛無之光火盆', 67186), +(264332, 'zhTW', '阿曼尼儀式祭壇', 67186), +(263238, 'zhTW', '禁忌長桌', 67186), +(263230, 'zhTW', '博學者書架', 67186), +(256683, 'zhTW', '銀月城訓練假人', 67186), +(253451, 'zhTW', '幕根噴泉', 67186), +(245938, 'zhTW', '蔓生阿拉希棚架', 67186), +(245560, 'zhTW', '酒莊赭石窗戶', 67186), +(241044, 'zhTW', '阿古斯貨箱', 67186), +(267641, 'zhTW', '晦暗銀月城日冠', 67186), +(267640, 'zhTW', '晦暗銀月城日幕', 67186), +(267639, 'zhTW', '晦暗銀月城日衛', 67186), +(267638, 'zhTW', '晦暗銀月城日尖', 67186), +(267607, 'zhTW', '朦朧半影裹手', 67186), +(267606, 'zhTW', '無限重力手套', 67186), +(267605, 'zhTW', '無盡漩渦之握', 67186), +(267604, 'zhTW', '龐然大物攫爪', 67186), +(267482, 'zhTW', '奮發哈拉提防衛者巨腰帶', 67186), +(267481, 'zhTW', '奮發哈拉提防衛者腰帶', 67186), +(267480, 'zhTW', '奮發哈拉提防衛者之索', 67186), +(267479, 'zhTW', '奮發哈拉提防衛者束帶', 67186), +(266432, 'zhTW', '銀月城日冠', 67186), +(266431, 'zhTW', '銀月城日幕', 67186), +(266430, 'zhTW', '銀月城日衛', 67186), +(266429, 'zhTW', '銀月城日尖', 67186), +(263269, 'zhTW', '哈拉提防衛者巨腰帶', 67186), +(263268, 'zhTW', '哈拉提防衛者腰帶', 67186), +(263267, 'zhTW', '哈拉提防衛者之索', 67186), +(263265, 'zhTW', '哈拉提防衛者束帶', 67186), +(272961, 'zhTW', '破法者刃杖', 67186), +(272960, 'zhTW', '破法者盾牆', 67186), +(272318, 'zhTW', '破法者鳳凰之刃', 67186), +(272317, 'zhTW', '破法者鳳凰戰刃', 67186), +(272316, 'zhTW', '破法者刃槍', 67186), +(19355, 'zhTW', '影翼聚能法杖', 67186), +(272338, 'zhTW', '法師守衛法鋼刃', 67186), +(272337, 'zhTW', '法師守衛法刃', 67186), +(272336, 'zhTW', '空無信標裂隙粉碎錘', 67186), +(272321, 'zhTW', '秘法遊俠法弓', 67186), +(272320, 'zhTW', '空無信標裂隙引導法杖', 67186), +(273874, 'zhTW', '虛無之觸日怒長柄斧', 67186), +(263970, 'zhTW', '虛無之觸戰刃', 67186), +(263969, 'zhTW', '虛無之觸巨杖', 67186), +(263968, 'zhTW', '虛無之觸法器', 67186), +(263967, 'zhTW', '虛無之觸巨弓', 67186), +(263966, 'zhTW', '虛無之觸巨劍', 67186), +(263963, 'zhTW', '虛無之觸決鬥之刃', 67186), +(263960, 'zhTW', '虛無之觸閃刃', 67186), +(263959, 'zhTW', '虛無之觸秘典', 67186), +(263956, 'zhTW', '虛無之觸碎擊錘', 67186), +(263954, 'zhTW', '虛無之觸戰鬥短棒', 67186), +(263952, 'zhTW', '虛無之觸日怒護杖', 67186), +(263950, 'zhTW', '虛無之觸鐵鏟', 67186), +(263949, 'zhTW', '虛無之觸壁壘', 67186), +(263946, 'zhTW', '虛無之觸猛擊錘', 67186), +(263943, 'zhTW', '虛無之觸剖刀', 67186), +(263942, 'zhTW', '虛無之觸尖牙', 67186), +(263941, 'zhTW', '虛無之觸步槍', 67186), +(263707, 'zhTW', '虛無之怒手鐲', 67186), +(263706, 'zhTW', '虛無之怒披風', 67186), +(263705, 'zhTW', '虛無之怒腰環', 67186), +(263704, 'zhTW', '虛無之怒肩鎧', 67186), +(263703, 'zhTW', '虛無之怒腿鎧', 67186), +(263702, 'zhTW', '虛無之怒頭盔', 67186), +(263701, 'zhTW', '虛無之怒護手', 67186), +(263700, 'zhTW', '虛無之怒脛甲', 67186), +(263699, 'zhTW', '虛無之怒胸甲', 67186), +(263698, 'zhTW', '虛無死敵短衫', 67186), +(263697, 'zhTW', '虛無死敵護腕', 67186), +(263696, 'zhTW', '虛無死敵披風', 67186), +(263695, 'zhTW', '虛無死敵腰帶', 67186), +(263694, 'zhTW', '虛無死敵肩甲', 67186), +(263693, 'zhTW', '虛無死敵護腿', 67186), +(263692, 'zhTW', '虛無死敵顱帽', 67186), +(263691, 'zhTW', '虛無死敵手套', 67186), +(263690, 'zhTW', '虛無死敵長靴', 67186), +(263689, 'zhTW', '虛無死敵長袍', 67186), +(263688, 'zhTW', '虛無風暴護脛', 67186), +(263687, 'zhTW', '虛無風暴護腕', 67186), +(263686, 'zhTW', '虛無風暴披風', 67186), +(263685, 'zhTW', '虛無風暴腰帶', 67186), +(263684, 'zhTW', '虛無風暴肩冑', 67186), +(263683, 'zhTW', '虛無風暴褶裙', 67186), +(263682, 'zhTW', '虛無風暴盔帽', 67186), +(263681, 'zhTW', '虛無風暴護手', 67186), +(263680, 'zhTW', '虛無風暴脛甲', 67186), +(263679, 'zhTW', '虛無風暴胸甲', 67186), +(263678, 'zhTW', '虛無毒牙護腕', 67186), +(263677, 'zhTW', '虛無毒牙披風', 67186), +(263676, 'zhTW', '虛無毒牙腰帶', 67186), +(263675, 'zhTW', '虛無毒牙肩甲', 67186), +(263674, 'zhTW', '虛無毒牙束褲', 67186), +(263673, 'zhTW', '虛無毒牙兜帽', 67186), +(263672, 'zhTW', '虛無毒牙手套', 67186), +(263671, 'zhTW', '虛無毒牙長靴', 67186), +(263670, 'zhTW', '虛無毒牙護軀', 67186), +(263669, 'zhTW', '虛無卓越短衫', 67186), +(263668, 'zhTW', '虛無卓越束腕', 67186), +(263667, 'zhTW', '虛無卓越披風', 67186), +(263666, 'zhTW', '虛無卓越腰帶', 67186), +(263665, 'zhTW', '虛無卓越肩鎧', 67186), +(263664, 'zhTW', '虛無卓越護腿', 67186), +(263663, 'zhTW', '虛無卓越輝環', 67186), +(263662, 'zhTW', '虛無卓越手甲', 67186), +(263661, 'zhTW', '虛無卓越長靴', 67186), +(263660, 'zhTW', '虛無卓越長袍', 67186), +(263659, 'zhTW', '虛無審判護脛', 67186), +(263658, 'zhTW', '虛無審判束腕', 67186), +(263657, 'zhTW', '虛無審判披風', 67186), +(263656, 'zhTW', '虛無審判腰帶', 67186), +(263655, 'zhTW', '虛無審判肩甲', 67186), +(263654, 'zhTW', '虛無審判腿鎧', 67186), +(263653, 'zhTW', '虛無審判之冠', 67186), +(263652, 'zhTW', '虛無審判護手', 67186), +(263651, 'zhTW', '虛無審判脛甲', 67186), +(263650, 'zhTW', '虛無審判胸甲', 67186), +(263649, 'zhTW', '虛無侍僧束腕', 67186), +(263648, 'zhTW', '虛無侍僧披風', 67186), +(263647, 'zhTW', '虛無侍僧之索', 67186), +(263646, 'zhTW', '虛無侍僧肩甲', 67186), +(263645, 'zhTW', '虛無侍僧束褲', 67186), +(263644, 'zhTW', '虛無侍僧頭盔', 67186), +(263643, 'zhTW', '虛無侍僧之握', 67186), +(263642, 'zhTW', '虛無侍僧利爪', 67186), +(263641, 'zhTW', '虛無侍僧外衣', 67186), +(263640, 'zhTW', '虛無強風短衫', 67186), +(263639, 'zhTW', '虛無強風束腕', 67186), +(263638, 'zhTW', '虛無強風披風', 67186), +(263637, 'zhTW', '虛無強風腰帶', 67186), +(263636, 'zhTW', '虛無強風披肩', 67186), +(263635, 'zhTW', '虛無強風束褲', 67186), +(263634, 'zhTW', '虛無強風之冠', 67186), +(263633, 'zhTW', '虛無強風手套', 67186), +(263632, 'zhTW', '虛無強風長靴', 67186), +(263631, 'zhTW', '虛無強風長袍', 67186), +(263630, 'zhTW', '虛無潛獵者護腕', 67186), +(263629, 'zhTW', '虛無潛獵者披風', 67186), +(263628, 'zhTW', '虛無潛獵者腰帶', 67186), +(263627, 'zhTW', '虛無潛獵者肩甲', 67186), +(263626, 'zhTW', '虛無潛獵者腿甲', 67186), +(263625, 'zhTW', '虛無潛獵者頭盔', 67186), +(263624, 'zhTW', '虛無潛獵者護手', 67186), +(263623, 'zhTW', '虛無潛獵者護脛', 67186), +(263622, 'zhTW', '虛無潛獵者胸甲', 67186), +(263621, 'zhTW', '虛無護衛護臂', 67186), +(263620, 'zhTW', '虛無護衛披風', 67186), +(263619, 'zhTW', '虛無護衛束腰', 67186), +(263618, 'zhTW', '虛無護衛肩鎧', 67186), +(263617, 'zhTW', '虛無護衛腿鎧', 67186), +(263616, 'zhTW', '虛無護衛之冠', 67186), +(263615, 'zhTW', '虛無護衛之爪', 67186), +(263614, 'zhTW', '虛無護衛利爪', 67186), +(263613, 'zhTW', '虛無護衛胸甲', 67186), +(263612, 'zhTW', '虛無狂怒護胸', 67186), +(263611, 'zhTW', '虛無狂怒護腕', 67186), +(263610, 'zhTW', '虛無狂怒披風', 67186), +(263609, 'zhTW', '虛無狂怒腰帶', 67186), +(263608, 'zhTW', '虛無狂怒肩鎧', 67186), +(263607, 'zhTW', '虛無狂怒腿甲', 67186), +(263606, 'zhTW', '虛無狂怒頭罩', 67186), +(263605, 'zhTW', '虛無狂怒手甲', 67186), +(263604, 'zhTW', '虛無狂怒長靴', 67186), +(263603, 'zhTW', '虛無狂怒長袍', 67186), +(263602, 'zhTW', '虛無行者護腕', 67186), +(263601, 'zhTW', '虛無行者披風', 67186), +(263600, 'zhTW', '虛無行者之索', 67186), +(263599, 'zhTW', '虛無行者肩刃', 67186), +(263598, 'zhTW', '虛無行者護腿', 67186), +(263597, 'zhTW', '虛無行者顱帽', 67186), +(263596, 'zhTW', '虛無行者手套', 67186), +(263595, 'zhTW', '虛無行者便鞋', 67186), +(263594, 'zhTW', '虛無行者背心', 67186), +(263593, 'zhTW', '虛無騎士護臂', 67186), +(263592, 'zhTW', '虛無騎士披風', 67186), +(263591, 'zhTW', '虛無騎士束腰', 67186), +(263590, 'zhTW', '虛無騎士肩鎧', 67186), +(263589, 'zhTW', '虛無騎士護腿', 67186), +(263588, 'zhTW', '虛無騎士頭盔', 67186), +(263587, 'zhTW', '虛無騎士手套', 67186), +(263586, 'zhTW', '虛無騎士脛甲', 67186), +(263585, 'zhTW', '虛無騎士胸甲', 67186), +(251161, 'zhTW', '獵魂者罩氅', 67186), +(133494, 'zhTW', '粗糙殭屍腰帶', 67186), +(49810, 'zhTW', '粗糙殭屍腰帶', 67186), +(263286, 'zhTW', '再利用的蘑菇人銅鑼', 67186), +(255627, 'zhTW', '銀河鬥士之錘', 67186), +(253582, 'zhTW', '牙鰭連枷', 67186); + +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (210174,206969,206968,206967,204977,204568,204567,204565,201321,201320,201319,201318,201317,201316,201315,201314,201313,201312,201311,201310,200616,200615,200614,245345,243343,243302,274267,255157,239563,223245,267009,267007,264717,264342,264338,264336,264332,264330,264329,264258,263238,263233,263230,263042,263036,256683,253451,251967,245938,245560,241044,264914,275447,275446,275445,275444,275442,275440,275436,248248,247822,237141,235549,226357,213438,209060,204798,199412,192557,187682,187525,182717,174836,257741,257735,255844,255843,248592,248135,274427,267643,267642,267641,267640,267639,267638,267607,267606,267605,267604,267482,267481,267480,267479,266432,266431,266430,266429,265740,265739,264507,263269,263268,263267,263265,270562,249497,272961,272960,272318,272317,272316,271631,19355,274578,268455,268122,272338,272337,272336,272321,272320,268481,268456,273874,263970,263969,263968,263967,263966,263963,263960,263959,263956,263954,263952,263950,263949,263946,263943,263942,263941,263707,263706,263705,263704,263703,263702,263701,263700,263699,263698,263697,263696,263695,263694,263693,263692,263691,263690,263689,263688,263687,263686,263685,263684,263683,263682,263681,263680,263679,263678,263677,263676,263675,263674,263673,263672,263671,263670,263669,263668,263667,263666,263665,263664,263663,263662,263661,263660,263659,263658,263657,263656,263655,263654,263653,263652,263651,263650,263649,263648,263647,263646,263645,263644,263643,263642,263641,263640,263639,263638,263637,263636,263635,263634,263633,263632,263631,263630,263629,263628,263627,263626,263625,263624,263623,263622,263621,263620,263619,263618,263617,263616,263615,263614,263613,263612,263611,263610,263609,263608,263607,263606,263605,263604,263603,263602,263601,263600,263599,263598,263597,263596,263595,263594,263593,263592,263591,263590,263589,263588,263587,263586,263585,251161,133494,49810,264323,264322,264321,264320,264319,264318,264317,264316,264315,264314,256700,250445,250360,250443,272125,263286,273307,265790,246753,255627,266969,253582)); +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(210174, 'zhTW', '教你學會如何進行幻影裝飾:夢境附魔。', '', '', '', '公式:幻影裝飾:夢境', 67186), +(206969, 'zhTW', '', '', '', '', '幻影裝飾:夢境', 67186), +(206968, 'zhTW', '', '', '', '', '幻影裝飾:夢境', 67186), +(206967, 'zhTW', '', '', '', '', '幻影裝飾:夢境', 67186), +(204977, 'zhTW', '教你學會如何進行幻影裝飾:孢子附魔。', '', '', '', '公式:幻影裝飾:孢子', 67186), +(204568, 'zhTW', '', '', '', '', '幻影裝飾:孢子', 67186), +(204567, 'zhTW', '', '', '', '', '幻影裝飾:孢子', 67186), +(204565, 'zhTW', '', '', '', '', '幻影裝飾:孢子', 67186), +(201321, 'zhTW', '', '', '', '', '幻影裝飾:秩序', 67186), +(201320, 'zhTW', '', '', '', '', '幻影裝飾:秩序', 67186), +(201319, 'zhTW', '', '', '', '', '幻影裝飾:秩序', 67186), +(201318, 'zhTW', '', '', '', '', '幻影裝飾:空氣', 67186), +(201317, 'zhTW', '', '', '', '', '幻影裝飾:空氣', 67186), +(201316, 'zhTW', '', '', '', '', '幻影裝飾:空氣', 67186), +(201315, 'zhTW', '', '', '', '', '幻影裝飾:大地', 67186), +(201314, 'zhTW', '', '', '', '', '幻影裝飾:大地', 67186), +(201313, 'zhTW', '', '', '', '', '幻影裝飾:大地', 67186), +(201312, 'zhTW', '', '', '', '', '幻影裝飾:冰霜', 67186), +(201311, 'zhTW', '', '', '', '', '幻影裝飾:冰霜', 67186), +(201310, 'zhTW', '', '', '', '', '幻影裝飾:冰霜', 67186), +(200616, 'zhTW', '', '', '', '', '幻影裝飾:火焰', 67186), +(200615, 'zhTW', '', '', '', '', '幻影裝飾:火焰', 67186), +(200614, 'zhTW', '', '', '', '', '幻影裝飾:火焰', 67186), +(245345, 'zhTW', '純粹的原始能量凝聚而成的微粒。可透過向豐足商人削切者雪兒或深淵釣手深海潛水者圖納基特購買獲取。', '', '', '', '融合活力', 67186), +(243343, 'zhTW', '提供大幅增加收獲的機會。', '', '', '', '釣手的異象', 67186), +(243302, 'zhTW', '效果極佳的成長催化劑。', '', '', '', '寶瓶花', 67186), +(274267, 'zhTW', '純粹的原始能量凝聚而成的微粒。可透過向豐足商人削切者雪兒或深淵釣手深海潛水者圖納基特購買獲取。', '', '', '', '融合活力', 67186), +(255157, 'zhTW', '', '', '', '', '深淵釣手的釣魚日誌', 67186), +(239563, 'zhTW', '教你學會如何召喚虛無之痕山貓。此坐騎將隨著你的騎術技能和騎乘地點而改變。', '', '', '', '影縛栓繩', 67186), +(223245, 'zhTW', '', '', '', '', '套裝:深淵釣手', 67186), +(267009, 'zhTW', '', '', '', '', '阿曼尼訓練假人', 67186), +(267007, 'zhTW', '', '', '', '', '亞榭洛之眼', 67186), +(264717, 'zhTW', '', '', '', '', '阿曼尼結界妖術', 67186), +(264342, 'zhTW', '', '', '', '', '宇宙虛無空間', 67186), +(264338, 'zhTW', '', '', '', '', '多曼納爾控制臺', 67186), +(264336, 'zhTW', '', '', '', '', '虛無之光火盆', 67186), +(264332, 'zhTW', '', '', '', '', '阿曼尼儀式祭壇', 67186), +(264330, 'zhTW', '', '', '', '', '阿曼尼吊掛火盆', 67186), +(264329, 'zhTW', '', '', '', '', '阿曼尼餐桌', 67186), +(264258, 'zhTW', '', '', '', '', '綻放熔爐', 67186), +(263238, 'zhTW', '', '', '', '', '禁忌長桌', 67186), +(263233, 'zhTW', '', '', '', '', '辛多雷旋轉圖書館', 67186), +(263230, 'zhTW', '', '', '', '', '博學者書架', 67186), +(263042, 'zhTW', '', '', '', '', '根芒路燈', 67186), +(263036, 'zhTW', '', '', '', '', '吊掛晨曦花', 67186), +(256683, 'zhTW', '', '', '', '', '銀月城訓練假人', 67186), +(253451, 'zhTW', '', '', '', '', '幕根噴泉', 67186), +(251967, 'zhTW', '', '', '', '', '蘑菇人旗幟', 67186), +(245938, 'zhTW', '', '', '', '', '蔓生阿拉希棚架', 67186), +(245560, 'zhTW', '', '', '', '', '酒莊赭石窗戶', 67186), +(241044, 'zhTW', '', '', '', '', '阿古斯貨箱', 67186), +(264914, 'zhTW', '內含戰場綬章、古物寶庫鑰匙裂片、升級裝備的材料、金幣等物品的儲物箱。', '', '', '', '遊俠儲物箱', 67186), +(275447, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '投機伐木坦克', 67186), +(275446, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '高性能伐木坦克', 67186), +(275445, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '綠益伐木坦克', 67186), +(275444, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '藍籌伐木坦克', 67186), +(275442, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '紫晶機甲', 67186), +(275440, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '天藍死亡行者', 67186), +(275436, 'zhTW', '透過至暗之夜鑰石神話:第1賽季成就取得。銀月城或時間之道的林多米會很有興趣交易這個物品。在本賽季結束時過期。', '', '', '', '時間迷失鞍具', 67186), +(248248, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '蒼藍虛無飛行者', 67186), +(247822, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '血色虛無飛行者', 67186), +(237141, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '創業伐木坦克', 67186), +(235549, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '赤紅伐木坦克', 67186), +(226357, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '鑽石機械戰甲', 67186), +(213438, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '無限裝甲獸', 67186), +(209060, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '碧綠裝甲獸', 67186), +(204798, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '煉獄裝甲獸', 67186), +(199412, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '冰風暴裝甲獸', 67186), +(192557, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '復興死亡行者', 67186), +(187682, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '殘曲死亡行者', 67186), +(187525, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '曲魂死亡行者', 67186), +(182717, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '觸罪死亡行者', 67186), +(174836, 'zhTW', '教你學會如何召喚這個坐騎。', '', '', '', '覺醒鑽心蟲', 67186), +(257741, 'zhTW', '可在拍賣場進行買賣。', '', '', '', '『爆炸監管者』B0P', 67186), +(257735, 'zhTW', '可在拍賣場進行買賣。', '', '', '', '『爆炸監管者』B0P', 67186), +(255844, 'zhTW', '可在拍賣場進行買賣。', '', '', '', '『淡定小狗』修', 67186), +(255843, 'zhTW', '可在拍賣場進行買賣。', '', '', '', '『淡定小狗』修', 67186), +(248592, 'zhTW', '召喚『靈魂灼燒者』畢普。由擁有工程學技能的玩家製造。可在拍賣場進行買賣。', '', '', '', '『靈魂灼燒者』畢普', 67186), +(248135, 'zhTW', '召喚『靈魂灼燒者』畢普。由擁有工程學技能的玩家製造。可在拍賣場進行買賣。', '', '', '', '『靈魂灼燒者』畢普', 67186), +(274427, 'zhTW', '備註:不保證內容物含有真正坐騎', '', '', '', '煞之寶箱', 67186), +(267643, 'zhTW', '', '', '', '', '陳舊阿曼尼圖騰之索', 67186), +(267642, 'zhTW', '', '', '', '', '陳舊阿曼尼心弦墜飾', 67186), +(267641, 'zhTW', '', '', '', '', '晦暗銀月城日冠', 67186), +(267640, 'zhTW', '', '', '', '', '晦暗銀月城日幕', 67186), +(267639, 'zhTW', '', '', '', '', '晦暗銀月城日衛', 67186), +(267638, 'zhTW', '', '', '', '', '晦暗銀月城日尖', 67186), +(267607, 'zhTW', '', '', '', '', '朦朧半影裹手', 67186), +(267606, 'zhTW', '', '', '', '', '無限重力手套', 67186), +(267605, 'zhTW', '', '', '', '', '無盡漩渦之握', 67186), +(267604, 'zhTW', '', '', '', '', '龐然大物攫爪', 67186), +(267482, 'zhTW', '', '', '', '', '奮發哈拉提防衛者巨腰帶', 67186), +(267481, 'zhTW', '', '', '', '', '奮發哈拉提防衛者腰帶', 67186), +(267480, 'zhTW', '', '', '', '', '奮發哈拉提防衛者之索', 67186), +(267479, 'zhTW', '', '', '', '', '奮發哈拉提防衛者束帶', 67186), +(266432, 'zhTW', '', '', '', '', '銀月城日冠', 67186), +(266431, 'zhTW', '', '', '', '', '銀月城日幕', 67186), +(266430, 'zhTW', '', '', '', '', '銀月城日衛', 67186), +(266429, 'zhTW', '', '', '', '', '銀月城日尖', 67186), +(265740, 'zhTW', '', '', '', '', '阿曼尼圖騰之索', 67186), +(265739, 'zhTW', '', '', '', '', '阿曼尼心弦墜飾', 67186), +(264507, 'zhTW', '', '', '', '', '混亂能量爐缸', 67186), +(263269, 'zhTW', '', '', '', '', '哈拉提防衛者巨腰帶', 67186), +(263268, 'zhTW', '', '', '', '', '哈拉提防衛者腰帶', 67186), +(263267, 'zhTW', '', '', '', '', '哈拉提防衛者之索', 67186), +(263265, 'zhTW', '', '', '', '', '哈拉提防衛者束帶', 67186), +(270562, 'zhTW', '受污染的奇特骨頭樣本。暗幽谷女士或許會對這個東西感興趣。', '', '', '', '受污染的樣本', 67186), +(249497, 'zhTW', '太過辛辣,導致太陽之井禁止它流入。', '', '', '', '鬼魂之地彩椒', 67186), +(272961, 'zhTW', '', '', '', '', '破法者刃杖', 67186), +(272960, 'zhTW', '', '', '', '', '破法者盾牆', 67186), +(272318, 'zhTW', '', '', '', '', '破法者鳳凰之刃', 67186), +(272317, 'zhTW', '', '', '', '', '破法者鳳凰戰刃', 67186), +(272316, 'zhTW', '', '', '', '', '破法者刃槍', 67186), +(271631, 'zhTW', '備註:不保證內容物含有真正坐騎', '', '', '', '聖光守護者的獎勵', 67186), +(19355, 'zhTW', '', '', '', '', '影翼聚能法杖', 67186), +(274578, 'zhTW', '來自『豐足羅亞』敦敦的小小恩惠,包含4500個純粹豐足。', '', '', '', '純粹豐足獻禮', 67186), +(268455, 'zhTW', '', '', '', '', '附魔沙漏', 67186), +(268122, 'zhTW', '你的硬幣被驅散了。在下次比賽中參與更多。', '', '', '', '被驅散的硬幣', 67186), +(272338, 'zhTW', '', '', '', '', '法師守衛法鋼刃', 67186), +(272337, 'zhTW', '', '', '', '', '法師守衛法刃', 67186), +(272336, 'zhTW', '', '', '', '', '空無信標裂隙粉碎錘', 67186), +(272321, 'zhTW', '', '', '', '', '秘法遊俠法弓', 67186), +(272320, 'zhTW', '', '', '', '', '空無信標裂隙引導法杖', 67186), +(268481, 'zhTW', '教你學會如何召喚破壞蜂。此坐騎將隨著你的騎術技能和騎乘地點而改變。', '', '', '', '博學者法術蜂巢', 67186), +(268456, 'zhTW', '', '', '', '', '召喚長椅', 67186), +(273874, 'zhTW', '', '', '', '', '虛無之觸日怒長柄斧', 67186), +(263970, 'zhTW', '', '', '', '', '虛無之觸戰刃', 67186), +(263969, 'zhTW', '', '', '', '', '虛無之觸巨杖', 67186), +(263968, 'zhTW', '', '', '', '', '虛無之觸法器', 67186), +(263967, 'zhTW', '', '', '', '', '虛無之觸巨弓', 67186), +(263966, 'zhTW', '', '', '', '', '虛無之觸巨劍', 67186), +(263963, 'zhTW', '', '', '', '', '虛無之觸決鬥之刃', 67186), +(263960, 'zhTW', '', '', '', '', '虛無之觸閃刃', 67186), +(263959, 'zhTW', '', '', '', '', '虛無之觸秘典', 67186), +(263956, 'zhTW', '', '', '', '', '虛無之觸碎擊錘', 67186), +(263954, 'zhTW', '', '', '', '', '虛無之觸戰鬥短棒', 67186), +(263952, 'zhTW', '', '', '', '', '虛無之觸日怒護杖', 67186), +(263950, 'zhTW', '', '', '', '', '虛無之觸鐵鏟', 67186), +(263949, 'zhTW', '', '', '', '', '虛無之觸壁壘', 67186), +(263946, 'zhTW', '', '', '', '', '虛無之觸猛擊錘', 67186), +(263943, 'zhTW', '', '', '', '', '虛無之觸剖刀', 67186), +(263942, 'zhTW', '', '', '', '', '虛無之觸尖牙', 67186), +(263941, 'zhTW', '', '', '', '', '虛無之觸步槍', 67186), +(263707, 'zhTW', '', '', '', '', '虛無之怒手鐲', 67186), +(263706, 'zhTW', '', '', '', '', '虛無之怒披風', 67186), +(263705, 'zhTW', '', '', '', '', '虛無之怒腰環', 67186), +(263704, 'zhTW', '', '', '', '', '虛無之怒肩鎧', 67186), +(263703, 'zhTW', '', '', '', '', '虛無之怒腿鎧', 67186), +(263702, 'zhTW', '', '', '', '', '虛無之怒頭盔', 67186), +(263701, 'zhTW', '', '', '', '', '虛無之怒護手', 67186), +(263700, 'zhTW', '', '', '', '', '虛無之怒脛甲', 67186), +(263699, 'zhTW', '', '', '', '', '虛無之怒胸甲', 67186), +(263698, 'zhTW', '', '', '', '', '虛無死敵短衫', 67186), +(263697, 'zhTW', '', '', '', '', '虛無死敵護腕', 67186), +(263696, 'zhTW', '', '', '', '', '虛無死敵披風', 67186), +(263695, 'zhTW', '', '', '', '', '虛無死敵腰帶', 67186), +(263694, 'zhTW', '', '', '', '', '虛無死敵肩甲', 67186), +(263693, 'zhTW', '', '', '', '', '虛無死敵護腿', 67186), +(263692, 'zhTW', '', '', '', '', '虛無死敵顱帽', 67186), +(263691, 'zhTW', '', '', '', '', '虛無死敵手套', 67186), +(263690, 'zhTW', '', '', '', '', '虛無死敵長靴', 67186), +(263689, 'zhTW', '', '', '', '', '虛無死敵長袍', 67186), +(263688, 'zhTW', '', '', '', '', '虛無風暴護脛', 67186), +(263687, 'zhTW', '', '', '', '', '虛無風暴護腕', 67186), +(263686, 'zhTW', '', '', '', '', '虛無風暴披風', 67186), +(263685, 'zhTW', '', '', '', '', '虛無風暴腰帶', 67186), +(263684, 'zhTW', '', '', '', '', '虛無風暴肩冑', 67186), +(263683, 'zhTW', '', '', '', '', '虛無風暴褶裙', 67186), +(263682, 'zhTW', '', '', '', '', '虛無風暴盔帽', 67186), +(263681, 'zhTW', '', '', '', '', '虛無風暴護手', 67186), +(263680, 'zhTW', '', '', '', '', '虛無風暴脛甲', 67186), +(263679, 'zhTW', '', '', '', '', '虛無風暴胸甲', 67186), +(263678, 'zhTW', '', '', '', '', '虛無毒牙護腕', 67186), +(263677, 'zhTW', '', '', '', '', '虛無毒牙披風', 67186), +(263676, 'zhTW', '', '', '', '', '虛無毒牙腰帶', 67186), +(263675, 'zhTW', '', '', '', '', '虛無毒牙肩甲', 67186), +(263674, 'zhTW', '', '', '', '', '虛無毒牙束褲', 67186), +(263673, 'zhTW', '', '', '', '', '虛無毒牙兜帽', 67186), +(263672, 'zhTW', '', '', '', '', '虛無毒牙手套', 67186), +(263671, 'zhTW', '', '', '', '', '虛無毒牙長靴', 67186), +(263670, 'zhTW', '', '', '', '', '虛無毒牙護軀', 67186), +(263669, 'zhTW', '', '', '', '', '虛無卓越短衫', 67186), +(263668, 'zhTW', '', '', '', '', '虛無卓越束腕', 67186), +(263667, 'zhTW', '', '', '', '', '虛無卓越披風', 67186), +(263666, 'zhTW', '', '', '', '', '虛無卓越腰帶', 67186), +(263665, 'zhTW', '', '', '', '', '虛無卓越肩鎧', 67186), +(263664, 'zhTW', '', '', '', '', '虛無卓越護腿', 67186), +(263663, 'zhTW', '', '', '', '', '虛無卓越輝環', 67186), +(263662, 'zhTW', '', '', '', '', '虛無卓越手甲', 67186), +(263661, 'zhTW', '', '', '', '', '虛無卓越長靴', 67186), +(263660, 'zhTW', '', '', '', '', '虛無卓越長袍', 67186), +(263659, 'zhTW', '', '', '', '', '虛無審判護脛', 67186), +(263658, 'zhTW', '', '', '', '', '虛無審判束腕', 67186), +(263657, 'zhTW', '', '', '', '', '虛無審判披風', 67186), +(263656, 'zhTW', '', '', '', '', '虛無審判腰帶', 67186), +(263655, 'zhTW', '', '', '', '', '虛無審判肩甲', 67186), +(263654, 'zhTW', '', '', '', '', '虛無審判腿鎧', 67186), +(263653, 'zhTW', '', '', '', '', '虛無審判之冠', 67186), +(263652, 'zhTW', '', '', '', '', '虛無審判護手', 67186), +(263651, 'zhTW', '', '', '', '', '虛無審判脛甲', 67186), +(263650, 'zhTW', '', '', '', '', '虛無審判胸甲', 67186), +(263649, 'zhTW', '', '', '', '', '虛無侍僧束腕', 67186), +(263648, 'zhTW', '', '', '', '', '虛無侍僧披風', 67186), +(263647, 'zhTW', '', '', '', '', '虛無侍僧之索', 67186), +(263646, 'zhTW', '', '', '', '', '虛無侍僧肩甲', 67186), +(263645, 'zhTW', '', '', '', '', '虛無侍僧束褲', 67186), +(263644, 'zhTW', '', '', '', '', '虛無侍僧頭盔', 67186), +(263643, 'zhTW', '', '', '', '', '虛無侍僧之握', 67186), +(263642, 'zhTW', '', '', '', '', '虛無侍僧利爪', 67186), +(263641, 'zhTW', '', '', '', '', '虛無侍僧外衣', 67186), +(263640, 'zhTW', '', '', '', '', '虛無強風短衫', 67186), +(263639, 'zhTW', '', '', '', '', '虛無強風束腕', 67186), +(263638, 'zhTW', '', '', '', '', '虛無強風披風', 67186), +(263637, 'zhTW', '', '', '', '', '虛無強風腰帶', 67186), +(263636, 'zhTW', '', '', '', '', '虛無強風披肩', 67186), +(263635, 'zhTW', '', '', '', '', '虛無強風束褲', 67186), +(263634, 'zhTW', '', '', '', '', '虛無強風之冠', 67186), +(263633, 'zhTW', '', '', '', '', '虛無強風手套', 67186), +(263632, 'zhTW', '', '', '', '', '虛無強風長靴', 67186), +(263631, 'zhTW', '', '', '', '', '虛無強風長袍', 67186), +(263630, 'zhTW', '', '', '', '', '虛無潛獵者護腕', 67186), +(263629, 'zhTW', '', '', '', '', '虛無潛獵者披風', 67186), +(263628, 'zhTW', '', '', '', '', '虛無潛獵者腰帶', 67186), +(263627, 'zhTW', '', '', '', '', '虛無潛獵者肩甲', 67186), +(263626, 'zhTW', '', '', '', '', '虛無潛獵者腿甲', 67186), +(263625, 'zhTW', '', '', '', '', '虛無潛獵者頭盔', 67186), +(263624, 'zhTW', '', '', '', '', '虛無潛獵者護手', 67186), +(263623, 'zhTW', '', '', '', '', '虛無潛獵者護脛', 67186), +(263622, 'zhTW', '', '', '', '', '虛無潛獵者胸甲', 67186), +(263621, 'zhTW', '', '', '', '', '虛無護衛護臂', 67186), +(263620, 'zhTW', '', '', '', '', '虛無護衛披風', 67186), +(263619, 'zhTW', '', '', '', '', '虛無護衛束腰', 67186), +(263618, 'zhTW', '', '', '', '', '虛無護衛肩鎧', 67186), +(263617, 'zhTW', '', '', '', '', '虛無護衛腿鎧', 67186), +(263616, 'zhTW', '', '', '', '', '虛無護衛之冠', 67186), +(263615, 'zhTW', '', '', '', '', '虛無護衛之爪', 67186), +(263614, 'zhTW', '', '', '', '', '虛無護衛利爪', 67186), +(263613, 'zhTW', '', '', '', '', '虛無護衛胸甲', 67186), +(263612, 'zhTW', '', '', '', '', '虛無狂怒護胸', 67186), +(263611, 'zhTW', '', '', '', '', '虛無狂怒護腕', 67186), +(263610, 'zhTW', '', '', '', '', '虛無狂怒披風', 67186), +(263609, 'zhTW', '', '', '', '', '虛無狂怒腰帶', 67186), +(263608, 'zhTW', '', '', '', '', '虛無狂怒肩鎧', 67186), +(263607, 'zhTW', '', '', '', '', '虛無狂怒腿甲', 67186), +(263606, 'zhTW', '', '', '', '', '虛無狂怒頭罩', 67186), +(263605, 'zhTW', '', '', '', '', '虛無狂怒手甲', 67186), +(263604, 'zhTW', '', '', '', '', '虛無狂怒長靴', 67186), +(263603, 'zhTW', '', '', '', '', '虛無狂怒長袍', 67186), +(263602, 'zhTW', '', '', '', '', '虛無行者護腕', 67186), +(263601, 'zhTW', '', '', '', '', '虛無行者披風', 67186), +(263600, 'zhTW', '', '', '', '', '虛無行者之索', 67186); + +INSERT INTO `item_sparse_locale` (`ID`, `locale`, `Description_lang`, `Display3_lang`, `Display2_lang`, `Display1_lang`, `Display_lang`, `VerifiedBuild`) VALUES +(263599, 'zhTW', '', '', '', '', '虛無行者肩刃', 67186), +(263598, 'zhTW', '', '', '', '', '虛無行者護腿', 67186), +(263597, 'zhTW', '', '', '', '', '虛無行者顱帽', 67186), +(263596, 'zhTW', '', '', '', '', '虛無行者手套', 67186), +(263595, 'zhTW', '', '', '', '', '虛無行者便鞋', 67186), +(263594, 'zhTW', '', '', '', '', '虛無行者背心', 67186), +(263593, 'zhTW', '', '', '', '', '虛無騎士護臂', 67186), +(263592, 'zhTW', '', '', '', '', '虛無騎士披風', 67186), +(263591, 'zhTW', '', '', '', '', '虛無騎士束腰', 67186), +(263590, 'zhTW', '', '', '', '', '虛無騎士肩鎧', 67186), +(263589, 'zhTW', '', '', '', '', '虛無騎士護腿', 67186), +(263588, 'zhTW', '', '', '', '', '虛無騎士頭盔', 67186), +(263587, 'zhTW', '', '', '', '', '虛無騎士手套', 67186), +(263586, 'zhTW', '', '', '', '', '虛無騎士脛甲', 67186), +(263585, 'zhTW', '', '', '', '', '虛無騎士胸甲', 67186), +(251161, 'zhTW', '邪枝部族秘密扭曲儀式的聖物。', '', '', '', '獵魂者罩氅', 67186), +(133494, 'zhTW', '', '', '', '', '粗糙殭屍腰帶', 67186), +(49810, 'zhTW', '', '', '', '', '粗糙殭屍腰帶', 67186), +(264323, 'zhTW', '內含尚未收藏的虛無之觸造型武器。', '', '', '', '虛無之觸武器寶箱', 67186), +(264322, 'zhTW', '內含尚未收藏的虛無之觸造型長靴。', '', '', '', '虛無之觸長靴寶箱', 67186), +(264321, 'zhTW', '內含尚未收藏的虛無之觸造型護腿。', '', '', '', '虛無之觸護腿寶箱', 67186), +(264320, 'zhTW', '內含尚未收藏的虛無之觸造型腰帶。', '', '', '', '虛無之觸腰帶寶箱', 67186), +(264319, 'zhTW', '內含尚未收藏的虛無之觸造型手套。', '', '', '', '虛無之觸手套寶箱', 67186), +(264318, 'zhTW', '內含尚未收藏的虛無之觸造型護腕。', '', '', '', '虛無之觸護腕寶箱', 67186), +(264317, 'zhTW', '內含尚未收藏的虛無之觸造型護軀。', '', '', '', '虛無之觸護軀寶箱', 67186), +(264316, 'zhTW', '內含尚未收藏的虛無之觸造型披風。', '', '', '', '虛無之觸披風寶箱', 67186), +(264315, 'zhTW', '內含尚未收藏的虛無之觸造型護肩。', '', '', '', '虛無之觸護肩寶箱', 67186), +(264314, 'zhTW', '內含尚未收藏的虛無之觸造型頭盔。', '', '', '', '虛無之觸頭盔寶箱', 67186), +(256700, 'zhTW', '教你學會如何製作艾澤拉斯祝福璽戒。', '', '', '', '設計圖:艾澤拉斯祝福璽戒', 67186), +(250445, 'zhTW', '', '', '', '', '豐足回音:附魔', 67186), +(250360, 'zhTW', '', '', '', '', '豐足回音:剝皮', 67186), +(250443, 'zhTW', '', '', '', '', '豐足回音:草藥學', 67186), +(272125, 'zhTW', '包含黃金、虛光泥灰,以及與當前專精相符的物品,表彰你在戰場上的貢獻。', '', '', '', '新兵的儲物箱', 67186), +(263286, 'zhTW', '', '', '', '', '再利用的蘑菇人銅鑼', 67186), +(273307, 'zhTW', '由一名無畏的企業家新鮮現榨!糖塊結晶閃閃發亮…或者那其實是法力水晶?', '', '', '', '一瓶無畏檸檬茶', 67186), +(265790, 'zhTW', '內含10個英雄和神話晨曦紋章的袋子。', '', '', '', '晨曦紋章寶箱', 67186), +(246753, 'zhTW', '', '', '', '', '一組光榮的神話晨曦紋章', 67186), +(255627, 'zhTW', '', '', '', '', '銀河鬥士之錘', 67186), +(266969, 'zhTW', '', '', '', '', '套裝:深海潛水者法衣', 67186), +(253582, 'zhTW', '', '', '', '', '牙鰭連枷', 67186); + +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (32672,32669,31527,31282,31281,31280,35862,35353,34751,34733,34732,34731,34730,34727,34725,34722,34720,35809,35491,35490,35489,35488,35477,35476,35475,35474,35473,35472,35471,35470,35469,35468,35467,35466,35465,35464,35463,35462,35461,35460,35459,35458,35457,35456,35455,35454,35453,35452,35451,35450,35449,35448,35447,35446,35445,35444,35443,35442,35441,35440,35439,35438,35435,35434,35418,35373,35371,35366,35361,35360,35357,35344,35343,35342,35341,35340,35339,35338,35336,35328,35327,35326,35325,35324,35319,35317,35316,35315,35314,35311,35309,35274,35273,35272,35131,35106,35068,35067,35041,35040,35038,35037,35036,34847,34846,34845,34844,34474,34456,34450,34243,34242,34001,34000,33990,33989,33983,33982,33981,33975,33924,33742,33741,33740,33739,33738,33737,33640,33638)); +INSERT INTO `journal_encounter_section_locale` (`ID`, `locale`, `Title_lang`, `BodyText_lang`, `VerifiedBuild`) VALUES +(32672, 'zhTW', '坦克', '$bullet;囤積者會在|cFF2959D3|Hspell:1235072|h[精明手段]|h|r期間,從最近的資源堆收集物資。\n$bullet;腐臭的蘑菇會在接觸時施加|cFF2959D3|Hspell:1234846|h[毒性孢子]|h|r,防止其引爆為|cFF2959D3|Hspell:1245593|h[腐臭爆發]|h|r。\n$bullet;|cFF2959D3|Hspell:1234681|h[貪婪低吼]|h|r和|cFF2959D3|Hspell:1235125|h[豪邁低吼]|h|r對所有玩家造成大量傷害。', 67186), +(32669, 'zhTW', '概況說明', '囤積者不惜一切代價守護他的存貨,並在生命力降至90%、60%與30%時施放|cFF2959D3|Hspell:1235072|h[精明手段]|h|r,強化其中一個技能。\n\n當能量達到100點時,他會在場上到處亂丟|cFF2959D3|Hspell:1234233|h[腐敗的補給品]|h|r,使腐臭的蘑菇生長12秒。接觸到蘑菇時,會施加|cFF2959D3|Hspell:1234846|h[毒性孢子]|h|r並摧毀蕈菇,防止觸發|cFF2959D3|Hspell:1245593|h[腐臭爆發]|h|r。', 67186), +(31527, 'zhTW', '禁忌運輸', '一批原本用來避人耳目的貨物。可提供極佳的掩護。', 67186), +(31282, 'zhTW', '坦克', '$bullet;克絲提雅會使用|cFF2959D3|Hspell:1230289|h[禁忌灌注]|h|r使尼波斯變為玩家的敵對目標。\n$bullet;躲開尼波斯的|cFF2959D3|Hspell:1253811|h[魔化噴霧]|h|r。\n$bullet;中斷克絲提雅的|cFF2959D3|Hspell:1264095|h[鏡象]|h|r。', 67186), +(31281, 'zhTW', '治療者', '$bullet;克絲提雅會使用|cFF2959D3|Hspell:1230289|h[禁忌灌注]|h|r使尼波斯變為玩家的敵對目標。\n$bullet;躲開尼波斯的|cFF2959D3|Hspell:1253811|h[魔化噴霧]|h|r。\n$bullet;克絲提雅在|cFF2959D3|Hspell:1265412|h[異變]|h|r狀態下會對所有玩家造成大量傷害。', 67186), +(31280, 'zhTW', '傷害輸出', '$bullet;克絲提雅會使用|cFF2959D3|Hspell:1230289|h[禁忌灌注]|h|r使尼波斯變為玩家的敵對目標。\n$bullet;躲開尼波斯的|cFF2959D3|Hspell:1253811|h[魔化噴霧]|h|r。\n$bullet;中斷克絲提雅的|cFF2959D3|Hspell:1264095|h[鏡象]|h|r。', 67186), +(35862, 'zhTW', 'Section 18', '', 67186), +(35353, 'zhTW', '第17區', '|n\nBy speaking with Lindormi near The Timeways portal or at the end of a Keystone Dungeon, characters with a tank specialization can enable |cFF2959D3|Hspell:1295986|h[Lindormi\'s Glow]|h|r when |cFF2959D3|Hspell:1278156|h[Lindormi\'s Guidance]|h|r is inactive.', 67186), +(34751, 'zhTW', '第17區', '', 67186), +(34733, 'zhTW', '薩拉塔斯之詐', '薩拉塔斯會背叛玩家,撤回她的交易,並讓死亡扣除15秒剩餘時間。', 67186), +(34732, 'zhTW', '強悍', '非首領敵人生命力提高20%,造成的傷害提高20%。', 67186), +(34731, 'zhTW', '暴君', '首領的生命力提高25%。首領與其爪牙所造成的傷害提高15%。', 67186), +(34730, 'zhTW', '暴君和強悍', '這些詞綴會進一步強化傳奇鑰石地城中的敵人。其中一項會在傳奇等級7時啟動,其他則在傳奇等級10時啟動,並會每週輪替。', 67186), +(34727, 'zhTW', '薩拉塔斯的交易:吞噬', '', 67186), +(34725, 'zhTW', '薩拉塔斯的交易:虛無之縛', '', 67186), +(34722, 'zhTW', '薩拉塔斯的交易:星體', '', 67186), +(34720, 'zhTW', '傳奇等級6', '$bullet;移除|cFF2959D3|Hspell:1284818|h[林多米的指引]|h|r。\n\n使用坦克專精的角色可以在時間之道傳送門附近,或於鑰石地城結束時與林多米對話,以獲得|cFF2959D3|Hspell:1295986|h[林多米的光輝]|h|r,此效果將會繼續標出敵方部隊。', 67186), +(35809, 'zhTW', 'Section 158', '', 67186), +(35491, 'zhTW', '第69區', '', 67186), +(35490, 'zhTW', '第70區', '', 67186), +(35489, 'zhTW', '第76區', '', 67186), +(35488, 'zhTW', '第67區', '$[!15,16\n在英雄及更高難度下,電流刺激會釋放滅殺電流。$]', 67186), +(35477, 'zhTW', '第22區', '', 67186), +(35476, 'zhTW', '第31區', '', 67186), +(35475, 'zhTW', '第30區', '', 67186), +(35474, 'zhTW', '第29區', '', 67186), +(35473, 'zhTW', '第31區', '', 67186), +(35472, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。\n$[!16\n在傳奇難度下,黎明水晶有觸發聖光之終的風險。$]', 67186), +(35471, 'zhTW', '第22區', '', 67186), +(35470, 'zhTW', '第31區', '', 67186), +(35469, 'zhTW', '第30區', '', 67186), +(35468, 'zhTW', '第29區', '', 67186), +(35467, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。\n$[!15\n在英雄難度下,黎明水晶會爆發出路拉之淚。$]', 67186), +(35466, 'zhTW', '第22區', '', 67186), +(35465, 'zhTW', '第31區', '', 67186), +(35464, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。', 67186), +(35463, 'zhTW', '第22區', '', 67186), +(35462, 'zhTW', '第31區', '', 67186), +(35461, 'zhTW', '第30區', '', 67186), +(35460, 'zhTW', '第29區', '', 67186), +(35459, 'zhTW', '第31區', '', 67186), +(35458, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。\n$[!16\n在傳奇難度下,黎明水晶有觸發聖光之終的風險。$]', 67186), +(35457, 'zhTW', '第22區', '', 67186), +(35456, 'zhTW', '第31區', '', 67186), +(35455, 'zhTW', '第30區', '', 67186), +(35454, 'zhTW', '第29區', '', 67186), +(35453, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。\n$[!15\n在英雄難度下,黎明水晶會爆發出路拉之淚。$]', 67186), +(35452, 'zhTW', '第22區', '', 67186), +(35451, 'zhTW', '第31區', '', 67186), +(35450, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。', 67186), +(35449, 'zhTW', '第22區', '', 67186), +(35448, 'zhTW', '第31區', '', 67186), +(35447, 'zhTW', '第30區', '', 67186), +(35446, 'zhTW', '第29區', '', 67186), +(35445, 'zhTW', '第31區', '', 67186), +(35444, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。\n$[!16\n在傳奇難度下,黎明水晶有觸發聖光之終的風險。$]', 67186), +(35443, 'zhTW', '第22區', '', 67186), +(35442, 'zhTW', '第31區', '', 67186), +(35441, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。', 67186), +(35440, 'zhTW', '第108區', '', 67186), +(35439, 'zhTW', '第108區', '', 67186), +(35438, 'zhTW', '第107區', '', 67186), +(35435, 'zhTW', '第105區', '', 67186), +(35434, 'zhTW', '第104區', '', 67186), +(35418, 'zhTW', '第108區', '', 67186), +(35373, 'zhTW', '第30區', '', 67186), +(35371, 'zhTW', '第29區', '', 67186), +(35366, 'zhTW', '第31區', '', 67186), +(35361, 'zhTW', '第22區', '', 67186), +(35360, 'zhTW', '黎明水晶', '一塊可讓玩家攜帶的淨化那魯碎片。\n$[!15\n在英雄難度下,黎明水晶會爆發出路拉之淚。$]', 67186), +(35357, 'zhTW', '第106區', '', 67186), +(35344, 'zhTW', '第23區', '', 67186), +(35343, 'zhTW', '第22區', '', 67186), +(35342, 'zhTW', '暮色水晶', '一塊逐漸黯淡的那魯碎片,或許仍能被修復。', 67186), +(35341, 'zhTW', '第24區', '', 67186), +(35340, 'zhTW', '午夜水晶', '無可解救的黑暗那魯碎片。', 67186), +(35339, 'zhTW', '第19區', '', 67186), +(35338, 'zhTW', '第18區', '', 67186), +(35336, 'zhTW', '第16區', '', 67186), +(35328, 'zhTW', '第11區', '', 67186), +(35327, 'zhTW', '第10區', '', 67186), +(35326, 'zhTW', '第9區', '', 67186), +(35325, 'zhTW', '第8區', '$[!15\n在英雄難度下,音符的數量會隨著每段旋律增加。$]', 67186), +(35324, 'zhTW', '第11區', '', 67186), +(35319, 'zhTW', '第80區', '', 67186), +(35317, 'zhTW', '第69區', '', 67186), +(35316, 'zhTW', '第70區', '', 67186), +(35315, 'zhTW', '第76區', '', 67186), +(35314, 'zhTW', '第67區', '$[!15,16\n在英雄及更高難度下,電流刺激會釋放滅殺電流。$]', 67186), +(35311, 'zhTW', '第69區', '', 67186), +(35309, 'zhTW', '第74區', '', 67186), +(35274, 'zhTW', '第70區', '$[!16\n在傳奇難度下,宇宙裂變會達到臨界。$]', 67186), +(35273, 'zhTW', '第69區', '', 67186), +(35272, 'zhTW', '第67區', '', 67186), +(35131, 'zhTW', '第13區', '', 67186), +(35106, 'zhTW', '第67區', '', 67186), +(35068, 'zhTW', '第64區', '', 67186), +(35067, 'zhTW', '第63區', '', 67186), +(35041, 'zhTW', '第35區', '', 67186), +(35040, 'zhTW', '第51區', '', 67186), +(35038, 'zhTW', '第14區', '', 67186), +(35037, 'zhTW', '第14區', '', 67186), +(35036, 'zhTW', '中場:日月全蝕', '見證光芒的消散與破滅。', 67186), +(34847, 'zhTW', '第11區', '', 67186), +(34846, 'zhTW', '第10區', '', 67186), +(34845, 'zhTW', '第9區', '', 67186), +(34844, 'zhTW', '第8區', '', 67186), +(34474, 'zhTW', '第44區', '', 67186), +(34456, 'zhTW', '第45區', '', 67186), +(34450, 'zhTW', '第46區', '', 67186), +(34243, 'zhTW', '第14區', '', 67186), +(34242, 'zhTW', '第14區', '', 67186), +(34001, 'zhTW', '第38區', '', 67186), +(34000, 'zhTW', '第35區', '', 67186), +(33990, 'zhTW', '第32區', '', 67186), +(33989, 'zhTW', '第32區', '', 67186), +(33983, 'zhTW', '第23區', '', 67186), +(33982, 'zhTW', '第22區', '', 67186), +(33981, 'zhTW', '暮色水晶', '一塊逐漸黯淡的那魯碎片,或許仍能被修復。', 67186), +(33975, 'zhTW', '第25區', '', 67186), +(33924, 'zhTW', '第24區', '', 67186), +(33742, 'zhTW', '午夜水晶', '無可解救的黑暗那魯碎片。', 67186), +(33741, 'zhTW', '第19區', '', 67186), +(33740, 'zhTW', '第15區', '', 67186), +(33739, 'zhTW', '第18區', '', 67186), +(33738, 'zhTW', '終結矩陣', '', 67186), +(33737, 'zhTW', '第16區', '', 67186), +(33640, 'zhTW', '第12區', '', 67186), +(33638, 'zhTW', '階段二:黑暗反應爐', '深入荒蕪的動力源。', 67186); + +UPDATE `journal_encounter_section_locale` SET `Title_lang`='第157區', `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `ID`=35537 AND `locale`='zhTW'); +UPDATE `journal_encounter_section_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (34729,35487,35486,35485,35484,35483,35482,35481,35480,35479,35478,35370,35368,35367,35337,35312,35132,35070,35069,34902,34901,34900,34555,34498,34497,34496,34428,34426,34424,34423,34422,33639,33637,33635,33634)); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `ID`=659 AND `locale`='zhTW'); +INSERT INTO `mail_template_locale` (`ID`, `locale`, `Body_lang`, `VerifiedBuild`) VALUES +(659, 'zhTW', '你好,侍僧!\n\n見證發生在這片地域的奇蹟,光榮豐足滿溢!豐足湧現、湧動,拒絕所有阻礙!\n\n你為我的犧牲奉獻,使你獲得小小的恩惠。這次,是以純粹豐足的形式!\n\n請注意,虔敬的侍僧:某些獻禮,例如融合活力,現在將會出現在其他供應商之間。只要你冒險經過祖阿曼深海附近,或許就會遇見他們。\n\n祝你收穫滿滿\n\n-『豐足羅亞』敦敦', 67186); + +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `ID`=2907 AND `locale`='zhTW'); +INSERT INTO `map_locale` (`ID`, `locale`, `MapName_lang`, `MapDescription0_lang`, `MapDescription1_lang`, `PvpShortDescription_lang`, `PvpLongDescription_lang`, `VerifiedBuild`) VALUES +(2907, 'zhTW', '12.0 - Silvermoon City - Campaign Finale Scenario', '', '', '', '', 67186); + +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `ID`=402 AND `locale`='zhTW'); +INSERT INTO `map_challenge_mode_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(402, 'zhTW', '阿爾蓋薩學院', 67186); + +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (3010,3009,3008,3007,3006,3005,2535)); +INSERT INTO `mount_locale` (`ID`, `locale`, `Name_lang`, `SourceText_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(3010, 'zhTW', '高性能伐木坦克', '|cFFFFD200商人:|r林多米|n', '', 67186), +(3009, 'zhTW', '投機伐木坦克', '|cFFFFD200商人:|r林多米|n', '', 67186), +(3008, 'zhTW', '綠益伐木坦克', '|cFFFFD200商人:|r林多米|n', '', 67186), +(3007, 'zhTW', '藍籌伐木坦克', '|cFFFFD200商人:|r林多米|n', '', 67186), +(3006, 'zhTW', '紫晶機甲', '|cFFFFD200商人:|r林多米|n', '', 67186), +(3005, 'zhTW', '天藍死亡行者', '|cFFFFD200商人:|r林多米|n', '', 67186), +(2535, 'zhTW', '虛無之痕山貓', '|cFFFFD200掉落:|r被沒收的教徒背包', '馴服山貓是阿拉希人多年來不停磨練的技藝。儘管夜暮教徒致力於實現他們的理想,但他們仍然會將這套傳統傳承下去。', 67186); + +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `ID`=918 AND `locale`='zhTW'); +INSERT INTO `perks_activity_locale` (`ID`, `locale`, `ActivityName_lang`, `Description_lang`, `VerifiedBuild`) VALUES +(918, 'zhTW', '與深淵釣手捕魚', '在祖阿曼深海的岸邊與深海潛水者捷朱交談,來開始捕魚。', 67186); + +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (150305,158259,158261,156069,151169,151168,151167,151166,151165,151161,151160,151159,151158,151157,151155,155979,157695,157666,157603,154160,154159,154158,154157,154156,154155,154154,154153,154152,154151,157668,155203,155192,155185,154642,156525,156524,151196,157003,157002,156957,156933,151162,156816,154472,151164,151163,142975,156592,156591,156536,156537)); +INSERT INTO `player_condition_locale` (`ID`, `locale`, `FailureDescription_lang`, `VerifiedBuild`) VALUES +(150305, 'zhTW', '', 67186), +(158259, 'zhTW', '', 67186), +(158261, 'zhTW', '', 67186), +(156069, 'zhTW', '需要成就:|n深淵釣手:四海釣手', 67186), +(151169, 'zhTW', '需要成就:|n深淵釣手:深淵塑像', 67186), +(151168, 'zhTW', '需要成就:|n深淵釣手:三重絲網', 67186), +(151167, 'zhTW', '需要成就:|n深淵釣手:淺灘網子', 67186), +(151166, 'zhTW', '需要成就「深淵釣手:空心魚叉槍」', 67186), +(151165, 'zhTW', '需要成就「深淵釣手:重型魚叉槍」', 67186), +(151161, 'zhTW', '需要成就:|n深淵釣手:帕克深溝之鰭', 67186), +(151160, 'zhTW', '需要成就:|n深淵釣手:深海油汙', 67186), +(151159, 'zhTW', '需要成就:|n深淵釣手:強化接頭', 67186), +(151158, 'zhTW', '需要成就:|n深淵釣手:納羅拉克的呼吸瓶', 67186), +(151157, 'zhTW', '需要成就:|n深淵釣手:深淵試煉氧氣瓶', 67186), +(151155, 'zhTW', '需要成就:|n深淵釣手:深海潛水者用過的氧氣瓶', 67186), +(155979, 'zhTW', '', 67186), +(157695, 'zhTW', '僅限在級別11探究中開放。', 67186), +(157666, 'zhTW', '', 67186), +(157603, 'zhTW', '推動第1賽季探究旅程的進度來解鎖。', 67186), +(154160, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154159, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154158, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154157, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154156, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154155, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154154, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154153, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154152, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(154151, 'zhTW', '你已收集到此寶箱內的所有塑形外觀。', 67186), +(157668, 'zhTW', '你沒有時間迷失鞍具。無法購買此物品。', 67186), +(155203, 'zhTW', '', 67186), +(155192, 'zhTW', '', 67186), +(155185, 'zhTW', '', 67186), +(154642, 'zhTW', '', 67186), +(156525, 'zhTW', '', 67186), +(156524, 'zhTW', '', 67186), +(151196, 'zhTW', '', 67186), +(157003, 'zhTW', '', 67186), +(157002, 'zhTW', '', 67186), +(156957, 'zhTW', '', 67186), +(156933, 'zhTW', '', 67186), +(151162, 'zhTW', '需要成就:|n深淵釣手:芬諾餌食', 67186), +(156816, 'zhTW', '', 67186), +(154472, 'zhTW', '需要成就:|n深淵釣手:高壓望遠鏡', 67186), +(151164, 'zhTW', '需要成就:|n深淵釣手:幽暗漂掠魚肉', 67186), +(151163, 'zhTW', '需要成就:|n深淵釣手:鯰鰭魚誘餌', 67186), +(142975, 'zhTW', '你現在無法獲得10個神話晨曦紋章。', 67186), +(156592, 'zhTW', '', 67186), +(156591, 'zhTW', '', 67186), +(156536, 'zhTW', '', 67186), +(156537, 'zhTW', '', 67186); + +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (3181,3389,3308,3291,3280,3251,3245,3234,3233,3229,3209,3206,3180,3174)); +INSERT INTO `scenario_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(3181, 'zhTW', '深淵釣手', 67186), +(3389, 'zhTW', '水晶塔猛襲:辛提拉斯瀑布', 67186), +(3308, 'zhTW', '虛無裂隙:日落海岸', 67186), +(3291, 'zhTW', '力量真空', 67186), +(3280, 'zhTW', '失控的甬道之門', 67186), +(3251, 'zhTW', '虛無儀式:灰熊', 67186), +(3245, 'zhTW', '麻煩頻發', 67186), +(3234, 'zhTW', '遭褻瀆的莎草聖物', 67186), +(3233, 'zhTW', '趁人之危', 67186), +(3229, 'zhTW', '逐虛者之島', 67186), +(3209, 'zhTW', '[DNT] Example Scenario', 67186), +(3206, 'zhTW', '範本事件', 67186), +(3180, 'zhTW', '強化儀式', 67186), +(3174, 'zhTW', '虛無入侵', 67186); + +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (16092,16090,16088,16441,16376)); +INSERT INTO `scenario_step_locale` (`ID`, `locale`, `Description_lang`, `Title_lang`, `VerifiedBuild`) VALUES +(16092, 'zhTW', '捕捉水生動物,並取回祖阿曼地底的寶藏。', '深淵釣手', 67186), +(16090, 'zhTW', '', '追尋階段', 67186), +(16088, 'zhTW', '', '躲藏階段', 67186), +(16441, 'zhTW', '從納迦身上和虹吸管收集秘法火花,然後將火花送到水晶塔。', '為水晶塔充能', 67186), +(16376, 'zhTW', '擊敗多曼納爾指揮官。', '打倒鐮衛', 67186); + +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (58556,58555,58554,58553,58545,58544)); +INSERT INTO `skill_line_ability_locale` (`ID`, `locale`, `AbilityVerb_lang`, `AbilityAllVerb_lang`, `VerifiedBuild`) VALUES +(58556, 'zhTW', '', '', 67186), +(58555, 'zhTW', '', '', 67186), +(58554, 'zhTW', '', '', 67186), +(58553, 'zhTW', '', '', 67186), +(58545, 'zhTW', '', '', 67186), +(58544, 'zhTW', '', '', 67186); + +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (7526,8555,8554,5001,4216,4215,3748,2714,1704,463,43)); +INSERT INTO `spell_item_enchantment_locale` (`ID`, `locale`, `Name_lang`, `HordeName_lang`, `VerifiedBuild`) VALUES +(7526, 'zhTW', '阿爾加織絲釣線', '', 67186), +(8555, 'zhTW', '+$k1點主要屬性和+$k2點護甲值', '', 67186), +(8554, 'zhTW', '+$k1點主要屬性和+$k2點護甲值', '', 67186), +(5001, 'zhTW', '鬼鐵盾刺', '', 67186), +(4216, 'zhTW', '黃鐵盾刺', '', 67186), +(4215, 'zhTW', '源質盾刺', '', 67186), +(3748, 'zhTW', '泰坦鋼刺', '', 67186), +(2714, 'zhTW', '魔鋼刺', '', 67186), +(1704, 'zhTW', '瑟銀盾刺', '', 67186), +(463, 'zhTW', '秘銀盾刺', '', 67186), +(43, 'zhTW', '鐵盾刺', '', 67186); + +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (1298568,1253377,1270444,441587,441429,1298446,1223323,1293502,1270491,1241077,458128,363916,353319,125174,122470,23920,1237942,1235216,1225245,1295986,1278156,1298074,390264,390260,1297413,149981,1289789,1283168,1282778,1264876,1255629,447444,210824,1280123,1296760,1296759,1296758,1296756,1296734,1296731,466930,1291739,1281946,1270634,1270085,1270079,1258411,1258410,1258336,1257809,1257729,1257728,1257716,1257505,1256189,1255966,1253337,1253336,1253194,1253193,1253185,1253064,1252431,1241032,1241023,1235076,1235075,1235072,1235067,1235066,1235065,1235037,1233865,1228865,1225598,1225322,1225281,1225277,1225273,1225272,444803,1250759,1276894,1296448,472053,1296214,1296205,1296169,1296168,1291767,1296406,1295959,1295957,1295932,1295927,1265971,444769,1256191,1272821,1244331,441845,243435,221562,205630,198158,108194,1291860,1291859,1291858,1291857,1291856,1291855,1291854,1291853,1291852,1291851,1291850,1291849,1291848,1291847,1291846,1291845,1291844,1291843,1291842,1291841,1291840,1291839,1291838,1291837,1291831,1291828,1291827,1291826,1291825,1291824,1291822,1291791,1290929,1290926,1290925,1289221,1286537,1286536,1286535,1282100,1282018,1277461,1269922,1269921,1269920,1269919,1269918,1269917,1269916,1232065,1295592,1244341,1262378,1262377,1262376,1262365,1262364,1262359,1248931,1248927,1277796,1256862,1256861,1256860,1256010,1295508,1295497,1295486,464291,1243616,1243615,1243613,1243605,1243602,1243588,1243586,1257701,444088,1295319,1295191,1295278,1295243,1295237,1226037,442615,1295194,1241218,1294288,1286830,1236092,1293613,1286820,1286703,1253159,1277169,1243683,190784,1292124,1266413,1244345,1231327,436358,1292071,1294776,1273357,1294727,1294726,1294720,1294703,1294669,1294633,1294563,1277795,1272179,1269655,1269654,1269650,1269641,1269640,1264545,1259647,1258362,1256009,1251813,1294779,1294759,1294752)); +INSERT INTO `spell_name_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(1298568, 'zhTW', '昏迷', 67186), +(1253377, 'zhTW', '隕石升起', 67186), +(1270444, 'zhTW', '無縛憤怒', 67186), +(441587, 'zhTW', '濃煙遮掩', 67186), +(441429, 'zhTW', '濃煙遮掩', 67186), +(1298446, 'zhTW', '不破連結', 67186), +(1223323, 'zhTW', '不破連結', 67186), +(1293502, 'zhTW', '[DNT] Fused Vitality', 67186), +(1270491, 'zhTW', '穢邪獻祈', 67186), +(1241077, 'zhTW', '膿瘡鐮刀', 67186), +(458128, 'zhTW', '膿瘡鐮刀', 67186), +(363916, 'zhTW', '黑曜鱗片', 67186), +(353319, 'zhTW', '和平編織者', 67186), +(125174, 'zhTW', '乾坤挪移', 67186), +(122470, 'zhTW', '乾坤挪移', 67186), +(23920, 'zhTW', '法術反射', 67186), +(1237942, 'zhTW', '餌食', 67186), +(1235216, 'zhTW', '至暗之夜感知', 67186), +(1225245, 'zhTW', '辛多雷魚群', 67186), +(1295986, 'zhTW', '林多米的光輝', 67186), +(1278156, 'zhTW', '林多米的指引', 67186), +(1298074, 'zhTW', '[DNT] Void Assaults - System - Major Attack Eligible', 67186), +(390264, 'zhTW', '', 67186), +(390260, 'zhTW', '', 67186), +(1297413, 'zhTW', '嘲諷骷髏', 67186), +(149981, 'zhTW', '嘲諷骷髏', 67186), +(1289789, 'zhTW', '戰鬥人形態', 67186), +(1283168, 'zhTW', '合成卓越虛無裂片', 67186), +(1282778, 'zhTW', '卓越虛無之核', 67186), +(1264876, 'zhTW', 'Warrior Arms 12.0 Class Set 4pc', 67186), +(1255629, 'zhTW', '鬼靈殘渣', 67186), +(447444, 'zhTW', '混亂裂隙', 67186), +(210824, 'zhTW', '魔導師之觸', 67186), +(1280123, 'zhTW', '[DNT] Talking Head: Scenario C2 S3', 67186), +(1296760, 'zhTW', '投機伐木坦克', 67186), +(1296759, 'zhTW', '高性能伐木坦克', 67186), +(1296758, 'zhTW', '綠益伐木坦克', 67186), +(1296756, 'zhTW', '藍籌伐木坦克', 67186), +(1296734, 'zhTW', '紫晶機甲', 67186), +(1296731, 'zhTW', '天藍死亡行者', 67186), +(466930, 'zhTW', '黑蝕箭', 67186), +(1291739, 'zhTW', '惡意恩澤', 67186), +(1281946, 'zhTW', '深淵釣手', 67186), +(1270634, 'zhTW', '滿溢分流裝置', 67186), +(1270085, 'zhTW', '恐怖結界', 67186), +(1270079, 'zhTW', '恐怖結界', 67186), +(1258411, 'zhTW', '克萊娜的卡德加模仿', 67186), +(1258410, 'zhTW', '克萊娜的卡德加模仿', 67186), +(1258336, 'zhTW', '最後警告', 67186), +(1257809, 'zhTW', '克萊娜的卡德加模仿', 67186), +(1257729, 'zhTW', '復生亡骸', 67186), +(1257728, 'zhTW', '復生亡骸', 67186), +(1257716, 'zhTW', '復生亡骸', 67186), +(1257505, 'zhTW', '恐怖結界', 67186), +(1256189, 'zhTW', '深淵釣手', 67186), +(1255966, 'zhTW', '再生', 67186), +(1253337, 'zhTW', '克萊娜的卡德加模仿', 67186), +(1253336, 'zhTW', '克萊娜的卡德加模仿', 67186), +(1253194, 'zhTW', '精明手段', 67186), +(1253193, 'zhTW', '精明手段', 67186), +(1253185, 'zhTW', '精明手段', 67186), +(1253064, 'zhTW', '深淵釣手', 67186), +(1252431, 'zhTW', '閃電轟擊(釋放)', 67186), +(1241032, 'zhTW', '最後警告', 67186), +(1241023, 'zhTW', '最後警告', 67186), +(1235076, 'zhTW', '精明手段', 67186), +(1235075, 'zhTW', '精明手段', 67186), +(1235072, 'zhTW', '精明手段', 67186), +(1235067, 'zhTW', '精明手段', 67186), +(1235066, 'zhTW', '精明手段', 67186), +(1235065, 'zhTW', '精明手段', 67186), +(1235037, 'zhTW', '精明手段', 67186), +(1233865, 'zhTW', '空無頭冠', 67186), +(1228865, 'zhTW', '虛無之痕山貓', 67186), +(1225598, 'zhTW', '深淵釣手', 67186), +(1225322, 'zhTW', '永歌森林', 67186), +(1225281, 'zhTW', '柔弱的亮鰭魚', 67186), +(1225277, 'zhTW', '復育的歌唱魚', 67186), +(1225273, 'zhTW', '不祥的章魚', 67186), +(1225272, 'zhTW', '閃耀棘魚', 67186), +(444803, 'zhTW', '甦醒的腔棘魚', 67186), +(1250759, 'zhTW', '黑暗微粒', 67186), +(1276894, 'zhTW', '轉化基礎虛無之核', 67186), +(1296448, 'zhTW', '魯莽躍擊', 67186), +(472053, 'zhTW', '魯莽躍擊', 67186), +(1296214, 'zhTW', '銀河虛無矩陣', 67186), +(1296205, 'zhTW', '三重複製', 67186), +(1296169, 'zhTW', '風暴雷雲', 67186), +(1296168, 'zhTW', '風暴雷雲', 67186), +(1291767, 'zhTW', '隕石火雨', 67186), +(1296406, 'zhTW', '[DNT]Cancel Cast Down Targeting Aura', 67186), +(1295959, 'zhTW', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295957, 'zhTW', '[DNT] Lindormi\'s Glow - Enable', 67186), +(1295932, 'zhTW', '[DNT] Lindormi\'s Glow - Disable', 67186), +(1295927, 'zhTW', '林多米的光輝', 67186), +(1265971, 'zhTW', '穢邪武裝', 67186), +(444769, 'zhTW', '死亡將至', 67186), +(1256191, 'zhTW', '結束潛水', 67186), +(1272821, 'zhTW', '長城智慧', 67186), +(1244331, 'zhTW', '永恆之花', 67186), +(441845, 'zhTW', '直擊心臟', 67186), +(243435, 'zhTW', '石形絕釀', 67186), +(221562, 'zhTW', '窒息術', 67186), +(205630, 'zhTW', '伊利丹之握', 67186), +(198158, 'zhTW', '群體隱形術', 67186), +(108194, 'zhTW', '窒息術', 67186), +(1291860, 'zhTW', '食物和飲料', 67186), +(1291859, 'zhTW', '食物和飲料', 67186), +(1291858, 'zhTW', '食物和飲料', 67186), +(1291857, 'zhTW', '食物和飲料', 67186), +(1291856, 'zhTW', '食物和飲料', 67186), +(1291855, 'zhTW', '食物和飲料', 67186), +(1291854, 'zhTW', '食物和飲料', 67186), +(1291853, 'zhTW', '食物和飲料', 67186), +(1291852, 'zhTW', '食物和飲料', 67186), +(1291851, 'zhTW', '食物和飲料', 67186), +(1291850, 'zhTW', '食物和飲料', 67186), +(1291849, 'zhTW', '食物和飲料', 67186), +(1291848, 'zhTW', '食物', 67186), +(1291847, 'zhTW', '食物', 67186), +(1291846, 'zhTW', '食物', 67186), +(1291845, 'zhTW', '食物', 67186), +(1291844, 'zhTW', '食物', 67186), +(1291843, 'zhTW', '食物', 67186), +(1291842, 'zhTW', '食物', 67186), +(1291841, 'zhTW', '食物', 67186), +(1291840, 'zhTW', '食物', 67186), +(1291839, 'zhTW', '食物', 67186), +(1291838, 'zhTW', '食物', 67186), +(1291837, 'zhTW', '食物', 67186), +(1291831, 'zhTW', '飲料', 67186), +(1291828, 'zhTW', '食物', 67186), +(1291827, 'zhTW', '食物', 67186), +(1291826, 'zhTW', '食物', 67186), +(1291825, 'zhTW', '食物', 67186), +(1291824, 'zhTW', '食物', 67186), +(1291822, 'zhTW', '食物', 67186), +(1291791, 'zhTW', '飲料', 67186), +(1290929, 'zhTW', '飲料', 67186), +(1290926, 'zhTW', '食物', 67186), +(1290925, 'zhTW', '食物', 67186), +(1289221, 'zhTW', '聖光守護者的獎勵', 67186), +(1286537, 'zhTW', '食物和飲料', 67186), +(1286536, 'zhTW', '飲料', 67186), +(1286535, 'zhTW', '食物', 67186), +(1282100, 'zhTW', '召喚長椅', 67186), +(1282018, 'zhTW', '召喚長椅', 67186), +(1277461, 'zhTW', '飲料', 67186), +(1269922, 'zhTW', '食物', 67186), +(1269921, 'zhTW', '食物', 67186), +(1269920, 'zhTW', '食物', 67186), +(1269919, 'zhTW', '飲料', 67186), +(1269918, 'zhTW', '飲料', 67186), +(1269917, 'zhTW', '食物和飲料', 67186), +(1269916, 'zhTW', '食物和飲料', 67186), +(1232065, 'zhTW', '食物和飲料', 67186), +(1295592, 'zhTW', '[DNT] Clear Voidspire', 67186), +(1244341, 'zhTW', '永恆之花', 67186), +(1262378, 'zhTW', '黯黑制伏之冠', 67186), +(1262377, 'zhTW', '黯黑制伏之冠', 67186), +(1262376, 'zhTW', '黯黑制伏之冠', 67186), +(1262365, 'zhTW', '神聖死亡命令', 67186), +(1262364, 'zhTW', '神聖死亡命令', 67186), +(1262359, 'zhTW', '神聖死亡命令', 67186), +(1248931, 'zhTW', '黯黑制伏之冠', 67186), +(1248927, 'zhTW', '神聖死亡命令', 67186), +(1277796, 'zhTW', '消除魔法', 67186), +(1256862, 'zhTW', '反魔法箭矢', 67186), +(1256861, 'zhTW', '驅散之躍', 67186), +(1256860, 'zhTW', '驅散法器', 67186), +(1256010, 'zhTW', '抑制力場', 67186), +(1295508, 'zhTW', '學習', 67186), +(1295497, 'zhTW', '奈幽蟲族', 67186), +(1295486, 'zhTW', '[DNT]Dark Prayer Fixate Cancel', 67186), +(464291, 'zhTW', '黑暗禱言', 67186), +(1243616, 'zhTW', '不穩定的虛無精華', 67186), +(1243615, 'zhTW', '不穩定的虛無精華', 67186), +(1243613, 'zhTW', '不穩定的虛無精華', 67186), +(1243605, 'zhTW', '不穩定的虛無精華', 67186), +(1243602, 'zhTW', '不穩定的虛無精華', 67186), +(1243588, 'zhTW', '不穩定的虛無精華', 67186), +(1243586, 'zhTW', '不穩定的虛無精華', 67186), +(1257701, 'zhTW', '灼燒撕裂', 67186), +(444088, 'zhTW', '吞噬火焰', 67186), +(1295319, 'zhTW', '[DNT]Pull-In Orb Immunity Aura', 67186), +(1295191, 'zhTW', '失諧', 67186), +(1295278, 'zhTW', '猛擊狂亂目標', 67186), +(1295243, 'zhTW', '虛空爆發', 67186), +(1295237, 'zhTW', '虛空爆發', 67186), +(1226037, 'zhTW', '切肉', 67186), +(442615, 'zhTW', '切肉', 67186), +(1295194, 'zhTW', '[DNT] Cancel Aura', 67186), +(1241218, 'zhTW', '[DNT] Vision of Self', 67186), +(1294288, 'zhTW', '暗影強化', 67186), +(1286830, 'zhTW', '指示釣魚泡泡 - 消除', 67186), +(1236092, 'zhTW', '附魔工具 - 辛多雷純熟', 67186), +(1293613, 'zhTW', '深淵釣手釣魚', 67186), +(1286820, 'zhTW', '深淵釣手釣魚', 67186), +(1286703, 'zhTW', '深淵釣手釣魚', 67186), +(1253159, 'zhTW', '[DNT] Shark Attack - Vehicle Cover', 67186), +(1277169, 'zhTW', '打開儲物箱', 67186), +(1243683, 'zhTW', '一組光榮的神話晨曦紋章', 67186), +(190784, 'zhTW', '神性戰馬', 67186), +(1292124, 'zhTW', '[DNT] Material Creation - Health', 67186), +(1266413, 'zhTW', '虛無燃焰', 67186), +(1244345, 'zhTW', '聖光燃焰', 67186), +(1231327, 'zhTW', '吞噬虛無', 67186), +(436358, 'zhTW', '毀壞', 67186), +(1292071, 'zhTW', '方陣', 67186), +(1294776, 'zhTW', '閃爍太陽微粒', 67186), +(1273357, 'zhTW', '閃爍太陽微粒', 67186), +(1294727, 'zhTW', '充分進食', 67186), +(1294726, 'zhTW', '烤棉花糖', 67186), +(1294720, 'zhTW', '射擊', 67186), +(1294703, 'zhTW', '射擊', 67186), +(1294669, 'zhTW', '衝鋒', 67186), +(1294633, 'zhTW', '吐火', 67186), +(1294563, 'zhTW', '護盾瓦解', 67186), +(1277795, 'zhTW', '消除魔法', 67186), +(1272179, 'zhTW', '怪奇魔法脈衝 - 未購買', 67186), +(1269655, 'zhTW', '潛行', 67186), +(1269654, 'zhTW', '發條哨兵', 67186), +(1269650, 'zhTW', '驅散之躍', 67186), +(1269641, 'zhTW', '裂隙穿行', 67186), +(1269640, 'zhTW', '抑制力場', 67186), +(1264545, 'zhTW', '調換', 67186), +(1259647, 'zhTW', 'W-47CH看門狗', 67186), +(1258362, 'zhTW', '陷阱:鳴禽', 67186), +(1256009, 'zhTW', '消除魔法', 67186), +(1251813, 'zhTW', '滯留驚懼', 67186), +(1294779, 'zhTW', 'DNT', 67186), +(1294759, 'zhTW', 'DNT', 67186), +(1294752, 'zhTW', '恐怖交響曲', 67186); + +UPDATE `spell_name_locale` SET `VerifiedBuild`=67186 WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (1276487,406157,1284994)); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (37074,37073,37072,37065,37064,37063,37050,37049,37048,36911,35166,35165,35164)); +INSERT INTO `trait_currency_source_locale` (`ID`, `locale`, `Requirement_lang`, `VerifiedBuild`) VALUES +(37074, 'zhTW', '', 67186), +(37073, 'zhTW', '', 67186), +(37072, 'zhTW', '', 67186), +(37065, 'zhTW', '', 67186), +(37064, 'zhTW', '', 67186), +(37063, 'zhTW', '', 67186), +(37050, 'zhTW', '', 67186), +(37049, 'zhTW', '', 67186), +(37048, 'zhTW', '', 67186), +(36911, 'zhTW', '', 67186), +(35166, 'zhTW', '', 67186), +(35165, 'zhTW', '', 67186), +(35164, 'zhTW', '', 67186); + +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (137688,137685,137681,133669)); +INSERT INTO `trait_definition_locale` (`ID`, `locale`, `OverrideName_lang`, `OverrideSubtext_lang`, `OverrideDescription_lang`, `VerifiedBuild`) VALUES +(137688, 'zhTW', '精心複數製造', '', '強化你的附魔矩陣,提高你製作幻象或消耗品時,產出額外物品的機率。此外,在此專精每投入1點,便獲得+$ev1點$en1。', 67186), +(137685, 'zhTW', '', '', '製作消耗品時,複數製造會給予最多+$ev1%額外商品。', 67186), +(137681, 'zhTW', '', '', '製作消耗品時,複數製造會給予最多+$ev1%額外商品。', 67186), +(133669, 'zhTW', '', '', '製作合金時,獲得+$ev1點$en1。|n|n解鎖在製作合金時使用最後加工材料的能力。', 67186); + +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `ID`=720 AND `locale`='zhTW'); +INSERT INTO `trait_tree_locale` (`ID`, `locale`, `TitleText_lang`, `VerifiedBuild`) VALUES +(720, 'zhTW', '', 67186); + +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (4271,5646)); +INSERT INTO `transmog_set_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(4271, 'zhTW', '森林居民花園裝束', 67186), +(5646, 'zhTW', '深海潛水者法衣', 67186); + +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `locale`='zhTW' AND `ID` IN (7615,7698,7693)); +INSERT INTO `vignette_locale` (`ID`, `locale`, `Name_lang`, `VerifiedBuild`) VALUES +(7615, 'zhTW', '學徒克斯班', 67186), +(7698, 'zhTW', '裝迷藏競賽商人', 67186), +(7693, 'zhTW', '箱子', 67186); + + +DELETE FROM `hotfix_blob` WHERE (`TableHash`=1789921167 AND `RecordId`=17247 AND `locale`='zhTW') OR (`TableHash`=1789921167 AND `RecordId`=16918 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=623425 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=623424 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=759052 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=759048 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=549526 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=549525 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=549524 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1298568 AND `locale`='zhTW') OR (`TableHash`=2534422486 AND `RecordId`=3918 AND `locale`='zhTW') OR (`TableHash`=2534422486 AND `RecordId`=3917 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253377 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1270444 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=441587 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=441429 AND `locale`='zhTW') OR (`TableHash`=3893700160 AND `RecordId`=445 AND `locale`='zhTW') OR (`TableHash`=3893700160 AND `RecordId`=443 AND `locale`='zhTW') OR (`TableHash`=3893700160 AND `RecordId`=442 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1298446 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1223323 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1818 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1818 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=198696 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108729 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108728 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108727 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108726 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108722 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108677 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=108676 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=107291 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=107245 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=107200 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=106540 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=106538 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=106493 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=91851 AND `locale`='zhTW') OR (`TableHash`=1789921167 AND `RecordId`=17246 AND `locale`='zhTW') OR (`TableHash`=3249862272 AND `RecordId`=94988 AND `locale`='zhTW') OR (`TableHash`=3249862272 AND `RecordId`=27342 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1293502 AND `locale`='zhTW') OR (`TableHash`=3037505077 AND `RecordId`=245345 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1270491 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1241077 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=458128 AND `locale`='zhTW') OR (`TableHash`=3899321669 AND `RecordId`=5919 AND `locale`='zhTW') OR (`TableHash`=3899321669 AND `RecordId`=5918 AND `locale`='zhTW') OR (`TableHash`=3899321669 AND `RecordId`=5917 AND `locale`='zhTW') OR (`TableHash`=3899321669 AND `RecordId`=5916 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=363916 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=589353 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=353319 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=125174 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=122470 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=23920 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=190484 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171483 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171482 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171418 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171417 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171416 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171415 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171414 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171413 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171412 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171348 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171284 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=171169 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=168967 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133730 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133729 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133728 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133727 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133679 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133631 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133583 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=133441 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=132900 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=132769 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=132721 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=132299 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=131072 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=130897 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=130803 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=130470 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=92736 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=92735 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=92734 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=84355 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=84354 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=84352 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=84351 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=63262 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=63185 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=63146 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=63107 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=33527 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=26230 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18823 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18822 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18820 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18818 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18812 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18809 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18808 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18807 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18805 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18804 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18803 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18802 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18801 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18800 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18798 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18797 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18796 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=18794 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1237942 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235216 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225245 AND `locale`='zhTW') OR (`TableHash`=778162198 AND `RecordId`=397 AND `locale`='zhTW') OR (`TableHash`=3037505077 AND `RecordId`=243343 AND `locale`='zhTW') OR (`TableHash`=3037505077 AND `RecordId`=243302 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95549 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264434 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264429 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264428 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264427 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264426 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264425 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264424 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1264423 AND `locale`='zhTW') OR (`TableHash`=336222293 AND `RecordId`=22633 AND `locale`='zhTW') OR (`TableHash`=978178762 AND `RecordId`=405 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=96388 AND `locale`='zhTW') OR (`TableHash`=1400098795 AND `RecordId`=174 AND `locale`='zhTW') OR (`TableHash`=1400098795 AND `RecordId`=74 AND `locale`='zhTW') OR (`TableHash`=3745449290 AND `RecordId`=8584 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1817 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1817 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1816 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1816 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1815 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1815 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1814 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1814 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1813 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1813 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1812 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1812 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1811 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1811 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1810 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1810 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1809 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1809 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1808 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1808 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1807 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1807 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1806 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1806 AND `locale`='zhTW') OR (`TableHash`=3468628616 AND `RecordId`=1805 AND `locale`='zhTW') OR (`TableHash`=1710383997 AND `RecordId`=1805 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=1749 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=42450 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=46738 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=87407 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=49404 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=154082 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=8259 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=54105 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=4720 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=156662 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=44546 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=44545 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=44544 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=44543 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=81580 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=54691 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=54690 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=54689 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=54688 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=54687 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295986 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1278156 AND `locale`='zhTW') OR (`TableHash`=368401261 AND `RecordId`=7367 AND `locale`='zhTW') OR (`TableHash`=3388959798 AND `RecordId`=17707 AND `locale`='zhTW') OR (`TableHash`=1691321978 AND `RecordId`=1362 AND `locale`='zhTW') OR (`TableHash`=3359787322 AND `RecordId`=31154 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24475 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24474 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24473 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24472 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24471 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1298074 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42450 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42449 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42448 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42447 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42446 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42445 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=40690 AND `locale`='zhTW') OR (`TableHash`=2014779773 AND `RecordId`=207 AND `locale`='zhTW') OR (`TableHash`=2014779773 AND `RecordId`=206 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=390264 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=390260 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95304 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95290 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95279 AND `locale`='zhTW') OR (`TableHash`=3653642729 AND `RecordId`=377 AND `locale`='zhTW') OR (`TableHash`=1673391669 AND `RecordId`=145 AND `locale`='zhTW') OR (`TableHash`=2791084701 AND `RecordId`=142 AND `locale`='zhTW') OR (`TableHash`=2533050585 AND `RecordId`=1529 AND `locale`='zhTW') OR (`TableHash`=2533050585 AND `RecordId`=1528 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5037 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5036 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5035 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5034 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5033 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5032 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5031 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5030 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5029 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5028 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5026 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5025 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5024 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5023 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5022 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5021 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5020 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5019 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5018 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5017 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5016 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5015 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5014 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5013 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5012 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5011 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5010 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5009 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5008 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5007 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5006 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5005 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5004 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5003 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5002 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5001 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5000 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4999 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4998 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4997 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4996 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4995 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4993 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=4992 AND `locale`='zhTW') OR (`TableHash`=21457424 AND `RecordId`=1552 AND `locale`='zhTW') OR (`TableHash`=21457424 AND `RecordId`=1551 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=340484 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=667023 AND `locale`='zhTW') OR (`TableHash`=2948698321 AND `RecordId`=8207 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24817 AND `locale`='zhTW') OR (`TableHash`=671580526 AND `RecordId`=155 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1297413 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=149981 AND `locale`='zhTW') OR (`TableHash`=3330775162 AND `RecordId`=1897 AND `locale`='zhTW') OR (`TableHash`=3330775162 AND `RecordId`=1896 AND `locale`='zhTW') OR (`TableHash`=3330775162 AND `RecordId`=1895 AND `locale`='zhTW') OR (`TableHash`=3330775162 AND `RecordId`=1894 AND `locale`='zhTW') OR (`TableHash`=3330775162 AND `RecordId`=1893 AND `locale`='zhTW') OR (`TableHash`=3330775162 AND `RecordId`=1892 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=615947 AND `locale`='zhTW') OR (`TableHash`=2533050585 AND `RecordId`=1552 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5104 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5103 AND `locale`='zhTW') OR (`TableHash`=2930840720 AND `RecordId`=5102 AND `locale`='zhTW') OR (`TableHash`=21457424 AND `RecordId`=1575 AND `locale`='zhTW') OR (`TableHash`=3072882582 AND `RecordId`=54147 AND `locale`='zhTW') OR (`TableHash`=2381039112 AND `RecordId`=7763 AND `locale`='zhTW') OR (`TableHash`=2381039112 AND `RecordId`=7762 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5850 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5849 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5848 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5847 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5846 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5845 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5844 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5843 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5842 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=620445 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753105 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753104 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547256 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547255 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547254 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249390 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249390 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249389 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249389 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249388 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249388 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249387 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249387 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249386 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249386 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249385 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249385 AND `locale`='zhTW') OR (`TableHash`=4014102324 AND `RecordId`=181600 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=622091 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=622081 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=622079 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=622078 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=622077 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=588487 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=756006 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755995 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755994 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755992 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755991 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755990 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755989 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=755988 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=548452 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=548451 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=548450 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=548449 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=533963 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=503686 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=503500 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=664106 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1289789 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1283168 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1282778 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1264876 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1255629 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=447444 AND `locale`='zhTW') OR (`TableHash`=372281185 AND `RecordId`=38 AND `locale`='zhTW') OR (`TableHash`=372281185 AND `RecordId`=37 AND `locale`='zhTW') OR (`TableHash`=2707547180 AND `RecordId`=137739 AND `locale`='zhTW') OR (`TableHash`=2921112328 AND `RecordId`=561713 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24488 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24487 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24486 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24485 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=24484 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=210824 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=332898 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=320187 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=320070 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=319752 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1189289 AND `locale`='zhTW') OR (`TableHash`=2921112328 AND `RecordId`=537648 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42424 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1280123 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=54794 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22339 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22338 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22331 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22330 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22329 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276526 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276525 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276524 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276523 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276522 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276521 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276520 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276519 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276518 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276517 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276516 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1276515 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296760 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296759 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296758 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296756 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296734 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296731 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=466930 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95553 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95552 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=95550 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291739 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1281946 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1270634 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1270085 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1270079 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1258411 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1258410 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1258336 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1257809 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1257729 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1257728 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1257716 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1257505 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256189 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1255966 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253337 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253336 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253194 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253193 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253185 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253064 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1252431 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1241032 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1241023 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235076 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235075 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235072 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235067 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235066 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235065 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1235037 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1233865 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1228865 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225598 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225322 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225281 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225277 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225273 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1225272 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=444803 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=56772 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=56771 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=56770 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22337 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1250759 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=26054 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=16231 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=11499 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=10852 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=8989 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=5689 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=5115 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=1801 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=1261 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5841 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5840 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5839 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5838 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5837 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5836 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5835 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5834 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5833 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5832 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5831 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5830 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5829 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5828 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5827 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5826 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5825 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5824 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5823 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5822 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5821 AND `locale`='zhTW') OR (`TableHash`=3855640965 AND `RecordId`=5820 AND `locale`='zhTW') OR (`TableHash`=3699769440 AND `RecordId`=31063 AND `locale`='zhTW') OR (`TableHash`=3699769440 AND `RecordId`=31061 AND `locale`='zhTW') OR (`TableHash`=3699769440 AND `RecordId`=31059 AND `locale`='zhTW') OR (`TableHash`=3699769440 AND `RecordId`=31057 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=869 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=21946 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=21945 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=21061 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=21060 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=17750 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=16102 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=16101 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=16100 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=16099 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=16098 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1276894 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=94625 AND `locale`='zhTW') OR (`TableHash`=1512352357 AND `RecordId`=243 AND `locale`='zhTW') OR (`TableHash`=1512352357 AND `RecordId`=242 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=754613 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=754387 AND `locale`='zhTW') OR (`TableHash`=760092799 AND `RecordId`=236 AND `locale`='zhTW') OR (`TableHash`=760092799 AND `RecordId`=235 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296448 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=472053 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=287705 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=277374 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=277371 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=253483 AND `locale`='zhTW') OR (`TableHash`=2445379776 AND `RecordId`=10028 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296214 AND `locale`='zhTW') OR (`TableHash`=3653642729 AND `RecordId`=376 AND `locale`='zhTW') OR (`TableHash`=1673391669 AND `RecordId`=141 AND `locale`='zhTW') OR (`TableHash`=2791084701 AND `RecordId`=138 AND `locale`='zhTW') OR (`TableHash`=2518885667 AND `RecordId`=13760 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296205 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=760 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=94386 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=94385 AND `locale`='zhTW') OR (`TableHash`=476847390 AND `RecordId`=192 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296169 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296168 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=665333 AND `locale`='zhTW') OR (`TableHash`=4150907485 AND `RecordId`=1224 AND `locale`='zhTW') OR (`TableHash`=368401261 AND `RecordId`=7360 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291767 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=529585 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=198541 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=83323 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=83126 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=83125 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=83123 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=62410 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=62409 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=62408 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=49020 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=35941 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=26820 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=7614 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3664 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3644 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3604 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3584 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3521 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3471 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3453 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3452 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=3436 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2583 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2569 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2568 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2567 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2467 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2466 AND `locale`='zhTW') OR (`TableHash`=1274215428 AND `RecordId`=2465 AND `locale`='zhTW') OR (`TableHash`=3898252553 AND `RecordId`=11663 AND `locale`='zhTW') OR (`TableHash`=3745449290 AND `RecordId`=8614 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1296406 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=765 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=764 AND `locale`='zhTW') OR (`TableHash`=191387957 AND `RecordId`=1320 AND `locale`='zhTW') OR (`TableHash`=191387957 AND `RecordId`=1315 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1008 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1007 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1006 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1005 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=946 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=810 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=712 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=426 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=10778 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=10542 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=10327 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=8993 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=8877 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=2605 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=2299 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753589 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547448 AND `locale`='zhTW') OR (`TableHash`=859088734 AND `RecordId`=430627 AND `locale`='zhTW') OR (`TableHash`=3359787322 AND `RecordId`=31558 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=620660 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=620644 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=620643 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=620642 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753546 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753541 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753540 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753510 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753509 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753508 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753507 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753506 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753505 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=753504 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547444 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547442 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547424 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547406 AND `locale`='zhTW') OR (`TableHash`=859088734 AND `RecordId`=430618 AND `locale`='zhTW') OR (`TableHash`=859088734 AND `RecordId`=430616 AND `locale`='zhTW') OR (`TableHash`=859088734 AND `RecordId`=430613 AND `locale`='zhTW') OR (`TableHash`=859088734 AND `RecordId`=430612 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295959 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295957 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295932 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295927 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1265971 AND `locale`='zhTW') OR (`TableHash`=336222293 AND `RecordId`=22784 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=444769 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=666 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=199 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=197 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256191 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=752881 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=738063 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=547176 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577780 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577428 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577406 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577405 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577381 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577380 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577379 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577363 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577362 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1577361 AND `locale`='zhTW') OR (`TableHash`=736158310 AND `RecordId`=43623 AND `locale`='zhTW') OR (`TableHash`=736158310 AND `RecordId`=43619 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314117 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314116 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314110 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314108 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314101 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314099 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=314098 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1272821 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1244331 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=441845 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=57068 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=23377 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=22841 AND `locale`='zhTW') OR (`TableHash`=3745449290 AND `RecordId`=8459 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17310 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17309 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17308 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17307 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17306 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17305 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17304 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17303 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17301 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17300 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17299 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17298 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17297 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17296 AND `locale`='zhTW') OR (`TableHash`=3495286709 AND `RecordId`=17295 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=644762 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=644760 AND `locale`='zhTW') OR (`TableHash`=995606689 AND `RecordId`=63286 AND `locale`='zhTW') OR (`TableHash`=995606689 AND `RecordId`=63283 AND `locale`='zhTW') OR (`TableHash`=2445379776 AND `RecordId`=10508 AND `locale`='zhTW') OR (`TableHash`=2445379776 AND `RecordId`=9849 AND `locale`='zhTW') OR (`TableHash`=3386291891 AND `RecordId`=257268 AND `locale`='zhTW') OR (`TableHash`=1303856102 AND `RecordId`=256 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=39887 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=243435 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=221562 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=205630 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=198158 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=108194 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1004 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1003 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1001 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=1000 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=999 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=998 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=997 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=996 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=995 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=994 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=993 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=992 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=990 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=989 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=988 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=987 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=986 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=985 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=984 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=983 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=982 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=981 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=980 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=979 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=978 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=974 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=973 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=972 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=971 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=970 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=968 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=967 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=966 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=965 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=964 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=963 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=962 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=961 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=960 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=959 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=958 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=957 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=955 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=954 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=953 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=952 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=951 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=950 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=949 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=948 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=947 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=945 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=944 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=943 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=942 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=941 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=938 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=937 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=936 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=935 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=934 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=933 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=932 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=931 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=930 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=929 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=928 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=927 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=926 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=925 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=924 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=923 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=922 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=921 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=920 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=918 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=917 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=916 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=913 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=912 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=905 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=904 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=903 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=902 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=901 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=900 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=899 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=898 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=885 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=879 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=878 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=877 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=865 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=861 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=860 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=858 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=855 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=843 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=839 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=830 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=824 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=823 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=821 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=813 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=808 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=807 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=755 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=754 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=752 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=750 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=744 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=742 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=739 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=738 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=736 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=720 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=719 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=718 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=715 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=714 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=713 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=710 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=700 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=692 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=691 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=690 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=682 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=679 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=674 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=673 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=670 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=668 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=664 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=663 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=662 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=661 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=658 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=657 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=654 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=651 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=648 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=639 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=637 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=636 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=576 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=575 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=572 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=571 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=563 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=561 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=560 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=558 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=456 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=455 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=453 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=452 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=451 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=450 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=449 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=448 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=447 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=440 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=431 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=428 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=427 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=420 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=419 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=418 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=416 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=415 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=412 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=408 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=407 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=406 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=402 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=401 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=389 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=388 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=387 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=386 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=382 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=377 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=372 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=368 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=367 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=363 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=360 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=359 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=353 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=352 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=350 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=349 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=348 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=346 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=345 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=343 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=342 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=339 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=338 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=337 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=333 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=332 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=330 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=329 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=224 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=223 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=222 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=219 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=218 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=214 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=213 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=208 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=207 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=205 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=201 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=194 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=193 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=189 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=187 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=183 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=176 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=169 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=166 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=165 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=164 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=160 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=159 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=158 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=156 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=154 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=153 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=152 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=150 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=149 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=147 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=145 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=142 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=141 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=138 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=135 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=133 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=125 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=124 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=122 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=121 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=120 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=117 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=116 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=114 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=113 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=112 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=107 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=105 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=104 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=103 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=102 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=101 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=100 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=97 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=96 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=95 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=89 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=88 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=85 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=84 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=83 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=82 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=81 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=78 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=77 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=76 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=73 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=72 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=70 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=69 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=68 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=63 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=61 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=60 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=57 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=53 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=51 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=45 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=44 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=40 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=39 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=38 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=37 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=35 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=34 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=33 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=32 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=28 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=27 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=26 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=21 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=20 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=17 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=16 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=14 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=12 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=10 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=9 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=7 AND `locale`='zhTW') OR (`TableHash`=378810315 AND `RecordId`=3 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=333448 AND `locale`='zhTW') OR (`TableHash`=3386291891 AND `RecordId`=252608 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291860 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291859 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291858 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291857 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291856 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291855 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291854 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291853 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291852 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291851 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291850 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291849 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291848 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291847 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291846 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291845 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291844 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291843 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291842 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291841 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291840 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291839 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291838 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291837 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291831 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291828 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291827 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291826 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291825 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291824 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291822 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1291791 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1290929 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1290926 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1290925 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1289221 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1286537 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1286536 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1286535 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1282100 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1282018 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1277461 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269922 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269921 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269920 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269919 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269918 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269917 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269916 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1232065 AND `locale`='zhTW') OR (`TableHash`=2948698321 AND `RecordId`=8059 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295592 AND `locale`='zhTW') OR (`TableHash`=3898252553 AND `RecordId`=11633 AND `locale`='zhTW') OR (`TableHash`=3898252553 AND `RecordId`=11632 AND `locale`='zhTW') OR (`TableHash`=3898252553 AND `RecordId`=11631 AND `locale`='zhTW') OR (`TableHash`=3898252553 AND `RecordId`=11630 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1244341 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1262378 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1262377 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1262376 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1262365 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1262364 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1262359 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1248931 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1248927 AND `locale`='zhTW') OR (`TableHash`=3072882582 AND `RecordId`=54341 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1277796 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256862 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256861 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256860 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256010 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249319 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249319 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249318 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249318 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249317 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249317 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249316 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249316 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249315 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249315 AND `locale`='zhTW') OR (`TableHash`=1408785804 AND `RecordId`=249314 AND `locale`='zhTW') OR (`TableHash`=1122246768 AND `RecordId`=249314 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295508 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295497 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295486 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=464291 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243616 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243615 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243613 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243605 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243602 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243588 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243586 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619702 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751465 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=660617 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=660616 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=643167 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=24096 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=23712 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=23427 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=23426 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=23425 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=23424 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1257701 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619581 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619569 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=581317 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751209 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751192 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=444088 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619554 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751159 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751156 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751151 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295319 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7976 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7972 AND `locale`='zhTW') OR (`TableHash`=3386291891 AND `RecordId`=234064 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295191 AND `locale`='zhTW') OR (`TableHash`=3247720076 AND `RecordId`=42321 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619506 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619505 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619504 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619503 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619502 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619501 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619500 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619499 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619498 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619497 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619496 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619493 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619492 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619491 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619490 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619489 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619487 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619483 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619482 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=604956 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=604955 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=588799 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=588798 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751040 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751039 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751038 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751037 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751036 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751035 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751034 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751033 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751032 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751031 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751030 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751029 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751026 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751025 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751024 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751023 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751022 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751020 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751016 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751015 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751014 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751013 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=751012 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546511 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546510 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546509 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546508 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546507 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295278 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7970 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7969 AND `locale`='zhTW') OR (`TableHash`=3745449290 AND `RecordId`=8615 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619445 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750937 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546473 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295243 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295237 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=632510 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=632508 AND `locale`='zhTW') OR (`TableHash`=3201599327 AND `RecordId`=15388 AND `locale`='zhTW') OR (`TableHash`=3072882582 AND `RecordId`=58022 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1226037 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=442615 AND `locale`='zhTW') OR (`TableHash`=3386943305 AND `RecordId`=23675 AND `locale`='zhTW') OR (`TableHash`=3386291891 AND `RecordId`=59271 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1295194 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1241218 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=749 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=748 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294288 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546424 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546422 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1286830 AND `locale`='zhTW') OR (`TableHash`=600565378 AND `RecordId`=664416 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1236092 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=93049 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614662 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614661 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614660 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614659 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614658 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614657 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614656 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614655 AND `locale`='zhTW') OR (`TableHash`=1992314007 AND `RecordId`=1614654 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226556 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226555 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226554 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226553 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226552 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226551 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226550 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226549 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226548 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226547 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226546 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226545 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226544 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226543 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226542 AND `locale`='zhTW') OR (`TableHash`=338825009 AND `RecordId`=226541 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449249 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449248 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449247 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449246 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449245 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449244 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449243 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449242 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449241 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449240 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449239 AND `locale`='zhTW') OR (`TableHash`=4082824155 AND `RecordId`=1449238 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739898 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739897 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739896 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739895 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739894 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739893 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739892 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739891 AND `locale`='zhTW') OR (`TableHash`=2557447376 AND `RecordId`=739890 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=608169 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=599342 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=579842 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=578881 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=578880 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=578406 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7515 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=607519 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=607518 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7220 AND `locale`='zhTW') OR (`TableHash`=2151089334 AND `RecordId`=7016 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619212 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=618735 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=618734 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750462 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=545739 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1293613 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1286820 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1286703 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1253159 AND `locale`='zhTW') OR (`TableHash`=3359787322 AND `RecordId`=29615 AND `locale`='zhTW') OR (`TableHash`=3031818311 AND `RecordId`=9590 AND `locale`='zhTW') OR (`TableHash`=3072882582 AND `RecordId`=49188 AND `locale`='zhTW') OR (`TableHash`=3359787322 AND `RecordId`=31464 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1277169 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1243683 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=190784 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619076 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619075 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619074 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619073 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750195 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750194 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750193 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750192 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750191 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546169 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546168 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546167 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546166 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619401 AND `locale`='zhTW') OR (`TableHash`=4033975491 AND `RecordId`=619384 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750841 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750840 AND `locale`='zhTW') OR (`TableHash`=1181150530 AND `RecordId`=750815 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546416 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546415 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546414 AND `locale`='zhTW') OR (`TableHash`=3425193231 AND `RecordId`=546413 AND `locale`='zhTW') OR (`TableHash`=184881520 AND `RecordId`=18406 AND `locale`='zhTW') OR (`TableHash`=184881520 AND `RecordId`=18405 AND `locale`='zhTW') OR (`TableHash`=184881520 AND `RecordId`=18404 AND `locale`='zhTW') OR (`TableHash`=184881520 AND `RecordId`=18403 AND `locale`='zhTW') OR (`TableHash`=184881520 AND `RecordId`=18245 AND `locale`='zhTW') OR (`TableHash`=184881520 AND `RecordId`=18244 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=750 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1292124 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1266413 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1244345 AND `locale`='zhTW') OR (`TableHash`=3388959798 AND `RecordId`=19277 AND `locale`='zhTW') OR (`TableHash`=1059920561 AND `RecordId`=504 AND `locale`='zhTW') OR (`TableHash`=312181299 AND `RecordId`=2020 AND `locale`='zhTW') OR (`TableHash`=312181299 AND `RecordId`=2019 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1231327 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=436358 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1292071 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570155 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570154 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570153 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570152 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570151 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570150 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570149 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570148 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570147 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570146 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570145 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570144 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570143 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570142 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570141 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570140 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570139 AND `locale`='zhTW') OR (`TableHash`=3266400455 AND `RecordId`=1570138 AND `locale`='zhTW') OR (`TableHash`=3232102598 AND `RecordId`=312954 AND `locale`='zhTW') OR (`TableHash`=3408032706 AND `RecordId`=12257 AND `locale`='zhTW') OR (`TableHash`=1734738485 AND `RecordId`=9018 AND `locale`='zhTW') OR (`TableHash`=2575642838 AND `RecordId`=255 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294776 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1273357 AND `locale`='zhTW') OR (`TableHash`=4167587713 AND `RecordId`=4140 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294727 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294726 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294720 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294703 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294669 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294633 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294563 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1277795 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1272179 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269655 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269654 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269650 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269641 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1269640 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1264545 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1259647 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1258362 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1256009 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1251813 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=22988 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=22984 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=21036 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=21034 AND `locale`='zhTW') OR (`TableHash`=1010104591 AND `RecordId`=21033 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=86903 AND `locale`='zhTW') OR (`TableHash`=261693969 AND `RecordId`=86827 AND `locale`='zhTW') OR (`TableHash`=3851993221 AND `RecordId`=639 AND `locale`='zhTW') OR (`TableHash`=3851993221 AND `RecordId`=638 AND `locale`='zhTW') OR (`TableHash`=3851993221 AND `RecordId`=637 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=58731 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=58259 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=58258 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=55299 AND `locale`='zhTW') OR (`TableHash`=3205218938 AND `RecordId`=49471 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294779 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294759 AND `locale`='zhTW') OR (`TableHash`=2921112328 AND `RecordId`=568649 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1294752 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295414 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295413 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295412 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295411 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295410 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295409 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295408 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295407 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295406 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295405 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295404 AND `locale`='zhTW') OR (`TableHash`=2202435563 AND `RecordId`=1295403 AND `locale`='zhTW') OR (`TableHash`=2921112328 AND `RecordId`=574495 AND `locale`='zhTW'); +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1789921167, 17247, 'zhTW', 0xAF260700000000009E750200, 67186), +(1789921167, 16918, 'zhTW', 0x2745130000000000E1750200, 67186), +(4033975491, 623425, 'zhTW', 0x00000000000000000000C8410000000000000000000000004B830000FF0000000000000000DB0F4940000000000000000000000000000000000000A04000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000068180400, 67186), +(4033975491, 623424, 'zhTW', 0x0000000000000000000000000000000000000000000000006C98000022000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000067180400, 67186), +(1181150530, 759052, 'zhTW', 0x020000004183090068180400, 67186), +(1181150530, 759048, 'zhTW', 0x020000004083090067180400, 67186), +(3425193231, 549526, 'zhTW', 0x090000000A0000000000000000000000000000000000000003000000681804000000000000000000EACE0200, 67186), +(3425193231, 549525, 'zhTW', 0x030000000D0000000000000000000000000000000000000001000000671804000000000000000000EACE0200, 67186), +(3425193231, 549524, 'zhTW', 0x070000000800000000000000000000000000000000000000020000005C7703000000000000000000EACE0200, 67186), +(3776013982, 1298568, 'zhTW', 0x000000, 67186), +(2534422486, 3918, 'zhTW', 0x4E0F00000000000022000000D1B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E40802005D01000000000000, 67186), +(2534422486, 3917, 'zhTW', 0x4D0F00000000000022000000D0B903009B140000DB01000000000000000000000000000000000000000000000000000000000000E60802005C01000000000000, 67186), +(3776013982, 1253377, 'zhTW', 0x00243F63325BE9AD94E58C96E7A0B4E6BB855D5BE8999BE784A1E5B084E7B79A5DE79A84E582B7E5AEB3E68F90E9AB9824733125E380820D0A0D0A243F63325BE59CA8E68C81E7BA8CE69C9FE99693EFBC8CE9AD94E58C96E7A0B4E6BB855D5BE5AE8CE585A8E5BC95E5B08EE8999BE784A1E5B084E7B79AE699825DE794A2E7949F243F63325B247334E69E9AE99D88E9AD82E7A28EE789875D5B247333E5B1A4E8999BE5A29C5DE380820000, 67186), +(3776013982, 1270444, 'zhTW', 0x00E6AF8FE5909EE599ACE4B880E69E9AE99D88E9AD82E7A28EE78987EFBC8CE7A0B4E9AD82E696ACE5928CE99D88E9AD82E782B8E5BD88E983BDE69C89E4B880E5AE9AE6A99FE78E87E8B3A6E4BA88E784A1E7B89BE686A4E68092EFBC8CE58FAFE59CA8E696BDE694BEE683A1E9AD94E58C96E8BAABE69982E4B88DE69C83E8A7B8E799BCE586B7E58DBBE69982E99693EFBC8CE4B894E68C81E7BA8C247331E7A792E380820000, 67186), +(3776013982, 441587, 'zhTW', 0x0024407370656C6C646573633434313432390000, 67186), +(3776013982, 441429, 'zhTW', 0x00E5959FE58B95243F613133373033365BE883BDE9878FE588BAE6BF805D5BE69A97E5BDB1E4B98BE588835DE69C83E8A3BDE980A0E4B880E999A3E78599E99CA7EFBC8CE68C81E7BA8C2434343135383764EFBC8CE5BE9EE78599E99CA7E585A7E799BCE58B95E694BBE6938AE58FAFE696BDE58AA0E6858CE5BCB5EFBC8CE69C80E5A49AE58FAFE9A18DE5A496E5A086E7968A243434313634306D32E5B1A4E380820D0A0D0AE99BA2E9968BE78599E99CA7E5BE8CEFBC8CE69588E69E9CE68C81E7BA8C243F613133373033365B247B2473312F313030307D5D5B247B2473322F313030307D5DE7A792E380820000, 67186), +(3893700160, 445, 'zhTW', 0x750000009D0000000D0000000D01000000000000, 67186), +(3893700160, 443, 'zhTW', 0x750000009D000000070000000001000000000000, 67186), +(3893700160, 442, 'zhTW', 0x750000009D00000006000000FD00000000000000, 67186), +(3776013982, 1298446, 'zhTW', 0x00E58FAFE5868DE6ACA1E4BDBFE794A8E58FACE5969AE5AFB5E789A9E380820D0A0D0AE4BDA0E79A84E5AFB5E789A9E59CA8E688B6E5A496E69982E980A0E68890E79A84E582B7E5AEB3E68F90E9AB9824733125EFBC8CE58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24733225E380820000, 67186), +(3776013982, 1223323, 'zhTW', 0x00E58FAFE5868DE6ACA1E4BDBFE794A8E58FACE5969AE5AFB5E789A9E380820D0A0D0AE4BDA0E79A84E5AFB5E789A9E59CA8E688B6E5A496E69982E980A0E68890E79A84E582B7E5AEB3E68F90E9AB9824733125EFBC8CE58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24733225E380820000, 67186), +(3468628616, 1818, 'zhTW', 0xE9BB91E69A97E696B9E5B096E7A29100E4BDA0E78FBEE59CA8E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E99BB7E4BA9EE5A89CE8B3BCE8B2B7E9BB91E69A97E696B9E5B096E7A291E38082002C0000000700000071C10600080000000100000000000000, 67186), +(1710383997, 1818, 'zhTW', 0xE9BB91E69A97E696B9E5B096E7A29100E4BDA0E78FBEE59CA8E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E99BB7E4BA9EE5A89CE8B3BCE8B2B7E9BB91E69A97E696B9E5B096E7A291E3808200E9BB91E69A97E696B9E5B096E7A291002C0000000700000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(1274215428, 198696, 'zhTW', 0x28080300C0040000E94E130002000000004900000002000000, 67186), +(1274215428, 108729, 'zhTW', 0xB9A80100C004000066F9060002000000004D00000002000000, 67186), +(1274215428, 108728, 'zhTW', 0xB8A80100C004000060F9060002000000004C00000002000000, 67186), +(1274215428, 108727, 'zhTW', 0xB7A80100C00400006BF9060002000000004B00000002000000, 67186), +(1274215428, 108726, 'zhTW', 0xB6A80100C0040000060E130002000000004A00000002000000, 67186), +(1274215428, 108722, 'zhTW', 0xB2A80100C0040000FD00030002000000005200000002000000, 67186), +(1274215428, 108677, 'zhTW', 0x85A80100C0040000E9D2050002000000005100000002000000, 67186), +(1274215428, 108676, 'zhTW', 0x84A80100C0040000BBD2050002000000005000000002000000, 67186), +(1274215428, 107291, 'zhTW', 0x1BA30100C0040000F202060002000000005400000002000000, 67186), +(1274215428, 107245, 'zhTW', 0xEDA20100C00400007DC8050002000000004E00000002000000, 67186), +(1274215428, 107200, 'zhTW', 0xC0A20100C0040000FE79000002000000005300000002000000, 67186), +(1274215428, 106540, 'zhTW', 0x2CA00100C00400001308030002000000005700000002000000, 67186), +(1274215428, 106538, 'zhTW', 0x2AA00100C00400000106030002000000005600000002000000, 67186), +(1274215428, 106493, 'zhTW', 0xFD9F0100C00400004F6A050002000000005500000002000000, 67186), +(1274215428, 91851, 'zhTW', 0xCB660100C00400005770060002000000004F00000002000000, 67186), +(1789921167, 17246, 'zhTW', 0xEF4E13000000000028080300, 67186), +(3249862272, 94988, 'zhTW', 0x0C7301000400000000000000030000001E000000000000000000000088430000, 67186), +(3249862272, 27342, 'zhTW', 0xCE6A00000300000000000000030000001E00000000000000000000003A190000, 67186), +(3776013982, 1293502, 'zhTW', 0x000000, 67186), +(3037505077, 245345, 'zhTW', 0x5000, 67186), +(3776013982, 1270491, 'zhTW', 0x0000E694BBE6938AE9809FE5BAA6E68F90E9AB9824773125E3808200, 67186), +(3776013982, 1241077, 'zhTW', 0x00E79BAEE6A899E8BAABE4B88AE79A84E7989FE796ABE8A7B8E799BCE9809FE5BAA6E68F90E9AB9824733125E3808200244061757261636173746572E79A84E7989FE796ABE980A0E68890E582B7E5AEB3E79A84E9809FE5BAA6E68F90E9AB9824773125E3808200, 67186), +(3776013982, 458128, 'zhTW', 0x00E696ACE58887E4BDA0E99DA2E5898D246131E7A2BCE585A7E79A84E68980E69C89E695B5E4BABAEFBC8CE980A0E68890247331E9BB9EE69A97E5BDB1E582B7E5AEB3EFBC8CE4B894E8A2ABE591BDE4B8ADE79A84E79BAEE6A899E58F97E4BDA0E79A84E7989FE796ABE5BDB1E99FBFE69982EFBC8CE4BDBFE7989FE796ABE980A0E68890E582B7E5AEB3E79A84E9809FE5BAA6E68F90E9AB982431323431303737733125EFBC8CE68C81E7BA8C243132343130373764E380820000, 67186), +(3899321669, 5919, 'zhTW', 0x1F1700000102000000B1291300, 67186), +(3899321669, 5918, 'zhTW', 0x1E1700000002000000B1291300, 67186), +(3899321669, 5917, 'zhTW', 0x1D1700000102000000B0291300, 67186), +(3899321669, 5916, 'zhTW', 0x1C1700000002000000B0291300, 67186), +(3776013982, 363916, 'zhTW', 0xE9BB91E69B9C00E5BCB7E58C96E4BDA0E79A84E9B197E78987EFBC8CE4BDBFE4BDA0E58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24733125243F733337343334385BEFBC8CE4B8A6E59CA82433373433343964E585A7E4BDBFE4BDA0E681A2E5BEA9E79BB8E795B6E696BCE68980E6B89BE5858DE582B7E5AEB3E79A84E7949FE591BDE58A9B5D5B5DEFBC8CE68C81E7BA8C2464E3808200E58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24773125243F2465345BE4B8A6E681A2E5BEA9E79BB8E795B6E696BCE68980E6B89BE5858DE582B7E5AEB3E79A84E7949FE591BDE58A9BE380825D5BE380825D243F2477323D315B0D0AE5B08DE4B8ADE696B7E5928CE6B289E9BB98E69588E69E9CE5858DE796ABE380825D5B5D00, 67186), +(4033975491, 589353, 'zhTW', 0x0000000000000000000000000000000000000000000000000FBF000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000EDB80300, 67186), +(3776013982, 353319, 'zhTW', 0x507650E5A4A9E8B3A60024407370656C6C6465736333353333313300E5B08DE9AD94E6B395E582B7E5AEB3E5928CE69C89E5AEB3E69588E69E9CE5858DE796ABE3808200, 67186), +(3776013982, 125174, 'zhTW', 0x0024407370656C6C6465736331323234373000E590B8E694B6E58F97E588B0E79A84E68980E69C89E582B7E5AEB3E380820D0A24313232343730733425E79A84E590B8E694B6E582B7E5AEB3E69C83E8BD89E7A7BBE887B3E58F97E4B9BEE59DA4E68CAAE7A7BBE5BDB1E99FBFE79A84E58F97E5AEB3E88085E8BAABE4B88AE3808200, 67186), +(3776013982, 122470, 'zhTW', 0x00E590B8E694B6E58F97E588B0E79A84E68980E69C89E582B7E5AEB3EFBC8CE68C81E7BA8C2464EFBC8CE69C80E5A49AE590B8E694B6E7949FE591BDE58A9BE4B88AE99990E79A8424733325EFBC8CE4B8A6E59CA82431323432383064E585A7E5B08DE4B880E5908DE695B5E696B9E79BAEE6A899E980A0E68890E79BB8E795B6E696BCE590B8E694B6E9878F24733425E79A84E887AAE784B6E582B7E5AEB3E3808200E5B08DE6ADA6E583A7E980A0E68890E79A84E582B7E5AEB3E59CA82431323432383064E585A7E69C83E4BBA5E887AAE784B6E582B7E5AEB3E79A84E5BDA2E5BC8FE585A8E695B8E8BD89E7A7BBE887B3E4BDA0E8BAABE4B88AE3808200, 67186), +(3776013982, 23920, 'zhTW', 0x00E88889E8B5B7E4BDA0E79A84243F63335BE79BBEE7898C5D5BE6ADA6E599A85DEFBC8CE58F8DE5B084243F613231333931355BE4B88B243231333931357333E5808B5D5BE7ACACE4B880E5808B5DE5B08DE4BDA0E696BDE694BEE79A84E6B395E8A193EFBC8CE4B8A6E4BDBFE4BDA0E58F97E588B0E79A84E9AD94E6B395E582B7E5AEB3E9998DE4BD8E24333835333931733125EFBC8CE68C81E7BA8C2464E3808200243F613138383637325BE58F8DE5B084E68980E69C89E5B08DE4BDA0E696BDE694BEE79A84E6B395E8A193E380825D5BE58F8DE5B084E4B880E5808BE5B08DE4BDA0E696BDE694BEE79A84E6B395E8A193E380825D00, 67186), +(1274215428, 190484, 'zhTW', 0x14E802007403000028B3010002000000004700000000000000, 67186), +(1274215428, 171483, 'zhTW', 0xDB9D0200740300006C15000002395802004600000002000000, 67186), +(1274215428, 171482, 'zhTW', 0xDA9D0200740300004B76000002385802004500000002000000, 67186), +(1274215428, 171418, 'zhTW', 0x9A9D020074030000ABCF010002375802004400000002000000, 67186), +(1274215428, 171417, 'zhTW', 0x999D020074030000851A000002365802004300000002000000, 67186), +(1274215428, 171416, 'zhTW', 0x989D020074030000C602000002355802004200000002000000, 67186), +(1274215428, 171415, 'zhTW', 0x979D0200740300007760130002345802004100000002000000, 67186), +(1274215428, 171414, 'zhTW', 0x969D020074030000F8A0060002335802004000000002000000, 67186), +(1274215428, 171413, 'zhTW', 0x959D020074030000DD9E0600025F1402003F00000002000000, 67186), +(1274215428, 171412, 'zhTW', 0x949D020074030000E39E060002601402003E00000002000000, 67186), +(1274215428, 171348, 'zhTW', 0x549D0200740300001351130002325802003D00000002000000, 67186), +(1274215428, 171284, 'zhTW', 0x149D020074030000BFE8050002305802003C00000002000000, 67186), +(1274215428, 171169, 'zhTW', 0xA19C020074030000F6FE1200022F5802003B00000002000000, 67186), +(1274215428, 168967, 'zhTW', 0x07940200740300009BB4010000000000003A00000000000000, 67186), +(1274215428, 133730, 'zhTW', 0x620A0200740300003A69130002025602003900000002000000, 67186), +(1274215428, 133729, 'zhTW', 0x610A020074030000F667130002015602003800000002000000, 67186), +(1274215428, 133728, 'zhTW', 0x600A020074030000C467130000000000003700000002000000, 67186), +(1274215428, 133727, 'zhTW', 0x5F0A020074030000FA67130000000000003600000002000000, 67186), +(1274215428, 133679, 'zhTW', 0x2F0A02007403000013FF120002005602003500000002000000, 67186), +(1274215428, 133631, 'zhTW', 0xFF090200740300002E0F040002145802003400000002000000, 67186), +(1274215428, 133583, 'zhTW', 0xCF09020074030000BCFE120002FF5502003300000002000000, 67186), +(1274215428, 133441, 'zhTW', 0x41090200740300002868020002954D02003200000002000000, 67186), +(1274215428, 132900, 'zhTW', 0x2407020074030000B206000002000000003100000002000000, 67186), +(1274215428, 132769, 'zhTW', 0xA106020074030000C319050002000000003000000002000000, 67186), +(1274215428, 132721, 'zhTW', 0x7106020074030000BE02000002000000002F00000002000000, 67186), +(1274215428, 132299, 'zhTW', 0xCB040200740300009BA1060002934D02002E00000002000000, 67186), +(1274215428, 131072, 'zhTW', 0x000002007403000025E8050002125802002D00000000000000, 67186), +(1274215428, 130897, 'zhTW', 0x51FF010074030000E001130002135802002C00000002000000, 67186), +(1274215428, 130803, 'zhTW', 0xF3FE0100740300007039010002000000002B00000002000000, 67186), +(1274215428, 130470, 'zhTW', 0xA6FD01007403000067030600028F4D02002A00000002000000, 67186), +(1274215428, 92736, 'zhTW', 0x406A01007403000031EA050002071402002900000002000000, 67186), +(1274215428, 92735, 'zhTW', 0x3F6A010074030000473D030002000000002600000002000000, 67186), +(1274215428, 92734, 'zhTW', 0x3E6A01007403000066C1060002914D02002300000002000000, 67186), +(1274215428, 84355, 'zhTW', 0x834901007403000045990100021E3A02002400000002000000, 67186), +(1274215428, 84354, 'zhTW', 0x824901007403000080A7010002203A02002500000002000000, 67186), +(1274215428, 84352, 'zhTW', 0x8049010074030000EEF1050002233A02002800000002000000, 67186), +(1274215428, 84351, 'zhTW', 0x7F4901007403000003FE0200021D3A02002700000002000000, 67186), +(1274215428, 63262, 'zhTW', 0x1EF7000074030000D965050000000000000E00000000000000, 67186), +(1274215428, 63185, 'zhTW', 0xD1F60000740300000E64050001000000001A00000000000000, 67186), +(1274215428, 63146, 'zhTW', 0xAAF6000074030000473D030001000000001900000000000000, 67186), +(1274215428, 63107, 'zhTW', 0x83F6000074030000E643060000000000000D00000000000000, 67186), +(1274215428, 33527, 'zhTW', 0xF78200007403000066C1060000000000000C00000000000000, 67186), +(1274215428, 26230, 'zhTW', 0x7666000074030000025E060002944D02001E00000002000000, 67186), +(1274215428, 18823, 'zhTW', 0x8749000074030000E289060002000000001D00000000000000, 67186), +(1274215428, 18822, 'zhTW', 0x8649000074030000E289060002000000001C00000000000000, 67186), +(1274215428, 18820, 'zhTW', 0x84490000740300004118050002000000001B00000000000000, 67186), +(1274215428, 18818, 'zhTW', 0x82490000740300002AEA050002071402002100000000000000, 67186), +(1274215428, 18812, 'zhTW', 0x7C490000740300006204000000000000000B00000000000000, 67186), +(1274215428, 18809, 'zhTW', 0x794900007403000094BB000001000000001000000002000000, 67186), +(1274215428, 18808, 'zhTW', 0x78490000740300006C15000001000000001400000000000000, 67186), +(1274215428, 18807, 'zhTW', 0x7749000074030000851A000001000000001500000000000000, 67186), +(1274215428, 18805, 'zhTW', 0x75490000740300004118050001000000001800000000000000, 67186), +(1274215428, 18804, 'zhTW', 0x74490000740300005AD4010001000000000F00000000000000, 67186), +(1274215428, 18803, 'zhTW', 0x73490000740300004B76000001000000001300000000000000, 67186), +(1274215428, 18802, 'zhTW', 0x7249000074030000C574000001000000001600000000000000, 67186), +(1274215428, 18801, 'zhTW', 0x7149000074030000E350000001000000001700000000000000, 67186), +(1274215428, 18800, 'zhTW', 0x70490000740300004599010001000000001100000000000000, 67186), +(1274215428, 18798, 'zhTW', 0x6E4900007403000080A7010001000000001200000000000000, 67186), +(1274215428, 18797, 'zhTW', 0x6D4900007403000044CC010002924D02002000000000000000, 67186), +(1274215428, 18796, 'zhTW', 0x6C4900007403000038E9050002000000001F00000000000000, 67186), +(1274215428, 18794, 'zhTW', 0x6A490000740300006204000003000000002200000000000000, 67186), +(3776013982, 1237942, 'zhTW', 0x00E68A8AE9AD9AE4B89FE59B9EE6B0B4E8A3A1E4BBA5E78DB2E5BE97247332E9BB9EE887B3E69A97E4B98BE5A49CE987A3E9AD9AE68A80E883BDEFBC8CE68C81E7BA8C2464E380820D0A0D0AE5A49AE4B89FE5B9BEE6A29DE9AD9AE58FAFE4BDBFE6ADA4E5A29EE79B8AE69588E69E9CE69C80E5A49AE5BBB6E995B7244D31E58886E99098E3808200E5A58EE788BEE896A9E68B89E696AFE987A3E9AD9AE68A80E883BDE68F90E9AB98247732E9BB9EE3808200, 67186), +(3776013982, 1235216, 'zhTW', 0x00E68A8AE6ADA4E7949FE789A9E4B89FE59B9EE6B0B4E8A3A1E4BBA5E78DB2E5BE97247332E9BB9EE887B3E69A97E4B98BE5A49CE6849FE79FA5EFBC8CE68C81E7BA8C2464E380820D0A0D0AE5A49AE4B89FE5B9BEE99ABBE58FAFE4BDBFE6ADA4E5A29EE79B8AE69588E69E9CE69C80E5A49AE5BBB6E995B7244D31E58886E99098E3808200E887B3E69A97E4B98BE5A49CE6849FE79FA5E68F90E9AB98247732E9BB9EE3808200, 67186), +(3776013982, 1225245, 'zhTW', 0x00E98099E7A8AEE9AD9AE9A19EE7949FE680A7E6A99FE8ADA6EFBC8CE8BAABE9AB94E794B1E8B5A4E7B485E5928CE5A4A9E8978DE9B197E78987E4BAA4E7B994E8808CE68890E38082E8BE9BE5A49AE99BB7E7BEA4E5B185E9AD9AE698AFE6B0B8E6AD8CE6A3AEE69E97E79A84E5B8B8E8A68BE9AD9AE9A19EEFBC8CE69C83E8B79FE89197E68980E5B1ACE79A84E9AD9AE7BEA4E7A9BFE6A2ADE59CA8E4B88DE5908CE6B0B4E59F9FE4B98BE99693E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AEFBC9A7C520D0A0D0A24407370656C6C69636F6E3132333739343224407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E98099E7A8AEE9AD9AE79A84E59CB0E58D80EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E7A596E998BFE69BBC0D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE987A3E9AD9AE6B1A0EFBC9A7C720D0A2D20E58692E6B3A1E88AB1E9AD9A0D0A2D20E5A4AAE999BDE4B98BE4BA95E9AD9AE7BEA40D0A2D20E6B0B4E99DA2E6BCA3E6BCAA0000, 67186), +(778162198, 397, 'zhTW', 0x050000000000164300000000, 67186), +(3037505077, 243343, 'zhTW', 0x0100, 67186), +(3037505077, 243302, 'zhTW', 0x0100, 67186), +(261693969, 95549, 'zhTW', 0xFFFFFFFFFFFFFFFFE799BCE5B883E9AD94E6B395E8ADA6E5A0B10000160D0100435E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000F62204000000000000000000901000000000000002000000000130128000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(2202435563, 1264434, 'zhTW', 0x324B1300841650E600000F980800, 67186), +(2202435563, 1264429, 'zhTW', 0x2D4B13000A1657E800000F980800, 67186), +(2202435563, 1264428, 'zhTW', 0x2C4B130079164FE800000F980800, 67186), +(2202435563, 1264427, 'zhTW', 0x2B4B1300E216E5E700000F980800, 67186), +(2202435563, 1264426, 'zhTW', 0x2A4B13001A177BE700000F980800, 67186), +(2202435563, 1264425, 'zhTW', 0x294B13002017FCE600000F980800, 67186), +(2202435563, 1264424, 'zhTW', 0x284B13001017ACE600000F980800, 67186), +(2202435563, 1264423, 'zhTW', 0x274B1300E8167BE600000F980800, 67186), +(336222293, 22633, 'zhTW', 0xE987A3E6898BE58886E695B8EFBC9A7C636E484947484C494748545F464F4E545F434F4C4F523A253238387064637C720034004E1F0000, 67186), +(978178762, 405, 'zhTW', 0xE5AE8CE68890007C634646316566663030E5AE8CE68890E6B7B1E6B7B5E987A3E6898BEFBC8100000000009501000000000000000000008516000011080A881300000000000000000000000000CA0700000000000000000000374F0500C54E050000000000, 67186), +(261693969, 96388, 'zhTW', 0xFFFFFFFFFFFFFFFFE58AA0E585A5E6B7B1E6B7B5E987A3E6898B0000A9100100F14C020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A010000F90C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1400098795, 174, 'zhTW', 0xE6B7B1E6B7B5E6BD9BE6B0B4E8808500E59CA8E7A596E998BFE69BBCE5AE8CE68890E6B7B1E6B7B5E987A3E6898BE4BA8BE4BBB6E3808200AE0000001F3D0300906301000A000000000000000000000000000000, 67186), +(1400098795, 74, 'zhTW', 0xE6B7B1E6B7B5E6BD9BE6B0B4E8808500E59CA8E7A596E998BFE69BBCE5AE8CE68890E6B7B1E6B7B5E987A3E6898BE4BA8BE4BBB6E38082004A0000001F3D0300C36701004B000000000000000000000000000000, 67186), +(3745449290, 8584, 'zhTW', 0xE6B7B1E6B7B5E987A3E6898B00E5928CE6B7B1E6B5B7E6BD9BE6B0B4E88085E68DB7E69CB1E4BAA4E8AB87E4BE86E5928CE6B7B1E6B7B5E987A3E6898BE4B880E5908CE4B88BE6BD9BE38082008821000014A2DD45F65318C665C3EA3E000000004B65020000000000A68B0000A5150460C61D010000000000000000000000000000004B3E000000007907000000000200, 67186), +(3468628616, 1817, 'zhTW', 0xE7B2BEE88BB1E58DB1E99AAA00E7A880E69C89E7B2BEE88BB1E695B5E4BABAE78FBEE59CA8E69C83E59CA8E58480E5BC8FE59CB0E9BB9EE7949FE68890EFBC8CE6938AE69597E4BB96E58091E58FAFE78DB2E58F96E9A18DE5A496E79A84E58480E5BC8FE688B0E588A9E59381E38082002C000000080000006FAE0D00080000000200000000000000, 67186), +(1710383997, 1817, 'zhTW', 0xE7B2BEE88BB1E58DB1E99AAA00E7A880E69C89E7B2BEE88BB1E695B5E4BABAE78FBEE59CA8E69C83E59CA8E58480E5BC8FE59CB0E9BB9EE7949FE68890EFBC8CE6938AE69597E4BB96E58091E58FAFE78DB2E58F96E9A18DE5A496E79A84E58480E5BC8FE688B0E588A9E59381E3808200E5A496E4BE86E58DB1E99AAA4949002C000000080000006FAE0D0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1816, 'zhTW', 0xE88590E58C96E9818BE8BCB800E4BDA0E78FBEE59CA8E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E5BC97E5AFA7E4B8ADE5A3ABE8B3BCE8B2B7E8999BE784A1E4B98BE8A7B8E999B8E8A18CE9B7B9E38082002C0000000800000084040200080000000100000000000000, 67186), +(1710383997, 1816, 'zhTW', 0xE88590E58C96E9818BE8BCB800E4BDA0E78FBEE59CA8E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E5BC97E5AFA7E4B8ADE5A3ABE8B3BCE8B2B7E8999BE784A1E4B98BE8A7B8E999B8E8A18CE9B7B9E3808200E88590E58C96E9818BE8BCB8002C000000080000008404020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1815, 'zhTW', 0xE58A9BE9878FE88196E5A387494900E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E696B0E79A84E9AD94E6B395E5A29EE79B8AE88196E5A387E38082002C0000000700000071C10600080000000200000000000000, 67186), +(1710383997, 1815, 'zhTW', 0xE58A9BE9878FE88196E5A387494900E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E696B0E79A84E9AD94E6B395E5A29EE79B8AE88196E5A387E3808200E58A9BE9878FE88196E5A3874949002C0000000700000071C1060008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1814, 'zhTW', 0xE5B487E695ACE5AFB6E8978F00E78FBEE59CA8E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E5A4A7E59E8BE5AFB6E8978FEFBC8CE78DB2E58F96E9A18DE5A496E79A84E688B0E588A9E59381E38082002C0000000700000058F22500080000000100000000000000, 67186), +(1710383997, 1814, 'zhTW', 0xE5B487E695ACE5AFB6E8978F00E78FBEE59CA8E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E5A4A7E59E8BE5AFB6E8978FEFBC8CE78DB2E58F96E9A18DE5A496E79A84E688B0E588A9E59381E3808200E5B487E695ACE5AFB6E8978F002C0000000700000058F2250008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1813, 'zhTW', 0xE58480E5BC8FE9AD94E6B395202D20E58585E8A395E7908300E4BDA0E59CA8E58480E5BC8FE59CB0E9BB9EE6938AE6AEBAE695B5E4BABAE5BE8CE7949FE68890E681A2E5BEA9E79083E79A84E6A99FE78E87E68F90E9AB98E38082002C00000006000000AED00900080000000200000000000000, 67186), +(1710383997, 1813, 'zhTW', 0xE58480E5BC8FE9AD94E6B395202D20E58585E8A395E7908300E4BDA0E59CA8E58480E5BC8FE59CB0E9BB9EE6938AE6AEBAE695B5E4BABAE5BE8CE7949FE68890E681A2E5BEA9E79083E79A84E6A99FE78E87E68F90E9AB98E3808200E58480E5BC8FE9AD94E6B395202D20E6B2BBE79982494949002C00000006000000AED0090008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1812, 'zhTW', 0xE88590E58C96E5AFB5E789A9E59C9200E4BDA0E78FBEE59CA8E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E5BC97E5AFA7E4B8ADE5A3ABE8B3BCE8B2B7E7B2BEE981B8E5AFB5E789A9E38082002C000000060000005C040200080000000100000000000000, 67186), +(1710383997, 1812, 'zhTW', 0xE88590E58C96E5AFB5E789A9E59C9200E4BDA0E78FBEE59CA8E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E5BC97E5AFA7E4B8ADE5A3ABE8B3BCE8B2B7E7B2BEE981B8E5AFB5E789A9E3808200E88590E58C96E5AFB5E789A9E59C92002C000000060000005C04020008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1811, 'zhTW', 0xE58A9BE9878FE88196E5A38700E4BDA0E78FBEE59CA8E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E9AD94E6B395E5A29EE79B8AE88196E5A387E38082002C0000000500000071C10600080000000100000000000000, 67186), +(1710383997, 1811, 'zhTW', 0xE58A9BE9878FE88196E5A38700E4BDA0E78FBEE59CA8E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E9AD94E6B395E5A29EE79B8AE88196E5A387E3808200E58A9BE9878FE88196E5A38749002C0000000500000071C1060008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1810, 'zhTW', 0xE9A18DE5A496E688B0E588A9E5938100E4BDA0E78FBEE59CA8E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E9A18DE5A496E79A84E5B08FE59E8BE5AFB6E8978FE38082002C0000000500000076632C00080000000200000000000000, 67186), +(1710383997, 1810, 'zhTW', 0xE9A18DE5A496E688B0E588A9E5938100E4BDA0E78FBEE59CA8E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE689BEE588B0E9A18DE5A496E79A84E5B08FE59E8BE5AFB6E8978FE3808200E5A4B1E890BDE5AFB6E8978F4949002C0000000500000076632C0008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1809, 'zhTW', 0xE5A496E4BE86E58DB1E99AAA00E7A880E69C89E695B5E4BABAE78FBEE59CA8E69C83E59CA8E58480E5BC8FE59CB0E9BB9EE7949FE68890EFBC8CE6938AE69597E4BB96E58091E58FAFE78DB2E58F96E9A18DE5A496E79A84E58480E5BC8FE688B0E588A9E59381E38082002C00000004000000DE1C1A00080000000100000000000000, 67186), +(1710383997, 1809, 'zhTW', 0xE5A496E4BE86E58DB1E99AAA00E7A880E69C89E695B5E4BABAE78FBEE59CA8E69C83E59CA8E58480E5BC8FE59CB0E9BB9EE7949FE68890EFBC8CE6938AE69597E4BB96E58091E58FAFE78DB2E58F96E9A18DE5A496E79A84E58480E5BC8FE688B0E588A9E59381E3808200E5A496E4BE86E58DB1E99AAA49002C00000004000000DE1C1A0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1808, 'zhTW', 0xE58480E5BC8FE9AD94E6B395202D20E5BCB7E69588E7908300E681A2E5BEA9E79083E79A84E6B2BBE79982E69588E69E9CE68F90E9AB9831303025E38082002C00000004000000A8A74600080000000200000000000000, 67186), +(1710383997, 1808, 'zhTW', 0xE58480E5BC8FE9AD94E6B395202D20E5BCB7E69588E7908300E681A2E5BEA9E79083E79A84E6B2BBE79982E69588E69E9CE68F90E9AB9831303025E3808200E58480E5BC8FE9AD94E6B395202D20E6B2BBE799824949002C00000004000000A8A7460008000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1807, 'zhTW', 0xE58480E5BC8FE8A39DE9A3BE00E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E99BB7E4BA9EE5A89CE8B3BCE8B2B7E8999BE784A1E4B8BBE9A18CE79A84E6A18CE5AD90E9858DE4BBB6E38082002C00000003000000493E7200080000000100000000000000, 67186), +(1710383997, 1807, 'zhTW', 0xE58480E5BC8FE8A39DE9A3BE00E58FAFE4BBA5E59091E98A80E69C88E59F8EE79A84E99BB7E4BA9EE5A89CE8B3BCE8B2B7E8999BE784A1E4B8BBE9A18CE79A84E6A18CE5AD90E9858DE4BBB6E3808200E58480E5BC8FE688BFE5B18BE5AEB6E585B7002C00000003000000493E720008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1806, 'zhTW', 0xE58480E5BC8FE5AFB6E8978F00E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE591A8E59C8DE689BEE588B0E5B08FE59E8BE5AFB6E8978FE38082002C0000000200000076632C00080000000100000000000000, 67186), +(1710383997, 1806, 'zhTW', 0xE58480E5BC8FE5AFB6E8978F00E58FAFE4BBA5E59CA8E58480E5BC8FE59CB0E9BB9EE591A8E59C8DE689BEE588B0E5B08FE59E8BE5AFB6E8978FE3808200E5A4B1E890BDE5AFB6E8978F49002C0000000200000076632C0008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(3468628616, 1805, 'zhTW', 0xE58480E5BC8FE9AD94E6B395202D20E681A2E5BEA9E7908300E58480E5BC8FE59CB0E9BB9EE69C83E9A1AFE78FBEE681A2E5BEA9E79083EFBC8CE782BAE4BDA0E6B2BBE79982313525E79A84E7949FE591BDE58A9BE38082002C00000001000000D0B04600080000000100000000000000, 67186), +(1710383997, 1805, 'zhTW', 0xE58480E5BC8FE9AD94E6B395202D20E681A2E5BEA9E7908300E58480E5BC8FE59CB0E9BB9EE69C83E9A1AFE78FBEE681A2E5BEA9E79083EFBC8CE782BAE4BDA0E6B2BBE79982313525E79A84E7949FE591BDE58A9BE3808200E58480E5BC8FE9AD94E6B395202D20E6B2BBE7998249002C00000001000000D0B0460008000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(326190544, 1749, 'zhTW', 0xE98592E88E8AE8B5ADE79FB3E7AA97E688B600000000000000000000000000D50600000000000000000000020000000201DCA76900394071000300000038BF03000000803F0A00000067010000020000000000000000, 67186), +(3266400455, 42450, 'zhTW', 0x9F5A00004EAC0800010000803F00000000, 67186), +(3266400455, 46738, 'zhTW', 0xA162000057AB0800010000803F00000000, 67186), +(3232102598, 87407, 'zhTW', 0x3C680000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 49404, 'zhTW', 0x3C680000C3AA0800010000803F00000000, 67186), +(3232102598, 154082, 'zhTW', 0x5E1D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F020000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 8259, 'zhTW', 0x5E1D0000B5A00800010000803F00000000, 67186), +(3232102598, 54105, 'zhTW', 0xFD0C0000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000E8030000E80300000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 4720, 'zhTW', 0xFD0C00004FB00800010000803F00000000, 67186), +(3232102598, 156662, 'zhTW', 0xF75D00000000C0400000404100000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04200409C46, 67186), +(3266400455, 44546, 'zhTW', 0xF75D0000F6AD0800010000803F00000000, 67186), +(3266400455, 44545, 'zhTW', 0xF75D000030AC0800010000803F00000000, 67186), +(3266400455, 44544, 'zhTW', 0xF75D000064AD0800010000803F00000000, 67186), +(3266400455, 44543, 'zhTW', 0xF75D0000B0AC0800010000803F00000000, 67186), +(3232102598, 81580, 'zhTW', 0x28700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3266400455, 54691, 'zhTW', 0x28700000880E0900010000803F00000000, 67186), +(3266400455, 54690, 'zhTW', 0x28700000860E0900010000803F00000000, 67186), +(3266400455, 54689, 'zhTW', 0x28700000840E0900010000803F00000000, 67186), +(3266400455, 54688, 'zhTW', 0x28700000820E0900010000803F00000000, 67186), +(3266400455, 54687, 'zhTW', 0x28700000800E0900010000803F00000000, 67186), +(3776013982, 1295986, 'zhTW', 0x00E69E97E5A49AE7B1B3E6A899E587BAE68C87E5AE9AE79A84E99D9EE9A696E9A098E695B5E4BABAE38082E6938AE69597E6A899E587BAE79A84E68980E69C89E695B5E4BABAE5B087E69C83E5AE8CE68890E695B5E696B9E983A8E99A8AE99C80E6B182E3808200E6938AE69597E6A899E587BAE79A84E68980E69C89E695B5E4BABAE5B087E69C83E5AE8CE68890E695B5E696B9E983A8E99A8AE99C80E6B182E3808200, 67186), +(3776013982, 1278156, 'zhTW', 0x00E69E97E5A49AE7B1B3E6A899E587BAE4B8A6E5898AE5BCB1E68C87E5AE9AE79A84E99D9EE9A696E9A098E695B5E4BABAEFBC8CE4B8A6E998B2E6ADA2E78EA9E5AEB6E6ADBBE4BAA1E69982E6B89BE5B091E589A9E9A498E79A84E69982E99693E380820D0A0D0AE6938AE69597E6A899E587BAE79A84E68980E69C89E695B5E4BABAE5B087E69C83E5AE8CE68890E695B5E696B9E983A8E99A8AE99C80E6B182E3808200E7949FE591BDE58A9BE9998DE4BD8E24733125E380820D0AE980A0E68890E79A84E582B7E5AEB3E9998DE4BD8E24733225E3808200, 67186), +(368401261, 7367, 'zhTW', 0x000076250000000000000000000000000000000000000000, 67186), +(3388959798, 17707, 'zhTW', 0x10E2120004000000D7010000000000000500000005000000, 67186), +(1691321978, 1362, 'zhTW', 0x48CF00000100000064000000, 67186), +(3359787322, 31154, 'zhTW', 0xB2790000, 67186), +(3495286709, 24475, 'zhTW', 0x908AF369580B000005000000, 67186), +(3495286709, 24474, 'zhTW', 0x908AF369580B000002000000, 67186), +(3495286709, 24473, 'zhTW', 0x908AF369580B000004000000, 67186), +(3495286709, 24472, 'zhTW', 0x908AF369580B000003000000, 67186), +(3495286709, 24471, 'zhTW', 0x908AF369580B000001000000, 67186), +(3776013982, 1298074, 'zhTW', 0x000000, 67186), +(3247720076, 42450, 'zhTW', 0x041E000000, 67186), +(3247720076, 42449, 'zhTW', 0x041E000000, 67186), +(3247720076, 42448, 'zhTW', 0x04BE000000, 67186), +(3247720076, 42447, 'zhTW', 0x04BE000000, 67186), +(3247720076, 42446, 'zhTW', 0x0700000000, 67186), +(3247720076, 42445, 'zhTW', 0x0100000000, 67186), +(3247720076, 40690, 'zhTW', 0x0100000000, 67186), +(2014779773, 207, 'zhTW', 0x1B6A0200613E0000A87A0100000000000000000000000000CB0000000200000000000000, 67186), +(2014779773, 206, 'zhTW', 0x1B6A020000000000A87A0100000000000000000000000000CA0000000000000000000000, 67186), +(3776013982, 390264, 'zhTW', 0x000000, 67186), +(3776013982, 390260, 'zhTW', 0x000000, 67186), +(261693969, 95304, 'zhTW', 0xFFFFFFFFFFFFFFFFE6989FE99BB2E8999BE784A1E4B98BE6A0B8EFBC9AE7B2BEE585B5E699A8E69BA6E7B48BE7ABA00000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95290, 'zhTW', 0xFFFFFFFFFFFFFFFFE6989FE99BB2E8999BE784A1E4B98BE6A0B8EFBC9AE8999BE58589E6B3A5E781B00000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95279, 'zhTW', 0xFFFFFFFFFFFFFFFFE6989FE99BB2E8999BE784A1E4B98BE6A0B8EFBC9AE9BB83E987910000000000006854020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F80C00000000000000000000000030020080000008020010D37101000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3653642729, 377, 'zhTW', 0x0000000091000000, 67186), +(1673391669, 145, 'zhTW', 0x8E000000, 67186), +(2791084701, 142, 'zhTW', 0x32DC0600, 67186), +(2533050585, 1529, 'zhTW', 0x7072696D61727900000000000000000000000000000000000000000000000000F9050000100600000100000000000000000000000000000000000000000000000000000000000009421F85AB3F14AEC642, 67186), +(2533050585, 1528, 'zhTW', 0x7072696D61727900EC51B83DEC51B83DEC51B83D000000000000000000000000F80500000F0600000100000000000000000000000000000000000000000000000000000000000003427B14AE3F52B8C642, 67186), +(2930840720, 5037, 'zhTW', 0x706574320014AE6F4166665641A470BD3FAD1300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5036, 'zhTW', 0x7065743100C3F53841713D2E4152B886C0AC1300001006000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(2930840720, 5035, 'zhTW', 0x70657438000AD783BF48E12A41295C4FC0AB1300001006000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 5034, 'zhTW', 0x7065743130007B148241713DCAC085EB51C0AA1300001006000000000000AA0000007B142EC00000000000000000AE47E13D, 67186), +(2930840720, 5033, 'zhTW', 0x70657439001F85DBC0F628C4C05C8F3240A91300001006000000000000AA0000007B142EC00AD7233E0000000000000000, 67186), +(2930840720, 5032, 'zhTW', 0x70657437005C8F6641CDCC4CC1C3F5E83FA81300001006000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 5031, 'zhTW', 0x70657436001F85E3C052B8D6C0CDCC0CC0A71300001006000000000000AA000000EC5138C0000000000000000000000000, 67186), +(2930840720, 5030, 'zhTW', 0x7065743500B81E9741295C03C1AE47E1BDA61300001006000000000000AA000000D7A320C0000000000000000000000000, 67186), +(2930840720, 5029, 'zhTW', 0x7065743400295C4FC085EB11400AD7E33FA51300001006000000000000AA00000014AE4740000000000000000000000000, 67186), +(2930840720, 5028, 'zhTW', 0x70657433000AD78B40B81E29C1EC5138C0A41300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5026, 'zhTW', 0x706574323200EC5110C114AE9F407B140EC0A21300001006000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5025, 'zhTW', 0x7065743231003D0AF7BF3333F3401F852BC0A11300001006000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5024, 'zhTW', 0x7065743230001F851F4152B89EC0CDCC7C40A01300001006000000000000AA0000001F853BC06666E63E0000000000000000, 67186), +(2930840720, 5023, 'zhTW', 0x7065743139000AD7E33F3D0A9FC05C8F42C09F1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5022, 'zhTW', 0x706574313800C3F59EC148E1FABF5C8F02C09E1300001006000000000000AA0000005C8F42C0000000000000000000000000, 67186), +(2930840720, 5021, 'zhTW', 0x70657431370014AE27C05C8F32C014AE37C09D1300001006000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5020, 'zhTW', 0x706574313600AE4761BEC3F52C41C3F528C09C1300001006000000000000AA0000009A992940000000000000000000000000, 67186), +(2930840720, 5019, 'zhTW', 0x7065743135009A999FC1713DEA409A999FC19B1300001006000000000000A9010000C3F548400000000000000000E17A943E, 67186), +(2930840720, 5018, 'zhTW', 0x706574313400295C9FC18FC235C09A9999BF9A1300001006000000000000AA0000000AD733C0CDCCCCBD0000000000000000, 67186), +(2930840720, 5017, 'zhTW', 0x706574313300A4708DC1713D1A40D7A3D0BF991300001006000000000000AA000000713D3A40000000000000000000000000, 67186), +(2930840720, 5016, 'zhTW', 0x706574313200C3F588BF333333405C8F42C0981300001006000000000000AA000000CDCC3C40000000000000000000000000, 67186), +(2930840720, 5015, 'zhTW', 0x706574313100EC510CC1666626BF9A9919C0971300001006000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5014, 'zhTW', 0x706574323200B81E01C1AE4799407B140EC0961300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 5013, 'zhTW', 0x706574323100CDCCCCBF8FC2DD4014AE27C0951300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5012, 'zhTW', 0x70657432300052B85E41EC51F8C0E17A2440941300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 5011, 'zhTW', 0x706574313900295C63C148E1F2C08FC255C0931300000F06000000000000AA0000003D0A37C00000000000000000AE47E13D, 67186), +(2930840720, 5010, 'zhTW', 0x70657431380066669EC15C8F02C05C8F02C0921300000F06000000000000AA000000333343C0000000000000000000000000, 67186), +(2930840720, 5009, 'zhTW', 0x70657431370048E10AC048E13AC0D7A340C0911300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 5008, 'zhTW', 0x706574313600F6282C409A9931413D0A27C0901300000F06000000000000AA000000C3F52840000000000000000000000000, 67186), +(2930840720, 5007, 'zhTW', 0x706574313500C3F59EC1A4708F41C3F59EC18F1300000F06000000000000A9010000CDCC3C40000000008FC2F5BCE17A943E, 67186), +(2930840720, 5006, 'zhTW', 0x7065743134005C8F9EC1AE4701C0A4709DBF8E1300000F06000000000000AA0000000AD733C000000000295C8F3D00000000, 67186), +(2930840720, 5005, 'zhTW', 0x706574313300CDCC8CC10AD713406666C6BF8D1300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 5004, 'zhTW', 0x706574313200CDCC4C3D3D0A3740295C5FC08C1300000F06000000000000AA000000CDCC3C40000000008FC2F5BD00000000, 67186), +(2930840720, 5003, 'zhTW', 0x706574313100E17AFCC0295C4FBFAE4721C08B1300000F06000000000000AA0000007B142EC0CDCC4C3D8FC2F53C00000000, 67186), +(2930840720, 5002, 'zhTW', 0x70657431300000008041CDCCC4C0295C4FC08A1300000F06000000000000AA0000003D0A47C00000000000000000AE47E13D, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(2930840720, 5001, 'zhTW', 0x706574390085EBD9C0B81E85BF9A99B93F891300000F06000000000000AA0000007B142EC0000000000000000000000000, 67186), +(2930840720, 5000, 'zhTW', 0x7065743800A4707DBF713D26415C8F42C0881300000F06000000000000AA0000000000204000000000000000008FC2753D, 67186), +(2930840720, 4999, 'zhTW', 0x706574370014AE87413D0A57C18FC2F53C871300000F06000000000000AA0000003D0A47C0000000000000000000000000, 67186), +(2930840720, 4998, 'zhTW', 0x706574360085EBE1C0A470D5C09A9909C0861300000F06000000000000AA000000713D3AC0000000000000000000000000, 67186), +(2930840720, 4997, 'zhTW', 0x70657435008FC297411F850BC11F851BC0851300000F06000000000000AA0000001F853BC0000000000000000000000000, 67186), +(2930840720, 4996, 'zhTW', 0x70657434003D0A17BF66661640CDCCEC3F841300000F06000000000000AA0000003D0A4740000000000000000000000000, 67186), +(2930840720, 4995, 'zhTW', 0x70657433008FC221411F8543C13D0A57C0831300000F06000000000000AA000000B81E25C0000000000000000000000000, 67186), +(2930840720, 4993, 'zhTW', 0x7065743200E17A7041C3F53C410AD723BC811300000F06000000000000AA0000009A993940000000000000000000000000, 67186), +(2930840720, 4992, 'zhTW', 0x70657431009A99394133335741AE4721C0801300000F06000000000000AA0000000AD733400000000000000000CDCCCC3D, 67186), +(21457424, 1552, 'zhTW', 0x100600000000000000FFFFFFFF, 67186), +(21457424, 1551, 'zhTW', 0x0F0600000000000000FFFFFFFF, 67186), +(3386943305, 340484, 'zhTW', 0x0000000000000000B50DF10C00000601081000000000000000028000000A000000010000000002000000000000000000000088ED0300, 67186), +(600565378, 667023, 'zhTW', 0x001E02000000803F0000803F000000B6120400, 67186), +(2948698321, 8207, 'zhTW', 0x23037A6A08F3FB91, 67186), +(3495286709, 24817, 'zhTW', 0xF0D4B269F505000012000000, 67186), +(671580526, 155, 'zhTW', 0xE8A39DE8BFB7E8978FE7ABB6E8B3BD00E4BDBFE794A8E5AEB6E585B7E78EA9E8BAB2E8B293E8B293002D20E99C80E8A681E887B3E69A97E4B98BE5A49CEFBC8CE69C80E4BD8EE7AD89E7B49A3130E7B49A0D0A2D20E4BC91E99692E38081E99D9EE887B4E591BD5076500D0A2D20E58385E99990E596AEE4BABAE4BD87E58897E38082E58FAFE59CA8E98A80E69C88E59F8EE79A84E58E9FE9878EE7B994E88085E998BFE88C89E895BEE5A89CE89995E58AA0E585A5E99A8AE4BC8DE4BD87E58897E380820D0A2D20E8A2ABE689BEE588B0E4B8A6E8A2ABE68A93E588B0E5B0B1E7AE97E587BAE5B180EFBC81009B00000000000000AB0C000000000000, 67186), +(3776013982, 1297413, 'zhTW', 0x000000, 67186), +(3776013982, 149981, 'zhTW', 0x000000, 67186), +(3330775162, 1897, 'zhTW', 0x0A1A0000D0740100, 67186), +(3330775162, 1896, 'zhTW', 0x0A1A0000B8740100, 67186), +(3330775162, 1895, 'zhTW', 0x0A1A0000B5740100, 67186), +(3330775162, 1894, 'zhTW', 0x0A1A0000CF740100, 67186), +(3330775162, 1893, 'zhTW', 0x0A1A0000AE740100, 67186), +(3330775162, 1892, 'zhTW', 0x0A1A0000CE740100, 67186), +(4033975491, 615947, 'zhTW', 0x000000000000000000000000000000000000000000000000B4AD0000FF00000000000000000000000000000000000000000000000000000000CDCC4C3F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000061030400, 67186), +(2533050585, 1552, 'zhTW', 0x7072696D6172790000000000000000000000804000000000000000000000C0BF10060000270600000100000000368D27400000000000000000C2B8323E0000000000000000000060410000004100009041, 67186), +(2930840720, 5104, 'zhTW', 0x706C617965722D726964657200000000000000000000000000F01300002706000000000000AA00000000000000000000000000000000000000, 67186), +(2930840720, 5103, 'zhTW', 0x777261707065640000000000000000009A99993EEF13000027060000000000000100000000000000C2B8323E0000000000000000, 67186), +(2930840720, 5102, 'zhTW', 0x756E7772617070656400000000000000000000002040EE130000270600000900000006000000000000000000000000000000CDCCCC3E, 67186), +(21457424, 1575, 'zhTW', 0x270600000000000000FFFFFFFF, 67186), +(3072882582, 54147, 'zhTW', 0x9F0100000000531E0000, 67186), +(2381039112, 7763, 'zhTW', 0x00531E000000000000610500000000000000000000010000000001000000, 67186), +(2381039112, 7762, 'zhTW', 0x00521E000000000000AE0500000000000000000000010000000001000000, 67186), +(3855640965, 5850, 'zhTW', 0xDA16000099000000AD080000640000000200000000000000, 67186), +(3855640965, 5849, 'zhTW', 0xD916000099000000AC080000640000000200000000000000, 67186), +(3855640965, 5848, 'zhTW', 0xD816000099000000AB080000640000000200000000000000, 67186), +(3855640965, 5847, 'zhTW', 0xD716000066000000AD080000640000000200000000000000, 67186), +(3855640965, 5846, 'zhTW', 0xD616000066000000AC080000640000000200000000000000, 67186), +(3855640965, 5845, 'zhTW', 0xD516000066000000AB080000640000000200000000000000, 67186), +(3855640965, 5844, 'zhTW', 0xD4160000A1000000AD080000640000000100000000000000, 67186), +(3855640965, 5843, 'zhTW', 0xD3160000A1000000AC080000640000000100000000000000, 67186), +(3855640965, 5842, 'zhTW', 0xD2160000A1000000AB080000640000000100000000000000, 67186), +(4033975491, 620445, 'zhTW', 0x00000000000000000000803F000000000000000000000000EBB70000FF000000000000000000000000000000000000000000000000000000000000A04000000000FFFFFFFFFFFF000000000000000000000000000000000000000000002C100400, 67186), +(1181150530, 753105, 'zhTW', 0x050000008A1705002C100400, 67186), +(1181150530, 753104, 'zhTW', 0x020000009D7709002C100400, 67186), +(3425193231, 547256, 'zhTW', 0x060000000D0000000000000000000000000000000000000004000000A5EE03000000000000000000DCC90200, 67186), +(3425193231, 547255, 'zhTW', 0x060000000D00000000000000000000000000000000000000040000009CD103000000000000000000DCC90200, 67186), +(3425193231, 547254, 'zhTW', 0x030000000D00000000000000000000000000000000000000010000002C1004000000000000000000DCC90200, 67186), +(1408785804, 249390, 'zhTW', 0x2ECE0300FF60C50200, 67186), +(1122246768, 249390, 'zhTW', 0xF809000087C60D45DD222BC54BB54843E9E4030020580200B33900000000000060C50200, 67186), +(1408785804, 249389, 'zhTW', 0x2DCE0300FF60C50200, 67186), +(1122246768, 249389, 'zhTW', 0x6B060000B92E8244AB0494C3CDCC8C40E9E4030020580200772100000000000060C50200, 67186), +(1408785804, 249388, 'zhTW', 0x2CCE0300FF60C50200, 67186), +(1122246768, 249388, 'zhTW', 0x00000000B8630146790A90C5D6569541E9E4030020580200613E00000000000060C50200, 67186), +(1408785804, 249387, 'zhTW', 0x2BCE0300FF60C50200, 67186), +(1122246768, 249387, 'zhTW', 0x8C090000AB9A3F43C78D39C44FF84E44E9E4030020580200263600000000000060C50200, 67186), +(1408785804, 249386, 'zhTW', 0x2ACE0300FF60C50200, 67186), +(1122246768, 249386, 'zhTW', 0xAE080000D50AEDC48057A2449AA1A445E9E4030020580200452900000000000060C50200, 67186), +(1408785804, 249385, 'zhTW', 0x29CE0300FF60C50200, 67186), +(1122246768, 249385, 'zhTW', 0x6A060000D5ABEEC4F2019D4439C53E42E9E4030020580200332100000000000060C50200, 67186), +(4014102324, 181600, 'zhTW', 0x4974656D20417070656172616E63653A202833303231363629202D2031322E302E3020576561706F6E20576172676C6169766573202D20476C616976655F31485F4461726B4E616172755F445F30310060C5020003000000569C040000000000, 67186), +(4033975491, 622091, 'zhTW', 0x000000000000000000000000000000000000000000000000CF960000FF850C00000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 622081, 'zhTW', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A5140400, 67186), +(4033975491, 622079, 'zhTW', 0x0000000000000000CDCCCC3E00000000000000000000000069DA0000FF350E0000000000000000000000000000000000000000000000000000CDCC4C3D00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622078, 'zhTW', 0x00000000000000009A9919BF00000000000000000000000048D00000FF350E0000DB0F494000000000000000000000000000000000000000009A99193F00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A3140400, 67186), +(4033975491, 622077, 'zhTW', 0x0000000000000000000000BF0000000000000000000000006ADA0000FF850C0000DB0F49400000000000000000000000000000000000000000CDCCCC3E00000000FFFFFFFFFFFFF91E0000000000000000000000000000000000000000A2140400, 67186), +(4033975491, 588487, 'zhTW', 0x0000000000000000000000000000000000000000000000001CCA000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003A850300, 67186), +(1181150530, 756006, 'zhTW', 0x020000000B7E0900A2140400, 67186), +(1181150530, 755995, 'zhTW', 0x0500000090080500A5140400, 67186), +(1181150530, 755994, 'zhTW', 0x02000000017E0900A5140400, 67186), +(1181150530, 755992, 'zhTW', 0x0500000090080500A3140400, 67186), +(1181150530, 755991, 'zhTW', 0x02000000FF7D0900A3140400, 67186), +(1181150530, 755990, 'zhTW', 0x02000000FE7D0900A3140400, 67186), +(1181150530, 755989, 'zhTW', 0x0500000090080500A2140400, 67186), +(1181150530, 755988, 'zhTW', 0x02000000FD7D0900A2140400, 67186), +(3425193231, 548452, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000A51404000000000000000000D8CC0200, 67186), +(3425193231, 548451, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000A31404000000000000000000D8CC0200, 67186), +(3425193231, 548450, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000A21404000000000000000000D7CC0200, 67186), +(3425193231, 548449, 'zhTW', 0x07000000080000000000000000000000000000000000000001000000308503000000000000000000D7CC0200, 67186), +(3425193231, 533963, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000ECE50300000000000000000095750200, 67186), +(3425193231, 503686, 'zhTW', 0x0700000008000000000000000000000000000000000000000200000071850300000000000000000095750200, 67186), +(3425193231, 503500, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000E584030000000000000000002A750200, 67186), +(600565378, 664106, 'zhTW', 0xEF2202000000803F0000803F0000004DC30300, 67186), +(3776013982, 1289789, 'zhTW', 0xE7A8AEE6978FE789B9E995B700E5959FE58B95E5BE8CEFBC8CE6AF8FE795B6E4BDA0E4B8A6E99D9EE6ADA3E59CA8E696BDE694BEE781ABE784B0E4B98BE681AFE38081E9A39BE9A8B0E7AD89E9BE8DE6978FE6B395E8A193E69982EFBC8CE5B0B1E69C83E887AAE58B95E4BDBFE794A8E4BABAE5BDA2E6858BE380820000, 67186), +(3776013982, 1283168, 'zhTW', 0x00E59088E68890E4BA94E5808BE58D93E8B68AE8999BE784A1E8A382E78987EFBC8CE8A3BDE980A0E587BAE58D93E8B68AE8999BE784A1E4B98BE6A0B8EFBC8CE4BBA5E4BEBFE68F90E9AB98E3808AE887B3E69A97E4B98BE5A49CE3808BE7ACAC31E8B3BDE5ADA3E79A84E5AE8CE695B4E58D87E7B49AE88BB1E99B842FE582B3E5A587E68896E69C80E9AB98E59381E7B49AE78388E58589E5B7A5E8979DE6ADA6E599A8E68896E9A3BEE59381E79A84E789A9E59381E7AD89E7B49AE380820000, 67186), +(3776013982, 1282778, 'zhTW', 0x00E68F90E9AB98E3808AE887B3E69A97E4B98BE5A49CE3808BE7ACAC31E8B3BDE5ADA3E79A84E5AE8CE695B4E58D87E7B49AE88BB1E99B842FE582B3E5A587E68896E69C80E9AB98E59381E7B49AE78388E58589E5B7A5E8979DE6ADA6E599A8E68896E9A3BEE59381E79A84E789A9E59381E7AD89E7B49AE380820000, 67186), +(3776013982, 1264876, 'zhTW', 0x00E4BBA5E887B4E6ADBBE68993E6938AE68896E9A086E58A88E696ACE5B08DE58F97E58D83E9889EE6BDB0E6938AE5BDB1E99FBFE79A84E79BAEE6A899E980A0E68890E582B7E5AEB3E69982EFBC8CE5A682E69E9CE591BDE4B8AD247332E5808BE4BBA5E4B88AE79A84E79BAEE6A899EFBC8CE69C83E4BDBFE585B6E8BAABE4B88AE79A84E58D83E9889EE6BDB0E6938AE69588E69E9CE5BBB6E995B7247B2473312F313030307D2E31E7A792E380820000, 67186), +(3776013982, 1255629, 'zhTW', 0x00E9878BE694BEE79A84E7B2BEE88FAFE5BCB7E58C96E78EA9E5AEB6EFBC8CE4BDBFE585B6E7A7BBE58B95E9809FE5BAA6E68F90E9AB9824733125EFBC8CE582B7E5AEB3E38081E6B2BBE79982E69588E69E9CE5928CE590B8E694B6E69588E69E9CE68F90E9AB9824733225EFBC8CE68C81E7BA8C2464E38082E6ADA4E69588E69E9CE58FAFE5A086E7968AEFBC8CE4BD86E4B88DE69C83E9878DE7BDAEE585B6E68C81E7BA8CE69982E99693E3808200E7A7BBE58B95E9809FE5BAA6E68F90E9AB9824733125E380820D0AE980A0E68890E79A84E582B7E5AEB3E68F90E9AB9824733225E380820D0AE6B2BBE79982E5928CE590B8E694B6E69588E69E9CE68F90E9AB9824733325E3808200, 67186), +(3776013982, 447444, 'zhTW', 0x00243F63335BE69295E9968BE4B880E98193E8A382E99A995D5BE5BF83E99D88E99C87E78886E69C83E69295E9968BE4B880E98193E6B7B7E4BA82E8A382E99A995DEFBC8CE8A382E99A99E69C83E8BFBDE6938AE695B5E4BABAEFBC8CE68C81E7BA8C2434353031393364E38082E8B7AFE5BE91E4B88AE79A84E695B5E4BABAE58FAAE8A681E980B2E585A5E69588E69E9CE7AF84E59C8DEFBC8CE5B0B1E69C83E6AF8F243435393331347431E7A792E58F97E588B0243434373434387331E9BB9EE69A97E5BDB1E582B7E5AEB3E380820000, 67186), +(372281185, 38, 'zhTW', 0x26000000FA2100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(372281185, 37, 'zhTW', 0x25000000F92100000B00000000000000000000000000000000000000000000000000000076550200, 67186), +(2707547180, 137739, 'zhTW', 0x8DFEECBD86C9CCBD75F5933D55001F3ED175CD3D1F07603E0B1A0200000000000007440000, 67186), +(2921112328, 561713, 'zhTW', 0x319208006A06600300000000000007A668010003000000911607000000000000000000, 67186), +(3495286709, 24488, 'zhTW', 0x90DABD6D5A0B000002000000, 67186), +(3495286709, 24487, 'zhTW', 0x90DABD6D5A0B000005000000, 67186), +(3495286709, 24486, 'zhTW', 0x90DABD6D5A0B000001000000, 67186), +(3495286709, 24485, 'zhTW', 0x90DABD6D5A0B000004000000, 67186), +(3495286709, 24484, 'zhTW', 0x90DABD6D5A0B000003000000, 67186), +(3776013982, 210824, 'zhTW', 0x0024407370656C6C6465736332313037323500E69588E69E9CE7B590E69D9FE69982E69C83E78886E799BC247731E9BB9EE7A798E6B395E582B7E5AEB3E3808200, 67186), +(3386943305, 332898, 'zhTW', 0x0200000002000000100000000000000088104800000004000001800800060200000100000200000000000000001000000000A6D80300, 67186), +(3386943305, 320187, 'zhTW', 0x01000000010000001000000000000000881048000000040400018008000602000001000000000000000000000000000000003BAD0300, 67186), +(3386943305, 320070, 'zhTW', 0x0000000000000000100000000000000088104800000004040001800800060200000100000000000000000000000000000000D3AC0300, 67186), +(3386943305, 319752, 'zhTW', 0x0100000001000000100000000000000088104800000004000001800A00060200000100000000000000000000000000000000A4AB0300, 67186), +(2202435563, 1189289, 'zhTW', 0xA9251200730FECE4450130340800, 67186), +(2921112328, 537648, 'zhTW', 0x3034080000008509000000000000019966010001000000271807000000000000000000, 67186), +(3247720076, 42424, 'zhTW', 0x0464000000, 67186), +(3776013982, 1280123, 'zhTW', 0x000000, 67186), +(3205218938, 54794, 'zhTW', 0x424353484F5254444154454E4F594541520025422025640001000000, 67186), +(3205218938, 22339, 'zhTW', 0x534C4153485F5441524745545F4D41524B455233002F7461726765746D61726B65720001000000, 67186), +(3205218938, 22338, 'zhTW', 0x534C4153485F5441524745545F4D41524B455232002FE79BAEE6A899E6A899E8A8980001000000, 67186), +(3205218938, 22331, 'zhTW', 0x534C4153485F574F524C445F4D41524B455233002F776F726C646D61726B65720001000000, 67186), +(3205218938, 22330, 'zhTW', 0x534C4153485F574F524C445F4D41524B455232002FE4B896E7958CE6A899E8A8980001000000, 67186), +(3205218938, 22329, 'zhTW', 0x534C4153485F574F524C445F4D41524B455231002F776D0001000000, 67186), +(2202435563, 1276526, 'zhTW', 0x6E7A1300941A01F3000090AB0800, 67186), +(2202435563, 1276525, 'zhTW', 0x6D7A1300601A24F3000090AB0800, 67186), +(2202435563, 1276524, 'zhTW', 0x6C7A1300351A63F3000090AB0800, 67186), +(2202435563, 1276523, 'zhTW', 0x6B7A13002F1AD9F3000090AB0800, 67186), +(2202435563, 1276522, 'zhTW', 0x6A7A1300651A2DF4000090AB0800, 67186), +(2202435563, 1276521, 'zhTW', 0x697A1300D21A42F4000090AB0800, 67186), +(2202435563, 1276520, 'zhTW', 0x687A13002F1B28F4000090AB0800, 67186), +(2202435563, 1276519, 'zhTW', 0x677A1300841BD6F3000090AB0800, 67186), +(2202435563, 1276518, 'zhTW', 0x667A1300A11B83F3000090AB0800, 67186), +(2202435563, 1276517, 'zhTW', 0x657A1300841B32F3000090AB0800, 67186), +(2202435563, 1276516, 'zhTW', 0x647A13003A1BF8F2000090AB0800, 67186), +(2202435563, 1276515, 'zhTW', 0x637A1300D31AF9F2000090AB0800, 67186), +(3776013982, 1296760, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296759, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296758, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296756, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296734, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 1296731, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE380820024407370656C6C6175726134343035313300, 67186), +(3776013982, 466930, 'zhTW', 0x00E4BDA0E59897E8A9A6E6AEBAE6ADBBE4B880E5908DE58F97E582B7E79A84E79BAEE6A899EFBC8CE980A0E68890247331E9BB9EE69A97E5BDB1E582B7E5AEB3EFBC8CE5908CE69982E59CA82434363835373264E585A7E980A0E68890243436383537326F31E9BB9EE69A97E5BDB1E582B7E5AEB3E38082E58FAAE883BDE4BDBFE794A8E696BCE7949FE591BDE58A9BE9AB98E696BC24733325E68896E4BD8EE696BC24733225E79A84E695B5E4BABAE380820000, 67186), +(261693969, 95553, 'zhTW', 0xFFFFFFFFFFFFFFFFE9A1AFE78FBEE5AF86E5BAA600001A0D0100385E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95552, 'zhTW', 0xFFFFFFFFFFFFFFFFE8AABFE69FA5E9BB91E69A97E696B9E5B096E7A2910000190D0100125C020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 95550, 'zhTW', 0xFFFFFFFFFFFFFFFFE5898AE5BCB1E4BB96E58091E79A84E58BA2E58A9B0000170D0100315E020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000901000000000000002000000000130028000000008020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3776013982, 1291739, 'zhTW', 0xE982AAE683A1E9B197E789870000E782BAE5ADB8E5BE92E5858BE696AFE78FADE8B3A6E4BA88E683A1E6848FE681A9E6BEA4EFBC8CE4BDBFE585B6E7949FE591BDE58A9BE5928CE582B7E5AEB3E68F90E9AB982431323839313032733125EFBC8CE4B8A6E58FAFE696BDE694BEE982AAE683A1E9B197E78987E3808200, 67186), +(3776013982, 1281946, 'zhTW', 0x000000, 67186), +(3776013982, 1270634, 'zhTW', 0x00E5A5A7E6A0B8E9BB9EE7B1B3E98194E788BEE79A84E4B880E5808BE7A798E6B395E58583E7B4A0E5B08DE4BDA0E980A0E68890E79A84E582B7E5AEB3E58AA0E5808DEFBC8CE68C81E7BA8C3135E7A792E3808200E58F97E588B0E99B99E5808DE582B7E5AEB3E3808200, 67186), +(3776013982, 1270085, 'zhTW', 0x0024407370656C6C64657363313237303037390000, 67186), +(3776013982, 1270079, 'zhTW', 0x00E696BDE6B395E88085E78AA7E789B2E7949FE591BDE58A9BEFBC8CE68F9BE68890E7AD89E9878FE79A84E590B8E694B6E8ADB7E79BBEE38082E7A7BBE999A4E69982E8ADB7E79BBEE78886E8A382EFBC8CE5B08D24313237303038356131E7A2BCE585A7E79A84E78EA9E5AEB6E980A0E6889024313237303038357331E9BB9EE69A97E5BDB1E582B7E5AEB3E3808200E590B8E694B6247731E9BB9EE582B7E5AEB3E380820D0AE7A7BBE999A4E69982EFBC8CE5B08D24313237303038356131E7A2BCE585A7E79A84E78EA9E5AEB6E980A0E6889024313237303038357331E9BB9EE69A97E5BDB1E582B7E5AEB3E3808200, 67186), +(3776013982, 1258411, 'zhTW', 0x000000, 67186), +(3776013982, 1258410, 'zhTW', 0x00E9A3B2E794A8E4BBA5E78DB2E5BE97E980A0E59E8BE789B9E69588E3808200E784A1E4BD9CE794A8E79A84E5BCB1E58C96E78988E5A587E5A699E4B98BE79083EFBC8CE999A4E4BA86E5BF85E784B6E79A84E6B688E695A3E5A496EFBC8CE588A5E784A1E4BB96E794A8E3808200, 67186), +(3776013982, 1258336, 'zhTW', 0x0024407370656C6C64657363313234313032330000, 67186), +(3776013982, 1257809, 'zhTW', 0x000000, 67186), +(3776013982, 1257729, 'zhTW', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257728, 'zhTW', 0x0024407370656C6C64657363313235373731360000, 67186), +(3776013982, 1257716, 'zhTW', 0x00E696BDE6B395E88085E9968BE5A78BE5BEA9E7949FEFBC8CE5BC95E5B08EE5AE8CE68890E5BE8CEFBC8CE5BEA9E6B4BBE4B8A6E681A2E5BEA9E7949FE591BDE58A9BE4B88AE99990E79A842431323537373238733125E3808200E5BEA9E7949FE4B8ADE38082E5BC95E5B08EE5AE8CE68890E5BE8CEFBC8CE696BDE6B395E88085E5BEA9E6B4BBEFBC8CE4B8A6E681A2E5BEA9E7949FE591BDE58A9BE4B88AE99990E79A842431323537373238733125E3808200, 67186), +(3776013982, 1257505, 'zhTW', 0x00E696BDE6B395E88085E78AA7E789B2E7949FE591BDE58A9BEFBC8CE68F9BE68890E7AD89E9878FE79A84E590B8E694B6E8ADB7E79BBEE3808200E590B8E694B6247731E9BB9EE582B7E5AEB3E3808200, 67186), +(3776013982, 1256189, 'zhTW', 0x000000, 67186), +(3776013982, 1255966, 'zhTW', 0x00E696BDE6B395E88085E6AF8F247431E7A792E681A2E5BEA9E7949FE591BDE58A9BE4B88AE99990E79A8424733125E3808200E6AF8F247431E7A792E681A2E5BEA9E7949FE591BDE58A9BE4B88AE99990E79A8424733125E3808200, 67186), +(3776013982, 1253337, 'zhTW', 0x000000, 67186), +(3776013982, 1253336, 'zhTW', 0x0000E5969DE4B88BE58EBBE5BE8CE8A68BE8AD89E58FAFE79691E5B9BBE8B1A1E280A600, 67186), +(3776013982, 1253194, 'zhTW', 0x0000E5BC95E5B08E00, 67186), +(3776013982, 1253193, 'zhTW', 0x0000E5BC95E5B08E00, 67186), +(3776013982, 1253185, 'zhTW', 0x0000E5BC95E5B08E00, 67186), +(3776013982, 1253064, 'zhTW', 0x000000, 67186), +(3776013982, 1252431, 'zhTW', 0x0024407370656C6C64657363313235323337330000, 67186), +(3776013982, 1241032, 'zhTW', 0x0024407370656C6C646573633132343130323300E6AF8F247431E7A792E980A0E6889024313235383333367331E9BB9EE7A798E6B395E582B7E5AEB3E3808200, 67186), +(3776013982, 1241023, 'zhTW', 0x00E4BD90E68888E99A86E696BDE694BEE69C80E5BE8CE8ADA6E5918AEFBC8CE4B8A6E4BBA5E5B18FE99A9CE4BF9DE8ADB7E887AAE5B7B1EFBC8CE590B8E694B6E68980E58F97E588B0E79A84E582B7E5AEB3E38082E696BDE6B395E5AE8CE68890E69982EFBC8CE5B18FE99A9CE5B087E9968BE5A78BE794A2E7949FE88488E8A19DEFBC8CE6AF8F24313234313033327431E7A792E5B08DE68980E69C89E78EA9E5AEB6E980A0E6889024313235383333367331E9BB9EE7A798E6B395E582B7E5AEB3EFBC8CE79BB4E588B0E5B18FE99A9CE8A2ABE691A7E6AF80E782BAE6ADA2E3808200E590B8E694B6247731E9BB9EE58F97E588B0E79A84E582B7E5AEB3E3808200, 67186), +(3776013982, 1235076, 'zhTW', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235075, 'zhTW', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235072, 'zhTW', 0x00E59BA4E7A98DE88085E5BE9EE69C80E8BF91E79A84E8B387E6BA90E5A086E694B6E99B86EFBC8CE5B087E585B6E4B8ADE4B880E5808BE68A80E883BDE68F9BE68890E696B0E68A80E883BDE38082243F44494646387C3F4449464632335B5D5BE4BB96E4B880E6ACA1E58FAAE883BDE4BF9DE79599E4B880E5808BE68A80E883BDE380825D0000, 67186), +(3776013982, 1235067, 'zhTW', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235066, 'zhTW', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235065, 'zhTW', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1235037, 'zhTW', 0x0024407370656C6C64657363313233353037320000, 67186), +(3776013982, 1233865, 'zhTW', 0x00E889BEE898ADE9878CE4BA9EE59CA8E4B880E5908DE78EA9E5AEB6E8BAABE4B88AE5AE89E7BDAEE58FAFE590B8E694B6247331E9BB9EE6B2BBE79982E69588E69E9CE79A84E8999BE784A1E9AD94E6B395E8ADB7E7BDA9E38082E5A682E69E9C24407370656C6C6E616D6531323333383635E8A2ABE9A985E695A3EFBC8CE589A9E9A498E79A84E590B8E694B6E9878FE69C83E8B7B3E588B0E58FA6E4B880E4BD8DE99AA8E6A99FE78EA9E5AEB6E8BAABE4B88AE3808200E590B8E694B6247731E9BB9EE6B2BBE79982E69588E69E9CE380820D0A0D0AE88BA5E8A2ABE9A985E695A3EFBC8CE589A9E9A498E79A84E590B8E694B6E9878FE58987E69C83E8B7B3E887B3E58FA6E4B880E5908DE78EA9E5AEB6E8BAABE4B88AE3808200, 67186), +(3776013982, 1228865, 'zhTW', 0x00E58FACE5969AE68896E8A7A3E695A3E6ADA4E59D90E9A88EE3808200243F6A31675BE59CB0E99DA2E9809FE5BAA6E68F90E9AB98246A316725E380825D5B5D243F6A31665BE9A39BE8A18CE9809FE5BAA6E68F90E9AB98246A316625E380825D5B5D243F6A31735BE6B8B8E6B3B3E9809FE5BAA6E68F90E9AB98246A317325E380825D5B5D00, 67186), +(3776013982, 1225598, 'zhTW', 0x00243F50433135343832385B7C636E4951313A2D20E59FBAE7A48EE6BD9BE6B0B4E69C8D7C525D5B5D243F50433135343832395B7C636E4951323A2D20E5BCB7E58C96E68EA5E9A0ADE69C8D7C525D5B5D243F50433135343833305B7C636E4951333A2D20E6B7B1E6B5B7E6B2B9E6B199E69C8D7C525D5B5D243F50433135343833325B7C636E4951343A2D20E5B895E5858BE6B7B1E6BA9DE4B98BE9B0ADE69C8D7C525D5B5D0D0AE6B8B8E6B3B3E9809FE5BAA62B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20E59FBAE7A48EE591BCE590B8E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313232343730306D36E596AEE4BD8D0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20E6B7B1E6B5B7E6BD9BE6B0B4E88085E794A8E9818EE79A84E6B0A7E6B0A3E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313237313631336D36E596AEE4BD8D0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20E6B7B1E6B7B5E8A9A6E78589E6B0A7E6B0A3E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313237313631346D36E596AEE4BD8D0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20E7B48DE7BE85E68B89E5858BE79A84E591BCE590B8E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313237313631356D36E596AEE4BD8D0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20E59FBAE7A48EE8AA98E9A48C7C520D0AE58FAFE987A3E588B0E699AEE9809AE7949FE789A90D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20E88AACE8ABBEE9A48CE9A39FE8AA98E9A48C7C520D0AE58FAFE987A3E588B0E584AAE7A780E7949FE789A90D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20E9AFB0E9B0ADE9AD9AE8AA98E9A48C7C520D0AE58FAFE987A3E588B0E7A880E69C89E7949FE789A90D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20E5B9BDE69A97E6BC82E68EA0E9AD9AE88289E8AA98E9A48C7C520D0AE58FAFE987A3E588B0E58FB2E8A9A9E7949FE789A90D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20E6B7BAE78198E7B6B2E5AD907C520D0AE5B096E588BAE788ACE8A18CE88085E5928CE6A398E588BAE6B5B7E9A6AC0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20E4B889E9878DE7B5B2E7B6B27C520D0AE68980E69C89E5B08FE59E8BE7949FE789A90D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20E9AB98E5A393E69C9BE981A0E98FA17C520D0AE58FAFE799BCE78FBEE58FA4E4BBA3E88196E789A95D5B5D0D0A00243F50433135343832385B7C636E4951313A2D20E59FBAE7A48EE6BD9BE6B0B4E69C8D7C525D5B5D243F50433135343832395B7C636E4951323A2D20E5BCB7E58C96E68EA5E9A0ADE69C8D7C525D5B5D243F50433135343833305B7C636E4951333A2D20E6B7B1E6B5B7E6B2B9E6B199E69C8D7C525D5B5D243F50433135343833325B7C636E4951343A2D20E5B895E5858BE6B7B1E6BA9DE4B98BE9B0ADE69C8D7C525D5B5D0D0AE6B8B8E6B3B3E9809FE5BAA62B247731250D0A243F50433135343833365B0D0A7C636E4951313A2D20E59FBAE7A48EE591BCE590B8E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313232343730306D36E596AEE4BD8D0D0A5D5B5D243F50433135343833355B0D0A7C636E4951323A2D20E6B7B1E6B5B7E6BD9BE6B0B4E88085E794A8E9818EE79A84E6B0A7E6B0A3E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313237313631336D36E596AEE4BD8D0D0A5D5B5D243F50433135343833345B0D0A7C636E4951333A2D20E6B7B1E6B7B5E8A9A6E78589E6B0A7E6B0A3E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313237313631346D36E596AEE4BD8D0D0A5D5B5D243F50433135343833335B0D0A7C636E4951343A2D20E7B48DE7BE85E68B89E5858BE79A84E591BCE590B8E793B67C520D0AE6B0A7E6B0A3E4B88AE9999024313237313631356D36E596AEE4BD8D0D0A5D5B5D243F50433135343834305B0D0A7C636E4951313A2D20E59FBAE7A48EE8AA98E9A48C7C520D0AE58FAFE987A3E588B0E699AEE9809AE7949FE789A90D0A5D5B5D243F50433135343833395B0D0A7C636E4951323A2D20E88AACE8ABBEE9A48CE9A39FE8AA98E9A48C7C520D0AE58FAFE987A3E588B0E584AAE7A780E7949FE789A90D0A5D5B5D243F50433135343833385B0D0A7C636E4951333A2D20E9AFB0E9B0ADE9AD9AE8AA98E9A48C7C520D0AE58FAFE987A3E588B0E7A880E69C89E7949FE789A90D0A5D5B5D243F50433135343833375B0D0A7C636E4951343A2D20E5B9BDE69A97E6BC82E68EA0E9AD9AE88289E8AA98E9A48C7C520D0AE58FAFE987A3E588B0E58FB2E8A9A9E7949FE789A90D0A5D5B5D243F50433134353932365B0D0A7C636E4951323A2D20E6B7BAE78198E7B6B2E5AD907C520D0AE5B096E588BAE788ACE8A18CE88085E5928CE6A398E588BAE6B5B7E9A6AC0D0A5D5B5D243F50433135323532375B0D0A7C636E4951333A2D20E4B889E9878DE7B5B2E7B6B27C520D0AE68980E69C89E5B08FE59E8BE7949FE789A90D0A5D5B5D243F50433135353337305B0D0A7C636E4951343A2D20E9AB98E5A393E69C9BE981A0E98FA17C520D0AE58FAFE799BCE78FBEE58FA4E4BBA3E88196E789A95D5B5D00, 67186), +(3776013982, 1225322, 'zhTW', 0x007C636E475245454E5F464F4E545F434F4C4F523AE5BBBAE8ADB0E68A80E883BDEFBC9A7C72310D0A0D0AE5B9B3E99D9CE784A1E6AF94E79A84E6B0B4E59F9FE4BDBFE585B6E68890E782BAE987A3E6898BE9968BE5A78BE68EA2E7B4A2E6B0B4E4B8ADE6BC81E78DB2E79A84E79086E683B3E59CB0E9BB9EE380820D0A0D0AE59CA8E6ADA4E59CB0E58D80E799BCE78FBEE79A84E6B0B4E6B1A0EFBC9A0D0A2D20E5A4AAE999BDE4B98BE4BA95E9AD9AE7BEA40D0A2D20E58692E6B3A1E88AB1E9AD9A0D0A2D20E88AB1E9AD9AE7BEA40D0A2D20E9BB8FE7A8A0E8999BE784A10D0A2D20E7B297E5BF83E987A3E4B88AE79A84E8B2A8E789A90D0A2D20E5A4B1E890BDE5AFB6E8978F0000, 67186), +(3776013982, 1225281, 'zhTW', 0x00E5969CE6ADA1E6A3B2E681AFE59CA8E6B0B8E6AD8CE6A3AEE69E97E79A84E5B9B3E99D9CE6B0B4E59F9FE79A84E6BAABE9A6B4E7949FE789A9E38082E5B08DE699AEE9809AE987A3E6898BE8808CE8A880EFBC8CE98099E7A8AEE6B0B4E59F9FE68896E8A8B1E5BE88E5AEB9E69893E4B88BE7ABBFEFBC8CE4BD86E58FAAE69C89E69C80E6958FE98AB3E79A84E987A3E6898BE6898DE883BDE987A3E588B0E98099E7A8AEE9AD9AE380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AEFBC9A7C520D0A0D0A24407370656C6C69636F6E3132333739343224407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E98099E7A8AEE9AD9AE79A84E59CB0E58D80EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E59388E69C97E981940D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE987A3E9AD9AE6B1A0EFBC9A7C720D0AE7B6BBE694BEE6B4AAE6B5810000, 67186), +(3776013982, 1225277, 'zhTW', 0x00E59388E69C97E98194E79A84E6B0B4E4B8ADE590ABE69C89E78DA8E789B9E79A84E7A4A6E789A9E8B3AAEFBC8CE9809AE9818EE5BEA9E882B2E79A84E6AD8CE594B1E9AD9AE79A84E9AD9AE9B093E69982EFBC8CE69C83E799BCE587BAE8BC95E69F94E58B95E881BDE79A84E6B0B4E4B88BE6978BE5BE8BE38082E58498E7AEA1E59CA8E987A3E6898BE881BDE4BE86E5BE88E68285E880B3EFBC8CE4BD86E98099E9A696E6AD8CE58DBBE69C83E588A9E794A8E7B4B0E5BEAEE79A84E99C87E58B95E8B695E8B5B0E68EA0E9A39FE88085E38082E5A682E69E9CE689ADE69BB2E78788E9AD9AE7AD89E68EA0E9A39FE88085E99DA0E5BE97E5A4AAE8BF91EFBC8CE99C87E58B95E4B99FE69C83E8AE8AE5BE97E69BB4E58AA0E58A87E78388E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AEFBC9A7C520D0A0D0A24407370656C6C69636F6E31323337313034E783B9E9A3AAE79B9BE5AEB40D0A0D0AE98099E7A8AEE6A5B5E782BAE7A880E69C89E58F88E7BE8EE591B3E79A84E9AD9AE698AFE8A8B1E5A49AE887B3E69A97E4B98BE5A49CE783B9E9A3AAE9A39FE8AD9CE79A84E9878DE8A681E9A39FE69D90E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E98099E7A8AEE9AD9AE79A84E59CB0E58D80EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E59388E69C97E981940D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE987A3E9AD9AE6B1A0EFBC9A7C720D0A2D20E88AB1E9AD9AE7BEA40D0A2D20E58692E6B3A1E88AB1E9AD9A0D0A2D20E5A4AAE999BDE4B98BE4BA95E9AD9AE7BEA40D0A2D20E7B6BBE694BEE6B4AAE6B5810000, 67186), +(3776013982, 1225273, 'zhTW', 0x00E4B880E7A8AEE4BBA4E4BABAE6A5B5E782BAE58F8DE6849FE79A84E8999BE784A1E9A2A8E69AB4E7949FE789A9E38082E585B6E882A2E9AB94E69C83E5BE9EE58FAFE987A3E9AD9AE79A84E8999BE784A1E58D80E59F9FE4BCB8E587BAE38082E99D88E5B7A7E38081E78BA1E78CBEE38081E881B0E6988EEFBC8CE5B08DE69C89E58B87E6B0A3E59CA8E8999BE784A1E9A2A8E69AB4E987A3E9AD9AE79A84E987A3E6898BE8808CE8A880EFBC8CE698AFE99BA3E5BAA6E6A5B5E9AB98E79A84E68C91E688B0E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AEFBC9A7C520D0A0D0A24407370656C6C69636F6E31323337313034E783B9E9A3AAE79B9BE5AEB40D0A0D0AE98099E7A8AEE6A5B5E782BAE7A880E69C89E58F88E7BE8EE591B3E79A84E9AD9AE698AFE8A8B1E5A49AE887B3E69A97E4B98BE5A49CE783B9E9A3AAE9A39FE8AD9CE79A84E9878DE8A681E9A39FE69D90E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E98099E7A8AEE9AD9AE79A84E59CB0E58D80EFBC9A7C520D0A0D0A2D20E8999BE784A1E9A2A8E69AB40D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE987A3E9AD9AE6B1A0EFBC9A7C720D0A0D0A2D20E6B5B7E6B48BE6BCA9E6B8A60D0A2D20E9BB8FE7A8A0E8999BE784A10000, 67186), +(3776013982, 1225272, 'zhTW', 0x00E4B880E7A8AEE5A085E7A1ACE79A84E98A80E889B2E6A398E9AD9AEFBC8CE59CA8E585B6E8BAABE9AB94E79A84E7B297E6A398E588BAE4BCB8E59091E4BB96E58091E5898DEFBC8CE784A1E8AB96E698AFE987A3E6898BEFBC8CE68896E698AFE585B6E4BB96E9AD9AEFBC8CE983BDE69C83E683B3E6ACA3E8B39EE4B880E795AAE38082E7BE8EE9BA97E58DBBE99BA3E4BBA5E68EA5E8BF91EFBC8CE4B88DE9818EE69C89E68AB1E8B2A0E79A84E987A3E6898BE7B595E5B08DE698AFE4BE86E88085E4B88DE68B92E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AEFBC9A7C520D0A0D0A24407370656C6C69636F6E3132333739343224407370656C6C6E616D65313233373934320D0A0D0A24407370656C6C64657363313233373934320D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E98099E7A8AEE9AD9AE79A84E59CB0E58D80EFBC9A7C520D0A2D20E6B0B8E6AD8CE6A3AEE69E970D0A2D20E59388E69C97E981940D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE987A3E9AD9AE6B1A0EFBC9A7C720D0A2D20E58692E6B3A1E88AB1E9AD9A0D0A2D20E5A4AAE999BDE4B98BE4BA95E9AD9AE7BEA40D0A2D20E88AB1E9AD9AE7BEA40D0A2D20E7B6BBE694BEE6B4AAE6B5810000, 67186), +(3776013982, 444803, 'zhTW', 0x00E4B880E7A8AEE4BC91E79CA0E4B8ADE79A84E6B8BAE5B08FE7949FE789A9E38082E98692E4BE86E69982EFBC8CE58498E7AEA1E591A8E59C8DE58589E7B79AE5BEAEE5BCB1EFBC8CE789A0E79A84E9B197E78987E58DBBE4BB8DE69C83E99683E99683E799BCE4BAAEEFBC8CE58D81E58886E88080E79CBCE38082E5B08DE696BCE69C89E68AB1E8B2A0E79A84E987A3E6898BE8808CE8A880EFBC8CE98099E7A8AEE4BD8EE8AABFE58F88E7BE8EE9BA97E79A84E7949FE789A9E698AFE5BE88E5A5BDE79A84E79BAEE6A899E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE789B9E6AE8AEFBC9A7C720D0A0D0A24407370656C6C69636F6E343435313237E696B0E9AEAEE9AD9AE789870D0A0D0AE4BBA5E783B9E9A3AAE68A80E883BDE89995E79086E98099E7A8AEE9AD9AEFBC8CE58FAFE8A3BDE980A0E5A4A7E9878FE79A84E696B0E9AEAEE9AD9AE78987E380820D0A0D0A7C636E475245454E5F464F4E545F434F4C4F523AE58FAFE4BBA5E689BEE588B0E98099E7A8AEE9AD9AE79A84E59CB0E58D80EFBC9A7C520D0A0D0A2D20E998BFE88CB22DE58DA1E7BD95E789B90D0A2D20E587B1E7919EE8A5BFE7B6A0E6B4B20000, 67186), +(3205218938, 56772, 'zhTW', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453400E69C89E5B088E5AEB6E59CA8E5A0B40001000000, 67186), +(3205218938, 56771, 'zhTW', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453300E8AA8DE79C9F0001000000, 67186), +(3205218938, 56770, 'zhTW', 0x47524F55505F46494E4445525F47454E4552414C5F504C41595354594C453200E8BC95E9AC860001000000, 67186), +(3205218938, 22337, 'zhTW', 0x534C4153485F5441524745545F4D41524B455231002F746D0001000000, 67186), +(3776013982, 1250759, 'zhTW', 0x000000, 67186), +(1010104591, 26054, 'zhTW', 0x00C665000048BE0300FFFF93E51200, 67186), +(326190544, 16231, 'zhTW', 0xE6B49BE5A786E68BB1E9968000000000000000000000000000673F000000000000000000000300000001019BF94A0074C5720005000000D70A04000000803F0A000000E3090000020000000000000000, 67186), +(326190544, 11499, 'zhTW', 0xE88FAFE9BA97E8BE9BE5A49AE99BB7E787ADE58FB000000000000000000000000000EB2C0000000000000000000002000000020136C55E00E92B7100010000008AED03000000803F0A000000B8060000020000000000000000, 67186), +(326190544, 10852, 'zhTW', 0xE5B9BDE59D91E59F8EE68A80E5B8ABE79A84E68E9BE7878800000000000000000000000000642A00000000000000000000020000000301B2525600A34E71000100000099E603000000803F0A00000021060000020000000000000000, 67186), +(326190544, 8989, 'zhTW', 0xE98194E68B89E784B6E6BF83E7B8AEE59296E595A1E6A99F000000000000000000000000001D23000000000000000000000300000001012DEA1300434B71000300000089D803000000803F0A00000028050000030000000000000000, 67186), +(326190544, 5689, 'zhTW', 0xE6AF80E6BB85E88085E781ABE79B86000000000000000000000000003916000000000000000000000200000001011E036E009F48710003000000E0CF03000000803F0A00000058040000020000000000000000, 67186), +(326190544, 5115, 'zhTW', 0xE69C89E7BDA9E990B5E78788E7B1A000000000000000000000000000FB13000000000000000000000200000001015EA60E00F3477100010000006ACC03000000803F0A00000016030000020000000000000000, 67186), +(326190544, 1801, 'zhTW', 0xE5B883E7919EE799BBE6BAAAE78599E99CA7E78788E7B1A000000000000000000000000000090700000000000000000000020000000101CEC1690057407100010000006FBF03000000803F0A00000077010000020000000000000000, 67186), +(326190544, 1261, 'zhTW', 0xE99D9EE5B8B8E58FAFE99DA0E79A84E5B9BDE59D91E59F8EE8B7AFE7878800000000000000000000000000ED0400000000000000000000020000000101DED15600312C71000300000048BE03000000803F0A000000DF000000020000000000000000, 67186), +(3855640965, 5841, 'zhTW', 0xD11600006600000082080000640000000000000000000000, 67186), +(3855640965, 5840, 'zhTW', 0xD01600006600000087080000640000000000000000000000, 67186), +(3855640965, 5839, 'zhTW', 0xCF1600006600000083080000640000000000000000000000, 67186), +(3855640965, 5838, 'zhTW', 0xCE1600006600000084080000640000000000000000000000, 67186), +(3855640965, 5837, 'zhTW', 0xCD1600006600000086080000640000000000000000000000, 67186), +(3855640965, 5836, 'zhTW', 0xCC1600006600000085080000640000000000000000000000, 67186), +(3855640965, 5835, 'zhTW', 0xCB160000660000007F080000640000000000000000000000, 67186), +(3855640965, 5834, 'zhTW', 0xCA1600006600000080080000640000000000000000000000, 67186), +(3855640965, 5833, 'zhTW', 0xC91600006600000081080000640000000000000000000000, 67186), +(3855640965, 5832, 'zhTW', 0xC81600006600000089080000640000000000000000000000, 67186), +(3855640965, 5831, 'zhTW', 0xC71600006600000088080000640000000000000000000000, 67186), +(3855640965, 5830, 'zhTW', 0xC61600009900000082080000640000000000000000000000, 67186), +(3855640965, 5829, 'zhTW', 0xC51600009900000087080000640000000000000000000000, 67186), +(3855640965, 5828, 'zhTW', 0xC41600009900000083080000640000000000000000000000, 67186), +(3855640965, 5827, 'zhTW', 0xC31600009900000084080000640000000000000000000000, 67186), +(3855640965, 5826, 'zhTW', 0xC21600009900000086080000640000000000000000000000, 67186), +(3855640965, 5825, 'zhTW', 0xC11600009900000085080000640000000000000000000000, 67186), +(3855640965, 5824, 'zhTW', 0xC0160000990000007F080000640000000000000000000000, 67186), +(3855640965, 5823, 'zhTW', 0xBF1600009900000080080000640000000000000000000000, 67186), +(3855640965, 5822, 'zhTW', 0xBE1600009900000081080000640000000000000000000000, 67186), +(3855640965, 5821, 'zhTW', 0xBD1600009900000089080000640000000000000000000000, 67186), +(3855640965, 5820, 'zhTW', 0xBC1600009900000088080000640000000000000000000000, 67186), +(3699769440, 31063, 'zhTW', 0x5779000092490000AD130000, 67186), +(3699769440, 31061, 'zhTW', 0x5579000090490000B3130000, 67186), +(3699769440, 31059, 'zhTW', 0x537900008E490000AD130000, 67186), +(3699769440, 31057, 'zhTW', 0x517900008C490000B3130000, 67186), +(1274215428, 869, 'zhTW', 0x650300005800000065B4050000000000000100000000000000, 67186), +(326190544, 21946, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30322E4D3200000000000000000000000000BA5500000000000000000000030500000101541777000F25770005000000E22704000000803F00000000310D0000020000000000000000, 67186), +(326190544, 21945, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F476F75726430312E4D3200000000000000000000000000B95500000000000000000000030500000101B4967200C924770003000000E12704000000803F00000000300D0000020000000000000000, 67186), +(326190544, 21061, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430312E4D3200000000000000000000000000455200000000000000000000030500000101B39672003A8F750001000000251D04000000C03F00000000260C0000020000000000000000, 67186), +(326190544, 21060, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4261736B657430322E4D3200000000000000000000000000445200000000000000000000030500000101B09672003E8F750001000000241D04000000C03F00000000250C0000020000000000000000, 67186), +(326190544, 17750, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F486174436861697230312E4D32000000000000000000000000005645000000000000037C0900030500000101B19672003E3E730003000000570F04000000803F00000000610A0000020000000000000000, 67186), +(326190544, 16102, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F53746F6E654C696F6E30312E4D3200000000000000000000000000E63E00000000000000000000030500000101B69672005DBB720005000000150A04000000803F00000000C4090000020000000000000000, 67186), +(326190544, 16101, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4C616E7465726E30312E4D3200000000000000000000000000E53E00000000000000000000020500000301B59672005ABB720001000000140A04000000803F00000000C3090000020000000000000000, 67186), +(326190544, 16100, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F4D6F6E65795472656530312E4D3200000000000000000000000000E43E00000000000000000000030500000101B296720056BB720003000000130A04000000803F00000000C2090000020000000000000000, 67186), +(326190544, 16099, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F536964655461626C6530312E4D3200000000000000000000000000E33E00000000000000000000030500000101AF96720051BB720003000000120A04000000803F00000000C1090000020000000000000000, 67186), +(326190544, 16098, 'zhTW', 0x5B444E545D205B4155544F47454E5D20313250485F53686F705F4C756E61724E6577596561725F437572696F5368656C6630312E4D3200000000000000000000000000E23E00000000000000000000030500000101AE9672004CBB720005000000110A04000000803F00000000C0090000020000000000000000, 67186), +(3776013982, 1276894, 'zhTW', 0x00E688B4E8A5BFE89299E696AFE5B087E8A382E78987E8BD89E58C96E782BAE59FBAE7A48EE8999BE784A1E4B98BE6A0B8EFBC8CE4BBA5E89E8DE585A5E5889DE7949FE79A84E8999BE784A1E78694E78890E38082E8999BE784A1E78694E78890E99C80E8A681247331E5808BE59FBAE7A48EE8999BE784A1E4B98BE6A0B8E6898DE883BDE5AE8CE5B7A5E380820D0A0D0AE79BAEE5898DE8B2A2E78DBBEFBC9A244063757272656E6379333430390000, 67186), +(261693969, 94625, 'zhTW', 0xFFFFFFFFFFFFFFFFE4B880E5808BE59FBAE7A48EE8999BE784A1E4B98BE6A0B80000000000007D4C020000000000FFFF01000200000000000000000000000000000000000000000000000000000000000000000000000000000000001A0100009010000000000000020000000800300200000000080200009F710100D371010000000000FFFFFFFFFFFFFFFF, 67186), +(1512352357, 243, 'zhTW', 0x5A0D0000010000000000000000000000C81D0400, 67186), +(1512352357, 242, 'zhTW', 0x5A0D0000010000000000000000000000A91A0400, 67186), +(1181150530, 754613, 'zhTW', 0x14000000EC00000000EC0300, 67186), +(1181150530, 754387, 'zhTW', 0x14000000EB00000046520300, 67186), +(760092799, 236, 'zhTW', 0x0000000000000000000000000000000000EC030007030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E00000000000000001D951300, 67186), +(760092799, 235, 'zhTW', 0x00000000000000000000000000000000465203000A030000FFFFFFFF0000000000000000000000000000000000000000FFFFFFFF9A99993E9A99993E0000000000000000F6330700, 67186), +(3776013982, 1296448, 'zhTW', 0x0024407370656C6C646573633437323038310000, 67186), +(3776013982, 472053, 'zhTW', 0x0024407370656C6C646573633437323038310000, 67186), +(3232102598, 287705, 'zhTW', 0xAEF10400000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000001900000064000000640000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 277374, 'zhTW', 0xC3C70400000040400000C04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000100FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000964300409C46, 67186), +(3232102598, 277371, 'zhTW', 0xC0C70400000000400000804000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B4430000000000000000000000640000006400000003012003000020030000570C00002003000020030000580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 253483, 'zhTW', 0x0C6A0400000040400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(2445379776, 10028, 'zhTW', 0x2C2700007FCC04007FCC040000000000000000000000000085CC04000000000000000000000000007ECC04000000000000000000F7CC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083CC040000000000000000000000000000000000000000000300000000000000007FCC040083CC040085CC040087CC04000000000000000000000000000000000000000000, 67186), +(3776013982, 1296214, 'zhTW', 0x000000, 67186), +(3653642729, 376, 'zhTW', 0x000000008D000000, 67186), +(1673391669, 141, 'zhTW', 0x8A000000, 67186), +(2791084701, 138, 'zhTW', 0x35D30600, 67186), +(2518885667, 13760, 'zhTW', 0xC035000000000000, 67186), +(3776013982, 1296205, 'zhTW', 0x0024407370656C6C64657363313232333834370000, 67186), +(2575642838, 760, 'zhTW', 0x4DC71300000000000000000001000000000000000000000000010C0000, 67186), +(261693969, 94386, 'zhTW', 0xFFFFFFFFFFFFFFFFE8999BE784A1E8A5B2E6938AEFBC9AE7A596E998BFE69BBC00003C090100125D020000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000007DC0000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 94385, 'zhTW', 0xFFFFFFFFFFFFFFFFE8999BE784A1E8A5B2E6938AEFBC9AE6B0B8E6AD8CE6A3AEE69E9700003B0901008248020000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000FDBF000000000000F90C00000000000002000000080130020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(476847390, 192, 'zhTW', 0x0D01F8BB0100F8BB0100F8BB01006F5202006F5202006F520200, 67186), +(3776013982, 1296169, 'zhTW', 0x000000, 67186), +(3776013982, 1296168, 'zhTW', 0x000000, 67186), +(600565378, 665333, 'zhTW', 0xA62D00000000803F0000803F000000140F0400, 67186), +(4150907485, 1224, 'zhTW', 0x5749444745542054454D504C415445202D205363656E6172696F48656164657243757272656E63696573416E644261636B67726F756E6420566973000B000000009916000000000000000000000000000000000000, 67186), +(368401261, 7360, 'zhTW', 0x000061250000000000000000000000000000000000000000, 67186), +(3776013982, 1291767, 'zhTW', 0x0024407370656C6C64657363313239313737300000, 67186), +(3425193231, 529585, 'zhTW', 0x030000000D00000000000000000000000000000000000000030000002AD803000000000000000000F0A70200, 67186), +(1274215428, 198541, 'zhTW', 0x8D0703009A000000CF3D030000000000000500000000000000, 67186), +(1274215428, 83323, 'zhTW', 0x7B4501009A00000023F8020002000000002000000002000000, 67186), +(1274215428, 83126, 'zhTW', 0xB64401009A0000009FAA010002000000001F00000002000000, 67186), +(1274215428, 83125, 'zhTW', 0xB54401009A000000F10C030002000000001E00000002000000, 67186), +(1274215428, 83123, 'zhTW', 0xB34401009A000000E905000001000000001400000002000000, 67186), +(1274215428, 62410, 'zhTW', 0xCAF300009A0000003B0B030001000000001600000000000000, 67186), +(1274215428, 62409, 'zhTW', 0xC9F300009A00000032DD020001000000001300000000000000, 67186), +(1274215428, 62408, 'zhTW', 0xC8F300009A00000002DD020001000000001200000000000000, 67186), +(1274215428, 49020, 'zhTW', 0x7CBF00009A0000000B29040001000000000900000000000000, 67186), +(1274215428, 35941, 'zhTW', 0x658C00009A00000090F8030002000000001900000000000000, 67186), +(1274215428, 26820, 'zhTW', 0xC46800009A0000006F71050001000000000E00000000000000, 67186), +(1274215428, 7614, 'zhTW', 0xBE1D00009A000000E8D0000001000000000C00000000000000, 67186), +(1274215428, 3664, 'zhTW', 0x500E00009A0000009BEF050003000000001D00000000000000, 67186), +(1274215428, 3644, 'zhTW', 0x3C0E00009A00000055EE030002000000001C00000000000000, 67186), +(1274215428, 3604, 'zhTW', 0x140E00009A0000001A39070002000000001B00000000000000, 67186), +(1274215428, 3584, 'zhTW', 0x000E00009A000000D03C050002000000001A00000000000000, 67186), +(1274215428, 3521, 'zhTW', 0xC10D00009A000000C0AA010001000000001000000000000000, 67186), +(1274215428, 3471, 'zhTW', 0x8F0D00009A000000594D000001000000000F00000000000000, 67186), +(1274215428, 3453, 'zhTW', 0x7D0D00009A00000099D7020001000000000700000000000000, 67186), +(1274215428, 3452, 'zhTW', 0x7C0D00009A00000091D7020001000000000800000000000000, 67186), +(1274215428, 3436, 'zhTW', 0x6C0D00009A000000D81F070001000000001700000000000000, 67186), +(1274215428, 2583, 'zhTW', 0x170A00009A000000F8AA010001000000000B00000000000000, 67186), +(1274215428, 2569, 'zhTW', 0x090A00009A000000AD86000001000000001800000000000000, 67186), +(1274215428, 2568, 'zhTW', 0x080A00009A0000000815000001000000001500000000000000, 67186), +(1274215428, 2567, 'zhTW', 0x070A00009A0000000D03000001000000000600000000000000, 67186), +(1274215428, 2467, 'zhTW', 0xA30900009A000000353D070001000000001100000000000000, 67186), +(1274215428, 2466, 'zhTW', 0xA20900009A0000001F0A040001000000000A00000000000000, 67186), +(1274215428, 2465, 'zhTW', 0xA10900009A000000A23F020001000000000D00000000000000, 67186), +(3898252553, 11663, 'zhTW', 0x898200006D670300, 67186), +(3745449290, 8614, 'zhTW', 0xE58480E5BC8FE59CB0E9BB9EEFBC9AE7A0B4E7A28EE78E8BE5BAA700E99984E8BF91E6ADA3E59CA8E980B2E8A18CE58DB1E99AAAE79A84E58480E5BC8FE3808200A6210000CD1464457B8AC4C5C1CAB043000000006D63020000000000BC8C00008F11C2007B20010000000000000000009E72010000000000000000003508000000000000, 67186), +(3776013982, 1296406, 'zhTW', 0x000000, 67186), +(2575642838, 765, 'zhTW', 0x2F4B13000000000098A204000000000000000000000000000000000000, 67186), +(2575642838, 764, 'zhTW', 0xA442130000000000A4A004000000000000000000000000000000000000, 67186), +(191387957, 1320, 'zhTW', 0x8988883D00000000F2F0703E000000009190103ED8D6563FDAD8D83D8C8B0B3F0000803FCDCC4C3E9A99993FE4E2E23ED5D3533F0000803F140000000500000000000040CDCC4C3E, 67186), +(191387957, 1315, 'zhTW', 0xBBBA3A3FFAF8F83EE6E4643EF3F1713FD0CE4E3FC8C6C63E0000803FDEDC5C3F000000003333333F0000003F0000803FFBF9793FAEAD2D3F140000000500000000000040CDCC4C3E, 67186), +(378810315, 1008, 'zhTW', 0x59111300000700000D010000, 67186), +(378810315, 1007, 'zhTW', 0xE8D0000005090000FF000000, 67186), +(378810315, 1006, 'zhTW', 0xE8D0000005090000FE000000, 67186), +(378810315, 1005, 'zhTW', 0xE8D0000005090000FD000000, 67186), +(378810315, 946, 'zhTW', 0x5615130000070000FF000000, 67186), +(378810315, 810, 'zhTW', 0x50AD050002090000BB050000, 67186), +(378810315, 712, 'zhTW', 0x353D070004090000FE000000, 67186), +(378810315, 426, 'zhTW', 0x7A11130006070000FB000000, 67186), +(326190544, 10778, 'zhTW', 0xE6A0B9E7B994E7AA97E688B6000000000000000000000000001A2A000000000000E3E9080003000000010138FF5E008F4E7100050000009EE303000000803F0A0000001C060000020000000000000000, 67186), +(326190544, 10542, 'zhTW', 0xE3808CE6B0B8E6AD8CE78788E7B1A0E3808DE59C96E795AB000000000000000000000000002E29000000000000000000000300000002012C7E6E00834E71000100000035E303000000803F0A000000F5050000020000000000000000, 67186), +(326190544, 10327, 'zhTW', 0xE6A0B9E7B994E5A4A7E99680000000000000000000000000005728000000000000C9D6080003000000010139FF5E008A527100050000006FE103000000803F0A000000D8050000020000000000000000, 67186), +(326190544, 8993, 'zhTW', 0xE79C9FE88F8CE897A4E69EB60000000000000000000000000021230000000000000000000003000000010136FF5E00534B7100050000008DD803000000803F0A0000002B050000020000000000000000, 67186), +(326190544, 8877, 'zhTW', 0xE5A5A2E88FAFE88E93E5AD90E6B4BE00000000000000000000000000AD2200000000000000000000030000000101E4555C00DB4A7100010000000AD803000000803F0A0000000D050000020000000000000000, 67186), +(326190544, 2605, 'zhTW', 0xE7B297E8A3BDE59388E69C97E98194E79B86E6A0BD000000000000000000000000002D0A0000000000000000000003000000010126FF5E00A644710005000000C2C503000000803F0A000000250300000200000000AC050000, 67186), +(326190544, 2299, 'zhTW', 0xE5AE8FE58189E892BCE7A9B9E58585E883BDE6B0B4E699B600000000000000000000000000FB08000000000000000000000300000001019D1262007D42710005000000BAC203000000803F0A0000002D030000020000000000000000, 67186), +(1181150530, 753589, 'zhTW', 0x0600000023920600C7100400, 67186), +(3425193231, 547448, 'zhTW', 0x07000000080000000000000000000000000000000000000001000000C71004000000000000000000A4890200, 67186), +(859088734, 430627, 'zhTW', 0xFFFFFFFFF42E00000000, 67186), +(3359787322, 31558, 'zhTW', 0x467B0000, 67186), +(4033975491, 620660, 'zhTW', 0x000000000000000000000000000000000000000000000000939C000001000000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3D000000000000B7100400, 67186), +(4033975491, 620644, 'zhTW', 0x0000000000000000000000000000000000000000000000008FA60000FFDE0000000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620643, 'zhTW', 0x000000000000000000000000000000000000000000000000879C0000FFDE000000000000000000000000000000000000000000000000000000CDCC4C3E00000000FFFFFFFFFFFFB48D00000000000000000000000000000000000000009D100400, 67186), +(4033975491, 620642, 'zhTW', 0x0000000000000000000000000000000000000000000000006F9C0000FFDE0000000000000000000000000000000000000000000000000000009A99193E00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000A8100400, 67186), +(1181150530, 753546, 'zhTW', 0x060000001A920600B9100400, 67186), +(1181150530, 753541, 'zhTW', 0x0200000074780900B7100400, 67186), +(1181150530, 753540, 'zhTW', 0x0600000018920600B7100400, 67186), +(1181150530, 753510, 'zhTW', 0x02000000647809009D100400, 67186), +(1181150530, 753509, 'zhTW', 0x02000000637809009D100400, 67186), +(1181150530, 753508, 'zhTW', 0x06000000159206009D100400, 67186), +(1181150530, 753507, 'zhTW', 0x05000000048203009D100400, 67186), +(1181150530, 753506, 'zhTW', 0x0200000062780900A8100400, 67186), +(1181150530, 753505, 'zhTW', 0x0500000005820300A8100400, 67186), +(1181150530, 753504, 'zhTW', 0x0600000014920600A8100400, 67186), +(3425193231, 547444, 'zhTW', 0x060000000D0000000000000000000000000000000000000002000000B910040000000000000000002FCA0200, 67186), +(3425193231, 547442, 'zhTW', 0x060000000D0000000000000000000000000000000000000002000000B710040000000000000000002ECA0200, 67186), +(3425193231, 547424, 'zhTW', 0x030000000D0000000000000000000000000000000000000001000000A8100400000000000000000026CA0200, 67186), +(3425193231, 547406, 'zhTW', 0x030000000D00000000000000000000000000000000000000010000009D10040000000000000000001FCA0200, 67186), +(859088734, 430618, 'zhTW', 0xFFFF6204000000000000, 67186), +(859088734, 430616, 'zhTW', 0xFFFF5204000000000000, 67186), +(859088734, 430613, 'zhTW', 0xFFFF4200000000000000, 67186), +(859088734, 430612, 'zhTW', 0xFFFFBA00000000000000, 67186), +(3776013982, 1295959, 'zhTW', 0x000000, 67186), +(3776013982, 1295957, 'zhTW', 0x000000, 67186), +(3776013982, 1295932, 'zhTW', 0x000000, 67186), +(3776013982, 1295927, 'zhTW', 0x00E69394E4BBBBE99A8AE4BC8DE79A84E59DA6E5858BE8A792E889B2E69982EFBC8CE69E97E5A49AE7B1B3E69C83E6A899E587BAE991B0E79FB3E59CB0E59F8EE4B8ADE79A84E695B5E696B9E983A8E99A8AE380820D0A0D0AE88887E69E97E5A49AE7B1B3E5B08DE8A9B1E4BBA5E5819CE794A8E6ADA4E69588E69E9CE3808200E69394E4BBBBE99A8AE4BC8DE79A84E59DA6E5858BE8A792E889B2E69982EFBC8CE69E97E5A49AE7B1B3E69C83E6A899E587BAE991B0E79FB3E59CB0E59F8EE4B8ADE79A84E695B5E696B9E983A8E99A8AE380820D0A0D0AE88887E69E97E5A49AE7B1B3E5B08DE8A9B1E4BBA5E5819CE794A8E6ADA4E69588E69E9CE3808200, 67186), +(3776013982, 1265971, 'zhTW', 0x00E9A88EE5A3ABE696BDE694BEE79A84E68A80E883BDE980A0E68890E79A84E582B7E5AEB3E68F90E9AB9824733125E38082243F63335B0D0A0D0AE4BDA0E79A84E9A39FE5B18DE9ACBCE5928CE9AAB7E9AB8FE5BC93E7AEADE6898BE980A0E68890E79A84E582B7E5AEB3E68F90E9AB9824733325EFBC8CE4BD8EE99A8EE9A39FE5B18DE9ACBCE980A0E68890E79A84E582B7E5AEB3E68F90E9AB98247335255D5B5DE380820000, 67186), +(336222293, 22784, 'zhTW', 0x25737300AC01721F0000, 67186), +(3776013982, 444769, 'zhTW', 0x00E6AF8F247331E6ACA1E6AEBAE688AEE88085E68993E6938AE983BDE69C83E4BDBFE4BDA0E78DB2E5BE97E9A99FE4BAA1E380820D0A0D0AE4BDBFE794A8E9A99FE4BAA1E58AA0E9809FE4BDA0E79A84E4B88BE4B880E5808BE58A8DE58883E9A2A8E69AB4EFBC8CE9A18DE5A496E694BBE6938A31E6ACA1EFBC88E69C80E5A49A2434343536303675E6ACA1EFBC89E38082E58A8DE58883E9A2A8E69AB4E79A84E7B8BDE68C81E7BA8CE69982E99693E4B88DE8AE8AE380820D0A0D0AE9A99FE4BAA1E69C8924733225E79A84E6A99FE78E87E8A7B8E799BCE694B6E589B2E9A2A8E69AB4EFBC8CE69588E69E9CE5BCB7E5BAA6E8AE8AE782BA24733325E380820000, 67186), +(378810315, 666, 'zhTW', 0xA5530100080800003F000000, 67186), +(378810315, 199, 'zhTW', 0xC68F0100020B000069000000, 67186), +(378810315, 197, 'zhTW', 0x1C590000010B000069000000, 67186), +(3776013982, 1256191, 'zhTW', 0x000000, 67186), +(1181150530, 752881, 'zhTW', 0x05000000D9570500E50F0400, 67186), +(1181150530, 738063, 'zhTW', 0x05000000D657050031FB0300, 67186), +(3425193231, 547176, 'zhTW', 0x030000000D0000000000000000000000000000000000000001000000E50F040000000000000000007EBD0200, 67186), +(3266400455, 1577780, 'zhTW', 0xEA570500E0A80800010000803F00000000, 67186), +(3266400455, 1577428, 'zhTW', 0xE9570500D66A1300010000803F00000000, 67186), +(3266400455, 1577406, 'zhTW', 0xE1570500EB881F00010000803F00000000, 67186), +(3266400455, 1577405, 'zhTW', 0xE0570500531B3900010000803F00000000, 67186), +(3266400455, 1577381, 'zhTW', 0xD957050003331A00010000803F00000000, 67186), +(3266400455, 1577380, 'zhTW', 0xD957050002331A00010000803F00000000, 67186), +(3266400455, 1577379, 'zhTW', 0xD957050001331A00010000803F00000000, 67186), +(3266400455, 1577363, 'zhTW', 0xD757050084734E00010000803F00000000, 67186), +(3266400455, 1577362, 'zhTW', 0xD757050082734E00010000803F00000000, 67186), +(3266400455, 1577361, 'zhTW', 0xD65705000F891F00010000803F00000000, 67186), +(736158310, 43623, 'zhTW', 0xE1570500E0570500, 67186), +(736158310, 43619, 'zhTW', 0xD7570500D6570500, 67186), +(3232102598, 314117, 'zhTW', 0xEA570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314116, 'zhTW', 0xE9570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000484300409C46, 67186), +(3232102598, 314110, 'zhTW', 0xE0570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C8000000000000000000000000016400000064000000570C0000FFFFFFFFFFFFFFFF580C00000000803F000000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314108, 'zhTW', 0xE1570500000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F00000000CDCCCC3D000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314101, 'zhTW', 0xD9570500000000400000804000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B44300000000000000C800000000000000000000000001F4010000F4010000570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314099, 'zhTW', 0xD75705000000A0400000204100000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3232102598, 314098, 'zhTW', 0xD6570500000000400000A04000000000000000000000000000000000000000000000000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000001F4010000F4010000570C0000D0070000D0070000580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3776013982, 1272821, 'zhTW', 0x00243F63315BE58FACE5969AE78E84E7899BE68092E585865D5BE799BBE5B3B0E980A0E6A5B55DE69C83E4BDBF243F63315BE781ABE784B0E4B98BE681AF5D5BE7BF94E999BDE885B3E5928CE9B6B4E6978BE8B8A25DE799BCE58B95247331E6ACA1E980A3E68BB3E68993E6938AE380820000, 67186), +(3776013982, 1244331, 'zhTW', 0x00E7949FE591BDE4B98BE88AB1E69C80E5BE8CE7B6BBE694BEE79A8424733225E6B2BBE79982E9878FE69C83E6B2BBE7998224313234343334316131E7A2BCE585A7E69C80E5A49A247333E5908DE79B9FE58F8BE380820000, 67186), +(3776013982, 441845, 'zhTW', 0x00243F63325BE69295E7A28EE38081E68FAEE6938AE5928CE68E83E6938AE79A84E582B7E5AEB3E68F90E9AB9824733125EFBC8CE887B4E591BDE4B880E6938AE6A99FE78E87E68F90E9AB9824733325E380825D5BE589B2E7A28EE79A84E582B7E5AEB3E68F90E9AB9824733425EFBC8CE887B4E591BDE4B880E6938AE6A99FE78E87E68F90E9AB9824733525E380825D0D0A0D0A243F63335BE589B2E7A28EE69C83E782BAE4BDA0E6B2BBE7998224343538373234733125E7949FE591BDE58A9BE4B88AE99990E380825D5B5D0000, 67186), +(3205218938, 57068, 'zhTW', 0x484F5553494E475F4D41524B45545F50555243484153455F434F4E4649524D4154494F4E00E4BBA52573E8B3BCE8B2B7E585A8E983A8EFBC882573E4BBB6EFBC89E789A9E59381E5978EEFBC9F0003000000, 67186), +(3205218938, 23377, 'zhTW', 0x5343454E4152494F5F53544147455F53544154555300E99A8EE6AEB525642F25640001000000, 67186), +(3205218938, 22841, 'zhTW', 0x5343454E4152494F5F535441474500E99A8EE6AEB525640001000000, 67186), +(3745449290, 8459, 'zhTW', 0xE78BA9E78DB500E998BFE696AFE5A194E6A882E280A7E8A180E8AA93E99C80E8A681E4BDA0E58D94E58AA9E78DB5E6AEBAE887B4E591BDE5A881E88485E38082000B2100007B9E0546CD7A99C577ADCA4100000000A11600000000000088820000A411C660000000000000000000000000000000000000613E000000000000000000000000, 67186), +(3495286709, 17310, 'zhTW', 0xAC0D8269E00600000B000000, 67186), +(3495286709, 17309, 'zhTW', 0x2C53E969E006000002000000, 67186), +(3495286709, 17308, 'zhTW', 0x2C488B69E006000014000000, 67186), +(3495286709, 17307, 'zhTW', 0x2C488B69E00600000C000000, 67186), +(3495286709, 17306, 'zhTW', 0x2C488B69E006000016000000, 67186), +(3495286709, 17305, 'zhTW', 0x2C32B069E006000008000000, 67186), +(3495286709, 17304, 'zhTW', 0x2C53E969E006000005000000, 67186), +(3495286709, 17303, 'zhTW', 0xFC47E869E00600000A000000, 67186), +(3495286709, 17301, 'zhTW', 0x2C488B69E00600000D000000, 67186), +(3495286709, 17300, 'zhTW', 0x2C1CD569E006000013000000, 67186), +(3495286709, 17299, 'zhTW', 0x2C91E769E006000001000000, 67186), +(3495286709, 17298, 'zhTW', 0x2C1CD569E006000012000000, 67186), +(3495286709, 17297, 'zhTW', 0x2C91E769E006000009000000, 67186), +(3495286709, 17296, 'zhTW', 0x2C53E969E006000004000000, 67186), +(3495286709, 17295, 'zhTW', 0xFC47E869E006000003000000, 67186), +(600565378, 644762, 'zhTW', 0xFC3402000000803F0000803F000000F4EC0300, 67186), +(600565378, 644760, 'zhTW', 0xFC3402000000803FCDCCCC3E000000F2EC0300, 67186), +(995606689, 63286, 'zhTW', 0x73BC0400030000000C290000, 67186), +(995606689, 63283, 'zhTW', 0x70BC0400000000000C290000, 67186), +(2445379776, 10508, 'zhTW', 0x0C2900000000000000000000000000000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040280000000000000000000000000000000000000070BC040073BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(2445379776, 9849, 'zhTW', 0x79260000000000000000000067BC04000000000000000000000000000000000000000000000000006CBC040000000000000000006BBC040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006DBC0400000000000000000040280000000000000000000000000000000000000070BC040071BC040072BC040073BC04000000000000000000000000000000000000000000, 67186), +(3386291891, 257268, 'zhTW', 0xE8999BE7A9BAE9BE8DE9B0BB00000000010F000000FC3402000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(1303856102, 256, 'zhTW', 0x9201000022000000, 67186), +(3247720076, 39887, 'zhTW', 0x0700000000, 67186), +(3776013982, 243435, 'zhTW', 0x00E5B087E4BDA0E79A84E79AAEE8869AE58C96E782BAE79FB3E9A0ADEFBC8CE4BDBFE4BDA0E795B6E5898DE7949FE591BDE58A9BE5928CE7949FE591BDE58A9BE4B88AE99990E983BDE68F90E9AB9824733125EFBC8CE58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24733225EFBC8CE68C81E7BA8C2464E3808200E7949FE591BDE58A9BE4B88AE99990E68F90E9AB9824773125E380820D0AE58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24773225E38082243F2477343E315B0D0AE590B8E694B6247734E9BB9EE582B7E5AEB3E380825D5B5D00, 67186), +(3776013982, 221562, 'zhTW', 0x00E5B087E79BAEE6A899E5BE9EE59CB0E99DA2E88889E8B5B7EFBC8CE794A8E9BB91E69A97E883BDE9878FE5A393E7A28EE4BB96E58091E79A84E59689E59AA8E4B8A6E4BDBFE4BB96E58091E6988FE8BFB72464E3808200E6988FE8BFB7E3808200, 67186), +(3776013982, 205630, 'zhTW', 0x507650E5A4A9E8B3A600E4BDBFE794A8E683A1E9AD94E9AD94E6B395E58B92E6AEBAE79BAEE6A899EFBC8CE5B087E585B6E6938AE69A88E59CA8E58E9FE59CB0EFBC8CE59CA82464E585A7E5B08DE8A2ABE58B92E6AEBAE79A84E79BAEE6A899E980A0E68890246F34E9BB9EE69A97E5BDB1E582B7E5AEB3E38082E5BC95E5B08EE69982E58FAFE4BBA5E7A7BBE58B95E380820D0A0D0AE5868DE6ACA1E4BDBFE794A8E4BC8AE588A9E4B8B9E4B98BE68FA1E69C83E5B087E79BAEE6A899E4B89FE590912432303831373352E7A2BCE7AF84E59C8DE585A7E79A84E4BD8DE7BDAEE3808200E6988FE8BFB7E38082E6AF8F2474E7A792E58F97E588B0247734E9BB9EE69A97E5BDB1E582B7E5AEB3E3808200, 67186), +(3776013982, 198158, 'zhTW', 0x507650E5A4A9E8B3A600E4BDA0E5928C244131E7A2BCE7AF84E59C8DE585A7E79A84E79B9FE58F8BE7AB8BE58DB3E99AB1E5BDA2EFBC8CE68C81E7BA8C2464E38082E980B2E8A18CE4BBBBE4BD95E58B95E4BD9CE983BDE69C83E58F96E6B688E6ADA4E69588E69E9CE3808200E99AB1E5BDA2E38082E980B2E8A18CE4BBBBE4BD95E58B95E4BD9CE983BDE69C83E58F96E6B688E6ADA4E69588E69E9CE3808200, 67186), +(3776013982, 108194, 'zhTW', 0x00E5B087E79BAEE6A899E5BE9EE59CB0E99DA2E88889E8B5B7EFBC8CE794A8E9BB91E69A97E883BDE9878FE5A393E7A28EE4BB96E58091E79A84E59689E59AA8E4B8A6E4BDBFE4BB96E58091E6988FE8BFB72464E3808200E6988FE8BFB7E3808200, 67186), +(378810315, 1004, 'zhTW', 0x32A401000A05000049000000, 67186), +(378810315, 1003, 'zhTW', 0x32A401000A05000048000000, 67186), +(378810315, 1001, 'zhTW', 0x077A03000705000048000000, 67186), +(378810315, 1000, 'zhTW', 0x077A03000705000047000000, 67186), +(378810315, 999, 'zhTW', 0x530D00000509000049000000, 67186), +(378810315, 998, 'zhTW', 0x530D00000509000048000000, 67186), +(378810315, 997, 'zhTW', 0x530D00000509000047000000, 67186), +(378810315, 996, 'zhTW', 0x78B700000409000049000000, 67186), +(378810315, 995, 'zhTW', 0x78B700000409000048000000, 67186), +(378810315, 994, 'zhTW', 0x7E1400000309000049000000, 67186), +(378810315, 993, 'zhTW', 0x7E1400000309000048000000, 67186), +(378810315, 992, 'zhTW', 0x337A1300050500000A010000, 67186), +(378810315, 990, 'zhTW', 0x4B760000080500000B010000, 67186), +(378810315, 989, 'zhTW', 0x4B760000080500000A010000, 67186), +(378810315, 988, 'zhTW', 0x4B7600000805000009010000, 67186), +(378810315, 987, 'zhTW', 0x6AD40100060500000A010000, 67186), +(378810315, 986, 'zhTW', 0x4A1E03000A07000006010000, 67186), +(378810315, 985, 'zhTW', 0x491E03000A07000006010000, 67186), +(378810315, 984, 'zhTW', 0x3AEE02000905000008010000, 67186), +(378810315, 983, 'zhTW', 0x3AEE02000805000007010000, 67186), +(378810315, 982, 'zhTW', 0x3AEE02000905000006010000, 67186), +(378810315, 981, 'zhTW', 0x989B12000706000006010000, 67186), +(378810315, 980, 'zhTW', 0xFC6C05000409000007010000, 67186), +(378810315, 979, 'zhTW', 0xFC6C05000409000008010000, 67186), +(378810315, 978, 'zhTW', 0xFC6C05000409000006010000, 67186), +(378810315, 974, 'zhTW', 0x7EB00000030A000004010000, 67186), +(378810315, 973, 'zhTW', 0x7EB00000030A000003010000, 67186), +(378810315, 972, 'zhTW', 0x7EB00000030A000005010000, 67186), +(378810315, 971, 'zhTW', 0xC9F602000502000002010000, 67186), +(378810315, 970, 'zhTW', 0xBA1F00000409000001010000, 67186), +(378810315, 968, 'zhTW', 0xCDF702000605000000010000, 67186), +(378810315, 967, 'zhTW', 0x713507000505000000010000, 67186), +(378810315, 966, 'zhTW', 0xBA1F00000409000000010000, 67186), +(378810315, 965, 'zhTW', 0x550300000805000046000000, 67186), +(378810315, 964, 'zhTW', 0x1C1B0000020B000046000000, 67186), +(378810315, 963, 'zhTW', 0x4D7C00000705000041000000, 67186), +(378810315, 962, 'zhTW', 0xF21C0300050B000041000000, 67186), +(378810315, 961, 'zhTW', 0x4DF60400060700000E010000, 67186), +(378810315, 960, 'zhTW', 0x46EA0400060500000E010000, 67186), +(378810315, 959, 'zhTW', 0xF2080300030900000E010000, 67186), +(378810315, 958, 'zhTW', 0x6CC80100030900000E010000, 67186), +(378810315, 957, 'zhTW', 0xF2080300020900000D010000, 67186), +(378810315, 955, 'zhTW', 0x1C6902000905000040000000, 67186), +(378810315, 954, 'zhTW', 0x1C690200090500003F000000, 67186), +(378810315, 953, 'zhTW', 0xC8530600050900003F000000, 67186), +(378810315, 952, 'zhTW', 0x3CBC01000309000040000000, 67186), +(378810315, 951, 'zhTW', 0x3CBC0100030900003F000000, 67186), +(378810315, 950, 'zhTW', 0x1C690200090500003E000000, 67186), +(378810315, 949, 'zhTW', 0x3CBC0100030900003E000000, 67186), +(378810315, 948, 'zhTW', 0x02DD020007050000FF000000, 67186), +(378810315, 947, 'zhTW', 0x893E130000050000FF000000, 67186), +(378810315, 945, 'zhTW', 0x1F0A0400020B0000FF000000, 67186), +(378810315, 944, 'zhTW', 0x02DD020007050000FE000000, 67186), +(378810315, 943, 'zhTW', 0x02DD020007050000FD000000, 67186), +(378810315, 942, 'zhTW', 0x1F0A0400020B0000FD000000, 67186), +(378810315, 941, 'zhTW', 0x5A73050003050000C1050000, 67186), +(378810315, 938, 'zhTW', 0x2B4113000409000069000000, 67186), +(378810315, 937, 'zhTW', 0x2B4113000409000067000000, 67186), +(378810315, 936, 'zhTW', 0xEE7100000705000067000000, 67186), +(378810315, 935, 'zhTW', 0x2B4113000309000066000000, 67186), +(378810315, 934, 'zhTW', 0x991503000409000045020000, 67186), +(378810315, 933, 'zhTW', 0x3E2303000A05000045020000, 67186), +(378810315, 932, 'zhTW', 0x71BB02000309000045020000, 67186), +(378810315, 931, 'zhTW', 0x6E0003000209000045020000, 67186), +(378810315, 930, 'zhTW', 0xBD070300010B000045020000, 67186), +(378810315, 929, 'zhTW', 0x3E2303000809000041020000, 67186), +(378810315, 928, 'zhTW', 0x2423030004090000C8050000, 67186), +(378810315, 927, 'zhTW', 0x7A61030008050000FC000000, 67186), +(378810315, 926, 'zhTW', 0x28D2120007050000FC000000, 67186), +(378810315, 925, 'zhTW', 0x3F29030004090000FC000000, 67186), +(378810315, 924, 'zhTW', 0x7A61030008050000FB000000, 67186), +(378810315, 923, 'zhTW', 0x3F29030004090000FB000000, 67186), +(378810315, 922, 'zhTW', 0x7A61030008050000FA000000, 67186), +(378810315, 921, 'zhTW', 0xD048130007050000FA000000, 67186), +(378810315, 920, 'zhTW', 0x71BB02000309000041020000, 67186), +(378810315, 918, 'zhTW', 0x13D5120003090000C8050000, 67186), +(378810315, 917, 'zhTW', 0xBD070300010B0000C8050000, 67186), +(378810315, 916, 'zhTW', 0xD703130007050000C8050000, 67186), +(378810315, 913, 'zhTW', 0xC8CD020005050000C8050000, 67186), +(378810315, 912, 'zhTW', 0x6E00030002090000C8050000, 67186), +(378810315, 905, 'zhTW', 0xBE8F06000705000009010000, 67186), +(378810315, 904, 'zhTW', 0xBE8F0600070500000B010000, 67186), +(378810315, 903, 'zhTW', 0x42E906000309000009010000, 67186), +(378810315, 902, 'zhTW', 0x42E90600030900000A010000, 67186), +(378810315, 901, 'zhTW', 0x42E90600030900000B010000, 67186), +(378810315, 900, 'zhTW', 0x761800000309000009010000, 67186), +(378810315, 899, 'zhTW', 0x76180000030900000A010000, 67186), +(378810315, 898, 'zhTW', 0x76180000030900000B010000, 67186), +(378810315, 885, 'zhTW', 0x78B700000409000047000000, 67186), +(378810315, 879, 'zhTW', 0xCD3E0600020B000008010000, 67186), +(378810315, 878, 'zhTW', 0xCD3E0600020B000007010000, 67186), +(378810315, 877, 'zhTW', 0xCD3E0600020B000006010000, 67186), +(378810315, 865, 'zhTW', 0xF21C0300040B000046000000, 67186), +(378810315, 861, 'zhTW', 0x5BE205000805000003010000, 67186), +(378810315, 860, 'zhTW', 0x980100000905000005010000, 67186), +(378810315, 858, 'zhTW', 0x980100000905000004010000, 67186), +(378810315, 855, 'zhTW', 0x980100000905000003010000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(378810315, 843, 'zhTW', 0x1C590000010B000067000000, 67186), +(378810315, 839, 'zhTW', 0x3F29030004090000FA000000, 67186), +(378810315, 830, 'zhTW', 0x9AA6000006050000FC000000, 67186), +(378810315, 824, 'zhTW', 0x86C10100030900000D010000, 67186), +(378810315, 823, 'zhTW', 0x86C10100040900000E010000, 67186), +(378810315, 821, 'zhTW', 0x07EE0500050500000E010000, 67186), +(378810315, 813, 'zhTW', 0xD29E060003050000BB050000, 67186), +(378810315, 808, 'zhTW', 0x50AD050003090000BC050000, 67186), +(378810315, 807, 'zhTW', 0x50AD050002090000C1050000, 67186), +(378810315, 755, 'zhTW', 0x9D140000030B000004010000, 67186), +(378810315, 754, 'zhTW', 0xDD2003000705000040000000, 67186), +(378810315, 752, 'zhTW', 0xF12D060000070000C1050000, 67186), +(378810315, 750, 'zhTW', 0xAF28060003050000C1050000, 67186), +(378810315, 744, 'zhTW', 0x8C8D0500010B0000C1050000, 67186), +(378810315, 742, 'zhTW', 0x6A5C050005050000C1050000, 67186), +(378810315, 739, 'zhTW', 0x1DD8050008050000C1050000, 67186), +(378810315, 738, 'zhTW', 0x49C6050004090000C1050000, 67186), +(378810315, 736, 'zhTW', 0x027F05000707000003010000, 67186), +(378810315, 720, 'zhTW', 0x36A401000707000048000000, 67186), +(378810315, 719, 'zhTW', 0x0FBD05000805000048000000, 67186), +(378810315, 718, 'zhTW', 0x0FBD05000905000047000000, 67186), +(378810315, 715, 'zhTW', 0x790200000905000046000000, 67186), +(378810315, 714, 'zhTW', 0x794C000004090000FD000000, 67186), +(378810315, 713, 'zhTW', 0x794C000004090000FF000000, 67186), +(378810315, 710, 'zhTW', 0x1F0A0400020B0000FE000000, 67186), +(378810315, 700, 'zhTW', 0x3E0402000805000069000000, 67186), +(378810315, 692, 'zhTW', 0x68F905000605000067000000, 67186), +(378810315, 691, 'zhTW', 0x68F905000605000066000000, 67186), +(378810315, 690, 'zhTW', 0x68F905000605000069000000, 67186), +(378810315, 682, 'zhTW', 0x15A905000705000041020000, 67186), +(378810315, 679, 'zhTW', 0x74B9000008050000FC000000, 67186), +(378810315, 674, 'zhTW', 0x4C2700000805000000010000, 67186), +(378810315, 673, 'zhTW', 0x4C2700000705000001010000, 67186), +(378810315, 670, 'zhTW', 0x4D6E06000705000000010000, 67186), +(378810315, 668, 'zhTW', 0xBA1F00000309000002010000, 67186), +(378810315, 664, 'zhTW', 0xAD7B0000090500003E000000, 67186), +(378810315, 663, 'zhTW', 0xAD7B0000090500003F000000, 67186), +(378810315, 662, 'zhTW', 0x16600500040800003F000000, 67186), +(378810315, 661, 'zhTW', 0x16600500040900003E000000, 67186), +(378810315, 658, 'zhTW', 0xE53805000209000040000000, 67186), +(378810315, 657, 'zhTW', 0xE5380500020900003F000000, 67186), +(378810315, 654, 'zhTW', 0xAD7B00000905000040000000, 67186), +(378810315, 651, 'zhTW', 0x166005000409000040000000, 67186), +(378810315, 648, 'zhTW', 0x3273050006050000BC050000, 67186), +(378810315, 639, 'zhTW', 0x6A5C050005050000BB050000, 67186), +(378810315, 637, 'zhTW', 0x1DD8050007050000BC050000, 67186), +(378810315, 636, 'zhTW', 0x1DD8050007050000BB050000, 67186), +(378810315, 576, 'zhTW', 0x8C8D0500010B0000BB050000, 67186), +(378810315, 575, 'zhTW', 0x8C8D0500010B0000BC050000, 67186), +(378810315, 572, 'zhTW', 0x49C6050004090000BB050000, 67186), +(378810315, 571, 'zhTW', 0x49C6050004090000BC050000, 67186), +(378810315, 563, 'zhTW', 0x5A73050003090000BC050000, 67186), +(378810315, 561, 'zhTW', 0x10A9050007050000BC050000, 67186), +(378810315, 560, 'zhTW', 0x0E8C050005050000BC050000, 67186), +(378810315, 558, 'zhTW', 0x2FB9050006070000BB050000, 67186), +(378810315, 456, 'zhTW', 0x55D20100070500000D010000, 67186), +(378810315, 455, 'zhTW', 0x55D20100070500000E010000, 67186), +(378810315, 453, 'zhTW', 0x5B1400000305000069000000, 67186), +(378810315, 452, 'zhTW', 0x32A401000A05000047000000, 67186), +(378810315, 451, 'zhTW', 0x7E1400000309000047000000, 67186), +(378810315, 450, 'zhTW', 0x550300000805000041000000, 67186), +(378810315, 449, 'zhTW', 0x2E0800000509000004010000, 67186), +(378810315, 448, 'zhTW', 0x2E0800000509000003010000, 67186), +(378810315, 447, 'zhTW', 0x2E0800000509000005010000, 67186), +(378810315, 440, 'zhTW', 0xEE7100000705000066000000, 67186), +(378810315, 431, 'zhTW', 0xE1C70100040500000D010000, 67186), +(378810315, 428, 'zhTW', 0x6CC70000030B0000FB000000, 67186), +(378810315, 427, 'zhTW', 0x6CC70000030B0000FC000000, 67186), +(378810315, 420, 'zhTW', 0xA8B9000005050000FA000000, 67186), +(378810315, 419, 'zhTW', 0xA8B9000005050000FB000000, 67186), +(378810315, 418, 'zhTW', 0xA8B9000005050000FC000000, 67186), +(378810315, 416, 'zhTW', 0xC8CD02000605000045020000, 67186), +(378810315, 415, 'zhTW', 0xC8CD02000505000041020000, 67186), +(378810315, 412, 'zhTW', 0x57A101000505000067000000, 67186), +(378810315, 408, 'zhTW', 0x638400000705000069000000, 67186), +(378810315, 407, 'zhTW', 0xEE7100000805000069000000, 67186), +(378810315, 406, 'zhTW', 0xE40200000505000069000000, 67186), +(378810315, 402, 'zhTW', 0xA23F020005050000FD000000, 67186), +(378810315, 401, 'zhTW', 0xA23F020005050000FE000000, 67186), +(378810315, 389, 'zhTW', 0xE3E70400080500003E000000, 67186), +(378810315, 388, 'zhTW', 0x5B0800000605000040000000, 67186), +(378810315, 387, 'zhTW', 0x5B080000060500003F000000, 67186), +(378810315, 386, 'zhTW', 0x5B080000060500003E000000, 67186), +(378810315, 382, 'zhTW', 0xE77701000605000046000000, 67186), +(378810315, 377, 'zhTW', 0xF2010000020B000041000000, 67186), +(378810315, 372, 'zhTW', 0x7F3C00000405000002010000, 67186), +(378810315, 368, 'zhTW', 0x4BFD00000505000001010000, 67186), +(378810315, 367, 'zhTW', 0x244B0000010B000001010000, 67186), +(378810315, 363, 'zhTW', 0x244B0000010B000002010000, 67186), +(378810315, 360, 'zhTW', 0x244B0000010B000000010000, 67186), +(378810315, 359, 'zhTW', 0x400700000409000004010000, 67186), +(378810315, 353, 'zhTW', 0xD63C03000A07000004010000, 67186), +(378810315, 352, 'zhTW', 0xD63C03000A07000003010000, 67186), +(378810315, 350, 'zhTW', 0xE60600000605000005010000, 67186), +(378810315, 349, 'zhTW', 0xE60600000605000004010000, 67186), +(378810315, 348, 'zhTW', 0xE60600000605000003010000, 67186), +(378810315, 346, 'zhTW', 0x8AE200000605000008010000, 67186), +(378810315, 345, 'zhTW', 0x8AE200000605000007010000, 67186), +(378810315, 343, 'zhTW', 0x301E03000509000006010000, 67186), +(378810315, 342, 'zhTW', 0x8AE200000605000006010000, 67186), +(378810315, 339, 'zhTW', 0x473D0300040B00000B010000, 67186), +(378810315, 338, 'zhTW', 0x473D0300040B00000A010000, 67186), +(378810315, 337, 'zhTW', 0x66D40100050500000B010000, 67186), +(378810315, 333, 'zhTW', 0x66D401000505000009010000, 67186), +(378810315, 332, 'zhTW', 0x473D0300040B000009010000, 67186), +(378810315, 330, 'zhTW', 0x981900000605000048000000, 67186), +(378810315, 329, 'zhTW', 0x981900000605000049000000, 67186), +(378810315, 224, 'zhTW', 0x180B0300030B000041000000, 67186), +(378810315, 223, 'zhTW', 0x43BE0000020B0000FC000000, 67186), +(378810315, 222, 'zhTW', 0x98BE0000010B0000FC000000, 67186), +(378810315, 219, 'zhTW', 0xF8AA010003090000FE000000, 67186), +(378810315, 218, 'zhTW', 0x99D70200010B0000FE000000, 67186), +(378810315, 214, 'zhTW', 0x9AF400000309000000010000, 67186), +(378810315, 213, 'zhTW', 0xB6810000020B000000010000, 67186), +(378810315, 208, 'zhTW', 0x6E0003000209000041020000, 67186), +(378810315, 207, 'zhTW', 0x242303000409000041020000, 67186), +(378810315, 205, 'zhTW', 0xBD070300010B000041020000, 67186), +(378810315, 201, 'zhTW', 0xC3EB02000607000041020000, 67186), +(378810315, 194, 'zhTW', 0xB3DD02000707000045020000, 67186), +(378810315, 193, 'zhTW', 0x242303000409000045020000, 67186), +(378810315, 189, 'zhTW', 0x743C03000805000045020000, 67186), +(378810315, 187, 'zhTW', 0xB67C0100010B000049000000, 67186), +(378810315, 183, 'zhTW', 0x36A401000707000049000000, 67186), +(378810315, 176, 'zhTW', 0xB67C0100010B000048000000, 67186), +(378810315, 169, 'zhTW', 0x98EF0000020B000067000000, 67186), +(378810315, 166, 'zhTW', 0x8F9001000607000067000000, 67186), +(378810315, 165, 'zhTW', 0x16CD0100020B000047000000, 67186), +(378810315, 164, 'zhTW', 0xB67C0100010B000047000000, 67186), +(378810315, 160, 'zhTW', 0x36A401000707000047000000, 67186), +(378810315, 159, 'zhTW', 0x981900000605000047000000, 67186), +(378810315, 158, 'zhTW', 0x533301000405000066000000, 67186), +(378810315, 156, 'zhTW', 0x1C590000010B000066000000, 67186), +(378810315, 154, 'zhTW', 0xAFF602000507000066000000, 67186), +(378810315, 153, 'zhTW', 0xA09001000607000066000000, 67186), +(378810315, 152, 'zhTW', 0x82020000010B000046000000, 67186), +(378810315, 150, 'zhTW', 0x50350300050B000046000000, 67186), +(378810315, 149, 'zhTW', 0xFE030000030B000046000000, 67186), +(378810315, 147, 'zhTW', 0x8C7C00000705000046000000, 67186), +(378810315, 145, 'zhTW', 0x03C20100020B00000E010000, 67186), +(378810315, 142, 'zhTW', 0x71C80100010B00000E010000, 67186), +(378810315, 141, 'zhTW', 0x6EC20100050500000E010000, 67186), +(378810315, 138, 'zhTW', 0x66DE0100040900000D010000, 67186), +(378810315, 135, 'zhTW', 0x03C20100010B00000D010000, 67186), +(378810315, 133, 'zhTW', 0x00E40100000700000D010000, 67186), +(378810315, 125, 'zhTW', 0x45990100010B00000B010000, 67186), +(378810315, 124, 'zhTW', 0x80A70100020B00000B010000, 67186), +(378810315, 122, 'zhTW', 0x62040000060500000B010000, 67186), +(378810315, 121, 'zhTW', 0x45990100010B00000A010000, 67186), +(378810315, 120, 'zhTW', 0x80A70100020B00000A010000, 67186), +(378810315, 117, 'zhTW', 0x66D40100050500000A010000, 67186), +(378810315, 116, 'zhTW', 0xE30B0400070700000A010000, 67186), +(378810315, 114, 'zhTW', 0x45990100010B000009010000, 67186), +(378810315, 113, 'zhTW', 0x80A70100020B000009010000, 67186), +(378810315, 112, 'zhTW', 0x7C2103000607000009010000, 67186), +(378810315, 107, 'zhTW', 0xD87E01000707000008010000, 67186), +(378810315, 105, 'zhTW', 0xEFA60100010B000008010000, 67186), +(378810315, 104, 'zhTW', 0xF8A601000807000008010000, 67186), +(378810315, 103, 'zhTW', 0x84BD01000807000008010000, 67186), +(378810315, 102, 'zhTW', 0x491E03000907000007010000, 67186), +(378810315, 101, 'zhTW', 0x4A1E03000907000007010000, 67186), +(378810315, 100, 'zhTW', 0x301E03000509000008010000, 67186), +(378810315, 97, 'zhTW', 0x301E03000509000007010000, 67186), +(378810315, 96, 'zhTW', 0xEFA60100010B000007010000, 67186), +(378810315, 95, 'zhTW', 0x83BD01000707000007010000, 67186), +(378810315, 89, 'zhTW', 0xEFA60100010B000006010000, 67186), +(378810315, 88, 'zhTW', 0x92EC02000805000006010000, 67186), +(378810315, 85, 'zhTW', 0x82BD01000705000006010000, 67186), +(378810315, 84, 'zhTW', 0x400700000409000005010000, 67186), +(378810315, 83, 'zhTW', 0x9D140000030B000005010000, 67186), +(378810315, 82, 'zhTW', 0xF8790000020B000005010000, 67186), +(378810315, 81, 'zhTW', 0xD63C03000A07000005010000, 67186), +(378810315, 78, 'zhTW', 0xE1D302000805000005010000, 67186), +(378810315, 77, 'zhTW', 0x7FDA01000707000005010000, 67186), +(378810315, 76, 'zhTW', 0xF8790000020B000004010000, 67186), +(378810315, 73, 'zhTW', 0xEAC900000805000004010000, 67186), +(378810315, 72, 'zhTW', 0xB63500000707000004010000, 67186), +(378810315, 70, 'zhTW', 0x9D140000030B000003010000, 67186), +(378810315, 69, 'zhTW', 0xF8790000020B000003010000, 67186), +(378810315, 68, 'zhTW', 0x400700000409000003010000, 67186), +(378810315, 63, 'zhTW', 0xE1B90000020B000002010000, 67186), +(378810315, 61, 'zhTW', 0x4C2700000607000002010000, 67186), +(378810315, 60, 'zhTW', 0xA47B03000505000002010000, 67186), +(378810315, 57, 'zhTW', 0xACBA0000020B000001010000, 67186), +(378810315, 53, 'zhTW', 0xF70D03000607000001010000, 67186), +(378810315, 51, 'zhTW', 0x82020000010B000042000000, 67186), +(378810315, 45, 'zhTW', 0xF8AA010003090000FF000000, 67186), +(378810315, 44, 'zhTW', 0x99D70200010B0000FF000000, 67186), +(378810315, 40, 'zhTW', 0x82020000010B000041000000, 67186), +(378810315, 39, 'zhTW', 0xFE030000040B000041000000, 67186), +(378810315, 38, 'zhTW', 0x1C1B0000030B000041000000, 67186), +(378810315, 37, 'zhTW', 0x790200000905000041000000, 67186), +(378810315, 35, 'zhTW', 0x0B4D03000607000041000000, 67186), +(378810315, 34, 'zhTW', 0x8C7C00000607000041000000, 67186), +(378810315, 33, 'zhTW', 0xF8AA010003090000FD000000, 67186), +(378810315, 32, 'zhTW', 0x99D70200010B0000FD000000, 67186), +(378810315, 28, 'zhTW', 0x764C000006070000FD000000, 67186), +(378810315, 27, 'zhTW', 0xE5380500020900003E000000, 67186), +(378810315, 26, 'zhTW', 0xD39603000805000040000000, 67186), +(378810315, 21, 'zhTW', 0x98BE0000010B0000FB000000, 67186), +(378810315, 20, 'zhTW', 0x43BE0000020B0000FB000000, 67186), +(378810315, 17, 'zhTW', 0x0643040007050000FB000000, 67186), +(378810315, 16, 'zhTW', 0x98BE0000010B0000FA000000, 67186), +(378810315, 14, 'zhTW', 0x43BE0000020B0000FA000000, 67186), +(378810315, 12, 'zhTW', 0x84BF000006050000FA000000, 67186), +(378810315, 10, 'zhTW', 0x7EB10000010B00003F000000, 67186), +(378810315, 9, 'zhTW', 0x6FE70200070700003F000000, 67186), +(378810315, 7, 'zhTW', 0x7EB10000010B00003E000000, 67186), +(378810315, 3, 'zhTW', 0x26930500070700003E000000, 67186), +(3386943305, 333448, 'zhTW', 0x00000000000000001000F90C0000000008100800000004008000000800000000000100000000000000000000000000000000C0DA0300, 67186), +(3386291891, 252608, 'zhTW', 0xE5A49AE69BBCE7B48DE788BEE7A5ADE58480E5B8AB00000000000F0000002BF601000000000000000000000000000000803F0000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1291860, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931373931773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291859, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931373931773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291858, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931373931773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291857, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931373931773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291856, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931373931773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291855, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931373931773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291854, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931383331773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291853, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931383331773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291852, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931383331773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291851, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931383331773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291850, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931383331773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291849, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA9E69C80E5A49A24733125E7949FE591BDE58A9BE4B88AE99990E5928CE6B395E58A9BE38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928C2431323931383331773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291848, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291847, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291846, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291845, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291844, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291843, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291842, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291841, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291840, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291839, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291838, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291837, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291831, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1291828, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291827, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291826, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291825, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291824, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291822, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1291791, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1290929, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1290926, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1290925, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1289221, 'zhTW', 0x00E68993E9968BE5AFB6E7AEB1E79C8BE79C8BE8A3A1E9A0ADE69C89E4BB80E9BABCEFBC810000, 67186), +(3776013982, 1286537, 'zhTW', 0x00E6AF8FE7A792E681A2E5BEA9E7949FE591BDE58A9BE5928CE6B395E58A9BE4B88AE99990E79A8424733125EFBC8CE68C81E7BA8C2464E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928CE6B395E58A9BE3808200, 67186), +(3776013982, 1286536, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1286535, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1282100, 'zhTW', 0x000000, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(3776013982, 1282018, 'zhTW', 0x00E58FACE5969AE995B7E6A485E4BBA5E4BEBFE59D90E4B88BEFBC8100E58F96E6B688E58589E792B0E4BBA5E58F96E6B688E58FACE5969AE4BDA0E79A84E995B7E6A485E3808200, 67186), +(3776013982, 1277461, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1269922, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1269921, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1269920, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE4B88AE99990E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE3808200, 67186), +(3776013982, 1269919, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1269918, 'zhTW', 0x00E59CA82464E585A7EFBC8CE6AF8FE7A792E681A2E5BEA924733125E6B395E58A9BE4B88AE99990E38082E5969DE9A3B2E69699E69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924773125E6B395E58A9BE3808200, 67186), +(3776013982, 1269917, 'zhTW', 0x00E6AF8FE7A792E681A2E5BEA9E7949FE591BDE58A9BE5928CE6B395E58A9BE4B88AE99990E79A8424733125EFBC8CE68C81E7BA8C2464E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928CE6B395E58A9BE3808200, 67186), +(3776013982, 1269916, 'zhTW', 0x00E6AF8FE7A792E681A2E5BEA9E7949FE591BDE58A9BE5928CE6B395E58A9BE4B88AE99990E79A8424733125EFBC8CE68C81E7BA8C2464E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928CE6B395E58A9BE3808200, 67186), +(3776013982, 1232065, 'zhTW', 0x00E6AF8FE7A792E681A2E5BEA9E7949FE591BDE58A9BE5928CE6B395E58A9BE4B88AE99990E79A8424733125EFBC8CE68C81E7BA8C2464E38082E980B2E9A39FE69982E5BF85E9A088E4BF9DE68C81E59D90E5A7BFE3808200E6AF8FE7A792E681A2E5BEA924733125E7949FE591BDE58A9BE5928CE6B395E58A9BE3808200, 67186), +(2948698321, 8059, 'zhTW', 0x059B862A6E78A076, 67186), +(3776013982, 1295592, 'zhTW', 0x000000, 67186), +(3898252553, 11633, 'zhTW', 0xE28200001E490300, 67186), +(3898252553, 11632, 'zhTW', 0xE18200001E490300, 67186), +(3898252553, 11631, 'zhTW', 0xE08200001E490300, 67186), +(3898252553, 11630, 'zhTW', 0xDF8200001E490300, 67186), +(3776013982, 1244341, 'zhTW', 0x0024407370656C6C64657363313234343333310000, 67186), +(3776013982, 1262378, 'zhTW', 0x00E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824733325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247334E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247335E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824773325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247734E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247735E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200, 67186), +(3776013982, 1262377, 'zhTW', 0x00E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824733325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247334E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247335E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824773325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247734E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247735E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200, 67186), +(3776013982, 1262376, 'zhTW', 0x00E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824733325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247334E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247335E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824773325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247734E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247735E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200, 67186), +(3776013982, 1262365, 'zhTW', 0x00E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A899E7949FE591BDE58A9BE4B88AE9999024733325E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A899E7949FE591BDE58A9BE4B88AE9999024773325E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262364, 'zhTW', 0x00E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A89924733325E7949FE591BDE58A9BE4B88AE99990E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0AE7A59EE88196E6ADBBE4BAA1E591BDE4BBA4E69C89E6A5B5E4BD8EE79A84E6A99FE78E87E89995E6B1BAE99D9EE9A696E9A098E695B5E4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A89924773325E7949FE591BDE58A9BE4B88AE99990E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0AE7A59EE88196E6ADBBE4BAA1E591BDE4BBA4E69C89E6A5B5E4BD8EE79A84E6A99FE78E87E89995E6B1BAE99D9EE9A696E9A098E695B5E4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1262359, 'zhTW', 0x00E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A89924733325E7949FE591BDE58A9BE4B88AE99990E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0AE7A59EE88196E6ADBBE4BAA1E591BDE4BBA4E69C89E6A5B5E4BD8EE79A84E6A99FE78E87E89995E6B1BAE99D9EE9A696E9A098E695B5E4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A89924773325E7949FE591BDE58A9BE4B88AE99990E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0AE7A59EE88196E6ADBBE4BAA1E591BDE4BBA4E69C89E6A5B5E4BD8EE79A84E6A99FE78E87E89995E6B1BAE99D9EE9A696E9A098E695B5E4BABAE380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3776013982, 1248931, 'zhTW', 0x00E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824733325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247334E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247335E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200E59CA8E688B0E9ACA5E4B8ADE68993E9968BE4BA82E694BEE79A84E78F8DE59381EFBC8CE69C83E58FACE5969AE5B487E68B9CE4BDA0E79A84E8A2ABE588B6E4BC8FE79A84E9878DE69394EFBC8CE4BDBFE4BDA0E79A8424707269E68F90E9AB9824773325E380820D0A0D0AE5908CE4B880E69982E99693EFBC8CE4BDA0E69C80E5A49AE58FAFE4BBA5E69381E69C89247734E5808BE8A2ABE588B6E4BC8FE79A84E9878DE69394E380820D0AE59CA8E694B6E99B86E887B3E5B091247735E5808BE5B487E68B9CE88085E5BE8CEFBC8CE6AF8FE5808BE9878DE69394E8B3A6E4BA88E79A8424707269E68F90E9AB98E3808200, 67186), +(3776013982, 1248927, 'zhTW', 0x00E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282473352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A899E7949FE591BDE58A9BE4B88AE9999024733325E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300E795B6E4BDA0E79A84E68EA2E7A9B6E5A4A5E4BCB4E696BDE694BE24407370656C6C6E616D6531323531363033E69982EFBC8CE5B087E69C83E5B08DE99A8AE4BC8DE68890E593A1E8B3A6E4BA88E7A59EE88196E591BDE4BBA4EFBC8CE6AF8FE5808BE591BDE4BBA4E58FAFE4BDBFE585B6E582B7E5AEB3E6B395E8A193E5928CE68A80E883BDE69C89247B282477352F31303030292A3130307D2E3125E79A84E6A99FE78E87E9A18DE5A496E980A0E68890E79BB8E795B6E696BCE79BAEE6A899E7949FE591BDE58A9BE4B88AE9999024773325E79A84E7A59EE88196E582B7E5AEB3E380820D0A0D0AE6AF8FE5808BE79BAEE6A899E6AF8F243132363133323470726F63636F6F6C646F776EE7A792E58FAAE883BDE8A7B8E799BCE4B880E6ACA1E380820D0A0D0A24407370656C6C69636F6E3132353136303324407370656C6C6E616D65313235313630330D0A24407370656C6C646573633132353136303300, 67186), +(3072882582, 54341, 'zhTW', 0xCF0003000000621E0000, 67186), +(3776013982, 1277796, 'zhTW', 0x00E9A985E695A3E4BDA0E99DA2E5898DE7AF84E59C8DE585A7E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B087E585B6E6A899E8A898E782BAE3808CE689BEE588B0E3808DE78B80E6858BE380820000, 67186), +(3776013982, 1256862, 'zhTW', 0x00E9A985E695A3E7AF84E59C8DE585A7E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B087E585B6E6A899E8A898E782BAE3808CE8A2ABE689BEE588B0E3808DE380820000, 67186), +(3776013982, 1256861, 'zhTW', 0x00E8B7B3E588B0E68C87E5AE9AE4BD8DE7BDAEEFBC8CE9A985E695A3E591BDE4B8ADE7AF84E59C8DE585A7E8BAB2E8978FE88085E79A84E5B9BBE8B1A1E380820000, 67186), +(3776013982, 1256860, 'zhTW', 0x00E59CA82464E585A7E9A985E695A3E4BDA0E99DA2E5898DE8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B087E585B6E6A899E8A898E782BAE3808CE689BEE588B0E3808DE78B80E6858BE380820000, 67186), +(3776013982, 1256010, 'zhTW', 0x00E9A985E695A3E7AF84E59C8DE585A7E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE5B087E585B6E6A899E8A898E782BAE3808CE689BEE588B0E3808DE78B80E6858BE380820000, 67186), +(1408785804, 249319, 'zhTW', 0xE7CD0300FFE7090000, 67186), +(1122246768, 249319, 'zhTW', 0x000000004998084675D799C5E7FCAD403FB003002C9A0300DB3E000000000000E7090000, 67186), +(1408785804, 249318, 'zhTW', 0xE6CD0300FFE7090000, 67186), +(1122246768, 249318, 'zhTW', 0x00000000C923BD45D53D8BC54145B7423FB0030009C00300603E000000000000E7090000, 67186), +(1408785804, 249317, 'zhTW', 0xE5CD0300FF71010000, 67186), +(1122246768, 249317, 'zhTW', 0x000000004998084675D799C5E7FCAD403EB003002C9A0300DB3E00000000000071010000, 67186), +(1408785804, 249316, 'zhTW', 0xE4CD0300FF71010000, 67186), +(1122246768, 249316, 'zhTW', 0x00000000C923BD45D53D8BC54145B7423EB0030009C00300603E00000000000071010000, 67186), +(1408785804, 249315, 'zhTW', 0xE3CD0300FFE7090000, 67186), +(1122246768, 249315, 'zhTW', 0x000000006B8F0846A7D699C5ABDEAD40CDFA0300B7BD0300613E000000000000E7090000, 67186), +(1408785804, 249314, 'zhTW', 0xE2CD0300FF71010000, 67186), +(1122246768, 249314, 'zhTW', 0x000000006B8F0846A7D699C5ABDEAD40CCFA0300B7BD0300613E00000000000071010000, 67186), +(3776013982, 1295508, 'zhTW', 0x000000, 67186), +(3776013982, 1295497, 'zhTW', 0x000000, 67186), +(3776013982, 1295486, 'zhTW', 0x000000, 67186), +(3776013982, 464291, 'zhTW', 0x000000, 67186), +(3776013982, 1243616, 'zhTW', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243615, 'zhTW', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243613, 'zhTW', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243605, 'zhTW', 0x0024407370656C6C64657363313231353038370000, 67186), +(3776013982, 1243602, 'zhTW', 0x00E8BFAAE69DB0E5B494E696AFE799BCE5B084E4B880E98193E4B88DE7A9A9E5AE9AE79A84E8999BE784A1E883BDE9878FEFBC8CE4B8A6E5BD88E8B7B3E887B3247332E5808BE4BD8DE7BDAEE38082E883BDE9878FE69C83E59CA8E8A7B8E59CB0E69982E78886E782B8EFBC8CE5B08DE591BDE4B8ADE4BD8DE7BDAE24313231353135374131E7A2BCE585A7E79A84E68980E69C89E78EA9E5AEB6E980A0E6889024313231353135377331E9BB9EE69A97E5BDB1E582B7E5AEB3E38082E5A682E69E9CE7AF84E59C8DE585A7E6B292E69C89E78EA9E5AEB6EFBC8CE58987E69C83E8A7B8E799BC24407370656C6C6E616D6531323135313631E380820D0A0D0AE59CA8E980A0E68890247332E6ACA1E8A19DE6938AE5BE8CEFBC8CE883BDE9878FE5868DE4B880E6ACA1E5BD88E8B7B3EFBC8CE4B8A6E68890E782BA24407370656C6C6E616D6531323135393337E380820000, 67186), +(3776013982, 1243588, 'zhTW', 0x0024407370656C6C64657363313231353038370D0A0000, 67186), +(3776013982, 1243586, 'zhTW', 0x0024407370656C6C64657363313231353038370000, 67186), +(4033975491, 619702, 'zhTW', 0x000000000000000000000000000000000000000000000000EC9C000013000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000012B40300, 67186), +(1181150530, 751465, 'zhTW', 0x02000000B674090012B40300, 67186), +(600565378, 660617, 'zhTW', 0xDE1302000000803F9A991940010000E8060400, 67186), +(600565378, 660616, 'zhTW', 0x750302000000803F9A991940000000E8060400, 67186), +(600565378, 643167, 'zhTW', 0xDB3302000000803FCDCC4C400000004DEA0300, 67186), +(1010104591, 24096, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E6B7B1E6B5B7E6BD9BE6B0B4E88085E59C96E7B48DE59FBAE789B97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00205E00003C080400FF02C9661300, 67186), +(1010104591, 23712, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E6B7B1E6B5B7E6BD9BE6B0B4E88085E59C96E7B48DE59FBAE789B97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C72313030307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00A05C00003B080400FF02C8661300, 67186), +(1010104591, 23427, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E6B7B1E6B5B7E6BD9BE6B0B4E88085E59C96E7B48DE59FBAE789B97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00835B0000EAF10300FF025F471300, 67186), +(1010104591, 23426, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E6B7B1E6B5B7E6BD9BE6B0B4E88085E59C96E7B48DE59FBAE789B97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00825B0000E9F10300FF025E471300, 67186), +(1010104591, 23425, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E6B7B1E6B5B7E6BD9BE6B0B4E88085E59C96E7B48DE59FBAE789B97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00815B0000E8F10300FF025D471300, 67186), +(1010104591, 23424, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E6B7B1E6B5B7E6BD9BE6B0B4E88085E59C96E7B48DE59FBAE789B97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E7A596E998BFE69BBC7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723735307C4863757272656E63793A333337337C687C54496E746572666163655C49434F4E535C4974656D5F656E6368616E746564706561726C2E626C703A307C747C687C6E7C6E00805B0000E7F10300FF025C471300, 67186), +(3776013982, 1257701, 'zhTW', 0x00E69C9DE795B6E5898DE79BAEE6A899E799BCE58B95E7B2BEE6BA96E79A84E585A9E980A3E696ACE38082E6AF8FE6ACA1E694BBE6938AE5B08DE7AF84E59C8DE585A7E79A84E68980E69C89E695B5E4BABAE980A0E6889024313235373733367331E9BB9EE789A9E79086E582B7E5AEB3EFBC8CE5908CE69982E6AF8F24313235373734357431E7A792E9A18DE5A496E980A0E6889024313235373734357331E9BB9EE7A59EE88196E582B7E5AEB3EFBC8CE68C81E7BA8C243132353737343564EFBC8CE4B8A6E59CA8E59CB0E99DA2E588BBE587BA24407370656C6C6E616D6531323535333130E380820000, 67186), +(4033975491, 619581, 'zhTW', 0x0000000000000000000000000000000000000000000000000F2A000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(4033975491, 619569, 'zhTW', 0x0000000000000000CDCCCC3D000000000000000000000000E8D00000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000B2A70300, 67186), +(4033975491, 581317, 'zhTW', 0x0000000000000000000000000000000000000000000000009F880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, 67186), +(1181150530, 751209, 'zhTW', 0x020000003D74090087B70300, 67186), +(1181150530, 751192, 'zhTW', 0x0200000031740900B2A70300, 67186), +(3776013982, 444088, 'zhTW', 0xE699B6E7B48500243F63315BE5B4A9E8A7A3E980A0E68890E582B7E5AEB3E69982EFBC8CE69C83E6B688E88097E591BDE4B8ADE695B5E4BABAE8BAABE4B88AE79A84247B2473322F313030307D2E31E7A792E781ABE784B0E4B98BE681AFE69588E69E9CEFBC8CE5B087E585B6E5BC95E78886EFBC8CE980A0E68890E79BB8E795B6E696BC24733425E6B688E88097E9878FE79A84E582B7E5AEB3E380820D0A0D0AE9BE8DE784B0E980A0E68890E582B7E5AEB3E69982EFBC8CE69C83E6B688E88097E591BDE4B8ADE695B5E4BABAE8BAABE4B88AE79A84247B2473332F313030307DE7A792E781ABE784B0E4B98BE681AFE69588E69E9CEFBC8CE5B087E585B6E5BC95E78886EFBC8CE980A0E68890E79BB8E795B6E696BC24733725E6B688E88097E9878FE79A84E582B7E5AEB3E380825D5BE7BFA0E7B6A0E4B98BE69381E980A0E68890E6B2BBE79982E69588E69E9CE69982EFBC8CE69C83E6B688E88097E6B2BBE79982E79B9FE58F8BE8BAABE4B88AE79A84247B2473352F313030307DE7A792E5A4A2E5A283E4B98BE681AFE69588E69E9CEFBC8CE5B087E585B6E5BC95E78886EFBC8CE782BAE585B6E6B2BBE79982E79BB8E795B6E696BC24733625E6B688E88097E9878FE79A84E7949FE591BDE58A9BE380820D0A0D0AE7BFA1E7BFA0E4B98BE88AB1E980A0E68890E6B2BBE79982E69588E69E9CE69982EFBC8CE69C83E6B688E88097E6B2BBE79982E79B9FE58F8BE8BAABE4B88AE79A84247B2473312F313030307DE7A792E5A4A2E5A283E4B98BE681AFE69588E69E9CEFBC8CE5B087E585B6E5BC95E78886EFBC8CE782BAE585B6E6B2BBE79982E79BB8E795B6E696BC24733625E6B688E88097E9878FE79A84E7949FE591BDE58A9BE380825D0000, 67186), +(4033975491, 619554, 'zhTW', 0x0000000000000000000000000000000000000000000000004FB0000022000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000C6B50300, 67186), +(1181150530, 751159, 'zhTW', 0x0C000000281F0000C6B50300, 67186), +(1181150530, 751156, 'zhTW', 0x0200000022740900C6B50300, 67186), +(1181150530, 751151, 'zhTW', 0x0C000000241F00009D0D0400, 67186), +(3776013982, 1295319, 'zhTW', 0x000000, 67186), +(2151089334, 7976, 'zhTW', 0x000000000000803E0000803E0000403FE9E7673F9D9C1C3E9D9C1C3E0000803F0000803F00000000000000006A00000014000000, 67186), +(2151089334, 7972, 'zhTW', 0x0000000000000000000000000000803FF3F1713FFAF8783EFAF8783E0000803F0000803F00000000000000006A00000014000000, 67186), +(3386291891, 234064, 'zhTW', 0xE9A99AE687BCE8999BE784A1E8A18CE8808500000000010F000000AD6E0100000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295191, 'zhTW', 0x0024407370656C6C6E616D6531323439363039E4BE9DE98CAFE8AAA4E9A086E5BA8FE591BDE4B8ADE5BE8CE69C83E794A2E7949FE8BFB4E99FBFE79A84E599AAE99FB3EFBC8CE4BDBFE79BAEE6A899E6B289E9BB98EFBC8CE68C81E7BA8C2464E380822000E6B289E9BB98E3808200, 67186), +(3247720076, 42321, 'zhTW', 0x0000000000, 67186), +(4033975491, 619506, 'zhTW', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619505, 'zhTW', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619504, 'zhTW', 0x0000000000000000000000000000804000008040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007D0D0400, 67186), +(4033975491, 619503, 'zhTW', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF4946000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619502, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619501, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619500, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619499, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619498, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007D0D0400, 67186), +(4033975491, 619497, 'zhTW', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFFDE2F000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619496, 'zhTW', 0x0000000000000000000000000000C0400000C040000000009B7C0000FF00000000000000000000000000000000DB0F49400000000000000000CDCCCC3ECDCC4C3EFFFFFFFFFFFF1A23000000000000000000000000803E0000803E00007C0D0400, 67186), +(4033975491, 619493, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619492, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619491, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619490, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619489, 'zhTW', 0x00000000000000000000A040000000000000000000000000A0700000FF000000000000000000000000000000000000000000000000000000000000403F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007C0D0400, 67186), +(4033975491, 619487, 'zhTW', 0x0000000000000000000000000000000000000000000000009B7C000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFF66300000000000000000000000000000000000000007B0D0400, 67186), +(4033975491, 619483, 'zhTW', 0x000000000000000000000000000000000000000000000000F1A6000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000007A0D0400, 67186), +(4033975491, 619482, 'zhTW', 0x0000000000000000000000000000000000000000000000007AB20000FFAF0100000000000000000000000000000000000000000000000000000000C03F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000089B70300, 67186), +(4033975491, 604956, 'zhTW', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000809C0300, 67186), +(4033975491, 604955, 'zhTW', 0x0000000000000000000000000000000000000000000000001CA4000013000000000000000000000000000000000000000000000000000000006666664000000000FFFFFFFFFFFFEB040000000000000000000000000000000000000000839C0300, 67186), +(4033975491, 588799, 'zhTW', 0x00000000000000000000000000000000000000000000000082910000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000088B70300, 67186), +(4033975491, 588798, 'zhTW', 0x00000000000000000000000000000000000000000000000079890000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000087B70300, 67186), +(1181150530, 751040, 'zhTW', 0x0C000000221F00007E0D0400, 67186), +(1181150530, 751039, 'zhTW', 0x02000000F27309007D0D0400, 67186), +(1181150530, 751038, 'zhTW', 0x02000000F17309007D0D0400, 67186), +(1181150530, 751037, 'zhTW', 0x02000000F07309007D0D0400, 67186), +(1181150530, 751036, 'zhTW', 0x02000000EF7309007C0D0400, 67186), +(1181150530, 751035, 'zhTW', 0x02000000EE7309007D0D0400, 67186), +(1181150530, 751034, 'zhTW', 0x02000000ED7309007D0D0400, 67186), +(1181150530, 751033, 'zhTW', 0x02000000EC7309007D0D0400, 67186), +(1181150530, 751032, 'zhTW', 0x02000000EB7309007D0D0400, 67186), +(1181150530, 751031, 'zhTW', 0x02000000EA7309007D0D0400, 67186), +(1181150530, 751030, 'zhTW', 0x02000000E97309007C0D0400, 67186), +(1181150530, 751029, 'zhTW', 0x02000000E87309007C0D0400, 67186), +(1181150530, 751026, 'zhTW', 0x02000000E57309007C0D0400, 67186), +(1181150530, 751025, 'zhTW', 0x02000000E47309007C0D0400, 67186), +(1181150530, 751024, 'zhTW', 0x02000000E37309007C0D0400, 67186), +(1181150530, 751023, 'zhTW', 0x02000000E27309007C0D0400, 67186), +(1181150530, 751022, 'zhTW', 0x02000000E17309007C0D0400, 67186), +(1181150530, 751020, 'zhTW', 0x02000000DF7309007B0D0400, 67186), +(1181150530, 751016, 'zhTW', 0x050000005D7C040089B70300, 67186), +(1181150530, 751015, 'zhTW', 0x05000000F79C03007A0D0400, 67186), +(1181150530, 751014, 'zhTW', 0x02000000DB7309007A0D0400, 67186), +(1181150530, 751013, 'zhTW', 0x0C000000211F000089B70300, 67186), +(1181150530, 751012, 'zhTW', 0x02000000DA73090089B70300, 67186), +(3425193231, 546511, 'zhTW', 0x070000000800000000000000000000000000000000000000020000007E0D0400000000000000000060C80200, 67186), +(3425193231, 546510, 'zhTW', 0x090000000A00000000000000000000000000000000000000030000007D0D040000000000000000005FC80200, 67186), +(3425193231, 546509, 'zhTW', 0x090000000A00000000000000000000000000000000000000030000007C0D040000000000000000005EC80200, 67186), +(3425193231, 546508, 'zhTW', 0x060000000D00000000000000000000000000000000000000020000007B0D040000000000000000006E940200, 67186), +(3425193231, 546507, 'zhTW', 0x060000000D00000000000000000000000000000000000000020000007A0D040000000000000000006E940200, 67186), +(3776013982, 1295278, 'zhTW', 0x0024407370656C6C64657363313234313639320000, 67186), +(2151089334, 7970, 'zhTW', 0x000000000000803E0000803E0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(2151089334, 7969, 'zhTW', 0x000000000000803E0000003F0000003F0000803F0000803F0000803F0000803F0000003F00000000000000006A00000006000000, 67186), +(3745449290, 8615, 'zhTW', 0xE58480E5BC8FE59CB0E9BB9EEFBC9AE588BAE8848AE5B497E593A800E99984E8BF91E6ADA3E59CA8E980B2E8A18CE58DB1E99AAAE79A84E58480E5BC8FE3808200A72100009A9FBD45EC0954C5A2450641000000006C63020000000000BC8C00008F11C2007B2001000000000000000000A072010000000000000000003508000000000000, 67186), +(4033975491, 619445, 'zhTW', 0x9A99593F00000000000000000000000000000000000000009DB7000001000000000000000000000000000000000000000000000000000000000000003F00000000FFFFFFFFFFFF00000000000000000000000000000000000000000000600D0400, 67186), +(1181150530, 750937, 'zhTW', 0x02000000B5730900600D0400, 67186), +(3425193231, 546473, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000600D0400000000000000000051C80200, 67186), +(3776013982, 1295243, 'zhTW', 0x00E696BDE6B395E88085E9878BE694BEE7A798E6B395E883BDE9878FE78886E799BCEFBC8CE5B08D244131E7A2BCE585A7E79A84E78EA9E5AEB6E980A0E68890247331E9BB9EE7A798E6B395E582B7E5AEB3E380820000, 67186), +(3776013982, 1295237, 'zhTW', 0x00E696BDE6B395E88085E9878BE694BEE7A798E6B395E883BDE9878FE78886E799BCEFBC8CE5B08D244131E7A2BCE585A7E79A84E78EA9E5AEB6E980A0E68890247331E9BB9EE7A798E6B395E582B7E5AEB3E380820000, 67186), +(600565378, 632510, 'zhTW', 0x121902000000803F0000A03F000000BBDA0300, 67186), +(600565378, 632508, 'zhTW', 0xF81802000000803FCDCC8C3F000000BADA0300, 67186), +(3201599327, 15388, 'zhTW', 0x1C3C0000ABA101002800000002000000, 67186), +(3072882582, 58022, 'zhTW', 0x8B01040000004E1F0000, 67186), +(3776013982, 1226037, 'zhTW', 0x00E6BA96E58299E5BE9EE4BA8BE5B1A0E5AEB0E4BD9CE6A5ADE38082E5959FE58B95E69982EFBC8CE4BDA0E4B88BE4B880E6ACA1E980B2E8A18CE887B3E69A97E4B98BE5A49CE5899DE79AAEE69982EFBC8CE5B087E69C83E4BF9DE8AD89E78DB2E5BE97E58FAFE794A8E696BCE783B9E9A3AAE79A84E88289E3808200E6BA96E58299E5A5BDE5B1A0E5AEB0E4B88BE4B880E99ABBE8A2ABE4BDA0E5899DE79AAEE79A84E887B3E69A97E4B98BE5A49CE7949FE789A9EFBC8CE4BF9DE8AD89E78DB2E5BE97E58FAFE794A8E696BCE783B9E9A3AAE79A84E88289E3808200, 67186), +(3776013982, 442615, 'zhTW', 0x00E6BA96E58299E5BE9EE4BA8BE5B1A0E5AEB0E4BD9CE6A5ADE38082E5959FE58B95E69982EFBC8CE4BDA0E4B88BE4B880E6ACA1E980B2E8A18CE58DA1E88CB2E998BFE788BEE58AA0E5899DE79AAEE69982EFBC8CE5B087E69C83E4BF9DE8AD89E78DB2E5BE97E58FAFE794A8E696BCE783B9E9A3AAE79A84E88289E3808200E6BA96E58299E5A5BDE5B1A0E5AEB0E4B88BE4B880E99ABBE8A2ABE4BDA0E5899DE79AAEE79A84E58DA1E88CB2E998BFE788BEE58AA0E7949FE789A9EFBC8CE4BF9DE8AD89E78DB2E5BE97E58FAFE794A8E696BCE783B9E9A3AAE79A84E88289E3808200, 67186), +(3386943305, 23675, 'zhTW', 0x00000000000000002300E201000042450002800010000420040001000060010000010000000000000000000000000000000087E70000, 67186), +(3386291891, 59271, 'zhTW', 0xE683A1E9AD94E4B98BE9968000000000000B000000D29E0000000000000000000000000000000000000000803F0000803F0000803F000000000000000000000000, 67186), +(3776013982, 1295194, 'zhTW', 0x00E98080E587BAE79BB8E4BD8DE6B7B1E6BD9BE380820000, 67186), +(3776013982, 1241218, 'zhTW', 0x000000, 67186), +(2575642838, 749, 'zhTW', 0xAAD51200000000007E6B040002000000000000000000000000690C0000, 67186), +(2575642838, 748, 'zhTW', 0xE8F012000000000077860400020000000000000000000000006E0C0000, 67186), +(3776013982, 1294288, 'zhTW', 0x00E59BA0E5BCB7E695B5E59CA8E5A0B4E8808CE58F97E588B0E5BCB7E58C96EFBC8CE5B087E68980E69C89E582B7E5AEB3E79A8424773125E58F8DE5BD88E7B5A6E696BDE6B395E88085E3808200E59BA0E5BCB7E695B5E59CA8E5A0B4E8808CE58F97E588B0E5BCB7E58C96EFBC8CE5B087E68980E69C89E582B7E5AEB3E79A8424773125E58F8DE5BD88E7B5A6E696BDE6B395E88085E380820D0A0D0AE5BCB7E58C96E88085EFBC9A243F24575332383330375B5D5B0D0A2D2024407370656C6C69636F6E31323832303431E793A6E68B89E8A5BFE696AF5D243F575332383331315B5D5B0D0A2D2024407370656C6C69636F6E31323832303432E5A2AEE890BDE4B98BE78E8BE896A9E59388E98194E788BE5D00, 67186), +(3425193231, 546424, 'zhTW', 0x060000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3425193231, 546422, 'zhTW', 0x030000000D0000000000000000000000000000000000000003000000D3E50300000000000000000039C80200, 67186), +(3776013982, 1286830, 'zhTW', 0x000000, 67186), +(600565378, 664416, 'zhTW', 0xDC5C01000000803F0000003F000000640D0400, 67186), +(3776013982, 1236092, 'zhTW', 0x00E6B0B8E4B985E680A7E59CB0E782BAE4B880E4BBB6E5B088E6A5ADE68A80E883BDE5B7A5E585B7E99984E9AD94E8BE9BE5A49AE99BB7E7B494E7869FEFBC8CE4BDBFE7B494E7869FE68F90E9AB9824656331E9BB9EE38082E784A1E6B395E794A8E59CA8E7AD89E7B49AE9AB98E696BC2465636978E79A84E789A9E59381E380820D0A0D0A7C636E4E4F524D414C5F464F4E545F434F4C4F523AE896A9E68B89E696AFE5A4A9E8B3A6202D20E5A58EE788BEE896A9E68B89E696AFE59381E8B3AA7C52200000, 67186), +(261693969, 93049, 'zhTW', 0xFFFFFFFFFFFFFFFFE8AAB2E6A5ADE8BC94E5B08E0000A7050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080030020000000000020000000000000000000000000000FFFFFFFFFFFFFFFF, 67186), +(1992314007, 1614662, 'zhTW', 0x3A4A0B000AF7820200, 67186), +(1992314007, 1614661, 'zhTW', 0x394A0B0008F7820200, 67186), +(1992314007, 1614660, 'zhTW', 0x384A0B0007F7820200, 67186), +(1992314007, 1614659, 'zhTW', 0x374A0B0006F7820200, 67186), +(1992314007, 1614658, 'zhTW', 0x364A0B0005F7820200, 67186), +(1992314007, 1614657, 'zhTW', 0x354A0B0004F7820200, 67186), +(1992314007, 1614656, 'zhTW', 0x344A0B0003F7820200, 67186), +(1992314007, 1614655, 'zhTW', 0x334A0B0001F7820200, 67186), +(1992314007, 1614654, 'zhTW', 0x324A0B0000F7820200, 67186), +(338825009, 226556, 'zhTW', 0xD78A100002000000000000003A4A0B00, 67186), +(338825009, 226555, 'zhTW', 0xD68A10000300000000000000394A0B00, 67186), +(338825009, 226554, 'zhTW', 0xD58A10000200000000000000394A0B00, 67186), +(338825009, 226553, 'zhTW', 0xD68A10000300000000000000374A0B00, 67186), +(338825009, 226552, 'zhTW', 0xD58A10000200000000000000374A0B00, 67186), +(338825009, 226551, 'zhTW', 0xD68A10000300000000000000364A0B00, 67186), +(338825009, 226550, 'zhTW', 0xD58A10000200000000000000364A0B00, 67186), +(338825009, 226549, 'zhTW', 0xD48A10000200000000000000354A0B00, 67186), +(338825009, 226548, 'zhTW', 0xD68A10000300000000000000344A0B00, 67186), +(338825009, 226547, 'zhTW', 0xD58A10000200000000000000344A0B00, 67186), +(338825009, 226546, 'zhTW', 0xD38A10000300000001000000334A0B00, 67186), +(338825009, 226545, 'zhTW', 0xD28A10000200000001000000334A0B00, 67186), +(338825009, 226544, 'zhTW', 0xD38A10000300000000000000334A0B00, 67186), +(338825009, 226543, 'zhTW', 0xD28A10000200000000000000334A0B00, 67186), +(338825009, 226542, 'zhTW', 0xD18A10000300000000000000324A0B00, 67186), +(338825009, 226541, 'zhTW', 0xD08A10000200000000000000324A0B00, 67186), +(4082824155, 1449249, 'zhTW', 0x02E28A1000394A0B00, 67186), +(4082824155, 1449248, 'zhTW', 0x01DE8A1000394A0B00, 67186), +(4082824155, 1449247, 'zhTW', 0x01DD8A1000384A0B00, 67186), +(4082824155, 1449246, 'zhTW', 0x07DA8A1000374A0B00, 67186), +(4082824155, 1449245, 'zhTW', 0x06DB8A1000374A0B00, 67186), +(4082824155, 1449244, 'zhTW', 0x06DC8A1000364A0B00, 67186), +(4082824155, 1449243, 'zhTW', 0x05D98A1000364A0B00, 67186), +(4082824155, 1449242, 'zhTW', 0x05D88A1000354A0B00, 67186), +(4082824155, 1449241, 'zhTW', 0x04E08A1000344A0B00, 67186), +(4082824155, 1449240, 'zhTW', 0x03E18A1000344A0B00, 67186), +(4082824155, 1449239, 'zhTW', 0x01DF8A1000344A0B00, 67186), +(4082824155, 1449238, 'zhTW', 0x00E38A1000344A0B00, 67186), +(2557447376, 739898, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D78A10000000000005000000FFFFFFFF0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739897, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739896, 'zhTW', 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739895, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739894, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739893, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009B25010000000000D48A10000000000000000000FFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739892, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001026010000000000D58A10000000000001000000FFFFFFFF0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739891, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000009A2501009A250100D28A1000D28A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000, 67186), +(2557447376, 739890, 'zhTW', 0x000000000000000000000000000000000000000000000000000000000000000000000000000000001126010000000000D08A10000000000000000000FFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F800000032010000, 67186), +(4033975491, 608169, 'zhTW', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000904000000000FFFFFFFFFFFF0000000008000000000000000000000000000000000064EC0300, 67186), +(4033975491, 599342, 'zhTW', 0x0000000000000000000000000000000000000000000000005CD2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000000A990300, 67186), +(4033975491, 579842, 'zhTW', 0x00000000000000000000000000000000000000000000000049CF000013000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF0000000000000000000000000000000000000000000080960300, 67186), +(4033975491, 578881, 'zhTW', 0x00000000000000000000804000000000000000000000000071C50000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000279B0300, 67186), +(4033975491, 578880, 'zhTW', 0x000000000000000000008040000000000000000000000000ABAE0000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000000000000000000000000000000000000000269B0300, 67186), +(4033975491, 578406, 'zhTW', 0x000000000000000000000000000000000000000000000000C4D00000FF000000000000000000000000000000000000000000000000000000000000204100000000FFFFFFFFFFFF00000000080000000000000000000000000000000000D2990300, 67186), +(2151089334, 7515, 'zhTW', 0x000000000000003F0000803F3333333F0000803FE2E0E03C000000000000803F9A99193F00000000000000006A0000000A000000, 67186), +(4033975491, 607519, 'zhTW', 0x00000000000000009A99193E000000000000000000000000DACC0000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001EEA0300, 67186), +(4033975491, 607518, 'zhTW', 0x00000000000000009A99193E000000000000000000000000A1D20000FF890700000000000000000000000000000000000000000000000000000000E03F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000001CEA0300, 67186), +(2151089334, 7220, 'zhTW', 0x000000000000003F0000803E6666663F8584843E000000000000803F8180003F0000003F00000000000000006A00000000000000, 67186), +(2151089334, 7016, 'zhTW', 0x000020410000003F0000803E6666663F0000803F000000008180003D8180003F0000003F00000000000000006A00000000000000, 67186), +(4033975491, 619212, 'zhTW', 0x000000000000000000000040000000000000000000000000EECA0000FF000000000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000C40C0400, 67186), +(4033975491, 618735, 'zhTW', 0x000000000000000000000000000000000000000000000000A2D20000FF000000000000000000000000000000000000000000000000000000000000204000000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(4033975491, 618734, 'zhTW', 0x00000000000000000000004000000000000000000000000035C80000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF00000000080000000000000000000000000000000000060B0400, 67186), +(1181150530, 750462, 'zhTW', 0x02000000CC720900C40C0400, 67186), +(3425193231, 545739, 'zhTW', 0x090000000A0000000000000000000000000000000000000003000000060B04000000000000000000FBC60200, 67186), +(3776013982, 1293613, 'zhTW', 0x00E8A39DE58299E9AD9AE7ABBFE4B98BE5BE8CE58FAFE4BBA5E5B08BE689BEE4B880E78987E6B0B4E59F9FE987A3E9AD9AE38082E795B6E6B0B4E4B8ADE79A84E6B5AEE6A899E6BFBAE8B5B7E6B0B4E88AB1E79A84E69982E58099EFBC8CE7AB8BE588BBE58FB3E98DB5E9BB9EE6938AE6B5AEE6A899E4BBA5E68D95E68D89E4B88AE989A4E79A84E9AD9AE38082E987A3E9AD9AE68A80E883BDE79A84E7AD89E7B49AE8B68AE9AB98EFBC8CE4BDA0E8B68AE69C89E58FAFE883BDE59CA8E9AB98E7AD89E7B49AE79A84E6B0B4E59F9FE4B8ADE987A3E588B0E9AD9AE380820000, 67186), +(3776013982, 1286820, 'zhTW', 0x000000, 67186), +(3776013982, 1286703, 'zhTW', 0x00E8A39DE58299E9AD9AE7ABBFE4B98BE5BE8CE58FAFE4BBA5E5B08BE689BEE4B880E78987E6B0B4E59F9FE987A3E9AD9AE38082E795B6E6B0B4E4B8ADE79A84E6B5AEE6A899E6BFBAE8B5B7E6B0B4E88AB1E79A84E69982E58099EFBC8CE7AB8BE588BBE58FB3E98DB5E9BB9EE6938AE6B5AEE6A899E4BBA5E68D95E68D89E4B88AE989A4E79A84E9AD9AE38082E987A3E9AD9AE68A80E883BDE79A84E7AD89E7B49AE8B68AE9AB98EFBC8CE4BDA0E8B68AE69C89E58FAFE883BDE59CA8E9AB98E7AD89E7B49AE79A84E6B0B4E59F9FE4B8ADE987A3E588B0E9AD9AE380820000, 67186), +(3776013982, 1253159, 'zhTW', 0x000000, 67186), +(3359787322, 29615, 'zhTW', 0xAF730000, 67186), +(3031818311, 9590, 'zhTW', 0x110000AF730000CC1C0000, 67186), +(3072882582, 49188, 'zhTW', 0xCF0001000000CC1C0000, 67186), +(3359787322, 31464, 'zhTW', 0xE87A0000, 67186), +(3776013982, 1277169, 'zhTW', 0x00E68993E9968BE4BBA5E694B6E99B863130E5808BE88BB1E99B84E5928CE7A59EE8A9B1E699A8E69BA6E7B48BE7ABA0E380820000, 67186), +(3776013982, 1243683, 'zhTW', 0x00E694B6E99B863130E5808BE7A59EE8A9B1E699A8E69BA6E7B48BE7ABA0E380820000, 67186), +(3776013982, 190784, 'zhTW', 0x00E8BA8DE4B88AE4BDA0E79A84E688B0E9A88EEFBC8CE68C81E7BA8C2432323138383364EFBC8CE4BDBFE7A7BBE58B95E9809FE5BAA6E68F90E9AB9824323231383833733425E38082E58FAFE4BBA5E59CA8E5AEA4E585A7E68896E698AFE688B0E9ACA5E4B8ADE4BDBFE794A8E380820000, 67186), +(4033975491, 619076, 'zhTW', 0x00000000000000000000000000000000000000000000000092290000FF000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619075, 'zhTW', 0x0000003F000000000000004000000000000000000000000079B2000013000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000CDCC4C3E0000000000006A0C0400, 67186), +(4033975491, 619074, 'zhTW', 0x00000000000000000000000000000000000000000000000072CE0000FF020300000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF000000000000000000000000000000000000000000006A0C0400, 67186), +(4033975491, 619073, 'zhTW', 0x0000000000000000000000000000000000000000000000003DCE0000FFAE0C00000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFFDF8800000000000000000000000000000000000000006A0C0400, 67186), +(1181150530, 750195, 'zhTW', 0x02000000447209006A0C0400, 67186), +(1181150530, 750194, 'zhTW', 0x05000000533705006A0C0400, 67186), +(1181150530, 750193, 'zhTW', 0x02000000437209006A0C0400, 67186), +(1181150530, 750192, 'zhTW', 0x02000000427209006A0C0400, 67186), +(1181150530, 750191, 'zhTW', 0x02000000417209006A0C0400, 67186), +(3425193231, 546169, 'zhTW', 0x0B0000000C00000000000000000000000000000000000000010000006A0C04000000000000000000C6C70200, 67186), +(3425193231, 546168, 'zhTW', 0x07000000080000000000000000000000000000000000000004000000467002000000000000000000C6C70200, 67186), +(3425193231, 546167, 'zhTW', 0x07000000080000000000000000000000000000000000000004000000477002000000000000000000C6C70200, 67186), +(3425193231, 546166, 'zhTW', 0x0700000008000000000000000000000000000000000000000200000040CF03000000000000000000C6C70200, 67186), +(4033975491, 619401, 'zhTW', 0x000000000000000000000000000000000000000000000000EAB7000022000000000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF000000000000000000000000000000000000000000003F0D0400, 67186), +(4033975491, 619384, 'zhTW', 0x000000000000000000000000000000000000000000000000B6AB0000FF9D0B00000000000000000000000000000000000000000000000000000000004000000000FFFFFFFFFFFF00000000000000000000000000000000000000000000390D0400, 67186), +(1181150530, 750841, 'zhTW', 0x05000000F1F304003F0D0400, 67186); + +INSERT INTO `hotfix_blob` (`TableHash`, `RecordId`, `locale`, `Blob`, `VerifiedBuild`) VALUES +(1181150530, 750840, 'zhTW', 0x02000000897309003F0D0400, 67186), +(1181150530, 750815, 'zhTW', 0x0200000078730900390D0400, 67186), +(3425193231, 546416, 'zhTW', 0x07000000080000000000000000000000000000000000000002000000390D0400000000000000000036C80200, 67186), +(3425193231, 546415, 'zhTW', 0x070000000800000000000000000000000000000000000000020000003F0D0400000000000000000036C80200, 67186), +(3425193231, 546414, 'zhTW', 0x030000000D000000000000000000000000000000000000000200000044A90300000000000000000036C80200, 67186), +(3425193231, 546413, 'zhTW', 0x030000000D000000000000000000000000000000000000000100000045A90300000000000000000036C80200, 67186), +(184881520, 18406, 'zhTW', 0x1100E18B0000, 67186), +(184881520, 18405, 'zhTW', 0x0F00FC890000, 67186), +(184881520, 18404, 'zhTW', 0x0E00FC890000, 67186), +(184881520, 18403, 'zhTW', 0xDC00F9890000, 67186), +(184881520, 18245, 'zhTW', 0x1100F9890000, 67186), +(184881520, 18244, 'zhTW', 0x0F00F9890000, 67186), +(2575642838, 750, 'zhTW', 0x57C313000000000000000000000000000000000000000000006F0C0000, 67186), +(3776013982, 1292124, 'zhTW', 0x000000, 67186), +(3776013982, 1266413, 'zhTW', 0x0024407370656C6C64657363313234343334380000, 67186), +(3776013982, 1244345, 'zhTW', 0x0024407370656C6C64657363313234343334380000, 67186), +(3388959798, 19277, 'zhTW', 0xB7B5120000000000F8010000000000000100000000000000, 67186), +(1059920561, 504, 'zhTW', 0xE7A798E5AF86E58E9FE6969900F8010000000000000000000002000000020000000000000000, 67186), +(312181299, 2020, 'zhTW', 0x8A03000001000000F8010000, 67186), +(312181299, 2019, 'zhTW', 0x8903000000000000F8010000, 67186), +(3776013982, 1231327, 'zhTW', 0x0024407370656C6C64657363313233323237320000, 67186), +(3776013982, 436358, 'zhTW', 0x00E5B08DE4BDA0E79BAEE6A899E799BCE58B95E4B880E980A3E4B8B2E7B2BEE6BA96E79A84E5BCB7E58A9BE68993E6938AEFBC8CE5B08DE585B6E980A0E68890247B2434343038383473312B2434343038383673312B2434343038383873317DE9BB9EE582B7E5AEB3EFBC8CE4B8A6E5B08DE585B6243434303838384131E7A2BCE585A7E79A84E695B5E4BABAE980A0E68890243434303838387331E9BB9EE582B7E5AEB3E38082E8B685E9818E247331E5808BE79BAEE6A899E69982EFBC8CE980A0E68890E79A84E582B7E5AEB3E9998DE4BD8EE380820D0A0D0AE59CA8E5BC95E5B08EE6AF80E5A39EE69982EFBC8CE4BDA0E58F97E588B0E79A84E582B7E5AEB3E9998DE4BD8E24733425EFBC8CE4B8A6E5B08DE6988FE8BFB7E38081E6938AE98080E5928CE5BCB7E588B6E7A7BBE58B95E69588E69E9CE5858DE796ABE380820D0A0D0AE59CA8E5BC95E5B08EE6AF80E5A39EE69982EFBC8CE4BDA0E58FAFE4BBA5E6A0BCE6938BE38081E68B9BE69EB6E38081E99683E8BAB2E5928CE4BDBFE794A8E789B9E5AE9AE998B2E7A6A6E68A80E883BDE380820000, 67186), +(3776013982, 1292071, 'zhTW', 0x00E58F97E588B0E696B9E999A3E79A84E8A19DE6938AE6B3A2E582B7E5AEB3E79A84E695B5E4BABAE5B08DE4BDA0E980A0E68890E79A84E582B7E5AEB3E9998DE4BD8E247B2473312F2D317D2E3125EFBC8CE68C81E7BA8C2464E380820D0A00E5B08D244061757261636173746572E980A0E68890E79A84E582B7E5AEB3E9998DE4BD8E247B2457312F2D317D2E3125E3808200, 67186), +(3266400455, 1570155, 'zhTW', 0x5D530500C8530800010000803F00000000, 67186), +(3266400455, 1570154, 'zhTW', 0x5D530500BD530800010000803F00000000, 67186), +(3266400455, 1570153, 'zhTW', 0x5D530500B8530800010000803F00000000, 67186), +(3266400455, 1570152, 'zhTW', 0x5D530500AF530800010000803F00000000, 67186), +(3266400455, 1570151, 'zhTW', 0x5D530500A9530800010000803F00000000, 67186), +(3266400455, 1570150, 'zhTW', 0x5D530500A8530800010000803F00000000, 67186), +(3266400455, 1570149, 'zhTW', 0x5D530500A5530800010000803F00000000, 67186), +(3266400455, 1570148, 'zhTW', 0x5D530500A4530800010000803F00000000, 67186), +(3266400455, 1570147, 'zhTW', 0x5D53050095530800010000803F00000000, 67186), +(3266400455, 1570146, 'zhTW', 0x5D530500A7530800010000803F00000000, 67186), +(3266400455, 1570145, 'zhTW', 0x5D530500B0530800010000803F00000000, 67186), +(3266400455, 1570144, 'zhTW', 0x5D530500C0530800010000803F00000000, 67186), +(3266400455, 1570143, 'zhTW', 0x5D53050092530800010000803F00000000, 67186), +(3266400455, 1570142, 'zhTW', 0x5D530500A2530800010000803F00000000, 67186), +(3266400455, 1570141, 'zhTW', 0x5D530500AE530800010000803F00000000, 67186), +(3266400455, 1570140, 'zhTW', 0x5D530500B1530800010000803F00000000, 67186), +(3266400455, 1570139, 'zhTW', 0x5D530500AA530800010000803F00000000, 67186), +(3266400455, 1570138, 'zhTW', 0x5D530500B6530800010000803F00000000, 67186), +(3232102598, 312954, 'zhTW', 0x5D5305000000004000008040000000000000000000000000000000000000000001E8030000102700008813000010270000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F010000000000803F000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, 67186), +(3408032706, 12257, 'zhTW', 0x170B3D160100, 67186), +(1734738485, 9018, 'zhTW', 0x0000000000000000000000003D160200015D5305000000000000, 67186), +(2575642838, 255, 'zhTW', 0xFCFC12000000000000000000020000000000000000000000006F0C0000, 67186), +(3776013982, 1294776, 'zhTW', 0x00E5B08DE4BDA0E79A84E8ADB7E794B2E6B3A8E585A5E5A4AAE999BDE4B98BE4BA95E79A84E5BEAEE5BCB1E8BFB4E99FBFEFBC8CE8A7A3E98E96E789B9E5AE9AE887B3E69A97E4B98BE5A49CE7ACAC31E8B3BDE5ADA3E881B7E6A5ADE5A597E8A39DE5A496E8A780E79A84E585B6E4BB96E8A696E8A6BAE69588E69E9CE380820D0A0D0AE6ADA4E69588E69E9CE782BAE688B0E99A8AE9809AE794A8E380820000, 67186), +(3776013982, 1273357, 'zhTW', 0x00E5B08DE4BDA0E79A84E8ADB7E794B2E6B3A8E585A5E5A4AAE999BDE4B98BE4BA95E79A84E5BEAEE5BCB1E8BFB4E99FBFEFBC8CE8A7A3E98E96E789B9E5AE9AE887B3E69A97E4B98BE5A49CE7ACAC31E8B3BDE5ADA3E881B7E6A5ADE5A597E8A39DE5A496E8A780E79A84E585B6E4BB96E8A696E8A6BAE69588E69E9CE380820D0A0D0AE6ADA4E69588E69E9CE782BAE688B0E99A8AE9809AE794A8E380820000, 67186), +(4167587713, 4140, 'zhTW', 0x06000000000000000000000020000000BDB9050000000000000000000000000000000000000000803F0000000000, 67186), +(3776013982, 1294727, 'zhTW', 0x0024407370656C6C69636F6E34353730343924407370656C6C6E616D653435373034397C6EE5A682E69E9CE980B2E9A39FE69982E99693E8B685E9818E3130E7A792EFBC8CE4BDA0E5B087E59BA024407370656C6C6E616D65343537303439E8808CE4BDBFE88090E58A9BE68F90E9AB9824313231393137397337E9BB9EEFBC8CE4B8BBE8A681E5B1ACE680A7E68F90E9AB9824313231393137397332E9BB9EEFBC8CE68C81E7BA8C2464E3808200E4B8BBE8A681E5B1ACE680A7E68F90E9AB9824773131E9BB9EE3808200, 67186), +(3776013982, 1294726, 'zhTW', 0x000000, 67186), +(3776013982, 1294720, 'zhTW', 0x00E5B084E6938AE695B5E4BABAEFBC8CE980A0E68890E789A9E79086E582B7E5AEB3E380820000, 67186), +(3776013982, 1294703, 'zhTW', 0x00E5B084E6938AE695B5E4BABAEFBC8CE980A0E68890E789A9E79086E582B7E5AEB3E380820000, 67186), +(3776013982, 1294669, 'zhTW', 0x00E6ADA4E7949FE789A9E8A19DE59091E4BDA0E3808200E6ADA4E7949FE789A9E8A19DE59091E4BDA0E3808200, 67186), +(3776013982, 1294633, 'zhTW', 0x00E696BDE6B395E88085E69C9DE4B880E5908DE78EA9E5AEB6E599B4E59090E781ABE79083EFBC8CE68C81E7BA8C2464EFBC8CE6AF8F247431E7A792E980A0E6889024313236363734357331E9BB9EE781ABE784B0E582B7E5AEB3E3808200E6AF8F247431E7A792E980A0E6889024313236363734357331E9BB9EE781ABE784B0E582B7E5AEB3E3808200, 67186), +(3776013982, 1294563, 'zhTW', 0x000000, 67186), +(3776013982, 1277795, 'zhTW', 0x00E9A985E695A3E4BDA0E99DA2E5898DE7AF84E59C8DE585A7E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE4B8A6E5B087E585B6E6A899E8A898E782BAE3808CE8A2ABE689BEE588B0E3808DE78B80E6858BE380820000, 67186), +(3776013982, 1272179, 'zhTW', 0x00E59091E59586E4BABAE8B3BCE8B2B7E380820D0A0D0A24407370656C6C646573633132353631373100E98284E6B292E68A93E588B0E5B08DE696B9EFBC8CE58DBBE58588E8A2ABE5B08DE696B9E693BAE4BA86E4B880E98193E3808200, 67186), +(3776013982, 1269655, 'zhTW', 0x00E59091E59586E4BABAE8B3BCE8B2B70D0A0D0A24407370656C6C64657363313235373334350000, 67186), +(3776013982, 1269654, 'zhTW', 0x00E59091E59586E4BABAE8B3BCE8B2B70D0A0D0A24407370656C6C64657363313235363836330000, 67186), +(3776013982, 1269650, 'zhTW', 0x00E59091E59586E4BABAE8B3BCE8B2B70D0A0D0A24407370656C6C64657363313235363836310D0A0000, 67186), +(3776013982, 1269641, 'zhTW', 0x00E59091E59586E4BABAE8B3BCE8B2B70D0A0D0A24407370656C6C64657363313235363031310000, 67186), +(3776013982, 1269640, 'zhTW', 0x00E59091E59586E4BABAE8B3BCE8B2B70D0A0D0A24407370656C6C64657363313235363031300D0A0000, 67186), +(3776013982, 1264545, 'zhTW', 0x00E88887E99984E8BF91E79A84E8A39DE9A3BEE789A9E59381E8AABFE68F9BE4BD8DE7BDAEE380820000, 67186), +(3776013982, 1259647, 'zhTW', 0x0024407370656C6C6465736334353239393300E887B3E69A97E4B98BE5A49CE7B2BEE78589E897A5E58A91E38081E897A5E793B6E5928CE58585E58886E980B2E9A39FE69588E69E9CE79A84E5A4B1E69588E69AABE5819CE3808200, 67186), +(3776013982, 1258362, 'zhTW', 0x000D0A7C434646666666666666E696BDE6B395E69982E99693EFBC9A312E35E7A792E380820D0AE999B7E998B1E586B7E58DBBE69982E99693EFBC9A35E7A792E380827C520D0A0D0AE5A682E69E9C2452E7A2BCE585A7E6B292E69C89E8BFBDE5B08BE88085EFBC8CE4BDA0E69C83E59CA8E795B6E5898DE4BD8DE7BDAEE79A842472616431E7A2BCE585A7E4B89FE693B224407370656C6C6E616D6531323538333538E5AEB9E599A8E380820D0A0D0AE5A682E69E9C2452E7A2BCE585A7E69C89E887B3E5B091E4B880E5808BE8BFBDE5B08BE88085EFBC8CE4BDA0E69C83E69C9DE8B79DE99BA2E69C80E8BF91E79A84E8BFBDE5B08BE88085E99984E8BF91E68B8BE693B224407370656C6C6E616D6531323538333538E5AEB9E599A8E380820D0A0D0A7C434646373164356666E58299E8A8BBEFBC9A7C527C434646643966636666E8BFBDE5B08BE88085E79C8BE4B88DE588B0E9A39BE8B68AE7A9BAE4B8ADE79A84E5AEB9E599A8E380827C520D0A0D0A24407370656C6C69636F6E3132353833353824407370656C6C6E616D6531323538333538EFBC9A0D0A24407370656C6C64657363313235383335380D0A0D0A7C434646623062306230E4B88DE698AFE69C80E7AB8BE58DB3E8A68BE69588E79A84EFBC8CE4B88DE9818EE69C89E69982E58099E5B0B1E698AFE99C80E8A681E7B0A1E596AEE79A84E693BEE4BA82E4BE86E4BF9DE8AD89E58B9DE588A9E380827C520000, 67186), +(3776013982, 1256009, 'zhTW', 0x00E9A985E695A3E4BDA0E99DA2E5898DE7AF84E59C8DE585A7E8BAB2E8978FE88085E79A84E5B9BBE8B1A1EFBC8CE4B8A6E5B087E585B6E6A899E8A898E782BAE3808CE8A2ABE689BEE588B0E3808DE78B80E6858BE380820000, 67186), +(3776013982, 1251813, 'zhTW', 0x00E8A2ABE6AEBAE6ADBBE69982EFBC8CE9AD85E5BDB1E69C83E799BCE587BAE5B096E598AFEFBC8CE5B08DE68980E69C89E78EA9E5AEB6E980A0E68890247331E9BB9EE69A97E5BDB1E582B7E5AEB3E380820000, 67186), +(1010104591, 22988, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E8908AE79DBFE981947C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E98A80E69C88E59F8E7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030E59586E4BABAEFBC9A7C72E4BA9EE696AFE681A97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E98A80E69C88E59F8E7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00CC59000000000000FF02914B1300, 67186), +(1010104591, 22984, 'zhTW', 0x7C634646464644323030E59586E4BABAEFBC9A7C72E8908AE79DBFE981947C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E98A80E69C88E59F8E7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C634646464644323030E59586E4BABAEFBC9A7C72E4BA9EE696AFE681A97C6E7C634646464644323030E58D80E59F9FEFBC9A7C72E98A80E69C88E59F8E7C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723230307C4863757272656E63793A333235397C687C54496E746572666163655C49434F4E535C494E565F31305F4765617243726166745F4172746973616E734D6574746C655F436F6C6F72322E424C503A307C747C687C6E7C6E7C6E7C6E00C859000000000000FF028D4B1300, 67186), +(1010104591, 21036, 'zhTW', 0x7C634646464644323030E5B088E7B2BEEFBC9A7C72E5B882E5A0B4E6A99FE58B95E680A7202D20E68EA1E7A4A6E9858DE4BBB67C6E7C6E002C52000000000000FF0349C41200, 67186), +(1010104591, 21034, 'zhTW', 0x7C634646464644323030E5B088E6A5ADE68A80E883BDE8A893E7B7B4E5B8ABEFBC9A7C72E887B3E69A97E4B98BE5A49CE5B7A5E7A88BE5ADB8EFBC883335EFBC897C6E7C634646464644323030E88AB1E8B2BBEFBC9A7C723134307C54494E544552464143455C4D4F4E45594652414D455C55492D474F4C4449434F4E2E424C503A307C747C6E7C6E002A52000000000000FF0347C41200, 67186), +(1010104591, 21033, 'zhTW', 0x7C634646464644323030E5B088E7B2BEEFBC9A7C72E5B882E5A0B4E6A99FE58B95E680A7202D20E5B7A5E7A88BE5ADB8E9858DE4BBB67C6E7C6E002952000000000000FF0346C41200, 67186), +(261693969, 86903, 'zhTW', 0xFFFFFFFFFFFFFFFFE4BA9EE882AFE68F90E7B48D000069F100000000000000000000FFFF00000000000000000000000000000000000000000000000000000000000000000000000043C903000000000000000000100C00000000000002000000080072120000400000021000315301000000000000000000FFFFFFFFFFFFFFFF, 67186), +(261693969, 86827, 'zhTW', 0xFFFFFFFFFFFFFFFFE585ACE6ADA3E8AA8DE8AD8900001DF100000000000000000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100C00000000000002000000080070020000000000020000FF6401000000000000000000FFFFFFFFFFFFFFFF, 67186), +(3851993221, 639, 'zhTW', 0xE58FAFE4BBA5E59CA8E5AE8CE68890E8A3BDE4BD9CE5BE8CE8BF94E98284E4B880E983A8E58886E69D90E69699E79A84E7A880E69C89E789A9E59381E380827C6E7C6EE98099E6ACA1E8A3BDE4BD9CE79A8424656E31E68F90E9AB9824657631E9BB9EE38082004303000000000000000000000000000000000000, 67186), +(3851993221, 638, 'zhTW', 0xE59CA8E5AE8CE68890E8A3BDE4BD9CE5BE8CE68F90E9AB98E8BF94E98284E983A8E58886E69D90E69699E79A84E6A99FE78E87E380827C6E7C6EE98099E6ACA1E8A3BDE4BD9CE79A8424656E31E68F90E9AB9824657631E9BB9EE38082004303000000000000000000000000000000000000, 67186), +(3851993221, 637, 'zhTW', 0xE4BF9DE8AD89E78DB2E5BE97E9A18DE5A496E8A3BDE4BD9CE8BCB8E587BAE79A84E7B6ADE5BAA6E795B0E5B8B8E380827C6E7C6EE98099E6ACA1E8A3BDE4BD9CE79A8424656E31E68F90E9AB9824657631E9BB9EE38082004103000000000000000000000000000000000000, 67186), +(3205218938, 58731, 'zhTW', 0x424C495A5A4152445F53544F52455F5641535F4552524F525F424F4F53545F5448524F54544C4500E5B7B2E98194E588B0E795B6E697A5E8A792E889B2E79BB4E58D87E6ACA1E695B8E4B88AE99990E38082E8AB8BE6988EE5A4A9E5868DE8A9A6E380820003000000, 67186), +(3205218938, 58259, 'zhTW', 0x534C4153485F434F4F4C444F574E4D414E4147455234002F636F6F6C646F776E6D616E616765720001000000, 67186), +(3205218938, 58258, 'zhTW', 0x534C4153485F434F4F4C444F574E4D414E4147455232002F63646D0001000000, 67186), +(3205218938, 55299, 'zhTW', 0x4A4F55524E4559535F43555252454E545F50524F475245535300E79BAEE5898DE980B2E5BAA6EFBC9A7C636E484947484C494748545F464F4E545F434F4C4F523A25642F25647C720001000000, 67186), +(3205218938, 49471, 'zhTW', 0x4D414A4F525F46414354494F4E5F52454E4F574E5F43555252454E545F50524F475245535300E79BAEE5898DE980B2E5BAA6EFBC9A207C63666666666666666625642F25647C720001000000, 67186), +(3776013982, 1294779, 'zhTW', 0x000000, 67186), +(3776013982, 1294759, 'zhTW', 0x000000, 67186), +(2921112328, 568649, 'zhTW', 0x49AD08000000780900000200000001865A010020000000000000007963020000000000, 67186), +(3776013982, 1294752, 'zhTW', 0x0024407370656C6C64657363313238343938300D0A0000, 67186), +(2202435563, 1295414, 'zhTW', 0x36C413003D0EA2E8A4011FC40800, 67186), +(2202435563, 1295413, 'zhTW', 0x35C41300080EC1E8A4011FC40800, 67186), +(2202435563, 1295412, 'zhTW', 0x34C41300E40DDCE8A4011FC40800, 67186), +(2202435563, 1295411, 'zhTW', 0x33C41300C00D0AE9A4011FC40800, 67186), +(2202435563, 1295410, 'zhTW', 0x32C41300A70D29E9A4011FC40800, 67186), +(2202435563, 1295409, 'zhTW', 0x31C41300A10D5EE9A4011FC40800, 67186), +(2202435563, 1295408, 'zhTW', 0x30C41300CF0D5BE9A4011FC40800, 67186), +(2202435563, 1295407, 'zhTW', 0x2FC41300040E4BE9A4011FC40800, 67186), +(2202435563, 1295406, 'zhTW', 0x2EC413002D0E26E9A4011FC40800, 67186), +(2202435563, 1295405, 'zhTW', 0x2DC41300500EFAE8A4011FC40800, 67186), +(2202435563, 1295404, 'zhTW', 0x2CC413006E0EC9E8A4011FC40800, 67186), +(2202435563, 1295403, 'zhTW', 0x2BC413006B0EA0E8A4011FC40800, 67186), +(2921112328, 574495, 'zhTW', 0x1FC40800C60B190A0000020000000C0000000000000000000000000000000000000000, 67186); + +UPDATE `hotfix_blob` SET `Blob`=0xE175020016010000FC44130002555702004200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161249 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x9E75020016010000C493060002545702004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=161182 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x25CD0200C0040000F806000002000000005800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=183589 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x940A020008020000F667130002BA4D02003000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133780 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x910A0200080200003A69130002BB4D02002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=133777 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `VerifiedBuild`=67186 WHERE (`TableHash`=326190544 AND `RecordId`=14433 AND `locale`='zhTW') OR (`TableHash`=326190544 AND `RecordId`=14432 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=406157 AND `locale`='zhTW') OR (`TableHash`=3359787322 AND `RecordId`=26196 AND `locale`='zhTW') OR (`TableHash`=3359787322 AND `RecordId`=22368 AND `locale`='zhTW') OR (`TableHash`=3776013982 AND `RecordId`=1284994 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xC1C70400000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000803F0000803F0000803F0000803F0000803F0000803F0000803F0000803F000000000000000000000000000000000000B4430000B443000000000000000F00000000000000000000000000FFFFFFFFFFFFFFFF570C0000FFFFFFFFFFFFFFFF580C00000000803F0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A04100409C46, `VerifiedBuild`=67186 WHERE (`TableHash`=3232102598 AND `RecordId`=277372 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x43DA02009A0000003DFC020001000000004200000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=186947 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xE9BF02009A0000006A7E130002000000002100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=180201 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xDF2802009A0000001204070002000000004100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=141535 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x42F801009A0000004331070002000000004000000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=129090 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x878D01009A0000008310020002E54B02003F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101767 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x2B8C01009A00000004ED030002E14B02003E00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101419 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x8C8B01009A0000001B0D000002E04B02003D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=101260 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x718A01009A0000003DFC020002DE4B02003C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100977 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xAA8901009A0000004A5F000002D44B02003B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100778 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xA98901009A0000009DCA010002D64B02003A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100777 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xA88901009A000000E002070002000000003900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100776 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xA78901009A0000001D23070002000000003800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100775 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xA68901009A0000007892060002000000003700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100774 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xA58901009A000000E905000002DB4B02003600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=100773 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xE57801009A000000BF5B130002000000003500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96485 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x987801009A0000007721130002000000003400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96408 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x977801009A00000045DF060002000000003300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96407 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x967801009A000000C721130002000000003200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96406 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x957801009A000000064D130002000000003100000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96405 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x947801009A000000209C120002000000003000000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96404 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x937801009A000000D5F8030002000000002F00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96403 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x677801009A0000002E20070003000000002E00000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96359 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x667801009A000000F21F070002000000002D00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96358 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x657801009A000000A24A130002000000002C00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=96357 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x886A01009A000000D81F070002000000002500000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92808 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x876A01009A0000006567040002000000002400000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92807 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x866A01009A000000E8D0000002000000002B00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92806 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x856A01009A0000003B0B030002000000002A00000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92805 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x846A01009A0000000815000002000000002900000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92804 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x836A01009A0000001F0A040002000000002800000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92803 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x826A01009A00000099D7020002000000002700000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92802 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x816A01009A00000091D7020002000000002600000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=92801 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x7D4501009A000000391D030002000000002300000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83325 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x7C4501009A0000006C37060002000000002200000002000000, `VerifiedBuild`=67186 WHERE (`TableHash`=1274215428 AND `RecordId`=83324 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xE78BA9E78DB500E6938AE69597E5BCB7E5A4A7E695B5E4BABAEFBC8CE782BAE998BFE696AFE5A194E6A882E79A84E8A18CE58B95E68F90E4BE9BE58D94E58AA9E3808200FF2000007B9C0546718199C58649CB4100000000D55A02000000000088820000A311C660FE3101000000000000000000000000000000613E000000001608000000000000, `VerifiedBuild`=67186 WHERE (`TableHash`=3745449290 AND `RecordId`=8447 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x00E69C80E5BE8CE79A84E781ABE88AB1E59CA8E887B3E69A97E5A49CE889B2E4B8ADE78783E78792E3808200E58B87E6B0A3E5A4A7E5A29EE3808200, `VerifiedBuild`=67186 WHERE (`TableHash`=3776013982 AND `RecordId`=1276487 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000EC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000093A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=591891 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x0000000000000000000000000000000000000000000000000DC20000FF430200000000000000000000000000000000000000000000000000003333933F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581318 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0x000000000000000000000000000000000000000000000000A0880000FF170600000000000000000000000000000000000000000000000000000000803F00000000FFFFFFFFFFFF0000000000000000000000000000000000000000000091A20300, `VerifiedBuild`=67186 WHERE (`TableHash`=4033975491 AND `RecordId`=581316 AND `locale`='zhTW'); +UPDATE `hotfix_blob` SET `Blob`=0xFFFFFFFFFFFFFFFFE6AFABE784A1E7AF80E5A58F0000A6050100B63B020000000000FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0C00000000000002000000080070020020000000020000000000000000000000000000FFFFFFFFFFFFFFFF, `VerifiedBuild`=67186 WHERE (`TableHash`=261693969 AND `RecordId`=93048 AND `locale`='zhTW'); + +DELETE FROM `hotfix_optional_data` WHERE (`TableHash`=35137211 AND `RecordId`=300642 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=300632 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299668 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299666 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296530 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296471 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291754 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291236 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=289399 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=273277 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=272911 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=299055 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=297004 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=296930 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=295318 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=294167 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291856 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=291853 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=290937 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA) OR (`TableHash`=35137211 AND `RecordId`=288987 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA); +INSERT INTO `hotfix_optional_data` (`TableHash`, `RecordId`, `locale`, `Key`, `Data`, `VerifiedBuild`) VALUES +(35137211, 300642, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 300632, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299668, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299666, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296530, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296471, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291754, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291236, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 289399, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 273277, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 272911, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 299055, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 297004, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 296930, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 295318, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 294167, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291856, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 291853, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 290937, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186), +(35137211, 288987, 'zhTW', 3744420815, 0x03E212AE1C0E73FDA9713E19B09A46525ED95CA4D678E9DA, 67186); + +UPDATE `hotfix_optional_data` SET `VerifiedBuild`=67186 WHERE (`TableHash`=35137211 AND `RecordId`=239474 AND `locale`='zhTW' AND `Key`=3744420815 AND `Data`=0xFE3F2E946E1CFBE865E98B3B38D387980DE65605FDF7977C); + +-- +SET @BUILD := 67186; + +DELETE FROM `hotfix_blob` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW' AND `TableHash`<>0xAFC190D1); -- Skip TactKeyLookup + +DELETE FROM `achievement_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `achievement_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `adventure_journal_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `adventure_map_poi_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `artifact_appearance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `artifact_appearance_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `artifact_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `auction_house_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `azerite_essence_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `azerite_essence_power_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `barber_shop_style_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `battle_pet_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `battle_pet_species_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `battlemaster_list_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `campaign_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `cfg_categories_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `char_titles_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chat_channels_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chr_classes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chr_customization_choice_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chr_customization_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chr_customization_req_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chr_races_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `chr_specialization_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `creature_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `creature_type_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `criteria_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `currency_container_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `currency_types_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `dungeon_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `faction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `friendship_rep_reaction_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `friendship_reputation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `gameobjects_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `garr_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `garr_building_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `garr_class_spec_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `garr_follower_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `garr_mission_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `garr_talent_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `heirloom_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_bag_family_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_class_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_limit_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_name_description_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_search_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `item_sparse_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `journal_encounter_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `journal_encounter_section_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `journal_instance_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `journal_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `keystone_affix_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `languages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `lfg_dungeons_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `mail_template_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `map_challenge_mode_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `map_difficulty_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `map_difficulty_x_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `mount_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `movie_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `perks_activity_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `player_condition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW' AND `ID` NOT IN (94459,98613)); +DELETE FROM `prestige_level_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `pvp_stat_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `pvp_talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `pvp_tier_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `quest_info_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `quest_sort_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `scenario_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `scenario_step_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `server_messages_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `skill_line_ability_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `skill_line_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `specialization_spells_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `spell_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `spell_focus_object_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `spell_item_enchantment_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `spell_name_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `spell_range_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `spell_shapeshift_form_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `talent_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `taxi_nodes_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `totem_category_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `toy_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `trait_currency_source_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `trait_definition_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `trait_sub_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `trait_tree_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `transmog_outfit_entry_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `transmog_outfit_slot_option_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `transmog_set_group_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `transmog_set_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `transmog_situation_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `transmog_situation_trigger_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `ui_map_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `ui_splash_screen_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `unit_power_bar_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `vignette_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `warband_scene_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); +DELETE FROM `wmo_area_table_locale` WHERE (`VerifiedBuild`>0 AND `VerifiedBuild`<@BUILD AND `locale`='zhTW'); From 1db74d17ecebf202f32556cf92f866392250cc67 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 29 Apr 2026 00:32:06 +0200 Subject: [PATCH 110/175] Core/Players: Correct new trait condition check --- src/server/game/Spells/TraitMgr.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/server/game/Spells/TraitMgr.cpp b/src/server/game/Spells/TraitMgr.cpp index c59f4b74c3411..10ff78b0d921b 100644 --- a/src/server/game/Spells/TraitMgr.cpp +++ b/src/server/game/Spells/TraitMgr.cpp @@ -641,9 +641,12 @@ bool MeetsTraitCondition(WorldPackets::Traits::TraitConfig const& traitConfig, P if (condition->TraitNodeGroupID || condition->TraitNodeID || condition->TraitNodeEntryID) { TraitNodeRankCounts ranks = CountTraitNodeRanks(traitConfig, condition->TraitNodeGroupID, condition->TraitNodeID, condition->TraitNodeEntryID); - if (ranks.Group != condition->SpentAmountRequired - && ranks.Node != condition->SpentAmountRequired - && ranks.Entry != condition->SpentAmountRequired) + if (condition->SpentAmountRequired + && ranks.Group < condition->SpentAmountRequired + && ranks.Node < condition->SpentAmountRequired + && ranks.Entry < condition->SpentAmountRequired) + return false; + if (!condition->SpentAmountRequired && ranks.Group != 0 && ranks.Node != 0 && ranks.Entry != 0) return false; } } From ef8de83e914f1eaf8542436a10a85b985d723559 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 29 Apr 2026 00:32:06 +0200 Subject: [PATCH 111/175] Core: Updated allowed build to 12.0.5.67235 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_04_29_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_04_29_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 3c5bbcbfe64a5..80c62f4374809 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1596,7 +1596,14 @@ INSERT INTO `build_auth_key` VALUES (67186,'Mac','x64','WoWC',0x0A718FA5FFE7C1BDE3CE590D178F3EF2), (67186,'Win','A64','WoW',0xA77179F88A613F96E96F9C5D01278390), (67186,'Win','x64','WoW',0xBB01E8BE61269F022557F8E3D51A93D7), -(67186,'Win','x64','WoWC',0x564D029956263E4861450F664717ED7C); +(67186,'Win','x64','WoWC',0x564D029956263E4861450F664717ED7C), +(67235,'Mac','A64','WoW',0xEC0F6ED11D2C44DCC9F1A232A5A851DE), +(67235,'Mac','A64','WoWC',0x0451CEB0D4744ECE9E8178BB2631590C), +(67235,'Mac','x64','WoW',0x562C1648F20378EE01F7B1B55EA708C8), +(67235,'Mac','x64','WoWC',0x97A87270D118A5D6FD3FC976176FA74D), +(67235,'Win','A64','WoW',0xE810FC55C5B08E825A6230BDCB4E6117), +(67235,'Win','x64','WoW',0x1F42DA2BE67CA1FB2970945D89AF137E), +(67235,'Win','x64','WoWC',0x71B8F38D7E5BF20D428D8B8BF4DDCBD7); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2044,7 +2051,8 @@ INSERT INTO `build_info` VALUES (66838,12,0,1,NULL), (67088,12,0,5,NULL), (67114,12,0,5,NULL), -(67186,12,0,5,NULL); +(67186,12,0,5,NULL), +(67235,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3657,7 +3665,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67186', + `gamebuild` int unsigned NOT NULL DEFAULT '67235', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3672,7 +3680,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67186,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67235,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4235,7 +4243,8 @@ INSERT INTO `updates` VALUES ('2026_04_07_00_auth.sql','AE088A44CB5E1ECE7BC928B5471AD8D523074001','RELEASED','2026-04-07 09:20:28',0), ('2026_04_22_00_auth.sql','FA3426E1D920AD15ABA9F3B43630CAD4B3A73704','RELEASED','2026-04-22 18:42:10',0), ('2026_04_23_00_auth.sql','7FF5A1098DDB029004A8822D2A1545878F269D25','RELEASED','2026-04-23 18:44:59',0), -('2026_04_24_00_auth.sql','8C1C15C9672C557D91E2AE61521F8063F6030F14','RELEASED','2026-04-24 09:39:50',0); +('2026_04_24_00_auth.sql','8C1C15C9672C557D91E2AE61521F8063F6030F14','RELEASED','2026-04-24 09:39:50',0), +('2026_04_29_00_auth.sql','035B7C240CDAC17FDC883175D5C0ABAFA432FDDD','RELEASED','2026-04-29 00:00:29',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_04_29_00_auth.sql b/sql/updates/auth/master/2026_04_29_00_auth.sql new file mode 100644 index 0000000000000..9998ebb30fc42 --- /dev/null +++ b/sql/updates/auth/master/2026_04_29_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67235); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67235,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67235 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67235,'Mac','A64','WoW',0xEC0F6ED11D2C44DCC9F1A232A5A851DE), +(67235,'Mac','A64','WoWC',0x0451CEB0D4744ECE9E8178BB2631590C), +(67235,'Mac','x64','WoW',0x562C1648F20378EE01F7B1B55EA708C8), +(67235,'Mac','x64','WoWC',0x97A87270D118A5D6FD3FC976176FA74D), +(67235,'Win','A64','WoW',0xE810FC55C5B08E825A6230BDCB4E6117), +(67235,'Win','x64','WoW',0x1F42DA2BE67CA1FB2970945D89AF137E), +(67235,'Win','x64','WoWC',0x71B8F38D7E5BF20D428D8B8BF4DDCBD7); + +UPDATE `realmlist` SET `gamebuild`=67235 WHERE `gamebuild`=67186; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67235'; From edbe16839c3bee56e353aca76cbda91f2decc38d Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 29 Apr 2026 17:08:38 +0200 Subject: [PATCH 112/175] DB: Remove use of CREATE FUNCTION (requires SUPER privilege) Closes #31822 --- sql/base/characters_database.sql | 2 +- .../master/2026_04_22_00_characters.sql | 60 +++++++++---------- 2 files changed, 28 insertions(+), 34 deletions(-) diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index a42ab6ca6503b..69544ed3f047d 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -4093,7 +4093,7 @@ INSERT INTO `updates` VALUES ('2026_02_06_00_characters.sql','90735F4481A137E79B8371F291008CF6051657AC','ARCHIVED','2026-02-06 12:45:48',0), ('2026_03_21_00_characters.sql','87963F4E341B195D4B4C4514A3119092DF127431','RELEASED','2026-03-21 00:42:13',0), ('2026_04_08_00_characters.sql','5A7FC8264EBD524E4EBAACF53D1CE89C6FF0D255','RELEASED','2026-04-07 10:24:16',0), -('2026_04_22_00_characters.sql','7EA266122924A3F8940D1D2E62F7C1BBC1D10333','RELEASED','2026-04-22 19:26:05',0); +('2026_04_22_00_characters.sql','34E7E4659F8C2FF778042CF21267F8045BDC197E','RELEASED','2026-04-22 19:26:05',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/characters/master/2026_04_22_00_characters.sql b/sql/updates/characters/master/2026_04_22_00_characters.sql index 8be3a1f5d5395..9a5ae3e3ecf15 100644 --- a/sql/updates/characters/master/2026_04_22_00_characters.sql +++ b/sql/updates/characters/master/2026_04_22_00_characters.sql @@ -1,20 +1,16 @@ -DROP FUNCTION IF EXISTS `get_nth_token`; -CREATE FUNCTION `get_nth_token`(x TEXT, delim VARCHAR(16), pos INT) RETURNS TEXT NO SQL -RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ''); - DELIMITER ;; CREATE PROCEDURE apply_if_not_exists_2026_04_22_00() BEGIN -- Fill new situations - DELETE FROM `character_transmog_outfit_situation` WHERE `situationID` BETWEEN 32 AND 41; - - -- All Weather - INSERT INTO `character_transmog_outfit_situation` - SELECT `guid`, `transmogOutfitId`, 32, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + IF NOT EXISTS (SELECT 1 FROM `character_transmog_outfit_situation` WHERE `situationID` BETWEEN 32 AND 41) THEN + -- All Weather + INSERT INTO `character_transmog_outfit_situation` + SELECT `guid`, `transmogOutfitId`, 32, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; - -- All Times - INSERT INTO `character_transmog_outfit_situation` - SELECT `guid`, `transmogOutfitId`, 37, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + -- All Times + INSERT INTO `character_transmog_outfit_situation` + SELECT `guid`, `transmogOutfitId`, 37, 0, 0, 0 FROM `character_transmog_outfit_situation` GROUP BY guid, transmogOutfitId; + END IF; IF NOT EXISTS (SELECT * FROM `information_schema`.`columns` WHERE `table_schema`=SCHEMA() AND `table_name`='character_transmog_outfit_slot' AND `column_name`='sheatheCategory') THEN ALTER TABLE `character_transmog_outfit_slot` ADD `sheatheCategory` tinyint UNSIGNED AFTER `slotOption`; @@ -186,25 +182,25 @@ CREATE PROCEDURE apply_if_not_exists_2026_04_22_00() BEGIN INSERT INTO `character_select_screen_equipment_cache` SELECT guid, -- equipped item id | visible item id | subclass | inventory type | display id | enchant | secondary appearance | sheathe category - /* head */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 4) , get_nth_token(`equipmentCache`,' ', 1) , get_nth_token(`equipmentCache`,' ', 2) , get_nth_token(`equipmentCache`,' ', 3) , get_nth_token(`equipmentCache`,' ', 5) , 0, - /* neck */ 0 , 0 , get_nth_token(`equipmentCache`,' ', 9) , get_nth_token(`equipmentCache`,' ', 6) , get_nth_token(`equipmentCache`,' ', 7) , get_nth_token(`equipmentCache`,' ', 8) , get_nth_token(`equipmentCache`,' ',10) , 0, - /* shoulders */ 0 , 0 , get_nth_token(`equipmentCache`,' ',14) , get_nth_token(`equipmentCache`,' ',11) , get_nth_token(`equipmentCache`,' ',12) , get_nth_token(`equipmentCache`,' ',13) , get_nth_token(`equipmentCache`,' ',15) , 0, - /* body */ 0 , 0 , get_nth_token(`equipmentCache`,' ',19) , get_nth_token(`equipmentCache`,' ',16) , get_nth_token(`equipmentCache`,' ',17) , get_nth_token(`equipmentCache`,' ',18) , get_nth_token(`equipmentCache`,' ',20) , 0, - /* chest */ 0 , 0 , get_nth_token(`equipmentCache`,' ',24) , get_nth_token(`equipmentCache`,' ',21) , get_nth_token(`equipmentCache`,' ',22) , get_nth_token(`equipmentCache`,' ',23) , get_nth_token(`equipmentCache`,' ',25) , 0, - /* waist */ 0 , 0 , get_nth_token(`equipmentCache`,' ',29) , get_nth_token(`equipmentCache`,' ',26) , get_nth_token(`equipmentCache`,' ',27) , get_nth_token(`equipmentCache`,' ',28) , get_nth_token(`equipmentCache`,' ',30) , 0, - /* legs */ 0 , 0 , get_nth_token(`equipmentCache`,' ',34) , get_nth_token(`equipmentCache`,' ',31) , get_nth_token(`equipmentCache`,' ',32) , get_nth_token(`equipmentCache`,' ',33) , get_nth_token(`equipmentCache`,' ',35) , 0, - /* feet */ 0 , 0 , get_nth_token(`equipmentCache`,' ',39) , get_nth_token(`equipmentCache`,' ',36) , get_nth_token(`equipmentCache`,' ',37) , get_nth_token(`equipmentCache`,' ',38) , get_nth_token(`equipmentCache`,' ',40) , 0, - /* wrists */ 0 , 0 , get_nth_token(`equipmentCache`,' ',44) , get_nth_token(`equipmentCache`,' ',41) , get_nth_token(`equipmentCache`,' ',42) , get_nth_token(`equipmentCache`,' ',43) , get_nth_token(`equipmentCache`,' ',45) , 0, - /* hands */ 0 , 0 , get_nth_token(`equipmentCache`,' ',49) , get_nth_token(`equipmentCache`,' ',46) , get_nth_token(`equipmentCache`,' ',47) , get_nth_token(`equipmentCache`,' ',48) , get_nth_token(`equipmentCache`,' ',50) , 0, - /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',54) , get_nth_token(`equipmentCache`,' ',51) , get_nth_token(`equipmentCache`,' ',52) , get_nth_token(`equipmentCache`,' ',53) , get_nth_token(`equipmentCache`,' ',55) , 0, - /* finger */ 0 , 0 , get_nth_token(`equipmentCache`,' ',59) , get_nth_token(`equipmentCache`,' ',56) , get_nth_token(`equipmentCache`,' ',57) , get_nth_token(`equipmentCache`,' ',58) , get_nth_token(`equipmentCache`,' ',60) , 0, - /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',64) , get_nth_token(`equipmentCache`,' ',61) , get_nth_token(`equipmentCache`,' ',62) , get_nth_token(`equipmentCache`,' ',63) , get_nth_token(`equipmentCache`,' ',65) , 0, - /* trinket */ 0 , 0 , get_nth_token(`equipmentCache`,' ',69) , get_nth_token(`equipmentCache`,' ',66) , get_nth_token(`equipmentCache`,' ',67) , get_nth_token(`equipmentCache`,' ',68) , get_nth_token(`equipmentCache`,' ',70) , 0, - /* back */ 0 , 0 , get_nth_token(`equipmentCache`,' ',74) , get_nth_token(`equipmentCache`,' ',71) , get_nth_token(`equipmentCache`,' ',72) , get_nth_token(`equipmentCache`,' ',73) , get_nth_token(`equipmentCache`,' ',75) , 0, - /* main hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',79) , get_nth_token(`equipmentCache`,' ',76) , get_nth_token(`equipmentCache`,' ',77) , get_nth_token(`equipmentCache`,' ',78) , get_nth_token(`equipmentCache`,' ',80) , 0, - /* off hand */ 0 , 0 , get_nth_token(`equipmentCache`,' ',84) , get_nth_token(`equipmentCache`,' ',81) , get_nth_token(`equipmentCache`,' ',82) , get_nth_token(`equipmentCache`,' ',83) , get_nth_token(`equipmentCache`,' ',85) , 0, - /* ranged */ 0 , 0 , get_nth_token(`equipmentCache`,' ',89) , get_nth_token(`equipmentCache`,' ',86) , get_nth_token(`equipmentCache`,' ',87) , get_nth_token(`equipmentCache`,' ',88) , get_nth_token(`equipmentCache`,' ',90) , 0, - /* tabard */ 0 , 0 , get_nth_token(`equipmentCache`,' ',94) , get_nth_token(`equipmentCache`,' ',91) , get_nth_token(`equipmentCache`,' ',92) , get_nth_token(`equipmentCache`,' ',93) , get_nth_token(`equipmentCache`,' ',95) , 0 + /* head */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 4),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 4 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 1),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 1 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 2),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 2 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 3),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 3 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 5),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 5 -1))+1),' ','') , 0, + /* neck */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 9),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 9 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 6),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 6 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 7),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 7 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ', 8),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ', 8 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',10),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',10 -1))+1),' ','') , 0, + /* shoulders */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',14),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',14 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',11),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',11 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',12),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',12 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',13),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',13 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',15),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',15 -1))+1),' ','') , 0, + /* body */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',19),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',19 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',16),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',16 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',17),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',17 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',18),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',18 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',20),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',20 -1))+1),' ','') , 0, + /* chest */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',24),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',24 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',21),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',21 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',22),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',22 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',23),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',23 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',25),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',25 -1))+1),' ','') , 0, + /* waist */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',29),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',29 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',26),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',26 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',27),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',27 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',28),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',28 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',30),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',30 -1))+1),' ','') , 0, + /* legs */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',34),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',34 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',31),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',31 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',32),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',32 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',33),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',33 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',35),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',35 -1))+1),' ','') , 0, + /* feet */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',39),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',39 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',36),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',36 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',37),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',37 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',38),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',38 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',40),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',40 -1))+1),' ','') , 0, + /* wrists */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',44),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',44 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',41),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',41 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',42),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',42 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',43),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',43 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',45),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',45 -1))+1),' ','') , 0, + /* hands */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',49),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',49 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',46),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',46 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',47),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',47 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',48),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',48 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',50),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',50 -1))+1),' ','') , 0, + /* finger */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',54),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',54 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',51),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',51 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',52),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',52 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',53),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',53 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',55),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',55 -1))+1),' ','') , 0, + /* finger */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',59),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',59 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',56),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',56 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',57),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',57 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',58),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',58 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',60),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',60 -1))+1),' ','') , 0, + /* trinket */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',64),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',64 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',61),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',61 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',62),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',62 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',63),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',63 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',65),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',65 -1))+1),' ','') , 0, + /* trinket */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',69),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',69 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',66),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',66 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',67),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',67 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',68),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',68 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',70),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',70 -1))+1),' ','') , 0, + /* back */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',74),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',74 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',71),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',71 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',72),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',72 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',73),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',73 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',75),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',75 -1))+1),' ','') , 0, + /* main hand */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',79),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',79 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',76),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',76 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',77),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',77 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',78),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',78 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',80),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',80 -1))+1),' ','') , 0, + /* off hand */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',84),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',84 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',81),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',81 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',82),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',82 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',83),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',83 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',85),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',85 -1))+1),' ','') , 0, + /* ranged */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',89),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',89 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',86),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',86 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',87),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',87 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',88),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',88 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',90),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',90 -1))+1),' ','') , 0, + /* tabard */ 0 , 0 , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',94),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',94 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',91),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',91 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',92),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',92 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',93),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',93 -1))+1),' ','') , REPLACE(SUBSTRING(SUBSTRING_INDEX(`equipmentCache`,' ',95),LENGTH(SUBSTRING_INDEX(`equipmentCache`,' ',95 -1))+1),' ','') , 0 FROM `characters`; ALTER TABLE `characters` DROP `equipmentCache`; @@ -216,5 +212,3 @@ DELIMITER ; CALL apply_if_not_exists_2026_04_22_00(); DROP PROCEDURE apply_if_not_exists_2026_04_22_00; - -DROP FUNCTION `get_nth_token`; From 4c86cfa5d1cd4d9deee73873565014438a9f53ba Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 30 Apr 2026 16:13:37 +0200 Subject: [PATCH 113/175] DB: Fix base/characters_database.sql --- sql/base/characters_database.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 69544ed3f047d..908f7627445a2 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -2130,6 +2130,7 @@ CREATE TABLE `character_transmog_outfit_slot` ( `transmogOutfitId` int NOT NULL, `slot` tinyint NOT NULL, `slotOption` tinyint NOT NULL, + `sheatheCategory` tinyint unsigned NOT NULL, `itemModifiedAppearanceID` int NOT NULL, `appearanceDisplayType` tinyint NOT NULL, `spellItemEnchantmentID` int NOT NULL, From 6c50ffbfff58eb7047fcd857103ba922a0554766 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 1 May 2026 12:02:38 +0200 Subject: [PATCH 114/175] Core: Updated allowed build to 12.0.5.67314 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_05_01_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_05_01_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 80c62f4374809..5d90f5561b5cf 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1603,7 +1603,14 @@ INSERT INTO `build_auth_key` VALUES (67235,'Mac','x64','WoWC',0x97A87270D118A5D6FD3FC976176FA74D), (67235,'Win','A64','WoW',0xE810FC55C5B08E825A6230BDCB4E6117), (67235,'Win','x64','WoW',0x1F42DA2BE67CA1FB2970945D89AF137E), -(67235,'Win','x64','WoWC',0x71B8F38D7E5BF20D428D8B8BF4DDCBD7); +(67235,'Win','x64','WoWC',0x71B8F38D7E5BF20D428D8B8BF4DDCBD7), +(67314,'Mac','A64','WoW',0x6EED68C3FAE96B65EFC1048F7A0683F7), +(67314,'Mac','A64','WoWC',0xA4ECA4C76304AA666F8623C438A63A74), +(67314,'Mac','x64','WoW',0x0F6292DFEE3EC8F17C0866BFD69A79A2), +(67314,'Mac','x64','WoWC',0x49B611A88AA140811257FFB6D8AC4CAA), +(67314,'Win','A64','WoW',0xF38339612437BADE56FD23DAE7D51C76), +(67314,'Win','x64','WoW',0xA4EDEEFFF3372B893DCB37867DE69FD1), +(67314,'Win','x64','WoWC',0x62498C0192429CA9BAA13D2CA8CA6B12); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2052,7 +2059,8 @@ INSERT INTO `build_info` VALUES (67088,12,0,5,NULL), (67114,12,0,5,NULL), (67186,12,0,5,NULL), -(67235,12,0,5,NULL); +(67235,12,0,5,NULL), +(67314,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3665,7 +3673,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67235', + `gamebuild` int unsigned NOT NULL DEFAULT '67314', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3680,7 +3688,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67235,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67314,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4244,7 +4252,8 @@ INSERT INTO `updates` VALUES ('2026_04_22_00_auth.sql','FA3426E1D920AD15ABA9F3B43630CAD4B3A73704','RELEASED','2026-04-22 18:42:10',0), ('2026_04_23_00_auth.sql','7FF5A1098DDB029004A8822D2A1545878F269D25','RELEASED','2026-04-23 18:44:59',0), ('2026_04_24_00_auth.sql','8C1C15C9672C557D91E2AE61521F8063F6030F14','RELEASED','2026-04-24 09:39:50',0), -('2026_04_29_00_auth.sql','035B7C240CDAC17FDC883175D5C0ABAFA432FDDD','RELEASED','2026-04-29 00:00:29',0); +('2026_04_29_00_auth.sql','035B7C240CDAC17FDC883175D5C0ABAFA432FDDD','RELEASED','2026-04-29 00:00:29',0), +('2026_05_01_00_auth.sql','1E532962D6A6E618B2675EBCC7AE9E1EFE260CAA','RELEASED','2026-05-01 11:58:34',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_05_01_00_auth.sql b/sql/updates/auth/master/2026_05_01_00_auth.sql new file mode 100644 index 0000000000000..ee84837636845 --- /dev/null +++ b/sql/updates/auth/master/2026_05_01_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67314); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67314,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67314 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67314,'Mac','A64','WoW',0x6EED68C3FAE96B65EFC1048F7A0683F7), +(67314,'Mac','A64','WoWC',0xA4ECA4C76304AA666F8623C438A63A74), +(67314,'Mac','x64','WoW',0x0F6292DFEE3EC8F17C0866BFD69A79A2), +(67314,'Mac','x64','WoWC',0x49B611A88AA140811257FFB6D8AC4CAA), +(67314,'Win','A64','WoW',0xF38339612437BADE56FD23DAE7D51C76), +(67314,'Win','x64','WoW',0xA4EDEEFFF3372B893DCB37867DE69FD1), +(67314,'Win','x64','WoWC',0x62498C0192429CA9BAA13D2CA8CA6B12); + +UPDATE `realmlist` SET `gamebuild`=67314 WHERE `gamebuild`=67235; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67314'; From c720cf7bcb2281d2c6621332f802c5f4680628be Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 1 May 2026 20:11:33 +0200 Subject: [PATCH 115/175] Core/Spells: Define new spell effect type --- src/server/game/Miscellaneous/SharedDefines.h | 1 + src/server/game/Spells/SpellEffects.cpp | 1 + src/server/game/Spells/SpellInfo.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index fcc31445ecb74..a4bc7a5bb92f3 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1699,6 +1699,7 @@ enum SpellEffectName SPELL_EFFECT_LEARN_HOUSE_ROOM_COMPONENT_TEXTURE = 352, // MiscValue[0] = RoomComponentTexture SPELL_EFFECT_CREATE_AREATRIGGER_2 = 353, SPELL_EFFECT_SET_NEIGHBORHOOD_INITIATIVE = 354, // MiscValue[0] = NeighborhoodInitiative + SPELL_EFFECT_LEARN_HOUSE_TYPE = 355, // MiscValue[0] = HouseExteriorWmoData TOTAL_SPELL_EFFECTS }; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index d85a1ed9085a0..453602184849d 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -444,6 +444,7 @@ NonDefaultConstructible SpellEffectHandlers[TOTAL_SPELL_EF &Spell::EffectNULL, //352 SPELL_EFFECT_LEARN_HOUSE_ROOM_COMPONENT_TEXTURE &Spell::EffectCreateAreaTrigger, //353 SPELL_EFFECT_CREATE_AREATRIGGER_2 &Spell::EffectNULL, //354 SPELL_EFFECT_SET_NEIGHBORHOOD_INITIATIVE + &Spell::EffectNULL, //355 SPELL_EFFECT_LEARN_HOUSE_TYPE }; void Spell::EffectNULL() diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index f4d9824f1293a..8c1eb7122c099 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1313,6 +1313,7 @@ std::array SpellEffectInfo::_d {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 352 SPELL_EFFECT_LEARN_HOUSE_ROOM_COMPONENT_TEXTURE {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_DEST}, // 353 SPELL_EFFECT_CREATE_AREATRIGGER_2 {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 354 SPELL_EFFECT_SET_NEIGHBORHOOD_INITIATIVE + {EFFECT_IMPLICIT_TARGET_NONE, TARGET_OBJECT_TYPE_NONE}, // 355 SPELL_EFFECT_LEARN_HOUSE_TYPE } }; SpellInfo::SpellInfo(SpellNameEntry const* spellName, ::Difficulty difficulty, SpellInfoLoadHelper const& data) From e2e48c6364ef13b798a7ccd280607781ac343cbc Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 1 May 2026 22:12:22 +0200 Subject: [PATCH 116/175] Core/Spells: Set private object owner for vehicle summon spells --- src/server/game/Spells/SpellEffects.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 453602184849d..dbd4ae7378fd2 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2059,6 +2059,8 @@ void Spell::EffectSummonType() if (!summon || !summon->IsVehicle()) return; + summon->SetPrivateObjectOwner(privateObjectOwner); + // The spell that this effect will trigger. It has SPELL_AURA_CONTROL_VEHICLE uint32 spellId = VEHICLE_SPELL_RIDE_HARDCODED; SpellEffectValue basePoints = effectInfo->CalcValue(); From a905ed6e54d4a5e974ec06d85c596ba0ca1d68b0 Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 1 May 2026 22:59:38 +0200 Subject: [PATCH 117/175] Core/Spells: Pass private object owner to SummonCreature for vehicles in summon spell effect * e2e48c6364ef13b798a7ccd280607781ac343cbc followup --- src/server/game/Spells/SpellEffects.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index dbd4ae7378fd2..865138dacad72 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1966,7 +1966,7 @@ void Spell::EffectSummonType() if (!unitCaster) return; - summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id); + summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, privateObjectOwner); break; } case SummonTitle::Lightwell: @@ -2055,12 +2055,10 @@ void Spell::EffectSummonType() // Summoning spells (usually triggered by npc_spellclick) that spawn a vehicle and that cause the clicker // to cast a ride vehicle spell on the summoned unit. - summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id); + summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, privateObjectOwner); if (!summon || !summon->IsVehicle()) return; - summon->SetPrivateObjectOwner(privateObjectOwner); - // The spell that this effect will trigger. It has SPELL_AURA_CONTROL_VEHICLE uint32 spellId = VEHICLE_SPELL_RIDE_HARDCODED; SpellEffectValue basePoints = effectInfo->CalcValue(); From 37ee63124b27966e624f66a6b985b98000575389 Mon Sep 17 00:00:00 2001 From: stevebone Date: Fri, 1 May 2026 23:08:11 +0200 Subject: [PATCH 118/175] Scripts/WanderingIsle: Implement yak delivery carts (#31807) --- .../world/master/2026_05_01_00_world.sql | 375 ++++++++++++++++++ .../Pandaria/zone_the_wandering_isle.cpp | 148 +++++++ 2 files changed, 523 insertions(+) create mode 100644 sql/updates/world/master/2026_05_01_00_world.sql diff --git a/sql/updates/world/master/2026_05_01_00_world.sql b/sql/updates/world/master/2026_05_01_00_world.sql new file mode 100644 index 0000000000000..c57d399ada113 --- /dev/null +++ b/sql/updates/world/master/2026_05_01_00_world.sql @@ -0,0 +1,375 @@ +-- The Wandering Isle Carts & Yaks fixes +-- NPC: 57207 Spawned Yak Singing Pool +-- NPC: 57208 Spawned Cart Yak Singing Pool +-- NPC: 57709 Nourished Yak Yak Singing Pool +-- NPC: 57710 Cart Yak Singing Pool +-- NPC: 59497 Cart at farmstead +-- NPC: 59496 Spawned Cart at farmstead +-- NPC: 59499 Nourished Yak at farmstead +-- NPC: 59498 Spawned Nourished Yak at farmstead +-- NPC: 57740 Spawned Cart at Forest +-- NPC: 57741 Cart at Forest +-- NPC: 57742 Spawned Yak at Forest +-- NPC: 57743 Yak at Forest + + +-- ======================================== +-- Yak & Cart at Singing Pools +-- ======================================== +UPDATE `creature_template` SET `VehicleId` = 1944 WHERE `entry` = 57208; +UPDATE `creature_template` SET `ScriptName` = 'npc_delivery_cart' WHERE `Entry`=57208; + + -- Nourished Yak smart ai +SET @ENTRY := 57207; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 60, 0, 100, 1, 1400, 1400, 0, 0, 0, 53, 0, 5720700, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Time = 1.4 seconds - Self: Start path #5720700, walk, do not repeat, Passive', ''), +(@ENTRY, 0, 1, 0, 58, 0, 100, 0, 0xFFFFFFFF, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On any waypoint of any path ended - Self: Despawn in 1 s', ''); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (57710); +INSERT INTO `npc_spellclick_spells` VALUES +(57710, 107784, 3, 0), +(57710, 115904, 1, 0); + +DELETE FROM `vehicle_template` WHERE `creatureId` = 57208; +INSERT INTO `vehicle_template` VALUES (57208, 12000, NULL,0); + +DELETE FROM `waypoint_path` WHERE `PathId` IN (5720700,5720800); +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Comment`) VALUES +(5720700,1,0,'The Wandering Isle Cart & Ox'), +(5720800,1,0,'The Wandering Isle Cart & Ox'); + +DELETE FROM `waypoint_path_node` WHERE `PathId` IN (5720700,5720800); +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`) values +(5720700, 0, 981.766, 2857.77, 88.7352), +(5720700, 1, 978.016, 2848.52, 87.2352), +(5720700, 2, 948.266, 2835.52, 87.2352), +(5720700, 3, 919.016, 2825.02, 87.2352), +(5720700, 4, 895.766, 2811.27, 86.9852), +(5720700, 5, 880.766, 2807.02, 83.9852), +(5720700, 6, 853.516, 2799.02, 83.7352), +(5720700, 7, 825.516, 2790.77, 78.7352), +(5720700, 8, 802.266, 2785.27, 76.7352), +(5720700, 9, 790.266, 2792.77, 75.7352), +(5720700, 10, 763.016, 2815.52, 76.2352), +(5720700, 11, 746.766, 2834.77, 75.7352), +(5720700, 12, 746.266, 2851.77, 75.9852), +(5720700, 13, 755.516, 2869.77, 75.2352), +(5720700, 14, 753.516, 2890.02, 74.9852), +(5720700, 15, 732.864, 2915.02, 74.7352), +(5720700, 16, 703.766, 2939.02, 74.7352), +(5720700, 17, 683.766, 2954.77, 75.2352), +(5720700, 18, 674.016, 2975.52, 74.9852), +(5720700, 19, 667.266, 2983.27, 75.2352), +(5720700, 20, 660.516, 2990.77, 79.9852), +(5720700, 21, 652.266, 2999.52, 74.9852), +(5720700, 22, 645.016, 3006.27, 74.7352), +(5720700, 23, 629.016, 3016.52, 75.4852), +(5720700, 24, 616.016, 3035.52, 76.7352), +(5720700, 25, 612.766, 3061.27, 80.4852), +(5720700, 26, 612.766, 3080.27, 84.4852), +(5720700, 27, 618.01, 3107.21, 87.5104), +(5720700, 28, 617.01, 3131.96, 87.7604), +(5720700, 29, 607.01, 3143.96, 88.0104), +(5720700, 30, 591.51, 3146.71, 87.0104), +(5720700, 31, 574.51, 3148.71, 88.0104), +(5720700, 32, 555.01, 3159.21, 78.0104), + +(5720800, 0, 981.864, 2857.8, 88.8159), +(5720800, 1, 978.114, 2848.55, 87.3159), +(5720800, 2, 948.364, 2835.55, 87.3159), +(5720800, 3, 919.114, 2825.05, 87.3159), +(5720800, 4, 895.614, 2811.3, 87.0659), +(5720800, 5, 880.614, 2807.05, 83.8159), +(5720800, 6, 853.364, 2799.05, 83.8159), +(5720800, 7, 825.614, 2790.8, 78.5659), +(5720800, 8, 802.364, 2785.3, 76.8159), +(5720800, 9, 790.364, 2792.8, 75.8159), +(5720800, 10, 762.864, 2815.55, 76.0659), +(5720800, 11, 746.614, 2834.8, 75.8159), +(5720800, 12, 746.364, 2851.8, 76.0659), +(5720800, 13, 755.614, 2869.8, 75.3159), +(5720800, 14, 753.364, 2890.05, 75.0659), +(5720800, 15, 732.864, 2915.05, 74.5659), +(5720800, 16, 703.614, 2939.05, 74.5659), +(5720800, 17, 683.864, 2954.8, 75.3159), +(5720800, 18, 674.114, 2975.55, 75.3159), +(5720800, 19, 667.364, 2983.3, 75.3159), +(5720800, 20, 660.614, 2990.55, 79.8159), +(5720800, 21, 652.364, 2999.52, 75.3159), +(5720800, 22, 645.114, 3006.3, 74.8159), +(5720800, 23, 629.114, 3016.55, 75.4852), +(5720800, 24, 616.114, 3035.55, 76.7352), +(5720800, 25, 612.864, 3061.3, 80.4852), +(5720800, 26, 612.864, 3080.3, 84.4852), +(5720800, 27, 618.01, 3107.21, 87.5442), +(5720800, 28, 617.01, 3131.96, 87.7604), +(5720800, 29, 607.01, 3143.96, 88.0104), +(5720800, 30, 591.51, 3146.71, 87.0104), +(5720800, 31, 574.51, 3148.71, 88.0104), +(5720800, 32, 555.01, 3159.21, 78.0104), +(5720800, 33, 547.302, 3174.96, 77.2942); + +-- ======================================== +-- Yak & Cart at Farmstead +-- ======================================== +UPDATE `creature_template` SET `VehicleId` = 1944 WHERE `entry` = 59496; +UPDATE `creature_template` SET `ScriptName` = 'npc_delivery_cart' WHERE `Entry`=59496; + + -- Nourished Yak smart ai +SET @ENTRY := 59498; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 60, 0, 100, 1, 1400, 1400, 0, 0, 0, 53, 0, 5949800, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Time = 1.4 seconds - Self: Start path #5949800, walk, do not repeat, Passive', ''), +(@ENTRY, 0, 1, 0, 58, 0, 100, 0, 0xFFFFFFFF, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On any waypoint of any path ended - Self: Despawn in 1 s', ''); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (59497); +INSERT INTO `npc_spellclick_spells` VALUES +(59497, 114453, 3, 0), +(59497, 115904, 1, 0); + +DELETE FROM `vehicle_template` WHERE `creatureId` = 59496; +INSERT INTO `vehicle_template` VALUES (59496, 12000, NULL,0); + +DELETE FROM `waypoint_path` WHERE `PathId` IN (5949600,5949800); +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Comment`) VALUES +(5949600,1,0,'Spawned Cart at Farmstead'), +(5949800,1,0,'Spawned Yak at Farmstead'); + +DELETE FROM `waypoint_path_node` WHERE `PathId` IN (5949600,5949800); +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`) values +(5949600, 0, 581.87, 3153.32, 88.284), +(5949600, 1, 573.37, 3149.82, 86.534), +(5949600, 2, 557.87, 3157.07, 79.284), +(5949600, 3, 548.12, 3172.57, 77.534), +(5949600, 4, 545.12, 3197.32, 77.284), +(5949600, 5, 538.12, 3210.82, 76.284), +(5949600, 6, 517.87, 3225.07, 74.534), +(5949600, 7, 508.12, 3244.82, 76.534), +(5949600, 8, 507.87, 3265.32, 77.784), +(5949600, 9, 512.37, 3291.07, 74.534), +(5949600, 10, 519.87, 3315.07, 73.534), +(5949600, 11, 524.37, 3324.07, 77.784), +(5949600, 12, 527.37, 3328.82, 78.284), +(5949600, 13, 532.12, 3336.57, 73.784), +(5949600, 14, 543.37, 3355.82, 76.784), +(5949600, 15, 555.12, 3367.07, 78.534), +(5949600, 16, 568.12, 3375.82, 80.534), +(5949600, 17, 608.12, 3383.57, 87.034), +(5949600, 18, 634.87, 3392.07, 93.034), +(5949600, 19, 653.12, 3404.82, 99.034), +(5949600, 20, 675.62, 3427.32, 106.784), +(5949600, 21, 685.37, 3443.57, 112.034), +(5949600, 22, 694.12, 3467.57, 118.034), +(5949600, 23, 715.62, 3480.57, 121.534), +(5949600, 24, 741.87, 3492.32, 133.784), +(5949600, 25, 751.37, 3506.32, 137.784), +(5949600, 26, 756.12, 3525.32, 139.784), +(5949600, 27, 743.12, 3552.57, 140.784), +(5949600, 28, 741.62, 3572.57, 140.784), +(5949600, 29, 744.536, 3595.51, 140.547), +(5949600, 30, 739.739, 3604.48, 140.749), +(5949600, 31, 722.489, 3605.23, 140.749), +(5949600, 32, 704.011, 3600.88, 141.999), +(5949600, 33, 684.011, 3600.73, 145.999), +(5949600, 34, 659.739, 3602.23, 146.999), + +(5949800, 0, 582.076, 3153.46, 88.2618), +(5949800, 1, 573.326, 3149.96, 86.7618), +(5949800, 2, 558.076, 3156.96, 79.2618), +(5949800, 3, 548.076, 3172.46, 77.5118), +(5949800, 4, 545.076, 3197.46, 77.5118), +(5949800, 5, 538.076, 3210.71, 76.5118), +(5949800, 6, 517.826, 3224.96, 74.5118), +(5949800, 7, 508.076, 3244.71, 76.5118), +(5949800, 8, 508.076, 3265.46, 77.5118), +(5949800, 9, 512.326, 3291.21, 74.5118), +(5949800, 10, 520.076, 3315.21, 73.5118), +(5949800, 11, 524.326, 3323.96, 77.5118), +(5949800, 12, 527.326, 3328.71, 78.2618), +(5949800, 13, 532.076, 3336.46, 73.7618), +(5949800, 14, 543.576, 3355.71, 76.7618), +(5949800, 15, 555.076, 3366.96, 78.5118), +(5949800, 16, 568.326, 3375.71, 80.5118), +(5949800, 17, 608.076, 3383.46, 87.0118), +(5949800, 18, 634.876, 3392.07, 93.2618), +(5949800, 19, 653.076, 3404.96, 99.0118), +(5949800, 20, 675.576, 3427.21, 106.762), +(5949800, 21, 685.326, 3443.71, 112.012), +(5949800, 22, 694.076, 3467.46, 118.012), +(5949800, 23, 715.576, 3480.71, 121.512), +(5949800, 24, 741.826, 3492.21, 133.762), +(5949800, 25, 751.326, 3506.32, 137.762), +(5949800, 26, 756.076, 3525.21, 139.262), +(5949800, 27, 743.076, 3552.71, 140.762), +(5949800, 28, 741.576, 3572.46, 140.762), +(5949800, 29, 744.536, 3595.51, 140.547), +(5949800, 30, 739.739, 3604.38, 140.749), +(5949800, 31, 722.489, 3605.13, 140.749), +(5949800, 32, 704.011, 3600.88, 141.999), +(5949800, 33, 684.011, 3600.73, 145.999), +(5949800, 34, 659.739, 3602.23, 146.999); + +-- ======================================== +-- Yak & Cart at the Forbidden Forest - Wreck of the Skyseeker +-- ======================================== +UPDATE `creature_template` SET `VehicleId` = 1944 WHERE `entry` = 57740; +UPDATE `creature_template` SET `ScriptName` = 'npc_delivery_cart' WHERE `Entry`=57740; + + -- Nourished Yak smart ai +SET @ENTRY := 57742; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 60, 0, 100, 1, 1400, 1400, 0, 0, 0, 53, 0, 5774200, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Time = 1.4 seconds - Self: Start path #5774200, walk, do not repeat, Passive', ''), +(@ENTRY, 0, 1, 0, 58, 0, 100, 0, 0xFFFFFFFF, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On any waypoint of any path ended - Self: Despawn in 1 s', ''); + +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` IN (57741); +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(57741, 108933, 3, 0), +(57741, 115904, 1, 0); + +DELETE FROM `vehicle_template` WHERE `creatureId` = 57740; +INSERT INTO `vehicle_template` VALUES (57740, 12000, NULL,0); + +-- Forest Cart & Ox +DELETE FROM `waypoint_path` WHERE `PathId` IN (5774000,5774200); +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Comment`) VALUES +(5774000,1,0,'The Wandering Isle Forest Cart'), +(5774200,1,0,'The Wandering Isle Forest Ox'); + +DELETE FROM `waypoint_path_node` WHERE `PathId` IN (5774000,5774200); +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) values +(5774000, 1, 277.95, 3881.76, 75.9185, 0, 0), +(5774000, 2, 300.7, 3886.26, 78.1685, 0, 0), +(5774000, 3, 330.95, 3887.01, 80.1685, 0, 0), +(5774000, 4, 359.7, 3886.51, 79.6685, 0, 0), +(5774000, 5, 385.2, 3883.51, 79.6685, 0, 0), +(5774000, 6, 413.2, 3888.01, 79.6685, 0, 0), +(5774000, 7, 437.95, 3884.51, 79.6685, 0, 0), +(5774000, 8, 451.45, 3871.26, 79.9185, 0, 0), +(5774000, 9, 459.45, 3859.26, 80.1685, 0, 0), +(5774000, 10, 466.45, 3839.01, 80.6685, 0, 0), +(5774000, 11, 466.95, 3821.51, 86.1685, 0, 0), +(5774000, 12, 467.45, 3800.76, 81.1685, 0, 0), +(5774000, 13, 466.2, 3780.76, 82.1685, 0, 0), +(5774000, 14, 461.2, 3752.76, 83.1685, 0, 0), +(5774000, 15, 449.45, 3728.76, 82.6685, 0, 0), +(5774000, 16, 431.45, 3707.26, 81.6685, 0, 0), +(5774000, 17, 430.2, 3690.51, 81.6685, 0, 0), +(5774000, 18, 439.95, 3671.01, 79.4185, 0, 0), +(5774000, 19, 460.2, 3642.76, 79.4185, 0, 0), +(5774000, 20, 468.7, 3616.51, 79.9185, 0, 0), +(5774000, 21, 477.45, 3585.26, 83.9185, 0, 0), +(5774000, 22, 499.7, 3582.26, 87.1685, 0, 0), +(5774000, 23, 522.45, 3587.51, 91.1685, 0, 0), +(5774000, 24, 561.45, 3584.01, 94.6685, 0, 0), +(5774000, 25, 589.45, 3585.51, 98.1685, 0, 0), +(5774000, 26, 600.45, 3607.26, 110.919, 0, 0), +(5774000, 27, 610.7, 3625.76, 123.669, 0, 0), +(5774000, 28, 630.45, 3628.26, 134.669, 0, 0), +(5774000, 29, 651.7, 3608.76, 145.169, 0, 0), +(5774000, 30, 674.45, 3601.01, 146.919, 0, 0), +(5774000, 31, 714.7, 3602.26, 140.919, 0, 0), +(5774000, 32, 730.7, 3601.51, 140.669, 0, 0), +(5774000, 33, 737.028, 3596.41, 140.606, 0, 0), +(5774000, 34, 739.551, 3587.62, 140.657, 0, 0), +(5774000, 35, 742.051, 3560.37, 140.657, 0, 0), +(5774000, 36, 753.551, 3533.87, 139.407, 0, 0), +(5774000, 37, 755.301, 3516.62, 138.657, 0, 0), +(5774000, 38, 745.801, 3496.87, 135.907, 0, 0), +(5774000, 39, 729.547, 3486.77, 128.211, 0, 0), + +(5774200, 1, 277.876, 3881.79, 75.9003, 0, 0), +(5774200, 2, 300.626, 3886.29, 78.1503, 0, 0), +(5774200, 3, 331.126, 3886.79, 80.1503, 0, 0), +(5774200, 4, 359.626, 3886.54, 79.6503, 0, 0), +(5774200, 5, 385.376, 3883.54, 79.9003, 0, 0), +(5774200, 6, 413.126, 3887.79, 79.6503, 0, 0), +(5774200, 7, 437.876, 3884.54, 79.6503, 0, 0), +(5774200, 8, 451.626, 3871.29, 79.9003, 0, 0), +(5774200, 9, 459.376, 3859.04, 80.1503, 0, 0), +(5774200, 10, 466.376, 3839.04, 80.6503, 0, 0), +(5774200, 11, 466.876, 3821.54, 86.1503, 0, 0), +(5774200, 12, 467.376, 3800.79, 81.1503, 0, 0), +(5774200, 13, 466.126, 3780.79, 82.1503, 0, 0), +(5774200, 14, 461.126, 3752.79, 83.1503, 0, 0), +(5774200, 15, 449.376, 3728.79, 82.6503, 0, 0), +(5774200, 16, 431.376, 3707.29, 81.9003, 0, 0), +(5774200, 17, 430.126, 3690.54, 81.6503, 0, 0), +(5774200, 18, 440.126, 3671.04, 79.4003, 0, 0), +(5774200, 19, 460.376, 3642.79, 79.4003, 0, 0), +(5774200, 20, 468.626, 3616.54, 79.9003, 0, 0), +(5774200, 21, 477.376, 3585.04, 83.9003, 0, 0), +(5774200, 22, 499.626, 3582.29, 87.1503, 0, 0), +(5774200, 23, 522.376, 3587.54, 91.1503, 0, 0), +(5774200, 24, 561.376, 3583.79, 94.6503, 0, 0), +(5774200, 25, 589.626, 3585.54, 98.1503, 0, 0), +(5774200, 26, 600.376, 3607.29, 110.9, 0, 0), +(5774200, 27, 610.626, 3625.79, 123.65, 0, 0), +(5774200, 28, 630.376, 3628.29, 134.65, 0, 0), +(5774200, 29, 651.876, 3608.79, 145.4, 0, 0), +(5774200, 30, 674.376, 3601.04, 146.9, 0, 0), +(5774200, 31, 714.876, 3602.29, 140.9, 0, 0), +(5774200, 32, 730.876, 3601.54, 140.9, 0, 0), +(5774200, 33, 737.028, 3596.41, 140.606, 0, 0), +(5774200, 34, 739.532, 3587.64, 140.657, 0, 0), +(5774200, 35, 742.032, 3560.39, 140.657, 0, 0), +(5774200, 36, 753.532, 3533.89, 139.407, 0, 0), +(5774200, 37, 755.532, 3516.64, 138.657, 0, 0), +(5774200, 38, 745.782, 3496.89, 135.907, 0, 0), +(5774200, 39, 729.547, 3486.77, 128.211, 0, 0); + +-- ======================================== +-- Addons +-- ======================================== +DELETE FROM `creature_template_addon` WHERE `entry` IN (57740, 57741, 57742, 57743, 59496, 59497, 59498, 59499); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `MountCreatureId`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, +`movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +-- Cart Yak at Dai-Lo Farmstead +(59496, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '108692'), +(59497, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, '108692 94567 82358'), +(59498, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), +(59499, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, '82358 94567'), +-- Cart Yak at Forbidden forest +(57740, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, '108692'), +(57741, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, '108692 49417 49415'), +(57742, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), +(57743, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, '49415 49417'); +-- Cart Yak at Singing Pools +DELETE FROM `creature_template_addon` WHERE `entry` IN (57208,57207,57710,57709); +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `MountCreatureID`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvPFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(57207, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, ''), +(57208, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, '108692'), +(57709, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, '84886 94570'), +(57710, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, '108692 94570 84886'); + +-- ======================================== +-- Difficulty Records +-- ======================================== +DELETE FROM `creature_template_difficulty` WHERE `entry` IN (57208, 57207, 57710, 57709, 57740, 57741, 57742, 57743, 59496, 59497, 59498, 59499); +INSERT INTO `creature_template_difficulty` VALUES +-- Cart Yak at Singing Pools +(57207, 0, 0, 0, 80, 4, 1, 1, 1, 1, 26777, 0, 0, 0, 0, 0, 0, 0, 0, 268435456 | 0x02000000, 0, 0, 0, 0, 0, 0, 0, 56647), +(57208, 0, 0, 0, 80, 4, 1, 1, 1, 1, 26775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256 | 0x02000000, 0, 0, 0, 0, 0, 56647), +(57709, 0, 0, 0, 80, 4, 1, 1, 1, 0.2, 26264, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 56647), +(57710, 0, 0, 0, 80, 4, 1, 1, 1, 0.2, 26262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 56647), +-- Cart Yak at Dai-Lo Farmstead +(59496, 0, 0, 0, 80, 4, 1, 1, 1, 1, 23227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256 | 0x02000000, 0, 0, 0, 0, 0, 56647), +(59497, 0, 0, 0, 80, 4, 1, 1, 1, 0.2, 23225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 56647), +(59498, 0, 0, 0, 80, 4, 1, 1, 1, 1, 23223, 0, 0, 0, 0, 0, 0, 0, 0, 268435456 | 0x02000000, 0, 0, 0, 0, 0, 0, 0, 56647), +(59499, 0, 0, 0, 80, 4, 1, 1, 1, 0.2, 23221, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 56647), +-- Cart Yak at Forbidden forest +(57740, 0, 0, 0, 80, 4, 1, 1, 1, 1, 26236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256 | 0x02000000, 0, 0, 0, 0, 0, 56647), +(57741, 0, 0, 0, 80, 4, 1, 1, 1, 0.2, 26235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 256, 0, 0, 0, 0, 0, 56647), +(57742, 0, 0, 0, 80, 4, 1, 1, 1, 1, 26231, 0, 0, 0, 0, 0, 0, 0, 0, 268435456 | 0x02000000, 0, 0, 0, 0, 0, 0, 0, 56647), +(57743, 0, 0, 0, 80, 4, 1, 1, 1, 0.2, 26229, 0, 0, 0, 0, 0, 0, 0, 0, 268435456, 0, 0, 0, 0, 0, 0, 0, 56647); + +-- Rope spell conditions +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=108627; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 108627, 0, 0, 51, 0, 5, 57207, 0, '', 0, 0, 0, '', 'Ox Cart Rope Left can only hit Nourished Yak'), +(13, 1, 108627, 0, 1, 51, 0, 5, 59498, 0, '', 0, 0, 0, '', 'Ox Cart Rope Left can only hit Nourished Yak'), +(13, 1, 108627, 0, 2, 51, 0, 5, 57742, 0, '', 0, 0, 0, '', 'Ox Cart Rope Left can only hit Nourished Yak'); diff --git a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp index e55fcfbbd1107..e7ba9ed6df38f 100644 --- a/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp +++ b/src/server/scripts/Pandaria/zone_the_wandering_isle.cpp @@ -38,6 +38,11 @@ namespace Scripts::Pandaria::TheWanderingIsle { namespace Spells { + // Generic Vehicle Spells + static constexpr uint32 ForceVehicleRide = 46598; + static constexpr uint32 EjectPassengers = 50630; + static constexpr uint32 OxCartRopeLeft = 108627; // Cart on Yak + // Singing Pools static constexpr uint32 CurseOfTheFrog = 102938; static constexpr uint32 CurseOfTheSkunk = 102939; @@ -60,12 +65,24 @@ namespace Spells namespace Quests { static constexpr uint32 OnlyTheWorthyShallPass = 29421; + static constexpr uint32 TheSourceOfLivelihood = 29680; + static constexpr uint32 TheSpiritAndBodyOfShenzinsu = 29775; + static constexpr uint32 NewAllies = 29800; } namespace Creatures { static constexpr uint32 MasterLiFei = 54135; static constexpr uint32 MasterLiFeiCombat = 54734; + + // Yak and Cart + static constexpr uint32 CartSingingPools = 57710; + static constexpr uint32 CartFarmstead = 59497; + static constexpr uint32 CartForest = 57741; + + static constexpr uint32 CartVehicleSingingPools = 57208; + static constexpr uint32 CartVehicleFarmstead = 59496; + static constexpr uint32 CartVehicleForest = 57740; } namespace Talks @@ -73,6 +90,24 @@ namespace Talks static constexpr uint32 LiFeiDefeat = 0; } +namespace Paths +{ + // Yak and Cart + static constexpr uint32 CartSingingPools = 5720800; + static constexpr uint32 CartFarmstead = 5949600; + static constexpr uint32 CartForest = 5774000; + + static constexpr int8 NodeCartRemovePassenger = 28; + static constexpr int8 NodeForestCartRemovePassenger = 34; +} + +namespace Events +{ + // Yak and Cart + static constexpr int8 YakCartPathStart = 1; + static constexpr int8 YakCartRopes = 2; +} + enum TraineeMisc { SAY_FINISH_FIGHT = 0, @@ -1492,6 +1527,117 @@ class spell_flying_shadow_kick : public SpellScript OnEffectHitTarget += SpellEffectFn(spell_flying_shadow_kick::HandleHitTarget, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); } }; + +struct CartData +{ + uint32 Entry = 0; + uint32 PathId = 0; + Optional EjectNodeId; + Optional CreditNPC; + Optional QuestId; + Optional YakNPC; +}; + +static constexpr CartData CartDataTable[] = +{ + // Carts + { + .Entry = Creatures::CartVehicleSingingPools, + .PathId = Paths::CartSingingPools, + .EjectNodeId = Paths::NodeCartRemovePassenger, + .CreditNPC = Creatures::CartSingingPools, + .QuestId = Quests::TheSourceOfLivelihood, + }, + { + .Entry = Creatures::CartVehicleFarmstead, + .PathId = Paths::CartFarmstead, + .EjectNodeId = Paths::NodeCartRemovePassenger, + .CreditNPC = Creatures::CartFarmstead, + .QuestId = Quests::TheSpiritAndBodyOfShenzinsu, + }, + { + .Entry = Creatures::CartVehicleForest, + .PathId = Paths::CartForest, + .EjectNodeId = Paths::NodeForestCartRemovePassenger, + .CreditNPC = Creatures::CartForest, + .QuestId = Quests::NewAllies, + } +}; + +static CartData GetCartData(uint32 entry) +{ + for (CartData const& data : CartDataTable) + if (data.Entry == entry) + return data; + + return {}; +} + +// 57208 - Delivery Cart (Singing Pools) +// 59496 - Delivery Cart (Farmstead) +// 57740 - Delivery Cart (Forbidden Forest) +struct npc_delivery_cart : public ScriptedAI +{ + npc_delivery_cart(Creature* creature) : ScriptedAI(creature), _data(GetCartData(creature->GetEntry())) { } + + void Reset() override + { + _events.Reset(); + } + + void PassengerBoarded(Unit* passenger, int8 /*seat*/, bool apply) override + { + if (!apply) + return; + + Player* player = passenger->ToPlayer(); + if (!player) + return; + + me->CastSpell(player, Spells::ForceVehicleRide); + + _events.ScheduleEvent(Events::YakCartPathStart, 1800ms); + _events.ScheduleEvent(Events::YakCartRopes, 1s); + + if (_data.QuestId && player->hasQuest(*_data.QuestId) && _data.CreditNPC) + player->KilledMonsterCredit(*_data.CreditNPC, player->GetGUID()); + } + + void WaypointReached(uint32 nodeId, uint32 /*pathId*/) override + { + if (_data.EjectNodeId && nodeId == *_data.EjectNodeId) + me->CastSpell(me, Spells::EjectPassengers); + } + + void WaypointPathEnded(uint32 /*nodeId*/, uint32 /*pathId*/) override + { + me->DespawnOrUnsummon(1s); + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case Events::YakCartRopes: + me->CastSpell(me, Spells::OxCartRopeLeft); + break; + case Events::YakCartPathStart: + me->GetMotionMaster()->MovePath(_data.PathId, false); + break; + default: + break; + } + } + } + +private: + EventMap _events; + CartData _data; +}; } void AddSC_zone_the_wandering_isle() @@ -1531,4 +1677,6 @@ void AddSC_zone_the_wandering_isle() RegisterCreatureAI(npc_li_fei_combat); RegisterSpellScript(spell_feet_of_fury); RegisterSpellScript(spell_flying_shadow_kick); + + RegisterCreatureAI(npc_delivery_cart); } From d43f44a721447fd0db1bca797c6a8d66adad2237 Mon Sep 17 00:00:00 2001 From: ModoX Date: Fri, 1 May 2026 23:20:30 +0200 Subject: [PATCH 119/175] Core/Misc: Fix build --- src/server/game/Spells/SpellEffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 865138dacad72..e3f59de5b5187 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1966,7 +1966,7 @@ void Spell::EffectSummonType() if (!unitCaster) return; - summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, privateObjectOwner); + summon = unitCaster->GetMap()->SummonCreature(entry, *destTarget, properties, duration, unitCaster, m_spellInfo->Id, 0, privateObjectOwner); break; } case SummonTitle::Lightwell: From f555d9992caabed1eff90a34fb57225ab0e32a9b Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 2 May 2026 00:52:10 +0200 Subject: [PATCH 120/175] Dep/jemalloc: Update to 5.3.1 --- dep/PackageList.txt | 2 +- dep/jemalloc/CMakeLists.txt | 55 +- .../jemalloc/internal/activity_callback.h | 23 - .../include/jemalloc/internal/arena_externs.h | 140 +- .../jemalloc/internal/arena_inlines_a.h | 3 + .../jemalloc/internal/arena_inlines_b.h | 418 ++- .../include/jemalloc/internal/arena_stats.h | 67 +- .../include/jemalloc/internal/arena_structs.h | 38 +- .../include/jemalloc/internal/arena_types.h | 28 +- .../include/jemalloc/internal/assert.h | 75 +- .../include/jemalloc/internal/atomic.h | 59 +- .../include/jemalloc/internal/atomic_c11.h | 57 +- .../jemalloc/internal/atomic_gcc_atomic.h | 168 +- .../jemalloc/internal/atomic_gcc_sync.h | 100 +- .../include/jemalloc/internal/atomic_msvc.h | 159 +- .../internal/background_thread_externs.h | 27 +- .../internal/background_thread_inlines.h | 20 +- .../internal/background_thread_structs.h | 29 +- dep/jemalloc/include/jemalloc/internal/base.h | 53 +- dep/jemalloc/include/jemalloc/internal/bin.h | 51 +- .../include/jemalloc/internal/bin_info.h | 11 +- .../include/jemalloc/internal/bin_inlines.h | 112 + .../include/jemalloc/internal/bin_stats.h | 23 +- .../include/jemalloc/internal/bin_types.h | 6 +- .../include/jemalloc/internal/bit_util.h | 65 +- .../include/jemalloc/internal/bitmap.h | 227 +- .../include/jemalloc/internal/buf_writer.h | 28 +- .../include/jemalloc/internal/cache_bin.h | 387 ++- dep/jemalloc/include/jemalloc/internal/ckh.h | 11 +- dep/jemalloc/include/jemalloc/internal/conf.h | 23 + .../include/jemalloc/internal/counter.h | 4 +- dep/jemalloc/include/jemalloc/internal/ctl.h | 149 +- .../include/jemalloc/internal/decay.h | 16 +- dep/jemalloc/include/jemalloc/internal/div.h | 1 + .../include/jemalloc/internal/ecache.h | 19 +- .../include/jemalloc/internal/edata.h | 409 ++- .../include/jemalloc/internal/edata_cache.h | 17 +- .../include/jemalloc/internal/ehooks.h | 44 +- dep/jemalloc/include/jemalloc/internal/emap.h | 130 +- .../include/jemalloc/internal/emitter.h | 148 +- dep/jemalloc/include/jemalloc/internal/eset.h | 3 +- .../include/jemalloc/internal/exp_grow.h | 6 +- .../include/jemalloc/internal/extent.h | 71 +- .../include/jemalloc/internal/extent_dss.h | 24 +- .../include/jemalloc/internal/extent_mmap.h | 6 +- dep/jemalloc/include/jemalloc/internal/fb.h | 33 +- dep/jemalloc/include/jemalloc/internal/fxp.h | 5 +- dep/jemalloc/include/jemalloc/internal/hash.h | 317 +- dep/jemalloc/include/jemalloc/internal/hook.h | 26 +- dep/jemalloc/include/jemalloc/internal/hpa.h | 89 +- .../include/jemalloc/internal/hpa_central.h | 41 + .../include/jemalloc/internal/hpa_hooks.h | 8 +- .../include/jemalloc/internal/hpa_opts.h | 118 +- .../include/jemalloc/internal/hpa_utils.h | 161 + .../include/jemalloc/internal/hpdata.h | 149 +- .../include/jemalloc/internal/inspect.h | 13 +- .../internal/jemalloc_internal_decls.h | 142 +- .../internal/jemalloc_internal_defs.h.in | 70 + .../internal/jemalloc_internal_externs.h | 86 +- .../internal/jemalloc_internal_inlines_a.h | 17 +- .../internal/jemalloc_internal_inlines_b.h | 27 +- .../internal/jemalloc_internal_inlines_c.h | 364 ++- .../internal/jemalloc_internal_macros.h | 157 +- .../internal/jemalloc_internal_overrides.h | 22 + .../internal/jemalloc_internal_types.h | 138 +- .../jemalloc/internal/jemalloc_preamble.h | 25 +- .../jemalloc/internal/jemalloc_probe.h | 49 + .../jemalloc/internal/jemalloc_probe_custom.h | 148 + .../jemalloc/internal/jemalloc_probe_stap.h | 11 + .../include/jemalloc/internal/large_externs.h | 21 +- .../include/jemalloc/internal/lockedint.h | 68 +- dep/jemalloc/include/jemalloc/internal/log.h | 72 +- .../include/jemalloc/internal/malloc_io.h | 120 +- .../include/jemalloc/internal/mpsc_queue.h | 3 + .../include/jemalloc/internal/mutex.h | 223 +- .../include/jemalloc/internal/mutex_prof.h | 113 +- .../include/jemalloc/internal/nstime.h | 51 +- dep/jemalloc/include/jemalloc/internal/pa.h | 45 +- dep/jemalloc/include/jemalloc/internal/pac.h | 47 +- .../include/jemalloc/internal/pages.h | 100 +- dep/jemalloc/include/jemalloc/internal/pai.h | 52 +- dep/jemalloc/include/jemalloc/internal/peak.h | 5 +- .../include/jemalloc/internal/peak_event.h | 22 +- dep/jemalloc/include/jemalloc/internal/ph.h | 500 ++-- .../jemalloc/internal/private_namespace.h | 144 +- dep/jemalloc/include/jemalloc/internal/prng.h | 11 +- .../include/jemalloc/internal/prof_data.h | 18 +- .../include/jemalloc/internal/prof_externs.h | 160 +- .../include/jemalloc/internal/prof_hook.h | 9 + .../include/jemalloc/internal/prof_inlines.h | 94 +- .../include/jemalloc/internal/prof_log.h | 7 +- .../include/jemalloc/internal/prof_recent.h | 8 +- .../include/jemalloc/internal/prof_stats.h | 3 + .../include/jemalloc/internal/prof_structs.h | 113 +- .../include/jemalloc/internal/prof_sys.h | 21 +- .../include/jemalloc/internal/prof_types.h | 63 +- .../include/jemalloc/internal/psset.h | 50 +- .../jemalloc/internal/public_namespace.h | 5 +- .../jemalloc/internal/public_unnamespace.h | 5 +- dep/jemalloc/include/jemalloc/internal/ql.h | 172 +- dep/jemalloc/include/jemalloc/internal/qr.h | 66 +- .../include/jemalloc/internal/quantum.h | 148 +- dep/jemalloc/include/jemalloc/internal/rb.h | 23 +- .../include/jemalloc/internal/rtree.h | 276 +- .../include/jemalloc/internal/rtree_tsd.h | 21 +- .../include/jemalloc/internal/safety_check.h | 53 +- dep/jemalloc/include/jemalloc/internal/san.h | 55 +- .../include/jemalloc/internal/san_bump.h | 13 +- dep/jemalloc/include/jemalloc/internal/sc.h | 73 +- dep/jemalloc/include/jemalloc/internal/sec.h | 137 +- .../include/jemalloc/internal/sec_opts.h | 49 +- dep/jemalloc/include/jemalloc/internal/seq.h | 3 + .../include/jemalloc/internal/slab_data.h | 1 + .../include/jemalloc/internal/smoothstep.h | 410 +-- dep/jemalloc/include/jemalloc/internal/spin.h | 13 +- .../include/jemalloc/internal/stats.h | 39 +- dep/jemalloc/include/jemalloc/internal/sz.h | 169 +- .../jemalloc/internal/tcache_externs.h | 93 +- .../jemalloc/internal/tcache_inlines.h | 136 +- .../jemalloc/internal/tcache_structs.h | 33 +- .../include/jemalloc/internal/tcache_types.h | 36 +- .../include/jemalloc/internal/test_hooks.h | 30 +- .../include/jemalloc/internal/thread_event.h | 105 +- .../jemalloc/internal/thread_event_registry.h | 107 + .../include/jemalloc/internal/ticker.h | 46 +- dep/jemalloc/include/jemalloc/internal/tsd.h | 361 +-- .../include/jemalloc/internal/tsd_generic.h | 52 +- .../include/jemalloc/internal/tsd_internals.h | 280 ++ .../internal/tsd_malloc_thread_cleanup.h | 6 +- .../include/jemalloc/internal/tsd_tls.h | 8 +- .../include/jemalloc/internal/tsd_types.h | 6 +- .../include/jemalloc/internal/tsd_win.h | 123 +- .../include/jemalloc/internal/typed_list.h | 89 +- dep/jemalloc/include/jemalloc/internal/util.h | 71 +- .../include/jemalloc/internal/witness.h | 88 +- dep/jemalloc/include/jemalloc/jemalloc.h.in | 65 +- dep/jemalloc/src/arena.c | 1464 +++++---- dep/jemalloc/src/background_thread.c | 396 +-- dep/jemalloc/src/base.c | 440 ++- dep/jemalloc/src/bin.c | 265 +- dep/jemalloc/src/bin_info.c | 6 +- dep/jemalloc/src/bitmap.c | 21 +- dep/jemalloc/src/buf_writer.c | 15 +- dep/jemalloc/src/cache_bin.c | 82 +- dep/jemalloc/src/ckh.c | 101 +- dep/jemalloc/src/conf.c | 1203 ++++++++ dep/jemalloc/src/counter.c | 2 +- dep/jemalloc/src/ctl.c | 2662 +++++++++-------- dep/jemalloc/src/decay.c | 74 +- dep/jemalloc/src/ecache.c | 2 +- dep/jemalloc/src/edata.c | 5 +- dep/jemalloc/src/edata_cache.c | 15 +- dep/jemalloc/src/ehooks.c | 74 +- dep/jemalloc/src/emap.c | 105 +- dep/jemalloc/src/eset.c | 224 +- dep/jemalloc/src/exp_grow.c | 8 +- dep/jemalloc/src/extent.c | 564 ++-- dep/jemalloc/src/extent_dss.c | 122 +- dep/jemalloc/src/extent_mmap.c | 6 +- dep/jemalloc/src/fxp.c | 14 +- dep/jemalloc/src/hook.c | 91 +- dep/jemalloc/src/hpa.c | 778 +++-- dep/jemalloc/src/hpa_central.c | 121 + dep/jemalloc/src/hpa_hooks.c | 77 +- dep/jemalloc/src/hpa_utils.c | 33 + dep/jemalloc/src/hpdata.c | 79 +- dep/jemalloc/src/inspect.c | 7 +- dep/jemalloc/src/jemalloc.c | 2227 ++++---------- dep/jemalloc/src/jemalloc_cpp.cpp | 200 +- dep/jemalloc/src/large.c | 99 +- dep/jemalloc/src/log.c | 14 +- dep/jemalloc/src/malloc_io.c | 543 ++-- dep/jemalloc/src/mutex.c | 54 +- dep/jemalloc/src/nstime.c | 74 +- dep/jemalloc/src/pa.c | 61 +- dep/jemalloc/src/pa_extra.c | 59 +- dep/jemalloc/src/pac.c | 303 +- dep/jemalloc/src/pages.c | 434 ++- dep/jemalloc/src/pai.c | 31 - dep/jemalloc/src/peak_event.c | 61 +- dep/jemalloc/src/prof.c | 260 +- dep/jemalloc/src/prof_data.c | 387 ++- dep/jemalloc/src/prof_log.c | 137 +- dep/jemalloc/src/prof_recent.c | 97 +- dep/jemalloc/src/prof_stack_range.c | 175 ++ dep/jemalloc/src/prof_stats.c | 4 +- dep/jemalloc/src/prof_sys.c | 529 +++- dep/jemalloc/src/psset.c | 256 +- dep/jemalloc/src/rtree.c | 125 +- dep/jemalloc/src/safety_check.c | 47 +- dep/jemalloc/src/san.c | 65 +- dep/jemalloc/src/san_bump.c | 36 +- dep/jemalloc/src/sc.c | 10 +- dep/jemalloc/src/sec.c | 567 ++-- dep/jemalloc/src/stats.c | 1196 +++++--- dep/jemalloc/src/sz.c | 17 +- dep/jemalloc/src/tcache.c | 1461 +++++---- dep/jemalloc/src/test_hooks.c | 4 +- dep/jemalloc/src/thread_event.c | 371 ++- dep/jemalloc/src/thread_event_registry.c | 238 ++ dep/jemalloc/src/ticker.c | 15 +- dep/jemalloc/src/tsd.c | 141 +- dep/jemalloc/src/util.c | 48 + dep/jemalloc/src/witness.c | 14 +- dep/jemalloc/src/zone.c | 113 +- 205 files changed, 18825 insertions(+), 12041 deletions(-) delete mode 100644 dep/jemalloc/include/jemalloc/internal/activity_callback.h create mode 100644 dep/jemalloc/include/jemalloc/internal/bin_inlines.h create mode 100644 dep/jemalloc/include/jemalloc/internal/conf.h create mode 100644 dep/jemalloc/include/jemalloc/internal/hpa_central.h create mode 100644 dep/jemalloc/include/jemalloc/internal/hpa_utils.h create mode 100644 dep/jemalloc/include/jemalloc/internal/jemalloc_internal_overrides.h create mode 100644 dep/jemalloc/include/jemalloc/internal/jemalloc_probe.h create mode 100644 dep/jemalloc/include/jemalloc/internal/jemalloc_probe_custom.h create mode 100644 dep/jemalloc/include/jemalloc/internal/jemalloc_probe_stap.h create mode 100644 dep/jemalloc/include/jemalloc/internal/thread_event_registry.h create mode 100644 dep/jemalloc/include/jemalloc/internal/tsd_internals.h create mode 100644 dep/jemalloc/src/conf.c create mode 100644 dep/jemalloc/src/hpa_central.c create mode 100644 dep/jemalloc/src/hpa_utils.c delete mode 100644 dep/jemalloc/src/pai.c create mode 100644 dep/jemalloc/src/prof_stack_range.c create mode 100644 dep/jemalloc/src/thread_event_registry.c create mode 100644 dep/jemalloc/src/util.c diff --git a/dep/PackageList.txt b/dep/PackageList.txt index 68b56816450aa..cb7fcd144120f 100644 --- a/dep/PackageList.txt +++ b/dep/PackageList.txt @@ -18,7 +18,7 @@ G3D (a commercial-grade C++ 3D engine available as Open Source (BSD License) jemalloc (a general-purpose scalable concurrent malloc-implementation) https://github.com/jemalloc/jemalloc - Version: 5.3.0 + Version: 5.3.1 libreadline (command line editing library) https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html diff --git a/dep/jemalloc/CMakeLists.txt b/dep/jemalloc/CMakeLists.txt index 21e5c56614c1a..a5bb4a259ee01 100644 --- a/dep/jemalloc/CMakeLists.txt +++ b/dep/jemalloc/CMakeLists.txt @@ -42,17 +42,18 @@ else() set(CPU_SPINWAIT "_mm_pause()") else() set(CPU_SPINWAIT "__asm__ volatile\(\"pause\"\)") + set(JEMALLOC_HAVE_RDTSCP 1) endif() endif() # git describe --long --abbrev=40 -set(JEMALLOC_VERSION "5.3.0-0-g54eaed1d8b56b1aa528be3bdd1877e59c56fa90c") +set(JEMALLOC_VERSION "5.3.1-12-gee4d7b7f9a5c1b48d462be2b65c16e4ead8e3396") set(JEMALLOC_VERSION_MAJOR 5) set(JEMALLOC_VERSION_MINOR 3) -set(JEMALLOC_VERSION_BUGFIX 0) -set(JEMALLOC_VERSION_NREV 0) -set(JEMALLOC_VERSION_GID "54eaed1d8b56b1aa528be3bdd1877e59c56fa90c") -set(JEMALLOC_VERSION_GID_IDENT 54eaed1d8b56b1aa528be3bdd1877e59c56fa90c) +set(JEMALLOC_VERSION_BUGFIX 1) +set(JEMALLOC_VERSION_NREV 12) +set(JEMALLOC_VERSION_GID "ee4d7b7f9a5c1b48d462be2b65c16e4ead8e3396") +set(JEMALLOC_VERSION_GID_IDENT ee4d7b7f9a5c1b48d462be2b65c16e4ead8e3396) set(JEMALLOC_MAPS_COALESCE 1) set(JEMALLOC_TLS 1) @@ -67,6 +68,9 @@ if(APPLE) set(JEMALLOC_ZONE 1) unset(JEMALLOC_TLS) check_symbol_exists(mach_absolute_time "mach/mach_time.h" JEMALLOC_HAVE_MACH_ABSOLUTE_TIME) + if(LG_SIZEOF_PTR STREQUAL "3") + set(JEMALLOC_RETAIN 1) + endif() elseif(CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") set(JEMALLOC_DSS 1) unset(JEMALLOC_TLS) @@ -114,6 +118,7 @@ if(NOT MSVC) set(JEMALLOC_GCC_U8_ATOMIC_ATOMICS 1) # don't bother detecting atomic support, all TC-supported compilers (excluding msvc) have gcc-like atomics set(JEMALLOC_HAVE_ATTR 1) set(JEMALLOC_TLS_MODEL "__attribute__\(\(tls_model\(\"initial-exec\"\)\)\)") + set(JEMALLOC_HAVE_ATTR_DEPRECATED 1) set(JEMALLOC_HAVE_ATTR_FORMAT_GNU_PRINTF 1) set(JEMALLOC_HAVE_ATTR_FORMAT_PRINTF 1) set(JEMALLOC_HAVE_ATTR_FORMAT_ARG 1) @@ -146,11 +151,15 @@ set(JEMALLOC_CONFIG_MALLOC_CONF "") set(JEMALLOC_C11_ATOMICS 1) set(JEMALLOC_ENABLE_CXX 1) set(JEMALLOC_FILL 1) +set(JEMALLOC_HAVE_CXX_EXCEPTIONS 1) set(JEMALLOC_PRIVATE_NAMESPACE "je_") set(JEMALLOC_STATS 1) +unset(JEMALLOC_CONFIG_ENV) +unset(JEMALLOC_CONFIG_FILE) unset(JEMALLOC_LOG) unset(JEMALLOC_OPT_SAFETY_CHECKS) unset(JEMALLOC_OPT_SIZE_CHECKS) +unset(JEMALLOC_PAGEID) unset(JEMALLOC_READLINKAT) unset(JEMALLOC_UAF_DETECTION) unset(JEMALLOC_UTRACE) @@ -161,6 +170,7 @@ set(CMAKE_REQUIRED_DEFINITIONS ${JEMALLOC_EXTRA_DEFINES}) check_symbol_exists(memalign "malloc.h" JEMALLOC_OVERRIDE_MEMALIGN) check_symbol_exists(valloc "stdlib.h" JEMALLOC_OVERRIDE_VALLOC) +check_symbol_exists(pvalloc "malloc.h" JEMALLOC_OVERRIDE_PVALLOC) check_symbol_exists(malloc_size "malloc/malloc.h" JEMALLOC_HAVE_MALLOC_SIZE) set(wrap_syms "") @@ -173,6 +183,14 @@ if(NOT JEMALLOC_PREFIX) if(JEMALLOC_OVERRIDE___LIBC_FREE) list(APPEND wrap_syms "__libc_free") endif() + check_function_exists(__libc_free_sized JEMALLOC_OVERRIDE___LIBC_FREE_SIZED) + if(JEMALLOC_OVERRIDE___LIBC_FREE_SIZED) + list(APPEND wrap_syms "__libc_free_sized") + endif() + check_function_exists(__libc_free_aligned_sized JEMALLOC_OVERRIDE___LIBC_FREE_ALIGNED_SIZED) + if(JEMALLOC_OVERRIDE___LIBC_FREE_ALIGNED_SIZED) + list(APPEND wrap_syms "__libc_free_aligned_sized") + endif() check_function_exists(__libc_malloc JEMALLOC_OVERRIDE___LIBC_MALLOC) if(JEMALLOC_OVERRIDE___LIBC_MALLOC) list(APPEND wrap_syms "__libc_malloc") @@ -189,6 +207,10 @@ if(NOT JEMALLOC_PREFIX) if(JEMALLOC_OVERRIDE___LIBC_VALLOC) list(APPEND wrap_syms "__libc_valloc") endif() + check_function_exists(__libc_pvalloc JEMALLOC_OVERRIDE___LIBC_PVALLOC) + if(JEMALLOC_OVERRIDE___LIBC_PVALLOC) + list(APPEND wrap_syms "__libc_pvalloc") + endif() check_function_exists(__posix_memalign JEMALLOC_OVERRIDE___POSIX_MEMALIGN) if(JEMALLOC_OVERRIDE___POSIX_MEMALIGN) list(APPEND wrap_syms "__posix_memalign") @@ -203,7 +225,8 @@ if(NOT WIN32) check_symbol_exists(pthread_atfork "pthread.h" JEMALLOC_HAVE_PTHREAD_ATFORK) check_symbol_exists(pthread_setname_np "pthread.h" JEMALLOC_HAVE_PTHREAD_SETNAME_NP) check_symbol_exists(pthread_getname_np "pthread.h" JEMALLOC_HAVE_PTHREAD_GETNAME_NP) - check_symbol_exists(pthread_get_name_np "pthread.h" JEMALLOC_HAVE_PTHREAD_GET_NAME_NP) + check_symbol_exists(pthread_set_name_np "pthread_np.h" JEMALLOC_HAVE_PTHREAD_SET_NAME_NP) + check_symbol_exists(pthread_get_name_np "pthread_np.h" JEMALLOC_HAVE_PTHREAD_GET_NAME_NP) check_c_source_compiles(" #include int main() @@ -214,9 +237,11 @@ if(NOT WIN32) pthread_mutexattr_destroy(&attr); } " JEMALLOC_HAVE_PTHREAD_MUTEX_ADAPTIVE_NP) + check_symbol_exists(gettid "unistd.h" JEMALLOC_HAVE_GETTID) check_symbol_exists(CLOCK_MONOTONIC_COARSE "time.h" JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE) check_symbol_exists(CLOCK_MONOTONIC "time.h" JEMALLOC_HAVE_CLOCK_MONOTONIC) check_symbol_exists(CLOCK_REALTIME "time.h" JEMALLOC_HAVE_CLOCK_REALTIME) + check_symbol_exists(clock_gettime_nsec_np "time.h" JEMALLOC_HAVE_CLOCK_GETTIME_NSEC_NP) set(CMAKE_REQUIRED_FLAGS "-Werror") check_c_source_compiles(" @@ -229,6 +254,7 @@ if(NOT WIN32) check_symbol_exists(secure_getenv "stdlib.h" JEMALLOC_HAVE_SECURE_GETENV) check_symbol_exists(sched_getcpu "sched.h" JEMALLOC_HAVE_SCHED_GETCPU) check_symbol_exists(sched_setaffinity "sched.h" JEMALLOC_HAVE_SCHED_SETAFFINITY) + check_symbol_exists(pthread_setaffinity_np "pthread.h" JEMALLOC_HAVE_PTHREAD_SETAFFINITY_NP) check_symbol_exists(issetugid "unistd.h" JEMALLOC_HAVE_ISSETUGID) check_symbol_exists(_malloc_thread_cleanup "pthread.h" JEMALLOC_MALLOC_THREAD_CLEANUP) if(JEMALLOC_MALLOC_THREAD_CLEANUP) @@ -244,6 +270,7 @@ if(NOT WIN32) endif() check_symbol_exists(memcntl "sys/types.h;sys/mman.h" JEMALLOC_HAVE_MEMCNTL) + check_symbol_exists(prctl "sys/prctl.h" JEMALLOC_HAVE_PRCTL) check_symbol_exists(madvise "sys/mman.h" JEMALLOC_HAVE_MADVISE) if(JEMALLOC_HAVE_MADVISE) check_symbol_exists(MADV_FREE "sys/mman.h" JEMALLOC_PURGE_MADVISE_FREE) @@ -254,9 +281,11 @@ if(NOT WIN32) check_symbol_exists(MADV_DONTNEED "sys/mman.h" JEMALLOC_PURGE_MADVISE_DONTNEED) check_symbol_exists(MADV_DONTDUMP "sys/mman.h" JEMALLOC_MADVISE_DONTDUMP) check_symbol_exists(MADV_NOCORE "sys/mman.h" JEMALLOC_MADVISE_NOCORE) + check_symbol_exists(MADV_COLLAPSE "sys/mman.h" JEMALLOC_HAVE_MADVISE_COLLAPSE) if(TRINITY_SYSTEM_PROCESSOR MATCHES "x86|amd64") check_symbol_exists(MADV_HUGEPAGE "sys/mman.h" JEMALLOC_HAVE_MADVISE_HUGE) endif() + check_symbol_exists(SYS_process_madvise "sys/syscall.h" JEMALLOC_HAVE_PROCESS_MADVISE) else() check_symbol_exists(posix_madvise "sys/mman.h" JEMALLOC_HAVE_POSIX_MADVISE) if(JEMALLOC_HAVE_POSIX_MADVISE) @@ -283,6 +312,13 @@ if(NOT WIN32) } " JEMALLOC_STRERROR_R_RETURNS_CHAR_WITH_GNU_SOURCE) unset(CMAKE_REQUIRED_FLAGS) + check_c_source_compiles(" + int main() + { + __int128 temp = 0; + return temp; + } + " JEMALLOC_HAVE_INT128) endif() unset(CMAKE_REQUIRED_DEFINITIONS) @@ -312,6 +348,7 @@ add_library(jemalloc STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/buf_writer.c ${CMAKE_CURRENT_SOURCE_DIR}/src/cache_bin.c ${CMAKE_CURRENT_SOURCE_DIR}/src/ckh.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/conf.c ${CMAKE_CURRENT_SOURCE_DIR}/src/counter.c ${CMAKE_CURRENT_SOURCE_DIR}/src/ctl.c ${CMAKE_CURRENT_SOURCE_DIR}/src/decay.c @@ -331,7 +368,9 @@ add_library(jemalloc STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/san_bump.c ${CMAKE_CURRENT_SOURCE_DIR}/src/hook.c ${CMAKE_CURRENT_SOURCE_DIR}/src/hpa.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/hpa_central.c ${CMAKE_CURRENT_SOURCE_DIR}/src/hpa_hooks.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/hpa_utils.c ${CMAKE_CURRENT_SOURCE_DIR}/src/hpdata.c ${CMAKE_CURRENT_SOURCE_DIR}/src/inspect.c ${CMAKE_CURRENT_SOURCE_DIR}/src/large.c @@ -341,7 +380,6 @@ add_library(jemalloc STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/nstime.c ${CMAKE_CURRENT_SOURCE_DIR}/src/pa.c ${CMAKE_CURRENT_SOURCE_DIR}/src/pa_extra.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/pai.c ${CMAKE_CURRENT_SOURCE_DIR}/src/pac.c ${CMAKE_CURRENT_SOURCE_DIR}/src/pages.c ${CMAKE_CURRENT_SOURCE_DIR}/src/peak_event.c @@ -349,6 +387,7 @@ add_library(jemalloc STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/prof_data.c ${CMAKE_CURRENT_SOURCE_DIR}/src/prof_log.c ${CMAKE_CURRENT_SOURCE_DIR}/src/prof_recent.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/prof_stack_range.c ${CMAKE_CURRENT_SOURCE_DIR}/src/prof_stats.c ${CMAKE_CURRENT_SOURCE_DIR}/src/prof_sys.c ${CMAKE_CURRENT_SOURCE_DIR}/src/psset.c @@ -361,8 +400,10 @@ add_library(jemalloc STATIC ${CMAKE_CURRENT_SOURCE_DIR}/src/tcache.c ${CMAKE_CURRENT_SOURCE_DIR}/src/test_hooks.c ${CMAKE_CURRENT_SOURCE_DIR}/src/thread_event.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/thread_event_registry.c ${CMAKE_CURRENT_SOURCE_DIR}/src/ticker.c ${CMAKE_CURRENT_SOURCE_DIR}/src/tsd.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/util.c ${CMAKE_CURRENT_SOURCE_DIR}/src/witness.c) if(APPLE) diff --git a/dep/jemalloc/include/jemalloc/internal/activity_callback.h b/dep/jemalloc/include/jemalloc/internal/activity_callback.h deleted file mode 100644 index 6c2e84e3180dd..0000000000000 --- a/dep/jemalloc/include/jemalloc/internal/activity_callback.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef JEMALLOC_INTERNAL_ACTIVITY_CALLBACK_H -#define JEMALLOC_INTERNAL_ACTIVITY_CALLBACK_H - -/* - * The callback to be executed "periodically", in response to some amount of - * allocator activity. - * - * This callback need not be computing any sort of peak (although that's the - * intended first use case), but we drive it from the peak counter, so it's - * keeps things tidy to keep it here. - * - * The calls to this thunk get driven by the peak_event module. - */ -#define ACTIVITY_CALLBACK_THUNK_INITIALIZER {NULL, NULL} -typedef void (*activity_callback_t)(void *uctx, uint64_t allocated, - uint64_t deallocated); -typedef struct activity_callback_thunk_s activity_callback_thunk_t; -struct activity_callback_thunk_s { - activity_callback_t callback; - void *uctx; -}; - -#endif /* JEMALLOC_INTERNAL_ACTIVITY_CALLBACK_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/arena_externs.h b/dep/jemalloc/include/jemalloc/internal/arena_externs.h index e6fceaafea502..39794b3e348d8 100644 --- a/dep/jemalloc/include/jemalloc/internal/arena_externs.h +++ b/dep/jemalloc/include/jemalloc/internal/arena_externs.h @@ -1,8 +1,11 @@ #ifndef JEMALLOC_INTERNAL_ARENA_EXTERNS_H #define JEMALLOC_INTERNAL_ARENA_EXTERNS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_stats.h" #include "jemalloc/internal/bin.h" #include "jemalloc/internal/div.h" +#include "jemalloc/internal/emap.h" #include "jemalloc/internal/extent_dss.h" #include "jemalloc/internal/hook.h" #include "jemalloc/internal/pages.h" @@ -18,104 +21,105 @@ extern ssize_t opt_dirty_decay_ms; extern ssize_t opt_muzzy_decay_ms; extern percpu_arena_mode_t opt_percpu_arena; -extern const char *percpu_arena_mode_names[]; +extern const char *const percpu_arena_mode_names[]; extern div_info_t arena_binind_div_info[SC_NBINS]; -extern malloc_mutex_t arenas_lock; extern emap_t arena_emap_global; extern size_t opt_oversize_threshold; extern size_t oversize_threshold; +extern bool opt_huge_arena_pac_thp; +extern pac_thp_t huge_arena_pac_thp; + /* * arena_bin_offsets[binind] is the offset of the first bin shard for size class * binind. */ extern uint32_t arena_bin_offsets[SC_NBINS]; -void arena_basic_stats_merge(tsdn_t *tsdn, arena_t *arena, - unsigned *nthreads, const char **dss, ssize_t *dirty_decay_ms, - ssize_t *muzzy_decay_ms, size_t *nactive, size_t *ndirty, size_t *nmuzzy); +void arena_basic_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, + const char **dss, ssize_t *dirty_decay_ms, ssize_t *muzzy_decay_ms, + size_t *nactive, size_t *ndirty, size_t *nmuzzy); void arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, const char **dss, ssize_t *dirty_decay_ms, ssize_t *muzzy_decay_ms, size_t *nactive, size_t *ndirty, size_t *nmuzzy, arena_stats_t *astats, - bin_stats_data_t *bstats, arena_stats_large_t *lstats, - pac_estats_t *estats, hpa_shard_stats_t *hpastats, sec_stats_t *secstats); + bin_stats_data_t *bstats, arena_stats_large_t *lstats, pac_estats_t *estats, + hpa_shard_stats_t *hpastats); void arena_handle_deferred_work(tsdn_t *tsdn, arena_t *arena); -edata_t *arena_extent_alloc_large(tsdn_t *tsdn, arena_t *arena, - size_t usize, size_t alignment, bool zero); -void arena_extent_dalloc_large_prep(tsdn_t *tsdn, arena_t *arena, - edata_t *edata); -void arena_extent_ralloc_large_shrink(tsdn_t *tsdn, arena_t *arena, - edata_t *edata, size_t oldsize); -void arena_extent_ralloc_large_expand(tsdn_t *tsdn, arena_t *arena, - edata_t *edata, size_t oldsize); -bool arena_decay_ms_set(tsdn_t *tsdn, arena_t *arena, extent_state_t state, - ssize_t decay_ms); +edata_t *arena_extent_alloc_large( + tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, bool zero); +void arena_extent_dalloc_large_prep( + tsdn_t *tsdn, arena_t *arena, edata_t *edata); +void arena_extent_ralloc_large_shrink( + tsdn_t *tsdn, arena_t *arena, edata_t *edata, size_t oldusize); +void arena_extent_ralloc_large_expand( + tsdn_t *tsdn, arena_t *arena, edata_t *edata, size_t oldusize); +bool arena_decay_ms_set( + tsdn_t *tsdn, arena_t *arena, extent_state_t state, ssize_t decay_ms); ssize_t arena_decay_ms_get(arena_t *arena, extent_state_t state); -void arena_decay(tsdn_t *tsdn, arena_t *arena, bool is_background_thread, - bool all); -uint64_t arena_time_until_deferred(tsdn_t *tsdn, arena_t *arena); -void arena_do_deferred_work(tsdn_t *tsdn, arena_t *arena); -void arena_reset(tsd_t *tsd, arena_t *arena); -void arena_destroy(tsd_t *tsd, arena_t *arena); -void arena_cache_bin_fill_small(tsdn_t *tsdn, arena_t *arena, - cache_bin_t *cache_bin, cache_bin_info_t *cache_bin_info, szind_t binind, - const unsigned nfill); +void arena_decay( + tsdn_t *tsdn, arena_t *arena, bool is_background_thread, bool all); +uint64_t arena_time_until_deferred(tsdn_t *tsdn, arena_t *arena); +void arena_do_deferred_work(tsdn_t *tsdn, arena_t *arena); +void arena_reset(tsd_t *tsd, arena_t *arena); +void arena_destroy(tsd_t *tsd, arena_t *arena); +cache_bin_sz_t arena_ptr_array_fill_small(tsdn_t *tsdn, arena_t *arena, + szind_t binind, cache_bin_ptr_array_t *arr, const cache_bin_sz_t nfill_min, + const cache_bin_sz_t nfill_max, cache_bin_stats_t merge_stats); -void *arena_malloc_hard(tsdn_t *tsdn, arena_t *arena, size_t size, - szind_t ind, bool zero); -void *arena_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, - size_t alignment, bool zero, tcache_t *tcache); -void arena_prof_promote(tsdn_t *tsdn, void *ptr, size_t usize); -void arena_dalloc_promoted(tsdn_t *tsdn, void *ptr, tcache_t *tcache, - bool slow_path); +void *arena_malloc_hard(tsdn_t *tsdn, arena_t *arena, size_t size, szind_t ind, + bool zero, bool slab); +void *arena_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, + bool zero, bool slab, tcache_t *tcache); +void arena_prof_promote( + tsdn_t *tsdn, void *ptr, size_t usize, size_t bumped_usize); +void arena_dalloc_promoted( + tsdn_t *tsdn, void *ptr, tcache_t *tcache, bool slow_path); void arena_slab_dalloc(tsdn_t *tsdn, arena_t *arena, edata_t *slab); -void arena_dalloc_bin_locked_handle_newly_empty(tsdn_t *tsdn, arena_t *arena, - edata_t *slab, bin_t *bin); -void arena_dalloc_bin_locked_handle_newly_nonempty(tsdn_t *tsdn, arena_t *arena, - edata_t *slab, bin_t *bin); -void arena_dalloc_small(tsdn_t *tsdn, void *ptr); -bool arena_ralloc_no_move(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, - size_t extra, bool zero, size_t *newsize); +void arena_dalloc_small(tsdn_t *tsdn, void *ptr); +void arena_ptr_array_flush(tsd_t *tsd, szind_t binind, + cache_bin_ptr_array_t *arr, unsigned nflush, bool small, + arena_t *stats_arena, cache_bin_stats_t merge_stats); +bool arena_ralloc_no_move(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, + size_t extra, bool zero, size_t *newsize); void *arena_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t oldsize, - size_t size, size_t alignment, bool zero, tcache_t *tcache, + size_t size, size_t alignment, bool zero, bool slab, tcache_t *tcache, hook_ralloc_args_t *hook_args); -dss_prec_t arena_dss_prec_get(arena_t *arena); -ehooks_t *arena_get_ehooks(arena_t *arena); -extent_hooks_t *arena_set_extent_hooks(tsd_t *tsd, arena_t *arena, - extent_hooks_t *extent_hooks); -bool arena_dss_prec_set(arena_t *arena, dss_prec_t dss_prec); +dss_prec_t arena_dss_prec_get(arena_t *arena); +ehooks_t *arena_get_ehooks(arena_t *arena); +extent_hooks_t *arena_set_extent_hooks( + tsd_t *tsd, arena_t *arena, extent_hooks_t *extent_hooks); +bool arena_dss_prec_set(arena_t *arena, dss_prec_t dss_prec); +void arena_name_get(arena_t *arena, char *name); +void arena_name_set(arena_t *arena, const char *name); ssize_t arena_dirty_decay_ms_default_get(void); -bool arena_dirty_decay_ms_default_set(ssize_t decay_ms); +bool arena_dirty_decay_ms_default_set(ssize_t decay_ms); ssize_t arena_muzzy_decay_ms_default_get(void); -bool arena_muzzy_decay_ms_default_set(ssize_t decay_ms); -bool arena_retain_grow_limit_get_set(tsd_t *tsd, arena_t *arena, - size_t *old_limit, size_t *new_limit); +bool arena_muzzy_decay_ms_default_set(ssize_t decay_ms); +bool arena_retain_grow_limit_get_set( + tsd_t *tsd, arena_t *arena, size_t *old_limit, size_t *new_limit); unsigned arena_nthreads_get(arena_t *arena, bool internal); -void arena_nthreads_inc(arena_t *arena, bool internal); -void arena_nthreads_dec(arena_t *arena, bool internal); +void arena_nthreads_inc(arena_t *arena, bool internal); +void arena_nthreads_dec(arena_t *arena, bool internal); arena_t *arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config); -bool arena_init_huge(void); -bool arena_is_huge(unsigned arena_ind); +bool arena_init_huge(tsdn_t *tsdn, arena_t *a0); arena_t *arena_choose_huge(tsd_t *tsd); -bin_t *arena_bin_choose(tsdn_t *tsdn, arena_t *arena, szind_t binind, - unsigned *binshard); size_t arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind, void **ptrs, size_t nfill, bool zero); -bool arena_boot(sc_data_t *sc_data, base_t *base, bool hpa); -void arena_prefork0(tsdn_t *tsdn, arena_t *arena); -void arena_prefork1(tsdn_t *tsdn, arena_t *arena); -void arena_prefork2(tsdn_t *tsdn, arena_t *arena); -void arena_prefork3(tsdn_t *tsdn, arena_t *arena); -void arena_prefork4(tsdn_t *tsdn, arena_t *arena); -void arena_prefork5(tsdn_t *tsdn, arena_t *arena); -void arena_prefork6(tsdn_t *tsdn, arena_t *arena); -void arena_prefork7(tsdn_t *tsdn, arena_t *arena); -void arena_prefork8(tsdn_t *tsdn, arena_t *arena); -void arena_postfork_parent(tsdn_t *tsdn, arena_t *arena); -void arena_postfork_child(tsdn_t *tsdn, arena_t *arena); +bool arena_boot(sc_data_t *sc_data, base_t *base, bool hpa); +void arena_prefork0(tsdn_t *tsdn, arena_t *arena); +void arena_prefork1(tsdn_t *tsdn, arena_t *arena); +void arena_prefork2(tsdn_t *tsdn, arena_t *arena); +void arena_prefork3(tsdn_t *tsdn, arena_t *arena); +void arena_prefork4(tsdn_t *tsdn, arena_t *arena); +void arena_prefork5(tsdn_t *tsdn, arena_t *arena); +void arena_prefork6(tsdn_t *tsdn, arena_t *arena); +void arena_prefork7(tsdn_t *tsdn, arena_t *arena); +void arena_prefork8(tsdn_t *tsdn, arena_t *arena); +void arena_postfork_parent(tsdn_t *tsdn, arena_t *arena); +void arena_postfork_child(tsdn_t *tsdn, arena_t *arena); #endif /* JEMALLOC_INTERNAL_ARENA_EXTERNS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/arena_inlines_a.h b/dep/jemalloc/include/jemalloc/internal/arena_inlines_a.h index 8568358c7fb63..214ce80b23801 100644 --- a/dep/jemalloc/include/jemalloc/internal/arena_inlines_a.h +++ b/dep/jemalloc/include/jemalloc/internal/arena_inlines_a.h @@ -1,6 +1,9 @@ #ifndef JEMALLOC_INTERNAL_ARENA_INLINES_A_H #define JEMALLOC_INTERNAL_ARENA_INLINES_A_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_structs.h" + static inline unsigned arena_ind_get(const arena_t *arena) { return arena->ind; diff --git a/dep/jemalloc/include/jemalloc/internal/arena_inlines_b.h b/dep/jemalloc/include/jemalloc/internal/arena_inlines_b.h index fa81537c469db..bda256b997c0f 100644 --- a/dep/jemalloc/include/jemalloc/internal/arena_inlines_b.h +++ b/dep/jemalloc/include/jemalloc/internal/arena_inlines_b.h @@ -1,20 +1,29 @@ #ifndef JEMALLOC_INTERNAL_ARENA_INLINES_B_H #define JEMALLOC_INTERNAL_ARENA_INLINES_B_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_externs.h" +#include "jemalloc/internal/arena_structs.h" +#include "jemalloc/internal/bin_inlines.h" #include "jemalloc/internal/div.h" #include "jemalloc/internal/emap.h" +#include "jemalloc/internal/jemalloc_internal_inlines_b.h" #include "jemalloc/internal/jemalloc_internal_types.h" +#include "jemalloc/internal/large_externs.h" #include "jemalloc/internal/mutex.h" +#include "jemalloc/internal/prof_externs.h" +#include "jemalloc/internal/prof_structs.h" #include "jemalloc/internal/rtree.h" #include "jemalloc/internal/safety_check.h" #include "jemalloc/internal/sc.h" #include "jemalloc/internal/sz.h" +#include "jemalloc/internal/tcache_inlines.h" #include "jemalloc/internal/ticker.h" static inline arena_t * arena_get_from_edata(edata_t *edata) { - return (arena_t *)atomic_load_p(&arenas[edata_arena_ind_get(edata)], - ATOMIC_RELAXED); + return (arena_t *)atomic_load_p( + &arenas[edata_arena_ind_get(edata)], ATOMIC_RELAXED); } JEMALLOC_ALWAYS_INLINE arena_t * @@ -28,14 +37,48 @@ arena_choose_maybe_huge(tsd_t *tsd, arena_t *arena, size_t size) { * 1) is using auto arena selection (i.e. arena == NULL), and 2) the * thread is not assigned to a manual arena. */ - if (unlikely(size >= oversize_threshold)) { - arena_t *tsd_arena = tsd_arena_get(tsd); - if (tsd_arena == NULL || arena_is_auto(tsd_arena)) { - return arena_choose_huge(tsd); - } + arena_t *tsd_arena = tsd_arena_get(tsd); + if (tsd_arena == NULL) { + tsd_arena = arena_choose(tsd, NULL); + } + + size_t threshold = atomic_load_zu( + &tsd_arena->pa_shard.pac.oversize_threshold, ATOMIC_RELAXED); + if (unlikely(size >= threshold) && arena_is_auto(tsd_arena)) { + return arena_choose_huge(tsd); } - return arena_choose(tsd, NULL); + return tsd_arena; +} + +JEMALLOC_ALWAYS_INLINE bool +large_dalloc_safety_checks(edata_t *edata, const void *ptr, size_t input_size) { + if (!config_opt_safety_checks) { + return false; + } + + /* + * Eagerly detect double free and sized dealloc bugs for large sizes. + * The cost is low enough (as edata will be accessed anyway) to be + * enabled all the time. + */ + if (unlikely(edata == NULL + || edata_state_get(edata) != extent_state_active)) { + safety_check_fail( + "Invalid deallocation detected: " + "pages being freed (%p) not currently active, " + "possibly caused by double free bugs.", + ptr); + return true; + } + if (unlikely(input_size != edata_usize_get(edata) + || input_size > SC_LARGE_MAXCLASS)) { + safety_check_fail_sized_dealloc(/* current_dealloc */ true, ptr, + /* true_size */ edata_usize_get(edata), input_size); + return true; + } + + return false; } JEMALLOC_ALWAYS_INLINE void @@ -46,48 +89,56 @@ arena_prof_info_get(tsd_t *tsd, const void *ptr, emap_alloc_ctx_t *alloc_ctx, assert(prof_info != NULL); edata_t *edata = NULL; - bool is_slab; + bool is_slab; /* Static check. */ if (alloc_ctx == NULL) { - edata = emap_edata_lookup(tsd_tsdn(tsd), &arena_emap_global, - ptr); + edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); is_slab = edata_slab_get(edata); } else if (unlikely(!(is_slab = alloc_ctx->slab))) { - edata = emap_edata_lookup(tsd_tsdn(tsd), &arena_emap_global, - ptr); + edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); } if (unlikely(!is_slab)) { /* edata must have been initialized at this point. */ assert(edata != NULL); + size_t usize = (alloc_ctx == NULL) + ? edata_usize_get(edata) + : emap_alloc_ctx_usize_get(alloc_ctx); + if (reset_recent + && large_dalloc_safety_checks(edata, ptr, usize)) { + prof_info->alloc_tctx = PROF_TCTX_SENTINEL; + return; + } large_prof_info_get(tsd, edata, prof_info, reset_recent); } else { - prof_info->alloc_tctx = (prof_tctx_t *)(uintptr_t)1U; + prof_info->alloc_tctx = PROF_TCTX_SENTINEL; /* * No need to set other fields in prof_info; they will never be - * accessed if (uintptr_t)alloc_tctx == (uintptr_t)1U. + * accessed if alloc_tctx == PROF_TCTX_SENTINEL. */ } } JEMALLOC_ALWAYS_INLINE void -arena_prof_tctx_reset(tsd_t *tsd, const void *ptr, - emap_alloc_ctx_t *alloc_ctx) { +arena_prof_tctx_reset( + tsd_t *tsd, const void *ptr, emap_alloc_ctx_t *alloc_ctx) { cassert(config_prof); assert(ptr != NULL); /* Static check. */ if (alloc_ctx == NULL) { - edata_t *edata = emap_edata_lookup(tsd_tsdn(tsd), - &arena_emap_global, ptr); + edata_t *edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); if (unlikely(!edata_slab_get(edata))) { large_prof_tctx_reset(edata); } } else { if (unlikely(!alloc_ctx->slab)) { - edata_t *edata = emap_edata_lookup(tsd_tsdn(tsd), - &arena_emap_global, ptr); + edata_t *edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); large_prof_tctx_reset(edata); } } @@ -98,16 +149,16 @@ arena_prof_tctx_reset_sampled(tsd_t *tsd, const void *ptr) { cassert(config_prof); assert(ptr != NULL); - edata_t *edata = emap_edata_lookup(tsd_tsdn(tsd), &arena_emap_global, - ptr); + edata_t *edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); assert(!edata_slab_get(edata)); large_prof_tctx_reset(edata); } JEMALLOC_ALWAYS_INLINE void -arena_prof_info_set(tsd_t *tsd, edata_t *edata, prof_tctx_t *tctx, - size_t size) { +arena_prof_info_set( + tsd_t *tsd, edata_t *edata, prof_tctx_t *tctx, size_t size) { cassert(config_prof); assert(!edata_slab_get(edata)); @@ -130,8 +181,9 @@ arena_decay_ticks(tsdn_t *tsdn, arena_t *arena, unsigned nticks) { * use a single ticker for all of them. */ ticker_geom_t *decay_ticker = tsd_arena_decay_tickerp_get(tsd); - uint64_t *prng_state = tsd_prng_statep_get(tsd); - if (unlikely(ticker_geom_ticks(decay_ticker, prng_state, nticks))) { + uint64_t *prng_state = tsd_prng_statep_get(tsd); + if (unlikely(ticker_geom_ticks(decay_ticker, prng_state, nticks, + tsd_reentrancy_level_get(tsd) > 0))) { arena_decay(tsdn, arena, false, false); } } @@ -143,23 +195,24 @@ arena_decay_tick(tsdn_t *tsdn, arena_t *arena) { JEMALLOC_ALWAYS_INLINE void * arena_malloc(tsdn_t *tsdn, arena_t *arena, size_t size, szind_t ind, bool zero, - tcache_t *tcache, bool slow_path) { + bool slab, tcache_t *tcache, bool slow_path) { assert(!tsdn_null(tsdn) || tcache == NULL); if (likely(tcache != NULL)) { - if (likely(size <= SC_SMALL_MAXCLASS)) { - return tcache_alloc_small(tsdn_tsd(tsdn), arena, - tcache, size, ind, zero, slow_path); - } - if (likely(size <= tcache_maxclass)) { - return tcache_alloc_large(tsdn_tsd(tsdn), arena, - tcache, size, ind, zero, slow_path); + if (likely(slab)) { + assert(sz_can_use_slab(size)); + return tcache_alloc_small(tsdn_tsd(tsdn), arena, tcache, + size, ind, zero, slow_path); + } else if (likely(ind < tcache_nbins_get(tcache->tcache_slow) + && !tcache_bin_disabled(ind, &tcache->bins[ind], + tcache->tcache_slow))) { + return tcache_alloc_large(tsdn_tsd(tsdn), arena, tcache, + size, ind, zero, slow_path); } - /* (size > tcache_maxclass) case falls through. */ - assert(size > tcache_maxclass); + /* (size > tcache_max) case falls through. */ } - return arena_malloc_hard(tsdn, arena, size, ind, zero); + return arena_malloc_hard(tsdn, arena, size, ind, zero, slab); } JEMALLOC_ALWAYS_INLINE arena_t * @@ -176,7 +229,7 @@ arena_salloc(tsdn_t *tsdn, const void *ptr) { emap_alloc_ctx_lookup(tsdn, &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind != SC_NSIZES); - return sz_index2size(alloc_ctx.szind); + return emap_alloc_ctx_usize_get(&alloc_ctx); } JEMALLOC_ALWAYS_INLINE size_t @@ -191,8 +244,8 @@ arena_vsalloc(tsdn_t *tsdn, const void *ptr) { */ emap_full_alloc_ctx_t full_alloc_ctx; - bool missing = emap_full_alloc_ctx_try_lookup(tsdn, &arena_emap_global, - ptr, &full_alloc_ctx); + bool missing = emap_full_alloc_ctx_try_lookup( + tsdn, &arena_emap_global, ptr, &full_alloc_ctx); if (missing) { return 0; } @@ -207,46 +260,24 @@ arena_vsalloc(tsdn_t *tsdn, const void *ptr) { assert(full_alloc_ctx.szind != SC_NSIZES); - return sz_index2size(full_alloc_ctx.szind); + return edata_usize_get(full_alloc_ctx.edata); } -JEMALLOC_ALWAYS_INLINE bool -large_dalloc_safety_checks(edata_t *edata, void *ptr, szind_t szind) { - if (!config_opt_safety_checks) { - return false; - } - +static inline void +arena_dalloc_large_no_tcache( + tsdn_t *tsdn, void *ptr, szind_t szind, size_t usize) { /* - * Eagerly detect double free and sized dealloc bugs for large sizes. - * The cost is low enough (as edata will be accessed anyway) to be - * enabled all the time. + * szind is still needed in this function mainly becuase + * szind < SC_NBINS determines not only if this is a small alloc, + * but also if szind is valid (an inactive extent would have + * szind == SC_NSIZES). */ - if (unlikely(edata == NULL || - edata_state_get(edata) != extent_state_active)) { - safety_check_fail("Invalid deallocation detected: " - "pages being freed (%p) not currently active, " - "possibly caused by double free bugs.", - (uintptr_t)edata_addr_get(edata)); - return true; - } - size_t input_size = sz_index2size(szind); - if (unlikely(input_size != edata_usize_get(edata))) { - safety_check_fail_sized_dealloc(/* current_dealloc */ true, ptr, - /* true_size */ edata_usize_get(edata), input_size); - return true; - } - - return false; -} - -static inline void -arena_dalloc_large_no_tcache(tsdn_t *tsdn, void *ptr, szind_t szind) { if (config_prof && unlikely(szind < SC_NBINS)) { arena_dalloc_promoted(tsdn, ptr, NULL, true); } else { - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, - ptr); - if (large_dalloc_safety_checks(edata, ptr, szind)) { + edata_t *edata = emap_edata_lookup( + tsdn, &arena_emap_global, ptr); + if (large_dalloc_safety_checks(edata, ptr, usize)) { /* See the comment in isfree. */ return; } @@ -262,40 +293,74 @@ arena_dalloc_no_tcache(tsdn_t *tsdn, void *ptr) { emap_alloc_ctx_lookup(tsdn, &arena_emap_global, ptr, &alloc_ctx); if (config_debug) { - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, - ptr); + edata_t *edata = emap_edata_lookup( + tsdn, &arena_emap_global, ptr); assert(alloc_ctx.szind == edata_szind_get(edata)); assert(alloc_ctx.szind < SC_NSIZES); assert(alloc_ctx.slab == edata_slab_get(edata)); + assert(emap_alloc_ctx_usize_get(&alloc_ctx) + == edata_usize_get(edata)); } if (likely(alloc_ctx.slab)) { /* Small allocation. */ arena_dalloc_small(tsdn, ptr); } else { - arena_dalloc_large_no_tcache(tsdn, ptr, alloc_ctx.szind); + arena_dalloc_large_no_tcache(tsdn, ptr, alloc_ctx.szind, + emap_alloc_ctx_usize_get(&alloc_ctx)); } } JEMALLOC_ALWAYS_INLINE void arena_dalloc_large(tsdn_t *tsdn, void *ptr, tcache_t *tcache, szind_t szind, - bool slow_path) { - if (szind < nhbins) { - if (config_prof && unlikely(szind < SC_NBINS)) { - arena_dalloc_promoted(tsdn, ptr, tcache, slow_path); + size_t usize, bool slow_path) { + assert(!tsdn_null(tsdn) && tcache != NULL); + bool is_sample_promoted = config_prof && szind < SC_NBINS; + if (unlikely(is_sample_promoted)) { + arena_dalloc_promoted(tsdn, ptr, tcache, slow_path); + } else { + if (szind < tcache_nbins_get(tcache->tcache_slow) + && !tcache_bin_disabled( + szind, &tcache->bins[szind], tcache->tcache_slow)) { + tcache_dalloc_large( + tsdn_tsd(tsdn), tcache, ptr, szind, slow_path); } else { - tcache_dalloc_large(tsdn_tsd(tsdn), tcache, ptr, szind, - slow_path); + edata_t *edata = emap_edata_lookup( + tsdn, &arena_emap_global, ptr); + if (large_dalloc_safety_checks(edata, ptr, usize)) { + /* See the comment in isfree. */ + return; + } + large_dalloc(tsdn, edata); } - } else { - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, + } +} + +JEMALLOC_ALWAYS_INLINE bool +arena_tcache_dalloc_small_safety_check(tsdn_t *tsdn, void *ptr) { + if (!config_debug) { + return false; + } + edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); + szind_t binind = edata_szind_get(edata); + div_info_t div_info = arena_binind_div_info[binind]; + /* + * Calls the internal function bin_slab_regind_impl because the + * safety check does not require a lock. + */ + size_t regind = bin_slab_regind_impl(&div_info, binind, edata, ptr); + slab_data_t *slab_data = edata_slab_data_get(edata); + const bin_info_t *bin_info = &bin_infos[binind]; + assert(edata_nfree_get(edata) < bin_info->nregs); + if (unlikely(!bitmap_get( + slab_data->bitmap, &bin_info->bitmap_info, regind))) { + safety_check_fail( + "Invalid deallocation detected: the pointer being freed (%p) not " + "currently active, possibly caused by double free bugs.\n", ptr); - if (large_dalloc_safety_checks(edata, ptr, szind)) { - /* See the comment in isfree. */ - return; - } - large_dalloc(tsdn, edata); + return true; } + return false; } JEMALLOC_ALWAYS_INLINE void @@ -313,26 +378,31 @@ arena_dalloc(tsdn_t *tsdn, void *ptr, tcache_t *tcache, if (caller_alloc_ctx != NULL) { alloc_ctx = *caller_alloc_ctx; } else { - util_assume(!tsdn_null(tsdn)); - emap_alloc_ctx_lookup(tsdn, &arena_emap_global, ptr, - &alloc_ctx); + util_assume(tsdn != NULL); + emap_alloc_ctx_lookup( + tsdn, &arena_emap_global, ptr, &alloc_ctx); } if (config_debug) { - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, - ptr); + edata_t *edata = emap_edata_lookup( + tsdn, &arena_emap_global, ptr); assert(alloc_ctx.szind == edata_szind_get(edata)); assert(alloc_ctx.szind < SC_NSIZES); assert(alloc_ctx.slab == edata_slab_get(edata)); + assert(emap_alloc_ctx_usize_get(&alloc_ctx) + == edata_usize_get(edata)); } if (likely(alloc_ctx.slab)) { /* Small allocation. */ - tcache_dalloc_small(tsdn_tsd(tsdn), tcache, ptr, - alloc_ctx.szind, slow_path); + if (arena_tcache_dalloc_small_safety_check(tsdn, ptr)) { + return; + } + tcache_dalloc_small( + tsdn_tsd(tsdn), tcache, ptr, alloc_ctx.szind, slow_path); } else { arena_dalloc_large(tsdn, ptr, tcache, alloc_ctx.szind, - slow_path); + emap_alloc_ctx_usize_get(&alloc_ctx), slow_path); } } @@ -347,21 +417,22 @@ arena_sdalloc_no_tcache(tsdn_t *tsdn, void *ptr, size_t size) { * There is no risk of being confused by a promoted sampled * object, so base szind and slab on the given size. */ - alloc_ctx.szind = sz_size2index(size); - alloc_ctx.slab = (alloc_ctx.szind < SC_NBINS); + szind_t szind = sz_size2index(size); + emap_alloc_ctx_init( + &alloc_ctx, szind, (szind < SC_NBINS), size); } if ((config_prof && opt_prof) || config_debug) { - emap_alloc_ctx_lookup(tsdn, &arena_emap_global, ptr, - &alloc_ctx); + emap_alloc_ctx_lookup( + tsdn, &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind == sz_size2index(size)); assert((config_prof && opt_prof) || alloc_ctx.slab == (alloc_ctx.szind < SC_NBINS)); if (config_debug) { - edata_t *edata = emap_edata_lookup(tsdn, - &arena_emap_global, ptr); + edata_t *edata = emap_edata_lookup( + tsdn, &arena_emap_global, ptr); assert(alloc_ctx.szind == edata_szind_get(edata)); assert(alloc_ctx.slab == edata_slab_get(edata)); } @@ -371,7 +442,8 @@ arena_sdalloc_no_tcache(tsdn_t *tsdn, void *ptr, size_t size) { /* Small allocation. */ arena_dalloc_small(tsdn, ptr); } else { - arena_dalloc_large_no_tcache(tsdn, ptr, alloc_ctx.szind); + arena_dalloc_large_no_tcache(tsdn, ptr, alloc_ctx.szind, + emap_alloc_ctx_usize_get(&alloc_ctx)); } } @@ -391,9 +463,10 @@ arena_sdalloc(tsdn_t *tsdn, void *ptr, size_t size, tcache_t *tcache, if (config_prof && opt_prof) { if (caller_alloc_ctx == NULL) { /* Uncommon case and should be a static check. */ - emap_alloc_ctx_lookup(tsdn, &arena_emap_global, ptr, - &alloc_ctx); + emap_alloc_ctx_lookup( + tsdn, &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind == sz_size2index(size)); + assert(emap_alloc_ctx_usize_get(&alloc_ctx) == size); } else { alloc_ctx = *caller_alloc_ctx; } @@ -407,30 +480,37 @@ arena_sdalloc(tsdn_t *tsdn, void *ptr, size_t size, tcache_t *tcache, } if (config_debug) { - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, - ptr); + edata_t *edata = emap_edata_lookup( + tsdn, &arena_emap_global, ptr); assert(alloc_ctx.szind == edata_szind_get(edata)); assert(alloc_ctx.slab == edata_slab_get(edata)); + emap_alloc_ctx_init( + &alloc_ctx, alloc_ctx.szind, alloc_ctx.slab, sz_s2u(size)); + assert(emap_alloc_ctx_usize_get(&alloc_ctx) + == edata_usize_get(edata)); } if (likely(alloc_ctx.slab)) { /* Small allocation. */ - tcache_dalloc_small(tsdn_tsd(tsdn), tcache, ptr, - alloc_ctx.szind, slow_path); + if (arena_tcache_dalloc_small_safety_check(tsdn, ptr)) { + return; + } + tcache_dalloc_small( + tsdn_tsd(tsdn), tcache, ptr, alloc_ctx.szind, slow_path); } else { arena_dalloc_large(tsdn, ptr, tcache, alloc_ctx.szind, - slow_path); + sz_s2u(size), slow_path); } } static inline void -arena_cache_oblivious_randomize(tsdn_t *tsdn, arena_t *arena, edata_t *edata, - size_t alignment) { +arena_cache_oblivious_randomize( + tsdn_t *tsdn, arena_t *arena, edata_t *edata, size_t alignment) { assert(edata_base_get(edata) == edata_addr_get(edata)); if (alignment < PAGE) { - unsigned lg_range = LG_PAGE - - lg_floor(CACHELINE_CEILING(alignment)); + unsigned lg_range = LG_PAGE + - lg_floor(CACHELINE_CEILING(alignment)); size_t r; if (!tsdn_null(tsdn)) { tsd_t *tsd = tsdn_tsd(tsdn); @@ -440,110 +520,18 @@ arena_cache_oblivious_randomize(tsdn_t *tsdn, arena_t *arena, edata_t *edata, uint64_t stack_value = (uint64_t)(uintptr_t)&r; r = (size_t)prng_lg_range_u64(&stack_value, lg_range); } - uintptr_t random_offset = ((uintptr_t)r) << (LG_PAGE - - lg_range); - edata->e_addr = (void *)((uintptr_t)edata->e_addr + - random_offset); - assert(ALIGNMENT_ADDR2BASE(edata->e_addr, alignment) == - edata->e_addr); - } -} - -/* - * The dalloc bin info contains just the information that the common paths need - * during tcache flushes. By force-inlining these paths, and using local copies - * of data (so that the compiler knows it's constant), we avoid a whole bunch of - * redundant loads and stores by leaving this information in registers. - */ -typedef struct arena_dalloc_bin_locked_info_s arena_dalloc_bin_locked_info_t; -struct arena_dalloc_bin_locked_info_s { - div_info_t div_info; - uint32_t nregs; - uint64_t ndalloc; -}; - -JEMALLOC_ALWAYS_INLINE size_t -arena_slab_regind(arena_dalloc_bin_locked_info_t *info, szind_t binind, - edata_t *slab, const void *ptr) { - size_t diff, regind; - - /* Freeing a pointer outside the slab can cause assertion failure. */ - assert((uintptr_t)ptr >= (uintptr_t)edata_addr_get(slab)); - assert((uintptr_t)ptr < (uintptr_t)edata_past_get(slab)); - /* Freeing an interior pointer can cause assertion failure. */ - assert(((uintptr_t)ptr - (uintptr_t)edata_addr_get(slab)) % - (uintptr_t)bin_infos[binind].reg_size == 0); - - diff = (size_t)((uintptr_t)ptr - (uintptr_t)edata_addr_get(slab)); - - /* Avoid doing division with a variable divisor. */ - regind = div_compute(&info->div_info, diff); - - assert(regind < bin_infos[binind].nregs); - - return regind; -} - -JEMALLOC_ALWAYS_INLINE void -arena_dalloc_bin_locked_begin(arena_dalloc_bin_locked_info_t *info, - szind_t binind) { - info->div_info = arena_binind_div_info[binind]; - info->nregs = bin_infos[binind].nregs; - info->ndalloc = 0; -} - -/* - * Does the deallocation work associated with freeing a single pointer (a - * "step") in between a arena_dalloc_bin_locked begin and end call. - * - * Returns true if arena_slab_dalloc must be called on slab. Doesn't do - * stats updates, which happen during finish (this lets running counts get left - * in a register). - */ -JEMALLOC_ALWAYS_INLINE bool -arena_dalloc_bin_locked_step(tsdn_t *tsdn, arena_t *arena, bin_t *bin, - arena_dalloc_bin_locked_info_t *info, szind_t binind, edata_t *slab, - void *ptr) { - const bin_info_t *bin_info = &bin_infos[binind]; - size_t regind = arena_slab_regind(info, binind, slab, ptr); - slab_data_t *slab_data = edata_slab_data_get(slab); - - assert(edata_nfree_get(slab) < bin_info->nregs); - /* Freeing an unallocated pointer can cause assertion failure. */ - assert(bitmap_get(slab_data->bitmap, &bin_info->bitmap_info, regind)); - - bitmap_unset(slab_data->bitmap, &bin_info->bitmap_info, regind); - edata_nfree_inc(slab); - - if (config_stats) { - info->ndalloc++; - } - - unsigned nfree = edata_nfree_get(slab); - if (nfree == bin_info->nregs) { - arena_dalloc_bin_locked_handle_newly_empty(tsdn, arena, slab, - bin); - return true; - } else if (nfree == 1 && slab != bin->slabcur) { - arena_dalloc_bin_locked_handle_newly_nonempty(tsdn, arena, slab, - bin); - } - return false; -} - -JEMALLOC_ALWAYS_INLINE void -arena_dalloc_bin_locked_finish(tsdn_t *tsdn, arena_t *arena, bin_t *bin, - arena_dalloc_bin_locked_info_t *info) { - if (config_stats) { - bin->stats.ndalloc += info->ndalloc; - assert(bin->stats.curregs >= (size_t)info->ndalloc); - bin->stats.curregs -= (size_t)info->ndalloc; + uintptr_t random_offset = ((uintptr_t)r) + << (LG_PAGE - lg_range); + edata->e_addr = (void *)((byte_t *)edata->e_addr + + random_offset); + assert(ALIGNMENT_ADDR2BASE(edata->e_addr, alignment) + == edata->e_addr); } } static inline bin_t * arena_get_bin(arena_t *arena, szind_t binind, unsigned binshard) { - bin_t *shard0 = (bin_t *)((uintptr_t)arena + arena_bin_offsets[binind]); + bin_t *shard0 = (bin_t *)((byte_t *)arena + arena_bin_offsets[binind]); return shard0 + binshard; } diff --git a/dep/jemalloc/include/jemalloc/internal/arena_stats.h b/dep/jemalloc/include/jemalloc/internal/arena_stats.h index 15f1d345f9e8c..01012f68d740f 100644 --- a/dep/jemalloc/include/jemalloc/internal/arena_stats.h +++ b/dep/jemalloc/include/jemalloc/internal/arena_stats.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_ARENA_STATS_H #define JEMALLOC_INTERNAL_ARENA_STATS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/lockedint.h" #include "jemalloc/internal/mutex.h" @@ -13,28 +14,34 @@ JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS typedef struct arena_stats_large_s arena_stats_large_t; struct arena_stats_large_s { /* - * Total number of allocation/deallocation requests served directly by - * the arena. + * Total number of large allocation/deallocation requests served directly + * by the arena. */ - locked_u64_t nmalloc; - locked_u64_t ndalloc; + locked_u64_t nmalloc; + locked_u64_t ndalloc; + + /* + * Total large active bytes (allocated - deallocated) served directly + * by the arena. + */ + locked_u64_t active_bytes; /* * Number of allocation requests that correspond to this size class. * This includes requests served by tcache, though tcache only * periodically merges into this counter. */ - locked_u64_t nrequests; /* Partially derived. */ + locked_u64_t nrequests; /* Partially derived. */ /* * Number of tcache fills / flushes for large (similarly, periodically * merged). Note that there is no large tcache batch-fill currently * (i.e. only fill 1 at a time); however flush may be batched. */ - locked_u64_t nfills; /* Partially derived. */ - locked_u64_t nflushes; /* Partially derived. */ + locked_u64_t nfills; /* Partially derived. */ + locked_u64_t nflushes; /* Partially derived. */ /* Current number of allocations of this size class. */ - size_t curlextents; /* Derived. */ + size_t curlextents; /* Derived. */ }; /* @@ -50,38 +57,40 @@ struct arena_stats_s { * resident includes the base stats -- that's why it lives here and not * in pa_shard_stats_t. */ - size_t base; /* Derived. */ - size_t resident; /* Derived. */ - size_t metadata_thp; /* Derived. */ - size_t mapped; /* Derived. */ - - atomic_zu_t internal; - - size_t allocated_large; /* Derived. */ - uint64_t nmalloc_large; /* Derived. */ - uint64_t ndalloc_large; /* Derived. */ - uint64_t nfills_large; /* Derived. */ - uint64_t nflushes_large; /* Derived. */ - uint64_t nrequests_large; /* Derived. */ + size_t base; /* Derived. */ + size_t metadata_edata; /* Derived. */ + size_t metadata_rtree; /* Derived. */ + size_t resident; /* Derived. */ + size_t metadata_thp; /* Derived. */ + size_t mapped; /* Derived. */ + + atomic_zu_t internal; + + size_t allocated_large; /* Derived. */ + uint64_t nmalloc_large; /* Derived. */ + uint64_t ndalloc_large; /* Derived. */ + uint64_t nfills_large; /* Derived. */ + uint64_t nflushes_large; /* Derived. */ + uint64_t nrequests_large; /* Derived. */ /* * The stats logically owned by the pa_shard in the same arena. This * lives here only because it's convenient for the purposes of the ctl * module -- it only knows about the single arena_stats. */ - pa_shard_stats_t pa_shard_stats; + pa_shard_stats_t pa_shard_stats; /* Number of bytes cached in tcache associated with this arena. */ - size_t tcache_bytes; /* Derived. */ - size_t tcache_stashed_bytes; /* Derived. */ + size_t tcache_bytes; /* Derived. */ + size_t tcache_stashed_bytes; /* Derived. */ mutex_prof_data_t mutex_prof_data[mutex_prof_num_arena_mutexes]; /* One element for each large size class. */ - arena_stats_large_t lstats[SC_NSIZES - SC_NBINS]; + arena_stats_large_t lstats[SC_NSIZES - SC_NBINS]; /* Arena uptime. */ - nstime_t uptime; + nstime_t uptime; }; static inline bool @@ -92,7 +101,7 @@ arena_stats_init(tsdn_t *tsdn, arena_stats_t *arena_stats) { } } if (LOCKEDINT_MTX_INIT(arena_stats->mtx, "arena_stats", - WITNESS_RANK_ARENA_STATS, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_ARENA_STATS, malloc_mutex_rank_exclusive)) { return true; } /* Memory is zeroed, so there is no need to clear stats. */ @@ -106,8 +115,8 @@ arena_stats_large_flush_nrequests_add(tsdn_t *tsdn, arena_stats_t *arena_stats, arena_stats_large_t *lstats = &arena_stats->lstats[szind - SC_NBINS]; locked_inc_u64(tsdn, LOCKEDINT_MTX(arena_stats->mtx), &lstats->nrequests, nrequests); - locked_inc_u64(tsdn, LOCKEDINT_MTX(arena_stats->mtx), - &lstats->nflushes, 1); + locked_inc_u64( + tsdn, LOCKEDINT_MTX(arena_stats->mtx), &lstats->nflushes, 1); LOCKEDINT_MTX_UNLOCK(tsdn, arena_stats->mtx); } diff --git a/dep/jemalloc/include/jemalloc/internal/arena_structs.h b/dep/jemalloc/include/jemalloc/internal/arena_structs.h index e2a5a4087bcc9..471f769209424 100644 --- a/dep/jemalloc/include/jemalloc/internal/arena_structs.h +++ b/dep/jemalloc/include/jemalloc/internal/arena_structs.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_ARENA_STRUCTS_H #define JEMALLOC_INTERNAL_ARENA_STRUCTS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/arena_stats.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/bin.h" @@ -31,20 +32,20 @@ struct arena_s { * * Synchronization: atomic. */ - atomic_u_t nthreads[2]; + atomic_u_t nthreads[2]; /* Next bin shard for binding new threads. Synchronization: atomic. */ - atomic_u_t binshard_next; + atomic_u_t binshard_next; /* * When percpu_arena is enabled, to amortize the cost of reading / * updating the current CPU id, track the most recent thread accessing * this arena, and only read CPU if there is a mismatch. */ - tsdn_t *last_thd; + tsdn_t *last_thd; /* Synchronization: internal. */ - arena_stats_t stats; + arena_stats_t stats; /* * Lists of tcaches and cache_bin_array_descriptors for extant threads @@ -53,28 +54,28 @@ struct arena_s { * * Synchronization: tcache_ql_mtx. */ - ql_head(tcache_slow_t) tcache_ql; - ql_head(cache_bin_array_descriptor_t) cache_bin_array_descriptor_ql; - malloc_mutex_t tcache_ql_mtx; + ql_head(tcache_slow_t) tcache_ql; + ql_head(cache_bin_array_descriptor_t) cache_bin_array_descriptor_ql; + malloc_mutex_t tcache_ql_mtx; /* * Represents a dss_prec_t, but atomically. * * Synchronization: atomic. */ - atomic_u_t dss_prec; + atomic_u_t dss_prec; /* * Extant large allocations. * * Synchronization: large_mtx. */ - edata_list_active_t large; + edata_list_active_t large; /* Synchronizes all large allocation/update/deallocation. */ - malloc_mutex_t large_mtx; + malloc_mutex_t large_mtx; /* The page-level allocator shard this arena uses. */ - pa_shard_t pa_shard; + pa_shard_t pa_shard; /* * A cached copy of base->ind. This can get accessed on hot paths; @@ -87,15 +88,24 @@ struct arena_s { * * Synchronization: internal. */ - base_t *base; + base_t *base; /* Used to determine uptime. Read-only after initialization. */ - nstime_t create_time; + nstime_t create_time; + + /* The name of the arena. */ + char name[ARENA_NAME_LEN]; /* * The arena is allocated alongside its bins; really this is a * dynamically sized array determined by the binshard settings. + * Enforcing cacheline-alignment to minimize the number of cachelines + * touched on the hot paths. */ - bin_t bins[0]; + JEMALLOC_WARN_ON_USAGE( + "Do not use this field directly. " + "Use `arena_get_bin` instead.") + JEMALLOC_ALIGNED(CACHELINE) + bin_t all_bins[0]; }; #endif /* JEMALLOC_INTERNAL_ARENA_STRUCTS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/arena_types.h b/dep/jemalloc/include/jemalloc/internal/arena_types.h index d0e1291762a6e..c586164f3a6c5 100644 --- a/dep/jemalloc/include/jemalloc/internal/arena_types.h +++ b/dep/jemalloc/include/jemalloc/internal/arena_types.h @@ -1,39 +1,41 @@ #ifndef JEMALLOC_INTERNAL_ARENA_TYPES_H #define JEMALLOC_INTERNAL_ARENA_TYPES_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/sc.h" /* Default decay times in milliseconds. */ -#define DIRTY_DECAY_MS_DEFAULT ZD(10 * 1000) -#define MUZZY_DECAY_MS_DEFAULT (0) +#define DIRTY_DECAY_MS_DEFAULT ZD(10 * 1000) +#define MUZZY_DECAY_MS_DEFAULT (0) /* Number of event ticks between time checks. */ -#define ARENA_DECAY_NTICKS_PER_UPDATE 1000 +#define ARENA_DECAY_NTICKS_PER_UPDATE 1000 +/* Maximum length of the arena name. */ +#define ARENA_NAME_LEN 32 -typedef struct arena_decay_s arena_decay_t; typedef struct arena_s arena_t; typedef enum { - percpu_arena_mode_names_base = 0, /* Used for options processing. */ + percpu_arena_mode_names_base = 0, /* Used for options processing. */ /* * *_uninit are used only during bootstrapping, and must correspond * to initialized variant plus percpu_arena_mode_enabled_base. */ - percpu_arena_uninit = 0, - per_phycpu_arena_uninit = 1, + percpu_arena_uninit = 0, + per_phycpu_arena_uninit = 1, /* All non-disabled modes must come after percpu_arena_disabled. */ - percpu_arena_disabled = 2, + percpu_arena_disabled = 2, - percpu_arena_mode_names_limit = 3, /* Used for options processing. */ + percpu_arena_mode_names_limit = 3, /* Used for options processing. */ percpu_arena_mode_enabled_base = 3, - percpu_arena = 3, - per_phycpu_arena = 4 /* Hyper threads share arena. */ + percpu_arena = 3, + per_phycpu_arena = 4 /* Hyper threads share arena. */ } percpu_arena_mode_t; -#define PERCPU_ARENA_ENABLED(m) ((m) >= percpu_arena_mode_enabled_base) -#define PERCPU_ARENA_DEFAULT percpu_arena_disabled +#define PERCPU_ARENA_ENABLED(m) ((m) >= percpu_arena_mode_enabled_base) +#define PERCPU_ARENA_DEFAULT percpu_arena_disabled /* * When allocation_size >= oversize_threshold, use the dedicated huge arena diff --git a/dep/jemalloc/include/jemalloc/internal/assert.h b/dep/jemalloc/include/jemalloc/internal/assert.h index be4d45b321302..1b5da72f09042 100644 --- a/dep/jemalloc/include/jemalloc/internal/assert.h +++ b/dep/jemalloc/include/jemalloc/internal/assert.h @@ -1,3 +1,4 @@ +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/malloc_io.h" #include "jemalloc/internal/util.h" @@ -6,51 +7,57 @@ * assertion failure. */ #ifndef assert -#define assert(e) do { \ - if (unlikely(config_debug && !(e))) { \ - malloc_printf( \ - ": %s:%d: Failed assertion: \"%s\"\n", \ - __FILE__, __LINE__, #e); \ - abort(); \ - } \ -} while (0) +# define assert(e) \ + do { \ + if (unlikely(config_debug && !(e))) { \ + malloc_printf( \ + ": %s:%d: Failed assertion: \"%s\"\n", \ + __FILE__, __LINE__, #e); \ + abort(); \ + } \ + } while (0) #endif #ifndef not_reached -#define not_reached() do { \ - if (config_debug) { \ - malloc_printf( \ - ": %s:%d: Unreachable code reached\n", \ - __FILE__, __LINE__); \ - abort(); \ - } \ - unreachable(); \ -} while (0) +# define not_reached() \ + do { \ + if (config_debug) { \ + malloc_printf( \ + ": %s:%d: Unreachable code reached\n", \ + __FILE__, __LINE__); \ + abort(); \ + } \ + unreachable(); \ + } while (0) #endif #ifndef not_implemented -#define not_implemented() do { \ - if (config_debug) { \ - malloc_printf(": %s:%d: Not implemented\n", \ - __FILE__, __LINE__); \ - abort(); \ - } \ -} while (0) +# define not_implemented() \ + do { \ + if (config_debug) { \ + malloc_printf( \ + ": %s:%d: Not implemented\n", \ + __FILE__, __LINE__); \ + abort(); \ + } \ + } while (0) #endif #ifndef assert_not_implemented -#define assert_not_implemented(e) do { \ - if (unlikely(config_debug && !(e))) { \ - not_implemented(); \ - } \ -} while (0) +# define assert_not_implemented(e) \ + do { \ + if (unlikely(config_debug && !(e))) { \ + not_implemented(); \ + } \ + } while (0) #endif /* Use to assert a particular configuration, e.g., cassert(config_debug). */ #ifndef cassert -#define cassert(c) do { \ - if (unlikely(!(c))) { \ - not_reached(); \ - } \ -} while (0) +# define cassert(c) \ + do { \ + if (unlikely(!(c))) { \ + not_reached(); \ + } \ + } while (0) #endif diff --git a/dep/jemalloc/include/jemalloc/internal/atomic.h b/dep/jemalloc/include/jemalloc/internal/atomic.h index c0f73122accd9..f80e564037a59 100644 --- a/dep/jemalloc/include/jemalloc/internal/atomic.h +++ b/dep/jemalloc/include/jemalloc/internal/atomic.h @@ -1,27 +1,29 @@ #ifndef JEMALLOC_INTERNAL_ATOMIC_H #define JEMALLOC_INTERNAL_ATOMIC_H -#define ATOMIC_INLINE JEMALLOC_ALWAYS_INLINE +#include "jemalloc/internal/jemalloc_preamble.h" #define JEMALLOC_U8_ATOMICS #if defined(JEMALLOC_GCC_ATOMIC_ATOMICS) -# include "jemalloc/internal/atomic_gcc_atomic.h" -# if !defined(JEMALLOC_GCC_U8_ATOMIC_ATOMICS) -# undef JEMALLOC_U8_ATOMICS -# endif +# include "jemalloc/internal/atomic_gcc_atomic.h" +# if !defined(JEMALLOC_GCC_U8_ATOMIC_ATOMICS) +# undef JEMALLOC_U8_ATOMICS +# endif #elif defined(JEMALLOC_GCC_SYNC_ATOMICS) -# include "jemalloc/internal/atomic_gcc_sync.h" -# if !defined(JEMALLOC_GCC_U8_SYNC_ATOMICS) -# undef JEMALLOC_U8_ATOMICS -# endif +# include "jemalloc/internal/atomic_gcc_sync.h" +# if !defined(JEMALLOC_GCC_U8_SYNC_ATOMICS) +# undef JEMALLOC_U8_ATOMICS +# endif #elif defined(_MSC_VER) -# include "jemalloc/internal/atomic_msvc.h" +# include "jemalloc/internal/atomic_msvc.h" #elif defined(JEMALLOC_C11_ATOMICS) -# include "jemalloc/internal/atomic_c11.h" +# include "jemalloc/internal/atomic_c11.h" #else -# error "Don't have atomics implemented on this platform." +# error "Don't have atomics implemented on this platform." #endif +#define ATOMIC_INLINE JEMALLOC_ALWAYS_INLINE + /* * This header gives more or less a backport of C11 atomics. The user can write * JEMALLOC_GENERATE_ATOMICS(type, short_type, lg_sizeof_type); to generate @@ -54,22 +56,19 @@ /* * Another convenience -- simple atomic helper functions. */ -#define JEMALLOC_GENERATE_EXPANDED_INT_ATOMICS(type, short_type, \ - lg_size) \ - JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, lg_size) \ - ATOMIC_INLINE void \ - atomic_load_add_store_##short_type(atomic_##short_type##_t *a, \ - type inc) { \ - type oldval = atomic_load_##short_type(a, ATOMIC_RELAXED); \ - type newval = oldval + inc; \ - atomic_store_##short_type(a, newval, ATOMIC_RELAXED); \ - } \ - ATOMIC_INLINE void \ - atomic_load_sub_store_##short_type(atomic_##short_type##_t *a, \ - type inc) { \ - type oldval = atomic_load_##short_type(a, ATOMIC_RELAXED); \ - type newval = oldval - inc; \ - atomic_store_##short_type(a, newval, ATOMIC_RELAXED); \ +#define JEMALLOC_GENERATE_EXPANDED_INT_ATOMICS(type, short_type, lg_size) \ + JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, lg_size) \ + ATOMIC_INLINE void atomic_load_add_store_##short_type( \ + atomic_##short_type##_t *a, type inc) { \ + type oldval = atomic_load_##short_type(a, ATOMIC_RELAXED); \ + type newval = oldval + inc; \ + atomic_store_##short_type(a, newval, ATOMIC_RELAXED); \ + } \ + ATOMIC_INLINE void atomic_load_sub_store_##short_type( \ + atomic_##short_type##_t *a, type inc) { \ + type oldval = atomic_load_##short_type(a, ATOMIC_RELAXED); \ + type newval = oldval - inc; \ + atomic_store_##short_type(a, newval, ATOMIC_RELAXED); \ } /* @@ -77,7 +76,7 @@ * fact. */ #if (LG_SIZEOF_PTR == 3 || LG_SIZEOF_INT == 3) -# define JEMALLOC_ATOMIC_U64 +# define JEMALLOC_ATOMIC_U64 #endif JEMALLOC_GENERATE_ATOMICS(void *, p, LG_SIZEOF_PTR) @@ -90,6 +89,8 @@ JEMALLOC_GENERATE_ATOMICS(bool, b, 0) JEMALLOC_GENERATE_EXPANDED_INT_ATOMICS(unsigned, u, LG_SIZEOF_INT) +JEMALLOC_GENERATE_EXPANDED_INT_ATOMICS(int, i, LG_SIZEOF_INT) + JEMALLOC_GENERATE_EXPANDED_INT_ATOMICS(size_t, zu, LG_SIZEOF_PTR) JEMALLOC_GENERATE_EXPANDED_INT_ATOMICS(ssize_t, zd, LG_SIZEOF_PTR) diff --git a/dep/jemalloc/include/jemalloc/internal/atomic_c11.h b/dep/jemalloc/include/jemalloc/internal/atomic_c11.h index a5f9313a619d0..1e86e2a049ec2 100644 --- a/dep/jemalloc/include/jemalloc/internal/atomic_c11.h +++ b/dep/jemalloc/include/jemalloc/internal/atomic_c11.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_ATOMIC_C11_H #define JEMALLOC_INTERNAL_ATOMIC_C11_H +#include "jemalloc/internal/jemalloc_preamble.h" #include #define ATOMIC_INIT(...) ATOMIC_VAR_INIT(__VA_ARGS__) @@ -14,6 +15,7 @@ #define atomic_fence atomic_thread_fence +/* clang-format off */ #define JEMALLOC_GENERATE_ATOMICS(type, short_type, \ /* unused */ lg_size) \ typedef _Atomic(type) atomic_##short_type##_t; \ @@ -58,40 +60,35 @@ atomic_compare_exchange_strong_##short_type(atomic_##short_type##_t *a, \ return atomic_compare_exchange_strong_explicit(a, expected, \ desired, success_mo, failure_mo); \ } +/* clang-format on */ /* * Integral types have some special operations available that non-integral ones * lack. */ -#define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, \ - /* unused */ lg_size) \ -JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ - \ -ATOMIC_INLINE type \ -atomic_fetch_add_##short_type(atomic_##short_type##_t *a, \ - type val, atomic_memory_order_t mo) { \ - return atomic_fetch_add_explicit(a, val, mo); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_sub_##short_type(atomic_##short_type##_t *a, \ - type val, atomic_memory_order_t mo) { \ - return atomic_fetch_sub_explicit(a, val, mo); \ -} \ -ATOMIC_INLINE type \ -atomic_fetch_and_##short_type(atomic_##short_type##_t *a, \ - type val, atomic_memory_order_t mo) { \ - return atomic_fetch_and_explicit(a, val, mo); \ -} \ -ATOMIC_INLINE type \ -atomic_fetch_or_##short_type(atomic_##short_type##_t *a, \ - type val, atomic_memory_order_t mo) { \ - return atomic_fetch_or_explicit(a, val, mo); \ -} \ -ATOMIC_INLINE type \ -atomic_fetch_xor_##short_type(atomic_##short_type##_t *a, \ - type val, atomic_memory_order_t mo) { \ - return atomic_fetch_xor_explicit(a, val, mo); \ -} +#define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, /* unused */ lg_size) \ + JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ + \ + ATOMIC_INLINE type atomic_fetch_add_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return atomic_fetch_add_explicit(a, val, mo); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_sub_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return atomic_fetch_sub_explicit(a, val, mo); \ + } \ + ATOMIC_INLINE type atomic_fetch_and_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return atomic_fetch_and_explicit(a, val, mo); \ + } \ + ATOMIC_INLINE type atomic_fetch_or_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return atomic_fetch_or_explicit(a, val, mo); \ + } \ + ATOMIC_INLINE type atomic_fetch_xor_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return atomic_fetch_xor_explicit(a, val, mo); \ + } #endif /* JEMALLOC_INTERNAL_ATOMIC_C11_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/atomic_gcc_atomic.h b/dep/jemalloc/include/jemalloc/internal/atomic_gcc_atomic.h index 471515e82f285..a828a6b0733ff 100644 --- a/dep/jemalloc/include/jemalloc/internal/atomic_gcc_atomic.h +++ b/dep/jemalloc/include/jemalloc/internal/atomic_gcc_atomic.h @@ -1,9 +1,13 @@ #ifndef JEMALLOC_INTERNAL_ATOMIC_GCC_ATOMIC_H #define JEMALLOC_INTERNAL_ATOMIC_GCC_ATOMIC_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/assert.h" -#define ATOMIC_INIT(...) {__VA_ARGS__} +#define ATOMIC_INLINE JEMALLOC_ALWAYS_INLINE + +#define ATOMIC_INIT(...) \ + { __VA_ARGS__ } typedef enum { atomic_memory_order_relaxed, @@ -36,94 +40,82 @@ atomic_fence(atomic_memory_order_t mo) { __atomic_thread_fence(atomic_enum_to_builtin(mo)); } -#define JEMALLOC_GENERATE_ATOMICS(type, short_type, \ - /* unused */ lg_size) \ -typedef struct { \ - type repr; \ -} atomic_##short_type##_t; \ - \ -ATOMIC_INLINE type \ -atomic_load_##short_type(const atomic_##short_type##_t *a, \ - atomic_memory_order_t mo) { \ - type result; \ - __atomic_load(&a->repr, &result, atomic_enum_to_builtin(mo)); \ - return result; \ -} \ - \ -ATOMIC_INLINE void \ -atomic_store_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - __atomic_store(&a->repr, &val, atomic_enum_to_builtin(mo)); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_exchange_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - type result; \ - __atomic_exchange(&a->repr, &val, &result, \ - atomic_enum_to_builtin(mo)); \ - return result; \ -} \ - \ -ATOMIC_INLINE bool \ -atomic_compare_exchange_weak_##short_type(atomic_##short_type##_t *a, \ - UNUSED type *expected, type desired, \ - atomic_memory_order_t success_mo, \ - atomic_memory_order_t failure_mo) { \ - return __atomic_compare_exchange(&a->repr, expected, &desired, \ - true, atomic_enum_to_builtin(success_mo), \ - atomic_enum_to_builtin(failure_mo)); \ -} \ - \ -ATOMIC_INLINE bool \ -atomic_compare_exchange_strong_##short_type(atomic_##short_type##_t *a, \ - UNUSED type *expected, type desired, \ - atomic_memory_order_t success_mo, \ - atomic_memory_order_t failure_mo) { \ - return __atomic_compare_exchange(&a->repr, expected, &desired, \ - false, \ - atomic_enum_to_builtin(success_mo), \ - atomic_enum_to_builtin(failure_mo)); \ -} +#define JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ + typedef struct { \ + type repr; \ + } atomic_##short_type##_t; \ + \ + ATOMIC_INLINE type atomic_load_##short_type( \ + const atomic_##short_type##_t *a, atomic_memory_order_t mo) { \ + type result; \ + __atomic_load(&a->repr, &result, atomic_enum_to_builtin(mo)); \ + return result; \ + } \ + \ + ATOMIC_INLINE void atomic_store_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + __atomic_store(&a->repr, &val, atomic_enum_to_builtin(mo)); \ + } \ + \ + ATOMIC_INLINE type atomic_exchange_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + type result; \ + __atomic_exchange( \ + &a->repr, &val, &result, atomic_enum_to_builtin(mo)); \ + return result; \ + } \ + \ + ATOMIC_INLINE bool atomic_compare_exchange_weak_##short_type( \ + atomic_##short_type##_t *a, UNUSED type *expected, type desired, \ + atomic_memory_order_t success_mo, \ + atomic_memory_order_t failure_mo) { \ + return __atomic_compare_exchange(&a->repr, expected, &desired, \ + true, atomic_enum_to_builtin(success_mo), \ + atomic_enum_to_builtin(failure_mo)); \ + } \ + \ + ATOMIC_INLINE bool atomic_compare_exchange_strong_##short_type( \ + atomic_##short_type##_t *a, UNUSED type *expected, type desired, \ + atomic_memory_order_t success_mo, \ + atomic_memory_order_t failure_mo) { \ + return __atomic_compare_exchange(&a->repr, expected, &desired, \ + false, atomic_enum_to_builtin(success_mo), \ + atomic_enum_to_builtin(failure_mo)); \ + } +#define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, /* unused */ lg_size) \ + JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ + \ + ATOMIC_INLINE type atomic_fetch_add_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __atomic_fetch_add( \ + &a->repr, val, atomic_enum_to_builtin(mo)); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_sub_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __atomic_fetch_sub( \ + &a->repr, val, atomic_enum_to_builtin(mo)); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_and_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __atomic_fetch_and( \ + &a->repr, val, atomic_enum_to_builtin(mo)); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_or_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __atomic_fetch_or( \ + &a->repr, val, atomic_enum_to_builtin(mo)); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_xor_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __atomic_fetch_xor( \ + &a->repr, val, atomic_enum_to_builtin(mo)); \ + } -#define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, \ - /* unused */ lg_size) \ -JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ - \ -ATOMIC_INLINE type \ -atomic_fetch_add_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __atomic_fetch_add(&a->repr, val, \ - atomic_enum_to_builtin(mo)); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_sub_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __atomic_fetch_sub(&a->repr, val, \ - atomic_enum_to_builtin(mo)); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_and_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __atomic_fetch_and(&a->repr, val, \ - atomic_enum_to_builtin(mo)); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_or_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __atomic_fetch_or(&a->repr, val, \ - atomic_enum_to_builtin(mo)); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_xor_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __atomic_fetch_xor(&a->repr, val, \ - atomic_enum_to_builtin(mo)); \ -} +#undef ATOMIC_INLINE #endif /* JEMALLOC_INTERNAL_ATOMIC_GCC_ATOMIC_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/atomic_gcc_sync.h b/dep/jemalloc/include/jemalloc/internal/atomic_gcc_sync.h index e02b7cbe3c30b..9e2ff9c88e8da 100644 --- a/dep/jemalloc/include/jemalloc/internal/atomic_gcc_sync.h +++ b/dep/jemalloc/include/jemalloc/internal/atomic_gcc_sync.h @@ -1,7 +1,12 @@ #ifndef JEMALLOC_INTERNAL_ATOMIC_GCC_SYNC_H #define JEMALLOC_INTERNAL_ATOMIC_GCC_SYNC_H -#define ATOMIC_INIT(...) {__VA_ARGS__} +#include "jemalloc/internal/jemalloc_preamble.h" + +#define ATOMIC_INLINE JEMALLOC_ALWAYS_INLINE + +#define ATOMIC_INIT(...) \ + { __VA_ARGS__ } typedef enum { atomic_memory_order_relaxed, @@ -25,13 +30,13 @@ atomic_fence(atomic_memory_order_t mo) { return; } asm volatile("" ::: "memory"); -# if defined(__i386__) || defined(__x86_64__) +#if defined(__i386__) || defined(__x86_64__) /* This is implicit on x86. */ -# elif defined(__ppc64__) +#elif defined(__ppc64__) asm volatile("lwsync"); -# elif defined(__ppc__) +#elif defined(__ppc__) asm volatile("sync"); -# elif defined(__sparc__) && defined(__arch64__) +#elif defined(__sparc__) && defined(__arch64__) if (mo == atomic_memory_order_acquire) { asm volatile("membar #LoadLoad | #LoadStore"); } else if (mo == atomic_memory_order_release) { @@ -39,9 +44,9 @@ atomic_fence(atomic_memory_order_t mo) { } else { asm volatile("membar #LoadLoad | #LoadStore | #StoreStore"); } -# else +#else __sync_synchronize(); -# endif +#endif asm volatile("" ::: "memory"); } @@ -64,25 +69,25 @@ atomic_fence(atomic_memory_order_t mo) { ATOMIC_INLINE void atomic_pre_sc_load_fence() { -# if defined(__i386__) || defined(__x86_64__) || \ - (defined(__sparc__) && defined(__arch64__)) +#if defined(__i386__) || defined(__x86_64__) \ + || (defined(__sparc__) && defined(__arch64__)) atomic_fence(atomic_memory_order_relaxed); -# else +#else atomic_fence(atomic_memory_order_seq_cst); -# endif +#endif } ATOMIC_INLINE void atomic_post_sc_store_fence() { -# if defined(__i386__) || defined(__x86_64__) || \ - (defined(__sparc__) && defined(__arch64__)) +#if defined(__i386__) || defined(__x86_64__) \ + || (defined(__sparc__) && defined(__arch64__)) atomic_fence(atomic_memory_order_seq_cst); -# else +#else atomic_fence(atomic_memory_order_relaxed); -# endif - +#endif } +/* clang-format off */ #define JEMALLOC_GENERATE_ATOMICS(type, short_type, \ /* unused */ lg_size) \ typedef struct { \ @@ -157,39 +162,36 @@ atomic_compare_exchange_strong_##short_type(atomic_##short_type##_t *a, \ return false; \ } \ } +/* clang-format on */ -#define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, \ - /* unused */ lg_size) \ -JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ - \ -ATOMIC_INLINE type \ -atomic_fetch_add_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __sync_fetch_and_add(&a->repr, val); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_sub_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __sync_fetch_and_sub(&a->repr, val); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_and_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __sync_fetch_and_and(&a->repr, val); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_or_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __sync_fetch_and_or(&a->repr, val); \ -} \ - \ -ATOMIC_INLINE type \ -atomic_fetch_xor_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return __sync_fetch_and_xor(&a->repr, val); \ -} +#define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, /* unused */ lg_size) \ + JEMALLOC_GENERATE_ATOMICS(type, short_type, /* unused */ lg_size) \ + \ + ATOMIC_INLINE type atomic_fetch_add_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __sync_fetch_and_add(&a->repr, val); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_sub_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __sync_fetch_and_sub(&a->repr, val); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_and_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __sync_fetch_and_and(&a->repr, val); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_or_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __sync_fetch_and_or(&a->repr, val); \ + } \ + \ + ATOMIC_INLINE type atomic_fetch_xor_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return __sync_fetch_and_xor(&a->repr, val); \ + } + +#undef ATOMIC_INLINE #endif /* JEMALLOC_INTERNAL_ATOMIC_GCC_SYNC_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/atomic_msvc.h b/dep/jemalloc/include/jemalloc/internal/atomic_msvc.h index 67057ce508950..7accca6352387 100644 --- a/dep/jemalloc/include/jemalloc/internal/atomic_msvc.h +++ b/dep/jemalloc/include/jemalloc/internal/atomic_msvc.h @@ -1,7 +1,12 @@ #ifndef JEMALLOC_INTERNAL_ATOMIC_MSVC_H #define JEMALLOC_INTERNAL_ATOMIC_MSVC_H -#define ATOMIC_INIT(...) {__VA_ARGS__} +#include "jemalloc/internal/jemalloc_preamble.h" + +#define ATOMIC_INLINE JEMALLOC_ALWAYS_INLINE + +#define ATOMIC_INIT(...) \ + { __VA_ARGS__ } typedef enum { atomic_memory_order_relaxed, @@ -11,109 +16,106 @@ typedef enum { atomic_memory_order_seq_cst } atomic_memory_order_t; -typedef char atomic_repr_0_t; -typedef short atomic_repr_1_t; -typedef long atomic_repr_2_t; +typedef char atomic_repr_0_t; +typedef short atomic_repr_1_t; +typedef long atomic_repr_2_t; typedef __int64 atomic_repr_3_t; ATOMIC_INLINE void atomic_fence(atomic_memory_order_t mo) { _ReadWriteBarrier(); -# if defined(_M_ARM) || defined(_M_ARM64) +#if defined(_M_ARM) || defined(_M_ARM64) /* ARM needs a barrier for everything but relaxed. */ if (mo != atomic_memory_order_relaxed) { MemoryBarrier(); } -# elif defined(_M_IX86) || defined (_M_X64) +#elif defined(_M_IX86) || defined(_M_X64) /* x86 needs a barrier only for seq_cst. */ if (mo == atomic_memory_order_seq_cst) { MemoryBarrier(); } -# else -# error "Don't know how to create atomics for this platform for MSVC." -# endif +#else +# error "Don't know how to create atomics for this platform for MSVC." +#endif _ReadWriteBarrier(); } -#define ATOMIC_INTERLOCKED_REPR(lg_size) atomic_repr_ ## lg_size ## _t +#define ATOMIC_INTERLOCKED_REPR(lg_size) atomic_repr_##lg_size##_t #define ATOMIC_CONCAT(a, b) ATOMIC_RAW_CONCAT(a, b) -#define ATOMIC_RAW_CONCAT(a, b) a ## b +#define ATOMIC_RAW_CONCAT(a, b) a##b -#define ATOMIC_INTERLOCKED_NAME(base_name, lg_size) ATOMIC_CONCAT( \ - base_name, ATOMIC_INTERLOCKED_SUFFIX(lg_size)) +#define ATOMIC_INTERLOCKED_NAME(base_name, lg_size) \ + ATOMIC_CONCAT(base_name, ATOMIC_INTERLOCKED_SUFFIX(lg_size)) -#define ATOMIC_INTERLOCKED_SUFFIX(lg_size) \ - ATOMIC_CONCAT(ATOMIC_INTERLOCKED_SUFFIX_, lg_size) +#define ATOMIC_INTERLOCKED_SUFFIX(lg_size) \ + ATOMIC_CONCAT(ATOMIC_INTERLOCKED_SUFFIX_, lg_size) #define ATOMIC_INTERLOCKED_SUFFIX_0 8 #define ATOMIC_INTERLOCKED_SUFFIX_1 16 #define ATOMIC_INTERLOCKED_SUFFIX_2 #define ATOMIC_INTERLOCKED_SUFFIX_3 64 -#define JEMALLOC_GENERATE_ATOMICS(type, short_type, lg_size) \ -typedef struct { \ - ATOMIC_INTERLOCKED_REPR(lg_size) repr; \ -} atomic_##short_type##_t; \ - \ -ATOMIC_INLINE type \ -atomic_load_##short_type(const atomic_##short_type##_t *a, \ - atomic_memory_order_t mo) { \ - ATOMIC_INTERLOCKED_REPR(lg_size) ret = a->repr; \ - if (mo != atomic_memory_order_relaxed) { \ - atomic_fence(atomic_memory_order_acquire); \ - } \ - return (type) ret; \ -} \ - \ -ATOMIC_INLINE void \ -atomic_store_##short_type(atomic_##short_type##_t *a, \ - type val, atomic_memory_order_t mo) { \ - if (mo != atomic_memory_order_relaxed) { \ - atomic_fence(atomic_memory_order_release); \ - } \ - a->repr = (ATOMIC_INTERLOCKED_REPR(lg_size)) val; \ - if (mo == atomic_memory_order_seq_cst) { \ - atomic_fence(atomic_memory_order_seq_cst); \ - } \ -} \ - \ -ATOMIC_INLINE type \ -atomic_exchange_##short_type(atomic_##short_type##_t *a, type val, \ - atomic_memory_order_t mo) { \ - return (type)ATOMIC_INTERLOCKED_NAME(_InterlockedExchange, \ - lg_size)(&a->repr, (ATOMIC_INTERLOCKED_REPR(lg_size))val); \ -} \ - \ -ATOMIC_INLINE bool \ -atomic_compare_exchange_weak_##short_type(atomic_##short_type##_t *a, \ - type *expected, type desired, atomic_memory_order_t success_mo, \ - atomic_memory_order_t failure_mo) { \ - ATOMIC_INTERLOCKED_REPR(lg_size) e = \ - (ATOMIC_INTERLOCKED_REPR(lg_size))*expected; \ - ATOMIC_INTERLOCKED_REPR(lg_size) d = \ - (ATOMIC_INTERLOCKED_REPR(lg_size))desired; \ - ATOMIC_INTERLOCKED_REPR(lg_size) old = \ - ATOMIC_INTERLOCKED_NAME(_InterlockedCompareExchange, \ - lg_size)(&a->repr, d, e); \ - if (old == e) { \ - return true; \ - } else { \ - *expected = (type)old; \ - return false; \ - } \ -} \ - \ -ATOMIC_INLINE bool \ -atomic_compare_exchange_strong_##short_type(atomic_##short_type##_t *a, \ - type *expected, type desired, atomic_memory_order_t success_mo, \ - atomic_memory_order_t failure_mo) { \ - /* We implement the weak version with strong semantics. */ \ - return atomic_compare_exchange_weak_##short_type(a, expected, \ - desired, success_mo, failure_mo); \ -} - +#define JEMALLOC_GENERATE_ATOMICS(type, short_type, lg_size) \ + typedef struct { \ + ATOMIC_INTERLOCKED_REPR(lg_size) repr; \ + } atomic_##short_type##_t; \ + \ + ATOMIC_INLINE type atomic_load_##short_type( \ + const atomic_##short_type##_t *a, atomic_memory_order_t mo) { \ + ATOMIC_INTERLOCKED_REPR(lg_size) ret = a->repr; \ + if (mo != atomic_memory_order_relaxed) { \ + atomic_fence(atomic_memory_order_acquire); \ + } \ + return (type)ret; \ + } \ + \ + ATOMIC_INLINE void atomic_store_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + if (mo != atomic_memory_order_relaxed) { \ + atomic_fence(atomic_memory_order_release); \ + } \ + a->repr = (ATOMIC_INTERLOCKED_REPR(lg_size))val; \ + if (mo == atomic_memory_order_seq_cst) { \ + atomic_fence(atomic_memory_order_seq_cst); \ + } \ + } \ + \ + ATOMIC_INLINE type atomic_exchange_##short_type( \ + atomic_##short_type##_t *a, type val, atomic_memory_order_t mo) { \ + return (type)ATOMIC_INTERLOCKED_NAME(_InterlockedExchange, \ + lg_size)(&a->repr, (ATOMIC_INTERLOCKED_REPR(lg_size))val); \ + } \ + \ + ATOMIC_INLINE bool atomic_compare_exchange_weak_##short_type( \ + atomic_##short_type##_t *a, type *expected, type desired, \ + atomic_memory_order_t success_mo, \ + atomic_memory_order_t failure_mo) { \ + ATOMIC_INTERLOCKED_REPR(lg_size) \ + e = (ATOMIC_INTERLOCKED_REPR(lg_size)) * expected; \ + ATOMIC_INTERLOCKED_REPR(lg_size) \ + d = (ATOMIC_INTERLOCKED_REPR(lg_size))desired; \ + ATOMIC_INTERLOCKED_REPR(lg_size) \ + old = ATOMIC_INTERLOCKED_NAME( \ + _InterlockedCompareExchange, lg_size)(&a->repr, d, e); \ + if (old == e) { \ + return true; \ + } else { \ + *expected = (type)old; \ + return false; \ + } \ + } \ + \ + ATOMIC_INLINE bool atomic_compare_exchange_strong_##short_type( \ + atomic_##short_type##_t *a, type *expected, type desired, \ + atomic_memory_order_t success_mo, \ + atomic_memory_order_t failure_mo) { \ + /* We implement the weak version with strong semantics. */ \ + return atomic_compare_exchange_weak_##short_type( \ + a, expected, desired, success_mo, failure_mo); \ + } +/* clang-format off */ #define JEMALLOC_GENERATE_INT_ATOMICS(type, short_type, lg_size) \ JEMALLOC_GENERATE_ATOMICS(type, short_type, lg_size) \ \ @@ -154,5 +156,8 @@ atomic_fetch_xor_##short_type(atomic_##short_type##_t *a, \ return (type)ATOMIC_INTERLOCKED_NAME(_InterlockedXor, lg_size)( \ &a->repr, (ATOMIC_INTERLOCKED_REPR(lg_size))val); \ } +/* clang-format on */ + +#undef ATOMIC_INLINE #endif /* JEMALLOC_INTERNAL_ATOMIC_MSVC_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/background_thread_externs.h b/dep/jemalloc/include/jemalloc/internal/background_thread_externs.h index 6ae3c8d89d4bb..efc0aaa4712fd 100644 --- a/dep/jemalloc/include/jemalloc/internal/background_thread_externs.h +++ b/dep/jemalloc/include/jemalloc/internal/background_thread_externs.h @@ -1,26 +1,31 @@ #ifndef JEMALLOC_INTERNAL_BACKGROUND_THREAD_EXTERNS_H #define JEMALLOC_INTERNAL_BACKGROUND_THREAD_EXTERNS_H -extern bool opt_background_thread; -extern size_t opt_max_background_threads; -extern malloc_mutex_t background_thread_lock; -extern atomic_b_t background_thread_enabled_state; -extern size_t n_background_threads; -extern size_t max_background_threads; +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/background_thread_structs.h" +#include "jemalloc/internal/base.h" +#include "jemalloc/internal/mutex.h" + +extern bool opt_background_thread; +extern size_t opt_max_background_threads; +extern malloc_mutex_t background_thread_lock; +extern atomic_b_t background_thread_enabled_state; +extern size_t n_background_threads; +extern size_t max_background_threads; extern background_thread_info_t *background_thread_info; bool background_thread_create(tsd_t *tsd, unsigned arena_ind); bool background_threads_enable(tsd_t *tsd); bool background_threads_disable(tsd_t *tsd); -bool background_thread_is_started(background_thread_info_t* info); -void background_thread_wakeup_early(background_thread_info_t *info, - nstime_t *remaining_sleep); +bool background_thread_is_started(background_thread_info_t *info); +void background_thread_wakeup_early( + background_thread_info_t *info, nstime_t *remaining_sleep); void background_thread_prefork0(tsdn_t *tsdn); void background_thread_prefork1(tsdn_t *tsdn); void background_thread_postfork_parent(tsdn_t *tsdn); void background_thread_postfork_child(tsdn_t *tsdn); -bool background_thread_stats_read(tsdn_t *tsdn, - background_thread_stats_t *stats); +bool background_thread_stats_read( + tsdn_t *tsdn, background_thread_stats_t *stats); void background_thread_ctl_init(tsdn_t *tsdn); #ifdef JEMALLOC_PTHREAD_CREATE_WRAPPER diff --git a/dep/jemalloc/include/jemalloc/internal/background_thread_inlines.h b/dep/jemalloc/include/jemalloc/internal/background_thread_inlines.h index 92c5febe70fd7..e822a3f748ee1 100644 --- a/dep/jemalloc/include/jemalloc/internal/background_thread_inlines.h +++ b/dep/jemalloc/include/jemalloc/internal/background_thread_inlines.h @@ -1,15 +1,25 @@ #ifndef JEMALLOC_INTERNAL_BACKGROUND_THREAD_INLINES_H #define JEMALLOC_INTERNAL_BACKGROUND_THREAD_INLINES_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_inlines_a.h" +#include "jemalloc/internal/atomic.h" +#include "jemalloc/internal/background_thread_externs.h" + JEMALLOC_ALWAYS_INLINE bool background_thread_enabled(void) { return atomic_load_b(&background_thread_enabled_state, ATOMIC_RELAXED); } +JEMALLOC_ALWAYS_INLINE void +background_thread_enabled_set_impl(bool state) { + atomic_store_b(&background_thread_enabled_state, state, ATOMIC_RELAXED); +} + JEMALLOC_ALWAYS_INLINE void background_thread_enabled_set(tsdn_t *tsdn, bool state) { malloc_mutex_assert_owner(tsdn, &background_thread_lock); - atomic_store_b(&background_thread_enabled_state, state, ATOMIC_RELAXED); + background_thread_enabled_set_impl(state); } JEMALLOC_ALWAYS_INLINE background_thread_info_t * @@ -26,14 +36,14 @@ background_thread_info_get(size_t ind) { JEMALLOC_ALWAYS_INLINE uint64_t background_thread_wakeup_time_get(background_thread_info_t *info) { uint64_t next_wakeup = nstime_ns(&info->next_wakeup); - assert(atomic_load_b(&info->indefinite_sleep, ATOMIC_ACQUIRE) == - (next_wakeup == BACKGROUND_THREAD_INDEFINITE_SLEEP)); + assert(atomic_load_b(&info->indefinite_sleep, ATOMIC_ACQUIRE) + == (next_wakeup == BACKGROUND_THREAD_INDEFINITE_SLEEP)); return next_wakeup; } JEMALLOC_ALWAYS_INLINE void -background_thread_wakeup_time_set(tsdn_t *tsdn, background_thread_info_t *info, - uint64_t wakeup_time) { +background_thread_wakeup_time_set( + tsdn_t *tsdn, background_thread_info_t *info, uint64_t wakeup_time) { malloc_mutex_assert_owner(tsdn, &info->mtx); atomic_store_b(&info->indefinite_sleep, wakeup_time == BACKGROUND_THREAD_INDEFINITE_SLEEP, ATOMIC_RELEASE); diff --git a/dep/jemalloc/include/jemalloc/internal/background_thread_structs.h b/dep/jemalloc/include/jemalloc/internal/background_thread_structs.h index 83a9198460299..d56673dab30b6 100644 --- a/dep/jemalloc/include/jemalloc/internal/background_thread_structs.h +++ b/dep/jemalloc/include/jemalloc/internal/background_thread_structs.h @@ -1,10 +1,13 @@ #ifndef JEMALLOC_INTERNAL_BACKGROUND_THREAD_STRUCTS_H #define JEMALLOC_INTERNAL_BACKGROUND_THREAD_STRUCTS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/mutex.h" + /* This file really combines "structs" and "types", but only transitionally. */ #if defined(JEMALLOC_BACKGROUND_THREAD) || defined(JEMALLOC_LAZY_LOCK) -# define JEMALLOC_PTHREAD_CREATE_WRAPPER +# define JEMALLOC_PTHREAD_CREATE_WRAPPER #endif #define BACKGROUND_THREAD_INDEFINITE_SLEEP UINT64_MAX @@ -32,33 +35,33 @@ typedef enum { struct background_thread_info_s { #ifdef JEMALLOC_BACKGROUND_THREAD /* Background thread is pthread specific. */ - pthread_t thread; - pthread_cond_t cond; + pthread_t thread; + pthread_cond_t cond; #endif - malloc_mutex_t mtx; - background_thread_state_t state; + malloc_mutex_t mtx; + background_thread_state_t state; /* When true, it means no wakeup scheduled. */ - atomic_b_t indefinite_sleep; + atomic_b_t indefinite_sleep; /* Next scheduled wakeup time (absolute time in ns). */ - nstime_t next_wakeup; + nstime_t next_wakeup; /* * Since the last background thread run, newly added number of pages * that need to be purged by the next wakeup. This is adjusted on * epoch advance, and is used to determine whether we should signal the * background thread to wake up earlier. */ - size_t npages_to_purge_new; + size_t npages_to_purge_new; /* Stats: total number of runs since started. */ - uint64_t tot_n_runs; + uint64_t tot_n_runs; /* Stats: total sleep time since started. */ - nstime_t tot_sleep_time; + nstime_t tot_sleep_time; }; typedef struct background_thread_info_s background_thread_info_t; struct background_thread_stats_s { - size_t num_threads; - uint64_t num_runs; - nstime_t run_interval; + size_t num_threads; + uint64_t num_runs; + nstime_t run_interval; mutex_prof_data_t max_counter_per_bg_thd; }; typedef struct background_thread_stats_s background_thread_stats_t; diff --git a/dep/jemalloc/include/jemalloc/internal/base.h b/dep/jemalloc/include/jemalloc/internal/base.h index 9b2c9fb10b99a..f71a874c20235 100644 --- a/dep/jemalloc/include/jemalloc/internal/base.h +++ b/dep/jemalloc/include/jemalloc/internal/base.h @@ -1,12 +1,19 @@ #ifndef JEMALLOC_INTERNAL_BASE_H #define JEMALLOC_INTERNAL_BASE_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/edata.h" #include "jemalloc/internal/ehooks.h" #include "jemalloc/internal/mutex.h" +/* + * Alignment when THP is not enabled. Set to constant 2M in case the HUGEPAGE + * value is unexpected high (which would cause VM over-reservation). + */ +#define BASE_BLOCK_MIN_ALIGN ((size_t)2 << 20) + enum metadata_thp_mode_e { - metadata_thp_disabled = 0, + metadata_thp_disabled = 0, /* * Lazily enable hugepage for metadata. To avoid high RSS caused by THP * + low usage arena (i.e. THP becomes a significant percentage), the @@ -15,16 +22,15 @@ enum metadata_thp_mode_e { * arena), "auto" behaves the same as "always", i.e. madvise hugepage * right away. */ - metadata_thp_auto = 1, - metadata_thp_always = 2, + metadata_thp_auto = 1, + metadata_thp_always = 2, metadata_thp_mode_limit = 3 }; typedef enum metadata_thp_mode_e metadata_thp_mode_t; #define METADATA_THP_DEFAULT metadata_thp_disabled extern metadata_thp_mode_t opt_metadata_thp; -extern const char *metadata_thp_mode_names[]; - +extern const char *const metadata_thp_mode_names[]; /* Embedded at the beginning of every block of base-managed virtual memory. */ typedef struct base_block_s base_block_t; @@ -72,8 +78,13 @@ struct base_s { /* Heap of extents that track unused trailing space within blocks. */ edata_heap_t avail[SC_NSIZES]; + /* Contains reusable base edata (used by tcache_stacks currently). */ + edata_avail_t edata_avail; + /* Stats, only maintained if config_stats. */ size_t allocated; + size_t edata_allocated; + size_t rtree_allocated; size_t resident; size_t mapped; /* Number of THP regions touched. */ @@ -91,20 +102,24 @@ metadata_thp_enabled(void) { } base_t *b0get(void); -base_t *base_new(tsdn_t *tsdn, unsigned ind, - const extent_hooks_t *extent_hooks, bool metadata_use_hooks); -void base_delete(tsdn_t *tsdn, base_t *base); -ehooks_t *base_ehooks_get(base_t *base); -ehooks_t *base_ehooks_get_for_metadata(base_t *base); -extent_hooks_t *base_extent_hooks_set(base_t *base, - extent_hooks_t *extent_hooks); -void *base_alloc(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment); +base_t *base_new(tsdn_t *tsdn, unsigned ind, const extent_hooks_t *extent_hooks, + bool metadata_use_hooks); +void base_delete(tsdn_t *tsdn, base_t *base); +ehooks_t *base_ehooks_get(base_t *base); +ehooks_t *base_ehooks_get_for_metadata(base_t *base); +extent_hooks_t *base_extent_hooks_set( + base_t *base, extent_hooks_t *extent_hooks); +void *base_alloc(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment); edata_t *base_alloc_edata(tsdn_t *tsdn, base_t *base); -void base_stats_get(tsdn_t *tsdn, base_t *base, size_t *allocated, - size_t *resident, size_t *mapped, size_t *n_thp); -void base_prefork(tsdn_t *tsdn, base_t *base); -void base_postfork_parent(tsdn_t *tsdn, base_t *base); -void base_postfork_child(tsdn_t *tsdn, base_t *base); -bool base_boot(tsdn_t *tsdn); +void *base_alloc_rtree(tsdn_t *tsdn, base_t *base, size_t size); +void *b0_alloc_tcache_stack(tsdn_t *tsdn, size_t size); +void b0_dalloc_tcache_stack(tsdn_t *tsdn, void *tcache_stack); +void base_stats_get(tsdn_t *tsdn, base_t *base, size_t *allocated, + size_t *edata_allocated, size_t *rtree_allocated, size_t *resident, + size_t *mapped, size_t *n_thp); +void base_prefork(tsdn_t *tsdn, base_t *base); +void base_postfork_parent(tsdn_t *tsdn, base_t *base); +void base_postfork_child(tsdn_t *tsdn, base_t *base); +bool base_boot(tsdn_t *tsdn); #endif /* JEMALLOC_INTERNAL_BASE_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/bin.h b/dep/jemalloc/include/jemalloc/internal/bin.h index 63f97395e91d7..51d4c89efb416 100644 --- a/dep/jemalloc/include/jemalloc/internal/bin.h +++ b/dep/jemalloc/include/jemalloc/internal/bin.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_BIN_H #define JEMALLOC_INTERNAL_BIN_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/bin_info.h" #include "jemalloc/internal/bin_stats.h" #include "jemalloc/internal/bin_types.h" #include "jemalloc/internal/edata.h" @@ -14,13 +16,13 @@ typedef struct bin_s bin_t; struct bin_s { /* All operations on bin_t fields require lock ownership. */ - malloc_mutex_t lock; + malloc_mutex_t lock; /* * Bin statistics. These get touched every time the lock is acquired, * so put them close by in the hopes of getting some cache locality. */ - bin_stats_t stats; + bin_stats_t stats; /* * Current slab being used to service allocations of this bin's size @@ -28,17 +30,17 @@ struct bin_s { * slabcur is reassigned, the previous slab must be deallocated or * inserted into slabs_{nonfull,full}. */ - edata_t *slabcur; + edata_t *slabcur; /* * Heap of non-full slabs. This heap is used to assure that new * allocations come from the non-full slab that is oldest/lowest in * memory. */ - edata_heap_t slabs_nonfull; + edata_heap_t slabs_nonfull; /* List used to track full slabs. */ - edata_list_active_t slabs_full; + edata_list_active_t slabs_full; }; /* A set of sharded bins of the same size class. */ @@ -48,7 +50,7 @@ struct bins_s { bin_t *bin_shards; }; -void bin_shard_sizes_boot(unsigned bin_shards[SC_NBINS]); +void bin_shard_sizes_boot(unsigned bin_shard_sizes[SC_NBINS]); bool bin_update_shard_size(unsigned bin_shards[SC_NBINS], size_t start_size, size_t end_size, size_t nshards); @@ -60,6 +62,43 @@ void bin_prefork(tsdn_t *tsdn, bin_t *bin); void bin_postfork_parent(tsdn_t *tsdn, bin_t *bin); void bin_postfork_child(tsdn_t *tsdn, bin_t *bin); +/* Slab region allocation. */ +void *bin_slab_reg_alloc(edata_t *slab, const bin_info_t *bin_info); +void bin_slab_reg_alloc_batch( + edata_t *slab, const bin_info_t *bin_info, unsigned cnt, void **ptrs); + +/* Slab list management. */ +void bin_slabs_nonfull_insert(bin_t *bin, edata_t *slab); +void bin_slabs_nonfull_remove(bin_t *bin, edata_t *slab); +edata_t *bin_slabs_nonfull_tryget(bin_t *bin); +void bin_slabs_full_insert(bool is_auto, bin_t *bin, edata_t *slab); +void bin_slabs_full_remove(bool is_auto, bin_t *bin, edata_t *slab); + +/* Slab association / demotion. */ +void bin_dissociate_slab(bool is_auto, edata_t *slab, bin_t *bin); +void bin_lower_slab(tsdn_t *tsdn, bool is_auto, edata_t *slab, bin_t *bin); + +/* Deallocation helpers (called under bin lock). */ +void bin_dalloc_slab_prepare(tsdn_t *tsdn, edata_t *slab, bin_t *bin); +void bin_dalloc_locked_handle_newly_empty( + tsdn_t *tsdn, bool is_auto, edata_t *slab, bin_t *bin); +void bin_dalloc_locked_handle_newly_nonempty( + tsdn_t *tsdn, bool is_auto, edata_t *slab, bin_t *bin); + +/* Slabcur refill and allocation. */ +void bin_refill_slabcur_with_fresh_slab(tsdn_t *tsdn, bin_t *bin, + szind_t binind, edata_t *fresh_slab); +void *bin_malloc_with_fresh_slab(tsdn_t *tsdn, bin_t *bin, + szind_t binind, edata_t *fresh_slab); +bool bin_refill_slabcur_no_fresh_slab(tsdn_t *tsdn, bool is_auto, + bin_t *bin); +void *bin_malloc_no_fresh_slab(tsdn_t *tsdn, bool is_auto, bin_t *bin, + szind_t binind); + +/* Bin selection. */ +bin_t *bin_choose(tsdn_t *tsdn, arena_t *arena, szind_t binind, + unsigned *binshard_p); + /* Stats. */ static inline void bin_stats_merge(tsdn_t *tsdn, bin_stats_data_t *dst_bin_stats, bin_t *bin) { diff --git a/dep/jemalloc/include/jemalloc/internal/bin_info.h b/dep/jemalloc/include/jemalloc/internal/bin_info.h index 7fe65c866a10b..8c563deeb09e7 100644 --- a/dep/jemalloc/include/jemalloc/internal/bin_info.h +++ b/dep/jemalloc/include/jemalloc/internal/bin_info.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_BIN_INFO_H #define JEMALLOC_INTERNAL_BIN_INFO_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/bitmap.h" /* @@ -25,22 +26,22 @@ typedef struct bin_info_s bin_info_t; struct bin_info_s { /* Size of regions in a slab for this bin's size class. */ - size_t reg_size; + size_t reg_size; /* Total size of a slab for this bin's size class. */ - size_t slab_size; + size_t slab_size; /* Total number of regions in a slab for this bin's size class. */ - uint32_t nregs; + uint32_t nregs; /* Number of sharded bins in each arena for this size class. */ - uint32_t n_shards; + uint32_t n_shards; /* * Metadata used to manipulate bitmaps for slabs associated with this * bin. */ - bitmap_info_t bitmap_info; + bitmap_info_t bitmap_info; }; extern bin_info_t bin_infos[SC_NBINS]; diff --git a/dep/jemalloc/include/jemalloc/internal/bin_inlines.h b/dep/jemalloc/include/jemalloc/internal/bin_inlines.h new file mode 100644 index 0000000000000..f4291169867a4 --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/bin_inlines.h @@ -0,0 +1,112 @@ +#ifndef JEMALLOC_INTERNAL_BIN_INLINES_H +#define JEMALLOC_INTERNAL_BIN_INLINES_H + +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/bin.h" +#include "jemalloc/internal/bin_info.h" +#include "jemalloc/internal/bitmap.h" +#include "jemalloc/internal/div.h" +#include "jemalloc/internal/edata.h" +#include "jemalloc/internal/sc.h" + +/* + * The dalloc bin info contains just the information that the common paths need + * during tcache flushes. By force-inlining these paths, and using local copies + * of data (so that the compiler knows it's constant), we avoid a whole bunch of + * redundant loads and stores by leaving this information in registers. + */ +typedef struct bin_dalloc_locked_info_s bin_dalloc_locked_info_t; +struct bin_dalloc_locked_info_s { + div_info_t div_info; + uint32_t nregs; + uint64_t ndalloc; +}; + +/* Find the region index of a pointer within a slab. */ +JEMALLOC_ALWAYS_INLINE size_t +bin_slab_regind_impl( + div_info_t *div_info, szind_t binind, edata_t *slab, const void *ptr) { + size_t diff, regind; + + /* Freeing a pointer outside the slab can cause assertion failure. */ + assert((uintptr_t)ptr >= (uintptr_t)edata_addr_get(slab)); + assert((uintptr_t)ptr < (uintptr_t)edata_past_get(slab)); + /* Freeing an interior pointer can cause assertion failure. */ + assert(((uintptr_t)ptr - (uintptr_t)edata_addr_get(slab)) + % (uintptr_t)bin_infos[binind].reg_size + == 0); + + diff = (size_t)((uintptr_t)ptr - (uintptr_t)edata_addr_get(slab)); + + /* Avoid doing division with a variable divisor. */ + regind = div_compute(div_info, diff); + assert(regind < bin_infos[binind].nregs); + return regind; +} + +JEMALLOC_ALWAYS_INLINE size_t +bin_slab_regind(bin_dalloc_locked_info_t *info, szind_t binind, + edata_t *slab, const void *ptr) { + size_t regind = bin_slab_regind_impl( + &info->div_info, binind, slab, ptr); + return regind; +} + +JEMALLOC_ALWAYS_INLINE void +bin_dalloc_locked_begin( + bin_dalloc_locked_info_t *info, szind_t binind) { + info->div_info = arena_binind_div_info[binind]; + info->nregs = bin_infos[binind].nregs; + info->ndalloc = 0; +} + +/* + * Does the deallocation work associated with freeing a single pointer (a + * "step") in between a bin_dalloc_locked begin and end call. + * + * Returns true if arena_slab_dalloc must be called on slab. Doesn't do + * stats updates, which happen during finish (this lets running counts get left + * in a register). + */ +JEMALLOC_ALWAYS_INLINE bool +bin_dalloc_locked_step(tsdn_t *tsdn, bool is_auto, bin_t *bin, + bin_dalloc_locked_info_t *info, szind_t binind, edata_t *slab, + void *ptr) { + const bin_info_t *bin_info = &bin_infos[binind]; + size_t regind = bin_slab_regind(info, binind, slab, ptr); + slab_data_t *slab_data = edata_slab_data_get(slab); + + assert(edata_nfree_get(slab) < bin_info->nregs); + /* Freeing an unallocated pointer can cause assertion failure. */ + assert(bitmap_get(slab_data->bitmap, &bin_info->bitmap_info, regind)); + + bitmap_unset(slab_data->bitmap, &bin_info->bitmap_info, regind); + edata_nfree_inc(slab); + + if (config_stats) { + info->ndalloc++; + } + + unsigned nfree = edata_nfree_get(slab); + if (nfree == bin_info->nregs) { + bin_dalloc_locked_handle_newly_empty( + tsdn, is_auto, slab, bin); + return true; + } else if (nfree == 1 && slab != bin->slabcur) { + bin_dalloc_locked_handle_newly_nonempty( + tsdn, is_auto, slab, bin); + } + return false; +} + +JEMALLOC_ALWAYS_INLINE void +bin_dalloc_locked_finish(tsdn_t *tsdn, bin_t *bin, + bin_dalloc_locked_info_t *info) { + if (config_stats) { + bin->stats.ndalloc += info->ndalloc; + assert(bin->stats.curregs >= (size_t)info->ndalloc); + bin->stats.curregs -= (size_t)info->ndalloc; + } +} + +#endif /* JEMALLOC_INTERNAL_BIN_INLINES_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/bin_stats.h b/dep/jemalloc/include/jemalloc/internal/bin_stats.h index 0b99297c070a5..9900e0d18a107 100644 --- a/dep/jemalloc/include/jemalloc/internal/bin_stats.h +++ b/dep/jemalloc/include/jemalloc/internal/bin_stats.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_BIN_STATS_H #define JEMALLOC_INTERNAL_BIN_STATS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/mutex_prof.h" typedef struct bin_stats_s bin_stats_t; @@ -11,47 +12,47 @@ struct bin_stats_s { * many times, resulting many increments to nrequests, but only one * each to nmalloc and ndalloc. */ - uint64_t nmalloc; - uint64_t ndalloc; + uint64_t nmalloc; + uint64_t ndalloc; /* * Number of allocation requests that correspond to the size of this * bin. This includes requests served by tcache, though tcache only * periodically merges into this counter. */ - uint64_t nrequests; + uint64_t nrequests; /* * Current number of regions of this size class, including regions * currently cached by tcache. */ - size_t curregs; + size_t curregs; /* Number of tcache fills from this bin. */ - uint64_t nfills; + uint64_t nfills; /* Number of tcache flushes to this bin. */ - uint64_t nflushes; + uint64_t nflushes; /* Total number of slabs created for this bin's size class. */ - uint64_t nslabs; + uint64_t nslabs; /* * Total number of slabs reused by extracting them from the slabs heap * for this bin's size class. */ - uint64_t reslabs; + uint64_t reslabs; /* Current number of slabs in this bin. */ - size_t curslabs; + size_t curslabs; /* Current size of nonfull slabs heap in this bin. */ - size_t nonfull_slabs; + size_t nonfull_slabs; }; typedef struct bin_stats_data_s bin_stats_data_t; struct bin_stats_data_s { - bin_stats_t stats_data; + bin_stats_t stats_data; mutex_prof_data_t mutex_data; }; #endif /* JEMALLOC_INTERNAL_BIN_STATS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/bin_types.h b/dep/jemalloc/include/jemalloc/internal/bin_types.h index 945e8326c63d4..b6bad37e52251 100644 --- a/dep/jemalloc/include/jemalloc/internal/bin_types.h +++ b/dep/jemalloc/include/jemalloc/internal/bin_types.h @@ -1,13 +1,17 @@ #ifndef JEMALLOC_INTERNAL_BIN_TYPES_H #define JEMALLOC_INTERNAL_BIN_TYPES_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/sc.h" #define BIN_SHARDS_MAX (1 << EDATA_BITS_BINSHARD_WIDTH) #define N_BIN_SHARDS_DEFAULT 1 /* Used in TSD static initializer only. Real init in arena_bind(). */ -#define TSD_BINSHARDS_ZERO_INITIALIZER {{UINT8_MAX}} +#define TSD_BINSHARDS_ZERO_INITIALIZER \ + { \ + { UINT8_MAX } \ + } typedef struct tsd_binshards_s tsd_binshards_t; struct tsd_binshards_s { diff --git a/dep/jemalloc/include/jemalloc/internal/bit_util.h b/dep/jemalloc/include/jemalloc/internal/bit_util.h index bac59140fbb05..cfd95c4e8e4b7 100644 --- a/dep/jemalloc/include/jemalloc/internal/bit_util.h +++ b/dep/jemalloc/include/jemalloc/internal/bit_util.h @@ -1,12 +1,13 @@ #ifndef JEMALLOC_INTERNAL_BIT_UTIL_H #define JEMALLOC_INTERNAL_BIT_UTIL_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/assert.h" /* Sanity check. */ -#if !defined(JEMALLOC_INTERNAL_FFSLL) || !defined(JEMALLOC_INTERNAL_FFSL) \ +#if !defined(JEMALLOC_INTERNAL_FFSLL) || !defined(JEMALLOC_INTERNAL_FFSL) \ || !defined(JEMALLOC_INTERNAL_FFS) -# error JEMALLOC_INTERNAL_FFS{,L,LL} should have been defined by configure +# error JEMALLOC_INTERNAL_FFS{,L,LL} should have been defined by configure #endif /* @@ -34,6 +35,7 @@ ffs_u(unsigned x) { return JEMALLOC_INTERNAL_FFS(x) - 1; } +/* clang-format off */ #define DO_FLS_SLOW(x, suffix) do { \ util_assume(x != 0); \ x |= (x >> 1); \ @@ -57,6 +59,7 @@ ffs_u(unsigned x) { } \ return ffs_##suffix(x) - 1; \ } while(0) +/* clang-format on */ static inline unsigned fls_llu_slow(unsigned long long x) { @@ -107,16 +110,19 @@ fls_u(unsigned x) { } #elif defined(_MSC_VER) -#if LG_SIZEOF_PTR == 3 -#define DO_BSR64(bit, x) _BitScanReverse64(&bit, x) -#else +# if LG_SIZEOF_PTR == 3 +# define DO_BSR64(bit, x) _BitScanReverse64(&bit, x) +# else /* * This never actually runs; we're just dodging a compiler error for the * never-taken branch where sizeof(void *) == 8. */ -#define DO_BSR64(bit, x) bit = 0; unreachable() -#endif +# define DO_BSR64(bit, x) \ + bit = 0; \ + unreachable() +# endif +/* clang-format off */ #define DO_FLS(x) do { \ if (x == 0) { \ return 8 * sizeof(x); \ @@ -143,6 +149,7 @@ fls_u(unsigned x) { } \ unreachable(); \ } while (0) +/* clang-format on */ static inline unsigned fls_llu(unsigned long long x) { @@ -159,8 +166,8 @@ fls_u(unsigned x) { DO_FLS(x); } -#undef DO_FLS -#undef DO_BSR64 +# undef DO_FLS +# undef DO_BSR64 #else static inline unsigned @@ -180,14 +187,15 @@ fls_u(unsigned x) { #endif #if LG_SIZEOF_LONG_LONG > 3 -# error "Haven't implemented popcount for 16-byte ints." +# error "Haven't implemented popcount for 16-byte ints." #endif +/* clang-format off */ #define DO_POPCOUNT(x, type) do { \ /* \ * Algorithm from an old AMD optimization reference manual. \ * We're putting a little bit more work than you might expect \ - * into the no-instrinsic case, since we only support the \ + * into the no-intrinsic case, since we only support the \ * GCC intrinsics spelling of popcount (for now). Detecting \ * whether or not the popcount builtin is actually useable in \ * MSVC is nontrivial. \ @@ -204,7 +212,7 @@ fls_u(unsigned x) { * That costs an extra mask relative to this, though. \ */ \ x = x - ((x >> 1) & (0x55U * bmul)); \ - /* Replace each 4 bits with their sideays sum. 0x3 = 0b0011. */\ + /* Replace each 4 bits with their sideways sum. 0x3 = 0b0011. */\ x = (x & (bmul * 0x33U)) + ((x >> 2) & (bmul * 0x33U)); \ /* \ * Replace each 8 bits with their sideways sum. Note that we \ @@ -226,6 +234,7 @@ fls_u(unsigned x) { x >>= ((sizeof(x) - 1) * 8); \ return (unsigned)x; \ } while(0) +/* clang-format on */ static inline unsigned popcount_u_slow(unsigned bitmap) { @@ -277,7 +286,7 @@ popcount_llu(unsigned long long bitmap) { */ static inline size_t -cfs_lu(unsigned long* bitmap) { +cfs_lu(unsigned long *bitmap) { util_assume(*bitmap != 0); size_t bit = ffs_lu(*bitmap); *bitmap ^= ZU(1) << bit; @@ -293,7 +302,7 @@ ffs_zu(size_t x) { #elif LG_SIZEOF_PTR == LG_SIZEOF_LONG_LONG return ffs_llu(x); #else -#error No implementation for size_t ffs() +# error No implementation for size_t ffs() #endif } @@ -306,11 +315,10 @@ fls_zu(size_t x) { #elif LG_SIZEOF_PTR == LG_SIZEOF_LONG_LONG return fls_llu(x); #else -#error No implementation for size_t fls() +# error No implementation for size_t fls() #endif } - static inline unsigned ffs_u64(uint64_t x) { #if LG_SIZEOF_LONG == 3 @@ -318,7 +326,7 @@ ffs_u64(uint64_t x) { #elif LG_SIZEOF_LONG_LONG == 3 return ffs_llu(x); #else -#error No implementation for 64-bit ffs() +# error No implementation for 64-bit ffs() #endif } @@ -329,7 +337,7 @@ fls_u64(uint64_t x) { #elif LG_SIZEOF_LONG_LONG == 3 return fls_llu(x); #else -#error No implementation for 64-bit fls() +# error No implementation for 64-bit fls() #endif } @@ -338,9 +346,8 @@ ffs_u32(uint32_t x) { #if LG_SIZEOF_INT == 2 return ffs_u(x); #else -#error No implementation for 32-bit ffs() +# error No implementation for 32-bit ffs() #endif - return ffs_u(x); } static inline unsigned @@ -348,9 +355,8 @@ fls_u32(uint32_t x) { #if LG_SIZEOF_INT == 2 return fls_u(x); #else -#error No implementation for 32-bit fls() +# error No implementation for 32-bit fls() #endif - return fls_u(x); } static inline uint64_t @@ -370,7 +376,7 @@ pow2_ceil_u64(uint64_t x) { static inline uint32_t pow2_ceil_u32(uint32_t x) { if (unlikely(x <= 1)) { - return x; + return x; } size_t msb_on_index = fls_u32(x - 1); /* As above. */ @@ -408,13 +414,16 @@ lg_ceil(size_t x) { #define LG_FLOOR_2(x) (x < (1ULL << 1) ? LG_FLOOR_1(x) : 1 + LG_FLOOR_1(x >> 1)) #define LG_FLOOR_4(x) (x < (1ULL << 2) ? LG_FLOOR_2(x) : 2 + LG_FLOOR_2(x >> 2)) #define LG_FLOOR_8(x) (x < (1ULL << 4) ? LG_FLOOR_4(x) : 4 + LG_FLOOR_4(x >> 4)) -#define LG_FLOOR_16(x) (x < (1ULL << 8) ? LG_FLOOR_8(x) : 8 + LG_FLOOR_8(x >> 8)) -#define LG_FLOOR_32(x) (x < (1ULL << 16) ? LG_FLOOR_16(x) : 16 + LG_FLOOR_16(x >> 16)) -#define LG_FLOOR_64(x) (x < (1ULL << 32) ? LG_FLOOR_32(x) : 32 + LG_FLOOR_32(x >> 32)) +#define LG_FLOOR_16(x) \ + (x < (1ULL << 8) ? LG_FLOOR_8(x) : 8 + LG_FLOOR_8(x >> 8)) +#define LG_FLOOR_32(x) \ + (x < (1ULL << 16) ? LG_FLOOR_16(x) : 16 + LG_FLOOR_16(x >> 16)) +#define LG_FLOOR_64(x) \ + (x < (1ULL << 32) ? LG_FLOOR_32(x) : 32 + LG_FLOOR_32(x >> 32)) #if LG_SIZEOF_PTR == 2 -# define LG_FLOOR(x) LG_FLOOR_32((x)) +# define LG_FLOOR(x) LG_FLOOR_32((x)) #else -# define LG_FLOOR(x) LG_FLOOR_64((x)) +# define LG_FLOOR(x) LG_FLOOR_64((x)) #endif #define LG_CEIL(x) (LG_FLOOR(x) + (((x) & ((x) - 1)) == 0 ? 0 : 1)) diff --git a/dep/jemalloc/include/jemalloc/internal/bitmap.h b/dep/jemalloc/include/jemalloc/internal/bitmap.h index dc19454d46eed..e0f596fba9b52 100644 --- a/dep/jemalloc/include/jemalloc/internal/bitmap.h +++ b/dep/jemalloc/include/jemalloc/internal/bitmap.h @@ -1,26 +1,27 @@ #ifndef JEMALLOC_INTERNAL_BITMAP_H #define JEMALLOC_INTERNAL_BITMAP_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/bit_util.h" #include "jemalloc/internal/sc.h" typedef unsigned long bitmap_t; -#define LG_SIZEOF_BITMAP LG_SIZEOF_LONG +#define LG_SIZEOF_BITMAP LG_SIZEOF_LONG /* Maximum bitmap bit count is 2^LG_BITMAP_MAXBITS. */ #if SC_LG_SLAB_MAXREGS > LG_CEIL(SC_NSIZES) /* Maximum bitmap bit count is determined by maximum regions per slab. */ -# define LG_BITMAP_MAXBITS SC_LG_SLAB_MAXREGS +# define LG_BITMAP_MAXBITS SC_LG_SLAB_MAXREGS #else /* Maximum bitmap bit count is determined by number of extent size classes. */ -# define LG_BITMAP_MAXBITS LG_CEIL(SC_NSIZES) +# define LG_BITMAP_MAXBITS LG_CEIL(SC_NSIZES) #endif -#define BITMAP_MAXBITS (ZU(1) << LG_BITMAP_MAXBITS) +#define BITMAP_MAXBITS (ZU(1) << LG_BITMAP_MAXBITS) /* Number of bits per group. */ -#define LG_BITMAP_GROUP_NBITS (LG_SIZEOF_BITMAP + 3) -#define BITMAP_GROUP_NBITS (1U << LG_BITMAP_GROUP_NBITS) -#define BITMAP_GROUP_NBITS_MASK (BITMAP_GROUP_NBITS-1) +#define LG_BITMAP_GROUP_NBITS (LG_SIZEOF_BITMAP + 3) +#define BITMAP_GROUP_NBITS (1U << LG_BITMAP_GROUP_NBITS) +#define BITMAP_GROUP_NBITS_MASK (BITMAP_GROUP_NBITS - 1) /* * Do some analysis on how big the bitmap is before we use a tree. For a brute @@ -28,67 +29,64 @@ typedef unsigned long bitmap_t; * use a tree instead. */ #if LG_BITMAP_MAXBITS - LG_BITMAP_GROUP_NBITS > 3 -# define BITMAP_USE_TREE +# define BITMAP_USE_TREE #endif /* Number of groups required to store a given number of bits. */ -#define BITMAP_BITS2GROUPS(nbits) \ - (((nbits) + BITMAP_GROUP_NBITS_MASK) >> LG_BITMAP_GROUP_NBITS) +#define BITMAP_BITS2GROUPS(nbits) \ + (((nbits) + BITMAP_GROUP_NBITS_MASK) >> LG_BITMAP_GROUP_NBITS) /* * Number of groups required at a particular level for a given number of bits. */ -#define BITMAP_GROUPS_L0(nbits) \ - BITMAP_BITS2GROUPS(nbits) -#define BITMAP_GROUPS_L1(nbits) \ - BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(nbits)) -#define BITMAP_GROUPS_L2(nbits) \ - BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS((nbits)))) -#define BITMAP_GROUPS_L3(nbits) \ - BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS( \ - BITMAP_BITS2GROUPS((nbits))))) -#define BITMAP_GROUPS_L4(nbits) \ - BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS( \ - BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS((nbits)))))) +#define BITMAP_GROUPS_L0(nbits) BITMAP_BITS2GROUPS(nbits) +#define BITMAP_GROUPS_L1(nbits) BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(nbits)) +#define BITMAP_GROUPS_L2(nbits) \ + BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS((nbits)))) +#define BITMAP_GROUPS_L3(nbits) \ + BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS( \ + BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS((nbits))))) +#define BITMAP_GROUPS_L4(nbits) \ + BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS( \ + BITMAP_BITS2GROUPS(BITMAP_BITS2GROUPS((nbits)))))) /* * Assuming the number of levels, number of groups required for a given number * of bits. */ -#define BITMAP_GROUPS_1_LEVEL(nbits) \ - BITMAP_GROUPS_L0(nbits) -#define BITMAP_GROUPS_2_LEVEL(nbits) \ - (BITMAP_GROUPS_1_LEVEL(nbits) + BITMAP_GROUPS_L1(nbits)) -#define BITMAP_GROUPS_3_LEVEL(nbits) \ - (BITMAP_GROUPS_2_LEVEL(nbits) + BITMAP_GROUPS_L2(nbits)) -#define BITMAP_GROUPS_4_LEVEL(nbits) \ - (BITMAP_GROUPS_3_LEVEL(nbits) + BITMAP_GROUPS_L3(nbits)) -#define BITMAP_GROUPS_5_LEVEL(nbits) \ - (BITMAP_GROUPS_4_LEVEL(nbits) + BITMAP_GROUPS_L4(nbits)) +#define BITMAP_GROUPS_1_LEVEL(nbits) BITMAP_GROUPS_L0(nbits) +#define BITMAP_GROUPS_2_LEVEL(nbits) \ + (BITMAP_GROUPS_1_LEVEL(nbits) + BITMAP_GROUPS_L1(nbits)) +#define BITMAP_GROUPS_3_LEVEL(nbits) \ + (BITMAP_GROUPS_2_LEVEL(nbits) + BITMAP_GROUPS_L2(nbits)) +#define BITMAP_GROUPS_4_LEVEL(nbits) \ + (BITMAP_GROUPS_3_LEVEL(nbits) + BITMAP_GROUPS_L3(nbits)) +#define BITMAP_GROUPS_5_LEVEL(nbits) \ + (BITMAP_GROUPS_4_LEVEL(nbits) + BITMAP_GROUPS_L4(nbits)) /* * Maximum number of groups required to support LG_BITMAP_MAXBITS. */ #ifdef BITMAP_USE_TREE -#if LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS -# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_1_LEVEL(nbits) -# define BITMAP_GROUPS_MAX BITMAP_GROUPS_1_LEVEL(BITMAP_MAXBITS) -#elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 2 -# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_2_LEVEL(nbits) -# define BITMAP_GROUPS_MAX BITMAP_GROUPS_2_LEVEL(BITMAP_MAXBITS) -#elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 3 -# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_3_LEVEL(nbits) -# define BITMAP_GROUPS_MAX BITMAP_GROUPS_3_LEVEL(BITMAP_MAXBITS) -#elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 4 -# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_4_LEVEL(nbits) -# define BITMAP_GROUPS_MAX BITMAP_GROUPS_4_LEVEL(BITMAP_MAXBITS) -#elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 5 -# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_5_LEVEL(nbits) -# define BITMAP_GROUPS_MAX BITMAP_GROUPS_5_LEVEL(BITMAP_MAXBITS) -#else -# error "Unsupported bitmap size" -#endif +# if LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS +# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_1_LEVEL(nbits) +# define BITMAP_GROUPS_MAX BITMAP_GROUPS_1_LEVEL(BITMAP_MAXBITS) +# elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 2 +# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_2_LEVEL(nbits) +# define BITMAP_GROUPS_MAX BITMAP_GROUPS_2_LEVEL(BITMAP_MAXBITS) +# elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 3 +# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_3_LEVEL(nbits) +# define BITMAP_GROUPS_MAX BITMAP_GROUPS_3_LEVEL(BITMAP_MAXBITS) +# elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 4 +# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_4_LEVEL(nbits) +# define BITMAP_GROUPS_MAX BITMAP_GROUPS_4_LEVEL(BITMAP_MAXBITS) +# elif LG_BITMAP_MAXBITS <= LG_BITMAP_GROUP_NBITS * 5 +# define BITMAP_GROUPS(nbits) BITMAP_GROUPS_5_LEVEL(nbits) +# define BITMAP_GROUPS_MAX BITMAP_GROUPS_5_LEVEL(BITMAP_MAXBITS) +# else +# error "Unsupported bitmap size" +# endif /* * Maximum number of levels possible. This could be statically computed based @@ -104,42 +102,53 @@ typedef unsigned long bitmap_t; * unused trailing entries in bitmap_info_t structures; the bitmaps themselves * are not impacted. */ -#define BITMAP_MAX_LEVELS 5 - -#define BITMAP_INFO_INITIALIZER(nbits) { \ - /* nbits. */ \ - nbits, \ - /* nlevels. */ \ - (BITMAP_GROUPS_L0(nbits) > BITMAP_GROUPS_L1(nbits)) + \ - (BITMAP_GROUPS_L1(nbits) > BITMAP_GROUPS_L2(nbits)) + \ - (BITMAP_GROUPS_L2(nbits) > BITMAP_GROUPS_L3(nbits)) + \ - (BITMAP_GROUPS_L3(nbits) > BITMAP_GROUPS_L4(nbits)) + 1, \ - /* levels. */ \ - { \ - {0}, \ - {BITMAP_GROUPS_L0(nbits)}, \ - {BITMAP_GROUPS_L1(nbits) + BITMAP_GROUPS_L0(nbits)}, \ - {BITMAP_GROUPS_L2(nbits) + BITMAP_GROUPS_L1(nbits) + \ - BITMAP_GROUPS_L0(nbits)}, \ - {BITMAP_GROUPS_L3(nbits) + BITMAP_GROUPS_L2(nbits) + \ - BITMAP_GROUPS_L1(nbits) + BITMAP_GROUPS_L0(nbits)}, \ - {BITMAP_GROUPS_L4(nbits) + BITMAP_GROUPS_L3(nbits) + \ - BITMAP_GROUPS_L2(nbits) + BITMAP_GROUPS_L1(nbits) \ - + BITMAP_GROUPS_L0(nbits)} \ - } \ -} +# define BITMAP_MAX_LEVELS 5 + +# define BITMAP_INFO_INITIALIZER(nbits) \ + { \ + /* nbits. */ \ + nbits, /* nlevels. */ \ + (BITMAP_GROUPS_L0(nbits) \ + > BITMAP_GROUPS_L1(nbits)) \ + + (BITMAP_GROUPS_L1(nbits) \ + > BITMAP_GROUPS_L2(nbits)) \ + + (BITMAP_GROUPS_L2(nbits) \ + > BITMAP_GROUPS_L3(nbits)) \ + + (BITMAP_GROUPS_L3(nbits) \ + > BITMAP_GROUPS_L4(nbits)) \ + + 1, /* levels. */ \ + { \ + {0}, {BITMAP_GROUPS_L0(nbits)}, \ + {BITMAP_GROUPS_L1(nbits) \ + + BITMAP_GROUPS_L0(nbits)}, \ + {BITMAP_GROUPS_L2(nbits) \ + + BITMAP_GROUPS_L1(nbits) \ + + BITMAP_GROUPS_L0(nbits)}, \ + {BITMAP_GROUPS_L3(nbits) \ + + BITMAP_GROUPS_L2(nbits) \ + + BITMAP_GROUPS_L1(nbits) \ + + BITMAP_GROUPS_L0(nbits)}, \ + { \ + BITMAP_GROUPS_L4(nbits) \ + + BITMAP_GROUPS_L3(nbits) \ + + BITMAP_GROUPS_L2(nbits) \ + + BITMAP_GROUPS_L1(nbits) \ + + BITMAP_GROUPS_L0(nbits) \ + } \ + } \ + } #else /* BITMAP_USE_TREE */ -#define BITMAP_GROUPS(nbits) BITMAP_BITS2GROUPS(nbits) -#define BITMAP_GROUPS_MAX BITMAP_BITS2GROUPS(BITMAP_MAXBITS) +# define BITMAP_GROUPS(nbits) BITMAP_BITS2GROUPS(nbits) +# define BITMAP_GROUPS_MAX BITMAP_BITS2GROUPS(BITMAP_MAXBITS) -#define BITMAP_INFO_INITIALIZER(nbits) { \ - /* nbits. */ \ - nbits, \ - /* ngroups. */ \ - BITMAP_BITS2GROUPS(nbits) \ -} +# define BITMAP_INFO_INITIALIZER(nbits) \ + { \ + /* nbits. */ \ + nbits, /* ngroups. */ \ + BITMAP_BITS2GROUPS(nbits) \ + } #endif /* BITMAP_USE_TREE */ @@ -160,21 +169,21 @@ typedef struct bitmap_info_s { * Only the first (nlevels+1) elements are used, and levels are ordered * bottom to top (e.g. the bottom level is stored in levels[0]). */ - bitmap_level_t levels[BITMAP_MAX_LEVELS+1]; -#else /* BITMAP_USE_TREE */ + bitmap_level_t levels[BITMAP_MAX_LEVELS + 1]; +#else /* BITMAP_USE_TREE */ /* Number of groups necessary for nbits. */ size_t ngroups; #endif /* BITMAP_USE_TREE */ } bitmap_info_t; -void bitmap_info_init(bitmap_info_t *binfo, size_t nbits); -void bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo, bool fill); +void bitmap_info_init(bitmap_info_t *binfo, size_t nbits); +void bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo, bool fill); size_t bitmap_size(const bitmap_info_t *binfo); static inline bool bitmap_full(bitmap_t *bitmap, const bitmap_info_t *binfo) { #ifdef BITMAP_USE_TREE - size_t rgoff = binfo->levels[binfo->nlevels].group_offset - 1; + size_t rgoff = binfo->levels[binfo->nlevels].group_offset - 1; bitmap_t rg = bitmap[rgoff]; /* The bitmap is full iff the root group is 0. */ return (rg == 0); @@ -192,7 +201,7 @@ bitmap_full(bitmap_t *bitmap, const bitmap_info_t *binfo) { static inline bool bitmap_get(bitmap_t *bitmap, const bitmap_info_t *binfo, size_t bit) { - size_t goff; + size_t goff; bitmap_t g; assert(bit < binfo->nbits); @@ -203,9 +212,9 @@ bitmap_get(bitmap_t *bitmap, const bitmap_info_t *binfo, size_t bit) { static inline void bitmap_set(bitmap_t *bitmap, const bitmap_info_t *binfo, size_t bit) { - size_t goff; + size_t goff; bitmap_t *gp; - bitmap_t g; + bitmap_t g; assert(bit < binfo->nbits); assert(!bitmap_get(bitmap, binfo, bit)); @@ -244,12 +253,13 @@ bitmap_ffu(const bitmap_t *bitmap, const bitmap_info_t *binfo, size_t min_bit) { #ifdef BITMAP_USE_TREE size_t bit = 0; for (unsigned level = binfo->nlevels; level--;) { - size_t lg_bits_per_group = (LG_BITMAP_GROUP_NBITS * (level + - 1)); - bitmap_t group = bitmap[binfo->levels[level].group_offset + (bit - >> lg_bits_per_group)]; - unsigned group_nmask = (unsigned)(((min_bit > bit) ? (min_bit - - bit) : 0) >> (lg_bits_per_group - LG_BITMAP_GROUP_NBITS)); + size_t lg_bits_per_group = (LG_BITMAP_GROUP_NBITS + * (level + 1)); + bitmap_t group = bitmap[binfo->levels[level].group_offset + + (bit >> lg_bits_per_group)]; + unsigned group_nmask = + (unsigned)(((min_bit > bit) ? (min_bit - bit) : 0) + >> (lg_bits_per_group - LG_BITMAP_GROUP_NBITS)); assert(group_nmask <= BITMAP_GROUP_NBITS); bitmap_t group_mask = ~((1LU << group_nmask) - 1); bitmap_t group_masked = group & group_mask; @@ -272,25 +282,28 @@ bitmap_ffu(const bitmap_t *bitmap, const bitmap_info_t *binfo, size_t min_bit) { } return bitmap_ffu(bitmap, binfo, sib_base); } - bit += ((size_t)ffs_lu(group_masked)) << - (lg_bits_per_group - LG_BITMAP_GROUP_NBITS); + bit += ((size_t)ffs_lu(group_masked)) + << (lg_bits_per_group - LG_BITMAP_GROUP_NBITS); } assert(bit >= min_bit); assert(bit < binfo->nbits); return bit; #else - size_t i = min_bit >> LG_BITMAP_GROUP_NBITS; - bitmap_t g = bitmap[i] & ~((1LU << (min_bit & BITMAP_GROUP_NBITS_MASK)) - - 1); + size_t i = min_bit >> LG_BITMAP_GROUP_NBITS; + bitmap_t g = bitmap[i] + & ~((1LU << (min_bit & BITMAP_GROUP_NBITS_MASK)) - 1); size_t bit; - do { + while (1) { if (g != 0) { bit = ffs_lu(g); return (i << LG_BITMAP_GROUP_NBITS) + bit; } i++; + if (i >= binfo->ngroups) { + break; + } g = bitmap[i]; - } while (i < binfo->ngroups); + } return binfo->nbits; #endif } @@ -298,7 +311,7 @@ bitmap_ffu(const bitmap_t *bitmap, const bitmap_info_t *binfo, size_t min_bit) { /* sfu: set first unset. */ static inline size_t bitmap_sfu(bitmap_t *bitmap, const bitmap_info_t *binfo) { - size_t bit; + size_t bit; bitmap_t g; unsigned i; @@ -328,9 +341,9 @@ bitmap_sfu(bitmap_t *bitmap, const bitmap_info_t *binfo) { static inline void bitmap_unset(bitmap_t *bitmap, const bitmap_info_t *binfo, size_t bit) { - size_t goff; - bitmap_t *gp; - bitmap_t g; + size_t goff; + bitmap_t *gp; + bitmap_t g; UNUSED bool propagate; assert(bit < binfo->nbits); diff --git a/dep/jemalloc/include/jemalloc/internal/buf_writer.h b/dep/jemalloc/include/jemalloc/internal/buf_writer.h index 37aa6de5b3c3a..5ee9af4e9a31d 100644 --- a/dep/jemalloc/include/jemalloc/internal/buf_writer.h +++ b/dep/jemalloc/include/jemalloc/internal/buf_writer.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_BUF_WRITER_H #define JEMALLOC_INTERNAL_BUF_WRITER_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_types.h" +#include "jemalloc/internal/tsd_types.h" + /* * Note: when using the buffered writer, cbopaque is passed to write_cb only * when the buffer is flushed. It would make a difference if cbopaque points @@ -12,21 +16,21 @@ typedef struct { write_cb_t *write_cb; - void *cbopaque; - char *buf; - size_t buf_size; - size_t buf_end; - bool internal_buf; + void *cbopaque; + char *buf; + size_t buf_size; + size_t buf_end; + bool internal_buf; } buf_writer_t; -bool buf_writer_init(tsdn_t *tsdn, buf_writer_t *buf_writer, - write_cb_t *write_cb, void *cbopaque, char *buf, size_t buf_len); -void buf_writer_flush(buf_writer_t *buf_writer); +bool buf_writer_init(tsdn_t *tsdn, buf_writer_t *buf_writer, + write_cb_t *write_cb, void *cbopaque, char *buf, size_t buf_len); +void buf_writer_flush(buf_writer_t *buf_writer); write_cb_t buf_writer_cb; -void buf_writer_terminate(tsdn_t *tsdn, buf_writer_t *buf_writer); +void buf_writer_terminate(tsdn_t *tsdn, buf_writer_t *buf_writer); -typedef ssize_t (read_cb_t)(void *read_cbopaque, void *buf, size_t limit); -void buf_writer_pipe(buf_writer_t *buf_writer, read_cb_t *read_cb, - void *read_cbopaque); +typedef ssize_t(read_cb_t)(void *read_cbopaque, void *buf, size_t limit); +void buf_writer_pipe( + buf_writer_t *buf_writer, read_cb_t *read_cb, void *read_cbopaque); #endif /* JEMALLOC_INTERNAL_BUF_WRITER_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/cache_bin.h b/dep/jemalloc/include/jemalloc/internal/cache_bin.h index caf5be338d6a4..bea3a2fc04045 100644 --- a/dep/jemalloc/include/jemalloc/internal/cache_bin.h +++ b/dep/jemalloc/include/jemalloc/internal/cache_bin.h @@ -1,7 +1,10 @@ #ifndef JEMALLOC_INTERNAL_CACHE_BIN_H #define JEMALLOC_INTERNAL_CACHE_BIN_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_externs.h" #include "jemalloc/internal/ql.h" +#include "jemalloc/internal/safety_check.h" #include "jemalloc/internal/sz.h" /* @@ -20,16 +23,20 @@ */ typedef uint16_t cache_bin_sz_t; +#define JUNK_ADDR ((uintptr_t)0x7a7a7a7a7a7a7a7aULL) /* * Leave a noticeable mark pattern on the cache bin stack boundaries, in case a * bug starts leaking those. Make it look like the junk pattern but be distinct * from it. */ -static const uintptr_t cache_bin_preceding_junk = - (uintptr_t)0x7a7a7a7a7a7a7a7aULL; -/* Note: a7 vs. 7a above -- this tells you which pointer leaked. */ -static const uintptr_t cache_bin_trailing_junk = - (uintptr_t)0xa7a7a7a7a7a7a7a7ULL; +static const uintptr_t cache_bin_preceding_junk = JUNK_ADDR; +/* Note: JUNK_ADDR vs. JUNK_ADDR + 1 -- this tells you which pointer leaked. */ +static const uintptr_t cache_bin_trailing_junk = JUNK_ADDR + 1; +/* + * A pointer used to initialize a fake stack_head for disabled small bins + * so that the enabled/disabled assessment does not rely on ncached_max. + */ +extern const uintptr_t disabled_bin; /* * That implies the following value, for the maximum number of items in any @@ -38,8 +45,8 @@ static const uintptr_t cache_bin_trailing_junk = * 1 << (sizeof(cache_bin_sz_t) * 8) * bytes spread across pointer sized objects to get the maximum. */ -#define CACHE_BIN_NCACHED_MAX (((size_t)1 << sizeof(cache_bin_sz_t) * 8) \ - / sizeof(void *) - 1) +#define CACHE_BIN_NCACHED_MAX \ + (((size_t)1 << sizeof(cache_bin_sz_t) * 8) / sizeof(void *) - 1) /* * This lives inside the cache_bin (for locality reasons), and is initialized @@ -101,7 +108,7 @@ struct cache_bin_s { * Since the stack grows down, this is a higher address than * low_bits_full. */ - uint16_t low_bits_low_water; + cache_bin_sz_t low_bits_low_water; /* * The low bits of the value that stack_head will take on when the array @@ -112,7 +119,7 @@ struct cache_bin_s { * Recall that since the stack grows down, this is the lowest available * address in the array for caching. Only adjusted when stashing items. */ - uint16_t low_bits_full; + cache_bin_sz_t low_bits_full; /* * The low bits of the value that stack_head will take on when the array @@ -121,7 +128,10 @@ struct cache_bin_s { * The stack grows down -- this is one past the highest address in the * array. Immutable after initialization. */ - uint16_t low_bits_empty; + cache_bin_sz_t low_bits_empty; + + /* The maximum number of cached items in the bin. */ + cache_bin_info_t bin_info; }; /* @@ -142,8 +152,8 @@ struct cache_bin_array_descriptor_s { }; static inline void -cache_bin_array_descriptor_init(cache_bin_array_descriptor_t *descriptor, - cache_bin_t *bins) { +cache_bin_array_descriptor_init( + cache_bin_array_descriptor_t *descriptor, cache_bin_t *bins) { ql_elm_new(descriptor, link); descriptor->bins = bins; } @@ -168,10 +178,41 @@ cache_bin_nonfast_aligned(const void *ptr) { return ((uintptr_t)ptr & san_cache_bin_nonfast_mask) == 0; } +static inline const void * +cache_bin_disabled_bin_stack(void) { + return &disabled_bin; +} + +/* + * If a cache bin was zero initialized (either because it lives in static or + * thread-local storage, or was memset to 0), this function indicates whether or + * not cache_bin_init was called on it. + */ +static inline bool +cache_bin_still_zero_initialized(cache_bin_t *bin) { + return bin->stack_head == NULL; +} + +static inline bool +cache_bin_disabled(cache_bin_t *bin) { + bool disabled = (bin->stack_head == cache_bin_disabled_bin_stack()); + if (disabled) { + assert((uintptr_t)(*bin->stack_head) == JUNK_ADDR); + } + return disabled; +} + +/* Gets ncached_max without asserting that the bin is enabled. */ +static inline cache_bin_sz_t +cache_bin_ncached_max_get_unsafe(cache_bin_t *bin) { + return bin->bin_info.ncached_max; +} + /* Returns ncached_max: Upper limit on ncached. */ static inline cache_bin_sz_t -cache_bin_info_ncached_max(cache_bin_info_t *info) { - return info->ncached_max; +cache_bin_ncached_max_get(cache_bin_t *bin) { + assert(!cache_bin_disabled(bin)); + return cache_bin_ncached_max_get_unsafe(bin); } /* @@ -181,7 +222,8 @@ cache_bin_info_ncached_max(cache_bin_info_t *info) { * with later. */ static inline void -cache_bin_assert_earlier(cache_bin_t *bin, uint16_t earlier, uint16_t later) { +cache_bin_assert_earlier( + cache_bin_t *bin, cache_bin_sz_t earlier, cache_bin_sz_t later) { if (earlier > later) { assert(bin->low_bits_full > bin->low_bits_empty); } @@ -193,28 +235,19 @@ cache_bin_assert_earlier(cache_bin_t *bin, uint16_t earlier, uint16_t later) { * Does difference calculations that handle wraparound correctly. Earlier must * be associated with the position earlier in memory. */ -static inline uint16_t -cache_bin_diff(cache_bin_t *bin, uint16_t earlier, uint16_t later, bool racy) { - /* - * When it's racy, bin->low_bits_full can be modified concurrently. It - * can cross the uint16_t max value and become less than - * bin->low_bits_empty at the time of the check. - */ - if (!racy) { - cache_bin_assert_earlier(bin, earlier, later); - } +static inline cache_bin_sz_t +cache_bin_diff(cache_bin_t *bin, cache_bin_sz_t earlier, cache_bin_sz_t later) { + cache_bin_assert_earlier(bin, earlier, later); return later - earlier; } /* * Number of items currently cached in the bin, without checking ncached_max. - * We require specifying whether or not the request is racy or not (i.e. whether - * or not concurrent modifications are possible). */ static inline cache_bin_sz_t -cache_bin_ncached_get_internal(cache_bin_t *bin, bool racy) { +cache_bin_ncached_get_internal(cache_bin_t *bin) { cache_bin_sz_t diff = cache_bin_diff(bin, - (uint16_t)(uintptr_t)bin->stack_head, bin->low_bits_empty, racy); + (cache_bin_sz_t)(uintptr_t)bin->stack_head, bin->low_bits_empty); cache_bin_sz_t n = diff / sizeof(void *); /* * We have undefined behavior here; if this function is called from the @@ -225,7 +258,7 @@ cache_bin_ncached_get_internal(cache_bin_t *bin, bool racy) { * fast paths. This should still be "safe" in the sense of generating * the correct assembly for the foreseeable future, though. */ - assert(n == 0 || *(bin->stack_head) != NULL || racy); + assert(n == 0 || *(bin->stack_head) != NULL); return n; } @@ -235,10 +268,9 @@ cache_bin_ncached_get_internal(cache_bin_t *bin, bool racy) { * possible. */ static inline cache_bin_sz_t -cache_bin_ncached_get_local(cache_bin_t *bin, cache_bin_info_t *info) { - cache_bin_sz_t n = cache_bin_ncached_get_internal(bin, - /* racy */ false); - assert(n <= cache_bin_info_ncached_max(info)); +cache_bin_ncached_get_local(cache_bin_t *bin) { + cache_bin_sz_t n = cache_bin_ncached_get_internal(bin); + assert(n <= cache_bin_ncached_max_get(bin)); return n; } @@ -253,10 +285,9 @@ cache_bin_ncached_get_local(cache_bin_t *bin, cache_bin_info_t *info) { static inline void ** cache_bin_empty_position_get(cache_bin_t *bin) { cache_bin_sz_t diff = cache_bin_diff(bin, - (uint16_t)(uintptr_t)bin->stack_head, bin->low_bits_empty, - /* racy */ false); - uintptr_t empty_bits = (uintptr_t)bin->stack_head + diff; - void **ret = (void **)empty_bits; + (cache_bin_sz_t)(uintptr_t)bin->stack_head, bin->low_bits_empty); + byte_t *empty_bits = (byte_t *)bin->stack_head + diff; + void **ret = (void **)empty_bits; assert(ret >= bin->stack_head); @@ -273,10 +304,10 @@ cache_bin_empty_position_get(cache_bin_t *bin) { * multithreaded environment. Currently concurrent access happens only during * arena statistics collection. */ -static inline uint16_t -cache_bin_low_bits_low_bound_get(cache_bin_t *bin, cache_bin_info_t *info) { - return (uint16_t)bin->low_bits_empty - - info->ncached_max * sizeof(void *); +static inline cache_bin_sz_t +cache_bin_low_bits_low_bound_get(cache_bin_t *bin) { + return (cache_bin_sz_t)bin->low_bits_empty + - cache_bin_ncached_max_get(bin) * sizeof(void *); } /* @@ -285,9 +316,9 @@ cache_bin_low_bits_low_bound_get(cache_bin_t *bin, cache_bin_info_t *info) { * A pointer to the position with the lowest address of the backing array. */ static inline void ** -cache_bin_low_bound_get(cache_bin_t *bin, cache_bin_info_t *info) { - cache_bin_sz_t ncached_max = cache_bin_info_ncached_max(info); - void **ret = cache_bin_empty_position_get(bin) - ncached_max; +cache_bin_low_bound_get(cache_bin_t *bin) { + cache_bin_sz_t ncached_max = cache_bin_ncached_max_get(bin); + void **ret = cache_bin_empty_position_get(bin) - ncached_max; assert(ret <= bin->stack_head); return ret; @@ -298,8 +329,8 @@ cache_bin_low_bound_get(cache_bin_t *bin, cache_bin_info_t *info) { * batch fill a nonempty cache bin. */ static inline void -cache_bin_assert_empty(cache_bin_t *bin, cache_bin_info_t *info) { - assert(cache_bin_ncached_get_local(bin, info) == 0); +cache_bin_assert_empty(cache_bin_t *bin) { + assert(cache_bin_ncached_get_local(bin) == 0); assert(cache_bin_empty_position_get(bin) == bin->stack_head); } @@ -310,18 +341,19 @@ cache_bin_assert_empty(cache_bin_t *bin, cache_bin_info_t *info) { */ static inline cache_bin_sz_t cache_bin_low_water_get_internal(cache_bin_t *bin) { - return cache_bin_diff(bin, bin->low_bits_low_water, - bin->low_bits_empty, /* racy */ false) / sizeof(void *); + return cache_bin_diff(bin, bin->low_bits_low_water, bin->low_bits_empty) + / sizeof(void *); } /* Returns the numeric value of low water in [0, ncached]. */ static inline cache_bin_sz_t -cache_bin_low_water_get(cache_bin_t *bin, cache_bin_info_t *info) { +cache_bin_low_water_get(cache_bin_t *bin) { cache_bin_sz_t low_water = cache_bin_low_water_get_internal(bin); - assert(low_water <= cache_bin_info_ncached_max(info)); - assert(low_water <= cache_bin_ncached_get_local(bin, info)); + assert(low_water <= cache_bin_ncached_max_get(bin)); + assert(low_water <= cache_bin_ncached_get_local(bin)); - cache_bin_assert_earlier(bin, (uint16_t)(uintptr_t)bin->stack_head, + cache_bin_assert_earlier(bin, + (cache_bin_sz_t)(uintptr_t)bin->stack_head, bin->low_bits_low_water); return low_water; @@ -333,12 +365,14 @@ cache_bin_low_water_get(cache_bin_t *bin, cache_bin_info_t *info) { */ static inline void cache_bin_low_water_set(cache_bin_t *bin) { - bin->low_bits_low_water = (uint16_t)(uintptr_t)bin->stack_head; + assert(!cache_bin_disabled(bin)); + bin->low_bits_low_water = (cache_bin_sz_t)(uintptr_t)bin->stack_head; } static inline void cache_bin_low_water_adjust(cache_bin_t *bin) { - if (cache_bin_ncached_get_internal(bin, /* racy */ false) + assert(!cache_bin_disabled(bin)); + if (cache_bin_ncached_get_internal(bin) < cache_bin_low_water_get_internal(bin)) { cache_bin_low_water_set(bin); } @@ -358,9 +392,9 @@ cache_bin_alloc_impl(cache_bin_t *bin, bool *success, bool adjust_low_water) { * This may read from the empty position; however the loaded value won't * be used. It's safe because the stack has one more slot reserved. */ - void *ret = *bin->stack_head; - uint16_t low_bits = (uint16_t)(uintptr_t)bin->stack_head; - void **new_head = bin->stack_head + 1; + void *ret = *bin->stack_head; + cache_bin_sz_t low_bits = (cache_bin_sz_t)(uintptr_t)bin->stack_head; + void **new_head = bin->stack_head + 1; /* * Note that the low water mark is at most empty; if we pass this check, @@ -382,7 +416,7 @@ cache_bin_alloc_impl(cache_bin_t *bin, bool *success, bool adjust_low_water) { */ if (likely(low_bits != bin->low_bits_empty)) { bin->stack_head = new_head; - bin->low_bits_low_water = (uint16_t)(uintptr_t)new_head; + bin->low_bits_low_water = (cache_bin_sz_t)(uintptr_t)new_head; *success = true; return ret; } @@ -410,8 +444,7 @@ cache_bin_alloc(cache_bin_t *bin, bool *success) { JEMALLOC_ALWAYS_INLINE cache_bin_sz_t cache_bin_alloc_batch(cache_bin_t *bin, size_t num, void **out) { - cache_bin_sz_t n = cache_bin_ncached_get_internal(bin, - /* racy */ false); + cache_bin_sz_t n = cache_bin_ncached_get_internal(bin); if (n > num) { n = (cache_bin_sz_t)num; } @@ -424,7 +457,37 @@ cache_bin_alloc_batch(cache_bin_t *bin, size_t num, void **out) { JEMALLOC_ALWAYS_INLINE bool cache_bin_full(cache_bin_t *bin) { - return ((uint16_t)(uintptr_t)bin->stack_head == bin->low_bits_full); + return ( + (cache_bin_sz_t)(uintptr_t)bin->stack_head == bin->low_bits_full); +} + +/* + * Scans the allocated area of the cache_bin for the given pointer up to limit. + * Fires safety_check_fail if the ptr is found and returns true. + */ +JEMALLOC_ALWAYS_INLINE bool +cache_bin_dalloc_safety_checks(cache_bin_t *bin, void *ptr) { + if (!config_debug || opt_debug_double_free_max_scan == 0) { + return false; + } + + cache_bin_sz_t ncached = cache_bin_ncached_get_internal(bin); + unsigned max_scan = opt_debug_double_free_max_scan < ncached + ? opt_debug_double_free_max_scan + : ncached; + + void **cur = bin->stack_head; + void **limit = cur + max_scan; + for (; cur < limit; cur++) { + if (*cur == ptr) { + safety_check_fail( + "Invalid deallocation detected: double free of " + "pointer %p\n", + ptr); + return true; + } + } + return false; } /* @@ -436,10 +499,14 @@ cache_bin_dalloc_easy(cache_bin_t *bin, void *ptr) { return false; } + if (unlikely(cache_bin_dalloc_safety_checks(bin, ptr))) { + return true; + } + bin->stack_head--; *bin->stack_head = ptr; cache_bin_assert_earlier(bin, bin->low_bits_full, - (uint16_t)(uintptr_t)bin->stack_head); + (cache_bin_sz_t)(uintptr_t)bin->stack_head); return true; } @@ -452,11 +519,12 @@ cache_bin_stash(cache_bin_t *bin, void *ptr) { } /* Stash at the full position, in the [full, head) range. */ - uint16_t low_bits_head = (uint16_t)(uintptr_t)bin->stack_head; + cache_bin_sz_t low_bits_head = (cache_bin_sz_t)(uintptr_t) + bin->stack_head; /* Wraparound handled as well. */ - uint16_t diff = cache_bin_diff(bin, bin->low_bits_full, low_bits_head, - /* racy */ false); - *(void **)((uintptr_t)bin->stack_head - diff) = ptr; + cache_bin_sz_t diff = cache_bin_diff( + bin, bin->low_bits_full, low_bits_head); + *(void **)((byte_t *)bin->stack_head - diff) = ptr; assert(!cache_bin_full(bin)); bin->low_bits_full += sizeof(void *); @@ -465,67 +533,101 @@ cache_bin_stash(cache_bin_t *bin, void *ptr) { return true; } -/* - * Get the number of stashed pointers. - * - * When called from a thread not owning the TLS (i.e. racy = true), it's - * important to keep in mind that 'bin->stack_head' and 'bin->low_bits_full' can - * be modified concurrently and almost none assertions about their values can be - * made. - */ +/* Get the number of stashed pointers. */ JEMALLOC_ALWAYS_INLINE cache_bin_sz_t -cache_bin_nstashed_get_internal(cache_bin_t *bin, cache_bin_info_t *info, - bool racy) { - cache_bin_sz_t ncached_max = cache_bin_info_ncached_max(info); - uint16_t low_bits_low_bound = cache_bin_low_bits_low_bound_get(bin, - info); - - cache_bin_sz_t n = cache_bin_diff(bin, low_bits_low_bound, - bin->low_bits_full, racy) / sizeof(void *); +cache_bin_nstashed_get_internal(cache_bin_t *bin) { + cache_bin_sz_t ncached_max = cache_bin_ncached_max_get(bin); + cache_bin_sz_t low_bits_low_bound = cache_bin_low_bits_low_bound_get( + bin); + + cache_bin_sz_t n = cache_bin_diff( + bin, low_bits_low_bound, bin->low_bits_full) + / sizeof(void *); assert(n <= ncached_max); - - if (!racy) { + if (config_debug && n != 0) { /* Below are for assertions only. */ - void **low_bound = cache_bin_low_bound_get(bin, info); + void **low_bound = cache_bin_low_bound_get(bin); - assert((uint16_t)(uintptr_t)low_bound == low_bits_low_bound); + assert( + (cache_bin_sz_t)(uintptr_t)low_bound == low_bits_low_bound); void *stashed = *(low_bound + n - 1); - bool aligned = cache_bin_nonfast_aligned(stashed); + bool aligned = cache_bin_nonfast_aligned(stashed); #ifdef JEMALLOC_JET /* Allow arbitrary pointers to be stashed in tests. */ aligned = true; #endif - assert(n == 0 || (stashed != NULL && aligned)); + assert(stashed != NULL && aligned); } return n; } JEMALLOC_ALWAYS_INLINE cache_bin_sz_t -cache_bin_nstashed_get_local(cache_bin_t *bin, cache_bin_info_t *info) { - cache_bin_sz_t n = cache_bin_nstashed_get_internal(bin, info, - /* racy */ false); - assert(n <= cache_bin_info_ncached_max(info)); +cache_bin_nstashed_get_local(cache_bin_t *bin) { + cache_bin_sz_t n = cache_bin_nstashed_get_internal(bin); + assert(n <= cache_bin_ncached_max_get(bin)); return n; } /* * Obtain a racy view of the number of items currently in the cache bin, in the * presence of possible concurrent modifications. + * + * Note that this is the only racy function in this header. Any other functions + * are assumed to be non-racy. The "racy" term here means accessed from another + * thread (that is not the owner of the specific cache bin). This only happens + * when gathering stats (read-only). The only change because of the racy + * condition is that assertions based on mutable fields are omitted. + * + * It's important to keep in mind that 'bin->stack_head' and + * 'bin->low_bits_full' can be modified concurrently and almost no assertions + * about their values can be made. + * + * This function should not call other utility functions because the racy + * condition may cause unexpected / undefined behaviors in unverified utility + * functions. Currently, this function calls two utility functions + * cache_bin_ncached_max_get and cache_bin_low_bits_low_bound_get because + * they help access values that will not be concurrently modified. */ static inline void -cache_bin_nitems_get_remote(cache_bin_t *bin, cache_bin_info_t *info, - cache_bin_sz_t *ncached, cache_bin_sz_t *nstashed) { - cache_bin_sz_t n = cache_bin_ncached_get_internal(bin, /* racy */ true); - assert(n <= cache_bin_info_ncached_max(info)); +cache_bin_nitems_get_remote( + cache_bin_t *bin, cache_bin_sz_t *ncached, cache_bin_sz_t *nstashed) { + /* Racy version of cache_bin_ncached_get_internal. */ + cache_bin_sz_t diff = bin->low_bits_empty + - (cache_bin_sz_t)(uintptr_t)bin->stack_head; + cache_bin_sz_t n = diff / sizeof(void *); *ncached = n; - n = cache_bin_nstashed_get_internal(bin, info, /* racy */ true); - assert(n <= cache_bin_info_ncached_max(info)); + /* Racy version of cache_bin_nstashed_get_internal. */ + cache_bin_sz_t low_bits_low_bound = cache_bin_low_bits_low_bound_get( + bin); + n = (bin->low_bits_full - low_bits_low_bound) / sizeof(void *); *nstashed = n; - /* Note that cannot assert ncached + nstashed <= ncached_max (racy). */ + /* + * Note that cannot assert anything regarding ncached_max because + * it can be configured on the fly and is thus racy. + */ } +/* + * For small bins, used to calculate how many items to fill at a time. + * The final nfill is calculated by (ncached_max >> (base - offset)). + */ +typedef struct cache_bin_fill_ctl_s cache_bin_fill_ctl_t; +struct cache_bin_fill_ctl_s { + uint8_t base; + uint8_t offset; +}; + +/* + * Limit how many items can be flushed in a batch (Which is the upper bound + * for the nflush parameter in tcache_bin_flush_impl()). + * This is to avoid stack overflow when we do batch edata look up, which + * reserves a nflush * sizeof(emap_batch_lookup_result_t) stack variable. + */ +#define CACHE_BIN_NFLUSH_BATCH_MAX \ + ((VARIABLE_ARRAY_SIZE_MAX >> LG_SIZEOF_PTR) - 1) + /* * Filling and flushing are done in batch, on arrays of void *s. For filling, * the arrays go forward, and can be accessed with ordinary array arithmetic. @@ -546,7 +648,7 @@ cache_bin_nitems_get_remote(cache_bin_t *bin, cache_bin_info_t *info, typedef struct cache_bin_ptr_array_s cache_bin_ptr_array_t; struct cache_bin_ptr_array_s { cache_bin_sz_t n; - void **ptr; + void **ptr; }; /* @@ -558,18 +660,18 @@ struct cache_bin_ptr_array_s { * representations is easy (since they'll require an alloca in the calling * frame). */ -#define CACHE_BIN_PTR_ARRAY_DECLARE(name, nval) \ - cache_bin_ptr_array_t name; \ - name.n = (nval) +#define CACHE_BIN_PTR_ARRAY_DECLARE(name, nval) \ + cache_bin_ptr_array_t name; \ + name.n = (nval) /* * Start a fill. The bin must be empty, and This must be followed by a * finish_fill call before doing any alloc/dalloc operations on the bin. */ static inline void -cache_bin_init_ptr_array_for_fill(cache_bin_t *bin, cache_bin_info_t *info, - cache_bin_ptr_array_t *arr, cache_bin_sz_t nfill) { - cache_bin_assert_empty(bin, info); +cache_bin_init_ptr_array_for_fill( + cache_bin_t *bin, cache_bin_ptr_array_t *arr, cache_bin_sz_t nfill) { + cache_bin_assert_empty(bin); arr->ptr = cache_bin_empty_position_get(bin) - nfill; } @@ -579,15 +681,19 @@ cache_bin_init_ptr_array_for_fill(cache_bin_t *bin, cache_bin_info_t *info, * case of OOM. */ static inline void -cache_bin_finish_fill(cache_bin_t *bin, cache_bin_info_t *info, - cache_bin_ptr_array_t *arr, cache_bin_sz_t nfilled) { - cache_bin_assert_empty(bin, info); +cache_bin_finish_fill( + cache_bin_t *bin, cache_bin_ptr_array_t *arr, cache_bin_sz_t nfilled) { + cache_bin_assert_empty(bin); void **empty_position = cache_bin_empty_position_get(bin); if (nfilled < arr->n) { memmove(empty_position - nfilled, empty_position - arr->n, nfilled * sizeof(void *)); } bin->stack_head = empty_position - nfilled; + /* Reset the bin stats as it's merged during fill. */ + if (config_stats) { + bin->tstats.nrequests = 0; + } } /* @@ -595,55 +701,61 @@ cache_bin_finish_fill(cache_bin_t *bin, cache_bin_info_t *info, * everything we give them. */ static inline void -cache_bin_init_ptr_array_for_flush(cache_bin_t *bin, cache_bin_info_t *info, - cache_bin_ptr_array_t *arr, cache_bin_sz_t nflush) { +cache_bin_init_ptr_array_for_flush( + cache_bin_t *bin, cache_bin_ptr_array_t *arr, cache_bin_sz_t nflush) { arr->ptr = cache_bin_empty_position_get(bin) - nflush; - assert(cache_bin_ncached_get_local(bin, info) == 0 - || *arr->ptr != NULL); + assert(cache_bin_ncached_get_local(bin) == 0 || *arr->ptr != NULL); } static inline void -cache_bin_finish_flush(cache_bin_t *bin, cache_bin_info_t *info, - cache_bin_ptr_array_t *arr, cache_bin_sz_t nflushed) { - unsigned rem = cache_bin_ncached_get_local(bin, info) - nflushed; - memmove(bin->stack_head + nflushed, bin->stack_head, - rem * sizeof(void *)); - bin->stack_head = bin->stack_head + nflushed; +cache_bin_finish_flush( + cache_bin_t *bin, cache_bin_ptr_array_t *arr, cache_bin_sz_t nflushed) { + unsigned rem = cache_bin_ncached_get_local(bin) - nflushed; + memmove( + bin->stack_head + nflushed, bin->stack_head, rem * sizeof(void *)); + bin->stack_head += nflushed; cache_bin_low_water_adjust(bin); + /* Reset the bin stats as it's merged during flush. */ + if (config_stats) { + bin->tstats.nrequests = 0; + } } static inline void cache_bin_init_ptr_array_for_stashed(cache_bin_t *bin, szind_t binind, - cache_bin_info_t *info, cache_bin_ptr_array_t *arr, - cache_bin_sz_t nstashed) { + cache_bin_ptr_array_t *arr, cache_bin_sz_t nstashed) { assert(nstashed > 0); - assert(cache_bin_nstashed_get_local(bin, info) == nstashed); + assert(cache_bin_nstashed_get_local(bin) == nstashed); - void **low_bound = cache_bin_low_bound_get(bin, info); + void **low_bound = cache_bin_low_bound_get(bin); arr->ptr = low_bound; assert(*arr->ptr != NULL); } static inline void -cache_bin_finish_flush_stashed(cache_bin_t *bin, cache_bin_info_t *info) { - void **low_bound = cache_bin_low_bound_get(bin, info); +cache_bin_finish_flush_stashed(cache_bin_t *bin) { + void **low_bound = cache_bin_low_bound_get(bin); /* Reset the bin local full position. */ bin->low_bits_full = (uint16_t)(uintptr_t)low_bound; - assert(cache_bin_nstashed_get_local(bin, info) == 0); + assert(cache_bin_nstashed_get_local(bin) == 0); + /* Reset the bin stats as it's merged during flush. */ + if (config_stats) { + bin->tstats.nrequests = 0; + } } /* * Initialize a cache_bin_info to represent up to the given number of items in * the cache_bins it is associated with. */ -void cache_bin_info_init(cache_bin_info_t *bin_info, - cache_bin_sz_t ncached_max); +void cache_bin_info_init( + cache_bin_info_t *bin_info, cache_bin_sz_t ncached_max); /* * Given an array of initialized cache_bin_info_ts, determine how big an * allocation is required to initialize a full set of cache_bin_ts. */ -void cache_bin_info_compute_alloc(cache_bin_info_t *infos, szind_t ninfos, +void cache_bin_info_compute_alloc(const cache_bin_info_t *infos, szind_t ninfos, size_t *size, size_t *alignment); /* @@ -653,18 +765,13 @@ void cache_bin_info_compute_alloc(cache_bin_info_t *infos, szind_t ninfos, * cache_bin_postincrement. *alloc_cur will then point immediately past the end * of the allocation. */ -void cache_bin_preincrement(cache_bin_info_t *infos, szind_t ninfos, - void *alloc, size_t *cur_offset); -void cache_bin_postincrement(cache_bin_info_t *infos, szind_t ninfos, +void cache_bin_preincrement(const cache_bin_info_t *infos, szind_t ninfos, void *alloc, size_t *cur_offset); -void cache_bin_init(cache_bin_t *bin, cache_bin_info_t *info, void *alloc, +void cache_bin_postincrement(void *alloc, size_t *cur_offset); +void cache_bin_init(cache_bin_t *bin, const cache_bin_info_t *info, void *alloc, size_t *cur_offset); +void cache_bin_init_disabled(cache_bin_t *bin, cache_bin_sz_t ncached_max); -/* - * If a cache bin was zero initialized (either because it lives in static or - * thread-local storage, or was memset to 0), this function indicates whether or - * not cache_bin_init was called on it. - */ -bool cache_bin_still_zero_initialized(cache_bin_t *bin); +bool cache_bin_stack_use_thp(void); #endif /* JEMALLOC_INTERNAL_CACHE_BIN_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/ckh.h b/dep/jemalloc/include/jemalloc/internal/ckh.h index 7b3850bc168e7..01b27e8f72f09 100644 --- a/dep/jemalloc/include/jemalloc/internal/ckh.h +++ b/dep/jemalloc/include/jemalloc/internal/ckh.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_CKH_H #define JEMALLOC_INTERNAL_CKH_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/tsd.h" /* Cuckoo hashing implementation. Skip to the end for the interface. */ @@ -21,8 +22,8 @@ #define LG_CKH_BUCKET_CELLS (LG_CACHELINE - LG_SIZEOF_PTR - 1) /* Typedefs to allow easy function pointer passing. */ -typedef void ckh_hash_t (const void *, size_t[2]); -typedef bool ckh_keycomp_t (const void *, const void *); +typedef void ckh_hash_t(const void *, size_t[2]); +typedef bool ckh_keycomp_t(const void *, const void *); /* Hash table cell. */ typedef struct { @@ -55,7 +56,7 @@ typedef struct { unsigned lg_curbuckets; /* Hash and comparison functions. */ - ckh_hash_t *hash; + ckh_hash_t *hash; ckh_keycomp_t *keycomp; /* Hash table with 2^lg_curbuckets buckets. */ @@ -88,8 +89,8 @@ bool ckh_iter(ckh_t *ckh, size_t *tabind, void **key, void **data); * the key and value, and doesn't do any lifetime management. */ bool ckh_insert(tsd_t *tsd, ckh_t *ckh, const void *key, const void *data); -bool ckh_remove(tsd_t *tsd, ckh_t *ckh, const void *searchkey, void **key, - void **data); +bool ckh_remove( + tsd_t *tsd, ckh_t *ckh, const void *searchkey, void **key, void **data); bool ckh_search(ckh_t *ckh, const void *searchkey, void **key, void **data); /* Some useful hash and comparison functions for strings and pointers. */ diff --git a/dep/jemalloc/include/jemalloc/internal/conf.h b/dep/jemalloc/include/jemalloc/internal/conf.h new file mode 100644 index 0000000000000..26983ee9f0bbb --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/conf.h @@ -0,0 +1,23 @@ +#ifndef JEMALLOC_INTERNAL_CONF_H +#define JEMALLOC_INTERNAL_CONF_H + +#include "jemalloc/internal/sc.h" + +void malloc_conf_init(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS], + char readlink_buf[PATH_MAX + 1]); +void malloc_abort_invalid_conf(void); + +#ifdef JEMALLOC_JET +extern bool had_conf_error; + +bool conf_next(char const **opts_p, char const **k_p, size_t *klen_p, + char const **v_p, size_t *vlen_p); +void conf_error( + const char *msg, const char *k, size_t klen, const char *v, size_t vlen); +bool conf_handle_bool(const char *v, size_t vlen, bool *result); +bool conf_handle_signed(const char *v, size_t vlen, intmax_t min, intmax_t max, + bool check_min, bool check_max, bool clip, intmax_t *result); +bool conf_handle_char_p(const char *v, size_t vlen, char *dest, size_t dest_sz); +#endif + +#endif /* JEMALLOC_INTERNAL_CONF_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/counter.h b/dep/jemalloc/include/jemalloc/internal/counter.h index 79abf0648b87b..0f38d40c6d0c8 100644 --- a/dep/jemalloc/include/jemalloc/internal/counter.h +++ b/dep/jemalloc/include/jemalloc/internal/counter.h @@ -1,12 +1,14 @@ #ifndef JEMALLOC_INTERNAL_COUNTER_H #define JEMALLOC_INTERNAL_COUNTER_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/lockedint.h" #include "jemalloc/internal/mutex.h" typedef struct counter_accum_s { LOCKEDINT_MTX_DECLARE(mtx) locked_u64_t accumbytes; - uint64_t interval; + uint64_t interval; } counter_accum_t; JEMALLOC_ALWAYS_INLINE bool diff --git a/dep/jemalloc/include/jemalloc/internal/ctl.h b/dep/jemalloc/include/jemalloc/internal/ctl.h index 63d27f8aad378..82035fe366b11 100644 --- a/dep/jemalloc/include/jemalloc/internal/ctl.h +++ b/dep/jemalloc/include/jemalloc/internal/ctl.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_CTL_H #define JEMALLOC_INTERNAL_CTL_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_stats.h" +#include "jemalloc/internal/background_thread_structs.h" +#include "jemalloc/internal/bin_stats.h" #include "jemalloc/internal/jemalloc_internal_types.h" #include "jemalloc/internal/malloc_io.h" #include "jemalloc/internal/mutex_prof.h" @@ -9,50 +13,52 @@ #include "jemalloc/internal/stats.h" /* Maximum ctl tree depth. */ -#define CTL_MAX_DEPTH 7 +#define CTL_MAX_DEPTH 7 +#define CTL_MULTI_SETTING_MAX_LEN 1000 typedef struct ctl_node_s { bool named; } ctl_node_t; typedef struct ctl_named_node_s { - ctl_node_t node; + ctl_node_t node; const char *name; /* If (nchildren == 0), this is a terminal node. */ - size_t nchildren; + size_t nchildren; const ctl_node_t *children; - int (*ctl)(tsd_t *, const size_t *, size_t, void *, size_t *, void *, - size_t); + int (*ctl)( + tsd_t *, const size_t *, size_t, void *, size_t *, void *, size_t); } ctl_named_node_t; typedef struct ctl_indexed_node_s { struct ctl_node_s node; - const ctl_named_node_t *(*index)(tsdn_t *, const size_t *, size_t, - size_t); + const ctl_named_node_t *(*index)( + tsdn_t *, const size_t *, size_t, size_t); } ctl_indexed_node_t; typedef struct ctl_arena_stats_s { arena_stats_t astats; /* Aggregate stats for small size classes, based on bin stats. */ - size_t allocated_small; + size_t allocated_small; uint64_t nmalloc_small; uint64_t ndalloc_small; uint64_t nrequests_small; uint64_t nfills_small; uint64_t nflushes_small; - bin_stats_data_t bstats[SC_NBINS]; + bin_stats_data_t bstats[SC_NBINS]; arena_stats_large_t lstats[SC_NSIZES - SC_NBINS]; - pac_estats_t estats[SC_NPSIZES]; - hpa_shard_stats_t hpastats; - sec_stats_t secstats; + pac_estats_t estats[SC_NPSIZES]; + hpa_shard_stats_t hpastats; } ctl_arena_stats_t; typedef struct ctl_stats_s { size_t allocated; size_t active; size_t metadata; + size_t metadata_edata; + size_t metadata_rtree; size_t metadata_thp; size_t resident; size_t mapped; @@ -65,17 +71,17 @@ typedef struct ctl_stats_s { typedef struct ctl_arena_s ctl_arena_t; struct ctl_arena_s { unsigned arena_ind; - bool initialized; + bool initialized; ql_elm(ctl_arena_t) destroyed_link; /* Basic stats, supported even if !config_stats. */ - unsigned nthreads; + unsigned nthreads; const char *dss; - ssize_t dirty_decay_ms; - ssize_t muzzy_decay_ms; - size_t pactive; - size_t pdirty; - size_t pmuzzy; + ssize_t dirty_decay_ms; + ssize_t muzzy_decay_ms; + size_t pactive; + size_t pdirty; + size_t pmuzzy; /* NULL if !config_stats. */ ctl_arena_stats_t *astats; @@ -100,60 +106,67 @@ int ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp, int ctl_nametomib(tsd_t *tsd, const char *name, size_t *mibp, size_t *miblenp); int ctl_bymib(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen); -int ctl_mibnametomib(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, - size_t *miblenp); -int ctl_bymibname(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, - size_t *miblenp, void *oldp, size_t *oldlenp, void *newp, size_t newlen); +int ctl_mibnametomib( + tsd_t *tsd, size_t *mib, size_t miblen, const char *name, size_t *miblenp); +int ctl_bymibname(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, + size_t *miblenp, void *oldp, size_t *oldlenp, void *newp, size_t newlen); bool ctl_boot(void); void ctl_prefork(tsdn_t *tsdn); void ctl_postfork_parent(tsdn_t *tsdn); void ctl_postfork_child(tsdn_t *tsdn); void ctl_mtx_assert_held(tsdn_t *tsdn); -#define xmallctl(name, oldp, oldlenp, newp, newlen) do { \ - if (je_mallctl(name, oldp, oldlenp, newp, newlen) \ - != 0) { \ - malloc_printf( \ - ": Failure in xmallctl(\"%s\", ...)\n", \ - name); \ - abort(); \ - } \ -} while (0) - -#define xmallctlnametomib(name, mibp, miblenp) do { \ - if (je_mallctlnametomib(name, mibp, miblenp) != 0) { \ - malloc_printf(": Failure in " \ - "xmallctlnametomib(\"%s\", ...)\n", name); \ - abort(); \ - } \ -} while (0) - -#define xmallctlbymib(mib, miblen, oldp, oldlenp, newp, newlen) do { \ - if (je_mallctlbymib(mib, miblen, oldp, oldlenp, newp, \ - newlen) != 0) { \ - malloc_write( \ - ": Failure in xmallctlbymib()\n"); \ - abort(); \ - } \ -} while (0) - -#define xmallctlmibnametomib(mib, miblen, name, miblenp) do { \ - if (ctl_mibnametomib(tsd_fetch(), mib, miblen, name, miblenp) \ - != 0) { \ - malloc_write( \ - ": Failure in ctl_mibnametomib()\n"); \ - abort(); \ - } \ -} while (0) - -#define xmallctlbymibname(mib, miblen, name, miblenp, oldp, oldlenp, \ - newp, newlen) do { \ - if (ctl_bymibname(tsd_fetch(), mib, miblen, name, miblenp, \ - oldp, oldlenp, newp, newlen) != 0) { \ - malloc_write( \ - ": Failure in ctl_bymibname()\n"); \ - abort(); \ - } \ -} while (0) +#define xmallctl(name, oldp, oldlenp, newp, newlen) \ + do { \ + if (je_mallctl(name, oldp, oldlenp, newp, newlen) != 0) { \ + malloc_printf( \ + ": Failure in xmallctl(\"%s\", ...)\n", \ + name); \ + abort(); \ + } \ + } while (0) + +#define xmallctlnametomib(name, mibp, miblenp) \ + do { \ + if (je_mallctlnametomib(name, mibp, miblenp) != 0) { \ + malloc_printf( \ + ": Failure in " \ + "xmallctlnametomib(\"%s\", ...)\n", \ + name); \ + abort(); \ + } \ + } while (0) + +#define xmallctlbymib(mib, miblen, oldp, oldlenp, newp, newlen) \ + do { \ + if (je_mallctlbymib(mib, miblen, oldp, oldlenp, newp, newlen) \ + != 0) { \ + malloc_write( \ + ": Failure in xmallctlbymib()\n"); \ + abort(); \ + } \ + } while (0) + +#define xmallctlmibnametomib(mib, miblen, name, miblenp) \ + do { \ + if (ctl_mibnametomib(tsd_fetch(), mib, miblen, name, miblenp) \ + != 0) { \ + malloc_write( \ + ": Failure in ctl_mibnametomib()\n"); \ + abort(); \ + } \ + } while (0) + +#define xmallctlbymibname( \ + mib, miblen, name, miblenp, oldp, oldlenp, newp, newlen) \ + do { \ + if (ctl_bymibname(tsd_fetch(), mib, miblen, name, miblenp, \ + oldp, oldlenp, newp, newlen) \ + != 0) { \ + malloc_write( \ + ": Failure in ctl_bymibname()\n"); \ + abort(); \ + } \ + } while (0) #endif /* JEMALLOC_INTERNAL_CTL_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/decay.h b/dep/jemalloc/include/jemalloc/internal/decay.h index cf6a9d22c0107..e87736550ffac 100644 --- a/dep/jemalloc/include/jemalloc/internal/decay.h +++ b/dep/jemalloc/include/jemalloc/internal/decay.h @@ -1,9 +1,11 @@ #ifndef JEMALLOC_INTERNAL_DECAY_H #define JEMALLOC_INTERNAL_DECAY_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/mutex.h" #include "jemalloc/internal/smoothstep.h" -#define DECAY_UNBOUNDED_TIME_TO_PURGE ((uint64_t)-1) +#define DECAY_UNBOUNDED_TIME_TO_PURGE ((uint64_t) - 1) /* * The decay_t computes the number of pages we should purge at any given time. @@ -166,12 +168,12 @@ void decay_reinit(decay_t *decay, nstime_t *cur_time, ssize_t decay_ms); /* * Compute how many of 'npages_new' pages we would need to purge in 'time'. */ -uint64_t decay_npages_purge_in(decay_t *decay, nstime_t *time, - size_t npages_new); +uint64_t decay_npages_purge_in( + decay_t *decay, nstime_t *time, size_t npages_new); /* Returns true if the epoch advanced and there are pages to purge. */ -bool decay_maybe_advance_epoch(decay_t *decay, nstime_t *new_time, - size_t current_npages); +bool decay_maybe_advance_epoch( + decay_t *decay, nstime_t *new_time, size_t current_npages); /* * Calculates wait time until a number of pages in the interval @@ -180,7 +182,7 @@ bool decay_maybe_advance_epoch(decay_t *decay, nstime_t *new_time, * Returns number of nanoseconds or DECAY_UNBOUNDED_TIME_TO_PURGE in case of * indefinite wait. */ -uint64_t decay_ns_until_purge(decay_t *decay, size_t npages_current, - uint64_t npages_threshold); +uint64_t decay_ns_until_purge( + decay_t *decay, size_t npages_current, uint64_t npages_threshold); #endif /* JEMALLOC_INTERNAL_DECAY_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/div.h b/dep/jemalloc/include/jemalloc/internal/div.h index aebae9398cfdc..56d5f463fa461 100644 --- a/dep/jemalloc/include/jemalloc/internal/div.h +++ b/dep/jemalloc/include/jemalloc/internal/div.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_DIV_H #define JEMALLOC_INTERNAL_DIV_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/assert.h" /* diff --git a/dep/jemalloc/include/jemalloc/internal/ecache.h b/dep/jemalloc/include/jemalloc/internal/ecache.h index 71cae3e34c380..605733b51c5d5 100644 --- a/dep/jemalloc/include/jemalloc/internal/ecache.h +++ b/dep/jemalloc/include/jemalloc/internal/ecache.h @@ -1,15 +1,16 @@ #ifndef JEMALLOC_INTERNAL_ECACHE_H #define JEMALLOC_INTERNAL_ECACHE_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/eset.h" -#include "jemalloc/internal/san.h" #include "jemalloc/internal/mutex.h" +#include "jemalloc/internal/san.h" typedef struct ecache_s ecache_t; struct ecache_s { malloc_mutex_t mtx; - eset_t eset; - eset_t guarded_eset; + eset_t eset; + eset_t guarded_eset; /* All stored extents must be in the same state. */ extent_state_t state; /* The index of the ehooks the ecache is associated with. */ @@ -23,22 +24,22 @@ struct ecache_s { static inline size_t ecache_npages_get(ecache_t *ecache) { - return eset_npages_get(&ecache->eset) + - eset_npages_get(&ecache->guarded_eset); + return eset_npages_get(&ecache->eset) + + eset_npages_get(&ecache->guarded_eset); } /* Get the number of extents in the given page size index. */ static inline size_t ecache_nextents_get(ecache_t *ecache, pszind_t ind) { - return eset_nextents_get(&ecache->eset, ind) + - eset_nextents_get(&ecache->guarded_eset, ind); + return eset_nextents_get(&ecache->eset, ind) + + eset_nextents_get(&ecache->guarded_eset, ind); } /* Get the sum total bytes of the extents in the given page size index. */ static inline size_t ecache_nbytes_get(ecache_t *ecache, pszind_t ind) { - return eset_nbytes_get(&ecache->eset, ind) + - eset_nbytes_get(&ecache->guarded_eset, ind); + return eset_nbytes_get(&ecache->eset, ind) + + eset_nbytes_get(&ecache->guarded_eset, ind); } static inline unsigned diff --git a/dep/jemalloc/include/jemalloc/internal/edata.h b/dep/jemalloc/include/jemalloc/internal/edata.h index af039ea734aff..06b6c5454fdc2 100644 --- a/dep/jemalloc/include/jemalloc/internal/edata.h +++ b/dep/jemalloc/include/jemalloc/internal/edata.h @@ -1,12 +1,14 @@ #ifndef JEMALLOC_INTERNAL_EDATA_H #define JEMALLOC_INTERNAL_EDATA_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/bin_info.h" #include "jemalloc/internal/bit_util.h" #include "jemalloc/internal/hpdata.h" #include "jemalloc/internal/nstime.h" #include "jemalloc/internal/ph.h" +#include "jemalloc/internal/prof_types.h" #include "jemalloc/internal/ql.h" #include "jemalloc/internal/sc.h" #include "jemalloc/internal/slab_data.h" @@ -19,10 +21,18 @@ */ #define EDATA_ALIGNMENT 128 +/* + * Defines how many nodes visited when enumerating the heap to search for + * qualified extents. More nodes visited may result in better choices at + * the cost of longer search time. This size should not exceed 2^16 - 1 + * because we use uint16_t for accessing the queue needed for enumeration. + */ +#define ESET_ENUMERATE_MAX_NUM 32 + enum extent_state_e { - extent_state_active = 0, - extent_state_dirty = 1, - extent_state_muzzy = 2, + extent_state_active = 0, + extent_state_dirty = 1, + extent_state_muzzy = 2, extent_state_retained = 3, extent_state_transition = 4, /* States below are intermediate. */ extent_state_merging = 5, @@ -32,7 +42,7 @@ typedef enum extent_state_e extent_state_t; enum extent_head_state_e { EXTENT_NOT_HEAD, - EXTENT_IS_HEAD /* See comments in ehooks_default_merge_impl(). */ + EXTENT_IS_HEAD /* See comments in ehooks_default_merge_impl(). */ }; typedef enum extent_head_state_e extent_head_state_t; @@ -40,25 +50,22 @@ typedef enum extent_head_state_e extent_head_state_t; * Which implementation of the page allocator interface, (PAI, defined in * pai.h) owns the given extent? */ -enum extent_pai_e { - EXTENT_PAI_PAC = 0, - EXTENT_PAI_HPA = 1 -}; +enum extent_pai_e { EXTENT_PAI_PAC = 0, EXTENT_PAI_HPA = 1 }; typedef enum extent_pai_e extent_pai_t; struct e_prof_info_s { /* Time when this was allocated. */ - nstime_t e_prof_alloc_time; + nstime_t e_prof_alloc_time; /* Allocation request size. */ - size_t e_prof_alloc_size; + size_t e_prof_alloc_size; /* Points to a prof_tctx_t. */ - atomic_p_t e_prof_tctx; + atomic_p_t e_prof_tctx; /* * Points to a prof_recent_t for the allocation; NULL * means the recent allocation record no longer exists. * Protected by prof_recent_alloc_mtx. */ - atomic_p_t e_prof_recent_alloc; + atomic_p_t e_prof_recent_alloc; }; typedef struct e_prof_info_s e_prof_info_t; @@ -75,20 +82,20 @@ typedef struct e_prof_info_s e_prof_info_t; */ typedef struct edata_map_info_s edata_map_info_t; struct edata_map_info_s { - bool slab; + bool slab; szind_t szind; }; typedef struct edata_cmp_summary_s edata_cmp_summary_t; struct edata_cmp_summary_s { - uint64_t sn; + uint64_t sn; uintptr_t addr; }; /* Extent (span of pages). Use accessor functions for e_* fields. */ typedef struct edata_s edata_t; -ph_structs(edata_avail, edata_t); -ph_structs(edata_heap, edata_t); +ph_structs(edata_avail, edata_t, ESET_ENUMERATE_MAX_NUM); +ph_structs(edata_heap, edata_t, ESET_ENUMERATE_MAX_NUM); struct edata_s { /* * Bitfield containing several fields: @@ -139,55 +146,72 @@ struct edata_s { * * bin_shard: the shard of the bin from which this extent came. */ - uint64_t e_bits; -#define MASK(CURRENT_FIELD_WIDTH, CURRENT_FIELD_SHIFT) ((((((uint64_t)0x1U) << (CURRENT_FIELD_WIDTH)) - 1)) << (CURRENT_FIELD_SHIFT)) - -#define EDATA_BITS_ARENA_WIDTH MALLOCX_ARENA_BITS -#define EDATA_BITS_ARENA_SHIFT 0 -#define EDATA_BITS_ARENA_MASK MASK(EDATA_BITS_ARENA_WIDTH, EDATA_BITS_ARENA_SHIFT) - -#define EDATA_BITS_SLAB_WIDTH 1 -#define EDATA_BITS_SLAB_SHIFT (EDATA_BITS_ARENA_WIDTH + EDATA_BITS_ARENA_SHIFT) -#define EDATA_BITS_SLAB_MASK MASK(EDATA_BITS_SLAB_WIDTH, EDATA_BITS_SLAB_SHIFT) - -#define EDATA_BITS_COMMITTED_WIDTH 1 -#define EDATA_BITS_COMMITTED_SHIFT (EDATA_BITS_SLAB_WIDTH + EDATA_BITS_SLAB_SHIFT) -#define EDATA_BITS_COMMITTED_MASK MASK(EDATA_BITS_COMMITTED_WIDTH, EDATA_BITS_COMMITTED_SHIFT) - -#define EDATA_BITS_PAI_WIDTH 1 -#define EDATA_BITS_PAI_SHIFT (EDATA_BITS_COMMITTED_WIDTH + EDATA_BITS_COMMITTED_SHIFT) -#define EDATA_BITS_PAI_MASK MASK(EDATA_BITS_PAI_WIDTH, EDATA_BITS_PAI_SHIFT) - -#define EDATA_BITS_ZEROED_WIDTH 1 -#define EDATA_BITS_ZEROED_SHIFT (EDATA_BITS_PAI_WIDTH + EDATA_BITS_PAI_SHIFT) -#define EDATA_BITS_ZEROED_MASK MASK(EDATA_BITS_ZEROED_WIDTH, EDATA_BITS_ZEROED_SHIFT) - -#define EDATA_BITS_GUARDED_WIDTH 1 -#define EDATA_BITS_GUARDED_SHIFT (EDATA_BITS_ZEROED_WIDTH + EDATA_BITS_ZEROED_SHIFT) -#define EDATA_BITS_GUARDED_MASK MASK(EDATA_BITS_GUARDED_WIDTH, EDATA_BITS_GUARDED_SHIFT) - -#define EDATA_BITS_STATE_WIDTH 3 -#define EDATA_BITS_STATE_SHIFT (EDATA_BITS_GUARDED_WIDTH + EDATA_BITS_GUARDED_SHIFT) -#define EDATA_BITS_STATE_MASK MASK(EDATA_BITS_STATE_WIDTH, EDATA_BITS_STATE_SHIFT) - -#define EDATA_BITS_SZIND_WIDTH LG_CEIL(SC_NSIZES) -#define EDATA_BITS_SZIND_SHIFT (EDATA_BITS_STATE_WIDTH + EDATA_BITS_STATE_SHIFT) -#define EDATA_BITS_SZIND_MASK MASK(EDATA_BITS_SZIND_WIDTH, EDATA_BITS_SZIND_SHIFT) - -#define EDATA_BITS_NFREE_WIDTH (SC_LG_SLAB_MAXREGS + 1) -#define EDATA_BITS_NFREE_SHIFT (EDATA_BITS_SZIND_WIDTH + EDATA_BITS_SZIND_SHIFT) -#define EDATA_BITS_NFREE_MASK MASK(EDATA_BITS_NFREE_WIDTH, EDATA_BITS_NFREE_SHIFT) - -#define EDATA_BITS_BINSHARD_WIDTH 6 -#define EDATA_BITS_BINSHARD_SHIFT (EDATA_BITS_NFREE_WIDTH + EDATA_BITS_NFREE_SHIFT) -#define EDATA_BITS_BINSHARD_MASK MASK(EDATA_BITS_BINSHARD_WIDTH, EDATA_BITS_BINSHARD_SHIFT) + uint64_t e_bits; +#define MASK(CURRENT_FIELD_WIDTH, CURRENT_FIELD_SHIFT) \ + ((((((uint64_t)0x1U) << (CURRENT_FIELD_WIDTH)) - 1)) \ + << (CURRENT_FIELD_SHIFT)) + +#define EDATA_BITS_ARENA_WIDTH MALLOCX_ARENA_BITS +#define EDATA_BITS_ARENA_SHIFT 0 +#define EDATA_BITS_ARENA_MASK \ + MASK(EDATA_BITS_ARENA_WIDTH, EDATA_BITS_ARENA_SHIFT) + +#define EDATA_BITS_SLAB_WIDTH 1 +#define EDATA_BITS_SLAB_SHIFT (EDATA_BITS_ARENA_WIDTH + EDATA_BITS_ARENA_SHIFT) +#define EDATA_BITS_SLAB_MASK MASK(EDATA_BITS_SLAB_WIDTH, EDATA_BITS_SLAB_SHIFT) + +#define EDATA_BITS_COMMITTED_WIDTH 1 +#define EDATA_BITS_COMMITTED_SHIFT \ + (EDATA_BITS_SLAB_WIDTH + EDATA_BITS_SLAB_SHIFT) +#define EDATA_BITS_COMMITTED_MASK \ + MASK(EDATA_BITS_COMMITTED_WIDTH, EDATA_BITS_COMMITTED_SHIFT) + +#define EDATA_BITS_PAI_WIDTH 1 +#define EDATA_BITS_PAI_SHIFT \ + (EDATA_BITS_COMMITTED_WIDTH + EDATA_BITS_COMMITTED_SHIFT) +#define EDATA_BITS_PAI_MASK MASK(EDATA_BITS_PAI_WIDTH, EDATA_BITS_PAI_SHIFT) + +#define EDATA_BITS_ZEROED_WIDTH 1 +#define EDATA_BITS_ZEROED_SHIFT (EDATA_BITS_PAI_WIDTH + EDATA_BITS_PAI_SHIFT) +#define EDATA_BITS_ZEROED_MASK \ + MASK(EDATA_BITS_ZEROED_WIDTH, EDATA_BITS_ZEROED_SHIFT) + +#define EDATA_BITS_GUARDED_WIDTH 1 +#define EDATA_BITS_GUARDED_SHIFT \ + (EDATA_BITS_ZEROED_WIDTH + EDATA_BITS_ZEROED_SHIFT) +#define EDATA_BITS_GUARDED_MASK \ + MASK(EDATA_BITS_GUARDED_WIDTH, EDATA_BITS_GUARDED_SHIFT) + +#define EDATA_BITS_STATE_WIDTH 3 +#define EDATA_BITS_STATE_SHIFT \ + (EDATA_BITS_GUARDED_WIDTH + EDATA_BITS_GUARDED_SHIFT) +#define EDATA_BITS_STATE_MASK \ + MASK(EDATA_BITS_STATE_WIDTH, EDATA_BITS_STATE_SHIFT) + +#define EDATA_BITS_SZIND_WIDTH LG_CEIL(SC_NSIZES) +#define EDATA_BITS_SZIND_SHIFT (EDATA_BITS_STATE_WIDTH + EDATA_BITS_STATE_SHIFT) +#define EDATA_BITS_SZIND_MASK \ + MASK(EDATA_BITS_SZIND_WIDTH, EDATA_BITS_SZIND_SHIFT) + +#define EDATA_BITS_NFREE_WIDTH (SC_LG_SLAB_MAXREGS + 1) +#define EDATA_BITS_NFREE_SHIFT (EDATA_BITS_SZIND_WIDTH + EDATA_BITS_SZIND_SHIFT) +#define EDATA_BITS_NFREE_MASK \ + MASK(EDATA_BITS_NFREE_WIDTH, EDATA_BITS_NFREE_SHIFT) + +#define EDATA_BITS_BINSHARD_WIDTH 6 +#define EDATA_BITS_BINSHARD_SHIFT \ + (EDATA_BITS_NFREE_WIDTH + EDATA_BITS_NFREE_SHIFT) +#define EDATA_BITS_BINSHARD_MASK \ + MASK(EDATA_BITS_BINSHARD_WIDTH, EDATA_BITS_BINSHARD_SHIFT) #define EDATA_BITS_IS_HEAD_WIDTH 1 -#define EDATA_BITS_IS_HEAD_SHIFT (EDATA_BITS_BINSHARD_WIDTH + EDATA_BITS_BINSHARD_SHIFT) -#define EDATA_BITS_IS_HEAD_MASK MASK(EDATA_BITS_IS_HEAD_WIDTH, EDATA_BITS_IS_HEAD_SHIFT) +#define EDATA_BITS_IS_HEAD_SHIFT \ + (EDATA_BITS_BINSHARD_WIDTH + EDATA_BITS_BINSHARD_SHIFT) +#define EDATA_BITS_IS_HEAD_MASK \ + MASK(EDATA_BITS_IS_HEAD_WIDTH, EDATA_BITS_IS_HEAD_SHIFT) /* Pointer to the extent that this structure is responsible for. */ - void *e_addr; + void *e_addr; union { /* @@ -197,16 +221,16 @@ struct edata_s { * * ssssssss [...] ssssssss ssssnnnn nnnnnnnn */ - size_t e_size_esn; - #define EDATA_SIZE_MASK ((size_t)~(PAGE-1)) - #define EDATA_ESN_MASK ((size_t)PAGE-1) + size_t e_size_esn; +#define EDATA_SIZE_MASK ((size_t) ~(PAGE - 1)) +#define EDATA_ESN_MASK ((size_t)PAGE - 1) /* Base extent size, which may not be a multiple of PAGE. */ - size_t e_bsize; + size_t e_bsize; }; /* * If this edata is a user allocation from an HPA, it comes out of some - * pageslab (we don't yet support huegpage allocations that don't fit + * pageslab (we don't yet support hugepage allocations that don't fit * into pageslabs). This tracks it. */ hpdata_t *e_ps; @@ -222,7 +246,7 @@ struct edata_s { * List linkage used when the edata_t is active; either in * arena's large allocations or bin_t's slabs_full. */ - ql_elm(edata_t) ql_link_active; + ql_elm(edata_t) ql_link_active; /* * Pairing heap linkage. Used whenever the extent is inactive * (in the page allocators), or when it is active and in @@ -230,7 +254,7 @@ struct edata_s { * extent and sitting in an edata_cache. */ union { - edata_heap_link_t heap_link; + edata_heap_link_t heap_link; edata_avail_link_t avail_link; }; }; @@ -243,10 +267,10 @@ struct edata_s { */ ql_elm(edata_t) ql_link_inactive; /* Small region slab metadata. */ - slab_data_t e_slab_data; + slab_data_t e_slab_data; /* Profiling data, used for large objects. */ - e_prof_info_t e_prof_info; + e_prof_info_t e_prof_info; }; }; @@ -255,8 +279,8 @@ TYPED_LIST(edata_list_inactive, edata_t, ql_link_inactive) static inline unsigned edata_arena_ind_get(const edata_t *edata) { - unsigned arena_ind = (unsigned)((edata->e_bits & - EDATA_BITS_ARENA_MASK) >> EDATA_BITS_ARENA_SHIFT); + unsigned arena_ind = (unsigned)((edata->e_bits & EDATA_BITS_ARENA_MASK) + >> EDATA_BITS_ARENA_SHIFT); assert(arena_ind < MALLOCX_ARENA_LIMIT); return arena_ind; @@ -264,8 +288,8 @@ edata_arena_ind_get(const edata_t *edata) { static inline szind_t edata_szind_get_maybe_invalid(const edata_t *edata) { - szind_t szind = (szind_t)((edata->e_bits & EDATA_BITS_SZIND_MASK) >> - EDATA_BITS_SZIND_SHIFT); + szind_t szind = (szind_t)((edata->e_bits & EDATA_BITS_SZIND_MASK) + >> EDATA_BITS_SZIND_SHIFT); assert(szind <= SC_NSIZES); return szind; } @@ -279,13 +303,61 @@ edata_szind_get(const edata_t *edata) { static inline size_t edata_usize_get(const edata_t *edata) { - return sz_index2size(edata_szind_get(edata)); + assert(edata != NULL); + /* + * When sz_large_size_classes_disabled() is true, two cases: + * 1. if usize_from_ind is not smaller than SC_LARGE_MINCLASS, + * usize_from_size is accurate; + * 2. otherwise, usize_from_ind is accurate. + * + * When sz_large_size_classes_disabled() is not true, the two should be the + * same when usize_from_ind is not smaller than SC_LARGE_MINCLASS. + * + * Note sampled small allocs will be promoted. Their extent size is + * recorded in edata_size_get(edata), while their szind reflects the + * true usize. Thus, usize retrieved here is still accurate for + * sampled small allocs. + */ + szind_t szind = edata_szind_get(edata); +#ifdef JEMALLOC_JET + /* + * Double free is invalid and results in undefined behavior. However, + * for double free tests to end gracefully, return an invalid usize + * when szind shows the edata is not active, i.e., szind == SC_NSIZES. + */ + if (unlikely(szind == SC_NSIZES)) { + return SC_LARGE_MAXCLASS + 1; + } +#endif + + if (!sz_large_size_classes_disabled() || szind < SC_NBINS) { + size_t usize_from_ind = sz_index2size(szind); + if (!sz_large_size_classes_disabled() + && usize_from_ind >= SC_LARGE_MINCLASS) { + size_t size = (edata->e_size_esn & EDATA_SIZE_MASK); + assert(size > sz_large_pad); + size_t usize_from_size = size - sz_large_pad; + assert(usize_from_ind == usize_from_size); + } + return usize_from_ind; + } + + size_t size = (edata->e_size_esn & EDATA_SIZE_MASK); + assert(size > sz_large_pad); + size_t usize_from_size = size - sz_large_pad; + /* + * no matter large size classes disabled or not, usize retrieved from + * size is not accurate when smaller than SC_LARGE_MINCLASS. + */ + assert(usize_from_size >= SC_LARGE_MINCLASS); + return usize_from_size; } static inline unsigned edata_binshard_get(const edata_t *edata) { - unsigned binshard = (unsigned)((edata->e_bits & - EDATA_BITS_BINSHARD_MASK) >> EDATA_BITS_BINSHARD_SHIFT); + unsigned binshard = (unsigned)((edata->e_bits + & EDATA_BITS_BINSHARD_MASK) + >> EDATA_BITS_BINSHARD_SHIFT); assert(binshard < bin_infos[edata_szind_get(edata)].n_shards); return binshard; } @@ -297,58 +369,58 @@ edata_sn_get(const edata_t *edata) { static inline extent_state_t edata_state_get(const edata_t *edata) { - return (extent_state_t)((edata->e_bits & EDATA_BITS_STATE_MASK) >> - EDATA_BITS_STATE_SHIFT); + return (extent_state_t)((edata->e_bits & EDATA_BITS_STATE_MASK) + >> EDATA_BITS_STATE_SHIFT); } static inline bool edata_guarded_get(const edata_t *edata) { - return (bool)((edata->e_bits & EDATA_BITS_GUARDED_MASK) >> - EDATA_BITS_GUARDED_SHIFT); + return (bool)((edata->e_bits & EDATA_BITS_GUARDED_MASK) + >> EDATA_BITS_GUARDED_SHIFT); } static inline bool edata_zeroed_get(const edata_t *edata) { - return (bool)((edata->e_bits & EDATA_BITS_ZEROED_MASK) >> - EDATA_BITS_ZEROED_SHIFT); + return (bool)((edata->e_bits & EDATA_BITS_ZEROED_MASK) + >> EDATA_BITS_ZEROED_SHIFT); } static inline bool edata_committed_get(const edata_t *edata) { - return (bool)((edata->e_bits & EDATA_BITS_COMMITTED_MASK) >> - EDATA_BITS_COMMITTED_SHIFT); + return (bool)((edata->e_bits & EDATA_BITS_COMMITTED_MASK) + >> EDATA_BITS_COMMITTED_SHIFT); } static inline extent_pai_t edata_pai_get(const edata_t *edata) { - return (extent_pai_t)((edata->e_bits & EDATA_BITS_PAI_MASK) >> - EDATA_BITS_PAI_SHIFT); + return (extent_pai_t)((edata->e_bits & EDATA_BITS_PAI_MASK) + >> EDATA_BITS_PAI_SHIFT); } static inline bool edata_slab_get(const edata_t *edata) { - return (bool)((edata->e_bits & EDATA_BITS_SLAB_MASK) >> - EDATA_BITS_SLAB_SHIFT); + return (bool)((edata->e_bits & EDATA_BITS_SLAB_MASK) + >> EDATA_BITS_SLAB_SHIFT); } static inline unsigned edata_nfree_get(const edata_t *edata) { assert(edata_slab_get(edata)); - return (unsigned)((edata->e_bits & EDATA_BITS_NFREE_MASK) >> - EDATA_BITS_NFREE_SHIFT); + return (unsigned)((edata->e_bits & EDATA_BITS_NFREE_MASK) + >> EDATA_BITS_NFREE_SHIFT); } static inline void * edata_base_get(const edata_t *edata) { - assert(edata->e_addr == PAGE_ADDR2BASE(edata->e_addr) || - !edata_slab_get(edata)); + assert(edata->e_addr == PAGE_ADDR2BASE(edata->e_addr) + || !edata_slab_get(edata)); return PAGE_ADDR2BASE(edata->e_addr); } static inline void * edata_addr_get(const edata_t *edata) { - assert(edata->e_addr == PAGE_ADDR2BASE(edata->e_addr) || - !edata_slab_get(edata)); + assert(edata->e_addr == PAGE_ADDR2BASE(edata->e_addr) + || !edata_slab_get(edata)); return edata->e_addr; } @@ -375,19 +447,19 @@ edata_ps_get(const edata_t *edata) { static inline void * edata_before_get(const edata_t *edata) { - return (void *)((uintptr_t)edata_base_get(edata) - PAGE); + return (void *)((byte_t *)edata_base_get(edata) - PAGE); } static inline void * edata_last_get(const edata_t *edata) { - return (void *)((uintptr_t)edata_base_get(edata) + - edata_size_get(edata) - PAGE); + return (void *)((byte_t *)edata_base_get(edata) + edata_size_get(edata) + - PAGE); } static inline void * edata_past_get(const edata_t *edata) { - return (void *)((uintptr_t)edata_base_get(edata) + - edata_size_get(edata)); + return ( + void *)((byte_t *)edata_base_get(edata) + edata_size_get(edata)); } static inline slab_data_t * @@ -404,8 +476,8 @@ edata_slab_data_get_const(const edata_t *edata) { static inline prof_tctx_t * edata_prof_tctx_get(const edata_t *edata) { - return (prof_tctx_t *)atomic_load_p(&edata->e_prof_info.e_prof_tctx, - ATOMIC_ACQUIRE); + return (prof_tctx_t *)atomic_load_p( + &edata->e_prof_info.e_prof_tctx, ATOMIC_ACQUIRE); } static inline const nstime_t * @@ -426,16 +498,16 @@ edata_prof_recent_alloc_get_dont_call_directly(const edata_t *edata) { static inline void edata_arena_ind_set(edata_t *edata, unsigned arena_ind) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_ARENA_MASK) | - ((uint64_t)arena_ind << EDATA_BITS_ARENA_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_ARENA_MASK) + | ((uint64_t)arena_ind << EDATA_BITS_ARENA_SHIFT); } static inline void edata_binshard_set(edata_t *edata, unsigned binshard) { /* The assertion assumes szind is set already. */ assert(binshard < bin_infos[edata_szind_get(edata)].n_shards); - edata->e_bits = (edata->e_bits & ~EDATA_BITS_BINSHARD_MASK) | - ((uint64_t)binshard << EDATA_BITS_BINSHARD_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_BINSHARD_MASK) + | ((uint64_t)binshard << EDATA_BITS_BINSHARD_SHIFT); } static inline void @@ -451,8 +523,8 @@ edata_size_set(edata_t *edata, size_t size) { static inline void edata_esn_set(edata_t *edata, size_t esn) { - edata->e_size_esn = (edata->e_size_esn & ~EDATA_ESN_MASK) | (esn & - EDATA_ESN_MASK); + edata->e_size_esn = (edata->e_size_esn & ~EDATA_ESN_MASK) + | (esn & EDATA_ESN_MASK); } static inline void @@ -469,25 +541,26 @@ edata_ps_set(edata_t *edata, hpdata_t *ps) { static inline void edata_szind_set(edata_t *edata, szind_t szind) { assert(szind <= SC_NSIZES); /* SC_NSIZES means "invalid". */ - edata->e_bits = (edata->e_bits & ~EDATA_BITS_SZIND_MASK) | - ((uint64_t)szind << EDATA_BITS_SZIND_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_SZIND_MASK) + | ((uint64_t)szind << EDATA_BITS_SZIND_SHIFT); } static inline void edata_nfree_set(edata_t *edata, unsigned nfree) { assert(edata_slab_get(edata)); - edata->e_bits = (edata->e_bits & ~EDATA_BITS_NFREE_MASK) | - ((uint64_t)nfree << EDATA_BITS_NFREE_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_NFREE_MASK) + | ((uint64_t)nfree << EDATA_BITS_NFREE_SHIFT); } static inline void edata_nfree_binshard_set(edata_t *edata, unsigned nfree, unsigned binshard) { /* The assertion assumes szind is set already. */ assert(binshard < bin_infos[edata_szind_get(edata)].n_shards); - edata->e_bits = (edata->e_bits & - (~EDATA_BITS_NFREE_MASK & ~EDATA_BITS_BINSHARD_MASK)) | - ((uint64_t)binshard << EDATA_BITS_BINSHARD_SHIFT) | - ((uint64_t)nfree << EDATA_BITS_NFREE_SHIFT); + edata->e_bits = (edata->e_bits + & (~EDATA_BITS_NFREE_MASK + & ~EDATA_BITS_BINSHARD_MASK)) + | ((uint64_t)binshard << EDATA_BITS_BINSHARD_SHIFT) + | ((uint64_t)nfree << EDATA_BITS_NFREE_SHIFT); } static inline void @@ -515,38 +588,38 @@ edata_sn_set(edata_t *edata, uint64_t sn) { static inline void edata_state_set(edata_t *edata, extent_state_t state) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_STATE_MASK) | - ((uint64_t)state << EDATA_BITS_STATE_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_STATE_MASK) + | ((uint64_t)state << EDATA_BITS_STATE_SHIFT); } static inline void edata_guarded_set(edata_t *edata, bool guarded) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_GUARDED_MASK) | - ((uint64_t)guarded << EDATA_BITS_GUARDED_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_GUARDED_MASK) + | ((uint64_t)guarded << EDATA_BITS_GUARDED_SHIFT); } static inline void edata_zeroed_set(edata_t *edata, bool zeroed) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_ZEROED_MASK) | - ((uint64_t)zeroed << EDATA_BITS_ZEROED_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_ZEROED_MASK) + | ((uint64_t)zeroed << EDATA_BITS_ZEROED_SHIFT); } static inline void edata_committed_set(edata_t *edata, bool committed) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_COMMITTED_MASK) | - ((uint64_t)committed << EDATA_BITS_COMMITTED_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_COMMITTED_MASK) + | ((uint64_t)committed << EDATA_BITS_COMMITTED_SHIFT); } static inline void edata_pai_set(edata_t *edata, extent_pai_t pai) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_PAI_MASK) | - ((uint64_t)pai << EDATA_BITS_PAI_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_PAI_MASK) + | ((uint64_t)pai << EDATA_BITS_PAI_SHIFT); } static inline void edata_slab_set(edata_t *edata, bool slab) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_SLAB_MASK) | - ((uint64_t)slab << EDATA_BITS_SLAB_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_SLAB_MASK) + | ((uint64_t)slab << EDATA_BITS_SLAB_SHIFT); } static inline void @@ -565,22 +638,22 @@ edata_prof_alloc_size_set(edata_t *edata, size_t size) { } static inline void -edata_prof_recent_alloc_set_dont_call_directly(edata_t *edata, - prof_recent_t *recent_alloc) { +edata_prof_recent_alloc_set_dont_call_directly( + edata_t *edata, prof_recent_t *recent_alloc) { atomic_store_p(&edata->e_prof_info.e_prof_recent_alloc, recent_alloc, ATOMIC_RELAXED); } static inline bool edata_is_head_get(edata_t *edata) { - return (bool)((edata->e_bits & EDATA_BITS_IS_HEAD_MASK) >> - EDATA_BITS_IS_HEAD_SHIFT); + return (bool)((edata->e_bits & EDATA_BITS_IS_HEAD_MASK) + >> EDATA_BITS_IS_HEAD_SHIFT); } static inline void edata_is_head_set(edata_t *edata, bool is_head) { - edata->e_bits = (edata->e_bits & ~EDATA_BITS_IS_HEAD_MASK) | - ((uint64_t)is_head << EDATA_BITS_IS_HEAD_SHIFT); + edata->e_bits = (edata->e_bits & ~EDATA_BITS_IS_HEAD_MASK) + | ((uint64_t)is_head << EDATA_BITS_IS_HEAD_SHIFT); } static inline bool @@ -619,7 +692,8 @@ edata_init(edata_t *edata, unsigned arena_ind, void *addr, size_t size, } static inline void -edata_binit(edata_t *edata, void *addr, size_t bsize, uint64_t sn) { +edata_binit( + edata_t *edata, void *addr, size_t bsize, uint64_t sn, bool reused) { edata_arena_ind_set(edata, (1U << MALLOCX_ARENA_BITS) - 1); edata_addr_set(edata, addr); edata_bsize_set(edata, bsize); @@ -627,7 +701,8 @@ edata_binit(edata_t *edata, void *addr, size_t bsize, uint64_t sn) { edata_szind_set(edata, SC_NSIZES); edata_sn_set(edata, sn); edata_state_set(edata, extent_state_active); - edata_guarded_set(edata, false); + /* See comments in base_edata_is_reused. */ + edata_guarded_set(edata, reused); edata_zeroed_set(edata, true); edata_committed_set(edata, true); /* @@ -656,20 +731,47 @@ edata_ead_comp(const edata_t *a, const edata_t *b) { static inline edata_cmp_summary_t edata_cmp_summary_get(const edata_t *edata) { - return (edata_cmp_summary_t){edata_sn_get(edata), - (uintptr_t)edata_addr_get(edata)}; + edata_cmp_summary_t result; + result.sn = edata_sn_get(edata); + result.addr = (uintptr_t)edata_addr_get(edata); + return result; +} + +#ifdef JEMALLOC_HAVE_INT128 +JEMALLOC_ALWAYS_INLINE unsigned __int128 +edata_cmp_summary_encode(edata_cmp_summary_t src) { + return ((unsigned __int128)src.sn << 64) | src.addr; } static inline int edata_cmp_summary_comp(edata_cmp_summary_t a, edata_cmp_summary_t b) { - int ret; - ret = (a.sn > b.sn) - (a.sn < b.sn); - if (ret != 0) { - return ret; - } - ret = (a.addr > b.addr) - (a.addr < b.addr); - return ret; + unsigned __int128 a_encoded = edata_cmp_summary_encode(a); + unsigned __int128 b_encoded = edata_cmp_summary_encode(b); + if (a_encoded < b_encoded) + return -1; + if (a_encoded == b_encoded) + return 0; + return 1; +} +#else +static inline int +edata_cmp_summary_comp(edata_cmp_summary_t a, edata_cmp_summary_t b) { + /* + * Logically, what we're doing here is comparing based on `.sn`, and + * falling back to comparing on `.addr` in the case that `a.sn == b.sn`. + * We accomplish this by multiplying the result of the `.sn` comparison + * by 2, so that so long as it is not 0, it will dominate the `.addr` + * comparison in determining the sign of the returned result value. + * The justification for doing things this way is that this is + * branchless - all of the branches that would be present in a + * straightforward implementation are common cases, and thus the branch + * prediction accuracy is not great. As a result, this implementation + * is measurably faster (by around 30%). + */ + return (2 * ((a.sn > b.sn) - (a.sn < b.sn))) + + ((a.addr > b.addr) - (a.addr < b.addr)); } +#endif static inline int edata_snad_comp(const edata_t *a, const edata_t *b) { @@ -681,18 +783,13 @@ edata_snad_comp(const edata_t *a, const edata_t *b) { static inline int edata_esnead_comp(const edata_t *a, const edata_t *b) { - int ret; - - ret = edata_esn_comp(a, b); - if (ret != 0) { - return ret; - } - - ret = edata_ead_comp(a, b); - return ret; + /* + * Similar to `edata_cmp_summary_comp`, we've opted for a + * branchless implementation for the sake of performance. + */ + return (2 * edata_esn_comp(a, b)) + edata_ead_comp(a, b); } -ph_proto(, edata_avail, edata_t) -ph_proto(, edata_heap, edata_t) +ph_proto(, edata_avail, edata_t) ph_proto(, edata_heap, edata_t) #endif /* JEMALLOC_INTERNAL_EDATA_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/edata_cache.h b/dep/jemalloc/include/jemalloc/internal/edata_cache.h index 8b6c0ef794996..d92d90cb423c3 100644 --- a/dep/jemalloc/include/jemalloc/internal/edata_cache.h +++ b/dep/jemalloc/include/jemalloc/internal/edata_cache.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_EDATA_CACHE_H #define JEMALLOC_INTERNAL_EDATA_CACHE_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/base.h" /* For tests only. */ @@ -14,13 +15,13 @@ typedef struct edata_cache_s edata_cache_t; struct edata_cache_s { - edata_avail_t avail; - atomic_zu_t count; + edata_avail_t avail; + atomic_zu_t count; malloc_mutex_t mtx; - base_t *base; + base_t *base; }; -bool edata_cache_init(edata_cache_t *edata_cache, base_t *base); +bool edata_cache_init(edata_cache_t *edata_cache, base_t *base); edata_t *edata_cache_get(tsdn_t *tsdn, edata_cache_t *edata_cache); void edata_cache_put(tsdn_t *tsdn, edata_cache_t *edata_cache, edata_t *edata); @@ -36,14 +37,14 @@ void edata_cache_postfork_child(tsdn_t *tsdn, edata_cache_t *edata_cache); typedef struct edata_cache_fast_s edata_cache_fast_t; struct edata_cache_fast_s { edata_list_inactive_t list; - edata_cache_t *fallback; - bool disabled; + edata_cache_t *fallback; + bool disabled; }; void edata_cache_fast_init(edata_cache_fast_t *ecs, edata_cache_t *fallback); edata_t *edata_cache_fast_get(tsdn_t *tsdn, edata_cache_fast_t *ecs); -void edata_cache_fast_put(tsdn_t *tsdn, edata_cache_fast_t *ecs, - edata_t *edata); +void edata_cache_fast_put( + tsdn_t *tsdn, edata_cache_fast_t *ecs, edata_t *edata); void edata_cache_fast_disable(tsdn_t *tsdn, edata_cache_fast_t *ecs); #endif /* JEMALLOC_INTERNAL_EDATA_CACHE_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/ehooks.h b/dep/jemalloc/include/jemalloc/internal/ehooks.h index 8d9513e258a88..c65e189af2cbb 100644 --- a/dep/jemalloc/include/jemalloc/internal/ehooks.h +++ b/dep/jemalloc/include/jemalloc/internal/ehooks.h @@ -1,8 +1,11 @@ #ifndef JEMALLOC_INTERNAL_EHOOKS_H #define JEMALLOC_INTERNAL_EHOOKS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/extent_mmap.h" +#include "jemalloc/internal/tsd.h" +#include "jemalloc/internal/tsd_types.h" /* * This module is the internal interface to the extent hooks (both @@ -43,17 +46,17 @@ extern const extent_hooks_t ehooks_default_extent_hooks; */ void *ehooks_default_alloc_impl(tsdn_t *tsdn, void *new_addr, size_t size, size_t alignment, bool *zero, bool *commit, unsigned arena_ind); -bool ehooks_default_dalloc_impl(void *addr, size_t size); -void ehooks_default_destroy_impl(void *addr, size_t size); -bool ehooks_default_commit_impl(void *addr, size_t offset, size_t length); -bool ehooks_default_decommit_impl(void *addr, size_t offset, size_t length); +bool ehooks_default_dalloc_impl(void *addr, size_t size); +void ehooks_default_destroy_impl(void *addr, size_t size); +bool ehooks_default_commit_impl(void *addr, size_t offset, size_t length); +bool ehooks_default_decommit_impl(void *addr, size_t offset, size_t length); #ifdef PAGES_CAN_PURGE_LAZY bool ehooks_default_purge_lazy_impl(void *addr, size_t offset, size_t length); #endif #ifdef PAGES_CAN_PURGE_FORCED bool ehooks_default_purge_forced_impl(void *addr, size_t offset, size_t length); #endif -bool ehooks_default_split_impl(); +bool ehooks_default_split_impl(void); /* * Merge is the only default extent hook we declare -- see the comment in * ehooks_merge. @@ -113,8 +116,8 @@ ehooks_get_extent_hooks_ptr(ehooks_t *ehooks) { static inline bool ehooks_are_default(ehooks_t *ehooks) { - return ehooks_get_extent_hooks_ptr(ehooks) == - &ehooks_default_extent_hooks; + return ehooks_get_extent_hooks_ptr(ehooks) + == &ehooks_default_extent_hooks; } /* @@ -186,16 +189,15 @@ ehooks_debug_zero_check(void *addr, size_t size) { } } - static inline void * ehooks_alloc(tsdn_t *tsdn, ehooks_t *ehooks, void *new_addr, size_t size, size_t alignment, bool *zero, bool *commit) { - bool orig_zero = *zero; - void *ret; + bool orig_zero = *zero; + void *ret; extent_hooks_t *extent_hooks = ehooks_get_extent_hooks_ptr(ehooks); if (extent_hooks == &ehooks_default_extent_hooks) { - ret = ehooks_default_alloc_impl(tsdn, new_addr, size, - alignment, zero, commit, ehooks_ind_get(ehooks)); + ret = ehooks_default_alloc_impl(tsdn, new_addr, size, alignment, + zero, commit, ehooks_ind_get(ehooks)); } else { ehooks_pre_reentrancy(tsdn); ret = extent_hooks->alloc(extent_hooks, new_addr, size, @@ -211,8 +213,8 @@ ehooks_alloc(tsdn_t *tsdn, ehooks_t *ehooks, void *new_addr, size_t size, } static inline bool -ehooks_dalloc(tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size, - bool committed) { +ehooks_dalloc( + tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size, bool committed) { extent_hooks_t *extent_hooks = ehooks_get_extent_hooks_ptr(ehooks); if (extent_hooks == &ehooks_default_extent_hooks) { return ehooks_default_dalloc_impl(addr, size); @@ -228,8 +230,8 @@ ehooks_dalloc(tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size, } static inline void -ehooks_destroy(tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size, - bool committed) { +ehooks_destroy( + tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size, bool committed) { extent_hooks_t *extent_hooks = ehooks_get_extent_hooks_ptr(ehooks); if (extent_hooks == &ehooks_default_extent_hooks) { ehooks_default_destroy_impl(addr, size); @@ -247,15 +249,15 @@ static inline bool ehooks_commit(tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size, size_t offset, size_t length) { extent_hooks_t *extent_hooks = ehooks_get_extent_hooks_ptr(ehooks); - bool err; + bool err; if (extent_hooks == &ehooks_default_extent_hooks) { err = ehooks_default_commit_impl(addr, offset, length); } else if (extent_hooks->commit == NULL) { err = true; } else { ehooks_pre_reentrancy(tsdn); - err = extent_hooks->commit(extent_hooks, addr, size, - offset, length, ehooks_ind_get(ehooks)); + err = extent_hooks->commit(extent_hooks, addr, size, offset, + length, ehooks_ind_get(ehooks)); ehooks_post_reentrancy(tsdn); } if (!err) { @@ -381,7 +383,7 @@ ehooks_zero(tsdn_t *tsdn, ehooks_t *ehooks, void *addr, size_t size) { static inline bool ehooks_guard(tsdn_t *tsdn, ehooks_t *ehooks, void *guard1, void *guard2) { - bool err; + bool err; extent_hooks_t *extent_hooks = ehooks_get_extent_hooks_ptr(ehooks); if (extent_hooks == &ehooks_default_extent_hooks) { @@ -396,7 +398,7 @@ ehooks_guard(tsdn_t *tsdn, ehooks_t *ehooks, void *guard1, void *guard2) { static inline bool ehooks_unguard(tsdn_t *tsdn, ehooks_t *ehooks, void *guard1, void *guard2) { - bool err; + bool err; extent_hooks_t *extent_hooks = ehooks_get_extent_hooks_ptr(ehooks); if (extent_hooks == &ehooks_default_extent_hooks) { diff --git a/dep/jemalloc/include/jemalloc/internal/emap.h b/dep/jemalloc/include/jemalloc/internal/emap.h index 847af3278de30..8869235648eea 100644 --- a/dep/jemalloc/include/jemalloc/internal/emap.h +++ b/dep/jemalloc/include/jemalloc/internal/emap.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_EMAP_H #define JEMALLOC_INTERNAL_EMAP_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/base.h" #include "jemalloc/internal/rtree.h" @@ -9,9 +10,9 @@ * EMAP_DECLARE_RTREE_CTX; * in uses will avoid empty-statement warnings. */ -#define EMAP_DECLARE_RTREE_CTX \ - rtree_ctx_t rtree_ctx_fallback; \ - rtree_ctx_t *rtree_ctx = tsdn_rtree_ctx(tsdn, &rtree_ctx_fallback) +#define EMAP_DECLARE_RTREE_CTX \ + rtree_ctx_t rtree_ctx_fallback; \ + rtree_ctx_t *rtree_ctx = tsdn_rtree_ctx(tsdn, &rtree_ctx_fallback) typedef struct emap_s emap_t; struct emap_s { @@ -19,26 +20,27 @@ struct emap_s { }; /* Used to pass rtree lookup context down the path. */ -typedef struct emap_alloc_ctx_t emap_alloc_ctx_t; -struct emap_alloc_ctx_t { +typedef struct emap_alloc_ctx_s emap_alloc_ctx_t; +struct emap_alloc_ctx_s { + size_t usize; szind_t szind; - bool slab; + bool slab; }; typedef struct emap_full_alloc_ctx_s emap_full_alloc_ctx_t; struct emap_full_alloc_ctx_s { - szind_t szind; - bool slab; + szind_t szind; + bool slab; edata_t *edata; }; bool emap_init(emap_t *emap, base_t *base, bool zeroed); -void emap_remap(tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, - bool slab); +void emap_remap( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, bool slab); -void emap_update_edata_state(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - extent_state_t state); +void emap_update_edata_state( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, extent_state_t state); /* * The two acquire functions below allow accessing neighbor edatas, if it's safe @@ -60,16 +62,16 @@ edata_t *emap_try_acquire_edata_neighbor(tsdn_t *tsdn, emap_t *emap, bool forward); edata_t *emap_try_acquire_edata_neighbor_expand(tsdn_t *tsdn, emap_t *emap, edata_t *edata, extent_pai_t pai, extent_state_t expected_state); -void emap_release_edata(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - extent_state_t new_state); +void emap_release_edata( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, extent_state_t new_state); /* * Associate the given edata with its beginning and end address, setting the * szind and slab info appropriately. * Returns true on error (i.e. resource exhaustion). */ -bool emap_register_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - szind_t szind, bool slab); +bool emap_register_boundary( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, bool slab); /* * Does the same thing, but with the interior of the range, for slab @@ -90,8 +92,8 @@ bool emap_register_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata, * touched, so no allocation is necessary to fill the interior once the boundary * has been touched. */ -void emap_register_interior(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - szind_t szind); +void emap_register_interior( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind); void emap_deregister_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata); void emap_deregister_interior(tsdn_t *tsdn, emap_t *emap, edata_t *edata); @@ -159,8 +161,8 @@ emap_edata_in_transition(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { emap_assert_mapped(tsdn, emap, edata); EMAP_DECLARE_RTREE_CTX; - rtree_contents_t contents = rtree_read(tsdn, &emap->rtree, rtree_ctx, - (uintptr_t)edata_base_get(edata)); + rtree_contents_t contents = rtree_read( + tsdn, &emap->rtree, rtree_ctx, (uintptr_t)edata_base_get(edata)); return edata_state_in_transition(contents.metadata.state); } @@ -185,16 +187,16 @@ emap_edata_is_acquired(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { */ EMAP_DECLARE_RTREE_CTX; rtree_leaf_elm_t *elm = rtree_leaf_elm_lookup(tsdn, &emap->rtree, - rtree_ctx, (uintptr_t)edata_base_get(edata), /* dependent */ true, + rtree_ctx, (uintptr_t)edata_base_get(edata), /* dependent */ false, /* init_missing */ false); if (elm == NULL) { return true; } rtree_contents_t contents = rtree_leaf_elm_read(tsdn, &emap->rtree, elm, - /* dependent */ true); - if (contents.edata == NULL || - contents.metadata.state == extent_state_active || - edata_state_in_transition(contents.metadata.state)) { + /* dependent */ false); + if (contents.edata == NULL + || contents.metadata.state == extent_state_active + || edata_state_in_transition(contents.metadata.state)) { return true; } @@ -209,8 +211,8 @@ extent_assert_can_coalesce(const edata_t *inner, const edata_t *outer) { assert(edata_state_get(inner) == extent_state_active); assert(edata_state_get(outer) == extent_state_merging); assert(!edata_guarded_get(inner) && !edata_guarded_get(outer)); - assert(edata_base_get(inner) == edata_past_get(outer) || - edata_base_get(outer) == edata_past_get(inner)); + assert(edata_base_get(inner) == edata_past_get(outer) + || edata_base_get(outer) == edata_past_get(inner)); } JEMALLOC_ALWAYS_INLINE void @@ -229,16 +231,46 @@ emap_edata_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr) { return rtree_read(tsdn, &emap->rtree, rtree_ctx, (uintptr_t)ptr).edata; } +JEMALLOC_ALWAYS_INLINE void +emap_alloc_ctx_init( + emap_alloc_ctx_t *alloc_ctx, szind_t szind, bool slab, size_t usize) { + alloc_ctx->szind = szind; + alloc_ctx->slab = slab; + alloc_ctx->usize = usize; + assert( + sz_large_size_classes_disabled() || usize == sz_index2size(szind)); +} + +JEMALLOC_ALWAYS_INLINE size_t +emap_alloc_ctx_usize_get(emap_alloc_ctx_t *alloc_ctx) { + assert(alloc_ctx->szind < SC_NSIZES); + if (alloc_ctx->slab) { + assert(alloc_ctx->usize == sz_index2size(alloc_ctx->szind)); + return sz_index2size(alloc_ctx->szind); + } + assert(sz_large_size_classes_disabled() + || alloc_ctx->usize == sz_index2size(alloc_ctx->szind)); + assert(alloc_ctx->usize <= SC_LARGE_MAXCLASS); + return alloc_ctx->usize; +} + /* Fills in alloc_ctx with the info in the map. */ JEMALLOC_ALWAYS_INLINE void -emap_alloc_ctx_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr, - emap_alloc_ctx_t *alloc_ctx) { +emap_alloc_ctx_lookup( + tsdn_t *tsdn, emap_t *emap, const void *ptr, emap_alloc_ctx_t *alloc_ctx) { EMAP_DECLARE_RTREE_CTX; - rtree_metadata_t metadata = rtree_metadata_read(tsdn, &emap->rtree, - rtree_ctx, (uintptr_t)ptr); - alloc_ctx->szind = metadata.szind; - alloc_ctx->slab = metadata.slab; + rtree_contents_t contents = rtree_read( + tsdn, &emap->rtree, rtree_ctx, (uintptr_t)ptr); + /* + * If the alloc is invalid, do not calculate usize since edata + * could be corrupted. + */ + emap_alloc_ctx_init(alloc_ctx, contents.metadata.szind, + contents.metadata.slab, + (contents.metadata.szind == SC_NSIZES || contents.edata == NULL) + ? 0 + : edata_usize_get(contents.edata)); } /* The pointer must be mapped. */ @@ -247,8 +279,8 @@ emap_full_alloc_ctx_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr, emap_full_alloc_ctx_t *full_alloc_ctx) { EMAP_DECLARE_RTREE_CTX; - rtree_contents_t contents = rtree_read(tsdn, &emap->rtree, rtree_ctx, - (uintptr_t)ptr); + rtree_contents_t contents = rtree_read( + tsdn, &emap->rtree, rtree_ctx, (uintptr_t)ptr); full_alloc_ctx->edata = contents.edata; full_alloc_ctx->szind = contents.metadata.szind; full_alloc_ctx->slab = contents.metadata.slab; @@ -265,8 +297,8 @@ emap_full_alloc_ctx_try_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr, EMAP_DECLARE_RTREE_CTX; rtree_contents_t contents; - bool err = rtree_read_independent(tsdn, &emap->rtree, rtree_ctx, - (uintptr_t)ptr, &contents); + bool err = rtree_read_independent( + tsdn, &emap->rtree, rtree_ctx, (uintptr_t)ptr, &contents); if (err) { return true; } @@ -281,19 +313,26 @@ emap_full_alloc_ctx_try_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr, * fast path, e.g. when the metadata key is not cached. */ JEMALLOC_ALWAYS_INLINE bool -emap_alloc_ctx_try_lookup_fast(tsd_t *tsd, emap_t *emap, const void *ptr, - emap_alloc_ctx_t *alloc_ctx) { +emap_alloc_ctx_try_lookup_fast( + tsd_t *tsd, emap_t *emap, const void *ptr, emap_alloc_ctx_t *alloc_ctx) { /* Use the unsafe getter since this may gets called during exit. */ rtree_ctx_t *rtree_ctx = tsd_rtree_ctxp_get_unsafe(tsd); rtree_metadata_t metadata; - bool err = rtree_metadata_try_read_fast(tsd_tsdn(tsd), &emap->rtree, - rtree_ctx, (uintptr_t)ptr, &metadata); + bool err = rtree_metadata_try_read_fast( + tsd_tsdn(tsd), &emap->rtree, rtree_ctx, (uintptr_t)ptr, &metadata); if (err) { return true; } + /* + * Small allocs using the fastpath can always use index to get the + * usize. Therefore, do not set alloc_ctx->usize here. + */ alloc_ctx->szind = metadata.szind; alloc_ctx->slab = metadata.slab; + if (config_debug) { + alloc_ctx->usize = SC_LARGE_MAXCLASS + 1; + } return false; } @@ -308,11 +347,12 @@ typedef const void *(*emap_ptr_getter)(void *ctx, size_t ind); * This allows size-checking assertions, which we can only do while we're in the * process of edata lookups. */ -typedef void (*emap_metadata_visitor)(void *ctx, emap_full_alloc_ctx_t *alloc_ctx); +typedef void (*emap_metadata_visitor)( + void *ctx, emap_full_alloc_ctx_t *alloc_ctx); typedef union emap_batch_lookup_result_u emap_batch_lookup_result_t; union emap_batch_lookup_result_u { - edata_t *edata; + edata_t *edata; rtree_leaf_elm_t *rtree_leaf; }; @@ -338,8 +378,8 @@ emap_edata_lookup_batch(tsd_t *tsd, emap_t *emap, size_t nptrs, for (size_t i = 0; i < nptrs; i++) { rtree_leaf_elm_t *elm = result[i].rtree_leaf; - rtree_contents_t contents = rtree_leaf_elm_read(tsd_tsdn(tsd), - &emap->rtree, elm, /* dependent */ true); + rtree_contents_t contents = rtree_leaf_elm_read( + tsd_tsdn(tsd), &emap->rtree, elm, /* dependent */ true); result[i].edata = contents.edata; emap_full_alloc_ctx_t alloc_ctx; /* diff --git a/dep/jemalloc/include/jemalloc/internal/emitter.h b/dep/jemalloc/include/jemalloc/internal/emitter.h index 9482f68bc5c33..a4073e6aad558 100644 --- a/dep/jemalloc/include/jemalloc/internal/emitter.h +++ b/dep/jemalloc/include/jemalloc/internal/emitter.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_EMITTER_H #define JEMALLOC_INTERNAL_EMITTER_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" +#include "jemalloc/internal/jemalloc_internal_types.h" +#include "jemalloc/internal/malloc_io.h" #include "jemalloc/internal/ql.h" typedef enum emitter_output_e emitter_output_t; @@ -40,18 +44,18 @@ typedef struct emitter_col_s emitter_col_t; struct emitter_col_s { /* Filled in by the user. */ emitter_justify_t justify; - int width; - emitter_type_t type; + int width; + emitter_type_t type; union { - bool bool_val; - int int_val; - unsigned unsigned_val; - uint32_t uint32_val; - uint32_t uint32_t_val; - uint64_t uint64_val; - uint64_t uint64_t_val; - size_t size_val; - ssize_t ssize_val; + bool bool_val; + int int_val; + unsigned unsigned_val; + uint32_t uint32_val; + uint32_t uint32_t_val; + uint64_t uint64_val; + uint64_t uint64_t_val; + size_t size_val; + ssize_t ssize_val; const char *str_val; }; @@ -69,8 +73,8 @@ struct emitter_s { emitter_output_t output; /* The output information. */ write_cb_t *write_cb; - void *cbopaque; - int nesting_depth; + void *cbopaque; + int nesting_depth; /* True if we've already emitted a value at the given depth. */ bool item_at_depth; /* True if we emitted a key and will emit corresponding value next. */ @@ -79,8 +83,8 @@ struct emitter_s { static inline bool emitter_outputs_json(emitter_t *emitter) { - return emitter->output == emitter_output_json || - emitter->output == emitter_output_json_compact; + return emitter->output == emitter_output_json + || emitter->output == emitter_output_json_compact; } /* Internal convenience function. Write to the emitter the given string. */ @@ -94,26 +98,57 @@ emitter_printf(emitter_t *emitter, const char *format, ...) { va_end(ap); } -static inline const char * JEMALLOC_FORMAT_ARG(3) -emitter_gen_fmt(char *out_fmt, size_t out_size, const char *fmt_specifier, - emitter_justify_t justify, int width) { +static inline const char * +JEMALLOC_FORMAT_ARG(3) emitter_gen_fmt(char *out_fmt, size_t out_size, + const char *fmt_specifier, emitter_justify_t justify, int width) { size_t written; fmt_specifier++; if (justify == emitter_justify_none) { - written = malloc_snprintf(out_fmt, out_size, - "%%%s", fmt_specifier); + written = malloc_snprintf( + out_fmt, out_size, "%%%s", fmt_specifier); } else if (justify == emitter_justify_left) { - written = malloc_snprintf(out_fmt, out_size, - "%%-%d%s", width, fmt_specifier); + written = malloc_snprintf( + out_fmt, out_size, "%%-%d%s", width, fmt_specifier); } else { - written = malloc_snprintf(out_fmt, out_size, - "%%%d%s", width, fmt_specifier); + written = malloc_snprintf( + out_fmt, out_size, "%%%d%s", width, fmt_specifier); } /* Only happens in case of bad format string, which *we* choose. */ - assert(written < out_size); + assert(written < out_size); return out_fmt; } +static inline void +emitter_emit_str(emitter_t *emitter, emitter_justify_t justify, int width, + char *fmt, size_t fmt_size, const char *str) { +#define BUF_SIZE 256 + char buf[BUF_SIZE]; + size_t str_written = malloc_snprintf(buf, BUF_SIZE, "\"%s\"", str); + emitter_printf( + emitter, emitter_gen_fmt(fmt, fmt_size, "%s", justify, width), buf); + if (str_written < BUF_SIZE) { + return; + } + /* + * There is no support for long string justification at the moment as + * we output them partially with multiple malloc_snprintf calls and + * justufication will work correctly only withing one call. + * Fortunately this is not a big concern as we don't use justufication + * with long strings right now. + * + * We emitted leading quotation mark and trailing '\0', hence need to + * exclude extra characters from str shift. + */ + str += BUF_SIZE - 2; + do { + str_written = malloc_snprintf(buf, BUF_SIZE, "%s\"", str); + str += str_written >= BUF_SIZE ? BUF_SIZE - 1 : str_written; + emitter_printf(emitter, + emitter_gen_fmt(fmt, fmt_size, "%s", justify, width), buf); + } while (str_written >= BUF_SIZE); +#undef BUF_SIZE +} + /* * Internal. Emit the given value type in the relevant encoding (so that the * bool true gets mapped to json "true", but the string "true" gets mapped to @@ -124,8 +159,6 @@ emitter_gen_fmt(char *out_fmt, size_t out_size, const char *fmt_specifier, static inline void emitter_print_value(emitter_t *emitter, emitter_justify_t justify, int width, emitter_type_t value_type, const void *value) { - size_t str_written; -#define BUF_SIZE 256 #define FMT_SIZE 10 /* * We dynamically generate a format string to emit, to let us use the @@ -134,18 +167,17 @@ emitter_print_value(emitter_t *emitter, emitter_justify_t justify, int width, * cases. */ char fmt[FMT_SIZE]; - char buf[BUF_SIZE]; -#define EMIT_SIMPLE(type, format) \ - emitter_printf(emitter, \ - emitter_gen_fmt(fmt, FMT_SIZE, format, justify, width), \ +#define EMIT_SIMPLE(type, format) \ + emitter_printf(emitter, \ + emitter_gen_fmt(fmt, FMT_SIZE, format, justify, width), \ *(const type *)value); switch (value_type) { case emitter_type_bool: emitter_printf(emitter, emitter_gen_fmt(fmt, FMT_SIZE, "%s", justify, width), - *(const bool *)value ? "true" : "false"); + *(const bool *)value ? "true" : "false"); break; case emitter_type_int: EMIT_SIMPLE(int, "%d") @@ -163,15 +195,8 @@ emitter_print_value(emitter_t *emitter, emitter_justify_t justify, int width, EMIT_SIMPLE(size_t, "%zu") break; case emitter_type_string: - str_written = malloc_snprintf(buf, BUF_SIZE, "\"%s\"", + emitter_emit_str(emitter, justify, width, fmt, FMT_SIZE, *(const char *const *)value); - /* - * We control the strings we output; we shouldn't get anything - * anywhere near the fmt size. - */ - assert(str_written < BUF_SIZE); - emitter_printf(emitter, - emitter_gen_fmt(fmt, FMT_SIZE, "%s", justify, width), buf); break; case emitter_type_uint32: EMIT_SIMPLE(uint32_t, "%" FMTu32) @@ -185,11 +210,9 @@ emitter_print_value(emitter_t *emitter, emitter_justify_t justify, int width, default: unreachable(); } -#undef BUF_SIZE #undef FMT_SIZE } - /* Internal functions. In json mode, tracks nesting state. */ static inline void emitter_nest_inc(emitter_t *emitter) { @@ -205,7 +228,7 @@ emitter_nest_dec(emitter_t *emitter) { static inline void emitter_indent(emitter_t *emitter) { - int amount = emitter->nesting_depth; + int amount = emitter->nesting_depth; const char *indent_str; assert(emitter->output != emitter_output_json_compact); if (emitter->output == emitter_output_json) { @@ -267,12 +290,12 @@ emitter_json_key(emitter_t *emitter, const char *json_key) { } static inline void -emitter_json_value(emitter_t *emitter, emitter_type_t value_type, - const void *value) { +emitter_json_value( + emitter_t *emitter, emitter_type_t value_type, const void *value) { if (emitter_outputs_json(emitter)) { emitter_json_key_prefix(emitter); - emitter_print_value(emitter, emitter_justify_none, -1, - value_type, value); + emitter_print_value( + emitter, emitter_justify_none, -1, value_type, value); emitter->item_at_depth = true; } } @@ -343,7 +366,6 @@ emitter_json_object_end(emitter_t *emitter) { } } - /******************************************************************************/ /* Table public API. */ @@ -365,14 +387,13 @@ emitter_table_dict_end(emitter_t *emitter) { static inline void emitter_table_kv_note(emitter_t *emitter, const char *table_key, - emitter_type_t value_type, const void *value, - const char *table_note_key, emitter_type_t table_note_value_type, - const void *table_note_value) { + emitter_type_t value_type, const void *value, const char *table_note_key, + emitter_type_t table_note_value_type, const void *table_note_value) { if (emitter->output == emitter_output_table) { emitter_indent(emitter); emitter_printf(emitter, "%s: ", table_key); - emitter_print_value(emitter, emitter_justify_none, -1, - value_type, value); + emitter_print_value( + emitter, emitter_justify_none, -1, value_type, value); if (table_note_key != NULL) { emitter_printf(emitter, " (%s: ", table_note_key); emitter_print_value(emitter, emitter_justify_none, -1, @@ -391,7 +412,6 @@ emitter_table_kv(emitter_t *emitter, const char *table_key, emitter_type_bool, NULL); } - /* Write to the emitter the given string, but only in table mode. */ JEMALLOC_FORMAT_PRINTF(2, 3) static inline void @@ -399,7 +419,8 @@ emitter_table_printf(emitter_t *emitter, const char *format, ...) { if (emitter->output == emitter_output_table) { va_list ap; va_start(ap, format); - malloc_vcprintf(emitter->write_cb, emitter->cbopaque, format, ap); + malloc_vcprintf( + emitter->write_cb, emitter->cbopaque, format, ap); va_end(ap); } } @@ -410,7 +431,7 @@ emitter_table_row(emitter_t *emitter, emitter_row_t *row) { return; } emitter_col_t *col; - ql_foreach(col, &row->cols, link) { + ql_foreach (col, &row->cols, link) { emitter_print_value(emitter, col->justify, col->width, col->type, (const void *)&col->bool_val); } @@ -428,7 +449,6 @@ emitter_col_init(emitter_col_t *col, emitter_row_t *row) { ql_tail_insert(&row->cols, col, link); } - /******************************************************************************/ /* * Generalized public API. Emits using either JSON or table, according to @@ -440,9 +460,8 @@ emitter_col_init(emitter_col_t *col, emitter_row_t *row) { */ static inline void emitter_kv_note(emitter_t *emitter, const char *json_key, const char *table_key, - emitter_type_t value_type, const void *value, - const char *table_note_key, emitter_type_t table_note_value_type, - const void *table_note_value) { + emitter_type_t value_type, const void *value, const char *table_note_key, + emitter_type_t table_note_value_type, const void *table_note_value) { if (emitter_outputs_json(emitter)) { emitter_json_key(emitter, json_key); emitter_json_value(emitter, value_type, value); @@ -461,8 +480,8 @@ emitter_kv(emitter_t *emitter, const char *json_key, const char *table_key, } static inline void -emitter_dict_begin(emitter_t *emitter, const char *json_key, - const char *table_header) { +emitter_dict_begin( + emitter_t *emitter, const char *json_key, const char *table_header) { if (emitter_outputs_json(emitter)) { emitter_json_key(emitter, json_key); emitter_json_object_begin(emitter); @@ -502,8 +521,9 @@ emitter_end(emitter_t *emitter) { if (emitter_outputs_json(emitter)) { assert(emitter->nesting_depth == 1); emitter_nest_dec(emitter); - emitter_printf(emitter, "%s", emitter->output == - emitter_output_json_compact ? "}" : "\n}\n"); + emitter_printf(emitter, "%s", + emitter->output == emitter_output_json_compact ? "}" + : "\n}\n"); } } diff --git a/dep/jemalloc/include/jemalloc/internal/eset.h b/dep/jemalloc/include/jemalloc/internal/eset.h index 4f689b47d8811..9b7c4a89e14bc 100644 --- a/dep/jemalloc/include/jemalloc/internal/eset.h +++ b/dep/jemalloc/include/jemalloc/internal/eset.h @@ -1,9 +1,10 @@ #ifndef JEMALLOC_INTERNAL_ESET_H #define JEMALLOC_INTERNAL_ESET_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" -#include "jemalloc/internal/fb.h" #include "jemalloc/internal/edata.h" +#include "jemalloc/internal/fb.h" #include "jemalloc/internal/mutex.h" /* diff --git a/dep/jemalloc/include/jemalloc/internal/exp_grow.h b/dep/jemalloc/include/jemalloc/internal/exp_grow.h index 8566b8a4c6a4b..8206ba8572c03 100644 --- a/dep/jemalloc/include/jemalloc/internal/exp_grow.h +++ b/dep/jemalloc/include/jemalloc/internal/exp_grow.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_EXP_GROW_H #define JEMALLOC_INTERNAL_EXP_GROW_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/sz.h" typedef struct exp_grow_s exp_grow_t; struct exp_grow_s { /* @@ -25,8 +27,7 @@ exp_grow_size_prepare(exp_grow_t *exp_grow, size_t alloc_size_min, *r_alloc_size = sz_pind2sz(exp_grow->next + *r_skip); while (*r_alloc_size < alloc_size_min) { (*r_skip)++; - if (exp_grow->next + *r_skip >= - sz_psz2ind(SC_LARGE_MAXCLASS)) { + if (exp_grow->next + *r_skip >= sz_psz2ind(SC_LARGE_MAXCLASS)) { /* Outside legal range. */ return true; } @@ -42,7 +43,6 @@ exp_grow_size_commit(exp_grow_t *exp_grow, pszind_t skip) { } else { exp_grow->next = exp_grow->limit; } - } void exp_grow_init(exp_grow_t *exp_grow); diff --git a/dep/jemalloc/include/jemalloc/internal/extent.h b/dep/jemalloc/include/jemalloc/internal/extent.h index 1d51d41097e3a..a9f81cb78f52a 100644 --- a/dep/jemalloc/include/jemalloc/internal/extent.h +++ b/dep/jemalloc/include/jemalloc/internal/extent.h @@ -1,8 +1,10 @@ #ifndef JEMALLOC_INTERNAL_EXTENT_H #define JEMALLOC_INTERNAL_EXTENT_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/ecache.h" #include "jemalloc/internal/ehooks.h" +#include "jemalloc/internal/pac.h" #include "jemalloc/internal/ph.h" #include "jemalloc/internal/rtree.h" @@ -19,50 +21,58 @@ #define LG_EXTENT_MAX_ACTIVE_FIT_DEFAULT 6 extern size_t opt_lg_extent_max_active_fit; +#define PROCESS_MADVISE_MAX_BATCH_DEFAULT 0 +extern size_t opt_process_madvise_max_batch; + +#ifdef JEMALLOC_HAVE_PROCESS_MADVISE +/* The iovec is on stack. Limit the max batch to avoid stack overflow. */ +# define PROCESS_MADVISE_MAX_BATCH_LIMIT \ + (VARIABLE_ARRAY_SIZE_MAX / sizeof(struct iovec)) +#else +# define PROCESS_MADVISE_MAX_BATCH_LIMIT 0 +#endif + edata_t *ecache_alloc(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *expand_edata, size_t size, size_t alignment, bool zero, bool guarded); edata_t *ecache_alloc_grow(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *expand_edata, size_t size, size_t alignment, bool zero, bool guarded); -void ecache_dalloc(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - ecache_t *ecache, edata_t *edata); +void ecache_dalloc(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, + edata_t *edata); edata_t *ecache_evict(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, size_t npages_min); void extent_gdump_add(tsdn_t *tsdn, const edata_t *edata); void extent_record(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *edata); -void extent_dalloc_gap(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata); +void extent_dalloc_gap( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata); edata_t *extent_alloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, void *new_addr, size_t size, size_t alignment, bool zero, bool *commit, bool growing_retained); -void extent_dalloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata); -void extent_destroy_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata); -bool extent_commit_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - size_t offset, size_t length); -bool extent_decommit_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - size_t offset, size_t length); +void extent_dalloc_wrapper( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata); +void extent_dalloc_wrapper_purged( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata); +void extent_destroy_wrapper( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata); bool extent_purge_lazy_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length); bool extent_purge_forced_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length); -edata_t *extent_split_wrapper(tsdn_t *tsdn, pac_t *pac, - ehooks_t *ehooks, edata_t *edata, size_t size_a, size_t size_b, - bool holding_core_locks); -bool extent_merge_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *a, edata_t *b); -bool extent_commit_zero(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - bool commit, bool zero, bool growing_retained); +edata_t *extent_split_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, + edata_t *edata, size_t size_a, size_t size_b, bool holding_core_locks); +bool extent_merge_wrapper( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *a, edata_t *b); +bool extent_commit_zero(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, + bool commit, bool zero, bool growing_retained); size_t extent_sn_next(pac_t *pac); -bool extent_boot(void); +bool extent_boot(void); JEMALLOC_ALWAYS_INLINE bool -extent_neighbor_head_state_mergeable(bool edata_is_head, - bool neighbor_is_head, bool forward) { +extent_neighbor_head_state_mergeable( + bool edata_is_head, bool neighbor_is_head, bool forward) { /* * Head states checking: disallow merging if the higher addr extent is a * head extent. This helps preserve first-fit, and more importantly @@ -90,8 +100,8 @@ extent_can_acquire_neighbor(edata_t *edata, rtree_contents_t contents, } /* It's not safe to access *neighbor yet; must verify states first. */ bool neighbor_is_head = contents.metadata.is_head; - if (!extent_neighbor_head_state_mergeable(edata_is_head_get(edata), - neighbor_is_head, forward)) { + if (!extent_neighbor_head_state_mergeable( + edata_is_head_get(edata), neighbor_is_head, forward)) { return false; } extent_state_t neighbor_state = contents.metadata.state; @@ -100,8 +110,9 @@ extent_can_acquire_neighbor(edata_t *edata, rtree_contents_t contents, return false; } /* From this point, it's safe to access *neighbor. */ - if (!expanding && (edata_committed_get(edata) != - edata_committed_get(neighbor))) { + if (!expanding + && (edata_committed_get(edata) + != edata_committed_get(neighbor))) { /* * Some platforms (e.g. Windows) require an explicit * commit step (and writing to uncommitted memory is not @@ -121,11 +132,11 @@ extent_can_acquire_neighbor(edata_t *edata, rtree_contents_t contents, return false; } if (opt_retain) { - assert(edata_arena_ind_get(edata) == - edata_arena_ind_get(neighbor)); + assert(edata_arena_ind_get(edata) + == edata_arena_ind_get(neighbor)); } else { - if (edata_arena_ind_get(edata) != - edata_arena_ind_get(neighbor)) { + if (edata_arena_ind_get(edata) + != edata_arena_ind_get(neighbor)) { return false; } } diff --git a/dep/jemalloc/include/jemalloc/internal/extent_dss.h b/dep/jemalloc/include/jemalloc/internal/extent_dss.h index e8f02ce2ad276..4bb3f51d71455 100644 --- a/dep/jemalloc/include/jemalloc/internal/extent_dss.h +++ b/dep/jemalloc/include/jemalloc/internal/extent_dss.h @@ -1,26 +1,30 @@ #ifndef JEMALLOC_INTERNAL_EXTENT_DSS_H #define JEMALLOC_INTERNAL_EXTENT_DSS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_types.h" +#include "jemalloc/internal/tsd_types.h" + typedef enum { - dss_prec_disabled = 0, - dss_prec_primary = 1, + dss_prec_disabled = 0, + dss_prec_primary = 1, dss_prec_secondary = 2, - dss_prec_limit = 3 + dss_prec_limit = 3 } dss_prec_t; #define DSS_PREC_DEFAULT dss_prec_secondary #define DSS_DEFAULT "secondary" -extern const char *dss_prec_names[]; +extern const char *const dss_prec_names[]; extern const char *opt_dss; dss_prec_t extent_dss_prec_get(void); -bool extent_dss_prec_set(dss_prec_t dss_prec); -void *extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, - size_t size, size_t alignment, bool *zero, bool *commit); -bool extent_in_dss(void *addr); -bool extent_dss_mergeable(void *addr_a, void *addr_b); -void extent_dss_boot(void); +bool extent_dss_prec_set(dss_prec_t dss_prec); +void *extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, + size_t size, size_t alignment, bool *zero, bool *commit); +bool extent_in_dss(void *addr); +bool extent_dss_mergeable(void *addr_a, void *addr_b); +void extent_dss_boot(void); #endif /* JEMALLOC_INTERNAL_EXTENT_DSS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/extent_mmap.h b/dep/jemalloc/include/jemalloc/internal/extent_mmap.h index 55f17ee4876ae..aa46989669a9d 100644 --- a/dep/jemalloc/include/jemalloc/internal/extent_mmap.h +++ b/dep/jemalloc/include/jemalloc/internal/extent_mmap.h @@ -1,10 +1,12 @@ #ifndef JEMALLOC_INTERNAL_EXTENT_MMAP_EXTERNS_H #define JEMALLOC_INTERNAL_EXTENT_MMAP_EXTERNS_H +#include "jemalloc/internal/jemalloc_preamble.h" + extern bool opt_retain; -void *extent_alloc_mmap(void *new_addr, size_t size, size_t alignment, - bool *zero, bool *commit); +void *extent_alloc_mmap( + void *new_addr, size_t size, size_t alignment, bool *zero, bool *commit); bool extent_dalloc_mmap(void *addr, size_t size); #endif /* JEMALLOC_INTERNAL_EXTENT_MMAP_EXTERNS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/fb.h b/dep/jemalloc/include/jemalloc/internal/fb.h index 90c4091ff6cc0..bf76f3629dd95 100644 --- a/dep/jemalloc/include/jemalloc/internal/fb.h +++ b/dep/jemalloc/include/jemalloc/internal/fb.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_FB_H #define JEMALLOC_INTERNAL_FB_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" +#include "jemalloc/internal/bit_util.h" + /* * The flat bitmap module. This has a larger API relative to the bitmap module * (supporting things like backwards searches, and searching for both set and @@ -11,8 +15,8 @@ typedef unsigned long fb_group_t; #define FB_GROUP_BITS (ZU(1) << (LG_SIZEOF_LONG + 3)) -#define FB_NGROUPS(nbits) ((nbits) / FB_GROUP_BITS \ - + ((nbits) % FB_GROUP_BITS == 0 ? 0 : 1)) +#define FB_NGROUPS(nbits) \ + ((nbits) / FB_GROUP_BITS + ((nbits) % FB_GROUP_BITS == 0 ? 0 : 1)) static inline void fb_init(fb_group_t *fb, size_t nbits) { @@ -71,7 +75,6 @@ fb_unset(fb_group_t *fb, size_t nbits, size_t bit) { fb[group_ind] &= ~((fb_group_t)1 << bit_ind); } - /* * Some implementation details. This visitation function lets us apply a group * visitor to each group in the bitmap (potentially modifying it). The mask @@ -90,7 +93,8 @@ fb_visit_impl(fb_group_t *fb, size_t nbits, fb_group_visitor_t visit, void *ctx, * to from bit 0. */ size_t first_group_cnt = (start_bit_ind + cnt > FB_GROUP_BITS - ? FB_GROUP_BITS - start_bit_ind : cnt); + ? FB_GROUP_BITS - start_bit_ind + : cnt); /* * We can basically split affected words into: * - The first group, where we touch only the high bits @@ -100,8 +104,8 @@ fb_visit_impl(fb_group_t *fb, size_t nbits, fb_group_visitor_t visit, void *ctx, * this can lead to bad codegen for those middle words. */ /* First group */ - fb_group_t mask = ((~(fb_group_t)0) - >> (FB_GROUP_BITS - first_group_cnt)) + fb_group_t mask = + ((~(fb_group_t)0) >> (FB_GROUP_BITS - first_group_cnt)) << start_bit_ind; visit(ctx, &fb[group_ind], mask); @@ -172,12 +176,12 @@ fb_ucount(fb_group_t *fb, size_t nbits, size_t start, size_t cnt) { * Returns the number of bits in the bitmap if no such bit exists. */ JEMALLOC_ALWAYS_INLINE ssize_t -fb_find_impl(fb_group_t *fb, size_t nbits, size_t start, bool val, - bool forward) { +fb_find_impl( + fb_group_t *fb, size_t nbits, size_t start, bool val, bool forward) { assert(start < nbits); - size_t ngroups = FB_NGROUPS(nbits); + size_t ngroups = FB_NGROUPS(nbits); ssize_t group_ind = start / FB_GROUP_BITS; - size_t bit_ind = start % FB_GROUP_BITS; + size_t bit_ind = start % FB_GROUP_BITS; fb_group_t maybe_invert = (val ? 0 : (fb_group_t)-1); @@ -261,8 +265,8 @@ fb_iter_range_impl(fb_group_t *fb, size_t nbits, size_t start, size_t *r_begin, return false; } /* Half open range; the set bits are [begin, end). */ - ssize_t next_range_end = fb_find_impl(fb, nbits, next_range_begin, !val, - forward); + ssize_t next_range_end = fb_find_impl( + fb, nbits, next_range_begin, !val, forward); if (forward) { *r_begin = next_range_begin; *r_len = next_range_end - next_range_begin; @@ -320,8 +324,9 @@ fb_range_longest_impl(fb_group_t *fb, size_t nbits, bool val) { size_t begin = 0; size_t longest_len = 0; size_t len = 0; - while (begin < nbits && fb_iter_range_impl(fb, nbits, begin, &begin, - &len, val, /* forward */ true)) { + while (begin < nbits + && fb_iter_range_impl( + fb, nbits, begin, &begin, &len, val, /* forward */ true)) { if (len > longest_len) { longest_len = len; } diff --git a/dep/jemalloc/include/jemalloc/internal/fxp.h b/dep/jemalloc/include/jemalloc/internal/fxp.h index 415a982890a14..8ca4f3c679b72 100644 --- a/dep/jemalloc/include/jemalloc/internal/fxp.h +++ b/dep/jemalloc/include/jemalloc/internal/fxp.h @@ -1,6 +1,9 @@ #ifndef JEMALLOC_INTERNAL_FXP_H #define JEMALLOC_INTERNAL_FXP_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" + /* * A simple fixed-point math implementation, supporting only unsigned values * (with overflow being an error). @@ -86,7 +89,7 @@ fxp_round_down(fxp_t a) { static inline uint32_t fxp_round_nearest(fxp_t a) { - uint32_t fractional_part = (a & ((1U << 16) - 1)); + uint32_t fractional_part = (a & ((1U << 16) - 1)); uint32_t increment = (uint32_t)(fractional_part >= (1U << 15)); return (a >> 16) + increment; } diff --git a/dep/jemalloc/include/jemalloc/internal/hash.h b/dep/jemalloc/include/jemalloc/internal/hash.h index 7f945679efbc9..73e2214ebef46 100644 --- a/dep/jemalloc/include/jemalloc/internal/hash.h +++ b/dep/jemalloc/include/jemalloc/internal/hash.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_HASH_H #define JEMALLOC_INTERNAL_HASH_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/assert.h" /* @@ -24,7 +25,7 @@ hash_rotl_64(uint64_t x, int8_t r) { static inline uint32_t hash_get_block_32(const uint32_t *p, int i) { /* Handle unaligned read. */ - if (unlikely((uintptr_t)p & (sizeof(uint32_t)-1)) != 0) { + if (unlikely((uintptr_t)p & (sizeof(uint32_t) - 1)) != 0) { uint32_t ret; memcpy(&ret, (uint8_t *)(p + i), sizeof(uint32_t)); @@ -37,7 +38,7 @@ hash_get_block_32(const uint32_t *p, int i) { static inline uint64_t hash_get_block_64(const uint64_t *p, int i) { /* Handle unaligned read. */ - if (unlikely((uintptr_t)p & (sizeof(uint64_t)-1)) != 0) { + if (unlikely((uintptr_t)p & (sizeof(uint64_t) - 1)) != 0) { uint64_t ret; memcpy(&ret, (uint8_t *)(p + i), sizeof(uint64_t)); @@ -71,8 +72,8 @@ hash_fmix_64(uint64_t k) { static inline uint32_t hash_x86_32(const void *key, int len, uint32_t seed) { - const uint8_t *data = (const uint8_t *) key; - const int nblocks = len / 4; + const uint8_t *data = (const uint8_t *)key; + const int nblocks = len / 4; uint32_t h1 = seed; @@ -81,8 +82,8 @@ hash_x86_32(const void *key, int len, uint32_t seed) { /* body */ { - const uint32_t *blocks = (const uint32_t *) (data + nblocks*4); - int i; + const uint32_t *blocks = (const uint32_t *)(data + nblocks * 4); + int i; for (i = -nblocks; i; i++) { uint32_t k1 = hash_get_block_32(blocks, i); @@ -93,21 +94,29 @@ hash_x86_32(const void *key, int len, uint32_t seed) { h1 ^= k1; h1 = hash_rotl_32(h1, 13); - h1 = h1*5 + 0xe6546b64; + h1 = h1 * 5 + 0xe6546b64; } } /* tail */ { - const uint8_t *tail = (const uint8_t *) (data + nblocks*4); + const uint8_t *tail = (const uint8_t *)(data + nblocks * 4); uint32_t k1 = 0; switch (len & 3) { - case 3: k1 ^= tail[2] << 16; JEMALLOC_FALLTHROUGH; - case 2: k1 ^= tail[1] << 8; JEMALLOC_FALLTHROUGH; - case 1: k1 ^= tail[0]; k1 *= c1; k1 = hash_rotl_32(k1, 15); - k1 *= c2; h1 ^= k1; + case 3: + k1 ^= tail[2] << 16; + JEMALLOC_FALLTHROUGH; + case 2: + k1 ^= tail[1] << 8; + JEMALLOC_FALLTHROUGH; + case 1: + k1 ^= tail[0]; + k1 *= c1; + k1 = hash_rotl_32(k1, 15); + k1 *= c2; + h1 ^= k1; } } @@ -120,10 +129,9 @@ hash_x86_32(const void *key, int len, uint32_t seed) { } static inline void -hash_x86_128(const void *key, const int len, uint32_t seed, - uint64_t r_out[2]) { - const uint8_t * data = (const uint8_t *) key; - const int nblocks = len / 16; +hash_x86_128(const void *key, const int len, uint32_t seed, uint64_t r_out[2]) { + const uint8_t *data = (const uint8_t *)key; + const int nblocks = len / 16; uint32_t h1 = seed; uint32_t h2 = seed; @@ -137,95 +145,161 @@ hash_x86_128(const void *key, const int len, uint32_t seed, /* body */ { - const uint32_t *blocks = (const uint32_t *) (data + nblocks*16); - int i; + const uint32_t *blocks = (const uint32_t *)(data + + nblocks * 16); + int i; for (i = -nblocks; i; i++) { - uint32_t k1 = hash_get_block_32(blocks, i*4 + 0); - uint32_t k2 = hash_get_block_32(blocks, i*4 + 1); - uint32_t k3 = hash_get_block_32(blocks, i*4 + 2); - uint32_t k4 = hash_get_block_32(blocks, i*4 + 3); + uint32_t k1 = hash_get_block_32(blocks, i * 4 + 0); + uint32_t k2 = hash_get_block_32(blocks, i * 4 + 1); + uint32_t k3 = hash_get_block_32(blocks, i * 4 + 2); + uint32_t k4 = hash_get_block_32(blocks, i * 4 + 3); - k1 *= c1; k1 = hash_rotl_32(k1, 15); k1 *= c2; h1 ^= k1; + k1 *= c1; + k1 = hash_rotl_32(k1, 15); + k1 *= c2; + h1 ^= k1; - h1 = hash_rotl_32(h1, 19); h1 += h2; - h1 = h1*5 + 0x561ccd1b; + h1 = hash_rotl_32(h1, 19); + h1 += h2; + h1 = h1 * 5 + 0x561ccd1b; - k2 *= c2; k2 = hash_rotl_32(k2, 16); k2 *= c3; h2 ^= k2; + k2 *= c2; + k2 = hash_rotl_32(k2, 16); + k2 *= c3; + h2 ^= k2; - h2 = hash_rotl_32(h2, 17); h2 += h3; - h2 = h2*5 + 0x0bcaa747; + h2 = hash_rotl_32(h2, 17); + h2 += h3; + h2 = h2 * 5 + 0x0bcaa747; - k3 *= c3; k3 = hash_rotl_32(k3, 17); k3 *= c4; h3 ^= k3; + k3 *= c3; + k3 = hash_rotl_32(k3, 17); + k3 *= c4; + h3 ^= k3; - h3 = hash_rotl_32(h3, 15); h3 += h4; - h3 = h3*5 + 0x96cd1c35; + h3 = hash_rotl_32(h3, 15); + h3 += h4; + h3 = h3 * 5 + 0x96cd1c35; - k4 *= c4; k4 = hash_rotl_32(k4, 18); k4 *= c1; h4 ^= k4; + k4 *= c4; + k4 = hash_rotl_32(k4, 18); + k4 *= c1; + h4 ^= k4; - h4 = hash_rotl_32(h4, 13); h4 += h1; - h4 = h4*5 + 0x32ac3b17; + h4 = hash_rotl_32(h4, 13); + h4 += h1; + h4 = h4 * 5 + 0x32ac3b17; } } /* tail */ { - const uint8_t *tail = (const uint8_t *) (data + nblocks*16); - uint32_t k1 = 0; - uint32_t k2 = 0; - uint32_t k3 = 0; - uint32_t k4 = 0; + const uint8_t *tail = (const uint8_t *)(data + nblocks * 16); + uint32_t k1 = 0; + uint32_t k2 = 0; + uint32_t k3 = 0; + uint32_t k4 = 0; switch (len & 15) { - case 15: k4 ^= tail[14] << 16; JEMALLOC_FALLTHROUGH; - case 14: k4 ^= tail[13] << 8; JEMALLOC_FALLTHROUGH; - case 13: k4 ^= tail[12] << 0; - k4 *= c4; k4 = hash_rotl_32(k4, 18); k4 *= c1; h4 ^= k4; + case 15: + k4 ^= tail[14] << 16; + JEMALLOC_FALLTHROUGH; + case 14: + k4 ^= tail[13] << 8; + JEMALLOC_FALLTHROUGH; + case 13: + k4 ^= tail[12] << 0; + k4 *= c4; + k4 = hash_rotl_32(k4, 18); + k4 *= c1; + h4 ^= k4; JEMALLOC_FALLTHROUGH; - case 12: k3 ^= (uint32_t) tail[11] << 24; JEMALLOC_FALLTHROUGH; - case 11: k3 ^= tail[10] << 16; JEMALLOC_FALLTHROUGH; - case 10: k3 ^= tail[ 9] << 8; JEMALLOC_FALLTHROUGH; - case 9: k3 ^= tail[ 8] << 0; - k3 *= c3; k3 = hash_rotl_32(k3, 17); k3 *= c4; h3 ^= k3; + case 12: + k3 ^= (uint32_t)tail[11] << 24; JEMALLOC_FALLTHROUGH; - case 8: k2 ^= (uint32_t) tail[ 7] << 24; JEMALLOC_FALLTHROUGH; - case 7: k2 ^= tail[ 6] << 16; JEMALLOC_FALLTHROUGH; - case 6: k2 ^= tail[ 5] << 8; JEMALLOC_FALLTHROUGH; - case 5: k2 ^= tail[ 4] << 0; - k2 *= c2; k2 = hash_rotl_32(k2, 16); k2 *= c3; h2 ^= k2; + case 11: + k3 ^= tail[10] << 16; JEMALLOC_FALLTHROUGH; - case 4: k1 ^= (uint32_t) tail[ 3] << 24; JEMALLOC_FALLTHROUGH; - case 3: k1 ^= tail[ 2] << 16; JEMALLOC_FALLTHROUGH; - case 2: k1 ^= tail[ 1] << 8; JEMALLOC_FALLTHROUGH; - case 1: k1 ^= tail[ 0] << 0; - k1 *= c1; k1 = hash_rotl_32(k1, 15); k1 *= c2; h1 ^= k1; + case 10: + k3 ^= tail[9] << 8; + JEMALLOC_FALLTHROUGH; + case 9: + k3 ^= tail[8] << 0; + k3 *= c3; + k3 = hash_rotl_32(k3, 17); + k3 *= c4; + h3 ^= k3; + JEMALLOC_FALLTHROUGH; + case 8: + k2 ^= (uint32_t)tail[7] << 24; + JEMALLOC_FALLTHROUGH; + case 7: + k2 ^= tail[6] << 16; + JEMALLOC_FALLTHROUGH; + case 6: + k2 ^= tail[5] << 8; + JEMALLOC_FALLTHROUGH; + case 5: + k2 ^= tail[4] << 0; + k2 *= c2; + k2 = hash_rotl_32(k2, 16); + k2 *= c3; + h2 ^= k2; + JEMALLOC_FALLTHROUGH; + case 4: + k1 ^= (uint32_t)tail[3] << 24; + JEMALLOC_FALLTHROUGH; + case 3: + k1 ^= tail[2] << 16; + JEMALLOC_FALLTHROUGH; + case 2: + k1 ^= tail[1] << 8; + JEMALLOC_FALLTHROUGH; + case 1: + k1 ^= tail[0] << 0; + k1 *= c1; + k1 = hash_rotl_32(k1, 15); + k1 *= c2; + h1 ^= k1; break; } } /* finalization */ - h1 ^= len; h2 ^= len; h3 ^= len; h4 ^= len; + h1 ^= len; + h2 ^= len; + h3 ^= len; + h4 ^= len; - h1 += h2; h1 += h3; h1 += h4; - h2 += h1; h3 += h1; h4 += h1; + h1 += h2; + h1 += h3; + h1 += h4; + h2 += h1; + h3 += h1; + h4 += h1; h1 = hash_fmix_32(h1); h2 = hash_fmix_32(h2); h3 = hash_fmix_32(h3); h4 = hash_fmix_32(h4); - h1 += h2; h1 += h3; h1 += h4; - h2 += h1; h3 += h1; h4 += h1; + h1 += h2; + h1 += h3; + h1 += h4; + h2 += h1; + h3 += h1; + h4 += h1; - r_out[0] = (((uint64_t) h2) << 32) | h1; - r_out[1] = (((uint64_t) h4) << 32) | h3; + r_out[0] = (((uint64_t)h2) << 32) | h1; + r_out[1] = (((uint64_t)h4) << 32) | h3; } static inline void -hash_x64_128(const void *key, const int len, const uint32_t seed, - uint64_t r_out[2]) { - const uint8_t *data = (const uint8_t *) key; - const int nblocks = len / 16; +hash_x64_128( + const void *key, const int len, const uint32_t seed, uint64_t r_out[2]) { + const uint8_t *data = (const uint8_t *)key; + const int nblocks = len / 16; uint64_t h1 = seed; uint64_t h2 = seed; @@ -235,56 +309,99 @@ hash_x64_128(const void *key, const int len, const uint32_t seed, /* body */ { - const uint64_t *blocks = (const uint64_t *) (data); - int i; + const uint64_t *blocks = (const uint64_t *)(data); + int i; for (i = 0; i < nblocks; i++) { - uint64_t k1 = hash_get_block_64(blocks, i*2 + 0); - uint64_t k2 = hash_get_block_64(blocks, i*2 + 1); + uint64_t k1 = hash_get_block_64(blocks, i * 2 + 0); + uint64_t k2 = hash_get_block_64(blocks, i * 2 + 1); - k1 *= c1; k1 = hash_rotl_64(k1, 31); k1 *= c2; h1 ^= k1; + k1 *= c1; + k1 = hash_rotl_64(k1, 31); + k1 *= c2; + h1 ^= k1; - h1 = hash_rotl_64(h1, 27); h1 += h2; - h1 = h1*5 + 0x52dce729; + h1 = hash_rotl_64(h1, 27); + h1 += h2; + h1 = h1 * 5 + 0x52dce729; - k2 *= c2; k2 = hash_rotl_64(k2, 33); k2 *= c1; h2 ^= k2; + k2 *= c2; + k2 = hash_rotl_64(k2, 33); + k2 *= c1; + h2 ^= k2; - h2 = hash_rotl_64(h2, 31); h2 += h1; - h2 = h2*5 + 0x38495ab5; + h2 = hash_rotl_64(h2, 31); + h2 += h1; + h2 = h2 * 5 + 0x38495ab5; } } /* tail */ { - const uint8_t *tail = (const uint8_t*)(data + nblocks*16); - uint64_t k1 = 0; - uint64_t k2 = 0; + const uint8_t *tail = (const uint8_t *)(data + nblocks * 16); + uint64_t k1 = 0; + uint64_t k2 = 0; switch (len & 15) { - case 15: k2 ^= ((uint64_t)(tail[14])) << 48; JEMALLOC_FALLTHROUGH; - case 14: k2 ^= ((uint64_t)(tail[13])) << 40; JEMALLOC_FALLTHROUGH; - case 13: k2 ^= ((uint64_t)(tail[12])) << 32; JEMALLOC_FALLTHROUGH; - case 12: k2 ^= ((uint64_t)(tail[11])) << 24; JEMALLOC_FALLTHROUGH; - case 11: k2 ^= ((uint64_t)(tail[10])) << 16; JEMALLOC_FALLTHROUGH; - case 10: k2 ^= ((uint64_t)(tail[ 9])) << 8; JEMALLOC_FALLTHROUGH; - case 9: k2 ^= ((uint64_t)(tail[ 8])) << 0; - k2 *= c2; k2 = hash_rotl_64(k2, 33); k2 *= c1; h2 ^= k2; + case 15: + k2 ^= ((uint64_t)(tail[14])) << 48; + JEMALLOC_FALLTHROUGH; + case 14: + k2 ^= ((uint64_t)(tail[13])) << 40; + JEMALLOC_FALLTHROUGH; + case 13: + k2 ^= ((uint64_t)(tail[12])) << 32; + JEMALLOC_FALLTHROUGH; + case 12: + k2 ^= ((uint64_t)(tail[11])) << 24; + JEMALLOC_FALLTHROUGH; + case 11: + k2 ^= ((uint64_t)(tail[10])) << 16; + JEMALLOC_FALLTHROUGH; + case 10: + k2 ^= ((uint64_t)(tail[9])) << 8; JEMALLOC_FALLTHROUGH; - case 8: k1 ^= ((uint64_t)(tail[ 7])) << 56; JEMALLOC_FALLTHROUGH; - case 7: k1 ^= ((uint64_t)(tail[ 6])) << 48; JEMALLOC_FALLTHROUGH; - case 6: k1 ^= ((uint64_t)(tail[ 5])) << 40; JEMALLOC_FALLTHROUGH; - case 5: k1 ^= ((uint64_t)(tail[ 4])) << 32; JEMALLOC_FALLTHROUGH; - case 4: k1 ^= ((uint64_t)(tail[ 3])) << 24; JEMALLOC_FALLTHROUGH; - case 3: k1 ^= ((uint64_t)(tail[ 2])) << 16; JEMALLOC_FALLTHROUGH; - case 2: k1 ^= ((uint64_t)(tail[ 1])) << 8; JEMALLOC_FALLTHROUGH; - case 1: k1 ^= ((uint64_t)(tail[ 0])) << 0; - k1 *= c1; k1 = hash_rotl_64(k1, 31); k1 *= c2; h1 ^= k1; + case 9: + k2 ^= ((uint64_t)(tail[8])) << 0; + k2 *= c2; + k2 = hash_rotl_64(k2, 33); + k2 *= c1; + h2 ^= k2; + JEMALLOC_FALLTHROUGH; + case 8: + k1 ^= ((uint64_t)(tail[7])) << 56; + JEMALLOC_FALLTHROUGH; + case 7: + k1 ^= ((uint64_t)(tail[6])) << 48; + JEMALLOC_FALLTHROUGH; + case 6: + k1 ^= ((uint64_t)(tail[5])) << 40; + JEMALLOC_FALLTHROUGH; + case 5: + k1 ^= ((uint64_t)(tail[4])) << 32; + JEMALLOC_FALLTHROUGH; + case 4: + k1 ^= ((uint64_t)(tail[3])) << 24; + JEMALLOC_FALLTHROUGH; + case 3: + k1 ^= ((uint64_t)(tail[2])) << 16; + JEMALLOC_FALLTHROUGH; + case 2: + k1 ^= ((uint64_t)(tail[1])) << 8; + JEMALLOC_FALLTHROUGH; + case 1: + k1 ^= ((uint64_t)(tail[0])) << 0; + k1 *= c1; + k1 = hash_rotl_64(k1, 31); + k1 *= c2; + h1 ^= k1; break; } } /* finalization */ - h1 ^= len; h2 ^= len; + h1 ^= len; + h2 ^= len; h1 += h2; h2 += h1; diff --git a/dep/jemalloc/include/jemalloc/internal/hook.h b/dep/jemalloc/include/jemalloc/internal/hook.h index ee246b1e0bbca..bbbcb3203b921 100644 --- a/dep/jemalloc/include/jemalloc/internal/hook.h +++ b/dep/jemalloc/include/jemalloc/internal/hook.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_HOOK_H #define JEMALLOC_INTERNAL_HOOK_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/tsd.h" /* @@ -55,6 +56,7 @@ enum hook_alloc_e { hook_alloc_calloc, hook_alloc_memalign, hook_alloc_valloc, + hook_alloc_pvalloc, hook_alloc_mallocx, /* The reallocating functions have both alloc and dalloc variants */ @@ -81,7 +83,6 @@ enum hook_dalloc_e { }; typedef enum hook_dalloc_e hook_dalloc_t; - enum hook_expand_e { hook_expand_realloc, hook_expand_rallocx, @@ -89,23 +90,22 @@ enum hook_expand_e { }; typedef enum hook_expand_e hook_expand_t; -typedef void (*hook_alloc)( - void *extra, hook_alloc_t type, void *result, uintptr_t result_raw, - uintptr_t args_raw[3]); +typedef void (*hook_alloc)(void *extra, hook_alloc_t type, void *result, + uintptr_t result_raw, uintptr_t args_raw[3]); typedef void (*hook_dalloc)( void *extra, hook_dalloc_t type, void *address, uintptr_t args_raw[3]); -typedef void (*hook_expand)( - void *extra, hook_expand_t type, void *address, size_t old_usize, - size_t new_usize, uintptr_t result_raw, uintptr_t args_raw[4]); +typedef void (*hook_expand)(void *extra, hook_expand_t type, void *address, + size_t old_usize, size_t new_usize, uintptr_t result_raw, + uintptr_t args_raw[4]); typedef struct hooks_s hooks_t; struct hooks_s { - hook_alloc alloc_hook; + hook_alloc alloc_hook; hook_dalloc dalloc_hook; hook_expand expand_hook; - void *extra; + void *extra; }; /* @@ -143,9 +143,9 @@ struct hook_ralloc_args_s { * Returns an opaque handle to be used when removing the hook. NULL means that * we couldn't install the hook. */ -bool hook_boot(); +bool hook_boot(void); -void *hook_install(tsdn_t *tsdn, hooks_t *hooks); +void *hook_install(tsdn_t *tsdn, hooks_t *to_install); /* Uninstalls the hook with the handle previously returned from hook_install. */ void hook_remove(tsdn_t *tsdn, void *opaque); @@ -154,8 +154,8 @@ void hook_remove(tsdn_t *tsdn, void *opaque); void hook_invoke_alloc(hook_alloc_t type, void *result, uintptr_t result_raw, uintptr_t args_raw[3]); -void hook_invoke_dalloc(hook_dalloc_t type, void *address, - uintptr_t args_raw[3]); +void hook_invoke_dalloc( + hook_dalloc_t type, void *address, uintptr_t args_raw[3]); void hook_invoke_expand(hook_expand_t type, void *address, size_t old_usize, size_t new_usize, uintptr_t result_raw, uintptr_t args_raw[4]); diff --git a/dep/jemalloc/include/jemalloc/internal/hpa.h b/dep/jemalloc/include/jemalloc/internal/hpa.h index f3562853e8023..6783eb7fe0591 100644 --- a/dep/jemalloc/include/jemalloc/internal/hpa.h +++ b/dep/jemalloc/include/jemalloc/internal/hpa.h @@ -1,42 +1,18 @@ #ifndef JEMALLOC_INTERNAL_HPA_H #define JEMALLOC_INTERNAL_HPA_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" +#include "jemalloc/internal/edata_cache.h" +#include "jemalloc/internal/emap.h" #include "jemalloc/internal/exp_grow.h" +#include "jemalloc/internal/hpa_central.h" #include "jemalloc/internal/hpa_hooks.h" #include "jemalloc/internal/hpa_opts.h" +#include "jemalloc/internal/mutex.h" #include "jemalloc/internal/pai.h" #include "jemalloc/internal/psset.h" - -typedef struct hpa_central_s hpa_central_t; -struct hpa_central_s { - /* - * The mutex guarding most of the operations on the central data - * structure. - */ - malloc_mutex_t mtx; - /* - * Guards expansion of eden. We separate this from the regular mutex so - * that cheaper operations can still continue while we're doing the OS - * call. - */ - malloc_mutex_t grow_mtx; - /* - * Either NULL (if empty), or some integer multiple of a - * hugepage-aligned number of hugepages. We carve them off one at a - * time to satisfy new pageslab requests. - * - * Guarded by grow_mtx. - */ - void *eden; - size_t eden_len; - /* Source for metadata. */ - base_t *base; - /* Number of grow operations done on this hpa_central_t. */ - uint64_t age_counter; - - /* The HPA hooks. */ - hpa_hooks_t hooks; -}; +#include "jemalloc/internal/sec.h" typedef struct hpa_shard_nonderived_stats_s hpa_shard_nonderived_stats_t; struct hpa_shard_nonderived_stats_s { @@ -61,6 +37,14 @@ struct hpa_shard_nonderived_stats_s { * Guarded by mtx. */ uint64_t nhugifies; + + /* + * The number of times we've tried to hugify a pageslab, but failed. + * + * Guarded by mtx. + */ + uint64_t nhugify_failures; + /* * The number of times we've dehugified a pageslab. * @@ -72,8 +56,9 @@ struct hpa_shard_nonderived_stats_s { /* Completely derived; only used by CTL. */ typedef struct hpa_shard_stats_s hpa_shard_stats_t; struct hpa_shard_stats_s { - psset_stats_t psset_stats; + psset_stats_t psset_stats; hpa_shard_nonderived_stats_t nonderived_stats; + sec_stats_t secstats; }; typedef struct hpa_shard_s hpa_shard_t; @@ -86,14 +71,17 @@ struct hpa_shard_s { /* The central allocator we get our hugepages from. */ hpa_central_t *central; + /* Protects most of this shard's state. */ malloc_mutex_t mtx; + /* * Guards the shard's access to the central allocator (preventing * multiple threads operating on this shard from accessing the central * allocator). */ malloc_mutex_t grow_mtx; + /* The base metadata allocator. */ base_t *base; @@ -104,6 +92,9 @@ struct hpa_shard_s { */ edata_cache_fast_t ecf; + /* Small extent cache (not guarded by mtx) */ + JEMALLOC_ALIGNED(CACHELINE) sec_t sec; + psset_t psset; /* @@ -141,22 +132,31 @@ struct hpa_shard_s { * Last time we performed purge on this shard. */ nstime_t last_purge; + + /* + * Last time when we attempted work (purging or hugifying). If deferral + * of the work is allowed (we have background thread), this is the time + * when background thread checked if purging or hugifying needs to be + * done. If deferral is not allowed, this is the time of (hpa_alloc or + * hpa_dalloc) activity in the shard. + */ + nstime_t last_time_work_attempted; }; +bool hpa_hugepage_size_exceeds_limit(void); /* - * Whether or not the HPA can be used given the current configuration. This is + * Whether or not the HPA can be used given the current configuration. This * is not necessarily a guarantee that it backs its allocations by hugepages, * just that it can function properly given the system it's running on. */ -bool hpa_supported(); -bool hpa_central_init(hpa_central_t *central, base_t *base, const hpa_hooks_t *hooks); -bool hpa_shard_init(hpa_shard_t *shard, hpa_central_t *central, emap_t *emap, - base_t *base, edata_cache_t *edata_cache, unsigned ind, - const hpa_shard_opts_t *opts); +bool hpa_supported(void); +bool hpa_shard_init(tsdn_t *tsdn, hpa_shard_t *shard, hpa_central_t *central, + emap_t *emap, base_t *base, edata_cache_t *edata_cache, unsigned ind, + const hpa_shard_opts_t *opts, const sec_opts_t *sec_opts); void hpa_shard_stats_accum(hpa_shard_stats_t *dst, hpa_shard_stats_t *src); -void hpa_shard_stats_merge(tsdn_t *tsdn, hpa_shard_t *shard, - hpa_shard_stats_t *dst); +void hpa_shard_stats_merge( + tsdn_t *tsdn, hpa_shard_t *shard, hpa_shard_stats_t *dst); /* * Notify the shard that we won't use it for allocations much longer. Due to @@ -165,15 +165,18 @@ void hpa_shard_stats_merge(tsdn_t *tsdn, hpa_shard_t *shard, */ void hpa_shard_disable(tsdn_t *tsdn, hpa_shard_t *shard); void hpa_shard_destroy(tsdn_t *tsdn, hpa_shard_t *shard); +/* Flush caches that shard may be using */ +void hpa_shard_flush(tsdn_t *tsdn, hpa_shard_t *shard); -void hpa_shard_set_deferral_allowed(tsdn_t *tsdn, hpa_shard_t *shard, - bool deferral_allowed); +void hpa_shard_set_deferral_allowed( + tsdn_t *tsdn, hpa_shard_t *shard, bool deferral_allowed); void hpa_shard_do_deferred_work(tsdn_t *tsdn, hpa_shard_t *shard); /* * We share the fork ordering with the PA and arena prefork handling; that's why - * these are 3 and 4 rather than 0 and 1. + * these are 2, 3 and 4 rather than 0 and 1. */ +void hpa_shard_prefork2(tsdn_t *tsdn, hpa_shard_t *shard); void hpa_shard_prefork3(tsdn_t *tsdn, hpa_shard_t *shard); void hpa_shard_prefork4(tsdn_t *tsdn, hpa_shard_t *shard); void hpa_shard_postfork_parent(tsdn_t *tsdn, hpa_shard_t *shard); diff --git a/dep/jemalloc/include/jemalloc/internal/hpa_central.h b/dep/jemalloc/include/jemalloc/internal/hpa_central.h new file mode 100644 index 0000000000000..3e0ff7daeb021 --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/hpa_central.h @@ -0,0 +1,41 @@ +#ifndef JEMALLOC_INTERNAL_HPA_CENTRAL_H +#define JEMALLOC_INTERNAL_HPA_CENTRAL_H + +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" +#include "jemalloc/internal/hpa_hooks.h" +#include "jemalloc/internal/hpdata.h" +#include "jemalloc/internal/mutex.h" +#include "jemalloc/internal/tsd_types.h" + +typedef struct hpa_central_s hpa_central_t; +struct hpa_central_s { + /* + * Guards expansion of eden. We separate this from the regular mutex so + * that cheaper operations can still continue while we're doing the OS + * call. + */ + malloc_mutex_t grow_mtx; + /* + * Either NULL (if empty), or some integer multiple of a + * hugepage-aligned number of hugepages. We carve them off one at a + * time to satisfy new pageslab requests. + * + * Guarded by grow_mtx. + */ + void *eden; + size_t eden_len; + /* Source for metadata. */ + base_t *base; + + /* The HPA hooks. */ + hpa_hooks_t hooks; +}; + +bool hpa_central_init( + hpa_central_t *central, base_t *base, const hpa_hooks_t *hooks); + +hpdata_t *hpa_central_extract(tsdn_t *tsdn, hpa_central_t *central, size_t size, + uint64_t age, bool hugify_eager, bool *oom); + +#endif /* JEMALLOC_INTERNAL_HPA_CENTRAL_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/hpa_hooks.h b/dep/jemalloc/include/jemalloc/internal/hpa_hooks.h index 4ea221cb0b42f..f50ff58f13c9d 100644 --- a/dep/jemalloc/include/jemalloc/internal/hpa_hooks.h +++ b/dep/jemalloc/include/jemalloc/internal/hpa_hooks.h @@ -1,17 +1,21 @@ #ifndef JEMALLOC_INTERNAL_HPA_HOOKS_H #define JEMALLOC_INTERNAL_HPA_HOOKS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/nstime.h" + typedef struct hpa_hooks_s hpa_hooks_t; struct hpa_hooks_s { void *(*map)(size_t size); void (*unmap)(void *ptr, size_t size); void (*purge)(void *ptr, size_t size); - void (*hugify)(void *ptr, size_t size); + bool (*hugify)(void *ptr, size_t size, bool sync); void (*dehugify)(void *ptr, size_t size); void (*curtime)(nstime_t *r_time, bool first_reading); uint64_t (*ms_since)(nstime_t *r_time); + bool (*vectorized_purge)(void *vec, size_t vlen, size_t nbytes); }; -extern hpa_hooks_t hpa_hooks_default; +extern const hpa_hooks_t hpa_hooks_default; #endif /* JEMALLOC_INTERNAL_HPA_HOOKS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/hpa_opts.h b/dep/jemalloc/include/jemalloc/internal/hpa_opts.h index ee84fea137570..6747c2db8e543 100644 --- a/dep/jemalloc/include/jemalloc/internal/hpa_opts.h +++ b/dep/jemalloc/include/jemalloc/internal/hpa_opts.h @@ -1,13 +1,66 @@ #ifndef JEMALLOC_INTERNAL_HPA_OPTS_H #define JEMALLOC_INTERNAL_HPA_OPTS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/fxp.h" /* * This file is morally part of hpa.h, but is split out for header-ordering * reasons. + * + * All of these hpa_shard_opts below are experimental. We are exploring more + * efficient packing, hugifying, and purging approaches to make efficient + * trade-offs between CPU, memory, latency, and usability. This means all of + * them are at the risk of being deprecated and corresponding configurations + * should be updated once the final version settles. */ +/* + * This enum controls how jemalloc hugifies/dehugifies pages. Each style may be + * more suitable depending on deployment environments. + * + * hpa_hugify_style_none + * Using this means that jemalloc will not be hugifying or dehugifying pages, + * but will let the kernel make those decisions. This style only makes sense + * when deploying on systems where THP are enabled in 'always' mode. With this + * style, you most likely want to have no purging at all (dirty_mult=-1) or + * purge_threshold=HUGEPAGE bytes (2097152 for 2Mb page), although other + * thresholds may work well depending on kernel settings of your deployment + * targets. + * + * hpa_hugify_style_eager + * This style results in jemalloc giving hugepage advice, if needed, to + * anonymous memory immediately after it is mapped, so huge pages can be backing + * that memory at page-fault time. This is usually more efficient than doing + * it later, and it allows us to benefit from the hugepages from the start. + * Same options for purging as for the style 'none' are good starting choices: + * no purging, or purge_threshold=HUGEPAGE, some min_purge_delay_ms that allows + * for page not to be purged quickly, etc. This is a good choice if you can + * afford extra memory and your application gets performance increase from + * transparent hughepages. + * + * hpa_hugify_style_lazy + * This style is suitable when you purge more aggressively (you sacrifice CPU + * performance for less memory). When this style is chosen, jemalloc will + * hugify once hugification_threshold is reached, and dehugify before purging. + * If the kernel is configured to use direct compaction you may experience some + * allocation latency when using this style. The best is to measure what works + * better for your application needs, and in the target deployment environment. + * This is a good choice for apps that cannot afford a lot of memory regression, + * but would still like to benefit from backing certain memory regions with + * hugepages. + */ +enum hpa_hugify_style_e { + hpa_hugify_style_auto = 0, + hpa_hugify_style_none = 1, + hpa_hugify_style_eager = 2, + hpa_hugify_style_lazy = 3, + hpa_hugify_style_limit = hpa_hugify_style_lazy + 1 +}; +typedef enum hpa_hugify_style_e hpa_hugify_style_t; + +extern const char *const hpa_hugify_style_names[]; + typedef struct hpa_shard_opts_s hpa_shard_opts_t; struct hpa_shard_opts_s { /* @@ -44,12 +97,64 @@ struct hpa_shard_opts_s { */ uint64_t hugify_delay_ms; + /* + * Hugify pages synchronously (hugify will happen even if hugify_style + * is not hpa_hugify_style_lazy). + */ + bool hugify_sync; + /* * Minimum amount of time between purges. */ uint64_t min_purge_interval_ms; + + /* + * Maximum number of hugepages to purge on each purging attempt. + */ + ssize_t experimental_max_purge_nhp; + + /* + * Minimum number of inactive bytes needed for a non-empty page to be + * considered purgable. + * + * When the number of touched inactive bytes on non-empty hugepage is + * >= purge_threshold, the page is purgable. Empty pages are always + * purgable. Setting this to HUGEPAGE bytes would only purge empty + * pages if using hugify_style_eager and the purges would be exactly + * HUGEPAGE bytes. Depending on your kernel settings, this may result + * in better performance. + * + * Please note, when threshold is reached, we will purge all the dirty + * bytes, and not just up to the threshold. If this is PAGE bytes, then + * all the pages that have any dirty bytes are purgable. We treat + * purgability constraint for purge_threshold as stronger than + * dirty_mult, IOW, if no page meets purge_threshold, we will not purge + * even if we are above dirty_mult. + */ + size_t purge_threshold; + + /* + * Minimum number of ms that needs to elapse between HP page becoming + * eligible for purging and actually getting purged. + * + * Setting this to a larger number would give better chance of reusing + * that memory. Setting it to 0 means that page is eligible for purging + * as soon as it meets the purge_threshold. The clock resets when + * purgability of the page changes (page goes from being non-purgable to + * purgable). When using eager style you probably want to allow for + * some delay, to avoid purging the page too quickly and give it time to + * be used. + */ + uint64_t min_purge_delay_ms; + + /* + * Style of hugification/dehugification (see comment at + * hpa_hugify_style_t for options). + */ + hpa_hugify_style_t hugify_style; }; +/* clang-format off */ #define HPA_SHARD_OPTS_DEFAULT { \ /* slab_max_alloc */ \ 64 * 1024, \ @@ -67,8 +172,19 @@ struct hpa_shard_opts_s { false, \ /* hugify_delay_ms */ \ 10 * 1000, \ + /* hugify_sync */ \ + false, \ /* min_purge_interval_ms */ \ - 5 * 1000 \ + 5 * 1000, \ + /* experimental_max_purge_nhp */ \ + -1, \ + /* size_t purge_threshold */ \ + PAGE, \ + /* min_purge_delay_ms */ \ + 0, \ + /* hugify_style */ \ + hpa_hugify_style_lazy \ } +/* clang-format on */ #endif /* JEMALLOC_INTERNAL_HPA_OPTS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/hpa_utils.h b/dep/jemalloc/include/jemalloc/internal/hpa_utils.h new file mode 100644 index 0000000000000..6b006cffce05a --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/hpa_utils.h @@ -0,0 +1,161 @@ +#ifndef JEMALLOC_INTERNAL_HPA_UTILS_H +#define JEMALLOC_INTERNAL_HPA_UTILS_H + +#include "jemalloc/internal/hpa.h" +#include "jemalloc/internal/extent.h" + +#define HPA_MIN_VAR_VEC_SIZE 8 +/* + * This is used for jemalloc internal tuning and may change in the future based + * on production traffic. + * + * This value protects two things: + * 1. Stack size + * 2. Number of huge pages that are being purged in a batch as we do not + * allow allocations while making madvise syscall. + */ +#define HPA_PURGE_BATCH_MAX 16 + +#ifdef JEMALLOC_HAVE_PROCESS_MADVISE +typedef struct iovec hpa_io_vector_t; +#else +typedef struct { + void *iov_base; + size_t iov_len; +} hpa_io_vector_t; +#endif + +static inline size_t +hpa_process_madvise_max_iovec_len(void) { + assert( + opt_process_madvise_max_batch <= PROCESS_MADVISE_MAX_BATCH_LIMIT); + return opt_process_madvise_max_batch == 0 + ? HPA_MIN_VAR_VEC_SIZE + : opt_process_madvise_max_batch; +} + +/* Actually invoke hooks. If we fail vectorized, use single purges */ +static void +hpa_try_vectorized_purge( + hpa_hooks_t *hooks, hpa_io_vector_t *vec, size_t vlen, size_t nbytes) { + bool success = opt_process_madvise_max_batch > 0 + && !hooks->vectorized_purge(vec, vlen, nbytes); + if (!success) { + /* On failure, it is safe to purge again (potential perf + * penalty) If kernel can tell exactly which regions + * failed, we could avoid that penalty. + */ + for (size_t i = 0; i < vlen; ++i) { + hooks->purge(vec[i].iov_base, vec[i].iov_len); + } + } +} + +/* + * This structure accumulates the regions for process_madvise. It invokes the + * hook when batch limit is reached. + */ +typedef struct { + hpa_io_vector_t *vp; + size_t cur; + size_t total_bytes; + size_t capacity; +} hpa_range_accum_t; + +static inline void +hpa_range_accum_init(hpa_range_accum_t *ra, hpa_io_vector_t *v, size_t sz) { + ra->vp = v; + ra->capacity = sz; + ra->total_bytes = 0; + ra->cur = 0; +} + +static inline void +hpa_range_accum_flush(hpa_range_accum_t *ra, hpa_hooks_t *hooks) { + assert(ra->total_bytes > 0 && ra->cur > 0); + hpa_try_vectorized_purge(hooks, ra->vp, ra->cur, ra->total_bytes); + ra->cur = 0; + ra->total_bytes = 0; +} + +static inline void +hpa_range_accum_add( + hpa_range_accum_t *ra, void *addr, size_t sz, hpa_hooks_t *hooks) { + assert(ra->cur < ra->capacity); + + ra->vp[ra->cur].iov_base = addr; + ra->vp[ra->cur].iov_len = sz; + ra->total_bytes += sz; + ra->cur++; + + if (ra->cur == ra->capacity) { + hpa_range_accum_flush(ra, hooks); + } +} + +static inline void +hpa_range_accum_finish(hpa_range_accum_t *ra, hpa_hooks_t *hooks) { + if (ra->cur > 0) { + hpa_range_accum_flush(ra, hooks); + } +} + +/* + * For purging more than one page we use batch of these items + */ +typedef struct { + hpdata_purge_state_t state; + hpdata_t *hp; + bool dehugify; +} hpa_purge_item_t; + +typedef struct hpa_purge_batch_s hpa_purge_batch_t; +struct hpa_purge_batch_s { + hpa_purge_item_t *items; + size_t items_capacity; + /* Number of huge pages to purge in current batch */ + size_t item_cnt; + /* Number of ranges to purge in current batch */ + size_t nranges; + /* Total number of dirty pages in current batch*/ + size_t ndirty_in_batch; + + /* Max number of huge pages to purge */ + size_t max_hp; + /* + * Once we are above this watermark we should not add more pages + * to the same batch. This is because while we want to minimize + * number of madvise calls we also do not want to be preventing + * allocations from too many huge pages (which we have to do + * while they are being purged) + */ + size_t range_watermark; + + size_t npurged_hp_total; +}; + +static inline bool +hpa_batch_full(hpa_purge_batch_t *b) { + /* It's okay for ranges to go above */ + return b->npurged_hp_total == b->max_hp + || b->item_cnt == b->items_capacity + || b->nranges >= b->range_watermark; +} + +static inline void +hpa_batch_pass_start(hpa_purge_batch_t *b) { + b->item_cnt = 0; + b->nranges = 0; + b->ndirty_in_batch = 0; +} + +static inline bool +hpa_batch_empty(hpa_purge_batch_t *b) { + return b->item_cnt == 0; +} + +/* Purge pages in a batch using given hooks */ +void hpa_purge_batch( + hpa_hooks_t *hooks, hpa_purge_item_t *batch, size_t batch_sz); + +#endif /* JEMALLOC_INTERNAL_HPA_UTILS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/hpdata.h b/dep/jemalloc/include/jemalloc/internal/hpdata.h index 1fb534db016aa..a9c507f09c35a 100644 --- a/dep/jemalloc/include/jemalloc/internal/hpdata.h +++ b/dep/jemalloc/include/jemalloc/internal/hpdata.h @@ -1,7 +1,10 @@ #ifndef JEMALLOC_INTERNAL_HPDATA_H #define JEMALLOC_INTERNAL_HPDATA_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/fb.h" +#include "jemalloc/internal/nstime.h" +#include "jemalloc/internal/pages.h" #include "jemalloc/internal/ph.h" #include "jemalloc/internal/ql.h" #include "jemalloc/internal/typed_list.h" @@ -17,8 +20,14 @@ * an observable property of any given region of address space). It's just * hugepage-sized and hugepage-aligned; it's *potentially* huge. */ + +/* + * The max enumeration num should not exceed 2^16 - 1, see comments in edata.h + * for ESET_ENUMERATE_MAX_NUM for more details. + */ +#define PSSET_ENUMERATE_MAX_NUM 32 typedef struct hpdata_s hpdata_t; -ph_structs(hpdata_age_heap, hpdata_t); +ph_structs(hpdata_age_heap, hpdata_t, PSSET_ENUMERATE_MAX_NUM); struct hpdata_s { /* * We likewise follow the edata convention of mangling names and forcing @@ -64,7 +73,7 @@ struct hpdata_s { bool h_hugify_allowed; /* When we became a hugification candidate. */ nstime_t h_time_hugify_allowed; - bool h_in_psset_hugify_container; + bool h_in_psset_hugify_container; /* Whether or not a purge or hugify is currently happening. */ bool h_mid_purge; @@ -115,6 +124,12 @@ struct hpdata_s { /* The touched pages (using the same definition as above). */ fb_group_t touched_pages[FB_NGROUPS(HUGEPAGE_PAGES)]; + + /* Time when this extent (hpdata) becomes eligible for purging */ + nstime_t h_time_purge_allowed; + + /* True if the extent was huge and empty last time when it was purged */ + bool h_purged_when_empty_and_huge; }; TYPED_LIST(hpdata_empty_list, hpdata_t, ql_link_empty) @@ -177,8 +192,8 @@ hpdata_purge_allowed_get(const hpdata_t *hpdata) { static inline void hpdata_purge_allowed_set(hpdata_t *hpdata, bool purge_allowed) { - assert(purge_allowed == false || !hpdata->h_mid_purge); - hpdata->h_purge_allowed = purge_allowed; + assert(purge_allowed == false || !hpdata->h_mid_purge); + hpdata->h_purge_allowed = purge_allowed; } static inline bool @@ -241,7 +256,6 @@ hpdata_changing_state_get(const hpdata_t *hpdata) { return hpdata->h_mid_purge || hpdata->h_mid_hugify; } - static inline bool hpdata_updating_get(const hpdata_t *hpdata) { return hpdata->h_updating; @@ -276,17 +290,17 @@ hpdata_longest_free_range_set(hpdata_t *hpdata, size_t longest_free_range) { } static inline size_t -hpdata_nactive_get(hpdata_t *hpdata) { +hpdata_nactive_get(const hpdata_t *hpdata) { return hpdata->h_nactive; } static inline size_t -hpdata_ntouched_get(hpdata_t *hpdata) { +hpdata_ntouched_get(const hpdata_t *hpdata) { return hpdata->h_ntouched; } static inline size_t -hpdata_ndirty_get(hpdata_t *hpdata) { +hpdata_ndirty_get(const hpdata_t *hpdata) { return hpdata->h_ntouched - hpdata->h_nactive; } @@ -295,6 +309,26 @@ hpdata_nretained_get(hpdata_t *hpdata) { return HUGEPAGE_PAGES - hpdata->h_ntouched; } +static inline void +hpdata_time_purge_allowed_set(hpdata_t *hpdata, const nstime_t *v) { + nstime_copy(&hpdata->h_time_purge_allowed, v); +} + +static inline const nstime_t * +hpdata_time_purge_allowed_get(const hpdata_t *hpdata) { + return &hpdata->h_time_purge_allowed; +} + +static inline bool +hpdata_purged_when_empty_and_huge_get(const hpdata_t *hpdata) { + return hpdata->h_purged_when_empty_and_huge; +} + +static inline void +hpdata_purged_when_empty_and_huge_set(hpdata_t *hpdata, bool v) { + hpdata->h_purged_when_empty_and_huge = v; +} + static inline void hpdata_assert_empty(hpdata_t *hpdata) { assert(fb_empty(hpdata->active_pages, HUGEPAGE_PAGES)); @@ -308,58 +342,95 @@ hpdata_assert_empty(hpdata_t *hpdata) { */ static inline bool hpdata_consistent(hpdata_t *hpdata) { - if(fb_urange_longest(hpdata->active_pages, HUGEPAGE_PAGES) - != hpdata_longest_free_range_get(hpdata)) { - return false; + bool res = true; + + const size_t active_urange_longest = fb_urange_longest( + hpdata->active_pages, HUGEPAGE_PAGES); + const size_t longest_free_range = hpdata_longest_free_range_get(hpdata); + if (active_urange_longest != longest_free_range) { + malloc_printf( + ": active_fb_urange_longest=%zu != hpdata_longest_free_range=%zu\n", + active_urange_longest, longest_free_range); + res = false; } - if (fb_scount(hpdata->active_pages, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES) - != hpdata->h_nactive) { - return false; + + const size_t active_scount = fb_scount( + hpdata->active_pages, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES); + if (active_scount != hpdata->h_nactive) { + malloc_printf( + ": active_fb_scount=%zu != hpdata_nactive=%zu\n", + active_scount, hpdata->h_nactive); + res = false; } - if (fb_scount(hpdata->touched_pages, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES) - != hpdata->h_ntouched) { - return false; + + const size_t touched_scount = fb_scount( + hpdata->touched_pages, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES); + if (touched_scount != hpdata->h_ntouched) { + malloc_printf( + ": touched_fb_scount=%zu != hpdata_ntouched=%zu\n", + touched_scount, hpdata->h_ntouched); + res = false; } + if (hpdata->h_ntouched < hpdata->h_nactive) { - return false; + malloc_printf( + ": hpdata_ntouched=%zu < hpdata_nactive=%zu\n", + hpdata->h_ntouched, hpdata->h_nactive); + res = false; } - if (hpdata->h_huge && hpdata->h_ntouched != HUGEPAGE_PAGES) { - return false; + + if (hpdata->h_huge && (hpdata->h_ntouched != HUGEPAGE_PAGES)) { + malloc_printf( + ": hpdata_huge=%d && (hpdata_ntouched=%zu != hugepage_pages=%zu)\n", + hpdata->h_huge, hpdata->h_ntouched, HUGEPAGE_PAGES); + res = false; } - if (hpdata_changing_state_get(hpdata) - && ((hpdata->h_purge_allowed) || hpdata->h_hugify_allowed)) { - return false; + + const bool changing_state = hpdata_changing_state_get(hpdata); + if (changing_state + && (hpdata->h_purge_allowed || hpdata->h_hugify_allowed)) { + malloc_printf( + ": hpdata_changing_state=%d && (hpdata_purge_allowed=%d || hpdata_hugify_allowed=%d)\n", + changing_state, hpdata->h_purge_allowed, + hpdata->h_hugify_allowed); + res = false; } + if (hpdata_hugify_allowed_get(hpdata) != hpdata_in_psset_hugify_container_get(hpdata)) { - return false; + malloc_printf( + ": hpdata_hugify_allowed=%d != hpdata_in_psset_hugify_container=%d\n", + hpdata_hugify_allowed_get(hpdata), + hpdata_in_psset_hugify_container_get(hpdata)); + res = false; } - return true; -} -static inline void -hpdata_assert_consistent(hpdata_t *hpdata) { - assert(hpdata_consistent(hpdata)); + return res; } +#define hpdata_assert_consistent(hpdata) \ + do { \ + assert(hpdata_consistent(hpdata)); \ + } while (0) + static inline bool -hpdata_empty(hpdata_t *hpdata) { +hpdata_empty(const hpdata_t *hpdata) { return hpdata->h_nactive == 0; } static inline bool -hpdata_full(hpdata_t *hpdata) { +hpdata_full(const hpdata_t *hpdata) { return hpdata->h_nactive == HUGEPAGE_PAGES; } -void hpdata_init(hpdata_t *hpdata, void *addr, uint64_t age); +void hpdata_init(hpdata_t *hpdata, void *addr, uint64_t age, bool is_huge); /* * Given an hpdata which can serve an allocation request, pick and reserve an * offset within that allocation. */ void *hpdata_reserve_alloc(hpdata_t *hpdata, size_t sz); -void hpdata_unreserve(hpdata_t *hpdata, void *begin, size_t sz); +void hpdata_unreserve(hpdata_t *hpdata, void *addr, size_t sz); /* * The hpdata_purge_prepare_t allows grabbing the metadata required to purge @@ -368,10 +439,10 @@ void hpdata_unreserve(hpdata_t *hpdata, void *begin, size_t sz); */ typedef struct hpdata_purge_state_s hpdata_purge_state_t; struct hpdata_purge_state_s { - size_t npurged; - size_t ndirty_to_purge; + size_t npurged; + size_t ndirty_to_purge; fb_group_t to_purge[FB_NGROUPS(HUGEPAGE_PAGES)]; - size_t next_purge_search_begin; + size_t next_purge_search_begin; }; /* @@ -386,9 +457,11 @@ struct hpdata_purge_state_s { * until you're done, and then end. Allocating out of an hpdata undergoing * purging is not allowed. * - * Returns the number of dirty pages that will be purged. + * Returns the number of dirty pages that will be purged and sets nranges + * to number of ranges with dirty pages that will be purged. */ -size_t hpdata_purge_begin(hpdata_t *hpdata, hpdata_purge_state_t *purge_state); +size_t hpdata_purge_begin( + hpdata_t *hpdata, hpdata_purge_state_t *purge_state, size_t *nranges); /* * If there are more extents to purge, sets *r_purge_addr and *r_purge_size to diff --git a/dep/jemalloc/include/jemalloc/internal/inspect.h b/dep/jemalloc/include/jemalloc/internal/inspect.h index 65fef51dfa819..e8ed44d32ae6c 100644 --- a/dep/jemalloc/include/jemalloc/internal/inspect.h +++ b/dep/jemalloc/include/jemalloc/internal/inspect.h @@ -1,6 +1,9 @@ #ifndef JEMALLOC_INTERNAL_INSPECT_H #define JEMALLOC_INTERNAL_INSPECT_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/tsd_types.h" + /* * This module contains the heap introspection capabilities. For now they are * exposed purely through mallctl APIs in the experimental namespace, but this @@ -23,7 +26,7 @@ typedef struct inspect_extent_util_stats_verbose_s inspect_extent_util_stats_verbose_t; struct inspect_extent_util_stats_verbose_s { - void *slabcur_addr; + void *slabcur_addr; size_t nfree; size_t nregs; size_t size; @@ -31,10 +34,10 @@ struct inspect_extent_util_stats_verbose_s { size_t bin_nregs; }; -void inspect_extent_util_stats_get(tsdn_t *tsdn, const void *ptr, - size_t *nfree, size_t *nregs, size_t *size); +void inspect_extent_util_stats_get( + tsdn_t *tsdn, const void *ptr, size_t *nfree, size_t *nregs, size_t *size); void inspect_extent_util_stats_verbose_get(tsdn_t *tsdn, const void *ptr, - size_t *nfree, size_t *nregs, size_t *size, - size_t *bin_nfree, size_t *bin_nregs, void **slabcur_addr); + size_t *nfree, size_t *nregs, size_t *size, size_t *bin_nfree, + size_t *bin_nregs, void **slabcur_addr); #endif /* JEMALLOC_INTERNAL_INSPECT_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_decls.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_decls.h index 983027c867221..2ca12c4ab0b26 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_decls.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_decls.h @@ -3,64 +3,65 @@ #include #ifdef _WIN32 -# include -# include "msvc_compat/windows_extra.h" -# include "msvc_compat/strings.h" -# ifdef _WIN64 -# if LG_VADDR <= 32 -# error Generate the headers using x64 vcargs -# endif -# else -# if LG_VADDR > 32 -# undef LG_VADDR -# define LG_VADDR 32 -# endif -# endif +# include +# include "msvc_compat/windows_extra.h" +# include "msvc_compat/strings.h" +# ifdef _WIN64 +# if LG_VADDR <= 32 +# error Generate the headers using x64 vcargs +# endif +# else +# if LG_VADDR > 32 +# undef LG_VADDR +# define LG_VADDR 32 +# endif +# endif #else -# include -# include -# if !defined(__pnacl__) && !defined(__native_client__) -# include -# if !defined(SYS_write) && defined(__NR_write) -# define SYS_write __NR_write -# endif -# if defined(SYS_open) && defined(__aarch64__) - /* Android headers may define SYS_open to __NR_open even though +# include +# include +# if !defined(__pnacl__) && !defined(__native_client__) +# include +# if !defined(SYS_write) && defined(__NR_write) +# define SYS_write __NR_write +# endif +# if defined(SYS_open) && defined(__aarch64__) +/* Android headers may define SYS_open to __NR_open even though * __NR_open may not exist on AArch64 (superseded by __NR_openat). */ -# undef SYS_open -# endif -# include -# endif -# include -# if defined(__FreeBSD__) || defined(__DragonFly__) -# include -# include -# if defined(__FreeBSD__) -# define cpu_set_t cpuset_t -# endif -# endif -# include -# ifdef JEMALLOC_OS_UNFAIR_LOCK -# include -# endif -# ifdef JEMALLOC_GLIBC_MALLOC_HOOK -# include -# endif -# include -# include -# include -# ifdef JEMALLOC_HAVE_MACH_ABSOLUTE_TIME -# include -# endif +# undef SYS_open +# endif +# include +# endif +# include +# if defined(__FreeBSD__) || defined(__DragonFly__) \ + || defined(__OpenBSD__) +# include +# include +# if defined(__FreeBSD__) +# define cpu_set_t cpuset_t +# endif +# endif +# include +# ifdef JEMALLOC_OS_UNFAIR_LOCK +# include +# endif +# ifdef JEMALLOC_GLIBC_MALLOC_HOOK +# include +# endif +# include +# include +# include +# ifdef JEMALLOC_HAVE_MACH_ABSOLUTE_TIME +# include +# endif #endif #include #include #ifndef SIZE_T_MAX -# define SIZE_T_MAX SIZE_MAX +# define SIZE_T_MAX SIZE_MAX #endif #ifndef SSIZE_MAX -# define SSIZE_MAX ((ssize_t)(SIZE_T_MAX >> 1)) +# define SSIZE_MAX ((ssize_t)(SIZE_T_MAX >> 1)) #endif #include #include @@ -69,30 +70,30 @@ #include #include #ifndef offsetof -# define offsetof(type, member) ((size_t)&(((type *)NULL)->member)) +# define offsetof(type, member) ((size_t) & (((type *)NULL)->member)) #endif #include #include #include #ifdef _MSC_VER -# include +# include typedef intptr_t ssize_t; -# define PATH_MAX 1024 -# define STDERR_FILENO 2 -# define __func__ __FUNCTION__ -# ifdef JEMALLOC_HAS_RESTRICT -# define restrict __restrict -# endif +# define PATH_MAX 1024 +# define STDERR_FILENO 2 +# define __func__ __FUNCTION__ +# ifdef JEMALLOC_HAS_RESTRICT +# define restrict __restrict +# endif /* Disable warnings about deprecated system functions. */ -# pragma warning(disable: 4996) -#if _MSC_VER < 1800 +# pragma warning(disable : 4996) +# if _MSC_VER < 1800 static int isblank(int c) { return (c == '\t' || c == ' '); } -#endif +# endif #else -# include +# include #endif #include @@ -102,7 +103,24 @@ isblank(int c) { * classes. */ #ifdef small -# undef small +# undef small #endif +/* + * Oftentimes we'd like to perform some kind of arithmetic to obtain + * a pointer from another pointer but with some offset or mask applied. + * Naively you would accomplish this by casting the source pointer to + * `uintptr_t`, performing all of the relevant arithmetic, and then casting + * the result to the desired pointer type. However, this has the unfortunate + * side-effect of concealing pointer provenance, hiding useful information for + * optimization from the compiler (see here for details: + * https://clang.llvm.org/extra/clang-tidy/checks/performance/no-int-to-ptr.html + * ) + * Instead what one should do is cast the source pointer to `char *` and perform + * the equivalent arithmetic (since `char` of course represents one byte). But + * because `char *` has the semantic meaning of "string", we define this typedef + * simply to make it clearer where we are performing such pointer arithmetic. + */ +typedef char byte_t; + #endif /* JEMALLOC_INTERNAL_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h.in b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h.in index cb69334ec675b..e6a95790fb438 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h.in +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_defs.h.in @@ -14,10 +14,13 @@ */ #cmakedefine JEMALLOC_OVERRIDE___LIBC_CALLOC #cmakedefine JEMALLOC_OVERRIDE___LIBC_FREE +#cmakedefine JEMALLOC_OVERRIDE___LIBC_FREE_SIZED +#cmakedefine JEMALLOC_OVERRIDE___LIBC_FREE_ALIGNED_SIZED #cmakedefine JEMALLOC_OVERRIDE___LIBC_MALLOC #cmakedefine JEMALLOC_OVERRIDE___LIBC_MEMALIGN #cmakedefine JEMALLOC_OVERRIDE___LIBC_REALLOC #cmakedefine JEMALLOC_OVERRIDE___LIBC_VALLOC +#cmakedefine JEMALLOC_OVERRIDE___LIBC_PVALLOC #cmakedefine JEMALLOC_OVERRIDE___POSIX_MEMALIGN /* @@ -88,6 +91,9 @@ /* Defined if pthread_getname_np(3) is available. */ #cmakedefine JEMALLOC_HAVE_PTHREAD_GETNAME_NP +/* Defined if pthread_set_name_np(3) is available. */ +#cmakedefine JEMALLOC_HAVE_PTHREAD_SET_NAME_NP + /* Defined if pthread_get_name_np(3) is available. */ #cmakedefine JEMALLOC_HAVE_PTHREAD_GET_NAME_NP @@ -111,6 +117,11 @@ */ #cmakedefine JEMALLOC_HAVE_CLOCK_REALTIME +/* + * Defined if clock_gettime_nsec_np(CLOCK_UPTIME_RAW) is available. + */ +#cmakedefine JEMALLOC_HAVE_CLOCK_GETTIME_NSEC_NP + /* * Defined if _malloc_thread_cleanup() exists. At least in the case of * FreeBSD, pthread_key_create() allocates, which if used during malloc @@ -161,6 +172,15 @@ /* Use gcc intrinsics for profile backtracing if defined. */ #cmakedefine JEMALLOC_PROF_GCC +/* Use frame pointer for profile backtracing if defined. Linux only. */ +#cmakedefine JEMALLOC_PROF_FRAME_POINTER + +/* JEMALLOC_PAGEID enabled page id */ +#cmakedefine JEMALLOC_PAGEID + +/* JEMALLOC_HAVE_PRCTL checks prctl */ +#cmakedefine JEMALLOC_HAVE_PRCTL + /* * JEMALLOC_DSS enables use of sbrk(2) to allocate extents from the data storage * segment (DSS). @@ -259,6 +279,12 @@ */ #cmakedefine JEMALLOC_READLINKAT +/* + * If defined, use getenv() (instead of secure_getenv() or + * alternatives) to access MALLOC_CONF. + */ +#cmakedefine JEMALLOC_FORCE_GETENV + /* * Darwin (OS X) uses zones to work around Mach-O symbol override shortcomings. */ @@ -282,6 +308,13 @@ */ #cmakedefine JEMALLOC_HAVE_MADVISE_HUGE +/* + * Defined if best-effort synchronous collapse of the native + * pages mapped by the memory range into transparent huge pages is supported + * via MADV_COLLAPSE arguments to madvise(2). + */ +#cmakedefine JEMALLOC_HAVE_MADVISE_COLLAPSE + /* * Methods for purging unused pages differ between operating systems. * @@ -312,9 +345,23 @@ */ #cmakedefine JEMALLOC_MADVISE_NOCORE +/* Defined if process_madvise(2) is available. */ +#cmakedefine JEMALLOC_HAVE_PROCESS_MADVISE + +#cmakedefine EXPERIMENTAL_SYS_PROCESS_MADVISE_NR @EXPERIMENTAL_SYS_PROCESS_MADVISE_NR@ + /* Defined if mprotect(2) is available. */ #cmakedefine JEMALLOC_HAVE_MPROTECT +/* Defined if sys/sdt.h is available and sdt tracing enabled */ +#cmakedefine JEMALLOC_EXPERIMENTAL_USDT_STAP + +/* + * Defined if sys/sdt.h is unavailable, sdt tracing enabled, and + * platform is supported + */ +#cmakedefine JEMALLOC_EXPERIMENTAL_USDT_CUSTOM + /* * Defined if transparent huge pages (THPs) are supported via the * MADV_[NO]HUGEPAGE arguments to madvise(2), and THP support is enabled. @@ -378,12 +425,18 @@ /* Adaptive mutex support in pthreads. */ #cmakedefine JEMALLOC_HAVE_PTHREAD_MUTEX_ADAPTIVE_NP +/* gettid() support */ +#cmakedefine JEMALLOC_HAVE_GETTID + /* GNU specific sched_getcpu support */ #cmakedefine JEMALLOC_HAVE_SCHED_GETCPU /* GNU specific sched_setaffinity support */ #cmakedefine JEMALLOC_HAVE_SCHED_SETAFFINITY +/* pthread_setaffinity_np support */ +#cmakedefine JEMALLOC_HAVE_PTHREAD_SETAFFINITY_NP + /* * If defined, all the features necessary for background threads are present. */ @@ -412,6 +465,9 @@ /* Is C++ support being built? */ #cmakedefine JEMALLOC_ENABLE_CXX +/* Are C++ exceptions enabled? */ +#cmakedefine JEMALLOC_HAVE_CXX_EXCEPTIONS + /* Performs additional size checks when defined. */ #cmakedefine JEMALLOC_OPT_SIZE_CHECKS @@ -424,4 +480,18 @@ /* If defined, realloc(ptr, 0) defaults to "free" instead of "alloc". */ #cmakedefine JEMALLOC_ZERO_REALLOC_DEFAULT_FREE +/* If defined, use volatile asm during benchmarks. */ +#cmakedefine JEMALLOC_HAVE_ASM_VOLATILE + +/* + * If defined, support the use of rdtscp to get the time stamp counter + * and the processor ID. + */ +#cmakedefine JEMALLOC_HAVE_RDTSCP + +/* If defined, use __int128 for optimization. */ +#cmakedefine JEMALLOC_HAVE_INT128 + +#include "jemalloc/internal/jemalloc_internal_overrides.h" + #endif /* JEMALLOC_INTERNAL_DEFS_H_ */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_externs.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_externs.h index fc834c67373d1..9911c199fca38 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_externs.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_externs.h @@ -1,39 +1,52 @@ #ifndef JEMALLOC_INTERNAL_EXTERNS_H #define JEMALLOC_INTERNAL_EXTERNS_H +#include "jemalloc/internal/arena_types.h" #include "jemalloc/internal/atomic.h" +#include "jemalloc/internal/fxp.h" #include "jemalloc/internal/hpa_opts.h" +#include "jemalloc/internal/nstime.h" #include "jemalloc/internal/sec_opts.h" #include "jemalloc/internal/tsd_types.h" -#include "jemalloc/internal/nstime.h" /* TSD checks this to set thread local slow state accordingly. */ extern bool malloc_slow; /* Run-time options. */ -extern bool opt_abort; -extern bool opt_abort_conf; -extern bool opt_trust_madvise; -extern bool opt_confirm_conf; -extern bool opt_hpa; +extern bool opt_abort; +extern bool opt_abort_conf; +extern bool opt_trust_madvise; +extern bool opt_experimental_hpa_start_huge_if_thp_always; +extern bool opt_experimental_hpa_enforce_hugify; +extern bool opt_confirm_conf; +extern bool opt_hpa; extern hpa_shard_opts_t opt_hpa_opts; -extern sec_opts_t opt_hpa_sec_opts; +extern sec_opts_t opt_hpa_sec_opts; extern const char *opt_junk; -extern bool opt_junk_alloc; -extern bool opt_junk_free; -extern void (*junk_free_callback)(void *ptr, size_t size); -extern void (*junk_alloc_callback)(void *ptr, size_t size); -extern bool opt_utrace; -extern bool opt_xmalloc; -extern bool opt_experimental_infallible_new; -extern bool opt_zero; -extern unsigned opt_narenas; +extern bool opt_junk_alloc; +extern bool opt_junk_free; +extern void (*JET_MUTABLE junk_free_callback)(void *ptr, size_t size); +extern void (*JET_MUTABLE junk_alloc_callback)(void *ptr, size_t size); +extern void (*JET_MUTABLE invalid_conf_abort)(void); +extern bool opt_utrace; +extern bool opt_xmalloc; +extern bool opt_experimental_infallible_new; +extern bool opt_experimental_tcache_gc; +extern bool opt_zero; +extern unsigned opt_narenas; +extern fxp_t opt_narenas_ratio; extern zero_realloc_action_t opt_zero_realloc_action; -extern malloc_init_t malloc_init_state; -extern const char *zero_realloc_mode_names[]; -extern atomic_zu_t zero_realloc_count; -extern bool opt_cache_oblivious; +extern malloc_init_t malloc_init_state; +extern const char *const zero_realloc_mode_names[]; +extern atomic_zu_t zero_realloc_count; +extern bool opt_cache_oblivious; +extern unsigned opt_debug_double_free_max_scan; +extern size_t opt_calloc_madvise_threshold; +extern bool opt_disable_large_size_classes; + +extern const char *opt_malloc_conf_symlink; +extern const char *opt_malloc_conf_env_var; /* Escape free-fastpath when ptr & mask == 0 (for sanitization purpose). */ extern uintptr_t san_cache_bin_nonfast_mask; @@ -53,23 +66,26 @@ extern unsigned manual_arena_base; */ extern atomic_p_t arenas[]; -void *a0malloc(size_t size); -void a0dalloc(void *ptr); -void *bootstrap_malloc(size_t size); -void *bootstrap_calloc(size_t num, size_t size); -void bootstrap_free(void *ptr); -void arena_set(unsigned ind, arena_t *arena); +extern unsigned huge_arena_ind; + +void *a0malloc(size_t size); +void a0dalloc(void *ptr); +void *bootstrap_malloc(size_t size); +void *bootstrap_calloc(size_t num, size_t size); +void bootstrap_free(void *ptr); +void arena_set(unsigned ind, arena_t *arena); unsigned narenas_total_get(void); arena_t *arena_init(tsdn_t *tsdn, unsigned ind, const arena_config_t *config); arena_t *arena_choose_hard(tsd_t *tsd, bool internal); -void arena_migrate(tsd_t *tsd, arena_t *oldarena, arena_t *newarena); -void iarena_cleanup(tsd_t *tsd); -void arena_cleanup(tsd_t *tsd); -size_t batch_alloc(void **ptrs, size_t num, size_t size, int flags); -void jemalloc_prefork(void); -void jemalloc_postfork_parent(void); -void jemalloc_postfork_child(void); -void je_sdallocx_noflags(void *ptr, size_t size); -void *malloc_default(size_t size); +void arena_migrate(tsd_t *tsd, arena_t *oldarena, arena_t *newarena); +void iarena_cleanup(tsd_t *tsd); +void arena_cleanup(tsd_t *tsd); +size_t batch_alloc(void **ptrs, size_t num, size_t size, int flags); +void jemalloc_prefork(void); +void jemalloc_postfork_parent(void); +void jemalloc_postfork_child(void); +void sdallocx_default(void *ptr, size_t size, int flags); +void free_default(void *ptr); +void *malloc_default(size_t size); #endif /* JEMALLOC_INTERNAL_EXTERNS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_a.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_a.h index 9e27cc3012fde..8513effd5a32d 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_a.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_a.h @@ -1,10 +1,14 @@ #ifndef JEMALLOC_INTERNAL_INLINES_A_H #define JEMALLOC_INTERNAL_INLINES_A_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_externs.h" +#include "jemalloc/internal/arena_types.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/bit_util.h" #include "jemalloc/internal/jemalloc_internal_types.h" #include "jemalloc/internal/sc.h" +#include "jemalloc/internal/tcache_externs.h" #include "jemalloc/internal/ticker.h" JEMALLOC_ALWAYS_INLINE malloc_cpuid_t @@ -14,6 +18,15 @@ malloc_getcpu(void) { return GetCurrentProcessorNumber(); #elif defined(JEMALLOC_HAVE_SCHED_GETCPU) return (malloc_cpuid_t)sched_getcpu(); +#elif defined(JEMALLOC_HAVE_RDTSCP) + unsigned int ecx; + asm volatile("rdtscp" : "=c"(ecx)::"eax", "edx"); + return (malloc_cpuid_t)(ecx & 0xfff); +#elif defined(__aarch64__) && defined(__APPLE__) + /* Other oses most likely use tpidr_el0 instead */ + uintptr_t c; + asm volatile("mrs %x0, tpidrro_el0" : "=r"(c)::"memory"); + return (malloc_cpuid_t)(c & (1 << 3) - 1); #else not_reached(); return -1; @@ -29,8 +42,8 @@ percpu_arena_choose(void) { assert(cpuid >= 0); unsigned arena_ind; - if ((opt_percpu_arena == percpu_arena) || ((unsigned)cpuid < ncpus / - 2)) { + if ((opt_percpu_arena == percpu_arena) + || ((unsigned)cpuid < ncpus / 2)) { arena_ind = cpuid; } else { assert(opt_percpu_arena == per_phycpu_arena); diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_b.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_b.h index 152f8a039569a..dad37a9c18bf4 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_b.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_b.h @@ -1,7 +1,10 @@ #ifndef JEMALLOC_INTERNAL_INLINES_B_H #define JEMALLOC_INTERNAL_INLINES_B_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_inlines_a.h" #include "jemalloc/internal/extent.h" +#include "jemalloc/internal/jemalloc_internal_inlines_a.h" static inline void percpu_arena_update(tsd_t *tsd, unsigned cpu) { @@ -20,13 +23,13 @@ percpu_arena_update(tsd_t *tsd, unsigned cpu) { tcache_t *tcache = tcache_get(tsd); if (tcache != NULL) { tcache_slow_t *tcache_slow = tsd_tcache_slowp_get(tsd); - tcache_arena_reassociate(tsd_tsdn(tsd), tcache_slow, - tcache, newarena); + assert(tcache_slow->arena != NULL); + tcache_arena_reassociate( + tsd_tsdn(tsd), tcache_slow, tcache, newarena); } } } - /* Choose an arena based on a per-thread value. */ static inline arena_t * arena_choose_impl(tsd_t *tsd, arena_t *arena, bool internal) { @@ -47,18 +50,18 @@ arena_choose_impl(tsd_t *tsd, arena_t *arena, bool internal) { assert(ret); if (tcache_available(tsd)) { tcache_slow_t *tcache_slow = tsd_tcache_slowp_get(tsd); - tcache_t *tcache = tsd_tcachep_get(tsd); + tcache_t *tcache = tsd_tcachep_get(tsd); if (tcache_slow->arena != NULL) { /* See comments in tsd_tcache_data_init().*/ - assert(tcache_slow->arena == - arena_get(tsd_tsdn(tsd), 0, false)); + assert(tcache_slow->arena + == arena_get(tsd_tsdn(tsd), 0, false)); if (tcache_slow->arena != ret) { tcache_arena_reassociate(tsd_tsdn(tsd), tcache_slow, tcache, ret); } } else { - tcache_arena_associate(tsd_tsdn(tsd), - tcache_slow, tcache, ret); + tcache_arena_associate( + tsd_tsdn(tsd), tcache_slow, tcache, ret); } } } @@ -68,10 +71,10 @@ arena_choose_impl(tsd_t *tsd, arena_t *arena, bool internal) { * auto percpu arena range, (i.e. thread is assigned to a manually * managed arena), then percpu arena is skipped. */ - if (have_percpu_arena && PERCPU_ARENA_ENABLED(opt_percpu_arena) && - !internal && (arena_ind_get(ret) < - percpu_arena_ind_limit(opt_percpu_arena)) && (ret->last_thd != - tsd_tsdn(tsd))) { + if (have_percpu_arena && PERCPU_ARENA_ENABLED(opt_percpu_arena) + && !internal + && (arena_ind_get(ret) < percpu_arena_ind_limit(opt_percpu_arena)) + && (ret->last_thd != tsd_tsdn(tsd))) { unsigned ind = percpu_arena_choose(); if (arena_ind_get(ret) != ind) { percpu_arena_update(tsd, ind); diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h index b0868b7d616b3..2c61f8c4f1b8a 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_inlines_c.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_INLINES_C_H #define JEMALLOC_INTERNAL_INLINES_C_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_externs.h" +#include "jemalloc/internal/arena_inlines_b.h" +#include "jemalloc/internal/emap.h" #include "jemalloc/internal/hook.h" #include "jemalloc/internal/jemalloc_internal_types.h" #include "jemalloc/internal/log.h" @@ -8,6 +12,15 @@ #include "jemalloc/internal/thread_event.h" #include "jemalloc/internal/witness.h" +/* + * These correspond to the macros in jemalloc/jemalloc_macros.h. Broadly, we + * should have one constant here per magic value there. Note however that the + * representations need not be related. + */ +#define TCACHE_IND_NONE ((unsigned)-1) +#define TCACHE_IND_AUTOMATIC ((unsigned)-2) +#define ARENA_IND_AUTOMATIC ((unsigned)-1) + /* * Translating the names of the 'i' functions: * Abbreviations used in the first part of the function name (before @@ -41,24 +54,35 @@ isalloc(tsdn_t *tsdn, const void *ptr) { } JEMALLOC_ALWAYS_INLINE void * -iallocztm(tsdn_t *tsdn, size_t size, szind_t ind, bool zero, tcache_t *tcache, - bool is_internal, arena_t *arena, bool slow_path) { +iallocztm_explicit_slab(tsdn_t *tsdn, size_t size, szind_t ind, bool zero, + bool slab, tcache_t *tcache, bool is_internal, arena_t *arena, + bool slow_path) { void *ret; + assert(!slab || sz_can_use_slab(size)); /* slab && large is illegal */ assert(!is_internal || tcache == NULL); assert(!is_internal || arena == NULL || arena_is_auto(arena)); if (!tsdn_null(tsdn) && tsd_reentrancy_level_get(tsdn_tsd(tsdn)) == 0) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); } - ret = arena_malloc(tsdn, arena, size, ind, zero, tcache, slow_path); + ret = arena_malloc( + tsdn, arena, size, ind, zero, slab, tcache, slow_path); if (config_stats && is_internal && likely(ret != NULL)) { arena_internal_add(iaalloc(tsdn, ret), isalloc(tsdn, ret)); } return ret; } +JEMALLOC_ALWAYS_INLINE void * +iallocztm(tsdn_t *tsdn, size_t size, szind_t ind, bool zero, tcache_t *tcache, + bool is_internal, arena_t *arena, bool slow_path) { + bool slab = sz_can_use_slab(size); + return iallocztm_explicit_slab( + tsdn, size, ind, zero, slab, tcache, is_internal, arena, slow_path); +} + JEMALLOC_ALWAYS_INLINE void * ialloc(tsd_t *tsd, size_t size, szind_t ind, bool zero, bool slow_path) { return iallocztm(tsd_tsdn(tsd), size, ind, zero, tcache_get(tsd), false, @@ -66,18 +90,19 @@ ialloc(tsd_t *tsd, size_t size, szind_t ind, bool zero, bool slow_path) { } JEMALLOC_ALWAYS_INLINE void * -ipallocztm(tsdn_t *tsdn, size_t usize, size_t alignment, bool zero, - tcache_t *tcache, bool is_internal, arena_t *arena) { +ipallocztm_explicit_slab(tsdn_t *tsdn, size_t usize, size_t alignment, + bool zero, bool slab, tcache_t *tcache, bool is_internal, arena_t *arena) { void *ret; + assert(!slab || sz_can_use_slab(usize)); /* slab && large is illegal */ assert(usize != 0); assert(usize == sz_sa2u(usize, alignment)); assert(!is_internal || tcache == NULL); assert(!is_internal || arena == NULL || arena_is_auto(arena)); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); - ret = arena_palloc(tsdn, arena, usize, alignment, zero, tcache); + ret = arena_palloc(tsdn, arena, usize, alignment, zero, slab, tcache); assert(ALIGNMENT_ADDR2BASE(ret, alignment) == ret); if (config_stats && is_internal && likely(ret != NULL)) { arena_internal_add(iaalloc(tsdn, ret), isalloc(tsdn, ret)); @@ -85,12 +110,26 @@ ipallocztm(tsdn_t *tsdn, size_t usize, size_t alignment, bool zero, return ret; } +JEMALLOC_ALWAYS_INLINE void * +ipallocztm(tsdn_t *tsdn, size_t usize, size_t alignment, bool zero, + tcache_t *tcache, bool is_internal, arena_t *arena) { + return ipallocztm_explicit_slab(tsdn, usize, alignment, zero, + sz_can_use_slab(usize), tcache, is_internal, arena); +} + JEMALLOC_ALWAYS_INLINE void * ipalloct(tsdn_t *tsdn, size_t usize, size_t alignment, bool zero, tcache_t *tcache, arena_t *arena) { return ipallocztm(tsdn, usize, alignment, zero, tcache, false, arena); } +JEMALLOC_ALWAYS_INLINE void * +ipalloct_explicit_slab(tsdn_t *tsdn, size_t usize, size_t alignment, bool zero, + bool slab, tcache_t *tcache, arena_t *arena) { + return ipallocztm_explicit_slab( + tsdn, usize, alignment, zero, slab, tcache, false, arena); +} + JEMALLOC_ALWAYS_INLINE void * ipalloc(tsd_t *tsd, size_t usize, size_t alignment, bool zero) { return ipallocztm(tsd_tsdn(tsd), usize, alignment, zero, @@ -108,13 +147,13 @@ idalloctm(tsdn_t *tsdn, void *ptr, tcache_t *tcache, assert(ptr != NULL); assert(!is_internal || tcache == NULL); assert(!is_internal || arena_is_auto(iaalloc(tsdn, ptr))); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); if (config_stats && is_internal) { arena_internal_sub(iaalloc(tsdn, ptr), isalloc(tsdn, ptr)); } - if (!is_internal && !tsdn_null(tsdn) && - tsd_reentrancy_level_get(tsdn_tsd(tsdn)) != 0) { + if (!is_internal && !tsdn_null(tsdn) + && tsd_reentrancy_level_get(tsdn_tsd(tsdn)) != 0) { assert(tcache == NULL); } arena_dalloc(tsdn, ptr, tcache, alloc_ctx, slow_path); @@ -128,25 +167,26 @@ idalloc(tsd_t *tsd, void *ptr) { JEMALLOC_ALWAYS_INLINE void isdalloct(tsdn_t *tsdn, void *ptr, size_t size, tcache_t *tcache, emap_alloc_ctx_t *alloc_ctx, bool slow_path) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); arena_sdalloc(tsdn, ptr, size, tcache, alloc_ctx, slow_path); } JEMALLOC_ALWAYS_INLINE void * iralloct_realign(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, - size_t alignment, bool zero, tcache_t *tcache, arena_t *arena, + size_t alignment, bool zero, bool slab, tcache_t *tcache, arena_t *arena, hook_ralloc_args_t *hook_args) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); - void *p; + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); + void *p; size_t usize, copysize; usize = sz_sa2u(size, alignment); if (unlikely(usize == 0 || usize > SC_LARGE_MAXCLASS)) { return NULL; } - p = ipalloct(tsdn, usize, alignment, zero, tcache, arena); + p = ipalloct_explicit_slab( + tsdn, usize, alignment, zero, slab, tcache, arena); if (p == NULL) { return NULL; } @@ -156,11 +196,12 @@ iralloct_realign(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, */ copysize = (size < oldsize) ? size : oldsize; memcpy(p, ptr, copysize); - hook_invoke_alloc(hook_args->is_realloc - ? hook_alloc_realloc : hook_alloc_rallocx, p, (uintptr_t)p, - hook_args->args); - hook_invoke_dalloc(hook_args->is_realloc - ? hook_dalloc_realloc : hook_dalloc_rallocx, ptr, hook_args->args); + hook_invoke_alloc( + hook_args->is_realloc ? hook_alloc_realloc : hook_alloc_rallocx, p, + (uintptr_t)p, hook_args->args); + hook_invoke_dalloc( + hook_args->is_realloc ? hook_dalloc_realloc : hook_dalloc_rallocx, + ptr, hook_args->args); isdalloct(tsdn, ptr, oldsize, tcache, NULL, true); return p; } @@ -173,33 +214,42 @@ iralloct_realign(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, * passed-around anywhere. */ JEMALLOC_ALWAYS_INLINE void * -iralloct(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, size_t alignment, - bool zero, tcache_t *tcache, arena_t *arena, hook_ralloc_args_t *hook_args) -{ +iralloct_explicit_slab(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, + size_t alignment, bool zero, bool slab, tcache_t *tcache, arena_t *arena, + hook_ralloc_args_t *hook_args) { assert(ptr != NULL); assert(size != 0); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); - if (alignment != 0 && ((uintptr_t)ptr & ((uintptr_t)alignment-1)) - != 0) { + if (alignment != 0 + && ((uintptr_t)ptr & ((uintptr_t)alignment - 1)) != 0) { /* * Existing object alignment is inadequate; allocate new space * and copy. */ return iralloct_realign(tsdn, ptr, oldsize, size, alignment, - zero, tcache, arena, hook_args); + zero, slab, tcache, arena, hook_args); } return arena_ralloc(tsdn, arena, ptr, oldsize, size, alignment, zero, - tcache, hook_args); + slab, tcache, hook_args); +} + +JEMALLOC_ALWAYS_INLINE void * +iralloct(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, size_t alignment, + size_t usize, bool zero, tcache_t *tcache, arena_t *arena, + hook_ralloc_args_t *hook_args) { + bool slab = sz_can_use_slab(usize); + return iralloct_explicit_slab(tsdn, ptr, oldsize, size, alignment, zero, + slab, tcache, arena, hook_args); } JEMALLOC_ALWAYS_INLINE void * iralloc(tsd_t *tsd, void *ptr, size_t oldsize, size_t size, size_t alignment, - bool zero, hook_ralloc_args_t *hook_args) { - return iralloct(tsd_tsdn(tsd), ptr, oldsize, size, alignment, zero, - tcache_get(tsd), NULL, hook_args); + size_t usize, bool zero, hook_ralloc_args_t *hook_args) { + return iralloct(tsd_tsdn(tsd), ptr, oldsize, size, alignment, usize, + zero, tcache_get(tsd), NULL, hook_args); } JEMALLOC_ALWAYS_INLINE bool @@ -207,29 +257,27 @@ ixalloc(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, size_t extra, size_t alignment, bool zero, size_t *newsize) { assert(ptr != NULL); assert(size != 0); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); - if (alignment != 0 && ((uintptr_t)ptr & ((uintptr_t)alignment-1)) - != 0) { + if (alignment != 0 + && ((uintptr_t)ptr & ((uintptr_t)alignment - 1)) != 0) { /* Existing object alignment is inadequate. */ *newsize = oldsize; return true; } - return arena_ralloc_no_move(tsdn, ptr, oldsize, size, extra, zero, - newsize); + return arena_ralloc_no_move( + tsdn, ptr, oldsize, size, extra, zero, newsize); } JEMALLOC_ALWAYS_INLINE void -fastpath_success_finish(tsd_t *tsd, uint64_t allocated_after, - cache_bin_t *bin, void *ret) { +fastpath_success_finish( + tsd_t *tsd, uint64_t allocated_after, cache_bin_t *bin, void *ret) { thread_allocated_set(tsd, allocated_after); if (config_stats) { bin->tstats.nrequests++; } - - LOG("core.malloc.exit", "result: %p", ret); } JEMALLOC_ALWAYS_INLINE bool @@ -256,7 +304,6 @@ malloc_initialized(void) { */ JEMALLOC_ALWAYS_INLINE void * imalloc_fastpath(size_t size, void *(fallback_alloc)(size_t)) { - LOG("core.malloc.entry", "size: %zu", size); if (tsd_get_allocates() && unlikely(!malloc_initialized())) { return fallback_alloc(size); } @@ -284,8 +331,8 @@ imalloc_fastpath(size_t size, void *(fallback_alloc)(size_t)) { sz_size2index_usize_fastpath(size, &ind, &usize); /* Fast path relies on size being a bin. */ assert(ind < SC_NBINS); - assert((SC_LOOKUP_MAXCLASS < SC_SMALL_MAXCLASS) && - (size <= SC_SMALL_MAXCLASS)); + assert((SC_LOOKUP_MAXCLASS < SC_SMALL_MAXCLASS) + && (size <= SC_SMALL_MAXCLASS)); uint64_t allocated, threshold; te_malloc_fastpath_ctx(tsd, &allocated, &threshold); @@ -314,7 +361,9 @@ imalloc_fastpath(size_t size, void *(fallback_alloc)(size_t)) { tcache_t *tcache = tsd_tcachep_get(tsd); assert(tcache == tcache_get(tsd)); cache_bin_t *bin = &tcache->bins[ind]; - bool tcache_success; + /* Suppress spurious warning from static analysis */ + assert(bin != NULL); + bool tcache_success; void *ret; /* @@ -337,4 +386,215 @@ imalloc_fastpath(size_t size, void *(fallback_alloc)(size_t)) { return fallback_alloc(size); } +JEMALLOC_ALWAYS_INLINE tcache_t * +tcache_get_from_ind(tsd_t *tsd, unsigned tcache_ind, bool slow, bool is_alloc) { + tcache_t *tcache; + if (tcache_ind == TCACHE_IND_AUTOMATIC) { + if (likely(!slow)) { + /* Getting tcache ptr unconditionally. */ + tcache = tsd_tcachep_get(tsd); + assert(tcache == tcache_get(tsd)); + } else if (is_alloc + || likely(tsd_reentrancy_level_get(tsd) == 0)) { + tcache = tcache_get(tsd); + } else { + tcache = NULL; + } + } else { + /* + * Should not specify tcache on deallocation path when being + * reentrant. + */ + assert(is_alloc || tsd_reentrancy_level_get(tsd) == 0 + || tsd_state_nocleanup(tsd)); + if (tcache_ind == TCACHE_IND_NONE) { + tcache = NULL; + } else { + tcache = tcaches_get(tsd, tcache_ind); + } + } + return tcache; +} + +JEMALLOC_ALWAYS_INLINE bool +maybe_check_alloc_ctx(tsd_t *tsd, void *ptr, emap_alloc_ctx_t *alloc_ctx) { + if (config_opt_size_checks) { + emap_alloc_ctx_t dbg_ctx; + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &dbg_ctx); + if (alloc_ctx->szind != dbg_ctx.szind) { + safety_check_fail_sized_dealloc( + /* current_dealloc */ true, ptr, + /* true_size */ emap_alloc_ctx_usize_get(&dbg_ctx), + /* input_size */ + emap_alloc_ctx_usize_get(alloc_ctx)); + return true; + } + if (alloc_ctx->slab != dbg_ctx.slab) { + safety_check_fail( + "Internal heap corruption detected: " + "mismatch in slab bit"); + return true; + } + } + return false; +} + +JEMALLOC_ALWAYS_INLINE bool +prof_sample_aligned(const void *ptr) { + return ((uintptr_t)ptr & PROF_SAMPLE_ALIGNMENT_MASK) == 0; +} + +JEMALLOC_ALWAYS_INLINE bool +free_fastpath_nonfast_aligned(void *ptr, bool check_prof) { + /* + * free_fastpath do not handle two uncommon cases: 1) sampled profiled + * objects and 2) sampled junk & stash for use-after-free detection. + * Both have special alignments which are used to escape the fastpath. + * + * prof_sample is page-aligned, which covers the UAF check when both + * are enabled (the assertion below). Avoiding redundant checks since + * this is on the fastpath -- at most one runtime branch from this. + */ + if (config_debug && cache_bin_nonfast_aligned(ptr)) { + assert(prof_sample_aligned(ptr)); + } + + if (config_prof && check_prof) { + /* When prof is enabled, the prof_sample alignment is enough. */ + if (prof_sample_aligned(ptr)) { + return true; + } else { + return false; + } + } + + if (config_uaf_detection) { + if (cache_bin_nonfast_aligned(ptr)) { + return true; + } else { + return false; + } + } + + return false; +} + +/* Returns whether or not the free attempt was successful. */ +JEMALLOC_ALWAYS_INLINE +bool +free_fastpath(void *ptr, size_t size, bool size_hint) { + tsd_t *tsd = tsd_get(false); + /* The branch gets optimized away unless tsd_get_allocates(). */ + if (unlikely(tsd == NULL)) { + return false; + } + /* + * The tsd_fast() / initialized checks are folded into the branch + * testing (deallocated_after >= threshold) later in this function. + * The threshold will be set to 0 when !tsd_fast. + */ + assert(tsd_fast(tsd) + || *tsd_thread_deallocated_next_event_fastp_get_unsafe(tsd) == 0); + + emap_alloc_ctx_t alloc_ctx JEMALLOC_CC_SILENCE_INIT({0, 0, false}); + size_t usize; + if (!size_hint) { + bool err = emap_alloc_ctx_try_lookup_fast( + tsd, &arena_emap_global, ptr, &alloc_ctx); + + /* Note: profiled objects will have alloc_ctx.slab set */ + if (unlikely(err || !alloc_ctx.slab + || free_fastpath_nonfast_aligned(ptr, + /* check_prof */ false))) { + return false; + } + assert(alloc_ctx.szind != SC_NSIZES); + usize = sz_index2size(alloc_ctx.szind); + } else { + /* + * Check for both sizes that are too large, and for sampled / + * special aligned objects. The alignment check will also check + * for null ptr. + */ + if (unlikely(size > SC_LOOKUP_MAXCLASS + || free_fastpath_nonfast_aligned(ptr, + /* check_prof */ true))) { + return false; + } + sz_size2index_usize_fastpath(size, &alloc_ctx.szind, &usize); + /* Max lookup class must be small. */ + assert(alloc_ctx.szind < SC_NBINS); + /* This is a dead store, except when opt size checking is on. */ + alloc_ctx.slab = true; + } + /* + * Currently the fastpath only handles small sizes. The branch on + * SC_LOOKUP_MAXCLASS makes sure of it. This lets us avoid checking + * tcache szind upper limit (i.e. tcache_max) as well. + */ + assert(alloc_ctx.slab); + + uint64_t deallocated, threshold; + te_free_fastpath_ctx(tsd, &deallocated, &threshold); + + uint64_t deallocated_after = deallocated + usize; + /* + * Check for events and tsd non-nominal (fast_threshold will be set to + * 0) in a single branch. Note that this handles the uninitialized case + * as well (TSD init will be triggered on the non-fastpath). Therefore + * anything depends on a functional TSD (e.g. the alloc_ctx sanity check + * below) needs to be after this branch. + */ + if (unlikely(deallocated_after >= threshold)) { + return false; + } + assert(tsd_fast(tsd)); + bool fail = maybe_check_alloc_ctx(tsd, ptr, &alloc_ctx); + if (fail) { + /* See the comment in isfree. */ + return true; + } + + tcache_t *tcache = tcache_get_from_ind(tsd, TCACHE_IND_AUTOMATIC, + /* slow */ false, /* is_alloc */ false); + cache_bin_t *bin = &tcache->bins[alloc_ctx.szind]; + + /* + * If junking were enabled, this is where we would do it. It's not + * though, since we ensured above that we're on the fast path. Assert + * that to double-check. + */ + assert(!opt_junk_free); + + if (!cache_bin_dalloc_easy(bin, ptr)) { + return false; + } + + *tsd_thread_deallocatedp_get(tsd) = deallocated_after; + + return true; +} + +JEMALLOC_ALWAYS_INLINE void JEMALLOC_NOTHROW +je_sdallocx_noflags(void *ptr, size_t size) { + if (!free_fastpath(ptr, size, true)) { + sdallocx_default(ptr, size, 0); + } +} + +JEMALLOC_ALWAYS_INLINE void JEMALLOC_NOTHROW +je_sdallocx_impl(void *ptr, size_t size, int flags) { + if (flags != 0 || !free_fastpath(ptr, size, true)) { + sdallocx_default(ptr, size, flags); + } +} + +JEMALLOC_ALWAYS_INLINE void JEMALLOC_NOTHROW +je_free_impl(void *ptr) { + if (!free_fastpath(ptr, 0, false)) { + free_default(ptr); + } +} + #endif /* JEMALLOC_INTERNAL_INLINES_C_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_macros.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_macros.h index e97b5f90730cf..eb1ca1190958d 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_macros.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_macros.h @@ -2,43 +2,46 @@ #define JEMALLOC_INTERNAL_MACROS_H #ifdef JEMALLOC_DEBUG -# define JEMALLOC_ALWAYS_INLINE static inline +# define JEMALLOC_ALWAYS_INLINE static inline #else -# ifdef _MSC_VER -# define JEMALLOC_ALWAYS_INLINE static __forceinline -# else -# define JEMALLOC_ALWAYS_INLINE JEMALLOC_ATTR(always_inline) static inline -# endif +# ifdef _MSC_VER +# define JEMALLOC_ALWAYS_INLINE static __forceinline +# else +# define JEMALLOC_ALWAYS_INLINE \ + JEMALLOC_ATTR(always_inline) static inline +# endif #endif #ifdef _MSC_VER -# define inline _inline +# define inline _inline #endif #define UNUSED JEMALLOC_ATTR(unused) -#define ZU(z) ((size_t)z) -#define ZD(z) ((ssize_t)z) -#define QU(q) ((uint64_t)q) -#define QD(q) ((int64_t)q) +#define ZU(z) ((size_t)z) +#define ZD(z) ((ssize_t)z) +#define QU(q) ((uint64_t)q) +#define QD(q) ((int64_t)q) -#define KZU(z) ZU(z##ULL) -#define KZD(z) ZD(z##LL) -#define KQU(q) QU(q##ULL) -#define KQD(q) QI(q##LL) +#define KZU(z) ZU(z##ULL) +#define KZD(z) ZD(z##LL) +#define KQU(q) QU(q##ULL) +#define KQD(q) QI(q##LL) #ifndef __DECONST -# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var)) +# define __DECONST(type, var) ((type)(uintptr_t)(const void *)(var)) #endif #if !defined(JEMALLOC_HAS_RESTRICT) || defined(__cplusplus) -# define restrict +# define restrict #endif /* Various function pointers are static and immutable except during testing. */ #ifdef JEMALLOC_JET -# define JET_MUTABLE +# define JET_MUTABLE +# define JET_EXTERN extern #else -# define JET_MUTABLE const +# define JET_MUTABLE const +# define JET_EXTERN static #endif #define JEMALLOC_VA_ARGS_HEAD(head, ...) head @@ -46,62 +49,94 @@ /* Diagnostic suppression macros */ #if defined(_MSC_VER) && !defined(__clang__) -# define JEMALLOC_DIAGNOSTIC_PUSH __pragma(warning(push)) -# define JEMALLOC_DIAGNOSTIC_POP __pragma(warning(pop)) -# define JEMALLOC_DIAGNOSTIC_IGNORE(W) __pragma(warning(disable:W)) -# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS -# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS -# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN -# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS +# define JEMALLOC_DIAGNOSTIC_PUSH __pragma(warning(push)) +# define JEMALLOC_DIAGNOSTIC_POP __pragma(warning(pop)) +# define JEMALLOC_DIAGNOSTIC_IGNORE(W) __pragma(warning(disable : W)) +# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS +# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS +# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS +# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN +# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED +# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS /* #pragma GCC diagnostic first appeared in gcc 4.6. */ -#elif (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && \ - (__GNUC_MINOR__ > 5)))) || defined(__clang__) +#elif (defined(__GNUC__) \ + && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5)))) \ + || defined(__clang__) /* * The JEMALLOC_PRAGMA__ macro is an implementation detail of the GCC and Clang * diagnostic suppression macros and should not be used anywhere else. */ -# define JEMALLOC_PRAGMA__(X) _Pragma(#X) -# define JEMALLOC_DIAGNOSTIC_PUSH JEMALLOC_PRAGMA__(GCC diagnostic push) -# define JEMALLOC_DIAGNOSTIC_POP JEMALLOC_PRAGMA__(GCC diagnostic pop) -# define JEMALLOC_DIAGNOSTIC_IGNORE(W) \ - JEMALLOC_PRAGMA__(GCC diagnostic ignored W) +# define JEMALLOC_PRAGMA__(X) _Pragma(#X) +# define JEMALLOC_DIAGNOSTIC_PUSH JEMALLOC_PRAGMA__(GCC diagnostic push) +# define JEMALLOC_DIAGNOSTIC_POP JEMALLOC_PRAGMA__(GCC diagnostic pop) +# define JEMALLOC_DIAGNOSTIC_IGNORE(W) \ + JEMALLOC_PRAGMA__(GCC diagnostic ignored W) /* * The -Wmissing-field-initializers warning is buggy in GCC versions < 5.1 and * all clang versions up to version 7 (currently trunk, unreleased). This macro * suppresses the warning for the affected compiler versions only. */ -# if ((defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ < 5)) || \ - defined(__clang__) -# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS \ - JEMALLOC_DIAGNOSTIC_IGNORE("-Wmissing-field-initializers") -# else -# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS -# endif - -# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS \ - JEMALLOC_DIAGNOSTIC_IGNORE("-Wtype-limits") -# define JEMALLOC_DIAGNOSTIC_IGNORE_UNUSED_PARAMETER \ - JEMALLOC_DIAGNOSTIC_IGNORE("-Wunused-parameter") -# if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7) -# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN \ - JEMALLOC_DIAGNOSTIC_IGNORE("-Walloc-size-larger-than=") -# else -# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN -# endif -# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS \ - JEMALLOC_DIAGNOSTIC_PUSH \ - JEMALLOC_DIAGNOSTIC_IGNORE_UNUSED_PARAMETER +# if ((defined(__GNUC__) && !defined(__clang__)) && (__GNUC__ < 5)) \ + || defined(__clang__) +# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS \ + JEMALLOC_DIAGNOSTIC_IGNORE( \ + "-Wmissing-field-initializers") +# else +# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS +# endif + +# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS \ + JEMALLOC_DIAGNOSTIC_IGNORE("-Wframe-address") +# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS \ + JEMALLOC_DIAGNOSTIC_IGNORE("-Wtype-limits") +# define JEMALLOC_DIAGNOSTIC_IGNORE_UNUSED_PARAMETER \ + JEMALLOC_DIAGNOSTIC_IGNORE("-Wunused-parameter") +# if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7) +# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN \ + JEMALLOC_DIAGNOSTIC_IGNORE("-Walloc-size-larger-than=") +# else +# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN +# endif +# ifdef JEMALLOC_HAVE_ATTR_DEPRECATED +# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED \ + JEMALLOC_DIAGNOSTIC_IGNORE("-Wdeprecated-declarations") +# else +# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED +# endif +# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS \ + JEMALLOC_DIAGNOSTIC_PUSH \ + JEMALLOC_DIAGNOSTIC_IGNORE_UNUSED_PARAMETER #else -# define JEMALLOC_DIAGNOSTIC_PUSH -# define JEMALLOC_DIAGNOSTIC_POP -# define JEMALLOC_DIAGNOSTIC_IGNORE(W) -# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS -# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS -# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN -# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS +# define JEMALLOC_DIAGNOSTIC_PUSH +# define JEMALLOC_DIAGNOSTIC_POP +# define JEMALLOC_DIAGNOSTIC_IGNORE(W) +# define JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS +# define JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS +# define JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS +# define JEMALLOC_DIAGNOSTIC_IGNORE_ALLOC_SIZE_LARGER_THAN +# define JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED +# define JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS +#endif + +#ifdef __clang_analyzer__ +# define JEMALLOC_CLANG_ANALYZER #endif +#ifdef JEMALLOC_CLANG_ANALYZER +# define JEMALLOC_CLANG_ANALYZER_SUPPRESS __attribute__((suppress)) +# define JEMALLOC_CLANG_ANALYZER_SILENCE_INIT(v) = v +#else +# define JEMALLOC_CLANG_ANALYZER_SUPPRESS +# define JEMALLOC_CLANG_ANALYZER_SILENCE_INIT(v) +#endif + +#define JEMALLOC_SUPPRESS_WARN_ON_USAGE(...) \ + JEMALLOC_DIAGNOSTIC_PUSH \ + JEMALLOC_DIAGNOSTIC_IGNORE_DEPRECATED \ + __VA_ARGS__ \ + JEMALLOC_DIAGNOSTIC_POP + /* * Disables spurious diagnostics for all headers. Since these headers are not * included by users directly, it does not affect their diagnostic settings. diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_overrides.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_overrides.h new file mode 100644 index 0000000000000..bf74a61217575 --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_overrides.h @@ -0,0 +1,22 @@ +#ifndef JEMALLOC_INTERNAL_OVERRIDES_H +#define JEMALLOC_INTERNAL_OVERRIDES_H + +/* + * Under normal circumstances this header serves no purpose, as these settings + * can be customized via the corresponding autoconf options at configure-time. + * Overriding in this fashion is useful when the header files generated by + * autoconf are used as input for another build system. + */ + +#ifdef JEMALLOC_OVERRIDE_LG_PAGE +# undef LG_PAGE +# define LG_PAGE JEMALLOC_OVERRIDE_LG_PAGE +#endif + +#ifdef JEMALLOC_OVERRIDE_JEMALLOC_CONFIG_MALLOC_CONF +# undef JEMALLOC_CONFIG_MALLOC_CONF +# define JEMALLOC_CONFIG_MALLOC_CONF \ + JEMALLOC_OVERRIDE_JEMALLOC_CONFIG_MALLOC_CONF +#endif + +#endif /* JEMALLOC_INTERNAL_OVERRIDES_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h index 62c2b59c71c20..0ade5461ba718 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_internal_types.h @@ -18,13 +18,13 @@ enum zero_realloc_action_e { typedef enum zero_realloc_action_e zero_realloc_action_t; /* Signature of write callback. */ -typedef void (write_cb_t)(void *, const char *); +typedef void(write_cb_t)(void *, const char *); enum malloc_init_e { - malloc_init_uninitialized = 3, - malloc_init_a0_initialized = 2, - malloc_init_recursible = 1, - malloc_init_initialized = 0 /* Common case --> jnz. */ + malloc_init_uninitialized = 3, + malloc_init_a0_initialized = 2, + malloc_init_recursible = 1, + malloc_init_initialized = 0 /* Common case --> jnz. */ }; typedef enum malloc_init_e malloc_init_t; @@ -39,48 +39,46 @@ typedef enum malloc_init_e malloc_init_t; * * aaaaaaaa aaaatttt tttttttt 0znnnnnn */ -#define MALLOCX_ARENA_BITS 12 -#define MALLOCX_TCACHE_BITS 12 -#define MALLOCX_LG_ALIGN_BITS 6 -#define MALLOCX_ARENA_SHIFT 20 -#define MALLOCX_TCACHE_SHIFT 8 -#define MALLOCX_ARENA_MASK \ - (((1 << MALLOCX_ARENA_BITS) - 1) << MALLOCX_ARENA_SHIFT) +#define MALLOCX_ARENA_BITS 12 +#define MALLOCX_TCACHE_BITS 12 +#define MALLOCX_LG_ALIGN_BITS 6 +#define MALLOCX_ARENA_SHIFT 20 +#define MALLOCX_TCACHE_SHIFT 8 +#define MALLOCX_ARENA_MASK \ + ((unsigned)(((1U << MALLOCX_ARENA_BITS) - 1) << MALLOCX_ARENA_SHIFT)) /* NB: Arena index bias decreases the maximum number of arenas by 1. */ -#define MALLOCX_ARENA_LIMIT ((1 << MALLOCX_ARENA_BITS) - 1) -#define MALLOCX_TCACHE_MASK \ - (((1 << MALLOCX_TCACHE_BITS) - 1) << MALLOCX_TCACHE_SHIFT) -#define MALLOCX_TCACHE_MAX ((1 << MALLOCX_TCACHE_BITS) - 3) -#define MALLOCX_LG_ALIGN_MASK ((1 << MALLOCX_LG_ALIGN_BITS) - 1) +#define MALLOCX_ARENA_LIMIT ((unsigned)((1U << MALLOCX_ARENA_BITS) - 1)) +#define MALLOCX_TCACHE_MASK \ + ((unsigned)(((1U << MALLOCX_TCACHE_BITS) - 1) << MALLOCX_TCACHE_SHIFT)) +#define MALLOCX_TCACHE_MAX ((unsigned)((1U << MALLOCX_TCACHE_BITS) - 3)) +#define MALLOCX_LG_ALIGN_MASK ((1 << MALLOCX_LG_ALIGN_BITS) - 1) /* Use MALLOCX_ALIGN_GET() if alignment may not be specified in flags. */ -#define MALLOCX_ALIGN_GET_SPECIFIED(flags) \ - (ZU(1) << (flags & MALLOCX_LG_ALIGN_MASK)) -#define MALLOCX_ALIGN_GET(flags) \ - (MALLOCX_ALIGN_GET_SPECIFIED(flags) & (SIZE_T_MAX-1)) -#define MALLOCX_ZERO_GET(flags) \ - ((bool)(flags & MALLOCX_ZERO)) - -#define MALLOCX_TCACHE_GET(flags) \ - (((unsigned)((flags & MALLOCX_TCACHE_MASK) >> MALLOCX_TCACHE_SHIFT)) - 2) -#define MALLOCX_ARENA_GET(flags) \ - (((unsigned)(((unsigned)flags) >> MALLOCX_ARENA_SHIFT)) - 1) +#define MALLOCX_ALIGN_GET_SPECIFIED(flags) \ + (ZU(1) << (flags & MALLOCX_LG_ALIGN_MASK)) +#define MALLOCX_ALIGN_GET(flags) \ + (MALLOCX_ALIGN_GET_SPECIFIED(flags) & (SIZE_T_MAX - 1)) +#define MALLOCX_ZERO_GET(flags) ((bool)(flags & MALLOCX_ZERO)) + +#define MALLOCX_TCACHE_GET(flags) \ + (((unsigned)((flags & MALLOCX_TCACHE_MASK) >> MALLOCX_TCACHE_SHIFT)) \ + - 2) +#define MALLOCX_ARENA_GET(flags) \ + (((unsigned)(((unsigned)flags) >> MALLOCX_ARENA_SHIFT)) - 1) /* Smallest size class to support. */ -#define TINY_MIN (1U << LG_TINY_MIN) +#define TINY_MIN (1U << LG_TINY_MIN) -#define LONG ((size_t)(1U << LG_SIZEOF_LONG)) -#define LONG_MASK (LONG - 1) +#define LONG ((size_t)(1U << LG_SIZEOF_LONG)) +#define LONG_MASK (LONG - 1) /* Return the smallest long multiple that is >= a. */ -#define LONG_CEILING(a) \ - (((a) + LONG_MASK) & ~LONG_MASK) +#define LONG_CEILING(a) (((a) + LONG_MASK) & ~LONG_MASK) -#define SIZEOF_PTR (1U << LG_SIZEOF_PTR) -#define PTR_MASK (SIZEOF_PTR - 1) +#define SIZEOF_PTR (1U << LG_SIZEOF_PTR) +#define PTR_MASK (SIZEOF_PTR - 1) /* Return the smallest (void *) multiple that is >= a. */ -#define PTR_CEILING(a) \ - (((a) + PTR_MASK) & ~PTR_MASK) +#define PTR_CEILING(a) (((a) + PTR_MASK) & ~PTR_MASK) /* * Maximum size of L1 cache line. This is used to avoid cache line aliasing. @@ -89,42 +87,62 @@ typedef enum malloc_init_e malloc_init_t; * CACHELINE cannot be based on LG_CACHELINE because __declspec(align()) can * only handle raw constants. */ -#define LG_CACHELINE 6 -#define CACHELINE 64 -#define CACHELINE_MASK (CACHELINE - 1) +#define LG_CACHELINE 6 +#define CACHELINE 64 +#define CACHELINE_MASK (CACHELINE - 1) /* Return the smallest cacheline multiple that is >= s. */ -#define CACHELINE_CEILING(s) \ - (((s) + CACHELINE_MASK) & ~CACHELINE_MASK) +#define CACHELINE_CEILING(s) (((s) + CACHELINE_MASK) & ~CACHELINE_MASK) /* Return the nearest aligned address at or below a. */ -#define ALIGNMENT_ADDR2BASE(a, alignment) \ - ((void *)((uintptr_t)(a) & ((~(alignment)) + 1))) +#define ALIGNMENT_ADDR2BASE(a, alignment) \ + ((void *)(((byte_t *)(a)) \ + - (((uintptr_t)(a)) - ((uintptr_t)(a) & ((~(alignment)) + 1))))) /* Return the offset between a and the nearest aligned address at or below a. */ -#define ALIGNMENT_ADDR2OFFSET(a, alignment) \ +#define ALIGNMENT_ADDR2OFFSET(a, alignment) \ ((size_t)((uintptr_t)(a) & (alignment - 1))) /* Return the smallest alignment multiple that is >= s. */ -#define ALIGNMENT_CEILING(s, alignment) \ +#define ALIGNMENT_CEILING(s, alignment) \ (((s) + (alignment - 1)) & ((~(alignment)) + 1)) +/* + * Return the nearest aligned address at or above a. + * + * While at first glance this would appear to be merely a more complicated + * way to perform the same computation as `ALIGNMENT_CEILING`, + * this has the important additional property of not concealing pointer + * provenance from the compiler. See the block-comment on the + * definition of `byte_t` for more details. + */ +#define ALIGNMENT_ADDR2CEILING(a, alignment) \ + ((void *)(((byte_t *)(a)) \ + + (((((uintptr_t)(a)) + (alignment - 1)) & ((~(alignment)) + 1)) \ + - ((uintptr_t)(a))))) + /* Declare a variable-length array. */ -#if __STDC_VERSION__ < 199901L -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# ifdef JEMALLOC_HAS_ALLOCA_H -# include -# else -# include -# endif -# endif -# define VARIABLE_ARRAY(type, name, count) \ - type *name = alloca(sizeof(type) * (count)) +#if __STDC_VERSION__ < 199901L || defined(__STDC_NO_VLA__) +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef JEMALLOC_HAS_ALLOCA_H +# include +# else +# include +# endif +# endif +# define VARIABLE_ARRAY_UNSAFE(type, name, count) \ + type *name = alloca(sizeof(type) * (count)) #else -# define VARIABLE_ARRAY(type, name, count) type name[(count)] +# define VARIABLE_ARRAY_UNSAFE(type, name, count) type name[(count)] #endif +#define VARIABLE_ARRAY_SIZE_MAX 2048 +#define VARIABLE_ARRAY(type, name, count) \ + assert(sizeof(type) * (count) <= VARIABLE_ARRAY_SIZE_MAX); \ + VARIABLE_ARRAY_UNSAFE(type, name, count) + +#define CALLOC_MADVISE_THRESHOLD_DEFAULT (((size_t)1) << 23) /* 8 MB */ #endif /* JEMALLOC_INTERNAL_TYPES_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_preamble.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_preamble.h index 3be27ed5fd027..9c3382d05e6ba 100644 --- a/dep/jemalloc/include/jemalloc/internal/jemalloc_preamble.h +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_preamble.h @@ -57,6 +57,15 @@ # define JEMALLOC_MADV_FREE 8 #endif +/* + * Can be defined at compile time, in cases, when it is known + * madvise(..., MADV_COLLAPSE) feature is supported, but MADV_COLLAPSE + * constant is not defined. + */ +#ifdef JEMALLOC_DEFINE_MADVISE_COLLAPSE +# define JEMALLOC_MADV_COLLAPSE 25 +#endif + static const bool config_debug = #ifdef JEMALLOC_DEBUG true @@ -78,6 +87,13 @@ static const bool have_madvise_huge = false #endif ; +static const bool have_process_madvise = +#ifdef JEMALLOC_HAVE_PROCESS_MADVISE + true +#else + false +#endif + ; static const bool config_fill = #ifdef JEMALLOC_FILL true @@ -114,6 +130,13 @@ static const bool config_prof_libunwind = false #endif ; +static const bool config_prof_frameptr = +#ifdef JEMALLOC_PROF_FRAME_POINTER + true +#else + false +#endif + ; static const bool maps_coalesce = #ifdef JEMALLOC_MAPS_COALESCE true @@ -215,7 +238,7 @@ static const bool config_enable_cxx = #endif ; -#if defined(_WIN32) || defined(JEMALLOC_HAVE_SCHED_GETCPU) +#if defined(_WIN32) || defined(__APPLE__) || defined(JEMALLOC_HAVE_SCHED_GETCPU) /* Currently percpu_arena depends on sched_getcpu. */ #define JEMALLOC_PERCPU_ARENA #endif diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_probe.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_probe.h new file mode 100644 index 0000000000000..8ef3105d10837 --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_probe.h @@ -0,0 +1,49 @@ +#ifndef JEMALLOC_INTERNAL_JEMALLOC_PROBE_H +#define JEMALLOC_INTERNAL_JEMALLOC_PROBE_H + +#include + +#ifdef JEMALLOC_EXPERIMENTAL_USDT_STAP +#include +#elif defined(JEMALLOC_EXPERIMENTAL_USDT_CUSTOM) +#include +#elif defined(_MSC_VER) +#define JE_USDT(name, N, ...) /* Nothing */ +#else /* no USDT, just check the args */ + +#define JE_USDT(name, N, ...) _JE_USDT_CHECK_ARG##N(__VA_ARGS__) + +#define _JE_USDT_CHECK_ARG1(a) \ + do { \ + (void)(a); \ + } while (0) +#define _JE_USDT_CHECK_ARG2(a, b) \ + do { \ + (void)(a); \ + (void)(b); \ + } while (0) +#define _JE_USDT_CHECK_ARG3(a, b, c) \ + do { \ + (void)(a); \ + (void)(b); \ + (void)(c); \ + } while (0) +#define _JE_USDT_CHECK_ARG4(a, b, c, d) \ + do { \ + (void)(a); \ + (void)(b); \ + (void)(c); \ + (void)(d); \ + } while (0) +#define _JE_USDT_CHECK_ARG5(a, b, c, d, e) \ + do { \ + (void)(a); \ + (void)(b); \ + (void)(c); \ + (void)(d); \ + (void)(e); \ + } while (0) + +#endif /* JEMALLOC_EXPERIMENTAL_USDT_* */ + +#endif /* JEMALLOC_INTERNAL_JEMALLOC_PROBE_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_probe_custom.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_probe_custom.h new file mode 100644 index 0000000000000..3c22749f110ea --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_probe_custom.h @@ -0,0 +1,148 @@ +#ifndef JEMALLOC_INTERNAL_JEMALLOC_PROBE_CUSTOM_H +#define JEMALLOC_INTERNAL_JEMALLOC_PROBE_CUSTOM_H + +/* clang-format off */ + +/* + * This section is based on sys/sdt.h and + * https://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation + */ + +/* Emit NOP for the probe. */ +#if (defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || \ + defined(__arm__)) && defined(__linux__) +#define JE_SDT_NOP nop +#else +#error "Architecture not supported" +#endif + +/* Assembly macros */ +#define JE_SDT_S(x) #x + +#define JE_SDT_ASM_1(x) JE_SDT_S(x) "\n" + +#define JE_SDT_ASM_2(x, y) \ + JE_SDT_S(x) "," JE_SDT_S(y) "\n" + +#define JE_SDT_ASM_3(x, y, z) \ + JE_SDT_S(x) "," JE_SDT_S(y) "," JE_SDT_S(z) "\n" + +#define JE_SDT_ASM_3(x, y, z) \ + JE_SDT_S(x) "," JE_SDT_S(y) "," JE_SDT_S(z) "\n" + +#define JE_SDT_ASM_4(x, y, z, p) \ + JE_SDT_S(x) "," JE_SDT_S(y) "," JE_SDT_S(z) "," JE_SDT_S(p) "\n" + +#define JE_SDT_ASM_5(x, y, z, p, q) \ + JE_SDT_S(x) "," JE_SDT_S(y) "," JE_SDT_S(z) "," JE_SDT_S(p) "," \ + JE_SDT_S(q) "\n" + +/* Arg size */ +#ifdef __LP64__ +#define JE_SDT_ASM_ADDR .8byte +#else +#define JE_SDT_ASM_ADDR .4byte +#endif + +#define JE_SDT_NOTE_NAME "stapsdt" +#define JE_SDT_NOTE_TYPE 3 + +#define JE_SDT_SEMAPHORE_NONE(provider, name) \ + JE_SDT_ASM_1(JE_SDT_ASM_ADDR 0) /* No Semaphore support */ +#define JE_SDT_SEMAPHORE_OPERAND(provider, name) \ + [__sdt_semaphore] "ip" (0) /* No Semaphore */ + +#define JE_SDT_ASM_STRING(x) JE_SDT_ASM_1(.asciz JE_SDT_S(x)) + +#define JE_SDT_NOTE(provider, name, arg_template) \ + JE_SDT_ASM_1(990: JE_SDT_NOP) \ + JE_SDT_ASM_3( .pushsection .note.stapsdt,"?","note") \ + JE_SDT_ASM_1( .balign 4) \ + JE_SDT_ASM_3( .4byte 992f-991f, 994f-993f, JE_SDT_NOTE_TYPE) \ + JE_SDT_ASM_1(991: .asciz JE_SDT_NOTE_NAME) \ + JE_SDT_ASM_1(992: .balign 4) \ + JE_SDT_ASM_1(993: JE_SDT_ASM_ADDR 990b) \ + JE_SDT_ASM_1( JE_SDT_ASM_ADDR _.stapsdt.base) \ + JE_SDT_SEMAPHORE_NONE(provider, name) \ + JE_SDT_ASM_STRING(provider) \ + JE_SDT_ASM_STRING(name) \ + JE_SDT_ASM_STRING(arg_template) \ + JE_SDT_ASM_1(994: .balign 4) \ + JE_SDT_ASM_1( .popsection) + +#define JE_SDT_BASE \ + JE_SDT_ASM_1( .ifndef _.stapsdt.base) \ + JE_SDT_ASM_5( .pushsection .stapsdt.base, "aG", "progbits", \ + .stapsdt.base,comdat) \ + JE_SDT_ASM_1( .weak _.stapsdt.base) \ + JE_SDT_ASM_1( .hidden _.stapsdt.base) \ + JE_SDT_ASM_1( _.stapsdt.base: .space 1) \ + JE_SDT_ASM_2( .size _.stapsdt.base, 1) \ + JE_SDT_ASM_1( .popsection) \ + JE_SDT_ASM_1( .endif) + + +/* + * Default constraint for probes arguments. + * See https://gcc.gnu.org/onlinedocs/gcc/Constraints.html + */ +#ifndef JE_SDT_ARG_CONSTRAINT +#define JE_SDT_ARG_CONSTRAINT "nor" +#endif + +#define JE_SDT_ARGARRAY(x) ((__builtin_classify_type(x) == 14) || \ + (__builtin_classify_type(x) == 5)) +#define JE_SDT_ARGSIZE(x) (JE_SDT_ARGARRAY(x) ? sizeof(void*) : sizeof(x)) + +/* + * Format of each probe argument as operand. Size tagged with JE_SDT_Sn, + * with "n" constraint. Value is tagged with JE_SDT_An with configured + * constraint. + */ +#define JE_SDT_ARG(n, x) \ + [JE_SDT_S##n] "n" ((size_t)JE_SDT_ARGSIZE(x)), \ + [JE_SDT_A##n] JE_SDT_ARG_CONSTRAINT(x) + +/* Templates to append arguments as operands. */ +#define JE_SDT_OPERANDS_0() [__sdt_dummy] "g" (0) +#define JE_SDT_OPERANDS_1(_1) JE_SDT_ARG(1, _1) +#define JE_SDT_OPERANDS_2(_1, _2) JE_SDT_OPERANDS_1(_1), JE_SDT_ARG(2, _2) +#define JE_SDT_OPERANDS_3(_1, _2, _3) JE_SDT_OPERANDS_2(_1, _2), JE_SDT_ARG(3, _3) +#define JE_SDT_OPERANDS_4(_1, _2, _3, _4) \ + JE_SDT_OPERANDS_3(_1, _2, _3), JE_SDT_ARG(4, _4) +#define JE_SDT_OPERANDS_5(_1, _2, _3, _4, _5) \ + JE_SDT_OPERANDS_4(_1, _2, _3, _4), JE_SDT_ARG(5, _5) +#define JE_SDT_OPERANDS_6(_1, _2, _3, _4, _5, _6) \ + JE_SDT_OPERANDS_5(_1, _2, _3, _4, _5), JE_SDT_ARG(6, _6) +#define JE_SDT_OPERANDS_7(_1, _2, _3, _4, _5, _6, _7) \ + JE_SDT_OPERANDS_6(_1, _2, _3, _4, _5, _6), JE_SDT_ARG(7, _7) + +/* Templates to reference the arguments from operands. */ +#define JE_SDT_ARGFMT(num) %n[JE_SDT_S##num]@%[JE_SDT_A##num] +#define JE_SDT_ARG_TEMPLATE_0 /* No args */ +#define JE_SDT_ARG_TEMPLATE_1 JE_SDT_ARGFMT(1) +#define JE_SDT_ARG_TEMPLATE_2 JE_SDT_ARG_TEMPLATE_1 JE_SDT_ARGFMT(2) +#define JE_SDT_ARG_TEMPLATE_3 JE_SDT_ARG_TEMPLATE_2 JE_SDT_ARGFMT(3) +#define JE_SDT_ARG_TEMPLATE_4 JE_SDT_ARG_TEMPLATE_3 JE_SDT_ARGFMT(4) +#define JE_SDT_ARG_TEMPLATE_5 JE_SDT_ARG_TEMPLATE_4 JE_SDT_ARGFMT(5) +#define JE_SDT_ARG_TEMPLATE_6 JE_SDT_ARG_TEMPLATE_5 JE_SDT_ARGFMT(6) +#define JE_SDT_ARG_TEMPLATE_7 JE_SDT_ARG_TEMPLATE_6 JE_SDT_ARGFMT(7) + +#define JE_SDT_PROBE( \ + provider, name, n, arglist) \ + do { \ + __asm__ __volatile__( \ + JE_SDT_NOTE(provider, name, \ + JE_SDT_ARG_TEMPLATE_##n) \ + :: JE_SDT_SEMAPHORE_OPERAND(provider, name), \ + JE_SDT_OPERANDS_##n arglist); \ + __asm__ __volatile__(JE_SDT_BASE); \ + } while (0) + +#define JE_USDT(name, N, ...) \ + JE_SDT_PROBE(jemalloc, name, N, (__VA_ARGS__)) + + +#endif /* JEMALLOC_INTERNAL_JEMALLOC_PROBE_CUSTOM_H */ + +/* clang-format on */ diff --git a/dep/jemalloc/include/jemalloc/internal/jemalloc_probe_stap.h b/dep/jemalloc/include/jemalloc/internal/jemalloc_probe_stap.h new file mode 100644 index 0000000000000..302b6cbb215b2 --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/jemalloc_probe_stap.h @@ -0,0 +1,11 @@ +#ifndef JEMALLOC_INTERNAL_JEMALLOC_PROBE_STAP_H +#define JEMALLOC_INTERNAL_JEMALLOC_PROBE_STAP_H + +#include + +#define JE_USDT(name, N, ...) JE_USDT_PROBE_N(name, N, ##__VA_ARGS__) + +#define JE_USDT_PROBE_N(name, N, ...) \ + STAP_PROBE##N(jemalloc, name, ##__VA_ARGS__) + +#endif /* JEMALLOC_INTERNAL_JEMALLOC_PROBE_STAP_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/large_externs.h b/dep/jemalloc/include/jemalloc/internal/large_externs.h index 8e09122dfb7b8..84c6c5d62a741 100644 --- a/dep/jemalloc/include/jemalloc/internal/large_externs.h +++ b/dep/jemalloc/include/jemalloc/internal/large_externs.h @@ -1,23 +1,24 @@ #ifndef JEMALLOC_INTERNAL_LARGE_EXTERNS_H #define JEMALLOC_INTERNAL_LARGE_EXTERNS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/edata.h" #include "jemalloc/internal/hook.h" void *large_malloc(tsdn_t *tsdn, arena_t *arena, size_t usize, bool zero); -void *large_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, - bool zero); -bool large_ralloc_no_move(tsdn_t *tsdn, edata_t *edata, size_t usize_min, - size_t usize_max, bool zero); +void *large_palloc( + tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, bool zero); +bool large_ralloc_no_move(tsdn_t *tsdn, edata_t *edata, size_t usize_min, + size_t usize_max, bool zero); void *large_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t usize, size_t alignment, bool zero, tcache_t *tcache, hook_ralloc_args_t *hook_args); -void large_dalloc_prep_locked(tsdn_t *tsdn, edata_t *edata); -void large_dalloc_finish(tsdn_t *tsdn, edata_t *edata); -void large_dalloc(tsdn_t *tsdn, edata_t *edata); -size_t large_salloc(tsdn_t *tsdn, const edata_t *edata); -void large_prof_info_get(tsd_t *tsd, edata_t *edata, prof_info_t *prof_info, - bool reset_recent); +void large_dalloc_prep_locked(tsdn_t *tsdn, edata_t *edata); +void large_dalloc_finish(tsdn_t *tsdn, edata_t *edata); +void large_dalloc(tsdn_t *tsdn, edata_t *edata); +void large_prof_info_get( + tsd_t *tsd, edata_t *edata, prof_info_t *prof_info, bool reset_recent); void large_prof_tctx_reset(edata_t *edata); void large_prof_info_set(edata_t *edata, prof_tctx_t *tctx, size_t size); diff --git a/dep/jemalloc/include/jemalloc/internal/lockedint.h b/dep/jemalloc/include/jemalloc/internal/lockedint.h index d020ebec1c4bb..46aba8ff38f53 100644 --- a/dep/jemalloc/include/jemalloc/internal/lockedint.h +++ b/dep/jemalloc/include/jemalloc/internal/lockedint.h @@ -1,6 +1,11 @@ #ifndef JEMALLOC_INTERNAL_LOCKEDINT_H #define JEMALLOC_INTERNAL_LOCKEDINT_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/atomic.h" +#include "jemalloc/internal/mutex.h" +#include "jemalloc/internal/tsd_types.h" + /* * In those architectures that support 64-bit atomics, we use atomic updates for * our 64-bit values. Otherwise, we use a plain uint64_t and synchronize @@ -25,33 +30,34 @@ struct locked_zu_s { }; #ifndef JEMALLOC_ATOMIC_U64 -# define LOCKEDINT_MTX_DECLARE(name) malloc_mutex_t name; -# define LOCKEDINT_MTX_INIT(mu, name, rank, rank_mode) \ - malloc_mutex_init(&(mu), name, rank, rank_mode) -# define LOCKEDINT_MTX(mtx) (&(mtx)) -# define LOCKEDINT_MTX_LOCK(tsdn, mu) malloc_mutex_lock(tsdn, &(mu)) -# define LOCKEDINT_MTX_UNLOCK(tsdn, mu) malloc_mutex_unlock(tsdn, &(mu)) -# define LOCKEDINT_MTX_PREFORK(tsdn, mu) malloc_mutex_prefork(tsdn, &(mu)) -# define LOCKEDINT_MTX_POSTFORK_PARENT(tsdn, mu) \ - malloc_mutex_postfork_parent(tsdn, &(mu)) -# define LOCKEDINT_MTX_POSTFORK_CHILD(tsdn, mu) \ - malloc_mutex_postfork_child(tsdn, &(mu)) +# define LOCKEDINT_MTX_DECLARE(name) malloc_mutex_t name; +# define LOCKEDINT_MTX_INIT(mu, name, rank, rank_mode) \ + malloc_mutex_init(&(mu), name, rank, rank_mode) +# define LOCKEDINT_MTX(mtx) (&(mtx)) +# define LOCKEDINT_MTX_LOCK(tsdn, mu) malloc_mutex_lock(tsdn, &(mu)) +# define LOCKEDINT_MTX_UNLOCK(tsdn, mu) malloc_mutex_unlock(tsdn, &(mu)) +# define LOCKEDINT_MTX_PREFORK(tsdn, mu) \ + malloc_mutex_prefork(tsdn, &(mu)) +# define LOCKEDINT_MTX_POSTFORK_PARENT(tsdn, mu) \ + malloc_mutex_postfork_parent(tsdn, &(mu)) +# define LOCKEDINT_MTX_POSTFORK_CHILD(tsdn, mu) \ + malloc_mutex_postfork_child(tsdn, &(mu)) #else -# define LOCKEDINT_MTX_DECLARE(name) -# define LOCKEDINT_MTX(mtx) NULL -# define LOCKEDINT_MTX_INIT(mu, name, rank, rank_mode) false -# define LOCKEDINT_MTX_LOCK(tsdn, mu) -# define LOCKEDINT_MTX_UNLOCK(tsdn, mu) -# define LOCKEDINT_MTX_PREFORK(tsdn, mu) -# define LOCKEDINT_MTX_POSTFORK_PARENT(tsdn, mu) -# define LOCKEDINT_MTX_POSTFORK_CHILD(tsdn, mu) +# define LOCKEDINT_MTX_DECLARE(name) +# define LOCKEDINT_MTX(mtx) NULL +# define LOCKEDINT_MTX_INIT(mu, name, rank, rank_mode) false +# define LOCKEDINT_MTX_LOCK(tsdn, mu) +# define LOCKEDINT_MTX_UNLOCK(tsdn, mu) +# define LOCKEDINT_MTX_PREFORK(tsdn, mu) +# define LOCKEDINT_MTX_POSTFORK_PARENT(tsdn, mu) +# define LOCKEDINT_MTX_POSTFORK_CHILD(tsdn, mu) #endif #ifdef JEMALLOC_ATOMIC_U64 -# define LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx) assert((mtx) == NULL) +# define LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx) assert((mtx) == NULL) #else -# define LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx) \ - malloc_mutex_assert_owner(tsdn, (mtx)) +# define LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx) \ + malloc_mutex_assert_owner(tsdn, (mtx)) #endif static inline uint64_t @@ -65,8 +71,7 @@ locked_read_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p) { } static inline void -locked_inc_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, - uint64_t x) { +locked_inc_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, uint64_t x) { LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx); #ifdef JEMALLOC_ATOMIC_U64 atomic_fetch_add_u64(&p->val, x, ATOMIC_RELAXED); @@ -76,8 +81,7 @@ locked_inc_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, } static inline void -locked_dec_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, - uint64_t x) { +locked_dec_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, uint64_t x) { LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx); #ifdef JEMALLOC_ATOMIC_U64 uint64_t r = atomic_fetch_sub_u64(&p->val, x, ATOMIC_RELAXED); @@ -94,7 +98,7 @@ locked_inc_mod_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, const uint64_t x, const uint64_t modulus) { LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx); uint64_t before, after; - bool overflow; + bool overflow; #ifdef JEMALLOC_ATOMIC_U64 before = atomic_load_u64(&p->val, ATOMIC_RELAXED); do { @@ -104,8 +108,8 @@ locked_inc_mod_u64(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_u64_t *p, if (overflow) { after %= modulus; } - } while (!atomic_compare_exchange_weak_u64(&p->val, &before, after, - ATOMIC_RELAXED, ATOMIC_RELAXED)); + } while (!atomic_compare_exchange_weak_u64( + &p->val, &before, after, ATOMIC_RELAXED, ATOMIC_RELAXED)); #else before = p->val; after = before + x; @@ -162,8 +166,7 @@ locked_read_zu(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_zu_t *p) { } static inline void -locked_inc_zu(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_zu_t *p, - size_t x) { +locked_inc_zu(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_zu_t *p, size_t x) { LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx); #ifdef JEMALLOC_ATOMIC_U64 atomic_fetch_add_zu(&p->val, x, ATOMIC_RELAXED); @@ -174,8 +177,7 @@ locked_inc_zu(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_zu_t *p, } static inline void -locked_dec_zu(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_zu_t *p, - size_t x) { +locked_dec_zu(tsdn_t *tsdn, malloc_mutex_t *mtx, locked_zu_t *p, size_t x) { LOCKEDINT_MTX_ASSERT_INTERNAL(tsdn, mtx); #ifdef JEMALLOC_ATOMIC_U64 size_t r = atomic_fetch_sub_zu(&p->val, x, ATOMIC_RELAXED); diff --git a/dep/jemalloc/include/jemalloc/internal/log.h b/dep/jemalloc/include/jemalloc/internal/log.h index 6420858635448..f213bedad4135 100644 --- a/dep/jemalloc/include/jemalloc/internal/log.h +++ b/dep/jemalloc/include/jemalloc/internal/log.h @@ -1,14 +1,15 @@ #ifndef JEMALLOC_INTERNAL_LOG_H #define JEMALLOC_INTERNAL_LOG_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/malloc_io.h" #include "jemalloc/internal/mutex.h" #ifdef JEMALLOC_LOG -# define JEMALLOC_LOG_VAR_BUFSIZE 1000 +# define JEMALLOC_LOG_VAR_BUFSIZE 1000 #else -# define JEMALLOC_LOG_VAR_BUFSIZE 1 +# define JEMALLOC_LOG_VAR_BUFSIZE 1 #endif #define JEMALLOC_LOG_BUFSIZE 4096 @@ -26,16 +27,16 @@ * log("extent.a", "log msg for extent.a"); // 5 * log("extent.b", "log msg for extent.b"); // 6 * - * And your malloc_conf option is "log=arena.a|extent", then lines 2, 4, 5, and + * And your malloc_conf option is "log:arena.a|extent", then lines 2, 4, 5, and * 6 will print at runtime. You can enable logging from all log vars by - * writing "log=.". + * writing "log:.". * * None of this should be regarded as a stable API for right now. It's intended * as a debugging interface, to let us keep around some of our printf-debugging * statements. */ -extern char log_var_names[JEMALLOC_LOG_VAR_BUFSIZE]; +extern char log_var_names[JEMALLOC_LOG_VAR_BUFSIZE]; extern atomic_b_t log_init_done; typedef struct log_var_s log_var_t; @@ -44,7 +45,7 @@ struct log_var_s { * Lowest bit is "inited", second lowest is "enabled". Putting them in * a single word lets us avoid any fences on weak architectures. */ - atomic_u_t state; + atomic_u_t state; const char *name; }; @@ -52,7 +53,8 @@ struct log_var_s { #define LOG_INITIALIZED_NOT_ENABLED 1U #define LOG_ENABLED 2U -#define LOG_VAR_INIT(name_str) {ATOMIC_INIT(LOG_NOT_INITIALIZED), name_str} +#define LOG_VAR_INIT(name_str) \ + { ATOMIC_INIT(LOG_NOT_INITIALIZED), name_str } /* * Returns the value we should assume for state (which is not necessarily @@ -62,21 +64,21 @@ struct log_var_s { unsigned log_var_update_state(log_var_t *log_var); /* We factor out the metadata management to allow us to test more easily. */ -#define log_do_begin(log_var) \ -if (config_log) { \ - unsigned log_state = atomic_load_u(&(log_var).state, \ - ATOMIC_RELAXED); \ - if (unlikely(log_state == LOG_NOT_INITIALIZED)) { \ - log_state = log_var_update_state(&(log_var)); \ - assert(log_state != LOG_NOT_INITIALIZED); \ - } \ - if (log_state == LOG_ENABLED) { \ - { - /* User code executes here. */ -#define log_do_end(log_var) \ - } \ - } \ -} +#define log_do_begin(log_var) \ + if (config_log) { \ + unsigned log_state = atomic_load_u( \ + &(log_var).state, ATOMIC_RELAXED); \ + if (unlikely(log_state == LOG_NOT_INITIALIZED)) { \ + log_state = log_var_update_state(&(log_var)); \ + assert(log_state != LOG_NOT_INITIALIZED); \ + } \ + if (log_state == LOG_ENABLED) { \ + { +/* User code executes here. */ +#define log_do_end(log_var) \ + } \ + } \ + } /* * MSVC has some preprocessor bugs in its expansion of __VA_ARGS__ during @@ -87,29 +89,29 @@ if (config_log) { \ */ static inline void log_impl_varargs(const char *name, ...) { - char buf[JEMALLOC_LOG_BUFSIZE]; + char buf[JEMALLOC_LOG_BUFSIZE]; va_list ap; va_start(ap, name); const char *format = va_arg(ap, const char *); - size_t dst_offset = 0; + size_t dst_offset = 0; dst_offset += malloc_snprintf(buf, JEMALLOC_LOG_BUFSIZE, "%s: ", name); - dst_offset += malloc_vsnprintf(buf + dst_offset, - JEMALLOC_LOG_BUFSIZE - dst_offset, format, ap); - dst_offset += malloc_snprintf(buf + dst_offset, - JEMALLOC_LOG_BUFSIZE - dst_offset, "\n"); + dst_offset += malloc_vsnprintf( + buf + dst_offset, JEMALLOC_LOG_BUFSIZE - dst_offset, format, ap); + malloc_snprintf( + buf + dst_offset, JEMALLOC_LOG_BUFSIZE - dst_offset, "\n"); va_end(ap); malloc_write(buf); } /* Call as log("log.var.str", "format_string %d", arg_for_format_string); */ -#define LOG(log_var_str, ...) \ -do { \ - static log_var_t log_var = LOG_VAR_INIT(log_var_str); \ - log_do_begin(log_var) \ - log_impl_varargs((log_var).name, __VA_ARGS__); \ - log_do_end(log_var) \ -} while (0) +#define LOG(log_var_str, ...) \ + do { \ + static log_var_t log_var = LOG_VAR_INIT(log_var_str); \ + log_do_begin(log_var) \ + log_impl_varargs((log_var).name, __VA_ARGS__); \ + log_do_end(log_var) \ + } while (0) #endif /* JEMALLOC_INTERNAL_LOG_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/malloc_io.h b/dep/jemalloc/include/jemalloc/internal/malloc_io.h index a375bdae084aa..0f70c3c302395 100644 --- a/dep/jemalloc/include/jemalloc/internal/malloc_io.h +++ b/dep/jemalloc/include/jemalloc/internal/malloc_io.h @@ -1,105 +1,101 @@ #ifndef JEMALLOC_INTERNAL_MALLOC_IO_H #define JEMALLOC_INTERNAL_MALLOC_IO_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_types.h" #ifdef _WIN32 -# ifdef _WIN64 -# define FMT64_PREFIX "ll" -# define FMTPTR_PREFIX "ll" -# else -# define FMT64_PREFIX "ll" -# define FMTPTR_PREFIX "" -# endif -# define FMTd32 "d" -# define FMTu32 "u" -# define FMTx32 "x" -# define FMTd64 FMT64_PREFIX "d" -# define FMTu64 FMT64_PREFIX "u" -# define FMTx64 FMT64_PREFIX "x" -# define FMTdPTR FMTPTR_PREFIX "d" -# define FMTuPTR FMTPTR_PREFIX "u" -# define FMTxPTR FMTPTR_PREFIX "x" +# ifdef _WIN64 +# define FMT64_PREFIX "ll" +# define FMTPTR_PREFIX "ll" +# else +# define FMT64_PREFIX "ll" +# define FMTPTR_PREFIX "" +# endif +# define FMTd32 "d" +# define FMTu32 "u" +# define FMTx32 "x" +# define FMTd64 FMT64_PREFIX "d" +# define FMTu64 FMT64_PREFIX "u" +# define FMTx64 FMT64_PREFIX "x" +# define FMTdPTR FMTPTR_PREFIX "d" +# define FMTuPTR FMTPTR_PREFIX "u" +# define FMTxPTR FMTPTR_PREFIX "x" #else -# include -# define FMTd32 PRId32 -# define FMTu32 PRIu32 -# define FMTx32 PRIx32 -# define FMTd64 PRId64 -# define FMTu64 PRIu64 -# define FMTx64 PRIx64 -# define FMTdPTR PRIdPTR -# define FMTuPTR PRIuPTR -# define FMTxPTR PRIxPTR +# include +# define FMTd32 PRId32 +# define FMTu32 PRIu32 +# define FMTx32 PRIx32 +# define FMTd64 PRId64 +# define FMTu64 PRIu64 +# define FMTx64 PRIx64 +# define FMTdPTR PRIdPTR +# define FMTuPTR PRIuPTR +# define FMTxPTR PRIxPTR #endif /* Size of stack-allocated buffer passed to buferror(). */ -#define BUFERROR_BUF 64 +#define BUFERROR_BUF 64 /* * Size of stack-allocated buffer used by malloc_{,v,vc}printf(). This must be * large enough for all possible uses within jemalloc. */ -#define MALLOC_PRINTF_BUFSIZE 4096 +#define MALLOC_PRINTF_BUFSIZE 4096 write_cb_t wrtmessage; -int buferror(int err, char *buf, size_t buflen); -uintmax_t malloc_strtoumax(const char *restrict nptr, char **restrict endptr, - int base); +int buferror(int err, char *buf, size_t buflen); +uintmax_t malloc_strtoumax( + const char *restrict nptr, char **restrict endptr, int base); void malloc_write(const char *s); /* * malloc_vsnprintf() supports a subset of snprintf(3) that avoids floating * point math. */ -size_t malloc_vsnprintf(char *str, size_t size, const char *format, - va_list ap); +size_t malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap); size_t malloc_snprintf(char *str, size_t size, const char *format, ...) JEMALLOC_FORMAT_PRINTF(3, 4); /* * The caller can set write_cb to null to choose to print with the * je_malloc_message hook. */ -void malloc_vcprintf(write_cb_t *write_cb, void *cbopaque, const char *format, - va_list ap); +void malloc_vcprintf( + write_cb_t *write_cb, void *cbopaque, const char *format, va_list ap); void malloc_cprintf(write_cb_t *write_cb, void *cbopaque, const char *format, ...) JEMALLOC_FORMAT_PRINTF(3, 4); void malloc_printf(const char *format, ...) JEMALLOC_FORMAT_PRINTF(1, 2); -static inline ssize_t -malloc_write_fd(int fd, const void *buf, size_t count) { -#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_write) - /* - * Use syscall(2) rather than write(2) when possible in order to avoid - * the possibility of memory allocation within libc. This is necessary - * on FreeBSD; most operating systems do not have this problem though. - * - * syscall() returns long or int, depending on platform, so capture the - * result in the widest plausible type to avoid compiler warnings. - */ - long result = syscall(SYS_write, fd, buf, count); +ssize_t malloc_write_fd(int fd, const void *buf, size_t count); +ssize_t malloc_read_fd(int fd, void *buf, size_t count); + +static inline int +malloc_open(const char *path, int flags) { +#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_open) + return (int)syscall(SYS_open, path, flags); +#elif defined(JEMALLOC_USE_SYSCALL) && defined(SYS_openat) + return (int)syscall(SYS_openat, AT_FDCWD, path, flags); #else - ssize_t result = (ssize_t)write(fd, buf, -#ifdef _WIN32 - (unsigned int) + return open(path, flags); #endif - count); -#endif - return (ssize_t)result; } -static inline ssize_t -malloc_read_fd(int fd, void *buf, size_t count) { -#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_read) - long result = syscall(SYS_read, fd, buf, count); +static inline int +malloc_close(int fd) { +#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_close) + return (int)syscall(SYS_close, fd); #else - ssize_t result = read(fd, buf, -#ifdef _WIN32 - (unsigned int) + return close(fd); #endif - count); +} + +static inline off_t +malloc_lseek(int fd, off_t offset, int whence) { +#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_lseek) + return (off_t)syscall(SYS_lseek, fd, offset, whence); +#else + return lseek(fd, offset, whence); #endif - return (ssize_t)result; } #endif /* JEMALLOC_INTERNAL_MALLOC_IO_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/mpsc_queue.h b/dep/jemalloc/include/jemalloc/internal/mpsc_queue.h index 316ea9b16eddb..86f4898fd3620 100644 --- a/dep/jemalloc/include/jemalloc/internal/mpsc_queue.h +++ b/dep/jemalloc/include/jemalloc/internal/mpsc_queue.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_MPSC_QUEUE_H #define JEMALLOC_INTERNAL_MPSC_QUEUE_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" /* @@ -25,6 +26,7 @@ * two-stack tricks reverses orders in the lock-free first stack). */ +/* clang-format off */ #define mpsc_queue(a_type) \ struct { \ atomic_p_t tail; \ @@ -130,5 +132,6 @@ a_prefix##pop_batch(a_queue_type *queue, a_list_type *dst) { \ } \ ql_concat(dst, &reversed, a_link); \ } +/* clang-format on */ #endif /* JEMALLOC_INTERNAL_MPSC_QUEUE_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/mutex.h b/dep/jemalloc/include/jemalloc/internal/mutex.h index 63a0b1b3681ee..943c7928ad267 100644 --- a/dep/jemalloc/include/jemalloc/internal/mutex.h +++ b/dep/jemalloc/include/jemalloc/internal/mutex.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_MUTEX_H #define JEMALLOC_INTERNAL_MUTEX_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/mutex_prof.h" #include "jemalloc/internal/tsd.h" @@ -30,26 +31,29 @@ struct malloc_mutex_s { * avoid prefetching a modified cacheline (for the * unlocking thread). */ - mutex_prof_data_t prof_data; + mutex_prof_data_t prof_data; + /* + * Hint flag to avoid exclusive cache line contention + * during spin waiting. Placed along with prof_data + * since it's always modified even with no contention. + * Modified by the lock owner only (after acquired, and + * before release), and may be read by other threads. + */ + atomic_b_t locked; #ifdef _WIN32 -# if _WIN32_WINNT >= 0x0600 - SRWLOCK lock; -# else - CRITICAL_SECTION lock; -# endif +# if _WIN32_WINNT >= 0x0600 + SRWLOCK lock; +# else + CRITICAL_SECTION lock; +# endif #elif (defined(JEMALLOC_OS_UNFAIR_LOCK)) - os_unfair_lock lock; + os_unfair_lock lock; #elif (defined(JEMALLOC_MUTEX_INIT_CB)) - pthread_mutex_t lock; - malloc_mutex_t *postponed_next; + pthread_mutex_t lock; + malloc_mutex_t *postponed_next; #else - pthread_mutex_t lock; + pthread_mutex_t lock; #endif - /* - * Hint flag to avoid exclusive cache line contention - * during spin waiting - */ - atomic_b_t locked; }; /* * We only touch witness when configured w/ debug. However we @@ -58,82 +62,118 @@ struct malloc_mutex_s { * memory cost. */ #if !defined(JEMALLOC_DEBUG) - witness_t witness; - malloc_mutex_lock_order_t lock_order; + witness_t witness; + malloc_mutex_lock_order_t lock_order; #endif }; #if defined(JEMALLOC_DEBUG) - witness_t witness; - malloc_mutex_lock_order_t lock_order; + witness_t witness; + malloc_mutex_lock_order_t lock_order; #endif }; #ifdef _WIN32 -# if _WIN32_WINNT >= 0x0600 -# define MALLOC_MUTEX_LOCK(m) AcquireSRWLockExclusive(&(m)->lock) -# define MALLOC_MUTEX_UNLOCK(m) ReleaseSRWLockExclusive(&(m)->lock) -# define MALLOC_MUTEX_TRYLOCK(m) (!TryAcquireSRWLockExclusive(&(m)->lock)) -# else -# define MALLOC_MUTEX_LOCK(m) EnterCriticalSection(&(m)->lock) -# define MALLOC_MUTEX_UNLOCK(m) LeaveCriticalSection(&(m)->lock) -# define MALLOC_MUTEX_TRYLOCK(m) (!TryEnterCriticalSection(&(m)->lock)) -# endif +# if _WIN32_WINNT >= 0x0600 +# define MALLOC_MUTEX_LOCK(m) AcquireSRWLockExclusive(&(m)->lock) +# define MALLOC_MUTEX_UNLOCK(m) \ + ReleaseSRWLockExclusive(&(m)->lock) +# define MALLOC_MUTEX_TRYLOCK(m) \ + (!TryAcquireSRWLockExclusive(&(m)->lock)) +# else +# define MALLOC_MUTEX_LOCK(m) EnterCriticalSection(&(m)->lock) +# define MALLOC_MUTEX_UNLOCK(m) LeaveCriticalSection(&(m)->lock) +# define MALLOC_MUTEX_TRYLOCK(m) \ + (!TryEnterCriticalSection(&(m)->lock)) +# endif #elif (defined(JEMALLOC_OS_UNFAIR_LOCK)) -# define MALLOC_MUTEX_LOCK(m) os_unfair_lock_lock(&(m)->lock) -# define MALLOC_MUTEX_UNLOCK(m) os_unfair_lock_unlock(&(m)->lock) -# define MALLOC_MUTEX_TRYLOCK(m) (!os_unfair_lock_trylock(&(m)->lock)) +# define MALLOC_MUTEX_LOCK(m) os_unfair_lock_lock(&(m)->lock) +# define MALLOC_MUTEX_UNLOCK(m) os_unfair_lock_unlock(&(m)->lock) +# define MALLOC_MUTEX_TRYLOCK(m) (!os_unfair_lock_trylock(&(m)->lock)) #else -# define MALLOC_MUTEX_LOCK(m) pthread_mutex_lock(&(m)->lock) -# define MALLOC_MUTEX_UNLOCK(m) pthread_mutex_unlock(&(m)->lock) -# define MALLOC_MUTEX_TRYLOCK(m) (pthread_mutex_trylock(&(m)->lock) != 0) +# define MALLOC_MUTEX_LOCK(m) pthread_mutex_lock(&(m)->lock) +# define MALLOC_MUTEX_UNLOCK(m) pthread_mutex_unlock(&(m)->lock) +# define MALLOC_MUTEX_TRYLOCK(m) (pthread_mutex_trylock(&(m)->lock) != 0) #endif -#define LOCK_PROF_DATA_INITIALIZER \ - {NSTIME_ZERO_INITIALIZER, NSTIME_ZERO_INITIALIZER, 0, 0, 0, \ - ATOMIC_INIT(0), 0, NULL, 0} +#define LOCK_PROF_DATA_INITIALIZER \ + { \ + NSTIME_ZERO_INITIALIZER, NSTIME_ZERO_INITIALIZER, 0, 0, 0, \ + ATOMIC_INIT(0), 0, NULL, 0 \ + } #ifdef _WIN32 -# define MALLOC_MUTEX_INITIALIZER +# define MALLOC_MUTEX_INITIALIZER #elif (defined(JEMALLOC_OS_UNFAIR_LOCK)) -# if defined(JEMALLOC_DEBUG) -# define MALLOC_MUTEX_INITIALIZER \ - {{{LOCK_PROF_DATA_INITIALIZER, OS_UNFAIR_LOCK_INIT, ATOMIC_INIT(false)}}, \ - WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT), 0} -# else -# define MALLOC_MUTEX_INITIALIZER \ - {{{LOCK_PROF_DATA_INITIALIZER, OS_UNFAIR_LOCK_INIT, ATOMIC_INIT(false)}}, \ - WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)} -# endif +# if defined(JEMALLOC_DEBUG) +# define MALLOC_MUTEX_INITIALIZER \ + { \ + {{LOCK_PROF_DATA_INITIALIZER, \ + ATOMIC_INIT(false), OS_UNFAIR_LOCK_INIT}}, \ + WITNESS_INITIALIZER( \ + "mutex", WITNESS_RANK_OMIT), \ + 0 \ + } +# else +# define MALLOC_MUTEX_INITIALIZER \ + { \ + {{LOCK_PROF_DATA_INITIALIZER, \ + ATOMIC_INIT(false), OS_UNFAIR_LOCK_INIT}}, \ + WITNESS_INITIALIZER( \ + "mutex", WITNESS_RANK_OMIT) \ + } +# endif #elif (defined(JEMALLOC_MUTEX_INIT_CB)) -# if (defined(JEMALLOC_DEBUG)) -# define MALLOC_MUTEX_INITIALIZER \ - {{{LOCK_PROF_DATA_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, NULL, ATOMIC_INIT(false)}}, \ - WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT), 0} -# else -# define MALLOC_MUTEX_INITIALIZER \ - {{{LOCK_PROF_DATA_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, NULL, ATOMIC_INIT(false)}}, \ - WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)} -# endif +# if (defined(JEMALLOC_DEBUG)) +# define MALLOC_MUTEX_INITIALIZER \ + { \ + {{LOCK_PROF_DATA_INITIALIZER, \ + ATOMIC_INIT(false), \ + PTHREAD_MUTEX_INITIALIZER, NULL}}, \ + WITNESS_INITIALIZER( \ + "mutex", WITNESS_RANK_OMIT), \ + 0 \ + } +# else +# define MALLOC_MUTEX_INITIALIZER \ + { \ + {{LOCK_PROF_DATA_INITIALIZER, \ + ATOMIC_INIT(false), \ + PTHREAD_MUTEX_INITIALIZER, NULL}}, \ + WITNESS_INITIALIZER( \ + "mutex", WITNESS_RANK_OMIT) \ + } +# endif #else -# define MALLOC_MUTEX_TYPE PTHREAD_MUTEX_DEFAULT -# if defined(JEMALLOC_DEBUG) -# define MALLOC_MUTEX_INITIALIZER \ - {{{LOCK_PROF_DATA_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, ATOMIC_INIT(false)}}, \ - WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT), 0} -# else -# define MALLOC_MUTEX_INITIALIZER \ - {{{LOCK_PROF_DATA_INITIALIZER, PTHREAD_MUTEX_INITIALIZER, ATOMIC_INIT(false)}}, \ - WITNESS_INITIALIZER("mutex", WITNESS_RANK_OMIT)} -# endif +# define MALLOC_MUTEX_TYPE PTHREAD_MUTEX_DEFAULT +# if defined(JEMALLOC_DEBUG) +# define MALLOC_MUTEX_INITIALIZER \ + { \ + {{LOCK_PROF_DATA_INITIALIZER, \ + ATOMIC_INIT(false), \ + PTHREAD_MUTEX_INITIALIZER}}, \ + WITNESS_INITIALIZER( \ + "mutex", WITNESS_RANK_OMIT), \ + 0 \ + } +# else +# define MALLOC_MUTEX_INITIALIZER \ + { \ + {{LOCK_PROF_DATA_INITIALIZER, \ + ATOMIC_INIT(false), \ + PTHREAD_MUTEX_INITIALIZER}}, \ + WITNESS_INITIALIZER( \ + "mutex", WITNESS_RANK_OMIT) \ + } +# endif #endif #ifdef JEMALLOC_LAZY_LOCK extern bool isthreaded; #else -# undef isthreaded /* Undo private_namespace.h definition. */ -# define isthreaded true +# undef isthreaded /* Undo private_namespace.h definition. */ +# define isthreaded true #endif bool malloc_mutex_init(malloc_mutex_t *mutex, const char *name, @@ -154,7 +194,12 @@ malloc_mutex_lock_final(malloc_mutex_t *mutex) { static inline bool malloc_mutex_trylock_final(malloc_mutex_t *mutex) { - return MALLOC_MUTEX_TRYLOCK(mutex); + bool failed = MALLOC_MUTEX_TRYLOCK(mutex); + if (!failed) { + atomic_store_b(&mutex->locked, true, ATOMIC_RELAXED); + } + + return failed; } static inline void @@ -169,15 +214,21 @@ mutex_owner_stats_update(tsdn_t *tsdn, malloc_mutex_t *mutex) { } } +static inline bool +malloc_mutex_is_locked(malloc_mutex_t *mutex) { + /* Used for sanity checking only. */ + return atomic_load_b(&mutex->locked, ATOMIC_RELAXED); +} + /* Trylock: return false if the lock is successfully acquired. */ static inline bool malloc_mutex_trylock(tsdn_t *tsdn, malloc_mutex_t *mutex) { witness_assert_not_owner(tsdn_witness_tsdp_get(tsdn), &mutex->witness); if (isthreaded) { if (malloc_mutex_trylock_final(mutex)) { - atomic_store_b(&mutex->locked, true, ATOMIC_RELAXED); return true; } + assert(malloc_mutex_is_locked(mutex)); mutex_owner_stats_update(tsdn, mutex); } witness_lock(tsdn_witness_tsdp_get(tsdn), &mutex->witness); @@ -199,12 +250,12 @@ malloc_mutex_prof_merge(mutex_prof_data_t *sum, mutex_prof_data_t *data) { if (sum->max_n_thds < data->max_n_thds) { sum->max_n_thds = data->max_n_thds; } - uint32_t cur_n_waiting_thds = atomic_load_u32(&sum->n_waiting_thds, - ATOMIC_RELAXED); - uint32_t new_n_waiting_thds = cur_n_waiting_thds + atomic_load_u32( - &data->n_waiting_thds, ATOMIC_RELAXED); - atomic_store_u32(&sum->n_waiting_thds, new_n_waiting_thds, - ATOMIC_RELAXED); + uint32_t cur_n_waiting_thds = atomic_load_u32( + &sum->n_waiting_thds, ATOMIC_RELAXED); + uint32_t new_n_waiting_thds = cur_n_waiting_thds + + atomic_load_u32(&data->n_waiting_thds, ATOMIC_RELAXED); + atomic_store_u32( + &sum->n_waiting_thds, new_n_waiting_thds, ATOMIC_RELAXED); sum->n_owner_switches += data->n_owner_switches; sum->n_lock_ops += data->n_lock_ops; } @@ -215,8 +266,8 @@ malloc_mutex_lock(tsdn_t *tsdn, malloc_mutex_t *mutex) { if (isthreaded) { if (malloc_mutex_trylock_final(mutex)) { malloc_mutex_lock_slow(mutex); - atomic_store_b(&mutex->locked, true, ATOMIC_RELAXED); } + assert(malloc_mutex_is_locked(mutex)); mutex_owner_stats_update(tsdn, mutex); } witness_lock(tsdn_witness_tsdp_get(tsdn), &mutex->witness); @@ -224,9 +275,10 @@ malloc_mutex_lock(tsdn_t *tsdn, malloc_mutex_t *mutex) { static inline void malloc_mutex_unlock(tsdn_t *tsdn, malloc_mutex_t *mutex) { - atomic_store_b(&mutex->locked, false, ATOMIC_RELAXED); witness_unlock(tsdn_witness_tsdp_get(tsdn), &mutex->witness); if (isthreaded) { + assert(malloc_mutex_is_locked(mutex)); + atomic_store_b(&mutex->locked, false, ATOMIC_RELAXED); MALLOC_MUTEX_UNLOCK(mutex); } } @@ -234,6 +286,9 @@ malloc_mutex_unlock(tsdn_t *tsdn, malloc_mutex_t *mutex) { static inline void malloc_mutex_assert_owner(tsdn_t *tsdn, malloc_mutex_t *mutex) { witness_assert_owner(tsdn_witness_tsdp_get(tsdn), &mutex->witness); + if (isthreaded) { + assert(malloc_mutex_is_locked(mutex)); + } } static inline void @@ -255,16 +310,16 @@ malloc_mutex_prof_copy(mutex_prof_data_t *dst, mutex_prof_data_t *source) { /* Copy the prof data from mutex for processing. */ static inline void -malloc_mutex_prof_read(tsdn_t *tsdn, mutex_prof_data_t *data, - malloc_mutex_t *mutex) { +malloc_mutex_prof_read( + tsdn_t *tsdn, mutex_prof_data_t *data, malloc_mutex_t *mutex) { /* Can only read holding the mutex. */ malloc_mutex_assert_owner(tsdn, mutex); malloc_mutex_prof_copy(data, &mutex->prof_data); } static inline void -malloc_mutex_prof_accum(tsdn_t *tsdn, mutex_prof_data_t *data, - malloc_mutex_t *mutex) { +malloc_mutex_prof_accum( + tsdn_t *tsdn, mutex_prof_data_t *data, malloc_mutex_t *mutex) { mutex_prof_data_t *source = &mutex->prof_data; /* Can only read holding the mutex. */ malloc_mutex_assert_owner(tsdn, mutex); @@ -286,8 +341,8 @@ malloc_mutex_prof_accum(tsdn_t *tsdn, mutex_prof_data_t *data, /* Compare the prof data and update to the maximum. */ static inline void -malloc_mutex_prof_max_update(tsdn_t *tsdn, mutex_prof_data_t *data, - malloc_mutex_t *mutex) { +malloc_mutex_prof_max_update( + tsdn_t *tsdn, mutex_prof_data_t *data, malloc_mutex_t *mutex) { mutex_prof_data_t *source = &mutex->prof_data; /* Can only read holding the mutex. */ malloc_mutex_assert_owner(tsdn, mutex); diff --git a/dep/jemalloc/include/jemalloc/internal/mutex_prof.h b/dep/jemalloc/include/jemalloc/internal/mutex_prof.h index 4a526a5aeb86b..572200f353e79 100644 --- a/dep/jemalloc/include/jemalloc/internal/mutex_prof.h +++ b/dep/jemalloc/include/jemalloc/internal/mutex_prof.h @@ -1,80 +1,81 @@ #ifndef JEMALLOC_INTERNAL_MUTEX_PROF_H #define JEMALLOC_INTERNAL_MUTEX_PROF_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" #include "jemalloc/internal/nstime.h" #include "jemalloc/internal/tsd_types.h" -#define MUTEX_PROF_GLOBAL_MUTEXES \ - OP(background_thread) \ - OP(max_per_bg_thd) \ - OP(ctl) \ - OP(prof) \ - OP(prof_thds_data) \ - OP(prof_dump) \ - OP(prof_recent_alloc) \ - OP(prof_recent_dump) \ - OP(prof_stats) +#define MUTEX_PROF_GLOBAL_MUTEXES \ + OP(background_thread) \ + OP(max_per_bg_thd) \ + OP(ctl) \ + OP(prof) \ + OP(prof_thds_data) \ + OP(prof_dump) \ + OP(prof_recent_alloc) \ + OP(prof_recent_dump) \ + OP(prof_stats) typedef enum { #define OP(mtx) global_prof_mutex_##mtx, MUTEX_PROF_GLOBAL_MUTEXES #undef OP - mutex_prof_num_global_mutexes + mutex_prof_num_global_mutexes } mutex_prof_global_ind_t; -#define MUTEX_PROF_ARENA_MUTEXES \ - OP(large) \ - OP(extent_avail) \ - OP(extents_dirty) \ - OP(extents_muzzy) \ - OP(extents_retained) \ - OP(decay_dirty) \ - OP(decay_muzzy) \ - OP(base) \ - OP(tcache_list) \ - OP(hpa_shard) \ - OP(hpa_shard_grow) \ - OP(hpa_sec) +#define MUTEX_PROF_ARENA_MUTEXES \ + OP(large) \ + OP(extent_avail) \ + OP(extents_dirty) \ + OP(extents_muzzy) \ + OP(extents_retained) \ + OP(decay_dirty) \ + OP(decay_muzzy) \ + OP(base) \ + OP(tcache_list) \ + OP(hpa_shard) \ + OP(hpa_shard_grow) \ + OP(hpa_sec) typedef enum { #define OP(mtx) arena_prof_mutex_##mtx, MUTEX_PROF_ARENA_MUTEXES #undef OP - mutex_prof_num_arena_mutexes + mutex_prof_num_arena_mutexes } mutex_prof_arena_ind_t; /* * The forth parameter is a boolean value that is true for derived rate counters * and false for real ones. */ -#define MUTEX_PROF_UINT64_COUNTERS \ - OP(num_ops, uint64_t, "n_lock_ops", false, num_ops) \ - OP(num_ops_ps, uint64_t, "(#/sec)", true, num_ops) \ - OP(num_wait, uint64_t, "n_waiting", false, num_wait) \ - OP(num_wait_ps, uint64_t, "(#/sec)", true, num_wait) \ - OP(num_spin_acq, uint64_t, "n_spin_acq", false, num_spin_acq) \ - OP(num_spin_acq_ps, uint64_t, "(#/sec)", true, num_spin_acq) \ - OP(num_owner_switch, uint64_t, "n_owner_switch", false, num_owner_switch) \ - OP(num_owner_switch_ps, uint64_t, "(#/sec)", true, num_owner_switch) \ - OP(total_wait_time, uint64_t, "total_wait_ns", false, total_wait_time) \ - OP(total_wait_time_ps, uint64_t, "(#/sec)", true, total_wait_time) \ - OP(max_wait_time, uint64_t, "max_wait_ns", false, max_wait_time) +#define MUTEX_PROF_UINT64_COUNTERS \ + OP(num_ops, uint64_t, "n_lock_ops", false, num_ops) \ + OP(num_ops_ps, uint64_t, "(#/sec)", true, num_ops) \ + OP(num_wait, uint64_t, "n_waiting", false, num_wait) \ + OP(num_wait_ps, uint64_t, "(#/sec)", true, num_wait) \ + OP(num_spin_acq, uint64_t, "n_spin_acq", false, num_spin_acq) \ + OP(num_spin_acq_ps, uint64_t, "(#/sec)", true, num_spin_acq) \ + OP(num_owner_switch, uint64_t, "n_owner_switch", false, \ + num_owner_switch) \ + OP(num_owner_switch_ps, uint64_t, "(#/sec)", true, num_owner_switch) \ + OP(total_wait_time, uint64_t, "total_wait_ns", false, total_wait_time) \ + OP(total_wait_time_ps, uint64_t, "(#/sec)", true, total_wait_time) \ + OP(max_wait_time, uint64_t, "max_wait_ns", false, max_wait_time) -#define MUTEX_PROF_UINT32_COUNTERS \ - OP(max_num_thds, uint32_t, "max_n_thds", false, max_num_thds) +#define MUTEX_PROF_UINT32_COUNTERS \ + OP(max_num_thds, uint32_t, "max_n_thds", false, max_num_thds) -#define MUTEX_PROF_COUNTERS \ - MUTEX_PROF_UINT64_COUNTERS \ - MUTEX_PROF_UINT32_COUNTERS +#define MUTEX_PROF_COUNTERS \ + MUTEX_PROF_UINT64_COUNTERS \ + MUTEX_PROF_UINT32_COUNTERS #define OP(counter, type, human, derived, base_counter) mutex_counter_##counter, -#define COUNTER_ENUM(counter_list, t) \ - typedef enum { \ - counter_list \ - mutex_prof_num_##t##_counters \ - } mutex_prof_##t##_counter_ind_t; +#define COUNTER_ENUM(counter_list, t) \ + typedef enum { \ + counter_list mutex_prof_num_##t##_counters \ + } mutex_prof_##t##_counter_ind_t; COUNTER_ENUM(MUTEX_PROF_UINT64_COUNTERS, uint64_t) COUNTER_ENUM(MUTEX_PROF_UINT32_COUNTERS, uint32_t) @@ -88,17 +89,17 @@ typedef struct { * contention. We update them once we have the lock. */ /* Total time (in nano seconds) spent waiting on this mutex. */ - nstime_t tot_wait_time; + nstime_t tot_wait_time; /* Max time (in nano seconds) spent on a single lock operation. */ - nstime_t max_wait_time; + nstime_t max_wait_time; /* # of times have to wait for this mutex (after spinning). */ - uint64_t n_wait_times; + uint64_t n_wait_times; /* # of times acquired the mutex through local spinning. */ - uint64_t n_spin_acquired; + uint64_t n_spin_acquired; /* Max # of threads waiting for the mutex at the same time. */ - uint32_t max_n_thds; + uint32_t max_n_thds; /* Current # of threads waiting on the lock. Atomic synced. */ - atomic_u32_t n_waiting_thds; + atomic_u32_t n_waiting_thds; /* * Data touched on the fast path. These are modified right after we @@ -107,11 +108,11 @@ typedef struct { * cacheline. */ /* # of times the mutex holder is different than the previous one. */ - uint64_t n_owner_switches; + uint64_t n_owner_switches; /* Previous mutex holder, to facilitate n_owner_switches. */ - tsdn_t *prev_owner; + tsdn_t *prev_owner; /* # of lock() operations in total. */ - uint64_t n_lock_ops; + uint64_t n_lock_ops; } mutex_prof_data_t; #endif /* JEMALLOC_INTERNAL_MUTEX_PROF_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/nstime.h b/dep/jemalloc/include/jemalloc/internal/nstime.h index 486e5ccacc73e..0848b9d0fa378 100644 --- a/dep/jemalloc/include/jemalloc/internal/nstime.h +++ b/dep/jemalloc/include/jemalloc/internal/nstime.h @@ -1,14 +1,19 @@ #ifndef JEMALLOC_INTERNAL_NSTIME_H #define JEMALLOC_INTERNAL_NSTIME_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" + /* Maximum supported number of seconds (~584 years). */ #define NSTIME_SEC_MAX KQU(18446744072) #define NSTIME_MAGIC ((uint32_t)0xb8a9ce37) #ifdef JEMALLOC_DEBUG -# define NSTIME_ZERO_INITIALIZER {0, NSTIME_MAGIC} +# define NSTIME_ZERO_INITIALIZER \ + { 0, NSTIME_MAGIC } #else -# define NSTIME_ZERO_INITIALIZER {0} +# define NSTIME_ZERO_INITIALIZER \ + { 0 } #endif typedef struct { @@ -20,43 +25,43 @@ typedef struct { static const nstime_t nstime_zero = NSTIME_ZERO_INITIALIZER; -void nstime_init(nstime_t *time, uint64_t ns); -void nstime_init2(nstime_t *time, uint64_t sec, uint64_t nsec); +void nstime_init(nstime_t *time, uint64_t ns); +void nstime_init2(nstime_t *time, uint64_t sec, uint64_t nsec); uint64_t nstime_ns(const nstime_t *time); +uint64_t nstime_ms(const nstime_t *time); uint64_t nstime_sec(const nstime_t *time); -uint64_t nstime_msec(const nstime_t *time); uint64_t nstime_nsec(const nstime_t *time); -void nstime_copy(nstime_t *time, const nstime_t *source); -int nstime_compare(const nstime_t *a, const nstime_t *b); -void nstime_add(nstime_t *time, const nstime_t *addend); -void nstime_iadd(nstime_t *time, uint64_t addend); -void nstime_subtract(nstime_t *time, const nstime_t *subtrahend); -void nstime_isubtract(nstime_t *time, uint64_t subtrahend); -void nstime_imultiply(nstime_t *time, uint64_t multiplier); -void nstime_idivide(nstime_t *time, uint64_t divisor); +void nstime_copy(nstime_t *time, const nstime_t *source); +int nstime_compare(const nstime_t *a, const nstime_t *b); +void nstime_add(nstime_t *time, const nstime_t *addend); +void nstime_iadd(nstime_t *time, uint64_t addend); +void nstime_subtract(nstime_t *time, const nstime_t *subtrahend); +void nstime_isubtract(nstime_t *time, uint64_t subtrahend); +void nstime_imultiply(nstime_t *time, uint64_t multiplier); +void nstime_idivide(nstime_t *time, uint64_t divisor); uint64_t nstime_divide(const nstime_t *time, const nstime_t *divisor); +uint64_t nstime_ns_between(const nstime_t *earlier, const nstime_t *later); +uint64_t nstime_ms_between(const nstime_t *earlier, const nstime_t *later); uint64_t nstime_ns_since(const nstime_t *past); +uint64_t nstime_ms_since(const nstime_t *past); -typedef bool (nstime_monotonic_t)(void); +typedef bool(nstime_monotonic_t)(void); extern nstime_monotonic_t *JET_MUTABLE nstime_monotonic; -typedef void (nstime_update_t)(nstime_t *); +typedef void(nstime_update_t)(nstime_t *); extern nstime_update_t *JET_MUTABLE nstime_update; -typedef void (nstime_prof_update_t)(nstime_t *); +typedef void(nstime_prof_update_t)(nstime_t *); extern nstime_prof_update_t *JET_MUTABLE nstime_prof_update; void nstime_init_update(nstime_t *time); void nstime_prof_init_update(nstime_t *time); -enum prof_time_res_e { - prof_time_res_default = 0, - prof_time_res_high = 1 -}; +enum prof_time_res_e { prof_time_res_default = 0, prof_time_res_high = 1 }; typedef enum prof_time_res_e prof_time_res_t; -extern prof_time_res_t opt_prof_time_res; -extern const char *prof_time_res_mode_names[]; +extern prof_time_res_t opt_prof_time_res; +extern const char *const prof_time_res_mode_names[]; JEMALLOC_ALWAYS_INLINE void nstime_init_zero(nstime_t *time) { @@ -64,7 +69,7 @@ nstime_init_zero(nstime_t *time) { } JEMALLOC_ALWAYS_INLINE bool -nstime_equals_zero(nstime_t *time) { +nstime_equals_zero(const nstime_t *time) { int diff = nstime_compare(time, &nstime_zero); assert(diff >= 0); return diff == 0; diff --git a/dep/jemalloc/include/jemalloc/internal/pa.h b/dep/jemalloc/include/jemalloc/internal/pa.h index 4748a05b691e1..f3910ad833a6c 100644 --- a/dep/jemalloc/include/jemalloc/internal/pa.h +++ b/dep/jemalloc/include/jemalloc/internal/pa.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_PA_H #define JEMALLOC_INTERNAL_PA_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/base.h" #include "jemalloc/internal/decay.h" #include "jemalloc/internal/ecache.h" @@ -95,12 +96,6 @@ struct pa_shard_s { /* Allocates from a PAC. */ pac_t pac; - /* - * We place a small extent cache in front of the HPA, since we intend - * these configurations to use many fewer arenas, and therefore have a - * higher risk of hot locks. - */ - sec_t hpa_sec; hpa_shard_t hpa_shard; /* The source of edata_t objects. */ @@ -108,7 +103,7 @@ struct pa_shard_s { unsigned ind; - malloc_mutex_t *stats_mtx; + malloc_mutex_t *stats_mtx; pa_shard_stats_t *stats; /* The emap this shard is tied to. */ @@ -120,8 +115,8 @@ struct pa_shard_s { static inline bool pa_shard_dont_decay_muzzy(pa_shard_t *shard) { - return ecache_npages_get(&shard->pac.ecache_muzzy) == 0 && - pac_decay_ms_get(&shard->pac, extent_state_muzzy) <= 0; + return ecache_npages_get(&shard->pac.ecache_muzzy) == 0 + && pac_decay_ms_get(&shard->pac, extent_state_muzzy) <= 0; } static inline ehooks_t * @@ -131,7 +126,7 @@ pa_shard_ehooks_get(pa_shard_t *shard) { /* Returns true on error. */ bool pa_central_init(pa_central_t *central, base_t *base, bool hpa, - hpa_hooks_t *hpa_hooks); + const hpa_hooks_t *hpa_hooks); /* Returns true on error. */ bool pa_shard_init(tsdn_t *tsdn, pa_shard_t *shard, pa_central_t *central, @@ -165,6 +160,9 @@ void pa_shard_reset(tsdn_t *tsdn, pa_shard_t *shard); */ void pa_shard_destroy(tsdn_t *tsdn, pa_shard_t *shard); +/* Flush any caches used by shard */ +void pa_shard_flush(tsdn_t *tsdn, pa_shard_t *shard); + /* Gets an edata for the given allocation. */ edata_t *pa_alloc(tsdn_t *tsdn, pa_shard_t *shard, size_t size, size_t alignment, bool slab, szind_t szind, bool zero, bool guarded, @@ -185,10 +183,10 @@ bool pa_shrink(tsdn_t *tsdn, pa_shard_t *shard, edata_t *edata, size_t old_size, * (We could make generated_dirty the return value of course, but this is more * consistent with the shrink pathway and our error codes here). */ -void pa_dalloc(tsdn_t *tsdn, pa_shard_t *shard, edata_t *edata, - bool *deferred_work_generated); -bool pa_decay_ms_set(tsdn_t *tsdn, pa_shard_t *shard, extent_state_t state, - ssize_t decay_ms, pac_purge_eagerness_t eagerness); +void pa_dalloc(tsdn_t *tsdn, pa_shard_t *shard, edata_t *edata, + bool *deferred_work_generated); +bool pa_decay_ms_set(tsdn_t *tsdn, pa_shard_t *shard, extent_state_t state, + ssize_t decay_ms, pac_purge_eagerness_t eagerness); ssize_t pa_decay_ms_get(pa_shard_t *shard, extent_state_t state); /* @@ -198,10 +196,10 @@ ssize_t pa_decay_ms_get(pa_shard_t *shard, extent_state_t state); * though, the arena, background thread, and PAC modules are tightly interwoven * in a way that's tricky to extricate, so we only do the HPA-specific parts. */ -void pa_shard_set_deferral_allowed(tsdn_t *tsdn, pa_shard_t *shard, - bool deferral_allowed); -void pa_shard_do_deferred_work(tsdn_t *tsdn, pa_shard_t *shard); -void pa_shard_try_deferred_work(tsdn_t *tsdn, pa_shard_t *shard); +void pa_shard_set_deferral_allowed( + tsdn_t *tsdn, pa_shard_t *shard, bool deferral_allowed); +void pa_shard_do_deferred_work(tsdn_t *tsdn, pa_shard_t *shard); +void pa_shard_try_deferred_work(tsdn_t *tsdn, pa_shard_t *shard); uint64_t pa_shard_time_until_deferred_work(tsdn_t *tsdn, pa_shard_t *shard); /******************************************************************************/ @@ -223,13 +221,16 @@ void pa_shard_prefork5(tsdn_t *tsdn, pa_shard_t *shard); void pa_shard_postfork_parent(tsdn_t *tsdn, pa_shard_t *shard); void pa_shard_postfork_child(tsdn_t *tsdn, pa_shard_t *shard); -void pa_shard_basic_stats_merge(pa_shard_t *shard, size_t *nactive, - size_t *ndirty, size_t *nmuzzy); +size_t pa_shard_nactive(pa_shard_t *shard); +size_t pa_shard_ndirty(pa_shard_t *shard); +size_t pa_shard_nmuzzy(pa_shard_t *shard); + +void pa_shard_basic_stats_merge( + pa_shard_t *shard, size_t *nactive, size_t *ndirty, size_t *nmuzzy); void pa_shard_stats_merge(tsdn_t *tsdn, pa_shard_t *shard, pa_shard_stats_t *pa_shard_stats_out, pac_estats_t *estats_out, - hpa_shard_stats_t *hpa_stats_out, sec_stats_t *sec_stats_out, - size_t *resident); + hpa_shard_stats_t *hpa_stats_out, size_t *resident); /* * Reads the PA-owned mutex stats into the output stats array, at the diff --git a/dep/jemalloc/include/jemalloc/internal/pac.h b/dep/jemalloc/include/jemalloc/internal/pac.h index 01c4e6afabb09..a19c8b353e204 100644 --- a/dep/jemalloc/include/jemalloc/internal/pac.h +++ b/dep/jemalloc/include/jemalloc/internal/pac.h @@ -1,11 +1,15 @@ #ifndef JEMALLOC_INTERNAL_PAC_H #define JEMALLOC_INTERNAL_PAC_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/decay.h" +#include "jemalloc/internal/ecache.h" +#include "jemalloc/internal/edata_cache.h" #include "jemalloc/internal/exp_grow.h" +#include "jemalloc/internal/lockedint.h" #include "jemalloc/internal/pai.h" #include "san_bump.h" - /* * Page allocator classic; an implementation of the PAI interface that: * - Can be used for arenas with custom extent hooks. @@ -91,12 +95,12 @@ struct pac_s { ecache_t ecache_muzzy; ecache_t ecache_retained; - base_t *base; - emap_t *emap; + base_t *base; + emap_t *emap; edata_cache_t *edata_cache; /* The grow info for the retained ecache. */ - exp_grow_t exp_grow; + exp_grow_t exp_grow; malloc_mutex_t grow_mtx; /* Special allocator for guarded frequently reused extents. */ @@ -115,12 +119,37 @@ struct pac_s { decay_t decay_muzzy; /* muzzy --> retained */ malloc_mutex_t *stats_mtx; - pac_stats_t *stats; + pac_stats_t *stats; /* Extent serial number generator state. */ atomic_zu_t extent_sn_next; }; +typedef struct pac_thp_s pac_thp_t; +struct pac_thp_s { + /* + * opt_thp controls THP for user requested allocations. Settings + * "always", "never" and "default" are available if THP is supported + * by the OS and the default extent hooks are used: + * - "always" and "never" are covered by pages_set_thp_state() in + * ehooks_default_alloc_impl(). + * - "default" makes no change for all the other auto arenas except + * the huge arena. For the huge arena, we might also look at + * opt_metadata_thp to decide whether to use THP or not. + * This is a temporary remedy before HPA is fully supported. + */ + bool thp_madvise; + /* Below fields are protected by the lock. */ + malloc_mutex_t lock; + bool auto_thp_switched; + atomic_u_t n_thp_lazy; + /* + * List that tracks HUGEPAGE aligned regions that're lazily hugified + * in auto thp mode. + */ + edata_list_active_t thp_lazy_list; +}; + bool pac_init(tsdn_t *tsdn, pac_t *pac, base_t *base, emap_t *emap, edata_cache_t *edata_cache, nstime_t *cur_time, size_t oversize_threshold, ssize_t dirty_decay_ms, ssize_t muzzy_decay_ms, pac_stats_t *pac_stats, @@ -166,11 +195,11 @@ bool pac_maybe_decay_purge(tsdn_t *tsdn, pac_t *pac, decay_t *decay, * * Returns true on error (if the new limit is not valid). */ -bool pac_retain_grow_limit_get_set(tsdn_t *tsdn, pac_t *pac, size_t *old_limit, - size_t *new_limit); +bool pac_retain_grow_limit_get_set( + tsdn_t *tsdn, pac_t *pac, size_t *old_limit, size_t *new_limit); -bool pac_decay_ms_set(tsdn_t *tsdn, pac_t *pac, extent_state_t state, - ssize_t decay_ms, pac_purge_eagerness_t eagerness); +bool pac_decay_ms_set(tsdn_t *tsdn, pac_t *pac, extent_state_t state, + ssize_t decay_ms, pac_purge_eagerness_t eagerness); ssize_t pac_decay_ms_get(pac_t *pac, extent_state_t state); void pac_reset(tsdn_t *tsdn, pac_t *pac); diff --git a/dep/jemalloc/include/jemalloc/internal/pages.h b/dep/jemalloc/include/jemalloc/internal/pages.h index ad1f606a8a059..a4282c9bbd6c0 100644 --- a/dep/jemalloc/include/jemalloc/internal/pages.h +++ b/dep/jemalloc/include/jemalloc/internal/pages.h @@ -1,28 +1,39 @@ #ifndef JEMALLOC_INTERNAL_PAGES_EXTERNS_H #define JEMALLOC_INTERNAL_PAGES_EXTERNS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_types.h" + +/* Actual operating system page size, detected during bootstrap, <= PAGE. */ +extern size_t os_page; + /* Page size. LG_PAGE is determined by the configure script. */ #ifdef PAGE_MASK -# undef PAGE_MASK +# undef PAGE_MASK #endif -#define PAGE ((size_t)(1U << LG_PAGE)) -#define PAGE_MASK ((size_t)(PAGE - 1)) +#define PAGE ((size_t)(1U << LG_PAGE)) +#define PAGE_MASK ((size_t)(PAGE - 1)) /* Return the page base address for the page containing address a. */ -#define PAGE_ADDR2BASE(a) \ - ((void *)((uintptr_t)(a) & ~PAGE_MASK)) +#define PAGE_ADDR2BASE(a) ALIGNMENT_ADDR2BASE(a, PAGE) /* Return the smallest pagesize multiple that is >= s. */ -#define PAGE_CEILING(s) \ - (((s) + PAGE_MASK) & ~PAGE_MASK) +#define PAGE_CEILING(s) (((s) + PAGE_MASK) & ~PAGE_MASK) /* Return the largest pagesize multiple that is <=s. */ -#define PAGE_FLOOR(s) \ - ((s) & ~PAGE_MASK) +#define PAGE_FLOOR(s) ((s) & ~PAGE_MASK) /* Huge page size. LG_HUGEPAGE is determined by the configure script. */ -#define HUGEPAGE ((size_t)(1U << LG_HUGEPAGE)) -#define HUGEPAGE_MASK ((size_t)(HUGEPAGE - 1)) +#define HUGEPAGE ((size_t)(1U << LG_HUGEPAGE)) +#define HUGEPAGE_MASK ((size_t)(HUGEPAGE - 1)) + +/* + * Used to validate that the hugepage size is not unexpectedly high. The huge + * page features (HPA, metadata_thp) are primarily designed with a 2M THP size + * in mind. Much larger sizes are not tested and likely to cause issues such as + * bad fragmentation or simply broken. + */ +#define HUGEPAGE_MAX_EXPECTED_SIZE ((size_t)(16U << 20)) #if LG_HUGEPAGE != 0 -# define HUGEPAGE_PAGES (HUGEPAGE / PAGE) +# define HUGEPAGE_PAGES (HUGEPAGE / PAGE) #else /* * It's convenient to define arrays (or bitmaps) of HUGEPAGE_PAGES lengths. If @@ -31,19 +42,17 @@ * that this value is at least 1. (We won't ever run in this degraded state; * hpa_supported() returns false in this case. */ -# define HUGEPAGE_PAGES 1 +# define HUGEPAGE_PAGES 1 #endif /* Return the huge page base address for the huge page containing address a. */ -#define HUGEPAGE_ADDR2BASE(a) \ - ((void *)((uintptr_t)(a) & ~HUGEPAGE_MASK)) +#define HUGEPAGE_ADDR2BASE(a) ALIGNMENT_ADDR2BASE(a, HUGEPAGE) /* Return the smallest pagesize multiple that is >= s. */ -#define HUGEPAGE_CEILING(s) \ - (((s) + HUGEPAGE_MASK) & ~HUGEPAGE_MASK) +#define HUGEPAGE_CEILING(s) (((s) + HUGEPAGE_MASK) & ~HUGEPAGE_MASK) /* PAGES_CAN_PURGE_LAZY is defined if lazy purging is supported. */ #if defined(_WIN32) || defined(JEMALLOC_PURGE_MADVISE_FREE) -# define PAGES_CAN_PURGE_LAZY +# define PAGES_CAN_PURGE_LAZY #endif /* * PAGES_CAN_PURGE_FORCED is defined if forced purging is supported. @@ -54,10 +63,11 @@ * next step after purging on Windows anyway, there's no point in adding such * complexity. */ -#if !defined(_WIN32) && ((defined(JEMALLOC_PURGE_MADVISE_DONTNEED) && \ - defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS)) || \ - defined(JEMALLOC_MAPS_COALESCE)) -# define PAGES_CAN_PURGE_FORCED +#if !defined(_WIN32) \ + && ((defined(JEMALLOC_PURGE_MADVISE_DONTNEED) \ + && defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS)) \ + || defined(JEMALLOC_MAPS_COALESCE)) +# define PAGES_CAN_PURGE_FORCED #endif static const bool pages_can_purge_lazy = @@ -76,7 +86,7 @@ static const bool pages_can_purge_forced = ; #if defined(JEMALLOC_HAVE_MADVISE_HUGE) || defined(JEMALLOC_HAVE_MEMCNTL) -# define PAGES_CAN_HUGIFY +# define PAGES_CAN_HUGIFY #endif static const bool pages_can_hugify = @@ -87,32 +97,46 @@ static const bool pages_can_hugify = #endif ; +/* + * thp_mode_t are values for opt.thp, while system_thp_mode_t is for kernel thp + * settings, i.e., init_system_thp_mode. + */ typedef enum { - thp_mode_default = 0, /* Do not change hugepage settings. */ - thp_mode_always = 1, /* Always set MADV_HUGEPAGE. */ - thp_mode_never = 2, /* Always set MADV_NOHUGEPAGE. */ + thp_mode_do_nothing = 0, /* Respect kernel thp settings. */ + thp_mode_always = 1, /* Always set MADV_HUGEPAGE. */ + thp_mode_never = 2, /* Always set MADV_NOHUGEPAGE. */ - thp_mode_names_limit = 3, /* Used for option processing. */ - thp_mode_not_supported = 3 /* No THP support detected. */ + thp_mode_names_limit = 3, /* Used for option processing. */ + thp_mode_not_supported = 3 /* No THP support detected. */ } thp_mode_t; -#define THP_MODE_DEFAULT thp_mode_default -extern thp_mode_t opt_thp; -extern thp_mode_t init_system_thp_mode; /* Initial system wide state. */ -extern const char *thp_mode_names[]; +typedef enum { + system_thp_mode_madvise = 0, /* Kernel THP mode: madvise */ + system_thp_mode_always = 1, /* Kernel THP mode: always */ + system_thp_mode_never = 2, /* Kernel THP mode: never */ + system_thp_mode_not_supported = 3 /* No THP support detected. */ +} system_thp_mode_t; + +#define THP_MODE_DEFAULT thp_mode_do_nothing +extern thp_mode_t opt_thp; +extern system_thp_mode_t init_system_thp_mode; /* Initial system wide state. */ +extern const char *const thp_mode_names[]; +extern const char *const system_thp_mode_names[]; void *pages_map(void *addr, size_t size, size_t alignment, bool *commit); -void pages_unmap(void *addr, size_t size); -bool pages_commit(void *addr, size_t size); -bool pages_decommit(void *addr, size_t size); -bool pages_purge_lazy(void *addr, size_t size); -bool pages_purge_forced(void *addr, size_t size); +void pages_unmap(void *addr, size_t size); +bool pages_commit(void *addr, size_t size); +bool pages_decommit(void *addr, size_t size); +bool pages_purge_lazy(void *addr, size_t size); +bool pages_purge_forced(void *addr, size_t size); +bool pages_purge_process_madvise(void *vec, size_t ven_len, size_t total_bytes); bool pages_huge(void *addr, size_t size); bool pages_nohuge(void *addr, size_t size); +bool pages_collapse(void *addr, size_t size); bool pages_dontdump(void *addr, size_t size); bool pages_dodump(void *addr, size_t size); bool pages_boot(void); -void pages_set_thp_state (void *ptr, size_t size); +void pages_set_thp_state(void *ptr, size_t size); void pages_mark_guards(void *head, void *tail); void pages_unmark_guards(void *head, void *tail); diff --git a/dep/jemalloc/include/jemalloc/internal/pai.h b/dep/jemalloc/include/jemalloc/internal/pai.h index d978cd7d25ec8..9b4c257b2d772 100644 --- a/dep/jemalloc/include/jemalloc/internal/pai.h +++ b/dep/jemalloc/include/jemalloc/internal/pai.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_PAI_H #define JEMALLOC_INTERNAL_PAI_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/edata.h" +#include "jemalloc/internal/tsd_types.h" + /* An interface for page allocation. */ typedef struct pai_s pai_t; @@ -9,15 +13,6 @@ struct pai_s { edata_t *(*alloc)(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, bool guarded, bool frequent_reuse, bool *deferred_work_generated); - /* - * Returns the number of extents added to the list (which may be fewer - * than requested, in case of OOM). The list should already be - * initialized. The only alignment guarantee is page-alignment, and - * the results are not necessarily zeroed. - */ - size_t (*alloc_batch)(tsdn_t *tsdn, pai_t *self, size_t size, - size_t nallocs, edata_list_active_t *results, - bool *deferred_work_generated); bool (*expand)(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated); @@ -25,9 +20,6 @@ struct pai_s { size_t old_size, size_t new_size, bool *deferred_work_generated); void (*dalloc)(tsdn_t *tsdn, pai_t *self, edata_t *edata, bool *deferred_work_generated); - /* This function empties out list as a side-effect of being called. */ - void (*dalloc_batch)(tsdn_t *tsdn, pai_t *self, - edata_list_active_t *list, bool *deferred_work_generated); uint64_t (*time_until_deferred_work)(tsdn_t *tsdn, pai_t *self); }; @@ -37,20 +29,12 @@ struct pai_s { */ static inline edata_t * -pai_alloc(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, - bool zero, bool guarded, bool frequent_reuse, - bool *deferred_work_generated) { +pai_alloc(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, + bool guarded, bool frequent_reuse, bool *deferred_work_generated) { return self->alloc(tsdn, self, size, alignment, zero, guarded, frequent_reuse, deferred_work_generated); } -static inline size_t -pai_alloc_batch(tsdn_t *tsdn, pai_t *self, size_t size, size_t nallocs, - edata_list_active_t *results, bool *deferred_work_generated) { - return self->alloc_batch(tsdn, self, size, nallocs, results, - deferred_work_generated); -} - static inline bool pai_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated) { @@ -61,35 +45,19 @@ pai_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, static inline bool pai_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, size_t new_size, bool *deferred_work_generated) { - return self->shrink(tsdn, self, edata, old_size, new_size, - deferred_work_generated); + return self->shrink( + tsdn, self, edata, old_size, new_size, deferred_work_generated); } static inline void -pai_dalloc(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated) { +pai_dalloc( + tsdn_t *tsdn, pai_t *self, edata_t *edata, bool *deferred_work_generated) { self->dalloc(tsdn, self, edata, deferred_work_generated); } -static inline void -pai_dalloc_batch(tsdn_t *tsdn, pai_t *self, edata_list_active_t *list, - bool *deferred_work_generated) { - self->dalloc_batch(tsdn, self, list, deferred_work_generated); -} - static inline uint64_t pai_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { return self->time_until_deferred_work(tsdn, self); } -/* - * An implementation of batch allocation that simply calls alloc once for - * each item in the list. - */ -size_t pai_alloc_batch_default(tsdn_t *tsdn, pai_t *self, size_t size, - size_t nallocs, edata_list_active_t *results, bool *deferred_work_generated); -/* Ditto, for dalloc. */ -void pai_dalloc_batch_default(tsdn_t *tsdn, pai_t *self, - edata_list_active_t *list, bool *deferred_work_generated); - #endif /* JEMALLOC_INTERNAL_PAI_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/peak.h b/dep/jemalloc/include/jemalloc/internal/peak.h index 59da3e41b6b78..599f1a026767b 100644 --- a/dep/jemalloc/include/jemalloc/internal/peak.h +++ b/dep/jemalloc/include/jemalloc/internal/peak.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_PEAK_H #define JEMALLOC_INTERNAL_PEAK_H +#include "jemalloc/internal/jemalloc_preamble.h" + typedef struct peak_s peak_t; struct peak_s { /* The highest recorded peak value, after adjustment (see below). */ @@ -12,7 +14,8 @@ struct peak_s { uint64_t adjustment; }; -#define PEAK_INITIALIZER {0, 0} +#define PEAK_INITIALIZER \ + { 0, 0 } static inline uint64_t peak_max(peak_t *peak) { diff --git a/dep/jemalloc/include/jemalloc/internal/peak_event.h b/dep/jemalloc/include/jemalloc/internal/peak_event.h index b808ce0432993..0d1f162714c45 100644 --- a/dep/jemalloc/include/jemalloc/internal/peak_event.h +++ b/dep/jemalloc/include/jemalloc/internal/peak_event.h @@ -1,6 +1,17 @@ #ifndef JEMALLOC_INTERNAL_PEAK_EVENT_H #define JEMALLOC_INTERNAL_PEAK_EVENT_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/tsd_types.h" + +/* + * Update every 64K by default. We're not exposing this as a configuration + * option for now; we don't want to bind ourselves too tightly to any particular + * performance requirements for small values, or guarantee that we'll even be + * able to provide fine-grained accuracy. + */ +#define PEAK_EVENT_WAIT (64 * 1024) + /* * While peak.h contains the simple helper struct that tracks state, this * contains the allocator tie-ins (and knows about tsd, the event module, etc.). @@ -9,16 +20,9 @@ /* Update the peak with current tsd state. */ void peak_event_update(tsd_t *tsd); /* Set current state to zero. */ -void peak_event_zero(tsd_t *tsd); +void peak_event_zero(tsd_t *tsd); uint64_t peak_event_max(tsd_t *tsd); -/* Manual hooks. */ -/* The activity-triggered hooks. */ -uint64_t peak_alloc_new_event_wait(tsd_t *tsd); -uint64_t peak_alloc_postponed_event_wait(tsd_t *tsd); -void peak_alloc_event_handler(tsd_t *tsd, uint64_t elapsed); -uint64_t peak_dalloc_new_event_wait(tsd_t *tsd); -uint64_t peak_dalloc_postponed_event_wait(tsd_t *tsd); -void peak_dalloc_event_handler(tsd_t *tsd, uint64_t elapsed); +extern te_base_cb_t peak_te_handler; #endif /* JEMALLOC_INTERNAL_PEAK_EVENT_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/ph.h b/dep/jemalloc/include/jemalloc/internal/ph.h index 5f091c5fbb0c1..803d2cbd0c8d2 100644 --- a/dep/jemalloc/include/jemalloc/internal/ph.h +++ b/dep/jemalloc/include/jemalloc/internal/ph.h @@ -1,6 +1,10 @@ #ifndef JEMALLOC_INTERNAL_PH_H #define JEMALLOC_INTERNAL_PH_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" +#include "jemalloc/internal/bit_util.h" + /* * A Pairing Heap implementation. * @@ -71,9 +75,19 @@ struct ph_s { size_t auxcount; }; +typedef struct ph_enumerate_vars_s ph_enumerate_vars_t; +struct ph_enumerate_vars_s { + uint16_t front; + uint16_t rear; + uint16_t queue_size; + uint16_t visited_num; + uint16_t max_visit_num; + uint16_t max_queue_size; +}; + JEMALLOC_ALWAYS_INLINE phn_link_t * phn_link_get(void *phn, size_t offset) { - return (phn_link_t *)(((uintptr_t)phn) + offset); + return (phn_link_t *)(((char *)phn) + offset); } JEMALLOC_ALWAYS_INLINE void @@ -115,8 +129,7 @@ phn_prev_set(void *phn, void *prev, size_t offset) { } JEMALLOC_ALWAYS_INLINE void -phn_merge_ordered(void *phn0, void *phn1, size_t offset, - ph_cmp_t cmp) { +phn_merge_ordered(void *phn0, void *phn1, size_t offset, ph_cmp_t cmp) { void *phn0child; assert(phn0 != NULL); @@ -127,6 +140,7 @@ phn_merge_ordered(void *phn0, void *phn1, size_t offset, phn0child = phn_lchild_get(phn0, offset); phn_next_set(phn1, phn0child, offset); if (phn0child != NULL) { + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ phn_prev_set(phn0child, phn1, offset); } phn_lchild_set(phn0, phn1, offset); @@ -143,6 +157,7 @@ phn_merge(void *phn0, void *phn1, size_t offset, ph_cmp_t cmp) { phn_merge_ordered(phn0, phn1, offset, cmp); result = phn0; } else { + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ phn_merge_ordered(phn1, phn0, offset, cmp); result = phn1; } @@ -156,6 +171,10 @@ phn_merge_siblings(void *phn, size_t offset, ph_cmp_t cmp) { void *phn0 = phn; void *phn1 = phn_next_get(phn0, offset); + if (phn1 == NULL) { + return phn0; + } + /* * Multipass merge, wherein the first two elements of a FIFO * are repeatedly merged, and each result is appended to the @@ -164,59 +183,61 @@ phn_merge_siblings(void *phn, size_t offset, ph_cmp_t cmp) { * its tail, so we do a single pass over the sibling list to * populate the FIFO. */ - if (phn1 != NULL) { - void *phnrest = phn_next_get(phn1, offset); - if (phnrest != NULL) { - phn_prev_set(phnrest, NULL, offset); - } - phn_prev_set(phn0, NULL, offset); - phn_next_set(phn0, NULL, offset); - phn_prev_set(phn1, NULL, offset); - phn_next_set(phn1, NULL, offset); - phn0 = phn_merge(phn0, phn1, offset, cmp); - head = tail = phn0; - phn0 = phnrest; - while (phn0 != NULL) { - phn1 = phn_next_get(phn0, offset); - if (phn1 != NULL) { - phnrest = phn_next_get(phn1, offset); - if (phnrest != NULL) { - phn_prev_set(phnrest, NULL, offset); - } - phn_prev_set(phn0, NULL, offset); - phn_next_set(phn0, NULL, offset); - phn_prev_set(phn1, NULL, offset); - phn_next_set(phn1, NULL, offset); - phn0 = phn_merge(phn0, phn1, offset, cmp); - phn_next_set(tail, phn0, offset); - tail = phn0; - phn0 = phnrest; - } else { - phn_next_set(tail, phn0, offset); - tail = phn0; - phn0 = NULL; - } - } - phn0 = head; + void *phnrest = phn_next_get(phn1, offset); + if (phnrest != NULL) { + phn_prev_set(phnrest, NULL, offset); + } + phn_prev_set(phn0, NULL, offset); + phn_next_set(phn0, NULL, offset); + phn_prev_set(phn1, NULL, offset); + phn_next_set(phn1, NULL, offset); + phn0 = phn_merge(phn0, phn1, offset, cmp); + head = tail = phn0; + phn0 = phnrest; + while (phn0 != NULL) { phn1 = phn_next_get(phn0, offset); if (phn1 != NULL) { - while (true) { - head = phn_next_get(phn1, offset); - assert(phn_prev_get(phn0, offset) == NULL); - phn_next_set(phn0, NULL, offset); - assert(phn_prev_get(phn1, offset) == NULL); - phn_next_set(phn1, NULL, offset); - phn0 = phn_merge(phn0, phn1, offset, cmp); - if (head == NULL) { - break; - } - phn_next_set(tail, phn0, offset); - tail = phn0; - phn0 = head; - phn1 = phn_next_get(phn0, offset); + phnrest = phn_next_get(phn1, offset); + if (phnrest != NULL) { + phn_prev_set(phnrest, NULL, offset); } + phn_prev_set(phn0, NULL, offset); + phn_next_set(phn0, NULL, offset); + phn_prev_set(phn1, NULL, offset); + phn_next_set(phn1, NULL, offset); + phn0 = phn_merge(phn0, phn1, offset, cmp); + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ + phn_next_set(tail, phn0, offset); + tail = phn0; + phn0 = phnrest; + } else { + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ + phn_next_set(tail, phn0, offset); + tail = phn0; + phn0 = NULL; } } + phn0 = head; + phn1 = phn_next_get(phn0, offset); + if (phn1 != NULL) { + while (true) { + head = phn_next_get(phn1, offset); + assert(phn_prev_get(phn0, offset) == NULL); + phn_next_set(phn0, NULL, offset); + assert(phn_prev_get(phn1, offset) == NULL); + phn_next_set(phn1, NULL, offset); + phn0 = phn_merge(phn0, phn1, offset, cmp); + if (head == NULL) { + break; + } + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ + phn_next_set(tail, phn0, offset); + tail = phn0; + phn0 = head; + phn1 = phn_next_get(phn0, offset); + } + } + return phn0; } @@ -230,7 +251,7 @@ ph_merge_aux(ph_t *ph, size_t offset, ph_cmp_t cmp) { phn_prev_set(phn, NULL, offset); phn = phn_merge_siblings(phn, offset, cmp); assert(phn_next_get(phn, offset) == NULL); - ph->root = phn_merge(ph->root, phn, offset, cmp); + phn_merge_ordered(ph->root, phn, offset, cmp); } } @@ -298,6 +319,7 @@ ph_try_aux_merge_pair(ph_t *ph, size_t offset, ph_cmp_t cmp) { phn0 = phn_merge(phn0, phn1, offset, cmp); phn_next_set(phn0, next_phn1, offset); if (next_phn1 != NULL) { + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ phn_prev_set(next_phn1, phn0, offset); } phn_next_set(ph->root, phn0, offset); @@ -318,36 +340,36 @@ ph_insert(ph_t *ph, void *phn, size_t offset, ph_cmp_t cmp) { */ if (ph->root == NULL) { ph->root = phn; - } else { - /* - * As a special case, check to see if we can replace the root. - * This is practically common in some important cases, and lets - * us defer some insertions (hopefully, until the point where - * some of the items in the aux list have been removed, savings - * us from linking them at all). - */ - if (cmp(phn, ph->root) < 0) { - phn_lchild_set(phn, ph->root, offset); - phn_prev_set(ph->root, phn, offset); - ph->root = phn; - ph->auxcount = 0; - return; - } - ph->auxcount++; - phn_next_set(phn, phn_next_get(ph->root, offset), offset); - if (phn_next_get(ph->root, offset) != NULL) { - phn_prev_set(phn_next_get(ph->root, offset), phn, - offset); - } - phn_prev_set(phn, ph->root, offset); - phn_next_set(ph->root, phn, offset); + return; } - if (ph->auxcount > 1) { - unsigned nmerges = ffs_zu(ph->auxcount - 1); - bool done = false; - for (unsigned i = 0; i < nmerges && !done; i++) { - done = ph_try_aux_merge_pair(ph, offset, cmp); - } + + /* + * As a special case, check to see if we can replace the root. + * This is practically common in some important cases, and lets + * us defer some insertions (hopefully, until the point where + * some of the items in the aux list have been removed, savings + * us from linking them at all). + */ + if (cmp(phn, ph->root) < 0) { + phn_lchild_set(phn, ph->root, offset); + phn_prev_set(ph->root, phn, offset); + ph->root = phn; + ph->auxcount = 0; + return; + } + + phn_next_set(phn, phn_next_get(ph->root, offset), offset); + if (phn_next_get(ph->root, offset) != NULL) { + phn_prev_set(phn_next_get(ph->root, offset), phn, offset); + } + phn_prev_set(phn, ph->root, offset); + phn_next_set(ph->root, phn, offset); + + ph->auxcount++; + unsigned nmerges = ffs_zu(ph->auxcount); + bool done = false; + for (unsigned i = 0; i < nmerges && !done; i++) { + done = ph_try_aux_merge_pair(ph, offset, cmp); } } @@ -363,158 +385,210 @@ ph_remove_first(ph_t *ph, size_t offset, ph_cmp_t cmp) { ph->root = ph_merge_children(ph->root, offset, cmp); return ret; - } JEMALLOC_ALWAYS_INLINE void ph_remove(ph_t *ph, void *phn, size_t offset, ph_cmp_t cmp) { - void *replace; - void *parent; - if (ph->root == phn) { - /* - * We can delete from aux list without merging it, but we need - * to merge if we are dealing with the root node and it has - * children. - */ - if (phn_lchild_get(phn, offset) == NULL) { - ph->root = phn_next_get(phn, offset); - if (ph->root != NULL) { - phn_prev_set(ph->root, NULL, offset); - } - return; - } ph_merge_aux(ph, offset, cmp); - if (ph->root == phn) { - ph->root = ph_merge_children(ph->root, offset, cmp); - return; - } + ph->root = ph_merge_children(phn, offset, cmp); + return; } - /* Get parent (if phn is leftmost child) before mutating. */ - if ((parent = phn_prev_get(phn, offset)) != NULL) { - if (phn_lchild_get(parent, offset) != phn) { - parent = NULL; - } - } - /* Find a possible replacement node, and link to parent. */ - replace = ph_merge_children(phn, offset, cmp); - /* Set next/prev for sibling linked list. */ + void *prev = phn_prev_get(phn, offset); + void *next = phn_next_get(phn, offset); + + /* If we have children, then we integrate them back in the heap. */ + void *replace = ph_merge_children(phn, offset, cmp); if (replace != NULL) { - if (parent != NULL) { - phn_prev_set(replace, parent, offset); - phn_lchild_set(parent, replace, offset); - } else { - phn_prev_set(replace, phn_prev_get(phn, offset), - offset); - if (phn_prev_get(phn, offset) != NULL) { - phn_next_set(phn_prev_get(phn, offset), replace, - offset); - } - } - phn_next_set(replace, phn_next_get(phn, offset), offset); - if (phn_next_get(phn, offset) != NULL) { - phn_prev_set(phn_next_get(phn, offset), replace, - offset); + phn_next_set(replace, next, offset); + if (next != NULL) { + phn_prev_set(next, replace, offset); } + + next = replace; + } + + if (next != NULL) { + phn_prev_set(next, prev, offset); + } + + assert(prev != NULL); + if (phn_lchild_get(prev, offset) == phn) { + phn_lchild_set(prev, next, offset); } else { - if (parent != NULL) { - void *next = phn_next_get(phn, offset); - phn_lchild_set(parent, next, offset); - if (next != NULL) { - phn_prev_set(next, parent, offset); - } - } else { - assert(phn_prev_get(phn, offset) != NULL); - phn_next_set( - phn_prev_get(phn, offset), - phn_next_get(phn, offset), offset); - } - if (phn_next_get(phn, offset) != NULL) { - phn_prev_set( - phn_next_get(phn, offset), - phn_prev_get(phn, offset), offset); - } + phn_next_set(prev, next, offset); } } -#define ph_structs(a_prefix, a_type) \ -typedef struct { \ - phn_link_t link; \ -} a_prefix##_link_t; \ - \ -typedef struct { \ - ph_t ph; \ -} a_prefix##_t; +JEMALLOC_ALWAYS_INLINE void +ph_enumerate_vars_init(ph_enumerate_vars_t *vars, uint16_t max_visit_num, + uint16_t max_queue_size) { + vars->queue_size = 0; + vars->visited_num = 0; + vars->front = 0; + vars->rear = 0; + vars->max_visit_num = max_visit_num; + vars->max_queue_size = max_queue_size; + assert(vars->max_visit_num > 0); + /* + * max_queue_size must be able to support max_visit_num, which means + * the queue will not overflow before reaching max_visit_num. + */ + assert(vars->max_queue_size >= (vars->max_visit_num + 1) / 2); +} + +JEMALLOC_ALWAYS_INLINE void +ph_enumerate_queue_push( + void *phn, void **bfs_queue, ph_enumerate_vars_t *vars) { + assert(vars->queue_size < vars->max_queue_size); + bfs_queue[vars->rear] = phn; + vars->rear = (vars->rear + 1) % vars->max_queue_size; + (vars->queue_size)++; +} + +JEMALLOC_ALWAYS_INLINE void * +ph_enumerate_queue_pop(void **bfs_queue, ph_enumerate_vars_t *vars) { + assert(vars->queue_size > 0); + assert(vars->queue_size <= vars->max_queue_size); + void *ret = bfs_queue[vars->front]; + vars->front = (vars->front + 1) % vars->max_queue_size; + (vars->queue_size)--; + return ret; +} + +/* + * The two functions below offer a solution to enumerate the pairing heap. + * Whe enumerating, always call ph_enumerate_prepare first to prepare the queue + * needed for BFS. Next, call ph_enumerate_next to get the next element in + * the enumeration. When enumeration ends, ph_enumerate_next returns NULL and + * should not be called again. Enumeration ends when all elements in the heap + * has been enumerated or the number of visited elements exceed + * max_visit_num. + */ +JEMALLOC_ALWAYS_INLINE void +ph_enumerate_prepare(ph_t *ph, void **bfs_queue, ph_enumerate_vars_t *vars, + uint16_t max_visit_num, uint16_t max_queue_size) { + ph_enumerate_vars_init(vars, max_visit_num, max_queue_size); + ph_enumerate_queue_push(ph->root, bfs_queue, vars); +} + +JEMALLOC_ALWAYS_INLINE void * +ph_enumerate_next( + ph_t *ph, size_t offset, void **bfs_queue, ph_enumerate_vars_t *vars) { + if (vars->queue_size == 0) { + return NULL; + } + + (vars->visited_num)++; + if (vars->visited_num > vars->max_visit_num) { + return NULL; + } + + void *ret = ph_enumerate_queue_pop(bfs_queue, vars); + assert(ret != NULL); + void *left = phn_lchild_get(ret, offset); + void *right = phn_next_get(ret, offset); + if (left) { + ph_enumerate_queue_push(left, bfs_queue, vars); + } + if (right) { + ph_enumerate_queue_push(right, bfs_queue, vars); + } + return ret; +} + +#define ph_structs(a_prefix, a_type, a_max_queue_size) \ + typedef struct { \ + phn_link_t link; \ + } a_prefix##_link_t; \ + \ + typedef struct { \ + ph_t ph; \ + } a_prefix##_t; \ + \ + typedef struct { \ + void *bfs_queue[a_max_queue_size]; \ + ph_enumerate_vars_t vars; \ + } a_prefix##_enumerate_helper_t; /* * The ph_proto() macro generates function prototypes that correspond to the * functions generated by an equivalently parameterized call to ph_gen(). */ -#define ph_proto(a_attr, a_prefix, a_type) \ - \ -a_attr void a_prefix##_new(a_prefix##_t *ph); \ -a_attr bool a_prefix##_empty(a_prefix##_t *ph); \ -a_attr a_type *a_prefix##_first(a_prefix##_t *ph); \ -a_attr a_type *a_prefix##_any(a_prefix##_t *ph); \ -a_attr void a_prefix##_insert(a_prefix##_t *ph, a_type *phn); \ -a_attr a_type *a_prefix##_remove_first(a_prefix##_t *ph); \ -a_attr void a_prefix##_remove(a_prefix##_t *ph, a_type *phn); \ -a_attr a_type *a_prefix##_remove_any(a_prefix##_t *ph); +#define ph_proto(a_attr, a_prefix, a_type) \ + \ + a_attr void a_prefix##_new(a_prefix##_t *ph); \ + a_attr bool a_prefix##_empty(a_prefix##_t *ph); \ + a_attr a_type *a_prefix##_first(a_prefix##_t *ph); \ + a_attr a_type *a_prefix##_any(a_prefix##_t *ph); \ + a_attr void a_prefix##_insert(a_prefix##_t *ph, a_type *phn); \ + a_attr a_type *a_prefix##_remove_first(a_prefix##_t *ph); \ + a_attr void a_prefix##_remove(a_prefix##_t *ph, a_type *phn); \ + a_attr a_type *a_prefix##_remove_any(a_prefix##_t *ph); \ + a_attr void a_prefix##_enumerate_prepare(a_prefix##_t *ph, \ + a_prefix##_enumerate_helper_t *helper, uint16_t max_visit_num, \ + uint16_t max_queue_size); \ + a_attr a_type *a_prefix##_enumerate_next( \ + a_prefix##_t *ph, a_prefix##_enumerate_helper_t *helper); /* The ph_gen() macro generates a type-specific pairing heap implementation. */ -#define ph_gen(a_attr, a_prefix, a_type, a_field, a_cmp) \ -JEMALLOC_ALWAYS_INLINE int \ -a_prefix##_ph_cmp(void *a, void *b) { \ - return a_cmp((a_type *)a, (a_type *)b); \ -} \ - \ -a_attr void \ -a_prefix##_new(a_prefix##_t *ph) { \ - ph_new(&ph->ph); \ -} \ - \ -a_attr bool \ -a_prefix##_empty(a_prefix##_t *ph) { \ - return ph_empty(&ph->ph); \ -} \ - \ -a_attr a_type * \ -a_prefix##_first(a_prefix##_t *ph) { \ - return ph_first(&ph->ph, offsetof(a_type, a_field), \ - &a_prefix##_ph_cmp); \ -} \ - \ -a_attr a_type * \ -a_prefix##_any(a_prefix##_t *ph) { \ - return ph_any(&ph->ph, offsetof(a_type, a_field)); \ -} \ - \ -a_attr void \ -a_prefix##_insert(a_prefix##_t *ph, a_type *phn) { \ - ph_insert(&ph->ph, phn, offsetof(a_type, a_field), \ - a_prefix##_ph_cmp); \ -} \ - \ -a_attr a_type * \ -a_prefix##_remove_first(a_prefix##_t *ph) { \ - return ph_remove_first(&ph->ph, offsetof(a_type, a_field), \ - a_prefix##_ph_cmp); \ -} \ - \ -a_attr void \ -a_prefix##_remove(a_prefix##_t *ph, a_type *phn) { \ - ph_remove(&ph->ph, phn, offsetof(a_type, a_field), \ - a_prefix##_ph_cmp); \ -} \ - \ -a_attr a_type * \ -a_prefix##_remove_any(a_prefix##_t *ph) { \ - a_type *ret = a_prefix##_any(ph); \ - if (ret != NULL) { \ - a_prefix##_remove(ph, ret); \ - } \ - return ret; \ -} +#define ph_gen(a_attr, a_prefix, a_type, a_field, a_cmp) \ + JEMALLOC_ALWAYS_INLINE int a_prefix##_ph_cmp(void *a, void *b) { \ + return a_cmp((a_type *)a, (a_type *)b); \ + } \ + \ + a_attr void a_prefix##_new(a_prefix##_t *ph) { \ + ph_new(&ph->ph); \ + } \ + \ + a_attr bool a_prefix##_empty(a_prefix##_t *ph) { \ + return ph_empty(&ph->ph); \ + } \ + \ + a_attr a_type *a_prefix##_first(a_prefix##_t *ph) { \ + return ph_first( \ + &ph->ph, offsetof(a_type, a_field), &a_prefix##_ph_cmp); \ + } \ + \ + a_attr a_type *a_prefix##_any(a_prefix##_t *ph) { \ + return ph_any(&ph->ph, offsetof(a_type, a_field)); \ + } \ + \ + a_attr void a_prefix##_insert(a_prefix##_t *ph, a_type *phn) { \ + ph_insert(&ph->ph, phn, offsetof(a_type, a_field), \ + a_prefix##_ph_cmp); \ + } \ + \ + a_attr a_type *a_prefix##_remove_first(a_prefix##_t *ph) { \ + return ph_remove_first( \ + &ph->ph, offsetof(a_type, a_field), a_prefix##_ph_cmp); \ + } \ + \ + a_attr void a_prefix##_remove(a_prefix##_t *ph, a_type *phn) { \ + ph_remove(&ph->ph, phn, offsetof(a_type, a_field), \ + a_prefix##_ph_cmp); \ + } \ + \ + a_attr a_type *a_prefix##_remove_any(a_prefix##_t *ph) { \ + a_type *ret = a_prefix##_any(ph); \ + if (ret != NULL) { \ + a_prefix##_remove(ph, ret); \ + } \ + return ret; \ + } \ + \ + a_attr void a_prefix##_enumerate_prepare(a_prefix##_t *ph, \ + a_prefix##_enumerate_helper_t *helper, uint16_t max_visit_num, \ + uint16_t max_queue_size) { \ + ph_enumerate_prepare(&ph->ph, helper->bfs_queue, \ + &helper->vars, max_visit_num, max_queue_size); \ + } \ + \ + a_attr a_type *a_prefix##_enumerate_next( \ + a_prefix##_t *ph, a_prefix##_enumerate_helper_t *helper) { \ + return ph_enumerate_next(&ph->ph, offsetof(a_type, a_field), \ + helper->bfs_queue, &helper->vars); \ + } #endif /* JEMALLOC_INTERNAL_PH_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/private_namespace.h b/dep/jemalloc/include/jemalloc/internal/private_namespace.h index 2bc15848a9103..141818a5ddd33 100644 --- a/dep/jemalloc/include/jemalloc/internal/private_namespace.h +++ b/dep/jemalloc/include/jemalloc/internal/private_namespace.h @@ -6,17 +6,16 @@ #define arena_migrate JEMALLOC_N(arena_migrate) #define arenas JEMALLOC_N(arenas) #define arena_set JEMALLOC_N(arena_set) -#define arenas_lock JEMALLOC_N(arenas_lock) #define batch_alloc JEMALLOC_N(batch_alloc) #define bootstrap_calloc JEMALLOC_N(bootstrap_calloc) #define bootstrap_free JEMALLOC_N(bootstrap_free) #define bootstrap_malloc JEMALLOC_N(bootstrap_malloc) #define free_default JEMALLOC_N(free_default) #define iarena_cleanup JEMALLOC_N(iarena_cleanup) +#define invalid_conf_abort JEMALLOC_N(invalid_conf_abort) #define jemalloc_postfork_child JEMALLOC_N(jemalloc_postfork_child) #define jemalloc_postfork_parent JEMALLOC_N(jemalloc_postfork_parent) #define jemalloc_prefork JEMALLOC_N(jemalloc_prefork) -#define je_sdallocx_noflags JEMALLOC_N(je_sdallocx_noflags) #define junk_alloc_callback JEMALLOC_N(junk_alloc_callback) #define junk_free_callback JEMALLOC_N(junk_free_callback) #define malloc_default JEMALLOC_N(malloc_default) @@ -29,14 +28,20 @@ #define opt_abort JEMALLOC_N(opt_abort) #define opt_abort_conf JEMALLOC_N(opt_abort_conf) #define opt_cache_oblivious JEMALLOC_N(opt_cache_oblivious) +#define opt_calloc_madvise_threshold JEMALLOC_N(opt_calloc_madvise_threshold) #define opt_confirm_conf JEMALLOC_N(opt_confirm_conf) +#define opt_debug_double_free_max_scan JEMALLOC_N(opt_debug_double_free_max_scan) +#define opt_disable_large_size_classes JEMALLOC_N(opt_disable_large_size_classes) #define opt_experimental_infallible_new JEMALLOC_N(opt_experimental_infallible_new) +#define opt_experimental_tcache_gc JEMALLOC_N(opt_experimental_tcache_gc) #define opt_hpa JEMALLOC_N(opt_hpa) #define opt_hpa_opts JEMALLOC_N(opt_hpa_opts) #define opt_hpa_sec_opts JEMALLOC_N(opt_hpa_sec_opts) #define opt_junk JEMALLOC_N(opt_junk) #define opt_junk_alloc JEMALLOC_N(opt_junk_alloc) #define opt_junk_free JEMALLOC_N(opt_junk_free) +#define opt_malloc_conf_env_var JEMALLOC_N(opt_malloc_conf_env_var) +#define opt_malloc_conf_symlink JEMALLOC_N(opt_malloc_conf_symlink) #define opt_narenas JEMALLOC_N(opt_narenas) #define opt_narenas_ratio JEMALLOC_N(opt_narenas_ratio) #define opt_trust_madvise JEMALLOC_N(opt_trust_madvise) @@ -48,15 +53,11 @@ #define zero_realloc_count JEMALLOC_N(zero_realloc_count) #define zero_realloc_mode_names JEMALLOC_N(zero_realloc_mode_names) #define arena_basic_stats_merge JEMALLOC_N(arena_basic_stats_merge) -#define arena_bin_choose JEMALLOC_N(arena_bin_choose) #define arena_binind_div_info JEMALLOC_N(arena_binind_div_info) #define arena_bin_offsets JEMALLOC_N(arena_bin_offsets) #define arena_boot JEMALLOC_N(arena_boot) -#define arena_cache_bin_fill_small JEMALLOC_N(arena_cache_bin_fill_small) #define arena_choose_huge JEMALLOC_N(arena_choose_huge) #define arena_config_default JEMALLOC_N(arena_config_default) -#define arena_dalloc_bin_locked_handle_newly_empty JEMALLOC_N(arena_dalloc_bin_locked_handle_newly_empty) -#define arena_dalloc_bin_locked_handle_newly_nonempty JEMALLOC_N(arena_dalloc_bin_locked_handle_newly_nonempty) #define arena_dalloc_promoted JEMALLOC_N(arena_dalloc_promoted) #define arena_dalloc_small JEMALLOC_N(arena_dalloc_small) #define arena_decay JEMALLOC_N(arena_decay) @@ -77,15 +78,15 @@ #define arena_get_ehooks JEMALLOC_N(arena_get_ehooks) #define arena_handle_deferred_work JEMALLOC_N(arena_handle_deferred_work) #define arena_init_huge JEMALLOC_N(arena_init_huge) -#define arena_is_huge JEMALLOC_N(arena_is_huge) #define arena_malloc_hard JEMALLOC_N(arena_malloc_hard) #define arena_muzzy_decay_ms_default_get JEMALLOC_N(arena_muzzy_decay_ms_default_get) #define arena_muzzy_decay_ms_default_set JEMALLOC_N(arena_muzzy_decay_ms_default_set) +#define arena_name_get JEMALLOC_N(arena_name_get) +#define arena_name_set JEMALLOC_N(arena_name_set) #define arena_new JEMALLOC_N(arena_new) #define arena_nthreads_dec JEMALLOC_N(arena_nthreads_dec) #define arena_nthreads_get JEMALLOC_N(arena_nthreads_get) #define arena_nthreads_inc JEMALLOC_N(arena_nthreads_inc) -#define arena_pa_central_global JEMALLOC_N(arena_pa_central_global) #define arena_palloc JEMALLOC_N(arena_palloc) #define arena_postfork_child JEMALLOC_N(arena_postfork_child) #define arena_postfork_parent JEMALLOC_N(arena_postfork_parent) @@ -99,6 +100,8 @@ #define arena_prefork7 JEMALLOC_N(arena_prefork7) #define arena_prefork8 JEMALLOC_N(arena_prefork8) #define arena_prof_promote JEMALLOC_N(arena_prof_promote) +#define arena_ptr_array_fill_small JEMALLOC_N(arena_ptr_array_fill_small) +#define arena_ptr_array_flush JEMALLOC_N(arena_ptr_array_flush) #define arena_ralloc JEMALLOC_N(arena_ralloc) #define arena_ralloc_no_move JEMALLOC_N(arena_ralloc_no_move) #define arena_reset JEMALLOC_N(arena_reset) @@ -106,7 +109,10 @@ #define arena_set_extent_hooks JEMALLOC_N(arena_set_extent_hooks) #define arena_slab_dalloc JEMALLOC_N(arena_slab_dalloc) #define arena_stats_merge JEMALLOC_N(arena_stats_merge) +#define huge_arena_ind JEMALLOC_N(huge_arena_ind) +#define huge_arena_pac_thp JEMALLOC_N(huge_arena_pac_thp) #define opt_dirty_decay_ms JEMALLOC_N(opt_dirty_decay_ms) +#define opt_huge_arena_pac_thp JEMALLOC_N(opt_huge_arena_pac_thp) #define opt_muzzy_decay_ms JEMALLOC_N(opt_muzzy_decay_ms) #define opt_oversize_threshold JEMALLOC_N(opt_oversize_threshold) #define opt_percpu_arena JEMALLOC_N(opt_percpu_arena) @@ -133,9 +139,12 @@ #define opt_background_thread JEMALLOC_N(opt_background_thread) #define opt_max_background_threads JEMALLOC_N(opt_max_background_threads) #define pthread_create_wrapper JEMALLOC_N(pthread_create_wrapper) +#define b0_alloc_tcache_stack JEMALLOC_N(b0_alloc_tcache_stack) +#define b0_dalloc_tcache_stack JEMALLOC_N(b0_dalloc_tcache_stack) #define b0get JEMALLOC_N(b0get) #define base_alloc JEMALLOC_N(base_alloc) #define base_alloc_edata JEMALLOC_N(base_alloc_edata) +#define base_alloc_rtree JEMALLOC_N(base_alloc_rtree) #define base_boot JEMALLOC_N(base_boot) #define base_delete JEMALLOC_N(base_delete) #define base_ehooks_get JEMALLOC_N(base_ehooks_get) @@ -148,11 +157,28 @@ #define base_stats_get JEMALLOC_N(base_stats_get) #define metadata_thp_mode_names JEMALLOC_N(metadata_thp_mode_names) #define opt_metadata_thp JEMALLOC_N(opt_metadata_thp) +#define bin_choose JEMALLOC_N(bin_choose) +#define bin_dalloc_locked_handle_newly_empty JEMALLOC_N(bin_dalloc_locked_handle_newly_empty) +#define bin_dalloc_locked_handle_newly_nonempty JEMALLOC_N(bin_dalloc_locked_handle_newly_nonempty) +#define bin_dalloc_slab_prepare JEMALLOC_N(bin_dalloc_slab_prepare) +#define bin_dissociate_slab JEMALLOC_N(bin_dissociate_slab) #define bin_init JEMALLOC_N(bin_init) +#define bin_lower_slab JEMALLOC_N(bin_lower_slab) +#define bin_malloc_no_fresh_slab JEMALLOC_N(bin_malloc_no_fresh_slab) +#define bin_malloc_with_fresh_slab JEMALLOC_N(bin_malloc_with_fresh_slab) #define bin_postfork_child JEMALLOC_N(bin_postfork_child) #define bin_postfork_parent JEMALLOC_N(bin_postfork_parent) #define bin_prefork JEMALLOC_N(bin_prefork) +#define bin_refill_slabcur_no_fresh_slab JEMALLOC_N(bin_refill_slabcur_no_fresh_slab) +#define bin_refill_slabcur_with_fresh_slab JEMALLOC_N(bin_refill_slabcur_with_fresh_slab) #define bin_shard_sizes_boot JEMALLOC_N(bin_shard_sizes_boot) +#define bin_slab_reg_alloc JEMALLOC_N(bin_slab_reg_alloc) +#define bin_slab_reg_alloc_batch JEMALLOC_N(bin_slab_reg_alloc_batch) +#define bin_slabs_full_insert JEMALLOC_N(bin_slabs_full_insert) +#define bin_slabs_full_remove JEMALLOC_N(bin_slabs_full_remove) +#define bin_slabs_nonfull_insert JEMALLOC_N(bin_slabs_nonfull_insert) +#define bin_slabs_nonfull_remove JEMALLOC_N(bin_slabs_nonfull_remove) +#define bin_slabs_nonfull_tryget JEMALLOC_N(bin_slabs_nonfull_tryget) #define bin_update_shard_size JEMALLOC_N(bin_update_shard_size) #define bin_info_boot JEMALLOC_N(bin_info_boot) #define bin_infos JEMALLOC_N(bin_infos) @@ -167,9 +193,11 @@ #define cache_bin_info_compute_alloc JEMALLOC_N(cache_bin_info_compute_alloc) #define cache_bin_info_init JEMALLOC_N(cache_bin_info_init) #define cache_bin_init JEMALLOC_N(cache_bin_init) +#define cache_bin_init_disabled JEMALLOC_N(cache_bin_init_disabled) #define cache_bin_postincrement JEMALLOC_N(cache_bin_postincrement) #define cache_bin_preincrement JEMALLOC_N(cache_bin_preincrement) -#define cache_bin_still_zero_initialized JEMALLOC_N(cache_bin_still_zero_initialized) +#define cache_bin_stack_use_thp JEMALLOC_N(cache_bin_stack_use_thp) +#define disabled_bin JEMALLOC_N(disabled_bin) #define ckh_count JEMALLOC_N(ckh_count) #define ckh_delete JEMALLOC_N(ckh_delete) #define ckh_insert JEMALLOC_N(ckh_insert) @@ -195,7 +223,6 @@ #define ctl_postfork_child JEMALLOC_N(ctl_postfork_child) #define ctl_postfork_parent JEMALLOC_N(ctl_postfork_parent) #define ctl_prefork JEMALLOC_N(ctl_prefork) -#define decay_deadline_init JEMALLOC_N(decay_deadline_init) #define decay_init JEMALLOC_N(decay_init) #define decay_maybe_advance_epoch JEMALLOC_N(decay_maybe_advance_epoch) #define decay_ms_valid JEMALLOC_N(decay_ms_valid) @@ -209,6 +236,8 @@ #define ecache_prefork JEMALLOC_N(ecache_prefork) #define edata_avail_any JEMALLOC_N(edata_avail_any) #define edata_avail_empty JEMALLOC_N(edata_avail_empty) +#define edata_avail_enumerate_next JEMALLOC_N(edata_avail_enumerate_next) +#define edata_avail_enumerate_prepare JEMALLOC_N(edata_avail_enumerate_prepare) #define edata_avail_first JEMALLOC_N(edata_avail_first) #define edata_avail_insert JEMALLOC_N(edata_avail_insert) #define edata_avail_new JEMALLOC_N(edata_avail_new) @@ -217,6 +246,8 @@ #define edata_avail_remove_first JEMALLOC_N(edata_avail_remove_first) #define edata_heap_any JEMALLOC_N(edata_heap_any) #define edata_heap_empty JEMALLOC_N(edata_heap_empty) +#define edata_heap_enumerate_next JEMALLOC_N(edata_heap_enumerate_next) +#define edata_heap_enumerate_prepare JEMALLOC_N(edata_heap_enumerate_prepare) #define edata_heap_first JEMALLOC_N(edata_heap_first) #define edata_heap_insert JEMALLOC_N(edata_heap_insert) #define edata_heap_new JEMALLOC_N(edata_heap_new) @@ -278,11 +309,10 @@ #define ecache_evict JEMALLOC_N(ecache_evict) #define extent_alloc_wrapper JEMALLOC_N(extent_alloc_wrapper) #define extent_boot JEMALLOC_N(extent_boot) -#define extent_commit_wrapper JEMALLOC_N(extent_commit_wrapper) #define extent_commit_zero JEMALLOC_N(extent_commit_zero) #define extent_dalloc_gap JEMALLOC_N(extent_dalloc_gap) #define extent_dalloc_wrapper JEMALLOC_N(extent_dalloc_wrapper) -#define extent_decommit_wrapper JEMALLOC_N(extent_decommit_wrapper) +#define extent_dalloc_wrapper_purged JEMALLOC_N(extent_dalloc_wrapper_purged) #define extent_destroy_wrapper JEMALLOC_N(extent_destroy_wrapper) #define extent_gdump_add JEMALLOC_N(extent_gdump_add) #define extent_merge_wrapper JEMALLOC_N(extent_merge_wrapper) @@ -292,6 +322,7 @@ #define extent_sn_next JEMALLOC_N(extent_sn_next) #define extent_split_wrapper JEMALLOC_N(extent_split_wrapper) #define opt_lg_extent_max_active_fit JEMALLOC_N(opt_lg_extent_max_active_fit) +#define opt_process_madvise_max_batch JEMALLOC_N(opt_process_madvise_max_batch) #define dss_prec_names JEMALLOC_N(dss_prec_names) #define extent_alloc_dss JEMALLOC_N(extent_alloc_dss) #define extent_dss_boot JEMALLOC_N(extent_dss_boot) @@ -322,23 +353,32 @@ #define hook_invoke_dalloc JEMALLOC_N(hook_invoke_dalloc) #define hook_invoke_expand JEMALLOC_N(hook_invoke_expand) #define hook_remove JEMALLOC_N(hook_remove) -#define hpa_central_extract JEMALLOC_N(hpa_central_extract) -#define hpa_central_init JEMALLOC_N(hpa_central_init) +#define hpa_hugepage_size_exceeds_limit JEMALLOC_N(hpa_hugepage_size_exceeds_limit) +#define hpa_hugify_style_names JEMALLOC_N(hpa_hugify_style_names) #define hpa_shard_destroy JEMALLOC_N(hpa_shard_destroy) #define hpa_shard_disable JEMALLOC_N(hpa_shard_disable) #define hpa_shard_do_deferred_work JEMALLOC_N(hpa_shard_do_deferred_work) +#define hpa_shard_flush JEMALLOC_N(hpa_shard_flush) #define hpa_shard_init JEMALLOC_N(hpa_shard_init) #define hpa_shard_postfork_child JEMALLOC_N(hpa_shard_postfork_child) #define hpa_shard_postfork_parent JEMALLOC_N(hpa_shard_postfork_parent) +#define hpa_shard_prefork2 JEMALLOC_N(hpa_shard_prefork2) #define hpa_shard_prefork3 JEMALLOC_N(hpa_shard_prefork3) #define hpa_shard_prefork4 JEMALLOC_N(hpa_shard_prefork4) #define hpa_shard_set_deferral_allowed JEMALLOC_N(hpa_shard_set_deferral_allowed) #define hpa_shard_stats_accum JEMALLOC_N(hpa_shard_stats_accum) #define hpa_shard_stats_merge JEMALLOC_N(hpa_shard_stats_merge) #define hpa_supported JEMALLOC_N(hpa_supported) +#define opt_experimental_hpa_enforce_hugify JEMALLOC_N(opt_experimental_hpa_enforce_hugify) +#define opt_experimental_hpa_start_huge_if_thp_always JEMALLOC_N(opt_experimental_hpa_start_huge_if_thp_always) +#define hpa_central_extract JEMALLOC_N(hpa_central_extract) +#define hpa_central_init JEMALLOC_N(hpa_central_init) #define hpa_hooks_default JEMALLOC_N(hpa_hooks_default) +#define hpa_purge_batch JEMALLOC_N(hpa_purge_batch) #define hpdata_age_heap_any JEMALLOC_N(hpdata_age_heap_any) #define hpdata_age_heap_empty JEMALLOC_N(hpdata_age_heap_empty) +#define hpdata_age_heap_enumerate_next JEMALLOC_N(hpdata_age_heap_enumerate_next) +#define hpdata_age_heap_enumerate_prepare JEMALLOC_N(hpdata_age_heap_enumerate_prepare) #define hpdata_age_heap_first JEMALLOC_N(hpdata_age_heap_first) #define hpdata_age_heap_insert JEMALLOC_N(hpdata_age_heap_insert) #define hpdata_age_heap_new JEMALLOC_N(hpdata_age_heap_new) @@ -365,19 +405,23 @@ #define large_prof_tctx_reset JEMALLOC_N(large_prof_tctx_reset) #define large_ralloc JEMALLOC_N(large_ralloc) #define large_ralloc_no_move JEMALLOC_N(large_ralloc_no_move) -#define large_salloc JEMALLOC_N(large_salloc) #define log_init_done JEMALLOC_N(log_init_done) #define log_var_names JEMALLOC_N(log_var_names) #define log_var_update_state JEMALLOC_N(log_var_update_state) #define buferror JEMALLOC_N(buferror) #define malloc_cprintf JEMALLOC_N(malloc_cprintf) #define malloc_printf JEMALLOC_N(malloc_printf) +#define malloc_read_fd JEMALLOC_N(malloc_read_fd) #define malloc_snprintf JEMALLOC_N(malloc_snprintf) #define malloc_strtoumax JEMALLOC_N(malloc_strtoumax) #define malloc_vcprintf JEMALLOC_N(malloc_vcprintf) #define malloc_vsnprintf JEMALLOC_N(malloc_vsnprintf) #define malloc_write JEMALLOC_N(malloc_write) +#define malloc_write_fd JEMALLOC_N(malloc_write_fd) #define wrtmessage JEMALLOC_N(wrtmessage) +#define had_conf_error JEMALLOC_N(had_conf_error) +#define malloc_abort_invalid_conf JEMALLOC_N(malloc_abort_invalid_conf) +#define malloc_conf_init JEMALLOC_N(malloc_conf_init) #define malloc_mutex_boot JEMALLOC_N(malloc_mutex_boot) #define malloc_mutex_init JEMALLOC_N(malloc_mutex_init) #define malloc_mutex_lock_slow JEMALLOC_N(malloc_mutex_lock_slow) @@ -398,8 +442,11 @@ #define nstime_init_update JEMALLOC_N(nstime_init_update) #define nstime_isubtract JEMALLOC_N(nstime_isubtract) #define nstime_monotonic JEMALLOC_N(nstime_monotonic) -#define nstime_msec JEMALLOC_N(nstime_msec) +#define nstime_ms JEMALLOC_N(nstime_ms) +#define nstime_ms_between JEMALLOC_N(nstime_ms_between) +#define nstime_ms_since JEMALLOC_N(nstime_ms_since) #define nstime_ns JEMALLOC_N(nstime_ns) +#define nstime_ns_between JEMALLOC_N(nstime_ns_between) #define nstime_nsec JEMALLOC_N(nstime_nsec) #define nstime_ns_since JEMALLOC_N(nstime_ns_since) #define nstime_prof_init_update JEMALLOC_N(nstime_prof_init_update) @@ -419,14 +466,17 @@ #define pa_shard_disable_hpa JEMALLOC_N(pa_shard_disable_hpa) #define pa_shard_do_deferred_work JEMALLOC_N(pa_shard_do_deferred_work) #define pa_shard_enable_hpa JEMALLOC_N(pa_shard_enable_hpa) +#define pa_shard_flush JEMALLOC_N(pa_shard_flush) #define pa_shard_init JEMALLOC_N(pa_shard_init) #define pa_shard_reset JEMALLOC_N(pa_shard_reset) -#define pa_shard_retain_grow_limit_get_set JEMALLOC_N(pa_shard_retain_grow_limit_get_set) #define pa_shard_set_deferral_allowed JEMALLOC_N(pa_shard_set_deferral_allowed) #define pa_shard_time_until_deferred_work JEMALLOC_N(pa_shard_time_until_deferred_work) #define pa_shrink JEMALLOC_N(pa_shrink) #define pa_shard_basic_stats_merge JEMALLOC_N(pa_shard_basic_stats_merge) #define pa_shard_mtx_stats_read JEMALLOC_N(pa_shard_mtx_stats_read) +#define pa_shard_nactive JEMALLOC_N(pa_shard_nactive) +#define pa_shard_ndirty JEMALLOC_N(pa_shard_ndirty) +#define pa_shard_nmuzzy JEMALLOC_N(pa_shard_nmuzzy) #define pa_shard_postfork_child JEMALLOC_N(pa_shard_postfork_child) #define pa_shard_postfork_parent JEMALLOC_N(pa_shard_postfork_parent) #define pa_shard_prefork0 JEMALLOC_N(pa_shard_prefork0) @@ -435,8 +485,6 @@ #define pa_shard_prefork4 JEMALLOC_N(pa_shard_prefork4) #define pa_shard_prefork5 JEMALLOC_N(pa_shard_prefork5) #define pa_shard_stats_merge JEMALLOC_N(pa_shard_stats_merge) -#define pai_alloc_batch_default JEMALLOC_N(pai_alloc_batch_default) -#define pai_dalloc_batch_default JEMALLOC_N(pai_dalloc_batch_default) #define pac_decay_all JEMALLOC_N(pac_decay_all) #define pac_decay_ms_get JEMALLOC_N(pac_decay_ms_get) #define pac_decay_ms_set JEMALLOC_N(pac_decay_ms_set) @@ -447,7 +495,9 @@ #define pac_retain_grow_limit_get_set JEMALLOC_N(pac_retain_grow_limit_get_set) #define init_system_thp_mode JEMALLOC_N(init_system_thp_mode) #define opt_thp JEMALLOC_N(opt_thp) +#define os_page JEMALLOC_N(os_page) #define pages_boot JEMALLOC_N(pages_boot) +#define pages_collapse JEMALLOC_N(pages_collapse) #define pages_commit JEMALLOC_N(pages_commit) #define pages_decommit JEMALLOC_N(pages_decommit) #define pages_dodump JEMALLOC_N(pages_dodump) @@ -458,29 +508,28 @@ #define pages_nohuge JEMALLOC_N(pages_nohuge) #define pages_purge_forced JEMALLOC_N(pages_purge_forced) #define pages_purge_lazy JEMALLOC_N(pages_purge_lazy) +#define pages_purge_process_madvise JEMALLOC_N(pages_purge_process_madvise) #define pages_set_thp_state JEMALLOC_N(pages_set_thp_state) #define pages_unmap JEMALLOC_N(pages_unmap) #define pages_unmark_guards JEMALLOC_N(pages_unmark_guards) +#define system_thp_mode_names JEMALLOC_N(system_thp_mode_names) #define thp_mode_names JEMALLOC_N(thp_mode_names) -#define peak_alloc_event_handler JEMALLOC_N(peak_alloc_event_handler) -#define peak_alloc_new_event_wait JEMALLOC_N(peak_alloc_new_event_wait) -#define peak_alloc_postponed_event_wait JEMALLOC_N(peak_alloc_postponed_event_wait) -#define peak_dalloc_event_handler JEMALLOC_N(peak_dalloc_event_handler) -#define peak_dalloc_new_event_wait JEMALLOC_N(peak_dalloc_new_event_wait) -#define peak_dalloc_postponed_event_wait JEMALLOC_N(peak_dalloc_postponed_event_wait) #define peak_event_max JEMALLOC_N(peak_event_max) #define peak_event_update JEMALLOC_N(peak_event_update) #define peak_event_zero JEMALLOC_N(peak_event_zero) +#define peak_te_handler JEMALLOC_N(peak_te_handler) #define lg_prof_sample JEMALLOC_N(lg_prof_sample) #define opt_lg_prof_interval JEMALLOC_N(opt_lg_prof_interval) #define opt_lg_prof_sample JEMALLOC_N(opt_lg_prof_sample) #define opt_prof JEMALLOC_N(opt_prof) #define opt_prof_accum JEMALLOC_N(opt_prof_accum) #define opt_prof_active JEMALLOC_N(opt_prof_active) +#define opt_prof_bt_max JEMALLOC_N(opt_prof_bt_max) #define opt_prof_final JEMALLOC_N(opt_prof_final) #define opt_prof_gdump JEMALLOC_N(opt_prof_gdump) #define opt_prof_leak JEMALLOC_N(opt_prof_leak) #define opt_prof_leak_error JEMALLOC_N(opt_prof_leak_error) +#define opt_prof_pid_namespace JEMALLOC_N(opt_prof_pid_namespace) #define opt_prof_prefix JEMALLOC_N(opt_prof_prefix) #define opt_prof_sys_thread_name JEMALLOC_N(opt_prof_sys_thread_name) #define opt_prof_thread_active_init JEMALLOC_N(opt_prof_thread_active_init) @@ -489,14 +538,12 @@ #define prof_active_set JEMALLOC_N(prof_active_set) #define prof_active_state JEMALLOC_N(prof_active_state) #define prof_alloc_rollback JEMALLOC_N(prof_alloc_rollback) -#define prof_backtrace_hook JEMALLOC_N(prof_backtrace_hook) #define prof_backtrace_hook_get JEMALLOC_N(prof_backtrace_hook_get) #define prof_backtrace_hook_set JEMALLOC_N(prof_backtrace_hook_set) #define prof_boot0 JEMALLOC_N(prof_boot0) #define prof_boot1 JEMALLOC_N(prof_boot1) #define prof_boot2 JEMALLOC_N(prof_boot2) #define prof_booted JEMALLOC_N(prof_booted) -#define prof_dump_hook JEMALLOC_N(prof_dump_hook) #define prof_dump_hook_get JEMALLOC_N(prof_dump_hook_get) #define prof_dump_hook_set JEMALLOC_N(prof_dump_hook_set) #define prof_free_sampled_object JEMALLOC_N(prof_free_sampled_object) @@ -513,8 +560,12 @@ #define prof_prefork0 JEMALLOC_N(prof_prefork0) #define prof_prefork1 JEMALLOC_N(prof_prefork1) #define prof_sample_event_handler JEMALLOC_N(prof_sample_event_handler) +#define prof_sample_free_hook_get JEMALLOC_N(prof_sample_free_hook_get) +#define prof_sample_free_hook_set JEMALLOC_N(prof_sample_free_hook_set) +#define prof_sample_hook_get JEMALLOC_N(prof_sample_hook_get) +#define prof_sample_hook_set JEMALLOC_N(prof_sample_hook_set) #define prof_sample_new_event_wait JEMALLOC_N(prof_sample_new_event_wait) -#define prof_sample_postponed_event_wait JEMALLOC_N(prof_sample_postponed_event_wait) +#define prof_sample_te_handler JEMALLOC_N(prof_sample_te_handler) #define prof_tctx_create JEMALLOC_N(prof_tctx_create) #define prof_tdata_cleanup JEMALLOC_N(prof_tdata_cleanup) #define prof_tdata_init JEMALLOC_N(prof_tdata_init) @@ -525,6 +576,7 @@ #define prof_thread_active_set JEMALLOC_N(prof_thread_active_set) #define prof_thread_name_get JEMALLOC_N(prof_thread_name_get) #define prof_thread_name_set JEMALLOC_N(prof_thread_name_set) +#define tsd_prof_sample_event_wait_get JEMALLOC_N(tsd_prof_sample_event_wait_get) #define bt2gctx_mtx JEMALLOC_N(bt2gctx_mtx) #define gctx_locks JEMALLOC_N(gctx_locks) #define prof_bt_count JEMALLOC_N(prof_bt_count) @@ -541,7 +593,6 @@ #define prof_tdata_count JEMALLOC_N(prof_tdata_count) #define prof_tdata_detach JEMALLOC_N(prof_tdata_detach) #define prof_tdata_init_impl JEMALLOC_N(prof_tdata_init_impl) -#define prof_thread_name_alloc JEMALLOC_N(prof_thread_name_alloc) #define prof_thread_name_set_impl JEMALLOC_N(prof_thread_name_set_impl) #define prof_unbiased_sz JEMALLOC_N(prof_unbiased_sz) #define prof_unbias_map_init JEMALLOC_N(prof_unbias_map_init) @@ -552,7 +603,6 @@ #define prof_log_alloc_count JEMALLOC_N(prof_log_alloc_count) #define prof_log_bt_count JEMALLOC_N(prof_log_bt_count) #define prof_log_dummy_set JEMALLOC_N(prof_log_dummy_set) -#define prof_logging_state JEMALLOC_N(prof_logging_state) #define prof_log_init JEMALLOC_N(prof_log_init) #define prof_log_is_logging JEMALLOC_N(prof_log_is_logging) #define prof_log_rep_check JEMALLOC_N(prof_log_rep_check) @@ -574,6 +624,7 @@ #define prof_recent_alloc_reset JEMALLOC_N(prof_recent_alloc_reset) #define prof_recent_dump_mtx JEMALLOC_N(prof_recent_dump_mtx) #define prof_recent_init JEMALLOC_N(prof_recent_init) +#define prof_thread_stack_range JEMALLOC_N(prof_thread_stack_range) #define opt_prof_stats JEMALLOC_N(opt_prof_stats) #define prof_stats_dec JEMALLOC_N(prof_stats_dec) #define prof_stats_get_accum JEMALLOC_N(prof_stats_get_accum) @@ -583,7 +634,6 @@ #define bt_init JEMALLOC_N(bt_init) #define prof_backtrace JEMALLOC_N(prof_backtrace) #define prof_base JEMALLOC_N(prof_base) -#define prof_do_mock JEMALLOC_N(prof_do_mock) #define prof_dump_filename_mtx JEMALLOC_N(prof_dump_filename_mtx) #define prof_dump_open_file JEMALLOC_N(prof_dump_open_file) #define prof_dump_open_maps JEMALLOC_N(prof_dump_open_maps) @@ -618,7 +668,9 @@ #define sc_boot JEMALLOC_N(sc_boot) #define sc_data_init JEMALLOC_N(sc_data_init) #define sc_data_update_slab_size JEMALLOC_N(sc_data_update_slab_size) -#define sec_disable JEMALLOC_N(sec_disable) +#define sec_alloc JEMALLOC_N(sec_alloc) +#define sec_dalloc JEMALLOC_N(sec_dalloc) +#define sec_fill JEMALLOC_N(sec_fill) #define sec_flush JEMALLOC_N(sec_flush) #define sec_init JEMALLOC_N(sec_init) #define sec_mutex_stats_read JEMALLOC_N(sec_mutex_stats_read) @@ -626,16 +678,16 @@ #define sec_postfork_parent JEMALLOC_N(sec_postfork_parent) #define sec_prefork2 JEMALLOC_N(sec_prefork2) #define sec_stats_merge JEMALLOC_N(sec_stats_merge) -#define arena_mutex_names JEMALLOC_N(arena_mutex_names) -#define global_mutex_names JEMALLOC_N(global_mutex_names) #define opt_stats_interval JEMALLOC_N(opt_stats_interval) #define opt_stats_interval_opts JEMALLOC_N(opt_stats_interval_opts) #define opt_stats_print JEMALLOC_N(opt_stats_print) #define opt_stats_print_opts JEMALLOC_N(opt_stats_print_opts) #define stats_boot JEMALLOC_N(stats_boot) +#define stats_interval_accum_batch JEMALLOC_N(stats_interval_accum_batch) #define stats_interval_event_handler JEMALLOC_N(stats_interval_event_handler) #define stats_interval_new_event_wait JEMALLOC_N(stats_interval_new_event_wait) #define stats_interval_postponed_event_wait JEMALLOC_N(stats_interval_postponed_event_wait) +#define stats_interval_te_handler JEMALLOC_N(stats_interval_te_handler) #define stats_postfork_child JEMALLOC_N(stats_postfork_child) #define stats_postfork_parent JEMALLOC_N(stats_postfork_parent) #define stats_prefork JEMALLOC_N(stats_prefork) @@ -647,7 +699,8 @@ #define sz_psz_quantize_ceil JEMALLOC_N(sz_psz_quantize_ceil) #define sz_psz_quantize_floor JEMALLOC_N(sz_psz_quantize_floor) #define sz_size2index_tab JEMALLOC_N(sz_size2index_tab) -#define nhbins JEMALLOC_N(nhbins) +#define global_do_not_change_tcache_maxclass JEMALLOC_N(global_do_not_change_tcache_maxclass) +#define global_do_not_change_tcache_nbins JEMALLOC_N(global_do_not_change_tcache_nbins) #define opt_lg_tcache_flush_large_div JEMALLOC_N(opt_lg_tcache_flush_large_div) #define opt_lg_tcache_flush_small_div JEMALLOC_N(opt_lg_tcache_flush_small_div) #define opt_lg_tcache_nslots_mul JEMALLOC_N(opt_lg_tcache_nslots_mul) @@ -665,18 +718,17 @@ #define tcache_bin_flush_large JEMALLOC_N(tcache_bin_flush_large) #define tcache_bin_flush_small JEMALLOC_N(tcache_bin_flush_small) #define tcache_bin_flush_stashed JEMALLOC_N(tcache_bin_flush_stashed) -#define tcache_bin_info JEMALLOC_N(tcache_bin_info) +#define tcache_bin_info_default_init JEMALLOC_N(tcache_bin_info_default_init) +#define tcache_bin_ncached_max_read JEMALLOC_N(tcache_bin_ncached_max_read) +#define tcache_bins_ncached_max_write JEMALLOC_N(tcache_bins_ncached_max_write) #define tcache_boot JEMALLOC_N(tcache_boot) #define tcache_cleanup JEMALLOC_N(tcache_cleanup) #define tcache_create_explicit JEMALLOC_N(tcache_create_explicit) +#define tcache_enabled_set JEMALLOC_N(tcache_enabled_set) #define tcache_flush JEMALLOC_N(tcache_flush) -#define tcache_gc_dalloc_event_handler JEMALLOC_N(tcache_gc_dalloc_event_handler) -#define tcache_gc_dalloc_new_event_wait JEMALLOC_N(tcache_gc_dalloc_new_event_wait) -#define tcache_gc_dalloc_postponed_event_wait JEMALLOC_N(tcache_gc_dalloc_postponed_event_wait) -#define tcache_gc_event_handler JEMALLOC_N(tcache_gc_event_handler) #define tcache_gc_new_event_wait JEMALLOC_N(tcache_gc_new_event_wait) #define tcache_gc_postponed_event_wait JEMALLOC_N(tcache_gc_postponed_event_wait) -#define tcache_maxclass JEMALLOC_N(tcache_maxclass) +#define tcache_gc_te_handler JEMALLOC_N(tcache_gc_te_handler) #define tcache_postfork_child JEMALLOC_N(tcache_postfork_child) #define tcache_postfork_parent JEMALLOC_N(tcache_postfork_parent) #define tcache_prefork JEMALLOC_N(tcache_prefork) @@ -685,15 +737,22 @@ #define tcaches_create JEMALLOC_N(tcaches_create) #define tcaches_destroy JEMALLOC_N(tcaches_destroy) #define tcaches_flush JEMALLOC_N(tcaches_flush) +#define tcache_stack_alloc JEMALLOC_N(tcache_stack_alloc) #define tcache_stats_merge JEMALLOC_N(tcache_stats_merge) -#define tsd_tcache_data_init JEMALLOC_N(tsd_tcache_data_init) +#define thread_tcache_max_set JEMALLOC_N(thread_tcache_max_set) #define tsd_tcache_enabled_data_init JEMALLOC_N(tsd_tcache_enabled_data_init) #define test_hooks_arena_new_hook JEMALLOC_N(test_hooks_arena_new_hook) #define test_hooks_libc_hook JEMALLOC_N(test_hooks_libc_hook) +#define te_adjust_thresholds_helper JEMALLOC_N(te_adjust_thresholds_helper) #define te_assert_invariants_debug JEMALLOC_N(te_assert_invariants_debug) #define te_event_trigger JEMALLOC_N(te_event_trigger) #define te_recompute_fast_threshold JEMALLOC_N(te_recompute_fast_threshold) #define tsd_te_init JEMALLOC_N(tsd_te_init) +#define experimental_thread_events_boot JEMALLOC_N(experimental_thread_events_boot) +#define te_alloc_handlers JEMALLOC_N(te_alloc_handlers) +#define te_dalloc_handlers JEMALLOC_N(te_dalloc_handlers) +#define te_register_user_handler JEMALLOC_N(te_register_user_handler) +#define te_user_event_enabled JEMALLOC_N(te_user_event_enabled) #define ticker_geom_table JEMALLOC_N(ticker_geom_table) #define malloc_tsd_boot0 JEMALLOC_N(malloc_tsd_boot0) #define malloc_tsd_boot1 JEMALLOC_N(malloc_tsd_boot1) @@ -712,6 +771,7 @@ #define tsd_state_set JEMALLOC_N(tsd_state_set) #define tsd_tls JEMALLOC_N(tsd_tls) #define tsd_tsd JEMALLOC_N(tsd_tsd) +#define multi_setting_parse_next JEMALLOC_N(multi_setting_parse_next) #define witness_depth_error JEMALLOC_N(witness_depth_error) #define witnesses_cleanup JEMALLOC_N(witnesses_cleanup) #define witness_init JEMALLOC_N(witness_init) diff --git a/dep/jemalloc/include/jemalloc/internal/prng.h b/dep/jemalloc/include/jemalloc/internal/prng.h index 14542aa12d465..04049519afc0f 100644 --- a/dep/jemalloc/include/jemalloc/internal/prng.h +++ b/dep/jemalloc/include/jemalloc/internal/prng.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_PRNG_H #define JEMALLOC_INTERNAL_PRNG_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/bit_util.h" /* @@ -25,11 +26,11 @@ /******************************************************************************/ /* INTERNAL DEFINITIONS -- IGNORE */ /******************************************************************************/ -#define PRNG_A_32 UINT32_C(1103515241) -#define PRNG_C_32 UINT32_C(12347) +#define PRNG_A_32 UINT32_C(1103515241) +#define PRNG_C_32 UINT32_C(12347) -#define PRNG_A_64 UINT64_C(6364136223846793005) -#define PRNG_C_64 UINT64_C(1442695040888963407) +#define PRNG_A_64 UINT64_C(6364136223846793005) +#define PRNG_C_64 UINT64_C(1442695040888963407) JEMALLOC_ALWAYS_INLINE uint32_t prng_state_next_u32(uint32_t state) { @@ -48,7 +49,7 @@ prng_state_next_zu(size_t state) { #elif LG_SIZEOF_PTR == 3 return (state * PRNG_A_64) + PRNG_C_64; #else -#error Unsupported pointer size +# error Unsupported pointer size #endif } diff --git a/dep/jemalloc/include/jemalloc/internal/prof_data.h b/dep/jemalloc/include/jemalloc/internal/prof_data.h index 4c8e22c76f20e..0af5835c600a4 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_data.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_data.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_PROF_DATA_H #define JEMALLOC_INTERNAL_PROF_DATA_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/mutex.h" extern malloc_mutex_t bt2gctx_mtx; @@ -16,22 +17,21 @@ extern size_t prof_shifted_unbiased_cnt[PROF_SC_NSIZES]; void prof_bt_hash(const void *key, size_t r_hash[2]); bool prof_bt_keycomp(const void *k1, const void *k2); -bool prof_data_init(tsd_t *tsd); +bool prof_data_init(tsd_t *tsd); prof_tctx_t *prof_lookup(tsd_t *tsd, prof_bt_t *bt); -char *prof_thread_name_alloc(tsd_t *tsd, const char *thread_name); -int prof_thread_name_set_impl(tsd_t *tsd, const char *thread_name); -void prof_unbias_map_init(); +int prof_thread_name_set_impl(tsd_t *tsd, const char *thread_name); +void prof_unbias_map_init(void); void prof_dump_impl(tsd_t *tsd, write_cb_t *prof_dump_write, void *cbopaque, prof_tdata_t *tdata, bool leakcheck); -prof_tdata_t * prof_tdata_init_impl(tsd_t *tsd, uint64_t thr_uid, +prof_tdata_t *prof_tdata_init_impl(tsd_t *tsd, uint64_t thr_uid, uint64_t thr_discrim, char *thread_name, bool active); -void prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata); -void prof_reset(tsd_t *tsd, size_t lg_sample); -void prof_tctx_try_destroy(tsd_t *tsd, prof_tctx_t *tctx); +void prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata); +void prof_reset(tsd_t *tsd, size_t lg_sample); +void prof_tctx_try_destroy(tsd_t *tsd, prof_tctx_t *tctx); /* Used in unit tests. */ size_t prof_tdata_count(void); size_t prof_bt_count(void); -void prof_cnt_all(prof_cnt_t *cnt_all); +void prof_cnt_all(prof_cnt_t *cnt_all); #endif /* JEMALLOC_INTERNAL_PROF_DATA_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/prof_externs.h b/dep/jemalloc/include/jemalloc/internal/prof_externs.h index bdff1349aeafc..e07e69f556fee 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_externs.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_externs.h @@ -1,28 +1,35 @@ #ifndef JEMALLOC_INTERNAL_PROF_EXTERNS_H #define JEMALLOC_INTERNAL_PROF_EXTERNS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" #include "jemalloc/internal/mutex.h" #include "jemalloc/internal/prof_hook.h" - -extern bool opt_prof; -extern bool opt_prof_active; -extern bool opt_prof_thread_active_init; -extern size_t opt_lg_prof_sample; /* Mean bytes between samples. */ -extern ssize_t opt_lg_prof_interval; /* lg(prof_interval). */ -extern bool opt_prof_gdump; /* High-water memory dumping. */ -extern bool opt_prof_final; /* Final profile dumping. */ -extern bool opt_prof_leak; /* Dump leak summary at exit. */ -extern bool opt_prof_leak_error; /* Exit with error code if memory leaked */ -extern bool opt_prof_accum; /* Report cumulative bytes. */ -extern bool opt_prof_log; /* Turn logging on at boot. */ -extern char opt_prof_prefix[ - /* Minimize memory bloat for non-prof builds. */ +#include "jemalloc/internal/thread_event_registry.h" + +extern bool opt_prof; +extern bool opt_prof_active; +extern bool opt_prof_thread_active_init; +extern unsigned opt_prof_bt_max; +extern size_t opt_lg_prof_sample; /* Mean bytes between samples. */ +extern ssize_t opt_lg_prof_interval; /* lg(prof_interval). */ +extern bool opt_prof_gdump; /* High-water memory dumping. */ +extern bool opt_prof_final; /* Final profile dumping. */ +extern bool opt_prof_leak; /* Dump leak summary at exit. */ +extern bool opt_prof_leak_error; /* Exit with error code if memory leaked */ +extern bool opt_prof_accum; /* Report cumulative bytes. */ +extern bool opt_prof_log; /* Turn logging on at boot. */ +extern char opt_prof_prefix[ +/* Minimize memory bloat for non-prof builds. */ #ifdef JEMALLOC_PROF PATH_MAX + #endif 1]; extern bool opt_prof_unbias; +/* Include pid namespace in profile file names. */ +extern bool opt_prof_pid_namespace; + /* For recording recent allocations */ extern ssize_t opt_prof_recent_alloc_max; @@ -49,47 +56,110 @@ extern size_t lg_prof_sample; extern bool prof_booted; -void prof_backtrace_hook_set(prof_backtrace_hook_t hook); -prof_backtrace_hook_t prof_backtrace_hook_get(); +void prof_backtrace_hook_set(prof_backtrace_hook_t hook); +prof_backtrace_hook_t prof_backtrace_hook_get(void); + +void prof_dump_hook_set(prof_dump_hook_t hook); +prof_dump_hook_t prof_dump_hook_get(void); -void prof_dump_hook_set(prof_dump_hook_t hook); -prof_dump_hook_t prof_dump_hook_get(); +void prof_sample_hook_set(prof_sample_hook_t hook); +prof_sample_hook_t prof_sample_hook_get(void); + +void prof_sample_free_hook_set(prof_sample_free_hook_t hook); +prof_sample_free_hook_t prof_sample_free_hook_get(void); /* Functions only accessed in prof_inlines.h */ prof_tdata_t *prof_tdata_init(tsd_t *tsd); prof_tdata_t *prof_tdata_reinit(tsd_t *tsd, prof_tdata_t *tdata); void prof_alloc_rollback(tsd_t *tsd, prof_tctx_t *tctx); -void prof_malloc_sample_object(tsd_t *tsd, const void *ptr, size_t size, - size_t usize, prof_tctx_t *tctx); -void prof_free_sampled_object(tsd_t *tsd, size_t usize, prof_info_t *prof_info); +void prof_malloc_sample_object( + tsd_t *tsd, const void *ptr, size_t size, size_t usize, prof_tctx_t *tctx); +void prof_free_sampled_object( + tsd_t *tsd, const void *ptr, size_t usize, prof_info_t *prof_info); prof_tctx_t *prof_tctx_create(tsd_t *tsd); -void prof_idump(tsdn_t *tsdn); -bool prof_mdump(tsd_t *tsd, const char *filename); -void prof_gdump(tsdn_t *tsdn); +void prof_idump(tsdn_t *tsdn); +bool prof_mdump(tsd_t *tsd, const char *filename); +void prof_gdump(tsdn_t *tsdn); -void prof_tdata_cleanup(tsd_t *tsd); -bool prof_active_get(tsdn_t *tsdn); -bool prof_active_set(tsdn_t *tsdn, bool active); +void prof_tdata_cleanup(tsd_t *tsd); +bool prof_active_get(tsdn_t *tsdn); +bool prof_active_set(tsdn_t *tsdn, bool active); const char *prof_thread_name_get(tsd_t *tsd); -int prof_thread_name_set(tsd_t *tsd, const char *thread_name); -bool prof_thread_active_get(tsd_t *tsd); -bool prof_thread_active_set(tsd_t *tsd, bool active); -bool prof_thread_active_init_get(tsdn_t *tsdn); -bool prof_thread_active_init_set(tsdn_t *tsdn, bool active_init); -bool prof_gdump_get(tsdn_t *tsdn); -bool prof_gdump_set(tsdn_t *tsdn, bool active); -void prof_boot0(void); -void prof_boot1(void); -bool prof_boot2(tsd_t *tsd, base_t *base); -void prof_prefork0(tsdn_t *tsdn); -void prof_prefork1(tsdn_t *tsdn); -void prof_postfork_parent(tsdn_t *tsdn); -void prof_postfork_child(tsdn_t *tsdn); - -/* Only accessed by thread event. */ +int prof_thread_name_set(tsd_t *tsd, const char *thread_name); +bool prof_thread_active_get(tsd_t *tsd); +bool prof_thread_active_set(tsd_t *tsd, bool active); +bool prof_thread_active_init_get(tsdn_t *tsdn); +bool prof_thread_active_init_set(tsdn_t *tsdn, bool active_init); +bool prof_gdump_get(tsdn_t *tsdn); +bool prof_gdump_set(tsdn_t *tsdn, bool active); +void prof_boot0(void); +void prof_boot1(void); +bool prof_boot2(tsd_t *tsd, base_t *base); +void prof_prefork0(tsdn_t *tsdn); +void prof_prefork1(tsdn_t *tsdn); +void prof_postfork_parent(tsdn_t *tsdn); +void prof_postfork_child(tsdn_t *tsdn); + uint64_t prof_sample_new_event_wait(tsd_t *tsd); -uint64_t prof_sample_postponed_event_wait(tsd_t *tsd); -void prof_sample_event_handler(tsd_t *tsd, uint64_t elapsed); +uint64_t tsd_prof_sample_event_wait_get(tsd_t *tsd); + +/* + * The lookahead functionality facilitates events to be able to lookahead, i.e. + * without touching the event counters, to determine whether an event would be + * triggered. The event counters are not advanced until the end of the + * allocation / deallocation calls, so the lookahead can be useful if some + * preparation work for some event must be done early in the allocation / + * deallocation calls. + * + * Currently only the profiling sampling event needs the lookahead + * functionality, so we don't yet define general purpose lookahead functions. + * + * Surplus is a terminology referring to the amount of bytes beyond what's + * needed for triggering an event, which can be a useful quantity to have in + * general when lookahead is being called. + * + * This function returns true if allocation of usize would go above the next + * trigger for prof event, and false otherwise. + * If function returns true surplus will contain number of bytes beyond that + * trigger. + */ + +JEMALLOC_ALWAYS_INLINE bool +te_prof_sample_event_lookahead_surplus( + tsd_t *tsd, size_t usize, size_t *surplus) { + if (surplus != NULL) { + /* + * This is a dead store: the surplus will be overwritten before + * any read. The initialization suppresses compiler warnings. + * Meanwhile, using SIZE_MAX to initialize is good for + * debugging purpose, because a valid surplus value is strictly + * less than usize, which is at most SIZE_MAX. + */ + *surplus = SIZE_MAX; + } + if (unlikely(!tsd_nominal(tsd) || tsd_reentrancy_level_get(tsd) > 0)) { + return false; + } + /* The subtraction is intentionally susceptible to underflow. */ + uint64_t accumbytes = tsd_thread_allocated_get(tsd) + usize + - tsd_thread_allocated_last_event_get(tsd); + uint64_t sample_wait = tsd_prof_sample_event_wait_get(tsd); + if (accumbytes < sample_wait) { + return false; + } + assert(accumbytes - sample_wait < (uint64_t)usize); + if (surplus != NULL) { + *surplus = (size_t)(accumbytes - sample_wait); + } + return true; +} + +JEMALLOC_ALWAYS_INLINE bool +te_prof_sample_event_lookahead(tsd_t *tsd, size_t usize) { + return te_prof_sample_event_lookahead_surplus(tsd, usize, NULL); +} + +extern te_base_cb_t prof_sample_te_handler; #endif /* JEMALLOC_INTERNAL_PROF_EXTERNS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/prof_hook.h b/dep/jemalloc/include/jemalloc/internal/prof_hook.h index 150d19d3d61cc..d5a9b0ff801cc 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_hook.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_hook.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_PROF_HOOK_H #define JEMALLOC_INTERNAL_PROF_HOOK_H +#include "jemalloc/internal/jemalloc_preamble.h" + /* * The hooks types of which are declared in this file are experimental and * undocumented, thus the typedefs are located in an 'internal' header. @@ -18,4 +20,11 @@ typedef void (*prof_backtrace_hook_t)(void **, unsigned *, unsigned); */ typedef void (*prof_dump_hook_t)(const char *filename); +/* ptr, size, backtrace vector, backtrace vector length, usize */ +typedef void (*prof_sample_hook_t)(const void *ptr, size_t size, + void **backtrace, unsigned backtrace_length, size_t usize); + +/* ptr, size */ +typedef void (*prof_sample_free_hook_t)(const void *, size_t); + #endif /* JEMALLOC_INTERNAL_PROF_HOOK_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/prof_inlines.h b/dep/jemalloc/include/jemalloc/internal/prof_inlines.h index a8e7e7fb663e1..4a36bd7a2d44a 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_inlines.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_inlines.h @@ -1,12 +1,17 @@ #ifndef JEMALLOC_INTERNAL_PROF_INLINES_H #define JEMALLOC_INTERNAL_PROF_INLINES_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_inlines_b.h" +#include "jemalloc/internal/jemalloc_internal_inlines_c.h" +#include "jemalloc/internal/prof_externs.h" +#include "jemalloc/internal/prof_structs.h" #include "jemalloc/internal/safety_check.h" #include "jemalloc/internal/sz.h" #include "jemalloc/internal/thread_event.h" JEMALLOC_ALWAYS_INLINE void -prof_active_assert() { +prof_active_assert(void) { cassert(config_prof); /* * If opt_prof is off, then prof_active must always be off, regardless @@ -37,6 +42,22 @@ prof_gdump_get_unlocked(void) { return prof_gdump_val; } +JEMALLOC_ALWAYS_INLINE void +prof_thread_name_assert(prof_tdata_t *tdata) { + if (!config_debug) { + return; + } + prof_active_assert(); + + bool terminated = false; + for (unsigned i = 0; i < PROF_THREAD_NAME_MAX_LEN; i++) { + if (tdata->thread_name[i] == '\0') { + terminated = true; + } + } + assert(terminated); +} + JEMALLOC_ALWAYS_INLINE prof_tdata_t * prof_tdata_get(tsd_t *tsd, bool create) { prof_tdata_t *tdata; @@ -58,6 +79,10 @@ prof_tdata_get(tsd_t *tsd, bool create) { assert(tdata == NULL || tdata->attached); } + if (tdata != NULL) { + prof_thread_name_assert(tdata); + } + return tdata; } @@ -81,6 +106,11 @@ prof_info_get_and_reset_recent(tsd_t *tsd, const void *ptr, arena_prof_info_get(tsd, ptr, alloc_ctx, prof_info, true); } +JEMALLOC_ALWAYS_INLINE bool +prof_tctx_is_valid(const prof_tctx_t *tctx) { + return tctx != NULL && tctx != PROF_TCTX_SENTINEL; +} + JEMALLOC_ALWAYS_INLINE void prof_tctx_reset(tsd_t *tsd, const void *ptr, emap_alloc_ctx_t *alloc_ctx) { cassert(config_prof); @@ -101,7 +131,7 @@ JEMALLOC_ALWAYS_INLINE void prof_info_set(tsd_t *tsd, edata_t *edata, prof_tctx_t *tctx, size_t size) { cassert(config_prof); assert(edata != NULL); - assert((uintptr_t)tctx > (uintptr_t)1U); + assert(prof_tctx_is_valid(tctx)); arena_prof_info_set(tsd, edata, tctx, size); } @@ -134,9 +164,9 @@ JEMALLOC_ALWAYS_INLINE prof_tctx_t * prof_alloc_prep(tsd_t *tsd, bool prof_active, bool sample_event) { prof_tctx_t *ret; - if (!prof_active || - likely(prof_sample_should_skip(tsd, sample_event))) { - ret = (prof_tctx_t *)(uintptr_t)1U; + if (!prof_active + || likely(prof_sample_should_skip(tsd, sample_event))) { + ret = PROF_TCTX_SENTINEL; } else { ret = prof_tctx_create(tsd); } @@ -151,7 +181,7 @@ prof_malloc(tsd_t *tsd, const void *ptr, size_t size, size_t usize, assert(ptr != NULL); assert(usize == isalloc(tsd_tsdn(tsd), ptr)); - if (unlikely((uintptr_t)tctx > (uintptr_t)1U)) { + if (unlikely(prof_tctx_is_valid(tctx))) { prof_malloc_sample_object(tsd, ptr, size, usize, tctx); } else { prof_tctx_reset(tsd, ptr, alloc_ctx); @@ -165,7 +195,7 @@ prof_realloc(tsd_t *tsd, const void *ptr, size_t size, size_t usize, bool sampled, old_sampled, moved; cassert(config_prof); - assert(ptr != NULL || (uintptr_t)tctx <= (uintptr_t)1U); + assert(ptr != NULL || !prof_tctx_is_valid(tctx)); if (prof_active && ptr != NULL) { assert(usize == isalloc(tsd_tsdn(tsd), ptr)); @@ -178,12 +208,12 @@ prof_realloc(tsd_t *tsd, const void *ptr, size_t size, size_t usize, * sample threshold. */ prof_alloc_rollback(tsd, tctx); - tctx = (prof_tctx_t *)(uintptr_t)1U; + tctx = PROF_TCTX_SENTINEL; } } - sampled = ((uintptr_t)tctx > (uintptr_t)1U); - old_sampled = ((uintptr_t)old_prof_info->alloc_tctx > (uintptr_t)1U); + sampled = prof_tctx_is_valid(tctx); + old_sampled = prof_tctx_is_valid(old_prof_info->alloc_tctx); moved = (ptr != old_ptr); if (unlikely(sampled)) { @@ -201,7 +231,7 @@ prof_realloc(tsd_t *tsd, const void *ptr, size_t size, size_t usize, } else { prof_info_t prof_info; prof_info_get(tsd, ptr, NULL, &prof_info); - assert((uintptr_t)prof_info.alloc_tctx == (uintptr_t)1U); + assert(prof_info.alloc_tctx == PROF_TCTX_SENTINEL); } /* @@ -212,31 +242,29 @@ prof_realloc(tsd_t *tsd, const void *ptr, size_t size, size_t usize, * counters. */ if (unlikely(old_sampled)) { - prof_free_sampled_object(tsd, old_usize, old_prof_info); + prof_free_sampled_object( + tsd, old_ptr, old_usize, old_prof_info); } } JEMALLOC_ALWAYS_INLINE size_t -prof_sample_align(size_t orig_align) { +prof_sample_align(size_t usize, size_t orig_align) { /* - * Enforce page alignment, so that sampled allocations can be identified + * Enforce alignment, so that sampled allocations can be identified * w/o metadata lookup. */ assert(opt_prof); - return (opt_cache_oblivious && orig_align < PAGE) ? PAGE : - orig_align; -} - -JEMALLOC_ALWAYS_INLINE bool -prof_sample_aligned(const void *ptr) { - return ((uintptr_t)ptr & PAGE_MASK) == 0; + return (orig_align < PROF_SAMPLE_ALIGNMENT + && (sz_can_use_slab(usize) || opt_cache_oblivious)) + ? PROF_SAMPLE_ALIGNMENT + : orig_align; } JEMALLOC_ALWAYS_INLINE bool prof_sampled(tsd_t *tsd, const void *ptr) { prof_info_t prof_info; prof_info_get(tsd, ptr, NULL, &prof_info); - bool sampled = (uintptr_t)prof_info.alloc_tctx > (uintptr_t)1U; + bool sampled = prof_tctx_is_valid(prof_info.alloc_tctx); if (sampled) { assert(prof_sample_aligned(ptr)); } @@ -244,18 +272,32 @@ prof_sampled(tsd_t *tsd, const void *ptr) { } JEMALLOC_ALWAYS_INLINE void -prof_free(tsd_t *tsd, const void *ptr, size_t usize, - emap_alloc_ctx_t *alloc_ctx) { +prof_free( + tsd_t *tsd, const void *ptr, size_t usize, emap_alloc_ctx_t *alloc_ctx) { prof_info_t prof_info; prof_info_get_and_reset_recent(tsd, ptr, alloc_ctx, &prof_info); cassert(config_prof); assert(usize == isalloc(tsd_tsdn(tsd), ptr)); - if (unlikely((uintptr_t)prof_info.alloc_tctx > (uintptr_t)1U)) { + if (unlikely(prof_tctx_is_valid(prof_info.alloc_tctx))) { assert(prof_sample_aligned(ptr)); - prof_free_sampled_object(tsd, usize, &prof_info); + prof_free_sampled_object(tsd, ptr, usize, &prof_info); } } +JEMALLOC_ALWAYS_INLINE bool +prof_thread_name_empty(prof_tdata_t *tdata) { + prof_active_assert(); + + return (tdata->thread_name[0] == '\0'); +} + +JEMALLOC_ALWAYS_INLINE void +prof_thread_name_clear(prof_tdata_t *tdata) { + prof_active_assert(); + + tdata->thread_name[0] = '\0'; +} + #endif /* JEMALLOC_INTERNAL_PROF_INLINES_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/prof_log.h b/dep/jemalloc/include/jemalloc/internal/prof_log.h index ccb557dde69fb..d9b97dc874f83 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_log.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_log.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_PROF_LOG_H #define JEMALLOC_INTERNAL_PROF_LOG_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/mutex.h" extern malloc_mutex_t log_mtx; @@ -12,9 +13,9 @@ bool prof_log_init(tsd_t *tsdn); size_t prof_log_bt_count(void); size_t prof_log_alloc_count(void); size_t prof_log_thr_count(void); -bool prof_log_is_logging(void); -bool prof_log_rep_check(void); -void prof_log_dummy_set(bool new_value); +bool prof_log_is_logging(void); +bool prof_log_rep_check(void); +void prof_log_dummy_set(bool new_value); bool prof_log_start(tsdn_t *tsdn, const char *filename); bool prof_log_stop(tsdn_t *tsdn); diff --git a/dep/jemalloc/include/jemalloc/internal/prof_recent.h b/dep/jemalloc/include/jemalloc/internal/prof_recent.h index df41023626992..33649e6daa3d2 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_recent.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_recent.h @@ -1,13 +1,17 @@ #ifndef JEMALLOC_INTERNAL_PROF_RECENT_H #define JEMALLOC_INTERNAL_PROF_RECENT_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/edata.h" +#include "jemalloc/internal/mutex.h" + extern malloc_mutex_t prof_recent_alloc_mtx; extern malloc_mutex_t prof_recent_dump_mtx; bool prof_recent_alloc_prepare(tsd_t *tsd, prof_tctx_t *tctx); void prof_recent_alloc(tsd_t *tsd, edata_t *edata, size_t size, size_t usize); void prof_recent_alloc_reset(tsd_t *tsd, edata_t *edata); -bool prof_recent_init(); +bool prof_recent_init(void); void edata_prof_recent_alloc_init(edata_t *edata); /* Used in unit tests. */ @@ -16,7 +20,7 @@ extern prof_recent_list_t prof_recent_alloc_list; edata_t *prof_recent_alloc_edata_get_no_lock_test(const prof_recent_t *node); prof_recent_t *edata_prof_recent_alloc_get_no_lock_test(const edata_t *edata); -ssize_t prof_recent_alloc_max_ctl_read(); +ssize_t prof_recent_alloc_max_ctl_read(void); ssize_t prof_recent_alloc_max_ctl_write(tsd_t *tsd, ssize_t max); void prof_recent_alloc_dump(tsd_t *tsd, write_cb_t *write_cb, void *cbopaque); diff --git a/dep/jemalloc/include/jemalloc/internal/prof_stats.h b/dep/jemalloc/include/jemalloc/internal/prof_stats.h index 7954e82de7962..c4d269e54d7fd 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_stats.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_stats.h @@ -1,6 +1,9 @@ #ifndef JEMALLOC_INTERNAL_PROF_STATS_H #define JEMALLOC_INTERNAL_PROF_STATS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/mutex.h" + typedef struct prof_stats_s prof_stats_t; struct prof_stats_s { uint64_t req_sum; diff --git a/dep/jemalloc/include/jemalloc/internal/prof_structs.h b/dep/jemalloc/include/jemalloc/internal/prof_structs.h index dd22115f62228..d38b15eac7739 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_structs.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_structs.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_PROF_STRUCTS_H #define JEMALLOC_INTERNAL_PROF_STRUCTS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/ckh.h" #include "jemalloc/internal/edata.h" #include "jemalloc/internal/mutex.h" @@ -9,29 +10,29 @@ struct prof_bt_s { /* Backtrace, stored as len program counters. */ - void **vec; - unsigned len; + void **vec; + unsigned len; }; #ifdef JEMALLOC_PROF_LIBGCC /* Data structure passed to libgcc _Unwind_Backtrace() callback functions. */ typedef struct { - void **vec; - unsigned *len; - unsigned max; + void **vec; + unsigned *len; + unsigned max; } prof_unwind_data_t; #endif struct prof_cnt_s { /* Profiling counters. */ - uint64_t curobjs; - uint64_t curobjs_shifted_unbiased; - uint64_t curbytes; - uint64_t curbytes_unbiased; - uint64_t accumobjs; - uint64_t accumobjs_shifted_unbiased; - uint64_t accumbytes; - uint64_t accumbytes_unbiased; + uint64_t curobjs; + uint64_t curobjs_shifted_unbiased; + uint64_t curbytes; + uint64_t curbytes_unbiased; + uint64_t accumobjs; + uint64_t accumobjs_shifted_unbiased; + uint64_t accumbytes; + uint64_t accumbytes_unbiased; }; typedef enum { @@ -43,26 +44,26 @@ typedef enum { struct prof_tctx_s { /* Thread data for thread that performed the allocation. */ - prof_tdata_t *tdata; + prof_tdata_t *tdata; /* * Copy of tdata->thr_{uid,discrim}, necessary because tdata may be * defunct during teardown. */ - uint64_t thr_uid; - uint64_t thr_discrim; + uint64_t thr_uid; + uint64_t thr_discrim; /* * Reference count of how many times this tctx object is referenced in * recent allocation / deallocation records, protected by tdata->lock. */ - uint64_t recent_count; + uint64_t recent_count; /* Profiling counters, protected by tdata->lock. */ - prof_cnt_t cnts; + prof_cnt_t cnts; /* Associated global context. */ - prof_gctx_t *gctx; + prof_gctx_t *gctx; /* * UID that distinguishes multiple tctx's created by the same thread, @@ -77,40 +78,40 @@ struct prof_tctx_s { * threshold can be hit again before the first consumer finishes * executing prof_tctx_destroy(). */ - uint64_t tctx_uid; + uint64_t tctx_uid; /* Linkage into gctx's tctxs. */ - rb_node(prof_tctx_t) tctx_link; + rb_node(prof_tctx_t) tctx_link; /* * True during prof_alloc_prep()..prof_malloc_sample_object(), prevents * sample vs destroy race. */ - bool prepared; + bool prepared; /* Current dump-related state, protected by gctx->lock. */ - prof_tctx_state_t state; + prof_tctx_state_t state; /* * Copy of cnts snapshotted during early dump phase, protected by * dump_mtx. */ - prof_cnt_t dump_cnts; + prof_cnt_t dump_cnts; }; typedef rb_tree(prof_tctx_t) prof_tctx_tree_t; struct prof_info_s { /* Time when the allocation was made. */ - nstime_t alloc_time; + nstime_t alloc_time; /* Points to the prof_tctx_t corresponding to the allocation. */ - prof_tctx_t *alloc_tctx; + prof_tctx_t *alloc_tctx; /* Allocation request size. */ - size_t alloc_size; + size_t alloc_size; }; struct prof_gctx_s { /* Protects nlimbo, cnt_summed, and tctxs. */ - malloc_mutex_t *lock; + malloc_mutex_t *lock; /* * Number of threads that currently cause this gctx to be in a state of @@ -122,54 +123,48 @@ struct prof_gctx_s { * nlimbo must be 1 (single destroyer) in order to safely destroy the * gctx. */ - unsigned nlimbo; + unsigned nlimbo; /* * Tree of profile counters, one for each thread that has allocated in * this context. */ - prof_tctx_tree_t tctxs; + prof_tctx_tree_t tctxs; /* Linkage for tree of contexts to be dumped. */ - rb_node(prof_gctx_t) dump_link; + rb_node(prof_gctx_t) dump_link; /* Temporary storage for summation during dump. */ - prof_cnt_t cnt_summed; + prof_cnt_t cnt_summed; /* Associated backtrace. */ - prof_bt_t bt; + prof_bt_t bt; /* Backtrace vector, variable size, referred to by bt. */ - void *vec[1]; + void *vec[1]; }; typedef rb_tree(prof_gctx_t) prof_gctx_tree_t; struct prof_tdata_s { - malloc_mutex_t *lock; + malloc_mutex_t *lock; /* Monotonically increasing unique thread identifier. */ - uint64_t thr_uid; + uint64_t thr_uid; /* * Monotonically increasing discriminator among tdata structures * associated with the same thr_uid. */ - uint64_t thr_discrim; - - /* Included in heap profile dumps if non-NULL. */ - char *thread_name; + uint64_t thr_discrim; - bool attached; - bool expired; - - rb_node(prof_tdata_t) tdata_link; + rb_node(prof_tdata_t) tdata_link; /* * Counter used to initialize prof_tctx_t's tctx_uid. No locking is * necessary when incrementing this field, because only one thread ever * does so. */ - uint64_t tctx_uid_next; + uint64_t tctx_uid_next; /* * Hash of (prof_bt_t *)-->(prof_tctx_t *). Each thread tracks @@ -177,12 +172,15 @@ struct prof_tdata_s { * associated with thread-specific prof_tctx_t objects. Other threads * may write to prof_tctx_t contents when freeing associated objects. */ - ckh_t bt2tctx; + ckh_t bt2tctx; + + /* Included in heap profile dumps if has content. */ + char thread_name[PROF_THREAD_NAME_MAX_LEN]; /* State used to avoid dumping while operating on prof internals. */ - bool enq; - bool enq_idump; - bool enq_gdump; + bool enq; + bool enq_idump; + bool enq_gdump; /* * Set to true during an early dump phase for tdata's which are @@ -190,19 +188,22 @@ struct prof_tdata_s { * to false so that they aren't accidentally included in later dump * phases. */ - bool dumping; + bool dumping; /* * True if profiling is active for this tdata's thread * (thread.prof.active mallctl). */ - bool active; + bool active; + + bool attached; + bool expired; /* Temporary storage for summation during dump. */ - prof_cnt_t cnt_summed; + prof_cnt_t cnt_summed; /* Backtrace vector, used for calls to prof_backtrace(). */ - void *vec[PROF_BT_MAX]; + void **vec; }; typedef rb_tree(prof_tdata_t) prof_tdata_tree_t; @@ -211,9 +212,9 @@ struct prof_recent_s { nstime_t dalloc_time; ql_elm(prof_recent_t) link; - size_t size; - size_t usize; - atomic_p_t alloc_edata; /* NULL means allocation has been freed. */ + size_t size; + size_t usize; + atomic_p_t alloc_edata; /* NULL means allocation has been freed. */ prof_tctx_t *alloc_tctx; prof_tctx_t *dalloc_tctx; }; diff --git a/dep/jemalloc/include/jemalloc/internal/prof_sys.h b/dep/jemalloc/include/jemalloc/internal/prof_sys.h index 3d25a4295e284..0745b991cf5e3 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_sys.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_sys.h @@ -1,30 +1,35 @@ #ifndef JEMALLOC_INTERNAL_PROF_SYS_H #define JEMALLOC_INTERNAL_PROF_SYS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" +#include "jemalloc/internal/mutex.h" + extern malloc_mutex_t prof_dump_filename_mtx; -extern base_t *prof_base; +extern base_t *prof_base; void bt_init(prof_bt_t *bt, void **vec); void prof_backtrace(tsd_t *tsd, prof_bt_t *bt); -void prof_hooks_init(); -void prof_unwind_init(); +void prof_hooks_init(void); +void prof_unwind_init(void); void prof_sys_thread_name_fetch(tsd_t *tsd); -int prof_getpid(void); +int prof_getpid(void); void prof_get_default_filename(tsdn_t *tsdn, char *filename, uint64_t ind); bool prof_prefix_set(tsdn_t *tsdn, const char *prefix); void prof_fdump_impl(tsd_t *tsd); void prof_idump_impl(tsd_t *tsd); bool prof_mdump_impl(tsd_t *tsd, const char *filename); void prof_gdump_impl(tsd_t *tsd); +int prof_thread_stack_range(uintptr_t fp, uintptr_t *low, uintptr_t *high); /* Used in unit tests. */ -typedef int (prof_sys_thread_name_read_t)(char *buf, size_t limit); +typedef int(prof_sys_thread_name_read_t)(char *buf, size_t limit); extern prof_sys_thread_name_read_t *JET_MUTABLE prof_sys_thread_name_read; -typedef int (prof_dump_open_file_t)(const char *, int); +typedef int(prof_dump_open_file_t)(const char *, int); extern prof_dump_open_file_t *JET_MUTABLE prof_dump_open_file; -typedef ssize_t (prof_dump_write_file_t)(int, const void *, size_t); +typedef ssize_t(prof_dump_write_file_t)(int, const void *, size_t); extern prof_dump_write_file_t *JET_MUTABLE prof_dump_write_file; -typedef int (prof_dump_open_maps_t)(); +typedef int(prof_dump_open_maps_t)(void); extern prof_dump_open_maps_t *JET_MUTABLE prof_dump_open_maps; #endif /* JEMALLOC_INTERNAL_PROF_SYS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/prof_types.h b/dep/jemalloc/include/jemalloc/internal/prof_types.h index ba6286548e04b..7468885ef7ead 100644 --- a/dep/jemalloc/include/jemalloc/internal/prof_types.h +++ b/dep/jemalloc/include/jemalloc/internal/prof_types.h @@ -1,75 +1,94 @@ #ifndef JEMALLOC_INTERNAL_PROF_TYPES_H #define JEMALLOC_INTERNAL_PROF_TYPES_H -typedef struct prof_bt_s prof_bt_t; -typedef struct prof_cnt_s prof_cnt_t; -typedef struct prof_tctx_s prof_tctx_t; -typedef struct prof_info_s prof_info_t; -typedef struct prof_gctx_s prof_gctx_t; -typedef struct prof_tdata_s prof_tdata_t; +typedef struct prof_bt_s prof_bt_t; +typedef struct prof_cnt_s prof_cnt_t; +typedef struct prof_tctx_s prof_tctx_t; +typedef struct prof_info_s prof_info_t; +typedef struct prof_gctx_s prof_gctx_t; +typedef struct prof_tdata_s prof_tdata_t; typedef struct prof_recent_s prof_recent_t; /* Option defaults. */ #ifdef JEMALLOC_PROF -# define PROF_PREFIX_DEFAULT "jeprof" +# define PROF_PREFIX_DEFAULT "jeprof" #else -# define PROF_PREFIX_DEFAULT "" +# define PROF_PREFIX_DEFAULT "" #endif -#define LG_PROF_SAMPLE_DEFAULT 19 -#define LG_PROF_INTERVAL_DEFAULT -1 +#define LG_PROF_SAMPLE_DEFAULT 19 +#define LG_PROF_INTERVAL_DEFAULT -1 /* * Hard limit on stack backtrace depth. The version of prof_backtrace() that * is based on __builtin_return_address() necessarily has a hard-coded number * of backtrace frame handlers, and should be kept in sync with this setting. */ -#define PROF_BT_MAX 128 +#ifdef JEMALLOC_PROF_GCC +# define PROF_BT_MAX_LIMIT 256 +#else +# define PROF_BT_MAX_LIMIT UINT_MAX +#endif +#define PROF_BT_MAX_DEFAULT 128 /* Initial hash table size. */ -#define PROF_CKH_MINITEMS 64 +#define PROF_CKH_MINITEMS 64 /* Size of memory buffer to use when writing dump files. */ #ifndef JEMALLOC_PROF /* Minimize memory bloat for non-prof builds. */ -# define PROF_DUMP_BUFSIZE 1 +# define PROF_DUMP_BUFSIZE 1 #elif defined(JEMALLOC_DEBUG) /* Use a small buffer size in debug build, mainly to facilitate testing. */ -# define PROF_DUMP_BUFSIZE 16 +# define PROF_DUMP_BUFSIZE 16 #else -# define PROF_DUMP_BUFSIZE 65536 +# define PROF_DUMP_BUFSIZE 65536 #endif /* Size of size class related tables */ #ifdef JEMALLOC_PROF -# define PROF_SC_NSIZES SC_NSIZES +# define PROF_SC_NSIZES SC_NSIZES #else /* Minimize memory bloat for non-prof builds. */ -# define PROF_SC_NSIZES 1 +# define PROF_SC_NSIZES 1 #endif /* Size of stack-allocated buffer used by prof_printf(). */ -#define PROF_PRINTF_BUFSIZE 128 +#define PROF_PRINTF_BUFSIZE 128 /* * Number of mutexes shared among all gctx's. No space is allocated for these * unless profiling is enabled, so it's okay to over-provision. */ -#define PROF_NCTX_LOCKS 1024 +#define PROF_NCTX_LOCKS 1024 /* * Number of mutexes shared among all tdata's. No space is allocated for these * unless profiling is enabled, so it's okay to over-provision. */ -#define PROF_NTDATA_LOCKS 256 +#define PROF_NTDATA_LOCKS 256 /* Minimize memory bloat for non-prof builds. */ #ifdef JEMALLOC_PROF -#define PROF_DUMP_FILENAME_LEN (PATH_MAX + 1) +# define PROF_DUMP_FILENAME_LEN (PATH_MAX + 1) #else -#define PROF_DUMP_FILENAME_LEN 1 +# define PROF_DUMP_FILENAME_LEN 1 #endif /* Default number of recent allocations to record. */ #define PROF_RECENT_ALLOC_MAX_DEFAULT 0 +/* Thread name storage size limit. */ +#define PROF_THREAD_NAME_MAX_LEN 16 + +/* + * Minimum required alignment for sampled allocations. Over-aligning sampled + * allocations allows us to quickly identify them on the dalloc path without + * resorting to metadata lookup. + */ +#define PROF_SAMPLE_ALIGNMENT PAGE +#define PROF_SAMPLE_ALIGNMENT_MASK PAGE_MASK + +/* NOLINTNEXTLINE(performance-no-int-to-ptr) */ +#define PROF_TCTX_SENTINEL ((prof_tctx_t *)((uintptr_t)1U)) + #endif /* JEMALLOC_INTERNAL_PROF_TYPES_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/psset.h b/dep/jemalloc/include/jemalloc/internal/psset.h index e1d64970ee140..f096e414a1579 100644 --- a/dep/jemalloc/include/jemalloc/internal/psset.h +++ b/dep/jemalloc/include/jemalloc/internal/psset.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_PSSET_H #define JEMALLOC_INTERNAL_PSSET_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/hpdata.h" /* @@ -20,6 +21,12 @@ */ #define PSSET_NPSIZES 64 +/* + * We store non-hugefied and hugified pageslabs metadata separately. + * [0] corresponds to non-hugified and [1] to hugified pageslabs. + */ +#define PSSET_NHUGE 2 + /* * We keep two purge lists per page size class; one for hugified hpdatas (at * index 2*pszind), and one for the non-hugified hpdatas (at index 2*pszind + @@ -43,21 +50,36 @@ struct psset_bin_stats_s { typedef struct psset_stats_s psset_stats_t; struct psset_stats_s { + /* + * Merged stats for all pageslabs in psset. This lets us quickly + * answer queries for the number of dirty and active pages in the + * entire set. + */ + psset_bin_stats_t merged; + + /* + * Below are the same stats, but aggregated by different + * properties of pageslabs: huginess or fullness. + */ + + /* Non-huge and huge slabs. */ + psset_bin_stats_t slabs[PSSET_NHUGE]; + /* * The second index is huge stats; nonfull_slabs[pszind][0] contains * stats for the non-huge slabs in bucket pszind, while * nonfull_slabs[pszind][1] contains stats for the huge slabs. */ - psset_bin_stats_t nonfull_slabs[PSSET_NPSIZES][2]; + psset_bin_stats_t nonfull_slabs[PSSET_NPSIZES][PSSET_NHUGE]; /* * Full slabs don't live in any edata heap, but we still track their * stats. */ - psset_bin_stats_t full_slabs[2]; + psset_bin_stats_t full_slabs[PSSET_NHUGE]; /* Empty slabs are similar. */ - psset_bin_stats_t empty_slabs[2]; + psset_bin_stats_t empty_slabs[PSSET_NHUGE]; }; typedef struct psset_s psset_t; @@ -68,13 +90,7 @@ struct psset_s { */ hpdata_age_heap_t pageslabs[PSSET_NPSIZES]; /* Bitmap for which set bits correspond to non-empty heaps. */ - fb_group_t pageslab_bitmap[FB_NGROUPS(PSSET_NPSIZES)]; - /* - * The sum of all bin stats in stats. This lets us quickly answer - * queries for the number of dirty, active, and retained pages in the - * entire set. - */ - psset_bin_stats_t merged_stats; + fb_group_t pageslab_bitmap[FB_NGROUPS(PSSET_NPSIZES)]; psset_stats_t stats; /* * Slabs with no active allocations, but which are allowed to serve new @@ -105,8 +121,12 @@ void psset_update_end(psset_t *psset, hpdata_t *ps); /* Analogous to the eset_fit; pick a hpdata to serve the request. */ hpdata_t *psset_pick_alloc(psset_t *psset, size_t size); -/* Pick one to purge. */ -hpdata_t *psset_pick_purge(psset_t *psset); +/* + * Pick one to purge that is purgable before given time (inclusive). If now + * is NULL then time is not considered. + */ +hpdata_t *psset_pick_purge(psset_t *psset, const nstime_t *now); + /* Pick one to hugify. */ hpdata_t *psset_pick_hugify(psset_t *psset); @@ -115,17 +135,17 @@ void psset_remove(psset_t *psset, hpdata_t *ps); static inline size_t psset_npageslabs(psset_t *psset) { - return psset->merged_stats.npageslabs; + return psset->stats.merged.npageslabs; } static inline size_t psset_nactive(psset_t *psset) { - return psset->merged_stats.nactive; + return psset->stats.merged.nactive; } static inline size_t psset_ndirty(psset_t *psset) { - return psset->merged_stats.ndirty; + return psset->stats.merged.ndirty; } #endif /* JEMALLOC_INTERNAL_PSSET_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/public_namespace.h b/dep/jemalloc/include/jemalloc/internal/public_namespace.h index a0ee73d4c1756..3904dd23a28ad 100644 --- a/dep/jemalloc/include/jemalloc/internal/public_namespace.h +++ b/dep/jemalloc/include/jemalloc/internal/public_namespace.h @@ -2,6 +2,8 @@ #define je_calloc JEMALLOC_N(calloc) #define je_dallocx JEMALLOC_N(dallocx) #define je_free JEMALLOC_N(free) +#define je_free_sized JEMALLOC_N(free_sized) +#define je_free_aligned_sized JEMALLOC_N(free_aligned_sized) #define je_mallctl JEMALLOC_N(mallctl) #define je_mallctlbymib JEMALLOC_N(mallctlbymib) #define je_mallctlnametomib JEMALLOC_N(mallctlnametomib) @@ -12,7 +14,7 @@ #define je_malloc_stats_print JEMALLOC_N(malloc_stats_print) #define je_malloc_usable_size JEMALLOC_N(malloc_usable_size) #define je_mallocx JEMALLOC_N(mallocx) -#define je_smallocx_54eaed1d8b56b1aa528be3bdd1877e59c56fa90c JEMALLOC_N(smallocx_54eaed1d8b56b1aa528be3bdd1877e59c56fa90c) +#define je_smallocx_ee4d7b7f9a5c1b48d462be2b65c16e4ead8e3396 JEMALLOC_N(smallocx_ee4d7b7f9a5c1b48d462be2b65c16e4ead8e3396) #define je_nallocx JEMALLOC_N(nallocx) #define je_posix_memalign JEMALLOC_N(posix_memalign) #define je_rallocx JEMALLOC_N(rallocx) @@ -22,4 +24,5 @@ #define je_xallocx JEMALLOC_N(xallocx) #define je_memalign JEMALLOC_N(memalign) #define je_valloc JEMALLOC_N(valloc) +#define je_pvalloc JEMALLOC_N(pvalloc) #define je_malloc_size JEMALLOC_N(malloc_size) diff --git a/dep/jemalloc/include/jemalloc/internal/public_unnamespace.h b/dep/jemalloc/include/jemalloc/internal/public_unnamespace.h index 7542c38a4f18e..52b2ed03294e7 100644 --- a/dep/jemalloc/include/jemalloc/internal/public_unnamespace.h +++ b/dep/jemalloc/include/jemalloc/internal/public_unnamespace.h @@ -2,6 +2,8 @@ #undef je_calloc #undef je_dallocx #undef je_free +#undef je_free_sized +#undef je_free_aligned_sized #undef je_mallctl #undef je_mallctlbymib #undef je_mallctlnametomib @@ -12,7 +14,7 @@ #undef je_malloc_stats_print #undef je_malloc_usable_size #undef je_mallocx -#undef je_smallocx_54eaed1d8b56b1aa528be3bdd1877e59c56fa90c +#undef je_smallocx_ee4d7b7f9a5c1b48d462be2b65c16e4ead8e3396 #undef je_nallocx #undef je_posix_memalign #undef je_rallocx @@ -22,4 +24,5 @@ #undef je_xallocx #undef je_memalign #undef je_valloc +#undef je_pvalloc #undef je_malloc_size diff --git a/dep/jemalloc/include/jemalloc/internal/ql.h b/dep/jemalloc/include/jemalloc/internal/ql.h index c7f52f8622195..9c1776a4566ba 100644 --- a/dep/jemalloc/include/jemalloc/internal/ql.h +++ b/dep/jemalloc/include/jemalloc/internal/ql.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_QL_H #define JEMALLOC_INTERNAL_QL_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/qr.h" /* @@ -27,33 +28,36 @@ */ /* List definitions. */ -#define ql_head(a_type) \ -struct { \ - a_type *qlh_first; \ -} +#define ql_head(a_type) \ + struct { \ + a_type *qlh_first; \ + } /* Static initializer for an empty list. */ -#define ql_head_initializer(a_head) {NULL} +#define ql_head_initializer(a_head) \ + { NULL } /* The field definition. */ -#define ql_elm(a_type) qr(a_type) +#define ql_elm(a_type) qr(a_type) /* A pointer to the first element in the list, or NULL if the list is empty. */ #define ql_first(a_head) ((a_head)->qlh_first) /* Dynamically initializes a list. */ -#define ql_new(a_head) do { \ - ql_first(a_head) = NULL; \ -} while (0) +#define ql_new(a_head) \ + do { \ + ql_first(a_head) = NULL; \ + } while (0) /* * Sets dest to be the contents of src (overwriting any elements there), leaving * src empty. */ -#define ql_move(a_head_dest, a_head_src) do { \ - ql_first(a_head_dest) = ql_first(a_head_src); \ - ql_new(a_head_src); \ -} while (0) +#define ql_move(a_head_dest, a_head_src) \ + do { \ + ql_first(a_head_dest) = ql_first(a_head_src); \ + ql_new(a_head_src); \ + } while (0) /* True if the list is empty, otherwise false. */ #define ql_empty(a_head) (ql_first(a_head) == NULL) @@ -67,85 +71,91 @@ struct { \ /* * Obtains the last item in the list. */ -#define ql_last(a_head, a_field) \ +#define ql_last(a_head, a_field) \ (ql_empty(a_head) ? NULL : qr_prev(ql_first(a_head), a_field)) /* * Gets a pointer to the next/prev element in the list. Trying to advance past * the end or retreat before the beginning of the list returns NULL. */ -#define ql_next(a_head, a_elm, a_field) \ - ((ql_last(a_head, a_field) != (a_elm)) \ - ? qr_next((a_elm), a_field) : NULL) -#define ql_prev(a_head, a_elm, a_field) \ - ((ql_first(a_head) != (a_elm)) ? qr_prev((a_elm), a_field) \ - : NULL) +#define ql_next(a_head, a_elm, a_field) \ + ((ql_last(a_head, a_field) != (a_elm)) ? qr_next((a_elm), a_field) \ + : NULL) +#define ql_prev(a_head, a_elm, a_field) \ + ((ql_first(a_head) != (a_elm)) ? qr_prev((a_elm), a_field) : NULL) /* Inserts a_elm before a_qlelm in the list. */ -#define ql_before_insert(a_head, a_qlelm, a_elm, a_field) do { \ - qr_before_insert((a_qlelm), (a_elm), a_field); \ - if (ql_first(a_head) == (a_qlelm)) { \ - ql_first(a_head) = (a_elm); \ - } \ -} while (0) +#define ql_before_insert(a_head, a_qlelm, a_elm, a_field) \ + do { \ + qr_before_insert((a_qlelm), (a_elm), a_field); \ + if (ql_first(a_head) == (a_qlelm)) { \ + ql_first(a_head) = (a_elm); \ + } \ + } while (0) /* Inserts a_elm after a_qlelm in the list. */ -#define ql_after_insert(a_qlelm, a_elm, a_field) \ +#define ql_after_insert(a_qlelm, a_elm, a_field) \ qr_after_insert((a_qlelm), (a_elm), a_field) /* Inserts a_elm as the first item in the list. */ -#define ql_head_insert(a_head, a_elm, a_field) do { \ - if (!ql_empty(a_head)) { \ - qr_before_insert(ql_first(a_head), (a_elm), a_field); \ - } \ - ql_first(a_head) = (a_elm); \ -} while (0) +#define ql_head_insert(a_head, a_elm, a_field) \ + do { \ + if (!ql_empty(a_head)) { \ + qr_before_insert(ql_first(a_head), (a_elm), a_field); \ + } \ + ql_first(a_head) = (a_elm); \ + } while (0) /* Inserts a_elm as the last item in the list. */ -#define ql_tail_insert(a_head, a_elm, a_field) do { \ - if (!ql_empty(a_head)) { \ - qr_before_insert(ql_first(a_head), (a_elm), a_field); \ - } \ - ql_first(a_head) = qr_next((a_elm), a_field); \ -} while (0) +#define ql_tail_insert(a_head, a_elm, a_field) \ + do { \ + if (!ql_empty(a_head)) { \ + qr_before_insert(ql_first(a_head), (a_elm), a_field); \ + } \ + ql_first(a_head) = qr_next((a_elm), a_field); \ + } while (0) /* * Given lists a = [a_1, ..., a_n] and [b_1, ..., b_n], results in: * a = [a1, ..., a_n, b_1, ..., b_n] and b = []. */ -#define ql_concat(a_head_a, a_head_b, a_field) do { \ - if (ql_empty(a_head_a)) { \ - ql_move(a_head_a, a_head_b); \ - } else if (!ql_empty(a_head_b)) { \ - qr_meld(ql_first(a_head_a), ql_first(a_head_b), \ - a_field); \ - ql_new(a_head_b); \ - } \ -} while (0) +#define ql_concat(a_head_a, a_head_b, a_field) \ + do { \ + if (ql_empty(a_head_a)) { \ + ql_move(a_head_a, a_head_b); \ + } else if (!ql_empty(a_head_b)) { \ + qr_meld( \ + ql_first(a_head_a), ql_first(a_head_b), a_field); \ + ql_new(a_head_b); \ + } \ + } while (0) /* Removes a_elm from the list. */ -#define ql_remove(a_head, a_elm, a_field) do { \ - if (ql_first(a_head) == (a_elm)) { \ - ql_first(a_head) = qr_next(ql_first(a_head), a_field); \ - } \ - if (ql_first(a_head) != (a_elm)) { \ - qr_remove((a_elm), a_field); \ - } else { \ - ql_new(a_head); \ - } \ -} while (0) +#define ql_remove(a_head, a_elm, a_field) \ + do { \ + if (ql_first(a_head) == (a_elm)) { \ + ql_first(a_head) = qr_next(ql_first(a_head), a_field); \ + } \ + if (ql_first(a_head) != (a_elm)) { \ + qr_remove((a_elm), a_field); \ + } else { \ + ql_new(a_head); \ + } \ + } while (0) /* Removes the first item in the list. */ -#define ql_head_remove(a_head, a_type, a_field) do { \ - a_type *t = ql_first(a_head); \ - ql_remove((a_head), t, a_field); \ -} while (0) +#define ql_head_remove(a_head, a_type, a_field) \ + do { \ + a_type *t = ql_first(a_head); \ + ql_remove((a_head), t, a_field); \ + } while (0) /* Removes the last item in the list. */ -#define ql_tail_remove(a_head, a_type, a_field) do { \ - a_type *t = ql_last(a_head, a_field); \ - ql_remove((a_head), t, a_field); \ -} while (0) +#define ql_tail_remove(a_head, a_type, a_field) \ + do { \ + a_type *t = ql_last(a_head, a_field); \ + ql_remove((a_head), t, a_field); \ + } while (0) /* * Given a = [a_1, a_2, ..., a_n-1, a_n, a_n+1, ...], @@ -154,14 +164,15 @@ struct { \ * and replaces b's contents with: * b = [a_n, a_n+1, ...] */ -#define ql_split(a_head_a, a_elm, a_head_b, a_field) do { \ - if (ql_first(a_head_a) == (a_elm)) { \ - ql_move(a_head_b, a_head_a); \ - } else { \ - qr_split(ql_first(a_head_a), (a_elm), a_field); \ - ql_first(a_head_b) = (a_elm); \ - } \ -} while (0) +#define ql_split(a_head_a, a_elm, a_head_b, a_field) \ + do { \ + if (ql_first(a_head_a) == (a_elm)) { \ + ql_move(a_head_b, a_head_a); \ + } else { \ + qr_split(ql_first(a_head_a), (a_elm), a_field); \ + ql_first(a_head_b) = (a_elm); \ + } \ + } while (0) /* * An optimized version of: @@ -169,9 +180,10 @@ struct { \ * ql_remove((a_head), t, a_field); * ql_tail_insert((a_head), t, a_field); */ -#define ql_rotate(a_head, a_field) do { \ - ql_first(a_head) = qr_next(ql_first(a_head), a_field); \ -} while (0) +#define ql_rotate(a_head, a_field) \ + do { \ + ql_first(a_head) = qr_next(ql_first(a_head), a_field); \ + } while (0) /* * Helper macro to iterate over each element in a list in order, starting from @@ -188,10 +200,10 @@ struct { \ * } */ -#define ql_foreach(a_var, a_head, a_field) \ - qr_foreach((a_var), ql_first(a_head), a_field) +#define ql_foreach(a_var, a_head, a_field) \ + qr_foreach ((a_var), ql_first(a_head), a_field) -#define ql_reverse_foreach(a_var, a_head, a_field) \ +#define ql_reverse_foreach(a_var, a_head, a_field) \ qr_reverse_foreach((a_var), ql_first(a_head), a_field) #endif /* JEMALLOC_INTERNAL_QL_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/qr.h b/dep/jemalloc/include/jemalloc/internal/qr.h index ece4f55686006..1bd61f38469b2 100644 --- a/dep/jemalloc/include/jemalloc/internal/qr.h +++ b/dep/jemalloc/include/jemalloc/internal/qr.h @@ -17,21 +17,22 @@ */ /* Ring definitions. */ -#define qr(a_type) \ -struct { \ - a_type *qre_next; \ - a_type *qre_prev; \ -} +#define qr(a_type) \ + struct { \ + a_type *qre_next; \ + a_type *qre_prev; \ + } /* * Initialize a qr link. Every link must be initialized before being used, even * if that initialization is going to be immediately overwritten (say, by being * passed into an insertion macro). */ -#define qr_new(a_qr, a_field) do { \ - (a_qr)->a_field.qre_next = (a_qr); \ - (a_qr)->a_field.qre_prev = (a_qr); \ -} while (0) +#define qr_new(a_qr, a_field) \ + do { \ + (a_qr)->a_field.qre_next = (a_qr); \ + (a_qr)->a_field.qre_prev = (a_qr); \ + } while (0) /* * Go forwards or backwards in the ring. Note that (the ring being circular), this @@ -58,26 +59,27 @@ struct { \ * * a_qr_a can directly be a qr_next() macro, but a_qr_b cannot. */ -#define qr_meld(a_qr_a, a_qr_b, a_field) do { \ - (a_qr_b)->a_field.qre_prev->a_field.qre_next = \ - (a_qr_a)->a_field.qre_prev; \ - (a_qr_a)->a_field.qre_prev = (a_qr_b)->a_field.qre_prev; \ - (a_qr_b)->a_field.qre_prev = \ - (a_qr_b)->a_field.qre_prev->a_field.qre_next; \ - (a_qr_a)->a_field.qre_prev->a_field.qre_next = (a_qr_a); \ - (a_qr_b)->a_field.qre_prev->a_field.qre_next = (a_qr_b); \ -} while (0) +#define qr_meld(a_qr_a, a_qr_b, a_field) \ + do { \ + (a_qr_b)->a_field.qre_prev->a_field.qre_next = \ + (a_qr_a)->a_field.qre_prev; \ + (a_qr_a)->a_field.qre_prev = (a_qr_b)->a_field.qre_prev; \ + (a_qr_b)->a_field.qre_prev = \ + (a_qr_b)->a_field.qre_prev->a_field.qre_next; \ + (a_qr_a)->a_field.qre_prev->a_field.qre_next = (a_qr_a); \ + (a_qr_b)->a_field.qre_prev->a_field.qre_next = (a_qr_b); \ + } while (0) /* * Logically, this is just a meld. The intent, though, is that a_qrelm is a * single-element ring, so that "before" has a more obvious interpretation than * meld. */ -#define qr_before_insert(a_qrelm, a_qr, a_field) \ +#define qr_before_insert(a_qrelm, a_qr, a_field) \ qr_meld((a_qrelm), (a_qr), a_field) /* Ditto, but inserting after rather than before. */ -#define qr_after_insert(a_qrelm, a_qr, a_field) \ +#define qr_after_insert(a_qrelm, a_qr, a_field) \ qr_before_insert(qr_next(a_qrelm, a_field), (a_qr), a_field) /* @@ -98,14 +100,13 @@ struct { \ * qr_meld() and qr_split() are functionally equivalent, so there's no need to * have two copies of the code. */ -#define qr_split(a_qr_a, a_qr_b, a_field) \ - qr_meld((a_qr_a), (a_qr_b), a_field) +#define qr_split(a_qr_a, a_qr_b, a_field) qr_meld((a_qr_a), (a_qr_b), a_field) /* * Splits off a_qr from the rest of its ring, so that it becomes a * single-element ring. */ -#define qr_remove(a_qr, a_field) \ +#define qr_remove(a_qr, a_field) \ qr_split(qr_next(a_qr, a_field), (a_qr), a_field) /* @@ -121,20 +122,19 @@ struct { \ * return sum; * } */ -#define qr_foreach(var, a_qr, a_field) \ - for ((var) = (a_qr); \ - (var) != NULL; \ - (var) = (((var)->a_field.qre_next != (a_qr)) \ - ? (var)->a_field.qre_next : NULL)) +#define qr_foreach(var, a_qr, a_field) \ + for ((var) = (a_qr); (var) != NULL; \ + (var) = (((var)->a_field.qre_next != (a_qr)) \ + ? (var)->a_field.qre_next \ + : NULL)) /* * The same (and with the same usage) as qr_foreach, but in the opposite order, * ending with a_qr. */ -#define qr_reverse_foreach(var, a_qr, a_field) \ - for ((var) = ((a_qr) != NULL) ? qr_prev(a_qr, a_field) : NULL; \ - (var) != NULL; \ - (var) = (((var) != (a_qr)) \ - ? (var)->a_field.qre_prev : NULL)) +#define qr_reverse_foreach(var, a_qr, a_field) \ + for ((var) = ((a_qr) != NULL) ? qr_prev(a_qr, a_field) : NULL; \ + (var) != NULL; \ + (var) = (((var) != (a_qr)) ? (var)->a_field.qre_prev : NULL)) #endif /* JEMALLOC_INTERNAL_QR_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/quantum.h b/dep/jemalloc/include/jemalloc/internal/quantum.h index c22d753aa79fa..2f7c0466a679e 100644 --- a/dep/jemalloc/include/jemalloc/internal/quantum.h +++ b/dep/jemalloc/include/jemalloc/internal/quantum.h @@ -6,82 +6,84 @@ * classes). */ #ifndef LG_QUANTUM -# if (defined(__i386__) || defined(_M_IX86)) -# define LG_QUANTUM 4 -# endif -# ifdef __ia64__ -# define LG_QUANTUM 4 -# endif -# ifdef __alpha__ -# define LG_QUANTUM 4 -# endif -# if (defined(__sparc64__) || defined(__sparcv9) || defined(__sparc_v9__)) -# define LG_QUANTUM 4 -# endif -# if (defined(__amd64__) || defined(__x86_64__) || defined(_M_X64)) -# define LG_QUANTUM 4 -# endif -# ifdef __arm__ -# define LG_QUANTUM 3 -# endif -# ifdef __aarch64__ -# define LG_QUANTUM 4 -# endif -# ifdef __hppa__ -# define LG_QUANTUM 4 -# endif -# ifdef __loongarch__ -# define LG_QUANTUM 4 -# endif -# ifdef __m68k__ -# define LG_QUANTUM 3 -# endif -# ifdef __mips__ -# if defined(__mips_n32) || defined(__mips_n64) -# define LG_QUANTUM 4 -# else -# define LG_QUANTUM 3 -# endif -# endif -# ifdef __nios2__ -# define LG_QUANTUM 3 -# endif -# ifdef __or1k__ -# define LG_QUANTUM 3 -# endif -# ifdef __powerpc__ -# define LG_QUANTUM 4 -# endif -# if defined(__riscv) || defined(__riscv__) -# define LG_QUANTUM 4 -# endif -# ifdef __s390__ -# define LG_QUANTUM 4 -# endif -# if (defined (__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) || \ - defined(__SH4_SINGLE_ONLY__)) -# define LG_QUANTUM 4 -# endif -# ifdef __tile__ -# define LG_QUANTUM 4 -# endif -# ifdef __le32__ -# define LG_QUANTUM 4 -# endif -# ifdef __arc__ -# define LG_QUANTUM 3 -# endif -# ifndef LG_QUANTUM -# error "Unknown minimum alignment for architecture; specify via " - "--with-lg-quantum" -# endif +# if (defined(__i386__) || defined(_M_IX86)) +# define LG_QUANTUM 4 +# endif +# ifdef __ia64__ +# define LG_QUANTUM 4 +# endif +# ifdef __alpha__ +# define LG_QUANTUM 4 +# endif +# if (defined(__sparc64__) || defined(__sparcv9) \ + || defined(__sparc_v9__)) +# define LG_QUANTUM 4 +# endif +# if (defined(__amd64__) || defined(__x86_64__) || defined(_M_X64)) +# define LG_QUANTUM 4 +# endif +# ifdef __arm__ +# define LG_QUANTUM 3 +# endif +# if defined(__aarch64__) || defined(_M_ARM64) +# define LG_QUANTUM 4 +# endif +# ifdef __hppa__ +# define LG_QUANTUM 4 +# endif +# ifdef __loongarch__ +# define LG_QUANTUM 4 +# endif +# ifdef __m68k__ +# define LG_QUANTUM 3 +# endif +# ifdef __mips__ +# if defined(__mips_n32) || defined(__mips_n64) +# define LG_QUANTUM 4 +# else +# define LG_QUANTUM 3 +# endif +# endif +# ifdef __nios2__ +# define LG_QUANTUM 3 +# endif +# ifdef __or1k__ +# define LG_QUANTUM 3 +# endif +# if defined(__powerpc__) || defined(__ppc__) || defined(__powerpc64__) \ + || defined(__ppc64__) +# define LG_QUANTUM 4 +# endif +# if defined(__riscv) || defined(__riscv__) +# define LG_QUANTUM 4 +# endif +# ifdef __s390__ +# define LG_QUANTUM 4 +# endif +# if (defined(__SH3E__) || defined(__SH4_SINGLE__) || defined(__SH4__) \ + || defined(__SH4_SINGLE_ONLY__)) +# define LG_QUANTUM 4 +# endif +# ifdef __tile__ +# define LG_QUANTUM 4 +# endif +# ifdef __le32__ +# define LG_QUANTUM 4 +# endif +# ifdef __arc__ +# define LG_QUANTUM 3 +# endif +# ifndef LG_QUANTUM +# error \ + "Unknown minimum alignment for architecture; specify via " +"--with-lg-quantum" +# endif #endif -#define QUANTUM ((size_t)(1U << LG_QUANTUM)) -#define QUANTUM_MASK (QUANTUM - 1) +#define QUANTUM ((size_t)(1U << LG_QUANTUM)) +#define QUANTUM_MASK (QUANTUM - 1) /* Return the smallest quantum multiple that is >= a. */ -#define QUANTUM_CEILING(a) \ - (((a) + QUANTUM_MASK) & ~QUANTUM_MASK) +#define QUANTUM_CEILING(a) (((a) + QUANTUM_MASK) & ~QUANTUM_MASK) #endif /* JEMALLOC_INTERNAL_QUANTUM_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/rb.h b/dep/jemalloc/include/jemalloc/internal/rb.h index a9a51cb686041..58510e4db0661 100644 --- a/dep/jemalloc/include/jemalloc/internal/rb.h +++ b/dep/jemalloc/include/jemalloc/internal/rb.h @@ -1,6 +1,9 @@ #ifndef JEMALLOC_INTERNAL_RB_H #define JEMALLOC_INTERNAL_RB_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/safety_check.h" + /*- ******************************************************************************* * @@ -23,7 +26,7 @@ */ #ifndef __PGI -#define RB_COMPACT +# define RB_COMPACT #endif /* @@ -35,6 +38,7 @@ */ #define RB_MAX_DEPTH (sizeof(void *) << 4) +/* clang-format off */ #ifdef RB_COMPACT /* Node structure. */ #define rb_node(a_type) \ @@ -560,6 +564,20 @@ a_prefix##reverse_iter_filtered(a_rbt_type *rbtree, a_type *start, \ * the same as with the unfiltered version, with the added constraint that the * returned node must pass the filter. */ +JEMALLOC_ALWAYS_INLINE void +rb_remove_safety_checks(const void *nodep, const char *function_name) { + if (!config_opt_safety_checks) { + return; + } + if (unlikely(nodep == NULL)) { + safety_check_fail( + ": Invalid deallocation detected in %s: " + "attempting to remove node from tree but node was " + "not found. Possibly caused by double free bugs.", + function_name); + } +} + #define rb_gen(a_attr, a_prefix, a_rbt_type, a_type, a_field, a_cmp) \ rb_gen_impl(a_attr, a_prefix, a_rbt_type, a_type, a_field, a_cmp, \ rb_empty_summarize, false) @@ -852,6 +870,8 @@ a_prefix##remove(a_rbt_type *rbtree, a_type *node) { \ } \ } \ } \ + rb_remove_safety_checks(nodep, __func__); \ + assert(nodep != NULL); \ assert(nodep->node == node); \ pathp--; \ if (pathp->node != node) { \ @@ -1852,5 +1872,6 @@ a_prefix##reverse_iter_filtered(a_rbt_type *rbtree, a_type *start, \ return ret; \ } \ ) /* end rb_summarized_only */ +/* clang-format on */ #endif /* JEMALLOC_INTERNAL_RB_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/rtree.h b/dep/jemalloc/include/jemalloc/internal/rtree.h index a00adb2982f32..07205958ee646 100644 --- a/dep/jemalloc/include/jemalloc/internal/rtree.h +++ b/dep/jemalloc/include/jemalloc/internal/rtree.h @@ -1,7 +1,10 @@ #ifndef JEMALLOC_INTERNAL_RTREE_H #define JEMALLOC_INTERNAL_RTREE_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" #include "jemalloc/internal/atomic.h" +#include "jemalloc/internal/edata.h" #include "jemalloc/internal/mutex.h" #include "jemalloc/internal/rtree_tsd.h" #include "jemalloc/internal/sc.h" @@ -15,48 +18,49 @@ */ /* Number of high insignificant bits. */ -#define RTREE_NHIB ((1U << (LG_SIZEOF_PTR+3)) - LG_VADDR) +#define RTREE_NHIB ((1U << (LG_SIZEOF_PTR + 3)) - LG_VADDR) /* Number of low insigificant bits. */ #define RTREE_NLIB LG_PAGE /* Number of significant bits. */ #define RTREE_NSB (LG_VADDR - RTREE_NLIB) /* Number of levels in radix tree. */ #if RTREE_NSB <= 10 -# define RTREE_HEIGHT 1 +# define RTREE_HEIGHT 1 #elif RTREE_NSB <= 36 -# define RTREE_HEIGHT 2 +# define RTREE_HEIGHT 2 #elif RTREE_NSB <= 52 -# define RTREE_HEIGHT 3 +# define RTREE_HEIGHT 3 #else -# error Unsupported number of significant virtual address bits +# error Unsupported number of significant virtual address bits #endif /* Use compact leaf representation if virtual address encoding allows. */ #if RTREE_NHIB >= LG_CEIL(SC_NSIZES) -# define RTREE_LEAF_COMPACT +# define RTREE_LEAF_COMPACT #endif typedef struct rtree_node_elm_s rtree_node_elm_t; struct rtree_node_elm_s { - atomic_p_t child; /* (rtree_{node,leaf}_elm_t *) */ + atomic_p_t child; /* (rtree_{node,leaf}_elm_t *) */ }; typedef struct rtree_metadata_s rtree_metadata_t; struct rtree_metadata_s { - szind_t szind; - extent_state_t state; /* Mirrors edata->state. */ - bool is_head; /* Mirrors edata->is_head. */ - bool slab; + szind_t szind; + extent_state_t state; /* Mirrors edata->state. */ + bool is_head; /* Mirrors edata->is_head. */ + bool slab; }; typedef struct rtree_contents_s rtree_contents_t; struct rtree_contents_s { - edata_t *edata; + edata_t *edata; rtree_metadata_t metadata; }; #define RTREE_LEAF_STATE_WIDTH EDATA_BITS_STATE_WIDTH #define RTREE_LEAF_STATE_SHIFT 2 -#define RTREE_LEAF_STATE_MASK MASK(RTREE_LEAF_STATE_WIDTH, RTREE_LEAF_STATE_SHIFT) +#define RTREE_LEAF_STATE_MASK \ + MASK(RTREE_LEAF_STATE_WIDTH, RTREE_LEAF_STATE_SHIFT) struct rtree_leaf_elm_s { #ifdef RTREE_LEAF_COMPACT @@ -74,36 +78,36 @@ struct rtree_leaf_elm_s { * * 00000000 xxxxxxxx eeeeeeee [...] eeeeeeee e00ssshb */ - atomic_p_t le_bits; + atomic_p_t le_bits; #else - atomic_p_t le_edata; /* (edata_t *) */ + atomic_p_t le_edata; /* (edata_t *) */ /* * From high to low bits: szind (8 bits), state (4 bits), is_head, slab */ - atomic_u_t le_metadata; + atomic_u_t le_metadata; #endif }; typedef struct rtree_level_s rtree_level_t; struct rtree_level_s { /* Number of key bits distinguished by this level. */ - unsigned bits; + unsigned bits; /* * Cumulative number of key bits distinguished by traversing to * corresponding tree level. */ - unsigned cumbits; + unsigned cumbits; }; typedef struct rtree_s rtree_t; struct rtree_s { - base_t *base; - malloc_mutex_t init_lock; + base_t *base; + malloc_mutex_t init_lock; /* Number of elements based on rtree_levels[0].bits. */ #if RTREE_HEIGHT > 1 - rtree_node_elm_t root[1U << (RTREE_NSB/RTREE_HEIGHT)]; + rtree_node_elm_t root[1U << (RTREE_NSB / RTREE_HEIGHT)]; #else - rtree_leaf_elm_t root[1U << (RTREE_NSB/RTREE_HEIGHT)]; + rtree_leaf_elm_t root[1U << (RTREE_NSB / RTREE_HEIGHT)]; #endif }; @@ -115,17 +119,17 @@ struct rtree_s { */ static const rtree_level_t rtree_levels[] = { #if RTREE_HEIGHT == 1 - {RTREE_NSB, RTREE_NHIB + RTREE_NSB} + {RTREE_NSB, RTREE_NHIB + RTREE_NSB} #elif RTREE_HEIGHT == 2 - {RTREE_NSB/2, RTREE_NHIB + RTREE_NSB/2}, - {RTREE_NSB/2 + RTREE_NSB%2, RTREE_NHIB + RTREE_NSB} + {RTREE_NSB / 2, RTREE_NHIB + RTREE_NSB / 2}, + {RTREE_NSB / 2 + RTREE_NSB % 2, RTREE_NHIB + RTREE_NSB} #elif RTREE_HEIGHT == 3 - {RTREE_NSB/3, RTREE_NHIB + RTREE_NSB/3}, - {RTREE_NSB/3 + RTREE_NSB%3/2, - RTREE_NHIB + RTREE_NSB/3*2 + RTREE_NSB%3/2}, - {RTREE_NSB/3 + RTREE_NSB%3 - RTREE_NSB%3/2, RTREE_NHIB + RTREE_NSB} + {RTREE_NSB / 3, RTREE_NHIB + RTREE_NSB / 3}, + {RTREE_NSB / 3 + RTREE_NSB % 3 / 2, + RTREE_NHIB + RTREE_NSB / 3 * 2 + RTREE_NSB % 3 / 2}, + {RTREE_NSB / 3 + RTREE_NSB % 3 - RTREE_NSB % 3 / 2, RTREE_NHIB + RTREE_NSB} #else -# error Unsupported rtree height +# error Unsupported rtree height #endif }; @@ -136,9 +140,9 @@ rtree_leaf_elm_t *rtree_leaf_elm_lookup_hard(tsdn_t *tsdn, rtree_t *rtree, JEMALLOC_ALWAYS_INLINE unsigned rtree_leaf_maskbits(void) { - unsigned ptrbits = ZU(1) << (LG_SIZEOF_PTR+3); - unsigned cumbits = (rtree_levels[RTREE_HEIGHT-1].cumbits - - rtree_levels[RTREE_HEIGHT-1].bits); + unsigned ptrbits = ZU(1) << (LG_SIZEOF_PTR + 3); + unsigned cumbits = (rtree_levels[RTREE_HEIGHT - 1].cumbits + - rtree_levels[RTREE_HEIGHT - 1].bits); return ptrbits - cumbits; } @@ -150,16 +154,16 @@ rtree_leafkey(uintptr_t key) { JEMALLOC_ALWAYS_INLINE size_t rtree_cache_direct_map(uintptr_t key) { - return (size_t)((key >> rtree_leaf_maskbits()) & - (RTREE_CTX_NCACHE - 1)); + return ( + size_t)((key >> rtree_leaf_maskbits()) & (RTREE_CTX_NCACHE - 1)); } JEMALLOC_ALWAYS_INLINE uintptr_t rtree_subkey(uintptr_t key, unsigned level) { - unsigned ptrbits = ZU(1) << (LG_SIZEOF_PTR+3); - unsigned cumbits = rtree_levels[level].cumbits; - unsigned shiftbits = ptrbits - cumbits; - unsigned maskbits = rtree_levels[level].bits; + unsigned ptrbits = ZU(1) << (LG_SIZEOF_PTR + 3); + unsigned cumbits = rtree_levels[level].cumbits; + unsigned shiftbits = ptrbits - cumbits; + unsigned maskbits = rtree_levels[level].bits; uintptr_t mask = (ZU(1) << maskbits) - 1; return ((key >> shiftbits) & mask); } @@ -175,12 +179,12 @@ rtree_subkey(uintptr_t key, unsigned level) { * dependent on a previous rtree write, which means a stale read * could result if synchronization were omitted here. */ -# ifdef RTREE_LEAF_COMPACT +#ifdef RTREE_LEAF_COMPACT JEMALLOC_ALWAYS_INLINE uintptr_t -rtree_leaf_elm_bits_read(tsdn_t *tsdn, rtree_t *rtree, - rtree_leaf_elm_t *elm, bool dependent) { - return (uintptr_t)atomic_load_p(&elm->le_bits, dependent - ? ATOMIC_RELAXED : ATOMIC_ACQUIRE); +rtree_leaf_elm_bits_read( + tsdn_t *tsdn, rtree_t *rtree, rtree_leaf_elm_t *elm, bool dependent) { + return (uintptr_t)atomic_load_p( + &elm->le_bits, dependent ? ATOMIC_RELAXED : ATOMIC_ACQUIRE); } JEMALLOC_ALWAYS_INLINE uintptr_t @@ -192,10 +196,10 @@ rtree_leaf_elm_bits_encode(rtree_contents_t contents) { uintptr_t szind_bits = (uintptr_t)contents.metadata.szind << LG_VADDR; uintptr_t slab_bits = (uintptr_t)contents.metadata.slab; uintptr_t is_head_bits = (uintptr_t)contents.metadata.is_head << 1; - uintptr_t state_bits = (uintptr_t)contents.metadata.state << - RTREE_LEAF_STATE_SHIFT; - uintptr_t metadata_bits = szind_bits | state_bits | is_head_bits | - slab_bits; + uintptr_t state_bits = (uintptr_t)contents.metadata.state + << RTREE_LEAF_STATE_SHIFT; + uintptr_t metadata_bits = szind_bits | state_bits | is_head_bits + | slab_bits; assert((edata_bits & metadata_bits) == 0); return edata_bits | metadata_bits; @@ -209,13 +213,13 @@ rtree_leaf_elm_bits_decode(uintptr_t bits) { contents.metadata.slab = (bool)(bits & 1); contents.metadata.is_head = (bool)(bits & (1 << 1)); - uintptr_t state_bits = (bits & RTREE_LEAF_STATE_MASK) >> - RTREE_LEAF_STATE_SHIFT; + uintptr_t state_bits = (bits & RTREE_LEAF_STATE_MASK) + >> RTREE_LEAF_STATE_SHIFT; assert(state_bits <= extent_state_max); contents.metadata.state = (extent_state_t)state_bits; uintptr_t low_bit_mask = ~((uintptr_t)EDATA_ALIGNMENT - 1); -# ifdef __aarch64__ +# ifdef __aarch64__ /* * aarch64 doesn't sign extend the highest virtual address bit to set * the higher ones. Instead, the high bits get zeroed. @@ -223,64 +227,72 @@ rtree_leaf_elm_bits_decode(uintptr_t bits) { uintptr_t high_bit_mask = ((uintptr_t)1 << LG_VADDR) - 1; /* Mask off metadata. */ uintptr_t mask = high_bit_mask & low_bit_mask; + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ contents.edata = (edata_t *)(bits & mask); -# else +# else /* Restore sign-extended high bits, mask metadata bits. */ + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ contents.edata = (edata_t *)((uintptr_t)((intptr_t)(bits << RTREE_NHIB) - >> RTREE_NHIB) & low_bit_mask); -# endif + >> RTREE_NHIB) + & low_bit_mask); +# endif assert((uintptr_t)contents.edata % (uintptr_t)EDATA_ALIGNMENT == 0); return contents; } -# endif /* RTREE_LEAF_COMPACT */ +#endif /* RTREE_LEAF_COMPACT */ JEMALLOC_ALWAYS_INLINE rtree_contents_t -rtree_leaf_elm_read(tsdn_t *tsdn, rtree_t *rtree, rtree_leaf_elm_t *elm, - bool dependent) { +rtree_leaf_elm_read( + tsdn_t *tsdn, rtree_t *rtree, rtree_leaf_elm_t *elm, bool dependent) { #ifdef RTREE_LEAF_COMPACT uintptr_t bits = rtree_leaf_elm_bits_read(tsdn, rtree, elm, dependent); rtree_contents_t contents = rtree_leaf_elm_bits_decode(bits); return contents; #else rtree_contents_t contents; - unsigned metadata_bits = atomic_load_u(&elm->le_metadata, dependent - ? ATOMIC_RELAXED : ATOMIC_ACQUIRE); + unsigned metadata_bits = atomic_load_u( + &elm->le_metadata, dependent ? ATOMIC_RELAXED : ATOMIC_ACQUIRE); contents.metadata.slab = (bool)(metadata_bits & 1); contents.metadata.is_head = (bool)(metadata_bits & (1 << 1)); - uintptr_t state_bits = (metadata_bits & RTREE_LEAF_STATE_MASK) >> - RTREE_LEAF_STATE_SHIFT; + uintptr_t state_bits = (metadata_bits & RTREE_LEAF_STATE_MASK) + >> RTREE_LEAF_STATE_SHIFT; assert(state_bits <= extent_state_max); contents.metadata.state = (extent_state_t)state_bits; - contents.metadata.szind = metadata_bits >> (RTREE_LEAF_STATE_SHIFT + - RTREE_LEAF_STATE_WIDTH); + contents.metadata.szind = metadata_bits + >> (RTREE_LEAF_STATE_SHIFT + RTREE_LEAF_STATE_WIDTH); - contents.edata = (edata_t *)atomic_load_p(&elm->le_edata, dependent - ? ATOMIC_RELAXED : ATOMIC_ACQUIRE); + contents.edata = (edata_t *)atomic_load_p( + &elm->le_edata, dependent ? ATOMIC_RELAXED : ATOMIC_ACQUIRE); return contents; #endif } JEMALLOC_ALWAYS_INLINE void -rtree_contents_encode(rtree_contents_t contents, void **bits, - unsigned *additional) { +rtree_contents_encode( + rtree_contents_t contents, void **bits, unsigned *additional) { #ifdef RTREE_LEAF_COMPACT + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ *bits = (void *)rtree_leaf_elm_bits_encode(contents); + /* Suppress spurious warning from static analysis */ + if (config_debug) { + *additional = 0; + } #else *additional = (unsigned)contents.metadata.slab | ((unsigned)contents.metadata.is_head << 1) | ((unsigned)contents.metadata.state << RTREE_LEAF_STATE_SHIFT) - | ((unsigned)contents.metadata.szind << (RTREE_LEAF_STATE_SHIFT + - RTREE_LEAF_STATE_WIDTH)); + | ((unsigned)contents.metadata.szind + << (RTREE_LEAF_STATE_SHIFT + RTREE_LEAF_STATE_WIDTH)); *bits = contents.edata; #endif } JEMALLOC_ALWAYS_INLINE void -rtree_leaf_elm_write_commit(tsdn_t *tsdn, rtree_t *rtree, - rtree_leaf_elm_t *elm, void *bits, unsigned additional) { +rtree_leaf_elm_write_commit(tsdn_t *tsdn, rtree_t *rtree, rtree_leaf_elm_t *elm, + void *bits, unsigned additional) { #ifdef RTREE_LEAF_COMPACT atomic_store_p(&elm->le_bits, bits, ATOMIC_RELEASE); #else @@ -294,12 +306,11 @@ rtree_leaf_elm_write_commit(tsdn_t *tsdn, rtree_t *rtree, } JEMALLOC_ALWAYS_INLINE void -rtree_leaf_elm_write(tsdn_t *tsdn, rtree_t *rtree, - rtree_leaf_elm_t *elm, rtree_contents_t contents) { +rtree_leaf_elm_write(tsdn_t *tsdn, rtree_t *rtree, rtree_leaf_elm_t *elm, + rtree_contents_t contents) { assert((uintptr_t)contents.edata % EDATA_ALIGNMENT == 0); - void *bits; + void *bits; unsigned additional; - rtree_contents_encode(contents, &bits, &additional); rtree_leaf_elm_write_commit(tsdn, rtree, elm, bits, additional); } @@ -314,8 +325,10 @@ rtree_leaf_elm_state_update(tsdn_t *tsdn, rtree_t *rtree, /* dependent */ true); bits &= ~RTREE_LEAF_STATE_MASK; bits |= state << RTREE_LEAF_STATE_SHIFT; + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ atomic_store_p(&elm1->le_bits, (void *)bits, ATOMIC_RELEASE); if (elm2 != NULL) { + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ atomic_store_p(&elm2->le_bits, (void *)bits, ATOMIC_RELEASE); } #else @@ -337,7 +350,7 @@ rtree_leaf_elm_state_update(tsdn_t *tsdn, rtree_t *rtree, JEMALLOC_ALWAYS_INLINE bool rtree_leaf_elm_lookup_fast(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, uintptr_t key, rtree_leaf_elm_t **elm) { - size_t slot = rtree_cache_direct_map(key); + size_t slot = rtree_cache_direct_map(key); uintptr_t leafkey = rtree_leafkey(key); assert(leafkey != RTREE_LEAFKEY_INVALID); @@ -347,7 +360,7 @@ rtree_leaf_elm_lookup_fast(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, rtree_leaf_elm_t *leaf = rtree_ctx->cache[slot].leaf; assert(leaf != NULL); - uintptr_t subkey = rtree_subkey(key, RTREE_HEIGHT-1); + uintptr_t subkey = rtree_subkey(key, RTREE_HEIGHT - 1); *elm = &leaf[subkey]; return false; @@ -359,7 +372,7 @@ rtree_leaf_elm_lookup(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, assert(key != 0); assert(!dependent || !init_missing); - size_t slot = rtree_cache_direct_map(key); + size_t slot = rtree_cache_direct_map(key); uintptr_t leafkey = rtree_leafkey(key); assert(leafkey != RTREE_LEAFKEY_INVALID); @@ -367,39 +380,41 @@ rtree_leaf_elm_lookup(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, if (likely(rtree_ctx->cache[slot].leafkey == leafkey)) { rtree_leaf_elm_t *leaf = rtree_ctx->cache[slot].leaf; assert(leaf != NULL); - uintptr_t subkey = rtree_subkey(key, RTREE_HEIGHT-1); + uintptr_t subkey = rtree_subkey(key, RTREE_HEIGHT - 1); return &leaf[subkey]; } /* * Search the L2 LRU cache. On hit, swap the matching element into the * slot in L1 cache, and move the position in L2 up by 1. */ -#define RTREE_CACHE_CHECK_L2(i) do { \ - if (likely(rtree_ctx->l2_cache[i].leafkey == leafkey)) { \ - rtree_leaf_elm_t *leaf = rtree_ctx->l2_cache[i].leaf; \ - assert(leaf != NULL); \ - if (i > 0) { \ - /* Bubble up by one. */ \ - rtree_ctx->l2_cache[i].leafkey = \ - rtree_ctx->l2_cache[i - 1].leafkey; \ - rtree_ctx->l2_cache[i].leaf = \ - rtree_ctx->l2_cache[i - 1].leaf; \ - rtree_ctx->l2_cache[i - 1].leafkey = \ - rtree_ctx->cache[slot].leafkey; \ - rtree_ctx->l2_cache[i - 1].leaf = \ - rtree_ctx->cache[slot].leaf; \ - } else { \ - rtree_ctx->l2_cache[0].leafkey = \ - rtree_ctx->cache[slot].leafkey; \ - rtree_ctx->l2_cache[0].leaf = \ - rtree_ctx->cache[slot].leaf; \ - } \ - rtree_ctx->cache[slot].leafkey = leafkey; \ - rtree_ctx->cache[slot].leaf = leaf; \ - uintptr_t subkey = rtree_subkey(key, RTREE_HEIGHT-1); \ - return &leaf[subkey]; \ - } \ -} while (0) +#define RTREE_CACHE_CHECK_L2(i) \ + do { \ + if (likely(rtree_ctx->l2_cache[i].leafkey == leafkey)) { \ + rtree_leaf_elm_t *leaf = rtree_ctx->l2_cache[i].leaf; \ + assert(leaf != NULL); \ + if (i > 0) { \ + /* Bubble up by one. */ \ + rtree_ctx->l2_cache[i].leafkey = \ + rtree_ctx->l2_cache[i - 1].leafkey; \ + rtree_ctx->l2_cache[i].leaf = \ + rtree_ctx->l2_cache[i - 1].leaf; \ + rtree_ctx->l2_cache[i - 1].leafkey = \ + rtree_ctx->cache[slot].leafkey; \ + rtree_ctx->l2_cache[i - 1].leaf = \ + rtree_ctx->cache[slot].leaf; \ + } else { \ + rtree_ctx->l2_cache[0].leafkey = \ + rtree_ctx->cache[slot].leafkey; \ + rtree_ctx->l2_cache[0].leaf = \ + rtree_ctx->cache[slot].leaf; \ + } \ + rtree_ctx->cache[slot].leafkey = leafkey; \ + rtree_ctx->cache[slot].leaf = leaf; \ + uintptr_t subkey = rtree_subkey( \ + key, RTREE_HEIGHT - 1); \ + return &leaf[subkey]; \ + } \ + } while (0) /* Check the first cache entry. */ RTREE_CACHE_CHECK_L2(0); /* Search the remaining cache elements. */ @@ -408,8 +423,8 @@ rtree_leaf_elm_lookup(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, } #undef RTREE_CACHE_CHECK_L2 - return rtree_leaf_elm_lookup_hard(tsdn, rtree, rtree_ctx, key, - dependent, init_missing); + return rtree_leaf_elm_lookup_hard( + tsdn, rtree, rtree_ctx, key, dependent, init_missing); } /* @@ -429,8 +444,8 @@ rtree_read_independent(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, } static inline rtree_contents_t -rtree_read(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, - uintptr_t key) { +rtree_read( + tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, uintptr_t key) { rtree_leaf_elm_t *elm = rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, key, /* dependent */ true, /* init_missing */ false); assert(elm != NULL); @@ -438,21 +453,22 @@ rtree_read(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, } static inline rtree_metadata_t -rtree_metadata_read(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, - uintptr_t key) { +rtree_metadata_read( + tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, uintptr_t key) { rtree_leaf_elm_t *elm = rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, key, /* dependent */ true, /* init_missing */ false); assert(elm != NULL); return rtree_leaf_elm_read(tsdn, rtree, elm, - /* dependent */ true).metadata; + /* dependent */ true) + .metadata; } /* * Returns true when the request cannot be fulfilled by fastpath. */ static inline bool -rtree_metadata_try_read_fast(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, - uintptr_t key, rtree_metadata_t *r_rtree_metadata) { +rtree_metadata_try_read_fast(tsdn_t *tsdn, rtree_t *rtree, + rtree_ctx_t *rtree_ctx, uintptr_t key, rtree_metadata_t *r_rtree_metadata) { rtree_leaf_elm_t *elm; /* * Should check the bool return value (lookup success or not) instead of @@ -465,7 +481,8 @@ rtree_metadata_try_read_fast(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ct } assert(elm != NULL); *r_rtree_metadata = rtree_leaf_elm_read(tsdn, rtree, elm, - /* dependent */ true).metadata; + /* dependent */ true) + .metadata; return false; } @@ -479,22 +496,27 @@ rtree_write_range_impl(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, * are dependent w/o init_missing, assuming the range spans across at * most 2 rtree leaf nodes (each covers 1 GiB of vaddr). */ - void *bits; + void *bits; unsigned additional; rtree_contents_encode(contents, &bits, &additional); rtree_leaf_elm_t *elm = NULL; /* Dead store. */ for (uintptr_t addr = base; addr <= end; addr += PAGE) { - if (addr == base || - (addr & ((ZU(1) << rtree_leaf_maskbits()) - 1)) == 0) { - elm = rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, addr, + if (addr == base + || (addr & ((ZU(1) << rtree_leaf_maskbits()) - 1)) == 0) { + elm = rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, + addr, /* dependent */ true, /* init_missing */ false); assert(elm != NULL); } - assert(elm == rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, addr, - /* dependent */ true, /* init_missing */ false)); - assert(!clearing || rtree_leaf_elm_read(tsdn, rtree, elm, - /* dependent */ true).edata != NULL); + assert(elm + == rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, addr, + /* dependent */ true, /* init_missing */ false)); + assert(!clearing + || rtree_leaf_elm_read(tsdn, rtree, elm, + /* dependent */ true) + .edata + != NULL); rtree_leaf_elm_write_commit(tsdn, rtree, elm, bits, additional); elm++; } @@ -522,13 +544,15 @@ rtree_write(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, uintptr_t key, } static inline void -rtree_clear(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, - uintptr_t key) { +rtree_clear( + tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, uintptr_t key) { rtree_leaf_elm_t *elm = rtree_leaf_elm_lookup(tsdn, rtree, rtree_ctx, key, /* dependent */ true, /* init_missing */ false); assert(elm != NULL); assert(rtree_leaf_elm_read(tsdn, rtree, elm, - /* dependent */ true).edata != NULL); + /* dependent */ true) + .edata + != NULL); rtree_contents_t contents; contents.edata = NULL; contents.metadata.szind = SC_NSIZES; diff --git a/dep/jemalloc/include/jemalloc/internal/rtree_tsd.h b/dep/jemalloc/include/jemalloc/internal/rtree_tsd.h index e45525c5e6a3e..4014dde08f601 100644 --- a/dep/jemalloc/include/jemalloc/internal/rtree_tsd.h +++ b/dep/jemalloc/include/jemalloc/internal/rtree_tsd.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_RTREE_CTX_H #define JEMALLOC_INTERNAL_RTREE_CTX_H +#include "jemalloc/internal/jemalloc_preamble.h" + /* * Number of leafkey/leaf pairs to cache in L1 and L2 level respectively. Each * entry supports an entire leaf, so the cache hit rate is typically high even @@ -23,7 +25,8 @@ /* Needed for initialization only. */ #define RTREE_LEAFKEY_INVALID ((uintptr_t)1) -#define RTREE_CTX_CACHE_ELM_INVALID {RTREE_LEAFKEY_INVALID, NULL} +#define RTREE_CTX_CACHE_ELM_INVALID \ + { RTREE_LEAFKEY_INVALID, NULL } #define RTREE_CTX_INIT_ELM_1 RTREE_CTX_CACHE_ELM_INVALID #define RTREE_CTX_INIT_ELM_2 RTREE_CTX_INIT_ELM_1, RTREE_CTX_INIT_ELM_1 @@ -38,23 +41,27 @@ * Static initializer (to invalidate the cache entries) is required because the * free fastpath may access the rtree cache before a full tsd initialization. */ -#define RTREE_CTX_INITIALIZER {{RTREE_CTX_INIT_ELM_DATA(RTREE_CTX_NCACHE)}, \ - {RTREE_CTX_INIT_ELM_DATA(RTREE_CTX_NCACHE_L2)}} +#define RTREE_CTX_INITIALIZER \ + { \ + {RTREE_CTX_INIT_ELM_DATA(RTREE_CTX_NCACHE)}, { \ + RTREE_CTX_INIT_ELM_DATA(RTREE_CTX_NCACHE_L2) \ + } \ + } typedef struct rtree_leaf_elm_s rtree_leaf_elm_t; typedef struct rtree_ctx_cache_elm_s rtree_ctx_cache_elm_t; struct rtree_ctx_cache_elm_s { - uintptr_t leafkey; - rtree_leaf_elm_t *leaf; + uintptr_t leafkey; + rtree_leaf_elm_t *leaf; }; typedef struct rtree_ctx_s rtree_ctx_t; struct rtree_ctx_s { /* Direct mapped cache. */ - rtree_ctx_cache_elm_t cache[RTREE_CTX_NCACHE]; + rtree_ctx_cache_elm_t cache[RTREE_CTX_NCACHE]; /* L2 LRU cache. */ - rtree_ctx_cache_elm_t l2_cache[RTREE_CTX_NCACHE_L2]; + rtree_ctx_cache_elm_t l2_cache[RTREE_CTX_NCACHE_L2]; }; void rtree_ctx_data_init(rtree_ctx_t *ctx); diff --git a/dep/jemalloc/include/jemalloc/internal/safety_check.h b/dep/jemalloc/include/jemalloc/internal/safety_check.h index f1a74f174dee9..2b4b2d0e7399a 100644 --- a/dep/jemalloc/include/jemalloc/internal/safety_check.h +++ b/dep/jemalloc/include/jemalloc/internal/safety_check.h @@ -1,8 +1,14 @@ #ifndef JEMALLOC_INTERNAL_SAFETY_CHECK_H #define JEMALLOC_INTERNAL_SAFETY_CHECK_H -void safety_check_fail_sized_dealloc(bool current_dealloc, const void *ptr, - size_t true_size, size_t input_size); +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" +#include "jemalloc/internal/pages.h" + +#define SAFETY_CHECK_DOUBLE_FREE_MAX_SCAN_DEFAULT 32 + +void safety_check_fail_sized_dealloc( + bool current_dealloc, const void *ptr, size_t true_size, size_t input_size); void safety_check_fail(const char *format, ...); typedef void (*safety_check_abort_hook_t)(const char *message); @@ -10,22 +16,51 @@ typedef void (*safety_check_abort_hook_t)(const char *message); /* Can set to NULL for a default. */ void safety_check_set_abort(safety_check_abort_hook_t abort_fn); +#define REDZONE_SIZE ((size_t)32) +#define REDZONE_FILL_VALUE 0xBC + +/* + * Normally the redzone extends `REDZONE_SIZE` bytes beyond the end of + * the allocation. However, we don't let the redzone extend onto another + * OS page because this would impose additional overhead if that page was + * not already resident in memory. + */ +JEMALLOC_ALWAYS_INLINE const unsigned char * +compute_redzone_end(const void *_ptr, size_t usize, size_t bumped_usize) { + const unsigned char *ptr = (const unsigned char *)_ptr; + const unsigned char *redzone_end = usize + REDZONE_SIZE < bumped_usize + ? &ptr[usize + REDZONE_SIZE] + : &ptr[bumped_usize]; + const unsigned char *page_end = (const unsigned char *) + ALIGNMENT_ADDR2CEILING(&ptr[usize], os_page); + return redzone_end < page_end ? redzone_end : page_end; +} + JEMALLOC_ALWAYS_INLINE void safety_check_set_redzone(void *ptr, size_t usize, size_t bumped_usize) { - assert(usize < bumped_usize); - for (size_t i = usize; i < bumped_usize && i < usize + 32; ++i) { - *((unsigned char *)ptr + i) = 0xBC; + assert(usize <= bumped_usize); + const unsigned char *redzone_end = compute_redzone_end( + ptr, usize, bumped_usize); + for (unsigned char *curr = &((unsigned char *)ptr)[usize]; + curr < redzone_end; curr++) { + *curr = REDZONE_FILL_VALUE; } } JEMALLOC_ALWAYS_INLINE void -safety_check_verify_redzone(const void *ptr, size_t usize, size_t bumped_usize) -{ - for (size_t i = usize; i < bumped_usize && i < usize + 32; ++i) { - if (unlikely(*((unsigned char *)ptr + i) != 0xBC)) { +safety_check_verify_redzone( + const void *ptr, size_t usize, size_t bumped_usize) { + const unsigned char *redzone_end = compute_redzone_end( + ptr, usize, bumped_usize); + for (const unsigned char *curr = &((const unsigned char *)ptr)[usize]; + curr < redzone_end; curr++) { + if (unlikely(*curr != REDZONE_FILL_VALUE)) { safety_check_fail("Use after free error\n"); } } } +#undef REDZONE_SIZE +#undef REDZONE_FILL_VALUE + #endif /*JEMALLOC_INTERNAL_SAFETY_CHECK_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/san.h b/dep/jemalloc/include/jemalloc/internal/san.h index 8813d6bbe7dee..5dcae37662df5 100644 --- a/dep/jemalloc/include/jemalloc/internal/san.h +++ b/dep/jemalloc/include/jemalloc/internal/san.h @@ -1,8 +1,11 @@ #ifndef JEMALLOC_INTERNAL_GUARD_H #define JEMALLOC_INTERNAL_GUARD_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/ehooks.h" #include "jemalloc/internal/emap.h" +#include "jemalloc/internal/jemalloc_internal_externs.h" +#include "jemalloc/internal/tsd.h" #define SAN_PAGE_GUARD PAGE #define SAN_PAGE_GUARDS_SIZE (SAN_PAGE_GUARD * 2) @@ -29,22 +32,22 @@ void san_unguard_pages(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, * Unguard the extent, but don't modify emap boundaries. Must be called on an * extent that has been erased from emap and shouldn't be placed back. */ -void san_unguard_pages_pre_destroy(tsdn_t *tsdn, ehooks_t *ehooks, - edata_t *edata, emap_t *emap); +void san_unguard_pages_pre_destroy( + tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, emap_t *emap); void san_check_stashed_ptrs(void **ptrs, size_t nstashed, size_t usize); void tsd_san_init(tsd_t *tsd); void san_init(ssize_t lg_san_uaf_align); static inline void -san_guard_pages_two_sided(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - emap_t *emap, bool remap) { +san_guard_pages_two_sided( + tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, emap_t *emap, bool remap) { san_guard_pages(tsdn, ehooks, edata, emap, true, true, remap); } static inline void -san_unguard_pages_two_sided(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - emap_t *emap) { +san_unguard_pages_two_sided( + tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, emap_t *emap) { san_unguard_pages(tsdn, ehooks, edata, emap, true, true); } @@ -80,14 +83,14 @@ san_guard_enabled(void) { } static inline bool -san_large_extent_decide_guard(tsdn_t *tsdn, ehooks_t *ehooks, size_t size, - size_t alignment) { - if (opt_san_guard_large == 0 || ehooks_guard_will_fail(ehooks) || - tsdn_null(tsdn)) { +san_large_extent_decide_guard( + tsdn_t *tsdn, ehooks_t *ehooks, size_t size, size_t alignment) { + if (opt_san_guard_large == 0 || ehooks_guard_will_fail(ehooks) + || tsdn_null(tsdn)) { return false; } - tsd_t *tsd = tsdn_tsd(tsdn); + tsd_t *tsd = tsdn_tsd(tsdn); uint64_t n = tsd_san_extents_until_guard_large_get(tsd); assert(n >= 1); if (n > 1) { @@ -98,10 +101,10 @@ san_large_extent_decide_guard(tsdn_t *tsdn, ehooks_t *ehooks, size_t size, *tsd_san_extents_until_guard_largep_get(tsd) = n - 1; } - if (n == 1 && (alignment <= PAGE) && - (san_two_side_guarded_sz(size) <= SC_LARGE_MAXCLASS)) { - *tsd_san_extents_until_guard_largep_get(tsd) = - opt_san_guard_large; + if (n == 1 && (alignment <= PAGE) + && (san_two_side_guarded_sz(size) <= SC_LARGE_MAXCLASS)) { + *tsd_san_extents_until_guard_largep_get( + tsd) = opt_san_guard_large; return true; } else { assert(tsd_san_extents_until_guard_large_get(tsd) >= 1); @@ -111,17 +114,17 @@ san_large_extent_decide_guard(tsdn_t *tsdn, ehooks_t *ehooks, size_t size, static inline bool san_slab_extent_decide_guard(tsdn_t *tsdn, ehooks_t *ehooks) { - if (opt_san_guard_small == 0 || ehooks_guard_will_fail(ehooks) || - tsdn_null(tsdn)) { + if (opt_san_guard_small == 0 || ehooks_guard_will_fail(ehooks) + || tsdn_null(tsdn)) { return false; } - tsd_t *tsd = tsdn_tsd(tsdn); + tsd_t *tsd = tsdn_tsd(tsdn); uint64_t n = tsd_san_extents_until_guard_small_get(tsd); assert(n >= 1); if (n == 1) { - *tsd_san_extents_until_guard_smallp_get(tsd) = - opt_san_guard_small; + *tsd_san_extents_until_guard_smallp_get( + tsd) = opt_san_guard_small; return true; } else { *tsd_san_extents_until_guard_smallp_get(tsd) = n - 1; @@ -131,13 +134,13 @@ san_slab_extent_decide_guard(tsdn_t *tsdn, ehooks_t *ehooks) { } static inline void -san_junk_ptr_locations(void *ptr, size_t usize, void **first, void **mid, - void **last) { +san_junk_ptr_locations( + void *ptr, size_t usize, void **first, void **mid, void **last) { size_t ptr_sz = sizeof(void *); *first = ptr; - *mid = (void *)((uintptr_t)ptr + ((usize >> 1) & ~(ptr_sz - 1))); + *mid = (void *)((byte_t *)ptr + ((usize >> 1) & ~(ptr_sz - 1))); assert(*first != *mid || usize == ptr_sz); assert((uintptr_t)*first <= (uintptr_t)*mid); @@ -148,7 +151,7 @@ san_junk_ptr_locations(void *ptr, size_t usize, void **first, void **mid, * default the tcache only goes up to the 32K size class, and is usually * tuned lower instead of higher, which makes it less of a concern. */ - *last = (void *)((uintptr_t)ptr + usize - sizeof(uaf_detect_junk)); + *last = (void *)((byte_t *)ptr + usize - sizeof(uaf_detect_junk)); assert(*first != *last || usize == ptr_sz); assert(*mid != *last || usize <= ptr_sz * 2); assert((uintptr_t)*mid <= (uintptr_t)*last); @@ -181,8 +184,8 @@ static inline bool san_uaf_detection_enabled(void) { bool ret = config_uaf_detection && (opt_lg_san_uaf_align != -1); if (config_uaf_detection && ret) { - assert(san_cache_bin_nonfast_mask == ((uintptr_t)1 << - opt_lg_san_uaf_align) - 1); + assert(san_cache_bin_nonfast_mask + == ((uintptr_t)1 << opt_lg_san_uaf_align) - 1); } return ret; diff --git a/dep/jemalloc/include/jemalloc/internal/san_bump.h b/dep/jemalloc/include/jemalloc/internal/san_bump.h index 8ec4a710d6f4a..9e42b69b1b5df 100644 --- a/dep/jemalloc/include/jemalloc/internal/san_bump.h +++ b/dep/jemalloc/include/jemalloc/internal/san_bump.h @@ -1,16 +1,18 @@ #ifndef JEMALLOC_INTERNAL_SAN_BUMP_H #define JEMALLOC_INTERNAL_SAN_BUMP_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/edata.h" #include "jemalloc/internal/exp_grow.h" #include "jemalloc/internal/mutex.h" +#include "jemalloc/internal/witness.h" #define SBA_RETAINED_ALLOC_SIZE ((size_t)4 << 20) extern bool opt_retain; typedef struct ehooks_s ehooks_t; -typedef struct pac_s pac_t; +typedef struct pac_s pac_t; typedef struct san_bump_alloc_s san_bump_alloc_t; struct san_bump_alloc_s { @@ -20,7 +22,7 @@ struct san_bump_alloc_s { }; static inline bool -san_bump_enabled() { +san_bump_enabled(void) { /* * We enable san_bump allocator only when it's possible to break up a * mapping and unmap a part of it (maps_coalesce). This is needed to @@ -34,7 +36,7 @@ san_bump_enabled() { } static inline bool -san_bump_alloc_init(san_bump_alloc_t* sba) { +san_bump_alloc_init(san_bump_alloc_t *sba) { bool err = malloc_mutex_init(&sba->mtx, "sanitizer_bump_allocator", WITNESS_RANK_SAN_BUMP_ALLOC, malloc_mutex_rank_exclusive); if (err) { @@ -45,8 +47,7 @@ san_bump_alloc_init(san_bump_alloc_t* sba) { return false; } -edata_t * -san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t* sba, pac_t *pac, ehooks_t *ehooks, - size_t size, bool zero); +edata_t *san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t *sba, pac_t *pac, + ehooks_t *ehooks, size_t size, bool zero); #endif /* JEMALLOC_INTERNAL_SAN_BUMP_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/sc.h b/dep/jemalloc/include/jemalloc/internal/sc.h index 9bab347beeed1..17a8278a0d151 100644 --- a/dep/jemalloc/include/jemalloc/internal/sc.h +++ b/dep/jemalloc/include/jemalloc/internal/sc.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_SC_H #define JEMALLOC_INTERNAL_SC_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_types.h" /* @@ -173,7 +174,7 @@ #if SC_LG_TINY_MIN == 0 /* The div module doesn't support division by 1, which this would require. */ -#error "Unsupported LG_TINY_MIN" +# error "Unsupported LG_TINY_MIN" #endif /* @@ -193,8 +194,8 @@ * We could probably save some space in arenas by capping this at LG_VADDR size. */ #define SC_LG_BASE_MAX (SC_PTR_BITS - 2) -#define SC_NREGULAR (SC_NGROUP * \ - (SC_LG_BASE_MAX - SC_LG_FIRST_REGULAR_BASE + 1) - 1) +#define SC_NREGULAR \ + (SC_NGROUP * (SC_LG_BASE_MAX - SC_LG_FIRST_REGULAR_BASE + 1) - 1) #define SC_NSIZES (SC_NTINY + SC_NPSEUDO + SC_NREGULAR) /* @@ -221,29 +222,29 @@ * * This gives us the quantity we seek. */ -#define SC_NPSIZES ( \ - SC_NGROUP \ - + (SC_LG_BASE_MAX - (LG_PAGE + SC_LG_NGROUP)) * SC_NGROUP \ - + SC_NGROUP - 1) +#define SC_NPSIZES \ + (SC_NGROUP + (SC_LG_BASE_MAX - (LG_PAGE + SC_LG_NGROUP)) * SC_NGROUP \ + + SC_NGROUP - 1) /* * We declare a size class is binnable if size < page size * group. Or, in other * words, lg(size) < lg(page size) + lg(group size). */ -#define SC_NBINS ( \ - /* Sub-regular size classes. */ \ - SC_NTINY + SC_NPSEUDO \ - /* Groups with lg_regular_min_base <= lg_base <= lg_base_max */ \ - + SC_NGROUP * (LG_PAGE + SC_LG_NGROUP - SC_LG_FIRST_REGULAR_BASE) \ - /* Last SC of the last group hits the bound exactly; exclude it. */ \ - - 1) +#define SC_NBINS \ + (/* Sub-regular size classes. */ \ + SC_NTINY \ + + SC_NPSEUDO /* Groups with lg_regular_min_base <= lg_base <= lg_base_max */ \ + + SC_NGROUP \ + * (LG_PAGE + SC_LG_NGROUP \ + - SC_LG_FIRST_REGULAR_BASE) /* Last SC of the last group hits the bound exactly; exclude it. */ \ + - 1) /* * The size2index_tab lookup table uses uint8_t to encode each bin index, so we * cannot support more than 256 small size classes. */ #if (SC_NBINS > 256) -# error "Too many small size classes" +# error "Too many small size classes" #endif /* The largest size class in the lookup table, and its binary log. */ @@ -255,12 +256,12 @@ #define SC_SMALL_MAX_DELTA (1 << (LG_PAGE - 1)) /* The largest size class allocated out of a slab. */ -#define SC_SMALL_MAXCLASS (SC_SMALL_MAX_BASE \ - + (SC_NGROUP - 1) * SC_SMALL_MAX_DELTA) +#define SC_SMALL_MAXCLASS \ + (SC_SMALL_MAX_BASE + (SC_NGROUP - 1) * SC_SMALL_MAX_DELTA) /* The fastpath assumes all lookup-able sizes are small. */ #if (SC_SMALL_MAXCLASS < SC_LOOKUP_MAXCLASS) -# error "Lookup table sizes must be small" +# error "Lookup table sizes must be small" #endif /* The smallest size class not allocated out of a slab. */ @@ -276,15 +277,33 @@ /* Maximum number of regions in one slab. */ #ifndef CONFIG_LG_SLAB_MAXREGS -# define SC_LG_SLAB_MAXREGS (LG_PAGE - SC_LG_TINY_MIN) +# define SC_LG_SLAB_MAXREGS (LG_PAGE - SC_LG_TINY_MIN) #else -# if CONFIG_LG_SLAB_MAXREGS < (LG_PAGE - SC_LG_TINY_MIN) -# error "Unsupported SC_LG_SLAB_MAXREGS" -# else -# define SC_LG_SLAB_MAXREGS CONFIG_LG_SLAB_MAXREGS -# endif +# if CONFIG_LG_SLAB_MAXREGS < (LG_PAGE - SC_LG_TINY_MIN) +# error "Unsupported SC_LG_SLAB_MAXREGS" +# else +# define SC_LG_SLAB_MAXREGS CONFIG_LG_SLAB_MAXREGS +# endif #endif +/* + * When large size classes are disabled, there is no concept of size classes + * for sizes > SC_SMALLMAXCLASS (or >= SC_LARGE_MINCLASS). This ensures that + * the overhead between the usable size and the user request size will not + * exceed PAGE. Between SC_LARGE_MINCLASS (SC_NGROUP * PAGE) and + * 2 * SC_NGROUP * PAGE, the size classes also happen to be aligned with PAGE. + * Since tcache relies on size classes to work and it greatly increases the + * perf of allocs & deallocs, we extend the existence of size class to + * 2 * SC_NGROUP * PAGE ONLY for the tcache module. This means for all other + * modules, there is no size class for sizes >= SC_LARGE_MINCLASS. Yet for + * tcache, the threshold is moved up to 2 * SC_NGROUP * PAGE, which is + * USIZE_GROW_SLOW_THRESHOLD defined below. With the default SC_NGROUP being + * 2, and PAGE being 4KB, the threshold for tcache (USIZE_GROW_SLOW_THRESHOLD) + * is 32KB. + */ +#define LG_USIZE_GROW_SLOW_THRESHOLD (SC_LG_NGROUP + LG_PAGE + 1) +#define USIZE_GROW_SLOW_THRESHOLD (1U << LG_USIZE_GROW_SLOW_THRESHOLD) + #define SC_SLAB_MAXREGS (1U << SC_LG_SLAB_MAXREGS) typedef struct sc_s sc_t; @@ -345,13 +364,13 @@ struct sc_data_s { }; size_t reg_size_compute(int lg_base, int lg_delta, int ndelta); -void sc_data_init(sc_data_t *data); +void sc_data_init(sc_data_t *data); /* * Updates slab sizes in [begin, end] to be pgs pages in length, if possible. * Otherwise, does its best to accommodate the request. */ -void sc_data_update_slab_size(sc_data_t *data, size_t begin, size_t end, - int pgs); +void sc_data_update_slab_size( + sc_data_t *data, size_t begin, size_t end, int pgs); void sc_boot(sc_data_t *data); #endif /* JEMALLOC_INTERNAL_SC_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/sec.h b/dep/jemalloc/include/jemalloc/internal/sec.h index fa863382db97f..cc458b9d5cb18 100644 --- a/dep/jemalloc/include/jemalloc/internal/sec.h +++ b/dep/jemalloc/include/jemalloc/internal/sec.h @@ -1,8 +1,12 @@ #ifndef JEMALLOC_INTERNAL_SEC_H #define JEMALLOC_INTERNAL_SEC_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" #include "jemalloc/internal/atomic.h" +#include "jemalloc/internal/mutex.h" #include "jemalloc/internal/pai.h" +#include "jemalloc/internal/sec_opts.h" /* * Small extent cache. @@ -13,91 +17,104 @@ * knowledge of the underlying PAI implementation). */ -/* - * For now, this is just one field; eventually, we'll probably want to get more - * fine-grained data out (like per-size class statistics). - */ +typedef struct sec_bin_stats_s sec_bin_stats_t; +struct sec_bin_stats_s { + /* Number of alloc requests that did not find extent in this bin */ + size_t nmisses; + /* Number of successful alloc requests. */ + size_t nhits; + /* Number of dallocs causing the flush */ + size_t ndalloc_flush; + /* Number of dallocs not causing the flush */ + size_t ndalloc_noflush; + /* Number of fills that hit max_bytes */ + size_t noverfills; +}; typedef struct sec_stats_s sec_stats_t; struct sec_stats_s { /* Sum of bytes_cur across all shards. */ size_t bytes; + + /* Totals of bin_stats. */ + sec_bin_stats_t total; }; +static inline void +sec_bin_stats_init(sec_bin_stats_t *stats) { + stats->ndalloc_flush = 0; + stats->nmisses = 0; + stats->nhits = 0; + stats->ndalloc_noflush = 0; + stats->noverfills = 0; +} + +static inline void +sec_bin_stats_accum(sec_bin_stats_t *dst, sec_bin_stats_t *src) { + dst->nmisses += src->nmisses; + dst->nhits += src->nhits; + dst->ndalloc_flush += src->ndalloc_flush; + dst->ndalloc_noflush += src->ndalloc_noflush; + dst->noverfills += src->noverfills; +} + static inline void sec_stats_accum(sec_stats_t *dst, sec_stats_t *src) { dst->bytes += src->bytes; + sec_bin_stats_accum(&dst->total, &src->total); } /* A collections of free extents, all of the same size. */ typedef struct sec_bin_s sec_bin_t; struct sec_bin_s { /* - * When we fail to fulfill an allocation, we do a batch-alloc on the - * underlying allocator to fill extra items, as well. We drop the SEC - * lock while doing so, to allow operations on other bins to succeed. - * That introduces the possibility of other threads also trying to - * allocate out of this bin, failing, and also going to the backing - * allocator. To avoid a thundering herd problem in which lots of - * threads do batch allocs and overfill this bin as a result, we only - * allow one batch allocation at a time for a bin. This bool tracks - * whether or not some thread is already batch allocating. - * - * Eventually, the right answer may be a smarter sharding policy for the - * bins (e.g. a mutex per bin, which would also be more scalable - * generally; the batch-allocating thread could hold it while - * batch-allocating). + * Protects the data members of the bin. */ - bool being_batch_filled; + malloc_mutex_t mtx; /* - * Number of bytes in this particular bin (as opposed to the - * sec_shard_t's bytes_cur. This isn't user visible or reported in - * stats; rather, it allows us to quickly determine the change in the - * centralized counter when flushing. + * Number of bytes in this particular bin. */ - size_t bytes_cur; + size_t bytes_cur; edata_list_active_t freelist; -}; - -typedef struct sec_shard_s sec_shard_t; -struct sec_shard_s { - /* - * We don't keep per-bin mutexes, even though that would allow more - * sharding; this allows global cache-eviction, which in turn allows for - * better balancing across free lists. - */ - malloc_mutex_t mtx; - /* - * A SEC may need to be shut down (i.e. flushed of its contents and - * prevented from further caching). To avoid tricky synchronization - * issues, we just track enabled-status in each shard, guarded by a - * mutex. In practice, this is only ever checked during brief races, - * since the arena-level atomic boolean tracking HPA enabled-ness means - * that we won't go down these pathways very often after custom extent - * hooks are installed. - */ - bool enabled; - sec_bin_t *bins; - /* Number of bytes in all bins in the shard. */ - size_t bytes_cur; - /* The next pszind to flush in the flush-some pathways. */ - pszind_t to_flush_next; + sec_bin_stats_t stats; }; typedef struct sec_s sec_t; struct sec_s { - pai_t pai; - pai_t *fallback; - sec_opts_t opts; - sec_shard_t *shards; - pszind_t npsizes; + sec_bin_t *bins; + pszind_t npsizes; }; -bool sec_init(tsdn_t *tsdn, sec_t *sec, base_t *base, pai_t *fallback, - const sec_opts_t *opts); -void sec_flush(tsdn_t *tsdn, sec_t *sec); -void sec_disable(tsdn_t *tsdn, sec_t *sec); +static inline bool +sec_is_used(sec_t *sec) { + return sec->opts.nshards != 0; +} + +static inline bool +sec_size_supported(sec_t *sec, size_t size) { + return sec_is_used(sec) && size <= sec->opts.max_alloc; +} + +/* If sec does not have extent available, it will return NULL. */ +edata_t *sec_alloc(tsdn_t *tsdn, sec_t *sec, size_t size); +void sec_fill(tsdn_t *tsdn, sec_t *sec, size_t size, + edata_list_active_t *result, size_t nallocs); + +/* + * Upon return dalloc_list may be empty if edata is consumed by sec or non-empty + * if there are extents that need to be flushed from cache. Please note, that + * if we need to flush, extent(s) returned in the list to be deallocated + * will almost certainly not contain the one being dalloc-ed (that one will be + * considered "hot" and preserved in the cache, while "colder" ones are + * returned). + */ +void sec_dalloc(tsdn_t *tsdn, sec_t *sec, edata_list_active_t *dalloc_list); + +bool sec_init(tsdn_t *tsdn, sec_t *sec, base_t *base, const sec_opts_t *opts); + +/* Fills to_flush with extents that need to be deallocated */ +void sec_flush(tsdn_t *tsdn, sec_t *sec, edata_list_active_t *to_flush); /* * Morally, these two stats methods probably ought to be a single one (and the @@ -106,8 +123,8 @@ void sec_disable(tsdn_t *tsdn, sec_t *sec); * split), which simplifies the stats management. */ void sec_stats_merge(tsdn_t *tsdn, sec_t *sec, sec_stats_t *stats); -void sec_mutex_stats_read(tsdn_t *tsdn, sec_t *sec, - mutex_prof_data_t *mutex_prof_data); +void sec_mutex_stats_read( + tsdn_t *tsdn, sec_t *sec, mutex_prof_data_t *mutex_prof_data); /* * We use the arena lock ordering; these are acquired in phase 2 of forking, but diff --git a/dep/jemalloc/include/jemalloc/internal/sec_opts.h b/dep/jemalloc/include/jemalloc/internal/sec_opts.h index a3ad72fbece5a..039d423c3466a 100644 --- a/dep/jemalloc/include/jemalloc/internal/sec_opts.h +++ b/dep/jemalloc/include/jemalloc/internal/sec_opts.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_SEC_OPTS_H #define JEMALLOC_INTERNAL_SEC_OPTS_H +#include "jemalloc/internal/jemalloc_preamble.h" + /* * The configuration settings used by an sec_t. Morally, this is part of the * SEC interface, but we put it here for header-ordering reasons. @@ -10,50 +12,39 @@ typedef struct sec_opts_s sec_opts_t; struct sec_opts_s { /* * We don't necessarily always use all the shards; requests are - * distributed across shards [0, nshards - 1). + * distributed across shards [0, nshards - 1). Once thread picks a + * shard it will always use that one. If this value is set to 0 sec is + * not used. */ size_t nshards; /* * We'll automatically refuse to cache any objects in this sec if - * they're larger than max_alloc bytes, instead forwarding such objects - * directly to the fallback. + * they're larger than max_alloc bytes. */ size_t max_alloc; /* - * Exceeding this amount of cached extents in a shard causes us to start - * flushing bins in that shard until we fall below bytes_after_flush. + * Exceeding this amount of cached extents in a bin causes us to flush + * until we are 1/4 below max_bytes. */ size_t max_bytes; - /* - * The number of bytes (in all bins) we flush down to when we exceed - * bytes_cur. We want this to be less than bytes_cur, because - * otherwise we could get into situations where a shard undergoing - * net-deallocation keeps bytes_cur very near to max_bytes, so that - * most deallocations get immediately forwarded to the underlying PAI - * implementation, defeating the point of the SEC. - */ - size_t bytes_after_flush; /* * When we can't satisfy an allocation out of the SEC because there are - * no available ones cached, we allocate multiple of that size out of - * the fallback allocator. Eventually we might want to do something - * cleverer, but for now we just grab a fixed number. + * no available ones cached, allocator will allocate a batch with extra + * batch_fill_extra extents of the same size. */ size_t batch_fill_extra; }; -#define SEC_OPTS_DEFAULT { \ - /* nshards */ \ - 4, \ - /* max_alloc */ \ - (32 * 1024) < PAGE ? PAGE : (32 * 1024), \ - /* max_bytes */ \ - 256 * 1024, \ - /* bytes_after_flush */ \ - 128 * 1024, \ - /* batch_fill_extra */ \ - 0 \ -} +#define SEC_OPTS_NSHARDS_DEFAULT 2 +#define SEC_OPTS_BATCH_FILL_EXTRA_DEFAULT 3 +#define SEC_OPTS_MAX_ALLOC_DEFAULT ((32 * 1024) < PAGE ? PAGE : (32 * 1024)) +#define SEC_OPTS_MAX_BYTES_DEFAULT \ + ((256 * 1024) < (4 * SEC_OPTS_MAX_ALLOC_DEFAULT) \ + ? (4 * SEC_OPTS_MAX_ALLOC_DEFAULT) \ + : (256 * 1024)) +#define SEC_OPTS_DEFAULT \ + {SEC_OPTS_NSHARDS_DEFAULT, SEC_OPTS_MAX_ALLOC_DEFAULT, \ + SEC_OPTS_MAX_BYTES_DEFAULT, SEC_OPTS_BATCH_FILL_EXTRA_DEFAULT} #endif /* JEMALLOC_INTERNAL_SEC_OPTS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/seq.h b/dep/jemalloc/include/jemalloc/internal/seq.h index ef2df4c6eef48..d2c0d1fc61770 100644 --- a/dep/jemalloc/include/jemalloc/internal/seq.h +++ b/dep/jemalloc/include/jemalloc/internal/seq.h @@ -1,12 +1,14 @@ #ifndef JEMALLOC_INTERNAL_SEQ_H #define JEMALLOC_INTERNAL_SEQ_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/atomic.h" /* * A simple seqlock implementation. */ +/* clang-format off */ #define seq_define(type, short_type) \ typedef struct { \ atomic_zu_t seq; \ @@ -51,5 +53,6 @@ seq_try_load_##short_type(type *dst, seq_##short_type##_t *src) { \ memcpy(dst, buf, sizeof(type)); \ return true; \ } +/* clang-format on */ #endif /* JEMALLOC_INTERNAL_SEQ_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/slab_data.h b/dep/jemalloc/include/jemalloc/internal/slab_data.h index e821863d8d1cf..724c71e36daf7 100644 --- a/dep/jemalloc/include/jemalloc/internal/slab_data.h +++ b/dep/jemalloc/include/jemalloc/internal/slab_data.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_SLAB_DATA_H #define JEMALLOC_INTERNAL_SLAB_DATA_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/bitmap.h" typedef struct slab_data_s slab_data_t; diff --git a/dep/jemalloc/include/jemalloc/internal/smoothstep.h b/dep/jemalloc/include/jemalloc/internal/smoothstep.h index 2e14430f5f1b6..135c490537e1e 100644 --- a/dep/jemalloc/include/jemalloc/internal/smoothstep.h +++ b/dep/jemalloc/include/jemalloc/internal/smoothstep.h @@ -23,210 +23,210 @@ * smootheststep(x) = -20x + 70x - 84x + 35x */ -#define SMOOTHSTEP_VARIANT "smoother" -#define SMOOTHSTEP_NSTEPS 200 -#define SMOOTHSTEP_BFP 24 -#define SMOOTHSTEP \ - /* STEP(step, h, x, y) */ \ - STEP( 1, UINT64_C(0x0000000000000014), 0.005, 0.000001240643750) \ - STEP( 2, UINT64_C(0x00000000000000a5), 0.010, 0.000009850600000) \ - STEP( 3, UINT64_C(0x0000000000000229), 0.015, 0.000032995181250) \ - STEP( 4, UINT64_C(0x0000000000000516), 0.020, 0.000077619200000) \ - STEP( 5, UINT64_C(0x00000000000009dc), 0.025, 0.000150449218750) \ - STEP( 6, UINT64_C(0x00000000000010e8), 0.030, 0.000257995800000) \ - STEP( 7, UINT64_C(0x0000000000001aa4), 0.035, 0.000406555756250) \ - STEP( 8, UINT64_C(0x0000000000002777), 0.040, 0.000602214400000) \ - STEP( 9, UINT64_C(0x00000000000037c2), 0.045, 0.000850847793750) \ - STEP( 10, UINT64_C(0x0000000000004be6), 0.050, 0.001158125000000) \ - STEP( 11, UINT64_C(0x000000000000643c), 0.055, 0.001529510331250) \ - STEP( 12, UINT64_C(0x000000000000811f), 0.060, 0.001970265600000) \ - STEP( 13, UINT64_C(0x000000000000a2e2), 0.065, 0.002485452368750) \ - STEP( 14, UINT64_C(0x000000000000c9d8), 0.070, 0.003079934200000) \ - STEP( 15, UINT64_C(0x000000000000f64f), 0.075, 0.003758378906250) \ - STEP( 16, UINT64_C(0x0000000000012891), 0.080, 0.004525260800000) \ - STEP( 17, UINT64_C(0x00000000000160e7), 0.085, 0.005384862943750) \ - STEP( 18, UINT64_C(0x0000000000019f95), 0.090, 0.006341279400000) \ - STEP( 19, UINT64_C(0x000000000001e4dc), 0.095, 0.007398417481250) \ - STEP( 20, UINT64_C(0x00000000000230fc), 0.100, 0.008560000000000) \ - STEP( 21, UINT64_C(0x0000000000028430), 0.105, 0.009829567518750) \ - STEP( 22, UINT64_C(0x000000000002deb0), 0.110, 0.011210480600000) \ - STEP( 23, UINT64_C(0x00000000000340b1), 0.115, 0.012705922056250) \ - STEP( 24, UINT64_C(0x000000000003aa67), 0.120, 0.014318899200000) \ - STEP( 25, UINT64_C(0x0000000000041c00), 0.125, 0.016052246093750) \ - STEP( 26, UINT64_C(0x00000000000495a8), 0.130, 0.017908625800000) \ - STEP( 27, UINT64_C(0x000000000005178b), 0.135, 0.019890532631250) \ - STEP( 28, UINT64_C(0x000000000005a1cf), 0.140, 0.022000294400000) \ - STEP( 29, UINT64_C(0x0000000000063498), 0.145, 0.024240074668750) \ - STEP( 30, UINT64_C(0x000000000006d009), 0.150, 0.026611875000000) \ - STEP( 31, UINT64_C(0x000000000007743f), 0.155, 0.029117537206250) \ - STEP( 32, UINT64_C(0x0000000000082157), 0.160, 0.031758745600000) \ - STEP( 33, UINT64_C(0x000000000008d76b), 0.165, 0.034537029243750) \ - STEP( 34, UINT64_C(0x0000000000099691), 0.170, 0.037453764200000) \ - STEP( 35, UINT64_C(0x00000000000a5edf), 0.175, 0.040510175781250) \ - STEP( 36, UINT64_C(0x00000000000b3067), 0.180, 0.043707340800000) \ - STEP( 37, UINT64_C(0x00000000000c0b38), 0.185, 0.047046189818750) \ - STEP( 38, UINT64_C(0x00000000000cef5e), 0.190, 0.050527509400000) \ - STEP( 39, UINT64_C(0x00000000000ddce6), 0.195, 0.054151944356250) \ - STEP( 40, UINT64_C(0x00000000000ed3d8), 0.200, 0.057920000000000) \ - STEP( 41, UINT64_C(0x00000000000fd439), 0.205, 0.061832044393750) \ - STEP( 42, UINT64_C(0x000000000010de0e), 0.210, 0.065888310600000) \ - STEP( 43, UINT64_C(0x000000000011f158), 0.215, 0.070088898931250) \ - STEP( 44, UINT64_C(0x0000000000130e17), 0.220, 0.074433779200000) \ - STEP( 45, UINT64_C(0x0000000000143448), 0.225, 0.078922792968750) \ - STEP( 46, UINT64_C(0x00000000001563e7), 0.230, 0.083555655800000) \ - STEP( 47, UINT64_C(0x0000000000169cec), 0.235, 0.088331959506250) \ - STEP( 48, UINT64_C(0x000000000017df4f), 0.240, 0.093251174400000) \ - STEP( 49, UINT64_C(0x0000000000192b04), 0.245, 0.098312651543750) \ - STEP( 50, UINT64_C(0x00000000001a8000), 0.250, 0.103515625000000) \ - STEP( 51, UINT64_C(0x00000000001bde32), 0.255, 0.108859214081250) \ - STEP( 52, UINT64_C(0x00000000001d458b), 0.260, 0.114342425600000) \ - STEP( 53, UINT64_C(0x00000000001eb5f8), 0.265, 0.119964156118750) \ - STEP( 54, UINT64_C(0x0000000000202f65), 0.270, 0.125723194200000) \ - STEP( 55, UINT64_C(0x000000000021b1bb), 0.275, 0.131618222656250) \ - STEP( 56, UINT64_C(0x0000000000233ce3), 0.280, 0.137647820800000) \ - STEP( 57, UINT64_C(0x000000000024d0c3), 0.285, 0.143810466693750) \ - STEP( 58, UINT64_C(0x0000000000266d40), 0.290, 0.150104539400000) \ - STEP( 59, UINT64_C(0x000000000028123d), 0.295, 0.156528321231250) \ - STEP( 60, UINT64_C(0x000000000029bf9c), 0.300, 0.163080000000000) \ - STEP( 61, UINT64_C(0x00000000002b753d), 0.305, 0.169757671268750) \ - STEP( 62, UINT64_C(0x00000000002d32fe), 0.310, 0.176559340600000) \ - STEP( 63, UINT64_C(0x00000000002ef8bc), 0.315, 0.183482925806250) \ - STEP( 64, UINT64_C(0x000000000030c654), 0.320, 0.190526259200000) \ - STEP( 65, UINT64_C(0x0000000000329b9f), 0.325, 0.197687089843750) \ - STEP( 66, UINT64_C(0x0000000000347875), 0.330, 0.204963085800000) \ - STEP( 67, UINT64_C(0x0000000000365cb0), 0.335, 0.212351836381250) \ - STEP( 68, UINT64_C(0x0000000000384825), 0.340, 0.219850854400000) \ - STEP( 69, UINT64_C(0x00000000003a3aa8), 0.345, 0.227457578418750) \ - STEP( 70, UINT64_C(0x00000000003c340f), 0.350, 0.235169375000000) \ - STEP( 71, UINT64_C(0x00000000003e342b), 0.355, 0.242983540956250) \ - STEP( 72, UINT64_C(0x0000000000403ace), 0.360, 0.250897305600000) \ - STEP( 73, UINT64_C(0x00000000004247c8), 0.365, 0.258907832993750) \ - STEP( 74, UINT64_C(0x0000000000445ae9), 0.370, 0.267012224200000) \ - STEP( 75, UINT64_C(0x0000000000467400), 0.375, 0.275207519531250) \ - STEP( 76, UINT64_C(0x00000000004892d8), 0.380, 0.283490700800000) \ - STEP( 77, UINT64_C(0x00000000004ab740), 0.385, 0.291858693568750) \ - STEP( 78, UINT64_C(0x00000000004ce102), 0.390, 0.300308369400000) \ - STEP( 79, UINT64_C(0x00000000004f0fe9), 0.395, 0.308836548106250) \ - STEP( 80, UINT64_C(0x00000000005143bf), 0.400, 0.317440000000000) \ - STEP( 81, UINT64_C(0x0000000000537c4d), 0.405, 0.326115448143750) \ - STEP( 82, UINT64_C(0x000000000055b95b), 0.410, 0.334859570600000) \ - STEP( 83, UINT64_C(0x000000000057fab1), 0.415, 0.343669002681250) \ - STEP( 84, UINT64_C(0x00000000005a4015), 0.420, 0.352540339200000) \ - STEP( 85, UINT64_C(0x00000000005c894e), 0.425, 0.361470136718750) \ - STEP( 86, UINT64_C(0x00000000005ed622), 0.430, 0.370454915800000) \ - STEP( 87, UINT64_C(0x0000000000612655), 0.435, 0.379491163256250) \ - STEP( 88, UINT64_C(0x00000000006379ac), 0.440, 0.388575334400000) \ - STEP( 89, UINT64_C(0x000000000065cfeb), 0.445, 0.397703855293750) \ - STEP( 90, UINT64_C(0x00000000006828d6), 0.450, 0.406873125000000) \ - STEP( 91, UINT64_C(0x00000000006a842f), 0.455, 0.416079517831250) \ - STEP( 92, UINT64_C(0x00000000006ce1bb), 0.460, 0.425319385600000) \ - STEP( 93, UINT64_C(0x00000000006f413a), 0.465, 0.434589059868750) \ - STEP( 94, UINT64_C(0x000000000071a270), 0.470, 0.443884854200000) \ - STEP( 95, UINT64_C(0x000000000074051d), 0.475, 0.453203066406250) \ - STEP( 96, UINT64_C(0x0000000000766905), 0.480, 0.462539980800000) \ - STEP( 97, UINT64_C(0x000000000078cde7), 0.485, 0.471891870443750) \ - STEP( 98, UINT64_C(0x00000000007b3387), 0.490, 0.481254999400000) \ - STEP( 99, UINT64_C(0x00000000007d99a4), 0.495, 0.490625624981250) \ - STEP( 100, UINT64_C(0x0000000000800000), 0.500, 0.500000000000000) \ - STEP( 101, UINT64_C(0x000000000082665b), 0.505, 0.509374375018750) \ - STEP( 102, UINT64_C(0x000000000084cc78), 0.510, 0.518745000600000) \ - STEP( 103, UINT64_C(0x0000000000873218), 0.515, 0.528108129556250) \ - STEP( 104, UINT64_C(0x00000000008996fa), 0.520, 0.537460019200000) \ - STEP( 105, UINT64_C(0x00000000008bfae2), 0.525, 0.546796933593750) \ - STEP( 106, UINT64_C(0x00000000008e5d8f), 0.530, 0.556115145800000) \ - STEP( 107, UINT64_C(0x000000000090bec5), 0.535, 0.565410940131250) \ - STEP( 108, UINT64_C(0x0000000000931e44), 0.540, 0.574680614400000) \ - STEP( 109, UINT64_C(0x0000000000957bd0), 0.545, 0.583920482168750) \ - STEP( 110, UINT64_C(0x000000000097d729), 0.550, 0.593126875000000) \ - STEP( 111, UINT64_C(0x00000000009a3014), 0.555, 0.602296144706250) \ - STEP( 112, UINT64_C(0x00000000009c8653), 0.560, 0.611424665600000) \ - STEP( 113, UINT64_C(0x00000000009ed9aa), 0.565, 0.620508836743750) \ - STEP( 114, UINT64_C(0x0000000000a129dd), 0.570, 0.629545084200000) \ - STEP( 115, UINT64_C(0x0000000000a376b1), 0.575, 0.638529863281250) \ - STEP( 116, UINT64_C(0x0000000000a5bfea), 0.580, 0.647459660800000) \ - STEP( 117, UINT64_C(0x0000000000a8054e), 0.585, 0.656330997318750) \ - STEP( 118, UINT64_C(0x0000000000aa46a4), 0.590, 0.665140429400000) \ - STEP( 119, UINT64_C(0x0000000000ac83b2), 0.595, 0.673884551856250) \ - STEP( 120, UINT64_C(0x0000000000aebc40), 0.600, 0.682560000000000) \ - STEP( 121, UINT64_C(0x0000000000b0f016), 0.605, 0.691163451893750) \ - STEP( 122, UINT64_C(0x0000000000b31efd), 0.610, 0.699691630600000) \ - STEP( 123, UINT64_C(0x0000000000b548bf), 0.615, 0.708141306431250) \ - STEP( 124, UINT64_C(0x0000000000b76d27), 0.620, 0.716509299200000) \ - STEP( 125, UINT64_C(0x0000000000b98c00), 0.625, 0.724792480468750) \ - STEP( 126, UINT64_C(0x0000000000bba516), 0.630, 0.732987775800000) \ - STEP( 127, UINT64_C(0x0000000000bdb837), 0.635, 0.741092167006250) \ - STEP( 128, UINT64_C(0x0000000000bfc531), 0.640, 0.749102694400000) \ - STEP( 129, UINT64_C(0x0000000000c1cbd4), 0.645, 0.757016459043750) \ - STEP( 130, UINT64_C(0x0000000000c3cbf0), 0.650, 0.764830625000000) \ - STEP( 131, UINT64_C(0x0000000000c5c557), 0.655, 0.772542421581250) \ - STEP( 132, UINT64_C(0x0000000000c7b7da), 0.660, 0.780149145600000) \ - STEP( 133, UINT64_C(0x0000000000c9a34f), 0.665, 0.787648163618750) \ - STEP( 134, UINT64_C(0x0000000000cb878a), 0.670, 0.795036914200000) \ - STEP( 135, UINT64_C(0x0000000000cd6460), 0.675, 0.802312910156250) \ - STEP( 136, UINT64_C(0x0000000000cf39ab), 0.680, 0.809473740800000) \ - STEP( 137, UINT64_C(0x0000000000d10743), 0.685, 0.816517074193750) \ - STEP( 138, UINT64_C(0x0000000000d2cd01), 0.690, 0.823440659400000) \ - STEP( 139, UINT64_C(0x0000000000d48ac2), 0.695, 0.830242328731250) \ - STEP( 140, UINT64_C(0x0000000000d64063), 0.700, 0.836920000000000) \ - STEP( 141, UINT64_C(0x0000000000d7edc2), 0.705, 0.843471678768750) \ - STEP( 142, UINT64_C(0x0000000000d992bf), 0.710, 0.849895460600000) \ - STEP( 143, UINT64_C(0x0000000000db2f3c), 0.715, 0.856189533306250) \ - STEP( 144, UINT64_C(0x0000000000dcc31c), 0.720, 0.862352179200000) \ - STEP( 145, UINT64_C(0x0000000000de4e44), 0.725, 0.868381777343750) \ - STEP( 146, UINT64_C(0x0000000000dfd09a), 0.730, 0.874276805800000) \ - STEP( 147, UINT64_C(0x0000000000e14a07), 0.735, 0.880035843881250) \ - STEP( 148, UINT64_C(0x0000000000e2ba74), 0.740, 0.885657574400000) \ - STEP( 149, UINT64_C(0x0000000000e421cd), 0.745, 0.891140785918750) \ - STEP( 150, UINT64_C(0x0000000000e58000), 0.750, 0.896484375000000) \ - STEP( 151, UINT64_C(0x0000000000e6d4fb), 0.755, 0.901687348456250) \ - STEP( 152, UINT64_C(0x0000000000e820b0), 0.760, 0.906748825600000) \ - STEP( 153, UINT64_C(0x0000000000e96313), 0.765, 0.911668040493750) \ - STEP( 154, UINT64_C(0x0000000000ea9c18), 0.770, 0.916444344200000) \ - STEP( 155, UINT64_C(0x0000000000ebcbb7), 0.775, 0.921077207031250) \ - STEP( 156, UINT64_C(0x0000000000ecf1e8), 0.780, 0.925566220800000) \ - STEP( 157, UINT64_C(0x0000000000ee0ea7), 0.785, 0.929911101068750) \ - STEP( 158, UINT64_C(0x0000000000ef21f1), 0.790, 0.934111689400000) \ - STEP( 159, UINT64_C(0x0000000000f02bc6), 0.795, 0.938167955606250) \ - STEP( 160, UINT64_C(0x0000000000f12c27), 0.800, 0.942080000000000) \ - STEP( 161, UINT64_C(0x0000000000f22319), 0.805, 0.945848055643750) \ - STEP( 162, UINT64_C(0x0000000000f310a1), 0.810, 0.949472490600000) \ - STEP( 163, UINT64_C(0x0000000000f3f4c7), 0.815, 0.952953810181250) \ - STEP( 164, UINT64_C(0x0000000000f4cf98), 0.820, 0.956292659200000) \ - STEP( 165, UINT64_C(0x0000000000f5a120), 0.825, 0.959489824218750) \ - STEP( 166, UINT64_C(0x0000000000f6696e), 0.830, 0.962546235800000) \ - STEP( 167, UINT64_C(0x0000000000f72894), 0.835, 0.965462970756250) \ - STEP( 168, UINT64_C(0x0000000000f7dea8), 0.840, 0.968241254400000) \ - STEP( 169, UINT64_C(0x0000000000f88bc0), 0.845, 0.970882462793750) \ - STEP( 170, UINT64_C(0x0000000000f92ff6), 0.850, 0.973388125000000) \ - STEP( 171, UINT64_C(0x0000000000f9cb67), 0.855, 0.975759925331250) \ - STEP( 172, UINT64_C(0x0000000000fa5e30), 0.860, 0.977999705600000) \ - STEP( 173, UINT64_C(0x0000000000fae874), 0.865, 0.980109467368750) \ - STEP( 174, UINT64_C(0x0000000000fb6a57), 0.870, 0.982091374200000) \ - STEP( 175, UINT64_C(0x0000000000fbe400), 0.875, 0.983947753906250) \ - STEP( 176, UINT64_C(0x0000000000fc5598), 0.880, 0.985681100800000) \ - STEP( 177, UINT64_C(0x0000000000fcbf4e), 0.885, 0.987294077943750) \ - STEP( 178, UINT64_C(0x0000000000fd214f), 0.890, 0.988789519400000) \ - STEP( 179, UINT64_C(0x0000000000fd7bcf), 0.895, 0.990170432481250) \ - STEP( 180, UINT64_C(0x0000000000fdcf03), 0.900, 0.991440000000000) \ - STEP( 181, UINT64_C(0x0000000000fe1b23), 0.905, 0.992601582518750) \ - STEP( 182, UINT64_C(0x0000000000fe606a), 0.910, 0.993658720600000) \ - STEP( 183, UINT64_C(0x0000000000fe9f18), 0.915, 0.994615137056250) \ - STEP( 184, UINT64_C(0x0000000000fed76e), 0.920, 0.995474739200000) \ - STEP( 185, UINT64_C(0x0000000000ff09b0), 0.925, 0.996241621093750) \ - STEP( 186, UINT64_C(0x0000000000ff3627), 0.930, 0.996920065800000) \ - STEP( 187, UINT64_C(0x0000000000ff5d1d), 0.935, 0.997514547631250) \ - STEP( 188, UINT64_C(0x0000000000ff7ee0), 0.940, 0.998029734400000) \ - STEP( 189, UINT64_C(0x0000000000ff9bc3), 0.945, 0.998470489668750) \ - STEP( 190, UINT64_C(0x0000000000ffb419), 0.950, 0.998841875000000) \ - STEP( 191, UINT64_C(0x0000000000ffc83d), 0.955, 0.999149152206250) \ - STEP( 192, UINT64_C(0x0000000000ffd888), 0.960, 0.999397785600000) \ - STEP( 193, UINT64_C(0x0000000000ffe55b), 0.965, 0.999593444243750) \ - STEP( 194, UINT64_C(0x0000000000ffef17), 0.970, 0.999742004200000) \ - STEP( 195, UINT64_C(0x0000000000fff623), 0.975, 0.999849550781250) \ - STEP( 196, UINT64_C(0x0000000000fffae9), 0.980, 0.999922380800000) \ - STEP( 197, UINT64_C(0x0000000000fffdd6), 0.985, 0.999967004818750) \ - STEP( 198, UINT64_C(0x0000000000ffff5a), 0.990, 0.999990149400000) \ - STEP( 199, UINT64_C(0x0000000000ffffeb), 0.995, 0.999998759356250) \ - STEP( 200, UINT64_C(0x0000000001000000), 1.000, 1.000000000000000) \ +#define SMOOTHSTEP_VARIANT "smoother" +#define SMOOTHSTEP_NSTEPS 200 +#define SMOOTHSTEP_BFP 24 +#define SMOOTHSTEP \ + /* STEP(step, h, x, y) */ \ + STEP(1, UINT64_C(0x0000000000000014), 0.005, 0.000001240643750) \ + STEP(2, UINT64_C(0x00000000000000a5), 0.010, 0.000009850600000) \ + STEP(3, UINT64_C(0x0000000000000229), 0.015, 0.000032995181250) \ + STEP(4, UINT64_C(0x0000000000000516), 0.020, 0.000077619200000) \ + STEP(5, UINT64_C(0x00000000000009dc), 0.025, 0.000150449218750) \ + STEP(6, UINT64_C(0x00000000000010e8), 0.030, 0.000257995800000) \ + STEP(7, UINT64_C(0x0000000000001aa4), 0.035, 0.000406555756250) \ + STEP(8, UINT64_C(0x0000000000002777), 0.040, 0.000602214400000) \ + STEP(9, UINT64_C(0x00000000000037c2), 0.045, 0.000850847793750) \ + STEP(10, UINT64_C(0x0000000000004be6), 0.050, 0.001158125000000) \ + STEP(11, UINT64_C(0x000000000000643c), 0.055, 0.001529510331250) \ + STEP(12, UINT64_C(0x000000000000811f), 0.060, 0.001970265600000) \ + STEP(13, UINT64_C(0x000000000000a2e2), 0.065, 0.002485452368750) \ + STEP(14, UINT64_C(0x000000000000c9d8), 0.070, 0.003079934200000) \ + STEP(15, UINT64_C(0x000000000000f64f), 0.075, 0.003758378906250) \ + STEP(16, UINT64_C(0x0000000000012891), 0.080, 0.004525260800000) \ + STEP(17, UINT64_C(0x00000000000160e7), 0.085, 0.005384862943750) \ + STEP(18, UINT64_C(0x0000000000019f95), 0.090, 0.006341279400000) \ + STEP(19, UINT64_C(0x000000000001e4dc), 0.095, 0.007398417481250) \ + STEP(20, UINT64_C(0x00000000000230fc), 0.100, 0.008560000000000) \ + STEP(21, UINT64_C(0x0000000000028430), 0.105, 0.009829567518750) \ + STEP(22, UINT64_C(0x000000000002deb0), 0.110, 0.011210480600000) \ + STEP(23, UINT64_C(0x00000000000340b1), 0.115, 0.012705922056250) \ + STEP(24, UINT64_C(0x000000000003aa67), 0.120, 0.014318899200000) \ + STEP(25, UINT64_C(0x0000000000041c00), 0.125, 0.016052246093750) \ + STEP(26, UINT64_C(0x00000000000495a8), 0.130, 0.017908625800000) \ + STEP(27, UINT64_C(0x000000000005178b), 0.135, 0.019890532631250) \ + STEP(28, UINT64_C(0x000000000005a1cf), 0.140, 0.022000294400000) \ + STEP(29, UINT64_C(0x0000000000063498), 0.145, 0.024240074668750) \ + STEP(30, UINT64_C(0x000000000006d009), 0.150, 0.026611875000000) \ + STEP(31, UINT64_C(0x000000000007743f), 0.155, 0.029117537206250) \ + STEP(32, UINT64_C(0x0000000000082157), 0.160, 0.031758745600000) \ + STEP(33, UINT64_C(0x000000000008d76b), 0.165, 0.034537029243750) \ + STEP(34, UINT64_C(0x0000000000099691), 0.170, 0.037453764200000) \ + STEP(35, UINT64_C(0x00000000000a5edf), 0.175, 0.040510175781250) \ + STEP(36, UINT64_C(0x00000000000b3067), 0.180, 0.043707340800000) \ + STEP(37, UINT64_C(0x00000000000c0b38), 0.185, 0.047046189818750) \ + STEP(38, UINT64_C(0x00000000000cef5e), 0.190, 0.050527509400000) \ + STEP(39, UINT64_C(0x00000000000ddce6), 0.195, 0.054151944356250) \ + STEP(40, UINT64_C(0x00000000000ed3d8), 0.200, 0.057920000000000) \ + STEP(41, UINT64_C(0x00000000000fd439), 0.205, 0.061832044393750) \ + STEP(42, UINT64_C(0x000000000010de0e), 0.210, 0.065888310600000) \ + STEP(43, UINT64_C(0x000000000011f158), 0.215, 0.070088898931250) \ + STEP(44, UINT64_C(0x0000000000130e17), 0.220, 0.074433779200000) \ + STEP(45, UINT64_C(0x0000000000143448), 0.225, 0.078922792968750) \ + STEP(46, UINT64_C(0x00000000001563e7), 0.230, 0.083555655800000) \ + STEP(47, UINT64_C(0x0000000000169cec), 0.235, 0.088331959506250) \ + STEP(48, UINT64_C(0x000000000017df4f), 0.240, 0.093251174400000) \ + STEP(49, UINT64_C(0x0000000000192b04), 0.245, 0.098312651543750) \ + STEP(50, UINT64_C(0x00000000001a8000), 0.250, 0.103515625000000) \ + STEP(51, UINT64_C(0x00000000001bde32), 0.255, 0.108859214081250) \ + STEP(52, UINT64_C(0x00000000001d458b), 0.260, 0.114342425600000) \ + STEP(53, UINT64_C(0x00000000001eb5f8), 0.265, 0.119964156118750) \ + STEP(54, UINT64_C(0x0000000000202f65), 0.270, 0.125723194200000) \ + STEP(55, UINT64_C(0x000000000021b1bb), 0.275, 0.131618222656250) \ + STEP(56, UINT64_C(0x0000000000233ce3), 0.280, 0.137647820800000) \ + STEP(57, UINT64_C(0x000000000024d0c3), 0.285, 0.143810466693750) \ + STEP(58, UINT64_C(0x0000000000266d40), 0.290, 0.150104539400000) \ + STEP(59, UINT64_C(0x000000000028123d), 0.295, 0.156528321231250) \ + STEP(60, UINT64_C(0x000000000029bf9c), 0.300, 0.163080000000000) \ + STEP(61, UINT64_C(0x00000000002b753d), 0.305, 0.169757671268750) \ + STEP(62, UINT64_C(0x00000000002d32fe), 0.310, 0.176559340600000) \ + STEP(63, UINT64_C(0x00000000002ef8bc), 0.315, 0.183482925806250) \ + STEP(64, UINT64_C(0x000000000030c654), 0.320, 0.190526259200000) \ + STEP(65, UINT64_C(0x0000000000329b9f), 0.325, 0.197687089843750) \ + STEP(66, UINT64_C(0x0000000000347875), 0.330, 0.204963085800000) \ + STEP(67, UINT64_C(0x0000000000365cb0), 0.335, 0.212351836381250) \ + STEP(68, UINT64_C(0x0000000000384825), 0.340, 0.219850854400000) \ + STEP(69, UINT64_C(0x00000000003a3aa8), 0.345, 0.227457578418750) \ + STEP(70, UINT64_C(0x00000000003c340f), 0.350, 0.235169375000000) \ + STEP(71, UINT64_C(0x00000000003e342b), 0.355, 0.242983540956250) \ + STEP(72, UINT64_C(0x0000000000403ace), 0.360, 0.250897305600000) \ + STEP(73, UINT64_C(0x00000000004247c8), 0.365, 0.258907832993750) \ + STEP(74, UINT64_C(0x0000000000445ae9), 0.370, 0.267012224200000) \ + STEP(75, UINT64_C(0x0000000000467400), 0.375, 0.275207519531250) \ + STEP(76, UINT64_C(0x00000000004892d8), 0.380, 0.283490700800000) \ + STEP(77, UINT64_C(0x00000000004ab740), 0.385, 0.291858693568750) \ + STEP(78, UINT64_C(0x00000000004ce102), 0.390, 0.300308369400000) \ + STEP(79, UINT64_C(0x00000000004f0fe9), 0.395, 0.308836548106250) \ + STEP(80, UINT64_C(0x00000000005143bf), 0.400, 0.317440000000000) \ + STEP(81, UINT64_C(0x0000000000537c4d), 0.405, 0.326115448143750) \ + STEP(82, UINT64_C(0x000000000055b95b), 0.410, 0.334859570600000) \ + STEP(83, UINT64_C(0x000000000057fab1), 0.415, 0.343669002681250) \ + STEP(84, UINT64_C(0x00000000005a4015), 0.420, 0.352540339200000) \ + STEP(85, UINT64_C(0x00000000005c894e), 0.425, 0.361470136718750) \ + STEP(86, UINT64_C(0x00000000005ed622), 0.430, 0.370454915800000) \ + STEP(87, UINT64_C(0x0000000000612655), 0.435, 0.379491163256250) \ + STEP(88, UINT64_C(0x00000000006379ac), 0.440, 0.388575334400000) \ + STEP(89, UINT64_C(0x000000000065cfeb), 0.445, 0.397703855293750) \ + STEP(90, UINT64_C(0x00000000006828d6), 0.450, 0.406873125000000) \ + STEP(91, UINT64_C(0x00000000006a842f), 0.455, 0.416079517831250) \ + STEP(92, UINT64_C(0x00000000006ce1bb), 0.460, 0.425319385600000) \ + STEP(93, UINT64_C(0x00000000006f413a), 0.465, 0.434589059868750) \ + STEP(94, UINT64_C(0x000000000071a270), 0.470, 0.443884854200000) \ + STEP(95, UINT64_C(0x000000000074051d), 0.475, 0.453203066406250) \ + STEP(96, UINT64_C(0x0000000000766905), 0.480, 0.462539980800000) \ + STEP(97, UINT64_C(0x000000000078cde7), 0.485, 0.471891870443750) \ + STEP(98, UINT64_C(0x00000000007b3387), 0.490, 0.481254999400000) \ + STEP(99, UINT64_C(0x00000000007d99a4), 0.495, 0.490625624981250) \ + STEP(100, UINT64_C(0x0000000000800000), 0.500, 0.500000000000000) \ + STEP(101, UINT64_C(0x000000000082665b), 0.505, 0.509374375018750) \ + STEP(102, UINT64_C(0x000000000084cc78), 0.510, 0.518745000600000) \ + STEP(103, UINT64_C(0x0000000000873218), 0.515, 0.528108129556250) \ + STEP(104, UINT64_C(0x00000000008996fa), 0.520, 0.537460019200000) \ + STEP(105, UINT64_C(0x00000000008bfae2), 0.525, 0.546796933593750) \ + STEP(106, UINT64_C(0x00000000008e5d8f), 0.530, 0.556115145800000) \ + STEP(107, UINT64_C(0x000000000090bec5), 0.535, 0.565410940131250) \ + STEP(108, UINT64_C(0x0000000000931e44), 0.540, 0.574680614400000) \ + STEP(109, UINT64_C(0x0000000000957bd0), 0.545, 0.583920482168750) \ + STEP(110, UINT64_C(0x000000000097d729), 0.550, 0.593126875000000) \ + STEP(111, UINT64_C(0x00000000009a3014), 0.555, 0.602296144706250) \ + STEP(112, UINT64_C(0x00000000009c8653), 0.560, 0.611424665600000) \ + STEP(113, UINT64_C(0x00000000009ed9aa), 0.565, 0.620508836743750) \ + STEP(114, UINT64_C(0x0000000000a129dd), 0.570, 0.629545084200000) \ + STEP(115, UINT64_C(0x0000000000a376b1), 0.575, 0.638529863281250) \ + STEP(116, UINT64_C(0x0000000000a5bfea), 0.580, 0.647459660800000) \ + STEP(117, UINT64_C(0x0000000000a8054e), 0.585, 0.656330997318750) \ + STEP(118, UINT64_C(0x0000000000aa46a4), 0.590, 0.665140429400000) \ + STEP(119, UINT64_C(0x0000000000ac83b2), 0.595, 0.673884551856250) \ + STEP(120, UINT64_C(0x0000000000aebc40), 0.600, 0.682560000000000) \ + STEP(121, UINT64_C(0x0000000000b0f016), 0.605, 0.691163451893750) \ + STEP(122, UINT64_C(0x0000000000b31efd), 0.610, 0.699691630600000) \ + STEP(123, UINT64_C(0x0000000000b548bf), 0.615, 0.708141306431250) \ + STEP(124, UINT64_C(0x0000000000b76d27), 0.620, 0.716509299200000) \ + STEP(125, UINT64_C(0x0000000000b98c00), 0.625, 0.724792480468750) \ + STEP(126, UINT64_C(0x0000000000bba516), 0.630, 0.732987775800000) \ + STEP(127, UINT64_C(0x0000000000bdb837), 0.635, 0.741092167006250) \ + STEP(128, UINT64_C(0x0000000000bfc531), 0.640, 0.749102694400000) \ + STEP(129, UINT64_C(0x0000000000c1cbd4), 0.645, 0.757016459043750) \ + STEP(130, UINT64_C(0x0000000000c3cbf0), 0.650, 0.764830625000000) \ + STEP(131, UINT64_C(0x0000000000c5c557), 0.655, 0.772542421581250) \ + STEP(132, UINT64_C(0x0000000000c7b7da), 0.660, 0.780149145600000) \ + STEP(133, UINT64_C(0x0000000000c9a34f), 0.665, 0.787648163618750) \ + STEP(134, UINT64_C(0x0000000000cb878a), 0.670, 0.795036914200000) \ + STEP(135, UINT64_C(0x0000000000cd6460), 0.675, 0.802312910156250) \ + STEP(136, UINT64_C(0x0000000000cf39ab), 0.680, 0.809473740800000) \ + STEP(137, UINT64_C(0x0000000000d10743), 0.685, 0.816517074193750) \ + STEP(138, UINT64_C(0x0000000000d2cd01), 0.690, 0.823440659400000) \ + STEP(139, UINT64_C(0x0000000000d48ac2), 0.695, 0.830242328731250) \ + STEP(140, UINT64_C(0x0000000000d64063), 0.700, 0.836920000000000) \ + STEP(141, UINT64_C(0x0000000000d7edc2), 0.705, 0.843471678768750) \ + STEP(142, UINT64_C(0x0000000000d992bf), 0.710, 0.849895460600000) \ + STEP(143, UINT64_C(0x0000000000db2f3c), 0.715, 0.856189533306250) \ + STEP(144, UINT64_C(0x0000000000dcc31c), 0.720, 0.862352179200000) \ + STEP(145, UINT64_C(0x0000000000de4e44), 0.725, 0.868381777343750) \ + STEP(146, UINT64_C(0x0000000000dfd09a), 0.730, 0.874276805800000) \ + STEP(147, UINT64_C(0x0000000000e14a07), 0.735, 0.880035843881250) \ + STEP(148, UINT64_C(0x0000000000e2ba74), 0.740, 0.885657574400000) \ + STEP(149, UINT64_C(0x0000000000e421cd), 0.745, 0.891140785918750) \ + STEP(150, UINT64_C(0x0000000000e58000), 0.750, 0.896484375000000) \ + STEP(151, UINT64_C(0x0000000000e6d4fb), 0.755, 0.901687348456250) \ + STEP(152, UINT64_C(0x0000000000e820b0), 0.760, 0.906748825600000) \ + STEP(153, UINT64_C(0x0000000000e96313), 0.765, 0.911668040493750) \ + STEP(154, UINT64_C(0x0000000000ea9c18), 0.770, 0.916444344200000) \ + STEP(155, UINT64_C(0x0000000000ebcbb7), 0.775, 0.921077207031250) \ + STEP(156, UINT64_C(0x0000000000ecf1e8), 0.780, 0.925566220800000) \ + STEP(157, UINT64_C(0x0000000000ee0ea7), 0.785, 0.929911101068750) \ + STEP(158, UINT64_C(0x0000000000ef21f1), 0.790, 0.934111689400000) \ + STEP(159, UINT64_C(0x0000000000f02bc6), 0.795, 0.938167955606250) \ + STEP(160, UINT64_C(0x0000000000f12c27), 0.800, 0.942080000000000) \ + STEP(161, UINT64_C(0x0000000000f22319), 0.805, 0.945848055643750) \ + STEP(162, UINT64_C(0x0000000000f310a1), 0.810, 0.949472490600000) \ + STEP(163, UINT64_C(0x0000000000f3f4c7), 0.815, 0.952953810181250) \ + STEP(164, UINT64_C(0x0000000000f4cf98), 0.820, 0.956292659200000) \ + STEP(165, UINT64_C(0x0000000000f5a120), 0.825, 0.959489824218750) \ + STEP(166, UINT64_C(0x0000000000f6696e), 0.830, 0.962546235800000) \ + STEP(167, UINT64_C(0x0000000000f72894), 0.835, 0.965462970756250) \ + STEP(168, UINT64_C(0x0000000000f7dea8), 0.840, 0.968241254400000) \ + STEP(169, UINT64_C(0x0000000000f88bc0), 0.845, 0.970882462793750) \ + STEP(170, UINT64_C(0x0000000000f92ff6), 0.850, 0.973388125000000) \ + STEP(171, UINT64_C(0x0000000000f9cb67), 0.855, 0.975759925331250) \ + STEP(172, UINT64_C(0x0000000000fa5e30), 0.860, 0.977999705600000) \ + STEP(173, UINT64_C(0x0000000000fae874), 0.865, 0.980109467368750) \ + STEP(174, UINT64_C(0x0000000000fb6a57), 0.870, 0.982091374200000) \ + STEP(175, UINT64_C(0x0000000000fbe400), 0.875, 0.983947753906250) \ + STEP(176, UINT64_C(0x0000000000fc5598), 0.880, 0.985681100800000) \ + STEP(177, UINT64_C(0x0000000000fcbf4e), 0.885, 0.987294077943750) \ + STEP(178, UINT64_C(0x0000000000fd214f), 0.890, 0.988789519400000) \ + STEP(179, UINT64_C(0x0000000000fd7bcf), 0.895, 0.990170432481250) \ + STEP(180, UINT64_C(0x0000000000fdcf03), 0.900, 0.991440000000000) \ + STEP(181, UINT64_C(0x0000000000fe1b23), 0.905, 0.992601582518750) \ + STEP(182, UINT64_C(0x0000000000fe606a), 0.910, 0.993658720600000) \ + STEP(183, UINT64_C(0x0000000000fe9f18), 0.915, 0.994615137056250) \ + STEP(184, UINT64_C(0x0000000000fed76e), 0.920, 0.995474739200000) \ + STEP(185, UINT64_C(0x0000000000ff09b0), 0.925, 0.996241621093750) \ + STEP(186, UINT64_C(0x0000000000ff3627), 0.930, 0.996920065800000) \ + STEP(187, UINT64_C(0x0000000000ff5d1d), 0.935, 0.997514547631250) \ + STEP(188, UINT64_C(0x0000000000ff7ee0), 0.940, 0.998029734400000) \ + STEP(189, UINT64_C(0x0000000000ff9bc3), 0.945, 0.998470489668750) \ + STEP(190, UINT64_C(0x0000000000ffb419), 0.950, 0.998841875000000) \ + STEP(191, UINT64_C(0x0000000000ffc83d), 0.955, 0.999149152206250) \ + STEP(192, UINT64_C(0x0000000000ffd888), 0.960, 0.999397785600000) \ + STEP(193, UINT64_C(0x0000000000ffe55b), 0.965, 0.999593444243750) \ + STEP(194, UINT64_C(0x0000000000ffef17), 0.970, 0.999742004200000) \ + STEP(195, UINT64_C(0x0000000000fff623), 0.975, 0.999849550781250) \ + STEP(196, UINT64_C(0x0000000000fffae9), 0.980, 0.999922380800000) \ + STEP(197, UINT64_C(0x0000000000fffdd6), 0.985, 0.999967004818750) \ + STEP(198, UINT64_C(0x0000000000ffff5a), 0.990, 0.999990149400000) \ + STEP(199, UINT64_C(0x0000000000ffffeb), 0.995, 0.999998759356250) \ + STEP(200, UINT64_C(0x0000000001000000), 1.000, 1.000000000000000) #endif /* JEMALLOC_INTERNAL_SMOOTHSTEP_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/spin.h b/dep/jemalloc/include/jemalloc/internal/spin.h index 22804c687f104..4cd5e1db1bd0f 100644 --- a/dep/jemalloc/include/jemalloc/internal/spin.h +++ b/dep/jemalloc/include/jemalloc/internal/spin.h @@ -1,20 +1,23 @@ #ifndef JEMALLOC_INTERNAL_SPIN_H #define JEMALLOC_INTERNAL_SPIN_H -#define SPIN_INITIALIZER {0U} +#include "jemalloc/internal/jemalloc_preamble.h" + +#define SPIN_INITIALIZER \ + { 0U } typedef struct { unsigned iteration; } spin_t; static inline void -spin_cpu_spinwait() { -# if HAVE_CPU_SPINWAIT +spin_cpu_spinwait(void) { +#if HAVE_CPU_SPINWAIT CPU_SPINWAIT; -# else +#else volatile int x = 0; x = x; -# endif +#endif } static inline void diff --git a/dep/jemalloc/include/jemalloc/internal/stats.h b/dep/jemalloc/include/jemalloc/internal/stats.h index 727f7dcbd7187..1c7b23e05e0f5 100644 --- a/dep/jemalloc/include/jemalloc/internal/stats.h +++ b/dep/jemalloc/include/jemalloc/internal/stats.h @@ -1,33 +1,38 @@ #ifndef JEMALLOC_INTERNAL_STATS_H #define JEMALLOC_INTERNAL_STATS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_types.h" +#include "jemalloc/internal/thread_event_registry.h" +#include "jemalloc/internal/tsd_types.h" + /* OPTION(opt, var_name, default, set_value_to) */ -#define STATS_PRINT_OPTIONS \ - OPTION('J', json, false, true) \ - OPTION('g', general, true, false) \ - OPTION('m', merged, config_stats, false) \ - OPTION('d', destroyed, config_stats, false) \ - OPTION('a', unmerged, config_stats, false) \ - OPTION('b', bins, true, false) \ - OPTION('l', large, true, false) \ - OPTION('x', mutex, true, false) \ - OPTION('e', extents, true, false) \ - OPTION('h', hpa, config_stats, false) +#define STATS_PRINT_OPTIONS \ + OPTION('J', json, false, true) \ + OPTION('g', general, true, false) \ + OPTION('m', merged, config_stats, false) \ + OPTION('d', destroyed, config_stats, false) \ + OPTION('a', unmerged, config_stats, false) \ + OPTION('b', bins, true, false) \ + OPTION('l', large, true, false) \ + OPTION('x', mutex, true, false) \ + OPTION('e', extents, true, false) \ + OPTION('h', hpa, config_stats, false) enum { #define OPTION(o, v, d, s) stats_print_option_num_##v, - STATS_PRINT_OPTIONS + STATS_PRINT_OPTIONS #undef OPTION - stats_print_tot_num_options + stats_print_tot_num_options }; /* Options for stats_print. */ extern bool opt_stats_print; -extern char opt_stats_print_opts[stats_print_tot_num_options+1]; +extern char opt_stats_print_opts[stats_print_tot_num_options + 1]; /* Utilities for stats_interval. */ extern int64_t opt_stats_interval; -extern char opt_stats_interval_opts[stats_print_tot_num_options+1]; +extern char opt_stats_interval_opts[stats_print_tot_num_options + 1]; #define STATS_INTERVAL_DEFAULT -1 /* @@ -39,9 +44,7 @@ extern char opt_stats_interval_opts[stats_print_tot_num_options+1]; #define STATS_INTERVAL_ACCUM_BATCH_MAX (4 << 20) /* Only accessed by thread event. */ -uint64_t stats_interval_new_event_wait(tsd_t *tsd); -uint64_t stats_interval_postponed_event_wait(tsd_t *tsd); -void stats_interval_event_handler(tsd_t *tsd, uint64_t elapsed); +extern te_base_cb_t stats_interval_te_handler; /* Implements je_malloc_stats_print. */ void stats_print(write_cb_t *write_cb, void *cbopaque, const char *opts); diff --git a/dep/jemalloc/include/jemalloc/internal/sz.h b/dep/jemalloc/include/jemalloc/internal/sz.h index 3c0fc1da33a64..d75a3034d4812 100644 --- a/dep/jemalloc/include/jemalloc/internal/sz.h +++ b/dep/jemalloc/include/jemalloc/internal/sz.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_SIZE_H #define JEMALLOC_INTERNAL_SIZE_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/bit_util.h" #include "jemalloc/internal/pages.h" #include "jemalloc/internal/sc.h" @@ -53,6 +54,11 @@ extern size_t sz_large_pad; extern void sz_boot(const sc_data_t *sc_data, bool cache_oblivious); +JEMALLOC_ALWAYS_INLINE bool +sz_large_size_classes_disabled(void) { + return opt_disable_large_size_classes; +} + JEMALLOC_ALWAYS_INLINE pszind_t sz_psz2ind(size_t psz) { assert(psz > 0); @@ -70,8 +76,9 @@ sz_psz2ind(size_t psz) { * SC_NGROUP. off_to_first_ps_rg begins from 1, instead of 0. e.g. * off_to_first_ps_rg is 1 when psz is (PAGE * SC_NGROUP + 1). */ - pszind_t off_to_first_ps_rg = (x < SC_LG_NGROUP + LG_PAGE) ? - 0 : x - (SC_LG_NGROUP + LG_PAGE); + pszind_t off_to_first_ps_rg = (x < SC_LG_NGROUP + LG_PAGE) + ? 0 + : x - (SC_LG_NGROUP + LG_PAGE); /* * Same as sc_s::lg_delta. @@ -79,8 +86,9 @@ sz_psz2ind(size_t psz) { * for each increase in offset, it's multiplied by two. * Therefore, lg_delta = LG_PAGE + (off_to_first_ps_rg - 1). */ - pszind_t lg_delta = (off_to_first_ps_rg == 0) ? - LG_PAGE : LG_PAGE + (off_to_first_ps_rg - 1); + pszind_t lg_delta = (off_to_first_ps_rg == 0) + ? LG_PAGE + : LG_PAGE + (off_to_first_ps_rg - 1); /* * Let's write psz in binary, e.g. 0011 for 0x3, 0111 for 0x7. @@ -112,13 +120,13 @@ sz_pind2sz_compute(pszind_t pind) { size_t grp = pind >> SC_LG_NGROUP; size_t mod = pind & ((ZU(1) << SC_LG_NGROUP) - 1); - size_t grp_size_mask = ~((!!grp)-1); - size_t grp_size = ((ZU(1) << (LG_PAGE + (SC_LG_NGROUP-1))) << grp) + size_t grp_size_mask = ~((!!grp) - 1); + size_t grp_size = ((ZU(1) << (LG_PAGE + (SC_LG_NGROUP - 1))) << grp) & grp_size_mask; size_t shift = (grp == 0) ? 1 : grp; - size_t lg_delta = shift + (LG_PAGE-1); - size_t mod_size = (mod+1) << lg_delta; + size_t lg_delta = shift + (LG_PAGE - 1); + size_t mod_size = (mod + 1) << lg_delta; size_t sz = grp_size + mod_size; return sz; @@ -142,17 +150,18 @@ sz_psz2u(size_t psz) { if (unlikely(psz > SC_LARGE_MAXCLASS)) { return SC_LARGE_MAXCLASS + PAGE; } - size_t x = lg_floor((psz<<1)-1); - size_t lg_delta = (x < SC_LG_NGROUP + LG_PAGE + 1) ? - LG_PAGE : x - SC_LG_NGROUP - 1; + size_t x = lg_floor((psz << 1) - 1); + size_t lg_delta = (x < SC_LG_NGROUP + LG_PAGE + 1) + ? LG_PAGE + : x - SC_LG_NGROUP - 1; size_t delta = ZU(1) << lg_delta; size_t delta_mask = delta - 1; size_t usize = (psz + delta_mask) & ~delta_mask; return usize; } -static inline szind_t -sz_size2index_compute(size_t size) { +JEMALLOC_ALWAYS_INLINE szind_t +sz_size2index_compute_inline(size_t size) { if (unlikely(size > SC_LARGE_MAXCLASS)) { return SC_NSIZES; } @@ -168,23 +177,30 @@ sz_size2index_compute(size_t size) { } #endif { - szind_t x = lg_floor((size<<1)-1); - szind_t shift = (x < SC_LG_NGROUP + LG_QUANTUM) ? 0 : - x - (SC_LG_NGROUP + LG_QUANTUM); + szind_t x = lg_floor((size << 1) - 1); + szind_t shift = (x < SC_LG_NGROUP + LG_QUANTUM) + ? 0 + : x - (SC_LG_NGROUP + LG_QUANTUM); szind_t grp = shift << SC_LG_NGROUP; szind_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1) - ? LG_QUANTUM : x - SC_LG_NGROUP - 1; + ? LG_QUANTUM + : x - SC_LG_NGROUP - 1; - size_t delta_inverse_mask = ZU(-1) << lg_delta; - szind_t mod = ((((size-1) & delta_inverse_mask) >> lg_delta)) & - ((ZU(1) << SC_LG_NGROUP) - 1); + size_t delta_inverse_mask = ZU(-1) << lg_delta; + szind_t mod = ((((size - 1) & delta_inverse_mask) >> lg_delta)) + & ((ZU(1) << SC_LG_NGROUP) - 1); szind_t index = SC_NTINY + grp + mod; return index; } } +static inline szind_t +sz_size2index_compute(size_t size) { + return sz_size2index_compute_inline(size); +} + JEMALLOC_ALWAYS_INLINE szind_t sz_size2index_lookup_impl(size_t size) { assert(size <= SC_LOOKUP_MAXCLASS); @@ -207,8 +223,8 @@ sz_size2index(size_t size) { return sz_size2index_compute(size); } -static inline size_t -sz_index2size_compute(szind_t index) { +JEMALLOC_ALWAYS_INLINE size_t +sz_index2size_compute_inline(szind_t index) { #if (SC_NTINY > 0) if (index < SC_NTINY) { return (ZU(1) << (SC_LG_TINY_MAXCLASS - SC_NTINY + 1 + index)); @@ -217,22 +233,27 @@ sz_index2size_compute(szind_t index) { { size_t reduced_index = index - SC_NTINY; size_t grp = reduced_index >> SC_LG_NGROUP; - size_t mod = reduced_index & ((ZU(1) << SC_LG_NGROUP) - - 1); + size_t mod = reduced_index & ((ZU(1) << SC_LG_NGROUP) - 1); - size_t grp_size_mask = ~((!!grp)-1); - size_t grp_size = ((ZU(1) << (LG_QUANTUM + - (SC_LG_NGROUP-1))) << grp) & grp_size_mask; + size_t grp_size_mask = ~((!!grp) - 1); + size_t grp_size = ((ZU(1) << (LG_QUANTUM + (SC_LG_NGROUP - 1))) + << grp) + & grp_size_mask; size_t shift = (grp == 0) ? 1 : grp; - size_t lg_delta = shift + (LG_QUANTUM-1); - size_t mod_size = (mod+1) << lg_delta; + size_t lg_delta = shift + (LG_QUANTUM - 1); + size_t mod_size = (mod + 1) << lg_delta; size_t usize = grp_size + mod_size; return usize; } } +static inline size_t +sz_index2size_compute(szind_t index) { + return sz_index2size_compute_inline(index); +} + JEMALLOC_ALWAYS_INLINE size_t sz_index2size_lookup_impl(szind_t index) { return sz_index2size_tab[index]; @@ -246,15 +267,61 @@ sz_index2size_lookup(szind_t index) { } JEMALLOC_ALWAYS_INLINE size_t -sz_index2size(szind_t index) { +sz_index2size_unsafe(szind_t index) { assert(index < SC_NSIZES); return sz_index2size_lookup(index); } +JEMALLOC_ALWAYS_INLINE size_t +sz_index2size(szind_t index) { + assert(!sz_large_size_classes_disabled() + || index <= sz_size2index(USIZE_GROW_SLOW_THRESHOLD)); + size_t size = sz_index2size_unsafe(index); + /* + * With large size classes disabled, the usize above + * SC_LARGE_MINCLASS should grow by PAGE. However, for sizes + * in [SC_LARGE_MINCLASS, USIZE_GROW_SLOW_THRESHOLD], the + * usize would not change because the size class gap in this + * range is just the same as PAGE. Although we use + * SC_LARGE_MINCLASS as the threshold in most places, we + * allow tcache and sec to cache up to + * USIZE_GROW_SLOW_THRESHOLD to minimize the side effect of + * not having size classes for larger sizes. Thus, we assert + * the size is no larger than USIZE_GROW_SLOW_THRESHOLD here + * instead of SC_LARGE_MINCLASS. + */ + assert(!sz_large_size_classes_disabled() + || size <= USIZE_GROW_SLOW_THRESHOLD); + return size; +} + JEMALLOC_ALWAYS_INLINE void sz_size2index_usize_fastpath(size_t size, szind_t *ind, size_t *usize) { - *ind = sz_size2index_lookup_impl(size); - *usize = sz_index2size_lookup_impl(*ind); + if (util_compile_time_const(size)) { + /* + * When inlined, the size may become known at compile + * time, which allows static computation through LTO. + */ + *ind = sz_size2index_compute_inline(size); + assert(*ind == sz_size2index_lookup_impl(size)); + *usize = sz_index2size_compute_inline(*ind); + assert(*usize == sz_index2size_lookup_impl(*ind)); + } else { + *ind = sz_size2index_lookup_impl(size); + *usize = sz_index2size_lookup_impl(*ind); + } +} + +JEMALLOC_ALWAYS_INLINE size_t +sz_s2u_compute_using_delta(size_t size) { + size_t x = lg_floor((size << 1) - 1); + size_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1) + ? LG_QUANTUM + : x - SC_LG_NGROUP - 1; + size_t delta = ZU(1) << lg_delta; + size_t delta_mask = delta - 1; + size_t usize = (size + delta_mask) & ~delta_mask; + return usize; } JEMALLOC_ALWAYS_INLINE size_t @@ -270,23 +337,28 @@ sz_s2u_compute(size_t size) { if (size <= (ZU(1) << SC_LG_TINY_MAXCLASS)) { size_t lg_tmin = SC_LG_TINY_MAXCLASS - SC_NTINY + 1; size_t lg_ceil = lg_floor(pow2_ceil_zu(size)); - return (lg_ceil < lg_tmin ? (ZU(1) << lg_tmin) : - (ZU(1) << lg_ceil)); + return (lg_ceil < lg_tmin ? (ZU(1) << lg_tmin) + : (ZU(1) << lg_ceil)); } #endif - { - size_t x = lg_floor((size<<1)-1); - size_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1) - ? LG_QUANTUM : x - SC_LG_NGROUP - 1; - size_t delta = ZU(1) << lg_delta; - size_t delta_mask = delta - 1; - size_t usize = (size + delta_mask) & ~delta_mask; + if (size <= SC_SMALL_MAXCLASS || !sz_large_size_classes_disabled()) { + return sz_s2u_compute_using_delta(size); + } else { + /* + * With sz_large_size_classes_disabled() == true, usize of a large + * allocation is calculated by ceiling size to the smallest + * multiple of PAGE to minimize the memory overhead, especially + * when using hugepages. + */ + size_t usize = PAGE_CEILING(size); + assert(usize - size < PAGE); return usize; } } JEMALLOC_ALWAYS_INLINE size_t sz_s2u_lookup(size_t size) { + assert(size < SC_LARGE_MINCLASS); size_t ret = sz_index2size_lookup(sz_size2index_lookup(size)); assert(ret == sz_s2u_compute(size)); @@ -365,6 +437,21 @@ sz_sa2u(size_t size, size_t alignment) { return usize; } +/* + * Under normal circumstances, whether or not to use a slab + * to satisfy an allocation depends solely on the allocation's + * effective size. However, this is *not* the case when an allocation + * is sampled for profiling, in which case you *must not* use a slab + * regardless of the effective size. Thus `sz_can_use_slab` is called + * on the common path, but there exist `*_explicit_slab` variants of + * several functions for handling the aforementioned case of + * sampled allocations. + */ +JEMALLOC_ALWAYS_INLINE bool +sz_can_use_slab(size_t size) { + return size <= SC_SMALL_MAXCLASS; +} + size_t sz_psz_quantize_floor(size_t size); size_t sz_psz_quantize_ceil(size_t size); diff --git a/dep/jemalloc/include/jemalloc/internal/tcache_externs.h b/dep/jemalloc/include/jemalloc/internal/tcache_externs.h index a2ab7101b065e..b7fdb5a467b88 100644 --- a/dep/jemalloc/include/jemalloc/internal/tcache_externs.h +++ b/dep/jemalloc/include/jemalloc/internal/tcache_externs.h @@ -1,28 +1,40 @@ #ifndef JEMALLOC_INTERNAL_TCACHE_EXTERNS_H #define JEMALLOC_INTERNAL_TCACHE_EXTERNS_H -extern bool opt_tcache; -extern size_t opt_tcache_max; -extern ssize_t opt_lg_tcache_nslots_mul; +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/base.h" +#include "jemalloc/internal/cache_bin.h" +#include "jemalloc/internal/sz.h" +#include "jemalloc/internal/tcache_types.h" +#include "jemalloc/internal/thread_event_registry.h" + +extern bool opt_tcache; +extern size_t opt_tcache_max; +extern ssize_t opt_lg_tcache_nslots_mul; extern unsigned opt_tcache_nslots_small_min; extern unsigned opt_tcache_nslots_small_max; extern unsigned opt_tcache_nslots_large; -extern ssize_t opt_lg_tcache_shift; -extern size_t opt_tcache_gc_incr_bytes; -extern size_t opt_tcache_gc_delay_bytes; +extern ssize_t opt_lg_tcache_shift; +extern size_t opt_tcache_gc_incr_bytes; +extern size_t opt_tcache_gc_delay_bytes; extern unsigned opt_lg_tcache_flush_small_div; extern unsigned opt_lg_tcache_flush_large_div; /* * Number of tcache bins. There are SC_NBINS small-object bins, plus 0 or more - * large-object bins. + * large-object bins. This is only used during threads initialization and + * changing it will not reflect on initialized threads as expected. Thus, + * it should not be changed on the fly. To change the number of tcache bins + * in use, refer to tcache_nbins of each tcache. */ -extern unsigned nhbins; - -/* Maximum cached size class. */ -extern size_t tcache_maxclass; +extern unsigned global_do_not_change_tcache_nbins; -extern cache_bin_info_t *tcache_bin_info; +/* + * Maximum cached size class. Same as above, this is only used during threads + * initialization and should not be changed. To change the maximum cached size + * class, refer to tcache_max of each tcache. + */ +extern size_t global_do_not_change_tcache_maxclass; /* * Explicit tcaches, managed via the tcache.{create,flush,destroy} mallctls and @@ -32,44 +44,47 @@ extern cache_bin_info_t *tcache_bin_info; * touched. This allows the entire array to be allocated the first time an * explicit tcache is created without a disproportionate impact on memory usage. */ -extern tcaches_t *tcaches; +extern tcaches_t *tcaches; size_t tcache_salloc(tsdn_t *tsdn, const void *ptr); -void *tcache_alloc_small_hard(tsdn_t *tsdn, arena_t *arena, tcache_t *tcache, - cache_bin_t *tbin, szind_t binind, bool *tcache_success); +void *tcache_alloc_small_hard(tsdn_t *tsdn, arena_t *arena, tcache_t *tcache, + cache_bin_t *cache_bin, szind_t binind, bool *tcache_success); -void tcache_bin_flush_small(tsd_t *tsd, tcache_t *tcache, cache_bin_t *tbin, - szind_t binind, unsigned rem); -void tcache_bin_flush_large(tsd_t *tsd, tcache_t *tcache, cache_bin_t *tbin, - szind_t binind, unsigned rem); -void tcache_bin_flush_stashed(tsd_t *tsd, tcache_t *tcache, cache_bin_t *bin, - szind_t binind, bool is_small); -void tcache_arena_reassociate(tsdn_t *tsdn, tcache_slow_t *tcache_slow, - tcache_t *tcache, arena_t *arena); +void tcache_bin_flush_small(tsd_t *tsd, tcache_t *tcache, + cache_bin_t *cache_bin, szind_t binind, unsigned rem); +void tcache_bin_flush_large(tsd_t *tsd, tcache_t *tcache, + cache_bin_t *cache_bin, szind_t binind, unsigned rem); +void tcache_bin_flush_stashed(tsd_t *tsd, tcache_t *tcache, + cache_bin_t *cache_bin, szind_t binind, bool is_small); +bool tcache_bin_info_default_init( + const char *bin_settings_segment_cur, size_t len_left); +bool tcache_bins_ncached_max_write(tsd_t *tsd, char *settings, size_t len); +bool tcache_bin_ncached_max_read( + tsd_t *tsd, size_t bin_size, cache_bin_sz_t *ncached_max); +void tcache_arena_reassociate( + tsdn_t *tsdn, tcache_slow_t *tcache_slow, tcache_t *tcache, arena_t *arena); tcache_t *tcache_create_explicit(tsd_t *tsd); -void tcache_cleanup(tsd_t *tsd); -void tcache_stats_merge(tsdn_t *tsdn, tcache_t *tcache, arena_t *arena); -bool tcaches_create(tsd_t *tsd, base_t *base, unsigned *r_ind); -void tcaches_flush(tsd_t *tsd, unsigned ind); -void tcaches_destroy(tsd_t *tsd, unsigned ind); -bool tcache_boot(tsdn_t *tsdn, base_t *base); -void tcache_arena_associate(tsdn_t *tsdn, tcache_slow_t *tcache_slow, - tcache_t *tcache, arena_t *arena); +bool thread_tcache_max_set(tsd_t *tsd, size_t tcache_max); +void tcache_cleanup(tsd_t *tsd); +void tcache_stats_merge(tsdn_t *tsdn, tcache_t *tcache, arena_t *arena); +bool tcaches_create(tsd_t *tsd, base_t *base, unsigned *r_ind); +void tcaches_flush(tsd_t *tsd, unsigned ind); +void tcaches_destroy(tsd_t *tsd, unsigned ind); +bool tcache_boot(tsdn_t *tsdn, base_t *base); +void tcache_arena_associate( + tsdn_t *tsdn, tcache_slow_t *tcache_slow, tcache_t *tcache, arena_t *arena); void tcache_prefork(tsdn_t *tsdn); void tcache_postfork_parent(tsdn_t *tsdn); void tcache_postfork_child(tsdn_t *tsdn); void tcache_flush(tsd_t *tsd); -bool tsd_tcache_data_init(tsd_t *tsd); bool tsd_tcache_enabled_data_init(tsd_t *tsd); +void tcache_enabled_set(tsd_t *tsd, bool enabled); + +extern void *(*JET_MUTABLE tcache_stack_alloc)(tsdn_t *tsdn, size_t size, + size_t alignment); void tcache_assert_initialized(tcache_t *tcache); -/* Only accessed by thread event. */ -uint64_t tcache_gc_new_event_wait(tsd_t *tsd); -uint64_t tcache_gc_postponed_event_wait(tsd_t *tsd); -void tcache_gc_event_handler(tsd_t *tsd, uint64_t elapsed); -uint64_t tcache_gc_dalloc_new_event_wait(tsd_t *tsd); -uint64_t tcache_gc_dalloc_postponed_event_wait(tsd_t *tsd); -void tcache_gc_dalloc_event_handler(tsd_t *tsd, uint64_t elapsed); +extern te_base_cb_t tcache_gc_te_handler; #endif /* JEMALLOC_INTERNAL_TCACHE_EXTERNS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/tcache_inlines.h b/dep/jemalloc/include/jemalloc/internal/tcache_inlines.h index 2634f145dc393..5f8ed317fa43a 100644 --- a/dep/jemalloc/include/jemalloc/internal/tcache_inlines.h +++ b/dep/jemalloc/include/jemalloc/internal/tcache_inlines.h @@ -1,11 +1,16 @@ #ifndef JEMALLOC_INTERNAL_TCACHE_INLINES_H #define JEMALLOC_INTERNAL_TCACHE_INLINES_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_externs.h" #include "jemalloc/internal/bin.h" +#include "jemalloc/internal/jemalloc_internal_inlines_b.h" #include "jemalloc/internal/jemalloc_internal_types.h" +#include "jemalloc/internal/large_externs.h" #include "jemalloc/internal/san.h" #include "jemalloc/internal/sc.h" #include "jemalloc/internal/sz.h" +#include "jemalloc/internal/tcache_externs.h" #include "jemalloc/internal/util.h" static inline bool @@ -13,39 +18,79 @@ tcache_enabled_get(tsd_t *tsd) { return tsd_tcache_enabled_get(tsd); } +static inline unsigned +tcache_nbins_get(tcache_slow_t *tcache_slow) { + assert(tcache_slow != NULL); + unsigned nbins = tcache_slow->tcache_nbins; + assert(nbins <= TCACHE_NBINS_MAX); + return nbins; +} + +static inline size_t +tcache_max_get(tcache_slow_t *tcache_slow) { + assert(tcache_slow != NULL); + size_t tcache_max = sz_index2size(tcache_nbins_get(tcache_slow) - 1); + assert(tcache_max <= TCACHE_MAXCLASS_LIMIT); + return tcache_max; +} + static inline void -tcache_enabled_set(tsd_t *tsd, bool enabled) { - bool was_enabled = tsd_tcache_enabled_get(tsd); +tcache_max_set(tcache_slow_t *tcache_slow, size_t tcache_max) { + assert(tcache_slow != NULL); + assert(tcache_max <= TCACHE_MAXCLASS_LIMIT); + tcache_slow->tcache_nbins = sz_size2index(tcache_max) + 1; +} - if (!was_enabled && enabled) { - tsd_tcache_data_init(tsd); - } else if (was_enabled && !enabled) { - tcache_cleanup(tsd); +static inline void +tcache_bin_settings_backup( + tcache_t *tcache, cache_bin_info_t tcache_bin_info[TCACHE_NBINS_MAX]) { + for (unsigned i = 0; i < TCACHE_NBINS_MAX; i++) { + cache_bin_info_init(&tcache_bin_info[i], + cache_bin_ncached_max_get_unsafe(&tcache->bins[i])); } - /* Commit the state last. Above calls check current state. */ - tsd_tcache_enabled_set(tsd, enabled); - tsd_slow_update(tsd); } JEMALLOC_ALWAYS_INLINE bool -tcache_small_bin_disabled(szind_t ind, cache_bin_t *bin) { - assert(ind < SC_NBINS); - bool ret = (cache_bin_info_ncached_max(&tcache_bin_info[ind]) == 0); - if (ret && bin != NULL) { - /* small size class but cache bin disabled. */ - assert(ind >= nhbins); - assert((uintptr_t)(*bin->stack_head) == - cache_bin_preceding_junk); +tcache_bin_disabled(szind_t ind, cache_bin_t *bin, tcache_slow_t *tcache_slow) { + assert(bin != NULL); + assert(ind < TCACHE_NBINS_MAX); + bool disabled = cache_bin_disabled(bin); + + /* + * If a bin's ind >= nbins or ncached_max == 0, it must be disabled. + * However, when ind < nbins, it could be either enabled + * (ncached_max > 0) or disabled (ncached_max == 0). Similarly, when + * ncached_max > 0, it could be either enabled (ind < nbins) or + * disabled (ind >= nbins). Thus, if a bin is disabled, it has either + * ind >= nbins or ncached_max == 0. If a bin is enabled, it has + * ind < nbins and ncached_max > 0. + */ + unsigned nbins = tcache_nbins_get(tcache_slow); + cache_bin_sz_t ncached_max = cache_bin_ncached_max_get_unsafe(bin); + if (ind >= nbins) { + assert(disabled); + } else { + assert(!disabled || ncached_max == 0); + } + if (ncached_max == 0) { + assert(disabled); + } else { + assert(!disabled || ind >= nbins); + } + if (disabled) { + assert(ind >= nbins || ncached_max == 0); + } else { + assert(ind < nbins && ncached_max > 0); } - return ret; + return disabled; } JEMALLOC_ALWAYS_INLINE void * -tcache_alloc_small(tsd_t *tsd, arena_t *arena, tcache_t *tcache, - size_t size, szind_t binind, bool zero, bool slow_path) { +tcache_alloc_small(tsd_t *tsd, arena_t *arena, tcache_t *tcache, size_t size, + szind_t binind, bool zero, bool slow_path) { void *ret; - bool tcache_success; + bool tcache_success; assert(binind < SC_NBINS); cache_bin_t *bin = &tcache->bins[binind]; @@ -57,16 +102,17 @@ tcache_alloc_small(tsd_t *tsd, arena_t *arena, tcache_t *tcache, if (unlikely(arena == NULL)) { return NULL; } - if (unlikely(tcache_small_bin_disabled(binind, bin))) { + if (unlikely(tcache_bin_disabled( + binind, bin, tcache->tcache_slow))) { /* stats and zero are handled directly by the arena. */ return arena_malloc_hard(tsd_tsdn(tsd), arena, size, - binind, zero); + binind, zero, /* slab */ true); } tcache_bin_flush_stashed(tsd, tcache, bin, binind, /* is_small */ true); - ret = tcache_alloc_small_hard(tsd_tsdn(tsd), arena, tcache, - bin, binind, &tcache_hard_success); + ret = tcache_alloc_small_hard(tsd_tsdn(tsd), arena, tcache, bin, + binind, &tcache_hard_success); if (tcache_hard_success == false) { return NULL; } @@ -88,10 +134,11 @@ JEMALLOC_ALWAYS_INLINE void * tcache_alloc_large(tsd_t *tsd, arena_t *arena, tcache_t *tcache, size_t size, szind_t binind, bool zero, bool slow_path) { void *ret; - bool tcache_success; + bool tcache_success; - assert(binind >= SC_NBINS && binind < nhbins); cache_bin_t *bin = &tcache->bins[binind]; + assert(binind >= SC_NBINS + && !tcache_bin_disabled(binind, bin, tcache->tcache_slow)); ret = cache_bin_alloc(bin, &tcache_success); assert(tcache_success == (ret != NULL)); if (unlikely(!tcache_success)) { @@ -113,21 +160,21 @@ tcache_alloc_large(tsd_t *tsd, arena_t *arena, tcache_t *tcache, size_t size, } else { if (unlikely(zero)) { size_t usize = sz_index2size(binind); - assert(usize <= tcache_maxclass); + assert(usize <= tcache_max_get(tcache->tcache_slow)); memset(ret, 0, usize); } + } - if (config_stats) { - bin->tstats.nrequests++; - } + if (config_stats) { + bin->tstats.nrequests++; } return ret; } JEMALLOC_ALWAYS_INLINE void -tcache_dalloc_small(tsd_t *tsd, tcache_t *tcache, void *ptr, szind_t binind, - bool slow_path) { +tcache_dalloc_small( + tsd_t *tsd, tcache_t *tcache, void *ptr, szind_t binind, bool slow_path) { assert(tcache_salloc(tsd_tsdn(tsd), ptr) <= SC_SMALL_MAXCLASS); cache_bin_t *bin = &tcache->bins[binind]; @@ -147,13 +194,13 @@ tcache_dalloc_small(tsd_t *tsd, tcache_t *tcache, void *ptr, szind_t binind, } if (unlikely(!cache_bin_dalloc_easy(bin, ptr))) { - if (unlikely(tcache_small_bin_disabled(binind, bin))) { + if (unlikely(tcache_bin_disabled( + binind, bin, tcache->tcache_slow))) { arena_dalloc_small(tsd_tsdn(tsd), ptr); return; } - cache_bin_sz_t max = cache_bin_info_ncached_max( - &tcache_bin_info[binind]); - unsigned remain = max >> opt_lg_tcache_flush_small_div; + cache_bin_sz_t max = cache_bin_ncached_max_get(bin); + unsigned remain = max >> opt_lg_tcache_flush_small_div; tcache_bin_flush_small(tsd, tcache, bin, binind, remain); bool ret = cache_bin_dalloc_easy(bin, ptr); assert(ret); @@ -161,17 +208,18 @@ tcache_dalloc_small(tsd_t *tsd, tcache_t *tcache, void *ptr, szind_t binind, } JEMALLOC_ALWAYS_INLINE void -tcache_dalloc_large(tsd_t *tsd, tcache_t *tcache, void *ptr, szind_t binind, - bool slow_path) { - +tcache_dalloc_large( + tsd_t *tsd, tcache_t *tcache, void *ptr, szind_t binind, bool slow_path) { + assert(tcache_salloc(tsd_tsdn(tsd), ptr) > SC_SMALL_MAXCLASS); assert(tcache_salloc(tsd_tsdn(tsd), ptr) - > SC_SMALL_MAXCLASS); - assert(tcache_salloc(tsd_tsdn(tsd), ptr) <= tcache_maxclass); + <= tcache_max_get(tcache->tcache_slow)); + assert(!tcache_bin_disabled( + binind, &tcache->bins[binind], tcache->tcache_slow)); cache_bin_t *bin = &tcache->bins[binind]; if (unlikely(!cache_bin_dalloc_easy(bin, ptr))) { - unsigned remain = cache_bin_info_ncached_max( - &tcache_bin_info[binind]) >> opt_lg_tcache_flush_large_div; + unsigned remain = cache_bin_ncached_max_get(bin) + >> opt_lg_tcache_flush_large_div; tcache_bin_flush_large(tsd, tcache, bin, binind, remain); bool ret = cache_bin_dalloc_easy(bin, ptr); assert(ret); diff --git a/dep/jemalloc/include/jemalloc/internal/tcache_structs.h b/dep/jemalloc/include/jemalloc/internal/tcache_structs.h index 176d73de95b7c..2c000de31daea 100644 --- a/dep/jemalloc/include/jemalloc/internal/tcache_structs.h +++ b/dep/jemalloc/include/jemalloc/internal/tcache_structs.h @@ -1,11 +1,12 @@ #ifndef JEMALLOC_INTERNAL_TCACHE_STRUCTS_H #define JEMALLOC_INTERNAL_TCACHE_STRUCTS_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/cache_bin.h" #include "jemalloc/internal/ql.h" #include "jemalloc/internal/sc.h" +#include "jemalloc/internal/tcache_types.h" #include "jemalloc/internal/ticker.h" -#include "jemalloc/internal/tsd_types.h" /* * The tcache state is split into the slow and hot path data. Each has a @@ -29,39 +30,45 @@ struct tcache_slow_s { cache_bin_array_descriptor_t cache_bin_array_descriptor; /* The arena this tcache is associated with. */ - arena_t *arena; + arena_t *arena; + /* The number of bins activated in the tcache. */ + unsigned tcache_nbins; + /* Last time GC has been performed. */ + nstime_t last_gc_time; /* Next bin to GC. */ - szind_t next_gc_bin; - /* For small bins, fill (ncached_max >> lg_fill_div). */ - uint8_t lg_fill_div[SC_NBINS]; + szind_t next_gc_bin; + szind_t next_gc_bin_small; + szind_t next_gc_bin_large; + /* For small bins, help determine how many items to fill at a time. */ + cache_bin_fill_ctl_t bin_fill_ctl_do_not_access_directly[SC_NBINS]; /* For small bins, whether has been refilled since last GC. */ - bool bin_refilled[SC_NBINS]; + bool bin_refilled[SC_NBINS]; /* * For small bins, the number of items we can pretend to flush before * actually flushing. */ - uint8_t bin_flush_delay_items[SC_NBINS]; + uint8_t bin_flush_delay_items[SC_NBINS]; /* * The start of the allocation containing the dynamic allocation for * either the cache bins alone, or the cache bin memory as well as this * tcache_slow_t and its associated tcache_t. */ - void *dyn_alloc; + void *dyn_alloc; /* The associated bins. */ - tcache_t *tcache; + tcache_t *tcache; }; struct tcache_s { - tcache_slow_t *tcache_slow; - cache_bin_t bins[TCACHE_NBINS_MAX]; + tcache_slow_t *tcache_slow; + cache_bin_t bins[TCACHE_NBINS_MAX]; }; /* Linkage for list of available (previously used) explicit tcache IDs. */ struct tcaches_s { union { - tcache_t *tcache; - tcaches_t *next; + tcache_t *tcache; + tcaches_t *next; }; }; diff --git a/dep/jemalloc/include/jemalloc/internal/tcache_types.h b/dep/jemalloc/include/jemalloc/internal/tcache_types.h index 583677ea2d35c..27d80d3cdd30f 100644 --- a/dep/jemalloc/include/jemalloc/internal/tcache_types.h +++ b/dep/jemalloc/include/jemalloc/internal/tcache_types.h @@ -1,35 +1,37 @@ #ifndef JEMALLOC_INTERNAL_TCACHE_TYPES_H #define JEMALLOC_INTERNAL_TCACHE_TYPES_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/sc.h" typedef struct tcache_slow_s tcache_slow_t; -typedef struct tcache_s tcache_t; -typedef struct tcaches_s tcaches_t; - -/* - * tcache pointers close to NULL are used to encode state information that is - * used for two purposes: preventing thread caching on a per thread basis and - * cleaning up during thread shutdown. - */ -#define TCACHE_STATE_DISABLED ((tcache_t *)(uintptr_t)1) -#define TCACHE_STATE_REINCARNATED ((tcache_t *)(uintptr_t)2) -#define TCACHE_STATE_PURGATORY ((tcache_t *)(uintptr_t)3) -#define TCACHE_STATE_MAX TCACHE_STATE_PURGATORY +typedef struct tcache_s tcache_t; +typedef struct tcaches_s tcaches_t; /* Used in TSD static initializer only. Real init in tsd_tcache_data_init(). */ -#define TCACHE_ZERO_INITIALIZER {0} -#define TCACHE_SLOW_ZERO_INITIALIZER {0} +#define TCACHE_ZERO_INITIALIZER \ + { 0 } +#define TCACHE_SLOW_ZERO_INITIALIZER \ + { \ + { 0 } \ + } /* Used in TSD static initializer only. Will be initialized to opt_tcache. */ #define TCACHE_ENABLED_ZERO_INITIALIZER false /* Used for explicit tcache only. Means flushed but not destroyed. */ +/* NOLINTNEXTLINE(performance-no-int-to-ptr) */ #define TCACHES_ELM_NEED_REINIT ((tcache_t *)(uintptr_t)1) -#define TCACHE_LG_MAXCLASS_LIMIT 23 /* tcache_maxclass = 8M */ +#define TCACHE_LG_MAXCLASS_LIMIT LG_USIZE_GROW_SLOW_THRESHOLD #define TCACHE_MAXCLASS_LIMIT ((size_t)1 << TCACHE_LG_MAXCLASS_LIMIT) -#define TCACHE_NBINS_MAX (SC_NBINS + SC_NGROUP * \ - (TCACHE_LG_MAXCLASS_LIMIT - SC_LG_LARGE_MINCLASS) + 1) +#define TCACHE_NBINS_MAX \ + (SC_NBINS \ + + SC_NGROUP * (TCACHE_LG_MAXCLASS_LIMIT - SC_LG_LARGE_MINCLASS) \ + + 1) +#define TCACHE_GC_NEIGHBOR_LIMIT ((uintptr_t)1 << 21) /* 2M */ +#define TCACHE_GC_INTERVAL_NS ((uint64_t)10 * KQU(1000000)) /* 10ms */ +#define TCACHE_GC_SMALL_NBINS_MAX ((SC_NBINS > 8) ? (SC_NBINS >> 3) : 1) +#define TCACHE_GC_LARGE_NBINS_MAX 1 #endif /* JEMALLOC_INTERNAL_TCACHE_TYPES_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/test_hooks.h b/dep/jemalloc/include/jemalloc/internal/test_hooks.h index 3d530b5c57561..35f3a2114e027 100644 --- a/dep/jemalloc/include/jemalloc/internal/test_hooks.h +++ b/dep/jemalloc/include/jemalloc/internal/test_hooks.h @@ -1,24 +1,28 @@ #ifndef JEMALLOC_INTERNAL_TEST_HOOKS_H #define JEMALLOC_INTERNAL_TEST_HOOKS_H -extern JEMALLOC_EXPORT void (*test_hooks_arena_new_hook)(); -extern JEMALLOC_EXPORT void (*test_hooks_libc_hook)(); +#include "jemalloc/internal/jemalloc_preamble.h" + +extern JEMALLOC_EXPORT void (*test_hooks_arena_new_hook)(void); +extern JEMALLOC_EXPORT void (*test_hooks_libc_hook)(void); #if defined(JEMALLOC_JET) || defined(JEMALLOC_UNIT_TEST) -# define JEMALLOC_TEST_HOOK(fn, hook) ((void)(hook != NULL && (hook(), 0)), fn) +# define JEMALLOC_TEST_HOOK(fn, hook) \ + ((void)(hook != NULL && (hook(), 0)), fn) -# define open JEMALLOC_TEST_HOOK(open, test_hooks_libc_hook) -# define read JEMALLOC_TEST_HOOK(read, test_hooks_libc_hook) -# define write JEMALLOC_TEST_HOOK(write, test_hooks_libc_hook) -# define readlink JEMALLOC_TEST_HOOK(readlink, test_hooks_libc_hook) -# define close JEMALLOC_TEST_HOOK(close, test_hooks_libc_hook) -# define creat JEMALLOC_TEST_HOOK(creat, test_hooks_libc_hook) -# define secure_getenv JEMALLOC_TEST_HOOK(secure_getenv, test_hooks_libc_hook) +# define open JEMALLOC_TEST_HOOK(open, test_hooks_libc_hook) +# define read JEMALLOC_TEST_HOOK(read, test_hooks_libc_hook) +# define write JEMALLOC_TEST_HOOK(write, test_hooks_libc_hook) +# define readlink JEMALLOC_TEST_HOOK(readlink, test_hooks_libc_hook) +# define close JEMALLOC_TEST_HOOK(close, test_hooks_libc_hook) +# define creat JEMALLOC_TEST_HOOK(creat, test_hooks_libc_hook) +# define secure_getenv \ + JEMALLOC_TEST_HOOK(secure_getenv, test_hooks_libc_hook) /* Note that this is undef'd and re-define'd in src/prof.c. */ -# define _Unwind_Backtrace JEMALLOC_TEST_HOOK(_Unwind_Backtrace, test_hooks_libc_hook) +# define _Unwind_Backtrace \ + JEMALLOC_TEST_HOOK(_Unwind_Backtrace, test_hooks_libc_hook) #else -# define JEMALLOC_TEST_HOOK(fn, hook) fn +# define JEMALLOC_TEST_HOOK(fn, hook) fn #endif - #endif /* JEMALLOC_INTERNAL_TEST_HOOKS_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/thread_event.h b/dep/jemalloc/include/jemalloc/internal/thread_event.h index 2f4e1b39c7bcb..e9e2b6cd8cabb 100644 --- a/dep/jemalloc/include/jemalloc/internal/thread_event.h +++ b/dep/jemalloc/include/jemalloc/internal/thread_event.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_THREAD_EVENT_H #define JEMALLOC_INTERNAL_THREAD_EVENT_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/tsd.h" /* "te" is short for "thread_event" */ @@ -36,7 +37,7 @@ #define TE_INVALID_ELAPSED UINT64_MAX typedef struct te_ctx_s { - bool is_alloc; + bool is_alloc; uint64_t *current; uint64_t *last_event; uint64_t *next_event; @@ -47,36 +48,20 @@ void te_assert_invariants_debug(tsd_t *tsd); void te_event_trigger(tsd_t *tsd, te_ctx_t *ctx); void te_recompute_fast_threshold(tsd_t *tsd); void tsd_te_init(tsd_t *tsd); - -/* - * List of all events, in the following format: - * E(event, (condition), is_alloc_event) - */ -#define ITERATE_OVER_ALL_EVENTS \ - E(tcache_gc, (opt_tcache_gc_incr_bytes > 0), true) \ - E(prof_sample, (config_prof && opt_prof), true) \ - E(stats_interval, (opt_stats_interval >= 0), true) \ - E(tcache_gc_dalloc, (opt_tcache_gc_incr_bytes > 0), false) \ - E(peak_alloc, config_stats, true) \ - E(peak_dalloc, config_stats, false) - -#define E(event, condition_unused, is_alloc_event_unused) \ - C(event##_event_wait) +void te_adjust_thresholds_helper(tsd_t *tsd, te_ctx_t *ctx, uint64_t wait); /* List of all thread event counters. */ -#define ITERATE_OVER_ALL_COUNTERS \ - C(thread_allocated) \ - C(thread_allocated_last_event) \ - ITERATE_OVER_ALL_EVENTS \ - C(prof_sample_last_event) \ - C(stats_interval_last_event) +#define ITERATE_OVER_ALL_COUNTERS \ + C(thread_allocated) \ + C(thread_allocated_last_event) \ + C(prof_sample_last_event) \ + C(stats_interval_last_event) /* Getters directly wrap TSD getters. */ -#define C(counter) \ -JEMALLOC_ALWAYS_INLINE uint64_t \ -counter##_get(tsd_t *tsd) { \ - return tsd_##counter##_get(tsd); \ -} +#define C(counter) \ + JEMALLOC_ALWAYS_INLINE uint64_t counter##_get(tsd_t *tsd) { \ + return tsd_##counter##_get(tsd); \ + } ITERATE_OVER_ALL_COUNTERS #undef C @@ -88,21 +73,14 @@ ITERATE_OVER_ALL_COUNTERS * temporarily delay the event and let it be immediately triggered at the next * allocation call. */ -#define C(counter) \ -JEMALLOC_ALWAYS_INLINE void \ -counter##_set(tsd_t *tsd, uint64_t v) { \ - *tsd_##counter##p_get(tsd) = v; \ -} +#define C(counter) \ + JEMALLOC_ALWAYS_INLINE void counter##_set(tsd_t *tsd, uint64_t v) { \ + *tsd_##counter##p_get(tsd) = v; \ + } ITERATE_OVER_ALL_COUNTERS #undef C -/* - * For generating _event_wait getter / setter functions for each individual - * event. - */ -#undef E - /* * The malloc and free fastpath getters -- use the unsafe getters since tsd may * be non-nominal, in which case the fast_threshold will be set to 0. This @@ -219,57 +197,6 @@ te_ctx_get(tsd_t *tsd, te_ctx_t *ctx, bool is_alloc) { } } -/* - * The lookahead functionality facilitates events to be able to lookahead, i.e. - * without touching the event counters, to determine whether an event would be - * triggered. The event counters are not advanced until the end of the - * allocation / deallocation calls, so the lookahead can be useful if some - * preparation work for some event must be done early in the allocation / - * deallocation calls. - * - * Currently only the profiling sampling event needs the lookahead - * functionality, so we don't yet define general purpose lookahead functions. - * - * Surplus is a terminology referring to the amount of bytes beyond what's - * needed for triggering an event, which can be a useful quantity to have in - * general when lookahead is being called. - */ - -JEMALLOC_ALWAYS_INLINE bool -te_prof_sample_event_lookahead_surplus(tsd_t *tsd, size_t usize, - size_t *surplus) { - if (surplus != NULL) { - /* - * This is a dead store: the surplus will be overwritten before - * any read. The initialization suppresses compiler warnings. - * Meanwhile, using SIZE_MAX to initialize is good for - * debugging purpose, because a valid surplus value is strictly - * less than usize, which is at most SIZE_MAX. - */ - *surplus = SIZE_MAX; - } - if (unlikely(!tsd_nominal(tsd) || tsd_reentrancy_level_get(tsd) > 0)) { - return false; - } - /* The subtraction is intentionally susceptible to underflow. */ - uint64_t accumbytes = tsd_thread_allocated_get(tsd) + usize - - tsd_thread_allocated_last_event_get(tsd); - uint64_t sample_wait = tsd_prof_sample_event_wait_get(tsd); - if (accumbytes < sample_wait) { - return false; - } - assert(accumbytes - sample_wait < (uint64_t)usize); - if (surplus != NULL) { - *surplus = (size_t)(accumbytes - sample_wait); - } - return true; -} - -JEMALLOC_ALWAYS_INLINE bool -te_prof_sample_event_lookahead(tsd_t *tsd, size_t usize) { - return te_prof_sample_event_lookahead_surplus(tsd, usize, NULL); -} - JEMALLOC_ALWAYS_INLINE void te_event_advance(tsd_t *tsd, size_t usize, bool is_alloc) { te_assert_invariants(tsd); diff --git a/dep/jemalloc/include/jemalloc/internal/thread_event_registry.h b/dep/jemalloc/include/jemalloc/internal/thread_event_registry.h new file mode 100644 index 0000000000000..bfb140aaf8fa3 --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/thread_event_registry.h @@ -0,0 +1,107 @@ +#ifndef JEMALLOC_INTERNAL_THREAD_EVENT_REGISTRY_H +#define JEMALLOC_INTERNAL_THREAD_EVENT_REGISTRY_H + +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/tsd_types.h" + +#define TE_MAX_USER_EVENTS 4 + +/* "te" is short for "thread_event" */ +enum te_alloc_e { +#ifdef JEMALLOC_PROF + te_alloc_prof_sample, +#endif + te_alloc_stats_interval, + te_alloc_tcache_gc, +#ifdef JEMALLOC_STATS + te_alloc_peak, +#endif + te_alloc_user0, + te_alloc_user1, + te_alloc_user2, + te_alloc_user3, + te_alloc_last = te_alloc_user3, + te_alloc_count = te_alloc_last + 1 +}; +typedef enum te_alloc_e te_alloc_t; + +enum te_dalloc_e { + te_dalloc_tcache_gc, +#ifdef JEMALLOC_STATS + te_dalloc_peak, +#endif + te_dalloc_user0, + te_dalloc_user1, + te_dalloc_user2, + te_dalloc_user3, + te_dalloc_last = te_dalloc_user3, + te_dalloc_count = te_dalloc_last + 1 +}; +typedef enum te_dalloc_e te_dalloc_t; + +/* These will live in tsd */ +typedef struct te_data_s te_data_t; +struct te_data_s { + uint64_t alloc_wait[te_alloc_count]; + uint64_t dalloc_wait[te_dalloc_count]; +}; +#define TE_DATA_INITIALIZER \ + { \ + {0}, { \ + 0 \ + } \ + } + +/* + * Check if user event is installed, installed and enabled, or not + * installed. + * + */ +enum te_enabled_e { te_enabled_not_installed, te_enabled_yes, te_enabled_no }; +typedef enum te_enabled_e te_enabled_t; + +typedef struct te_base_cb_s te_base_cb_t; +struct te_base_cb_s { + te_enabled_t (*enabled)(void); + uint64_t (*new_event_wait)(tsd_t *tsd); + uint64_t (*postponed_event_wait)(tsd_t *tsd); + void (*event_handler)(tsd_t *tsd); +}; + +extern te_base_cb_t *te_alloc_handlers[te_alloc_count]; +extern te_base_cb_t *te_dalloc_handlers[te_dalloc_count]; + +bool experimental_thread_events_boot(void); + +/* + * User callback for thread events + * + * is_alloc - true if event is allocation, false if event is free + * tallocated - number of bytes allocated on current thread so far + * tdallocated - number of bytes allocated on current thread so far + */ +typedef void (*user_event_cb_t)( + bool is_alloc, uint64_t tallocated, uint64_t tdallocated); + +typedef struct user_hook_object_s user_hook_object_t; +struct user_hook_object_s { + user_event_cb_t callback; + uint64_t interval; + bool is_alloc_only; +}; + +/* + * register user callback + * + * return zero if event was registered + * + * if interval is zero or callback is NULL, or + * no more slots are available event will not be registered + * and non-zero value will be returned + * + */ +int te_register_user_handler(tsdn_t *tsdn, user_hook_object_t *te_uobj); + +te_enabled_t te_user_event_enabled(size_t ue_idx, bool is_alloc); + +#endif /* JEMALLOC_INTERNAL_THREAD_EVENT_REGISTRY_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/ticker.h b/dep/jemalloc/include/jemalloc/internal/ticker.h index 6b51ddec43bf3..a1eec628ee804 100644 --- a/dep/jemalloc/include/jemalloc/internal/ticker.h +++ b/dep/jemalloc/include/jemalloc/internal/ticker.h @@ -1,6 +1,7 @@ #ifndef JEMALLOC_INTERNAL_TICKER_H #define JEMALLOC_INTERNAL_TICKER_H +#include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/prng.h" #include "jemalloc/internal/util.h" @@ -52,28 +53,32 @@ ticker_read(const ticker_t *ticker) { * worth the hassle, but this is on the fast path of both malloc and free (via * tcache_event). */ -#if defined(__GNUC__) && !defined(__clang__) \ +#if defined(__GNUC__) && !defined(__clang__) \ && (defined(__x86_64__) || defined(__i386__)) JEMALLOC_NOINLINE #endif static bool -ticker_fixup(ticker_t *ticker) { +ticker_fixup(ticker_t *ticker, bool delay_trigger) { + if (delay_trigger) { + ticker->tick = 0; + return false; + } ticker->tick = ticker->nticks; return true; } static inline bool -ticker_ticks(ticker_t *ticker, int32_t nticks) { +ticker_ticks(ticker_t *ticker, int32_t nticks, bool delay_trigger) { ticker->tick -= nticks; if (unlikely(ticker->tick < 0)) { - return ticker_fixup(ticker); + return ticker_fixup(ticker, delay_trigger); } return false; } static inline bool -ticker_tick(ticker_t *ticker) { - return ticker_ticks(ticker, 1); +ticker_tick(ticker_t *ticker, bool delay_trigger) { + return ticker_ticks(ticker, 1, delay_trigger); } /* @@ -124,7 +129,8 @@ struct ticker_geom_s { * the behavior over long periods of time rather than the exact timing of the * initial ticks. */ -#define TICKER_GEOM_INIT(nticks) {nticks, nticks} +#define TICKER_GEOM_INIT(nticks) \ + { nticks, nticks } static inline void ticker_geom_init(ticker_geom_t *ticker, int32_t nticks) { @@ -145,31 +151,39 @@ ticker_geom_read(const ticker_geom_t *ticker) { } /* Same deal as above. */ -#if defined(__GNUC__) && !defined(__clang__) \ +#if defined(__GNUC__) && !defined(__clang__) \ && (defined(__x86_64__) || defined(__i386__)) JEMALLOC_NOINLINE #endif static bool -ticker_geom_fixup(ticker_geom_t *ticker, uint64_t *prng_state) { +ticker_geom_fixup( + ticker_geom_t *ticker, uint64_t *prng_state, bool delay_trigger) { + if (delay_trigger) { + ticker->tick = 0; + return false; + } + uint64_t idx = prng_lg_range_u64(prng_state, TICKER_GEOM_NBITS); - ticker->tick = (uint32_t)( - (uint64_t)ticker->nticks * (uint64_t)ticker_geom_table[idx] - / (uint64_t)TICKER_GEOM_MUL); + ticker->tick = (uint32_t)((uint64_t)ticker->nticks + * (uint64_t)ticker_geom_table[idx] / (uint64_t)TICKER_GEOM_MUL); + return true; } static inline bool -ticker_geom_ticks(ticker_geom_t *ticker, uint64_t *prng_state, int32_t nticks) { +ticker_geom_ticks(ticker_geom_t *ticker, uint64_t *prng_state, int32_t nticks, + bool delay_trigger) { ticker->tick -= nticks; if (unlikely(ticker->tick < 0)) { - return ticker_geom_fixup(ticker, prng_state); + return ticker_geom_fixup(ticker, prng_state, delay_trigger); } return false; } static inline bool -ticker_geom_tick(ticker_geom_t *ticker, uint64_t *prng_state) { - return ticker_geom_ticks(ticker, prng_state, 1); +ticker_geom_tick( + ticker_geom_t *ticker, uint64_t *prng_state, bool delay_trigger) { + return ticker_geom_ticks(ticker, prng_state, 1, delay_trigger); } #endif /* JEMALLOC_INTERNAL_TICKER_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/tsd.h b/dep/jemalloc/include/jemalloc/internal/tsd.h index 66d688227037a..84101c65ad3b7 100644 --- a/dep/jemalloc/include/jemalloc/internal/tsd.h +++ b/dep/jemalloc/include/jemalloc/internal/tsd.h @@ -1,313 +1,20 @@ #ifndef JEMALLOC_INTERNAL_TSD_H #define JEMALLOC_INTERNAL_TSD_H -#include "jemalloc/internal/activity_callback.h" -#include "jemalloc/internal/arena_types.h" -#include "jemalloc/internal/assert.h" -#include "jemalloc/internal/bin_types.h" -#include "jemalloc/internal/jemalloc_internal_externs.h" -#include "jemalloc/internal/peak.h" -#include "jemalloc/internal/prof_types.h" -#include "jemalloc/internal/ql.h" -#include "jemalloc/internal/rtree_tsd.h" -#include "jemalloc/internal/tcache_types.h" -#include "jemalloc/internal/tcache_structs.h" -#include "jemalloc/internal/util.h" -#include "jemalloc/internal/witness.h" - -/* - * Thread-Specific-Data layout - * - * At least some thread-local data gets touched on the fast-path of almost all - * malloc operations. But much of it is only necessary down slow-paths, or - * testing. We want to colocate the fast-path data so that it can live on the - * same cacheline if possible. So we define three tiers of hotness: - * TSD_DATA_FAST: Touched on the alloc/dalloc fast paths. - * TSD_DATA_SLOW: Touched down slow paths. "Slow" here is sort of general; - * there are "semi-slow" paths like "not a sized deallocation, but can still - * live in the tcache". We'll want to keep these closer to the fast-path - * data. - * TSD_DATA_SLOWER: Only touched in test or debug modes, or not touched at all. - * - * An additional concern is that the larger tcache bins won't be used (we have a - * bin per size class, but by default only cache relatively small objects). So - * the earlier bins are in the TSD_DATA_FAST tier, but the later ones are in the - * TSD_DATA_SLOWER tier. - * - * As a result of all this, we put the slow data first, then the fast data, then - * the slower data, while keeping the tcache as the last element of the fast - * data (so that the fast -> slower transition happens midway through the - * tcache). While we don't yet play alignment tricks to guarantee it, this - * increases our odds of getting some cache/page locality on fast paths. - */ - -#ifdef JEMALLOC_JET -typedef void (*test_callback_t)(int *); -# define MALLOC_TSD_TEST_DATA_INIT 0x72b65c10 -# define MALLOC_TEST_TSD \ - O(test_data, int, int) \ - O(test_callback, test_callback_t, int) -# define MALLOC_TEST_TSD_INITIALIZER , MALLOC_TSD_TEST_DATA_INIT, NULL -#else -# define MALLOC_TEST_TSD -# define MALLOC_TEST_TSD_INITIALIZER -#endif - -typedef ql_elm(tsd_t) tsd_link_t; - -/* O(name, type, nullable type) */ -#define TSD_DATA_SLOW \ - O(tcache_enabled, bool, bool) \ - O(reentrancy_level, int8_t, int8_t) \ - O(thread_allocated_last_event, uint64_t, uint64_t) \ - O(thread_allocated_next_event, uint64_t, uint64_t) \ - O(thread_deallocated_last_event, uint64_t, uint64_t) \ - O(thread_deallocated_next_event, uint64_t, uint64_t) \ - O(tcache_gc_event_wait, uint64_t, uint64_t) \ - O(tcache_gc_dalloc_event_wait, uint64_t, uint64_t) \ - O(prof_sample_event_wait, uint64_t, uint64_t) \ - O(prof_sample_last_event, uint64_t, uint64_t) \ - O(stats_interval_event_wait, uint64_t, uint64_t) \ - O(stats_interval_last_event, uint64_t, uint64_t) \ - O(peak_alloc_event_wait, uint64_t, uint64_t) \ - O(peak_dalloc_event_wait, uint64_t, uint64_t) \ - O(prof_tdata, prof_tdata_t *, prof_tdata_t *) \ - O(prng_state, uint64_t, uint64_t) \ - O(san_extents_until_guard_small, uint64_t, uint64_t) \ - O(san_extents_until_guard_large, uint64_t, uint64_t) \ - O(iarena, arena_t *, arena_t *) \ - O(arena, arena_t *, arena_t *) \ - O(arena_decay_ticker, ticker_geom_t, ticker_geom_t) \ - O(sec_shard, uint8_t, uint8_t) \ - O(binshards, tsd_binshards_t, tsd_binshards_t)\ - O(tsd_link, tsd_link_t, tsd_link_t) \ - O(in_hook, bool, bool) \ - O(peak, peak_t, peak_t) \ - O(activity_callback_thunk, activity_callback_thunk_t, \ - activity_callback_thunk_t) \ - O(tcache_slow, tcache_slow_t, tcache_slow_t) \ - O(rtree_ctx, rtree_ctx_t, rtree_ctx_t) - -#define TSD_DATA_SLOW_INITIALIZER \ - /* tcache_enabled */ TCACHE_ENABLED_ZERO_INITIALIZER, \ - /* reentrancy_level */ 0, \ - /* thread_allocated_last_event */ 0, \ - /* thread_allocated_next_event */ 0, \ - /* thread_deallocated_last_event */ 0, \ - /* thread_deallocated_next_event */ 0, \ - /* tcache_gc_event_wait */ 0, \ - /* tcache_gc_dalloc_event_wait */ 0, \ - /* prof_sample_event_wait */ 0, \ - /* prof_sample_last_event */ 0, \ - /* stats_interval_event_wait */ 0, \ - /* stats_interval_last_event */ 0, \ - /* peak_alloc_event_wait */ 0, \ - /* peak_dalloc_event_wait */ 0, \ - /* prof_tdata */ NULL, \ - /* prng_state */ 0, \ - /* san_extents_until_guard_small */ 0, \ - /* san_extents_until_guard_large */ 0, \ - /* iarena */ NULL, \ - /* arena */ NULL, \ - /* arena_decay_ticker */ \ - TICKER_GEOM_INIT(ARENA_DECAY_NTICKS_PER_UPDATE), \ - /* sec_shard */ (uint8_t)-1, \ - /* binshards */ TSD_BINSHARDS_ZERO_INITIALIZER, \ - /* tsd_link */ {NULL}, \ - /* in_hook */ false, \ - /* peak */ PEAK_INITIALIZER, \ - /* activity_callback_thunk */ \ - ACTIVITY_CALLBACK_THUNK_INITIALIZER, \ - /* tcache_slow */ TCACHE_SLOW_ZERO_INITIALIZER, \ - /* rtree_ctx */ RTREE_CTX_INITIALIZER, - -/* O(name, type, nullable type) */ -#define TSD_DATA_FAST \ - O(thread_allocated, uint64_t, uint64_t) \ - O(thread_allocated_next_event_fast, uint64_t, uint64_t) \ - O(thread_deallocated, uint64_t, uint64_t) \ - O(thread_deallocated_next_event_fast, uint64_t, uint64_t) \ - O(tcache, tcache_t, tcache_t) - -#define TSD_DATA_FAST_INITIALIZER \ - /* thread_allocated */ 0, \ - /* thread_allocated_next_event_fast */ 0, \ - /* thread_deallocated */ 0, \ - /* thread_deallocated_next_event_fast */ 0, \ - /* tcache */ TCACHE_ZERO_INITIALIZER, - -/* O(name, type, nullable type) */ -#define TSD_DATA_SLOWER \ - O(witness_tsd, witness_tsd_t, witness_tsdn_t) \ - MALLOC_TEST_TSD - -#define TSD_DATA_SLOWER_INITIALIZER \ - /* witness */ WITNESS_TSD_INITIALIZER \ - /* test data */ MALLOC_TEST_TSD_INITIALIZER - - -#define TSD_INITIALIZER { \ - TSD_DATA_SLOW_INITIALIZER \ - /* state */ ATOMIC_INIT(tsd_state_uninitialized), \ - TSD_DATA_FAST_INITIALIZER \ - TSD_DATA_SLOWER_INITIALIZER \ -} - -#if defined(JEMALLOC_MALLOC_THREAD_CLEANUP) || defined(_WIN32) -void _malloc_tsd_cleanup_register(bool (*f)(void)); -#endif - -void *malloc_tsd_malloc(size_t size); -void malloc_tsd_dalloc(void *wrapper); -tsd_t *malloc_tsd_boot0(void); -void malloc_tsd_boot1(void); -void tsd_cleanup(void *arg); -tsd_t *tsd_fetch_slow(tsd_t *tsd, bool internal); -void tsd_state_set(tsd_t *tsd, uint8_t new_state); -void tsd_slow_update(tsd_t *tsd); -void tsd_prefork(tsd_t *tsd); -void tsd_postfork_parent(tsd_t *tsd); -void tsd_postfork_child(tsd_t *tsd); - -/* - * Call ..._inc when your module wants to take all threads down the slow paths, - * and ..._dec when it no longer needs to. - */ -void tsd_global_slow_inc(tsdn_t *tsdn); -void tsd_global_slow_dec(tsdn_t *tsdn); -bool tsd_global_slow(); - -enum { - /* Common case --> jnz. */ - tsd_state_nominal = 0, - /* Initialized but on slow path. */ - tsd_state_nominal_slow = 1, - /* - * Some thread has changed global state in such a way that all nominal - * threads need to recompute their fast / slow status the next time they - * get a chance. - * - * Any thread can change another thread's status *to* recompute, but - * threads are the only ones who can change their status *from* - * recompute. - */ - tsd_state_nominal_recompute = 2, - /* - * The above nominal states should be lower values. We use - * tsd_nominal_max to separate nominal states from threads in the - * process of being born / dying. - */ - tsd_state_nominal_max = 2, - - /* - * A thread might free() during its death as its only allocator action; - * in such scenarios, we need tsd, but set up in such a way that no - * cleanup is necessary. - */ - tsd_state_minimal_initialized = 3, - /* States during which we know we're in thread death. */ - tsd_state_purgatory = 4, - tsd_state_reincarnated = 5, - /* - * What it says on the tin; tsd that hasn't been initialized. Note - * that even when the tsd struct lives in TLS, when need to keep track - * of stuff like whether or not our pthread destructors have been - * scheduled, so this really truly is different than the nominal state. - */ - tsd_state_uninitialized = 6 -}; - -/* - * Some TSD accesses can only be done in a nominal state. To enforce this, we - * wrap TSD member access in a function that asserts on TSD state, and mangle - * field names to prevent touching them accidentally. - */ -#define TSD_MANGLE(n) cant_access_tsd_items_directly_use_a_getter_or_setter_##n - -#ifdef JEMALLOC_U8_ATOMICS -# define tsd_state_t atomic_u8_t -# define tsd_atomic_load atomic_load_u8 -# define tsd_atomic_store atomic_store_u8 -# define tsd_atomic_exchange atomic_exchange_u8 -#else -# define tsd_state_t atomic_u32_t -# define tsd_atomic_load atomic_load_u32 -# define tsd_atomic_store atomic_store_u32 -# define tsd_atomic_exchange atomic_exchange_u32 -#endif - -/* The actual tsd. */ -struct tsd_s { - /* - * The contents should be treated as totally opaque outside the tsd - * module. Access any thread-local state through the getters and - * setters below. - */ - -#define O(n, t, nt) \ - t TSD_MANGLE(n); - - TSD_DATA_SLOW - /* - * We manually limit the state to just a single byte. Unless the 8-bit - * atomics are unavailable (which is rare). - */ - tsd_state_t state; - TSD_DATA_FAST - TSD_DATA_SLOWER -#undef O -}; - -JEMALLOC_ALWAYS_INLINE uint8_t -tsd_state_get(tsd_t *tsd) { - /* - * This should be atomic. Unfortunately, compilers right now can't tell - * that this can be done as a memory comparison, and forces a load into - * a register that hurts fast-path performance. - */ - /* return atomic_load_u8(&tsd->state, ATOMIC_RELAXED); */ - return *(uint8_t *)&tsd->state; -} - -/* - * Wrapper around tsd_t that makes it possible to avoid implicit conversion - * between tsd_t and tsdn_t, where tsdn_t is "nullable" and has to be - * explicitly converted to tsd_t, which is non-nullable. - */ -struct tsdn_s { - tsd_t tsd; -}; -#define TSDN_NULL ((tsdn_t *)0) -JEMALLOC_ALWAYS_INLINE tsdn_t * -tsd_tsdn(tsd_t *tsd) { - return (tsdn_t *)tsd; -} - -JEMALLOC_ALWAYS_INLINE bool -tsdn_null(const tsdn_t *tsdn) { - return tsdn == NULL; -} - -JEMALLOC_ALWAYS_INLINE tsd_t * -tsdn_tsd(tsdn_t *tsdn) { - assert(!tsdn_null(tsdn)); - - return &tsdn->tsd; -} - /* * We put the platform-specific data declarations and inlines into their own * header files to avoid cluttering this file. They define tsd_boot0, * tsd_boot1, tsd_boot, tsd_booted_get, tsd_get_allocates, tsd_get, and tsd_set. */ #ifdef JEMALLOC_MALLOC_THREAD_CLEANUP -#include "jemalloc/internal/tsd_malloc_thread_cleanup.h" +# include "jemalloc/internal/jemalloc_preamble.h" +# include "jemalloc/internal/tsd_malloc_thread_cleanup.h" #elif (defined(JEMALLOC_TLS)) -#include "jemalloc/internal/tsd_tls.h" +# include "jemalloc/internal/tsd_tls.h" #elif (defined(_WIN32)) -#include "jemalloc/internal/tsd_win.h" +# include "jemalloc/internal/tsd_win.h" #else -#include "jemalloc/internal/tsd_generic.h" +# include "jemalloc/internal/tsd_generic.h" #endif /* @@ -315,16 +22,16 @@ tsdn_tsd(tsdn_t *tsdn) { * foo. This omits some safety checks, and so can be used during tsd * initialization and cleanup. */ -#define O(n, t, nt) \ -JEMALLOC_ALWAYS_INLINE t * \ -tsd_##n##p_get_unsafe(tsd_t *tsd) { \ - return &tsd->TSD_MANGLE(n); \ -} +#define O(n, t, nt) \ + JEMALLOC_ALWAYS_INLINE t *tsd_##n##p_get_unsafe(tsd_t *tsd) { \ + return &tsd->TSD_MANGLE(n); \ + } TSD_DATA_SLOW TSD_DATA_FAST TSD_DATA_SLOWER #undef O +/* clang-format off */ /* tsd_foop_get(tsd) returns a pointer to the thread-local instance of foo. */ #define O(n, t, nt) \ JEMALLOC_ALWAYS_INLINE t * \ @@ -341,6 +48,7 @@ tsd_##n##p_get(tsd_t *tsd) { \ state == tsd_state_minimal_initialized); \ return tsd_##n##p_get_unsafe(tsd); \ } +/* clang-format on */ TSD_DATA_SLOW TSD_DATA_FAST TSD_DATA_SLOWER @@ -350,39 +58,36 @@ TSD_DATA_SLOWER * tsdn_foop_get(tsdn) returns either the thread-local instance of foo (if tsdn * isn't NULL), or NULL (if tsdn is NULL), cast to the nullable pointer type. */ -#define O(n, t, nt) \ -JEMALLOC_ALWAYS_INLINE nt * \ -tsdn_##n##p_get(tsdn_t *tsdn) { \ - if (tsdn_null(tsdn)) { \ - return NULL; \ - } \ - tsd_t *tsd = tsdn_tsd(tsdn); \ - return (nt *)tsd_##n##p_get(tsd); \ -} +#define O(n, t, nt) \ + JEMALLOC_ALWAYS_INLINE nt *tsdn_##n##p_get(tsdn_t *tsdn) { \ + if (tsdn_null(tsdn)) { \ + return NULL; \ + } \ + tsd_t *tsd = tsdn_tsd(tsdn); \ + return (nt *)tsd_##n##p_get(tsd); \ + } TSD_DATA_SLOW TSD_DATA_FAST TSD_DATA_SLOWER #undef O /* tsd_foo_get(tsd) returns the value of the thread-local instance of foo. */ -#define O(n, t, nt) \ -JEMALLOC_ALWAYS_INLINE t \ -tsd_##n##_get(tsd_t *tsd) { \ - return *tsd_##n##p_get(tsd); \ -} +#define O(n, t, nt) \ + JEMALLOC_ALWAYS_INLINE t tsd_##n##_get(tsd_t *tsd) { \ + return *tsd_##n##p_get(tsd); \ + } TSD_DATA_SLOW TSD_DATA_FAST TSD_DATA_SLOWER #undef O /* tsd_foo_set(tsd, val) updates the thread-local instance of foo to be val. */ -#define O(n, t, nt) \ -JEMALLOC_ALWAYS_INLINE void \ -tsd_##n##_set(tsd_t *tsd, t val) { \ - assert(tsd_state_get(tsd) != tsd_state_reincarnated && \ - tsd_state_get(tsd) != tsd_state_minimal_initialized); \ - *tsd_##n##p_get(tsd) = val; \ -} +#define O(n, t, nt) \ + JEMALLOC_ALWAYS_INLINE void tsd_##n##_set(tsd_t *tsd, t val) { \ + assert(tsd_state_get(tsd) != tsd_state_reincarnated \ + && tsd_state_get(tsd) != tsd_state_minimal_initialized); \ + *tsd_##n##p_get(tsd) = val; \ + } TSD_DATA_SLOW TSD_DATA_FAST TSD_DATA_SLOWER @@ -395,8 +100,8 @@ tsd_assert_fast(tsd_t *tsd) { * counters; it's not in general possible to ensure that they won't * change asynchronously from underneath us. */ - assert(!malloc_slow && tsd_tcache_enabled_get(tsd) && - tsd_reentrancy_level_get(tsd) == 0); + assert(!malloc_slow && tsd_tcache_enabled_get(tsd) + && tsd_reentrancy_level_get(tsd) == 0); } JEMALLOC_ALWAYS_INLINE bool @@ -485,8 +190,8 @@ tsdn_rtree_ctx(tsdn_t *tsdn, rtree_ctx_t *fallback) { static inline bool tsd_state_nocleanup(tsd_t *tsd) { - return tsd_state_get(tsd) == tsd_state_reincarnated || - tsd_state_get(tsd) == tsd_state_minimal_initialized; + return tsd_state_get(tsd) == tsd_state_reincarnated + || tsd_state_get(tsd) == tsd_state_minimal_initialized; } /* diff --git a/dep/jemalloc/include/jemalloc/internal/tsd_generic.h b/dep/jemalloc/include/jemalloc/internal/tsd_generic.h index a718472f32ef3..e049766f62b9c 100644 --- a/dep/jemalloc/include/jemalloc/internal/tsd_generic.h +++ b/dep/jemalloc/include/jemalloc/internal/tsd_generic.h @@ -1,31 +1,35 @@ #ifdef JEMALLOC_INTERNAL_TSD_GENERIC_H -#error This file should be included only once, by tsd.h. +# error This file should be included only once, by tsd.h. #endif #define JEMALLOC_INTERNAL_TSD_GENERIC_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/ql.h" +#include "jemalloc/internal/tsd_internals.h" +#include "jemalloc/internal/tsd_types.h" + typedef struct tsd_init_block_s tsd_init_block_t; struct tsd_init_block_s { ql_elm(tsd_init_block_t) link; pthread_t thread; - void *data; + void *data; }; /* Defined in tsd.c, to allow the mutex headers to have tsd dependencies. */ typedef struct tsd_init_head_s tsd_init_head_t; typedef struct { - bool initialized; + bool initialized; tsd_t val; } tsd_wrapper_t; -void *tsd_init_check_recursion(tsd_init_head_t *head, - tsd_init_block_t *block); -void tsd_init_finish(tsd_init_head_t *head, tsd_init_block_t *block); +void *tsd_init_check_recursion(tsd_init_head_t *head, tsd_init_block_t *block); +void tsd_init_finish(tsd_init_head_t *head, tsd_init_block_t *block); -extern pthread_key_t tsd_tsd; +extern pthread_key_t tsd_tsd; extern tsd_init_head_t tsd_init_head; -extern tsd_wrapper_t tsd_boot_wrapper; -extern bool tsd_booted; +extern tsd_wrapper_t tsd_boot_wrapper; +extern bool tsd_booted; /* Initialization/cleanup. */ JEMALLOC_ALWAYS_INLINE void @@ -37,8 +41,8 @@ tsd_cleanup_wrapper(void *arg) { tsd_cleanup(&wrapper->val); if (wrapper->initialized) { /* Trigger another cleanup round. */ - if (pthread_setspecific(tsd_tsd, (void *)wrapper) != 0) - { + if (pthread_setspecific(tsd_tsd, (void *)wrapper) + != 0) { malloc_write(": Error setting TSD\n"); if (opt_abort) { abort(); @@ -73,23 +77,23 @@ tsd_wrapper_get(bool init) { if (init && unlikely(wrapper == NULL)) { tsd_init_block_t block; - wrapper = (tsd_wrapper_t *) - tsd_init_check_recursion(&tsd_init_head, &block); + wrapper = (tsd_wrapper_t *)tsd_init_check_recursion( + &tsd_init_head, &block); if (wrapper) { return wrapper; } - wrapper = (tsd_wrapper_t *) - malloc_tsd_malloc(sizeof(tsd_wrapper_t)); + wrapper = (tsd_wrapper_t *)malloc_tsd_malloc( + sizeof(tsd_wrapper_t)); block.data = (void *)wrapper; if (wrapper == NULL) { malloc_write(": Error allocating TSD\n"); abort(); } else { wrapper->initialized = false; - JEMALLOC_DIAGNOSTIC_PUSH - JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS + JEMALLOC_DIAGNOSTIC_PUSH + JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS tsd_t initializer = TSD_INITIALIZER; - JEMALLOC_DIAGNOSTIC_POP + JEMALLOC_DIAGNOSTIC_POP wrapper->val = initializer; } tsd_wrapper_set(wrapper); @@ -100,11 +104,11 @@ tsd_wrapper_get(bool init) { JEMALLOC_ALWAYS_INLINE bool tsd_boot0(void) { - tsd_wrapper_t *wrapper; + tsd_wrapper_t *wrapper; tsd_init_block_t block; - wrapper = (tsd_wrapper_t *) - tsd_init_check_recursion(&tsd_init_head, &block); + wrapper = (tsd_wrapper_t *)tsd_init_check_recursion( + &tsd_init_head, &block); if (wrapper) { return false; } @@ -129,10 +133,10 @@ tsd_boot1(void) { tsd_boot_wrapper.initialized = false; tsd_cleanup(&tsd_boot_wrapper.val); wrapper->initialized = false; - JEMALLOC_DIAGNOSTIC_PUSH - JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS + JEMALLOC_DIAGNOSTIC_PUSH + JEMALLOC_DIAGNOSTIC_IGNORE_MISSING_STRUCT_FIELD_INITIALIZERS tsd_t initializer = TSD_INITIALIZER; - JEMALLOC_DIAGNOSTIC_POP + JEMALLOC_DIAGNOSTIC_POP wrapper->val = initializer; tsd_wrapper_set(wrapper); } diff --git a/dep/jemalloc/include/jemalloc/internal/tsd_internals.h b/dep/jemalloc/include/jemalloc/internal/tsd_internals.h new file mode 100644 index 0000000000000..53b58d0c97c6d --- /dev/null +++ b/dep/jemalloc/include/jemalloc/internal/tsd_internals.h @@ -0,0 +1,280 @@ +#ifdef JEMALLOC_INTERNAL_TSD_INTERNALS_H +#error This file should be included only once, by one of tsd_malloc_thread_cleanup.h, tsd_tls.h, tsd_generic.h, or tsd_win.h +#endif +#define JEMALLOC_INTERNAL_TSD_INTERNALS_H + +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/arena_types.h" +#include "jemalloc/internal/assert.h" +#include "jemalloc/internal/bin_types.h" +#include "jemalloc/internal/jemalloc_internal_externs.h" +#include "jemalloc/internal/peak.h" +#include "jemalloc/internal/prof_types.h" +#include "jemalloc/internal/ql.h" +#include "jemalloc/internal/rtree_tsd.h" +#include "jemalloc/internal/tcache_structs.h" +#include "jemalloc/internal/tcache_types.h" +#include "jemalloc/internal/thread_event_registry.h" +#include "jemalloc/internal/tsd_types.h" +#include "jemalloc/internal/util.h" +#include "jemalloc/internal/witness.h" + +/* + * Thread-Specific-Data layout + * + * At least some thread-local data gets touched on the fast-path of almost all + * malloc operations. But much of it is only necessary down slow-paths, or + * testing. We want to colocate the fast-path data so that it can live on the + * same cacheline if possible. So we define three tiers of hotness: + * TSD_DATA_FAST: Touched on the alloc/dalloc fast paths. + * TSD_DATA_SLOW: Touched down slow paths. "Slow" here is sort of general; + * there are "semi-slow" paths like "not a sized deallocation, but can still + * live in the tcache". We'll want to keep these closer to the fast-path + * data. + * TSD_DATA_SLOWER: Only touched in test or debug modes, or not touched at all. + * + * An additional concern is that the larger tcache bins won't be used (we have a + * bin per size class, but by default only cache relatively small objects). So + * the earlier bins are in the TSD_DATA_FAST tier, but the later ones are in the + * TSD_DATA_SLOWER tier. + * + * As a result of all this, we put the slow data first, then the fast data, then + * the slower data, while keeping the tcache as the last element of the fast + * data (so that the fast -> slower transition happens midway through the + * tcache). While we don't yet play alignment tricks to guarantee it, this + * increases our odds of getting some cache/page locality on fast paths. + */ + +#ifdef JEMALLOC_JET +typedef void (*test_callback_t)(int *); +# define MALLOC_TSD_TEST_DATA_INIT 0x72b65c10 +# define MALLOC_TEST_TSD \ + O(test_data, int, int) \ + O(test_callback, test_callback_t, int) +# define MALLOC_TEST_TSD_INITIALIZER , MALLOC_TSD_TEST_DATA_INIT, NULL +#else +# define MALLOC_TEST_TSD +# define MALLOC_TEST_TSD_INITIALIZER +#endif + +typedef ql_elm(tsd_t) tsd_link_t; + +/* O(name, type, nullable type) */ +#define TSD_DATA_SLOW \ + O(tcache_enabled, bool, bool) \ + O(reentrancy_level, int8_t, int8_t) \ + O(min_init_state_nfetched, uint8_t, uint8_t) \ + O(thread_allocated_last_event, uint64_t, uint64_t) \ + O(thread_allocated_next_event, uint64_t, uint64_t) \ + O(thread_deallocated_last_event, uint64_t, uint64_t) \ + O(thread_deallocated_next_event, uint64_t, uint64_t) \ + O(te_data, te_data_t, te_data_t) \ + O(prof_sample_last_event, uint64_t, uint64_t) \ + O(stats_interval_last_event, uint64_t, uint64_t) \ + O(prof_tdata, prof_tdata_t *, prof_tdata_t *) \ + O(prng_state, uint64_t, uint64_t) \ + O(san_extents_until_guard_small, uint64_t, uint64_t) \ + O(san_extents_until_guard_large, uint64_t, uint64_t) \ + O(iarena, arena_t *, arena_t *) \ + O(arena, arena_t *, arena_t *) \ + O(arena_decay_ticker, ticker_geom_t, ticker_geom_t) \ + O(sec_shard, uint8_t, uint8_t) \ + O(binshards, tsd_binshards_t, tsd_binshards_t) \ + O(tsd_link, tsd_link_t, tsd_link_t) \ + O(in_hook, bool, bool) \ + O(peak, peak_t, peak_t) \ + O(tcache_slow, tcache_slow_t, tcache_slow_t) \ + O(rtree_ctx, rtree_ctx_t, rtree_ctx_t) + +#define TSD_DATA_SLOW_INITIALIZER \ + /* tcache_enabled */ TCACHE_ENABLED_ZERO_INITIALIZER, \ + /* reentrancy_level */ 0, /* min_init_state_nfetched */ 0, \ + /* thread_allocated_last_event */ 0, \ + /* thread_allocated_next_event */ 0, \ + /* thread_deallocated_last_event */ 0, \ + /* thread_deallocated_next_event */ 0, \ + /* te_data */ TE_DATA_INITIALIZER, /* prof_sample_last_event */ 0, \ + /* stats_interval_last_event */ 0, /* prof_tdata */ NULL, \ + /* prng_state */ 0, /* san_extents_until_guard_small */ 0, \ + /* san_extents_until_guard_large */ 0, /* iarena */ NULL, \ + /* arena */ NULL, /* arena_decay_ticker */ \ + TICKER_GEOM_INIT(ARENA_DECAY_NTICKS_PER_UPDATE), \ + /* sec_shard */ (uint8_t) - 1, \ + /* binshards */ TSD_BINSHARDS_ZERO_INITIALIZER, \ + /* tsd_link */ {NULL}, /* in_hook */ false, \ + /* peak */ PEAK_INITIALIZER, \ + /* tcache_slow */ TCACHE_SLOW_ZERO_INITIALIZER, \ + /* rtree_ctx */ RTREE_CTX_INITIALIZER, + +/* O(name, type, nullable type) */ +#define TSD_DATA_FAST \ + O(thread_allocated, uint64_t, uint64_t) \ + O(thread_allocated_next_event_fast, uint64_t, uint64_t) \ + O(thread_deallocated, uint64_t, uint64_t) \ + O(thread_deallocated_next_event_fast, uint64_t, uint64_t) \ + O(tcache, tcache_t, tcache_t) + +#define TSD_DATA_FAST_INITIALIZER \ + /* thread_allocated */ 0, /* thread_allocated_next_event_fast */ 0, \ + /* thread_deallocated */ 0, \ + /* thread_deallocated_next_event_fast */ 0, \ + /* tcache */ TCACHE_ZERO_INITIALIZER, + +/* O(name, type, nullable type) */ +#define TSD_DATA_SLOWER \ + O(witness_tsd, witness_tsd_t, witness_tsdn_t) \ + MALLOC_TEST_TSD + +#define TSD_DATA_SLOWER_INITIALIZER \ + /* witness */ WITNESS_TSD_INITIALIZER \ + /* test data */ MALLOC_TEST_TSD_INITIALIZER + +#define TSD_INITIALIZER \ + { \ + TSD_DATA_SLOW_INITIALIZER \ + /* state */ ATOMIC_INIT(tsd_state_uninitialized), \ + TSD_DATA_FAST_INITIALIZER TSD_DATA_SLOWER_INITIALIZER \ + } + +#if defined(JEMALLOC_MALLOC_THREAD_CLEANUP) || defined(_WIN32) +void _malloc_tsd_cleanup_register(bool (*f)(void)); +#endif + +void *malloc_tsd_malloc(size_t size); +void malloc_tsd_dalloc(void *wrapper); +tsd_t *malloc_tsd_boot0(void); +void malloc_tsd_boot1(void); +void tsd_cleanup(void *arg); +tsd_t *tsd_fetch_slow(tsd_t *tsd, bool minimal); +void tsd_state_set(tsd_t *tsd, uint8_t new_state); +void tsd_slow_update(tsd_t *tsd); +void tsd_prefork(tsd_t *tsd); +void tsd_postfork_parent(tsd_t *tsd); +void tsd_postfork_child(tsd_t *tsd); + +/* + * Call ..._inc when your module wants to take all threads down the slow paths, + * and ..._dec when it no longer needs to. + */ +void tsd_global_slow_inc(tsdn_t *tsdn); +void tsd_global_slow_dec(tsdn_t *tsdn); +bool tsd_global_slow(void); + +#define TSD_MIN_INIT_STATE_MAX_FETCHED (128) + +enum { + /* Common case --> jnz. */ + tsd_state_nominal = 0, + /* Initialized but on slow path. */ + tsd_state_nominal_slow = 1, + /* + * Some thread has changed global state in such a way that all nominal + * threads need to recompute their fast / slow status the next time they + * get a chance. + * + * Any thread can change another thread's status *to* recompute, but + * threads are the only ones who can change their status *from* + * recompute. + */ + tsd_state_nominal_recompute = 2, + /* + * The above nominal states should be lower values. We use + * tsd_nominal_max to separate nominal states from threads in the + * process of being born / dying. + */ + tsd_state_nominal_max = 2, + + /* + * A thread might free() during its death as its only allocator action; + * in such scenarios, we need tsd, but set up in such a way that no + * cleanup is necessary. + */ + tsd_state_minimal_initialized = 3, + /* States during which we know we're in thread death. */ + tsd_state_purgatory = 4, + tsd_state_reincarnated = 5, + /* + * What it says on the tin; tsd that hasn't been initialized. Note + * that even when the tsd struct lives in TLS, when need to keep track + * of stuff like whether or not our pthread destructors have been + * scheduled, so this really truly is different than the nominal state. + */ + tsd_state_uninitialized = 6 +}; + +/* + * Some TSD accesses can only be done in a nominal state. To enforce this, we + * wrap TSD member access in a function that asserts on TSD state, and mangle + * field names to prevent touching them accidentally. + */ +#define TSD_MANGLE(n) cant_access_tsd_items_directly_use_a_getter_or_setter_##n + +#ifdef JEMALLOC_U8_ATOMICS +# define tsd_state_t atomic_u8_t +# define tsd_atomic_load atomic_load_u8 +# define tsd_atomic_store atomic_store_u8 +# define tsd_atomic_exchange atomic_exchange_u8 +#else +# define tsd_state_t atomic_u32_t +# define tsd_atomic_load atomic_load_u32 +# define tsd_atomic_store atomic_store_u32 +# define tsd_atomic_exchange atomic_exchange_u32 +#endif + +/* The actual tsd. */ +struct tsd_s { + /* + * The contents should be treated as totally opaque outside the tsd + * module. Access any thread-local state through the getters and + * setters below. + */ + +#define O(n, t, nt) t TSD_MANGLE(n); + + TSD_DATA_SLOW + /* + * We manually limit the state to just a single byte. Unless the 8-bit + * atomics are unavailable (which is rare). + */ + tsd_state_t state; + TSD_DATA_FAST + TSD_DATA_SLOWER +#undef O +}; + +JEMALLOC_ALWAYS_INLINE uint8_t +tsd_state_get(tsd_t *tsd) { + /* + * This should be atomic. Unfortunately, compilers right now can't tell + * that this can be done as a memory comparison, and forces a load into + * a register that hurts fast-path performance. + */ + /* return atomic_load_u8(&tsd->state, ATOMIC_RELAXED); */ + return *(uint8_t *)&tsd->state; +} + +/* + * Wrapper around tsd_t that makes it possible to avoid implicit conversion + * between tsd_t and tsdn_t, where tsdn_t is "nullable" and has to be + * explicitly converted to tsd_t, which is non-nullable. + */ +struct tsdn_s { + tsd_t tsd; +}; +#define TSDN_NULL ((tsdn_t *)0) +JEMALLOC_ALWAYS_INLINE tsdn_t * +tsd_tsdn(tsd_t *tsd) { + return (tsdn_t *)tsd; +} + +JEMALLOC_ALWAYS_INLINE bool +tsdn_null(const tsdn_t *tsdn) { + return tsdn == NULL; +} + +JEMALLOC_ALWAYS_INLINE tsd_t * +tsdn_tsd(tsdn_t *tsdn) { + assert(!tsdn_null(tsdn)); + + return &tsdn->tsd; +} diff --git a/dep/jemalloc/include/jemalloc/internal/tsd_malloc_thread_cleanup.h b/dep/jemalloc/include/jemalloc/internal/tsd_malloc_thread_cleanup.h index d8f3ef13c00fd..00756df1d0cea 100644 --- a/dep/jemalloc/include/jemalloc/internal/tsd_malloc_thread_cleanup.h +++ b/dep/jemalloc/include/jemalloc/internal/tsd_malloc_thread_cleanup.h @@ -1,8 +1,12 @@ #ifdef JEMALLOC_INTERNAL_TSD_MALLOC_THREAD_CLEANUP_H -#error This file should be included only once, by tsd.h. +# error This file should be included only once, by tsd.h. #endif #define JEMALLOC_INTERNAL_TSD_MALLOC_THREAD_CLEANUP_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/tsd_internals.h" +#include "jemalloc/internal/tsd_types.h" + #define JEMALLOC_TSD_TYPE_ATTR(type) __thread type JEMALLOC_TLS_MODEL extern JEMALLOC_TSD_TYPE_ATTR(tsd_t) tsd_tls; diff --git a/dep/jemalloc/include/jemalloc/internal/tsd_tls.h b/dep/jemalloc/include/jemalloc/internal/tsd_tls.h index 7d6c805beb52e..6536eb540ce34 100644 --- a/dep/jemalloc/include/jemalloc/internal/tsd_tls.h +++ b/dep/jemalloc/include/jemalloc/internal/tsd_tls.h @@ -1,13 +1,17 @@ #ifdef JEMALLOC_INTERNAL_TSD_TLS_H -#error This file should be included only once, by tsd.h. +# error This file should be included only once, by tsd.h. #endif #define JEMALLOC_INTERNAL_TSD_TLS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/tsd_internals.h" +#include "jemalloc/internal/tsd_types.h" + #define JEMALLOC_TSD_TYPE_ATTR(type) __thread type JEMALLOC_TLS_MODEL extern JEMALLOC_TSD_TYPE_ATTR(tsd_t) tsd_tls; extern pthread_key_t tsd_tsd; -extern bool tsd_booted; +extern bool tsd_booted; /* Initialization/cleanup. */ JEMALLOC_ALWAYS_INLINE bool diff --git a/dep/jemalloc/include/jemalloc/internal/tsd_types.h b/dep/jemalloc/include/jemalloc/internal/tsd_types.h index a6ae37da5a21e..46479506487f3 100644 --- a/dep/jemalloc/include/jemalloc/internal/tsd_types.h +++ b/dep/jemalloc/include/jemalloc/internal/tsd_types.h @@ -1,9 +1,11 @@ #ifndef JEMALLOC_INTERNAL_TSD_TYPES_H #define JEMALLOC_INTERNAL_TSD_TYPES_H -#define MALLOC_TSD_CLEANUPS_MAX 4 +#define MALLOC_TSD_CLEANUPS_MAX 4 -typedef struct tsd_s tsd_t; +#include "jemalloc/internal/jemalloc_preamble.h" + +typedef struct tsd_s tsd_t; typedef struct tsdn_s tsdn_t; typedef bool (*malloc_tsd_cleanup_t)(void); diff --git a/dep/jemalloc/include/jemalloc/internal/tsd_win.h b/dep/jemalloc/include/jemalloc/internal/tsd_win.h index a91dac88e06a0..8b22bec18de51 100644 --- a/dep/jemalloc/include/jemalloc/internal/tsd_win.h +++ b/dep/jemalloc/include/jemalloc/internal/tsd_win.h @@ -1,21 +1,41 @@ #ifdef JEMALLOC_INTERNAL_TSD_WIN_H -#error This file should be included only once, by tsd.h. +# error This file should be included only once, by tsd.h. #endif #define JEMALLOC_INTERNAL_TSD_WIN_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/tsd_internals.h" +#include "jemalloc/internal/tsd_types.h" + +/* val should always be the first field of tsd_wrapper_t since accessing + val is the common path and having val as the first field makes it possible + that converting a pointer to tsd_wrapper_t to a pointer to val is no more + than a type cast. */ typedef struct { - bool initialized; tsd_t val; + bool initialized; } tsd_wrapper_t; -extern DWORD tsd_tsd; +#if defined(JEMALLOC_LEGACY_WINDOWS_SUPPORT) || !defined(_MSC_VER) + +extern DWORD tsd_tsd; extern tsd_wrapper_t tsd_boot_wrapper; -extern bool tsd_booted; +extern bool tsd_booted; +# if defined(_M_ARM64EC) +# define JEMALLOC_WIN32_TLSGETVALUE2 0 +# else +# define JEMALLOC_WIN32_TLSGETVALUE2 1 +# endif +# if JEMALLOC_WIN32_TLSGETVALUE2 +typedef LPVOID(WINAPI *TGV2)(DWORD dwTlsIndex); +extern TGV2 tls_get_value2; +extern HMODULE tgv2_mod; +# endif /* Initialization/cleanup. */ JEMALLOC_ALWAYS_INLINE bool tsd_cleanup_wrapper(void) { - DWORD error = GetLastError(); + DWORD error = GetLastError(); tsd_wrapper_t *wrapper = (tsd_wrapper_t *)TlsGetValue(tsd_tsd); SetLastError(error); @@ -45,13 +65,21 @@ tsd_wrapper_set(tsd_wrapper_t *wrapper) { JEMALLOC_ALWAYS_INLINE tsd_wrapper_t * tsd_wrapper_get(bool init) { - DWORD error = GetLastError(); - tsd_wrapper_t *wrapper = (tsd_wrapper_t *) TlsGetValue(tsd_tsd); - SetLastError(error); + tsd_wrapper_t *wrapper; +# if JEMALLOC_WIN32_TLSGETVALUE2 + if (tls_get_value2 != NULL) { + wrapper = (tsd_wrapper_t *)tls_get_value2(tsd_tsd); + } else +# endif + { + DWORD error = GetLastError(); + wrapper = (tsd_wrapper_t *)TlsGetValue(tsd_tsd); + SetLastError(error); + } if (init && unlikely(wrapper == NULL)) { - wrapper = (tsd_wrapper_t *) - malloc_tsd_malloc(sizeof(tsd_wrapper_t)); + wrapper = (tsd_wrapper_t *)malloc_tsd_malloc( + sizeof(tsd_wrapper_t)); if (wrapper == NULL) { malloc_write(": Error allocating TSD\n"); abort(); @@ -74,6 +102,12 @@ tsd_boot0(void) { } _malloc_tsd_cleanup_register(&tsd_cleanup_wrapper); tsd_wrapper_set(&tsd_boot_wrapper); +# if JEMALLOC_WIN32_TLSGETVALUE2 + tgv2_mod = LoadLibraryA("api-ms-win-core-processthreads-l1-1-8.dll"); + if (tgv2_mod != NULL) { + tls_get_value2 = (TGV2)GetProcAddress(tgv2_mod, "TlsGetValue2"); + } +# endif tsd_booted = true; return false; } @@ -81,8 +115,7 @@ tsd_boot0(void) { JEMALLOC_ALWAYS_INLINE void tsd_boot1(void) { tsd_wrapper_t *wrapper; - wrapper = (tsd_wrapper_t *) - malloc_tsd_malloc(sizeof(tsd_wrapper_t)); + wrapper = (tsd_wrapper_t *)malloc_tsd_malloc(sizeof(tsd_wrapper_t)); if (wrapper == NULL) { malloc_write(": Error allocating TSD\n"); abort(); @@ -137,3 +170,69 @@ tsd_set(tsd_t *val) { } wrapper->initialized = true; } + +#else // defined(JEMALLOC_LEGACY_WINDOWS_SUPPORT) || !defined(_MSC_VER) + +# define JEMALLOC_TSD_TYPE_ATTR(type) __declspec(thread) type + +extern JEMALLOC_TSD_TYPE_ATTR(tsd_wrapper_t) tsd_wrapper_tls; +extern bool tsd_booted; + +/* Initialization/cleanup. */ +JEMALLOC_ALWAYS_INLINE bool +tsd_cleanup_wrapper(void) { + if (tsd_wrapper_tls.initialized) { + tsd_wrapper_tls.initialized = false; + tsd_cleanup(&tsd_wrapper_tls.val); + if (tsd_wrapper_tls.initialized) { + /* Trigger another cleanup round. */ + return true; + } + } + return false; +} + +/* Initialization/cleanup. */ +JEMALLOC_ALWAYS_INLINE bool +tsd_boot0(void) { + _malloc_tsd_cleanup_register(tsd_cleanup_wrapper); + tsd_booted = true; + return false; +} + +JEMALLOC_ALWAYS_INLINE void +tsd_boot1(void) { + /* Do nothing. */ +} + +JEMALLOC_ALWAYS_INLINE bool +tsd_boot(void) { + return tsd_boot0(); +} + +JEMALLOC_ALWAYS_INLINE bool +tsd_booted_get(void) { + return tsd_booted; +} + +JEMALLOC_ALWAYS_INLINE bool +tsd_get_allocates(void) { + return false; +} + +/* Get/set. */ +JEMALLOC_ALWAYS_INLINE tsd_t * +tsd_get(bool init) { + return &(tsd_wrapper_tls.val); +} + +JEMALLOC_ALWAYS_INLINE void +tsd_set(tsd_t *val) { + assert(tsd_booted); + if (likely(&(tsd_wrapper_tls.val) != val)) { + tsd_wrapper_tls.val = (*val); + } + tsd_wrapper_tls.initialized = true; +} + +#endif // defined(JEMALLOC_LEGACY_WINDOWS_SUPPORT) || !defined(_MSC_VER) diff --git a/dep/jemalloc/include/jemalloc/internal/typed_list.h b/dep/jemalloc/include/jemalloc/internal/typed_list.h index 6535055a1eca3..78704e485b362 100644 --- a/dep/jemalloc/include/jemalloc/internal/typed_list.h +++ b/dep/jemalloc/include/jemalloc/internal/typed_list.h @@ -6,50 +6,49 @@ * bit easier to use; it handles ql_elm_new calls and provides type safety. */ -#define TYPED_LIST(list_type, el_type, linkage) \ -typedef struct { \ - ql_head(el_type) head; \ -} list_type##_t; \ -static inline void \ -list_type##_init(list_type##_t *list) { \ - ql_new(&list->head); \ -} \ -static inline el_type * \ -list_type##_first(const list_type##_t *list) { \ - return ql_first(&list->head); \ -} \ -static inline el_type * \ -list_type##_last(const list_type##_t *list) { \ - return ql_last(&list->head, linkage); \ -} \ -static inline void \ -list_type##_append(list_type##_t *list, el_type *item) { \ - ql_elm_new(item, linkage); \ - ql_tail_insert(&list->head, item, linkage); \ -} \ -static inline void \ -list_type##_prepend(list_type##_t *list, el_type *item) { \ - ql_elm_new(item, linkage); \ - ql_head_insert(&list->head, item, linkage); \ -} \ -static inline void \ -list_type##_replace(list_type##_t *list, el_type *to_remove, \ - el_type *to_insert) { \ - ql_elm_new(to_insert, linkage); \ - ql_after_insert(to_remove, to_insert, linkage); \ - ql_remove(&list->head, to_remove, linkage); \ -} \ -static inline void \ -list_type##_remove(list_type##_t *list, el_type *item) { \ - ql_remove(&list->head, item, linkage); \ -} \ -static inline bool \ -list_type##_empty(list_type##_t *list) { \ - return ql_empty(&list->head); \ -} \ -static inline void \ -list_type##_concat(list_type##_t *list_a, list_type##_t *list_b) { \ - ql_concat(&list_a->head, &list_b->head, linkage); \ -} +#define TYPED_LIST(list_type, el_type, linkage) \ + typedef struct { \ + ql_head(el_type) head; \ + } list_type##_t; \ + static inline void list_type##_init(list_type##_t *list) { \ + ql_new(&list->head); \ + } \ + static inline el_type *list_type##_first(const list_type##_t *list) { \ + return ql_first(&list->head); \ + } \ + static inline el_type *list_type##_last(const list_type##_t *list) { \ + return ql_last(&list->head, linkage); \ + } \ + static inline el_type *list_type##_next( \ + const list_type##_t *list, el_type *item) { \ + return ql_next(&list->head, item, linkage); \ + } \ + static inline void list_type##_append( \ + list_type##_t *list, el_type *item) { \ + ql_elm_new(item, linkage); \ + ql_tail_insert(&list->head, item, linkage); \ + } \ + static inline void list_type##_prepend( \ + list_type##_t *list, el_type *item) { \ + ql_elm_new(item, linkage); \ + ql_head_insert(&list->head, item, linkage); \ + } \ + static inline void list_type##_replace( \ + list_type##_t *list, el_type *to_remove, el_type *to_insert) { \ + ql_elm_new(to_insert, linkage); \ + ql_after_insert(to_remove, to_insert, linkage); \ + ql_remove(&list->head, to_remove, linkage); \ + } \ + static inline void list_type##_remove( \ + list_type##_t *list, el_type *item) { \ + ql_remove(&list->head, item, linkage); \ + } \ + static inline bool list_type##_empty(list_type##_t *list) { \ + return ql_empty(&list->head); \ + } \ + static inline void list_type##_concat( \ + list_type##_t *list_a, list_type##_t *list_b) { \ + ql_concat(&list_a->head, &list_b->head, linkage); \ + } #endif /* JEMALLOC_INTERNAL_TYPED_LIST_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/util.h b/dep/jemalloc/include/jemalloc/internal/util.h index dcb1c0a5d62b9..ecfa76b82dafc 100644 --- a/dep/jemalloc/include/jemalloc/internal/util.h +++ b/dep/jemalloc/include/jemalloc/internal/util.h @@ -1,14 +1,17 @@ #ifndef JEMALLOC_INTERNAL_UTIL_H #define JEMALLOC_INTERNAL_UTIL_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_types.h" + #define UTIL_INLINE static inline /* Junk fill patterns. */ #ifndef JEMALLOC_ALLOC_JUNK -# define JEMALLOC_ALLOC_JUNK ((uint8_t)0xa5) +# define JEMALLOC_ALLOC_JUNK ((uint8_t)0xa5) #endif #ifndef JEMALLOC_FREE_JUNK -# define JEMALLOC_FREE_JUNK ((uint8_t)0x5a) +# define JEMALLOC_FREE_JUNK ((uint8_t)0x5a) #endif /* @@ -17,6 +20,9 @@ */ #define JEMALLOC_ARG_CONCAT(...) __VA_ARGS__ +/* Number of elements in a fixed-size array. */ +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + /* cpp macro definition stringification. */ #define STRINGIFY_HELPER(x) #x #define STRINGIFY(x) STRINGIFY_HELPER(x) @@ -26,22 +32,25 @@ * wherever the compiler fails to recognize that the variable is never used * uninitialized. */ -#define JEMALLOC_CC_SILENCE_INIT(v) = v +#define JEMALLOC_CC_SILENCE_INIT(...) = __VA_ARGS__ #ifdef __GNUC__ -# define likely(x) __builtin_expect(!!(x), 1) -# define unlikely(x) __builtin_expect(!!(x), 0) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) #else -# define likely(x) !!(x) -# define unlikely(x) !!(x) +# define likely(x) !!(x) +# define unlikely(x) !!(x) #endif -#if !defined(JEMALLOC_INTERNAL_UNREACHABLE) -# error JEMALLOC_INTERNAL_UNREACHABLE should have been defined by configure +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L +# include +#else +# if !defined(JEMALLOC_INTERNAL_UNREACHABLE) +# error JEMALLOC_INTERNAL_UNREACHABLE should have been defined by configure +# endif +# define unreachable() JEMALLOC_INTERNAL_UNREACHABLE() #endif -#define unreachable() JEMALLOC_INTERNAL_UNREACHABLE() - /* Set error code. */ UTIL_INLINE void set_errno(int errnum) { @@ -62,12 +71,29 @@ get_errno(void) { #endif } -JEMALLOC_ALWAYS_INLINE void -util_assume(bool b) { - if (!b) { - unreachable(); - } -} +#ifdef _MSC_VER +# define util_assume __assume +#elif defined(__clang__) \ + && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 6)) +# define util_assume __builtin_assume +#else +# define util_assume(expr) \ + do { \ + if (!(expr)) { \ + unreachable(); \ + } \ + } while (0) +#endif + +/* Allows compiler constant folding on inlined paths. */ +#if defined(__has_builtin) +# if __has_builtin(__builtin_constant_p) +# define util_compile_time_const(x) __builtin_constant_p(x) +# endif +#endif +#ifndef util_compile_time_const +# define util_compile_time_const(x) (false) +#endif /* ptr should be valid. */ JEMALLOC_ALWAYS_INLINE void @@ -107,17 +133,24 @@ util_prefetch_write(void *ptr) { JEMALLOC_ALWAYS_INLINE void util_prefetch_read_range(void *ptr, size_t sz) { for (size_t i = 0; i < sz; i += CACHELINE) { - util_prefetch_read((void *)((uintptr_t)ptr + i)); + util_prefetch_read((void *)((byte_t *)ptr + i)); } } JEMALLOC_ALWAYS_INLINE void util_prefetch_write_range(void *ptr, size_t sz) { for (size_t i = 0; i < sz; i += CACHELINE) { - util_prefetch_write((void *)((uintptr_t)ptr + i)); + util_prefetch_write((void *)((byte_t *)ptr + i)); } } #undef UTIL_INLINE +/* + * Reads the settings in the following format: + * key1-key2:value|key3-key4:value|... + * Note it does not handle the ending '\0'. + */ +bool multi_setting_parse_next(const char **setting_segment_cur, + size_t *len_left, size_t *key_start, size_t *key_end, size_t *value); #endif /* JEMALLOC_INTERNAL_UTIL_H */ diff --git a/dep/jemalloc/include/jemalloc/internal/witness.h b/dep/jemalloc/include/jemalloc/internal/witness.h index e81b9a0069c04..0a426ff567ad0 100644 --- a/dep/jemalloc/include/jemalloc/internal/witness.h +++ b/dep/jemalloc/include/jemalloc/internal/witness.h @@ -1,6 +1,8 @@ #ifndef JEMALLOC_INTERNAL_WITNESS_H #define JEMALLOC_INTERNAL_WITNESS_H +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/assert.h" #include "jemalloc/internal/ql.h" /******************************************************************************/ @@ -44,7 +46,7 @@ enum witness_rank_e { WITNESS_RANK_DECAY = WITNESS_RANK_CORE, WITNESS_RANK_TCACHE_QL, - WITNESS_RANK_SEC_SHARD, + WITNESS_RANK_SEC_BIN, WITNESS_RANK_EXTENT_GROW, WITNESS_RANK_HPA_SHARD_GROW = WITNESS_RANK_EXTENT_GROW, @@ -63,7 +65,7 @@ enum witness_rank_e { WITNESS_RANK_ARENA_LARGE, WITNESS_RANK_HOOK, - WITNESS_RANK_LEAF=0x1000, + WITNESS_RANK_LEAF = 0x1000, WITNESS_RANK_BIN = WITNESS_RANK_LEAF, WITNESS_RANK_ARENA_STATS = WITNESS_RANK_LEAF, WITNESS_RANK_COUNTER_ACCUM = WITNESS_RANK_LEAF, @@ -75,6 +77,7 @@ enum witness_rank_e { WITNESS_RANK_PROF_RECENT_ALLOC = WITNESS_RANK_LEAF, WITNESS_RANK_PROF_STATS = WITNESS_RANK_LEAF, WITNESS_RANK_PROF_THREAD_ACTIVE_INIT = WITNESS_RANK_LEAF, + WITNESS_RANK_THREAD_EVENTS_USER = WITNESS_RANK_LEAF, }; typedef enum witness_rank_e witness_rank_t; @@ -82,38 +85,43 @@ typedef enum witness_rank_e witness_rank_t; /* PER-WITNESS DATA */ /******************************************************************************/ #if defined(JEMALLOC_DEBUG) -# define WITNESS_INITIALIZER(name, rank) {name, rank, NULL, NULL, {NULL, NULL}} +# define WITNESS_INITIALIZER(name, rank) \ + { \ + name, rank, NULL, NULL, { \ + NULL, NULL \ + } \ + } #else -# define WITNESS_INITIALIZER(name, rank) +# define WITNESS_INITIALIZER(name, rank) #endif typedef struct witness_s witness_t; typedef ql_head(witness_t) witness_list_t; -typedef int witness_comp_t (const witness_t *, void *, const witness_t *, - void *); +typedef int witness_comp_t( + const witness_t *, void *, const witness_t *, void *); struct witness_s { /* Name, used for printing lock order reversal messages. */ - const char *name; + const char *name; /* * Witness rank, where 0 is lowest and WITNESS_RANK_LEAF is highest. * Witnesses must be acquired in order of increasing rank. */ - witness_rank_t rank; + witness_rank_t rank; /* * If two witnesses are of equal rank and they have the samp comp * function pointer, it is called as a last attempt to differentiate * between witnesses of equal rank. */ - witness_comp_t *comp; + witness_comp_t *comp; /* Opaque data, passed to comp(). */ - void *opaque; + void *opaque; /* Linkage for thread's currently owned locks. */ - ql_elm(witness_t) link; + ql_elm(witness_t) link; }; /******************************************************************************/ @@ -122,10 +130,11 @@ struct witness_s { typedef struct witness_tsd_s witness_tsd_t; struct witness_tsd_s { witness_list_t witnesses; - bool forking; + bool forking; }; -#define WITNESS_TSD_INITIALIZER { ql_head_initializer(witnesses), false } +#define WITNESS_TSD_INITIALIZER \ + { ql_head_initializer(witnesses), false } #define WITNESS_TSDN_NULL ((witness_tsdn_t *)0) /******************************************************************************/ @@ -158,17 +167,17 @@ witness_tsdn_tsd(witness_tsdn_t *witness_tsdn) { void witness_init(witness_t *witness, const char *name, witness_rank_t rank, witness_comp_t *comp, void *opaque); -typedef void (witness_lock_error_t)(const witness_list_t *, const witness_t *); +typedef void(witness_lock_error_t)(const witness_list_t *, const witness_t *); extern witness_lock_error_t *JET_MUTABLE witness_lock_error; -typedef void (witness_owner_error_t)(const witness_t *); +typedef void(witness_owner_error_t)(const witness_t *); extern witness_owner_error_t *JET_MUTABLE witness_owner_error; -typedef void (witness_not_owner_error_t)(const witness_t *); +typedef void(witness_not_owner_error_t)(const witness_t *); extern witness_not_owner_error_t *JET_MUTABLE witness_not_owner_error; -typedef void (witness_depth_error_t)(const witness_list_t *, - witness_rank_t rank_inclusive, unsigned depth); +typedef void(witness_depth_error_t)( + const witness_list_t *, witness_rank_t rank_inclusive, unsigned depth); extern witness_depth_error_t *JET_MUTABLE witness_depth_error; void witnesses_cleanup(witness_tsd_t *witness_tsd); @@ -180,12 +189,12 @@ void witness_postfork_child(witness_tsd_t *witness_tsd); static inline bool witness_owner(witness_tsd_t *witness_tsd, const witness_t *witness) { witness_list_t *witnesses; - witness_t *w; + witness_t *w; cassert(config_debug); witnesses = &witness_tsd->witnesses; - ql_foreach(w, witnesses, link) { + ql_foreach (w, witnesses, link) { if (w == witness) { return true; } @@ -217,11 +226,11 @@ witness_assert_owner(witness_tsdn_t *witness_tsdn, const witness_t *witness) { } static inline void -witness_assert_not_owner(witness_tsdn_t *witness_tsdn, - const witness_t *witness) { - witness_tsd_t *witness_tsd; +witness_assert_not_owner( + witness_tsdn_t *witness_tsdn, const witness_t *witness) { + witness_tsd_t *witness_tsd; witness_list_t *witnesses; - witness_t *w; + witness_t *w; if (!config_debug) { return; @@ -236,7 +245,7 @@ witness_assert_not_owner(witness_tsdn_t *witness_tsdn, } witnesses = &witness_tsd->witnesses; - ql_foreach(w, witnesses, link) { + ql_foreach (w, witnesses, link) { if (w == witness) { witness_not_owner_error(witness); } @@ -245,9 +254,9 @@ witness_assert_not_owner(witness_tsdn_t *witness_tsdn, /* Returns depth. Not intended for direct use. */ static inline unsigned -witness_depth_to_rank(witness_list_t *witnesses, witness_rank_t rank_inclusive) -{ - unsigned d = 0; +witness_depth_to_rank( + witness_list_t *witnesses, witness_rank_t rank_inclusive) { + unsigned d = 0; witness_t *w = ql_last(witnesses, link); if (w != NULL) { @@ -270,7 +279,7 @@ witness_assert_depth_to_rank(witness_tsdn_t *witness_tsdn, } witness_list_t *witnesses = &witness_tsdn_tsd(witness_tsdn)->witnesses; - unsigned d = witness_depth_to_rank(witnesses, rank_inclusive); + unsigned d = witness_depth_to_rank(witnesses, rank_inclusive); if (d != depth) { witness_depth_error(witnesses, rank_inclusive, depth); @@ -288,14 +297,14 @@ witness_assert_lockless(witness_tsdn_t *witness_tsdn) { } static inline void -witness_assert_positive_depth_to_rank(witness_tsdn_t *witness_tsdn, - witness_rank_t rank_inclusive) { +witness_assert_positive_depth_to_rank( + witness_tsdn_t *witness_tsdn, witness_rank_t rank_inclusive) { if (!config_debug || witness_tsdn_null(witness_tsdn)) { return; } witness_list_t *witnesses = &witness_tsdn_tsd(witness_tsdn)->witnesses; - unsigned d = witness_depth_to_rank(witnesses, rank_inclusive); + unsigned d = witness_depth_to_rank(witnesses, rank_inclusive); if (d == 0) { witness_depth_error(witnesses, rank_inclusive, 1); @@ -304,9 +313,9 @@ witness_assert_positive_depth_to_rank(witness_tsdn_t *witness_tsdn, static inline void witness_lock(witness_tsdn_t *witness_tsdn, witness_t *witness) { - witness_tsd_t *witness_tsd; + witness_tsd_t *witness_tsd; witness_list_t *witnesses; - witness_t *w; + witness_t *w; if (!config_debug) { return; @@ -331,9 +340,9 @@ witness_lock(witness_tsdn_t *witness_tsdn, witness_t *witness) { } else if (w->rank > witness->rank) { /* Not forking, rank order reversal. */ witness_lock_error(witnesses, witness); - } else if (w->rank == witness->rank && (w->comp == NULL || w->comp != - witness->comp || w->comp(w, w->opaque, witness, witness->opaque) > - 0)) { + } else if (w->rank == witness->rank + && (w->comp == NULL || w->comp != witness->comp + || w->comp(w, w->opaque, witness, witness->opaque) > 0)) { /* * Missing/incompatible comparison function, or comparison * function indicates rank order reversal. @@ -341,13 +350,16 @@ witness_lock(witness_tsdn_t *witness_tsdn, witness_t *witness) { witness_lock_error(witnesses, witness); } + /* Suppress spurious warning from static analysis */ + assert( + ql_empty(witnesses) || qr_prev(ql_first(witnesses), link) != NULL); ql_elm_new(witness, link); ql_tail_insert(witnesses, witness, link); } static inline void witness_unlock(witness_tsdn_t *witness_tsdn, witness_t *witness) { - witness_tsd_t *witness_tsd; + witness_tsd_t *witness_tsd; witness_list_t *witnesses; if (!config_debug) { diff --git a/dep/jemalloc/include/jemalloc/jemalloc.h.in b/dep/jemalloc/include/jemalloc/jemalloc.h.in index 6139d3e79c293..29f9693add600 100644 --- a/dep/jemalloc/include/jemalloc/jemalloc.h.in +++ b/dep/jemalloc/include/jemalloc/jemalloc.h.in @@ -1,8 +1,6 @@ #ifndef JEMALLOC_H_ #define JEMALLOC_H_ -#ifdef __cplusplus -extern "C" { -#endif +#pragma GCC system_header /* jemalloc_defs.h */ @@ -27,12 +25,16 @@ extern "C" { /* Defined if cold attribute is supported. */ #cmakedefine JEMALLOC_HAVE_ATTR_COLD +/* Defined if deprecated attribute is supported. */ +#cmakedefine JEMALLOC_HAVE_ATTR_DEPRECATED + /* * Define overrides for non-standard allocator-related functions if they are * present on the system. */ #cmakedefine JEMALLOC_OVERRIDE_MEMALIGN #cmakedefine JEMALLOC_OVERRIDE_VALLOC +#cmakedefine JEMALLOC_OVERRIDE_PVALLOC /* * At least Linux omits the "const" in: @@ -50,6 +52,12 @@ extern "C" { */ #cmakedefine JEMALLOC_USE_CXX_THROW +/* + * If undefined, disables reading configuration from environment variable or file + */ +#cmakedefine JEMALLOC_CONFIG_ENV +#cmakedefine JEMALLOC_CONFIG_FILE + #ifdef _MSC_VER # ifdef _WIN64 # define LG_SIZEOF_PTR_WIN 3 @@ -73,6 +81,8 @@ extern "C" { # define je_calloc @JEMALLOC_PREFIX@calloc # define je_dallocx @JEMALLOC_PREFIX@dallocx # define je_free @JEMALLOC_PREFIX@free +# define je_free_sized @JEMALLOC_PREFIX@free_sized +# define je_free_aligned_sized @JEMALLOC_PREFIX@free_aligned_sized # define je_mallctl @JEMALLOC_PREFIX@mallctl # define je_mallctlbymib @JEMALLOC_PREFIX@mallctlbymib # define je_mallctlnametomib @JEMALLOC_PREFIX@mallctlnametomib @@ -93,6 +103,7 @@ extern "C" { # define je_xallocx @JEMALLOC_PREFIX@xallocx # define je_memalign @JEMALLOC_PREFIX@memalign # define je_valloc @JEMALLOC_PREFIX@valloc +# define je_pvalloc @JEMALLOC_PREFIX@pvalloc # define je_malloc_size @JEMALLOC_PREFIX@malloc_size #endif @@ -152,7 +163,7 @@ extern "C" { #define MALLCTL_ARENAS_DESTROYED 4097 #if defined(__cplusplus) && defined(JEMALLOC_USE_CXX_THROW) -# define JEMALLOC_CXX_THROW throw() +# define JEMALLOC_CXX_THROW noexcept (true) #else # define JEMALLOC_CXX_THROW #endif @@ -186,6 +197,7 @@ extern "C" { # define JEMALLOC_ALLOCATOR # endif # define JEMALLOC_COLD +# define JEMALLOC_WARN_ON_USAGE(warning_message) #elif defined(JEMALLOC_HAVE_ATTR) # define JEMALLOC_ATTR(s) __attribute__((s)) # define JEMALLOC_ALIGNED(s) JEMALLOC_ATTR(aligned(s)) @@ -226,6 +238,11 @@ extern "C" { # else # define JEMALLOC_COLD # endif +# ifdef JEMALLOC_HAVE_ATTR_DEPRECATED +# define JEMALLOC_WARN_ON_USAGE(warning_message) JEMALLOC_ATTR(deprecated(warning_message)) +# else +# define JEMALLOC_WARN_ON_USAGE(warning_message) +# endif #else # define JEMALLOC_ATTR(s) # define JEMALLOC_ALIGNED(s) @@ -240,9 +257,10 @@ extern "C" { # define JEMALLOC_RESTRICT_RETURN # define JEMALLOC_ALLOCATOR # define JEMALLOC_COLD +# define JEMALLOC_WARN_ON_USAGE(warning_message) #endif -#if (defined(__APPLE__) || defined(__FreeBSD__)) && !defined(JEMALLOC_NO_RENAME) +#if (defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || (defined(__linux__) && !defined(__GLIBC__))) && !defined(JEMALLOC_NO_RENAME) # define JEMALLOC_SYS_NOTHROW #else # define JEMALLOC_SYS_NOTHROW JEMALLOC_NOTHROW @@ -255,7 +273,12 @@ extern "C" { * of namespace management, and should be omitted in application code unless * JEMALLOC_NO_DEMANGLE is defined (see jemalloc_mangle@install_suffix@.h). */ +#ifdef __cplusplus +extern "C" { +#endif + extern JEMALLOC_EXPORT const char *@je_@malloc_conf; +extern JEMALLOC_EXPORT const char *@je_@malloc_conf_2_conf_harder; extern JEMALLOC_EXPORT void (*@je_@malloc_message)(void *cbopaque, const char *s); @@ -277,6 +300,9 @@ JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN JEMALLOC_CXX_THROW JEMALLOC_ALLOC_SIZE(2); JEMALLOC_EXPORT void JEMALLOC_SYS_NOTHROW @je_@free(void *ptr) JEMALLOC_CXX_THROW; +JEMALLOC_EXPORT void JEMALLOC_NOTHROW @je_@free_sized(void *ptr, size_t size); +JEMALLOC_EXPORT void JEMALLOC_NOTHROW @je_@free_aligned_sized( + void *ptr, size_t alignment, size_t size); JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW *@je_@mallocx(size_t size, int flags) @@ -322,8 +348,22 @@ JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN JEMALLOC_ATTR(malloc); #endif +#ifdef JEMALLOC_OVERRIDE_PVALLOC +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN + void JEMALLOC_SYS_NOTHROW *@je_@pvalloc(size_t size) JEMALLOC_CXX_THROW + JEMALLOC_ATTR(malloc); +#endif + +#ifdef __cplusplus +} +#endif + /* jemalloc_typedefs.h */ +#ifdef __cplusplus +extern "C" { +#endif + typedef struct extent_hooks_s extent_hooks_t; /* @@ -402,6 +442,10 @@ struct extent_hooks_s { extent_merge_t *merge; }; +#ifdef __cplusplus +} +#endif + /* jemalloc_mangle.h */ /* @@ -419,6 +463,8 @@ struct extent_hooks_s { # define calloc je_calloc # define dallocx je_dallocx # define free je_free +# define free_sized je_free_sized +# define free_aligned_sized je_free_aligned_sized # define mallctl je_mallctl # define mallctlbymib je_mallctlbymib # define mallctlnametomib je_mallctlnametomib @@ -439,6 +485,7 @@ struct extent_hooks_s { # define xallocx je_xallocx # define memalign je_memalign # define valloc je_valloc +# define pvalloc je_pvalloc # define malloc_size je_malloc_size #endif @@ -454,12 +501,14 @@ struct extent_hooks_s { # undef je_calloc # undef je_dallocx # undef je_free +# undef je_free_sized +# undef je_free_aligned_sized # undef je_mallctl # undef je_mallctlbymib # undef je_mallctlnametomib # undef je_malloc # undef je_malloc_conf -# undef malloc_conf_2_conf_harder +# undef je_malloc_conf_2_conf_harder # undef je_malloc_message # undef je_malloc_stats_print # undef je_malloc_usable_size @@ -474,10 +523,8 @@ struct extent_hooks_s { # undef je_xallocx # undef je_memalign # undef je_valloc +# undef je_pvalloc # undef je_malloc_size #endif -#ifdef __cplusplus -} -#endif #endif /* JEMALLOC_H_ */ diff --git a/dep/jemalloc/src/arena.c b/dep/jemalloc/src/arena.c index 857b27c52fb09..e43aabe4c5975 100644 --- a/dep/jemalloc/src/arena.c +++ b/dep/jemalloc/src/arena.c @@ -18,16 +18,11 @@ JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS /* Data. */ /* - * Define names for both unininitialized and initialized phases, so that + * Define names for both uninitialized and initialized phases, so that * options and mallctl processing are straightforward. */ -const char *percpu_arena_mode_names[] = { - "percpu", - "phycpu", - "disabled", - "percpu", - "phycpu" -}; +const char *const percpu_arena_mode_names[] = { + "percpu", "phycpu", "disabled", "percpu", "phycpu"}; percpu_arena_mode_t opt_percpu_arena = PERCPU_ARENA_DEFAULT; ssize_t opt_dirty_decay_ms = DIRTY_DECAY_MS_DEFAULT; @@ -36,22 +31,31 @@ ssize_t opt_muzzy_decay_ms = MUZZY_DECAY_MS_DEFAULT; static atomic_zd_t dirty_decay_ms_default; static atomic_zd_t muzzy_decay_ms_default; -emap_t arena_emap_global; -pa_central_t arena_pa_central_global; +emap_t arena_emap_global; +static pa_central_t arena_pa_central_global; div_info_t arena_binind_div_info[SC_NBINS]; size_t opt_oversize_threshold = OVERSIZE_THRESHOLD_DEFAULT; size_t oversize_threshold = OVERSIZE_THRESHOLD_DEFAULT; -uint32_t arena_bin_offsets[SC_NBINS]; +uint32_t arena_bin_offsets[SC_NBINS]; static unsigned nbins_total; -static unsigned huge_arena_ind; +/* + * a0 is used to handle huge requests before malloc init completes. After + * that, the huge_arena_ind is updated to point to the actual huge arena, + * which is the last one of the auto arenas. + */ +unsigned huge_arena_ind = 0; +bool opt_huge_arena_pac_thp = false; +pac_thp_t huge_arena_pac_thp = {.thp_madvise = false, + .auto_thp_switched = false, + .n_thp_lazy = ATOMIC_INIT(0)}; const arena_config_t arena_config_default = { - /* .extent_hooks = */ (extent_hooks_t *)&ehooks_default_extent_hooks, - /* .metadata_use_hooks = */ true, + /* .extent_hooks = */ (extent_hooks_t *)&ehooks_default_extent_hooks, + /* .metadata_use_hooks = */ true, }; /******************************************************************************/ @@ -60,13 +64,10 @@ const arena_config_t arena_config_default = { * definition. */ -static bool arena_decay_dirty(tsdn_t *tsdn, arena_t *arena, - bool is_background_thread, bool all); -static void arena_bin_lower_slab(tsdn_t *tsdn, arena_t *arena, edata_t *slab, - bin_t *bin); -static void -arena_maybe_do_deferred_work(tsdn_t *tsdn, arena_t *arena, decay_t *decay, - size_t npages_new); +static bool arena_decay_dirty( + tsdn_t *tsdn, arena_t *arena, bool is_background_thread, bool all); +static void arena_maybe_do_deferred_work( + tsdn_t *tsdn, arena_t *arena, decay_t *decay, size_t npages_new); /******************************************************************************/ @@ -85,15 +86,17 @@ void arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, const char **dss, ssize_t *dirty_decay_ms, ssize_t *muzzy_decay_ms, size_t *nactive, size_t *ndirty, size_t *nmuzzy, arena_stats_t *astats, - bin_stats_data_t *bstats, arena_stats_large_t *lstats, - pac_estats_t *estats, hpa_shard_stats_t *hpastats, sec_stats_t *secstats) { + bin_stats_data_t *bstats, arena_stats_large_t *lstats, pac_estats_t *estats, + hpa_shard_stats_t *hpastats) { cassert(config_stats); arena_basic_stats_merge(tsdn, arena, nthreads, dss, dirty_decay_ms, muzzy_decay_ms, nactive, ndirty, nmuzzy); - size_t base_allocated, base_resident, base_mapped, metadata_thp; - base_stats_get(tsdn, arena->base, &base_allocated, &base_resident, + size_t base_allocated, base_edata_allocated, base_rtree_allocated, + base_resident, base_mapped, metadata_thp; + base_stats_get(tsdn, arena->base, &base_allocated, + &base_edata_allocated, &base_rtree_allocated, &base_resident, &base_mapped, &metadata_thp); size_t pac_mapped_sz = pac_mapped(&arena->pa_shard.pac); astats->mapped += base_mapped + pac_mapped_sz; @@ -102,27 +105,32 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); astats->base += base_allocated; + astats->metadata_edata += base_edata_allocated; + astats->metadata_rtree += base_rtree_allocated; atomic_load_add_store_zu(&astats->internal, arena_internal_get(arena)); astats->metadata_thp += metadata_thp; for (szind_t i = 0; i < SC_NSIZES - SC_NBINS; i++) { - uint64_t nmalloc = locked_read_u64(tsdn, - LOCKEDINT_MTX(arena->stats.mtx), - &arena->stats.lstats[i].nmalloc); - locked_inc_u64_unsynchronized(&lstats[i].nmalloc, nmalloc); - astats->nmalloc_large += nmalloc; - + /* ndalloc should be read before nmalloc, + * since otherwise it is possible for ndalloc to be incremented, + * and the following can become true: ndalloc > nmalloc */ uint64_t ndalloc = locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), &arena->stats.lstats[i].ndalloc); locked_inc_u64_unsynchronized(&lstats[i].ndalloc, ndalloc); astats->ndalloc_large += ndalloc; + uint64_t nmalloc = locked_read_u64(tsdn, + LOCKEDINT_MTX(arena->stats.mtx), + &arena->stats.lstats[i].nmalloc); + locked_inc_u64_unsynchronized(&lstats[i].nmalloc, nmalloc); + astats->nmalloc_large += nmalloc; + uint64_t nrequests = locked_read_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), &arena->stats.lstats[i].nrequests); - locked_inc_u64_unsynchronized(&lstats[i].nrequests, - nmalloc + nrequests); + locked_inc_u64_unsynchronized( + &lstats[i].nrequests, nmalloc + nrequests); astats->nrequests_large += nmalloc + nrequests; /* nfill == nmalloc for large currently. */ @@ -139,12 +147,17 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, assert(nmalloc - ndalloc <= SIZE_T_MAX); size_t curlextents = (size_t)(nmalloc - ndalloc); lstats[i].curlextents += curlextents; - astats->allocated_large += - curlextents * sz_index2size(SC_NBINS + i); + + uint64_t active_bytes = locked_read_u64(tsdn, + LOCKEDINT_MTX(arena->stats.mtx), + &arena->stats.lstats[i].active_bytes); + locked_inc_u64_unsynchronized( + &lstats[i].active_bytes, active_bytes); + astats->allocated_large += active_bytes; } pa_shard_stats_merge(tsdn, &arena->pa_shard, &astats->pa_shard_stats, - estats, hpastats, secstats, &astats->resident); + estats, hpastats, &astats->resident); LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); @@ -153,16 +166,19 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, astats->tcache_stashed_bytes = 0; malloc_mutex_lock(tsdn, &arena->tcache_ql_mtx); cache_bin_array_descriptor_t *descriptor; - ql_foreach(descriptor, &arena->cache_bin_array_descriptor_ql, link) { - for (szind_t i = 0; i < nhbins; i++) { + ql_foreach (descriptor, &arena->cache_bin_array_descriptor_ql, link) { + for (szind_t i = 0; i < TCACHE_NBINS_MAX; i++) { cache_bin_t *cache_bin = &descriptor->bins[i]; - cache_bin_sz_t ncached, nstashed; - cache_bin_nitems_get_remote(cache_bin, - &tcache_bin_info[i], &ncached, &nstashed); + if (cache_bin_disabled(cache_bin)) { + continue; + } + cache_bin_sz_t ncached, nstashed; + cache_bin_nitems_get_remote( + cache_bin, &ncached, &nstashed); astats->tcache_bytes += ncached * sz_index2size(i); - astats->tcache_stashed_bytes += nstashed * - sz_index2size(i); + astats->tcache_stashed_bytes += nstashed + * sz_index2size(i); } } malloc_mutex_prof_read(tsdn, @@ -170,19 +186,18 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, &arena->tcache_ql_mtx); malloc_mutex_unlock(tsdn, &arena->tcache_ql_mtx); -#define READ_ARENA_MUTEX_PROF_DATA(mtx, ind) \ - malloc_mutex_lock(tsdn, &arena->mtx); \ - malloc_mutex_prof_read(tsdn, &astats->mutex_prof_data[ind], \ - &arena->mtx); \ - malloc_mutex_unlock(tsdn, &arena->mtx); +#define READ_ARENA_MUTEX_PROF_DATA(mtx, ind) \ + malloc_mutex_lock(tsdn, &arena->mtx); \ + malloc_mutex_prof_read( \ + tsdn, &astats->mutex_prof_data[ind], &arena->mtx); \ + malloc_mutex_unlock(tsdn, &arena->mtx); /* Gather per arena mutex profiling data. */ READ_ARENA_MUTEX_PROF_DATA(large_mtx, arena_prof_mutex_large); - READ_ARENA_MUTEX_PROF_DATA(base->mtx, - arena_prof_mutex_base); + READ_ARENA_MUTEX_PROF_DATA(base->mtx, arena_prof_mutex_base); #undef READ_ARENA_MUTEX_PROF_DATA - pa_shard_mtx_stats_read(tsdn, &arena->pa_shard, - astats->mutex_prof_data); + pa_shard_mtx_stats_read( + tsdn, &arena->pa_shard, astats->mutex_prof_data); nstime_copy(&astats->uptime, &arena->create_time); nstime_update(&astats->uptime); @@ -190,32 +205,33 @@ arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, for (szind_t i = 0; i < SC_NBINS; i++) { for (unsigned j = 0; j < bin_infos[i].n_shards; j++) { - bin_stats_merge(tsdn, &bstats[i], - arena_get_bin(arena, i, j)); + bin_stats_merge( + tsdn, &bstats[i], arena_get_bin(arena, i, j)); } } } static void -arena_background_thread_inactivity_check(tsdn_t *tsdn, arena_t *arena, - bool is_background_thread) { +arena_background_thread_inactivity_check( + tsdn_t *tsdn, arena_t *arena, bool is_background_thread) { if (!background_thread_enabled() || is_background_thread) { return; } - background_thread_info_t *info = - arena_background_thread_info_get(arena); + background_thread_info_t *info = arena_background_thread_info_get( + arena); if (background_thread_indefinite_sleep(info)) { - arena_maybe_do_deferred_work(tsdn, arena, - &arena->pa_shard.pac.decay_dirty, 0); + arena_maybe_do_deferred_work( + tsdn, arena, &arena->pa_shard.pac.decay_dirty, 0); } } /* * React to deferred work generated by a PAI function. */ -void arena_handle_deferred_work(tsdn_t *tsdn, arena_t *arena) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); +void +arena_handle_deferred_work(tsdn_t *tsdn, arena_t *arena) { + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); if (decay_immediately(&arena->pa_shard.pac.decay_dirty)) { arena_decay_dirty(tsdn, arena, false, true); @@ -223,133 +239,105 @@ void arena_handle_deferred_work(tsdn_t *tsdn, arena_t *arena) { arena_background_thread_inactivity_check(tsdn, arena, false); } -static void * -arena_slab_reg_alloc(edata_t *slab, const bin_info_t *bin_info) { - void *ret; - slab_data_t *slab_data = edata_slab_data_get(slab); - size_t regind; - - assert(edata_nfree_get(slab) > 0); - assert(!bitmap_full(slab_data->bitmap, &bin_info->bitmap_info)); - - regind = bitmap_sfu(slab_data->bitmap, &bin_info->bitmap_info); - ret = (void *)((uintptr_t)edata_addr_get(slab) + - (uintptr_t)(bin_info->reg_size * regind)); - edata_nfree_dec(slab); - return ret; -} - -static void -arena_slab_reg_alloc_batch(edata_t *slab, const bin_info_t *bin_info, - unsigned cnt, void** ptrs) { - slab_data_t *slab_data = edata_slab_data_get(slab); - - assert(edata_nfree_get(slab) >= cnt); - assert(!bitmap_full(slab_data->bitmap, &bin_info->bitmap_info)); - -#if (! defined JEMALLOC_INTERNAL_POPCOUNTL) || (defined BITMAP_USE_TREE) - for (unsigned i = 0; i < cnt; i++) { - size_t regind = bitmap_sfu(slab_data->bitmap, - &bin_info->bitmap_info); - *(ptrs + i) = (void *)((uintptr_t)edata_addr_get(slab) + - (uintptr_t)(bin_info->reg_size * regind)); - } -#else - unsigned group = 0; - bitmap_t g = slab_data->bitmap[group]; - unsigned i = 0; - while (i < cnt) { - while (g == 0) { - g = slab_data->bitmap[++group]; - } - size_t shift = group << LG_BITMAP_GROUP_NBITS; - size_t pop = popcount_lu(g); - if (pop > (cnt - i)) { - pop = cnt - i; - } - - /* - * Load from memory locations only once, outside the - * hot loop below. - */ - uintptr_t base = (uintptr_t)edata_addr_get(slab); - uintptr_t regsize = (uintptr_t)bin_info->reg_size; - while (pop--) { - size_t bit = cfs_lu(&g); - size_t regind = shift + bit; - *(ptrs + i) = (void *)(base + regsize * regind); - - i++; - } - slab_data->bitmap[group] = g; - } -#endif - edata_nfree_sub(slab, cnt); -} - static void arena_large_malloc_stats_update(tsdn_t *tsdn, arena_t *arena, size_t usize) { - szind_t index, hindex; - cassert(config_stats); + szind_t index = sz_size2index(usize); + /* This only occurs when we have a sampled small allocation */ if (usize < SC_LARGE_MINCLASS) { - usize = SC_LARGE_MINCLASS; + assert(index < SC_NBINS); + assert(usize >= PAGE && usize % PAGE == 0); + bin_t *bin = arena_get_bin(arena, index, /* binshard */ 0); + malloc_mutex_lock(tsdn, &bin->lock); + bin->stats.nmalloc++; + malloc_mutex_unlock(tsdn, &bin->lock); + } else { + assert(index >= SC_NBINS); + szind_t hindex = index - SC_NBINS; + LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); + locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), + &arena->stats.lstats[hindex].nmalloc, 1); + locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), + &arena->stats.lstats[hindex].active_bytes, usize); + LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); } - index = sz_size2index(usize); - hindex = (index >= SC_NBINS) ? index - SC_NBINS : 0; - - locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), - &arena->stats.lstats[hindex].nmalloc, 1); } static void arena_large_dalloc_stats_update(tsdn_t *tsdn, arena_t *arena, size_t usize) { - szind_t index, hindex; - cassert(config_stats); + szind_t index = sz_size2index(usize); + /* This only occurs when we have a sampled small allocation */ if (usize < SC_LARGE_MINCLASS) { - usize = SC_LARGE_MINCLASS; + assert(index < SC_NBINS); + assert(usize >= PAGE && usize % PAGE == 0); + bin_t *bin = arena_get_bin(arena, index, /* binshard */ 0); + malloc_mutex_lock(tsdn, &bin->lock); + bin->stats.ndalloc++; + malloc_mutex_unlock(tsdn, &bin->lock); + } else { + assert(index >= SC_NBINS); + szind_t hindex = index - SC_NBINS; + LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); + locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), + &arena->stats.lstats[hindex].ndalloc, 1); + locked_dec_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), + &arena->stats.lstats[hindex].active_bytes, usize); + LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); } - index = sz_size2index(usize); - hindex = (index >= SC_NBINS) ? index - SC_NBINS : 0; - - locked_inc_u64(tsdn, LOCKEDINT_MTX(arena->stats.mtx), - &arena->stats.lstats[hindex].ndalloc, 1); } static void -arena_large_ralloc_stats_update(tsdn_t *tsdn, arena_t *arena, size_t oldusize, - size_t usize) { +arena_large_ralloc_stats_update( + tsdn_t *tsdn, arena_t *arena, size_t oldusize, size_t usize) { arena_large_malloc_stats_update(tsdn, arena, usize); arena_large_dalloc_stats_update(tsdn, arena, oldusize); } edata_t * -arena_extent_alloc_large(tsdn_t *tsdn, arena_t *arena, size_t usize, - size_t alignment, bool zero) { - bool deferred_work_generated = false; +arena_extent_alloc_large( + tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, bool zero) { + bool deferred_work_generated = false; szind_t szind = sz_size2index(usize); - size_t esize = usize + sz_large_pad; + size_t esize = usize + sz_large_pad; + + bool guarded = san_large_extent_decide_guard( + tsdn, arena_get_ehooks(arena), esize, alignment); - bool guarded = san_large_extent_decide_guard(tsdn, - arena_get_ehooks(arena), esize, alignment); + /* + * - if usize >= opt_calloc_madvise_threshold, + * - pa_alloc(..., zero_override = zero, ...) + * - otherwise, + * - pa_alloc(..., zero_override = false, ...) + * - use memset() to zero out memory if zero == true. + */ + bool zero_override = zero && (usize >= opt_calloc_madvise_threshold); edata_t *edata = pa_alloc(tsdn, &arena->pa_shard, esize, alignment, - /* slab */ false, szind, zero, guarded, &deferred_work_generated); - assert(deferred_work_generated == false); - - if (edata != NULL) { - if (config_stats) { - LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); - arena_large_malloc_stats_update(tsdn, arena, usize); - LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); - } + /* slab */ false, szind, zero_override, guarded, + &deferred_work_generated); + + if (edata == NULL) { + return NULL; } - if (edata != NULL && sz_large_pad != 0) { + if (config_stats) { + arena_large_malloc_stats_update(tsdn, arena, usize); + } + if (sz_large_pad != 0) { arena_cache_oblivious_randomize(tsdn, arena, edata, alignment); } + /* + * This branch should be put after the randomization so that the addr + * returned by edata_addr_get() has already be randomized, + * if cache_oblivious is enabled. + */ + if (zero && !zero_override && !edata_zeroed_get(edata)) { + void *addr = edata_addr_get(edata); + size_t usize = edata_usize_get(edata); + memset(addr, 0, usize); + } return edata; } @@ -357,34 +345,28 @@ arena_extent_alloc_large(tsdn_t *tsdn, arena_t *arena, size_t usize, void arena_extent_dalloc_large_prep(tsdn_t *tsdn, arena_t *arena, edata_t *edata) { if (config_stats) { - LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); - arena_large_dalloc_stats_update(tsdn, arena, - edata_usize_get(edata)); - LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); + arena_large_dalloc_stats_update( + tsdn, arena, edata_usize_get(edata)); } } void -arena_extent_ralloc_large_shrink(tsdn_t *tsdn, arena_t *arena, edata_t *edata, - size_t oldusize) { +arena_extent_ralloc_large_shrink( + tsdn_t *tsdn, arena_t *arena, edata_t *edata, size_t oldusize) { size_t usize = edata_usize_get(edata); if (config_stats) { - LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); arena_large_ralloc_stats_update(tsdn, arena, oldusize, usize); - LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); } } void -arena_extent_ralloc_large_expand(tsdn_t *tsdn, arena_t *arena, edata_t *edata, - size_t oldusize) { +arena_extent_ralloc_large_expand( + tsdn_t *tsdn, arena_t *arena, edata_t *edata, size_t oldusize) { size_t usize = edata_usize_get(edata); if (config_stats) { - LOCKEDINT_MTX_LOCK(tsdn, arena->stats.mtx); arena_large_ralloc_stats_update(tsdn, arena, oldusize, usize); - LOCKEDINT_MTX_UNLOCK(tsdn, arena->stats.mtx); } } @@ -405,12 +387,12 @@ arena_decide_unforced_purge_eagerness(bool is_background_thread) { } bool -arena_decay_ms_set(tsdn_t *tsdn, arena_t *arena, extent_state_t state, - ssize_t decay_ms) { +arena_decay_ms_set( + tsdn_t *tsdn, arena_t *arena, extent_state_t state, ssize_t decay_ms) { pac_purge_eagerness_t eagerness = arena_decide_unforced_purge_eagerness( /* is_background_thread */ false); - return pa_decay_ms_set(tsdn, &arena->pa_shard, state, decay_ms, - eagerness); + return pa_decay_ms_set( + tsdn, &arena->pa_shard, state, decay_ms, eagerness); } ssize_t @@ -420,8 +402,8 @@ arena_decay_ms_get(arena_t *arena, extent_state_t state) { static bool arena_decay_impl(tsdn_t *tsdn, arena_t *arena, decay_t *decay, - pac_decay_stats_t *decay_stats, ecache_t *ecache, - bool is_background_thread, bool all) { + pac_decay_stats_t *decay_stats, ecache_t *ecache, bool is_background_thread, + bool all) { if (all) { malloc_mutex_lock(tsdn, &decay->mtx); pac_decay_all(tsdn, &arena->pa_shard.pac, decay, decay_stats, @@ -434,19 +416,19 @@ arena_decay_impl(tsdn_t *tsdn, arena_t *arena, decay_t *decay, /* No need to wait if another thread is in progress. */ return true; } - pac_purge_eagerness_t eagerness = - arena_decide_unforced_purge_eagerness(is_background_thread); - bool epoch_advanced = pac_maybe_decay_purge(tsdn, &arena->pa_shard.pac, - decay, decay_stats, ecache, eagerness); - size_t npages_new; + pac_purge_eagerness_t eagerness = arena_decide_unforced_purge_eagerness( + is_background_thread); + bool epoch_advanced = pac_maybe_decay_purge( + tsdn, &arena->pa_shard.pac, decay, decay_stats, ecache, eagerness); + size_t npages_new JEMALLOC_CLANG_ANALYZER_SILENCE_INIT(0); if (epoch_advanced) { /* Backlog is updated on epoch advance. */ npages_new = decay_epoch_npages_delta(decay); } malloc_mutex_unlock(tsdn, &decay->mtx); - if (have_background_thread && background_thread_enabled() && - epoch_advanced && !is_background_thread) { + if (have_background_thread && background_thread_enabled() + && epoch_advanced && !is_background_thread) { arena_maybe_do_deferred_work(tsdn, arena, decay, npages_new); } @@ -454,16 +436,16 @@ arena_decay_impl(tsdn_t *tsdn, arena_t *arena, decay_t *decay, } static bool -arena_decay_dirty(tsdn_t *tsdn, arena_t *arena, bool is_background_thread, - bool all) { +arena_decay_dirty( + tsdn_t *tsdn, arena_t *arena, bool is_background_thread, bool all) { return arena_decay_impl(tsdn, arena, &arena->pa_shard.pac.decay_dirty, &arena->pa_shard.pac.stats->decay_dirty, &arena->pa_shard.pac.ecache_dirty, is_background_thread, all); } static bool -arena_decay_muzzy(tsdn_t *tsdn, arena_t *arena, bool is_background_thread, - bool all) { +arena_decay_muzzy( + tsdn_t *tsdn, arena_t *arena, bool is_background_thread, bool all) { if (pa_shard_dont_decay_muzzy(&arena->pa_shard)) { return false; } @@ -480,7 +462,7 @@ arena_decay(tsdn_t *tsdn, arena_t *arena, bool is_background_thread, bool all) { * as possible", including flushing any caches (for situations * like thread death, or manual purge calls). */ - sec_flush(tsdn, &arena->pa_shard.hpa_sec); + pa_shard_flush(tsdn, &arena->pa_shard); } if (arena_decay_dirty(tsdn, arena, is_background_thread, all)) { return; @@ -510,13 +492,13 @@ arena_should_decay_early(tsdn_t *tsdn, arena_t *arena, decay_t *decay, } nstime_subtract(remaining_sleep, &decay->epoch); if (npages_new > 0) { - uint64_t npurge_new = decay_npages_purge_in(decay, - remaining_sleep, npages_new); + uint64_t npurge_new = decay_npages_purge_in( + decay, remaining_sleep, npages_new); info->npages_to_purge_new += npurge_new; } malloc_mutex_unlock(tsdn, &decay->mtx); - return info->npages_to_purge_new > - ARENA_DEFERRED_PURGE_NPAGES_THRESHOLD; + return info->npages_to_purge_new + > ARENA_DEFERRED_PURGE_NPAGES_THRESHOLD; } /* @@ -528,8 +510,8 @@ arena_should_decay_early(tsdn_t *tsdn, arena_t *arena, decay_t *decay, * deferred work has been generated. */ static void -arena_maybe_do_deferred_work(tsdn_t *tsdn, arena_t *arena, decay_t *decay, - size_t npages_new) { +arena_maybe_do_deferred_work( + tsdn_t *tsdn, arena_t *arena, decay_t *decay, size_t npages_new) { background_thread_info_t *info = arena_background_thread_info_get( arena); if (malloc_mutex_trylock(tsdn, &info->mtx)) { @@ -549,7 +531,7 @@ arena_maybe_do_deferred_work(tsdn_t *tsdn, arena_t *arena, decay_t *decay, if (background_thread_indefinite_sleep(info)) { background_thread_wakeup_early(info, NULL); } else if (arena_should_decay_early(tsdn, arena, decay, info, - &remaining_sleep, npages_new)) { + &remaining_sleep, npages_new)) { info->npages_to_purge_new = 0; background_thread_wakeup_early(info, &remaining_sleep); } @@ -573,63 +555,12 @@ arena_slab_dalloc(tsdn_t *tsdn, arena_t *arena, edata_t *slab) { } } -static void -arena_bin_slabs_nonfull_insert(bin_t *bin, edata_t *slab) { - assert(edata_nfree_get(slab) > 0); - edata_heap_insert(&bin->slabs_nonfull, slab); - if (config_stats) { - bin->stats.nonfull_slabs++; - } -} - -static void -arena_bin_slabs_nonfull_remove(bin_t *bin, edata_t *slab) { - edata_heap_remove(&bin->slabs_nonfull, slab); - if (config_stats) { - bin->stats.nonfull_slabs--; - } -} - -static edata_t * -arena_bin_slabs_nonfull_tryget(bin_t *bin) { - edata_t *slab = edata_heap_remove_first(&bin->slabs_nonfull); - if (slab == NULL) { - return NULL; - } - if (config_stats) { - bin->stats.reslabs++; - bin->stats.nonfull_slabs--; - } - return slab; -} - -static void -arena_bin_slabs_full_insert(arena_t *arena, bin_t *bin, edata_t *slab) { - assert(edata_nfree_get(slab) == 0); - /* - * Tracking extents is required by arena_reset, which is not allowed - * for auto arenas. Bypass this step to avoid touching the edata - * linkage (often results in cache misses) for auto arenas. - */ - if (arena_is_auto(arena)) { - return; - } - edata_list_active_append(&bin->slabs_full, slab); -} - -static void -arena_bin_slabs_full_remove(arena_t *arena, bin_t *bin, edata_t *slab) { - if (arena_is_auto(arena)) { - return; - } - edata_list_active_remove(&bin->slabs_full, slab); -} - static void arena_bin_reset(tsd_t *tsd, arena_t *arena, bin_t *bin) { edata_t *slab; malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock); + if (bin->slabcur != NULL) { slab = bin->slabcur; bin->slabcur = NULL; @@ -643,8 +574,8 @@ arena_bin_reset(tsd_t *tsd, arena_t *arena, bin_t *bin) { malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock); } for (slab = edata_list_active_first(&bin->slabs_full); slab != NULL; - slab = edata_list_active_first(&bin->slabs_full)) { - arena_bin_slabs_full_remove(arena, bin, slab); + slab = edata_list_active_first(&bin->slabs_full)) { + bin_slabs_full_remove(false, bin, slab); malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock); arena_slab_dalloc(tsd_tsdn(tsd), arena, slab); malloc_mutex_lock(tsd_tsdn(tsd), &bin->lock); @@ -656,6 +587,79 @@ arena_bin_reset(tsd_t *tsd, arena_t *arena, bin_t *bin) { malloc_mutex_unlock(tsd_tsdn(tsd), &bin->lock); } +void +arena_prof_promote(tsdn_t *tsdn, void *ptr, size_t usize, size_t bumped_usize) { + cassert(config_prof); + assert(ptr != NULL); + assert(isalloc(tsdn, ptr) == bumped_usize); + assert(sz_can_use_slab(usize)); + + if (config_opt_safety_checks) { + safety_check_set_redzone(ptr, usize, bumped_usize); + } + + edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); + + szind_t szind = sz_size2index(usize); + edata_szind_set(edata, szind); + emap_remap(tsdn, &arena_emap_global, edata, szind, /* slab */ false); + + assert(isalloc(tsdn, ptr) == usize); +} + +static size_t +arena_prof_demote(tsdn_t *tsdn, edata_t *edata, const void *ptr) { + cassert(config_prof); + assert(ptr != NULL); + size_t usize = isalloc(tsdn, ptr); + size_t bumped_usize = sz_sa2u(usize, PROF_SAMPLE_ALIGNMENT); + assert(bumped_usize <= SC_LARGE_MINCLASS + && PAGE_CEILING(bumped_usize) == bumped_usize); + assert(edata_size_get(edata) - bumped_usize <= sz_large_pad); + szind_t szind = sz_size2index(bumped_usize); + + edata_szind_set(edata, szind); + emap_remap(tsdn, &arena_emap_global, edata, szind, /* slab */ false); + + assert(isalloc(tsdn, ptr) == bumped_usize); + + return bumped_usize; +} + +static void +arena_dalloc_promoted_impl( + tsdn_t *tsdn, void *ptr, tcache_t *tcache, bool slow_path, edata_t *edata) { + cassert(config_prof); + assert(opt_prof); + + size_t usize = edata_usize_get(edata); + size_t bumped_usize = arena_prof_demote(tsdn, edata, ptr); + if (config_opt_safety_checks && usize < SC_LARGE_MINCLASS) { + /* + * Currently, we only do redzoning for small sampled + * allocations. + */ + safety_check_verify_redzone(ptr, usize, bumped_usize); + } + szind_t bumped_ind = sz_size2index(bumped_usize); + if (bumped_usize >= SC_LARGE_MINCLASS && tcache != NULL + && bumped_ind < TCACHE_NBINS_MAX + && !tcache_bin_disabled( + bumped_ind, &tcache->bins[bumped_ind], tcache->tcache_slow)) { + tcache_dalloc_large( + tsdn_tsd(tsdn), tcache, ptr, bumped_ind, slow_path); + } else { + large_dalloc(tsdn, edata); + } +} + +void +arena_dalloc_promoted( + tsdn_t *tsdn, void *ptr, tcache_t *tcache, bool slow_path) { + edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); + arena_dalloc_promoted_impl(tsdn, ptr, tcache, slow_path, edata); +} + void arena_reset(tsd_t *tsd, arena_t *arena) { /* @@ -677,24 +681,29 @@ arena_reset(tsd_t *tsd, arena_t *arena) { for (edata_t *edata = edata_list_active_first(&arena->large); edata != NULL; edata = edata_list_active_first(&arena->large)) { - void *ptr = edata_base_get(edata); + void *ptr = edata_base_get(edata); size_t usize; malloc_mutex_unlock(tsd_tsdn(tsd), &arena->large_mtx); emap_alloc_ctx_t alloc_ctx; - emap_alloc_ctx_lookup(tsd_tsdn(tsd), &arena_emap_global, ptr, - &alloc_ctx); + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind != SC_NSIZES); if (config_stats || (config_prof && opt_prof)) { - usize = sz_index2size(alloc_ctx.szind); + usize = emap_alloc_ctx_usize_get(&alloc_ctx); assert(usize == isalloc(tsd_tsdn(tsd), ptr)); } /* Remove large allocation from prof sample set. */ if (config_prof && opt_prof) { prof_free(tsd, ptr, usize, &alloc_ctx); } - large_dalloc(tsd_tsdn(tsd), edata); + if (config_prof && opt_prof && alloc_ctx.szind < SC_NBINS) { + arena_dalloc_promoted_impl(tsd_tsdn(tsd), ptr, + /* tcache */ NULL, /* slow_path */ true, edata); + } else { + large_dalloc(tsd_tsdn(tsd), edata); + } malloc_mutex_lock(tsd_tsdn(tsd), &arena->large_mtx); } malloc_mutex_unlock(tsd_tsdn(tsd), &arena->large_mtx); @@ -709,8 +718,8 @@ arena_reset(tsd_t *tsd, arena_t *arena) { } static void -arena_prepare_base_deletion_sync_finish(tsd_t *tsd, malloc_mutex_t **mutexes, - unsigned n_mtx) { +arena_prepare_base_deletion_sync_finish( + tsd_t *tsd, malloc_mutex_t **mutexes, unsigned n_mtx) { for (unsigned i = 0; i < n_mtx; i++) { malloc_mutex_lock(tsd_tsdn(tsd), mutexes[i]); malloc_mutex_unlock(tsd_tsdn(tsd), mutexes[i]); @@ -769,9 +778,9 @@ arena_prepare_base_deletion(tsd_t *tsd, base_t *base_to_destroy) { unsigned destroy_ind = base_ind_get(base_to_destroy); assert(destroy_ind >= manual_arena_base); - tsdn_t *tsdn = tsd_tsdn(tsd); + tsdn_t *tsdn = tsd_tsdn(tsd); malloc_mutex_t *delayed_mtx[ARENA_DESTROY_MAX_DELAYED_MTX]; - unsigned n_delayed = 0, total = narenas_total_get(); + unsigned n_delayed = 0, total = narenas_total_get(); for (unsigned i = 0; i < total; i++) { if (i == destroy_ind) { continue; @@ -781,12 +790,12 @@ arena_prepare_base_deletion(tsd_t *tsd, base_t *base_to_destroy) { continue; } pac_t *pac = &arena->pa_shard.pac; - arena_prepare_base_deletion_sync(tsd, &pac->ecache_dirty.mtx, - delayed_mtx, &n_delayed); - arena_prepare_base_deletion_sync(tsd, &pac->ecache_muzzy.mtx, - delayed_mtx, &n_delayed); - arena_prepare_base_deletion_sync(tsd, &pac->ecache_retained.mtx, - delayed_mtx, &n_delayed); + arena_prepare_base_deletion_sync( + tsd, &pac->ecache_dirty.mtx, delayed_mtx, &n_delayed); + arena_prepare_base_deletion_sync( + tsd, &pac->ecache_muzzy.mtx, delayed_mtx, &n_delayed); + arena_prepare_base_deletion_sync( + tsd, &pac->ecache_retained.mtx, delayed_mtx, &n_delayed); } arena_prepare_base_deletion_sync_finish(tsd, delayed_mtx, n_delayed); } @@ -828,17 +837,17 @@ arena_destroy(tsd_t *tsd, arena_t *arena) { } static edata_t * -arena_slab_alloc(tsdn_t *tsdn, arena_t *arena, szind_t binind, unsigned binshard, - const bin_info_t *bin_info) { +arena_slab_alloc(tsdn_t *tsdn, arena_t *arena, szind_t binind, + unsigned binshard, const bin_info_t *bin_info) { bool deferred_work_generated = false; - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); - bool guarded = san_slab_extent_decide_guard(tsdn, - arena_get_ehooks(arena)); + bool guarded = san_slab_extent_decide_guard( + tsdn, arena_get_ehooks(arena)); edata_t *slab = pa_alloc(tsdn, &arena->pa_shard, bin_info->slab_size, /* alignment */ PAGE, /* slab */ true, /* szind */ binind, - /* zero */ false, guarded, &deferred_work_generated); + /* zero */ false, guarded, &deferred_work_generated); if (deferred_work_generated) { arena_handle_deferred_work(tsdn, arena); @@ -857,84 +866,13 @@ arena_slab_alloc(tsdn_t *tsdn, arena_t *arena, szind_t binind, unsigned binshard return slab; } -/* - * Before attempting the _with_fresh_slab approaches below, the _no_fresh_slab - * variants (i.e. through slabcur and nonfull) must be tried first. - */ -static void -arena_bin_refill_slabcur_with_fresh_slab(tsdn_t *tsdn, arena_t *arena, - bin_t *bin, szind_t binind, edata_t *fresh_slab) { - malloc_mutex_assert_owner(tsdn, &bin->lock); - /* Only called after slabcur and nonfull both failed. */ - assert(bin->slabcur == NULL); - assert(edata_heap_first(&bin->slabs_nonfull) == NULL); - assert(fresh_slab != NULL); - - /* A new slab from arena_slab_alloc() */ - assert(edata_nfree_get(fresh_slab) == bin_infos[binind].nregs); - if (config_stats) { - bin->stats.nslabs++; - bin->stats.curslabs++; - } - bin->slabcur = fresh_slab; -} - -/* Refill slabcur and then alloc using the fresh slab */ -static void * -arena_bin_malloc_with_fresh_slab(tsdn_t *tsdn, arena_t *arena, bin_t *bin, - szind_t binind, edata_t *fresh_slab) { - malloc_mutex_assert_owner(tsdn, &bin->lock); - arena_bin_refill_slabcur_with_fresh_slab(tsdn, arena, bin, binind, - fresh_slab); - - return arena_slab_reg_alloc(bin->slabcur, &bin_infos[binind]); -} - -static bool -arena_bin_refill_slabcur_no_fresh_slab(tsdn_t *tsdn, arena_t *arena, - bin_t *bin) { - malloc_mutex_assert_owner(tsdn, &bin->lock); - /* Only called after arena_slab_reg_alloc[_batch] failed. */ - assert(bin->slabcur == NULL || edata_nfree_get(bin->slabcur) == 0); - - if (bin->slabcur != NULL) { - arena_bin_slabs_full_insert(arena, bin, bin->slabcur); - } - - /* Look for a usable slab. */ - bin->slabcur = arena_bin_slabs_nonfull_tryget(bin); - assert(bin->slabcur == NULL || edata_nfree_get(bin->slabcur) > 0); - - return (bin->slabcur == NULL); -} - -bin_t * -arena_bin_choose(tsdn_t *tsdn, arena_t *arena, szind_t binind, - unsigned *binshard_p) { - unsigned binshard; - if (tsdn_null(tsdn) || tsd_arena_get(tsdn_tsd(tsdn)) == NULL) { - binshard = 0; - } else { - binshard = tsd_binshardsp_get(tsdn_tsd(tsdn))->binshard[binind]; - } - assert(binshard < bin_infos[binind].n_shards); - if (binshard_p != NULL) { - *binshard_p = binshard; - } - return arena_get_bin(arena, binind, binshard); -} - -void -arena_cache_bin_fill_small(tsdn_t *tsdn, arena_t *arena, - cache_bin_t *cache_bin, cache_bin_info_t *cache_bin_info, szind_t binind, - const unsigned nfill) { - assert(cache_bin_ncached_get_local(cache_bin, cache_bin_info) == 0); +cache_bin_sz_t +arena_ptr_array_fill_small(tsdn_t *tsdn, arena_t *arena, szind_t binind, + cache_bin_ptr_array_t *arr, const cache_bin_sz_t nfill_min, + const cache_bin_sz_t nfill_max, cache_bin_stats_t merge_stats) { + assert(nfill_min > 0 && nfill_min <= nfill_max); const bin_info_t *bin_info = &bin_infos[binind]; - - CACHE_BIN_PTR_ARRAY_DECLARE(ptrs, nfill); - cache_bin_init_ptr_array_for_fill(cache_bin, cache_bin_info, &ptrs, - nfill); /* * Bin-local resources are used first: 1) bin->slabcur, and 2) nonfull * slabs. After both are exhausted, new slabs will be allocated through @@ -961,40 +899,47 @@ arena_cache_bin_fill_small(tsdn_t *tsdn, arena_t *arena, * local exhausted, b) unlock and slab_alloc returns null, c) re-lock * and bin local fails again. */ - bool made_progress = true; - edata_t *fresh_slab = NULL; - bool alloc_and_retry = false; - unsigned filled = 0; - unsigned binshard; - bin_t *bin = arena_bin_choose(tsdn, arena, binind, &binshard); + bool made_progress = true; + edata_t *fresh_slab = NULL; + bool alloc_and_retry = false; + bool is_auto = arena_is_auto(arena); + cache_bin_sz_t filled = 0; + unsigned binshard; + bin_t *bin = bin_choose(tsdn, arena, binind, &binshard); label_refill: malloc_mutex_lock(tsdn, &bin->lock); - while (filled < nfill) { + while (filled < nfill_min) { /* Try batch-fill from slabcur first. */ edata_t *slabcur = bin->slabcur; if (slabcur != NULL && edata_nfree_get(slabcur) > 0) { - unsigned tofill = nfill - filled; - unsigned nfree = edata_nfree_get(slabcur); - unsigned cnt = tofill < nfree ? tofill : nfree; + /* + * Use up the free slots if the total filled <= nfill_max. + * Otherwise, fallback to nfill_min for a more conservative + * memory usage. + */ + unsigned cnt = edata_nfree_get(slabcur); + if (cnt + filled > nfill_max) { + cnt = nfill_min - filled; + } - arena_slab_reg_alloc_batch(slabcur, bin_info, cnt, - &ptrs.ptr[filled]); + bin_slab_reg_alloc_batch( + slabcur, bin_info, cnt, &arr->ptr[filled]); made_progress = true; filled += cnt; continue; } /* Next try refilling slabcur from nonfull slabs. */ - if (!arena_bin_refill_slabcur_no_fresh_slab(tsdn, arena, bin)) { + if (!bin_refill_slabcur_no_fresh_slab(tsdn, is_auto, bin)) { assert(bin->slabcur != NULL); continue; } /* Then see if a new slab was reserved already. */ if (fresh_slab != NULL) { - arena_bin_refill_slabcur_with_fresh_slab(tsdn, arena, - bin, binind, fresh_slab); + bin_refill_slabcur_with_fresh_slab( + tsdn, bin, binind, fresh_slab); assert(bin->slabcur != NULL); fresh_slab = NULL; continue; @@ -1014,32 +959,32 @@ arena_cache_bin_fill_small(tsdn_t *tsdn, arena_t *arena, assert(fresh_slab == NULL); assert(!alloc_and_retry); break; - } /* while (filled < nfill) loop. */ + } /* while (filled < nfill_min) loop. */ if (config_stats && !alloc_and_retry) { bin->stats.nmalloc += filled; - bin->stats.nrequests += cache_bin->tstats.nrequests; + bin->stats.nrequests += merge_stats.nrequests; bin->stats.curregs += filled; bin->stats.nfills++; - cache_bin->tstats.nrequests = 0; } malloc_mutex_unlock(tsdn, &bin->lock); if (alloc_and_retry) { assert(fresh_slab == NULL); - assert(filled < nfill); + assert(filled < nfill_min); assert(made_progress); - fresh_slab = arena_slab_alloc(tsdn, arena, binind, binshard, - bin_info); + fresh_slab = arena_slab_alloc( + tsdn, arena, binind, binshard, bin_info); /* fresh_slab NULL case handled in the for loop. */ alloc_and_retry = false; made_progress = false; goto label_refill; } - assert(filled == nfill || (fresh_slab == NULL && !made_progress)); + assert((filled >= nfill_min && filled <= nfill_max) + || (fresh_slab == NULL && !made_progress)); /* Release if allocated but not used. */ if (fresh_slab != NULL) { @@ -1048,8 +993,8 @@ arena_cache_bin_fill_small(tsdn_t *tsdn, arena_t *arena, fresh_slab = NULL; } - cache_bin_finish_fill(cache_bin, cache_bin_info, &ptrs, filled); arena_decay_tick(tsdn, arena); + return filled; } size_t @@ -1057,22 +1002,24 @@ arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind, void **ptrs, size_t nfill, bool zero) { assert(binind < SC_NBINS); const bin_info_t *bin_info = &bin_infos[binind]; - const size_t nregs = bin_info->nregs; + const size_t nregs = bin_info->nregs; assert(nregs > 0); const size_t usize = bin_info->reg_size; const bool manual_arena = !arena_is_auto(arena); - unsigned binshard; - bin_t *bin = arena_bin_choose(tsdn, arena, binind, &binshard); + unsigned binshard; + bin_t *bin = bin_choose(tsdn, arena, binind, &binshard); - size_t nslab = 0; - size_t filled = 0; - edata_t *slab = NULL; + size_t nslab = 0; + size_t filled = 0; + edata_t *slab = NULL; edata_list_active_t fulls; edata_list_active_init(&fulls); - while (filled < nfill && (slab = arena_slab_alloc(tsdn, arena, binind, - binshard, bin_info)) != NULL) { + while (filled < nfill + && (slab = arena_slab_alloc( + tsdn, arena, binind, binshard, bin_info)) + != NULL) { assert((size_t)edata_nfree_get(slab) == nregs); ++nslab; size_t batch = nfill - filled; @@ -1080,8 +1027,8 @@ arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind, batch = nregs; } assert(batch > 0); - arena_slab_reg_alloc_batch(slab, bin_info, (unsigned)batch, - &ptrs[filled]); + bin_slab_reg_alloc_batch( + slab, bin_info, (unsigned)batch, &ptrs[filled]); assert(edata_addr_get(slab) == ptrs[filled]); if (zero) { memset(ptrs[filled], 0, batch * usize); @@ -1101,7 +1048,7 @@ arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind, * iff slab != NULL. */ if (slab != NULL) { - arena_bin_lower_slab(tsdn, arena, slab, bin); + bin_lower_slab(tsdn, !manual_arena, slab, bin); } if (manual_arena) { edata_list_active_concat(&bin->slabs_full, &fulls); @@ -1120,52 +1067,35 @@ arena_fill_small_fresh(tsdn_t *tsdn, arena_t *arena, szind_t binind, return filled; } -/* - * Without allocating a new slab, try arena_slab_reg_alloc() and re-fill - * bin->slabcur if necessary. - */ -static void * -arena_bin_malloc_no_fresh_slab(tsdn_t *tsdn, arena_t *arena, bin_t *bin, - szind_t binind) { - malloc_mutex_assert_owner(tsdn, &bin->lock); - if (bin->slabcur == NULL || edata_nfree_get(bin->slabcur) == 0) { - if (arena_bin_refill_slabcur_no_fresh_slab(tsdn, arena, bin)) { - return NULL; - } - } - - assert(bin->slabcur != NULL && edata_nfree_get(bin->slabcur) > 0); - return arena_slab_reg_alloc(bin->slabcur, &bin_infos[binind]); -} - static void * arena_malloc_small(tsdn_t *tsdn, arena_t *arena, szind_t binind, bool zero) { assert(binind < SC_NBINS); const bin_info_t *bin_info = &bin_infos[binind]; - size_t usize = sz_index2size(binind); - unsigned binshard; - bin_t *bin = arena_bin_choose(tsdn, arena, binind, &binshard); + size_t usize = sz_index2size(binind); + bool is_auto = arena_is_auto(arena); + unsigned binshard; + bin_t *bin = bin_choose(tsdn, arena, binind, &binshard); malloc_mutex_lock(tsdn, &bin->lock); edata_t *fresh_slab = NULL; - void *ret = arena_bin_malloc_no_fresh_slab(tsdn, arena, bin, binind); + void *ret = bin_malloc_no_fresh_slab(tsdn, is_auto, bin, binind); if (ret == NULL) { malloc_mutex_unlock(tsdn, &bin->lock); /******************************/ - fresh_slab = arena_slab_alloc(tsdn, arena, binind, binshard, - bin_info); + fresh_slab = arena_slab_alloc( + tsdn, arena, binind, binshard, bin_info); /********************************/ malloc_mutex_lock(tsdn, &bin->lock); /* Retry since the lock was dropped. */ - ret = arena_bin_malloc_no_fresh_slab(tsdn, arena, bin, binind); + ret = bin_malloc_no_fresh_slab(tsdn, is_auto, bin, binind); if (ret == NULL) { if (fresh_slab == NULL) { /* OOM */ malloc_mutex_unlock(tsdn, &bin->lock); return NULL; } - ret = arena_bin_malloc_with_fresh_slab(tsdn, arena, bin, - binind, fresh_slab); + ret = bin_malloc_with_fresh_slab( + tsdn, bin, binind, fresh_slab); fresh_slab = NULL; } } @@ -1189,7 +1119,7 @@ arena_malloc_small(tsdn_t *tsdn, arena_t *arena, szind_t binind, bool zero) { void * arena_malloc_hard(tsdn_t *tsdn, arena_t *arena, size_t size, szind_t ind, - bool zero) { + bool zero, bool slab) { assert(!tsdn_null(tsdn) || arena != NULL); if (likely(!tsdn_null(tsdn))) { @@ -1199,18 +1129,19 @@ arena_malloc_hard(tsdn_t *tsdn, arena_t *arena, size_t size, szind_t ind, return NULL; } - if (likely(size <= SC_SMALL_MAXCLASS)) { + if (likely(slab)) { + assert(sz_can_use_slab(size)); return arena_malloc_small(tsdn, arena, ind, zero); + } else { + return large_malloc(tsdn, arena, sz_s2u(size), zero); } - return large_malloc(tsdn, arena, sz_index2size(ind), zero); } void * arena_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, - bool zero, tcache_t *tcache) { - void *ret; - - if (usize <= SC_SMALL_MAXCLASS) { + bool zero, bool slab, tcache_t *tcache) { + if (slab) { + assert(sz_can_use_slab(usize)); /* Small; alignment doesn't require special slab placement. */ /* usize should be a result of sz_sa2u() */ @@ -1221,175 +1152,396 @@ arena_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, */ assert(alignment <= PAGE); - ret = arena_malloc(tsdn, arena, usize, sz_size2index(usize), - zero, tcache, true); + return arena_malloc(tsdn, arena, usize, sz_size2index(usize), + zero, slab, tcache, true); } else { if (likely(alignment <= CACHELINE)) { - ret = large_malloc(tsdn, arena, usize, zero); + return large_malloc(tsdn, arena, usize, zero); } else { - ret = large_palloc(tsdn, arena, usize, alignment, zero); + return large_palloc( + tsdn, arena, usize, alignment, zero); } } - return ret; } -void -arena_prof_promote(tsdn_t *tsdn, void *ptr, size_t usize) { - cassert(config_prof); - assert(ptr != NULL); - assert(isalloc(tsdn, ptr) == SC_LARGE_MINCLASS); - assert(usize <= SC_SMALL_MAXCLASS); +static void +arena_dalloc_bin(tsdn_t *tsdn, arena_t *arena, edata_t *edata, void *ptr) { + szind_t binind = edata_szind_get(edata); + unsigned binshard = edata_binshard_get(edata); + bin_t *bin = arena_get_bin(arena, binind, binshard); - if (config_opt_safety_checks) { - safety_check_set_redzone(ptr, usize, SC_LARGE_MINCLASS); + malloc_mutex_lock(tsdn, &bin->lock); + bin_dalloc_locked_info_t info; + bin_dalloc_locked_begin(&info, binind); + bool ret = bin_dalloc_locked_step( + tsdn, arena_is_auto(arena), bin, &info, binind, edata, ptr); + bin_dalloc_locked_finish(tsdn, bin, &info); + malloc_mutex_unlock(tsdn, &bin->lock); + + if (ret) { + arena_slab_dalloc(tsdn, arena, edata); } +} +void +arena_dalloc_small(tsdn_t *tsdn, void *ptr) { edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); + arena_t *arena = arena_get_from_edata(edata); - szind_t szind = sz_size2index(usize); - edata_szind_set(edata, szind); - emap_remap(tsdn, &arena_emap_global, edata, szind, /* slab */ false); + arena_dalloc_bin(tsdn, arena, edata, ptr); + arena_decay_tick(tsdn, arena); +} - assert(isalloc(tsdn, ptr) == usize); +static const void * +arena_ptr_array_flush_ptr_getter(void *arr_ctx, size_t ind) { + cache_bin_ptr_array_t *arr = (cache_bin_ptr_array_t *)arr_ctx; + return arr->ptr[ind]; } -static size_t -arena_prof_demote(tsdn_t *tsdn, edata_t *edata, const void *ptr) { - cassert(config_prof); - assert(ptr != NULL); +static void +arena_ptr_array_flush_metadata_visitor( + void *szind_sum_ctx, emap_full_alloc_ctx_t *alloc_ctx) { + size_t *szind_sum = (size_t *)szind_sum_ctx; + *szind_sum -= alloc_ctx->szind; + util_prefetch_write_range(alloc_ctx->edata, sizeof(edata_t)); +} + +JEMALLOC_NOINLINE static void +arena_ptr_array_flush_size_check_fail(cache_bin_ptr_array_t *arr, szind_t szind, + size_t nptrs, emap_batch_lookup_result_t *edatas) { + bool found_mismatch = false; + for (size_t i = 0; i < nptrs; i++) { + szind_t true_szind = edata_szind_get(edatas[i].edata); + if (true_szind != szind) { + found_mismatch = true; + safety_check_fail_sized_dealloc( + /* current_dealloc */ false, + /* ptr */ arena_ptr_array_flush_ptr_getter(arr, i), + /* true_size */ sz_index2size(true_szind), + /* input_size */ sz_index2size(szind)); + } + } + assert(found_mismatch); +} - edata_szind_set(edata, SC_NBINS); - emap_remap(tsdn, &arena_emap_global, edata, SC_NBINS, /* slab */ false); +JEMALLOC_ALWAYS_INLINE void +arena_ptr_array_flush_impl_small(tsdn_t *tsdn, szind_t binind, + cache_bin_ptr_array_t *arr, emap_batch_lookup_result_t *item_edata, + cache_bin_sz_t nflush, arena_t *stats_arena, + cache_bin_stats_t **merge_stats) { + /* + * The slabs where we freed the last remaining object in the slab (and + * so need to free the slab itself). + * Used only if small == true. + */ + unsigned dalloc_count = 0; + VARIABLE_ARRAY(edata_t *, dalloc_slabs, nflush + 1); + /* + * We're about to grab a bunch of locks. If one of them happens to be + * the one guarding the arena-level stats counters we flush our + * thread-local ones to, we do so under one critical section. + */ + /* + * We maintain the invariant that all edatas yet to be flushed are + * contained in the half-open range [flush_start, flush_end). We'll + * repeatedly partition the array so that the unflushed items are at the + * end. + */ + unsigned flush_start = 0; - assert(isalloc(tsdn, ptr) == SC_LARGE_MINCLASS); + while (flush_start < nflush) { + /* + * After our partitioning step, all objects to flush will be in + * the half-open range [prev_flush_start, flush_start), and + * flush_start will be updated to correspond to the next loop + * iteration. + */ + unsigned prev_flush_start = flush_start; - return SC_LARGE_MINCLASS; -} + edata_t *cur_edata = item_edata[flush_start].edata; + unsigned cur_arena_ind = edata_arena_ind_get(cur_edata); + arena_t *cur_arena = arena_get(tsdn, cur_arena_ind, false); -void -arena_dalloc_promoted(tsdn_t *tsdn, void *ptr, tcache_t *tcache, - bool slow_path) { - cassert(config_prof); - assert(opt_prof); + unsigned cur_binshard = edata_binshard_get(cur_edata); + bin_t *cur_bin = arena_get_bin(cur_arena, binind, cur_binshard); + assert(cur_binshard < bin_infos[binind].n_shards); + /* + * Start off the partition; item_edata[i] always matches itself + * of course. + */ + flush_start++; + for (unsigned i = flush_start; i < nflush; i++) { + void *ptr = arr->ptr[i]; + edata_t *edata = item_edata[i].edata; + assert(ptr != NULL && edata != NULL); + assert( + (uintptr_t)ptr >= (uintptr_t)edata_addr_get(edata)); + assert( + (uintptr_t)ptr < (uintptr_t)edata_past_get(edata)); + if (edata_arena_ind_get(edata) == cur_arena_ind + && edata_binshard_get(edata) == cur_binshard) { + /* Swap the edatas. */ + emap_batch_lookup_result_t temp_edata = + item_edata[flush_start]; + item_edata[flush_start] = item_edata[i]; + item_edata[i] = temp_edata; + /* Swap the pointers */ + void *temp_ptr = arr->ptr[flush_start]; + arr->ptr[flush_start] = arr->ptr[i]; + arr->ptr[i] = temp_ptr; + flush_start++; + } + } + /* Make sure we implemented partitioning correctly. */ + if (config_debug) { + for (unsigned i = prev_flush_start; i < flush_start; + i++) { + edata_t *edata = item_edata[i].edata; + unsigned arena_ind = edata_arena_ind_get(edata); + assert(arena_ind == cur_arena_ind); + unsigned binshard = edata_binshard_get(edata); + assert(binshard == cur_binshard); + } + for (unsigned i = flush_start; i < nflush; i++) { + edata_t *edata = item_edata[i].edata; + assert( + edata_arena_ind_get(edata) != cur_arena_ind + || edata_binshard_get(edata) + != cur_binshard); + } + } + + /* Actually do the flushing. */ + malloc_mutex_lock(tsdn, &cur_bin->lock); - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); - size_t usize = edata_usize_get(edata); - size_t bumped_usize = arena_prof_demote(tsdn, edata, ptr); - if (config_opt_safety_checks && usize < SC_LARGE_MINCLASS) { /* - * Currently, we only do redzoning for small sampled - * allocations. + * Flush stats first, if that was the right lock. Note that we + * don't actually have to flush stats into the current thread's + * binshard. Flushing into any binshard in the same arena is + * enough; we don't expose stats on per-binshard basis (just + * per-bin). */ - assert(bumped_usize == SC_LARGE_MINCLASS); - safety_check_verify_redzone(ptr, usize, bumped_usize); - } - if (bumped_usize <= tcache_maxclass && tcache != NULL) { - tcache_dalloc_large(tsdn_tsd(tsdn), tcache, ptr, - sz_size2index(bumped_usize), slow_path); - } else { - large_dalloc(tsdn, edata); + if (config_stats && stats_arena == cur_arena + && *merge_stats != NULL) { + cur_bin->stats.nflushes++; + cur_bin->stats.nrequests += (*merge_stats)->nrequests; + *merge_stats = NULL; + } + + /* Next flush objects. */ + /* Init only to avoid used-uninitialized warning. */ + bin_dalloc_locked_info_t dalloc_bin_info = {0}; + bin_dalloc_locked_begin(&dalloc_bin_info, binind); + for (unsigned i = prev_flush_start; i < flush_start; i++) { + void *ptr = arr->ptr[i]; + edata_t *edata = item_edata[i].edata; + if (bin_dalloc_locked_step(tsdn, + arena_is_auto(cur_arena), + cur_bin, &dalloc_bin_info, binind, edata, + ptr)) { + dalloc_slabs[dalloc_count] = edata; + dalloc_count++; + } + } + + bin_dalloc_locked_finish( + tsdn, cur_bin, &dalloc_bin_info); + malloc_mutex_unlock(tsdn, &cur_bin->lock); + + arena_decay_ticks( + tsdn, cur_arena, flush_start - prev_flush_start); } -} -static void -arena_dissociate_bin_slab(arena_t *arena, edata_t *slab, bin_t *bin) { - /* Dissociate slab from bin. */ - if (slab == bin->slabcur) { - bin->slabcur = NULL; - } else { - szind_t binind = edata_szind_get(slab); - const bin_info_t *bin_info = &bin_infos[binind]; + /* Handle all deferred slab dalloc. */ + for (unsigned i = 0; i < dalloc_count; i++) { + edata_t *slab = dalloc_slabs[i]; + arena_slab_dalloc(tsdn, arena_get_from_edata(slab), slab); + } + if (config_stats && *merge_stats != NULL) { /* - * The following block's conditional is necessary because if the - * slab only contains one region, then it never gets inserted - * into the non-full slabs heap. + * The flush loop didn't happen to flush to this + * thread's arena, so the stats didn't get merged. + * Manually do so now. */ - if (bin_info->nregs == 1) { - arena_bin_slabs_full_remove(arena, bin, slab); - } else { - arena_bin_slabs_nonfull_remove(bin, slab); - } + bin_t *bin = bin_choose(tsdn, stats_arena, binind, NULL); + malloc_mutex_lock(tsdn, &bin->lock); + bin->stats.nflushes++; + bin->stats.nrequests += (*merge_stats)->nrequests; + *merge_stats = NULL; + malloc_mutex_unlock(tsdn, &bin->lock); } } -static void -arena_bin_lower_slab(tsdn_t *tsdn, arena_t *arena, edata_t *slab, - bin_t *bin) { - assert(edata_nfree_get(slab) > 0); - +JEMALLOC_ALWAYS_INLINE void +arena_ptr_array_flush_impl_large(tsdn_t *tsdn, szind_t binind, + cache_bin_ptr_array_t *arr, emap_batch_lookup_result_t *item_edata, + cache_bin_sz_t nflush, arena_t *stats_arena, + cache_bin_stats_t **merge_stats) { /* - * Make sure that if bin->slabcur is non-NULL, it refers to the - * oldest/lowest non-full slab. It is okay to NULL slabcur out rather - * than proactively keeping it pointing at the oldest/lowest non-full - * slab. + * We're about to grab a bunch of locks. If one of them happens to be + * the one guarding the arena-level stats counters we flush our + * thread-local ones to, we do so under one critical section. */ - if (bin->slabcur != NULL && edata_snad_comp(bin->slabcur, slab) > 0) { - /* Switch slabcur. */ - if (edata_nfree_get(bin->slabcur) > 0) { - arena_bin_slabs_nonfull_insert(bin, bin->slabcur); - } else { - arena_bin_slabs_full_insert(arena, bin, bin->slabcur); + while (nflush > 0) { + /* Lock the arena, or bin, associated with the first object. */ + edata_t *edata = item_edata[0].edata; + unsigned cur_arena_ind = edata_arena_ind_get(edata); + arena_t *cur_arena = arena_get(tsdn, cur_arena_ind, false); + + if (!arena_is_auto(cur_arena)) { + malloc_mutex_lock(tsdn, &cur_arena->large_mtx); } - bin->slabcur = slab; - if (config_stats) { - bin->stats.reslabs++; + + /* + * If we acquired the right lock and have some stats to flush, + * flush them. + */ + if (config_stats && stats_arena == cur_arena + && *merge_stats != NULL) { + arena_stats_large_flush_nrequests_add(tsdn, + &stats_arena->stats, binind, + (*merge_stats)->nrequests); + *merge_stats = NULL; } - } else { - arena_bin_slabs_nonfull_insert(bin, slab); - } -} -static void -arena_dalloc_bin_slab_prepare(tsdn_t *tsdn, edata_t *slab, bin_t *bin) { - malloc_mutex_assert_owner(tsdn, &bin->lock); + /* + * Large allocations need special prep done. Afterwards, we can + * drop the large lock. + */ + for (unsigned i = 0; i < nflush; i++) { + void *ptr = arr->ptr[i]; + edata = item_edata[i].edata; + assert(ptr != NULL && edata != NULL); - assert(slab != bin->slabcur); - if (config_stats) { - bin->stats.curslabs--; - } -} + if (edata_arena_ind_get(edata) == cur_arena_ind) { + large_dalloc_prep_locked(tsdn, edata); + } + } + if (!arena_is_auto(cur_arena)) { + malloc_mutex_unlock(tsdn, &cur_arena->large_mtx); + } -void -arena_dalloc_bin_locked_handle_newly_empty(tsdn_t *tsdn, arena_t *arena, - edata_t *slab, bin_t *bin) { - arena_dissociate_bin_slab(arena, slab, bin); - arena_dalloc_bin_slab_prepare(tsdn, slab, bin); -} + /* Deallocate whatever we can. */ + unsigned ndeferred = 0; + for (unsigned i = 0; i < nflush; i++) { + void *ptr = arr->ptr[i]; + edata = item_edata[i].edata; + assert(ptr != NULL && edata != NULL); + if (edata_arena_ind_get(edata) != cur_arena_ind) { + /* + * The object was allocated either via a + * different arena, or a different bin in this + * arena. Either way, stash the object so that + * it can be handled in a future pass. + */ + arr->ptr[ndeferred] = ptr; + item_edata[ndeferred].edata = edata; + ndeferred++; + continue; + } + if (large_dalloc_safety_checks( + edata, ptr, sz_index2size(binind))) { + /* See the comment in isfree. */ + continue; + } + large_dalloc_finish(tsdn, edata); + } + arena_decay_ticks(tsdn, cur_arena, nflush - ndeferred); + nflush = ndeferred; + } -void -arena_dalloc_bin_locked_handle_newly_nonempty(tsdn_t *tsdn, arena_t *arena, - edata_t *slab, bin_t *bin) { - arena_bin_slabs_full_remove(arena, bin, slab); - arena_bin_lower_slab(tsdn, arena, slab, bin); + if (config_stats && *merge_stats != NULL) { + arena_stats_large_flush_nrequests_add(tsdn, &stats_arena->stats, + binind, (*merge_stats)->nrequests); + *merge_stats = NULL; + } } -static void -arena_dalloc_bin(tsdn_t *tsdn, arena_t *arena, edata_t *edata, void *ptr) { - szind_t binind = edata_szind_get(edata); - unsigned binshard = edata_binshard_get(edata); - bin_t *bin = arena_get_bin(arena, binind, binshard); - - malloc_mutex_lock(tsdn, &bin->lock); - arena_dalloc_bin_locked_info_t info; - arena_dalloc_bin_locked_begin(&info, binind); - bool ret = arena_dalloc_bin_locked_step(tsdn, arena, bin, - &info, binind, edata, ptr); - arena_dalloc_bin_locked_finish(tsdn, arena, bin, &info); - malloc_mutex_unlock(tsdn, &bin->lock); +JEMALLOC_ALWAYS_INLINE void +arena_ptr_array_flush_impl(tsd_t *tsd, szind_t binind, + cache_bin_ptr_array_t *arr, unsigned nflush, bool small, + arena_t *stats_arena, cache_bin_stats_t **merge_stats) { + /* + * A couple lookup calls take tsdn; declare it once for convenience + * instead of calling tsd_tsdn(tsd) all the time. + */ + tsdn_t *tsdn = tsd_tsdn(tsd); + /* + * Variable length array must have > 0 length; the last element is never + * touched (it's just included to satisfy the no-zero-length rule). + */ + VARIABLE_ARRAY(emap_batch_lookup_result_t, item_edata, nflush + 1); + /* + * This gets compiled away when config_opt_safety_checks is false. + * Checks for sized deallocation bugs, failing early rather than + * corrupting metadata. + */ + size_t szind_sum = binind * nflush; + emap_edata_lookup_batch(tsd, &arena_emap_global, nflush, + &arena_ptr_array_flush_ptr_getter, (void *)arr, + &arena_ptr_array_flush_metadata_visitor, (void *)&szind_sum, + item_edata); + if (config_opt_safety_checks && unlikely(szind_sum != 0)) { + arena_ptr_array_flush_size_check_fail( + arr, binind, nflush, item_edata); + } - if (ret) { - arena_slab_dalloc(tsdn, arena, edata); + /* + * The small/large flush logic is very similar; you might conclude that + * it's a good opportunity to share code. We've tried this, and by and + * large found this to obscure more than it helps; there are so many + * fiddly bits around things like stats handling, precisely when and + * which mutexes are acquired, etc., that almost all code ends up being + * gated behind 'if (small) { ... } else { ... }'. Even though the + * '...' is morally equivalent, the code itself needs slight tweaks. + */ + if (small) { + return arena_ptr_array_flush_impl_small(tsdn, binind, arr, + item_edata, nflush, stats_arena, merge_stats); + } else { + return arena_ptr_array_flush_impl_large(tsdn, binind, arr, + item_edata, nflush, stats_arena, merge_stats); } } +/* + * In practice, pointers are flushed back to their original allocation arenas, + * so multiple arenas may be involved here. The input stats_arena simply + * indicates where the cache stats should be merged into. + */ void -arena_dalloc_small(tsdn_t *tsdn, void *ptr) { - edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); - arena_t *arena = arena_get_from_edata(edata); - - arena_dalloc_bin(tsdn, arena, edata, ptr); - arena_decay_tick(tsdn, arena); +arena_ptr_array_flush(tsd_t *tsd, szind_t binind, cache_bin_ptr_array_t *arr, + unsigned nflush, bool small, arena_t *stats_arena, + cache_bin_stats_t merge_stats) { + assert(arr != NULL && arr->ptr != NULL); + /* + * The input cache bin stats represent a snapshot taken when the pointer + * array is set up, and will be merged into the next-level bin stats. + * The original bin stats will be reset by the caller itself. + * This separation ensures that each layer operates independently and + * does not modify another layer's data directly. + */ + cache_bin_stats_t *stats = &merge_stats; + unsigned nflush_batch, nflushed = 0; + cache_bin_ptr_array_t ptrs_batch; + do { + nflush_batch = nflush - nflushed; + if (nflush_batch > CACHE_BIN_NFLUSH_BATCH_MAX) { + nflush_batch = CACHE_BIN_NFLUSH_BATCH_MAX; + } + assert(nflush_batch <= CACHE_BIN_NFLUSH_BATCH_MAX); + (&ptrs_batch)->n = (cache_bin_sz_t)nflush_batch; + (&ptrs_batch)->ptr = arr->ptr + nflushed; + arena_ptr_array_flush_impl(tsd, binind, &ptrs_batch, + nflush_batch, small, stats_arena, &stats); + nflushed += nflush_batch; + } while (nflushed < nflush); + assert(nflush == nflushed); + assert((arr->ptr + nflush) == ((&ptrs_batch)->ptr + nflush_batch)); + if (config_stats) { + assert(stats == NULL); + } } bool @@ -1407,16 +1559,15 @@ arena_ralloc_no_move(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, size_t usize_min = sz_s2u(size); size_t usize_max = sz_s2u(size + extra); - if (likely(oldsize <= SC_SMALL_MAXCLASS && usize_min - <= SC_SMALL_MAXCLASS)) { + if (likely(oldsize <= SC_SMALL_MAXCLASS + && usize_min <= SC_SMALL_MAXCLASS)) { /* * Avoid moving the allocation if the size class can be left the * same. */ - assert(bin_infos[sz_size2index(oldsize)].reg_size == - oldsize); + assert(bin_infos[sz_size2index(oldsize)].reg_size == oldsize); if ((usize_max > SC_SMALL_MAXCLASS - || sz_size2index(usize_max) != sz_size2index(oldsize)) + || sz_size2index(usize_max) != sz_size2index(oldsize)) && (size > oldsize || usize_max < oldsize)) { ret = true; goto done; @@ -1427,8 +1578,8 @@ arena_ralloc_no_move(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, ret = false; } else if (oldsize >= SC_LARGE_MINCLASS && usize_max >= SC_LARGE_MINCLASS) { - ret = large_ralloc_no_move(tsdn, edata, usize_min, usize_max, - zero); + ret = large_ralloc_no_move( + tsdn, edata, usize_min, usize_max, zero); } else { ret = true; } @@ -1441,61 +1592,64 @@ arena_ralloc_no_move(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, static void * arena_ralloc_move_helper(tsdn_t *tsdn, arena_t *arena, size_t usize, - size_t alignment, bool zero, tcache_t *tcache) { + size_t alignment, bool zero, bool slab, tcache_t *tcache) { if (alignment == 0) { return arena_malloc(tsdn, arena, usize, sz_size2index(usize), - zero, tcache, true); + zero, slab, tcache, true); } usize = sz_sa2u(usize, alignment); if (unlikely(usize == 0 || usize > SC_LARGE_MAXCLASS)) { return NULL; } - return ipalloct(tsdn, usize, alignment, zero, tcache, arena); + return ipalloct_explicit_slab( + tsdn, usize, alignment, zero, slab, tcache, arena); } void * arena_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t oldsize, - size_t size, size_t alignment, bool zero, tcache_t *tcache, + size_t size, size_t alignment, bool zero, bool slab, tcache_t *tcache, hook_ralloc_args_t *hook_args) { size_t usize = alignment == 0 ? sz_s2u(size) : sz_sa2u(size, alignment); if (unlikely(usize == 0 || size > SC_LARGE_MAXCLASS)) { return NULL; } - if (likely(usize <= SC_SMALL_MAXCLASS)) { + if (likely(slab)) { + assert(sz_can_use_slab(usize)); /* Try to avoid moving the allocation. */ UNUSED size_t newsize; - if (!arena_ralloc_no_move(tsdn, ptr, oldsize, usize, 0, zero, - &newsize)) { + if (!arena_ralloc_no_move( + tsdn, ptr, oldsize, usize, 0, zero, &newsize)) { hook_invoke_expand(hook_args->is_realloc - ? hook_expand_realloc : hook_expand_rallocx, + ? hook_expand_realloc + : hook_expand_rallocx, ptr, oldsize, usize, (uintptr_t)ptr, hook_args->args); return ptr; } } - if (oldsize >= SC_LARGE_MINCLASS - && usize >= SC_LARGE_MINCLASS) { - return large_ralloc(tsdn, arena, ptr, usize, - alignment, zero, tcache, hook_args); + if (oldsize >= SC_LARGE_MINCLASS && usize >= SC_LARGE_MINCLASS) { + return large_ralloc(tsdn, arena, ptr, usize, alignment, zero, + tcache, hook_args); } /* * size and oldsize are different enough that we need to move the * object. In that case, fall back to allocating new space and copying. */ - void *ret = arena_ralloc_move_helper(tsdn, arena, usize, alignment, - zero, tcache); + void *ret = arena_ralloc_move_helper( + tsdn, arena, usize, alignment, zero, slab, tcache); if (ret == NULL) { return NULL; } - hook_invoke_alloc(hook_args->is_realloc - ? hook_alloc_realloc : hook_alloc_rallocx, ret, (uintptr_t)ret, - hook_args->args); - hook_invoke_dalloc(hook_args->is_realloc - ? hook_dalloc_realloc : hook_dalloc_rallocx, ptr, hook_args->args); + hook_invoke_alloc( + hook_args->is_realloc ? hook_alloc_realloc : hook_alloc_rallocx, + ret, (uintptr_t)ret, hook_args->args); + hook_invoke_dalloc( + hook_args->is_realloc ? hook_dalloc_realloc : hook_dalloc_rallocx, + ptr, hook_args->args); /* * Junk/zero-filling were already done by @@ -1513,8 +1667,8 @@ arena_get_ehooks(arena_t *arena) { } extent_hooks_t * -arena_set_extent_hooks(tsd_t *tsd, arena_t *arena, - extent_hooks_t *extent_hooks) { +arena_set_extent_hooks( + tsd_t *tsd, arena_t *arena, extent_hooks_t *extent_hooks) { background_thread_info_t *info; if (have_background_thread) { info = arena_background_thread_info_get(arena); @@ -1544,6 +1698,22 @@ arena_dss_prec_set(arena_t *arena, dss_prec_t dss_prec) { return false; } +void +arena_name_get(arena_t *arena, char *name) { + char *end = (char *)memchr((void *)arena->name, '\0', ARENA_NAME_LEN); + assert(end != NULL); + size_t len = (uintptr_t)end - (uintptr_t)arena->name + 1; + assert(len > 0 && len <= ARENA_NAME_LEN); + + strncpy(name, arena->name, len); +} + +void +arena_name_set(arena_t *arena, const char *name) { + strncpy(arena->name, name, ARENA_NAME_LEN); + arena->name[ARENA_NAME_LEN - 1] = '\0'; +} + ssize_t arena_dirty_decay_ms_default_get(void) { return atomic_load_zd(&dirty_decay_ms_default, ATOMIC_RELAXED); @@ -1573,11 +1743,11 @@ arena_muzzy_decay_ms_default_set(ssize_t decay_ms) { } bool -arena_retain_grow_limit_get_set(tsd_t *tsd, arena_t *arena, size_t *old_limit, - size_t *new_limit) { +arena_retain_grow_limit_get_set( + tsd_t *tsd, arena_t *arena, size_t *old_limit, size_t *new_limit) { assert(opt_retain); - return pac_retain_grow_limit_get_set(tsd_tsdn(tsd), - &arena->pa_shard.pac, old_limit, new_limit); + return pac_retain_grow_limit_get_set( + tsd_tsdn(tsd), &arena->pa_shard.pac, old_limit, new_limit); } unsigned @@ -1598,7 +1768,7 @@ arena_nthreads_dec(arena_t *arena, bool internal) { arena_t * arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config) { arena_t *arena; - base_t *base; + base_t *base; unsigned i; if (ind == 0) { @@ -1611,12 +1781,15 @@ arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config) { } } - size_t arena_size = sizeof(arena_t) + sizeof(bin_t) * nbins_total; + size_t arena_size = ALIGNMENT_CEILING(sizeof(arena_t), CACHELINE) + + sizeof(bin_t) * nbins_total; arena = (arena_t *)base_alloc(tsdn, base, arena_size, CACHELINE); if (arena == NULL) { goto label_error; } - + JEMALLOC_SUPPRESS_WARN_ON_USAGE( + assert((uintptr_t)&arena->all_bins[nbins_total - 1] + sizeof(bin_t) + <= (uintptr_t)arena + arena_size);) atomic_store_u(&arena->nthreads[0], 0, ATOMIC_RELAXED); atomic_store_u(&arena->nthreads[1], 0, ATOMIC_RELAXED); arena->last_thd = NULL; @@ -1629,34 +1802,35 @@ arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config) { ql_new(&arena->tcache_ql); ql_new(&arena->cache_bin_array_descriptor_ql); if (malloc_mutex_init(&arena->tcache_ql_mtx, "tcache_ql", - WITNESS_RANK_TCACHE_QL, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_TCACHE_QL, malloc_mutex_rank_exclusive)) { goto label_error; } } - atomic_store_u(&arena->dss_prec, (unsigned)extent_dss_prec_get(), - ATOMIC_RELAXED); + atomic_store_u( + &arena->dss_prec, (unsigned)extent_dss_prec_get(), ATOMIC_RELAXED); edata_list_active_init(&arena->large); if (malloc_mutex_init(&arena->large_mtx, "arena_large", - WITNESS_RANK_ARENA_LARGE, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_ARENA_LARGE, malloc_mutex_rank_exclusive)) { goto label_error; } nstime_t cur_time; nstime_init_update(&cur_time); if (pa_shard_init(tsdn, &arena->pa_shard, &arena_pa_central_global, - &arena_emap_global, base, ind, &arena->stats.pa_shard_stats, - LOCKEDINT_MTX(arena->stats.mtx), &cur_time, oversize_threshold, - arena_dirty_decay_ms_default_get(), - arena_muzzy_decay_ms_default_get())) { + &arena_emap_global, base, ind, &arena->stats.pa_shard_stats, + LOCKEDINT_MTX(arena->stats.mtx), &cur_time, oversize_threshold, + arena_dirty_decay_ms_default_get(), + arena_muzzy_decay_ms_default_get())) { goto label_error; } /* Initialize bins. */ atomic_store_u(&arena->binshard_next, 0, ATOMIC_RELEASE); for (i = 0; i < nbins_total; i++) { - bool err = bin_init(&arena->bins[i]); + JEMALLOC_SUPPRESS_WARN_ON_USAGE( + bool err = bin_init(&arena->all_bins[i]);) if (err) { goto label_error; } @@ -1667,20 +1841,25 @@ arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config) { arena_set(ind, arena); arena->ind = ind; + /* Init the name. */ + malloc_snprintf(arena->name, sizeof(arena->name), "%s_%u", + arena_is_auto(arena) ? "auto" : "manual", arena->ind); + arena->name[ARENA_NAME_LEN - 1] = '\0'; + nstime_init_update(&arena->create_time); /* * We turn on the HPA if set to. There are two exceptions: * - Custom extent hooks (we should only return memory allocated from * them in that case). - * - Arena 0 initialization. In this case, we're mid-bootstrapping, and - * so arena_hpa_global is not yet initialized. + * - Arena 0 initialization. In this case, we're mid-bootstrapping, + * and so background_thread_enabled is not yet initialized. */ if (opt_hpa && ehooks_are_default(base_ehooks_get(base)) && ind != 0) { hpa_shard_opts_t hpa_shard_opts = opt_hpa_opts; hpa_shard_opts.deferral_allowed = background_thread_enabled(); - if (pa_shard_enable_hpa(tsdn, &arena->pa_shard, - &hpa_shard_opts, &opt_hpa_sec_opts)) { + if (pa_shard_enable_hpa(tsdn, &arena->pa_shard, &hpa_shard_opts, + &opt_hpa_sec_opts)) { goto label_error; } } @@ -1707,6 +1886,42 @@ arena_new(tsdn_t *tsdn, unsigned ind, const arena_config_t *config) { return NULL; } +static arena_t * +arena_create_huge_arena(tsd_t *tsd, unsigned ind) { + assert(ind != 0); + + arena_t *huge_arena = arena_get(tsd_tsdn(tsd), ind, true); + if (huge_arena == NULL) { + return NULL; + } + + char *huge_arena_name = "auto_oversize"; + strncpy(huge_arena->name, huge_arena_name, ARENA_NAME_LEN); + huge_arena->name[ARENA_NAME_LEN - 1] = '\0'; + + /* + * Purge eagerly for huge allocations, because: 1) number of huge + * allocations is usually small, which means ticker based decay is not + * reliable; and 2) less immediate reuse is expected for huge + * allocations. + * + * However, with background threads enabled, keep normal purging since + * the purging delay is bounded. + */ + if (!background_thread_enabled() + && arena_dirty_decay_ms_default_get() > 0) { + arena_decay_ms_set( + tsd_tsdn(tsd), huge_arena, extent_state_dirty, 0); + } + if (!background_thread_enabled() + && arena_muzzy_decay_ms_default_get() > 0) { + arena_decay_ms_set( + tsd_tsdn(tsd), huge_arena, extent_state_muzzy, 0); + } + + return huge_arena; +} + arena_t * arena_choose_huge(tsd_t *tsd) { /* huge_arena_ind can be 0 during init (will use a0). */ @@ -1717,58 +1932,51 @@ arena_choose_huge(tsd_t *tsd) { arena_t *huge_arena = arena_get(tsd_tsdn(tsd), huge_arena_ind, false); if (huge_arena == NULL) { /* Create the huge arena on demand. */ - assert(huge_arena_ind != 0); - huge_arena = arena_get(tsd_tsdn(tsd), huge_arena_ind, true); - if (huge_arena == NULL) { - return NULL; - } - /* - * Purge eagerly for huge allocations, because: 1) number of - * huge allocations is usually small, which means ticker based - * decay is not reliable; and 2) less immediate reuse is - * expected for huge allocations. - */ - if (arena_dirty_decay_ms_default_get() > 0) { - arena_decay_ms_set(tsd_tsdn(tsd), huge_arena, - extent_state_dirty, 0); - } - if (arena_muzzy_decay_ms_default_get() > 0) { - arena_decay_ms_set(tsd_tsdn(tsd), huge_arena, - extent_state_muzzy, 0); - } + huge_arena = arena_create_huge_arena(tsd, huge_arena_ind); } return huge_arena; } bool -arena_init_huge(void) { +arena_init_huge(tsdn_t *tsdn, arena_t *a0) { bool huge_enabled; + assert(huge_arena_ind == 0); /* The threshold should be large size class. */ - if (opt_oversize_threshold > SC_LARGE_MAXCLASS || - opt_oversize_threshold < SC_LARGE_MINCLASS) { + if (opt_oversize_threshold > SC_LARGE_MAXCLASS + || opt_oversize_threshold < SC_LARGE_MINCLASS) { opt_oversize_threshold = 0; oversize_threshold = SC_LARGE_MAXCLASS + PAGE; huge_enabled = false; } else { /* Reserve the index for the huge arena. */ huge_arena_ind = narenas_total_get(); + assert(huge_arena_ind != 0); oversize_threshold = opt_oversize_threshold; + /* a0 init happened before malloc_conf_init. */ + atomic_store_zu(&a0->pa_shard.pac.oversize_threshold, + oversize_threshold, ATOMIC_RELAXED); + /* Initialize huge_arena_pac_thp fields. */ + base_t *b0 = a0->base; + /* Make sure that b0 thp auto-switch won't happen concurrently here. */ + malloc_mutex_lock(tsdn, &b0->mtx); + (&huge_arena_pac_thp)->thp_madvise = opt_huge_arena_pac_thp + && metadata_thp_enabled() + && (opt_thp == thp_mode_do_nothing) + && (init_system_thp_mode == system_thp_mode_madvise); + (&huge_arena_pac_thp)->auto_thp_switched = + b0->auto_thp_switched; + malloc_mutex_init(&(&huge_arena_pac_thp)->lock, "pac_thp", + WITNESS_RANK_LEAF, malloc_mutex_rank_exclusive); + edata_list_active_init(&(&huge_arena_pac_thp)->thp_lazy_list); + malloc_mutex_unlock(tsdn, &b0->mtx); huge_enabled = true; } return huge_enabled; } -bool -arena_is_huge(unsigned arena_ind) { - if (huge_arena_ind == 0) { - return false; - } - return (arena_ind == huge_arena_ind); -} - bool arena_boot(sc_data_t *sc_data, base_t *base, bool hpa) { arena_dirty_decay_ms_default_set(opt_dirty_decay_ms); @@ -1779,14 +1987,15 @@ arena_boot(sc_data_t *sc_data, base_t *base, bool hpa) { (1U << sc->lg_base) + (sc->ndelta << sc->lg_delta)); } - uint32_t cur_offset = (uint32_t)offsetof(arena_t, bins); + JEMALLOC_SUPPRESS_WARN_ON_USAGE( + uint32_t cur_offset = (uint32_t)offsetof(arena_t, all_bins);) for (szind_t i = 0; i < SC_NBINS; i++) { arena_bin_offsets[i] = cur_offset; nbins_total += bin_infos[i].n_shards; cur_offset += (uint32_t)(bin_infos[i].n_shards * sizeof(bin_t)); } - return pa_central_init(&arena_pa_central_global, base, hpa, - &hpa_hooks_default); + return pa_central_init( + &arena_pa_central_global, base, hpa, &hpa_hooks_default); } void @@ -1834,14 +2043,16 @@ arena_prefork7(tsdn_t *tsdn, arena_t *arena) { void arena_prefork8(tsdn_t *tsdn, arena_t *arena) { for (unsigned i = 0; i < nbins_total; i++) { - bin_prefork(tsdn, &arena->bins[i]); + JEMALLOC_SUPPRESS_WARN_ON_USAGE( + bin_prefork(tsdn, &arena->all_bins[i]);) } } void arena_postfork_parent(tsdn_t *tsdn, arena_t *arena) { for (unsigned i = 0; i < nbins_total; i++) { - bin_postfork_parent(tsdn, &arena->bins[i]); + JEMALLOC_SUPPRESS_WARN_ON_USAGE( + bin_postfork_parent(tsdn, &arena->all_bins[i]);) } malloc_mutex_postfork_parent(tsdn, &arena->large_mtx); @@ -1879,7 +2090,8 @@ arena_postfork_child(tsdn_t *tsdn, arena_t *arena) { } for (unsigned i = 0; i < nbins_total; i++) { - bin_postfork_child(tsdn, &arena->bins[i]); + JEMALLOC_SUPPRESS_WARN_ON_USAGE( + bin_postfork_child(tsdn, &arena->all_bins[i]);) } malloc_mutex_postfork_child(tsdn, &arena->large_mtx); diff --git a/dep/jemalloc/src/background_thread.c b/dep/jemalloc/src/background_thread.c index 3bb8d26cd3d6f..4901856a8227e 100644 --- a/dep/jemalloc/src/background_thread.c +++ b/dep/jemalloc/src/background_thread.c @@ -11,15 +11,15 @@ JEMALLOC_DIAGNOSTIC_DISABLE_SPURIOUS /* This option should be opt-in only. */ #define BACKGROUND_THREAD_DEFAULT false /* Read-only after initialization. */ -bool opt_background_thread = BACKGROUND_THREAD_DEFAULT; +bool opt_background_thread = BACKGROUND_THREAD_DEFAULT; size_t opt_max_background_threads = MAX_BACKGROUND_THREAD_LIMIT + 1; /* Used for thread creation, termination and stats. */ malloc_mutex_t background_thread_lock; /* Indicates global state. Atomic because decay reads this w/o locking. */ atomic_b_t background_thread_enabled_state; -size_t n_background_threads; -size_t max_background_threads; +size_t n_background_threads; +size_t max_background_threads; /* Thread info per-index. */ background_thread_info_t *background_thread_info; @@ -32,11 +32,11 @@ static int (*pthread_create_fptr)(pthread_t *__restrict, const pthread_attr_t *, static void pthread_create_wrapper_init(void) { -#ifdef JEMALLOC_LAZY_LOCK +# ifdef JEMALLOC_LAZY_LOCK if (!isthreaded) { isthreaded = true; } -#endif +# endif } int @@ -46,24 +46,64 @@ pthread_create_wrapper(pthread_t *__restrict thread, const pthread_attr_t *attr, return pthread_create_fptr(thread, attr, start_routine, arg); } + +# ifdef JEMALLOC_HAVE_DLSYM +# include +# endif + +static bool +pthread_create_fptr_init(void) { + if (pthread_create_fptr != NULL) { + return false; + } + /* + * Try the next symbol first, because 1) when use lazy_lock we have a + * wrapper for pthread_create; and 2) application may define its own + * wrapper as well (and can call malloc within the wrapper). + */ +# ifdef JEMALLOC_HAVE_DLSYM + pthread_create_fptr = dlsym(RTLD_NEXT, "pthread_create"); + if (pthread_create_fptr == NULL) { + pthread_create_fptr = dlsym(RTLD_DEFAULT, "pthread_create"); + } +# else + pthread_create_fptr = NULL; +# endif + if (pthread_create_fptr == NULL) { + if (config_lazy_lock) { + malloc_write( + ": Error in dlsym(RTLD_NEXT, " + "\"pthread_create\")\n"); + abort(); + } else { + /* Fall back to the default symbol. */ + pthread_create_fptr = pthread_create; + } + } + + return false; +} #endif /* JEMALLOC_PTHREAD_CREATE_WRAPPER */ #ifndef JEMALLOC_BACKGROUND_THREAD -#define NOT_REACHED { not_reached(); } -bool background_thread_create(tsd_t *tsd, unsigned arena_ind) NOT_REACHED -bool background_threads_enable(tsd_t *tsd) NOT_REACHED -bool background_threads_disable(tsd_t *tsd) NOT_REACHED -bool background_thread_is_started(background_thread_info_t *info) NOT_REACHED -void background_thread_wakeup_early(background_thread_info_t *info, - nstime_t *remaining_sleep) NOT_REACHED -void background_thread_prefork0(tsdn_t *tsdn) NOT_REACHED -void background_thread_prefork1(tsdn_t *tsdn) NOT_REACHED -void background_thread_postfork_parent(tsdn_t *tsdn) NOT_REACHED -void background_thread_postfork_child(tsdn_t *tsdn) NOT_REACHED -bool background_thread_stats_read(tsdn_t *tsdn, - background_thread_stats_t *stats) NOT_REACHED -void background_thread_ctl_init(tsdn_t *tsdn) NOT_REACHED -#undef NOT_REACHED +# define NOT_REACHED \ + { not_reached(); } +bool +background_thread_create(tsd_t *tsd, unsigned arena_ind) NOT_REACHED + bool background_threads_enable(tsd_t *tsd) NOT_REACHED + bool background_threads_disable(tsd_t *tsd) NOT_REACHED + bool background_thread_is_started( + background_thread_info_t *info) NOT_REACHED + void background_thread_wakeup_early( + background_thread_info_t *info, nstime_t *remaining_sleep) NOT_REACHED + void background_thread_prefork0(tsdn_t *tsdn) NOT_REACHED + void background_thread_prefork1(tsdn_t *tsdn) NOT_REACHED + void background_thread_postfork_parent(tsdn_t *tsdn) NOT_REACHED + void background_thread_postfork_child(tsdn_t *tsdn) NOT_REACHED + bool background_thread_stats_read( + tsdn_t *tsdn, background_thread_stats_t *stats) NOT_REACHED + void background_thread_ctl_init(tsdn_t *tsdn) NOT_REACHED +# undef NOT_REACHED #else static bool background_thread_enabled_at_fork; @@ -80,45 +120,70 @@ background_thread_info_init(tsdn_t *tsdn, background_thread_info_t *info) { static inline bool set_current_thread_affinity(int cpu) { -#if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) +# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) \ + || defined(JEMALLOC_HAVE_PTHREAD_SETAFFINITY_NP) +# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) cpu_set_t cpuset; -#else -# ifndef __NetBSD__ +# else +# ifndef __NetBSD__ cpuset_t cpuset; -# else +# else cpuset_t *cpuset; -# endif -#endif +# endif +# endif -#ifndef __NetBSD__ +# ifndef __NetBSD__ CPU_ZERO(&cpuset); CPU_SET(cpu, &cpuset); -#else +# else cpuset = cpuset_create(); -#endif +# endif -#if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) +# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) return (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset) != 0); -#else -# ifndef __NetBSD__ - int ret = pthread_setaffinity_np(pthread_self(), sizeof(cpuset_t), - &cpuset); -# else - int ret = pthread_setaffinity_np(pthread_self(), cpuset_size(cpuset), - cpuset); +# else +# ifndef __NetBSD__ + int ret = pthread_setaffinity_np( + pthread_self(), sizeof(cpuset_t), &cpuset); +# else + int ret = pthread_setaffinity_np( + pthread_self(), cpuset_size(cpuset), cpuset); cpuset_destroy(cpuset); -# endif +# endif return ret != 0; -#endif +# endif +# else + return false; +# endif } -#define BILLION UINT64_C(1000000000) +# define BILLION UINT64_C(1000000000) /* Minimal sleep interval 100 ms. */ -#define BACKGROUND_THREAD_MIN_INTERVAL_NS (BILLION / 10) +# define BACKGROUND_THREAD_MIN_INTERVAL_NS (BILLION / 10) + +static int +background_thread_cond_wait( + background_thread_info_t *info, struct timespec *ts) { + int ret; + + /* + * pthread_cond_wait drops and re-acquires the mutex internally, w/o + * going through our wrapper. Update the locked state explicitly. + */ + atomic_store_b(&info->mtx.locked, false, ATOMIC_RELAXED); + if (ts == NULL) { + ret = pthread_cond_wait(&info->cond, &info->mtx.lock); + } else { + ret = pthread_cond_timedwait(&info->cond, &info->mtx.lock, ts); + } + atomic_store_b(&info->mtx.locked, true, ATOMIC_RELAXED); + + return ret; +} static void -background_thread_sleep(tsdn_t *tsdn, background_thread_info_t *info, - uint64_t interval) { +background_thread_sleep( + tsdn_t *tsdn, background_thread_info_t *info, uint64_t interval) { if (config_stats) { info->tot_n_runs++; } @@ -132,21 +197,21 @@ background_thread_sleep(tsdn_t *tsdn, background_thread_info_t *info, int ret; if (interval == BACKGROUND_THREAD_INDEFINITE_SLEEP) { - background_thread_wakeup_time_set(tsdn, info, - BACKGROUND_THREAD_INDEFINITE_SLEEP); - ret = pthread_cond_wait(&info->cond, &info->mtx.lock); + background_thread_wakeup_time_set( + tsdn, info, BACKGROUND_THREAD_INDEFINITE_SLEEP); + ret = background_thread_cond_wait(info, NULL); assert(ret == 0); } else { - assert(interval >= BACKGROUND_THREAD_MIN_INTERVAL_NS && - interval <= BACKGROUND_THREAD_INDEFINITE_SLEEP); + assert(interval >= BACKGROUND_THREAD_MIN_INTERVAL_NS + && interval <= BACKGROUND_THREAD_INDEFINITE_SLEEP); /* We need malloc clock (can be different from tv). */ nstime_t next_wakeup; nstime_init_update(&next_wakeup); nstime_iadd(&next_wakeup, interval); - assert(nstime_ns(&next_wakeup) < - BACKGROUND_THREAD_INDEFINITE_SLEEP); - background_thread_wakeup_time_set(tsdn, info, - nstime_ns(&next_wakeup)); + assert(nstime_ns(&next_wakeup) + < BACKGROUND_THREAD_INDEFINITE_SLEEP); + background_thread_wakeup_time_set( + tsdn, info, nstime_ns(&next_wakeup)); nstime_t ts_wakeup; nstime_copy(&ts_wakeup, &before_sleep); @@ -156,7 +221,7 @@ background_thread_sleep(tsdn_t *tsdn, background_thread_info_t *info, ts.tv_nsec = (size_t)nstime_nsec(&ts_wakeup); assert(!background_thread_indefinite_sleep(info)); - ret = pthread_cond_timedwait(&info->cond, &info->mtx.lock, &ts); + ret = background_thread_cond_wait(info, &ts); assert(ret == ETIMEDOUT || ret == 0); } if (config_stats) { @@ -185,11 +250,11 @@ background_thread_pause_check(tsdn_t *tsdn, background_thread_info_t *info) { } static inline void -background_work_sleep_once(tsdn_t *tsdn, background_thread_info_t *info, - unsigned ind) { +background_work_sleep_once( + tsdn_t *tsdn, background_thread_info_t *info, unsigned ind) { uint64_t ns_until_deferred = BACKGROUND_THREAD_DEFERRED_MAX; unsigned narenas = narenas_total_get(); - bool slept_indefinitely = background_thread_indefinite_sleep(info); + bool slept_indefinitely = background_thread_indefinite_sleep(info); for (unsigned i = ind; i < narenas; i += max_background_threads) { arena_t *arena = arena_get(tsdn, i, false); @@ -219,11 +284,10 @@ background_work_sleep_once(tsdn_t *tsdn, background_thread_info_t *info, if (ns_until_deferred == BACKGROUND_THREAD_DEFERRED_MAX) { sleep_ns = BACKGROUND_THREAD_INDEFINITE_SLEEP; } else { - sleep_ns = - (ns_until_deferred < BACKGROUND_THREAD_MIN_INTERVAL_NS) + sleep_ns = (ns_until_deferred + < BACKGROUND_THREAD_MIN_INTERVAL_NS) ? BACKGROUND_THREAD_MIN_INTERVAL_NS : ns_until_deferred; - } background_thread_sleep(tsdn, info, sleep_ns); @@ -232,11 +296,11 @@ background_work_sleep_once(tsdn_t *tsdn, background_thread_info_t *info, static bool background_threads_disable_single(tsd_t *tsd, background_thread_info_t *info) { if (info == &background_thread_info[0]) { - malloc_mutex_assert_owner(tsd_tsdn(tsd), - &background_thread_lock); + malloc_mutex_assert_owner( + tsd_tsdn(tsd), &background_thread_lock); } else { - malloc_mutex_assert_not_owner(tsd_tsdn(tsd), - &background_thread_lock); + malloc_mutex_assert_not_owner( + tsd_tsdn(tsd), &background_thread_lock); } pre_reentrancy(tsd, NULL); @@ -280,21 +344,23 @@ background_thread_create_signals_masked(pthread_t *thread, sigset_t set; sigfillset(&set); sigset_t oldset; - int mask_err = pthread_sigmask(SIG_SETMASK, &set, &oldset); + int mask_err = pthread_sigmask(SIG_SETMASK, &set, &oldset); if (mask_err != 0) { return mask_err; } - int create_err = pthread_create_wrapper(thread, attr, start_routine, - arg); + int create_err = pthread_create_wrapper( + thread, attr, start_routine, arg); /* * Restore the signal mask. Failure to restore the signal mask here * changes program behavior. */ int restore_err = pthread_sigmask(SIG_SETMASK, &oldset, NULL); if (restore_err != 0) { - malloc_printf(": background thread creation " + malloc_printf( + ": background thread creation " "failed (%d), and signal mask restoration failed " - "(%d)\n", create_err, restore_err); + "(%d)\n", + create_err, restore_err); if (opt_abort) { abort(); } @@ -303,7 +369,8 @@ background_thread_create_signals_masked(pthread_t *thread, } static bool -check_background_thread_creation(tsd_t *tsd, unsigned *n_created, +check_background_thread_creation(tsd_t *tsd, + const size_t const_max_background_threads, unsigned *n_created, bool *created_threads) { bool ret = false; if (likely(*n_created == n_background_threads)) { @@ -312,7 +379,7 @@ check_background_thread_creation(tsd_t *tsd, unsigned *n_created, tsdn_t *tsdn = tsd_tsdn(tsd); malloc_mutex_unlock(tsdn, &background_thread_info[0].mtx); - for (unsigned i = 1; i < max_background_threads; i++) { + for (unsigned i = 1; i < const_max_background_threads; i++) { if (created_threads[i]) { continue; } @@ -330,6 +397,7 @@ check_background_thread_creation(tsd_t *tsd, unsigned *n_created, pre_reentrancy(tsd, NULL); int err = background_thread_create_signals_masked(&info->thread, + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ NULL, background_thread_entry, (void *)(uintptr_t)i); post_reentrancy(tsd); @@ -337,8 +405,10 @@ check_background_thread_creation(tsd_t *tsd, unsigned *n_created, (*n_created)++; created_threads[i] = true; } else { - malloc_printf(": background thread " - "creation failed (%d)\n", err); + malloc_printf( + ": background thread " + "creation failed (%d)\n", + err); if (opt_abort) { abort(); } @@ -354,25 +424,35 @@ check_background_thread_creation(tsd_t *tsd, unsigned *n_created, static void background_thread0_work(tsd_t *tsd) { - /* Thread0 is also responsible for launching / terminating threads. */ - VARIABLE_ARRAY(bool, created_threads, max_background_threads); + /* + * Thread0 is also responsible for launching / terminating threads. + * We are guaranteed that `max_background_threads` will not change + * underneath us. Unfortunately static analysis tools do not understand + * this, so we are extracting `max_background_threads` into a local + * variable solely for the sake of exposing this information to such + * tools. + */ + const size_t const_max_background_threads = max_background_threads; + assert(const_max_background_threads > 0); + VARIABLE_ARRAY(bool, created_threads, const_max_background_threads); unsigned i; - for (i = 1; i < max_background_threads; i++) { + for (i = 1; i < const_max_background_threads; i++) { created_threads[i] = false; } /* Start working, and create more threads when asked. */ unsigned n_created = 1; while (background_thread_info[0].state != background_thread_stopped) { - if (background_thread_pause_check(tsd_tsdn(tsd), - &background_thread_info[0])) { + if (background_thread_pause_check( + tsd_tsdn(tsd), &background_thread_info[0])) { continue; } - if (check_background_thread_creation(tsd, &n_created, - (bool *)&created_threads)) { + if (check_background_thread_creation(tsd, + const_max_background_threads, &n_created, + created_threads)) { continue; } - background_work_sleep_once(tsd_tsdn(tsd), - &background_thread_info[0], 0); + background_work_sleep_once( + tsd_tsdn(tsd), &background_thread_info[0], 0); } /* @@ -380,7 +460,7 @@ background_thread0_work(tsd_t *tsd) { * the global background_thread mutex (and is waiting) for us. */ assert(!background_thread_enabled()); - for (i = 1; i < max_background_threads; i++) { + for (i = 1; i < const_max_background_threads; i++) { background_thread_info_t *info = &background_thread_info[i]; assert(info->state != background_thread_paused); if (created_threads[i]) { @@ -389,8 +469,8 @@ background_thread0_work(tsd_t *tsd) { malloc_mutex_lock(tsd_tsdn(tsd), &info->mtx); if (info->state != background_thread_stopped) { /* The thread was not created. */ - assert(info->state == - background_thread_started); + assert( + info->state == background_thread_started); n_background_threads--; info->state = background_thread_stopped; } @@ -406,14 +486,14 @@ background_work(tsd_t *tsd, unsigned ind) { background_thread_info_t *info = &background_thread_info[ind]; malloc_mutex_lock(tsd_tsdn(tsd), &info->mtx); - background_thread_wakeup_time_set(tsd_tsdn(tsd), info, - BACKGROUND_THREAD_INDEFINITE_SLEEP); + background_thread_wakeup_time_set( + tsd_tsdn(tsd), info, BACKGROUND_THREAD_INDEFINITE_SLEEP); if (ind == 0) { background_thread0_work(tsd); } else { while (info->state != background_thread_stopped) { - if (background_thread_pause_check(tsd_tsdn(tsd), - info)) { + if (background_thread_pause_check( + tsd_tsdn(tsd), info)) { continue; } background_work_sleep_once(tsd_tsdn(tsd), info, ind); @@ -428,11 +508,11 @@ static void * background_thread_entry(void *ind_arg) { unsigned thread_ind = (unsigned)(uintptr_t)ind_arg; assert(thread_ind < max_background_threads); -#ifdef JEMALLOC_HAVE_PTHREAD_SETNAME_NP +# ifdef JEMALLOC_HAVE_PTHREAD_SETNAME_NP pthread_setname_np(pthread_self(), "jemalloc_bg_thd"); -#elif defined(__FreeBSD__) || defined(__DragonFly__) +# elif defined(JEMALLOC_HAVE_PTHREAD_SET_NAME_NP) pthread_set_name_np(pthread_self(), "jemalloc_bg_thd"); -#endif +# endif if (opt_percpu_arena != percpu_arena_disabled) { set_current_thread_affinity((int)thread_ind); } @@ -442,8 +522,8 @@ background_thread_entry(void *ind_arg) { * turn triggers another background thread creation). */ background_work(tsd_internal_fetch(), thread_ind); - assert(pthread_equal(pthread_self(), - background_thread_info[thread_ind].thread)); + assert(pthread_equal( + pthread_self(), background_thread_info[thread_ind].thread)); return NULL; } @@ -467,8 +547,13 @@ background_thread_create_locked(tsd_t *tsd, unsigned arena_ind) { bool need_new_thread; malloc_mutex_lock(tsd_tsdn(tsd), &info->mtx); - need_new_thread = background_thread_enabled() && - (info->state == background_thread_stopped); + /* + * The last check is there to leave Thread 0 creation entirely + * to the initializing thread (arena 0). + */ + need_new_thread = background_thread_enabled() + && (info->state == background_thread_stopped) + && (thread_ind != 0 || arena_ind == 0); if (need_new_thread) { background_thread_init(tsd, info); } @@ -480,7 +565,6 @@ background_thread_create_locked(tsd_t *tsd, unsigned arena_ind) { /* Threads are created asynchronously by Thread 0. */ background_thread_info_t *t0 = &background_thread_info[0]; malloc_mutex_lock(tsd_tsdn(tsd), &t0->mtx); - assert(t0->state == background_thread_started); pthread_cond_signal(&t0->cond); malloc_mutex_unlock(tsd_tsdn(tsd), &t0->mtx); @@ -493,12 +577,15 @@ background_thread_create_locked(tsd_t *tsd, unsigned arena_ind) { * background threads with the underlying pthread_create. */ int err = background_thread_create_signals_masked(&info->thread, NULL, + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ background_thread_entry, (void *)thread_ind); post_reentrancy(tsd); if (err != 0) { - malloc_printf(": arena 0 background thread creation " - "failed (%d)\n", err); + malloc_printf( + ": arena 0 background thread creation " + "failed (%d)\n", + err); malloc_mutex_lock(tsd_tsdn(tsd), &info->mtx); info->state = background_thread_stopped; n_background_threads--; @@ -531,7 +618,7 @@ background_threads_enable(tsd_t *tsd) { VARIABLE_ARRAY(bool, marked, max_background_threads); unsigned nmarked; - for (unsigned i = 0; i < max_background_threads; i++) { + for (size_t i = 0; i < max_background_threads; i++) { marked[i] = false; } nmarked = 0; @@ -540,12 +627,12 @@ background_threads_enable(tsd_t *tsd) { /* Mark the threads we need to create for thread 0. */ unsigned narenas = narenas_total_get(); for (unsigned i = 1; i < narenas; i++) { - if (marked[i % max_background_threads] || - arena_get(tsd_tsdn(tsd), i, false) == NULL) { + if (marked[i % max_background_threads] + || arena_get(tsd_tsdn(tsd), i, false) == NULL) { continue; } - background_thread_info_t *info = &background_thread_info[ - i % max_background_threads]; + background_thread_info_t *info = + &background_thread_info[i % max_background_threads]; malloc_mutex_lock(tsd_tsdn(tsd), &info->mtx); assert(info->state == background_thread_stopped); background_thread_init(tsd, info); @@ -563,8 +650,8 @@ background_threads_enable(tsd_t *tsd) { for (unsigned i = 0; i < narenas; i++) { arena_t *arena = arena_get(tsd_tsdn(tsd), i, false); if (arena != NULL) { - pa_shard_set_deferral_allowed(tsd_tsdn(tsd), - &arena->pa_shard, true); + pa_shard_set_deferral_allowed( + tsd_tsdn(tsd), &arena->pa_shard, true); } } return false; @@ -576,8 +663,8 @@ background_threads_disable(tsd_t *tsd) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &background_thread_lock); /* Thread 0 will be responsible for terminating other threads. */ - if (background_threads_disable_single(tsd, - &background_thread_info[0])) { + if (background_threads_disable_single( + tsd, &background_thread_info[0])) { return true; } assert(n_background_threads == 0); @@ -585,8 +672,8 @@ background_threads_disable(tsd_t *tsd) { for (unsigned i = 0; i < narenas; i++) { arena_t *arena = arena_get(tsd_tsdn(tsd), i, false); if (arena != NULL) { - pa_shard_set_deferral_allowed(tsd_tsdn(tsd), - &arena->pa_shard, false); + pa_shard_set_deferral_allowed( + tsd_tsdn(tsd), &arena->pa_shard, false); } } @@ -599,15 +686,15 @@ background_thread_is_started(background_thread_info_t *info) { } void -background_thread_wakeup_early(background_thread_info_t *info, - nstime_t *remaining_sleep) { +background_thread_wakeup_early( + background_thread_info_t *info, nstime_t *remaining_sleep) { /* * This is an optimization to increase batching. At this point * we know that background thread wakes up soon, so the time to cache * the just freed memory is bounded and low. */ - if (remaining_sleep != NULL && nstime_ns(remaining_sleep) < - BACKGROUND_THREAD_MIN_INTERVAL_NS) { + if (remaining_sleep != NULL + && nstime_ns(remaining_sleep) < BACKGROUND_THREAD_MIN_INTERVAL_NS) { return; } pthread_cond_signal(&info->cond); @@ -629,8 +716,8 @@ background_thread_prefork1(tsdn_t *tsdn) { void background_thread_postfork_parent(tsdn_t *tsdn) { for (unsigned i = 0; i < max_background_threads; i++) { - malloc_mutex_postfork_parent(tsdn, - &background_thread_info[i].mtx); + malloc_mutex_postfork_parent( + tsdn, &background_thread_info[i].mtx); } malloc_mutex_postfork_parent(tsdn, &background_thread_lock); } @@ -638,8 +725,8 @@ background_thread_postfork_parent(tsdn_t *tsdn) { void background_thread_postfork_child(tsdn_t *tsdn) { for (unsigned i = 0; i < max_background_threads; i++) { - malloc_mutex_postfork_child(tsdn, - &background_thread_info[i].mtx); + malloc_mutex_postfork_child( + tsdn, &background_thread_info[i].mtx); } malloc_mutex_postfork_child(tsdn, &background_thread_lock); if (!background_thread_enabled_at_fork) { @@ -688,8 +775,8 @@ background_thread_stats_read(tsdn_t *tsdn, background_thread_stats_t *stats) { if (info->state != background_thread_stopped) { num_runs += info->tot_n_runs; nstime_add(&stats->run_interval, &info->tot_sleep_time); - malloc_mutex_prof_max_update(tsdn, - &stats->max_counter_per_bg_thd, &info->mtx); + malloc_mutex_prof_max_update( + tsdn, &stats->max_counter_per_bg_thd, &info->mtx); } malloc_mutex_unlock(tsdn, &info->mtx); } @@ -702,42 +789,9 @@ background_thread_stats_read(tsdn_t *tsdn, background_thread_stats_t *stats) { return false; } -#undef BACKGROUND_THREAD_NPAGES_THRESHOLD -#undef BILLION -#undef BACKGROUND_THREAD_MIN_INTERVAL_NS - -#ifdef JEMALLOC_HAVE_DLSYM -#include -#endif - -static bool -pthread_create_fptr_init(void) { - if (pthread_create_fptr != NULL) { - return false; - } - /* - * Try the next symbol first, because 1) when use lazy_lock we have a - * wrapper for pthread_create; and 2) application may define its own - * wrapper as well (and can call malloc within the wrapper). - */ -#ifdef JEMALLOC_HAVE_DLSYM - pthread_create_fptr = dlsym(RTLD_NEXT, "pthread_create"); -#else - pthread_create_fptr = NULL; -#endif - if (pthread_create_fptr == NULL) { - if (config_lazy_lock) { - malloc_write(": Error in dlsym(RTLD_NEXT, " - "\"pthread_create\")\n"); - abort(); - } else { - /* Fall back to the default symbol. */ - pthread_create_fptr = pthread_create; - } - } - - return false; -} +# undef BACKGROUND_THREAD_NPAGES_THRESHOLD +# undef BILLION +# undef BACKGROUND_THREAD_MIN_INTERVAL_NS /* * When lazy lock is enabled, we need to make sure setting isthreaded before @@ -748,24 +802,24 @@ pthread_create_fptr_init(void) { void background_thread_ctl_init(tsdn_t *tsdn) { malloc_mutex_assert_not_owner(tsdn, &background_thread_lock); -#ifdef JEMALLOC_PTHREAD_CREATE_WRAPPER +# ifdef JEMALLOC_PTHREAD_CREATE_WRAPPER pthread_create_fptr_init(); pthread_create_wrapper_init(); -#endif +# endif } #endif /* defined(JEMALLOC_BACKGROUND_THREAD) */ -bool -background_thread_boot0(void) { + bool background_thread_boot0(void) { if (!have_background_thread && opt_background_thread) { - malloc_printf(": option background_thread currently " + malloc_printf( + ": option background_thread currently " "supports pthread only\n"); return true; } #ifdef JEMALLOC_PTHREAD_CREATE_WRAPPER - if ((config_lazy_lock || opt_background_thread) && - pthread_create_fptr_init()) { + if ((config_lazy_lock || opt_background_thread) + && pthread_create_fptr_init()) { return true; } #endif @@ -783,17 +837,16 @@ background_thread_boot1(tsdn_t *tsdn, base_t *base) { } max_background_threads = opt_max_background_threads; - background_thread_enabled_set(tsdn, opt_background_thread); if (malloc_mutex_init(&background_thread_lock, - "background_thread_global", - WITNESS_RANK_BACKGROUND_THREAD_GLOBAL, - malloc_mutex_rank_exclusive)) { + "background_thread_global", + WITNESS_RANK_BACKGROUND_THREAD_GLOBAL, + malloc_mutex_rank_exclusive)) { return true; } background_thread_info = (background_thread_info_t *)base_alloc(tsdn, - base, opt_max_background_threads * - sizeof(background_thread_info_t), CACHELINE); + base, opt_max_background_threads * sizeof(background_thread_info_t), + CACHELINE); if (background_thread_info == NULL) { return true; } @@ -802,8 +855,8 @@ background_thread_boot1(tsdn_t *tsdn, base_t *base) { background_thread_info_t *info = &background_thread_info[i]; /* Thread mutex is rank_inclusive because of thread0. */ if (malloc_mutex_init(&info->mtx, "background_thread", - WITNESS_RANK_BACKGROUND_THREAD, - malloc_mutex_address_ordered)) { + WITNESS_RANK_BACKGROUND_THREAD, + malloc_mutex_address_ordered)) { return true; } if (pthread_cond_init(&info->cond, NULL)) { @@ -814,7 +867,8 @@ background_thread_boot1(tsdn_t *tsdn, base_t *base) { background_thread_info_init(tsdn, info); malloc_mutex_unlock(tsdn, &info->mtx); } + /* Using _impl to bypass the locking check during init. */ + background_thread_enabled_set_impl(opt_background_thread); #endif - return false; } diff --git a/dep/jemalloc/src/base.c b/dep/jemalloc/src/base.c index 7f4d67564b746..ef7f0dd456b0d 100644 --- a/dep/jemalloc/src/base.c +++ b/dep/jemalloc/src/base.c @@ -12,7 +12,7 @@ * of metadata), since more metadata (e.g. rtree nodes) come from a0's base. */ -#define BASE_AUTO_THP_THRESHOLD 2 +#define BASE_AUTO_THP_THRESHOLD 2 #define BASE_AUTO_THP_THRESHOLD_A0 5 /******************************************************************************/ @@ -22,45 +22,46 @@ static base_t *b0; metadata_thp_mode_t opt_metadata_thp = METADATA_THP_DEFAULT; -const char *metadata_thp_mode_names[] = { - "disabled", - "auto", - "always" -}; +const char *const metadata_thp_mode_names[] = {"disabled", "auto", "always"}; /******************************************************************************/ static inline bool metadata_thp_madvise(void) { return (metadata_thp_enabled() && - (init_system_thp_mode == thp_mode_default)); + (init_system_thp_mode == system_thp_mode_madvise)); } static void * base_map(tsdn_t *tsdn, ehooks_t *ehooks, unsigned ind, size_t size) { void *addr; - bool zero = true; - bool commit = true; + bool zero = true; + bool commit = true; - /* Use huge page sizes and alignment regardless of opt_metadata_thp. */ - assert(size == HUGEPAGE_CEILING(size)); - size_t alignment = HUGEPAGE; + /* + * Use huge page sizes and alignment when opt_metadata_thp is enabled + * or auto. + */ + size_t alignment; + if (opt_metadata_thp == metadata_thp_disabled) { + alignment = BASE_BLOCK_MIN_ALIGN; + } else { + assert(size == HUGEPAGE_CEILING(size)); + alignment = HUGEPAGE; + } if (ehooks_are_default(ehooks)) { addr = extent_alloc_mmap(NULL, size, alignment, &zero, &commit); - if (have_madvise_huge && addr) { - pages_set_thp_state(addr, size); - } } else { - addr = ehooks_alloc(tsdn, ehooks, NULL, size, alignment, &zero, - &commit); + addr = ehooks_alloc( + tsdn, ehooks, NULL, size, alignment, &zero, &commit); } return addr; } static void -base_unmap(tsdn_t *tsdn, ehooks_t *ehooks, unsigned ind, void *addr, - size_t size) { +base_unmap( + tsdn_t *tsdn, ehooks_t *ehooks, unsigned ind, void *addr, size_t size) { /* * Cascade through dalloc, decommit, purge_forced, and purge_lazy, * stopping at first success. This cascade is performed for consistency @@ -104,21 +105,31 @@ base_unmap(tsdn_t *tsdn, ehooks_t *ehooks, unsigned ind, void *addr, label_done: if (metadata_thp_madvise()) { /* Set NOHUGEPAGE after unmap to avoid kernel defrag. */ - assert(((uintptr_t)addr & HUGEPAGE_MASK) == 0 && - (size & HUGEPAGE_MASK) == 0); + assert(((uintptr_t)addr & HUGEPAGE_MASK) == 0 + && (size & HUGEPAGE_MASK) == 0); pages_nohuge(addr, size); } } +static inline bool +base_edata_is_reused(edata_t *edata) { + /* + * Borrow the guarded bit to indicate if the extent is a recycled one, + * i.e. the ones returned to base for reuse; currently only tcache bin + * stacks. Skips stats updating if so (needed for this purpose only). + */ + return edata_guarded_get(edata); +} + static void -base_edata_init(size_t *extent_sn_next, edata_t *edata, void *addr, - size_t size) { +base_edata_init( + size_t *extent_sn_next, edata_t *edata, void *addr, size_t size) { size_t sn; sn = *extent_sn_next; (*extent_sn_next)++; - edata_binit(edata, addr, size, sn); + edata_binit(edata, addr, size, sn, false /* is_reused */); } static size_t @@ -135,6 +146,42 @@ base_get_num_blocks(base_t *base, bool with_new_block) { return n_blocks; } +static void +huge_arena_auto_thp_switch(tsdn_t *tsdn, pac_thp_t *pac_thp) { + assert(opt_huge_arena_pac_thp); +#ifdef JEMALLOC_JET + if (pac_thp->auto_thp_switched) { + return; + } +#else + /* + * The switch should be turned on only once when the b0 auto thp switch is + * turned on, unless it's a unit test where b0 gets deleted and then + * recreated. + */ + assert(!pac_thp->auto_thp_switched); +#endif + + edata_list_active_t *pending_list; + malloc_mutex_lock(tsdn, &pac_thp->lock); + pending_list = &pac_thp->thp_lazy_list; + pac_thp->auto_thp_switched = true; + malloc_mutex_unlock(tsdn, &pac_thp->lock); + + unsigned cnt = 0; + edata_t *edata; + ql_foreach (edata, &pending_list->head, ql_link_active) { + assert(edata != NULL); + void *addr = edata_addr_get(edata); + size_t size = edata_size_get(edata); + assert(HUGEPAGE_ADDR2BASE(addr) == addr); + assert(HUGEPAGE_CEILING(size) == size && size != 0); + pages_huge(addr, size); + cnt++; + } + assert(cnt == atomic_load_u(&pac_thp->n_thp_lazy, ATOMIC_RELAXED)); +} + static void base_auto_thp_switch(tsdn_t *tsdn, base_t *base) { assert(opt_metadata_thp == metadata_thp_auto); @@ -145,11 +192,11 @@ base_auto_thp_switch(tsdn_t *tsdn, base_t *base) { /* Called when adding a new block. */ bool should_switch; if (base_ind_get(base) != 0) { - should_switch = (base_get_num_blocks(base, true) == - BASE_AUTO_THP_THRESHOLD); + should_switch = (base_get_num_blocks(base, true) + == BASE_AUTO_THP_THRESHOLD); } else { - should_switch = (base_get_num_blocks(base, true) == - BASE_AUTO_THP_THRESHOLD_A0); + should_switch = (base_get_num_blocks(base, true) + == BASE_AUTO_THP_THRESHOLD_A0); } if (!should_switch) { return; @@ -163,77 +210,141 @@ base_auto_thp_switch(tsdn_t *tsdn, base_t *base) { assert((block->size & HUGEPAGE_MASK) == 0); pages_huge(block, block->size); if (config_stats) { - base->n_thp += HUGEPAGE_CEILING(block->size - - edata_bsize_get(&block->edata)) >> LG_HUGEPAGE; + base->n_thp += HUGEPAGE_CEILING(block->size + - edata_bsize_get(&block->edata)) + >> LG_HUGEPAGE; } block = block->next; assert(block == NULL || (base_ind_get(base) == 0)); } + + /* Handle the THP auto switch for the huge arena. */ + if (!huge_arena_pac_thp.thp_madvise || base_ind_get(base) != 0) { + /* + * The huge arena THP auto-switch is triggered only by b0 switch, + * provided that the huge arena is initialized. If b0 switch is enabled + * before huge arena is ready, the huge arena switch will be enabled + * during huge_arena_pac_thp initialization. + */ + return; + } + /* + * thp_madvise above is by default false and set in arena_init_huge() with + * b0 mtx held. So if we reach here, it means the entire huge_arena_pac_thp + * is initialized and we can safely switch the THP. + */ + malloc_mutex_unlock(tsdn, &base->mtx); + huge_arena_auto_thp_switch(tsdn, &huge_arena_pac_thp); + malloc_mutex_lock(tsdn, &base->mtx); } static void * -base_extent_bump_alloc_helper(edata_t *edata, size_t *gap_size, size_t size, - size_t alignment) { +base_extent_bump_alloc_helper( + edata_t *edata, size_t *gap_size, size_t size, size_t alignment) { void *ret; assert(alignment == ALIGNMENT_CEILING(alignment, QUANTUM)); assert(size == ALIGNMENT_CEILING(size, alignment)); - *gap_size = ALIGNMENT_CEILING((uintptr_t)edata_addr_get(edata), - alignment) - (uintptr_t)edata_addr_get(edata); - ret = (void *)((uintptr_t)edata_addr_get(edata) + *gap_size); + *gap_size = ALIGNMENT_CEILING( + (uintptr_t)edata_addr_get(edata), alignment) + - (uintptr_t)edata_addr_get(edata); + ret = (void *)((byte_t *)edata_addr_get(edata) + *gap_size); assert(edata_bsize_get(edata) >= *gap_size + size); - edata_binit(edata, (void *)((uintptr_t)edata_addr_get(edata) + - *gap_size + size), edata_bsize_get(edata) - *gap_size - size, - edata_sn_get(edata)); + edata_binit(edata, + (void *)((byte_t *)edata_addr_get(edata) + *gap_size + size), + edata_bsize_get(edata) - *gap_size - size, edata_sn_get(edata), + base_edata_is_reused(edata)); return ret; } static void -base_extent_bump_alloc_post(base_t *base, edata_t *edata, size_t gap_size, - void *addr, size_t size) { +base_edata_heap_insert(tsdn_t *tsdn, base_t *base, edata_t *edata) { + malloc_mutex_assert_owner(tsdn, &base->mtx); + + size_t bsize = edata_bsize_get(edata); + assert(bsize > 0); + /* + * Compute the index for the largest size class that does not exceed + * extent's size. + */ + szind_t index_floor = sz_size2index(bsize + 1) - 1; + edata_heap_insert(&base->avail[index_floor], edata); +} + +/* + * Only can be called by top-level functions, since it may call base_alloc + * internally when cache is empty. + */ +static edata_t * +base_alloc_base_edata(tsdn_t *tsdn, base_t *base) { + edata_t *edata; + + malloc_mutex_lock(tsdn, &base->mtx); + edata = edata_avail_first(&base->edata_avail); + if (edata != NULL) { + edata_avail_remove(&base->edata_avail, edata); + } + malloc_mutex_unlock(tsdn, &base->mtx); + + if (edata == NULL) { + edata = base_alloc_edata(tsdn, base); + } + + return edata; +} + +static void +base_extent_bump_alloc_post(tsdn_t *tsdn, base_t *base, edata_t *edata, + size_t gap_size, void *addr, size_t size) { if (edata_bsize_get(edata) > 0) { - /* - * Compute the index for the largest size class that does not - * exceed extent's size. - */ - szind_t index_floor = - sz_size2index(edata_bsize_get(edata) + 1) - 1; - edata_heap_insert(&base->avail[index_floor], edata); + base_edata_heap_insert(tsdn, base, edata); + } else { + /* Freed base edata_t stored in edata_avail. */ + edata_avail_insert(&base->edata_avail, edata); } - if (config_stats) { + if (config_stats && !base_edata_is_reused(edata)) { base->allocated += size; /* * Add one PAGE to base_resident for every page boundary that is * crossed by the new allocation. Adjust n_thp similarly when * metadata_thp is enabled. */ - base->resident += PAGE_CEILING((uintptr_t)addr + size) - - PAGE_CEILING((uintptr_t)addr - gap_size); + base->resident += PAGE_CEILING((uintptr_t)addr + size) + - PAGE_CEILING((uintptr_t)addr - gap_size); assert(base->allocated <= base->resident); assert(base->resident <= base->mapped); - if (metadata_thp_madvise() && (opt_metadata_thp == - metadata_thp_always || base->auto_thp_switched)) { + if (metadata_thp_madvise() + && (opt_metadata_thp == metadata_thp_always + || base->auto_thp_switched)) { base->n_thp += (HUGEPAGE_CEILING((uintptr_t)addr + size) - - HUGEPAGE_CEILING((uintptr_t)addr - gap_size)) >> - LG_HUGEPAGE; + - HUGEPAGE_CEILING( + (uintptr_t)addr - gap_size)) + >> LG_HUGEPAGE; assert(base->mapped >= base->n_thp << LG_HUGEPAGE); } } } static void * -base_extent_bump_alloc(base_t *base, edata_t *edata, size_t size, - size_t alignment) { - void *ret; +base_extent_bump_alloc( + tsdn_t *tsdn, base_t *base, edata_t *edata, size_t size, size_t alignment) { + void *ret; size_t gap_size; ret = base_extent_bump_alloc_helper(edata, &gap_size, size, alignment); - base_extent_bump_alloc_post(base, edata, gap_size, ret, size); + base_extent_bump_alloc_post(tsdn, base, edata, gap_size, ret, size); return ret; } +static size_t +base_block_size_ceil(size_t block_size) { + return opt_metadata_thp == metadata_thp_disabled + ? ALIGNMENT_CEILING(block_size, BASE_BLOCK_MIN_ALIGN) + : HUGEPAGE_CEILING(block_size); +} + /* * Allocate a block of virtual memory that is large enough to start with a * base_block_t header, followed by an object of specified size and alignment. @@ -246,36 +357,38 @@ base_block_alloc(tsdn_t *tsdn, base_t *base, ehooks_t *ehooks, unsigned ind, alignment = ALIGNMENT_CEILING(alignment, QUANTUM); size_t usize = ALIGNMENT_CEILING(size, alignment); size_t header_size = sizeof(base_block_t); - size_t gap_size = ALIGNMENT_CEILING(header_size, alignment) - - header_size; + size_t gap_size = ALIGNMENT_CEILING(header_size, alignment) + - header_size; /* * Create increasingly larger blocks in order to limit the total number * of disjoint virtual memory ranges. Choose the next size in the page * size class series (skipping size classes that are not a multiple of - * HUGEPAGE), or a size large enough to satisfy the requested size and - * alignment, whichever is larger. + * HUGEPAGE when using metadata_thp), or a size large enough to satisfy + * the requested size and alignment, whichever is larger. */ - size_t min_block_size = HUGEPAGE_CEILING(sz_psz2u(header_size + gap_size - + usize)); - pszind_t pind_next = (*pind_last + 1 < sz_psz2ind(SC_LARGE_MAXCLASS)) ? - *pind_last + 1 : *pind_last; - size_t next_block_size = HUGEPAGE_CEILING(sz_pind2sz(pind_next)); - size_t block_size = (min_block_size > next_block_size) ? min_block_size - : next_block_size; - base_block_t *block = (base_block_t *)base_map(tsdn, ehooks, ind, - block_size); + size_t min_block_size = base_block_size_ceil( + sz_psz2u(header_size + gap_size + usize)); + pszind_t pind_next = (*pind_last + 1 < sz_psz2ind(SC_LARGE_MAXCLASS)) + ? *pind_last + 1 + : *pind_last; + size_t next_block_size = base_block_size_ceil(sz_pind2sz(pind_next)); + size_t block_size = (min_block_size > next_block_size) + ? min_block_size + : next_block_size; + base_block_t *block = (base_block_t *)base_map( + tsdn, ehooks, ind, block_size); if (block == NULL) { return NULL; } if (metadata_thp_madvise()) { void *addr = (void *)block; - assert(((uintptr_t)addr & HUGEPAGE_MASK) == 0 && - (block_size & HUGEPAGE_MASK) == 0); + assert(((uintptr_t)addr & HUGEPAGE_MASK) == 0 + && (block_size & HUGEPAGE_MASK) == 0); if (opt_metadata_thp == metadata_thp_always) { pages_huge(addr, block_size); - } else if (opt_metadata_thp == metadata_thp_auto && - base != NULL) { + } else if (opt_metadata_thp == metadata_thp_auto + && base != NULL) { /* base != NULL indicates this is not a new base. */ malloc_mutex_lock(tsdn, &base->mtx); base_auto_thp_switch(tsdn, base); @@ -291,7 +404,7 @@ base_block_alloc(tsdn_t *tsdn, base_t *base, ehooks_t *ehooks, unsigned ind, block->next = NULL; assert(block_size >= header_size); base_edata_init(extent_sn_next, &block->edata, - (void *)((uintptr_t)block + header_size), block_size - header_size); + (void *)((byte_t *)block + header_size), block_size - header_size); return block; } @@ -322,12 +435,12 @@ base_extent_alloc(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment) { base->allocated += sizeof(base_block_t); base->resident += PAGE_CEILING(sizeof(base_block_t)); base->mapped += block->size; - if (metadata_thp_madvise() && - !(opt_metadata_thp == metadata_thp_auto - && !base->auto_thp_switched)) { + if (metadata_thp_madvise() + && !(opt_metadata_thp == metadata_thp_auto + && !base->auto_thp_switched)) { assert(base->n_thp > 0); - base->n_thp += HUGEPAGE_CEILING(sizeof(base_block_t)) >> - LG_HUGEPAGE; + base->n_thp += HUGEPAGE_CEILING(sizeof(base_block_t)) + >> LG_HUGEPAGE; } assert(base->allocated <= base->resident); assert(base->resident <= base->mapped); @@ -345,7 +458,7 @@ base_t * base_new(tsdn_t *tsdn, unsigned ind, const extent_hooks_t *extent_hooks, bool metadata_use_hooks) { pszind_t pind_last = 0; - size_t extent_sn_next = 0; + size_t extent_sn_next = 0; /* * The base will contain the ehooks eventually, but it itself is @@ -353,9 +466,10 @@ base_new(tsdn_t *tsdn, unsigned ind, const extent_hooks_t *extent_hooks, * memory, and then initialize the ehooks within the base_t. */ ehooks_t fake_ehooks; - ehooks_init(&fake_ehooks, metadata_use_hooks ? - (extent_hooks_t *)extent_hooks : - (extent_hooks_t *)&ehooks_default_extent_hooks, ind); + ehooks_init(&fake_ehooks, + metadata_use_hooks ? (extent_hooks_t *)extent_hooks + : (extent_hooks_t *)&ehooks_default_extent_hooks, + ind); base_block_t *block = base_block_alloc(tsdn, NULL, &fake_ehooks, ind, &pind_last, &extent_sn_next, sizeof(base_t), QUANTUM); @@ -363,17 +477,18 @@ base_new(tsdn_t *tsdn, unsigned ind, const extent_hooks_t *extent_hooks, return NULL; } - size_t gap_size; - size_t base_alignment = CACHELINE; - size_t base_size = ALIGNMENT_CEILING(sizeof(base_t), base_alignment); - base_t *base = (base_t *)base_extent_bump_alloc_helper(&block->edata, - &gap_size, base_size, base_alignment); + size_t gap_size; + size_t base_alignment = CACHELINE; + size_t base_size = ALIGNMENT_CEILING(sizeof(base_t), base_alignment); + base_t *base = (base_t *)base_extent_bump_alloc_helper( + &block->edata, &gap_size, base_size, base_alignment); ehooks_init(&base->ehooks, (extent_hooks_t *)extent_hooks, ind); - ehooks_init(&base->ehooks_base, metadata_use_hooks ? - (extent_hooks_t *)extent_hooks : - (extent_hooks_t *)&ehooks_default_extent_hooks, ind); + ehooks_init(&base->ehooks_base, + metadata_use_hooks ? (extent_hooks_t *)extent_hooks + : (extent_hooks_t *)&ehooks_default_extent_hooks, + ind); if (malloc_mutex_init(&base->mtx, "base", WITNESS_RANK_BASE, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { base_unmap(tsdn, &fake_ehooks, ind, block, block->size); return NULL; } @@ -384,32 +499,41 @@ base_new(tsdn_t *tsdn, unsigned ind, const extent_hooks_t *extent_hooks, for (szind_t i = 0; i < SC_NSIZES; i++) { edata_heap_new(&base->avail[i]); } + edata_avail_new(&base->edata_avail); + if (config_stats) { + base->edata_allocated = 0; + base->rtree_allocated = 0; base->allocated = sizeof(base_block_t); base->resident = PAGE_CEILING(sizeof(base_block_t)); base->mapped = block->size; - base->n_thp = (opt_metadata_thp == metadata_thp_always) && - metadata_thp_madvise() ? HUGEPAGE_CEILING(sizeof(base_block_t)) - >> LG_HUGEPAGE : 0; + base->n_thp = (opt_metadata_thp == metadata_thp_always) + && metadata_thp_madvise() + ? HUGEPAGE_CEILING(sizeof(base_block_t)) >> LG_HUGEPAGE + : 0; assert(base->allocated <= base->resident); assert(base->resident <= base->mapped); assert(base->n_thp << LG_HUGEPAGE <= base->mapped); } - base_extent_bump_alloc_post(base, &block->edata, gap_size, base, - base_size); + + /* Locking here is only necessary because of assertions. */ + malloc_mutex_lock(tsdn, &base->mtx); + base_extent_bump_alloc_post( + tsdn, base, &block->edata, gap_size, base, base_size); + malloc_mutex_unlock(tsdn, &base->mtx); return base; } void base_delete(tsdn_t *tsdn, base_t *base) { - ehooks_t *ehooks = base_ehooks_get_for_metadata(base); + ehooks_t *ehooks = base_ehooks_get_for_metadata(base); base_block_t *next = base->blocks; do { base_block_t *block = next; next = block->next; - base_unmap(tsdn, ehooks, base_ind_get(base), block, - block->size); + base_unmap( + tsdn, ehooks, base_ind_get(base), block, block->size); } while (next != NULL); } @@ -425,15 +549,15 @@ base_ehooks_get_for_metadata(base_t *base) { extent_hooks_t * base_extent_hooks_set(base_t *base, extent_hooks_t *extent_hooks) { - extent_hooks_t *old_extent_hooks = - ehooks_get_extent_hooks_ptr(&base->ehooks); + extent_hooks_t *old_extent_hooks = ehooks_get_extent_hooks_ptr( + &base->ehooks); ehooks_init(&base->ehooks, extent_hooks, ehooks_ind_get(&base->ehooks)); return old_extent_hooks; } static void * base_alloc_impl(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment, - size_t *esn) { + size_t *esn, size_t *ret_usize) { alignment = QUANTUM_CEILING(alignment); size_t usize = ALIGNMENT_CEILING(size, alignment); size_t asize = usize + alignment - QUANTUM; @@ -457,10 +581,13 @@ base_alloc_impl(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment, goto label_return; } - ret = base_extent_bump_alloc(base, edata, usize, alignment); + ret = base_extent_bump_alloc(tsdn, base, edata, usize, alignment); if (esn != NULL) { *esn = (size_t)edata_sn_get(edata); } + if (ret_usize != NULL) { + *ret_usize = usize; + } label_return: malloc_mutex_unlock(tsdn, &base->mtx); return ret; @@ -476,30 +603,121 @@ base_alloc_impl(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment, */ void * base_alloc(tsdn_t *tsdn, base_t *base, size_t size, size_t alignment) { - return base_alloc_impl(tsdn, base, size, alignment, NULL); + return base_alloc_impl(tsdn, base, size, alignment, NULL, NULL); } edata_t * base_alloc_edata(tsdn_t *tsdn, base_t *base) { - size_t esn; - edata_t *edata = base_alloc_impl(tsdn, base, sizeof(edata_t), - EDATA_ALIGNMENT, &esn); + size_t esn, usize; + edata_t *edata = base_alloc_impl( + tsdn, base, sizeof(edata_t), EDATA_ALIGNMENT, &esn, &usize); if (edata == NULL) { return NULL; } + if (config_stats) { + base->edata_allocated += usize; + } edata_esn_set(edata, esn); return edata; } +void * +base_alloc_rtree(tsdn_t *tsdn, base_t *base, size_t size) { + size_t usize; + void *rtree = base_alloc_impl( + tsdn, base, size, CACHELINE, NULL, &usize); + if (rtree == NULL) { + return NULL; + } + if (config_stats) { + base->rtree_allocated += usize; + } + return rtree; +} + +static inline void +b0_alloc_header_size(size_t *header_size, size_t *alignment) { + *alignment = QUANTUM; + *header_size = QUANTUM > sizeof(edata_t *) ? QUANTUM + : sizeof(edata_t *); +} + +/* + * Each piece allocated here is managed by a separate edata, because it was bump + * allocated and cannot be merged back into the original base_block. This means + * it's not for general purpose: 1) they are not page aligned, nor page sized, + * and 2) the requested size should not be too small (as each piece comes with + * an edata_t). Only used for tcache bin stack allocation now. + */ +void * +b0_alloc_tcache_stack(tsdn_t *tsdn, size_t stack_size) { + base_t *base = b0get(); + edata_t *edata = base_alloc_base_edata(tsdn, base); + if (edata == NULL) { + return NULL; + } + + /* + * Reserve room for the header, which stores a pointer to the managing + * edata_t. The header itself is located right before the return + * address, so that edata can be retrieved on dalloc. Bump up to usize + * to improve reusability -- otherwise the freed stacks will be put back + * into the previous size class. + */ + size_t esn, alignment, header_size; + b0_alloc_header_size(&header_size, &alignment); + + size_t alloc_size = sz_s2u(stack_size + header_size); + void *addr = base_alloc_impl( + tsdn, base, alloc_size, alignment, &esn, NULL); + if (addr == NULL) { + edata_avail_insert(&base->edata_avail, edata); + return NULL; + } + + /* Set is_reused: see comments in base_edata_is_reused. */ + edata_binit(edata, addr, alloc_size, esn, true /* is_reused */); + *(edata_t **)addr = edata; + + return (byte_t *)addr + header_size; +} + +void +b0_dalloc_tcache_stack(tsdn_t *tsdn, void *tcache_stack) { + /* edata_t pointer stored in header. */ + size_t alignment, header_size; + b0_alloc_header_size(&header_size, &alignment); + + edata_t *edata = *(edata_t **)((byte_t *)tcache_stack - header_size); + void *addr = edata_addr_get(edata); + size_t bsize = edata_bsize_get(edata); + /* Marked as "reused" to avoid double counting stats. */ + assert(base_edata_is_reused(edata)); + assert(addr != NULL && bsize > 0); + + /* Zero out since base_alloc returns zeroed memory. */ + memset(addr, 0, bsize); + + base_t *base = b0get(); + malloc_mutex_lock(tsdn, &base->mtx); + base_edata_heap_insert(tsdn, base, edata); + malloc_mutex_unlock(tsdn, &base->mtx); +} + void -base_stats_get(tsdn_t *tsdn, base_t *base, size_t *allocated, size_t *resident, +base_stats_get(tsdn_t *tsdn, base_t *base, size_t *allocated, + size_t *edata_allocated, size_t *rtree_allocated, size_t *resident, size_t *mapped, size_t *n_thp) { cassert(config_stats); malloc_mutex_lock(tsdn, &base->mtx); assert(base->allocated <= base->resident); assert(base->resident <= base->mapped); + assert( + base->edata_allocated + base->rtree_allocated <= base->allocated); *allocated = base->allocated; + *edata_allocated = base->edata_allocated; + *rtree_allocated = base->rtree_allocated; *resident = base->resident; *mapped = base->mapped; *n_thp = base->n_thp; diff --git a/dep/jemalloc/src/bin.c b/dep/jemalloc/src/bin.c index fa20458705ac8..6bab4b227680a 100644 --- a/dep/jemalloc/src/bin.c +++ b/dep/jemalloc/src/bin.c @@ -41,7 +41,7 @@ bin_shard_sizes_boot(unsigned bin_shard_sizes[SC_NBINS]) { bool bin_init(bin_t *bin) { if (malloc_mutex_init(&bin->lock, "bin", WITNESS_RANK_BIN, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } bin->slabcur = NULL; @@ -67,3 +67,266 @@ void bin_postfork_child(tsdn_t *tsdn, bin_t *bin) { malloc_mutex_postfork_child(tsdn, &bin->lock); } + +void * +bin_slab_reg_alloc(edata_t *slab, const bin_info_t *bin_info) { + void *ret; + slab_data_t *slab_data = edata_slab_data_get(slab); + size_t regind; + + assert(edata_nfree_get(slab) > 0); + assert(!bitmap_full(slab_data->bitmap, &bin_info->bitmap_info)); + + regind = bitmap_sfu(slab_data->bitmap, &bin_info->bitmap_info); + ret = (void *)((byte_t *)edata_addr_get(slab) + + (uintptr_t)(bin_info->reg_size * regind)); + edata_nfree_dec(slab); + return ret; +} + +void +bin_slab_reg_alloc_batch( + edata_t *slab, const bin_info_t *bin_info, unsigned cnt, void **ptrs) { + slab_data_t *slab_data = edata_slab_data_get(slab); + + assert(edata_nfree_get(slab) >= cnt); + assert(!bitmap_full(slab_data->bitmap, &bin_info->bitmap_info)); + +#if (!defined JEMALLOC_INTERNAL_POPCOUNTL) || (defined BITMAP_USE_TREE) + for (unsigned i = 0; i < cnt; i++) { + size_t regind = bitmap_sfu( + slab_data->bitmap, &bin_info->bitmap_info); + *(ptrs + i) = (void *)((uintptr_t)edata_addr_get(slab) + + (uintptr_t)(bin_info->reg_size * regind)); + } +#else + unsigned group = 0; + bitmap_t g = slab_data->bitmap[group]; + unsigned i = 0; + while (i < cnt) { + while (g == 0) { + g = slab_data->bitmap[++group]; + } + size_t shift = group << LG_BITMAP_GROUP_NBITS; + size_t pop = popcount_lu(g); + if (pop > (cnt - i)) { + pop = cnt - i; + } + + /* + * Load from memory locations only once, outside the + * hot loop below. + */ + uintptr_t base = (uintptr_t)edata_addr_get(slab); + uintptr_t regsize = (uintptr_t)bin_info->reg_size; + while (pop--) { + size_t bit = cfs_lu(&g); + size_t regind = shift + bit; + /* NOLINTNEXTLINE(performance-no-int-to-ptr) */ + *(ptrs + i) = (void *)(base + regsize * regind); + + i++; + } + slab_data->bitmap[group] = g; + } +#endif + edata_nfree_sub(slab, cnt); +} + +void +bin_slabs_nonfull_insert(bin_t *bin, edata_t *slab) { + assert(edata_nfree_get(slab) > 0); + edata_heap_insert(&bin->slabs_nonfull, slab); + if (config_stats) { + bin->stats.nonfull_slabs++; + } +} + +void +bin_slabs_nonfull_remove(bin_t *bin, edata_t *slab) { + edata_heap_remove(&bin->slabs_nonfull, slab); + if (config_stats) { + bin->stats.nonfull_slabs--; + } +} + +edata_t * +bin_slabs_nonfull_tryget(bin_t *bin) { + edata_t *slab = edata_heap_remove_first(&bin->slabs_nonfull); + if (slab == NULL) { + return NULL; + } + if (config_stats) { + bin->stats.reslabs++; + bin->stats.nonfull_slabs--; + } + return slab; +} + +void +bin_slabs_full_insert(bool is_auto, bin_t *bin, edata_t *slab) { + assert(edata_nfree_get(slab) == 0); + /* + * Tracking extents is required by arena_reset, which is not allowed + * for auto arenas. Bypass this step to avoid touching the edata + * linkage (often results in cache misses) for auto arenas. + */ + if (is_auto) { + return; + } + edata_list_active_append(&bin->slabs_full, slab); +} + +void +bin_slabs_full_remove(bool is_auto, bin_t *bin, edata_t *slab) { + if (is_auto) { + return; + } + edata_list_active_remove(&bin->slabs_full, slab); +} + +void +bin_dissociate_slab(bool is_auto, edata_t *slab, bin_t *bin) { + /* Dissociate slab from bin. */ + if (slab == bin->slabcur) { + bin->slabcur = NULL; + } else { + szind_t binind = edata_szind_get(slab); + const bin_info_t *bin_info = &bin_infos[binind]; + + /* + * The following block's conditional is necessary because if the + * slab only contains one region, then it never gets inserted + * into the non-full slabs heap. + */ + if (bin_info->nregs == 1) { + bin_slabs_full_remove(is_auto, bin, slab); + } else { + bin_slabs_nonfull_remove(bin, slab); + } + } +} + +void +bin_lower_slab(tsdn_t *tsdn, bool is_auto, edata_t *slab, bin_t *bin) { + assert(edata_nfree_get(slab) > 0); + + /* + * Make sure that if bin->slabcur is non-NULL, it refers to the + * oldest/lowest non-full slab. It is okay to NULL slabcur out rather + * than proactively keeping it pointing at the oldest/lowest non-full + * slab. + */ + if (bin->slabcur != NULL && edata_snad_comp(bin->slabcur, slab) > 0) { + /* Switch slabcur. */ + if (edata_nfree_get(bin->slabcur) > 0) { + bin_slabs_nonfull_insert(bin, bin->slabcur); + } else { + bin_slabs_full_insert(is_auto, bin, bin->slabcur); + } + bin->slabcur = slab; + if (config_stats) { + bin->stats.reslabs++; + } + } else { + bin_slabs_nonfull_insert(bin, slab); + } +} + +void +bin_dalloc_slab_prepare(tsdn_t *tsdn, edata_t *slab, bin_t *bin) { + malloc_mutex_assert_owner(tsdn, &bin->lock); + + assert(slab != bin->slabcur); + if (config_stats) { + bin->stats.curslabs--; + } +} + +void +bin_dalloc_locked_handle_newly_empty( + tsdn_t *tsdn, bool is_auto, edata_t *slab, bin_t *bin) { + bin_dissociate_slab(is_auto, slab, bin); + bin_dalloc_slab_prepare(tsdn, slab, bin); +} + +void +bin_dalloc_locked_handle_newly_nonempty( + tsdn_t *tsdn, bool is_auto, edata_t *slab, bin_t *bin) { + bin_slabs_full_remove(is_auto, bin, slab); + bin_lower_slab(tsdn, is_auto, slab, bin); +} + +void +bin_refill_slabcur_with_fresh_slab(tsdn_t *tsdn, bin_t *bin, + szind_t binind, edata_t *fresh_slab) { + malloc_mutex_assert_owner(tsdn, &bin->lock); + /* Only called after slabcur and nonfull both failed. */ + assert(bin->slabcur == NULL); + assert(edata_heap_first(&bin->slabs_nonfull) == NULL); + assert(fresh_slab != NULL); + + /* A new slab from arena_slab_alloc() */ + assert(edata_nfree_get(fresh_slab) == bin_infos[binind].nregs); + if (config_stats) { + bin->stats.nslabs++; + bin->stats.curslabs++; + } + bin->slabcur = fresh_slab; +} + +void * +bin_malloc_with_fresh_slab(tsdn_t *tsdn, bin_t *bin, + szind_t binind, edata_t *fresh_slab) { + malloc_mutex_assert_owner(tsdn, &bin->lock); + bin_refill_slabcur_with_fresh_slab(tsdn, bin, binind, fresh_slab); + + return bin_slab_reg_alloc(bin->slabcur, &bin_infos[binind]); +} + +bool +bin_refill_slabcur_no_fresh_slab(tsdn_t *tsdn, bool is_auto, bin_t *bin) { + malloc_mutex_assert_owner(tsdn, &bin->lock); + /* Only called after bin_slab_reg_alloc[_batch] failed. */ + assert(bin->slabcur == NULL || edata_nfree_get(bin->slabcur) == 0); + + if (bin->slabcur != NULL) { + bin_slabs_full_insert(is_auto, bin, bin->slabcur); + } + + /* Look for a usable slab. */ + bin->slabcur = bin_slabs_nonfull_tryget(bin); + assert(bin->slabcur == NULL || edata_nfree_get(bin->slabcur) > 0); + + return (bin->slabcur == NULL); +} + +void * +bin_malloc_no_fresh_slab(tsdn_t *tsdn, bool is_auto, bin_t *bin, + szind_t binind) { + malloc_mutex_assert_owner(tsdn, &bin->lock); + if (bin->slabcur == NULL || edata_nfree_get(bin->slabcur) == 0) { + if (bin_refill_slabcur_no_fresh_slab(tsdn, is_auto, bin)) { + return NULL; + } + } + + assert(bin->slabcur != NULL && edata_nfree_get(bin->slabcur) > 0); + return bin_slab_reg_alloc(bin->slabcur, &bin_infos[binind]); +} + +bin_t * +bin_choose(tsdn_t *tsdn, arena_t *arena, szind_t binind, + unsigned *binshard_p) { + unsigned binshard; + if (tsdn_null(tsdn) || tsd_arena_get(tsdn_tsd(tsdn)) == NULL) { + binshard = 0; + } else { + binshard = tsd_binshardsp_get(tsdn_tsd(tsdn))->binshard[binind]; + } + assert(binshard < bin_infos[binind].n_shards); + if (binshard_p != NULL) { + *binshard_p = binshard; + } + return arena_get_bin(arena, binind, binshard); +} diff --git a/dep/jemalloc/src/bin_info.c b/dep/jemalloc/src/bin_info.c index 8629ef8817dfb..e10042fdd0745 100644 --- a/dep/jemalloc/src/bin_info.c +++ b/dep/jemalloc/src/bin_info.c @@ -10,12 +10,12 @@ bin_infos_init(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS], bin_info_t infos[SC_NBINS]) { for (unsigned i = 0; i < SC_NBINS; i++) { bin_info_t *bin_info = &infos[i]; - sc_t *sc = &sc_data->sc[i]; + sc_t *sc = &sc_data->sc[i]; bin_info->reg_size = ((size_t)1U << sc->lg_base) + ((size_t)sc->ndelta << sc->lg_delta); bin_info->slab_size = (sc->pgs << LG_PAGE); - bin_info->nregs = - (uint32_t)(bin_info->slab_size / bin_info->reg_size); + bin_info->nregs = (uint32_t)(bin_info->slab_size + / bin_info->reg_size); bin_info->n_shards = bin_shard_sizes[i]; bitmap_info_t bitmap_info = BITMAP_INFO_INITIALIZER( bin_info->nregs); diff --git a/dep/jemalloc/src/bitmap.c b/dep/jemalloc/src/bitmap.c index 0ccedc5db5bc8..8ac81a67816c6 100644 --- a/dep/jemalloc/src/bitmap.c +++ b/dep/jemalloc/src/bitmap.c @@ -10,7 +10,7 @@ void bitmap_info_init(bitmap_info_t *binfo, size_t nbits) { unsigned i; - size_t group_count; + size_t group_count; assert(nbits > 0); assert(nbits <= (ZU(1) << LG_BITMAP_MAXBITS)); @@ -24,11 +24,11 @@ bitmap_info_init(bitmap_info_t *binfo, size_t nbits) { group_count = BITMAP_BITS2GROUPS(nbits); for (i = 1; group_count > 1; i++) { assert(i < BITMAP_MAX_LEVELS); - binfo->levels[i].group_offset = binfo->levels[i-1].group_offset - + group_count; + binfo->levels[i].group_offset = + binfo->levels[i - 1].group_offset + group_count; group_count = BITMAP_BITS2GROUPS(group_count); } - binfo->levels[i].group_offset = binfo->levels[i-1].group_offset + binfo->levels[i].group_offset = binfo->levels[i - 1].group_offset + group_count; assert(binfo->levels[i].group_offset <= BITMAP_GROUPS_MAX); binfo->nlevels = i; @@ -42,7 +42,7 @@ bitmap_info_ngroups(const bitmap_info_t *binfo) { void bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo, bool fill) { - size_t extra; + size_t extra; unsigned i; /* @@ -69,12 +69,13 @@ bitmap_init(bitmap_t *bitmap, const bitmap_info_t *binfo, bool fill) { bitmap[binfo->levels[1].group_offset - 1] >>= extra; } for (i = 1; i < binfo->nlevels; i++) { - size_t group_count = binfo->levels[i].group_offset - - binfo->levels[i-1].group_offset; - extra = (BITMAP_GROUP_NBITS - (group_count & - BITMAP_GROUP_NBITS_MASK)) & BITMAP_GROUP_NBITS_MASK; + size_t group_count = binfo->levels[i].group_offset + - binfo->levels[i - 1].group_offset; + extra = (BITMAP_GROUP_NBITS + - (group_count & BITMAP_GROUP_NBITS_MASK)) + & BITMAP_GROUP_NBITS_MASK; if (extra != 0) { - bitmap[binfo->levels[i+1].group_offset - 1] >>= extra; + bitmap[binfo->levels[i + 1].group_offset - 1] >>= extra; } } } diff --git a/dep/jemalloc/src/buf_writer.c b/dep/jemalloc/src/buf_writer.c index 7c6f79403c001..3c298502e8c2e 100644 --- a/dep/jemalloc/src/buf_writer.c +++ b/dep/jemalloc/src/buf_writer.c @@ -43,8 +43,9 @@ buf_writer_init(tsdn_t *tsdn, buf_writer_t *buf_writer, write_cb_t *write_cb, if (write_cb != NULL) { buf_writer->write_cb = write_cb; } else { - buf_writer->write_cb = je_malloc_message != NULL ? - je_malloc_message : wrtmessage; + buf_writer->write_cb = je_malloc_message != NULL + ? je_malloc_message + : wrtmessage; } buf_writer->cbopaque = cbopaque; assert(buf_len >= 2); @@ -52,8 +53,8 @@ buf_writer_init(tsdn_t *tsdn, buf_writer_t *buf_writer, write_cb_t *write_cb, buf_writer->buf = buf; buf_writer->internal_buf = false; } else { - buf_writer->buf = buf_writer_allocate_internal_buf(tsdn, - buf_len); + buf_writer->buf = buf_writer_allocate_internal_buf( + tsdn, buf_len); buf_writer->internal_buf = true; } if (buf_writer->buf != NULL) { @@ -111,13 +112,13 @@ buf_writer_terminate(tsdn_t *tsdn, buf_writer_t *buf_writer) { } void -buf_writer_pipe(buf_writer_t *buf_writer, read_cb_t *read_cb, - void *read_cbopaque) { +buf_writer_pipe( + buf_writer_t *buf_writer, read_cb_t *read_cb, void *read_cbopaque) { /* * A tiny local buffer in case the buffered writer failed to allocate * at init. */ - static char backup_buf[16]; + static char backup_buf[16]; static buf_writer_t backup_buf_writer; buf_writer_assert(buf_writer); diff --git a/dep/jemalloc/src/cache_bin.c b/dep/jemalloc/src/cache_bin.c index 9ae072a0ee6e5..ec677948434e0 100644 --- a/dep/jemalloc/src/cache_bin.c +++ b/dep/jemalloc/src/cache_bin.c @@ -5,17 +5,29 @@ #include "jemalloc/internal/cache_bin.h" #include "jemalloc/internal/safety_check.h" +const uintptr_t disabled_bin = JUNK_ADDR; + void -cache_bin_info_init(cache_bin_info_t *info, - cache_bin_sz_t ncached_max) { +cache_bin_info_init(cache_bin_info_t *info, cache_bin_sz_t ncached_max) { assert(ncached_max <= CACHE_BIN_NCACHED_MAX); size_t stack_size = (size_t)ncached_max * sizeof(void *); assert(stack_size < ((size_t)1 << (sizeof(cache_bin_sz_t) * 8))); info->ncached_max = (cache_bin_sz_t)ncached_max; } +bool +cache_bin_stack_use_thp(void) { + /* + * If metadata_thp is enabled, allocating tcache stack from the base + * allocator for efficiency gains. The downside, however, is that base + * allocator never purges freed memory, and may cache a fair amount of + * memory after many threads are terminated and not reused. + */ + return metadata_thp_enabled(); +} + void -cache_bin_info_compute_alloc(cache_bin_info_t *infos, szind_t ninfos, +cache_bin_info_compute_alloc(const cache_bin_info_t *infos, szind_t ninfos, size_t *size, size_t *alignment) { /* For the total bin stack region (per tcache), reserve 2 more slots so * that @@ -26,74 +38,80 @@ cache_bin_info_compute_alloc(cache_bin_info_t *infos, szind_t ninfos, */ *size = sizeof(void *) * 2; for (szind_t i = 0; i < ninfos; i++) { - assert(infos[i].ncached_max > 0); *size += infos[i].ncached_max * sizeof(void *); } /* - * Align to at least PAGE, to minimize the # of TLBs needed by the - * smaller sizes; also helps if the larger sizes don't get used at all. + * When not using THP, align to at least PAGE, to minimize the # of TLBs + * needed by the smaller sizes; also helps if the larger sizes don't get + * used at all. */ - *alignment = PAGE; + *alignment = cache_bin_stack_use_thp() ? QUANTUM : PAGE; } void -cache_bin_preincrement(cache_bin_info_t *infos, szind_t ninfos, void *alloc, - size_t *cur_offset) { +cache_bin_preincrement(const cache_bin_info_t *infos, szind_t ninfos, + void *alloc, size_t *cur_offset) { if (config_debug) { size_t computed_size; size_t computed_alignment; /* Pointer should be as aligned as we asked for. */ - cache_bin_info_compute_alloc(infos, ninfos, &computed_size, - &computed_alignment); + cache_bin_info_compute_alloc( + infos, ninfos, &computed_size, &computed_alignment); assert(((uintptr_t)alloc & (computed_alignment - 1)) == 0); } - *(uintptr_t *)((uintptr_t)alloc + *cur_offset) = - cache_bin_preceding_junk; + *(uintptr_t *)((byte_t *)alloc + + *cur_offset) = cache_bin_preceding_junk; *cur_offset += sizeof(void *); } void -cache_bin_postincrement(cache_bin_info_t *infos, szind_t ninfos, void *alloc, - size_t *cur_offset) { - *(uintptr_t *)((uintptr_t)alloc + *cur_offset) = - cache_bin_trailing_junk; +cache_bin_postincrement(void *alloc, size_t *cur_offset) { + *(uintptr_t *)((byte_t *)alloc + *cur_offset) = cache_bin_trailing_junk; *cur_offset += sizeof(void *); } void -cache_bin_init(cache_bin_t *bin, cache_bin_info_t *info, void *alloc, +cache_bin_init(cache_bin_t *bin, const cache_bin_info_t *info, void *alloc, size_t *cur_offset) { /* * The full_position points to the lowest available space. Allocations * will access the slots toward higher addresses (for the benefit of * adjacent prefetch). */ - void *stack_cur = (void *)((uintptr_t)alloc + *cur_offset); - void *full_position = stack_cur; - uint16_t bin_stack_size = info->ncached_max * sizeof(void *); + void *stack_cur = (void *)((byte_t *)alloc + *cur_offset); + void *full_position = stack_cur; + cache_bin_sz_t bin_stack_size = info->ncached_max * sizeof(void *); *cur_offset += bin_stack_size; - void *empty_position = (void *)((uintptr_t)alloc + *cur_offset); + void *empty_position = (void *)((byte_t *)alloc + *cur_offset); /* Init to the empty position. */ bin->stack_head = (void **)empty_position; - bin->low_bits_low_water = (uint16_t)(uintptr_t)bin->stack_head; - bin->low_bits_full = (uint16_t)(uintptr_t)full_position; - bin->low_bits_empty = (uint16_t)(uintptr_t)empty_position; - cache_bin_sz_t free_spots = cache_bin_diff(bin, - bin->low_bits_full, (uint16_t)(uintptr_t)bin->stack_head, - /* racy */ false); + bin->low_bits_low_water = (cache_bin_sz_t)(uintptr_t)bin->stack_head; + bin->low_bits_full = (cache_bin_sz_t)(uintptr_t)full_position; + bin->low_bits_empty = (cache_bin_sz_t)(uintptr_t)empty_position; + cache_bin_info_init(&bin->bin_info, info->ncached_max); + cache_bin_sz_t free_spots = cache_bin_diff(bin, bin->low_bits_full, + (cache_bin_sz_t)(uintptr_t)bin->stack_head); assert(free_spots == bin_stack_size); - assert(cache_bin_ncached_get_local(bin, info) == 0); + if (!cache_bin_disabled(bin)) { + assert(cache_bin_ncached_get_local(bin) == 0); + } assert(cache_bin_empty_position_get(bin) == empty_position); assert(bin_stack_size > 0 || empty_position == full_position); } -bool -cache_bin_still_zero_initialized(cache_bin_t *bin) { - return bin->stack_head == NULL; +void +cache_bin_init_disabled(cache_bin_t *bin, cache_bin_sz_t ncached_max) { + const void *fake_stack = cache_bin_disabled_bin_stack(); + size_t fake_offset = 0; + cache_bin_info_t fake_info; + cache_bin_info_init(&fake_info, 0); + cache_bin_init(bin, &fake_info, (void *)fake_stack, &fake_offset); + cache_bin_info_init(&bin->bin_info, ncached_max); + assert(fake_offset == 0); } diff --git a/dep/jemalloc/src/ckh.c b/dep/jemalloc/src/ckh.c index 8db4319c51d6f..80688162a3c32 100644 --- a/dep/jemalloc/src/ckh.c +++ b/dep/jemalloc/src/ckh.c @@ -49,8 +49,8 @@ /******************************************************************************/ /* Function prototypes for non-inline static functions. */ -static bool ckh_grow(tsd_t *tsd, ckh_t *ckh); -static void ckh_shrink(tsd_t *tsd, ckh_t *ckh); +static bool ckh_grow(tsd_t *tsd, ckh_t *ckh); +static void ckh_shrink(tsd_t *tsd, ckh_t *ckh); /******************************************************************************/ @@ -60,7 +60,7 @@ static void ckh_shrink(tsd_t *tsd, ckh_t *ckh); */ static size_t ckh_bucket_search(ckh_t *ckh, size_t bucket, const void *key) { - ckhc_t *cell; + ckhc_t *cell; unsigned i; for (i = 0; i < (ZU(1) << LG_CKH_BUCKET_CELLS); i++) { @@ -98,20 +98,20 @@ ckh_isearch(ckh_t *ckh, const void *key) { } static bool -ckh_try_bucket_insert(ckh_t *ckh, size_t bucket, const void *key, - const void *data) { - ckhc_t *cell; +ckh_try_bucket_insert( + ckh_t *ckh, size_t bucket, const void *key, const void *data) { + ckhc_t *cell; unsigned offset, i; /* * Cycle through the cells in the bucket, starting at a random position. * The randomness avoids worst-case search overhead as buckets fill up. */ - offset = (unsigned)prng_lg_range_u64(&ckh->prng_state, - LG_CKH_BUCKET_CELLS); + offset = (unsigned)prng_lg_range_u64( + &ckh->prng_state, LG_CKH_BUCKET_CELLS); for (i = 0; i < (ZU(1) << LG_CKH_BUCKET_CELLS); i++) { - cell = &ckh->tab[(bucket << LG_CKH_BUCKET_CELLS) + - ((i + offset) & ((ZU(1) << LG_CKH_BUCKET_CELLS) - 1))]; + cell = &ckh->tab[(bucket << LG_CKH_BUCKET_CELLS) + + ((i + offset) & ((ZU(1) << LG_CKH_BUCKET_CELLS) - 1))]; if (cell->key == NULL) { cell->key = key; cell->data = data; @@ -130,12 +130,12 @@ ckh_try_bucket_insert(ckh_t *ckh, size_t bucket, const void *key, * eviction/relocation bucket cycle. */ static bool -ckh_evict_reloc_insert(ckh_t *ckh, size_t argbucket, void const **argkey, - void const **argdata) { +ckh_evict_reloc_insert( + ckh_t *ckh, size_t argbucket, void const **argkey, void const **argdata) { const void *key, *data, *tkey, *tdata; - ckhc_t *cell; - size_t hashes[2], bucket, tbucket; - unsigned i; + ckhc_t *cell; + size_t hashes[2], bucket, tbucket; + unsigned i; bucket = argbucket; key = *argkey; @@ -149,15 +149,18 @@ ckh_evict_reloc_insert(ckh_t *ckh, size_t argbucket, void const **argkey, * were an item for which both hashes indicated the same * bucket. */ - i = (unsigned)prng_lg_range_u64(&ckh->prng_state, - LG_CKH_BUCKET_CELLS); + i = (unsigned)prng_lg_range_u64( + &ckh->prng_state, LG_CKH_BUCKET_CELLS); cell = &ckh->tab[(bucket << LG_CKH_BUCKET_CELLS) + i]; assert(cell->key != NULL); /* Swap cell->{key,data} and {key,data} (evict). */ - tkey = cell->key; tdata = cell->data; - cell->key = key; cell->data = data; - key = tkey; data = tdata; + tkey = cell->key; + tdata = cell->data; + cell->key = key; + cell->data = data; + key = tkey; + data = tdata; #ifdef CKH_COUNT ckh->nrelocs++; @@ -167,8 +170,8 @@ ckh_evict_reloc_insert(ckh_t *ckh, size_t argbucket, void const **argkey, ckh->hash(key, hashes); tbucket = hashes[1] & ((ZU(1) << ckh->lg_curbuckets) - 1); if (tbucket == bucket) { - tbucket = hashes[0] & ((ZU(1) << ckh->lg_curbuckets) - - 1); + tbucket = hashes[0] + & ((ZU(1) << ckh->lg_curbuckets) - 1); /* * It may be that (tbucket == bucket) still, if the * item's hashes both indicate this bucket. However, @@ -201,8 +204,8 @@ ckh_evict_reloc_insert(ckh_t *ckh, size_t argbucket, void const **argkey, } static bool -ckh_try_insert(ckh_t *ckh, void const**argkey, void const**argdata) { - size_t hashes[2], bucket; +ckh_try_insert(ckh_t *ckh, void const **argkey, void const **argdata) { + size_t hashes[2], bucket; const void *key = *argkey; const void *data = *argdata; @@ -232,7 +235,7 @@ ckh_try_insert(ckh_t *ckh, void const**argkey, void const**argdata) { */ static bool ckh_rebuild(ckh_t *ckh, ckhc_t *aTab) { - size_t count, i, nins; + size_t count, i, nins; const void *key, *data; count = ckh->count; @@ -254,8 +257,8 @@ ckh_rebuild(ckh_t *ckh, ckhc_t *aTab) { static bool ckh_grow(tsd_t *tsd, ckh_t *ckh) { - bool ret; - ckhc_t *tab, *ttab; + bool ret; + ckhc_t *tab, *ttab; unsigned lg_prevbuckets, lg_curcells; #ifdef CKH_COUNT @@ -274,8 +277,7 @@ ckh_grow(tsd_t *tsd, ckh_t *ckh) { lg_curcells++; usize = sz_sa2u(sizeof(ckhc_t) << lg_curcells, CACHELINE); - if (unlikely(usize == 0 - || usize > SC_LARGE_MAXCLASS)) { + if (unlikely(usize == 0 || usize > SC_LARGE_MAXCLASS)) { ret = true; goto label_return; } @@ -309,8 +311,8 @@ ckh_grow(tsd_t *tsd, ckh_t *ckh) { static void ckh_shrink(tsd_t *tsd, ckh_t *ckh) { - ckhc_t *tab, *ttab; - size_t usize; + ckhc_t *tab, *ttab; + size_t usize; unsigned lg_prevbuckets, lg_curcells; /* @@ -358,8 +360,8 @@ ckh_shrink(tsd_t *tsd, ckh_t *ckh) { bool ckh_new(tsd_t *tsd, ckh_t *ckh, size_t minitems, ckh_hash_t *ckh_hash, ckh_keycomp_t *keycomp) { - bool ret; - size_t mincells, usize; + bool ret; + size_t mincells, usize; unsigned lg_mincells; assert(minitems > 0); @@ -386,8 +388,7 @@ ckh_new(tsd_t *tsd, ckh_t *ckh, size_t minitems, ckh_hash_t *ckh_hash, assert(LG_CKH_BUCKET_CELLS > 0); mincells = ((minitems + (3 - (minitems % 3))) / 3) << 2; for (lg_mincells = LG_CKH_BUCKET_CELLS; - (ZU(1) << lg_mincells) < mincells; - lg_mincells++) { + (ZU(1) << lg_mincells) < mincells; lg_mincells++) { /* Do nothing. */ } ckh->lg_minbuckets = lg_mincells - LG_CKH_BUCKET_CELLS; @@ -417,11 +418,12 @@ ckh_delete(tsd_t *tsd, ckh_t *ckh) { assert(ckh != NULL); #ifdef CKH_VERBOSE - malloc_printf( - "%s(%p): ngrows: %"FMTu64", nshrinks: %"FMTu64"," - " nshrinkfails: %"FMTu64", ninserts: %"FMTu64"," - " nrelocs: %"FMTu64"\n", __func__, ckh, - (unsigned long long)ckh->ngrows, + malloc_printf("%s(%p): ngrows: %" FMTu64 ", nshrinks: %" FMTu64 + "," + " nshrinkfails: %" FMTu64 ", ninserts: %" FMTu64 + "," + " nrelocs: %" FMTu64 "\n", + __func__, ckh, (unsigned long long)ckh->ngrows, (unsigned long long)ckh->nshrinks, (unsigned long long)ckh->nshrinkfails, (unsigned long long)ckh->ninserts, @@ -445,8 +447,9 @@ bool ckh_iter(ckh_t *ckh, size_t *tabind, void **key, void **data) { size_t i, ncells; - for (i = *tabind, ncells = (ZU(1) << (ckh->lg_curbuckets + - LG_CKH_BUCKET_CELLS)); i < ncells; i++) { + for (i = *tabind, + ncells = (ZU(1) << (ckh->lg_curbuckets + LG_CKH_BUCKET_CELLS)); + i < ncells; i++) { if (ckh->tab[i].key != NULL) { if (key != NULL) { *key = (void *)ckh->tab[i].key; @@ -486,8 +489,8 @@ ckh_insert(tsd_t *tsd, ckh_t *ckh, const void *key, const void *data) { } bool -ckh_remove(tsd_t *tsd, ckh_t *ckh, const void *searchkey, void **key, - void **data) { +ckh_remove( + tsd_t *tsd, ckh_t *ckh, const void *searchkey, void **key, void **data) { size_t cell; assert(ckh != NULL); @@ -505,9 +508,9 @@ ckh_remove(tsd_t *tsd, ckh_t *ckh, const void *searchkey, void **key, ckh->count--; /* Try to halve the table if it is less than 1/4 full. */ - if (ckh->count < (ZU(1) << (ckh->lg_curbuckets - + LG_CKH_BUCKET_CELLS - 2)) && ckh->lg_curbuckets - > ckh->lg_minbuckets) { + if (ckh->count < (ZU(1) + << (ckh->lg_curbuckets + LG_CKH_BUCKET_CELLS - 2)) + && ckh->lg_curbuckets > ckh->lg_minbuckets) { /* Ignore error due to OOM. */ ckh_shrink(tsd, ckh); } @@ -554,8 +557,8 @@ ckh_string_keycomp(const void *k1, const void *k2) { void ckh_pointer_hash(const void *key, size_t r_hash[2]) { union { - const void *v; - size_t i; + const void *v; + size_t i; } u; assert(sizeof(u.v) == sizeof(u.i)); diff --git a/dep/jemalloc/src/conf.c b/dep/jemalloc/src/conf.c new file mode 100644 index 0000000000000..65abcd2597474 --- /dev/null +++ b/dep/jemalloc/src/conf.c @@ -0,0 +1,1203 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/assert.h" +#include "jemalloc/internal/atomic.h" +#include "jemalloc/internal/extent_dss.h" +#include "jemalloc/internal/extent_mmap.h" +#include "jemalloc/internal/fxp.h" +#include "jemalloc/internal/log.h" +#include "jemalloc/internal/malloc_io.h" +#include "jemalloc/internal/mutex.h" +#include "jemalloc/internal/nstime.h" +#include "jemalloc/internal/safety_check.h" +#include "jemalloc/internal/san.h" +#include "jemalloc/internal/sc.h" +#include "jemalloc/internal/util.h" + +#include "jemalloc/internal/conf.h" + +/* Whether encountered any invalid config options. */ +bool had_conf_error; + +static char * +jemalloc_getenv(const char *name) { +#ifdef JEMALLOC_FORCE_GETENV + return getenv(name); +#else +# ifdef JEMALLOC_HAVE_SECURE_GETENV + return secure_getenv(name); +# else +# ifdef JEMALLOC_HAVE_ISSETUGID + if (issetugid() != 0) { + return NULL; + } +# endif + return getenv(name); +# endif +#endif +} + +static void +init_opt_stats_opts(const char *v, size_t vlen, char *dest) { + size_t opts_len = strlen(dest); + assert(opts_len <= stats_print_tot_num_options); + + for (size_t i = 0; i < vlen; i++) { + switch (v[i]) { +#define OPTION(o, v, d, s) \ + case o: \ + break; + STATS_PRINT_OPTIONS +#undef OPTION + default: + continue; + } + + if (strchr(dest, v[i]) != NULL) { + /* Ignore repeated. */ + continue; + } + + dest[opts_len++] = v[i]; + dest[opts_len] = '\0'; + assert(opts_len <= stats_print_tot_num_options); + } + assert(opts_len == strlen(dest)); +} + +static void +malloc_conf_format_error(const char *msg, const char *begin, const char *end) { + size_t len = end - begin + 1; + len = len > BUFERROR_BUF ? BUFERROR_BUF : len; + + malloc_printf(": %s -- %.*s\n", msg, (int)len, begin); +} + +JET_EXTERN bool +conf_next(char const **opts_p, char const **k_p, size_t *klen_p, + char const **v_p, size_t *vlen_p) { + bool accept; + const char *opts = *opts_p; + + *k_p = opts; + + for (accept = false; !accept;) { + switch (*opts) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case '_': + opts++; + break; + case ':': + opts++; + *klen_p = (uintptr_t)opts - 1 - (uintptr_t)*k_p; + *v_p = opts; + accept = true; + break; + case '\0': + if (opts != *opts_p) { + malloc_conf_format_error( + "Conf string ends with key", *opts_p, + opts - 1); + had_conf_error = true; + } + return true; + default: + malloc_conf_format_error( + "Malformed conf string", *opts_p, opts); + had_conf_error = true; + return true; + } + } + + for (accept = false; !accept;) { + switch (*opts) { + case ',': + opts++; + /* + * Look ahead one character here, because the next time + * this function is called, it will assume that end of + * input has been cleanly reached if no input remains, + * but we have optimistically already consumed the + * comma if one exists. + */ + if (*opts == '\0') { + malloc_conf_format_error( + "Conf string ends with comma", *opts_p, + opts - 1); + had_conf_error = true; + } + *vlen_p = (uintptr_t)opts - 1 - (uintptr_t)*v_p; + accept = true; + break; + case '\0': + *vlen_p = (uintptr_t)opts - (uintptr_t)*v_p; + accept = true; + break; + default: + opts++; + break; + } + } + + *opts_p = opts; + return false; +} + +void +malloc_abort_invalid_conf(void) { + assert(opt_abort_conf); + malloc_printf( + ": Abort (abort_conf:true) on invalid conf " + "value (see above).\n"); + invalid_conf_abort(); +} + +JET_EXTERN void +conf_error( + const char *msg, const char *k, size_t klen, const char *v, size_t vlen) { + malloc_printf( + ": %s: %.*s:%.*s\n", msg, (int)klen, k, (int)vlen, v); + /* If abort_conf is set, error out after processing all options. */ + const char *experimental = "experimental_"; + if (strncmp(k, experimental, strlen(experimental)) == 0) { + /* However, tolerate experimental features. */ + return; + } + const char *deprecated[] = {"hpa_sec_bytes_after_flush"}; + const size_t deprecated_cnt = (sizeof(deprecated) + / sizeof(deprecated[0])); + for (size_t i = 0; i < deprecated_cnt; ++i) { + if (strncmp(k, deprecated[i], strlen(deprecated[i])) == 0) { + /* Tolerate deprecated features. */ + return; + } + } + had_conf_error = true; +} + +JET_EXTERN bool +conf_handle_bool(const char *v, size_t vlen, bool *result) { + if (sizeof("true") - 1 == vlen && strncmp("true", v, vlen) == 0) { + *result = true; + } else if (sizeof("false") - 1 == vlen + && strncmp("false", v, vlen) == 0) { + *result = false; + } else { + return true; + } + return false; +} + +JEMALLOC_DIAGNOSTIC_PUSH +JEMALLOC_DIAGNOSTIC_IGNORE("-Wunused-function") + +JET_EXTERN bool +conf_handle_signed(const char *v, size_t vlen, intmax_t min, intmax_t max, + bool check_min, bool check_max, bool clip, intmax_t *result) { + char *end; + set_errno(0); + intmax_t mv = (intmax_t)malloc_strtoumax(v, &end, 0); + if (get_errno() != 0 || (uintptr_t)end - (uintptr_t)v != vlen) { + return true; + } + if (clip) { + if (check_min && mv < min) { + *result = min; + } else if (check_max && mv > max) { + *result = max; + } else { + *result = mv; + } + } else { + if ((check_min && mv < min) || (check_max && mv > max)) { + return true; + } + *result = mv; + } + return false; +} + +JET_EXTERN bool +conf_handle_char_p(const char *v, size_t vlen, char *dest, size_t dest_sz) { + if (dest_sz == 0) { + return false; + } + size_t cpylen = (vlen <= dest_sz - 1) ? vlen : dest_sz - 1; + strncpy(dest, v, cpylen); + dest[cpylen] = '\0'; + return false; +} + +JEMALLOC_DIAGNOSTIC_POP + +/* Number of sources for initializing malloc_conf */ +#define MALLOC_CONF_NSOURCES 5 + +static const char * +obtain_malloc_conf(unsigned which_source, char readlink_buf[PATH_MAX + 1]) { + if (config_debug) { + static unsigned read_source = 0; + /* + * Each source should only be read once, to minimize # of + * syscalls on init. + */ + assert(read_source == which_source); + read_source++; + } + assert(which_source < MALLOC_CONF_NSOURCES); + + const char *ret; + switch (which_source) { + case 0: + ret = config_malloc_conf; + break; + case 1: + if (je_malloc_conf != NULL) { + /* Use options that were compiled into the program. */ + ret = je_malloc_conf; + } else { + /* No configuration specified. */ + ret = NULL; + } + break; + case 2: { +#ifndef JEMALLOC_CONFIG_FILE + ret = NULL; + break; +#else + ssize_t linklen = 0; +# ifndef _WIN32 + int saved_errno = errno; + const char *linkname = +# ifdef JEMALLOC_PREFIX + "/etc/" JEMALLOC_PREFIX "malloc.conf" +# else + "/etc/malloc.conf" +# endif + ; + + /* + * Try to use the contents of the "/etc/malloc.conf" symbolic + * link's name. + */ +# ifndef JEMALLOC_READLINKAT + linklen = readlink(linkname, readlink_buf, PATH_MAX); +# else + linklen = readlinkat( + AT_FDCWD, linkname, readlink_buf, PATH_MAX); +# endif + if (linklen == -1) { + /* No configuration specified. */ + linklen = 0; + /* Restore errno. */ + set_errno(saved_errno); + } +# endif + readlink_buf[linklen] = '\0'; + ret = readlink_buf; + break; +#endif + } + case 3: { +#ifndef JEMALLOC_CONFIG_ENV + ret = NULL; + break; +#else + const char *envname = +# ifdef JEMALLOC_PREFIX + JEMALLOC_CPREFIX "MALLOC_CONF" +# else + "MALLOC_CONF" +# endif + ; + + if ((ret = jemalloc_getenv(envname)) != NULL) { + opt_malloc_conf_env_var = ret; + } else { + /* No configuration specified. */ + ret = NULL; + } + break; +#endif + } + case 4: { + ret = je_malloc_conf_2_conf_harder; + break; + } + default: + not_reached(); + ret = NULL; + } + return ret; +} + +static void +validate_hpa_settings(void) { + if (!hpa_supported() || !opt_hpa) { + return; + } + if (HUGEPAGE > HUGEPAGE_MAX_EXPECTED_SIZE) { + had_conf_error = true; + malloc_printf( + ": huge page size (%zu) greater than expected." + "May not be supported or behave as expected.", + HUGEPAGE); + } +#ifndef JEMALLOC_HAVE_MADVISE_COLLAPSE + if (opt_hpa_opts.hugify_sync) { + had_conf_error = true; + malloc_printf( + ": hpa_hugify_sync config option is enabled, " + "but MADV_COLLAPSE support was not detected at build " + "time."); + } +#endif +} + +static void +malloc_conf_init_helper(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS], + bool initial_call, const char *opts_cache[MALLOC_CONF_NSOURCES], + char readlink_buf[PATH_MAX + 1]) { + static const char *opts_explain[MALLOC_CONF_NSOURCES] = { + "string specified via --with-malloc-conf", + "string pointed to by the global variable malloc_conf", + "\"name\" of the file referenced by the symbolic link named " + "/etc/malloc.conf", + "value of the environment variable MALLOC_CONF", + "string pointed to by the global variable " + "malloc_conf_2_conf_harder", + }; + unsigned i; + const char *opts, *k, *v; + size_t klen, vlen; + + for (i = 0; i < MALLOC_CONF_NSOURCES; i++) { + /* Get runtime configuration. */ + if (initial_call) { + opts_cache[i] = obtain_malloc_conf(i, readlink_buf); + } + opts = opts_cache[i]; + if (!initial_call && opt_confirm_conf) { + malloc_printf( + ": malloc_conf #%u (%s): \"%s\"\n", i + 1, + opts_explain[i], opts != NULL ? opts : ""); + } + if (opts == NULL) { + continue; + } + + while ( + *opts != '\0' && !conf_next(&opts, &k, &klen, &v, &vlen)) { +#define CONF_ERROR(msg, k, klen, v, vlen) \ + if (!initial_call) { \ + conf_error(msg, k, klen, v, vlen); \ + cur_opt_valid = false; \ + } +#define CONF_CONTINUE \ + { \ + if (!initial_call && opt_confirm_conf && cur_opt_valid) { \ + malloc_printf( \ + ": -- " \ + "Set conf value: %.*s:%.*s" \ + "\n", \ + (int)klen, k, (int)vlen, v); \ + } \ + continue; \ + } +#define CONF_MATCH(n) (sizeof(n) - 1 == klen && strncmp(n, k, klen) == 0) +#define CONF_MATCH_VALUE(n) (sizeof(n) - 1 == vlen && strncmp(n, v, vlen) == 0) +#define CONF_HANDLE_BOOL(o, n) \ + if (CONF_MATCH(n)) { \ + if (conf_handle_bool(v, vlen, &o)) { \ + CONF_ERROR("Invalid conf value", k, klen, v, vlen); \ + } \ + CONF_CONTINUE; \ + } + /* + * One of the CONF_MIN macros below expands, in one of the use points, + * to "unsigned integer < 0", which is always false, triggering the + * GCC -Wtype-limits warning, which we disable here and re-enable below. + */ + JEMALLOC_DIAGNOSTIC_PUSH + JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS + +#define CONF_DONT_CHECK_MIN(um, min) false +#define CONF_CHECK_MIN(um, min) ((um) < (min)) +#define CONF_DONT_CHECK_MAX(um, max) false +#define CONF_CHECK_MAX(um, max) ((um) > (max)) + +#define CONF_VALUE_READ(max_t, result) \ + char *end; \ + set_errno(0); \ + result = (max_t)malloc_strtoumax(v, &end, 0); +#define CONF_VALUE_READ_FAIL() \ + (get_errno() != 0 || (uintptr_t)end - (uintptr_t)v != vlen) + +#define CONF_HANDLE_T(t, max_t, o, n, min, max, check_min, check_max, clip) \ + if (CONF_MATCH(n)) { \ + max_t mv; \ + CONF_VALUE_READ(max_t, mv) \ + if (CONF_VALUE_READ_FAIL()) { \ + CONF_ERROR("Invalid conf value", k, klen, v, vlen); \ + } else if (clip) { \ + if (check_min(mv, (t)(min))) { \ + o = (t)(min); \ + } else if (check_max(mv, (t)(max))) { \ + o = (t)(max); \ + } else { \ + o = (t)mv; \ + } \ + } else { \ + if (check_min(mv, (t)(min)) \ + || check_max(mv, (t)(max))) { \ + CONF_ERROR( \ + "Out-of-range " \ + "conf value", \ + k, klen, v, vlen); \ + } else { \ + o = (t)mv; \ + } \ + } \ + CONF_CONTINUE; \ + } +#define CONF_HANDLE_T_U(t, o, n, min, max, check_min, check_max, clip) \ + CONF_HANDLE_T(t, uintmax_t, o, n, min, max, check_min, check_max, clip) +#define CONF_HANDLE_T_SIGNED(t, o, n, min, max, check_min, check_max, clip) \ + CONF_HANDLE_T(t, intmax_t, o, n, min, max, check_min, check_max, clip) + +#define CONF_HANDLE_UNSIGNED(o, n, min, max, check_min, check_max, clip) \ + CONF_HANDLE_T_U(unsigned, o, n, min, max, check_min, check_max, clip) +#define CONF_HANDLE_SIZE_T(o, n, min, max, check_min, check_max, clip) \ + CONF_HANDLE_T_U(size_t, o, n, min, max, check_min, check_max, clip) +#define CONF_HANDLE_INT64_T(o, n, min, max, check_min, check_max, clip) \ + CONF_HANDLE_T_SIGNED( \ + int64_t, o, n, min, max, check_min, check_max, clip) +#define CONF_HANDLE_UINT64_T(o, n, min, max, check_min, check_max, clip) \ + CONF_HANDLE_T_U(uint64_t, o, n, min, max, check_min, check_max, clip) +#define CONF_HANDLE_SSIZE_T(o, n, min, max) \ + CONF_HANDLE_T_SIGNED( \ + ssize_t, o, n, min, max, CONF_CHECK_MIN, CONF_CHECK_MAX, false) +#define CONF_HANDLE_CHAR_P(o, n, d) \ + if (CONF_MATCH(n)) { \ + size_t cpylen = (vlen <= sizeof(o) - 1) ? vlen \ + : sizeof(o) - 1; \ + strncpy(o, v, cpylen); \ + o[cpylen] = '\0'; \ + CONF_CONTINUE; \ + } + + bool cur_opt_valid = true; + + CONF_HANDLE_BOOL(opt_confirm_conf, "confirm_conf") + if (initial_call) { + continue; + } + + CONF_HANDLE_BOOL(opt_abort, "abort") + CONF_HANDLE_BOOL(opt_abort_conf, "abort_conf") + CONF_HANDLE_BOOL(opt_cache_oblivious, "cache_oblivious") + CONF_HANDLE_BOOL(opt_trust_madvise, "trust_madvise") + CONF_HANDLE_BOOL( + opt_experimental_hpa_start_huge_if_thp_always, + "experimental_hpa_start_huge_if_thp_always") + CONF_HANDLE_BOOL(opt_experimental_hpa_enforce_hugify, + "experimental_hpa_enforce_hugify") + CONF_HANDLE_BOOL( + opt_huge_arena_pac_thp, "huge_arena_pac_thp") + if (strncmp("metadata_thp", k, klen) == 0) { + int m; + bool match = false; + for (m = 0; m < metadata_thp_mode_limit; m++) { + if (strncmp(metadata_thp_mode_names[m], + v, vlen) + == 0) { + opt_metadata_thp = m; + match = true; + break; + } + } + if (!match) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + CONF_HANDLE_BOOL(opt_retain, "retain") + if (strncmp("dss", k, klen) == 0) { + int m; + bool match = false; + for (m = 0; m < dss_prec_limit; m++) { + if (strncmp(dss_prec_names[m], v, vlen) + == 0) { + if (extent_dss_prec_set(m)) { + CONF_ERROR( + "Error setting dss", + k, klen, v, vlen); + } else { + opt_dss = + dss_prec_names[m]; + match = true; + break; + } + } + } + if (!match) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + if (CONF_MATCH("narenas")) { + if (CONF_MATCH_VALUE("default")) { + opt_narenas = 0; + CONF_CONTINUE; + } else { + CONF_HANDLE_UNSIGNED(opt_narenas, + "narenas", 1, UINT_MAX, + CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, + /* clip */ false) + } + } + if (CONF_MATCH("narenas_ratio")) { + char *end; + bool err = fxp_parse( + &opt_narenas_ratio, v, &end); + if (err || (size_t)(end - v) != vlen) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + if (CONF_MATCH("bin_shards")) { + const char *bin_shards_segment_cur = v; + size_t vlen_left = vlen; + do { + size_t size_start; + size_t size_end; + size_t nshards; + bool err = multi_setting_parse_next( + &bin_shards_segment_cur, &vlen_left, + &size_start, &size_end, &nshards); + if (err + || bin_update_shard_size( + bin_shard_sizes, size_start, + size_end, nshards)) { + CONF_ERROR( + "Invalid settings for " + "bin_shards", + k, klen, v, vlen); + break; + } + } while (vlen_left > 0); + CONF_CONTINUE; + } + if (CONF_MATCH("tcache_ncached_max")) { + bool err = tcache_bin_info_default_init( + v, vlen); + if (err) { + CONF_ERROR( + "Invalid settings for " + "tcache_ncached_max", + k, klen, v, vlen); + } + CONF_CONTINUE; + } + CONF_HANDLE_INT64_T(opt_mutex_max_spin, + "mutex_max_spin", -1, INT64_MAX, CONF_CHECK_MIN, + CONF_DONT_CHECK_MAX, false); + CONF_HANDLE_SSIZE_T(opt_dirty_decay_ms, + "dirty_decay_ms", -1, + NSTIME_SEC_MAX * KQU(1000) < QU(SSIZE_MAX) + ? NSTIME_SEC_MAX * KQU(1000) + : SSIZE_MAX); + CONF_HANDLE_SSIZE_T(opt_muzzy_decay_ms, + "muzzy_decay_ms", -1, + NSTIME_SEC_MAX * KQU(1000) < QU(SSIZE_MAX) + ? NSTIME_SEC_MAX * KQU(1000) + : SSIZE_MAX); + CONF_HANDLE_SIZE_T(opt_process_madvise_max_batch, + "process_madvise_max_batch", 0, + PROCESS_MADVISE_MAX_BATCH_LIMIT, + CONF_DONT_CHECK_MIN, CONF_CHECK_MAX, + /* clip */ true) + CONF_HANDLE_BOOL(opt_stats_print, "stats_print") + if (CONF_MATCH("stats_print_opts")) { + init_opt_stats_opts( + v, vlen, opt_stats_print_opts); + CONF_CONTINUE; + } + CONF_HANDLE_INT64_T(opt_stats_interval, + "stats_interval", -1, INT64_MAX, CONF_CHECK_MIN, + CONF_DONT_CHECK_MAX, false) + if (CONF_MATCH("stats_interval_opts")) { + init_opt_stats_opts( + v, vlen, opt_stats_interval_opts); + CONF_CONTINUE; + } + if (config_fill) { + if (CONF_MATCH("junk")) { + if (CONF_MATCH_VALUE("true")) { + opt_junk = "true"; + opt_junk_alloc = opt_junk_free = + true; + } else if (CONF_MATCH_VALUE("false")) { + opt_junk = "false"; + opt_junk_alloc = opt_junk_free = + false; + } else if (CONF_MATCH_VALUE("alloc")) { + opt_junk = "alloc"; + opt_junk_alloc = true; + opt_junk_free = false; + } else if (CONF_MATCH_VALUE("free")) { + opt_junk = "free"; + opt_junk_alloc = false; + opt_junk_free = true; + } else { + CONF_ERROR("Invalid conf value", + k, klen, v, vlen); + } + CONF_CONTINUE; + } + CONF_HANDLE_BOOL(opt_zero, "zero") + } + if (config_utrace) { + CONF_HANDLE_BOOL(opt_utrace, "utrace") + } + if (config_xmalloc) { + CONF_HANDLE_BOOL(opt_xmalloc, "xmalloc") + } + if (config_enable_cxx) { + CONF_HANDLE_BOOL( + opt_experimental_infallible_new, + "experimental_infallible_new") + } + + CONF_HANDLE_BOOL(opt_experimental_tcache_gc, + "experimental_tcache_gc") + CONF_HANDLE_BOOL(opt_tcache, "tcache") + CONF_HANDLE_SIZE_T(opt_tcache_max, "tcache_max", 0, + TCACHE_MAXCLASS_LIMIT, CONF_DONT_CHECK_MIN, + CONF_CHECK_MAX, /* clip */ true) + if (CONF_MATCH("lg_tcache_max")) { + size_t m; + CONF_VALUE_READ(size_t, m) + if (CONF_VALUE_READ_FAIL()) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } else { + /* clip if necessary */ + if (m > TCACHE_LG_MAXCLASS_LIMIT) { + m = TCACHE_LG_MAXCLASS_LIMIT; + } + opt_tcache_max = (size_t)1 << m; + } + CONF_CONTINUE; + } + /* + * Anyone trying to set a value outside -16 to 16 is + * deeply confused. + */ + CONF_HANDLE_SSIZE_T(opt_lg_tcache_nslots_mul, + "lg_tcache_nslots_mul", -16, 16) + /* Ditto with values past 2048. */ + CONF_HANDLE_UNSIGNED(opt_tcache_nslots_small_min, + "tcache_nslots_small_min", 1, 2048, CONF_CHECK_MIN, + CONF_CHECK_MAX, /* clip */ true) + CONF_HANDLE_UNSIGNED(opt_tcache_nslots_small_max, + "tcache_nslots_small_max", 1, 2048, CONF_CHECK_MIN, + CONF_CHECK_MAX, /* clip */ true) + CONF_HANDLE_UNSIGNED(opt_tcache_nslots_large, + "tcache_nslots_large", 1, 2048, CONF_CHECK_MIN, + CONF_CHECK_MAX, /* clip */ true) + CONF_HANDLE_SIZE_T(opt_tcache_gc_incr_bytes, + "tcache_gc_incr_bytes", 1024, SIZE_T_MAX, + CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, + /* clip */ true) + CONF_HANDLE_SIZE_T(opt_tcache_gc_delay_bytes, + "tcache_gc_delay_bytes", 0, SIZE_T_MAX, + CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, + /* clip */ false) + CONF_HANDLE_UNSIGNED(opt_lg_tcache_flush_small_div, + "lg_tcache_flush_small_div", 1, 16, CONF_CHECK_MIN, + CONF_CHECK_MAX, /* clip */ true) + CONF_HANDLE_UNSIGNED(opt_lg_tcache_flush_large_div, + "lg_tcache_flush_large_div", 1, 16, CONF_CHECK_MIN, + CONF_CHECK_MAX, /* clip */ true) + CONF_HANDLE_UNSIGNED(opt_debug_double_free_max_scan, + "debug_double_free_max_scan", 0, UINT_MAX, + CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, + /* clip */ false) + CONF_HANDLE_SIZE_T(opt_calloc_madvise_threshold, + "calloc_madvise_threshold", 0, SC_LARGE_MAXCLASS, + CONF_DONT_CHECK_MIN, CONF_CHECK_MAX, + /* clip */ false) + + /* + * The runtime option of oversize_threshold remains + * undocumented. It may be tweaked in the next major + * release (6.0). The default value 8M is rather + * conservative / safe. Tuning it further down may + * improve fragmentation a bit more, but may also cause + * contention on the huge arena. + */ + CONF_HANDLE_SIZE_T(opt_oversize_threshold, + "oversize_threshold", 0, SC_LARGE_MAXCLASS, + CONF_DONT_CHECK_MIN, CONF_CHECK_MAX, false) + CONF_HANDLE_SIZE_T(opt_lg_extent_max_active_fit, + "lg_extent_max_active_fit", 0, + (sizeof(size_t) << 3), CONF_DONT_CHECK_MIN, + CONF_CHECK_MAX, false) + + if (strncmp("percpu_arena", k, klen) == 0) { + bool match = false; + for (int m = percpu_arena_mode_names_base; + m < percpu_arena_mode_names_limit; m++) { + if (strncmp(percpu_arena_mode_names[m], + v, vlen) + == 0) { + if (!have_percpu_arena) { + CONF_ERROR( + "No getcpu support", + k, klen, v, vlen); + } + opt_percpu_arena = m; + match = true; + break; + } + } + if (!match) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + CONF_HANDLE_BOOL( + opt_background_thread, "background_thread"); + CONF_HANDLE_SIZE_T(opt_max_background_threads, + "max_background_threads", 1, + opt_max_background_threads, CONF_CHECK_MIN, + CONF_CHECK_MAX, true); + CONF_HANDLE_BOOL(opt_hpa, "hpa") + CONF_HANDLE_SIZE_T(opt_hpa_opts.slab_max_alloc, + "hpa_slab_max_alloc", PAGE, HUGEPAGE, + CONF_CHECK_MIN, CONF_CHECK_MAX, true); + + /* + * Accept either a ratio-based or an exact hugification + * threshold. + */ + CONF_HANDLE_SIZE_T(opt_hpa_opts.hugification_threshold, + "hpa_hugification_threshold", PAGE, HUGEPAGE, + CONF_CHECK_MIN, CONF_CHECK_MAX, true); + if (CONF_MATCH("hpa_hugification_threshold_ratio")) { + fxp_t ratio; + char *end; + bool err = fxp_parse(&ratio, v, &end); + if (err || (size_t)(end - v) != vlen + || ratio > FXP_INIT_INT(1)) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } else { + opt_hpa_opts.hugification_threshold = + fxp_mul_frac(HUGEPAGE, ratio); + } + CONF_CONTINUE; + } + + CONF_HANDLE_UINT64_T(opt_hpa_opts.hugify_delay_ms, + "hpa_hugify_delay_ms", 0, 0, CONF_DONT_CHECK_MIN, + CONF_DONT_CHECK_MAX, false); + + CONF_HANDLE_BOOL( + opt_hpa_opts.hugify_sync, "hpa_hugify_sync"); + + CONF_HANDLE_UINT64_T(opt_hpa_opts.min_purge_interval_ms, + "hpa_min_purge_interval_ms", 0, 0, + CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false); + + CONF_HANDLE_SSIZE_T( + opt_hpa_opts.experimental_max_purge_nhp, + "experimental_hpa_max_purge_nhp", -1, SSIZE_MAX); + + /* + * Accept either a ratio-based or an exact purge + * threshold. + */ + CONF_HANDLE_SIZE_T(opt_hpa_opts.purge_threshold, + "hpa_purge_threshold", PAGE, HUGEPAGE, + CONF_CHECK_MIN, CONF_CHECK_MAX, true); + if (CONF_MATCH("hpa_purge_threshold_ratio")) { + fxp_t ratio; + char *end; + bool err = fxp_parse(&ratio, v, &end); + if (err || (size_t)(end - v) != vlen + || ratio > FXP_INIT_INT(1)) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } else { + opt_hpa_opts.purge_threshold = + fxp_mul_frac(HUGEPAGE, ratio); + } + CONF_CONTINUE; + } + + CONF_HANDLE_UINT64_T(opt_hpa_opts.min_purge_delay_ms, + "hpa_min_purge_delay_ms", 0, UINT64_MAX, + CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false); + + if (strncmp("hpa_hugify_style", k, klen) == 0) { + bool match = false; + for (int m = 0; m < hpa_hugify_style_limit; + m++) { + if (strncmp(hpa_hugify_style_names[m], + v, vlen) + == 0) { + opt_hpa_opts.hugify_style = m; + match = true; + break; + } + } + if (!match) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + + if (CONF_MATCH("hpa_dirty_mult")) { + if (CONF_MATCH_VALUE("-1")) { + opt_hpa_opts.dirty_mult = (fxp_t)-1; + CONF_CONTINUE; + } + fxp_t ratio; + char *end; + bool err = fxp_parse(&ratio, v, &end); + if (err || (size_t)(end - v) != vlen) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } else { + opt_hpa_opts.dirty_mult = ratio; + } + CONF_CONTINUE; + } + CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.nshards, + "hpa_sec_nshards", 0, 0, CONF_CHECK_MIN, + CONF_DONT_CHECK_MAX, true); + CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.max_alloc, + "hpa_sec_max_alloc", PAGE, + USIZE_GROW_SLOW_THRESHOLD, CONF_CHECK_MIN, + CONF_CHECK_MAX, true); + CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.max_bytes, + "hpa_sec_max_bytes", SEC_OPTS_MAX_BYTES_DEFAULT, 0, + CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, true); + CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.batch_fill_extra, + "hpa_sec_batch_fill_extra", 1, HUGEPAGE_PAGES, + CONF_CHECK_MIN, CONF_CHECK_MAX, true); + + if (CONF_MATCH("slab_sizes")) { + if (CONF_MATCH_VALUE("default")) { + sc_data_init(sc_data); + CONF_CONTINUE; + } + bool err; + const char *slab_size_segment_cur = v; + size_t vlen_left = vlen; + do { + size_t slab_start; + size_t slab_end; + size_t pgs; + err = multi_setting_parse_next( + &slab_size_segment_cur, &vlen_left, + &slab_start, &slab_end, &pgs); + if (!err) { + sc_data_update_slab_size( + sc_data, slab_start, + slab_end, (int)pgs); + } else { + CONF_ERROR( + "Invalid settings " + "for slab_sizes", + k, klen, v, vlen); + } + } while (!err && vlen_left > 0); + CONF_CONTINUE; + } + if (config_prof) { + CONF_HANDLE_BOOL(opt_prof, "prof") + CONF_HANDLE_CHAR_P( + opt_prof_prefix, "prof_prefix", "jeprof") + CONF_HANDLE_BOOL(opt_prof_active, "prof_active") + CONF_HANDLE_BOOL(opt_prof_thread_active_init, + "prof_thread_active_init") + CONF_HANDLE_SIZE_T(opt_lg_prof_sample, + "lg_prof_sample", 0, + (sizeof(uint64_t) << 3) - 1, + CONF_DONT_CHECK_MIN, CONF_CHECK_MAX, true) + CONF_HANDLE_BOOL(opt_prof_accum, "prof_accum") + CONF_HANDLE_UNSIGNED(opt_prof_bt_max, + "prof_bt_max", 1, PROF_BT_MAX_LIMIT, + CONF_CHECK_MIN, CONF_CHECK_MAX, + /* clip */ true) + CONF_HANDLE_SSIZE_T(opt_lg_prof_interval, + "lg_prof_interval", -1, + (sizeof(uint64_t) << 3) - 1) + CONF_HANDLE_BOOL(opt_prof_gdump, "prof_gdump") + CONF_HANDLE_BOOL(opt_prof_final, "prof_final") + CONF_HANDLE_BOOL(opt_prof_leak, "prof_leak") + CONF_HANDLE_BOOL( + opt_prof_leak_error, "prof_leak_error") + CONF_HANDLE_BOOL(opt_prof_log, "prof_log") + CONF_HANDLE_BOOL(opt_prof_pid_namespace, + "prof_pid_namespace") + CONF_HANDLE_SSIZE_T(opt_prof_recent_alloc_max, + "prof_recent_alloc_max", -1, SSIZE_MAX) + CONF_HANDLE_BOOL(opt_prof_stats, "prof_stats") + CONF_HANDLE_BOOL(opt_prof_sys_thread_name, + "prof_sys_thread_name") + if (CONF_MATCH("prof_time_resolution")) { + if (CONF_MATCH_VALUE("default")) { + opt_prof_time_res = + prof_time_res_default; + } else if (CONF_MATCH_VALUE("high")) { + if (!config_high_res_timer) { + CONF_ERROR( + "No high resolution" + " timer support", + k, klen, v, vlen); + } else { + opt_prof_time_res = + prof_time_res_high; + } + } else { + CONF_ERROR("Invalid conf value", + k, klen, v, vlen); + } + CONF_CONTINUE; + } + /* + * Undocumented. When set to false, don't + * correct for an unbiasing bug in jeprof + * attribution. This can be handy if you want + * to get consistent numbers from your binary + * across different jemalloc versions, even if + * those numbers are incorrect. The default is + * true. + */ + CONF_HANDLE_BOOL(opt_prof_unbias, "prof_unbias") + } + if (config_log) { + if (CONF_MATCH("log")) { + size_t cpylen = (vlen + <= sizeof(log_var_names) + ? vlen + : sizeof(log_var_names) - 1); + strncpy(log_var_names, v, cpylen); + log_var_names[cpylen] = '\0'; + CONF_CONTINUE; + } + } + if (CONF_MATCH("thp")) { + bool match = false; + for (int m = 0; m < thp_mode_names_limit; m++) { + if (strncmp(thp_mode_names[m], v, vlen) + == 0) { + if (!have_madvise_huge + && !have_memcntl) { + CONF_ERROR( + "No THP support", k, + klen, v, vlen); + } + opt_thp = m; + match = true; + break; + } + } + if (!match) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + if (CONF_MATCH("zero_realloc")) { + if (CONF_MATCH_VALUE("alloc")) { + opt_zero_realloc_action = + zero_realloc_action_alloc; + } else if (CONF_MATCH_VALUE("free")) { + opt_zero_realloc_action = + zero_realloc_action_free; + } else if (CONF_MATCH_VALUE("abort")) { + opt_zero_realloc_action = + zero_realloc_action_abort; + } else { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + CONF_CONTINUE; + } + if (config_uaf_detection + && CONF_MATCH("lg_san_uaf_align")) { + ssize_t a; + CONF_VALUE_READ(ssize_t, a) + if (CONF_VALUE_READ_FAIL() || a < -1) { + CONF_ERROR("Invalid conf value", k, + klen, v, vlen); + } + if (a == -1) { + opt_lg_san_uaf_align = -1; + CONF_CONTINUE; + } + + /* clip if necessary */ + ssize_t max_allowed = (sizeof(size_t) << 3) - 1; + ssize_t min_allowed = LG_PAGE; + if (a > max_allowed) { + a = max_allowed; + } else if (a < min_allowed) { + a = min_allowed; + } + + opt_lg_san_uaf_align = a; + CONF_CONTINUE; + } + + CONF_HANDLE_SIZE_T(opt_san_guard_small, + "san_guard_small", 0, SIZE_T_MAX, + CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false) + CONF_HANDLE_SIZE_T(opt_san_guard_large, + "san_guard_large", 0, SIZE_T_MAX, + CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false) + + /* + * Disable large size classes is now the default + * behavior in jemalloc. Although it is configurable + * in MALLOC_CONF, this is mainly for debugging + * purposes and should not be tuned. + */ + CONF_HANDLE_BOOL(opt_disable_large_size_classes, + "disable_large_size_classes"); + + CONF_ERROR("Invalid conf pair", k, klen, v, vlen); +#undef CONF_ERROR +#undef CONF_CONTINUE +#undef CONF_MATCH +#undef CONF_MATCH_VALUE +#undef CONF_HANDLE_BOOL +#undef CONF_DONT_CHECK_MIN +#undef CONF_CHECK_MIN +#undef CONF_DONT_CHECK_MAX +#undef CONF_CHECK_MAX +#undef CONF_HANDLE_T +#undef CONF_HANDLE_T_U +#undef CONF_HANDLE_T_SIGNED +#undef CONF_HANDLE_UNSIGNED +#undef CONF_HANDLE_SIZE_T +#undef CONF_HANDLE_SSIZE_T +#undef CONF_HANDLE_CHAR_P + /* Re-enable diagnostic "-Wtype-limits" */ + JEMALLOC_DIAGNOSTIC_POP + } + validate_hpa_settings(); + if (opt_abort_conf && had_conf_error) { + malloc_abort_invalid_conf(); + } + } + atomic_store_b(&log_init_done, true, ATOMIC_RELEASE); +} + +static bool +malloc_conf_init_check_deps(void) { + if (opt_prof_leak_error && !opt_prof_final) { + malloc_printf( + ": prof_leak_error is set w/o " + "prof_final.\n"); + return true; + } + /* To emphasize in the stats output that opt is disabled when !debug. */ + if (!config_debug) { + opt_debug_double_free_max_scan = 0; + } + + return false; +} + +void +malloc_conf_init(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS], + char readlink_buf[PATH_MAX + 1]) { + const char *opts_cache[MALLOC_CONF_NSOURCES] = { + NULL, NULL, NULL, NULL, NULL}; + + /* The first call only set the confirm_conf option and opts_cache */ + malloc_conf_init_helper(NULL, NULL, true, opts_cache, readlink_buf); + malloc_conf_init_helper( + sc_data, bin_shard_sizes, false, opts_cache, NULL); + if (malloc_conf_init_check_deps()) { + /* check_deps does warning msg only; abort below if needed. */ + if (opt_abort_conf) { + malloc_abort_invalid_conf(); + } + } +} + +#undef MALLOC_CONF_NSOURCES diff --git a/dep/jemalloc/src/counter.c b/dep/jemalloc/src/counter.c index 8f1ae3af45edc..8257a062727cc 100644 --- a/dep/jemalloc/src/counter.c +++ b/dep/jemalloc/src/counter.c @@ -6,7 +6,7 @@ bool counter_accum_init(counter_accum_t *counter, uint64_t interval) { if (LOCKEDINT_MTX_INIT(counter->mtx, "counter_accum", - WITNESS_RANK_COUNTER_ACCUM, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_COUNTER_ACCUM, malloc_mutex_rank_exclusive)) { return true; } locked_init_u64_unsynchronized(&counter->accumbytes, 0); diff --git a/dep/jemalloc/src/ctl.c b/dep/jemalloc/src/ctl.c index 135271bafae78..0b72086cf0cce 100644 --- a/dep/jemalloc/src/ctl.c +++ b/dep/jemalloc/src/ctl.c @@ -25,10 +25,10 @@ * ctl_mtx protects the following: * - ctl_stats->* */ -static malloc_mutex_t ctl_mtx; -static bool ctl_initialized; -static ctl_stats_t *ctl_stats; -static ctl_arenas_t *ctl_arenas; +static malloc_mutex_t ctl_mtx; +static bool ctl_initialized; +static ctl_stats_t *ctl_stats; +static ctl_arenas_t *ctl_arenas; /******************************************************************************/ /* Helpers for named and indexed nodes. */ @@ -53,20 +53,23 @@ ctl_indexed_node(const ctl_node_t *node) { /******************************************************************************/ /* Function prototypes for non-inline static functions. */ -#define CTL_PROTO(n) \ -static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ - void *oldp, size_t *oldlenp, void *newp, size_t newlen); +#define CTL_PROTO(n) \ + static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ + void *oldp, size_t *oldlenp, void *newp, size_t newlen); -#define INDEX_PROTO(n) \ -static const ctl_named_node_t *n##_index(tsdn_t *tsdn, \ - const size_t *mib, size_t miblen, size_t i); +#define INDEX_PROTO(n) \ + static const ctl_named_node_t *n##_index( \ + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i); CTL_PROTO(version) CTL_PROTO(epoch) CTL_PROTO(background_thread) CTL_PROTO(max_background_threads) CTL_PROTO(thread_tcache_enabled) +CTL_PROTO(thread_tcache_max) CTL_PROTO(thread_tcache_flush) +CTL_PROTO(thread_tcache_ncached_max_write) +CTL_PROTO(thread_tcache_ncached_max_read_sizeclass) CTL_PROTO(thread_peak_read) CTL_PROTO(thread_peak_reset) CTL_PROTO(thread_prof_name) @@ -86,25 +89,34 @@ CTL_PROTO(config_opt_safety_checks) CTL_PROTO(config_prof) CTL_PROTO(config_prof_libgcc) CTL_PROTO(config_prof_libunwind) +CTL_PROTO(config_prof_frameptr) CTL_PROTO(config_stats) CTL_PROTO(config_utrace) CTL_PROTO(config_xmalloc) CTL_PROTO(opt_abort) CTL_PROTO(opt_abort_conf) CTL_PROTO(opt_cache_oblivious) +CTL_PROTO(opt_debug_double_free_max_scan) CTL_PROTO(opt_trust_madvise) +CTL_PROTO(opt_experimental_hpa_start_huge_if_thp_always) +CTL_PROTO(opt_experimental_hpa_enforce_hugify) CTL_PROTO(opt_confirm_conf) CTL_PROTO(opt_hpa) CTL_PROTO(opt_hpa_slab_max_alloc) CTL_PROTO(opt_hpa_hugification_threshold) CTL_PROTO(opt_hpa_hugify_delay_ms) +CTL_PROTO(opt_hpa_hugify_sync) CTL_PROTO(opt_hpa_min_purge_interval_ms) +CTL_PROTO(opt_experimental_hpa_max_purge_nhp) +CTL_PROTO(opt_hpa_purge_threshold) +CTL_PROTO(opt_hpa_min_purge_delay_ms) +CTL_PROTO(opt_hpa_hugify_style) CTL_PROTO(opt_hpa_dirty_mult) CTL_PROTO(opt_hpa_sec_nshards) CTL_PROTO(opt_hpa_sec_max_alloc) CTL_PROTO(opt_hpa_sec_max_bytes) -CTL_PROTO(opt_hpa_sec_bytes_after_flush) CTL_PROTO(opt_hpa_sec_batch_fill_extra) +CTL_PROTO(opt_huge_arena_pac_thp) CTL_PROTO(opt_metadata_thp) CTL_PROTO(opt_retain) CTL_PROTO(opt_dss) @@ -125,6 +137,7 @@ CTL_PROTO(opt_zero) CTL_PROTO(opt_utrace) CTL_PROTO(opt_xmalloc) CTL_PROTO(opt_experimental_infallible_new) +CTL_PROTO(opt_experimental_tcache_gc) CTL_PROTO(opt_tcache) CTL_PROTO(opt_tcache_max) CTL_PROTO(opt_tcache_nslots_small_min) @@ -141,6 +154,7 @@ CTL_PROTO(opt_prof) CTL_PROTO(opt_prof_prefix) CTL_PROTO(opt_prof_active) CTL_PROTO(opt_prof_thread_active_init) +CTL_PROTO(opt_prof_bt_max) CTL_PROTO(opt_lg_prof_sample) CTL_PROTO(opt_lg_prof_interval) CTL_PROTO(opt_prof_gdump) @@ -148,12 +162,19 @@ CTL_PROTO(opt_prof_final) CTL_PROTO(opt_prof_leak) CTL_PROTO(opt_prof_leak_error) CTL_PROTO(opt_prof_accum) +CTL_PROTO(opt_prof_pid_namespace) CTL_PROTO(opt_prof_recent_alloc_max) CTL_PROTO(opt_prof_stats) CTL_PROTO(opt_prof_sys_thread_name) CTL_PROTO(opt_prof_time_res) CTL_PROTO(opt_lg_san_uaf_align) CTL_PROTO(opt_zero_realloc) +CTL_PROTO(opt_disable_large_size_classes) +CTL_PROTO(opt_process_madvise_max_batch) +CTL_PROTO(opt_malloc_conf_symlink) +CTL_PROTO(opt_malloc_conf_env_var) +CTL_PROTO(opt_malloc_conf_global_var) +CTL_PROTO(opt_malloc_conf_global_var_2_conf_harder) CTL_PROTO(tcache_create) CTL_PROTO(tcache_flush) CTL_PROTO(tcache_destroy) @@ -168,6 +189,7 @@ CTL_PROTO(arena_i_dirty_decay_ms) CTL_PROTO(arena_i_muzzy_decay_ms) CTL_PROTO(arena_i_extent_hooks) CTL_PROTO(arena_i_retain_grow_limit) +CTL_PROTO(arena_i_name) INDEX_PROTO(arena_i) CTL_PROTO(arenas_bin_i_size) CTL_PROTO(arenas_bin_i_nregs) @@ -181,6 +203,7 @@ CTL_PROTO(arenas_dirty_decay_ms) CTL_PROTO(arenas_muzzy_decay_ms) CTL_PROTO(arenas_quantum) CTL_PROTO(arenas_page) +CTL_PROTO(arenas_hugepage) CTL_PROTO(arenas_tcache_max) CTL_PROTO(arenas_nbins) CTL_PROTO(arenas_nhbins) @@ -238,12 +261,27 @@ CTL_PROTO(stats_arenas_i_extents_j_dirty_bytes) CTL_PROTO(stats_arenas_i_extents_j_muzzy_bytes) CTL_PROTO(stats_arenas_i_extents_j_retained_bytes) INDEX_PROTO(stats_arenas_i_extents_j) + +/* Merged set of stats for HPA shard. */ +CTL_PROTO(stats_arenas_i_hpa_shard_npageslabs) +CTL_PROTO(stats_arenas_i_hpa_shard_nactive) +CTL_PROTO(stats_arenas_i_hpa_shard_ndirty) + CTL_PROTO(stats_arenas_i_hpa_shard_npurge_passes) CTL_PROTO(stats_arenas_i_hpa_shard_npurges) CTL_PROTO(stats_arenas_i_hpa_shard_nhugifies) +CTL_PROTO(stats_arenas_i_hpa_shard_nhugify_failures) CTL_PROTO(stats_arenas_i_hpa_shard_ndehugifies) -/* We have a set of stats for full slabs. */ +/* Set of stats for non-hugified and hugified slabs. */ +CTL_PROTO(stats_arenas_i_hpa_shard_slabs_npageslabs_nonhuge) +CTL_PROTO(stats_arenas_i_hpa_shard_slabs_npageslabs_huge) +CTL_PROTO(stats_arenas_i_hpa_shard_slabs_nactive_nonhuge) +CTL_PROTO(stats_arenas_i_hpa_shard_slabs_nactive_huge) +CTL_PROTO(stats_arenas_i_hpa_shard_slabs_ndirty_nonhuge) +CTL_PROTO(stats_arenas_i_hpa_shard_slabs_ndirty_huge) + +/* A parallel set of stats for full slabs. */ CTL_PROTO(stats_arenas_i_hpa_shard_full_slabs_npageslabs_nonhuge) CTL_PROTO(stats_arenas_i_hpa_shard_full_slabs_npageslabs_huge) CTL_PROTO(stats_arenas_i_hpa_shard_full_slabs_nactive_nonhuge) @@ -271,6 +309,7 @@ CTL_PROTO(stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_nonhuge) CTL_PROTO(stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_huge) INDEX_PROTO(stats_arenas_i_hpa_shard_nonfull_slabs_j) + CTL_PROTO(stats_arenas_i_nthreads) CTL_PROTO(stats_arenas_i_uptime) CTL_PROTO(stats_arenas_i_dss) @@ -290,12 +329,19 @@ CTL_PROTO(stats_arenas_i_muzzy_nmadvise) CTL_PROTO(stats_arenas_i_muzzy_purged) CTL_PROTO(stats_arenas_i_base) CTL_PROTO(stats_arenas_i_internal) +CTL_PROTO(stats_arenas_i_metadata_edata) +CTL_PROTO(stats_arenas_i_metadata_rtree) CTL_PROTO(stats_arenas_i_metadata_thp) CTL_PROTO(stats_arenas_i_tcache_bytes) CTL_PROTO(stats_arenas_i_tcache_stashed_bytes) CTL_PROTO(stats_arenas_i_resident) CTL_PROTO(stats_arenas_i_abandoned_vm) CTL_PROTO(stats_arenas_i_hpa_sec_bytes) +CTL_PROTO(stats_arenas_i_hpa_sec_hits) +CTL_PROTO(stats_arenas_i_hpa_sec_misses) +CTL_PROTO(stats_arenas_i_hpa_sec_dalloc_flush) +CTL_PROTO(stats_arenas_i_hpa_sec_dalloc_noflush) +CTL_PROTO(stats_arenas_i_hpa_sec_overfills) INDEX_PROTO(stats_arenas_i) CTL_PROTO(stats_allocated) CTL_PROTO(stats_active) @@ -303,17 +349,22 @@ CTL_PROTO(stats_background_thread_num_threads) CTL_PROTO(stats_background_thread_num_runs) CTL_PROTO(stats_background_thread_run_interval) CTL_PROTO(stats_metadata) +CTL_PROTO(stats_metadata_edata) +CTL_PROTO(stats_metadata_rtree) CTL_PROTO(stats_metadata_thp) CTL_PROTO(stats_resident) CTL_PROTO(stats_mapped) CTL_PROTO(stats_retained) CTL_PROTO(stats_zero_reallocs) +CTL_PROTO(approximate_stats_active) CTL_PROTO(experimental_hooks_install) CTL_PROTO(experimental_hooks_remove) CTL_PROTO(experimental_hooks_prof_backtrace) CTL_PROTO(experimental_hooks_prof_dump) +CTL_PROTO(experimental_hooks_prof_sample) +CTL_PROTO(experimental_hooks_prof_sample_free) +CTL_PROTO(experimental_hooks_thread_event) CTL_PROTO(experimental_hooks_safety_check_abort) -CTL_PROTO(experimental_thread_activity_callback) CTL_PROTO(experimental_utilization_query) CTL_PROTO(experimental_utilization_batch_query) CTL_PROTO(experimental_arenas_i_pactivep) @@ -323,14 +374,14 @@ CTL_PROTO(experimental_prof_recent_alloc_dump) CTL_PROTO(experimental_batch_alloc) CTL_PROTO(experimental_arenas_create_ext) -#define MUTEX_STATS_CTL_PROTO_GEN(n) \ -CTL_PROTO(stats_##n##_num_ops) \ -CTL_PROTO(stats_##n##_num_wait) \ -CTL_PROTO(stats_##n##_num_spin_acq) \ -CTL_PROTO(stats_##n##_num_owner_switch) \ -CTL_PROTO(stats_##n##_total_wait_time) \ -CTL_PROTO(stats_##n##_max_wait_time) \ -CTL_PROTO(stats_##n##_max_num_thds) +#define MUTEX_STATS_CTL_PROTO_GEN(n) \ + CTL_PROTO(stats_##n##_num_ops) \ + CTL_PROTO(stats_##n##_num_wait) \ + CTL_PROTO(stats_##n##_num_spin_acq) \ + CTL_PROTO(stats_##n##_num_owner_switch) \ + CTL_PROTO(stats_##n##_total_wait_time) \ + CTL_PROTO(stats_##n##_max_wait_time) \ + CTL_PROTO(stats_##n##_max_num_thds) /* Global mutexes. */ #define OP(mtx) MUTEX_STATS_CTL_PROTO_GEN(mutexes_##mtx) @@ -351,473 +402,450 @@ CTL_PROTO(stats_mutexes_reset) /******************************************************************************/ /* mallctl tree. */ -#define NAME(n) {true}, n -#define CHILD(t, c) \ - sizeof(c##_node) / sizeof(ctl_##t##_node_t), \ - (ctl_node_t *)c##_node, \ - NULL -#define CTL(c) 0, NULL, c##_ctl +#define NAME(n) {true}, n +#define CHILD(t, c) \ + sizeof(c##_node) / sizeof(ctl_##t##_node_t), (ctl_node_t *)c##_node, \ + NULL +#define CTL(c) 0, NULL, c##_ctl /* * Only handles internal indexed nodes, since there are currently no external * ones. */ -#define INDEX(i) {false}, i##_index - -static const ctl_named_node_t thread_tcache_node[] = { - {NAME("enabled"), CTL(thread_tcache_enabled)}, - {NAME("flush"), CTL(thread_tcache_flush)} -}; - -static const ctl_named_node_t thread_peak_node[] = { - {NAME("read"), CTL(thread_peak_read)}, - {NAME("reset"), CTL(thread_peak_reset)}, -}; +#define INDEX(i) {false}, i##_index -static const ctl_named_node_t thread_prof_node[] = { - {NAME("name"), CTL(thread_prof_name)}, - {NAME("active"), CTL(thread_prof_active)} -}; +static const ctl_named_node_t thread_tcache_ncached_max_node[] = { + {NAME("read_sizeclass"), CTL(thread_tcache_ncached_max_read_sizeclass)}, + {NAME("write"), CTL(thread_tcache_ncached_max_write)}}; -static const ctl_named_node_t thread_node[] = { - {NAME("arena"), CTL(thread_arena)}, - {NAME("allocated"), CTL(thread_allocated)}, - {NAME("allocatedp"), CTL(thread_allocatedp)}, - {NAME("deallocated"), CTL(thread_deallocated)}, - {NAME("deallocatedp"), CTL(thread_deallocatedp)}, - {NAME("tcache"), CHILD(named, thread_tcache)}, - {NAME("peak"), CHILD(named, thread_peak)}, - {NAME("prof"), CHILD(named, thread_prof)}, - {NAME("idle"), CTL(thread_idle)} -}; +static const ctl_named_node_t thread_tcache_node[] = { + {NAME("enabled"), CTL(thread_tcache_enabled)}, + {NAME("max"), CTL(thread_tcache_max)}, + {NAME("flush"), CTL(thread_tcache_flush)}, + {NAME("ncached_max"), CHILD(named, thread_tcache_ncached_max)}}; -static const ctl_named_node_t config_node[] = { - {NAME("cache_oblivious"), CTL(config_cache_oblivious)}, - {NAME("debug"), CTL(config_debug)}, - {NAME("fill"), CTL(config_fill)}, - {NAME("lazy_lock"), CTL(config_lazy_lock)}, - {NAME("malloc_conf"), CTL(config_malloc_conf)}, - {NAME("opt_safety_checks"), CTL(config_opt_safety_checks)}, - {NAME("prof"), CTL(config_prof)}, - {NAME("prof_libgcc"), CTL(config_prof_libgcc)}, - {NAME("prof_libunwind"), CTL(config_prof_libunwind)}, - {NAME("stats"), CTL(config_stats)}, - {NAME("utrace"), CTL(config_utrace)}, - {NAME("xmalloc"), CTL(config_xmalloc)} +static const ctl_named_node_t thread_peak_node[] = { + {NAME("read"), CTL(thread_peak_read)}, + {NAME("reset"), CTL(thread_peak_reset)}, }; -static const ctl_named_node_t opt_node[] = { - {NAME("abort"), CTL(opt_abort)}, - {NAME("abort_conf"), CTL(opt_abort_conf)}, - {NAME("cache_oblivious"), CTL(opt_cache_oblivious)}, - {NAME("trust_madvise"), CTL(opt_trust_madvise)}, - {NAME("confirm_conf"), CTL(opt_confirm_conf)}, - {NAME("hpa"), CTL(opt_hpa)}, - {NAME("hpa_slab_max_alloc"), CTL(opt_hpa_slab_max_alloc)}, - {NAME("hpa_hugification_threshold"), - CTL(opt_hpa_hugification_threshold)}, - {NAME("hpa_hugify_delay_ms"), CTL(opt_hpa_hugify_delay_ms)}, - {NAME("hpa_min_purge_interval_ms"), CTL(opt_hpa_min_purge_interval_ms)}, - {NAME("hpa_dirty_mult"), CTL(opt_hpa_dirty_mult)}, - {NAME("hpa_sec_nshards"), CTL(opt_hpa_sec_nshards)}, - {NAME("hpa_sec_max_alloc"), CTL(opt_hpa_sec_max_alloc)}, - {NAME("hpa_sec_max_bytes"), CTL(opt_hpa_sec_max_bytes)}, - {NAME("hpa_sec_bytes_after_flush"), - CTL(opt_hpa_sec_bytes_after_flush)}, - {NAME("hpa_sec_batch_fill_extra"), - CTL(opt_hpa_sec_batch_fill_extra)}, - {NAME("metadata_thp"), CTL(opt_metadata_thp)}, - {NAME("retain"), CTL(opt_retain)}, - {NAME("dss"), CTL(opt_dss)}, - {NAME("narenas"), CTL(opt_narenas)}, - {NAME("percpu_arena"), CTL(opt_percpu_arena)}, - {NAME("oversize_threshold"), CTL(opt_oversize_threshold)}, - {NAME("mutex_max_spin"), CTL(opt_mutex_max_spin)}, - {NAME("background_thread"), CTL(opt_background_thread)}, - {NAME("max_background_threads"), CTL(opt_max_background_threads)}, - {NAME("dirty_decay_ms"), CTL(opt_dirty_decay_ms)}, - {NAME("muzzy_decay_ms"), CTL(opt_muzzy_decay_ms)}, - {NAME("stats_print"), CTL(opt_stats_print)}, - {NAME("stats_print_opts"), CTL(opt_stats_print_opts)}, - {NAME("stats_interval"), CTL(opt_stats_interval)}, - {NAME("stats_interval_opts"), CTL(opt_stats_interval_opts)}, - {NAME("junk"), CTL(opt_junk)}, - {NAME("zero"), CTL(opt_zero)}, - {NAME("utrace"), CTL(opt_utrace)}, - {NAME("xmalloc"), CTL(opt_xmalloc)}, - {NAME("experimental_infallible_new"), - CTL(opt_experimental_infallible_new)}, - {NAME("tcache"), CTL(opt_tcache)}, - {NAME("tcache_max"), CTL(opt_tcache_max)}, - {NAME("tcache_nslots_small_min"), - CTL(opt_tcache_nslots_small_min)}, - {NAME("tcache_nslots_small_max"), - CTL(opt_tcache_nslots_small_max)}, - {NAME("tcache_nslots_large"), CTL(opt_tcache_nslots_large)}, - {NAME("lg_tcache_nslots_mul"), CTL(opt_lg_tcache_nslots_mul)}, - {NAME("tcache_gc_incr_bytes"), CTL(opt_tcache_gc_incr_bytes)}, - {NAME("tcache_gc_delay_bytes"), CTL(opt_tcache_gc_delay_bytes)}, - {NAME("lg_tcache_flush_small_div"), - CTL(opt_lg_tcache_flush_small_div)}, - {NAME("lg_tcache_flush_large_div"), - CTL(opt_lg_tcache_flush_large_div)}, - {NAME("thp"), CTL(opt_thp)}, - {NAME("lg_extent_max_active_fit"), CTL(opt_lg_extent_max_active_fit)}, - {NAME("prof"), CTL(opt_prof)}, - {NAME("prof_prefix"), CTL(opt_prof_prefix)}, - {NAME("prof_active"), CTL(opt_prof_active)}, - {NAME("prof_thread_active_init"), CTL(opt_prof_thread_active_init)}, - {NAME("lg_prof_sample"), CTL(opt_lg_prof_sample)}, - {NAME("lg_prof_interval"), CTL(opt_lg_prof_interval)}, - {NAME("prof_gdump"), CTL(opt_prof_gdump)}, - {NAME("prof_final"), CTL(opt_prof_final)}, - {NAME("prof_leak"), CTL(opt_prof_leak)}, - {NAME("prof_leak_error"), CTL(opt_prof_leak_error)}, - {NAME("prof_accum"), CTL(opt_prof_accum)}, - {NAME("prof_recent_alloc_max"), CTL(opt_prof_recent_alloc_max)}, - {NAME("prof_stats"), CTL(opt_prof_stats)}, - {NAME("prof_sys_thread_name"), CTL(opt_prof_sys_thread_name)}, - {NAME("prof_time_resolution"), CTL(opt_prof_time_res)}, - {NAME("lg_san_uaf_align"), CTL(opt_lg_san_uaf_align)}, - {NAME("zero_realloc"), CTL(opt_zero_realloc)} -}; - -static const ctl_named_node_t tcache_node[] = { - {NAME("create"), CTL(tcache_create)}, - {NAME("flush"), CTL(tcache_flush)}, - {NAME("destroy"), CTL(tcache_destroy)} -}; +static const ctl_named_node_t thread_prof_node[] = { + {NAME("name"), CTL(thread_prof_name)}, + {NAME("active"), CTL(thread_prof_active)}}; + +static const ctl_named_node_t thread_node[] = { + {NAME("arena"), CTL(thread_arena)}, + {NAME("allocated"), CTL(thread_allocated)}, + {NAME("allocatedp"), CTL(thread_allocatedp)}, + {NAME("deallocated"), CTL(thread_deallocated)}, + {NAME("deallocatedp"), CTL(thread_deallocatedp)}, + {NAME("tcache"), CHILD(named, thread_tcache)}, + {NAME("peak"), CHILD(named, thread_peak)}, + {NAME("prof"), CHILD(named, thread_prof)}, + {NAME("idle"), CTL(thread_idle)}}; + +static const ctl_named_node_t config_node[] = { + {NAME("cache_oblivious"), CTL(config_cache_oblivious)}, + {NAME("debug"), CTL(config_debug)}, {NAME("fill"), CTL(config_fill)}, + {NAME("lazy_lock"), CTL(config_lazy_lock)}, + {NAME("malloc_conf"), CTL(config_malloc_conf)}, + {NAME("opt_safety_checks"), CTL(config_opt_safety_checks)}, + {NAME("prof"), CTL(config_prof)}, + {NAME("prof_libgcc"), CTL(config_prof_libgcc)}, + {NAME("prof_libunwind"), CTL(config_prof_libunwind)}, + {NAME("prof_frameptr"), CTL(config_prof_frameptr)}, + {NAME("stats"), CTL(config_stats)}, {NAME("utrace"), CTL(config_utrace)}, + {NAME("xmalloc"), CTL(config_xmalloc)}}; + +static const ctl_named_node_t opt_malloc_conf_node[] = { + {NAME("symlink"), CTL(opt_malloc_conf_symlink)}, + {NAME("env_var"), CTL(opt_malloc_conf_env_var)}, + {NAME("global_var"), CTL(opt_malloc_conf_global_var)}, + {NAME("global_var_2_conf_harder"), + CTL(opt_malloc_conf_global_var_2_conf_harder)}}; + +static const ctl_named_node_t opt_node[] = {{NAME("abort"), CTL(opt_abort)}, + {NAME("abort_conf"), CTL(opt_abort_conf)}, + {NAME("cache_oblivious"), CTL(opt_cache_oblivious)}, + {NAME("trust_madvise"), CTL(opt_trust_madvise)}, + {NAME("experimental_hpa_start_huge_if_thp_always"), + CTL(opt_experimental_hpa_start_huge_if_thp_always)}, + {NAME("experimental_hpa_enforce_hugify"), + CTL(opt_experimental_hpa_enforce_hugify)}, + {NAME("confirm_conf"), CTL(opt_confirm_conf)}, {NAME("hpa"), CTL(opt_hpa)}, + {NAME("hpa_slab_max_alloc"), CTL(opt_hpa_slab_max_alloc)}, + {NAME("hpa_hugification_threshold"), CTL(opt_hpa_hugification_threshold)}, + {NAME("hpa_hugify_delay_ms"), CTL(opt_hpa_hugify_delay_ms)}, + {NAME("hpa_hugify_sync"), CTL(opt_hpa_hugify_sync)}, + {NAME("hpa_min_purge_interval_ms"), CTL(opt_hpa_min_purge_interval_ms)}, + {NAME("experimental_hpa_max_purge_nhp"), + CTL(opt_experimental_hpa_max_purge_nhp)}, + {NAME("hpa_purge_threshold"), CTL(opt_hpa_purge_threshold)}, + {NAME("hpa_min_purge_delay_ms"), CTL(opt_hpa_min_purge_delay_ms)}, + {NAME("hpa_hugify_style"), CTL(opt_hpa_hugify_style)}, + {NAME("hpa_dirty_mult"), CTL(opt_hpa_dirty_mult)}, + {NAME("hpa_sec_nshards"), CTL(opt_hpa_sec_nshards)}, + {NAME("hpa_sec_max_alloc"), CTL(opt_hpa_sec_max_alloc)}, + {NAME("hpa_sec_max_bytes"), CTL(opt_hpa_sec_max_bytes)}, + {NAME("hpa_sec_batch_fill_extra"), CTL(opt_hpa_sec_batch_fill_extra)}, + {NAME("huge_arena_pac_thp"), CTL(opt_huge_arena_pac_thp)}, + {NAME("metadata_thp"), CTL(opt_metadata_thp)}, + {NAME("retain"), CTL(opt_retain)}, {NAME("dss"), CTL(opt_dss)}, + {NAME("narenas"), CTL(opt_narenas)}, + {NAME("percpu_arena"), CTL(opt_percpu_arena)}, + {NAME("oversize_threshold"), CTL(opt_oversize_threshold)}, + {NAME("mutex_max_spin"), CTL(opt_mutex_max_spin)}, + {NAME("background_thread"), CTL(opt_background_thread)}, + {NAME("max_background_threads"), CTL(opt_max_background_threads)}, + {NAME("dirty_decay_ms"), CTL(opt_dirty_decay_ms)}, + {NAME("muzzy_decay_ms"), CTL(opt_muzzy_decay_ms)}, + {NAME("stats_print"), CTL(opt_stats_print)}, + {NAME("stats_print_opts"), CTL(opt_stats_print_opts)}, + {NAME("stats_interval"), CTL(opt_stats_interval)}, + {NAME("stats_interval_opts"), CTL(opt_stats_interval_opts)}, + {NAME("junk"), CTL(opt_junk)}, {NAME("zero"), CTL(opt_zero)}, + {NAME("utrace"), CTL(opt_utrace)}, {NAME("xmalloc"), CTL(opt_xmalloc)}, + {NAME("experimental_infallible_new"), CTL(opt_experimental_infallible_new)}, + {NAME("experimental_tcache_gc"), CTL(opt_experimental_tcache_gc)}, + {NAME("tcache"), CTL(opt_tcache)}, + {NAME("tcache_max"), CTL(opt_tcache_max)}, + {NAME("tcache_nslots_small_min"), CTL(opt_tcache_nslots_small_min)}, + {NAME("tcache_nslots_small_max"), CTL(opt_tcache_nslots_small_max)}, + {NAME("tcache_nslots_large"), CTL(opt_tcache_nslots_large)}, + {NAME("lg_tcache_nslots_mul"), CTL(opt_lg_tcache_nslots_mul)}, + {NAME("tcache_gc_incr_bytes"), CTL(opt_tcache_gc_incr_bytes)}, + {NAME("tcache_gc_delay_bytes"), CTL(opt_tcache_gc_delay_bytes)}, + {NAME("lg_tcache_flush_small_div"), CTL(opt_lg_tcache_flush_small_div)}, + {NAME("lg_tcache_flush_large_div"), CTL(opt_lg_tcache_flush_large_div)}, + {NAME("thp"), CTL(opt_thp)}, + {NAME("lg_extent_max_active_fit"), CTL(opt_lg_extent_max_active_fit)}, + {NAME("prof"), CTL(opt_prof)}, {NAME("prof_prefix"), CTL(opt_prof_prefix)}, + {NAME("prof_active"), CTL(opt_prof_active)}, + {NAME("prof_thread_active_init"), CTL(opt_prof_thread_active_init)}, + {NAME("prof_bt_max"), CTL(opt_prof_bt_max)}, + {NAME("lg_prof_sample"), CTL(opt_lg_prof_sample)}, + {NAME("lg_prof_interval"), CTL(opt_lg_prof_interval)}, + {NAME("prof_gdump"), CTL(opt_prof_gdump)}, + {NAME("prof_final"), CTL(opt_prof_final)}, + {NAME("prof_leak"), CTL(opt_prof_leak)}, + {NAME("prof_leak_error"), CTL(opt_prof_leak_error)}, + {NAME("prof_accum"), CTL(opt_prof_accum)}, + {NAME("prof_pid_namespace"), CTL(opt_prof_pid_namespace)}, + {NAME("prof_recent_alloc_max"), CTL(opt_prof_recent_alloc_max)}, + {NAME("prof_stats"), CTL(opt_prof_stats)}, + {NAME("prof_sys_thread_name"), CTL(opt_prof_sys_thread_name)}, + {NAME("prof_time_resolution"), CTL(opt_prof_time_res)}, + {NAME("lg_san_uaf_align"), CTL(opt_lg_san_uaf_align)}, + {NAME("zero_realloc"), CTL(opt_zero_realloc)}, + {NAME("debug_double_free_max_scan"), CTL(opt_debug_double_free_max_scan)}, + {NAME("disable_large_size_classes"), CTL(opt_disable_large_size_classes)}, + {NAME("process_madvise_max_batch"), CTL(opt_process_madvise_max_batch)}, + {NAME("malloc_conf"), CHILD(named, opt_malloc_conf)}}; + +static const ctl_named_node_t tcache_node[] = { + {NAME("create"), CTL(tcache_create)}, {NAME("flush"), CTL(tcache_flush)}, + {NAME("destroy"), CTL(tcache_destroy)}}; static const ctl_named_node_t arena_i_node[] = { - {NAME("initialized"), CTL(arena_i_initialized)}, - {NAME("decay"), CTL(arena_i_decay)}, - {NAME("purge"), CTL(arena_i_purge)}, - {NAME("reset"), CTL(arena_i_reset)}, - {NAME("destroy"), CTL(arena_i_destroy)}, - {NAME("dss"), CTL(arena_i_dss)}, - /* + {NAME("initialized"), CTL(arena_i_initialized)}, + {NAME("decay"), CTL(arena_i_decay)}, {NAME("purge"), CTL(arena_i_purge)}, + {NAME("reset"), CTL(arena_i_reset)}, + {NAME("destroy"), CTL(arena_i_destroy)}, {NAME("dss"), CTL(arena_i_dss)}, + /* * Undocumented for now, since we anticipate an arena API in flux after * we cut the last 5-series release. */ - {NAME("oversize_threshold"), CTL(arena_i_oversize_threshold)}, - {NAME("dirty_decay_ms"), CTL(arena_i_dirty_decay_ms)}, - {NAME("muzzy_decay_ms"), CTL(arena_i_muzzy_decay_ms)}, - {NAME("extent_hooks"), CTL(arena_i_extent_hooks)}, - {NAME("retain_grow_limit"), CTL(arena_i_retain_grow_limit)} -}; + {NAME("oversize_threshold"), CTL(arena_i_oversize_threshold)}, + {NAME("dirty_decay_ms"), CTL(arena_i_dirty_decay_ms)}, + {NAME("muzzy_decay_ms"), CTL(arena_i_muzzy_decay_ms)}, + {NAME("extent_hooks"), CTL(arena_i_extent_hooks)}, + {NAME("retain_grow_limit"), CTL(arena_i_retain_grow_limit)}, + {NAME("name"), CTL(arena_i_name)}}; static const ctl_named_node_t super_arena_i_node[] = { - {NAME(""), CHILD(named, arena_i)} -}; + {NAME(""), CHILD(named, arena_i)}}; -static const ctl_indexed_node_t arena_node[] = { - {INDEX(arena_i)} -}; +static const ctl_indexed_node_t arena_node[] = {{INDEX(arena_i)}}; static const ctl_named_node_t arenas_bin_i_node[] = { - {NAME("size"), CTL(arenas_bin_i_size)}, - {NAME("nregs"), CTL(arenas_bin_i_nregs)}, - {NAME("slab_size"), CTL(arenas_bin_i_slab_size)}, - {NAME("nshards"), CTL(arenas_bin_i_nshards)} -}; + {NAME("size"), CTL(arenas_bin_i_size)}, + {NAME("nregs"), CTL(arenas_bin_i_nregs)}, + {NAME("slab_size"), CTL(arenas_bin_i_slab_size)}, + {NAME("nshards"), CTL(arenas_bin_i_nshards)}}; static const ctl_named_node_t super_arenas_bin_i_node[] = { - {NAME(""), CHILD(named, arenas_bin_i)} -}; + {NAME(""), CHILD(named, arenas_bin_i)}}; -static const ctl_indexed_node_t arenas_bin_node[] = { - {INDEX(arenas_bin_i)} -}; +static const ctl_indexed_node_t arenas_bin_node[] = {{INDEX(arenas_bin_i)}}; static const ctl_named_node_t arenas_lextent_i_node[] = { - {NAME("size"), CTL(arenas_lextent_i_size)} -}; + {NAME("size"), CTL(arenas_lextent_i_size)}}; static const ctl_named_node_t super_arenas_lextent_i_node[] = { - {NAME(""), CHILD(named, arenas_lextent_i)} -}; + {NAME(""), CHILD(named, arenas_lextent_i)}}; static const ctl_indexed_node_t arenas_lextent_node[] = { - {INDEX(arenas_lextent_i)} -}; + {INDEX(arenas_lextent_i)}}; static const ctl_named_node_t arenas_node[] = { - {NAME("narenas"), CTL(arenas_narenas)}, - {NAME("dirty_decay_ms"), CTL(arenas_dirty_decay_ms)}, - {NAME("muzzy_decay_ms"), CTL(arenas_muzzy_decay_ms)}, - {NAME("quantum"), CTL(arenas_quantum)}, - {NAME("page"), CTL(arenas_page)}, - {NAME("tcache_max"), CTL(arenas_tcache_max)}, - {NAME("nbins"), CTL(arenas_nbins)}, - {NAME("nhbins"), CTL(arenas_nhbins)}, - {NAME("bin"), CHILD(indexed, arenas_bin)}, - {NAME("nlextents"), CTL(arenas_nlextents)}, - {NAME("lextent"), CHILD(indexed, arenas_lextent)}, - {NAME("create"), CTL(arenas_create)}, - {NAME("lookup"), CTL(arenas_lookup)} -}; + {NAME("narenas"), CTL(arenas_narenas)}, + {NAME("dirty_decay_ms"), CTL(arenas_dirty_decay_ms)}, + {NAME("muzzy_decay_ms"), CTL(arenas_muzzy_decay_ms)}, + {NAME("quantum"), CTL(arenas_quantum)}, {NAME("page"), CTL(arenas_page)}, + {NAME("hugepage"), CTL(arenas_hugepage)}, + {NAME("tcache_max"), CTL(arenas_tcache_max)}, + {NAME("nbins"), CTL(arenas_nbins)}, {NAME("nhbins"), CTL(arenas_nhbins)}, + {NAME("bin"), CHILD(indexed, arenas_bin)}, + {NAME("nlextents"), CTL(arenas_nlextents)}, + {NAME("lextent"), CHILD(indexed, arenas_lextent)}, + {NAME("create"), CTL(arenas_create)}, {NAME("lookup"), CTL(arenas_lookup)}}; static const ctl_named_node_t prof_stats_bins_i_node[] = { - {NAME("live"), CTL(prof_stats_bins_i_live)}, - {NAME("accum"), CTL(prof_stats_bins_i_accum)} -}; + {NAME("live"), CTL(prof_stats_bins_i_live)}, + {NAME("accum"), CTL(prof_stats_bins_i_accum)}}; static const ctl_named_node_t super_prof_stats_bins_i_node[] = { - {NAME(""), CHILD(named, prof_stats_bins_i)} -}; + {NAME(""), CHILD(named, prof_stats_bins_i)}}; static const ctl_indexed_node_t prof_stats_bins_node[] = { - {INDEX(prof_stats_bins_i)} -}; + {INDEX(prof_stats_bins_i)}}; static const ctl_named_node_t prof_stats_lextents_i_node[] = { - {NAME("live"), CTL(prof_stats_lextents_i_live)}, - {NAME("accum"), CTL(prof_stats_lextents_i_accum)} -}; + {NAME("live"), CTL(prof_stats_lextents_i_live)}, + {NAME("accum"), CTL(prof_stats_lextents_i_accum)}}; static const ctl_named_node_t super_prof_stats_lextents_i_node[] = { - {NAME(""), CHILD(named, prof_stats_lextents_i)} -}; + {NAME(""), CHILD(named, prof_stats_lextents_i)}}; static const ctl_indexed_node_t prof_stats_lextents_node[] = { - {INDEX(prof_stats_lextents_i)} -}; + {INDEX(prof_stats_lextents_i)}}; -static const ctl_named_node_t prof_stats_node[] = { - {NAME("bins"), CHILD(indexed, prof_stats_bins)}, - {NAME("lextents"), CHILD(indexed, prof_stats_lextents)}, +static const ctl_named_node_t prof_stats_node[] = { + {NAME("bins"), CHILD(indexed, prof_stats_bins)}, + {NAME("lextents"), CHILD(indexed, prof_stats_lextents)}, }; -static const ctl_named_node_t prof_node[] = { - {NAME("thread_active_init"), CTL(prof_thread_active_init)}, - {NAME("active"), CTL(prof_active)}, - {NAME("dump"), CTL(prof_dump)}, - {NAME("gdump"), CTL(prof_gdump)}, - {NAME("prefix"), CTL(prof_prefix)}, - {NAME("reset"), CTL(prof_reset)}, - {NAME("interval"), CTL(prof_interval)}, - {NAME("lg_sample"), CTL(lg_prof_sample)}, - {NAME("log_start"), CTL(prof_log_start)}, - {NAME("log_stop"), CTL(prof_log_stop)}, - {NAME("stats"), CHILD(named, prof_stats)} -}; +static const ctl_named_node_t prof_node[] = { + {NAME("thread_active_init"), CTL(prof_thread_active_init)}, + {NAME("active"), CTL(prof_active)}, {NAME("dump"), CTL(prof_dump)}, + {NAME("gdump"), CTL(prof_gdump)}, {NAME("prefix"), CTL(prof_prefix)}, + {NAME("reset"), CTL(prof_reset)}, {NAME("interval"), CTL(prof_interval)}, + {NAME("lg_sample"), CTL(lg_prof_sample)}, + {NAME("log_start"), CTL(prof_log_start)}, + {NAME("log_stop"), CTL(prof_log_stop)}, + {NAME("stats"), CHILD(named, prof_stats)}}; static const ctl_named_node_t stats_arenas_i_small_node[] = { - {NAME("allocated"), CTL(stats_arenas_i_small_allocated)}, - {NAME("nmalloc"), CTL(stats_arenas_i_small_nmalloc)}, - {NAME("ndalloc"), CTL(stats_arenas_i_small_ndalloc)}, - {NAME("nrequests"), CTL(stats_arenas_i_small_nrequests)}, - {NAME("nfills"), CTL(stats_arenas_i_small_nfills)}, - {NAME("nflushes"), CTL(stats_arenas_i_small_nflushes)} -}; + {NAME("allocated"), CTL(stats_arenas_i_small_allocated)}, + {NAME("nmalloc"), CTL(stats_arenas_i_small_nmalloc)}, + {NAME("ndalloc"), CTL(stats_arenas_i_small_ndalloc)}, + {NAME("nrequests"), CTL(stats_arenas_i_small_nrequests)}, + {NAME("nfills"), CTL(stats_arenas_i_small_nfills)}, + {NAME("nflushes"), CTL(stats_arenas_i_small_nflushes)}}; static const ctl_named_node_t stats_arenas_i_large_node[] = { - {NAME("allocated"), CTL(stats_arenas_i_large_allocated)}, - {NAME("nmalloc"), CTL(stats_arenas_i_large_nmalloc)}, - {NAME("ndalloc"), CTL(stats_arenas_i_large_ndalloc)}, - {NAME("nrequests"), CTL(stats_arenas_i_large_nrequests)}, - {NAME("nfills"), CTL(stats_arenas_i_large_nfills)}, - {NAME("nflushes"), CTL(stats_arenas_i_large_nflushes)} -}; - -#define MUTEX_PROF_DATA_NODE(prefix) \ -static const ctl_named_node_t stats_##prefix##_node[] = { \ - {NAME("num_ops"), \ - CTL(stats_##prefix##_num_ops)}, \ - {NAME("num_wait"), \ - CTL(stats_##prefix##_num_wait)}, \ - {NAME("num_spin_acq"), \ - CTL(stats_##prefix##_num_spin_acq)}, \ - {NAME("num_owner_switch"), \ - CTL(stats_##prefix##_num_owner_switch)}, \ - {NAME("total_wait_time"), \ - CTL(stats_##prefix##_total_wait_time)}, \ - {NAME("max_wait_time"), \ - CTL(stats_##prefix##_max_wait_time)}, \ - {NAME("max_num_thds"), \ - CTL(stats_##prefix##_max_num_thds)} \ - /* Note that # of current waiting thread not provided. */ \ -}; + {NAME("allocated"), CTL(stats_arenas_i_large_allocated)}, + {NAME("nmalloc"), CTL(stats_arenas_i_large_nmalloc)}, + {NAME("ndalloc"), CTL(stats_arenas_i_large_ndalloc)}, + {NAME("nrequests"), CTL(stats_arenas_i_large_nrequests)}, + {NAME("nfills"), CTL(stats_arenas_i_large_nfills)}, + {NAME("nflushes"), CTL(stats_arenas_i_large_nflushes)}}; + +#define MUTEX_PROF_DATA_NODE(prefix) \ + static const ctl_named_node_t stats_##prefix##_node[] = { \ + {NAME("num_ops"), CTL(stats_##prefix##_num_ops)}, \ + {NAME("num_wait"), CTL(stats_##prefix##_num_wait)}, \ + {NAME("num_spin_acq"), CTL(stats_##prefix##_num_spin_acq)}, \ + {NAME("num_owner_switch"), \ + CTL(stats_##prefix##_num_owner_switch)}, \ + {NAME("total_wait_time"), CTL(stats_##prefix##_total_wait_time)}, \ + {NAME("max_wait_time"), CTL(stats_##prefix##_max_wait_time)}, \ + {NAME("max_num_thds"), \ + CTL(stats_##prefix##_max_num_thds)} /* Note that # of current waiting thread not provided. */ \ + }; MUTEX_PROF_DATA_NODE(arenas_i_bins_j_mutex) static const ctl_named_node_t stats_arenas_i_bins_j_node[] = { - {NAME("nmalloc"), CTL(stats_arenas_i_bins_j_nmalloc)}, - {NAME("ndalloc"), CTL(stats_arenas_i_bins_j_ndalloc)}, - {NAME("nrequests"), CTL(stats_arenas_i_bins_j_nrequests)}, - {NAME("curregs"), CTL(stats_arenas_i_bins_j_curregs)}, - {NAME("nfills"), CTL(stats_arenas_i_bins_j_nfills)}, - {NAME("nflushes"), CTL(stats_arenas_i_bins_j_nflushes)}, - {NAME("nslabs"), CTL(stats_arenas_i_bins_j_nslabs)}, - {NAME("nreslabs"), CTL(stats_arenas_i_bins_j_nreslabs)}, - {NAME("curslabs"), CTL(stats_arenas_i_bins_j_curslabs)}, - {NAME("nonfull_slabs"), CTL(stats_arenas_i_bins_j_nonfull_slabs)}, - {NAME("mutex"), CHILD(named, stats_arenas_i_bins_j_mutex)} -}; + {NAME("nmalloc"), CTL(stats_arenas_i_bins_j_nmalloc)}, + {NAME("ndalloc"), CTL(stats_arenas_i_bins_j_ndalloc)}, + {NAME("nrequests"), CTL(stats_arenas_i_bins_j_nrequests)}, + {NAME("curregs"), CTL(stats_arenas_i_bins_j_curregs)}, + {NAME("nfills"), CTL(stats_arenas_i_bins_j_nfills)}, + {NAME("nflushes"), CTL(stats_arenas_i_bins_j_nflushes)}, + {NAME("nslabs"), CTL(stats_arenas_i_bins_j_nslabs)}, + {NAME("nreslabs"), CTL(stats_arenas_i_bins_j_nreslabs)}, + {NAME("curslabs"), CTL(stats_arenas_i_bins_j_curslabs)}, + {NAME("nonfull_slabs"), CTL(stats_arenas_i_bins_j_nonfull_slabs)}, + {NAME("mutex"), CHILD(named, stats_arenas_i_bins_j_mutex)}}; static const ctl_named_node_t super_stats_arenas_i_bins_j_node[] = { - {NAME(""), CHILD(named, stats_arenas_i_bins_j)} -}; + {NAME(""), CHILD(named, stats_arenas_i_bins_j)}}; static const ctl_indexed_node_t stats_arenas_i_bins_node[] = { - {INDEX(stats_arenas_i_bins_j)} -}; + {INDEX(stats_arenas_i_bins_j)}}; static const ctl_named_node_t stats_arenas_i_lextents_j_node[] = { - {NAME("nmalloc"), CTL(stats_arenas_i_lextents_j_nmalloc)}, - {NAME("ndalloc"), CTL(stats_arenas_i_lextents_j_ndalloc)}, - {NAME("nrequests"), CTL(stats_arenas_i_lextents_j_nrequests)}, - {NAME("curlextents"), CTL(stats_arenas_i_lextents_j_curlextents)} -}; + {NAME("nmalloc"), CTL(stats_arenas_i_lextents_j_nmalloc)}, + {NAME("ndalloc"), CTL(stats_arenas_i_lextents_j_ndalloc)}, + {NAME("nrequests"), CTL(stats_arenas_i_lextents_j_nrequests)}, + {NAME("curlextents"), CTL(stats_arenas_i_lextents_j_curlextents)}}; static const ctl_named_node_t super_stats_arenas_i_lextents_j_node[] = { - {NAME(""), CHILD(named, stats_arenas_i_lextents_j)} -}; + {NAME(""), CHILD(named, stats_arenas_i_lextents_j)}}; static const ctl_indexed_node_t stats_arenas_i_lextents_node[] = { - {INDEX(stats_arenas_i_lextents_j)} -}; + {INDEX(stats_arenas_i_lextents_j)}}; static const ctl_named_node_t stats_arenas_i_extents_j_node[] = { - {NAME("ndirty"), CTL(stats_arenas_i_extents_j_ndirty)}, - {NAME("nmuzzy"), CTL(stats_arenas_i_extents_j_nmuzzy)}, - {NAME("nretained"), CTL(stats_arenas_i_extents_j_nretained)}, - {NAME("dirty_bytes"), CTL(stats_arenas_i_extents_j_dirty_bytes)}, - {NAME("muzzy_bytes"), CTL(stats_arenas_i_extents_j_muzzy_bytes)}, - {NAME("retained_bytes"), CTL(stats_arenas_i_extents_j_retained_bytes)} -}; + {NAME("ndirty"), CTL(stats_arenas_i_extents_j_ndirty)}, + {NAME("nmuzzy"), CTL(stats_arenas_i_extents_j_nmuzzy)}, + {NAME("nretained"), CTL(stats_arenas_i_extents_j_nretained)}, + {NAME("dirty_bytes"), CTL(stats_arenas_i_extents_j_dirty_bytes)}, + {NAME("muzzy_bytes"), CTL(stats_arenas_i_extents_j_muzzy_bytes)}, + {NAME("retained_bytes"), CTL(stats_arenas_i_extents_j_retained_bytes)}}; static const ctl_named_node_t super_stats_arenas_i_extents_j_node[] = { - {NAME(""), CHILD(named, stats_arenas_i_extents_j)} -}; + {NAME(""), CHILD(named, stats_arenas_i_extents_j)}}; static const ctl_indexed_node_t stats_arenas_i_extents_node[] = { - {INDEX(stats_arenas_i_extents_j)} -}; + {INDEX(stats_arenas_i_extents_j)}}; -#define OP(mtx) MUTEX_PROF_DATA_NODE(arenas_i_mutexes_##mtx) +#define OP(mtx) MUTEX_PROF_DATA_NODE(arenas_i_mutexes_##mtx) MUTEX_PROF_ARENA_MUTEXES #undef OP static const ctl_named_node_t stats_arenas_i_mutexes_node[] = { #define OP(mtx) {NAME(#mtx), CHILD(named, stats_arenas_i_mutexes_##mtx)}, -MUTEX_PROF_ARENA_MUTEXES + MUTEX_PROF_ARENA_MUTEXES #undef OP }; +static const ctl_named_node_t stats_arenas_i_hpa_shard_slabs_node[] = { + {NAME("npageslabs_nonhuge"), + CTL(stats_arenas_i_hpa_shard_slabs_npageslabs_nonhuge)}, + {NAME("npageslabs_huge"), + CTL(stats_arenas_i_hpa_shard_slabs_npageslabs_huge)}, + {NAME("nactive_nonhuge"), + CTL(stats_arenas_i_hpa_shard_slabs_nactive_nonhuge)}, + {NAME("nactive_huge"), CTL(stats_arenas_i_hpa_shard_slabs_nactive_huge)}, + {NAME("ndirty_nonhuge"), + CTL(stats_arenas_i_hpa_shard_slabs_ndirty_nonhuge)}, + {NAME("ndirty_huge"), CTL(stats_arenas_i_hpa_shard_slabs_ndirty_huge)}}; + static const ctl_named_node_t stats_arenas_i_hpa_shard_full_slabs_node[] = { - {NAME("npageslabs_nonhuge"), - CTL(stats_arenas_i_hpa_shard_full_slabs_npageslabs_nonhuge)}, - {NAME("npageslabs_huge"), - CTL(stats_arenas_i_hpa_shard_full_slabs_npageslabs_huge)}, - {NAME("nactive_nonhuge"), - CTL(stats_arenas_i_hpa_shard_full_slabs_nactive_nonhuge)}, - {NAME("nactive_huge"), - CTL(stats_arenas_i_hpa_shard_full_slabs_nactive_huge)}, - {NAME("ndirty_nonhuge"), - CTL(stats_arenas_i_hpa_shard_full_slabs_ndirty_nonhuge)}, - {NAME("ndirty_huge"), - CTL(stats_arenas_i_hpa_shard_full_slabs_ndirty_huge)} -}; + {NAME("npageslabs_nonhuge"), + CTL(stats_arenas_i_hpa_shard_full_slabs_npageslabs_nonhuge)}, + {NAME("npageslabs_huge"), + CTL(stats_arenas_i_hpa_shard_full_slabs_npageslabs_huge)}, + {NAME("nactive_nonhuge"), + CTL(stats_arenas_i_hpa_shard_full_slabs_nactive_nonhuge)}, + {NAME("nactive_huge"), + CTL(stats_arenas_i_hpa_shard_full_slabs_nactive_huge)}, + {NAME("ndirty_nonhuge"), + CTL(stats_arenas_i_hpa_shard_full_slabs_ndirty_nonhuge)}, + {NAME("ndirty_huge"), + CTL(stats_arenas_i_hpa_shard_full_slabs_ndirty_huge)}}; static const ctl_named_node_t stats_arenas_i_hpa_shard_empty_slabs_node[] = { - {NAME("npageslabs_nonhuge"), - CTL(stats_arenas_i_hpa_shard_empty_slabs_npageslabs_nonhuge)}, - {NAME("npageslabs_huge"), - CTL(stats_arenas_i_hpa_shard_empty_slabs_npageslabs_huge)}, - {NAME("nactive_nonhuge"), - CTL(stats_arenas_i_hpa_shard_empty_slabs_nactive_nonhuge)}, - {NAME("nactive_huge"), - CTL(stats_arenas_i_hpa_shard_empty_slabs_nactive_huge)}, - {NAME("ndirty_nonhuge"), - CTL(stats_arenas_i_hpa_shard_empty_slabs_ndirty_nonhuge)}, - {NAME("ndirty_huge"), - CTL(stats_arenas_i_hpa_shard_empty_slabs_ndirty_huge)} -}; - -static const ctl_named_node_t stats_arenas_i_hpa_shard_nonfull_slabs_j_node[] = { - {NAME("npageslabs_nonhuge"), - CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_nonhuge)}, - {NAME("npageslabs_huge"), - CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_huge)}, - {NAME("nactive_nonhuge"), - CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_nonhuge)}, - {NAME("nactive_huge"), - CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_huge)}, - {NAME("ndirty_nonhuge"), - CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_nonhuge)}, - {NAME("ndirty_huge"), - CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_huge)} -}; - -static const ctl_named_node_t super_stats_arenas_i_hpa_shard_nonfull_slabs_j_node[] = { - {NAME(""), - CHILD(named, stats_arenas_i_hpa_shard_nonfull_slabs_j)} -}; + {NAME("npageslabs_nonhuge"), + CTL(stats_arenas_i_hpa_shard_empty_slabs_npageslabs_nonhuge)}, + {NAME("npageslabs_huge"), + CTL(stats_arenas_i_hpa_shard_empty_slabs_npageslabs_huge)}, + {NAME("nactive_nonhuge"), + CTL(stats_arenas_i_hpa_shard_empty_slabs_nactive_nonhuge)}, + {NAME("nactive_huge"), + CTL(stats_arenas_i_hpa_shard_empty_slabs_nactive_huge)}, + {NAME("ndirty_nonhuge"), + CTL(stats_arenas_i_hpa_shard_empty_slabs_ndirty_nonhuge)}, + {NAME("ndirty_huge"), + CTL(stats_arenas_i_hpa_shard_empty_slabs_ndirty_huge)}}; + +static const ctl_named_node_t stats_arenas_i_hpa_shard_nonfull_slabs_j_node[] = + {{NAME("npageslabs_nonhuge"), + CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_nonhuge)}, + {NAME("npageslabs_huge"), + CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_huge)}, + {NAME("nactive_nonhuge"), + CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_nonhuge)}, + {NAME("nactive_huge"), + CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_huge)}, + {NAME("ndirty_nonhuge"), + CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_nonhuge)}, + {NAME("ndirty_huge"), + CTL(stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_huge)}}; + +static const ctl_named_node_t + super_stats_arenas_i_hpa_shard_nonfull_slabs_j_node[] = { + {NAME(""), CHILD(named, stats_arenas_i_hpa_shard_nonfull_slabs_j)}}; static const ctl_indexed_node_t stats_arenas_i_hpa_shard_nonfull_slabs_node[] = -{ - {INDEX(stats_arenas_i_hpa_shard_nonfull_slabs_j)} -}; + {{INDEX(stats_arenas_i_hpa_shard_nonfull_slabs_j)}}; static const ctl_named_node_t stats_arenas_i_hpa_shard_node[] = { - {NAME("full_slabs"), CHILD(named, - stats_arenas_i_hpa_shard_full_slabs)}, - {NAME("empty_slabs"), CHILD(named, - stats_arenas_i_hpa_shard_empty_slabs)}, - {NAME("nonfull_slabs"), CHILD(indexed, - stats_arenas_i_hpa_shard_nonfull_slabs)}, - - {NAME("npurge_passes"), CTL(stats_arenas_i_hpa_shard_npurge_passes)}, - {NAME("npurges"), CTL(stats_arenas_i_hpa_shard_npurges)}, - {NAME("nhugifies"), CTL(stats_arenas_i_hpa_shard_nhugifies)}, - {NAME("ndehugifies"), CTL(stats_arenas_i_hpa_shard_ndehugifies)} -}; + {NAME("npageslabs"), CTL(stats_arenas_i_hpa_shard_npageslabs)}, + {NAME("nactive"), CTL(stats_arenas_i_hpa_shard_nactive)}, + {NAME("ndirty"), CTL(stats_arenas_i_hpa_shard_ndirty)}, + + {NAME("slabs"), CHILD(named, stats_arenas_i_hpa_shard_slabs)}, + + {NAME("npurge_passes"), CTL(stats_arenas_i_hpa_shard_npurge_passes)}, + {NAME("npurges"), CTL(stats_arenas_i_hpa_shard_npurges)}, + {NAME("nhugifies"), CTL(stats_arenas_i_hpa_shard_nhugifies)}, + {NAME("nhugify_failures"), CTL(stats_arenas_i_hpa_shard_nhugify_failures)}, + {NAME("ndehugifies"), CTL(stats_arenas_i_hpa_shard_ndehugifies)}, + + {NAME("full_slabs"), CHILD(named, stats_arenas_i_hpa_shard_full_slabs)}, + {NAME("empty_slabs"), CHILD(named, stats_arenas_i_hpa_shard_empty_slabs)}, + {NAME("nonfull_slabs"), + CHILD(indexed, stats_arenas_i_hpa_shard_nonfull_slabs)}}; static const ctl_named_node_t stats_arenas_i_node[] = { - {NAME("nthreads"), CTL(stats_arenas_i_nthreads)}, - {NAME("uptime"), CTL(stats_arenas_i_uptime)}, - {NAME("dss"), CTL(stats_arenas_i_dss)}, - {NAME("dirty_decay_ms"), CTL(stats_arenas_i_dirty_decay_ms)}, - {NAME("muzzy_decay_ms"), CTL(stats_arenas_i_muzzy_decay_ms)}, - {NAME("pactive"), CTL(stats_arenas_i_pactive)}, - {NAME("pdirty"), CTL(stats_arenas_i_pdirty)}, - {NAME("pmuzzy"), CTL(stats_arenas_i_pmuzzy)}, - {NAME("mapped"), CTL(stats_arenas_i_mapped)}, - {NAME("retained"), CTL(stats_arenas_i_retained)}, - {NAME("extent_avail"), CTL(stats_arenas_i_extent_avail)}, - {NAME("dirty_npurge"), CTL(stats_arenas_i_dirty_npurge)}, - {NAME("dirty_nmadvise"), CTL(stats_arenas_i_dirty_nmadvise)}, - {NAME("dirty_purged"), CTL(stats_arenas_i_dirty_purged)}, - {NAME("muzzy_npurge"), CTL(stats_arenas_i_muzzy_npurge)}, - {NAME("muzzy_nmadvise"), CTL(stats_arenas_i_muzzy_nmadvise)}, - {NAME("muzzy_purged"), CTL(stats_arenas_i_muzzy_purged)}, - {NAME("base"), CTL(stats_arenas_i_base)}, - {NAME("internal"), CTL(stats_arenas_i_internal)}, - {NAME("metadata_thp"), CTL(stats_arenas_i_metadata_thp)}, - {NAME("tcache_bytes"), CTL(stats_arenas_i_tcache_bytes)}, - {NAME("tcache_stashed_bytes"), - CTL(stats_arenas_i_tcache_stashed_bytes)}, - {NAME("resident"), CTL(stats_arenas_i_resident)}, - {NAME("abandoned_vm"), CTL(stats_arenas_i_abandoned_vm)}, - {NAME("hpa_sec_bytes"), CTL(stats_arenas_i_hpa_sec_bytes)}, - {NAME("small"), CHILD(named, stats_arenas_i_small)}, - {NAME("large"), CHILD(named, stats_arenas_i_large)}, - {NAME("bins"), CHILD(indexed, stats_arenas_i_bins)}, - {NAME("lextents"), CHILD(indexed, stats_arenas_i_lextents)}, - {NAME("extents"), CHILD(indexed, stats_arenas_i_extents)}, - {NAME("mutexes"), CHILD(named, stats_arenas_i_mutexes)}, - {NAME("hpa_shard"), CHILD(named, stats_arenas_i_hpa_shard)} -}; + {NAME("nthreads"), CTL(stats_arenas_i_nthreads)}, + {NAME("uptime"), CTL(stats_arenas_i_uptime)}, + {NAME("dss"), CTL(stats_arenas_i_dss)}, + {NAME("dirty_decay_ms"), CTL(stats_arenas_i_dirty_decay_ms)}, + {NAME("muzzy_decay_ms"), CTL(stats_arenas_i_muzzy_decay_ms)}, + {NAME("pactive"), CTL(stats_arenas_i_pactive)}, + {NAME("pdirty"), CTL(stats_arenas_i_pdirty)}, + {NAME("pmuzzy"), CTL(stats_arenas_i_pmuzzy)}, + {NAME("mapped"), CTL(stats_arenas_i_mapped)}, + {NAME("retained"), CTL(stats_arenas_i_retained)}, + {NAME("extent_avail"), CTL(stats_arenas_i_extent_avail)}, + {NAME("dirty_npurge"), CTL(stats_arenas_i_dirty_npurge)}, + {NAME("dirty_nmadvise"), CTL(stats_arenas_i_dirty_nmadvise)}, + {NAME("dirty_purged"), CTL(stats_arenas_i_dirty_purged)}, + {NAME("muzzy_npurge"), CTL(stats_arenas_i_muzzy_npurge)}, + {NAME("muzzy_nmadvise"), CTL(stats_arenas_i_muzzy_nmadvise)}, + {NAME("muzzy_purged"), CTL(stats_arenas_i_muzzy_purged)}, + {NAME("base"), CTL(stats_arenas_i_base)}, + {NAME("internal"), CTL(stats_arenas_i_internal)}, + {NAME("metadata_edata"), CTL(stats_arenas_i_metadata_edata)}, + {NAME("metadata_rtree"), CTL(stats_arenas_i_metadata_rtree)}, + {NAME("metadata_thp"), CTL(stats_arenas_i_metadata_thp)}, + {NAME("tcache_bytes"), CTL(stats_arenas_i_tcache_bytes)}, + {NAME("tcache_stashed_bytes"), CTL(stats_arenas_i_tcache_stashed_bytes)}, + {NAME("resident"), CTL(stats_arenas_i_resident)}, + {NAME("abandoned_vm"), CTL(stats_arenas_i_abandoned_vm)}, + {NAME("hpa_sec_bytes"), CTL(stats_arenas_i_hpa_sec_bytes)}, + {NAME("hpa_sec_hits"), CTL(stats_arenas_i_hpa_sec_hits)}, + {NAME("hpa_sec_misses"), CTL(stats_arenas_i_hpa_sec_misses)}, + {NAME("hpa_sec_dalloc_noflush"), + CTL(stats_arenas_i_hpa_sec_dalloc_noflush)}, + {NAME("hpa_sec_dalloc_flush"), CTL(stats_arenas_i_hpa_sec_dalloc_flush)}, + {NAME("hpa_sec_overfills"), CTL(stats_arenas_i_hpa_sec_overfills)}, + {NAME("small"), CHILD(named, stats_arenas_i_small)}, + {NAME("large"), CHILD(named, stats_arenas_i_large)}, + {NAME("bins"), CHILD(indexed, stats_arenas_i_bins)}, + {NAME("lextents"), CHILD(indexed, stats_arenas_i_lextents)}, + {NAME("extents"), CHILD(indexed, stats_arenas_i_extents)}, + {NAME("mutexes"), CHILD(named, stats_arenas_i_mutexes)}, + {NAME("hpa_shard"), CHILD(named, stats_arenas_i_hpa_shard)}}; static const ctl_named_node_t super_stats_arenas_i_node[] = { - {NAME(""), CHILD(named, stats_arenas_i)} -}; + {NAME(""), CHILD(named, stats_arenas_i)}}; -static const ctl_indexed_node_t stats_arenas_node[] = { - {INDEX(stats_arenas_i)} -}; +static const ctl_indexed_node_t stats_arenas_node[] = {{INDEX(stats_arenas_i)}}; static const ctl_named_node_t stats_background_thread_node[] = { - {NAME("num_threads"), CTL(stats_background_thread_num_threads)}, - {NAME("num_runs"), CTL(stats_background_thread_num_runs)}, - {NAME("run_interval"), CTL(stats_background_thread_run_interval)} -}; + {NAME("num_threads"), CTL(stats_background_thread_num_threads)}, + {NAME("num_runs"), CTL(stats_background_thread_num_runs)}, + {NAME("run_interval"), CTL(stats_background_thread_run_interval)}}; #define OP(mtx) MUTEX_PROF_DATA_NODE(mutexes_##mtx) MUTEX_PROF_GLOBAL_MUTEXES @@ -825,89 +853,81 @@ MUTEX_PROF_GLOBAL_MUTEXES static const ctl_named_node_t stats_mutexes_node[] = { #define OP(mtx) {NAME(#mtx), CHILD(named, stats_mutexes_##mtx)}, -MUTEX_PROF_GLOBAL_MUTEXES + MUTEX_PROF_GLOBAL_MUTEXES #undef OP - {NAME("reset"), CTL(stats_mutexes_reset)} -}; + {NAME("reset"), CTL(stats_mutexes_reset)}}; #undef MUTEX_PROF_DATA_NODE -static const ctl_named_node_t stats_node[] = { - {NAME("allocated"), CTL(stats_allocated)}, - {NAME("active"), CTL(stats_active)}, - {NAME("metadata"), CTL(stats_metadata)}, - {NAME("metadata_thp"), CTL(stats_metadata_thp)}, - {NAME("resident"), CTL(stats_resident)}, - {NAME("mapped"), CTL(stats_mapped)}, - {NAME("retained"), CTL(stats_retained)}, - {NAME("background_thread"), - CHILD(named, stats_background_thread)}, - {NAME("mutexes"), CHILD(named, stats_mutexes)}, - {NAME("arenas"), CHILD(indexed, stats_arenas)}, - {NAME("zero_reallocs"), CTL(stats_zero_reallocs)}, +static const ctl_named_node_t approximate_stats_node[] = { + {NAME("active"), CTL(approximate_stats_active)}, }; -static const ctl_named_node_t experimental_hooks_node[] = { - {NAME("install"), CTL(experimental_hooks_install)}, - {NAME("remove"), CTL(experimental_hooks_remove)}, - {NAME("prof_backtrace"), CTL(experimental_hooks_prof_backtrace)}, - {NAME("prof_dump"), CTL(experimental_hooks_prof_dump)}, - {NAME("safety_check_abort"), CTL(experimental_hooks_safety_check_abort)}, +static const ctl_named_node_t stats_node[] = { + {NAME("allocated"), CTL(stats_allocated)}, + {NAME("active"), CTL(stats_active)}, + {NAME("metadata"), CTL(stats_metadata)}, + {NAME("metadata_edata"), CTL(stats_metadata_edata)}, + {NAME("metadata_rtree"), CTL(stats_metadata_rtree)}, + {NAME("metadata_thp"), CTL(stats_metadata_thp)}, + {NAME("resident"), CTL(stats_resident)}, + {NAME("mapped"), CTL(stats_mapped)}, + {NAME("retained"), CTL(stats_retained)}, + {NAME("background_thread"), CHILD(named, stats_background_thread)}, + {NAME("mutexes"), CHILD(named, stats_mutexes)}, + {NAME("arenas"), CHILD(indexed, stats_arenas)}, + {NAME("zero_reallocs"), CTL(stats_zero_reallocs)}, }; -static const ctl_named_node_t experimental_thread_node[] = { - {NAME("activity_callback"), - CTL(experimental_thread_activity_callback)} +static const ctl_named_node_t experimental_hooks_node[] = { + {NAME("install"), CTL(experimental_hooks_install)}, + {NAME("remove"), CTL(experimental_hooks_remove)}, + {NAME("prof_backtrace"), CTL(experimental_hooks_prof_backtrace)}, + {NAME("prof_dump"), CTL(experimental_hooks_prof_dump)}, + {NAME("prof_sample"), CTL(experimental_hooks_prof_sample)}, + {NAME("prof_sample_free"), CTL(experimental_hooks_prof_sample_free)}, + {NAME("safety_check_abort"), CTL(experimental_hooks_safety_check_abort)}, + {NAME("thread_event"), CTL(experimental_hooks_thread_event)}, }; static const ctl_named_node_t experimental_utilization_node[] = { - {NAME("query"), CTL(experimental_utilization_query)}, - {NAME("batch_query"), CTL(experimental_utilization_batch_query)} -}; + {NAME("query"), CTL(experimental_utilization_query)}, + {NAME("batch_query"), CTL(experimental_utilization_batch_query)}}; static const ctl_named_node_t experimental_arenas_i_node[] = { - {NAME("pactivep"), CTL(experimental_arenas_i_pactivep)} -}; + {NAME("pactivep"), CTL(experimental_arenas_i_pactivep)}}; static const ctl_named_node_t super_experimental_arenas_i_node[] = { - {NAME(""), CHILD(named, experimental_arenas_i)} -}; + {NAME(""), CHILD(named, experimental_arenas_i)}}; static const ctl_indexed_node_t experimental_arenas_node[] = { - {INDEX(experimental_arenas_i)} -}; + {INDEX(experimental_arenas_i)}}; static const ctl_named_node_t experimental_prof_recent_node[] = { - {NAME("alloc_max"), CTL(experimental_prof_recent_alloc_max)}, - {NAME("alloc_dump"), CTL(experimental_prof_recent_alloc_dump)}, + {NAME("alloc_max"), CTL(experimental_prof_recent_alloc_max)}, + {NAME("alloc_dump"), CTL(experimental_prof_recent_alloc_dump)}, }; static const ctl_named_node_t experimental_node[] = { - {NAME("hooks"), CHILD(named, experimental_hooks)}, - {NAME("utilization"), CHILD(named, experimental_utilization)}, - {NAME("arenas"), CHILD(indexed, experimental_arenas)}, - {NAME("arenas_create_ext"), CTL(experimental_arenas_create_ext)}, - {NAME("prof_recent"), CHILD(named, experimental_prof_recent)}, - {NAME("batch_alloc"), CTL(experimental_batch_alloc)}, - {NAME("thread"), CHILD(named, experimental_thread)} -}; - -static const ctl_named_node_t root_node[] = { - {NAME("version"), CTL(version)}, - {NAME("epoch"), CTL(epoch)}, - {NAME("background_thread"), CTL(background_thread)}, - {NAME("max_background_threads"), CTL(max_background_threads)}, - {NAME("thread"), CHILD(named, thread)}, - {NAME("config"), CHILD(named, config)}, - {NAME("opt"), CHILD(named, opt)}, - {NAME("tcache"), CHILD(named, tcache)}, - {NAME("arena"), CHILD(indexed, arena)}, - {NAME("arenas"), CHILD(named, arenas)}, - {NAME("prof"), CHILD(named, prof)}, - {NAME("stats"), CHILD(named, stats)}, - {NAME("experimental"), CHILD(named, experimental)} -}; + {NAME("hooks"), CHILD(named, experimental_hooks)}, + {NAME("utilization"), CHILD(named, experimental_utilization)}, + {NAME("arenas"), CHILD(indexed, experimental_arenas)}, + {NAME("arenas_create_ext"), CTL(experimental_arenas_create_ext)}, + {NAME("prof_recent"), CHILD(named, experimental_prof_recent)}, + {NAME("batch_alloc"), CTL(experimental_batch_alloc)}}; + +static const ctl_named_node_t root_node[] = {{NAME("version"), CTL(version)}, + {NAME("epoch"), CTL(epoch)}, + {NAME("background_thread"), CTL(background_thread)}, + {NAME("max_background_threads"), CTL(max_background_threads)}, + {NAME("thread"), CHILD(named, thread)}, + {NAME("config"), CHILD(named, config)}, {NAME("opt"), CHILD(named, opt)}, + {NAME("tcache"), CHILD(named, tcache)}, + {NAME("arena"), CHILD(indexed, arena)}, + {NAME("arenas"), CHILD(named, arenas)}, {NAME("prof"), CHILD(named, prof)}, + {NAME("stats"), CHILD(named, stats)}, + {NAME("approximate_stats"), CHILD(named, approximate_stats)}, + {NAME("experimental"), CHILD(named, experimental)}}; static const ctl_named_node_t super_root_node[] = { - {NAME(""), CHILD(named, root)} -}; + {NAME(""), CHILD(named, root)}}; #undef NAME #undef CHILD @@ -922,8 +942,7 @@ static const ctl_named_node_t super_root_node[] = { */ static void ctl_accum_locked_u64(locked_u64_t *dst, locked_u64_t *src) { - locked_inc_u64_unsynchronized(dst, - locked_read_u64_unsynchronized(src)); + locked_inc_u64_unsynchronized(dst, locked_read_u64_unsynchronized(src)); } static void @@ -963,8 +982,8 @@ arenas_i2a_impl(size_t i, bool compat, bool validate) { * more than one past the range of indices that have * initialized ctl data. */ - assert(i < ctl_arenas->narenas || (!validate && i == - ctl_arenas->narenas)); + assert(i < ctl_arenas->narenas + || (!validate && i == ctl_arenas->narenas)); a = (unsigned)i + 2; } break; @@ -988,12 +1007,12 @@ arenas_i_impl(tsd_t *tsd, size_t i, bool compat, bool init) { if (init && ret == NULL) { if (config_stats) { struct container_s { - ctl_arena_t ctl_arena; - ctl_arena_stats_t astats; + ctl_arena_t ctl_arena; + ctl_arena_stats_t astats; }; - struct container_s *cont = - (struct container_s *)base_alloc(tsd_tsdn(tsd), - b0get(), sizeof(struct container_s), QUANTUM); + struct container_s *cont = (struct container_s *) + base_alloc(tsd_tsdn(tsd), b0get(), + sizeof(struct container_s), QUANTUM); if (cont == NULL) { return NULL; } @@ -1031,23 +1050,7 @@ ctl_arena_clear(ctl_arena_t *ctl_arena) { ctl_arena->pdirty = 0; ctl_arena->pmuzzy = 0; if (config_stats) { - memset(&ctl_arena->astats->astats, 0, sizeof(arena_stats_t)); - ctl_arena->astats->allocated_small = 0; - ctl_arena->astats->nmalloc_small = 0; - ctl_arena->astats->ndalloc_small = 0; - ctl_arena->astats->nrequests_small = 0; - ctl_arena->astats->nfills_small = 0; - ctl_arena->astats->nflushes_small = 0; - memset(ctl_arena->astats->bstats, 0, SC_NBINS * - sizeof(bin_stats_data_t)); - memset(ctl_arena->astats->lstats, 0, (SC_NSIZES - SC_NBINS) * - sizeof(arena_stats_large_t)); - memset(ctl_arena->astats->estats, 0, SC_NPSIZES * - sizeof(pac_estats_t)); - memset(&ctl_arena->astats->hpastats, 0, - sizeof(hpa_shard_stats_t)); - memset(&ctl_arena->astats->secstats, 0, - sizeof(sec_stats_t)); + memset(ctl_arena->astats, 0, sizeof(*(ctl_arena->astats))); } } @@ -1062,13 +1065,13 @@ ctl_arena_stats_amerge(tsdn_t *tsdn, ctl_arena_t *ctl_arena, arena_t *arena) { &ctl_arena->pdirty, &ctl_arena->pmuzzy, &ctl_arena->astats->astats, ctl_arena->astats->bstats, ctl_arena->astats->lstats, ctl_arena->astats->estats, - &ctl_arena->astats->hpastats, &ctl_arena->astats->secstats); + &ctl_arena->astats->hpastats); for (i = 0; i < SC_NBINS; i++) { bin_stats_t *bstats = &ctl_arena->astats->bstats[i].stats_data; - ctl_arena->astats->allocated_small += bstats->curregs * - sz_index2size(i); + ctl_arena->astats->allocated_small += bstats->curregs + * sz_index2size(i); ctl_arena->astats->nmalloc_small += bstats->nmalloc; ctl_arena->astats->ndalloc_small += bstats->ndalloc; ctl_arena->astats->nrequests_small += bstats->nrequests; @@ -1084,8 +1087,8 @@ ctl_arena_stats_amerge(tsdn_t *tsdn, ctl_arena_t *ctl_arena, arena_t *arena) { } static void -ctl_arena_stats_sdmerge(ctl_arena_t *ctl_sdarena, ctl_arena_t *ctl_arena, - bool destroyed) { +ctl_arena_stats_sdmerge( + ctl_arena_t *ctl_sdarena, ctl_arena_t *ctl_arena, bool destroyed) { unsigned i; if (!destroyed) { @@ -1106,48 +1109,59 @@ ctl_arena_stats_sdmerge(ctl_arena_t *ctl_sdarena, ctl_arena_t *ctl_arena, if (!destroyed) { sdstats->astats.mapped += astats->astats.mapped; - sdstats->astats.pa_shard_stats.pac_stats.retained - += astats->astats.pa_shard_stats.pac_stats.retained; - sdstats->astats.pa_shard_stats.edata_avail - += astats->astats.pa_shard_stats.edata_avail; + sdstats->astats.pa_shard_stats.pac_stats.retained += + astats->astats.pa_shard_stats.pac_stats.retained; + sdstats->astats.pa_shard_stats.edata_avail += + astats->astats.pa_shard_stats.edata_avail; } - ctl_accum_locked_u64( - &sdstats->astats.pa_shard_stats.pac_stats.decay_dirty.npurge, - &astats->astats.pa_shard_stats.pac_stats.decay_dirty.npurge); - ctl_accum_locked_u64( - &sdstats->astats.pa_shard_stats.pac_stats.decay_dirty.nmadvise, - &astats->astats.pa_shard_stats.pac_stats.decay_dirty.nmadvise); - ctl_accum_locked_u64( - &sdstats->astats.pa_shard_stats.pac_stats.decay_dirty.purged, - &astats->astats.pa_shard_stats.pac_stats.decay_dirty.purged); - - ctl_accum_locked_u64( - &sdstats->astats.pa_shard_stats.pac_stats.decay_muzzy.npurge, - &astats->astats.pa_shard_stats.pac_stats.decay_muzzy.npurge); - ctl_accum_locked_u64( - &sdstats->astats.pa_shard_stats.pac_stats.decay_muzzy.nmadvise, - &astats->astats.pa_shard_stats.pac_stats.decay_muzzy.nmadvise); - ctl_accum_locked_u64( - &sdstats->astats.pa_shard_stats.pac_stats.decay_muzzy.purged, - &astats->astats.pa_shard_stats.pac_stats.decay_muzzy.purged); - -#define OP(mtx) malloc_mutex_prof_merge( \ - &(sdstats->astats.mutex_prof_data[ \ - arena_prof_mutex_##mtx]), \ - &(astats->astats.mutex_prof_data[ \ - arena_prof_mutex_##mtx])); -MUTEX_PROF_ARENA_MUTEXES + ctl_accum_locked_u64(&sdstats->astats.pa_shard_stats.pac_stats + .decay_dirty.npurge, + &astats->astats.pa_shard_stats.pac_stats.decay_dirty + .npurge); + ctl_accum_locked_u64(&sdstats->astats.pa_shard_stats.pac_stats + .decay_dirty.nmadvise, + &astats->astats.pa_shard_stats.pac_stats.decay_dirty + .nmadvise); + ctl_accum_locked_u64(&sdstats->astats.pa_shard_stats.pac_stats + .decay_dirty.purged, + &astats->astats.pa_shard_stats.pac_stats.decay_dirty + .purged); + + ctl_accum_locked_u64(&sdstats->astats.pa_shard_stats.pac_stats + .decay_muzzy.npurge, + &astats->astats.pa_shard_stats.pac_stats.decay_muzzy + .npurge); + ctl_accum_locked_u64(&sdstats->astats.pa_shard_stats.pac_stats + .decay_muzzy.nmadvise, + &astats->astats.pa_shard_stats.pac_stats.decay_muzzy + .nmadvise); + ctl_accum_locked_u64(&sdstats->astats.pa_shard_stats.pac_stats + .decay_muzzy.purged, + &astats->astats.pa_shard_stats.pac_stats.decay_muzzy + .purged); + +#define OP(mtx) \ + malloc_mutex_prof_merge( \ + &(sdstats->astats.mutex_prof_data[arena_prof_mutex_##mtx]), \ + &(astats->astats.mutex_prof_data[arena_prof_mutex_##mtx])); + MUTEX_PROF_ARENA_MUTEXES #undef OP if (!destroyed) { sdstats->astats.base += astats->astats.base; + sdstats->astats.metadata_edata += + astats->astats.metadata_edata; + sdstats->astats.metadata_rtree += + astats->astats.metadata_rtree; sdstats->astats.resident += astats->astats.resident; - sdstats->astats.metadata_thp += astats->astats.metadata_thp; + sdstats->astats.metadata_thp += + astats->astats.metadata_thp; ctl_accum_atomic_zu(&sdstats->astats.internal, &astats->astats.internal); } else { assert(atomic_load_zu( - &astats->astats.internal, ATOMIC_RELAXED) == 0); + &astats->astats.internal, ATOMIC_RELAXED) + == 0); } if (!destroyed) { @@ -1169,8 +1183,8 @@ MUTEX_PROF_ARENA_MUTEXES } sdstats->astats.nmalloc_large += astats->astats.nmalloc_large; sdstats->astats.ndalloc_large += astats->astats.ndalloc_large; - sdstats->astats.nrequests_large - += astats->astats.nrequests_large; + sdstats->astats.nrequests_large += + astats->astats.nrequests_large; sdstats->astats.nflushes_large += astats->astats.nflushes_large; ctl_accum_atomic_zu( &sdstats->astats.pa_shard_stats.pac_stats.abandoned_vm, @@ -1231,19 +1245,18 @@ MUTEX_PROF_ARENA_MUTEXES for (i = 0; i < SC_NPSIZES; i++) { sdstats->estats[i].ndirty += astats->estats[i].ndirty; sdstats->estats[i].nmuzzy += astats->estats[i].nmuzzy; - sdstats->estats[i].nretained - += astats->estats[i].nretained; - sdstats->estats[i].dirty_bytes - += astats->estats[i].dirty_bytes; - sdstats->estats[i].muzzy_bytes - += astats->estats[i].muzzy_bytes; - sdstats->estats[i].retained_bytes - += astats->estats[i].retained_bytes; + sdstats->estats[i].nretained += + astats->estats[i].nretained; + sdstats->estats[i].dirty_bytes += + astats->estats[i].dirty_bytes; + sdstats->estats[i].muzzy_bytes += + astats->estats[i].muzzy_bytes; + sdstats->estats[i].retained_bytes += + astats->estats[i].retained_bytes; } /* Merge HPA stats. */ hpa_shard_stats_accum(&sdstats->hpastats, &astats->hpastats); - sec_stats_accum(&sdstats->secstats, &astats->secstats); } } @@ -1260,11 +1273,11 @@ ctl_arena_refresh(tsdn_t *tsdn, arena_t *arena, ctl_arena_t *ctl_sdarena, static unsigned ctl_arena_init(tsd_t *tsd, const arena_config_t *config) { - unsigned arena_ind; + unsigned arena_ind; ctl_arena_t *ctl_arena; - if ((ctl_arena = ql_last(&ctl_arenas->destroyed, destroyed_link)) != - NULL) { + if ((ctl_arena = ql_last(&ctl_arenas->destroyed, destroyed_link)) + != NULL) { ql_remove(&ctl_arenas->destroyed, ctl_arena, destroyed_link); arena_ind = ctl_arena->arena_ind; } else { @@ -1291,8 +1304,8 @@ ctl_arena_init(tsd_t *tsd, const arena_config_t *config) { static void ctl_background_thread_stats_read(tsdn_t *tsdn) { background_thread_stats_t *stats = &ctl_stats->background_thread; - if (!have_background_thread || - background_thread_stats_read(tsdn, stats)) { + if (!have_background_thread + || background_thread_stats_read(tsdn, stats)) { memset(stats, 0, sizeof(background_thread_stats_t)); nstime_init_zero(&stats->run_interval); } @@ -1303,9 +1316,18 @@ ctl_background_thread_stats_read(tsdn_t *tsdn) { static void ctl_refresh(tsdn_t *tsdn) { - unsigned i; + malloc_mutex_assert_owner(tsdn, &ctl_mtx); + /* + * We are guaranteed that `ctl_arenas->narenas` will not change + * underneath us since we hold `ctl_mtx` for the duration of this + * function. Unfortunately static analysis tools do not understand this, + * so we are extracting `narenas` into a local variable solely for the + * sake of exposing this information to such tools. + */ + const unsigned narenas = ctl_arenas->narenas; + assert(narenas > 0); ctl_arena_t *ctl_sarena = arenas_i(MALLCTL_ARENAS_ALL); - VARIABLE_ARRAY(arena_t *, tarenas, ctl_arenas->narenas); + VARIABLE_ARRAY_UNSAFE(arena_t *, tarenas, narenas); /* * Clear sum stats, since they will be merged into by @@ -1313,41 +1335,45 @@ ctl_refresh(tsdn_t *tsdn) { */ ctl_arena_clear(ctl_sarena); - for (i = 0; i < ctl_arenas->narenas; i++) { + for (unsigned i = 0; i < narenas; i++) { tarenas[i] = arena_get(tsdn, i, false); } - for (i = 0; i < ctl_arenas->narenas; i++) { + for (unsigned i = 0; i < narenas; i++) { ctl_arena_t *ctl_arena = arenas_i(i); - bool initialized = (tarenas[i] != NULL); + bool initialized = (tarenas[i] != NULL); ctl_arena->initialized = initialized; if (initialized) { - ctl_arena_refresh(tsdn, tarenas[i], ctl_sarena, i, - false); + ctl_arena_refresh( + tsdn, tarenas[i], ctl_sarena, i, false); } } if (config_stats) { - ctl_stats->allocated = ctl_sarena->astats->allocated_small + - ctl_sarena->astats->astats.allocated_large; + ctl_stats->allocated = ctl_sarena->astats->allocated_small + + ctl_sarena->astats->astats.allocated_large; ctl_stats->active = (ctl_sarena->pactive << LG_PAGE); - ctl_stats->metadata = ctl_sarena->astats->astats.base + - atomic_load_zu(&ctl_sarena->astats->astats.internal, - ATOMIC_RELAXED); + ctl_stats->metadata = ctl_sarena->astats->astats.base + + atomic_load_zu( + &ctl_sarena->astats->astats.internal, ATOMIC_RELAXED); + ctl_stats->metadata_edata = + ctl_sarena->astats->astats.metadata_edata; + ctl_stats->metadata_rtree = + ctl_sarena->astats->astats.metadata_rtree; ctl_stats->resident = ctl_sarena->astats->astats.resident; ctl_stats->metadata_thp = ctl_sarena->astats->astats.metadata_thp; ctl_stats->mapped = ctl_sarena->astats->astats.mapped; - ctl_stats->retained = ctl_sarena->astats->astats - .pa_shard_stats.pac_stats.retained; + ctl_stats->retained = ctl_sarena->astats->astats.pa_shard_stats + .pac_stats.retained; ctl_background_thread_stats_read(tsdn); -#define READ_GLOBAL_MUTEX_PROF_DATA(i, mtx) \ - malloc_mutex_lock(tsdn, &mtx); \ - malloc_mutex_prof_read(tsdn, &ctl_stats->mutex_prof_data[i], &mtx); \ - malloc_mutex_unlock(tsdn, &mtx); +#define READ_GLOBAL_MUTEX_PROF_DATA(i, mtx) \ + malloc_mutex_lock(tsdn, &mtx); \ + malloc_mutex_prof_read(tsdn, &ctl_stats->mutex_prof_data[i], &mtx); \ + malloc_mutex_unlock(tsdn, &mtx); if (config_prof && opt_prof) { READ_GLOBAL_MUTEX_PROF_DATA( @@ -1370,9 +1396,9 @@ ctl_refresh(tsdn_t *tsdn) { global_prof_mutex_background_thread, background_thread_lock); } else { - memset(&ctl_stats->mutex_prof_data[ - global_prof_mutex_background_thread], 0, - sizeof(mutex_prof_data_t)); + memset(&ctl_stats->mutex_prof_data + [global_prof_mutex_background_thread], + 0, sizeof(mutex_prof_data_t)); } /* We own ctl mutex already. */ malloc_mutex_prof_read(tsdn, @@ -1385,21 +1411,21 @@ ctl_refresh(tsdn_t *tsdn) { static bool ctl_init(tsd_t *tsd) { - bool ret; + bool ret; tsdn_t *tsdn = tsd_tsdn(tsd); malloc_mutex_lock(tsdn, &ctl_mtx); if (!ctl_initialized) { ctl_arena_t *ctl_sarena, *ctl_darena; - unsigned i; + unsigned i; /* * Allocate demand-zeroed space for pointers to the full * range of supported arena indices. */ if (ctl_arenas == NULL) { - ctl_arenas = (ctl_arenas_t *)base_alloc(tsdn, - b0get(), sizeof(ctl_arenas_t), QUANTUM); + ctl_arenas = (ctl_arenas_t *)base_alloc( + tsdn, b0get(), sizeof(ctl_arenas_t), QUANTUM); if (ctl_arenas == NULL) { ret = true; goto label_return; @@ -1407,8 +1433,8 @@ ctl_init(tsd_t *tsd) { } if (config_stats && ctl_stats == NULL) { - ctl_stats = (ctl_stats_t *)base_alloc(tsdn, b0get(), - sizeof(ctl_stats_t), QUANTUM); + ctl_stats = (ctl_stats_t *)base_alloc( + tsdn, b0get(), sizeof(ctl_stats_t), QUANTUM); if (ctl_stats == NULL) { ret = true; goto label_return; @@ -1420,15 +1446,17 @@ ctl_init(tsd_t *tsd) { * here rather than doing it lazily elsewhere, in order * to limit when OOM-caused errors can occur. */ - if ((ctl_sarena = arenas_i_impl(tsd, MALLCTL_ARENAS_ALL, false, - true)) == NULL) { + if ((ctl_sarena = arenas_i_impl( + tsd, MALLCTL_ARENAS_ALL, false, true)) + == NULL) { ret = true; goto label_return; } ctl_sarena->initialized = true; - if ((ctl_darena = arenas_i_impl(tsd, MALLCTL_ARENAS_DESTROYED, - false, true)) == NULL) { + if ((ctl_darena = arenas_i_impl( + tsd, MALLCTL_ARENAS_DESTROYED, false, true)) + == NULL) { ret = true; goto label_return; } @@ -1463,9 +1491,9 @@ static int ctl_lookup(tsdn_t *tsdn, const ctl_named_node_t *starting_node, const char *name, const ctl_named_node_t **ending_nodep, size_t *mibp, size_t *depthp) { - int ret; - const char *elm, *tdot, *dot; - size_t elen, i, j; + int ret; + const char *elm, *tdot, *dot; + size_t elen, i, j; const ctl_named_node_t *node; elm = name; @@ -1487,8 +1515,8 @@ ctl_lookup(tsdn_t *tsdn, const ctl_named_node_t *starting_node, for (j = 0; j < node->nchildren; j++) { const ctl_named_node_t *child = ctl_named_children(node, j); - if (strlen(child->name) == elen && - strncmp(elm, child->name, elen) == 0) { + if (strlen(child->name) == elen + && strncmp(elm, child->name, elen) == 0) { node = child; mibp[i] = j; break; @@ -1499,7 +1527,7 @@ ctl_lookup(tsdn_t *tsdn, const ctl_named_node_t *starting_node, goto label_return; } } else { - uintmax_t index; + uintmax_t index; const ctl_indexed_node_t *inode; /* Children are indexed. */ @@ -1537,8 +1565,8 @@ ctl_lookup(tsdn_t *tsdn, const ctl_named_node_t *starting_node, /* Update elm. */ elm = &dot[1]; - dot = ((tdot = strchr(elm, '.')) != NULL) ? tdot : - strchr(elm, '\0'); + dot = ((tdot = strchr(elm, '.')) != NULL) ? tdot + : strchr(elm, '\0'); elen = (size_t)((uintptr_t)dot - (uintptr_t)elm); } if (ending_nodep != NULL) { @@ -1553,9 +1581,9 @@ ctl_lookup(tsdn_t *tsdn, const ctl_named_node_t *starting_node, int ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - size_t depth; - size_t mib[CTL_MAX_DEPTH]; + int ret; + size_t depth; + size_t mib[CTL_MAX_DEPTH]; const ctl_named_node_t *node; if (!ctl_initialized && ctl_init(tsd)) { @@ -1564,8 +1592,8 @@ ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp, } depth = CTL_MAX_DEPTH; - ret = ctl_lookup(tsd_tsdn(tsd), super_root_node, name, &node, mib, - &depth); + ret = ctl_lookup( + tsd_tsdn(tsd), super_root_node, name, &node, mib, &depth); if (ret != 0) { goto label_return; } @@ -1578,7 +1606,7 @@ ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp, } label_return: - return(ret); + return (ret); } int @@ -1590,10 +1618,10 @@ ctl_nametomib(tsd_t *tsd, const char *name, size_t *mibp, size_t *miblenp) { goto label_return; } - ret = ctl_lookup(tsd_tsdn(tsd), super_root_node, name, NULL, mibp, - miblenp); + ret = ctl_lookup( + tsd_tsdn(tsd), super_root_node, name, NULL, mibp, miblenp); label_return: - return(ret); + return (ret); } static int @@ -1629,13 +1657,13 @@ ctl_lookupbymib(tsdn_t *tsdn, const ctl_named_node_t **ending_nodep, ret = 0; label_return: - return(ret); + return (ret); } int ctl_bymib(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; const ctl_named_node_t *node; if (!ctl_initialized && ctl_init(tsd)) { @@ -1657,13 +1685,13 @@ ctl_bymib(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, } label_return: - return(ret); + return (ret); } int -ctl_mibnametomib(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, - size_t *miblenp) { - int ret; +ctl_mibnametomib( + tsd_t *tsd, size_t *mib, size_t miblen, const char *name, size_t *miblenp) { + int ret; const ctl_named_node_t *node; if (!ctl_initialized && ctl_init(tsd)) { @@ -1683,17 +1711,17 @@ ctl_mibnametomib(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, assert(miblenp != NULL); assert(*miblenp >= miblen); *miblenp -= miblen; - ret = ctl_lookup(tsd_tsdn(tsd), node, name, NULL, mib + miblen, - miblenp); + ret = ctl_lookup( + tsd_tsdn(tsd), node, name, NULL, mib + miblen, miblenp); *miblenp += miblen; label_return: - return(ret); + return (ret); } int ctl_bymibname(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, size_t *miblenp, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; const ctl_named_node_t *node; if (!ctl_initialized && ctl_init(tsd)) { @@ -1716,29 +1744,29 @@ ctl_bymibname(tsd_t *tsd, size_t *mib, size_t miblen, const char *name, /* * The same node supplies the starting node and stores the ending node. */ - ret = ctl_lookup(tsd_tsdn(tsd), node, name, &node, mib + miblen, - miblenp); + ret = ctl_lookup( + tsd_tsdn(tsd), node, name, &node, mib + miblen, miblenp); *miblenp += miblen; if (ret != 0) { goto label_return; } if (node != NULL && node->ctl) { - ret = node->ctl(tsd, mib, *miblenp, oldp, oldlenp, newp, - newlen); + ret = node->ctl( + tsd, mib, *miblenp, oldp, oldlenp, newp, newlen); } else { /* The name refers to a partial path through the ctl tree. */ ret = ENOENT; } label_return: - return(ret); + return (ret); } bool ctl_boot(void) { if (malloc_mutex_init(&ctl_mtx, "ctl", WITNESS_RANK_CTL, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } @@ -1770,218 +1798,201 @@ ctl_mtx_assert_held(tsdn_t *tsdn) { /******************************************************************************/ /* *_ctl() functions. */ -#define READONLY() do { \ - if (newp != NULL || newlen != 0) { \ - ret = EPERM; \ - goto label_return; \ - } \ -} while (0) - -#define WRITEONLY() do { \ - if (oldp != NULL || oldlenp != NULL) { \ - ret = EPERM; \ - goto label_return; \ - } \ -} while (0) +#define READONLY() \ + do { \ + if (newp != NULL || newlen != 0) { \ + ret = EPERM; \ + goto label_return; \ + } \ + } while (0) + +#define WRITEONLY() \ + do { \ + if (oldp != NULL || oldlenp != NULL) { \ + ret = EPERM; \ + goto label_return; \ + } \ + } while (0) /* Can read or write, but not both. */ -#define READ_XOR_WRITE() do { \ - if ((oldp != NULL && oldlenp != NULL) && (newp != NULL || \ - newlen != 0)) { \ - ret = EPERM; \ - goto label_return; \ - } \ -} while (0) +#define READ_XOR_WRITE() \ + do { \ + if ((oldp != NULL && oldlenp != NULL) \ + && (newp != NULL || newlen != 0)) { \ + ret = EPERM; \ + goto label_return; \ + } \ + } while (0) /* Can neither read nor write. */ -#define NEITHER_READ_NOR_WRITE() do { \ - if (oldp != NULL || oldlenp != NULL || newp != NULL || \ - newlen != 0) { \ - ret = EPERM; \ - goto label_return; \ - } \ -} while (0) +#define NEITHER_READ_NOR_WRITE() \ + do { \ + if (oldp != NULL || oldlenp != NULL || newp != NULL \ + || newlen != 0) { \ + ret = EPERM; \ + goto label_return; \ + } \ + } while (0) /* Verify that the space provided is enough. */ -#define VERIFY_READ(t) do { \ - if (oldp == NULL || oldlenp == NULL || *oldlenp != sizeof(t)) { \ - *oldlenp = 0; \ - ret = EINVAL; \ - goto label_return; \ - } \ -} while (0) - -#define READ(v, t) do { \ - if (oldp != NULL && oldlenp != NULL) { \ - if (*oldlenp != sizeof(t)) { \ - size_t copylen = (sizeof(t) <= *oldlenp) \ - ? sizeof(t) : *oldlenp; \ - memcpy(oldp, (void *)&(v), copylen); \ - *oldlenp = copylen; \ - ret = EINVAL; \ - goto label_return; \ - } \ - *(t *)oldp = (v); \ - } \ -} while (0) - -#define WRITE(v, t) do { \ - if (newp != NULL) { \ - if (newlen != sizeof(t)) { \ - ret = EINVAL; \ - goto label_return; \ - } \ - (v) = *(t *)newp; \ - } \ -} while (0) - -#define ASSURED_WRITE(v, t) do { \ - if (newp == NULL || newlen != sizeof(t)) { \ - ret = EINVAL; \ - goto label_return; \ - } \ - (v) = *(t *)newp; \ -} while (0) - -#define MIB_UNSIGNED(v, i) do { \ - if (mib[i] > UINT_MAX) { \ - ret = EFAULT; \ - goto label_return; \ - } \ - v = (unsigned)mib[i]; \ -} while (0) +#define VERIFY_READ(t) \ + do { \ + if (oldp == NULL || oldlenp == NULL \ + || *oldlenp != sizeof(t)) { \ + if (oldlenp != NULL) { \ + *oldlenp = 0; \ + } \ + ret = EINVAL; \ + goto label_return; \ + } \ + } while (0) + +#define READ(v, t) \ + do { \ + if (oldp != NULL && oldlenp != NULL) { \ + if (*oldlenp != sizeof(t)) { \ + size_t copylen = (sizeof(t) <= *oldlenp) \ + ? sizeof(t) \ + : *oldlenp; \ + memcpy(oldp, (void *)&(v), copylen); \ + *oldlenp = copylen; \ + ret = EINVAL; \ + goto label_return; \ + } \ + *(t *)oldp = (v); \ + } \ + } while (0) + +#define WRITE(v, t) \ + do { \ + if (newp != NULL) { \ + if (newlen != sizeof(t)) { \ + ret = EINVAL; \ + goto label_return; \ + } \ + (v) = *(t *)newp; \ + } \ + } while (0) + +#define ASSURED_WRITE(v, t) \ + do { \ + if (newp == NULL || newlen != sizeof(t)) { \ + ret = EINVAL; \ + goto label_return; \ + } \ + (v) = *(t *)newp; \ + } while (0) + +#define MIB_UNSIGNED(v, i) \ + do { \ + if (mib[i] > UINT_MAX) { \ + ret = EFAULT; \ + goto label_return; \ + } \ + v = (unsigned)mib[i]; \ + } while (0) /* * There's a lot of code duplication in the following macros due to limitations * in how nested cpp macros are expanded. */ -#define CTL_RO_CLGEN(c, l, n, v, t) \ -static int \ -n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, \ - size_t *oldlenp, void *newp, size_t newlen) { \ - int ret; \ - t oldval; \ - \ - if (!(c)) { \ - return ENOENT; \ - } \ - if (l) { \ - malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); \ - } \ - READONLY(); \ - oldval = (v); \ - READ(oldval, t); \ - \ - ret = 0; \ -label_return: \ - if (l) { \ - malloc_mutex_unlock(tsd_tsdn(tsd), &ctl_mtx); \ - } \ - return ret; \ -} - -#define CTL_RO_CGEN(c, n, v, t) \ -static int \ -n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ - int ret; \ - t oldval; \ - \ - if (!(c)) { \ - return ENOENT; \ - } \ - malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); \ - READONLY(); \ - oldval = (v); \ - READ(oldval, t); \ - \ - ret = 0; \ -label_return: \ - malloc_mutex_unlock(tsd_tsdn(tsd), &ctl_mtx); \ - return ret; \ -} - -#define CTL_RO_GEN(n, v, t) \ -static int \ -n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, \ - size_t *oldlenp, void *newp, size_t newlen) { \ - int ret; \ - t oldval; \ - \ - malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); \ - READONLY(); \ - oldval = (v); \ - READ(oldval, t); \ - \ - ret = 0; \ -label_return: \ - malloc_mutex_unlock(tsd_tsdn(tsd), &ctl_mtx); \ - return ret; \ -} +#define CTL_RO_CGEN(c, n, v, t) \ + static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ + int ret; \ + t oldval; \ + \ + if (!(c)) { \ + return ENOENT; \ + } \ + malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); \ + READONLY(); \ + oldval = (v); \ + READ(oldval, t); \ + \ + ret = 0; \ + label_return: \ + malloc_mutex_unlock(tsd_tsdn(tsd), &ctl_mtx); \ + return ret; \ + } + +#define CTL_RO_GEN(n, v, t) \ + static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ + int ret; \ + t oldval; \ + \ + malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); \ + READONLY(); \ + oldval = (v); \ + READ(oldval, t); \ + \ + ret = 0; \ + label_return: \ + malloc_mutex_unlock(tsd_tsdn(tsd), &ctl_mtx); \ + return ret; \ + } /* * ctl_mtx is not acquired, under the assumption that no pertinent data will * mutate during the call. */ -#define CTL_RO_NL_CGEN(c, n, v, t) \ -static int \ -n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ - int ret; \ - t oldval; \ - \ - if (!(c)) { \ - return ENOENT; \ - } \ - READONLY(); \ - oldval = (v); \ - READ(oldval, t); \ - \ - ret = 0; \ -label_return: \ - return ret; \ -} - -#define CTL_RO_NL_GEN(n, v, t) \ -static int \ -n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ - int ret; \ - t oldval; \ - \ - READONLY(); \ - oldval = (v); \ - READ(oldval, t); \ - \ - ret = 0; \ -label_return: \ - return ret; \ -} - -#define CTL_RO_CONFIG_GEN(n, t) \ -static int \ -n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ - int ret; \ - t oldval; \ - \ - READONLY(); \ - oldval = n; \ - READ(oldval, t); \ - \ - ret = 0; \ -label_return: \ - return ret; \ -} +#define CTL_RO_NL_CGEN(c, n, v, t) \ + static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ + int ret; \ + t oldval; \ + \ + if (!(c)) { \ + return ENOENT; \ + } \ + READONLY(); \ + oldval = (v); \ + READ(oldval, t); \ + \ + ret = 0; \ + label_return: \ + return ret; \ + } + +#define CTL_RO_NL_GEN(n, v, t) \ + static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ + int ret; \ + t oldval; \ + \ + READONLY(); \ + oldval = (v); \ + READ(oldval, t); \ + \ + ret = 0; \ + label_return: \ + return ret; \ + } + +#define CTL_RO_CONFIG_GEN(n, t) \ + static int n##_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, \ + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { \ + int ret; \ + t oldval; \ + \ + READONLY(); \ + oldval = n; \ + READ(oldval, t); \ + \ + ret = 0; \ + label_return: \ + return ret; \ + } /******************************************************************************/ CTL_RO_NL_GEN(version, JEMALLOC_VERSION, const char *) static int -epoch_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +epoch_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; UNUSED uint64_t newval; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); @@ -1998,10 +2009,9 @@ epoch_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -background_thread_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, - void *newp, size_t newlen) { - int ret; +background_thread_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; bool oldval; if (!have_background_thread) { @@ -2050,10 +2060,9 @@ background_thread_ctl(tsd_t *tsd, const size_t *mib, } static int -max_background_threads_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; +max_background_threads_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; size_t oldval; if (!have_background_thread) { @@ -2079,7 +2088,7 @@ max_background_threads_ctl(tsd_t *tsd, const size_t *mib, ret = 0; goto label_return; } - if (newval > opt_max_background_threads) { + if (newval > opt_max_background_threads || newval == 0) { ret = EINVAL; goto label_return; } @@ -2119,6 +2128,7 @@ CTL_RO_CONFIG_GEN(config_opt_safety_checks, bool) CTL_RO_CONFIG_GEN(config_prof, bool) CTL_RO_CONFIG_GEN(config_prof_libgcc, bool) CTL_RO_CONFIG_GEN(config_prof_libunwind, bool) +CTL_RO_CONFIG_GEN(config_prof_frameptr, bool) CTL_RO_CONFIG_GEN(config_stats, bool) CTL_RO_CONFIG_GEN(config_utrace, bool) CTL_RO_CONFIG_GEN(config_xmalloc, bool) @@ -2128,17 +2138,30 @@ CTL_RO_CONFIG_GEN(config_xmalloc, bool) CTL_RO_NL_GEN(opt_abort, opt_abort, bool) CTL_RO_NL_GEN(opt_abort_conf, opt_abort_conf, bool) CTL_RO_NL_GEN(opt_cache_oblivious, opt_cache_oblivious, bool) +CTL_RO_NL_GEN( + opt_debug_double_free_max_scan, opt_debug_double_free_max_scan, unsigned) CTL_RO_NL_GEN(opt_trust_madvise, opt_trust_madvise, bool) +CTL_RO_NL_GEN(opt_experimental_hpa_start_huge_if_thp_always, + opt_experimental_hpa_start_huge_if_thp_always, bool) +CTL_RO_NL_GEN(opt_experimental_hpa_enforce_hugify, + opt_experimental_hpa_enforce_hugify, bool) CTL_RO_NL_GEN(opt_confirm_conf, opt_confirm_conf, bool) /* HPA options. */ CTL_RO_NL_GEN(opt_hpa, opt_hpa, bool) -CTL_RO_NL_GEN(opt_hpa_hugification_threshold, - opt_hpa_opts.hugification_threshold, size_t) +CTL_RO_NL_GEN( + opt_hpa_hugification_threshold, opt_hpa_opts.hugification_threshold, size_t) CTL_RO_NL_GEN(opt_hpa_hugify_delay_ms, opt_hpa_opts.hugify_delay_ms, uint64_t) -CTL_RO_NL_GEN(opt_hpa_min_purge_interval_ms, opt_hpa_opts.min_purge_interval_ms, - uint64_t) - +CTL_RO_NL_GEN(opt_hpa_hugify_sync, opt_hpa_opts.hugify_sync, bool) +CTL_RO_NL_GEN( + opt_hpa_min_purge_interval_ms, opt_hpa_opts.min_purge_interval_ms, uint64_t) +CTL_RO_NL_GEN(opt_experimental_hpa_max_purge_nhp, + opt_hpa_opts.experimental_max_purge_nhp, ssize_t) +CTL_RO_NL_GEN(opt_hpa_purge_threshold, opt_hpa_opts.purge_threshold, size_t) +CTL_RO_NL_GEN( + opt_hpa_min_purge_delay_ms, opt_hpa_opts.min_purge_delay_ms, uint64_t) +CTL_RO_NL_GEN(opt_hpa_hugify_style, + hpa_hugify_style_names[opt_hpa_opts.hugify_style], const char *) /* * This will have to change before we publicly document this option; fxp_t and * its representation are internal implementation details. @@ -2150,18 +2173,16 @@ CTL_RO_NL_GEN(opt_hpa_slab_max_alloc, opt_hpa_opts.slab_max_alloc, size_t) CTL_RO_NL_GEN(opt_hpa_sec_nshards, opt_hpa_sec_opts.nshards, size_t) CTL_RO_NL_GEN(opt_hpa_sec_max_alloc, opt_hpa_sec_opts.max_alloc, size_t) CTL_RO_NL_GEN(opt_hpa_sec_max_bytes, opt_hpa_sec_opts.max_bytes, size_t) -CTL_RO_NL_GEN(opt_hpa_sec_bytes_after_flush, opt_hpa_sec_opts.bytes_after_flush, - size_t) -CTL_RO_NL_GEN(opt_hpa_sec_batch_fill_extra, opt_hpa_sec_opts.batch_fill_extra, - size_t) - -CTL_RO_NL_GEN(opt_metadata_thp, metadata_thp_mode_names[opt_metadata_thp], - const char *) +CTL_RO_NL_GEN( + opt_hpa_sec_batch_fill_extra, opt_hpa_sec_opts.batch_fill_extra, size_t) +CTL_RO_NL_GEN(opt_huge_arena_pac_thp, opt_huge_arena_pac_thp, bool) +CTL_RO_NL_GEN( + opt_metadata_thp, metadata_thp_mode_names[opt_metadata_thp], const char *) CTL_RO_NL_GEN(opt_retain, opt_retain, bool) CTL_RO_NL_GEN(opt_dss, opt_dss, const char *) CTL_RO_NL_GEN(opt_narenas, opt_narenas, unsigned) -CTL_RO_NL_GEN(opt_percpu_arena, percpu_arena_mode_names[opt_percpu_arena], - const char *) +CTL_RO_NL_GEN( + opt_percpu_arena, percpu_arena_mode_names[opt_percpu_arena], const char *) CTL_RO_NL_GEN(opt_mutex_max_spin, opt_mutex_max_spin, int64_t) CTL_RO_NL_GEN(opt_oversize_threshold, opt_oversize_threshold, size_t) CTL_RO_NL_GEN(opt_background_thread, opt_background_thread, bool) @@ -2178,53 +2199,72 @@ CTL_RO_NL_CGEN(config_utrace, opt_utrace, opt_utrace, bool) CTL_RO_NL_CGEN(config_xmalloc, opt_xmalloc, opt_xmalloc, bool) CTL_RO_NL_CGEN(config_enable_cxx, opt_experimental_infallible_new, opt_experimental_infallible_new, bool) +CTL_RO_NL_GEN(opt_experimental_tcache_gc, opt_experimental_tcache_gc, bool) CTL_RO_NL_GEN(opt_tcache, opt_tcache, bool) CTL_RO_NL_GEN(opt_tcache_max, opt_tcache_max, size_t) -CTL_RO_NL_GEN(opt_tcache_nslots_small_min, opt_tcache_nslots_small_min, - unsigned) -CTL_RO_NL_GEN(opt_tcache_nslots_small_max, opt_tcache_nslots_small_max, - unsigned) +CTL_RO_NL_GEN( + opt_tcache_nslots_small_min, opt_tcache_nslots_small_min, unsigned) +CTL_RO_NL_GEN( + opt_tcache_nslots_small_max, opt_tcache_nslots_small_max, unsigned) CTL_RO_NL_GEN(opt_tcache_nslots_large, opt_tcache_nslots_large, unsigned) CTL_RO_NL_GEN(opt_lg_tcache_nslots_mul, opt_lg_tcache_nslots_mul, ssize_t) CTL_RO_NL_GEN(opt_tcache_gc_incr_bytes, opt_tcache_gc_incr_bytes, size_t) CTL_RO_NL_GEN(opt_tcache_gc_delay_bytes, opt_tcache_gc_delay_bytes, size_t) -CTL_RO_NL_GEN(opt_lg_tcache_flush_small_div, opt_lg_tcache_flush_small_div, - unsigned) -CTL_RO_NL_GEN(opt_lg_tcache_flush_large_div, opt_lg_tcache_flush_large_div, - unsigned) +CTL_RO_NL_GEN( + opt_lg_tcache_flush_small_div, opt_lg_tcache_flush_small_div, unsigned) +CTL_RO_NL_GEN( + opt_lg_tcache_flush_large_div, opt_lg_tcache_flush_large_div, unsigned) CTL_RO_NL_GEN(opt_thp, thp_mode_names[opt_thp], const char *) -CTL_RO_NL_GEN(opt_lg_extent_max_active_fit, opt_lg_extent_max_active_fit, - size_t) +CTL_RO_NL_GEN( + opt_lg_extent_max_active_fit, opt_lg_extent_max_active_fit, size_t) +CTL_RO_NL_GEN( + opt_process_madvise_max_batch, opt_process_madvise_max_batch, size_t) CTL_RO_NL_CGEN(config_prof, opt_prof, opt_prof, bool) CTL_RO_NL_CGEN(config_prof, opt_prof_prefix, opt_prof_prefix, const char *) CTL_RO_NL_CGEN(config_prof, opt_prof_active, opt_prof_active, bool) -CTL_RO_NL_CGEN(config_prof, opt_prof_thread_active_init, - opt_prof_thread_active_init, bool) +CTL_RO_NL_CGEN( + config_prof, opt_prof_thread_active_init, opt_prof_thread_active_init, bool) +CTL_RO_NL_CGEN(config_prof, opt_prof_bt_max, opt_prof_bt_max, unsigned) CTL_RO_NL_CGEN(config_prof, opt_lg_prof_sample, opt_lg_prof_sample, size_t) CTL_RO_NL_CGEN(config_prof, opt_prof_accum, opt_prof_accum, bool) +CTL_RO_NL_CGEN( + config_prof, opt_prof_pid_namespace, opt_prof_pid_namespace, bool) CTL_RO_NL_CGEN(config_prof, opt_lg_prof_interval, opt_lg_prof_interval, ssize_t) CTL_RO_NL_CGEN(config_prof, opt_prof_gdump, opt_prof_gdump, bool) CTL_RO_NL_CGEN(config_prof, opt_prof_final, opt_prof_final, bool) CTL_RO_NL_CGEN(config_prof, opt_prof_leak, opt_prof_leak, bool) CTL_RO_NL_CGEN(config_prof, opt_prof_leak_error, opt_prof_leak_error, bool) -CTL_RO_NL_CGEN(config_prof, opt_prof_recent_alloc_max, - opt_prof_recent_alloc_max, ssize_t) +CTL_RO_NL_CGEN( + config_prof, opt_prof_recent_alloc_max, opt_prof_recent_alloc_max, ssize_t) CTL_RO_NL_CGEN(config_prof, opt_prof_stats, opt_prof_stats, bool) -CTL_RO_NL_CGEN(config_prof, opt_prof_sys_thread_name, opt_prof_sys_thread_name, - bool) +CTL_RO_NL_CGEN( + config_prof, opt_prof_sys_thread_name, opt_prof_sys_thread_name, bool) CTL_RO_NL_CGEN(config_prof, opt_prof_time_res, prof_time_res_mode_names[opt_prof_time_res], const char *) -CTL_RO_NL_CGEN(config_uaf_detection, opt_lg_san_uaf_align, - opt_lg_san_uaf_align, ssize_t) +CTL_RO_NL_CGEN( + config_uaf_detection, opt_lg_san_uaf_align, opt_lg_san_uaf_align, ssize_t) CTL_RO_NL_GEN(opt_zero_realloc, zero_realloc_mode_names[opt_zero_realloc_action], const char *) +CTL_RO_NL_GEN( + opt_disable_large_size_classes, opt_disable_large_size_classes, bool) + +/* malloc_conf options */ +CTL_RO_NL_CGEN(opt_malloc_conf_symlink, opt_malloc_conf_symlink, + opt_malloc_conf_symlink, const char *) +CTL_RO_NL_CGEN(opt_malloc_conf_env_var, opt_malloc_conf_env_var, + opt_malloc_conf_env_var, const char *) +CTL_RO_NL_CGEN( + je_malloc_conf, opt_malloc_conf_global_var, je_malloc_conf, const char *) +CTL_RO_NL_CGEN(je_malloc_conf_2_conf_harder, + opt_malloc_conf_global_var_2_conf_harder, je_malloc_conf_2_conf_harder, + const char *) /******************************************************************************/ static int -thread_arena_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +thread_arena_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; arena_t *oldarena; unsigned newind, oldind; @@ -2245,8 +2285,8 @@ thread_arena_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, goto label_return; } - if (have_percpu_arena && - PERCPU_ARENA_ENABLED(opt_percpu_arena)) { + if (have_percpu_arena + && PERCPU_ARENA_ENABLED(opt_percpu_arena)) { if (newind < percpu_arena_ind_limit(opt_percpu_arena)) { /* * If perCPU arena is enabled, thread_arena @@ -2280,14 +2320,83 @@ thread_arena_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, CTL_RO_NL_GEN(thread_allocated, tsd_thread_allocated_get(tsd), uint64_t) CTL_RO_NL_GEN(thread_allocatedp, tsd_thread_allocatedp_get(tsd), uint64_t *) + +static int +thread_tcache_ncached_max_read_sizeclass_ctl(tsd_t *tsd, const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; + size_t bin_size = 0; + + /* Read the bin size from newp. */ + if (newp == NULL) { + ret = EINVAL; + goto label_return; + } + WRITE(bin_size, size_t); + + cache_bin_sz_t ncached_max = 0; + if (tcache_bin_ncached_max_read(tsd, bin_size, &ncached_max)) { + ret = EINVAL; + goto label_return; + } + size_t result = (size_t)ncached_max; + READ(result, size_t); + ret = 0; +label_return: + return ret; +} + +static int +thread_tcache_ncached_max_write_ctl(tsd_t *tsd, const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; + WRITEONLY(); + if (newp != NULL) { + if (!tcache_available(tsd)) { + ret = ENOENT; + goto label_return; + } + char *settings = NULL; + WRITE(settings, char *); + if (settings == NULL) { + ret = EINVAL; + goto label_return; + } + /* Get the length of the setting string safely. */ + char *end = (char *)memchr( + settings, '\0', CTL_MULTI_SETTING_MAX_LEN); + if (end == NULL) { + ret = EINVAL; + goto label_return; + } + /* + * Exclude the last '\0' for len since it is not handled by + * multi_setting_parse_next. + */ + size_t len = (uintptr_t)end - (uintptr_t)settings; + if (len == 0) { + ret = 0; + goto label_return; + } + + if (tcache_bins_ncached_max_write(tsd, settings, len)) { + ret = EINVAL; + goto label_return; + } + } + + ret = 0; +label_return: + return ret; +} + CTL_RO_NL_GEN(thread_deallocated, tsd_thread_deallocated_get(tsd), uint64_t) CTL_RO_NL_GEN(thread_deallocatedp, tsd_thread_deallocatedp_get(tsd), uint64_t *) static int -thread_tcache_enabled_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; +thread_tcache_enabled_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; bool oldval; oldval = tcache_enabled_get(tsd); @@ -2306,9 +2415,41 @@ thread_tcache_enabled_ctl(tsd_t *tsd, const size_t *mib, } static int -thread_tcache_flush_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { +thread_tcache_max_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; + size_t oldval; + + /* pointer to tcache_t always exists even with tcache disabled. */ + tcache_t *tcache = tsd_tcachep_get(tsd); + assert(tcache != NULL); + oldval = tcache_max_get(tcache->tcache_slow); + READ(oldval, size_t); + + if (newp != NULL) { + if (newlen != sizeof(size_t)) { + ret = EINVAL; + goto label_return; + } + size_t new_tcache_max = oldval; + WRITE(new_tcache_max, size_t); + if (new_tcache_max > TCACHE_MAXCLASS_LIMIT) { + new_tcache_max = TCACHE_MAXCLASS_LIMIT; + } + new_tcache_max = sz_s2u(new_tcache_max); + if (new_tcache_max != oldval) { + thread_tcache_max_set(tsd, new_tcache_max); + } + } + + ret = 0; +label_return: + return ret; +} + +static int +thread_tcache_flush_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { int ret; if (!tcache_available(tsd)) { @@ -2326,9 +2467,8 @@ thread_tcache_flush_ctl(tsd_t *tsd, const size_t *mib, } static int -thread_peak_read_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { +thread_peak_read_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { int ret; if (!config_stats) { return ENOENT; @@ -2343,9 +2483,8 @@ thread_peak_read_ctl(tsd_t *tsd, const size_t *mib, } static int -thread_peak_reset_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { +thread_peak_reset_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { int ret; if (!config_stats) { return ENOENT; @@ -2358,9 +2497,8 @@ thread_peak_reset_ctl(tsd_t *tsd, const size_t *mib, } static int -thread_prof_name_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { +thread_prof_name_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { int ret; if (!config_prof || !opt_prof) { @@ -2370,13 +2508,13 @@ thread_prof_name_ctl(tsd_t *tsd, const size_t *mib, READ_XOR_WRITE(); if (newp != NULL) { - if (newlen != sizeof(const char *)) { + const char *newval = *(const char **)newp; + if (newlen != sizeof(const char *) || newval == NULL) { ret = EINVAL; goto label_return; } - if ((ret = prof_thread_name_set(tsd, *(const char **)newp)) != - 0) { + if ((ret = prof_thread_name_set(tsd, newval)) != 0) { goto label_return; } } else { @@ -2390,10 +2528,9 @@ thread_prof_name_ctl(tsd_t *tsd, const size_t *mib, } static int -thread_prof_active_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; +thread_prof_active_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; bool oldval; if (!config_prof) { @@ -2423,9 +2560,8 @@ thread_prof_active_ctl(tsd_t *tsd, const size_t *mib, } static int -thread_idle_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { +thread_idle_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { int ret; NEITHER_READ_NOR_WRITE(); @@ -2458,9 +2594,9 @@ thread_idle_ctl(tsd_t *tsd, const size_t *mib, /******************************************************************************/ static int -tcache_create_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +tcache_create_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; unsigned tcache_ind; READONLY(); @@ -2477,9 +2613,9 @@ tcache_create_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -tcache_flush_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +tcache_flush_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; unsigned tcache_ind; WRITEONLY(); @@ -2492,9 +2628,9 @@ tcache_flush_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -tcache_destroy_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +tcache_destroy_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; unsigned tcache_ind; WRITEONLY(); @@ -2511,10 +2647,10 @@ tcache_destroy_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, static int arena_i_initialized_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - tsdn_t *tsdn = tsd_tsdn(tsd); + int ret; + tsdn_t *tsdn = tsd_tsdn(tsd); unsigned arena_ind; - bool initialized; + bool initialized; READONLY(); MIB_UNSIGNED(arena_ind, 1); @@ -2542,7 +2678,7 @@ arena_i_decay(tsdn_t *tsdn, unsigned arena_ind, bool all) { */ if (arena_ind == MALLCTL_ARENAS_ALL || arena_ind == narenas) { unsigned i; - VARIABLE_ARRAY(arena_t *, tarenas, narenas); + VARIABLE_ARRAY_UNSAFE(arena_t *, tarenas, narenas); for (i = 0; i < narenas; i++) { tarenas[i] = arena_get(tsdn, i, false); @@ -2556,8 +2692,8 @@ arena_i_decay(tsdn_t *tsdn, unsigned arena_ind, bool all) { for (i = 0; i < narenas; i++) { if (tarenas[i] != NULL) { - arena_decay(tsdn, tarenas[i], false, - all); + arena_decay( + tsdn, tarenas[i], false, all); } } } else { @@ -2580,7 +2716,7 @@ arena_i_decay(tsdn_t *tsdn, unsigned arena_ind, bool all) { static int arena_i_decay_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; unsigned arena_ind; NEITHER_READ_NOR_WRITE(); @@ -2595,7 +2731,7 @@ arena_i_decay_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, static int arena_i_purge_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; unsigned arena_ind; NEITHER_READ_NOR_WRITE(); @@ -2661,12 +2797,12 @@ arena_reset_finish_background_thread(tsd_t *tsd, unsigned arena_ind) { static int arena_i_reset_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; unsigned arena_ind; arena_t *arena; - ret = arena_i_reset_destroy_helper(tsd, mib, miblen, oldp, oldlenp, - newp, newlen, &arena_ind, &arena); + ret = arena_i_reset_destroy_helper( + tsd, mib, miblen, oldp, oldlenp, newp, newlen, &arena_ind, &arena); if (ret != 0) { return ret; } @@ -2681,21 +2817,21 @@ arena_i_reset_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, static int arena_i_destroy_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - unsigned arena_ind; - arena_t *arena; + int ret; + unsigned arena_ind; + arena_t *arena; ctl_arena_t *ctl_darena, *ctl_arena; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); - ret = arena_i_reset_destroy_helper(tsd, mib, miblen, oldp, oldlenp, - newp, newlen, &arena_ind, &arena); + ret = arena_i_reset_destroy_helper( + tsd, mib, miblen, oldp, oldlenp, newp, newlen, &arena_ind, &arena); if (ret != 0) { goto label_return; } - if (arena_nthreads_get(arena, false) != 0 || arena_nthreads_get(arena, - true) != 0) { + if (arena_nthreads_get(arena, false) != 0 + || arena_nthreads_get(arena, true) != 0) { ret = EFAULT; goto label_return; } @@ -2726,17 +2862,16 @@ arena_i_destroy_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, static int arena_i_dss_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; const char *dss = NULL; - unsigned arena_ind; - dss_prec_t dss_prec_old = dss_prec_limit; - dss_prec_t dss_prec = dss_prec_limit; + unsigned arena_ind; + dss_prec_t dss_prec = dss_prec_limit; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); WRITE(dss, const char *); MIB_UNSIGNED(arena_ind, 1); if (dss != NULL) { - int i; + int i; bool match = false; for (i = 0; i < dss_prec_limit; i++) { @@ -2757,18 +2892,20 @@ arena_i_dss_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, * Access via index narenas is deprecated, and scheduled for removal in * 6.0.0. */ - if (arena_ind == MALLCTL_ARENAS_ALL || arena_ind == - ctl_arenas->narenas) { - if (dss_prec != dss_prec_limit && - extent_dss_prec_set(dss_prec)) { + dss_prec_t dss_prec_old; + if (arena_ind == MALLCTL_ARENAS_ALL + || arena_ind == ctl_arenas->narenas) { + if (dss_prec != dss_prec_limit + && extent_dss_prec_set(dss_prec)) { ret = EFAULT; goto label_return; } dss_prec_old = extent_dss_prec_get(); } else { arena_t *arena = arena_get(tsd_tsdn(tsd), arena_ind, false); - if (arena == NULL || (dss_prec != dss_prec_limit && - arena_dss_prec_set(arena, dss_prec))) { + if (arena == NULL + || (dss_prec != dss_prec_limit + && arena_dss_prec_set(arena, dss_prec))) { ret = EFAULT; goto label_return; } @@ -2819,7 +2956,7 @@ arena_i_oversize_threshold_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, static int arena_i_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen, bool dirty) { - int ret; + int ret; unsigned arena_ind; arena_t *arena; @@ -2840,20 +2977,9 @@ arena_i_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, size_t miblen, ret = EINVAL; goto label_return; } - if (arena_is_huge(arena_ind) && *(ssize_t *)newp > 0) { - /* - * By default the huge arena purges eagerly. If it is - * set to non-zero decay time afterwards, background - * thread might be needed. - */ - if (background_thread_create(tsd, arena_ind)) { - ret = EFAULT; - goto label_return; - } - } - if (arena_decay_ms_set(tsd_tsdn(tsd), arena, state, - *(ssize_t *)newp)) { + if (arena_decay_ms_set( + tsd_tsdn(tsd), arena, state, *(ssize_t *)newp)) { ret = EFAULT; goto label_return; } @@ -2867,21 +2993,21 @@ arena_i_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, size_t miblen, static int arena_i_dirty_decay_ms_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - return arena_i_decay_ms_ctl_impl(tsd, mib, miblen, oldp, oldlenp, newp, - newlen, true); + return arena_i_decay_ms_ctl_impl( + tsd, mib, miblen, oldp, oldlenp, newp, newlen, true); } static int arena_i_muzzy_decay_ms_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - return arena_i_decay_ms_ctl_impl(tsd, mib, miblen, oldp, oldlenp, newp, - newlen, false); + return arena_i_decay_ms_ctl_impl( + tsd, mib, miblen, oldp, oldlenp, newp, newlen, false); } static int arena_i_extent_hooks_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; unsigned arena_ind; arena_t *arena; @@ -2906,8 +3032,8 @@ arena_i_extent_hooks_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, arena_config_t config = arena_config_default; config.extent_hooks = new_extent_hooks; - arena = arena_init(tsd_tsdn(tsd), arena_ind, - &config); + arena = arena_init( + tsd_tsdn(tsd), arena_ind, &config); if (arena == NULL) { ret = EFAULT; goto label_return; @@ -2918,13 +3044,12 @@ arena_i_extent_hooks_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, extent_hooks_t *new_extent_hooks JEMALLOC_CC_SILENCE_INIT(NULL); WRITE(new_extent_hooks, extent_hooks_t *); - old_extent_hooks = arena_set_extent_hooks(tsd, - arena, new_extent_hooks); + old_extent_hooks = arena_set_extent_hooks( + tsd, arena, new_extent_hooks); READ(old_extent_hooks, extent_hooks_t *); } else { - old_extent_hooks = - ehooks_get_extent_hooks_ptr( - arena_get_ehooks(arena)); + old_extent_hooks = ehooks_get_extent_hooks_ptr( + arena_get_ehooks(arena)); READ(old_extent_hooks, extent_hooks_t *); } } @@ -2939,10 +3064,9 @@ arena_i_extent_hooks_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -arena_i_retain_grow_limit_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; +arena_i_retain_grow_limit_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; unsigned arena_ind; arena_t *arena; @@ -2953,14 +3077,14 @@ arena_i_retain_grow_limit_ctl(tsd_t *tsd, const size_t *mib, malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); MIB_UNSIGNED(arena_ind, 1); - if (arena_ind < narenas_total_get() && (arena = - arena_get(tsd_tsdn(tsd), arena_ind, false)) != NULL) { + if (arena_ind < narenas_total_get() + && (arena = arena_get(tsd_tsdn(tsd), arena_ind, false)) != NULL) { size_t old_limit, new_limit; if (newp != NULL) { WRITE(new_limit, size_t); } - bool err = arena_retain_grow_limit_get_set(tsd, arena, - &old_limit, newp != NULL ? &new_limit : NULL); + bool err = arena_retain_grow_limit_get_set( + tsd, arena, &old_limit, newp != NULL ? &new_limit : NULL); if (!err) { READ(old_limit, size_t); ret = 0; @@ -2975,9 +3099,63 @@ arena_i_retain_grow_limit_ctl(tsd_t *tsd, const size_t *mib, return ret; } +/* + * When writing, newp should point to a char array storing the name to be set. + * A name longer than ARENA_NAME_LEN will be arbitrarily cut. When reading, + * oldp should point to a char array whose length is no shorter than + * ARENA_NAME_LEN or the length of the name when it was set. + */ +static int +arena_i_name_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; + unsigned arena_ind; + char *name JEMALLOC_CLANG_ANALYZER_SILENCE_INIT(NULL); + + malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); + MIB_UNSIGNED(arena_ind, 1); + if (arena_ind == MALLCTL_ARENAS_ALL + || arena_ind >= ctl_arenas->narenas) { + ret = EINVAL; + goto label_return; + } + arena_t *arena = arena_get(tsd_tsdn(tsd), arena_ind, false); + if (arena == NULL) { + ret = EFAULT; + goto label_return; + } + + if (oldp != NULL && oldlenp != NULL) { + /* + * Read the arena name. When reading, the input oldp should + * point to an array with a length no shorter than + * ARENA_NAME_LEN or the length when it was set. + */ + if (*oldlenp != sizeof(char *)) { + ret = EINVAL; + goto label_return; + } + name = *(char **)oldp; + arena_name_get(arena, name); + } + + if (newp != NULL) { + /* Write the arena name. */ + WRITE(name, char *); + if (name == NULL) { + ret = EINVAL; + goto label_return; + } + arena_name_set(arena, name); + } + ret = 0; +label_return: + malloc_mutex_unlock(tsd_tsdn(tsd), &ctl_mtx); + return ret; +} + static const ctl_named_node_t * -arena_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, - size_t i) { +arena_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { const ctl_named_node_t *ret; malloc_mutex_lock(tsdn, &ctl_mtx); @@ -3002,9 +3180,9 @@ arena_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, /******************************************************************************/ static int -arenas_narenas_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +arenas_narenas_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; unsigned narenas; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); @@ -3019,14 +3197,13 @@ arenas_narenas_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -arenas_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen, bool dirty) { +arenas_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen, bool dirty) { int ret; if (oldp != NULL && oldlenp != NULL) { - size_t oldval = (dirty ? arena_dirty_decay_ms_default_get() : - arena_muzzy_decay_ms_default_get()); + size_t oldval = (dirty ? arena_dirty_decay_ms_default_get() + : arena_muzzy_decay_ms_default_get()); READ(oldval, ssize_t); } if (newp != NULL) { @@ -3034,8 +3211,9 @@ arenas_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, ret = EINVAL; goto label_return; } - if (dirty ? arena_dirty_decay_ms_default_set(*(ssize_t *)newp) - : arena_muzzy_decay_ms_default_set(*(ssize_t *)newp)) { + if (dirty + ? arena_dirty_decay_ms_default_set(*(ssize_t *)newp) + : arena_muzzy_decay_ms_default_set(*(ssize_t *)newp)) { ret = EFAULT; goto label_return; } @@ -3049,51 +3227,51 @@ arenas_decay_ms_ctl_impl(tsd_t *tsd, const size_t *mib, static int arenas_dirty_decay_ms_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - return arenas_decay_ms_ctl_impl(tsd, mib, miblen, oldp, oldlenp, newp, - newlen, true); + return arenas_decay_ms_ctl_impl( + tsd, mib, miblen, oldp, oldlenp, newp, newlen, true); } static int arenas_muzzy_decay_ms_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - return arenas_decay_ms_ctl_impl(tsd, mib, miblen, oldp, oldlenp, newp, - newlen, false); + return arenas_decay_ms_ctl_impl( + tsd, mib, miblen, oldp, oldlenp, newp, newlen, false); } CTL_RO_NL_GEN(arenas_quantum, QUANTUM, size_t) CTL_RO_NL_GEN(arenas_page, PAGE, size_t) -CTL_RO_NL_GEN(arenas_tcache_max, tcache_maxclass, size_t) +CTL_RO_NL_GEN(arenas_hugepage, HUGEPAGE, size_t) +CTL_RO_NL_GEN(arenas_tcache_max, global_do_not_change_tcache_maxclass, size_t) CTL_RO_NL_GEN(arenas_nbins, SC_NBINS, unsigned) -CTL_RO_NL_GEN(arenas_nhbins, nhbins, unsigned) +CTL_RO_NL_GEN(arenas_nhbins, global_do_not_change_tcache_nbins, unsigned) CTL_RO_NL_GEN(arenas_bin_i_size, bin_infos[mib[2]].reg_size, size_t) CTL_RO_NL_GEN(arenas_bin_i_nregs, bin_infos[mib[2]].nregs, uint32_t) CTL_RO_NL_GEN(arenas_bin_i_slab_size, bin_infos[mib[2]].slab_size, size_t) CTL_RO_NL_GEN(arenas_bin_i_nshards, bin_infos[mib[2]].n_shards, uint32_t) static const ctl_named_node_t * -arenas_bin_i_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t i) { - if (i > SC_NBINS) { +arenas_bin_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { + if (i >= SC_NBINS) { return NULL; } return super_arenas_bin_i_node; } CTL_RO_NL_GEN(arenas_nlextents, SC_NSIZES - SC_NBINS, unsigned) -CTL_RO_NL_GEN(arenas_lextent_i_size, sz_index2size(SC_NBINS+(szind_t)mib[2]), - size_t) +CTL_RO_NL_GEN(arenas_lextent_i_size, + sz_index2size_unsafe(SC_NBINS + (szind_t)mib[2]), size_t) static const ctl_named_node_t * -arenas_lextent_i_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t i) { - if (i > SC_NSIZES - SC_NBINS) { +arenas_lextent_i_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { + if (i >= SC_NSIZES - SC_NBINS) { return NULL; } return super_arenas_lextent_i_node; } static int -arenas_create_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +arenas_create_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; unsigned arena_ind; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); @@ -3114,10 +3292,9 @@ arenas_create_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -experimental_arenas_create_ext_ctl(tsd_t *tsd, - const size_t *mib, size_t miblen, +experimental_arenas_create_ext_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; + int ret; unsigned arena_ind; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); @@ -3138,25 +3315,26 @@ experimental_arenas_create_ext_ctl(tsd_t *tsd, } static int -arenas_lookup_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; - unsigned arena_ind; - void *ptr; - edata_t *edata; - arena_t *arena; +arenas_lookup_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; + unsigned arena_ind; + void *ptr; + emap_full_alloc_ctx_t alloc_ctx; + bool ptr_not_present; + arena_t *arena; ptr = NULL; ret = EINVAL; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); WRITE(ptr, void *); - edata = emap_edata_lookup(tsd_tsdn(tsd), &arena_emap_global, ptr); - if (edata == NULL) { + ptr_not_present = emap_full_alloc_ctx_try_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &alloc_ctx); + if (ptr_not_present || alloc_ctx.edata == NULL) { goto label_return; } - arena = arena_get_from_edata(edata); + arena = arena_get_from_edata(alloc_ctx.edata); if (arena == NULL) { goto label_return; } @@ -3173,10 +3351,9 @@ arenas_lookup_ctl(tsd_t *tsd, const size_t *mib, /******************************************************************************/ static int -prof_thread_active_init_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; +prof_thread_active_init_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; bool oldval; if (!config_prof) { @@ -3192,11 +3369,11 @@ prof_thread_active_init_ctl(tsd_t *tsd, const size_t *mib, ret = EINVAL; goto label_return; } - oldval = prof_thread_active_init_set(tsd_tsdn(tsd), - *(bool *)newp); + oldval = prof_thread_active_init_set( + tsd_tsdn(tsd), *(bool *)newp); } else { - oldval = opt_prof ? prof_thread_active_init_get(tsd_tsdn(tsd)) : - false; + oldval = opt_prof ? prof_thread_active_init_get(tsd_tsdn(tsd)) + : false; } READ(oldval, bool); @@ -3206,9 +3383,9 @@ prof_thread_active_init_ctl(tsd_t *tsd, const size_t *mib, } static int -prof_active_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +prof_active_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; bool oldval; if (!config_prof) { @@ -3244,9 +3421,9 @@ prof_active_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -prof_dump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +prof_dump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; const char *filename = NULL; if (!config_prof || !opt_prof) { @@ -3267,9 +3444,9 @@ prof_dump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -prof_gdump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +prof_gdump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; bool oldval; if (!config_prof) { @@ -3297,9 +3474,9 @@ prof_gdump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -prof_prefix_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +prof_prefix_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; const char *prefix = NULL; if (!config_prof || !opt_prof) { @@ -3317,9 +3494,9 @@ prof_prefix_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static int -prof_reset_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, - void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; +prof_reset_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, + size_t *oldlenp, void *newp, size_t newlen) { + int ret; size_t lg_sample = lg_prof_sample; if (!config_prof || !opt_prof) { @@ -3390,8 +3567,7 @@ experimental_hooks_prof_backtrace_ctl(tsd_t *tsd, const size_t *mib, goto label_return; } if (oldp != NULL) { - prof_backtrace_hook_t old_hook = - prof_backtrace_hook_get(); + prof_backtrace_hook_t old_hook = prof_backtrace_hook_get(); READ(old_hook, prof_backtrace_hook_t); } if (newp != NULL) { @@ -3413,8 +3589,8 @@ experimental_hooks_prof_backtrace_ctl(tsd_t *tsd, const size_t *mib, } static int -experimental_hooks_prof_dump_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { +experimental_hooks_prof_dump_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { int ret; if (oldp == NULL && newp == NULL) { @@ -3422,8 +3598,7 @@ experimental_hooks_prof_dump_ctl(tsd_t *tsd, const size_t *mib, goto label_return; } if (oldp != NULL) { - prof_dump_hook_t old_hook = - prof_dump_hook_get(); + prof_dump_hook_t old_hook = prof_dump_hook_get(); READ(old_hook, prof_dump_hook_t); } if (newp != NULL) { @@ -3440,6 +3615,78 @@ experimental_hooks_prof_dump_ctl(tsd_t *tsd, const size_t *mib, return ret; } +static int +experimental_hooks_prof_sample_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; + + if (oldp == NULL && newp == NULL) { + ret = EINVAL; + goto label_return; + } + if (oldp != NULL) { + prof_sample_hook_t old_hook = prof_sample_hook_get(); + READ(old_hook, prof_sample_hook_t); + } + if (newp != NULL) { + if (!opt_prof) { + ret = ENOENT; + goto label_return; + } + prof_sample_hook_t new_hook JEMALLOC_CC_SILENCE_INIT(NULL); + WRITE(new_hook, prof_sample_hook_t); + prof_sample_hook_set(new_hook); + } + ret = 0; +label_return: + return ret; +} + +static int +experimental_hooks_prof_sample_free_ctl(tsd_t *tsd, const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; + + if (oldp == NULL && newp == NULL) { + ret = EINVAL; + goto label_return; + } + if (oldp != NULL) { + prof_sample_free_hook_t old_hook = prof_sample_free_hook_get(); + READ(old_hook, prof_sample_free_hook_t); + } + if (newp != NULL) { + if (!opt_prof) { + ret = ENOENT; + goto label_return; + } + prof_sample_free_hook_t new_hook JEMALLOC_CC_SILENCE_INIT(NULL); + WRITE(new_hook, prof_sample_free_hook_t); + prof_sample_free_hook_set(new_hook); + } + ret = 0; +label_return: + return ret; +} + +static int +experimental_hooks_thread_event_ctl(tsd_t *tsd, const size_t *mib, + size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; + + if (newp == NULL) { + ret = EINVAL; + goto label_return; + } + + user_hook_object_t t_new = {NULL, 0, false}; + WRITE(t_new, user_hook_object_t); + ret = te_register_user_handler(tsd_tsdn(tsd), &t_new); + +label_return: + return ret; +} + /* For integration test purpose only. No plan to move out of experimental. */ static int experimental_hooks_safety_check_abort_ctl(tsd_t *tsd, const size_t *mib, @@ -3466,6 +3713,10 @@ experimental_hooks_safety_check_abort_ctl(tsd_t *tsd, const size_t *mib, CTL_RO_CGEN(config_stats, stats_allocated, ctl_stats->allocated, size_t) CTL_RO_CGEN(config_stats, stats_active, ctl_stats->active, size_t) CTL_RO_CGEN(config_stats, stats_metadata, ctl_stats->metadata, size_t) +CTL_RO_CGEN( + config_stats, stats_metadata_edata, ctl_stats->metadata_edata, size_t) +CTL_RO_CGEN( + config_stats, stats_metadata_rtree, ctl_stats->metadata_rtree, size_t) CTL_RO_CGEN(config_stats, stats_metadata_thp, ctl_stats->metadata_thp, size_t) CTL_RO_CGEN(config_stats, stats_resident, ctl_stats->resident, size_t) CTL_RO_CGEN(config_stats, stats_mapped, ctl_stats->mapped, size_t) @@ -3481,11 +3732,50 @@ CTL_RO_CGEN(config_stats, stats_background_thread_run_interval, CTL_RO_CGEN(config_stats, stats_zero_reallocs, atomic_load_zu(&zero_realloc_count, ATOMIC_RELAXED), size_t) +/* + * approximate_stats.active returns a result that is informative itself, + * but the returned value SHOULD NOT be compared against other stats retrieved. + * For instance, approximate_stats.active should not be compared against + * any stats, e.g., stats.active or stats.resident, because there is no + * guarantee in the comparison results. Results returned by stats.*, on the + * other hand, provides such guarantees, i.e., stats.active <= stats.resident, + * as long as epoch is called right before the queries. + */ + +static int +approximate_stats_active_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; + size_t approximate_nactive = 0; + size_t approximate_active_bytes = 0; + + READONLY(); + + tsdn_t *tsdn = tsd_tsdn(tsd); + unsigned n = narenas_total_get(); + + for (unsigned i = 0; i < n; i++) { + arena_t *arena = arena_get(tsdn, i, false); + if (!arena) { + continue; + } + /* Accumulate nactive pages from each arena's pa_shard */ + approximate_nactive += pa_shard_nactive(&arena->pa_shard); + } + + approximate_active_bytes = approximate_nactive << LG_PAGE; + READ(approximate_active_bytes, size_t); + + ret = 0; +label_return: + return ret; +} + CTL_RO_GEN(stats_arenas_i_dss, arenas_i(mib[2])->dss, const char *) -CTL_RO_GEN(stats_arenas_i_dirty_decay_ms, arenas_i(mib[2])->dirty_decay_ms, - ssize_t) -CTL_RO_GEN(stats_arenas_i_muzzy_decay_ms, arenas_i(mib[2])->muzzy_decay_ms, - ssize_t) +CTL_RO_GEN( + stats_arenas_i_dirty_decay_ms, arenas_i(mib[2])->dirty_decay_ms, ssize_t) +CTL_RO_GEN( + stats_arenas_i_muzzy_decay_ms, arenas_i(mib[2])->muzzy_decay_ms, ssize_t) CTL_RO_GEN(stats_arenas_i_nthreads, arenas_i(mib[2])->nthreads, unsigned) CTL_RO_GEN(stats_arenas_i_uptime, nstime_ns(&arenas_i(mib[2])->astats->astats.uptime), uint64_t) @@ -3500,37 +3790,40 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_extent_avail, arenas_i(mib[2])->astats->astats.pa_shard_stats.edata_avail, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_npurge, - locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.decay_dirty.npurge), + locked_read_u64_unsynchronized(&arenas_i(mib[2]) + ->astats->astats.pa_shard_stats.pac_stats.decay_dirty.npurge), uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_nmadvise, - locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.decay_dirty.nmadvise), + locked_read_u64_unsynchronized(&arenas_i(mib[2]) + ->astats->astats.pa_shard_stats.pac_stats.decay_dirty.nmadvise), uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_dirty_purged, - locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.decay_dirty.purged), + locked_read_u64_unsynchronized(&arenas_i(mib[2]) + ->astats->astats.pa_shard_stats.pac_stats.decay_dirty.purged), uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_muzzy_npurge, - locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.decay_muzzy.npurge), + locked_read_u64_unsynchronized(&arenas_i(mib[2]) + ->astats->astats.pa_shard_stats.pac_stats.decay_muzzy.npurge), uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_muzzy_nmadvise, - locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.decay_muzzy.nmadvise), + locked_read_u64_unsynchronized(&arenas_i(mib[2]) + ->astats->astats.pa_shard_stats.pac_stats.decay_muzzy.nmadvise), uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_muzzy_purged, - locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.decay_muzzy.purged), + locked_read_u64_unsynchronized(&arenas_i(mib[2]) + ->astats->astats.pa_shard_stats.pac_stats.decay_muzzy.purged), uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_base, - arenas_i(mib[2])->astats->astats.base, - size_t) + arenas_i(mib[2])->astats->astats.base, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_internal, atomic_load_zu(&arenas_i(mib[2])->astats->astats.internal, ATOMIC_RELAXED), size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_metadata_edata, + arenas_i(mib[2])->astats->astats.metadata_edata, size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_metadata_rtree, + arenas_i(mib[2])->astats->astats.metadata_rtree, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_metadata_thp, arenas_i(mib[2])->astats->astats.metadata_thp, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_tcache_bytes, @@ -3538,15 +3831,25 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_tcache_bytes, CTL_RO_CGEN(config_stats, stats_arenas_i_tcache_stashed_bytes, arenas_i(mib[2])->astats->astats.tcache_stashed_bytes, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_resident, - arenas_i(mib[2])->astats->astats.resident, - size_t) + arenas_i(mib[2])->astats->astats.resident, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_abandoned_vm, atomic_load_zu( - &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.abandoned_vm, - ATOMIC_RELAXED), size_t) + &arenas_i(mib[2])->astats->astats.pa_shard_stats.pac_stats.abandoned_vm, + ATOMIC_RELAXED), + size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_sec_bytes, - arenas_i(mib[2])->astats->secstats.bytes, size_t) + arenas_i(mib[2])->astats->hpastats.secstats.bytes, size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_sec_hits, + arenas_i(mib[2])->astats->hpastats.secstats.total.nhits, size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_sec_misses, + arenas_i(mib[2])->astats->hpastats.secstats.total.nmisses, size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_sec_dalloc_flush, + arenas_i(mib[2])->astats->hpastats.secstats.total.ndalloc_flush, size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_sec_dalloc_noflush, + arenas_i(mib[2])->astats->hpastats.secstats.total.ndalloc_noflush, size_t) +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_sec_overfills, + arenas_i(mib[2])->astats->hpastats.secstats.total.noverfills, size_t) CTL_RO_CGEN(config_stats, stats_arenas_i_small_allocated, arenas_i(mib[2])->astats->allocated_small, size_t) @@ -3578,55 +3881,55 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_large_nflushes, arenas_i(mib[2])->astats->astats.nflushes_large, uint64_t) /* Lock profiling related APIs below. */ -#define RO_MUTEX_CTL_GEN(n, l) \ -CTL_RO_CGEN(config_stats, stats_##n##_num_ops, \ - l.n_lock_ops, uint64_t) \ -CTL_RO_CGEN(config_stats, stats_##n##_num_wait, \ - l.n_wait_times, uint64_t) \ -CTL_RO_CGEN(config_stats, stats_##n##_num_spin_acq, \ - l.n_spin_acquired, uint64_t) \ -CTL_RO_CGEN(config_stats, stats_##n##_num_owner_switch, \ - l.n_owner_switches, uint64_t) \ -CTL_RO_CGEN(config_stats, stats_##n##_total_wait_time, \ - nstime_ns(&l.tot_wait_time), uint64_t) \ -CTL_RO_CGEN(config_stats, stats_##n##_max_wait_time, \ - nstime_ns(&l.max_wait_time), uint64_t) \ -CTL_RO_CGEN(config_stats, stats_##n##_max_num_thds, \ - l.max_n_thds, uint32_t) +#define RO_MUTEX_CTL_GEN(n, l) \ + CTL_RO_CGEN(config_stats, stats_##n##_num_ops, l.n_lock_ops, uint64_t) \ + CTL_RO_CGEN( \ + config_stats, stats_##n##_num_wait, l.n_wait_times, uint64_t) \ + CTL_RO_CGEN(config_stats, stats_##n##_num_spin_acq, l.n_spin_acquired, \ + uint64_t) \ + CTL_RO_CGEN(config_stats, stats_##n##_num_owner_switch, \ + l.n_owner_switches, uint64_t) \ + CTL_RO_CGEN(config_stats, stats_##n##_total_wait_time, \ + nstime_ns(&l.tot_wait_time), uint64_t) \ + CTL_RO_CGEN(config_stats, stats_##n##_max_wait_time, \ + nstime_ns(&l.max_wait_time), uint64_t) \ + CTL_RO_CGEN( \ + config_stats, stats_##n##_max_num_thds, l.max_n_thds, uint32_t) /* Global mutexes. */ -#define OP(mtx) \ - RO_MUTEX_CTL_GEN(mutexes_##mtx, \ - ctl_stats->mutex_prof_data[global_prof_mutex_##mtx]) +#define OP(mtx) \ + RO_MUTEX_CTL_GEN(mutexes_##mtx, \ + ctl_stats->mutex_prof_data[global_prof_mutex_##mtx]) MUTEX_PROF_GLOBAL_MUTEXES #undef OP /* Per arena mutexes */ -#define OP(mtx) RO_MUTEX_CTL_GEN(arenas_i_mutexes_##mtx, \ - arenas_i(mib[2])->astats->astats.mutex_prof_data[arena_prof_mutex_##mtx]) +#define OP(mtx) \ + RO_MUTEX_CTL_GEN(arenas_i_mutexes_##mtx, \ + arenas_i(mib[2]) \ + ->astats->astats.mutex_prof_data[arena_prof_mutex_##mtx]) MUTEX_PROF_ARENA_MUTEXES #undef OP /* tcache bin mutex */ -RO_MUTEX_CTL_GEN(arenas_i_bins_j_mutex, - arenas_i(mib[2])->astats->bstats[mib[4]].mutex_data) +RO_MUTEX_CTL_GEN( + arenas_i_bins_j_mutex, arenas_i(mib[2])->astats->bstats[mib[4]].mutex_data) #undef RO_MUTEX_CTL_GEN /* Resets all mutex stats, including global, arena and bin mutexes. */ static int -stats_mutexes_reset_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, - void *newp, size_t newlen) { +stats_mutexes_reset_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { if (!config_stats) { return ENOENT; } tsdn_t *tsdn = tsd_tsdn(tsd); -#define MUTEX_PROF_RESET(mtx) \ - malloc_mutex_lock(tsdn, &mtx); \ - malloc_mutex_prof_data_reset(tsdn, &mtx); \ - malloc_mutex_unlock(tsdn, &mtx); +#define MUTEX_PROF_RESET(mtx) \ + malloc_mutex_lock(tsdn, &mtx); \ + malloc_mutex_prof_data_reset(tsdn, &mtx); \ + malloc_mutex_unlock(tsdn, &mtx); /* Global mutexes: ctl and prof. */ MUTEX_PROF_RESET(ctl_mtx); @@ -3693,9 +3996,9 @@ CTL_RO_CGEN(config_stats, stats_arenas_i_bins_j_nonfull_slabs, arenas_i(mib[2])->astats->bstats[mib[4]].stats_data.nonfull_slabs, size_t) static const ctl_named_node_t * -stats_arenas_i_bins_j_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t j) { - if (j > SC_NBINS) { +stats_arenas_i_bins_j_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t j) { + if (j >= SC_NBINS) { return NULL; } return super_stats_arenas_i_bins_j_node; @@ -3703,117 +4006,173 @@ stats_arenas_i_bins_j_index(tsdn_t *tsdn, const size_t *mib, CTL_RO_CGEN(config_stats, stats_arenas_i_lextents_j_nmalloc, locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->lstats[mib[4]].nmalloc), uint64_t) + &arenas_i(mib[2])->astats->lstats[mib[4]].nmalloc), + uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_lextents_j_ndalloc, locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->lstats[mib[4]].ndalloc), uint64_t) + &arenas_i(mib[2])->astats->lstats[mib[4]].ndalloc), + uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_lextents_j_nrequests, locked_read_u64_unsynchronized( - &arenas_i(mib[2])->astats->lstats[mib[4]].nrequests), uint64_t) + &arenas_i(mib[2])->astats->lstats[mib[4]].nrequests), + uint64_t) CTL_RO_CGEN(config_stats, stats_arenas_i_lextents_j_curlextents, arenas_i(mib[2])->astats->lstats[mib[4]].curlextents, size_t) static const ctl_named_node_t * -stats_arenas_i_lextents_j_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t j) { - if (j > SC_NSIZES - SC_NBINS) { +stats_arenas_i_lextents_j_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t j) { + if (j >= SC_NSIZES - SC_NBINS) { return NULL; } return super_stats_arenas_i_lextents_j_node; } CTL_RO_CGEN(config_stats, stats_arenas_i_extents_j_ndirty, - arenas_i(mib[2])->astats->estats[mib[4]].ndirty, size_t); + arenas_i(mib[2])->astats->estats[mib[4]].ndirty, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_extents_j_nmuzzy, - arenas_i(mib[2])->astats->estats[mib[4]].nmuzzy, size_t); + arenas_i(mib[2])->astats->estats[mib[4]].nmuzzy, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_extents_j_nretained, - arenas_i(mib[2])->astats->estats[mib[4]].nretained, size_t); + arenas_i(mib[2])->astats->estats[mib[4]].nretained, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_extents_j_dirty_bytes, - arenas_i(mib[2])->astats->estats[mib[4]].dirty_bytes, size_t); + arenas_i(mib[2])->astats->estats[mib[4]].dirty_bytes, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_extents_j_muzzy_bytes, - arenas_i(mib[2])->astats->estats[mib[4]].muzzy_bytes, size_t); + arenas_i(mib[2])->astats->estats[mib[4]].muzzy_bytes, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_extents_j_retained_bytes, - arenas_i(mib[2])->astats->estats[mib[4]].retained_bytes, size_t); + arenas_i(mib[2])->astats->estats[mib[4]].retained_bytes, size_t); static const ctl_named_node_t * -stats_arenas_i_extents_j_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t j) { +stats_arenas_i_extents_j_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t j) { if (j >= SC_NPSIZES) { return NULL; } return super_stats_arenas_i_extents_j_node; } +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_npageslabs, + arenas_i(mib[2])->astats->hpastats.psset_stats.merged.npageslabs, size_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nactive, + arenas_i(mib[2])->astats->hpastats.psset_stats.merged.nactive, size_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_ndirty, + arenas_i(mib[2])->astats->hpastats.psset_stats.merged.ndirty, size_t); + +/* Nonhuge slabs */ +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_slabs_npageslabs_nonhuge, + arenas_i(mib[2])->astats->hpastats.psset_stats.slabs[0].npageslabs, size_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_slabs_nactive_nonhuge, + arenas_i(mib[2])->astats->hpastats.psset_stats.slabs[0].nactive, size_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_slabs_ndirty_nonhuge, + arenas_i(mib[2])->astats->hpastats.psset_stats.slabs[0].ndirty, size_t); + +/* Huge slabs */ +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_slabs_npageslabs_huge, + arenas_i(mib[2])->astats->hpastats.psset_stats.slabs[1].npageslabs, size_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_slabs_nactive_huge, + arenas_i(mib[2])->astats->hpastats.psset_stats.slabs[1].nactive, size_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_slabs_ndirty_huge, + arenas_i(mib[2])->astats->hpastats.psset_stats.slabs[1].ndirty, size_t); + CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_npurge_passes, - arenas_i(mib[2])->astats->hpastats.nonderived_stats.npurge_passes, uint64_t); + arenas_i(mib[2])->astats->hpastats.nonderived_stats.npurge_passes, + uint64_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_npurges, arenas_i(mib[2])->astats->hpastats.nonderived_stats.npurges, uint64_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nhugifies, arenas_i(mib[2])->astats->hpastats.nonderived_stats.nhugifies, uint64_t); +CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nhugify_failures, + arenas_i(mib[2])->astats->hpastats.nonderived_stats.nhugify_failures, + uint64_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_ndehugifies, arenas_i(mib[2])->astats->hpastats.nonderived_stats.ndehugifies, uint64_t); /* Full, nonhuge */ -CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_full_slabs_npageslabs_nonhuge, +CTL_RO_CGEN(config_stats, + stats_arenas_i_hpa_shard_full_slabs_npageslabs_nonhuge, arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[0].npageslabs, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_full_slabs_nactive_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[0].nactive, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[0].nactive, + size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_full_slabs_ndirty_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[0].ndirty, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[0].ndirty, + size_t); /* Full, huge */ CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_full_slabs_npageslabs_huge, arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[1].npageslabs, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_full_slabs_nactive_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[1].nactive, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[1].nactive, + size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_full_slabs_ndirty_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[1].ndirty, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.full_slabs[1].ndirty, + size_t); /* Empty, nonhuge */ -CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_empty_slabs_npageslabs_nonhuge, +CTL_RO_CGEN(config_stats, + stats_arenas_i_hpa_shard_empty_slabs_npageslabs_nonhuge, arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[0].npageslabs, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_empty_slabs_nactive_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[0].nactive, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[0].nactive, + size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_empty_slabs_ndirty_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[0].ndirty, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[0].ndirty, + size_t); /* Empty, huge */ CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_empty_slabs_npageslabs_huge, arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[1].npageslabs, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_empty_slabs_nactive_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[1].nactive, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[1].nactive, + size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_empty_slabs_ndirty_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[1].ndirty, size_t); + arenas_i(mib[2])->astats->hpastats.psset_stats.empty_slabs[1].ndirty, + size_t); /* Nonfull, nonhuge */ -CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][0].npageslabs, +CTL_RO_CGEN(config_stats, + stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_nonhuge, + arenas_i(mib[2]) + ->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][0] + .npageslabs, size_t); -CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][0].nactive, +CTL_RO_CGEN(config_stats, + stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_nonhuge, + arenas_i(mib[2]) + ->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][0] + .nactive, size_t); -CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_nonhuge, - arenas_i(mib[2])->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][0].ndirty, +CTL_RO_CGEN(config_stats, + stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_nonhuge, + arenas_i(mib[2]) + ->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][0] + .ndirty, size_t); /* Nonfull, huge */ -CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][1].npageslabs, +CTL_RO_CGEN(config_stats, + stats_arenas_i_hpa_shard_nonfull_slabs_j_npageslabs_huge, + arenas_i(mib[2]) + ->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][1] + .npageslabs, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nonfull_slabs_j_nactive_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][1].nactive, + arenas_i(mib[2]) + ->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][1] + .nactive, size_t); CTL_RO_CGEN(config_stats, stats_arenas_i_hpa_shard_nonfull_slabs_j_ndirty_huge, - arenas_i(mib[2])->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][1].ndirty, + arenas_i(mib[2]) + ->astats->hpastats.psset_stats.nonfull_slabs[mib[5]][1] + .ndirty, size_t); static const ctl_named_node_t * -stats_arenas_i_hpa_shard_nonfull_slabs_j_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t j) { +stats_arenas_i_hpa_shard_nonfull_slabs_j_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t j) { if (j >= PSSET_NPSIZES) { return NULL; } @@ -3831,8 +4190,7 @@ ctl_arenas_i_verify(size_t i) { } static const ctl_named_node_t * -stats_arenas_i_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t i) { +stats_arenas_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { const ctl_named_node_t *ret; malloc_mutex_lock(tsdn, &ctl_mtx); @@ -3851,7 +4209,7 @@ static int experimental_hooks_install_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { int ret; - if (oldp == NULL || oldlenp == NULL|| newp == NULL) { + if (oldp == NULL || oldlenp == NULL || newp == NULL) { ret = EINVAL; goto label_return; } @@ -3892,32 +4250,6 @@ experimental_hooks_remove_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, return ret; } -static int -experimental_thread_activity_callback_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - - if (!config_stats) { - return ENOENT; - } - - activity_callback_thunk_t t_old = tsd_activity_callback_thunk_get(tsd); - READ(t_old, activity_callback_thunk_t); - - if (newp != NULL) { - /* - * This initialization is unnecessary. If it's omitted, though, - * clang gets confused and warns on the subsequent use of t_new. - */ - activity_callback_thunk_t t_new = {NULL, NULL}; - WRITE(t_new, activity_callback_thunk_t); - tsd_activity_callback_thunk_set(tsd, t_new); - } - ret = 0; -label_return: - return ret; -} - /* * Output six memory utilization entries for an input pointer, the first one of * type (void *) and the remaining five of type size_t, describing the following @@ -3986,8 +4318,8 @@ experimental_thread_activity_callback_ctl(tsd_t *tsd, const size_t *mib, * motivation from C++. */ static int -experimental_utilization_query_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { +experimental_utilization_query_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { int ret; assert(sizeof(inspect_extent_util_stats_verbose_t) @@ -4002,8 +4334,8 @@ experimental_utilization_query_ctl(tsd_t *tsd, const size_t *mib, void *ptr = NULL; WRITE(ptr, void *); - inspect_extent_util_stats_verbose_t *util_stats - = (inspect_extent_util_stats_verbose_t *)oldp; + inspect_extent_util_stats_verbose_t *util_stats = + (inspect_extent_util_stats_verbose_t *)oldp; inspect_extent_util_stats_verbose_get(tsd_tsdn(tsd), ptr, &util_stats->nfree, &util_stats->nregs, &util_stats->size, &util_stats->bin_nfree, &util_stats->bin_nregs, @@ -4125,7 +4457,7 @@ experimental_utilization_batch_query_ctl(tsd_t *tsd, const size_t *mib, goto label_return; } - void **ptrs = (void **)newp; + void **ptrs = (void **)newp; inspect_extent_util_stats_t *util_stats = (inspect_extent_util_stats_t *)oldp; size_t i; @@ -4141,8 +4473,8 @@ experimental_utilization_batch_query_ctl(tsd_t *tsd, const size_t *mib, } static const ctl_named_node_t * -experimental_arenas_i_index(tsdn_t *tsdn, const size_t *mib, - size_t miblen, size_t i) { +experimental_arenas_i_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { const ctl_named_node_t *ret; malloc_mutex_lock(tsdn, &ctl_mtx); @@ -4157,8 +4489,8 @@ experimental_arenas_i_index(tsdn_t *tsdn, const size_t *mib, } static int -experimental_arenas_i_pactivep_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { +experimental_arenas_i_pactivep_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { if (!config_stats) { return ENOENT; } @@ -4168,16 +4500,16 @@ experimental_arenas_i_pactivep_ctl(tsd_t *tsd, const size_t *mib, unsigned arena_ind; arena_t *arena; - int ret; - size_t *pactivep; + int ret; + size_t *pactivep; malloc_mutex_lock(tsd_tsdn(tsd), &ctl_mtx); READONLY(); MIB_UNSIGNED(arena_ind, 2); - if (arena_ind < narenas_total_get() && (arena = - arena_get(tsd_tsdn(tsd), arena_ind, false)) != NULL) { -#if defined(JEMALLOC_GCC_ATOMIC_ATOMICS) || \ - defined(JEMALLOC_GCC_SYNC_ATOMICS) || defined(_MSC_VER) + if (arena_ind < narenas_total_get() + && (arena = arena_get(tsd_tsdn(tsd), arena_ind, false)) != NULL) { +#if defined(JEMALLOC_GCC_ATOMIC_ATOMICS) || defined(JEMALLOC_GCC_SYNC_ATOMICS) \ + || defined(_MSC_VER) /* Expose the underlying counter for fast read. */ pactivep = (size_t *)&(arena->pa_shard.nactive.repr); READ(pactivep, size_t *); @@ -4229,7 +4561,7 @@ experimental_prof_recent_alloc_max_ctl(tsd_t *tsd, const size_t *mib, typedef struct write_cb_packet_s write_cb_packet_t; struct write_cb_packet_s { write_cb_t *write_cb; - void *cbopaque; + void *cbopaque; }; static int @@ -4248,8 +4580,8 @@ experimental_prof_recent_alloc_dump_ctl(tsd_t *tsd, const size_t *mib, write_cb_packet_t write_cb_packet; ASSURED_WRITE(write_cb_packet, write_cb_packet_t); - prof_recent_alloc_dump(tsd, write_cb_packet.write_cb, - write_cb_packet.cbopaque); + prof_recent_alloc_dump( + tsd, write_cb_packet.write_cb, write_cb_packet.cbopaque); ret = 0; @@ -4262,12 +4594,12 @@ struct batch_alloc_packet_s { void **ptrs; size_t num; size_t size; - int flags; + int flags; }; static int -experimental_batch_alloc_ctl(tsd_t *tsd, const size_t *mib, - size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { +experimental_batch_alloc_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, + void *oldp, size_t *oldlenp, void *newp, size_t newlen) { int ret; VERIFY_READ(size_t); @@ -4288,8 +4620,8 @@ experimental_batch_alloc_ctl(tsd_t *tsd, const size_t *mib, static int prof_stats_bins_i_live_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - unsigned binind; + int ret; + unsigned binind; prof_stats_t stats; if (!(config_prof && opt_prof && opt_prof_stats)) { @@ -4314,8 +4646,8 @@ prof_stats_bins_i_live_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, static int prof_stats_bins_i_accum_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - unsigned binind; + int ret; + unsigned binind; prof_stats_t stats; if (!(config_prof && opt_prof && opt_prof_stats)) { @@ -4338,8 +4670,8 @@ prof_stats_bins_i_accum_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static const ctl_named_node_t * -prof_stats_bins_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, - size_t i) { +prof_stats_bins_i_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { if (!(config_prof && opt_prof && opt_prof_stats)) { return NULL; } @@ -4352,8 +4684,8 @@ prof_stats_bins_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, static int prof_stats_lextents_i_live_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - unsigned lextent_ind; + int ret; + unsigned lextent_ind; prof_stats_t stats; if (!(config_prof && opt_prof && opt_prof_stats)) { @@ -4378,8 +4710,8 @@ prof_stats_lextents_i_live_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, static int prof_stats_lextents_i_accum_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { - int ret; - unsigned lextent_ind; + int ret; + unsigned lextent_ind; prof_stats_t stats; if (!(config_prof && opt_prof && opt_prof_stats)) { @@ -4402,8 +4734,8 @@ prof_stats_lextents_i_accum_ctl(tsd_t *tsd, const size_t *mib, size_t miblen, } static const ctl_named_node_t * -prof_stats_lextents_i_index(tsdn_t *tsdn, const size_t *mib, size_t miblen, - size_t i) { +prof_stats_lextents_i_index( + tsdn_t *tsdn, const size_t *mib, size_t miblen, size_t i) { if (!(config_prof && opt_prof && opt_prof_stats)) { return NULL; } diff --git a/dep/jemalloc/src/decay.c b/dep/jemalloc/src/decay.c index d801b2bc08ea9..7bbce2a6c6ede 100644 --- a/dep/jemalloc/src/decay.c +++ b/dep/jemalloc/src/decay.c @@ -4,9 +4,8 @@ #include "jemalloc/internal/decay.h" static const uint64_t h_steps[SMOOTHSTEP_NSTEPS] = { -#define STEP(step, h, x, y) \ - h, - SMOOTHSTEP +#define STEP(step, h, x, y) h, + SMOOTHSTEP #undef STEP }; @@ -14,15 +13,16 @@ static const uint64_t h_steps[SMOOTHSTEP_NSTEPS] = { * Generate a new deadline that is uniformly random within the next epoch after * the current one. */ -void +static void decay_deadline_init(decay_t *decay) { nstime_copy(&decay->deadline, &decay->epoch); nstime_add(&decay->deadline, &decay->interval); if (decay_ms_read(decay) > 0) { nstime_t jitter; - nstime_init(&jitter, prng_range_u64(&decay->jitter_state, - nstime_ns(&decay->interval))); + nstime_init(&jitter, + prng_range_u64( + &decay->jitter_state, nstime_ns(&decay->interval))); nstime_add(&decay->deadline, &jitter); } } @@ -31,8 +31,8 @@ void decay_reinit(decay_t *decay, nstime_t *cur_time, ssize_t decay_ms) { atomic_store_zd(&decay->time_ms, decay_ms, ATOMIC_RELAXED); if (decay_ms > 0) { - nstime_init(&decay->interval, (uint64_t)decay_ms * - KQU(1000000)); + nstime_init( + &decay->interval, (uint64_t)decay_ms * KQU(1000000)); nstime_idivide(&decay->interval, SMOOTHSTEP_NSTEPS); } @@ -52,7 +52,7 @@ decay_init(decay_t *decay, nstime_t *cur_time, ssize_t decay_ms) { decay->ceil_npages = 0; } if (malloc_mutex_init(&decay->mtx, "decay", WITNESS_RANK_DECAY, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } decay->purging = false; @@ -65,8 +65,8 @@ decay_ms_valid(ssize_t decay_ms) { if (decay_ms < -1) { return false; } - if (decay_ms == -1 || (uint64_t)decay_ms <= NSTIME_SEC_MAX * - KQU(1000)) { + if (decay_ms == -1 + || (uint64_t)decay_ms <= NSTIME_SEC_MAX * KQU(1000)) { return true; } return false; @@ -74,8 +74,8 @@ decay_ms_valid(ssize_t decay_ms) { static void decay_maybe_update_time(decay_t *decay, nstime_t *new_time) { - if (unlikely(!nstime_monotonic() && nstime_compare(&decay->epoch, - new_time) > 0)) { + if (unlikely(!nstime_monotonic() + && nstime_compare(&decay->epoch, new_time) > 0)) { /* * Time went backwards. Move the epoch back in time and * generate a new deadline, with the expectation that time @@ -115,11 +115,11 @@ decay_backlog_npages_limit(const decay_t *decay) { * placed as the newest record. */ static void -decay_backlog_update(decay_t *decay, uint64_t nadvance_u64, - size_t current_npages) { +decay_backlog_update( + decay_t *decay, uint64_t nadvance_u64, size_t current_npages) { if (nadvance_u64 >= SMOOTHSTEP_NSTEPS) { - memset(decay->backlog, 0, (SMOOTHSTEP_NSTEPS-1) * - sizeof(size_t)); + memset(decay->backlog, 0, + (SMOOTHSTEP_NSTEPS - 1) * sizeof(size_t)); } else { size_t nadvance_z = (size_t)nadvance_u64; @@ -128,14 +128,15 @@ decay_backlog_update(decay_t *decay, uint64_t nadvance_u64, memmove(decay->backlog, &decay->backlog[nadvance_z], (SMOOTHSTEP_NSTEPS - nadvance_z) * sizeof(size_t)); if (nadvance_z > 1) { - memset(&decay->backlog[SMOOTHSTEP_NSTEPS - - nadvance_z], 0, (nadvance_z-1) * sizeof(size_t)); + memset(&decay->backlog[SMOOTHSTEP_NSTEPS - nadvance_z], + 0, (nadvance_z - 1) * sizeof(size_t)); } } - size_t npages_delta = (current_npages > decay->nunpurged) ? - current_npages - decay->nunpurged : 0; - decay->backlog[SMOOTHSTEP_NSTEPS-1] = npages_delta; + size_t npages_delta = (current_npages > decay->nunpurged) + ? current_npages - decay->nunpurged + : 0; + decay->backlog[SMOOTHSTEP_NSTEPS - 1] = npages_delta; if (config_debug) { if (current_npages > decay->ceil_npages) { @@ -157,6 +158,7 @@ decay_deadline_reached(const decay_t *decay, const nstime_t *time) { uint64_t decay_npages_purge_in(decay_t *decay, nstime_t *time, size_t npages_new) { uint64_t decay_interval_ns = decay_epoch_duration_ns(decay); + assert(decay_interval_ns != 0); size_t n_epoch = (size_t)(nstime_ns(time) / decay_interval_ns); uint64_t npages_purge; @@ -164,18 +166,17 @@ decay_npages_purge_in(decay_t *decay, nstime_t *time, size_t npages_new) { npages_purge = npages_new; } else { uint64_t h_steps_max = h_steps[SMOOTHSTEP_NSTEPS - 1]; - assert(h_steps_max >= - h_steps[SMOOTHSTEP_NSTEPS - 1 - n_epoch]); - npages_purge = npages_new * (h_steps_max - - h_steps[SMOOTHSTEP_NSTEPS - 1 - n_epoch]); + assert(h_steps_max >= h_steps[SMOOTHSTEP_NSTEPS - 1 - n_epoch]); + npages_purge = npages_new + * (h_steps_max - h_steps[SMOOTHSTEP_NSTEPS - 1 - n_epoch]); npages_purge >>= SMOOTHSTEP_BFP; } return npages_purge; } bool -decay_maybe_advance_epoch(decay_t *decay, nstime_t *new_time, - size_t npages_current) { +decay_maybe_advance_epoch( + decay_t *decay, nstime_t *new_time, size_t npages_current) { /* Handle possible non-monotonicity of time. */ decay_maybe_update_time(decay, new_time); @@ -201,8 +202,9 @@ decay_maybe_advance_epoch(decay_t *decay, nstime_t *new_time, decay_backlog_update(decay, nadvance_u64, npages_current); decay->npages_limit = decay_backlog_npages_limit(decay); - decay->nunpurged = (decay->npages_limit > npages_current) ? - decay->npages_limit : npages_current; + decay->nunpurged = (decay->npages_limit > npages_current) + ? decay->npages_limit + : npages_current; return true; } @@ -225,21 +227,21 @@ decay_maybe_advance_epoch(decay_t *decay, nstime_t *new_time, */ static inline size_t decay_npurge_after_interval(decay_t *decay, size_t interval) { - size_t i; + size_t i; uint64_t sum = 0; for (i = 0; i < interval; i++) { sum += decay->backlog[i] * h_steps[i]; } for (; i < SMOOTHSTEP_NSTEPS; i++) { - sum += decay->backlog[i] * - (h_steps[i] - h_steps[i - interval]); + sum += decay->backlog[i] * (h_steps[i] - h_steps[i - interval]); } return (size_t)(sum >> SMOOTHSTEP_BFP); } -uint64_t decay_ns_until_purge(decay_t *decay, size_t npages_current, - uint64_t npages_threshold) { +uint64_t +decay_ns_until_purge( + decay_t *decay, size_t npages_current, uint64_t npages_threshold) { if (!decay_gradually(decay)) { return DECAY_UNBOUNDED_TIME_TO_PURGE; } @@ -277,7 +279,7 @@ uint64_t decay_ns_until_purge(decay_t *decay, size_t npages_current, } unsigned n_search = 0; - size_t target, npurge; + size_t target, npurge; while ((npurge_lb + npages_threshold < npurge_ub) && (lb + 2 < ub)) { target = (lb + ub) / 2; npurge = decay_npurge_after_interval(decay, target); diff --git a/dep/jemalloc/src/ecache.c b/dep/jemalloc/src/ecache.c index a242227d32d65..20fcee9e6ba7e 100644 --- a/dep/jemalloc/src/ecache.c +++ b/dep/jemalloc/src/ecache.c @@ -7,7 +7,7 @@ bool ecache_init(tsdn_t *tsdn, ecache_t *ecache, extent_state_t state, unsigned ind, bool delay_coalesce) { if (malloc_mutex_init(&ecache->mtx, "extents", WITNESS_RANK_EXTENTS, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } ecache->state = state; diff --git a/dep/jemalloc/src/edata.c b/dep/jemalloc/src/edata.c index 82b6f5654b515..d71d1679d4906 100644 --- a/dep/jemalloc/src/edata.c +++ b/dep/jemalloc/src/edata.c @@ -1,6 +1,5 @@ #include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_includes.h" -ph_gen(, edata_avail, edata_t, avail_link, - edata_esnead_comp) -ph_gen(, edata_heap, edata_t, heap_link, edata_snad_comp) +ph_gen(, edata_avail, edata_t, avail_link, edata_esnead_comp) + ph_gen(, edata_heap, edata_t, heap_link, edata_snad_comp) diff --git a/dep/jemalloc/src/edata_cache.c b/dep/jemalloc/src/edata_cache.c index 6bc1848cbcb81..3ac8273a8f654 100644 --- a/dep/jemalloc/src/edata_cache.c +++ b/dep/jemalloc/src/edata_cache.c @@ -11,7 +11,7 @@ edata_cache_init(edata_cache_t *edata_cache, base_t *base) { */ atomic_store_zu(&edata_cache->count, 0, ATOMIC_RELAXED); if (malloc_mutex_init(&edata_cache->mtx, "edata_cache", - WITNESS_RANK_EDATA_CACHE, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_EDATA_CACHE, malloc_mutex_rank_exclusive)) { return true; } edata_cache->base = base; @@ -63,8 +63,7 @@ edata_cache_fast_init(edata_cache_fast_t *ecs, edata_cache_t *fallback) { } static void -edata_cache_fast_try_fill_from_fallback(tsdn_t *tsdn, - edata_cache_fast_t *ecs) { +edata_cache_fast_try_fill_from_fallback(tsdn_t *tsdn, edata_cache_fast_t *ecs) { edata_t *edata; malloc_mutex_lock(tsdn, &ecs->fallback->mtx); for (int i = 0; i < EDATA_CACHE_FAST_FILL; i++) { @@ -80,8 +79,8 @@ edata_cache_fast_try_fill_from_fallback(tsdn_t *tsdn, edata_t * edata_cache_fast_get(tsdn_t *tsdn, edata_cache_fast_t *ecs) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_EDATA_CACHE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_EDATA_CACHE, 0); if (ecs->disabled) { assert(edata_list_inactive_first(&ecs->list) == NULL); @@ -118,7 +117,7 @@ edata_cache_fast_flush_all(tsdn_t *tsdn, edata_cache_fast_t *ecs) { * flush and disable pathways. */ edata_t *edata; - size_t nflushed = 0; + size_t nflushed = 0; malloc_mutex_lock(tsdn, &ecs->fallback->mtx); while ((edata = edata_list_inactive_first(&ecs->list)) != NULL) { edata_list_inactive_remove(&ecs->list, edata); @@ -131,8 +130,8 @@ edata_cache_fast_flush_all(tsdn_t *tsdn, edata_cache_fast_t *ecs) { void edata_cache_fast_put(tsdn_t *tsdn, edata_cache_fast_t *ecs, edata_t *edata) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_EDATA_CACHE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_EDATA_CACHE, 0); if (ecs->disabled) { assert(edata_list_inactive_first(&ecs->list) == NULL); diff --git a/dep/jemalloc/src/ehooks.c b/dep/jemalloc/src/ehooks.c index 383e9de6a6b9e..d7abb960bae15 100644 --- a/dep/jemalloc/src/ehooks.c +++ b/dep/jemalloc/src/ehooks.c @@ -27,9 +27,10 @@ extent_alloc_core(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, assert(alignment != 0); /* "primary" dss. */ - if (have_dss && dss_prec == dss_prec_primary && (ret = - extent_alloc_dss(tsdn, arena, new_addr, size, alignment, zero, - commit)) != NULL) { + if (have_dss && dss_prec == dss_prec_primary + && (ret = extent_alloc_dss( + tsdn, arena, new_addr, size, alignment, zero, commit)) + != NULL) { return ret; } /* mmap. */ @@ -38,9 +39,10 @@ extent_alloc_core(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, return ret; } /* "secondary" dss. */ - if (have_dss && dss_prec == dss_prec_secondary && (ret = - extent_alloc_dss(tsdn, arena, new_addr, size, alignment, zero, - commit)) != NULL) { + if (have_dss && dss_prec == dss_prec_secondary + && (ret = extent_alloc_dss( + tsdn, arena, new_addr, size, alignment, zero, commit)) + != NULL) { return ret; } @@ -53,11 +55,12 @@ ehooks_default_alloc_impl(tsdn_t *tsdn, void *new_addr, size_t size, size_t alignment, bool *zero, bool *commit, unsigned arena_ind) { arena_t *arena = arena_get(tsdn, arena_ind, false); /* NULL arena indicates arena_create. */ - assert(arena != NULL || alignment == HUGEPAGE); - dss_prec_t dss = (arena == NULL) ? dss_prec_disabled : - (dss_prec_t)atomic_load_u(&arena->dss_prec, ATOMIC_RELAXED); - void *ret = extent_alloc_core(tsdn, arena, new_addr, size, alignment, - zero, commit, dss); + assert(arena != NULL || alignment == BASE_BLOCK_MIN_ALIGN); + dss_prec_t dss = (arena == NULL) + ? dss_prec_disabled + : (dss_prec_t)atomic_load_u(&arena->dss_prec, ATOMIC_RELAXED); + void *ret = extent_alloc_core( + tsdn, arena, new_addr, size, alignment, zero, commit, dss); if (have_madvise_huge && ret) { pages_set_thp_state(ret, size); } @@ -100,8 +103,8 @@ ehooks_default_destroy(extent_hooks_t *extent_hooks, void *addr, size_t size, bool ehooks_default_commit_impl(void *addr, size_t offset, size_t length) { - return pages_commit((void *)((uintptr_t)addr + (uintptr_t)offset), - length); + return pages_commit( + (void *)((byte_t *)addr + (uintptr_t)offset), length); } static bool @@ -112,8 +115,8 @@ ehooks_default_commit(extent_hooks_t *extent_hooks, void *addr, size_t size, bool ehooks_default_decommit_impl(void *addr, size_t offset, size_t length) { - return pages_decommit((void *)((uintptr_t)addr + (uintptr_t)offset), - length); + return pages_decommit( + (void *)((byte_t *)addr + (uintptr_t)offset), length); } static bool @@ -125,8 +128,8 @@ ehooks_default_decommit(extent_hooks_t *extent_hooks, void *addr, size_t size, #ifdef PAGES_CAN_PURGE_LAZY bool ehooks_default_purge_lazy_impl(void *addr, size_t offset, size_t length) { - return pages_purge_lazy((void *)((uintptr_t)addr + (uintptr_t)offset), - length); + return pages_purge_lazy( + (void *)((byte_t *)addr + (uintptr_t)offset), length); } static bool @@ -143,8 +146,8 @@ ehooks_default_purge_lazy(extent_hooks_t *extent_hooks, void *addr, size_t size, #ifdef PAGES_CAN_PURGE_FORCED bool ehooks_default_purge_forced_impl(void *addr, size_t offset, size_t length) { - return pages_purge_forced((void *)((uintptr_t)addr + - (uintptr_t)offset), length); + return pages_purge_forced( + (void *)((byte_t *)addr + (uintptr_t)offset), length); } static bool @@ -159,7 +162,7 @@ ehooks_default_purge_forced(extent_hooks_t *extent_hooks, void *addr, #endif bool -ehooks_default_split_impl() { +ehooks_default_split_impl(void) { if (!maps_coalesce) { /* * Without retain, only whole regions can be purged (required by @@ -201,11 +204,11 @@ ehooks_default_merge_impl(tsdn_t *tsdn, void *addr_a, void *addr_b) { return true; } if (config_debug) { - edata_t *a = emap_edata_lookup(tsdn, &arena_emap_global, - addr_a); - bool head_a = edata_is_head_get(a); - edata_t *b = emap_edata_lookup(tsdn, &arena_emap_global, - addr_b); + edata_t *a = emap_edata_lookup( + tsdn, &arena_emap_global, addr_a); + bool head_a = edata_is_head_get(a); + edata_t *b = emap_edata_lookup( + tsdn, &arena_emap_global, addr_b); bool head_b = edata_is_head_get(b); emap_assert_mapped(tsdn, &arena_emap_global, a); emap_assert_mapped(tsdn, &arena_emap_global, b); @@ -254,22 +257,17 @@ ehooks_default_unguard_impl(void *guard1, void *guard2) { pages_unmark_guards(guard1, guard2); } -const extent_hooks_t ehooks_default_extent_hooks = { - ehooks_default_alloc, - ehooks_default_dalloc, - ehooks_default_destroy, - ehooks_default_commit, - ehooks_default_decommit, +const extent_hooks_t ehooks_default_extent_hooks = {ehooks_default_alloc, + ehooks_default_dalloc, ehooks_default_destroy, ehooks_default_commit, + ehooks_default_decommit, #ifdef PAGES_CAN_PURGE_LAZY - ehooks_default_purge_lazy, + ehooks_default_purge_lazy, #else - NULL, + NULL, #endif #ifdef PAGES_CAN_PURGE_FORCED - ehooks_default_purge_forced, + ehooks_default_purge_forced, #else - NULL, + NULL, #endif - ehooks_default_split, - ehooks_default_merge -}; + ehooks_default_split, ehooks_default_merge}; diff --git a/dep/jemalloc/src/emap.c b/dep/jemalloc/src/emap.c index 9cc95a724a9b2..54bfabab0205a 100644 --- a/dep/jemalloc/src/emap.c +++ b/dep/jemalloc/src/emap.c @@ -16,10 +16,10 @@ emap_init(emap_t *emap, base_t *base, bool zeroed) { } void -emap_update_edata_state(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - extent_state_t state) { - witness_assert_positive_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE); +emap_update_edata_state( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, extent_state_t state) { + witness_assert_positive_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE); edata_state_set(edata, state); @@ -28,10 +28,11 @@ emap_update_edata_state(tsdn_t *tsdn, emap_t *emap, edata_t *edata, rtree_ctx, (uintptr_t)edata_base_get(edata), /* dependent */ true, /* init_missing */ false); assert(elm1 != NULL); - rtree_leaf_elm_t *elm2 = edata_size_get(edata) == PAGE ? NULL : - rtree_leaf_elm_lookup(tsdn, &emap->rtree, rtree_ctx, - (uintptr_t)edata_last_get(edata), /* dependent */ true, - /* init_missing */ false); + rtree_leaf_elm_t *elm2 = edata_size_get(edata) == PAGE + ? NULL + : rtree_leaf_elm_lookup(tsdn, &emap->rtree, rtree_ctx, + (uintptr_t)edata_last_get(edata), /* dependent */ true, + /* init_missing */ false); rtree_leaf_elm_state_update(tsdn, &emap->rtree, elm1, elm2, state); @@ -42,17 +43,17 @@ static inline edata_t * emap_try_acquire_edata_neighbor_impl(tsdn_t *tsdn, emap_t *emap, edata_t *edata, extent_pai_t pai, extent_state_t expected_state, bool forward, bool expanding) { - witness_assert_positive_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE); + witness_assert_positive_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE); assert(!edata_guarded_get(edata)); assert(!expanding || forward); assert(!edata_state_in_transition(expected_state)); - assert(expected_state == extent_state_dirty || - expected_state == extent_state_muzzy || - expected_state == extent_state_retained); + assert(expected_state == extent_state_dirty + || expected_state == extent_state_muzzy + || expected_state == extent_state_retained); - void *neighbor_addr = forward ? edata_past_get(edata) : - edata_before_get(edata); + void *neighbor_addr = forward ? edata_past_get(edata) + : edata_before_get(edata); /* * This is subtle; the rtree code asserts that its input pointer is * non-NULL, and this is a useful thing to check. But it's possible @@ -73,10 +74,10 @@ emap_try_acquire_edata_neighbor_impl(tsdn_t *tsdn, emap_t *emap, edata_t *edata, return NULL; } - rtree_contents_t neighbor_contents = rtree_leaf_elm_read(tsdn, - &emap->rtree, elm, /* dependent */ true); + rtree_contents_t neighbor_contents = rtree_leaf_elm_read( + tsdn, &emap->rtree, elm, /* dependent */ false); if (!extent_can_acquire_neighbor(edata, neighbor_contents, pai, - expected_state, forward, expanding)) { + expected_state, forward, expanding)) { return NULL; } @@ -109,8 +110,8 @@ emap_try_acquire_edata_neighbor_expand(tsdn_t *tsdn, emap_t *emap, } void -emap_release_edata(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - extent_state_t new_state) { +emap_release_edata( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, extent_state_t new_state) { assert(emap_edata_in_transition(tsdn, emap, edata)); assert(emap_edata_is_acquired(tsdn, emap, edata)); @@ -145,8 +146,8 @@ emap_rtree_write_acquired(tsdn_t *tsdn, emap_t *emap, rtree_leaf_elm_t *elm_a, contents.edata = edata; contents.metadata.szind = szind; contents.metadata.slab = slab; - contents.metadata.is_head = (edata == NULL) ? false : - edata_is_head_get(edata); + contents.metadata.is_head = (edata == NULL) ? false + : edata_is_head_get(edata); contents.metadata.state = (edata == NULL) ? 0 : edata_state_get(edata); rtree_leaf_elm_write(tsdn, &emap->rtree, elm_a, contents); if (elm_b != NULL) { @@ -155,29 +156,33 @@ emap_rtree_write_acquired(tsdn_t *tsdn, emap_t *emap, rtree_leaf_elm_t *elm_a, } bool -emap_register_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - szind_t szind, bool slab) { +emap_register_boundary( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, bool slab) { assert(edata_state_get(edata) == extent_state_active); EMAP_DECLARE_RTREE_CTX; rtree_leaf_elm_t *elm_a, *elm_b; - bool err = emap_rtree_leaf_elms_lookup(tsdn, emap, rtree_ctx, edata, - false, true, &elm_a, &elm_b); + bool err = emap_rtree_leaf_elms_lookup( + tsdn, emap, rtree_ctx, edata, false, true, &elm_a, &elm_b); if (err) { return true; } assert(rtree_leaf_elm_read(tsdn, &emap->rtree, elm_a, - /* dependent */ false).edata == NULL); + /* dependent */ false) + .edata + == NULL); assert(rtree_leaf_elm_read(tsdn, &emap->rtree, elm_b, - /* dependent */ false).edata == NULL); + /* dependent */ false) + .edata + == NULL); emap_rtree_write_acquired(tsdn, emap, elm_a, elm_b, edata, szind, slab); return false; } /* Invoked *after* emap_register_boundary. */ void -emap_register_interior(tsdn_t *tsdn, emap_t *emap, edata_t *edata, - szind_t szind) { +emap_register_interior( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind) { EMAP_DECLARE_RTREE_CTX; assert(edata_slab_get(edata)); @@ -226,10 +231,10 @@ emap_deregister_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { EMAP_DECLARE_RTREE_CTX; rtree_leaf_elm_t *elm_a, *elm_b; - emap_rtree_leaf_elms_lookup(tsdn, emap, rtree_ctx, edata, - true, false, &elm_a, &elm_b); - emap_rtree_write_acquired(tsdn, emap, elm_a, elm_b, NULL, SC_NSIZES, - false); + emap_rtree_leaf_elms_lookup( + tsdn, emap, rtree_ctx, edata, true, false, &elm_a, &elm_b); + emap_rtree_write_acquired( + tsdn, emap, elm_a, elm_b, NULL, SC_NSIZES, false); } void @@ -245,8 +250,8 @@ emap_deregister_interior(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { } void -emap_remap(tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, - bool slab) { +emap_remap( + tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, bool slab) { EMAP_DECLARE_RTREE_CTX; if (szind != SC_NSIZES) { @@ -274,8 +279,8 @@ emap_remap(tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind, if (slab && edata_size_get(edata) > PAGE) { uintptr_t key = (uintptr_t)edata_past_get(edata) - (uintptr_t)PAGE; - rtree_write(tsdn, &emap->rtree, rtree_ctx, key, - contents); + rtree_write( + tsdn, &emap->rtree, rtree_ctx, key, contents); } } } @@ -344,29 +349,29 @@ emap_merge_commit(tsdn_t *tsdn, emap_t *emap, emap_prepare_t *prepare, clear_contents.metadata.state = (extent_state_t)0; if (prepare->lead_elm_b != NULL) { - rtree_leaf_elm_write(tsdn, &emap->rtree, - prepare->lead_elm_b, clear_contents); + rtree_leaf_elm_write( + tsdn, &emap->rtree, prepare->lead_elm_b, clear_contents); } rtree_leaf_elm_t *merged_b; if (prepare->trail_elm_b != NULL) { - rtree_leaf_elm_write(tsdn, &emap->rtree, - prepare->trail_elm_a, clear_contents); + rtree_leaf_elm_write( + tsdn, &emap->rtree, prepare->trail_elm_a, clear_contents); merged_b = prepare->trail_elm_b; } else { merged_b = prepare->trail_elm_a; } - emap_rtree_write_acquired(tsdn, emap, prepare->lead_elm_a, merged_b, - lead, SC_NSIZES, false); + emap_rtree_write_acquired( + tsdn, emap, prepare->lead_elm_a, merged_b, lead, SC_NSIZES, false); } void emap_do_assert_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { EMAP_DECLARE_RTREE_CTX; - rtree_contents_t contents = rtree_read(tsdn, &emap->rtree, rtree_ctx, - (uintptr_t)edata_base_get(edata)); + rtree_contents_t contents = rtree_read( + tsdn, &emap->rtree, rtree_ctx, (uintptr_t)edata_base_get(edata)); assert(contents.edata == edata); assert(contents.metadata.is_head == edata_is_head_get(edata)); assert(contents.metadata.state == edata_state_get(edata)); @@ -375,12 +380,12 @@ emap_do_assert_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { void emap_do_assert_not_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata) { emap_full_alloc_ctx_t context1 = {0}; - emap_full_alloc_ctx_try_lookup(tsdn, emap, edata_base_get(edata), - &context1); + emap_full_alloc_ctx_try_lookup( + tsdn, emap, edata_base_get(edata), &context1); assert(context1.edata == NULL); emap_full_alloc_ctx_t context2 = {0}; - emap_full_alloc_ctx_try_lookup(tsdn, emap, edata_last_get(edata), - &context2); + emap_full_alloc_ctx_try_lookup( + tsdn, emap, edata_last_get(edata), &context2); assert(context2.edata == NULL); } diff --git a/dep/jemalloc/src/eset.c b/dep/jemalloc/src/eset.c index 6f8f335e198b2..4a427d78d5bc9 100644 --- a/dep/jemalloc/src/eset.c +++ b/dep/jemalloc/src/eset.c @@ -48,32 +48,32 @@ eset_nbytes_get(eset_t *eset, pszind_t pind) { static void eset_stats_add(eset_t *eset, pszind_t pind, size_t sz) { - size_t cur = atomic_load_zu(&eset->bin_stats[pind].nextents, - ATOMIC_RELAXED); - atomic_store_zu(&eset->bin_stats[pind].nextents, cur + 1, - ATOMIC_RELAXED); + size_t cur = atomic_load_zu( + &eset->bin_stats[pind].nextents, ATOMIC_RELAXED); + atomic_store_zu( + &eset->bin_stats[pind].nextents, cur + 1, ATOMIC_RELAXED); cur = atomic_load_zu(&eset->bin_stats[pind].nbytes, ATOMIC_RELAXED); - atomic_store_zu(&eset->bin_stats[pind].nbytes, cur + sz, - ATOMIC_RELAXED); + atomic_store_zu( + &eset->bin_stats[pind].nbytes, cur + sz, ATOMIC_RELAXED); } static void eset_stats_sub(eset_t *eset, pszind_t pind, size_t sz) { - size_t cur = atomic_load_zu(&eset->bin_stats[pind].nextents, - ATOMIC_RELAXED); - atomic_store_zu(&eset->bin_stats[pind].nextents, cur - 1, - ATOMIC_RELAXED); + size_t cur = atomic_load_zu( + &eset->bin_stats[pind].nextents, ATOMIC_RELAXED); + atomic_store_zu( + &eset->bin_stats[pind].nextents, cur - 1, ATOMIC_RELAXED); cur = atomic_load_zu(&eset->bin_stats[pind].nbytes, ATOMIC_RELAXED); - atomic_store_zu(&eset->bin_stats[pind].nbytes, cur - sz, - ATOMIC_RELAXED); + atomic_store_zu( + &eset->bin_stats[pind].nbytes, cur - sz, ATOMIC_RELAXED); } void eset_insert(eset_t *eset, edata_t *edata) { assert(edata_state_get(edata) == eset->state); - size_t size = edata_size_get(edata); - size_t psz = sz_psz_quantize_floor(size); + size_t size = edata_size_get(edata); + size_t psz = sz_psz_quantize_floor(size); pszind_t pind = sz_psz2ind(psz); edata_cmp_summary_t edata_cmp_summary = edata_cmp_summary_get(edata); @@ -86,8 +86,9 @@ eset_insert(eset_t *eset, edata_t *edata) { * There's already a min element; update the summary if we're * about to insert a lower one. */ - if (edata_cmp_summary_comp(edata_cmp_summary, - eset->bins[pind].heap_min) < 0) { + if (edata_cmp_summary_comp( + edata_cmp_summary, eset->bins[pind].heap_min) + < 0) { eset->bins[pind].heap_min = edata_cmp_summary; } } @@ -104,19 +105,18 @@ eset_insert(eset_t *eset, edata_t *edata) { * don't need an atomic fetch-add; we can get by with a load followed by * a store. */ - size_t cur_eset_npages = - atomic_load_zu(&eset->npages, ATOMIC_RELAXED); - atomic_store_zu(&eset->npages, cur_eset_npages + npages, - ATOMIC_RELAXED); + size_t cur_eset_npages = atomic_load_zu(&eset->npages, ATOMIC_RELAXED); + atomic_store_zu( + &eset->npages, cur_eset_npages + npages, ATOMIC_RELAXED); } void eset_remove(eset_t *eset, edata_t *edata) { - assert(edata_state_get(edata) == eset->state || - edata_state_in_transition(edata_state_get(edata))); + assert(edata_state_get(edata) == eset->state + || edata_state_in_transition(edata_state_get(edata))); - size_t size = edata_size_get(edata); - size_t psz = sz_psz_quantize_floor(size); + size_t size = edata_size_get(edata); + size_t psz = sz_psz_quantize_floor(size); pszind_t pind = sz_psz2ind(psz); if (config_stats) { eset_stats_sub(eset, pind, size); @@ -136,8 +136,9 @@ eset_remove(eset_t *eset, edata_t *edata) { * summaries of the removed element and the min element should * compare equal. */ - if (edata_cmp_summary_comp(edata_cmp_summary, - eset->bins[pind].heap_min) == 0) { + if (edata_cmp_summary_comp( + edata_cmp_summary, eset->bins[pind].heap_min) + == 0) { eset->bins[pind].heap_min = edata_cmp_summary_get( edata_heap_first(&eset->bins[pind].heap)); } @@ -148,11 +149,77 @@ eset_remove(eset_t *eset, edata_t *edata) { * As in eset_insert, we hold eset->mtx and so don't need atomic * operations for updating eset->npages. */ - size_t cur_extents_npages = - atomic_load_zu(&eset->npages, ATOMIC_RELAXED); + size_t cur_extents_npages = atomic_load_zu( + &eset->npages, ATOMIC_RELAXED); assert(cur_extents_npages >= npages); - atomic_store_zu(&eset->npages, - cur_extents_npages - (size >> LG_PAGE), ATOMIC_RELAXED); + atomic_store_zu(&eset->npages, cur_extents_npages - (size >> LG_PAGE), + ATOMIC_RELAXED); +} + +static edata_t * +eset_enumerate_alignment_search( + eset_t *eset, size_t size, pszind_t bin_ind, size_t alignment) { + if (edata_heap_empty(&eset->bins[bin_ind].heap)) { + return NULL; + } + + edata_t *edata = NULL; + edata_heap_enumerate_helper_t helper; + edata_heap_enumerate_prepare(&eset->bins[bin_ind].heap, &helper, + ESET_ENUMERATE_MAX_NUM, sizeof(helper.bfs_queue) / sizeof(void *)); + while ((edata = edata_heap_enumerate_next( + &eset->bins[bin_ind].heap, &helper)) + != NULL) { + uintptr_t base = (uintptr_t)edata_base_get(edata); + size_t candidate_size = edata_size_get(edata); + if (candidate_size < size) { + continue; + } + + uintptr_t next_align = ALIGNMENT_CEILING( + (uintptr_t)base, PAGE_CEILING(alignment)); + if (base > next_align || base + candidate_size <= next_align) { + /* Overflow or not crossing the next alignment. */ + continue; + } + + size_t leadsize = next_align - base; + if (candidate_size - leadsize >= size) { + return edata; + } + } + + return NULL; +} + +static edata_t * +eset_enumerate_search(eset_t *eset, size_t size, pszind_t bin_ind, + bool exact_only, edata_cmp_summary_t *ret_summ) { + if (edata_heap_empty(&eset->bins[bin_ind].heap)) { + return NULL; + } + + edata_t *ret = NULL, *edata = NULL; + edata_heap_enumerate_helper_t helper; + edata_heap_enumerate_prepare(&eset->bins[bin_ind].heap, &helper, + ESET_ENUMERATE_MAX_NUM, sizeof(helper.bfs_queue) / sizeof(void *)); + while ((edata = edata_heap_enumerate_next( + &eset->bins[bin_ind].heap, &helper)) + != NULL) { + if ((!exact_only && edata_size_get(edata) >= size) + || (exact_only && edata_size_get(edata) == size)) { + edata_cmp_summary_t temp_summ = edata_cmp_summary_get( + edata); + if (ret == NULL + || edata_cmp_summary_comp(temp_summ, *ret_summ) + < 0) { + ret = edata; + *ret_summ = temp_summ; + } + } + } + + return ret; } /* @@ -160,24 +227,35 @@ eset_remove(eset_t *eset, edata_t *edata) { * requirement. For each size, try only the first extent in the heap. */ static edata_t * -eset_fit_alignment(eset_t *eset, size_t min_size, size_t max_size, - size_t alignment) { - pszind_t pind = sz_psz2ind(sz_psz_quantize_ceil(min_size)); - pszind_t pind_max = sz_psz2ind(sz_psz_quantize_ceil(max_size)); +eset_fit_alignment( + eset_t *eset, size_t min_size, size_t max_size, size_t alignment) { + pszind_t pind = sz_psz2ind(sz_psz_quantize_ceil(min_size)); + pszind_t pind_max = sz_psz2ind(sz_psz_quantize_ceil(max_size)); + + /* See comments in eset_first_fit for why we enumerate search below. */ + pszind_t pind_prev = sz_psz2ind(sz_psz_quantize_floor(min_size)); + if (sz_large_size_classes_disabled() && pind != pind_prev) { + edata_t *ret = NULL; + ret = eset_enumerate_alignment_search( + eset, min_size, pind_prev, alignment); + if (ret != NULL) { + return ret; + } + } for (pszind_t i = - (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)pind); - i < pind_max; - i = (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)i + 1)) { + (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)pind); + i < pind_max; + i = (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)i + 1)) { assert(i < SC_NPSIZES); assert(!edata_heap_empty(&eset->bins[i].heap)); - edata_t *edata = edata_heap_first(&eset->bins[i].heap); + edata_t *edata = edata_heap_first(&eset->bins[i].heap); uintptr_t base = (uintptr_t)edata_base_get(edata); - size_t candidate_size = edata_size_get(edata); + size_t candidate_size = edata_size_get(edata); assert(candidate_size >= min_size); - uintptr_t next_align = ALIGNMENT_CEILING((uintptr_t)base, - PAGE_CEILING(alignment)); + uintptr_t next_align = ALIGNMENT_CEILING( + (uintptr_t)base, PAGE_CEILING(alignment)); if (base > next_align || base + candidate_size <= next_align) { /* Overflow or not crossing the next alignment. */ continue; @@ -203,22 +281,58 @@ eset_fit_alignment(eset_t *eset, size_t min_size, size_t max_size, * for others. */ static edata_t * -eset_first_fit(eset_t *eset, size_t size, bool exact_only, - unsigned lg_max_fit) { - edata_t *ret = NULL; +eset_first_fit( + eset_t *eset, size_t size, bool exact_only, unsigned lg_max_fit) { + edata_t *ret = NULL; edata_cmp_summary_t ret_summ JEMALLOC_CC_SILENCE_INIT({0}); pszind_t pind = sz_psz2ind(sz_psz_quantize_ceil(size)); if (exact_only) { - return edata_heap_empty(&eset->bins[pind].heap) ? NULL : - edata_heap_first(&eset->bins[pind].heap); + if (sz_large_size_classes_disabled()) { + pszind_t pind_prev = sz_psz2ind( + sz_psz_quantize_floor(size)); + return eset_enumerate_search(eset, size, pind_prev, + /* exact_only */ true, &ret_summ); + } else { + return edata_heap_empty(&eset->bins[pind].heap) + ? NULL + : edata_heap_first(&eset->bins[pind].heap); + } + } + + /* + * Each element in the eset->bins is a heap corresponding to a size + * class. When sz_large_size_classes_disabled() is false, all heaps after + * pind (including pind itself) will surely satisfy the rquests while + * heaps before pind cannot satisfy the request because usize is + * calculated based on size classes then. However, when + * sz_large_size_classes_disabled() is true, usize is calculated by + * ceiling user requested size to the closest multiple of PAGE. This + * means in the heap before pind, i.e., pind_prev, there may exist + * extents able to satisfy the request and we should enumerate the heap + * when pind_prev != pind. + * + * For example, when PAGE=4KB and the user requested size is 1MB + 4KB, + * usize would be 1.25MB when sz_large_size_classes_disabled() is false. + * pind points to the heap containing extents ranging in + * [1.25MB, 1.5MB). Thus, searching starting from pind will not miss + * any candidates. When sz_large_size_classes_disabled() is true, the + * usize would be 1MB + 4KB and pind still points to the same heap. + * In this case, the heap pind_prev points to, which contains extents + * in the range [1MB, 1.25MB), may contain candidates satisfying the + * usize and thus should be enumerated. + */ + pszind_t pind_prev = sz_psz2ind(sz_psz_quantize_floor(size)); + if (sz_large_size_classes_disabled() && pind != pind_prev) { + ret = eset_enumerate_search(eset, size, pind_prev, + /* exact_only */ false, &ret_summ); } for (pszind_t i = - (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)pind); - i < ESET_NPSIZES; - i = (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)i + 1)) { + (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)pind); + i < ESET_NPSIZES; + i = (pszind_t)fb_ffs(eset->bitmap, ESET_NPSIZES, (size_t)i + 1)) { assert(!edata_heap_empty(&eset->bins[i].heap)); if (lg_max_fit == SC_PTR_BITS) { /* @@ -231,8 +345,9 @@ eset_first_fit(eset_t *eset, size_t size, bool exact_only, if ((sz_pind2sz(i) >> lg_max_fit) > size) { break; } - if (ret == NULL || edata_cmp_summary_comp( - eset->bins[i].heap_min, ret_summ) < 0) { + if (ret == NULL + || edata_cmp_summary_comp(eset->bins[i].heap_min, ret_summ) + < 0) { /* * We grab the edata as early as possible, even though * we might change it later. Practically, a large @@ -243,9 +358,10 @@ eset_first_fit(eset_t *eset, size_t size, bool exact_only, edata_t *edata = edata_heap_first(&eset->bins[i].heap); assert(edata_size_get(edata) >= size); assert(ret == NULL || edata_snad_comp(edata, ret) < 0); - assert(ret == NULL || edata_cmp_summary_comp( - eset->bins[i].heap_min, - edata_cmp_summary_get(edata)) == 0); + assert(ret == NULL + || edata_cmp_summary_comp(eset->bins[i].heap_min, + edata_cmp_summary_get(edata)) + == 0); ret = edata; ret_summ = eset->bins[i].heap_min; } diff --git a/dep/jemalloc/src/exp_grow.c b/dep/jemalloc/src/exp_grow.c index 386471f49fdec..955823a1d3bef 100644 --- a/dep/jemalloc/src/exp_grow.c +++ b/dep/jemalloc/src/exp_grow.c @@ -3,6 +3,12 @@ void exp_grow_init(exp_grow_t *exp_grow) { - exp_grow->next = sz_psz2ind(HUGEPAGE); + /* + * Enforce a minimal of 2M grow, which is convenient for the huge page + * use cases. Avoid using HUGEPAGE as the value though, because on some + * platforms it can be very large (e.g. 512M on aarch64 w/ 64K pages). + */ + const size_t min_grow = (size_t)2 << 20; + exp_grow->next = sz_psz2ind(min_grow); exp_grow->limit = sz_psz2ind(SC_LARGE_MAXCLASS); } diff --git a/dep/jemalloc/src/extent.c b/dep/jemalloc/src/extent.c index cf3d1f3112df7..118c8785fb6dc 100644 --- a/dep/jemalloc/src/extent.c +++ b/dep/jemalloc/src/extent.c @@ -12,6 +12,14 @@ /* Data. */ size_t opt_lg_extent_max_active_fit = LG_EXTENT_MAX_ACTIVE_FIT_DEFAULT; +/* This option is intended for kernel tuning, not app tuning. */ +size_t opt_process_madvise_max_batch = +#ifdef JEMALLOC_HAVE_PROCESS_MADVISE + PROCESS_MADVISE_MAX_BATCH_DEFAULT; +#else + 0 +#endif +; static bool extent_commit_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length, bool growing_retained); @@ -21,8 +29,8 @@ static bool extent_purge_forced_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length, bool growing_retained); static edata_t *extent_split_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata, size_t size_a, size_t size_b, bool holding_core_locks); -static bool extent_merge_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *a, edata_t *b, bool holding_core_locks); +static bool extent_merge_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, + edata_t *a, edata_t *b, bool holding_core_locks); /* Used exclusively for gdump triggering. */ static atomic_zu_t curpages; @@ -34,7 +42,7 @@ static atomic_zu_t highpages; * definition. */ -static void extent_deregister(tsdn_t *tsdn, pac_t *pac, edata_t *edata); +static void extent_deregister(tsdn_t *tsdn, pac_t *pac, edata_t *edata); static edata_t *extent_recycle(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *expand_edata, size_t usize, size_t alignment, bool zero, bool *commit, bool growing_retained, bool guarded); @@ -43,6 +51,8 @@ static edata_t *extent_try_coalesce(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, static edata_t *extent_alloc_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *expand_edata, size_t size, size_t alignment, bool zero, bool *commit, bool guarded); +static bool extent_decommit_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, + edata_t *edata, size_t offset, size_t length); /******************************************************************************/ @@ -63,8 +73,8 @@ extent_try_delayed_coalesce(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, emap_update_edata_state(tsdn, pac->emap, edata, extent_state_active); bool coalesced; - edata = extent_try_coalesce(tsdn, pac, ehooks, ecache, - edata, &coalesced); + edata = extent_try_coalesce( + tsdn, pac, ehooks, ecache, edata, &coalesced); emap_update_edata_state(tsdn, pac->emap, edata, ecache->state); if (!coalesced) { @@ -80,10 +90,10 @@ ecache_alloc(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, bool guarded) { assert(size != 0); assert(alignment != 0); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); - bool commit = true; + bool commit = true; edata_t *edata = extent_recycle(tsdn, pac, ehooks, ecache, expand_edata, size, alignment, zero, &commit, false, guarded); assert(edata == NULL || edata_pai_get(edata) == EXTENT_PAI_PAC); @@ -97,10 +107,10 @@ ecache_alloc_grow(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, bool guarded) { assert(size != 0); assert(alignment != 0); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); - bool commit = true; + bool commit = true; edata_t *edata = extent_alloc_retained(tsdn, pac, ehooks, expand_edata, size, alignment, zero, &commit, guarded); if (edata == NULL) { @@ -121,10 +131,11 @@ ecache_alloc_grow(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, */ return NULL; } - void *new_addr = (expand_edata == NULL) ? NULL : - edata_past_get(expand_edata); - edata = extent_alloc_wrapper(tsdn, pac, ehooks, new_addr, - size, alignment, zero, &commit, + void *new_addr = (expand_edata == NULL) + ? NULL + : edata_past_get(expand_edata); + edata = extent_alloc_wrapper(tsdn, pac, ehooks, new_addr, size, + alignment, zero, &commit, /* growing_retained */ false); } @@ -138,8 +149,8 @@ ecache_dalloc(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, assert(edata_base_get(edata) != NULL); assert(edata_size_get(edata) != 0); assert(edata_pai_get(edata) == EXTENT_PAI_PAC); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); edata_addr_set(edata, edata_base_get(edata)); edata_zeroed_set(edata, false); @@ -148,8 +159,8 @@ ecache_dalloc(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, } edata_t * -ecache_evict(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - ecache_t *ecache, size_t npages_min) { +ecache_evict(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, + size_t npages_min) { malloc_mutex_lock(tsdn, &ecache->mtx); /* @@ -184,8 +195,8 @@ ecache_evict(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, break; } /* Try to coalesce. */ - if (extent_try_delayed_coalesce(tsdn, pac, ehooks, ecache, - edata)) { + if (extent_try_delayed_coalesce( + tsdn, pac, ehooks, ecache, edata)) { break; } /* @@ -199,16 +210,17 @@ ecache_evict(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, * concurrent operations. */ switch (ecache->state) { - case extent_state_active: - not_reached(); case extent_state_dirty: case extent_state_muzzy: - emap_update_edata_state(tsdn, pac->emap, edata, - extent_state_active); + emap_update_edata_state( + tsdn, pac->emap, edata, extent_state_active); break; case extent_state_retained: extent_deregister(tsdn, pac, edata); break; + case extent_state_active: + case extent_state_transition: + case extent_state_merging: default: not_reached(); } @@ -227,16 +239,16 @@ extents_abandon_vm(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *edata, bool growing_retained) { size_t sz = edata_size_get(edata); if (config_stats) { - atomic_fetch_add_zu(&pac->stats->abandoned_vm, sz, - ATOMIC_RELAXED); + atomic_fetch_add_zu( + &pac->stats->abandoned_vm, sz, ATOMIC_RELAXED); } /* * Leak extent after making sure its pages have already been purged, so * that this is only a virtual memory leak. */ if (ecache->state == extent_state_dirty) { - if (extent_purge_lazy_impl(tsdn, ehooks, edata, 0, sz, - growing_retained)) { + if (extent_purge_lazy_impl( + tsdn, ehooks, edata, 0, sz, growing_retained)) { extent_purge_forced_impl(tsdn, ehooks, edata, 0, edata_size_get(edata), growing_retained); } @@ -245,20 +257,20 @@ extents_abandon_vm(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, } static void -extent_deactivate_locked_impl(tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, - edata_t *edata) { +extent_deactivate_locked_impl( + tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, edata_t *edata) { malloc_mutex_assert_owner(tsdn, &ecache->mtx); assert(edata_arena_ind_get(edata) == ecache_ind_get(ecache)); emap_update_edata_state(tsdn, pac->emap, edata, ecache->state); - eset_t *eset = edata_guarded_get(edata) ? &ecache->guarded_eset : - &ecache->eset; + eset_t *eset = edata_guarded_get(edata) ? &ecache->guarded_eset + : &ecache->eset; eset_insert(eset, edata); } static void -extent_deactivate_locked(tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, - edata_t *edata) { +extent_deactivate_locked( + tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, edata_t *edata) { assert(edata_state_get(edata) == extent_state_active); extent_deactivate_locked_impl(tsdn, pac, ecache, edata); } @@ -271,11 +283,11 @@ extent_deactivate_check_state_locked(tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, } static void -extent_activate_locked(tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, eset_t *eset, - edata_t *edata) { +extent_activate_locked( + tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, eset_t *eset, edata_t *edata) { assert(edata_arena_ind_get(edata) == ecache_ind_get(ecache)); - assert(edata_state_get(edata) == ecache->state || - edata_state_get(edata) == extent_state_merging); + assert(edata_state_get(edata) == ecache->state + || edata_state_get(edata) == extent_state_merging); eset_remove(eset, edata); emap_update_edata_state(tsdn, pac->emap, edata, extent_state_active); @@ -285,16 +297,18 @@ void extent_gdump_add(tsdn_t *tsdn, const edata_t *edata) { cassert(config_prof); /* prof_gdump() requirement. */ - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); if (opt_prof && edata_state_get(edata) == extent_state_active) { size_t nadd = edata_size_get(edata) >> LG_PAGE; - size_t cur = atomic_fetch_add_zu(&curpages, nadd, - ATOMIC_RELAXED) + nadd; + size_t cur = atomic_fetch_add_zu( + &curpages, nadd, ATOMIC_RELAXED) + + nadd; size_t high = atomic_load_zu(&highpages, ATOMIC_RELAXED); - while (cur > high && !atomic_compare_exchange_weak_zu( - &highpages, &high, cur, ATOMIC_RELAXED, ATOMIC_RELAXED)) { + while (cur > high + && !atomic_compare_exchange_weak_zu(&highpages, &high, cur, + ATOMIC_RELAXED, ATOMIC_RELAXED)) { /* * Don't refresh cur, because it may have decreased * since this thread lost the highpages update race. @@ -326,7 +340,7 @@ extent_register_impl(tsdn_t *tsdn, pac_t *pac, edata_t *edata, bool gdump_add) { * prevents other threads from accessing the edata. */ if (emap_register_boundary(tsdn, pac->emap, edata, SC_NSIZES, - /* slab */ false)) { + /* slab */ false)) { return true; } @@ -357,8 +371,7 @@ extent_reregister(tsdn_t *tsdn, pac_t *pac, edata_t *edata) { * Removes all pointers to the given extent from the global rtree. */ static void -extent_deregister_impl(tsdn_t *tsdn, pac_t *pac, edata_t *edata, - bool gdump) { +extent_deregister_impl(tsdn_t *tsdn, pac_t *pac, edata_t *edata, bool gdump) { emap_deregister_boundary(tsdn, pac->emap, edata); if (config_prof && gdump) { @@ -372,8 +385,7 @@ extent_deregister(tsdn_t *tsdn, pac_t *pac, edata_t *edata) { } static void -extent_deregister_no_gdump_sub(tsdn_t *tsdn, pac_t *pac, - edata_t *edata) { +extent_deregister_no_gdump_sub(tsdn_t *tsdn, pac_t *pac, edata_t *edata) { extent_deregister_impl(tsdn, pac, edata, false); } @@ -400,15 +412,16 @@ extent_recycle_extract(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, } edata_t *edata; - eset_t *eset = guarded ? &ecache->guarded_eset : &ecache->eset; + eset_t *eset = guarded ? &ecache->guarded_eset : &ecache->eset; if (expand_edata != NULL) { edata = emap_try_acquire_edata_neighbor_expand(tsdn, pac->emap, expand_edata, EXTENT_PAI_PAC, ecache->state); if (edata != NULL) { + /* NOLINTNEXTLINE(readability-suspicious-call-argument) */ extent_assert_can_expand(expand_edata, edata); if (edata_size_get(edata) < size) { - emap_release_edata(tsdn, pac->emap, edata, - ecache->state); + emap_release_edata( + tsdn, pac->emap, edata, ecache->state); edata = NULL; } } @@ -423,7 +436,8 @@ extent_recycle_extract(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, * put a cap on how big an extent we can split for a request. */ unsigned lg_max_fit = ecache->delay_coalesce - ? (unsigned)opt_lg_extent_max_active_fit : SC_PTR_BITS; + ? (unsigned)opt_lg_extent_max_active_fit + : SC_PTR_BITS; /* * If split and merge are not allowed (Windows w/o retain), try @@ -434,8 +448,7 @@ extent_recycle_extract(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, * allocations. */ bool exact_only = (!maps_coalesce && !opt_retain) || guarded; - edata = eset_fit(eset, size, alignment, exact_only, - lg_max_fit); + edata = eset_fit(eset, size, alignment, exact_only, lg_max_fit); } if (edata == NULL) { return NULL; @@ -477,10 +490,11 @@ extent_split_interior(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, /* The result of splitting, in case of success. */ edata_t **edata, edata_t **lead, edata_t **trail, /* The mess to clean up, in case of error. */ - edata_t **to_leak, edata_t **to_salvage, - edata_t *expand_edata, size_t size, size_t alignment) { + edata_t **to_leak, edata_t **to_salvage, edata_t *expand_edata, size_t size, + size_t alignment) { size_t leadsize = ALIGNMENT_CEILING((uintptr_t)edata_base_get(*edata), - PAGE_CEILING(alignment)) - (uintptr_t)edata_base_get(*edata); + PAGE_CEILING(alignment)) + - (uintptr_t)edata_base_get(*edata); assert(expand_edata == NULL || leadsize == 0); if (edata_size_get(*edata) < leadsize + size) { return extent_split_interior_cant_alloc; @@ -535,14 +549,14 @@ extent_recycle_split(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, assert(!edata_guarded_get(edata) || size == edata_size_get(edata)); malloc_mutex_assert_owner(tsdn, &ecache->mtx); - edata_t *lead; - edata_t *trail; - edata_t *to_leak JEMALLOC_CC_SILENCE_INIT(NULL); + edata_t *lead; + edata_t *trail; + edata_t *to_leak JEMALLOC_CC_SILENCE_INIT(NULL); edata_t *to_salvage JEMALLOC_CC_SILENCE_INIT(NULL); - extent_split_interior_result_t result = extent_split_interior( - tsdn, pac, ehooks, &edata, &lead, &trail, &to_leak, &to_salvage, - expand_edata, size, alignment); + extent_split_interior_result_t result = extent_split_interior(tsdn, pac, + ehooks, &edata, &lead, &trail, &to_leak, &to_salvage, expand_edata, + size, alignment); if (!maps_coalesce && result != extent_split_interior_ok && !opt_retain) { @@ -603,8 +617,8 @@ extent_recycle(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, malloc_mutex_lock(tsdn, &ecache->mtx); - edata_t *edata = extent_recycle_extract(tsdn, pac, ehooks, ecache, - expand_edata, size, alignment, guarded); + edata_t *edata = extent_recycle_extract( + tsdn, pac, ehooks, ecache, expand_edata, size, alignment, guarded); if (edata == NULL) { malloc_mutex_unlock(tsdn, &ecache->mtx); return NULL; @@ -618,8 +632,8 @@ extent_recycle(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, } assert(edata_state_get(edata) == extent_state_active); - if (extent_commit_zero(tsdn, ehooks, edata, *commit, zero, - growing_retained)) { + if (extent_commit_zero( + tsdn, ehooks, edata, *commit, zero, growing_retained)) { extent_record(tsdn, pac, ehooks, ecache, edata); return NULL; } @@ -635,14 +649,65 @@ extent_recycle(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, return edata; } +static void +extent_handle_huge_arena_thp(tsdn_t *tsdn, pac_thp_t *pac_thp, + edata_cache_t *edata_cache, void *addr, size_t size) { + assert(opt_huge_arena_pac_thp); + assert(opt_metadata_thp != metadata_thp_disabled); + /* + * With rounding up the given memory region [addr, addr + size) to + * the huge page region that it crosses boundaries with, + * essentially we're aligning the start addr down and the end addr + * up to the nearest HUGEPAGE boundaries. The memory overhead can + * be within the range of [0, 2 * (HUGEPAGE - 1)]. + */ + void *huge_addr = HUGEPAGE_ADDR2BASE(addr); + void *huge_end = HUGEPAGE_ADDR2BASE( + (void *)((byte_t *)addr + (uintptr_t)(size + HUGEPAGE - 1))); + assert((uintptr_t)huge_end > (uintptr_t)huge_addr); + + size_t huge_size = (uintptr_t)huge_end - (uintptr_t)huge_addr; + assert( + huge_size <= (size + ((HUGEPAGE - 1) << 1)) && huge_size >= size); + + if (opt_metadata_thp == metadata_thp_always + || pac_thp->auto_thp_switched) { + pages_huge(huge_addr, huge_size); + } else { + assert(opt_metadata_thp == metadata_thp_auto); + edata_t *edata = edata_cache_get(tsdn, edata_cache); + + malloc_mutex_lock(tsdn, &pac_thp->lock); + /* Can happen if the switch is turned on during edata retrieval. */ + if (pac_thp->auto_thp_switched) { + malloc_mutex_unlock(tsdn, &pac_thp->lock); + pages_huge(huge_addr, huge_size); + if (edata != NULL) { + edata_cache_put(tsdn, edata_cache, edata); + } + } else { + if (edata != NULL) { + edata_addr_set(edata, huge_addr); + edata_size_set(edata, huge_size); + edata_list_active_append( + &pac_thp->thp_lazy_list, edata); + atomic_fetch_add_u( + &pac_thp->n_thp_lazy, 1, ATOMIC_RELAXED); + } + malloc_mutex_unlock(tsdn, &pac_thp->lock); + } + malloc_mutex_assert_not_owner(tsdn, &pac_thp->lock); + } +} + /* * If virtual memory is retained, create increasingly larger extents from which * to split requested extents in order to limit the total number of disjoint * virtual memory ranges retained by each shard. */ static edata_t * -extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - size_t size, size_t alignment, bool zero, bool *commit) { +extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, size_t size, + size_t alignment, bool zero, bool *commit) { malloc_mutex_assert_owner(tsdn, &pac->grow_mtx); size_t alloc_size_min = size + PAGE_CEILING(alignment) - PAGE; @@ -654,10 +719,10 @@ extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, * Find the next extent size in the series that would be large enough to * satisfy this request. */ - size_t alloc_size; + size_t alloc_size; pszind_t exp_grow_skip; - bool err = exp_grow_size_prepare(&pac->exp_grow, alloc_size_min, - &alloc_size, &exp_grow_skip); + bool err = exp_grow_size_prepare( + &pac->exp_grow, alloc_size_min, &alloc_size, &exp_grow_skip); if (err) { goto label_err; } @@ -669,18 +734,18 @@ extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, bool zeroed = false; bool committed = false; - void *ptr = ehooks_alloc(tsdn, ehooks, NULL, alloc_size, PAGE, &zeroed, - &committed); + void *ptr = ehooks_alloc( + tsdn, ehooks, NULL, alloc_size, PAGE, &zeroed, &committed); if (ptr == NULL) { edata_cache_put(tsdn, pac->edata_cache, edata); goto label_err; } - edata_init(edata, ecache_ind_get(&pac->ecache_retained), ptr, - alloc_size, false, SC_NSIZES, extent_sn_next(pac), - extent_state_active, zeroed, committed, EXTENT_PAI_PAC, - EXTENT_IS_HEAD); + unsigned ind = ecache_ind_get(&pac->ecache_retained); + edata_init(edata, ind, ptr, alloc_size, false, SC_NSIZES, + extent_sn_next(pac), extent_state_active, zeroed, committed, + EXTENT_PAI_PAC, EXTENT_IS_HEAD); if (extent_register_no_gdump_add(tsdn, pac, edata)) { edata_cache_put(tsdn, pac->edata_cache, edata); @@ -691,23 +756,23 @@ extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, *commit = true; } - edata_t *lead; - edata_t *trail; - edata_t *to_leak JEMALLOC_CC_SILENCE_INIT(NULL); + edata_t *lead; + edata_t *trail; + edata_t *to_leak JEMALLOC_CC_SILENCE_INIT(NULL); edata_t *to_salvage JEMALLOC_CC_SILENCE_INIT(NULL); - extent_split_interior_result_t result = extent_split_interior(tsdn, - pac, ehooks, &edata, &lead, &trail, &to_leak, &to_salvage, NULL, - size, alignment); + extent_split_interior_result_t result = extent_split_interior(tsdn, pac, + ehooks, &edata, &lead, &trail, &to_leak, &to_salvage, NULL, size, + alignment); if (result == extent_split_interior_ok) { if (lead != NULL) { - extent_record(tsdn, pac, ehooks, &pac->ecache_retained, - lead); + extent_record( + tsdn, pac, ehooks, &pac->ecache_retained, lead); } if (trail != NULL) { - extent_record(tsdn, pac, ehooks, &pac->ecache_retained, - trail); + extent_record( + tsdn, pac, ehooks, &pac->ecache_retained, trail); } } else { /* @@ -731,16 +796,16 @@ extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, } if (*commit && !edata_committed_get(edata)) { - if (extent_commit_impl(tsdn, ehooks, edata, 0, - edata_size_get(edata), true)) { - extent_record(tsdn, pac, ehooks, - &pac->ecache_retained, edata); + if (extent_commit_impl( + tsdn, ehooks, edata, 0, edata_size_get(edata), true)) { + extent_record( + tsdn, pac, ehooks, &pac->ecache_retained, edata); goto label_err; } /* A successful commit should return zeroed memory. */ if (config_debug) { - void *addr = edata_addr_get(edata); - size_t *p = (size_t *)(uintptr_t)addr; + void *addr = edata_addr_get(edata); + size_t *p = (size_t *)addr; /* Check the first page only. */ for (size_t i = 0; i < PAGE / sizeof(size_t); i++) { assert(p[i] == 0); @@ -756,13 +821,23 @@ extent_grow_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, exp_grow_size_commit(&pac->exp_grow, exp_grow_skip); malloc_mutex_unlock(tsdn, &pac->grow_mtx); + if (huge_arena_pac_thp.thp_madvise) { + /* Avoid using HUGEPAGE when the grow size is less than HUGEPAGE. */ + if (ind != 0 && ind == huge_arena_ind + && ehooks_are_default(ehooks) + && likely(alloc_size >= HUGEPAGE)) { + extent_handle_huge_arena_thp(tsdn, &huge_arena_pac_thp, + pac->edata_cache, ptr, alloc_size); + } + } + if (config_prof) { /* Adjust gdump stats now that extent is final size. */ extent_gdump_add(tsdn, edata); } if (zero && !edata_zeroed_get(edata)) { - ehooks_zero(tsdn, ehooks, edata_base_get(edata), - edata_size_get(edata)); + ehooks_zero( + tsdn, ehooks, edata_base_get(edata), edata_size_get(edata)); } return edata; label_err: @@ -788,8 +863,8 @@ extent_alloc_retained(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, extent_gdump_add(tsdn, edata); } } else if (opt_retain && expand_edata == NULL && !guarded) { - edata = extent_grow_retained(tsdn, pac, ehooks, size, - alignment, zero, commit); + edata = extent_grow_retained( + tsdn, pac, ehooks, size, alignment, zero, commit); /* extent_grow_retained() always releases pac->grow_mtx. */ } else { malloc_mutex_unlock(tsdn, &pac->grow_mtx); @@ -805,12 +880,12 @@ extent_coalesce(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, extent_assert_can_coalesce(inner, outer); eset_remove(&ecache->eset, outer); - bool err = extent_merge_impl(tsdn, pac, ehooks, - forward ? inner : outer, forward ? outer : inner, + bool err = extent_merge_impl(tsdn, pac, ehooks, forward ? inner : outer, + forward ? outer : inner, /* holding_core_locks */ true); if (err) { - extent_deactivate_check_state_locked(tsdn, pac, ecache, outer, - extent_state_merging); + extent_deactivate_check_state_locked( + tsdn, pac, ecache, outer, extent_state_merging); } return err; @@ -818,8 +893,10 @@ extent_coalesce(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, static edata_t * extent_try_coalesce_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - ecache_t *ecache, edata_t *edata, bool *coalesced) { + ecache_t *ecache, edata_t *edata, size_t max_size, bool *coalesced) { assert(!edata_guarded_get(edata)); + assert(coalesced != NULL); + *coalesced = false; /* * We avoid checking / locking inactive neighbors for large size * classes, since they are eagerly coalesced on deallocation which can @@ -836,31 +913,47 @@ extent_try_coalesce_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, /* Try to coalesce forward. */ edata_t *next = emap_try_acquire_edata_neighbor(tsdn, pac->emap, edata, EXTENT_PAI_PAC, ecache->state, /* forward */ true); + size_t max_next_neighbor = max_size > edata_size_get(edata) + ? max_size - edata_size_get(edata) + : 0; if (next != NULL) { - if (!extent_coalesce(tsdn, pac, ehooks, ecache, edata, - next, true)) { - if (ecache->delay_coalesce) { - /* Do minimal coalescing. */ - *coalesced = true; - return edata; + if (edata_size_get(next) > max_next_neighbor) { + emap_release_edata( + tsdn, pac->emap, next, ecache->state); + } else { + if (!extent_coalesce(tsdn, pac, ehooks, ecache, + edata, next, true)) { + if (ecache->delay_coalesce) { + /* Do minimal coalescing. */ + *coalesced = true; + return edata; + } + again = true; } - again = true; } } /* Try to coalesce backward. */ edata_t *prev = emap_try_acquire_edata_neighbor(tsdn, pac->emap, edata, EXTENT_PAI_PAC, ecache->state, /* forward */ false); + size_t max_prev_neighbor = max_size > edata_size_get(edata) + ? max_size - edata_size_get(edata) + : 0; if (prev != NULL) { - if (!extent_coalesce(tsdn, pac, ehooks, ecache, edata, - prev, false)) { - edata = prev; - if (ecache->delay_coalesce) { - /* Do minimal coalescing. */ - *coalesced = true; - return edata; + if (edata_size_get(prev) > max_prev_neighbor) { + emap_release_edata( + tsdn, pac->emap, prev, ecache->state); + } else { + if (!extent_coalesce(tsdn, pac, ehooks, ecache, + edata, prev, false)) { + edata = prev; + if (ecache->delay_coalesce) { + /* Do minimal coalescing. */ + *coalesced = true; + return edata; + } + again = true; } - again = true; } } } while (again); @@ -874,36 +967,33 @@ extent_try_coalesce_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, static edata_t * extent_try_coalesce(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *edata, bool *coalesced) { - return extent_try_coalesce_impl(tsdn, pac, ehooks, ecache, edata, - coalesced); + return extent_try_coalesce_impl( + tsdn, pac, ehooks, ecache, edata, SC_LARGE_MAXCLASS, coalesced); } static edata_t * extent_try_coalesce_large(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - ecache_t *ecache, edata_t *edata, bool *coalesced) { - return extent_try_coalesce_impl(tsdn, pac, ehooks, ecache, edata, - coalesced); + ecache_t *ecache, edata_t *edata, size_t max_size, bool *coalesced) { + return extent_try_coalesce_impl( + tsdn, pac, ehooks, ecache, edata, max_size, coalesced); } /* Purge a single extent to retained / unmapped directly. */ static void -extent_maximally_purge(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata) { +extent_maximally_purge( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { size_t extent_size = edata_size_get(edata); extent_dalloc_wrapper(tsdn, pac, ehooks, edata); if (config_stats) { /* Update stats accordingly. */ LOCKEDINT_MTX_LOCK(tsdn, *pac->stats_mtx); - locked_inc_u64(tsdn, - LOCKEDINT_MTX(*pac->stats_mtx), + locked_inc_u64(tsdn, LOCKEDINT_MTX(*pac->stats_mtx), &pac->stats->decay_dirty.nmadvise, 1); - locked_inc_u64(tsdn, - LOCKEDINT_MTX(*pac->stats_mtx), - &pac->stats->decay_dirty.purged, - extent_size >> LG_PAGE); + locked_inc_u64(tsdn, LOCKEDINT_MTX(*pac->stats_mtx), + &pac->stats->decay_dirty.purged, extent_size >> LG_PAGE); LOCKEDINT_MTX_UNLOCK(tsdn, *pac->stats_mtx); - atomic_fetch_sub_zu(&pac->stats->pac_mapped, extent_size, - ATOMIC_RELAXED); + atomic_fetch_sub_zu( + &pac->stats->pac_mapped, extent_size, ATOMIC_RELAXED); } } @@ -914,9 +1004,9 @@ extent_maximally_purge(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, void extent_record(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, edata_t *edata) { - assert((ecache->state != extent_state_dirty && - ecache->state != extent_state_muzzy) || - !edata_zeroed_get(edata)); + assert((ecache->state != extent_state_dirty + && ecache->state != extent_state_muzzy) + || !edata_zeroed_get(edata)); malloc_mutex_lock(tsdn, &ecache->mtx); @@ -926,19 +1016,49 @@ extent_record(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, goto label_skip_coalesce; } if (!ecache->delay_coalesce) { - edata = extent_try_coalesce(tsdn, pac, ehooks, ecache, edata, - NULL); + bool coalesced_unused; + edata = extent_try_coalesce( + tsdn, pac, ehooks, ecache, edata, &coalesced_unused); } else if (edata_size_get(edata) >= SC_LARGE_MINCLASS) { assert(ecache == &pac->ecache_dirty); /* Always coalesce large extents eagerly. */ - bool coalesced; + /** + * Maximum size limit (max_size) for large extents waiting to be coalesced + * in dirty ecache. + * + * When set to a non-zero value, this parameter restricts the maximum size + * of large extents after coalescing. If the combined size of two extents + * would exceed this threshold, the coalescing operation is skipped. + * + * This improves dirty ecache reuse efficiency by: + * - Maintaining appropriately sized extents that match common allocation requests + * - Limiting large extent coalescence to prevent overly large extents that are + * less likely to be reused efficiently + * - Setting lg_max_coalesce for large extent merging scenarios, similar to how + * lg_max_fit is used during extent reuse + * + * Note that during extent decay/purge operations, no coalescing restrictions + * are applied to dirty ecache despite the delay_coalesce setting. This ensures + * that while improving dirty ecache reuse efficiency, we don't compromise + * the final coalescing that happens during the transition from dirty ecache + * to muzzy/retained ecache states. + */ + unsigned lg_max_coalesce = (unsigned) + opt_lg_extent_max_active_fit; + size_t edata_size = edata_size_get(edata); + size_t max_size = (SC_LARGE_MAXCLASS >> lg_max_coalesce) + > edata_size + ? (edata_size << lg_max_coalesce) + : SC_LARGE_MAXCLASS; + bool coalesced; do { assert(edata_state_get(edata) == extent_state_active); edata = extent_try_coalesce_large(tsdn, pac, ehooks, - ecache, edata, &coalesced); + ecache, edata, max_size, &coalesced); } while (coalesced); - if (edata_size_get(edata) >= - atomic_load_zu(&pac->oversize_threshold, ATOMIC_RELAXED) + if (edata_size_get(edata) >= atomic_load_zu( + &pac->oversize_threshold, ATOMIC_RELAXED) + && !background_thread_enabled() && extent_may_force_decay(pac)) { /* Shortcut to purge the oversize extent eagerly. */ malloc_mutex_unlock(tsdn, &ecache->mtx); @@ -953,10 +1073,9 @@ extent_record(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, ecache_t *ecache, } void -extent_dalloc_gap(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); +extent_dalloc_gap(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); if (extent_register(tsdn, pac, edata)) { edata_cache_put(tsdn, pac->edata_cache, edata); @@ -966,14 +1085,14 @@ extent_dalloc_gap(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, } static bool -extent_dalloc_wrapper_try(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata) { +extent_dalloc_wrapper_try( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { bool err; assert(edata_base_get(edata) != NULL); assert(edata_size_get(edata) != 0); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); edata_addr_set(edata, edata_base_get(edata)); @@ -989,8 +1108,8 @@ extent_dalloc_wrapper_try(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, } edata_t * -extent_alloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - void *new_addr, size_t size, size_t alignment, bool zero, bool *commit, +extent_alloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, void *new_addr, + size_t size, size_t alignment, bool zero, bool *commit, bool growing_retained) { witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, growing_retained ? 1 : 0); @@ -1000,14 +1119,14 @@ extent_alloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, return NULL; } size_t palignment = ALIGNMENT_CEILING(alignment, PAGE); - void *addr = ehooks_alloc(tsdn, ehooks, new_addr, size, palignment, - &zero, commit); + void *addr = ehooks_alloc( + tsdn, ehooks, new_addr, size, palignment, &zero, commit); if (addr == NULL) { edata_cache_put(tsdn, pac->edata_cache, edata); return NULL; } - edata_init(edata, ecache_ind_get(&pac->ecache_dirty), addr, - size, /* slab */ false, SC_NSIZES, extent_sn_next(pac), + edata_init(edata, ecache_ind_get(&pac->ecache_dirty), addr, size, + /* slab */ false, SC_NSIZES, extent_sn_next(pac), extent_state_active, zero, *commit, EXTENT_PAI_PAC, opt_retain ? EXTENT_IS_HEAD : EXTENT_NOT_HEAD); /* @@ -1024,20 +1143,43 @@ extent_alloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, return edata; } +static void +extent_dalloc_wrapper_finish( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { + if (config_prof) { + extent_gdump_sub(tsdn, edata); + } + extent_record(tsdn, pac, ehooks, &pac->ecache_retained, edata); +} + void -extent_dalloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata) { +extent_dalloc_wrapper_purged( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { assert(edata_pai_get(edata) == EXTENT_PAI_PAC); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); + + /* Verify that will not go down the dalloc / munmap route. */ + assert(ehooks_dalloc_will_fail(ehooks)); + + edata_zeroed_set(edata, true); + extent_dalloc_wrapper_finish(tsdn, pac, ehooks, edata); +} + +void +extent_dalloc_wrapper( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { + assert(edata_pai_get(edata) == EXTENT_PAI_PAC); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); /* Avoid calling the default extent_dalloc unless have to. */ if (!ehooks_dalloc_will_fail(ehooks)) { /* Remove guard pages for dalloc / unmap. */ if (edata_guarded_get(edata)) { assert(ehooks_are_default(ehooks)); - san_unguard_pages_two_sided(tsdn, ehooks, edata, - pac->emap); + san_unguard_pages_two_sided( + tsdn, ehooks, edata, pac->emap); } /* * Deregister first to avoid a race with other allocating @@ -1054,38 +1196,34 @@ extent_dalloc_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, bool zeroed; if (!edata_committed_get(edata)) { zeroed = true; - } else if (!extent_decommit_wrapper(tsdn, ehooks, edata, 0, - edata_size_get(edata))) { + } else if (!extent_decommit_wrapper( + tsdn, ehooks, edata, 0, edata_size_get(edata))) { zeroed = true; } else if (!ehooks_purge_forced(tsdn, ehooks, edata_base_get(edata), - edata_size_get(edata), 0, edata_size_get(edata))) { + edata_size_get(edata), 0, edata_size_get(edata))) { zeroed = true; - } else if (edata_state_get(edata) == extent_state_muzzy || - !ehooks_purge_lazy(tsdn, ehooks, edata_base_get(edata), - edata_size_get(edata), 0, edata_size_get(edata))) { + } else if (edata_state_get(edata) == extent_state_muzzy + || !ehooks_purge_lazy(tsdn, ehooks, edata_base_get(edata), + edata_size_get(edata), 0, edata_size_get(edata))) { zeroed = false; } else { zeroed = false; } edata_zeroed_set(edata, zeroed); - if (config_prof) { - extent_gdump_sub(tsdn, edata); - } - - extent_record(tsdn, pac, ehooks, &pac->ecache_retained, edata); + extent_dalloc_wrapper_finish(tsdn, pac, ehooks, edata); } void -extent_destroy_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata) { +extent_destroy_wrapper( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata) { assert(edata_base_get(edata) != NULL); assert(edata_size_get(edata) != 0); extent_state_t state = edata_state_get(edata); assert(state == extent_state_retained || state == extent_state_active); assert(emap_edata_is_acquired(tsdn, pac->emap, edata)); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); if (edata_guarded_get(edata)) { assert(opt_retain); @@ -1111,18 +1249,11 @@ extent_commit_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, return err; } -bool -extent_commit_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - size_t offset, size_t length) { - return extent_commit_impl(tsdn, ehooks, edata, offset, length, - /* growing_retained */ false); -} - -bool +static bool extent_decommit_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); bool err = ehooks_decommit(tsdn, ehooks, edata_base_get(edata), edata_size_get(edata), offset, length); edata_committed_set(edata, edata_committed_get(edata) && err); @@ -1142,8 +1273,8 @@ extent_purge_lazy_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, bool extent_purge_lazy_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length) { - return extent_purge_lazy_impl(tsdn, ehooks, edata, offset, - length, false); + return extent_purge_lazy_impl( + tsdn, ehooks, edata, offset, length, false); } static bool @@ -1159,8 +1290,8 @@ extent_purge_forced_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, bool extent_purge_forced_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, size_t offset, size_t length) { - return extent_purge_forced_impl(tsdn, ehooks, edata, offset, length, - false); + return extent_purge_forced_impl( + tsdn, ehooks, edata, offset, length, false); } /* @@ -1171,16 +1302,16 @@ extent_purge_forced_wrapper(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, * and returns the trail (except in case of error). */ static edata_t * -extent_split_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *edata, size_t size_a, size_t size_b, bool holding_core_locks) { +extent_split_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata, + size_t size_a, size_t size_b, bool holding_core_locks) { assert(edata_size_get(edata) == size_a + size_b); /* Only the shrink path may split w/o holding core locks. */ if (holding_core_locks) { witness_assert_positive_depth_to_rank( tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE); } else { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); } if (ehooks_split_will_fail(ehooks)) { @@ -1193,13 +1324,13 @@ extent_split_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, } edata_init(trail, edata_arena_ind_get(edata), - (void *)((uintptr_t)edata_base_get(edata) + size_a), size_b, + (void *)((byte_t *)edata_base_get(edata) + size_a), size_b, /* slab */ false, SC_NSIZES, edata_sn_get(edata), edata_state_get(edata), edata_zeroed_get(edata), edata_committed_get(edata), EXTENT_PAI_PAC, EXTENT_NOT_HEAD); emap_prepare_t prepare; - bool err = emap_split_prepare(tsdn, pac->emap, &prepare, edata, - size_a, trail, size_b); + bool err = emap_split_prepare( + tsdn, pac->emap, &prepare, edata, size_a, trail, size_b); if (err) { goto label_error_b; } @@ -1221,8 +1352,8 @@ extent_split_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, } edata_size_set(edata, size_a); - emap_split_commit(tsdn, pac->emap, &prepare, edata, size_a, trail, - size_b); + emap_split_commit( + tsdn, pac->emap, &prepare, edata, size_a, trail, size_b); return trail; label_error_b: @@ -1234,8 +1365,8 @@ extent_split_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t * extent_split_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *edata, size_t size_a, size_t size_b, bool holding_core_locks) { - return extent_split_impl(tsdn, pac, ehooks, edata, size_a, size_b, - holding_core_locks); + return extent_split_impl( + tsdn, pac, ehooks, edata, size_a, size_b, holding_core_locks); } static bool @@ -1246,8 +1377,8 @@ extent_merge_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *a, witness_assert_positive_depth_to_rank( tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE); } else { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); } assert(edata_base_get(a) < edata_base_get(b)); @@ -1272,12 +1403,13 @@ extent_merge_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *a, emap_prepare_t prepare; emap_merge_prepare(tsdn, pac->emap, &prepare, a, b); - assert(edata_state_get(a) == extent_state_active || - edata_state_get(a) == extent_state_merging); + assert(edata_state_get(a) == extent_state_active + || edata_state_get(a) == extent_state_merging); edata_state_set(a, extent_state_active); edata_size_set(a, edata_size_get(a) + edata_size_get(b)); - edata_sn_set(a, (edata_sn_get(a) < edata_sn_get(b)) ? - edata_sn_get(a) : edata_sn_get(b)); + edata_sn_set(a, + (edata_sn_get(a) < edata_sn_get(b)) ? edata_sn_get(a) + : edata_sn_get(b)); edata_zeroed_set(a, edata_zeroed_get(a) && edata_zeroed_get(b)); emap_merge_commit(tsdn, pac->emap, &prepare, a, b); @@ -1288,26 +1420,26 @@ extent_merge_impl(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *a, } bool -extent_merge_wrapper(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, - edata_t *a, edata_t *b) { +extent_merge_wrapper( + tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, edata_t *a, edata_t *b) { return extent_merge_impl(tsdn, pac, ehooks, a, b, /* holding_core_locks */ false); } bool -extent_commit_zero(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - bool commit, bool zero, bool growing_retained) { +extent_commit_zero(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, bool commit, + bool zero, bool growing_retained) { witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, growing_retained ? 1 : 0); if (commit && !edata_committed_get(edata)) { if (extent_commit_impl(tsdn, ehooks, edata, 0, - edata_size_get(edata), growing_retained)) { + edata_size_get(edata), growing_retained)) { return true; } } if (zero && !edata_zeroed_get(edata)) { - void *addr = edata_base_get(edata); + void *addr = edata_base_get(edata); size_t size = edata_size_get(edata); ehooks_zero(tsdn, ehooks, addr, size); } diff --git a/dep/jemalloc/src/extent_dss.c b/dep/jemalloc/src/extent_dss.c index 9a35bacfb4f8a..c7c34207eb5e6 100644 --- a/dep/jemalloc/src/extent_dss.c +++ b/dep/jemalloc/src/extent_dss.c @@ -8,14 +8,13 @@ /******************************************************************************/ /* Data. */ -const char *opt_dss = DSS_DEFAULT; +/* NOLINTNEXTLINE(performance-no-int-to-ptr) */ +#define SBRK_INVALID ((void *)-1) -const char *dss_prec_names[] = { - "disabled", - "primary", - "secondary", - "N/A" -}; +const char *opt_dss = DSS_DEFAULT; + +const char *const dss_prec_names[] = { + "disabled", "primary", "secondary", "N/A"}; /* * Current dss precedence default, used when creating new arenas. NB: This is @@ -23,17 +22,16 @@ const char *dss_prec_names[] = { * guarantee that sizeof(dss_prec_t) is the same as sizeof(unsigned), and we use * atomic operations to synchronize the setting. */ -static atomic_u_t dss_prec_default = ATOMIC_INIT( - (unsigned)DSS_PREC_DEFAULT); +static atomic_u_t dss_prec_default = ATOMIC_INIT((unsigned)DSS_PREC_DEFAULT); /* Base address of the DSS. */ -static void *dss_base; +static void *dss_base; /* Atomic boolean indicating whether a thread is currently extending DSS. */ -static atomic_b_t dss_extending; +static atomic_b_t dss_extending; /* Atomic boolean indicating whether the DSS is exhausted. */ -static atomic_b_t dss_exhausted; +static atomic_b_t dss_exhausted; /* Atomic current upper limit on DSS addresses. */ -static atomic_p_t dss_max; +static atomic_p_t dss_max; /******************************************************************************/ @@ -73,7 +71,7 @@ extent_dss_extending_start(void) { while (true) { bool expected = false; if (atomic_compare_exchange_weak_b(&dss_extending, &expected, - true, ATOMIC_ACQ_REL, ATOMIC_RELAXED)) { + true, ATOMIC_ACQ_REL, ATOMIC_RELAXED)) { break; } spin_adaptive(&spinner); @@ -94,7 +92,7 @@ extent_dss_max_update(void *new_addr) { * up to date. */ void *max_cur = extent_dss_sbrk(0); - if (max_cur == (void *)-1) { + if (max_cur == SBRK_INVALID) { return NULL; } atomic_store_p(&dss_max, max_cur, ATOMIC_RELEASE); @@ -140,51 +138,54 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, goto label_oom; } - bool head_state = opt_retain ? EXTENT_IS_HEAD : - EXTENT_NOT_HEAD; + bool head_state = opt_retain ? EXTENT_IS_HEAD + : EXTENT_NOT_HEAD; /* * Compute how much page-aligned gap space (if any) is * necessary to satisfy alignment. This space can be * recycled for later use. */ - void *gap_addr_page = (void *)(PAGE_CEILING( - (uintptr_t)max_cur)); - void *ret = (void *)ALIGNMENT_CEILING( - (uintptr_t)gap_addr_page, alignment); - size_t gap_size_page = (uintptr_t)ret - - (uintptr_t)gap_addr_page; + void *gap_addr_page = ALIGNMENT_ADDR2CEILING( + max_cur, PAGE); + void *ret = ALIGNMENT_ADDR2CEILING( + gap_addr_page, alignment); + size_t gap_size_page = (uintptr_t)ret + - (uintptr_t)gap_addr_page; if (gap_size_page != 0) { edata_init(gap, arena_ind_get(arena), - gap_addr_page, gap_size_page, false, - SC_NSIZES, extent_sn_next( - &arena->pa_shard.pac), - extent_state_active, false, true, - EXTENT_PAI_PAC, head_state); + gap_addr_page, gap_size_page, + /* slab */ false, + /* szind */ SC_NSIZES, + extent_sn_next(&arena->pa_shard.pac), + extent_state_active, + /* zeroed */ false, + /* committed */ true, + /* pai */ EXTENT_PAI_PAC, head_state); } /* * Compute the address just past the end of the desired * allocation space. */ - void *dss_next = (void *)((uintptr_t)ret + size); - if ((uintptr_t)ret < (uintptr_t)max_cur || - (uintptr_t)dss_next < (uintptr_t)max_cur) { + void *dss_next = (void *)((byte_t *)ret + size); + if ((uintptr_t)ret < (uintptr_t)max_cur + || (uintptr_t)dss_next < (uintptr_t)max_cur) { goto label_oom; /* Wrap-around. */ } /* Compute the increment, including subpage bytes. */ - void *gap_addr_subpage = max_cur; - size_t gap_size_subpage = (uintptr_t)ret - - (uintptr_t)gap_addr_subpage; + void *gap_addr_subpage = max_cur; + size_t gap_size_subpage = (uintptr_t)ret + - (uintptr_t)gap_addr_subpage; intptr_t incr = gap_size_subpage + size; - assert((uintptr_t)max_cur + incr == (uintptr_t)ret + - size); + assert( + (uintptr_t)max_cur + incr == (uintptr_t)ret + size); /* Try to allocate. */ void *dss_prev = extent_dss_sbrk(incr); if (dss_prev == max_cur) { /* Success. */ - atomic_store_p(&dss_max, dss_next, - ATOMIC_RELEASE); + atomic_store_p( + &dss_max, dss_next, ATOMIC_RELEASE); extent_dss_extending_finish(); if (gap_size_page != 0) { @@ -200,17 +201,23 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, *commit = pages_decommit(ret, size); } if (*zero && *commit) { - edata_t edata = {0}; + edata_t edata = {0}; ehooks_t *ehooks = arena_get_ehooks( arena); - edata_init(&edata, - arena_ind_get(arena), ret, size, - size, false, SC_NSIZES, - extent_state_active, false, true, - EXTENT_PAI_PAC, head_state); + edata_init(&edata, arena_ind_get(arena), + ret, size, + /* slab */ false, + /* szind */ SC_NSIZES, + extent_sn_next( + &arena->pa_shard.pac), + extent_state_active, + /* zeroed */ false, + /* committed */ true, + /* pai */ EXTENT_PAI_PAC, + head_state); if (extent_purge_forced_wrapper(tsdn, - ehooks, &edata, 0, size)) { + ehooks, &edata, 0, size)) { memset(ret, 0, size); } } @@ -220,10 +227,10 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, * Failure, whether due to OOM or a race with a raw * sbrk() call from outside the allocator. */ - if (dss_prev == (void *)-1) { + if (dss_prev == SBRK_INVALID) { /* OOM. */ - atomic_store_b(&dss_exhausted, true, - ATOMIC_RELEASE); + atomic_store_b( + &dss_exhausted, true, ATOMIC_RELEASE); goto label_oom; } } @@ -236,16 +243,16 @@ extent_alloc_dss(tsdn_t *tsdn, arena_t *arena, void *new_addr, size_t size, static bool extent_in_dss_helper(void *addr, void *max) { - return ((uintptr_t)addr >= (uintptr_t)dss_base && (uintptr_t)addr < - (uintptr_t)max); + return ((uintptr_t)addr >= (uintptr_t)dss_base + && (uintptr_t)addr < (uintptr_t)max); } bool extent_in_dss(void *addr) { cassert(have_dss); - return extent_in_dss_helper(addr, atomic_load_p(&dss_max, - ATOMIC_ACQUIRE)); + return extent_in_dss_helper( + addr, atomic_load_p(&dss_max, ATOMIC_ACQUIRE)); } bool @@ -254,14 +261,14 @@ extent_dss_mergeable(void *addr_a, void *addr_b) { cassert(have_dss); - if ((uintptr_t)addr_a < (uintptr_t)dss_base && (uintptr_t)addr_b < - (uintptr_t)dss_base) { + if ((uintptr_t)addr_a < (uintptr_t)dss_base + && (uintptr_t)addr_b < (uintptr_t)dss_base) { return true; } max = atomic_load_p(&dss_max, ATOMIC_ACQUIRE); - return (extent_in_dss_helper(addr_a, max) == - extent_in_dss_helper(addr_b, max)); + return (extent_in_dss_helper(addr_a, max) + == extent_in_dss_helper(addr_b, max)); } void @@ -270,7 +277,8 @@ extent_dss_boot(void) { dss_base = extent_dss_sbrk(0); atomic_store_b(&dss_extending, false, ATOMIC_RELAXED); - atomic_store_b(&dss_exhausted, dss_base == (void *)-1, ATOMIC_RELAXED); + atomic_store_b( + &dss_exhausted, dss_base == SBRK_INVALID, ATOMIC_RELAXED); atomic_store_p(&dss_max, dss_base, ATOMIC_RELAXED); } diff --git a/dep/jemalloc/src/extent_mmap.c b/dep/jemalloc/src/extent_mmap.c index 5f0ee2d24b1ba..d39bddc60bcf9 100644 --- a/dep/jemalloc/src/extent_mmap.c +++ b/dep/jemalloc/src/extent_mmap.c @@ -7,7 +7,7 @@ /******************************************************************************/ /* Data. */ -bool opt_retain = +bool opt_retain = #ifdef JEMALLOC_RETAIN true #else @@ -18,8 +18,8 @@ bool opt_retain = /******************************************************************************/ void * -extent_alloc_mmap(void *new_addr, size_t size, size_t alignment, bool *zero, - bool *commit) { +extent_alloc_mmap( + void *new_addr, size_t size, size_t alignment, bool *zero, bool *commit) { assert(alignment == ALIGNMENT_CEILING(alignment, PAGE)); void *ret = pages_map(new_addr, size, alignment, commit); if (ret == NULL) { diff --git a/dep/jemalloc/src/fxp.c b/dep/jemalloc/src/fxp.c index 96585f0a65acf..faeab207a0678 100644 --- a/dep/jemalloc/src/fxp.c +++ b/dep/jemalloc/src/fxp.c @@ -83,8 +83,8 @@ fxp_parse(fxp_t *result, const char *str, char **end) { } assert(fractional_part < frac_div); - uint32_t fractional_repr = (uint32_t)( - (fractional_part << 16) / frac_div); + uint32_t fractional_repr = (uint32_t)((fractional_part << 16) + / frac_div); /* Success! */ *result = (integer_part << 16) + fractional_repr; @@ -99,7 +99,7 @@ fxp_print(fxp_t a, char buf[FXP_BUF_SIZE]) { uint32_t integer_part = fxp_round_down(a); uint32_t fractional_part = (a & ((1U << 16) - 1)); - int leading_fraction_zeros = 0; + int leading_fraction_zeros = 0; uint64_t fraction_digits = fractional_part; for (int i = 0; i < FXP_FRACTIONAL_PART_DIGITS; i++) { if (fraction_digits < (1U << 16) @@ -113,12 +113,12 @@ fxp_print(fxp_t a, char buf[FXP_BUF_SIZE]) { fraction_digits /= 10; } - size_t printed = malloc_snprintf(buf, FXP_BUF_SIZE, "%"FMTu32".", - integer_part); + size_t printed = malloc_snprintf( + buf, FXP_BUF_SIZE, "%" FMTu32 ".", integer_part); for (int i = 0; i < leading_fraction_zeros; i++) { buf[printed] = '0'; printed++; } - malloc_snprintf(&buf[printed], FXP_BUF_SIZE - printed, "%"FMTu64, - fraction_digits); + malloc_snprintf( + &buf[printed], FXP_BUF_SIZE - printed, "%" FMTu64, fraction_digits); } diff --git a/dep/jemalloc/src/hook.c b/dep/jemalloc/src/hook.c index 493edbbe512d4..4270ad6071ee2 100644 --- a/dep/jemalloc/src/hook.c +++ b/dep/jemalloc/src/hook.c @@ -9,19 +9,19 @@ typedef struct hooks_internal_s hooks_internal_t; struct hooks_internal_s { hooks_t hooks; - bool in_use; + bool in_use; }; seq_define(hooks_internal_t, hooks) -static atomic_u_t nhooks = ATOMIC_INIT(0); -static seq_hooks_t hooks[HOOK_MAX]; + static atomic_u_t nhooks = ATOMIC_INIT(0); +static seq_hooks_t hooks[HOOK_MAX]; static malloc_mutex_t hooks_mu; bool -hook_boot() { - return malloc_mutex_init(&hooks_mu, "hooks", WITNESS_RANK_HOOK, - malloc_mutex_rank_exclusive); +hook_boot(void) { + return malloc_mutex_init( + &hooks_mu, "hooks", WITNESS_RANK_HOOK, malloc_mutex_rank_exclusive); } static void * @@ -84,23 +84,21 @@ hook_remove(tsdn_t *tsdn, void *opaque) { malloc_mutex_unlock(tsdn, &hooks_mu); } -#define FOR_EACH_HOOK_BEGIN(hooks_internal_ptr) \ -for (int for_each_hook_counter = 0; \ - for_each_hook_counter < HOOK_MAX; \ - for_each_hook_counter++) { \ - bool for_each_hook_success = seq_try_load_hooks( \ - (hooks_internal_ptr), &hooks[for_each_hook_counter]); \ - if (!for_each_hook_success) { \ - continue; \ - } \ - if (!(hooks_internal_ptr)->in_use) { \ - continue; \ - } -#define FOR_EACH_HOOK_END \ -} +#define FOR_EACH_HOOK_BEGIN(hooks_internal_ptr) \ + for (int for_each_hook_counter = 0; for_each_hook_counter < HOOK_MAX; \ + for_each_hook_counter++) { \ + bool for_each_hook_success = seq_try_load_hooks( \ + (hooks_internal_ptr), &hooks[for_each_hook_counter]); \ + if (!for_each_hook_success) { \ + continue; \ + } \ + if (!(hooks_internal_ptr)->in_use) { \ + continue; \ + } +#define FOR_EACH_HOOK_END } static bool * -hook_reentrantp() { +hook_reentrantp(void) { /* * We prevent user reentrancy within hooks. This is basically just a * thread-local bool that triggers an early-exit. @@ -129,26 +127,25 @@ hook_reentrantp() { * untouched. */ static bool in_hook_global = true; - tsdn_t *tsdn = tsdn_fetch(); - bool *in_hook = tsdn_in_hookp_get(tsdn); - if (in_hook!= NULL) { + tsdn_t *tsdn = tsdn_fetch(); + bool *in_hook = tsdn_in_hookp_get(tsdn); + if (in_hook != NULL) { return in_hook; } return &in_hook_global; } -#define HOOK_PROLOGUE \ - if (likely(atomic_load_u(&nhooks, ATOMIC_RELAXED) == 0)) { \ - return; \ - } \ - bool *in_hook = hook_reentrantp(); \ - if (*in_hook) { \ - return; \ - } \ +#define HOOK_PROLOGUE \ + if (likely(atomic_load_u(&nhooks, ATOMIC_RELAXED) == 0)) { \ + return; \ + } \ + bool *in_hook = hook_reentrantp(); \ + if (*in_hook) { \ + return; \ + } \ *in_hook = true; -#define HOOK_EPILOGUE \ - *in_hook = false; +#define HOOK_EPILOGUE *in_hook = false; void hook_invoke_alloc(hook_alloc_t type, void *result, uintptr_t result_raw, @@ -157,10 +154,10 @@ hook_invoke_alloc(hook_alloc_t type, void *result, uintptr_t result_raw, hooks_internal_t hook; FOR_EACH_HOOK_BEGIN(&hook) - hook_alloc h = hook.hooks.alloc_hook; - if (h != NULL) { - h(hook.hooks.extra, type, result, result_raw, args_raw); - } + hook_alloc h = hook.hooks.alloc_hook; + if (h != NULL) { + h(hook.hooks.extra, type, result, result_raw, args_raw); + } FOR_EACH_HOOK_END HOOK_EPILOGUE @@ -171,10 +168,10 @@ hook_invoke_dalloc(hook_dalloc_t type, void *address, uintptr_t args_raw[3]) { HOOK_PROLOGUE hooks_internal_t hook; FOR_EACH_HOOK_BEGIN(&hook) - hook_dalloc h = hook.hooks.dalloc_hook; - if (h != NULL) { - h(hook.hooks.extra, type, address, args_raw); - } + hook_dalloc h = hook.hooks.dalloc_hook; + if (h != NULL) { + h(hook.hooks.extra, type, address, args_raw); + } FOR_EACH_HOOK_END HOOK_EPILOGUE } @@ -185,11 +182,11 @@ hook_invoke_expand(hook_expand_t type, void *address, size_t old_usize, HOOK_PROLOGUE hooks_internal_t hook; FOR_EACH_HOOK_BEGIN(&hook) - hook_expand h = hook.hooks.expand_hook; - if (h != NULL) { - h(hook.hooks.extra, type, address, old_usize, new_usize, - result_raw, args_raw); - } + hook_expand h = hook.hooks.expand_hook; + if (h != NULL) { + h(hook.hooks.extra, type, address, old_usize, new_usize, + result_raw, args_raw); + } FOR_EACH_HOOK_END HOOK_EPILOGUE } diff --git a/dep/jemalloc/src/hpa.c b/dep/jemalloc/src/hpa.c index 7e2aeba0c0ffd..ce6ece2bd8a97 100644 --- a/dep/jemalloc/src/hpa.c +++ b/dep/jemalloc/src/hpa.c @@ -2,29 +2,38 @@ #include "jemalloc/internal/jemalloc_internal_includes.h" #include "jemalloc/internal/hpa.h" +#include "jemalloc/internal/hpa_utils.h" #include "jemalloc/internal/fb.h" #include "jemalloc/internal/witness.h" - -#define HPA_EDEN_SIZE (128 * HUGEPAGE) +#include "jemalloc/internal/jemalloc_probe.h" static edata_t *hpa_alloc(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, bool guarded, bool frequent_reuse, bool *deferred_work_generated); -static size_t hpa_alloc_batch(tsdn_t *tsdn, pai_t *self, size_t size, - size_t nallocs, edata_list_active_t *results, bool *deferred_work_generated); -static bool hpa_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated); -static bool hpa_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool *deferred_work_generated); -static void hpa_dalloc(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated); +static bool hpa_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, + size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated); +static bool hpa_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, + size_t old_size, size_t new_size, bool *deferred_work_generated); +static void hpa_dalloc( + tsdn_t *tsdn, pai_t *self, edata_t *edata, bool *deferred_work_generated); +static uint64_t hpa_time_until_deferred_work(tsdn_t *tsdn, pai_t *self); + static void hpa_dalloc_batch(tsdn_t *tsdn, pai_t *self, edata_list_active_t *list, bool *deferred_work_generated); -static uint64_t hpa_time_until_deferred_work(tsdn_t *tsdn, pai_t *self); + +const char *const hpa_hugify_style_names[] = {"auto", "none", "eager", "lazy"}; + +bool opt_experimental_hpa_start_huge_if_thp_always = true; +bool opt_experimental_hpa_enforce_hugify = false; bool -hpa_supported() { +hpa_hugepage_size_exceeds_limit(void) { + return HUGEPAGE > HUGEPAGE_MAX_EXPECTED_SIZE; +} + +bool +hpa_supported(void) { #ifdef _WIN32 /* * At least until the API and implementation is somewhat settled, we @@ -37,7 +46,7 @@ hpa_supported() { return false; } /* - * We fundamentally rely on a address-space-hungry growth strategy for + * We fundamentally rely on an address-space-hungry growth strategy for * hugepages. */ if (LG_SIZEOF_PTR != 3) { @@ -50,6 +59,10 @@ hpa_supported() { if (HUGEPAGE_PAGES == 1) { return false; } + /* As mentioned in pages.h, do not support If HUGEPAGE is too large. */ + if (hpa_hugepage_size_exceeds_limit()) { + return false; + } return true; } @@ -59,125 +72,9 @@ hpa_do_consistency_checks(hpa_shard_t *shard) { } bool -hpa_central_init(hpa_central_t *central, base_t *base, const hpa_hooks_t *hooks) { - /* malloc_conf processing should have filtered out these cases. */ - assert(hpa_supported()); - bool err; - err = malloc_mutex_init(¢ral->grow_mtx, "hpa_central_grow", - WITNESS_RANK_HPA_CENTRAL_GROW, malloc_mutex_rank_exclusive); - if (err) { - return true; - } - err = malloc_mutex_init(¢ral->mtx, "hpa_central", - WITNESS_RANK_HPA_CENTRAL, malloc_mutex_rank_exclusive); - if (err) { - return true; - } - central->base = base; - central->eden = NULL; - central->eden_len = 0; - central->age_counter = 0; - central->hooks = *hooks; - return false; -} - -static hpdata_t * -hpa_alloc_ps(tsdn_t *tsdn, hpa_central_t *central) { - return (hpdata_t *)base_alloc(tsdn, central->base, sizeof(hpdata_t), - CACHELINE); -} - -hpdata_t * -hpa_central_extract(tsdn_t *tsdn, hpa_central_t *central, size_t size, - bool *oom) { - /* Don't yet support big allocations; these should get filtered out. */ - assert(size <= HUGEPAGE); - /* - * Should only try to extract from the central allocator if the local - * shard is exhausted. We should hold the grow_mtx on that shard. - */ - witness_assert_positive_depth_to_rank( - tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_HPA_SHARD_GROW); - - malloc_mutex_lock(tsdn, ¢ral->grow_mtx); - *oom = false; - - hpdata_t *ps = NULL; - - /* Is eden a perfect fit? */ - if (central->eden != NULL && central->eden_len == HUGEPAGE) { - ps = hpa_alloc_ps(tsdn, central); - if (ps == NULL) { - *oom = true; - malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); - return NULL; - } - hpdata_init(ps, central->eden, central->age_counter++); - central->eden = NULL; - central->eden_len = 0; - malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); - return ps; - } - - /* - * We're about to try to allocate from eden by splitting. If eden is - * NULL, we have to allocate it too. Otherwise, we just have to - * allocate an edata_t for the new psset. - */ - if (central->eden == NULL) { - /* - * During development, we're primarily concerned with systems - * with overcommit. Eventually, we should be more careful here. - */ - bool commit = true; - /* Allocate address space, bailing if we fail. */ - void *new_eden = pages_map(NULL, HPA_EDEN_SIZE, HUGEPAGE, - &commit); - if (new_eden == NULL) { - *oom = true; - malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); - return NULL; - } - ps = hpa_alloc_ps(tsdn, central); - if (ps == NULL) { - pages_unmap(new_eden, HPA_EDEN_SIZE); - *oom = true; - malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); - return NULL; - } - central->eden = new_eden; - central->eden_len = HPA_EDEN_SIZE; - } else { - /* Eden is already nonempty; only need an edata for ps. */ - ps = hpa_alloc_ps(tsdn, central); - if (ps == NULL) { - *oom = true; - malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); - return NULL; - } - } - assert(ps != NULL); - assert(central->eden != NULL); - assert(central->eden_len > HUGEPAGE); - assert(central->eden_len % HUGEPAGE == 0); - assert(HUGEPAGE_ADDR2BASE(central->eden) == central->eden); - - hpdata_init(ps, central->eden, central->age_counter++); - - char *eden_char = (char *)central->eden; - eden_char += HUGEPAGE; - central->eden = (void *)eden_char; - central->eden_len -= HUGEPAGE; - - malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); - - return ps; -} - -bool -hpa_shard_init(hpa_shard_t *shard, hpa_central_t *central, emap_t *emap, - base_t *base, edata_cache_t *edata_cache, unsigned ind, - const hpa_shard_opts_t *opts) { +hpa_shard_init(tsdn_t *tsdn, hpa_shard_t *shard, hpa_central_t *central, + emap_t *emap, base_t *base, edata_cache_t *edata_cache, unsigned ind, + const hpa_shard_opts_t *opts, const sec_opts_t *sec_opts) { /* malloc_conf processing should have filtered out these cases. */ assert(hpa_supported()); bool err; @@ -205,10 +102,12 @@ hpa_shard_init(hpa_shard_t *shard, hpa_central_t *central, emap_t *emap, shard->npending_purge = 0; nstime_init_zero(&shard->last_purge); + nstime_init_zero(&shard->last_time_work_attempted); shard->stats.npurge_passes = 0; shard->stats.npurges = 0; shard->stats.nhugifies = 0; + shard->stats.nhugify_failures = 0; shard->stats.ndehugifies = 0; /* @@ -217,13 +116,16 @@ hpa_shard_init(hpa_shard_t *shard, hpa_central_t *central, emap_t *emap, * operating on corrupted data. */ shard->pai.alloc = &hpa_alloc; - shard->pai.alloc_batch = &hpa_alloc_batch; shard->pai.expand = &hpa_expand; shard->pai.shrink = &hpa_shrink; shard->pai.dalloc = &hpa_dalloc; - shard->pai.dalloc_batch = &hpa_dalloc_batch; shard->pai.time_until_deferred_work = &hpa_time_until_deferred_work; + err = sec_init(tsdn, &shard->sec, base, sec_opts); + if (err) { + return true; + } + hpa_do_consistency_checks(shard); return false; @@ -232,28 +134,30 @@ hpa_shard_init(hpa_shard_t *shard, hpa_central_t *central, emap_t *emap, /* * Note that the stats functions here follow the usual stats naming conventions; * "merge" obtains the stats from some live object of instance, while "accum" - * only combines the stats from one stats objet to another. Hence the lack of + * only combines the stats from one stats object to another. Hence the lack of * locking here. */ static void -hpa_shard_nonderived_stats_accum(hpa_shard_nonderived_stats_t *dst, - hpa_shard_nonderived_stats_t *src) { +hpa_shard_nonderived_stats_accum( + hpa_shard_nonderived_stats_t *dst, hpa_shard_nonderived_stats_t *src) { dst->npurge_passes += src->npurge_passes; dst->npurges += src->npurges; dst->nhugifies += src->nhugifies; + dst->nhugify_failures += src->nhugify_failures; dst->ndehugifies += src->ndehugifies; } void hpa_shard_stats_accum(hpa_shard_stats_t *dst, hpa_shard_stats_t *src) { psset_stats_accum(&dst->psset_stats, &src->psset_stats); - hpa_shard_nonderived_stats_accum(&dst->nonderived_stats, - &src->nonderived_stats); + hpa_shard_nonderived_stats_accum( + &dst->nonderived_stats, &src->nonderived_stats); + sec_stats_accum(&dst->secstats, &src->secstats); } void -hpa_shard_stats_merge(tsdn_t *tsdn, hpa_shard_t *shard, - hpa_shard_stats_t *dst) { +hpa_shard_stats_merge( + tsdn_t *tsdn, hpa_shard_t *shard, hpa_shard_stats_t *dst) { hpa_do_consistency_checks(shard); malloc_mutex_lock(tsdn, &shard->grow_mtx); @@ -262,6 +166,36 @@ hpa_shard_stats_merge(tsdn_t *tsdn, hpa_shard_t *shard, hpa_shard_nonderived_stats_accum(&dst->nonderived_stats, &shard->stats); malloc_mutex_unlock(tsdn, &shard->mtx); malloc_mutex_unlock(tsdn, &shard->grow_mtx); + + sec_stats_merge(tsdn, &shard->sec, &dst->secstats); +} + +static bool +hpa_is_hugify_eager(hpa_shard_t *shard) { + return shard->opts.hugify_style == hpa_hugify_style_eager; +} + +static bool +hpa_is_hugify_lazy(hpa_shard_t *shard) { + /* When hugify_sync==true we also set/unset HG bit manually */ + return shard->opts.hugify_style == hpa_hugify_style_lazy + || shard->opts.hugify_sync; +} + +static bool +hpa_is_hugify_none(hpa_shard_t *shard) { + return shard->opts.hugify_style == hpa_hugify_style_none; +} + +/* + * Experimentation has shown that when we are purging only HUGEPAGE ranges and + * hugifying eagerly (or thp enabled=always) we get huge pages more often. This + * helps us have more realistic accounting. + */ +static bool +hpa_should_assume_huge(hpa_shard_t *shard, const hpdata_t *ps) { + return (hpa_is_hugify_eager(shard) || hpa_is_hugify_none(shard)) + && hpdata_purged_when_empty_and_huge_get(ps); } static bool @@ -275,6 +209,20 @@ hpa_good_hugification_candidate(hpa_shard_t *shard, hpdata_t *ps) { >= shard->opts.hugification_threshold; } +static bool +hpa_good_purge_candidate(hpa_shard_t *shard, hpdata_t *ps) { + if (shard->opts.dirty_mult == (fxp_t)-1) { + /* No purging. */ + return false; + } + size_t ndirty = hpdata_ndirty_get(ps); + /* Empty pages are good candidate for purging. */ + if (ndirty > 0 && hpdata_empty(ps)) { + return true; + } + return ndirty * PAGE >= shard->opts.purge_threshold; +} + static size_t hpa_adjusted_ndirty(tsdn_t *tsdn, hpa_shard_t *shard) { malloc_mutex_assert_owner(tsdn, &shard->mtx); @@ -287,8 +235,8 @@ hpa_ndirty_max(tsdn_t *tsdn, hpa_shard_t *shard) { if (shard->opts.dirty_mult == (fxp_t)-1) { return (size_t)-1; } - return fxp_mul_frac(psset_nactive(&shard->psset), - shard->opts.dirty_mult); + return fxp_mul_frac( + psset_nactive(&shard->psset), shard->opts.dirty_mult); } static bool @@ -299,12 +247,21 @@ hpa_hugify_blocked_by_ndirty(tsdn_t *tsdn, hpa_shard_t *shard) { return false; } return hpa_adjusted_ndirty(tsdn, shard) - + hpdata_nretained_get(to_hugify) > hpa_ndirty_max(tsdn, shard); + + hpdata_nretained_get(to_hugify) + > hpa_ndirty_max(tsdn, shard); } static bool hpa_should_purge(tsdn_t *tsdn, hpa_shard_t *shard) { malloc_mutex_assert_owner(tsdn, &shard->mtx); + /* + * The page that is purgable may be delayed, but we just want to know + * if there is a need for bg thread to wake up in the future. + */ + hpdata_t *ps = psset_pick_purge(&shard->psset, NULL); + if (ps == NULL) { + return false; + } if (hpa_adjusted_ndirty(tsdn, shard) > hpa_ndirty_max(tsdn, shard)) { return true; } @@ -315,8 +272,22 @@ hpa_should_purge(tsdn_t *tsdn, hpa_shard_t *shard) { } static void -hpa_update_purge_hugify_eligibility(tsdn_t *tsdn, hpa_shard_t *shard, - hpdata_t *ps) { +hpa_assume_huge(tsdn_t *tsdn, hpa_shard_t *shard, hpdata_t *ps) { + malloc_mutex_assert_owner(tsdn, &shard->mtx); + + assert(hpa_should_assume_huge(shard, ps)); + if (hpdata_huge_get(ps) || hpdata_empty(ps)) { + return; + } + + if (hpdata_ntouched_get(ps) != HUGEPAGE_PAGES) { + hpdata_hugify(ps); + } +} + +static void +hpa_update_purge_hugify_eligibility( + tsdn_t *tsdn, hpa_shard_t *shard, hpdata_t *ps) { malloc_mutex_assert_owner(tsdn, &shard->mtx); if (hpdata_changing_state_get(ps)) { hpdata_purge_allowed_set(ps, false); @@ -345,26 +316,41 @@ hpa_update_purge_hugify_eligibility(tsdn_t *tsdn, hpa_shard_t *shard, * allocator's end at all; we just try to pack allocations in a * hugepage-friendly manner and let the OS hugify in the background. */ - hpdata_purge_allowed_set(ps, hpdata_ndirty_get(ps) > 0); - if (hpa_good_hugification_candidate(shard, ps) + if (hpa_should_assume_huge(shard, ps)) { + /* Assume it is huge without the need to madvise */ + hpa_assume_huge(tsdn, shard, ps); + } + if ((hpa_is_hugify_lazy(shard) || opt_experimental_hpa_enforce_hugify) + && hpa_good_hugification_candidate(shard, ps) && !hpdata_huge_get(ps)) { nstime_t now; shard->central->hooks.curtime(&now, /* first_reading */ true); hpdata_allow_hugify(ps, now); } + bool purgable = hpa_good_purge_candidate(shard, ps); + if (purgable && !hpdata_purge_allowed_get(ps) + && (shard->opts.min_purge_delay_ms > 0)) { + nstime_t now; + uint64_t delayns = shard->opts.min_purge_delay_ms * 1000 * 1000; + shard->central->hooks.curtime(&now, /* first_reading */ true); + nstime_iadd(&now, delayns); + hpdata_time_purge_allowed_set(ps, &now); + } + hpdata_purge_allowed_set(ps, purgable); + /* * Once a hugepage has become eligible for hugification, we don't mark * it as ineligible just because it stops meeting the criteria (this * could lead to situations where a hugepage that spends most of its * time meeting the criteria never quite getting hugified if there are * intervening deallocations). The idea is that the hugification delay - * will allow them to get purged, reseting their "hugify-allowed" bit. + * will allow them to get purged, resetting their "hugify-allowed" bit. * If they don't get purged, then the hugification isn't hurting and * might help. As an exception, we don't hugify hugepages that are now * empty; it definitely doesn't help there until the hugepage gets * reused, which is likely not for a while. */ - if (hpdata_nactive_get(ps) == 0) { + if (hpdata_nactive_get(ps) == 0 && !hpa_should_assume_huge(shard, ps)) { hpdata_disallow_hugify(ps); } } @@ -376,14 +362,26 @@ hpa_shard_has_deferred_work(tsdn_t *tsdn, hpa_shard_t *shard) { return to_hugify != NULL || hpa_should_purge(tsdn, shard); } -/* Returns whether or not we purged anything. */ -static bool -hpa_try_purge(tsdn_t *tsdn, hpa_shard_t *shard) { - malloc_mutex_assert_owner(tsdn, &shard->mtx); +static inline bool +hpa_needs_dehugify(hpa_shard_t *shard, const hpdata_t *ps) { + return (hpa_is_hugify_lazy(shard) + || opt_experimental_hpa_enforce_hugify) + && hpdata_huge_get(ps) && !hpdata_empty(ps); +} - hpdata_t *to_purge = psset_pick_purge(&shard->psset); +/* Prepare purge of one page. Return number of dirty regular pages on it + * Return 0 if no purgable huge page is found + * + * If there was a page to purge its purge state is initialized + */ +static inline size_t +hpa_purge_start_hp(hpa_purge_batch_t *b, hpa_shard_t *shard) { + psset_t *psset = &shard->psset; + hpdata_t *to_purge = (shard->opts.min_purge_delay_ms > 0) + ? psset_pick_purge(psset, &shard->last_time_work_attempted) + : psset_pick_purge(psset, NULL); if (to_purge == NULL) { - return false; + return 0; } assert(hpdata_purge_allowed_get(to_purge)); assert(!hpdata_changing_state_get(to_purge)); @@ -393,7 +391,7 @@ hpa_try_purge(tsdn_t *tsdn, hpa_shard_t *shard) { * we're purging it (allocations and deallocations are * OK). */ - psset_update_begin(&shard->psset, to_purge); + psset_update_begin(psset, to_purge); assert(hpdata_alloc_allowed_get(to_purge)); hpdata_mid_purge_set(to_purge, true); hpdata_purge_allowed_set(to_purge, false); @@ -406,59 +404,103 @@ hpa_try_purge(tsdn_t *tsdn, hpa_shard_t *shard) { * (clearing out user data). */ hpdata_alloc_allowed_set(to_purge, false); - psset_update_end(&shard->psset, to_purge); + psset_update_end(psset, to_purge); + assert(b->item_cnt < b->items_capacity); + hpa_purge_item_t *hp_item = &b->items[b->item_cnt]; + b->item_cnt++; + hp_item->hp = to_purge; /* Gather all the metadata we'll need during the purge. */ - bool dehugify = hpdata_huge_get(to_purge); - hpdata_purge_state_t purge_state; - size_t num_to_purge = hpdata_purge_begin(to_purge, &purge_state); - - shard->npending_purge += num_to_purge; - - malloc_mutex_unlock(tsdn, &shard->mtx); - - /* Actually do the purging, now that the lock is dropped. */ - if (dehugify) { - shard->central->hooks.dehugify(hpdata_addr_get(to_purge), - HUGEPAGE); - } - size_t total_purged = 0; - uint64_t purges_this_pass = 0; - void *purge_addr; - size_t purge_size; - while (hpdata_purge_next(to_purge, &purge_state, &purge_addr, - &purge_size)) { - total_purged += purge_size; - assert(total_purged <= HUGEPAGE); - purges_this_pass++; - shard->central->hooks.purge(purge_addr, purge_size); - } + hp_item->dehugify = hpa_needs_dehugify(shard, hp_item->hp); + hpdata_purged_when_empty_and_huge_set(hp_item->hp, + hpdata_huge_get(hp_item->hp) && hpdata_empty(hp_item->hp)); + size_t nranges; + size_t ndirty = hpdata_purge_begin( + hp_item->hp, &hp_item->state, &nranges); + /* We picked hp to purge, so it should have some dirty ranges */ + assert(ndirty > 0 && nranges > 0); + b->ndirty_in_batch += ndirty; + b->nranges += nranges; + return ndirty; +} - malloc_mutex_lock(tsdn, &shard->mtx); - /* The shard updates */ - shard->npending_purge -= num_to_purge; - shard->stats.npurge_passes++; - shard->stats.npurges += purges_this_pass; - shard->central->hooks.curtime(&shard->last_purge, - /* first_reading */ false); - if (dehugify) { +/* Finish purge of one huge page. */ +static inline void +hpa_purge_finish_hp( + tsdn_t *tsdn, hpa_shard_t *shard, hpa_purge_item_t *hp_item) { + if (hp_item->dehugify) { shard->stats.ndehugifies++; } - /* The hpdata updates. */ - psset_update_begin(&shard->psset, to_purge); - if (dehugify) { - hpdata_dehugify(to_purge); + psset_update_begin(&shard->psset, hp_item->hp); + if (hpdata_huge_get(hp_item->hp)) { + /* + * Even when dehugify is not explicitly called, the page is + * assumed to be non-huge after purge. + */ + hpdata_dehugify(hp_item->hp); } - hpdata_purge_end(to_purge, &purge_state); - hpdata_mid_purge_set(to_purge, false); + hpdata_purge_end(hp_item->hp, &hp_item->state); + hpdata_mid_purge_set(hp_item->hp, false); - hpdata_alloc_allowed_set(to_purge, true); - hpa_update_purge_hugify_eligibility(tsdn, shard, to_purge); + hpdata_alloc_allowed_set(hp_item->hp, true); + hpa_update_purge_hugify_eligibility(tsdn, shard, hp_item->hp); - psset_update_end(&shard->psset, to_purge); + psset_update_end(&shard->psset, hp_item->hp); +} - return true; +/* Returns number of huge pages purged. */ +static inline size_t +hpa_purge(tsdn_t *tsdn, hpa_shard_t *shard, size_t max_hp) { + malloc_mutex_assert_owner(tsdn, &shard->mtx); + assert(max_hp > 0); + + assert(HPA_PURGE_BATCH_MAX > 0); + assert(HPA_PURGE_BATCH_MAX + < (VARIABLE_ARRAY_SIZE_MAX / sizeof(hpa_purge_item_t))); + VARIABLE_ARRAY(hpa_purge_item_t, items, HPA_PURGE_BATCH_MAX); + hpa_purge_batch_t batch = { + .max_hp = max_hp, + .npurged_hp_total = 0, + .items = &items[0], + .items_capacity = HPA_PURGE_BATCH_MAX, + .range_watermark = hpa_process_madvise_max_iovec_len(), + }; + assert(batch.range_watermark > 0); + + while (1) { + hpa_batch_pass_start(&batch); + assert(hpa_batch_empty(&batch)); + while ( + !hpa_batch_full(&batch) && hpa_should_purge(tsdn, shard)) { + size_t ndirty = hpa_purge_start_hp(&batch, shard); + if (ndirty == 0) { + break; + } + shard->npending_purge += ndirty; + batch.npurged_hp_total++; + } + + if (hpa_batch_empty(&batch)) { + break; + } + hpa_hooks_t *hooks = &shard->central->hooks; + malloc_mutex_unlock(tsdn, &shard->mtx); + hpa_purge_batch(hooks, batch.items, batch.item_cnt); + malloc_mutex_lock(tsdn, &shard->mtx); + + /* The shard updates */ + shard->npending_purge -= batch.ndirty_in_batch; + shard->stats.npurges += batch.ndirty_in_batch; + shard->central->hooks.curtime(&shard->last_purge, + /* first_reading */ false); + for (size_t i = 0; i < batch.item_cnt; ++i) { + hpa_purge_finish_hp(tsdn, shard, &batch.items[i]); + } + } + malloc_mutex_assert_owner(tsdn, &shard->mtx); + shard->stats.npurge_passes++; + return batch.npurged_hp_total; } /* Returns whether or not we hugified anything. */ @@ -495,13 +537,34 @@ hpa_try_hugify(tsdn_t *tsdn, hpa_shard_t *shard) { hpdata_disallow_hugify(to_hugify); assert(hpdata_alloc_allowed_get(to_hugify)); psset_update_end(&shard->psset, to_hugify); - - malloc_mutex_unlock(tsdn, &shard->mtx); - - shard->central->hooks.hugify(hpdata_addr_get(to_hugify), HUGEPAGE); - - malloc_mutex_lock(tsdn, &shard->mtx); - shard->stats.nhugifies++; + /* + * Without lazy hugification, user relies on eagerly setting HG bit, or + * leaving everything up to the kernel (ex: thp enabled=always). We + * will still pretend that call succeeds to keep our accounting close to + * what user believes is the truth on the target system, but we won't + * update nhugifies stat as system call is not being made. + */ + if (hpa_is_hugify_lazy(shard) || opt_experimental_hpa_enforce_hugify) { + malloc_mutex_unlock(tsdn, &shard->mtx); + bool err = shard->central->hooks.hugify( + hpdata_addr_get(to_hugify), HUGEPAGE, + shard->opts.hugify_sync); + malloc_mutex_lock(tsdn, &shard->mtx); + shard->stats.nhugifies++; + if (err) { + /* + * When asynchronous hugification is used + * (shard->opts.hugify_sync option is false), we are not + * expecting to get here, unless something went terrible + * wrong. Because underlying syscall is only setting + * kernel flag for memory range (actual hugification + * happens asynchronously and we are not getting any + * feedback about its outcome), we expect syscall to be + * successful all the time. + */ + shard->stats.nhugify_failures++; + } + } psset_update_begin(&shard->psset, to_hugify); hpdata_hugify(to_hugify); @@ -512,51 +575,87 @@ hpa_try_hugify(tsdn_t *tsdn, hpa_shard_t *shard) { return true; } +static bool +hpa_min_purge_interval_passed(tsdn_t *tsdn, hpa_shard_t *shard) { + malloc_mutex_assert_owner(tsdn, &shard->mtx); + uint64_t since_last_purge_ms = nstime_ms_between( + &shard->last_purge, &shard->last_time_work_attempted); + return since_last_purge_ms >= shard->opts.min_purge_interval_ms; +} + +static inline void +hpa_update_time_work_attempted(tsdn_t *tsdn, hpa_shard_t *shard) { + malloc_mutex_assert_owner(tsdn, &shard->mtx); + shard->central->hooks.curtime(&shard->last_time_work_attempted, + /* first_reading */ false); +} + /* * Execution of deferred work is forced if it's triggered by an explicit * hpa_shard_do_deferred_work() call. */ static void -hpa_shard_maybe_do_deferred_work(tsdn_t *tsdn, hpa_shard_t *shard, - bool forced) { +hpa_shard_maybe_do_deferred_work( + tsdn_t *tsdn, hpa_shard_t *shard, bool forced) { malloc_mutex_assert_owner(tsdn, &shard->mtx); if (!forced && shard->opts.deferral_allowed) { return; } + hpa_update_time_work_attempted(tsdn, shard); + /* * If we're on a background thread, do work so long as there's work to * be done. Otherwise, bound latency to not be *too* bad by doing at * most a small fixed number of operations. */ - bool hugified = false; - bool purged = false; size_t max_ops = (forced ? (size_t)-1 : 16); size_t nops = 0; - do { + + /* + * Always purge before hugifying, to make sure we get some + * ability to hit our quiescence targets. + */ + + /* + * Make sure we respect purge interval setting and don't purge + * too frequently. + */ + if (hpa_min_purge_interval_passed(tsdn, shard)) { + size_t max_purges = max_ops; /* - * Always purge before hugifying, to make sure we get some - * ability to hit our quiescence targets. + * Limit number of hugepages (slabs) to purge. + * When experimental_max_purge_nhp option is used, there is no + * guarantee we'll always respect dirty_mult option. Option + * experimental_max_purge_nhp provides a way to configure same + * behavior as was possible before, with buggy implementation + * of purging algorithm. */ - purged = false; - while (hpa_should_purge(tsdn, shard) && nops < max_ops) { - purged = hpa_try_purge(tsdn, shard); - if (purged) { - nops++; - } - } - hugified = hpa_try_hugify(tsdn, shard); - if (hugified) { - nops++; + ssize_t max_purge_nhp = shard->opts.experimental_max_purge_nhp; + if (max_purge_nhp != -1 && max_purges > (size_t)max_purge_nhp) { + max_purges = max_purge_nhp; } + malloc_mutex_assert_owner(tsdn, &shard->mtx); + nops += hpa_purge(tsdn, shard, max_purges); malloc_mutex_assert_owner(tsdn, &shard->mtx); - } while ((hugified || purged) && nops < max_ops); + } + + /* + * Try to hugify at least once, even if we out of operations to make at + * least some progress on hugification even at worst case. + */ + while (hpa_try_hugify(tsdn, shard) && nops < max_ops) { + malloc_mutex_assert_owner(tsdn, &shard->mtx); + nops++; + } } static edata_t * -hpa_try_alloc_one_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, - bool *oom) { - bool err; +hpa_try_alloc_one_no_grow( + tsdn_t *tsdn, hpa_shard_t *shard, size_t size, bool *oom) { + malloc_mutex_assert_owner(tsdn, &shard->mtx); + + bool err; edata_t *edata = edata_cache_fast_get(tsdn, &shard->ecf); if (edata == NULL) { *oom = true; @@ -576,15 +675,17 @@ hpa_try_alloc_one_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, * If the pageslab used to be empty, treat it as though it's * brand new for fragmentation-avoidance purposes; what we're * trying to approximate is the age of the allocations *in* that - * pageslab, and the allocations in the new pageslab are - * definitionally the youngest in this hpa shard. + * pageslab, and the allocations in the new pageslab are by + * definition the youngest in this hpa shard. */ hpdata_age_set(ps, shard->age_counter++); } void *addr = hpdata_reserve_alloc(ps, size); - edata_init(edata, shard->ind, addr, size, /* slab */ false, - SC_NSIZES, /* sn */ hpdata_age_get(ps), extent_state_active, + JE_USDT(hpa_alloc, 5, shard->ind, addr, size, hpdata_nactive_get(ps), + hpdata_age_get(ps)); + edata_init(edata, shard->ind, addr, size, /* slab */ false, SC_NSIZES, + /* sn */ hpdata_age_get(ps), extent_state_active, /* zeroed */ false, /* committed */ true, EXTENT_PAI_HPA, EXTENT_NOT_HEAD); edata_ps_set(edata, ps); @@ -597,11 +698,14 @@ hpa_try_alloc_one_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, * dropped. This would force us to deal with a pageslab eviction down * the error pathway, which is a pain. */ - err = emap_register_boundary(tsdn, shard->emap, edata, - SC_NSIZES, /* slab */ false); + err = emap_register_boundary( + tsdn, shard->emap, edata, SC_NSIZES, /* slab */ false); if (err) { - hpdata_unreserve(ps, edata_addr_get(edata), - edata_size_get(edata)); + hpdata_unreserve( + ps, edata_addr_get(edata), edata_size_get(edata)); + JE_USDT(hpa_dalloc_err, 5, shard->ind, edata_addr_get(edata), + edata_size_get(edata), hpdata_nactive_get(ps), + hpdata_age_get(ps)); /* * We should arguably reset dirty state here, but this would * require some sort of prepare + commit functionality that's a @@ -623,14 +727,14 @@ hpa_try_alloc_one_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, } static size_t -hpa_try_alloc_batch_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, - bool *oom, size_t nallocs, edata_list_active_t *results, +hpa_try_alloc_batch_no_grow_locked(tsdn_t *tsdn, hpa_shard_t *shard, + size_t size, bool *oom, size_t nallocs, edata_list_active_t *results, bool *deferred_work_generated) { - malloc_mutex_lock(tsdn, &shard->mtx); + malloc_mutex_assert_owner(tsdn, &shard->mtx); size_t nsuccess = 0; for (; nsuccess < nallocs; nsuccess++) { - edata_t *edata = hpa_try_alloc_one_no_grow(tsdn, shard, size, - oom); + edata_t *edata = hpa_try_alloc_one_no_grow( + tsdn, shard, size, oom); if (edata == NULL) { break; } @@ -639,6 +743,16 @@ hpa_try_alloc_batch_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, hpa_shard_maybe_do_deferred_work(tsdn, shard, /* forced */ false); *deferred_work_generated = hpa_shard_has_deferred_work(tsdn, shard); + return nsuccess; +} + +static size_t +hpa_try_alloc_batch_no_grow(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, + bool *oom, size_t nallocs, edata_list_active_t *results, + bool *deferred_work_generated) { + malloc_mutex_lock(tsdn, &shard->mtx); + size_t nsuccess = hpa_try_alloc_batch_no_grow_locked( + tsdn, shard, size, oom, nallocs, results, deferred_work_generated); malloc_mutex_unlock(tsdn, &shard->mtx); return nsuccess; } @@ -647,11 +761,12 @@ static size_t hpa_alloc_batch_psset(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, size_t nallocs, edata_list_active_t *results, bool *deferred_work_generated) { - assert(size <= shard->opts.slab_max_alloc); + assert(size <= HUGEPAGE); + assert(size <= shard->opts.slab_max_alloc || size == sz_s2u(size)); bool oom = false; - size_t nsuccess = hpa_try_alloc_batch_no_grow(tsdn, shard, size, &oom, - nallocs, results, deferred_work_generated); + size_t nsuccess = hpa_try_alloc_batch_no_grow( + tsdn, shard, size, &oom, nallocs, results, deferred_work_generated); if (nsuccess == nallocs || oom) { return nsuccess; @@ -678,24 +793,24 @@ hpa_alloc_batch_psset(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, * deallocations (and allocations of smaller sizes) may still succeed * while we're doing this potentially expensive system call. */ - hpdata_t *ps = hpa_central_extract(tsdn, shard->central, size, &oom); + hpdata_t *ps = hpa_central_extract(tsdn, shard->central, size, + shard->age_counter++, hpa_is_hugify_eager(shard), &oom); if (ps == NULL) { malloc_mutex_unlock(tsdn, &shard->grow_mtx); return nsuccess; } /* - * We got the pageslab; allocate from it. This does an unlock followed - * by a lock on the same mutex, and holds the grow mutex while doing - * deferred work, but this is an uncommon path; the simplicity is worth - * it. + * We got the pageslab; allocate from it. This holds the grow mutex + * while doing deferred work, but this is an uncommon path; the + * simplicity is worth it. */ malloc_mutex_lock(tsdn, &shard->mtx); psset_insert(&shard->psset, ps); + nsuccess += hpa_try_alloc_batch_no_grow_locked(tsdn, shard, size, &oom, + nallocs - nsuccess, results, deferred_work_generated); malloc_mutex_unlock(tsdn, &shard->mtx); - nsuccess += hpa_try_alloc_batch_no_grow(tsdn, shard, size, &oom, - nallocs - nsuccess, results, deferred_work_generated); /* * Drop grow_mtx before doing deferred work; other threads blocked on it * should be allowed to proceed while we're working. @@ -707,32 +822,16 @@ hpa_alloc_batch_psset(tsdn_t *tsdn, hpa_shard_t *shard, size_t size, static hpa_shard_t * hpa_from_pai(pai_t *self) { - assert(self->alloc = &hpa_alloc); - assert(self->expand = &hpa_expand); - assert(self->shrink = &hpa_shrink); - assert(self->dalloc = &hpa_dalloc); + assert(self->alloc == &hpa_alloc); + assert(self->expand == &hpa_expand); + assert(self->shrink == &hpa_shrink); + assert(self->dalloc == &hpa_dalloc); return (hpa_shard_t *)self; } -static size_t -hpa_alloc_batch(tsdn_t *tsdn, pai_t *self, size_t size, size_t nallocs, - edata_list_active_t *results, bool *deferred_work_generated) { - assert(nallocs > 0); - assert((size & PAGE_MASK) == 0); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); - hpa_shard_t *shard = hpa_from_pai(self); - - if (size > shard->opts.slab_max_alloc) { - return 0; - } - - size_t nsuccess = hpa_alloc_batch_psset(tsdn, shard, size, nallocs, - results, deferred_work_generated); - - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); - +static void +hpa_assert_results( + tsdn_t *tsdn, hpa_shard_t *shard, edata_list_active_t *results) { /* * Guard the sanity checks with config_debug because the loop cannot be * proven non-circular by the compiler, even if everything within the @@ -740,20 +839,19 @@ hpa_alloc_batch(tsdn_t *tsdn, pai_t *self, size_t size, size_t nallocs, */ if (config_debug) { edata_t *edata; - ql_foreach(edata, &results->head, ql_link_active) { + ql_foreach (edata, &results->head, ql_link_active) { emap_assert_mapped(tsdn, shard->emap, edata); assert(edata_pai_get(edata) == EXTENT_PAI_HPA); assert(edata_state_get(edata) == extent_state_active); assert(edata_arena_ind_get(edata) == shard->ind); - assert(edata_szind_get_maybe_invalid(edata) == - SC_NSIZES); + assert( + edata_szind_get_maybe_invalid(edata) == SC_NSIZES); assert(!edata_slab_get(edata)); assert(edata_committed_get(edata)); assert(edata_base_get(edata) == edata_addr_get(edata)); assert(edata_base_get(edata) != NULL); } } - return nsuccess; } static edata_t * @@ -761,23 +859,59 @@ hpa_alloc(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, bool guarded, bool frequent_reuse, bool *deferred_work_generated) { assert((size & PAGE_MASK) == 0); assert(!guarded); - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); /* We don't handle alignment or zeroing for now. */ if (alignment > PAGE || zero) { return NULL; } + hpa_shard_t *shard = hpa_from_pai(self); + /* - * An alloc with alignment == PAGE and zero == false is equivalent to a - * batch alloc of 1. Just do that, so we can share code. + * frequent_use here indicates this request comes from the arena bins, + * in which case it will be split into slabs, and therefore there is no + * intrinsic slack in the allocation (the entire range of allocated size + * will be accessed). + * + * In this case bypass the slab_max_alloc limit (if still within the + * huge page size). These requests do not concern internal + * fragmentation with huge pages (again, the full size will be used). */ + if (!(frequent_reuse && size <= HUGEPAGE) + && (size > shard->opts.slab_max_alloc)) { + return NULL; + } + edata_t *edata = sec_alloc(tsdn, &shard->sec, size); + if (edata != NULL) { + return edata; + } + size_t nallocs = sec_size_supported(&shard->sec, size) + ? shard->sec.opts.batch_fill_extra + 1 + : 1; edata_list_active_t results; edata_list_active_init(&results); - size_t nallocs = hpa_alloc_batch(tsdn, self, size, /* nallocs */ 1, - &results, deferred_work_generated); - assert(nallocs == 0 || nallocs == 1); - edata_t *edata = edata_list_active_first(&results); + size_t nsuccess = hpa_alloc_batch_psset( + tsdn, shard, size, nallocs, &results, deferred_work_generated); + hpa_assert_results(tsdn, shard, &results); + edata = edata_list_active_first(&results); + + if (edata != NULL) { + edata_list_active_remove(&results, edata); + assert(nsuccess > 0); + nsuccess--; + } + if (nsuccess > 0) { + assert(sec_size_supported(&shard->sec, size)); + sec_fill(tsdn, &shard->sec, size, &results, nsuccess); + /* Unlikely rollback in case of overfill */ + if (!edata_list_active_empty(&results)) { + hpa_dalloc_batch( + tsdn, self, &results, deferred_work_generated); + } + } + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); return edata; } @@ -789,8 +923,8 @@ hpa_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, } static bool -hpa_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool *deferred_work_generated) { +hpa_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, + size_t new_size, bool *deferred_work_generated) { /* Shrink not yet supported. */ return true; } @@ -835,12 +969,14 @@ hpa_dalloc_locked(tsdn_t *tsdn, hpa_shard_t *shard, edata_t *edata) { hpdata_t *ps = edata_ps_get(edata); /* Currently, all edatas come from pageslabs. */ assert(ps != NULL); - void *unreserve_addr = edata_addr_get(edata); + void *unreserve_addr = edata_addr_get(edata); size_t unreserve_size = edata_size_get(edata); edata_cache_fast_put(tsdn, &shard->ecf, edata); psset_update_begin(&shard->psset, ps); hpdata_unreserve(ps, unreserve_addr, unreserve_size); + JE_USDT(hpa_dalloc, 5, shard->ind, unreserve_addr, unreserve_size, + hpdata_nactive_get(ps), hpdata_age_get(ps)); hpa_update_purge_hugify_eligibility(tsdn, shard, ps); psset_update_end(&shard->psset, ps); } @@ -851,7 +987,7 @@ hpa_dalloc_batch(tsdn_t *tsdn, pai_t *self, edata_list_active_t *list, hpa_shard_t *shard = hpa_from_pai(self); edata_t *edata; - ql_foreach(edata, &list->head, ql_link_active) { + ql_foreach (edata, &list->head, ql_link_active) { hpa_dalloc_prepare_unlocked(tsdn, shard, edata); } @@ -862,20 +998,28 @@ hpa_dalloc_batch(tsdn_t *tsdn, pai_t *self, edata_list_active_t *list, hpa_dalloc_locked(tsdn, shard, edata); } hpa_shard_maybe_do_deferred_work(tsdn, shard, /* forced */ false); - *deferred_work_generated = - hpa_shard_has_deferred_work(tsdn, shard); + *deferred_work_generated = hpa_shard_has_deferred_work(tsdn, shard); malloc_mutex_unlock(tsdn, &shard->mtx); } static void -hpa_dalloc(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated) { +hpa_dalloc( + tsdn_t *tsdn, pai_t *self, edata_t *edata, bool *deferred_work_generated) { assert(!edata_guarded_get(edata)); - /* Just a dalloc_batch of size 1; this lets us share logic. */ + edata_list_active_t dalloc_list; edata_list_active_init(&dalloc_list); edata_list_active_append(&dalloc_list, edata); + + hpa_shard_t *shard = hpa_from_pai(self); + sec_dalloc(tsdn, &shard->sec, &dalloc_list); + if (edata_list_active_empty(&dalloc_list)) { + /* sec consumed the pointer */ + *deferred_work_generated = false; + return; + } + /* We may have more than one pointer to flush now */ hpa_dalloc_batch(tsdn, self, &dalloc_list, deferred_work_generated); } @@ -886,14 +1030,14 @@ hpa_dalloc(tsdn_t *tsdn, pai_t *self, edata_t *edata, static uint64_t hpa_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { hpa_shard_t *shard = hpa_from_pai(self); - uint64_t time_ns = BACKGROUND_THREAD_DEFERRED_MAX; + uint64_t time_ns = BACKGROUND_THREAD_DEFERRED_MAX; malloc_mutex_lock(tsdn, &shard->mtx); hpdata_t *to_hugify = psset_pick_hugify(&shard->psset); if (to_hugify != NULL) { - nstime_t time_hugify_allowed = - hpdata_time_hugify_allowed(to_hugify); + nstime_t time_hugify_allowed = hpdata_time_hugify_allowed( + to_hugify); uint64_t since_hugify_allowed_ms = shard->central->hooks.ms_since(&time_hugify_allowed); /* @@ -901,8 +1045,8 @@ hpa_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { * sleep for the rest. */ if (since_hugify_allowed_ms < shard->opts.hugify_delay_ms) { - time_ns = shard->opts.hugify_delay_ms - - since_hugify_allowed_ms; + time_ns = shard->opts.hugify_delay_ms + - since_hugify_allowed_ms; time_ns *= 1000 * 1000; } else { malloc_mutex_unlock(tsdn, &shard->mtx); @@ -924,8 +1068,8 @@ hpa_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { if (since_last_purge_ms < shard->opts.min_purge_interval_ms) { uint64_t until_purge_ns; - until_purge_ns = shard->opts.min_purge_interval_ms - - since_last_purge_ms; + until_purge_ns = shard->opts.min_purge_interval_ms + - since_last_purge_ms; until_purge_ns *= 1000 * 1000; if (until_purge_ns < time_ns) { @@ -939,15 +1083,32 @@ hpa_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { return time_ns; } +static void +hpa_sec_flush_impl(tsdn_t *tsdn, hpa_shard_t *shard) { + edata_list_active_t to_flush; + edata_list_active_init(&to_flush); + + sec_flush(tsdn, &shard->sec, &to_flush); + bool deferred_work_generated; + hpa_dalloc_batch( + tsdn, (pai_t *)shard, &to_flush, &deferred_work_generated); +} + void hpa_shard_disable(tsdn_t *tsdn, hpa_shard_t *shard) { hpa_do_consistency_checks(shard); + hpa_sec_flush_impl(tsdn, shard); malloc_mutex_lock(tsdn, &shard->mtx); edata_cache_fast_disable(tsdn, &shard->ecf); malloc_mutex_unlock(tsdn, &shard->mtx); } +void +hpa_shard_flush(tsdn_t *tsdn, hpa_shard_t *shard) { + hpa_sec_flush_impl(tsdn, shard); +} + static void hpa_shard_assert_stats_empty(psset_bin_stats_t *bin_stats) { assert(bin_stats->npageslabs == 0); @@ -969,6 +1130,7 @@ hpa_assert_empty(tsdn_t *tsdn, hpa_shard_t *shard, psset_t *psset) { void hpa_shard_destroy(tsdn_t *tsdn, hpa_shard_t *shard) { hpa_do_consistency_checks(shard); + hpa_shard_flush(tsdn, shard); /* * By the time we're here, the arena code should have dalloc'd all the * active extents, which means we should have eventually evicted @@ -990,8 +1152,8 @@ hpa_shard_destroy(tsdn_t *tsdn, hpa_shard_t *shard) { } void -hpa_shard_set_deferral_allowed(tsdn_t *tsdn, hpa_shard_t *shard, - bool deferral_allowed) { +hpa_shard_set_deferral_allowed( + tsdn_t *tsdn, hpa_shard_t *shard, bool deferral_allowed) { hpa_do_consistency_checks(shard); malloc_mutex_lock(tsdn, &shard->mtx); @@ -1013,6 +1175,12 @@ hpa_shard_do_deferred_work(tsdn_t *tsdn, hpa_shard_t *shard) { malloc_mutex_unlock(tsdn, &shard->mtx); } +void +hpa_shard_prefork2(tsdn_t *tsdn, hpa_shard_t *shard) { + hpa_do_consistency_checks(shard); + sec_prefork2(tsdn, &shard->sec); +} + void hpa_shard_prefork3(tsdn_t *tsdn, hpa_shard_t *shard) { hpa_do_consistency_checks(shard); @@ -1031,6 +1199,7 @@ void hpa_shard_postfork_parent(tsdn_t *tsdn, hpa_shard_t *shard) { hpa_do_consistency_checks(shard); + sec_postfork_parent(tsdn, &shard->sec); malloc_mutex_postfork_parent(tsdn, &shard->grow_mtx); malloc_mutex_postfork_parent(tsdn, &shard->mtx); } @@ -1039,6 +1208,7 @@ void hpa_shard_postfork_child(tsdn_t *tsdn, hpa_shard_t *shard) { hpa_do_consistency_checks(shard); + sec_postfork_child(tsdn, &shard->sec); malloc_mutex_postfork_child(tsdn, &shard->grow_mtx); malloc_mutex_postfork_child(tsdn, &shard->mtx); } diff --git a/dep/jemalloc/src/hpa_central.c b/dep/jemalloc/src/hpa_central.c new file mode 100644 index 0000000000000..b4f770c2cb7a7 --- /dev/null +++ b/dep/jemalloc/src/hpa_central.c @@ -0,0 +1,121 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/hpa_central.h" +#include "jemalloc/internal/tsd.h" +#include "jemalloc/internal/witness.h" + +#define HPA_EDEN_SIZE (128 * HUGEPAGE) + +bool +hpa_central_init( + hpa_central_t *central, base_t *base, const hpa_hooks_t *hooks) { + /* malloc_conf processing should have filtered out these cases. */ + assert(hpa_supported()); + bool err; + err = malloc_mutex_init(¢ral->grow_mtx, "hpa_central_grow", + WITNESS_RANK_HPA_CENTRAL_GROW, malloc_mutex_rank_exclusive); + if (err) { + return true; + } + + central->base = base; + central->eden = NULL; + central->eden_len = 0; + central->hooks = *hooks; + return false; +} + +static hpdata_t * +hpa_alloc_ps(tsdn_t *tsdn, hpa_central_t *central) { + return (hpdata_t *)base_alloc( + tsdn, central->base, sizeof(hpdata_t), CACHELINE); +} + +hpdata_t * +hpa_central_extract(tsdn_t *tsdn, hpa_central_t *central, size_t size, + uint64_t age, bool hugify_eager, bool *oom) { + /* Don't yet support big allocations; these should get filtered out. */ + assert(size <= HUGEPAGE); + /* + * Should only try to extract from the central allocator if the local + * shard is exhausted. We should hold the grow_mtx on that shard. + */ + witness_assert_positive_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_HPA_SHARD_GROW); + + malloc_mutex_lock(tsdn, ¢ral->grow_mtx); + *oom = false; + + hpdata_t *ps = NULL; + bool start_as_huge = hugify_eager + || (init_system_thp_mode == system_thp_mode_always + && opt_experimental_hpa_start_huge_if_thp_always); + + /* Is eden a perfect fit? */ + if (central->eden != NULL && central->eden_len == HUGEPAGE) { + ps = hpa_alloc_ps(tsdn, central); + if (ps == NULL) { + *oom = true; + malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); + return NULL; + } + hpdata_init(ps, central->eden, age, start_as_huge); + central->eden = NULL; + central->eden_len = 0; + malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); + return ps; + } + + /* + * We're about to try to allocate from eden by splitting. If eden is + * NULL, we have to allocate it too. Otherwise, we just have to + * allocate an edata_t for the new psset. + */ + if (central->eden == NULL) { + /* Allocate address space, bailing if we fail. */ + void *new_eden = central->hooks.map(HPA_EDEN_SIZE); + if (new_eden == NULL) { + *oom = true; + malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); + return NULL; + } + if (hugify_eager) { + central->hooks.hugify( + new_eden, HPA_EDEN_SIZE, /* sync */ false); + } + ps = hpa_alloc_ps(tsdn, central); + if (ps == NULL) { + central->hooks.unmap(new_eden, HPA_EDEN_SIZE); + *oom = true; + malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); + return NULL; + } + central->eden = new_eden; + central->eden_len = HPA_EDEN_SIZE; + } else { + /* Eden is already nonempty; only need an edata for ps. */ + ps = hpa_alloc_ps(tsdn, central); + if (ps == NULL) { + *oom = true; + malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); + return NULL; + } + } + assert(ps != NULL); + assert(central->eden != NULL); + assert(central->eden_len > HUGEPAGE); + assert(central->eden_len % HUGEPAGE == 0); + assert(HUGEPAGE_ADDR2BASE(central->eden) == central->eden); + + hpdata_init(ps, central->eden, age, start_as_huge); + + char *eden_char = (char *)central->eden; + eden_char += HUGEPAGE; + central->eden = (void *)eden_char; + central->eden_len -= HUGEPAGE; + + malloc_mutex_unlock(tsdn, ¢ral->grow_mtx); + + return ps; +} diff --git a/dep/jemalloc/src/hpa_hooks.c b/dep/jemalloc/src/hpa_hooks.c index ade581e8dc031..2ec7029da4429 100644 --- a/dep/jemalloc/src/hpa_hooks.c +++ b/dep/jemalloc/src/hpa_hooks.c @@ -2,50 +2,75 @@ #include "jemalloc/internal/jemalloc_internal_includes.h" #include "jemalloc/internal/hpa_hooks.h" +#include "jemalloc/internal/jemalloc_probe.h" -static void *hpa_hooks_map(size_t size); -static void hpa_hooks_unmap(void *ptr, size_t size); -static void hpa_hooks_purge(void *ptr, size_t size); -static void hpa_hooks_hugify(void *ptr, size_t size); -static void hpa_hooks_dehugify(void *ptr, size_t size); -static void hpa_hooks_curtime(nstime_t *r_nstime, bool first_reading); +static void *hpa_hooks_map(size_t size); +static void hpa_hooks_unmap(void *ptr, size_t size); +static void hpa_hooks_purge(void *ptr, size_t size); +static bool hpa_hooks_hugify(void *ptr, size_t size, bool sync); +static void hpa_hooks_dehugify(void *ptr, size_t size); +static void hpa_hooks_curtime(nstime_t *r_nstime, bool first_reading); static uint64_t hpa_hooks_ms_since(nstime_t *past_nstime); +static bool hpa_hooks_vectorized_purge(void *vec, size_t vlen, size_t nbytes); -hpa_hooks_t hpa_hooks_default = { - &hpa_hooks_map, - &hpa_hooks_unmap, - &hpa_hooks_purge, - &hpa_hooks_hugify, - &hpa_hooks_dehugify, - &hpa_hooks_curtime, - &hpa_hooks_ms_since -}; +const hpa_hooks_t hpa_hooks_default = {&hpa_hooks_map, &hpa_hooks_unmap, + &hpa_hooks_purge, &hpa_hooks_hugify, &hpa_hooks_dehugify, + &hpa_hooks_curtime, &hpa_hooks_ms_since, &hpa_hooks_vectorized_purge}; static void * hpa_hooks_map(size_t size) { + /* + * During development, we're primarily concerned with systems + * that overcommit. Eventually, we should be more careful here. + */ + bool commit = true; - return pages_map(NULL, size, HUGEPAGE, &commit); + assert((size & HUGEPAGE_MASK) == 0); + void *ret = pages_map(NULL, size, HUGEPAGE, &commit); + JE_USDT(hpa_map, 2, size, ret); + return ret; } static void hpa_hooks_unmap(void *ptr, size_t size) { + JE_USDT(hpa_unmap, 2, size, ptr); pages_unmap(ptr, size); } static void hpa_hooks_purge(void *ptr, size_t size) { + JE_USDT(hpa_purge, 2, size, ptr); pages_purge_forced(ptr, size); } -static void -hpa_hooks_hugify(void *ptr, size_t size) { +static bool +hpa_hooks_hugify(void *ptr, size_t size, bool sync) { + /* + * We mark memory range as huge independently on which hugification + * technique is used (synchronous or asynchronous) to have correct + * VmFlags set for introspection and accounting purposes. If + * synchronous hugification is enabled and pages_collapse call fails, + * then we hope memory range will be hugified asynchronously by + * khugepaged eventually. Right now, 3 out of 4 error return codes of + * madvise(..., MADV_COLLAPSE) are retryable. Instead of retrying, we + * just fallback to asynchronous khugepaged hugification to simplify + * implementation, even if we might know khugepaged fallback will not + * be successful (current madvise(..., MADV_COLLAPSE) implementation + * hints, when EINVAL is returned it is likely that khugepaged won't be + * able to collapse memory range into hugepage either). + */ bool err = pages_huge(ptr, size); - (void)err; + if (sync) { + err = pages_collapse(ptr, size); + } + JE_USDT(hpa_hugify, 4, size, ptr, err, sync); + return err; } static void hpa_hooks_dehugify(void *ptr, size_t size) { bool err = pages_nohuge(ptr, size); + JE_USDT(hpa_dehugify, 3, size, ptr, err); (void)err; } @@ -59,5 +84,17 @@ hpa_hooks_curtime(nstime_t *r_nstime, bool first_reading) { static uint64_t hpa_hooks_ms_since(nstime_t *past_nstime) { - return nstime_ns_since(past_nstime) / 1000 / 1000; + return nstime_ms_since(past_nstime); +} + +/* Return true if we did not purge all nbytes, or on some error */ +static bool +hpa_hooks_vectorized_purge(void *vec, size_t vlen, size_t nbytes) { +#ifdef JEMALLOC_HAVE_PROCESS_MADVISE + bool err = pages_purge_process_madvise(vec, vlen, nbytes); + JE_USDT(hpa_vectorized_purge, 3, nbytes, vlen, err); + return err; +#else + return true; +#endif } diff --git a/dep/jemalloc/src/hpa_utils.c b/dep/jemalloc/src/hpa_utils.c new file mode 100644 index 0000000000000..59bb0d1f4c1ab --- /dev/null +++ b/dep/jemalloc/src/hpa_utils.c @@ -0,0 +1,33 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/hpa_utils.h" + +void +hpa_purge_batch(hpa_hooks_t *hooks, hpa_purge_item_t *batch, size_t batch_sz) { + assert(batch_sz > 0); + + size_t len = hpa_process_madvise_max_iovec_len(); + VARIABLE_ARRAY(hpa_io_vector_t, vec, len); + + hpa_range_accum_t accum; + hpa_range_accum_init(&accum, vec, len); + + for (size_t i = 0; i < batch_sz; ++i) { + /* Actually do the purging, now that the lock is dropped. */ + if (batch[i].dehugify) { + hooks->dehugify(hpdata_addr_get(batch[i].hp), HUGEPAGE); + } + void *purge_addr; + size_t purge_size; + size_t total_purged_on_one_hp = 0; + while (hpdata_purge_next( + batch[i].hp, &batch[i].state, &purge_addr, &purge_size)) { + total_purged_on_one_hp += purge_size; + assert(total_purged_on_one_hp <= HUGEPAGE); + hpa_range_accum_add( + &accum, purge_addr, purge_size, hooks); + } + } + hpa_range_accum_finish(&accum, hooks); +} diff --git a/dep/jemalloc/src/hpdata.c b/dep/jemalloc/src/hpdata.c index e7d7294c78227..e17d9ecff08ff 100644 --- a/dep/jemalloc/src/hpdata.c +++ b/dep/jemalloc/src/hpdata.c @@ -17,11 +17,10 @@ hpdata_age_comp(const hpdata_t *a, const hpdata_t *b) { ph_gen(, hpdata_age_heap, hpdata_t, age_link, hpdata_age_comp) -void -hpdata_init(hpdata_t *hpdata, void *addr, uint64_t age) { + void hpdata_init(hpdata_t *hpdata, void *addr, uint64_t age, bool is_huge) { hpdata_addr_set(hpdata, addr); hpdata_age_set(hpdata, age); - hpdata->h_huge = false; + hpdata->h_huge = is_huge; hpdata->h_alloc_allowed = true; hpdata->h_in_psset_alloc_container = false; hpdata->h_purge_allowed = false; @@ -34,8 +33,16 @@ hpdata_init(hpdata_t *hpdata, void *addr, uint64_t age) { hpdata_longest_free_range_set(hpdata, HUGEPAGE_PAGES); hpdata->h_nactive = 0; fb_init(hpdata->active_pages, HUGEPAGE_PAGES); - hpdata->h_ntouched = 0; - fb_init(hpdata->touched_pages, HUGEPAGE_PAGES); + if (is_huge) { + fb_set_range( + hpdata->touched_pages, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES); + hpdata->h_ntouched = HUGEPAGE_PAGES; + } else { + fb_init(hpdata->touched_pages, HUGEPAGE_PAGES); + hpdata->h_ntouched = 0; + } + nstime_init_zero(&hpdata->h_time_purge_allowed); + hpdata->h_purged_when_empty_and_huge = false; hpdata_assert_consistent(hpdata); } @@ -66,8 +73,8 @@ hpdata_reserve_alloc(hpdata_t *hpdata, size_t sz) { size_t largest_unchosen_range = 0; while (true) { - bool found = fb_urange_iter(hpdata->active_pages, - HUGEPAGE_PAGES, start, &begin, &len); + bool found = fb_urange_iter( + hpdata->active_pages, HUGEPAGE_PAGES, start, &begin, &len); /* * A precondition to this function is that hpdata must be able * to serve the allocation. @@ -97,8 +104,8 @@ hpdata_reserve_alloc(hpdata_t *hpdata, size_t sz) { * We might be about to dirty some memory for the first time; update our * count if so. */ - size_t new_dirty = fb_ucount(hpdata->touched_pages, HUGEPAGE_PAGES, - result, npages); + size_t new_dirty = fb_ucount( + hpdata->touched_pages, HUGEPAGE_PAGES, result, npages); fb_set_range(hpdata->touched_pages, HUGEPAGE_PAGES, result, npages); hpdata->h_ntouched += new_dirty; @@ -129,8 +136,8 @@ hpdata_reserve_alloc(hpdata_t *hpdata, size_t sz) { } hpdata_assert_consistent(hpdata); - return (void *)( - (uintptr_t)hpdata_addr_get(hpdata) + (result << LG_PAGE)); + return ( + void *)((byte_t *)hpdata_addr_get(hpdata) + (result << LG_PAGE)); } void @@ -148,10 +155,10 @@ hpdata_unreserve(hpdata_t *hpdata, void *addr, size_t sz) { fb_unset_range(hpdata->active_pages, HUGEPAGE_PAGES, begin, npages); /* We might have just created a new, larger range. */ - size_t new_begin = (fb_fls(hpdata->active_pages, HUGEPAGE_PAGES, - begin) + 1); - size_t new_end = fb_ffs(hpdata->active_pages, HUGEPAGE_PAGES, - begin + npages - 1); + size_t new_begin = (fb_fls(hpdata->active_pages, HUGEPAGE_PAGES, begin) + + 1); + size_t new_end = fb_ffs( + hpdata->active_pages, HUGEPAGE_PAGES, begin + npages - 1); size_t new_range_len = new_end - new_begin; if (new_range_len > old_longest_range) { @@ -164,7 +171,8 @@ hpdata_unreserve(hpdata_t *hpdata, void *addr, size_t sz) { } size_t -hpdata_purge_begin(hpdata_t *hpdata, hpdata_purge_state_t *purge_state) { +hpdata_purge_begin( + hpdata_t *hpdata, hpdata_purge_state_t *purge_state, size_t *nranges) { hpdata_assert_consistent(hpdata); /* * See the comment below; we might purge any inactive extent, so it's @@ -211,34 +219,36 @@ hpdata_purge_begin(hpdata_t *hpdata, hpdata_purge_state_t *purge_state) { fb_group_t dirty_pages[FB_NGROUPS(HUGEPAGE_PAGES)]; fb_init(dirty_pages, HUGEPAGE_PAGES); fb_bit_not(dirty_pages, hpdata->active_pages, HUGEPAGE_PAGES); - fb_bit_and(dirty_pages, dirty_pages, hpdata->touched_pages, - HUGEPAGE_PAGES); + fb_bit_and( + dirty_pages, dirty_pages, hpdata->touched_pages, HUGEPAGE_PAGES); fb_init(purge_state->to_purge, HUGEPAGE_PAGES); size_t next_bit = 0; + *nranges = 0; while (next_bit < HUGEPAGE_PAGES) { - size_t next_dirty = fb_ffs(dirty_pages, HUGEPAGE_PAGES, - next_bit); + size_t next_dirty = fb_ffs( + dirty_pages, HUGEPAGE_PAGES, next_bit); /* Recall that fb_ffs returns nbits if no set bit is found. */ if (next_dirty == HUGEPAGE_PAGES) { break; } - size_t next_active = fb_ffs(hpdata->active_pages, - HUGEPAGE_PAGES, next_dirty); + size_t next_active = fb_ffs( + hpdata->active_pages, HUGEPAGE_PAGES, next_dirty); /* * Don't purge past the end of the dirty extent, into retained * pages. This helps the kernel a tiny bit, but honestly it's * mostly helpful for testing (where we tend to write test cases * that think in terms of the dirty ranges). */ - ssize_t last_dirty = fb_fls(dirty_pages, HUGEPAGE_PAGES, - next_active - 1); + ssize_t last_dirty = fb_fls( + dirty_pages, HUGEPAGE_PAGES, next_active - 1); assert(last_dirty >= 0); assert((size_t)last_dirty >= next_dirty); assert((size_t)last_dirty - next_dirty + 1 <= HUGEPAGE_PAGES); fb_set_range(purge_state->to_purge, HUGEPAGE_PAGES, next_dirty, last_dirty - next_dirty + 1); + (*nranges)++; next_bit = next_active + 1; } @@ -246,9 +256,11 @@ hpdata_purge_begin(hpdata_t *hpdata, hpdata_purge_state_t *purge_state) { size_t ndirty = hpdata->h_ntouched - hpdata->h_nactive; purge_state->ndirty_to_purge = ndirty; assert(ndirty <= fb_scount( - purge_state->to_purge, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES)); - assert(ndirty == fb_scount(dirty_pages, HUGEPAGE_PAGES, 0, - HUGEPAGE_PAGES)); + purge_state->to_purge, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES)); + assert(ndirty + == fb_scount(dirty_pages, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES)); + assert(*nranges <= ndirty); + assert(ndirty == 0 || *nranges > 0); hpdata_assert_consistent(hpdata); @@ -276,8 +288,8 @@ hpdata_purge_next(hpdata_t *hpdata, hpdata_purge_state_t *purge_state, return false; } - *r_purge_addr = (void *)( - (uintptr_t)hpdata_addr_get(hpdata) + purge_begin * PAGE); + *r_purge_addr = (void *)((byte_t *)hpdata_addr_get(hpdata) + + purge_begin * PAGE); *r_purge_size = purge_len * PAGE; purge_state->next_purge_search_begin = purge_begin + purge_len; @@ -294,12 +306,13 @@ hpdata_purge_end(hpdata_t *hpdata, hpdata_purge_state_t *purge_state) { /* See the comment in reserve. */ assert(!hpdata->h_in_psset || hpdata->h_updating); - assert(purge_state->npurged == fb_scount(purge_state->to_purge, - HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES)); + assert(purge_state->npurged + == fb_scount( + purge_state->to_purge, HUGEPAGE_PAGES, 0, HUGEPAGE_PAGES)); assert(purge_state->npurged >= purge_state->ndirty_to_purge); - fb_bit_not(purge_state->to_purge, purge_state->to_purge, - HUGEPAGE_PAGES); + fb_bit_not( + purge_state->to_purge, purge_state->to_purge, HUGEPAGE_PAGES); fb_bit_and(hpdata->touched_pages, hpdata->touched_pages, purge_state->to_purge, HUGEPAGE_PAGES); assert(hpdata->h_ntouched >= purge_state->ndirty_to_purge); diff --git a/dep/jemalloc/src/inspect.c b/dep/jemalloc/src/inspect.c index 911b5d524ac3c..116e77a18364f 100644 --- a/dep/jemalloc/src/inspect.c +++ b/dep/jemalloc/src/inspect.c @@ -1,9 +1,10 @@ #include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_includes.h" +#include "jemalloc/internal/inspect.h" void -inspect_extent_util_stats_get(tsdn_t *tsdn, const void *ptr, size_t *nfree, - size_t *nregs, size_t *size) { +inspect_extent_util_stats_get( + tsdn_t *tsdn, const void *ptr, size_t *nfree, size_t *nregs, size_t *size) { assert(ptr != NULL && nfree != NULL && nregs != NULL && size != NULL); const edata_t *edata = emap_edata_lookup(tsdn, &arena_emap_global, ptr); @@ -56,7 +57,7 @@ inspect_extent_util_stats_verbose_get(tsdn_t *tsdn, const void *ptr, &arenas[edata_arena_ind_get(edata)], ATOMIC_RELAXED); assert(arena != NULL); const unsigned binshard = edata_binshard_get(edata); - bin_t *bin = arena_get_bin(arena, szind, binshard); + bin_t *bin = arena_get_bin(arena, szind, binshard); malloc_mutex_lock(tsdn, &bin->lock); if (config_stats) { diff --git a/dep/jemalloc/src/jemalloc.c b/dep/jemalloc/src/jemalloc.c index 7655de4e2f3ae..1ca397262acd3 100644 --- a/dep/jemalloc/src/jemalloc.c +++ b/dep/jemalloc/src/jemalloc.c @@ -1,4 +1,3 @@ -#define JEMALLOC_C_ #include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_includes.h" @@ -26,15 +25,17 @@ #include "jemalloc/internal/thread_event.h" #include "jemalloc/internal/util.h" +#include "jemalloc/internal/conf.h" + /******************************************************************************/ /* Data. */ /* Runtime configuration options. */ -const char *je_malloc_conf +const char *je_malloc_conf #ifndef _WIN32 JEMALLOC_ATTR(weak) #endif - ; + ; /* * The usual rule is that the closer to runtime you are, the higher priority * your configuration settings are (so the jemalloc config options get lower @@ -42,7 +43,7 @@ const char *je_malloc_conf * setting, which gets lower priority than the environment settings). * * But it's a fairly common use case in some testing environments for a user to - * be able to control the binary, but nothing else (e.g. a performancy canary + * be able to control the binary, but nothing else (e.g. a performance canary * uses the production OS and environment variables, but can run any binary in * those circumstances). For these use cases, it's handy to have an in-binary * mechanism for overriding environment variable settings, with the idea that if @@ -52,20 +53,23 @@ const char *je_malloc_conf * We don't actually want this to be widespread, so we'll give it a silly name * and not mention it in headers or documentation. */ -const char *je_malloc_conf_2_conf_harder +const char *je_malloc_conf_2_conf_harder #ifndef _WIN32 JEMALLOC_ATTR(weak) #endif - ; + ; + +const char *opt_malloc_conf_symlink = NULL; +const char *opt_malloc_conf_env_var = NULL; -bool opt_abort = +bool opt_abort = #ifdef JEMALLOC_DEBUG true #else false #endif ; -bool opt_abort_conf = +bool opt_abort_conf = #ifdef JEMALLOC_DEBUG true #else @@ -73,29 +77,29 @@ bool opt_abort_conf = #endif ; /* Intentionally default off, even with debug builds. */ -bool opt_confirm_conf = false; -const char *opt_junk = +bool opt_confirm_conf = false; +const char *opt_junk = #if (defined(JEMALLOC_DEBUG) && defined(JEMALLOC_FILL)) "true" #else "false" #endif ; -bool opt_junk_alloc = +bool opt_junk_alloc = #if (defined(JEMALLOC_DEBUG) && defined(JEMALLOC_FILL)) true #else false #endif ; -bool opt_junk_free = +bool opt_junk_free = #if (defined(JEMALLOC_DEBUG) && defined(JEMALLOC_FILL)) true #else false #endif ; -bool opt_trust_madvise = +bool opt_trust_madvise = #ifdef JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS false #else @@ -121,10 +125,17 @@ zero_realloc_action_t opt_zero_realloc_action = atomic_zu_t zero_realloc_count = ATOMIC_INIT(0); -const char *zero_realloc_mode_names[] = { - "alloc", - "free", - "abort", +/* + * Disable large size classes is now the default behavior in jemalloc. + * Although it is configurable in MALLOC_CONF, this is mainly for debugging + * purposes and should not be tuned. + */ +bool opt_disable_large_size_classes = true; + +const char *const zero_realloc_mode_names[] = { + "alloc", + "free", + "abort", }; /* @@ -134,33 +145,44 @@ const char *zero_realloc_mode_names[] = { static const uint8_t junk_alloc_byte = 0xa5; static const uint8_t junk_free_byte = 0x5a; -static void default_junk_alloc(void *ptr, size_t usize) { +static void +default_junk_alloc(void *ptr, size_t usize) { memset(ptr, junk_alloc_byte, usize); } -static void default_junk_free(void *ptr, size_t usize) { +static void +default_junk_free(void *ptr, size_t usize) { memset(ptr, junk_free_byte, usize); } -void (*junk_alloc_callback)(void *ptr, size_t size) = &default_junk_alloc; -void (*junk_free_callback)(void *ptr, size_t size) = &default_junk_free; +void (*JET_MUTABLE junk_alloc_callback)( + void *ptr, size_t size) = &default_junk_alloc; +void (*JET_MUTABLE junk_free_callback)( + void *ptr, size_t size) = &default_junk_free; +void (*JET_MUTABLE invalid_conf_abort)(void) = &abort; + +bool opt_utrace = false; +bool opt_xmalloc = false; +bool opt_experimental_infallible_new = false; +bool opt_experimental_tcache_gc = true; +bool opt_zero = false; +unsigned opt_narenas = 0; +fxp_t opt_narenas_ratio = FXP_INIT_INT(4); -bool opt_utrace = false; -bool opt_xmalloc = false; -bool opt_experimental_infallible_new = false; -bool opt_zero = false; -unsigned opt_narenas = 0; -fxp_t opt_narenas_ratio = FXP_INIT_INT(4); +unsigned ncpus; -unsigned ncpus; +unsigned opt_debug_double_free_max_scan = + SAFETY_CHECK_DOUBLE_FREE_MAX_SCAN_DEFAULT; + +size_t opt_calloc_madvise_threshold = CALLOC_MADVISE_THRESHOLD_DEFAULT; /* Protects arenas initialization. */ -malloc_mutex_t arenas_lock; +static malloc_mutex_t arenas_lock; /* The global hpa, and whether it's on. */ -bool opt_hpa = false; +bool opt_hpa = false; hpa_shard_opts_t opt_hpa_opts = HPA_SHARD_OPTS_DEFAULT; -sec_opts_t opt_hpa_sec_opts = SEC_OPTS_DEFAULT; +sec_opts_t opt_hpa_sec_opts = SEC_OPTS_DEFAULT; /* * Arenas that are used to service external requests. Not all elements of the @@ -173,48 +195,49 @@ sec_opts_t opt_hpa_sec_opts = SEC_OPTS_DEFAULT; * Points to an arena_t. */ JEMALLOC_ALIGNED(CACHELINE) -atomic_p_t arenas[MALLOCX_ARENA_LIMIT]; -static atomic_u_t narenas_total; /* Use narenas_total_*(). */ +atomic_p_t arenas[MALLOCX_ARENA_LIMIT]; +static atomic_u_t narenas_total; /* Use narenas_total_*(). */ /* Below three are read-only after initialization. */ -static arena_t *a0; /* arenas[0]. */ -unsigned narenas_auto; -unsigned manual_arena_base; +static arena_t *a0; /* arenas[0]. */ +unsigned narenas_auto; +unsigned manual_arena_base; malloc_init_t malloc_init_state = malloc_init_uninitialized; /* False should be the common case. Set to true to trigger initialization. */ -bool malloc_slow = true; +bool malloc_slow = true; /* When malloc_slow is true, set the corresponding bits for sanity check. */ enum { - flag_opt_junk_alloc = (1U), - flag_opt_junk_free = (1U << 1), - flag_opt_zero = (1U << 2), - flag_opt_utrace = (1U << 3), - flag_opt_xmalloc = (1U << 4) + flag_opt_junk_alloc = (1U), + flag_opt_junk_free = (1U << 1), + flag_opt_zero = (1U << 2), + flag_opt_utrace = (1U << 3), + flag_opt_xmalloc = (1U << 4) }; -static uint8_t malloc_slow_flags; +static uint8_t malloc_slow_flags; #ifdef JEMALLOC_THREADED_INIT /* Used to let the initializing thread recursively allocate. */ -# define NO_INITIALIZER ((unsigned long)0) -# define INITIALIZER pthread_self() -# define IS_INITIALIZER (malloc_initializer == pthread_self()) -static pthread_t malloc_initializer = NO_INITIALIZER; +# define NO_INITIALIZER ((unsigned long)0) +# define INITIALIZER pthread_self() +# define IS_INITIALIZER \ + (pthread_equal(malloc_initializer, pthread_self())) +static pthread_t malloc_initializer = NO_INITIALIZER; #else -# define NO_INITIALIZER false -# define INITIALIZER true -# define IS_INITIALIZER malloc_initializer -static bool malloc_initializer = NO_INITIALIZER; +# define NO_INITIALIZER false +# define INITIALIZER true +# define IS_INITIALIZER malloc_initializer +static bool malloc_initializer = NO_INITIALIZER; #endif /* Used to avoid initialization races. */ #ifdef _WIN32 -#if _WIN32_WINNT >= 0x0600 -static malloc_mutex_t init_lock = SRWLOCK_INIT; -#else -static malloc_mutex_t init_lock; -static bool init_lock_initialized = false; +# if _WIN32_WINNT >= 0x0600 +static malloc_mutex_t init_lock = SRWLOCK_INIT; +# else +static malloc_mutex_t init_lock; +static bool init_lock_initialized = false; JEMALLOC_ATTR(constructor) static void WINAPI @@ -236,40 +259,40 @@ _init_init_lock(void) { init_lock_initialized = true; } -#ifdef _MSC_VER -# pragma section(".CRT$XCU", read) -JEMALLOC_SECTION(".CRT$XCU") JEMALLOC_ATTR(used) -static const void (WINAPI *init_init_lock)(void) = _init_init_lock; -#endif -#endif +# ifdef _MSC_VER +# pragma section(".CRT$XCU", read) +JEMALLOC_SECTION(".CRT$XCU") +JEMALLOC_ATTR(used) +static const void(WINAPI *init_init_lock)(void) = _init_init_lock; +# endif +# endif #else -static malloc_mutex_t init_lock = MALLOC_MUTEX_INITIALIZER; +static malloc_mutex_t init_lock = MALLOC_MUTEX_INITIALIZER; #endif typedef struct { - void *p; /* Input pointer (as in realloc(p, s)). */ - size_t s; /* Request size. */ - void *r; /* Result pointer. */ + void *p; /* Input pointer (as in realloc(p, s)). */ + size_t s; /* Request size. */ + void *r; /* Result pointer. */ } malloc_utrace_t; #ifdef JEMALLOC_UTRACE -# define UTRACE(a, b, c) do { \ - if (unlikely(opt_utrace)) { \ - int utrace_serrno = errno; \ - malloc_utrace_t ut; \ - ut.p = (a); \ - ut.s = (b); \ - ut.r = (c); \ - UTRACE_CALL(&ut, sizeof(ut)); \ - errno = utrace_serrno; \ - } \ -} while (0) +# define UTRACE(a, b, c) \ + do { \ + if (unlikely(opt_utrace)) { \ + int utrace_serrno = errno; \ + malloc_utrace_t ut; \ + ut.p = (a); \ + ut.s = (b); \ + ut.r = (c); \ + UTRACE_CALL(&ut, sizeof(ut)); \ + errno = utrace_serrno; \ + } \ + } while (0) #else -# define UTRACE(a, b, c) +# define UTRACE(a, b, c) #endif -/* Whether encountered any invalid config options. */ -static bool had_conf_error = false; /******************************************************************************/ /* @@ -277,8 +300,8 @@ static bool had_conf_error = false; * definition. */ -static bool malloc_init_hard_a0(void); -static bool malloc_init_hard(void); +static bool malloc_init_hard_a0(void); +static bool malloc_init_hard(void); /******************************************************************************/ /* @@ -422,14 +445,13 @@ arena_new_create_background_thread(tsdn_t *tsdn, unsigned ind) { if (ind == 0) { return; } - /* - * Avoid creating a new background thread just for the huge arena, which - * purges eagerly by default. - */ - if (have_background_thread && !arena_is_huge(ind)) { + + if (have_background_thread) { if (background_thread_create(tsdn_tsd(tsdn), ind)) { - malloc_printf(": error in background thread " - "creation for arena %u. Abort.\n", ind); + malloc_printf( + ": error in background thread " + "creation for arena %u. Abort.\n", + ind); abort(); } } @@ -457,12 +479,16 @@ arena_bind(tsd_t *tsd, unsigned ind, bool internal) { tsd_iarena_set(tsd, arena); } else { tsd_arena_set(tsd, arena); - unsigned shard = atomic_fetch_add_u(&arena->binshard_next, 1, - ATOMIC_RELAXED); + /* + * While shard acts as a random seed, the cast below should + * not make much difference. + */ + uint8_t shard = (uint8_t)atomic_fetch_add_u( + &arena->binshard_next, 1, ATOMIC_RELAXED); tsd_binshards_t *bins = tsd_binshardsp_get(tsd); for (unsigned i = 0; i < SC_NBINS; i++) { - assert(bin_infos[i].n_shards > 0 && - bin_infos[i].n_shards <= BIN_SHARDS_MAX); + assert(bin_infos[i].n_shards > 0 + && bin_infos[i].n_shards <= BIN_SHARDS_MAX); bins->binshard[i] = shard % bin_infos[i].n_shards; } } @@ -477,8 +503,12 @@ arena_migrate(tsd_t *tsd, arena_t *oldarena, arena_t *newarena) { arena_nthreads_inc(newarena, false); tsd_arena_set(tsd, newarena); - if (arena_nthreads_get(oldarena, false) == 0) { - /* Purge if the old arena has no associated threads anymore. */ + if (arena_nthreads_get(oldarena, false) == 0 + && !background_thread_enabled()) { + /* + * Purge if the old arena has no associated threads anymore and + * no background threads. + */ arena_decay(tsd_tsdn(tsd), oldarena, /* is_background_thread */ false, /* all */ true); } @@ -515,7 +545,7 @@ arena_choose_hard(tsd_t *tsd, bool internal) { if (narenas_auto > 1) { unsigned i, j, choose[2], first_null; - bool is_new_arena[2]; + bool is_new_arena[2]; /* * Determine binding for both non-internal and internal @@ -540,11 +570,14 @@ arena_choose_hard(tsd_t *tsd, bool internal) { * number of threads assigned to it. */ for (j = 0; j < 2; j++) { - if (arena_nthreads_get(arena_get( - tsd_tsdn(tsd), i, false), !!j) < - arena_nthreads_get(arena_get( - tsd_tsdn(tsd), choose[j], false), - !!j)) { + if (arena_nthreads_get( + arena_get( + tsd_tsdn(tsd), i, false), + !!j) + < arena_nthreads_get( + arena_get(tsd_tsdn(tsd), + choose[j], false), + !!j)) { choose[j] = i; } } @@ -563,16 +596,17 @@ arena_choose_hard(tsd_t *tsd, bool internal) { } for (j = 0; j < 2; j++) { - if (arena_nthreads_get(arena_get(tsd_tsdn(tsd), - choose[j], false), !!j) == 0 || first_null == - narenas_auto) { + if (arena_nthreads_get( + arena_get(tsd_tsdn(tsd), choose[j], false), !!j) + == 0 + || first_null == narenas_auto) { /* * Use an unloaded arena, or the least loaded * arena if all arenas are already initialized. */ if (!!j == internal) { - ret = arena_get(tsd_tsdn(tsd), - choose[j], false); + ret = arena_get( + tsd_tsdn(tsd), choose[j], false); } } else { arena_t *arena; @@ -582,8 +616,8 @@ arena_choose_hard(tsd_t *tsd, bool internal) { arena = arena_init_locked(tsd_tsdn(tsd), choose[j], &arena_config_default); if (arena == NULL) { - malloc_mutex_unlock(tsd_tsdn(tsd), - &arenas_lock); + malloc_mutex_unlock( + tsd_tsdn(tsd), &arenas_lock); return NULL; } is_new_arena[j] = true; @@ -635,7 +669,7 @@ arena_cleanup(tsd_t *tsd) { static void stats_print_atexit(void) { if (config_stats) { - tsdn_t *tsdn; + tsdn_t *tsdn; unsigned narenas, i; tsdn = tsdn_fetch(); @@ -653,13 +687,13 @@ stats_print_atexit(void) { tcache_slow_t *tcache_slow; malloc_mutex_lock(tsdn, &arena->tcache_ql_mtx); - ql_foreach(tcache_slow, &arena->tcache_ql, - link) { - tcache_stats_merge(tsdn, - tcache_slow->tcache, arena); + ql_foreach ( + tcache_slow, &arena->tcache_ql, link) { + tcache_stats_merge( + tsdn, tcache_slow->tcache, arena); } - malloc_mutex_unlock(tsdn, - &arena->tcache_ql_mtx); + malloc_mutex_unlock( + tsdn, &arena->tcache_ql_mtx); } } } @@ -699,20 +733,6 @@ check_entry_exit_locking(tsdn_t *tsdn) { * Begin initialization functions. */ -static char * -jemalloc_secure_getenv(const char *name) { -#ifdef JEMALLOC_HAVE_SECURE_GETENV - return secure_getenv(name); -#else -# ifdef JEMALLOC_HAVE_ISSETUGID - if (issetugid() != 0) { - return NULL; - } -# endif - return getenv(name); -#endif -} - static unsigned malloc_ncpus(void) { long result; @@ -733,16 +753,16 @@ malloc_ncpus(void) { * is available, to avoid using more arenas than necessary. */ { -# if defined(__FreeBSD__) || defined(__DragonFly__) +# if defined(__FreeBSD__) || defined(__DragonFly__) cpuset_t set; -# else +# else cpu_set_t set; -# endif -# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) +# endif +# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) sched_getaffinity(0, sizeof(set), &set); -# else +# else pthread_getaffinity_np(pthread_self(), sizeof(set), &set); -# endif +# endif result = CPU_COUNT(&set); } #else @@ -759,8 +779,7 @@ malloc_ncpus(void) { * Since otherwise tricky things is possible with percpu arenas in use. */ static bool -malloc_cpu_count_is_deterministic() -{ +malloc_cpu_count_is_deterministic(void) { #ifdef _WIN32 return true; #else @@ -769,195 +788,26 @@ malloc_cpu_count_is_deterministic() if (cpu_onln != cpu_conf) { return false; } -# if defined(CPU_COUNT) -# if defined(__FreeBSD__) || defined(__DragonFly__) +# if defined(CPU_COUNT) +# if defined(__FreeBSD__) || defined(__DragonFly__) cpuset_t set; -# else +# else cpu_set_t set; -# endif /* __FreeBSD__ */ -# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) +# endif /* __FreeBSD__ */ +# if defined(JEMALLOC_HAVE_SCHED_SETAFFINITY) sched_getaffinity(0, sizeof(set), &set); -# else /* !JEMALLOC_HAVE_SCHED_SETAFFINITY */ +# else /* !JEMALLOC_HAVE_SCHED_SETAFFINITY */ pthread_getaffinity_np(pthread_self(), sizeof(set), &set); -# endif /* JEMALLOC_HAVE_SCHED_SETAFFINITY */ +# endif /* JEMALLOC_HAVE_SCHED_SETAFFINITY */ long cpu_affinity = CPU_COUNT(&set); if (cpu_affinity != cpu_conf) { return false; } -# endif /* CPU_COUNT */ +# endif /* CPU_COUNT */ return true; #endif } -static void -init_opt_stats_opts(const char *v, size_t vlen, char *dest) { - size_t opts_len = strlen(dest); - assert(opts_len <= stats_print_tot_num_options); - - for (size_t i = 0; i < vlen; i++) { - switch (v[i]) { -#define OPTION(o, v, d, s) case o: break; - STATS_PRINT_OPTIONS -#undef OPTION - default: continue; - } - - if (strchr(dest, v[i]) != NULL) { - /* Ignore repeated. */ - continue; - } - - dest[opts_len++] = v[i]; - dest[opts_len] = '\0'; - assert(opts_len <= stats_print_tot_num_options); - } - assert(opts_len == strlen(dest)); -} - -/* Reads the next size pair in a multi-sized option. */ -static bool -malloc_conf_multi_sizes_next(const char **slab_size_segment_cur, - size_t *vlen_left, size_t *slab_start, size_t *slab_end, size_t *new_size) { - const char *cur = *slab_size_segment_cur; - char *end; - uintmax_t um; - - set_errno(0); - - /* First number, then '-' */ - um = malloc_strtoumax(cur, &end, 0); - if (get_errno() != 0 || *end != '-') { - return true; - } - *slab_start = (size_t)um; - cur = end + 1; - - /* Second number, then ':' */ - um = malloc_strtoumax(cur, &end, 0); - if (get_errno() != 0 || *end != ':') { - return true; - } - *slab_end = (size_t)um; - cur = end + 1; - - /* Last number */ - um = malloc_strtoumax(cur, &end, 0); - if (get_errno() != 0) { - return true; - } - *new_size = (size_t)um; - - /* Consume the separator if there is one. */ - if (*end == '|') { - end++; - } - - *vlen_left -= end - *slab_size_segment_cur; - *slab_size_segment_cur = end; - - return false; -} - -static bool -malloc_conf_next(char const **opts_p, char const **k_p, size_t *klen_p, - char const **v_p, size_t *vlen_p) { - bool accept; - const char *opts = *opts_p; - - *k_p = opts; - - for (accept = false; !accept;) { - switch (*opts) { - case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': - case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': - case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': - case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': - case 'Y': case 'Z': - case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': - case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': - case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': - case 's': case 't': case 'u': case 'v': case 'w': case 'x': - case 'y': case 'z': - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': - case '_': - opts++; - break; - case ':': - opts++; - *klen_p = (uintptr_t)opts - 1 - (uintptr_t)*k_p; - *v_p = opts; - accept = true; - break; - case '\0': - if (opts != *opts_p) { - malloc_write(": Conf string ends " - "with key\n"); - had_conf_error = true; - } - return true; - default: - malloc_write(": Malformed conf string\n"); - had_conf_error = true; - return true; - } - } - - for (accept = false; !accept;) { - switch (*opts) { - case ',': - opts++; - /* - * Look ahead one character here, because the next time - * this function is called, it will assume that end of - * input has been cleanly reached if no input remains, - * but we have optimistically already consumed the - * comma if one exists. - */ - if (*opts == '\0') { - malloc_write(": Conf string ends " - "with comma\n"); - had_conf_error = true; - } - *vlen_p = (uintptr_t)opts - 1 - (uintptr_t)*v_p; - accept = true; - break; - case '\0': - *vlen_p = (uintptr_t)opts - (uintptr_t)*v_p; - accept = true; - break; - default: - opts++; - break; - } - } - - *opts_p = opts; - return false; -} - -static void -malloc_abort_invalid_conf(void) { - assert(opt_abort_conf); - malloc_printf(": Abort (abort_conf:true) on invalid conf " - "value (see above).\n"); - abort(); -} - -static void -malloc_conf_error(const char *msg, const char *k, size_t klen, const char *v, - size_t vlen) { - malloc_printf(": %s: %.*s:%.*s\n", msg, (int)klen, k, - (int)vlen, v); - /* If abort_conf is set, error out after processing all options. */ - const char *experimental = "experimental_"; - if (strncmp(k, experimental, strlen(experimental)) == 0) { - /* However, tolerate experimental features. */ - return; - } - had_conf_error = true; -} - static void malloc_slow_flag_init(void) { /* @@ -973,797 +823,11 @@ malloc_slow_flag_init(void) { malloc_slow = (malloc_slow_flags != 0); } -/* Number of sources for initializing malloc_conf */ -#define MALLOC_CONF_NSOURCES 5 - -static const char * -obtain_malloc_conf(unsigned which_source, char buf[PATH_MAX + 1]) { - if (config_debug) { - static unsigned read_source = 0; - /* - * Each source should only be read once, to minimize # of - * syscalls on init. - */ - assert(read_source++ == which_source); - } - assert(which_source < MALLOC_CONF_NSOURCES); - - const char *ret; - switch (which_source) { - case 0: - ret = config_malloc_conf; - break; - case 1: - if (je_malloc_conf != NULL) { - /* Use options that were compiled into the program. */ - ret = je_malloc_conf; - } else { - /* No configuration specified. */ - ret = NULL; - } - break; - case 2: { - ssize_t linklen = 0; -#ifndef _WIN32 - int saved_errno = errno; - const char *linkname = -# ifdef JEMALLOC_PREFIX - "/etc/"JEMALLOC_PREFIX"malloc.conf" -# else - "/etc/malloc.conf" -# endif - ; - - /* - * Try to use the contents of the "/etc/malloc.conf" symbolic - * link's name. - */ -#ifndef JEMALLOC_READLINKAT - linklen = readlink(linkname, buf, PATH_MAX); -#else - linklen = readlinkat(AT_FDCWD, linkname, buf, PATH_MAX); -#endif - if (linklen == -1) { - /* No configuration specified. */ - linklen = 0; - /* Restore errno. */ - set_errno(saved_errno); - } -#endif - buf[linklen] = '\0'; - ret = buf; - break; - } case 3: { - const char *envname = -#ifdef JEMALLOC_PREFIX - JEMALLOC_CPREFIX"MALLOC_CONF" -#else - "MALLOC_CONF" -#endif - ; - - if ((ret = jemalloc_secure_getenv(envname)) != NULL) { - /* - * Do nothing; opts is already initialized to the value - * of the MALLOC_CONF environment variable. - */ - } else { - /* No configuration specified. */ - ret = NULL; - } - break; - } case 4: { - ret = je_malloc_conf_2_conf_harder; - break; - } default: - not_reached(); - ret = NULL; - } - return ret; -} - -static void -malloc_conf_init_helper(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS], - bool initial_call, const char *opts_cache[MALLOC_CONF_NSOURCES], - char buf[PATH_MAX + 1]) { - static const char *opts_explain[MALLOC_CONF_NSOURCES] = { - "string specified via --with-malloc-conf", - "string pointed to by the global variable malloc_conf", - "\"name\" of the file referenced by the symbolic link named " - "/etc/malloc.conf", - "value of the environment variable MALLOC_CONF", - "string pointed to by the global variable " - "malloc_conf_2_conf_harder", - }; - unsigned i; - const char *opts, *k, *v; - size_t klen, vlen; - - for (i = 0; i < MALLOC_CONF_NSOURCES; i++) { - /* Get runtime configuration. */ - if (initial_call) { - opts_cache[i] = obtain_malloc_conf(i, buf); - } - opts = opts_cache[i]; - if (!initial_call && opt_confirm_conf) { - malloc_printf( - ": malloc_conf #%u (%s): \"%s\"\n", - i + 1, opts_explain[i], opts != NULL ? opts : ""); - } - if (opts == NULL) { - continue; - } - - while (*opts != '\0' && !malloc_conf_next(&opts, &k, &klen, &v, - &vlen)) { - -#define CONF_ERROR(msg, k, klen, v, vlen) \ - if (!initial_call) { \ - malloc_conf_error( \ - msg, k, klen, v, vlen); \ - cur_opt_valid = false; \ - } -#define CONF_CONTINUE { \ - if (!initial_call && opt_confirm_conf \ - && cur_opt_valid) { \ - malloc_printf(": -- " \ - "Set conf value: %.*s:%.*s" \ - "\n", (int)klen, k, \ - (int)vlen, v); \ - } \ - continue; \ - } -#define CONF_MATCH(n) \ - (sizeof(n)-1 == klen && strncmp(n, k, klen) == 0) -#define CONF_MATCH_VALUE(n) \ - (sizeof(n)-1 == vlen && strncmp(n, v, vlen) == 0) -#define CONF_HANDLE_BOOL(o, n) \ - if (CONF_MATCH(n)) { \ - if (CONF_MATCH_VALUE("true")) { \ - o = true; \ - } else if (CONF_MATCH_VALUE("false")) { \ - o = false; \ - } else { \ - CONF_ERROR("Invalid conf value",\ - k, klen, v, vlen); \ - } \ - CONF_CONTINUE; \ - } - /* - * One of the CONF_MIN macros below expands, in one of the use points, - * to "unsigned integer < 0", which is always false, triggering the - * GCC -Wtype-limits warning, which we disable here and re-enable below. - */ - JEMALLOC_DIAGNOSTIC_PUSH - JEMALLOC_DIAGNOSTIC_IGNORE_TYPE_LIMITS - -#define CONF_DONT_CHECK_MIN(um, min) false -#define CONF_CHECK_MIN(um, min) ((um) < (min)) -#define CONF_DONT_CHECK_MAX(um, max) false -#define CONF_CHECK_MAX(um, max) ((um) > (max)) - -#define CONF_VALUE_READ(max_t, result) \ - char *end; \ - set_errno(0); \ - result = (max_t)malloc_strtoumax(v, &end, 0); -#define CONF_VALUE_READ_FAIL() \ - (get_errno() != 0 || (uintptr_t)end - (uintptr_t)v != vlen) - -#define CONF_HANDLE_T(t, max_t, o, n, min, max, check_min, check_max, clip) \ - if (CONF_MATCH(n)) { \ - max_t mv; \ - CONF_VALUE_READ(max_t, mv) \ - if (CONF_VALUE_READ_FAIL()) { \ - CONF_ERROR("Invalid conf value",\ - k, klen, v, vlen); \ - } else if (clip) { \ - if (check_min(mv, (t)(min))) { \ - o = (t)(min); \ - } else if ( \ - check_max(mv, (t)(max))) { \ - o = (t)(max); \ - } else { \ - o = (t)mv; \ - } \ - } else { \ - if (check_min(mv, (t)(min)) || \ - check_max(mv, (t)(max))) { \ - CONF_ERROR( \ - "Out-of-range " \ - "conf value", \ - k, klen, v, vlen); \ - } else { \ - o = (t)mv; \ - } \ - } \ - CONF_CONTINUE; \ - } -#define CONF_HANDLE_T_U(t, o, n, min, max, check_min, check_max, clip) \ - CONF_HANDLE_T(t, uintmax_t, o, n, min, max, check_min, \ - check_max, clip) -#define CONF_HANDLE_T_SIGNED(t, o, n, min, max, check_min, check_max, clip)\ - CONF_HANDLE_T(t, intmax_t, o, n, min, max, check_min, \ - check_max, clip) - -#define CONF_HANDLE_UNSIGNED(o, n, min, max, check_min, check_max, \ - clip) \ - CONF_HANDLE_T_U(unsigned, o, n, min, max, \ - check_min, check_max, clip) -#define CONF_HANDLE_SIZE_T(o, n, min, max, check_min, check_max, clip) \ - CONF_HANDLE_T_U(size_t, o, n, min, max, \ - check_min, check_max, clip) -#define CONF_HANDLE_INT64_T(o, n, min, max, check_min, check_max, clip) \ - CONF_HANDLE_T_SIGNED(int64_t, o, n, min, max, \ - check_min, check_max, clip) -#define CONF_HANDLE_UINT64_T(o, n, min, max, check_min, check_max, clip)\ - CONF_HANDLE_T_U(uint64_t, o, n, min, max, \ - check_min, check_max, clip) -#define CONF_HANDLE_SSIZE_T(o, n, min, max) \ - CONF_HANDLE_T_SIGNED(ssize_t, o, n, min, max, \ - CONF_CHECK_MIN, CONF_CHECK_MAX, false) -#define CONF_HANDLE_CHAR_P(o, n, d) \ - if (CONF_MATCH(n)) { \ - size_t cpylen = (vlen <= \ - sizeof(o)-1) ? vlen : \ - sizeof(o)-1; \ - strncpy(o, v, cpylen); \ - o[cpylen] = '\0'; \ - CONF_CONTINUE; \ - } - - bool cur_opt_valid = true; - - CONF_HANDLE_BOOL(opt_confirm_conf, "confirm_conf") - if (initial_call) { - continue; - } - - CONF_HANDLE_BOOL(opt_abort, "abort") - CONF_HANDLE_BOOL(opt_abort_conf, "abort_conf") - CONF_HANDLE_BOOL(opt_trust_madvise, "trust_madvise") - if (strncmp("metadata_thp", k, klen) == 0) { - int m; - bool match = false; - for (m = 0; m < metadata_thp_mode_limit; m++) { - if (strncmp(metadata_thp_mode_names[m], - v, vlen) == 0) { - opt_metadata_thp = m; - match = true; - break; - } - } - if (!match) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - CONF_HANDLE_BOOL(opt_retain, "retain") - if (strncmp("dss", k, klen) == 0) { - int m; - bool match = false; - for (m = 0; m < dss_prec_limit; m++) { - if (strncmp(dss_prec_names[m], v, vlen) - == 0) { - if (extent_dss_prec_set(m)) { - CONF_ERROR( - "Error setting dss", - k, klen, v, vlen); - } else { - opt_dss = - dss_prec_names[m]; - match = true; - break; - } - } - } - if (!match) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - if (CONF_MATCH("narenas")) { - if (CONF_MATCH_VALUE("default")) { - opt_narenas = 0; - CONF_CONTINUE; - } else { - CONF_HANDLE_UNSIGNED(opt_narenas, - "narenas", 1, UINT_MAX, - CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, - /* clip */ false) - } - } - if (CONF_MATCH("narenas_ratio")) { - char *end; - bool err = fxp_parse(&opt_narenas_ratio, v, - &end); - if (err || (size_t)(end - v) != vlen) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - if (CONF_MATCH("bin_shards")) { - const char *bin_shards_segment_cur = v; - size_t vlen_left = vlen; - do { - size_t size_start; - size_t size_end; - size_t nshards; - bool err = malloc_conf_multi_sizes_next( - &bin_shards_segment_cur, &vlen_left, - &size_start, &size_end, &nshards); - if (err || bin_update_shard_size( - bin_shard_sizes, size_start, - size_end, nshards)) { - CONF_ERROR( - "Invalid settings for " - "bin_shards", k, klen, v, - vlen); - break; - } - } while (vlen_left > 0); - CONF_CONTINUE; - } - CONF_HANDLE_INT64_T(opt_mutex_max_spin, - "mutex_max_spin", -1, INT64_MAX, CONF_CHECK_MIN, - CONF_DONT_CHECK_MAX, false); - CONF_HANDLE_SSIZE_T(opt_dirty_decay_ms, - "dirty_decay_ms", -1, NSTIME_SEC_MAX * KQU(1000) < - QU(SSIZE_MAX) ? NSTIME_SEC_MAX * KQU(1000) : - SSIZE_MAX); - CONF_HANDLE_SSIZE_T(opt_muzzy_decay_ms, - "muzzy_decay_ms", -1, NSTIME_SEC_MAX * KQU(1000) < - QU(SSIZE_MAX) ? NSTIME_SEC_MAX * KQU(1000) : - SSIZE_MAX); - CONF_HANDLE_BOOL(opt_stats_print, "stats_print") - if (CONF_MATCH("stats_print_opts")) { - init_opt_stats_opts(v, vlen, - opt_stats_print_opts); - CONF_CONTINUE; - } - CONF_HANDLE_INT64_T(opt_stats_interval, - "stats_interval", -1, INT64_MAX, - CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, false) - if (CONF_MATCH("stats_interval_opts")) { - init_opt_stats_opts(v, vlen, - opt_stats_interval_opts); - CONF_CONTINUE; - } - if (config_fill) { - if (CONF_MATCH("junk")) { - if (CONF_MATCH_VALUE("true")) { - opt_junk = "true"; - opt_junk_alloc = opt_junk_free = - true; - } else if (CONF_MATCH_VALUE("false")) { - opt_junk = "false"; - opt_junk_alloc = opt_junk_free = - false; - } else if (CONF_MATCH_VALUE("alloc")) { - opt_junk = "alloc"; - opt_junk_alloc = true; - opt_junk_free = false; - } else if (CONF_MATCH_VALUE("free")) { - opt_junk = "free"; - opt_junk_alloc = false; - opt_junk_free = true; - } else { - CONF_ERROR( - "Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - CONF_HANDLE_BOOL(opt_zero, "zero") - } - if (config_utrace) { - CONF_HANDLE_BOOL(opt_utrace, "utrace") - } - if (config_xmalloc) { - CONF_HANDLE_BOOL(opt_xmalloc, "xmalloc") - } - if (config_enable_cxx) { - CONF_HANDLE_BOOL( - opt_experimental_infallible_new, - "experimental_infallible_new") - } - - CONF_HANDLE_BOOL(opt_tcache, "tcache") - CONF_HANDLE_SIZE_T(opt_tcache_max, "tcache_max", - 0, TCACHE_MAXCLASS_LIMIT, CONF_DONT_CHECK_MIN, - CONF_CHECK_MAX, /* clip */ true) - if (CONF_MATCH("lg_tcache_max")) { - size_t m; - CONF_VALUE_READ(size_t, m) - if (CONF_VALUE_READ_FAIL()) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } else { - /* clip if necessary */ - if (m > TCACHE_LG_MAXCLASS_LIMIT) { - m = TCACHE_LG_MAXCLASS_LIMIT; - } - opt_tcache_max = (size_t)1 << m; - } - CONF_CONTINUE; - } - /* - * Anyone trying to set a value outside -16 to 16 is - * deeply confused. - */ - CONF_HANDLE_SSIZE_T(opt_lg_tcache_nslots_mul, - "lg_tcache_nslots_mul", -16, 16) - /* Ditto with values past 2048. */ - CONF_HANDLE_UNSIGNED(opt_tcache_nslots_small_min, - "tcache_nslots_small_min", 1, 2048, - CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true) - CONF_HANDLE_UNSIGNED(opt_tcache_nslots_small_max, - "tcache_nslots_small_max", 1, 2048, - CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true) - CONF_HANDLE_UNSIGNED(opt_tcache_nslots_large, - "tcache_nslots_large", 1, 2048, - CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true) - CONF_HANDLE_SIZE_T(opt_tcache_gc_incr_bytes, - "tcache_gc_incr_bytes", 1024, SIZE_T_MAX, - CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, - /* clip */ true) - CONF_HANDLE_SIZE_T(opt_tcache_gc_delay_bytes, - "tcache_gc_delay_bytes", 0, SIZE_T_MAX, - CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, - /* clip */ false) - CONF_HANDLE_UNSIGNED(opt_lg_tcache_flush_small_div, - "lg_tcache_flush_small_div", 1, 16, - CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true) - CONF_HANDLE_UNSIGNED(opt_lg_tcache_flush_large_div, - "lg_tcache_flush_large_div", 1, 16, - CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true) - - /* - * The runtime option of oversize_threshold remains - * undocumented. It may be tweaked in the next major - * release (6.0). The default value 8M is rather - * conservative / safe. Tuning it further down may - * improve fragmentation a bit more, but may also cause - * contention on the huge arena. - */ - CONF_HANDLE_SIZE_T(opt_oversize_threshold, - "oversize_threshold", 0, SC_LARGE_MAXCLASS, - CONF_DONT_CHECK_MIN, CONF_CHECK_MAX, false) - CONF_HANDLE_SIZE_T(opt_lg_extent_max_active_fit, - "lg_extent_max_active_fit", 0, - (sizeof(size_t) << 3), CONF_DONT_CHECK_MIN, - CONF_CHECK_MAX, false) - - if (strncmp("percpu_arena", k, klen) == 0) { - bool match = false; - for (int m = percpu_arena_mode_names_base; m < - percpu_arena_mode_names_limit; m++) { - if (strncmp(percpu_arena_mode_names[m], - v, vlen) == 0) { - if (!have_percpu_arena) { - CONF_ERROR( - "No getcpu support", - k, klen, v, vlen); - } - opt_percpu_arena = m; - match = true; - break; - } - } - if (!match) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - CONF_HANDLE_BOOL(opt_background_thread, - "background_thread"); - CONF_HANDLE_SIZE_T(opt_max_background_threads, - "max_background_threads", 1, - opt_max_background_threads, - CONF_CHECK_MIN, CONF_CHECK_MAX, - true); - CONF_HANDLE_BOOL(opt_hpa, "hpa") - CONF_HANDLE_SIZE_T(opt_hpa_opts.slab_max_alloc, - "hpa_slab_max_alloc", PAGE, HUGEPAGE, - CONF_CHECK_MIN, CONF_CHECK_MAX, true); - - /* - * Accept either a ratio-based or an exact hugification - * threshold. - */ - CONF_HANDLE_SIZE_T(opt_hpa_opts.hugification_threshold, - "hpa_hugification_threshold", PAGE, HUGEPAGE, - CONF_CHECK_MIN, CONF_CHECK_MAX, true); - if (CONF_MATCH("hpa_hugification_threshold_ratio")) { - fxp_t ratio; - char *end; - bool err = fxp_parse(&ratio, v, - &end); - if (err || (size_t)(end - v) != vlen - || ratio > FXP_INIT_INT(1)) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } else { - opt_hpa_opts.hugification_threshold = - fxp_mul_frac(HUGEPAGE, ratio); - } - CONF_CONTINUE; - } - - CONF_HANDLE_UINT64_T( - opt_hpa_opts.hugify_delay_ms, "hpa_hugify_delay_ms", - 0, 0, CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, - false); - - CONF_HANDLE_UINT64_T( - opt_hpa_opts.min_purge_interval_ms, - "hpa_min_purge_interval_ms", 0, 0, - CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false); - - if (CONF_MATCH("hpa_dirty_mult")) { - if (CONF_MATCH_VALUE("-1")) { - opt_hpa_opts.dirty_mult = (fxp_t)-1; - CONF_CONTINUE; - } - fxp_t ratio; - char *end; - bool err = fxp_parse(&ratio, v, - &end); - if (err || (size_t)(end - v) != vlen) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } else { - opt_hpa_opts.dirty_mult = ratio; - } - CONF_CONTINUE; - } - - CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.nshards, - "hpa_sec_nshards", 0, 0, CONF_CHECK_MIN, - CONF_DONT_CHECK_MAX, true); - CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.max_alloc, - "hpa_sec_max_alloc", PAGE, 0, CONF_CHECK_MIN, - CONF_DONT_CHECK_MAX, true); - CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.max_bytes, - "hpa_sec_max_bytes", PAGE, 0, CONF_CHECK_MIN, - CONF_DONT_CHECK_MAX, true); - CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.bytes_after_flush, - "hpa_sec_bytes_after_flush", PAGE, 0, - CONF_CHECK_MIN, CONF_DONT_CHECK_MAX, true); - CONF_HANDLE_SIZE_T(opt_hpa_sec_opts.batch_fill_extra, - "hpa_sec_batch_fill_extra", 0, HUGEPAGE_PAGES, - CONF_CHECK_MIN, CONF_CHECK_MAX, true); - - if (CONF_MATCH("slab_sizes")) { - if (CONF_MATCH_VALUE("default")) { - sc_data_init(sc_data); - CONF_CONTINUE; - } - bool err; - const char *slab_size_segment_cur = v; - size_t vlen_left = vlen; - do { - size_t slab_start; - size_t slab_end; - size_t pgs; - err = malloc_conf_multi_sizes_next( - &slab_size_segment_cur, - &vlen_left, &slab_start, &slab_end, - &pgs); - if (!err) { - sc_data_update_slab_size( - sc_data, slab_start, - slab_end, (int)pgs); - } else { - CONF_ERROR("Invalid settings " - "for slab_sizes", - k, klen, v, vlen); - } - } while (!err && vlen_left > 0); - CONF_CONTINUE; - } - if (config_prof) { - CONF_HANDLE_BOOL(opt_prof, "prof") - CONF_HANDLE_CHAR_P(opt_prof_prefix, - "prof_prefix", "jeprof") - CONF_HANDLE_BOOL(opt_prof_active, "prof_active") - CONF_HANDLE_BOOL(opt_prof_thread_active_init, - "prof_thread_active_init") - CONF_HANDLE_SIZE_T(opt_lg_prof_sample, - "lg_prof_sample", 0, (sizeof(uint64_t) << 3) - - 1, CONF_DONT_CHECK_MIN, CONF_CHECK_MAX, - true) - CONF_HANDLE_BOOL(opt_prof_accum, "prof_accum") - CONF_HANDLE_SSIZE_T(opt_lg_prof_interval, - "lg_prof_interval", -1, - (sizeof(uint64_t) << 3) - 1) - CONF_HANDLE_BOOL(opt_prof_gdump, "prof_gdump") - CONF_HANDLE_BOOL(opt_prof_final, "prof_final") - CONF_HANDLE_BOOL(opt_prof_leak, "prof_leak") - CONF_HANDLE_BOOL(opt_prof_leak_error, - "prof_leak_error") - CONF_HANDLE_BOOL(opt_prof_log, "prof_log") - CONF_HANDLE_SSIZE_T(opt_prof_recent_alloc_max, - "prof_recent_alloc_max", -1, SSIZE_MAX) - CONF_HANDLE_BOOL(opt_prof_stats, "prof_stats") - CONF_HANDLE_BOOL(opt_prof_sys_thread_name, - "prof_sys_thread_name") - if (CONF_MATCH("prof_time_resolution")) { - if (CONF_MATCH_VALUE("default")) { - opt_prof_time_res = - prof_time_res_default; - } else if (CONF_MATCH_VALUE("high")) { - if (!config_high_res_timer) { - CONF_ERROR( - "No high resolution" - " timer support", - k, klen, v, vlen); - } else { - opt_prof_time_res = - prof_time_res_high; - } - } else { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - /* - * Undocumented. When set to false, don't - * correct for an unbiasing bug in jeprof - * attribution. This can be handy if you want - * to get consistent numbers from your binary - * across different jemalloc versions, even if - * those numbers are incorrect. The default is - * true. - */ - CONF_HANDLE_BOOL(opt_prof_unbias, "prof_unbias") - } - if (config_log) { - if (CONF_MATCH("log")) { - size_t cpylen = ( - vlen <= sizeof(log_var_names) ? - vlen : sizeof(log_var_names) - 1); - strncpy(log_var_names, v, cpylen); - log_var_names[cpylen] = '\0'; - CONF_CONTINUE; - } - } - if (CONF_MATCH("thp")) { - bool match = false; - for (int m = 0; m < thp_mode_names_limit; m++) { - if (strncmp(thp_mode_names[m],v, vlen) - == 0) { - if (!have_madvise_huge && !have_memcntl) { - CONF_ERROR( - "No THP support", - k, klen, v, vlen); - } - opt_thp = m; - match = true; - break; - } - } - if (!match) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - if (CONF_MATCH("zero_realloc")) { - if (CONF_MATCH_VALUE("alloc")) { - opt_zero_realloc_action - = zero_realloc_action_alloc; - } else if (CONF_MATCH_VALUE("free")) { - opt_zero_realloc_action - = zero_realloc_action_free; - } else if (CONF_MATCH_VALUE("abort")) { - opt_zero_realloc_action - = zero_realloc_action_abort; - } else { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - CONF_CONTINUE; - } - if (config_uaf_detection && - CONF_MATCH("lg_san_uaf_align")) { - ssize_t a; - CONF_VALUE_READ(ssize_t, a) - if (CONF_VALUE_READ_FAIL() || a < -1) { - CONF_ERROR("Invalid conf value", - k, klen, v, vlen); - } - if (a == -1) { - opt_lg_san_uaf_align = -1; - CONF_CONTINUE; - } - - /* clip if necessary */ - ssize_t max_allowed = (sizeof(size_t) << 3) - 1; - ssize_t min_allowed = LG_PAGE; - if (a > max_allowed) { - a = max_allowed; - } else if (a < min_allowed) { - a = min_allowed; - } - - opt_lg_san_uaf_align = a; - CONF_CONTINUE; - } - - CONF_HANDLE_SIZE_T(opt_san_guard_small, - "san_guard_small", 0, SIZE_T_MAX, - CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false) - CONF_HANDLE_SIZE_T(opt_san_guard_large, - "san_guard_large", 0, SIZE_T_MAX, - CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false) - - CONF_ERROR("Invalid conf pair", k, klen, v, vlen); -#undef CONF_ERROR -#undef CONF_CONTINUE -#undef CONF_MATCH -#undef CONF_MATCH_VALUE -#undef CONF_HANDLE_BOOL -#undef CONF_DONT_CHECK_MIN -#undef CONF_CHECK_MIN -#undef CONF_DONT_CHECK_MAX -#undef CONF_CHECK_MAX -#undef CONF_HANDLE_T -#undef CONF_HANDLE_T_U -#undef CONF_HANDLE_T_SIGNED -#undef CONF_HANDLE_UNSIGNED -#undef CONF_HANDLE_SIZE_T -#undef CONF_HANDLE_SSIZE_T -#undef CONF_HANDLE_CHAR_P - /* Re-enable diagnostic "-Wtype-limits" */ - JEMALLOC_DIAGNOSTIC_POP - } - if (opt_abort_conf && had_conf_error) { - malloc_abort_invalid_conf(); - } - } - atomic_store_b(&log_init_done, true, ATOMIC_RELEASE); -} - -static bool -malloc_conf_init_check_deps(void) { - if (opt_prof_leak_error && !opt_prof_final) { - malloc_printf(": prof_leak_error is set w/o " - "prof_final.\n"); - return true; - } - - return false; -} - -static void -malloc_conf_init(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS]) { - const char *opts_cache[MALLOC_CONF_NSOURCES] = {NULL, NULL, NULL, NULL, - NULL}; - char buf[PATH_MAX + 1]; - - /* The first call only set the confirm_conf option and opts_cache */ - malloc_conf_init_helper(NULL, NULL, true, opts_cache, buf); - malloc_conf_init_helper(sc_data, bin_shard_sizes, false, opts_cache, - NULL); - if (malloc_conf_init_check_deps()) { - /* check_deps does warning msg only; abort below if needed. */ - if (opt_abort_conf) { - malloc_abort_invalid_conf(); - } - } -} - -#undef MALLOC_CONF_NSOURCES - static bool malloc_init_hard_needed(void) { - if (malloc_initialized() || (IS_INITIALIZER && malloc_init_state == - malloc_init_recursible)) { + if (malloc_initialized() + || (IS_INITIALIZER + && malloc_init_state == malloc_init_recursible)) { /* * Another thread initialized the allocator before this one * acquired init_lock, or this thread is the initializing @@ -1787,7 +851,7 @@ malloc_init_hard_needed(void) { } static bool -malloc_init_hard_a0_locked() { +malloc_init_hard_a0_locked(void) { malloc_initializer = INITIALIZER; JEMALLOC_DIAGNOSTIC_PUSH @@ -1813,7 +877,9 @@ malloc_init_hard_a0_locked() { if (config_prof) { prof_boot0(); } - malloc_conf_init(&sc_data, bin_shard_sizes); + char readlink_buf[PATH_MAX + 1]; + readlink_buf[0] = '\0'; + malloc_conf_init(&sc_data, bin_shard_sizes, readlink_buf); san_init(opt_lg_san_uaf_align); sz_boot(&sc_data, opt_cache_oblivious); bin_info_boot(&sc_data, bin_shard_sizes); @@ -1851,7 +917,8 @@ malloc_init_hard_a0_locked() { prof_boot1(); } if (opt_hpa && !hpa_supported()) { - malloc_printf(": HPA not supported in the current " + malloc_printf( + ": HPA not supported in the current " "configuration; %s.", opt_abort_conf ? "aborting" : "disabling"); if (opt_abort_conf) { @@ -1867,10 +934,11 @@ malloc_init_hard_a0_locked() { return true; } if (malloc_mutex_init(&arenas_lock, "arenas", WITNESS_RANK_ARENAS, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } hook_boot(); + experimental_thread_events_boot(); /* * Create enough scaffolding to allow recursive allocation in * malloc_ncpus(). @@ -1888,7 +956,8 @@ malloc_init_hard_a0_locked() { a0 = arena_get(TSDN_NULL, 0, false); if (opt_hpa && !hpa_supported()) { - malloc_printf(": HPA not supported in the current " + malloc_printf( + ": HPA not supported in the current " "configuration; %s.", opt_abort_conf ? "aborting" : "disabling"); if (opt_abort_conf) { @@ -1896,17 +965,19 @@ malloc_init_hard_a0_locked() { } else { opt_hpa = false; } - } else if (opt_hpa) { - hpa_shard_opts_t hpa_shard_opts = opt_hpa_opts; - hpa_shard_opts.deferral_allowed = background_thread_enabled(); - if (pa_shard_enable_hpa(TSDN_NULL, &a0->pa_shard, - &hpa_shard_opts, &opt_hpa_sec_opts)) { - return true; - } } malloc_init_state = malloc_init_a0_initialized; + size_t buf_len = strlen(readlink_buf); + if (buf_len > 0) { + void *readlink_allocated = a0ialloc(buf_len + 1, false, true); + if (readlink_allocated != NULL) { + memcpy(readlink_allocated, readlink_buf, buf_len + 1); + opt_malloc_conf_symlink = readlink_allocated; + } + } + return false; } @@ -1937,7 +1008,8 @@ malloc_init_hard_recursible(void) { */ if (opt_narenas == 0) { opt_percpu_arena = percpu_arena_disabled; - malloc_write(": Number of CPUs " + malloc_write( + ": Number of CPUs " "detected is not deterministic. Per-CPU " "arena disabled.\n"); if (opt_abort_conf) { @@ -1951,11 +1023,12 @@ malloc_init_hard_recursible(void) { } #if (defined(JEMALLOC_HAVE_PTHREAD_ATFORK) && !defined(JEMALLOC_MUTEX_INIT_CB) \ - && !defined(JEMALLOC_ZONE) && !defined(_WIN32) && \ - !defined(__native_client__)) + && !defined(JEMALLOC_ZONE) && !defined(_WIN32) \ + && !defined(__native_client__)) /* LinuxThreads' pthread_atfork() allocates. */ if (pthread_atfork(jemalloc_prefork, jemalloc_postfork_parent, - jemalloc_postfork_child) != 0) { + jemalloc_postfork_child) + != 0) { malloc_write(": Error in pthread_atfork()\n"); if (opt_abort) { abort(); @@ -1979,8 +1052,8 @@ malloc_narenas_default(void) { * default. */ if (ncpus > 1) { - fxp_t fxp_ncpus = FXP_INIT_INT(ncpus); - fxp_t goal = fxp_mul(fxp_ncpus, opt_narenas_ratio); + fxp_t fxp_ncpus = FXP_INIT_INT(ncpus); + fxp_t goal = fxp_mul(fxp_ncpus, opt_narenas_ratio); uint32_t int_goal = fxp_round_nearest(goal); if (int_goal == 0) { return 1; @@ -2004,34 +1077,41 @@ percpu_arena_as_initialized(percpu_arena_mode_t mode) { } static bool -malloc_init_narenas(void) { +malloc_init_narenas(tsdn_t *tsdn) { assert(ncpus > 0); if (opt_percpu_arena != percpu_arena_disabled) { if (!have_percpu_arena || malloc_getcpu() < 0) { opt_percpu_arena = percpu_arena_disabled; - malloc_printf(": perCPU arena getcpu() not " - "available. Setting narenas to %u.\n", opt_narenas ? - opt_narenas : malloc_narenas_default()); + malloc_printf( + ": perCPU arena getcpu() not " + "available. Setting narenas to %u.\n", + opt_narenas ? opt_narenas + : malloc_narenas_default()); if (opt_abort) { abort(); } } else { if (ncpus >= MALLOCX_ARENA_LIMIT) { - malloc_printf(": narenas w/ percpu" - "arena beyond limit (%d)\n", ncpus); + malloc_printf( + ": narenas w/ percpu" + "arena beyond limit (%d)\n", + ncpus); if (opt_abort) { abort(); } return true; } /* NB: opt_percpu_arena isn't fully initialized yet. */ - if (percpu_arena_as_initialized(opt_percpu_arena) == - per_phycpu_arena && ncpus % 2 != 0) { - malloc_printf(": invalid " + if (percpu_arena_as_initialized(opt_percpu_arena) + == per_phycpu_arena + && ncpus % 2 != 0) { + malloc_printf( + ": invalid " "configuration -- per physical CPU arena " "with odd number (%u) of CPUs (no hyper " - "threading?).\n", ncpus); + "threading?).\n", + ncpus); if (opt_abort) abort(); } @@ -2071,7 +1151,7 @@ malloc_init_narenas(void) { narenas_auto); } narenas_total_set(narenas_auto); - if (arena_init_huge()) { + if (arena_init_huge(tsdn, a0)) { narenas_total_inc(); } manual_arena_base = narenas_total_get(); @@ -2112,21 +1192,30 @@ static bool malloc_init_hard(void) { tsd_t *tsd; + assert(TCACHE_MAXCLASS_LIMIT <= USIZE_GROW_SLOW_THRESHOLD); + assert(SC_LOOKUP_MAXCLASS <= USIZE_GROW_SLOW_THRESHOLD); + /* + * This asserts an extreme case where TINY_MAXCLASS is larger + * than LARGE_MINCLASS. It could only happen if some constants + * are configured miserably wrong. + */ + assert(SC_LG_TINY_MAXCLASS <= (size_t)1ULL << (LG_PAGE + SC_LG_NGROUP)); + #if defined(_WIN32) && _WIN32_WINNT < 0x0600 _init_init_lock(); #endif malloc_mutex_lock(TSDN_NULL, &init_lock); -#define UNLOCK_RETURN(tsdn, ret, reentrancy) \ - malloc_init_hard_cleanup(tsdn, reentrancy); \ +#define UNLOCK_RETURN(tsdn, ret, reentrancy) \ + malloc_init_hard_cleanup(tsdn, reentrancy); \ return ret; if (!malloc_init_hard_needed()) { UNLOCK_RETURN(TSDN_NULL, false, false) } - if (malloc_init_state != malloc_init_a0_initialized && - malloc_init_hard_a0_locked()) { + if (malloc_init_state != malloc_init_a0_initialized + && malloc_init_hard_a0_locked()) { UNLOCK_RETURN(TSDN_NULL, true, false) } @@ -2144,10 +1233,24 @@ malloc_init_hard(void) { /* Set reentrancy level to 1 during init. */ pre_reentrancy(tsd, NULL); /* Initialize narenas before prof_boot2 (for allocation). */ - if (malloc_init_narenas() + if (malloc_init_narenas(tsd_tsdn(tsd)) || background_thread_boot1(tsd_tsdn(tsd), b0get())) { UNLOCK_RETURN(tsd_tsdn(tsd), true, true) } + if (opt_hpa) { + /* + * We didn't initialize arena 0 hpa_shard in arena_new, because + * background_thread_enabled wasn't initialized yet, but we + * need it to set correct value for deferral_allowed. + */ + arena_t *a0 = arena_get(tsd_tsdn(tsd), 0, false); + hpa_shard_opts_t hpa_shard_opts = opt_hpa_opts; + hpa_shard_opts.deferral_allowed = background_thread_enabled(); + if (pa_shard_enable_hpa(tsd_tsdn(tsd), &a0->pa_shard, + &hpa_shard_opts, &opt_hpa_sec_opts)) { + UNLOCK_RETURN(tsd_tsdn(tsd), true, true) + } + } if (config_prof && prof_boot2(tsd, b0get())) { UNLOCK_RETURN(tsd_tsdn(tsd), true, true) } @@ -2160,8 +1263,8 @@ malloc_init_hard(void) { post_reentrancy(tsd); malloc_mutex_unlock(tsd_tsdn(tsd), &init_lock); - witness_assert_lockless(witness_tsd_tsdn( - tsd_witness_tsdp_get_unsafe(tsd))); + witness_assert_lockless( + witness_tsd_tsdn(tsd_witness_tsdp_get_unsafe(tsd))); malloc_tsd_boot1(); /* Update TSD after tsd_boot1. */ tsd = tsd_fetch(); @@ -2254,23 +1357,14 @@ static_opts_init(static_opts_t *static_opts) { static_opts->usize = false; } -/* - * These correspond to the macros in jemalloc/jemalloc_macros.h. Broadly, we - * should have one constant here per magic value there. Note however that the - * representations need not be related. - */ -#define TCACHE_IND_NONE ((unsigned)-1) -#define TCACHE_IND_AUTOMATIC ((unsigned)-2) -#define ARENA_IND_AUTOMATIC ((unsigned)-1) - typedef struct dynamic_opts_s dynamic_opts_t; struct dynamic_opts_s { - void **result; - size_t usize; - size_t num_items; - size_t item_size; - size_t alignment; - bool zero; + void **result; + size_t usize; + size_t num_items; + size_t item_size; + size_t alignment; + bool zero; unsigned tcache_ind; unsigned arena_ind; }; @@ -2301,7 +1395,9 @@ aligned_usize_get(size_t size, size_t alignment, size_t *usize, szind_t *ind, if (unlikely(*ind >= SC_NSIZES)) { return true; } - *usize = sz_index2size(*ind); + *usize = sz_large_size_classes_disabled() + ? sz_s2u(size) + : sz_index2size(*ind); assert(*usize > 0 && *usize <= SC_LARGE_MAXCLASS); return false; } @@ -2327,36 +1423,6 @@ zero_get(bool guarantee, bool slow) { } } -JEMALLOC_ALWAYS_INLINE tcache_t * -tcache_get_from_ind(tsd_t *tsd, unsigned tcache_ind, bool slow, bool is_alloc) { - tcache_t *tcache; - if (tcache_ind == TCACHE_IND_AUTOMATIC) { - if (likely(!slow)) { - /* Getting tcache ptr unconditionally. */ - tcache = tsd_tcachep_get(tsd); - assert(tcache == tcache_get(tsd)); - } else if (is_alloc || - likely(tsd_reentrancy_level_get(tsd) == 0)) { - tcache = tcache_get(tsd); - } else { - tcache = NULL; - } - } else { - /* - * Should not specify tcache on deallocation path when being - * reentrant. - */ - assert(is_alloc || tsd_reentrancy_level_get(tsd) == 0 || - tsd_state_nocleanup(tsd)); - if (tcache_ind == TCACHE_IND_NONE) { - tcache = NULL; - } else { - tcache = tcaches_get(tsd, tcache_ind); - } - } - return tcache; -} - /* Return true if a manual arena is specified and arena_get() OOMs. */ JEMALLOC_ALWAYS_INLINE bool arena_get_from_ind(tsd_t *tsd, unsigned arena_ind, arena_t **arena_p) { @@ -2379,10 +1445,10 @@ arena_get_from_ind(tsd_t *tsd, unsigned arena_ind, arena_t **arena_p) { /* ind is ignored if dopts->alignment > 0. */ JEMALLOC_ALWAYS_INLINE void * imalloc_no_sample(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd, - size_t size, size_t usize, szind_t ind) { + size_t size, size_t usize, szind_t ind, bool slab) { /* Fill in the tcache. */ - tcache_t *tcache = tcache_get_from_ind(tsd, dopts->tcache_ind, - sopts->slow, /* is_alloc */ true); + tcache_t *tcache = tcache_get_from_ind( + tsd, dopts->tcache_ind, sopts->slow, /* is_alloc */ true); /* Fill in the arena. */ arena_t *arena; @@ -2391,12 +1457,12 @@ imalloc_no_sample(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd, } if (unlikely(dopts->alignment != 0)) { - return ipalloct(tsd_tsdn(tsd), usize, dopts->alignment, - dopts->zero, tcache, arena); + return ipalloct_explicit_slab(tsd_tsdn(tsd), usize, + dopts->alignment, dopts->zero, slab, tcache, arena); } - return iallocztm(tsd_tsdn(tsd), size, ind, dopts->zero, tcache, false, - arena, sopts->slow); + return iallocztm_explicit_slab(tsd_tsdn(tsd), size, ind, dopts->zero, + slab, tcache, false, arena, sopts->slow); } JEMALLOC_ALWAYS_INLINE void * @@ -2404,29 +1470,26 @@ imalloc_sample(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd, size_t usize, szind_t ind) { void *ret; + dopts->alignment = prof_sample_align(usize, dopts->alignment); /* - * For small allocations, sampling bumps the usize. If so, we allocate - * from the ind_large bucket. + * If the allocation is small enough that it would normally be allocated + * on a slab, we need to take additional steps to ensure that it gets + * its own extent instead. */ - szind_t ind_large; - size_t bumped_usize = usize; - - dopts->alignment = prof_sample_align(dopts->alignment); - if (usize <= SC_SMALL_MAXCLASS) { - assert(((dopts->alignment == 0) ? - sz_s2u(SC_LARGE_MINCLASS) : - sz_sa2u(SC_LARGE_MINCLASS, dopts->alignment)) - == SC_LARGE_MINCLASS); - ind_large = sz_size2index(SC_LARGE_MINCLASS); - bumped_usize = sz_s2u(SC_LARGE_MINCLASS); + if (sz_can_use_slab(usize)) { + assert((dopts->alignment & PROF_SAMPLE_ALIGNMENT_MASK) == 0); + size_t bumped_usize = sz_sa2u(usize, dopts->alignment); + szind_t bumped_ind = sz_size2index(bumped_usize); + dopts->tcache_ind = TCACHE_IND_NONE; ret = imalloc_no_sample(sopts, dopts, tsd, bumped_usize, - bumped_usize, ind_large); + bumped_usize, bumped_ind, /* slab */ false); if (unlikely(ret == NULL)) { return NULL; } - arena_prof_promote(tsd_tsdn(tsd), ret, usize); + arena_prof_promote(tsd_tsdn(tsd), ret, usize, bumped_usize); } else { - ret = imalloc_no_sample(sopts, dopts, tsd, usize, usize, ind); + ret = imalloc_no_sample(sopts, dopts, tsd, usize, usize, ind, + /* slab */ false); } assert(prof_sample_aligned(ret)); @@ -2438,8 +1501,8 @@ imalloc_sample(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd, * *size to the product either way. */ JEMALLOC_ALWAYS_INLINE bool -compute_size_with_overflow(bool may_overflow, dynamic_opts_t *dopts, - size_t *size) { +compute_size_with_overflow( + bool may_overflow, dynamic_opts_t *dopts, size_t *size) { /* * This function is just num_items * item_size, except that we may have * to check for overflow. @@ -2495,26 +1558,26 @@ imalloc_body(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd) { int8_t reentrancy_level; /* Compute the amount of memory the user wants. */ - if (unlikely(compute_size_with_overflow(sopts->may_overflow, dopts, - &size))) { + if (unlikely(compute_size_with_overflow( + sopts->may_overflow, dopts, &size))) { goto label_oom; } if (unlikely(dopts->alignment < sopts->min_alignment - || (dopts->alignment & (dopts->alignment - 1)) != 0)) { + || (dopts->alignment & (dopts->alignment - 1)) != 0)) { goto label_invalid_alignment; } /* This is the beginning of the "core" algorithm. */ dopts->zero = zero_get(dopts->zero, sopts->slow); if (aligned_usize_get(size, dopts->alignment, &usize, &ind, - sopts->bump_empty_aligned_alloc)) { + sopts->bump_empty_aligned_alloc)) { goto label_oom; } dopts->usize = usize; /* Validate the user input. */ if (sopts->assert_nonempty_alloc) { - assert (size != 0); + assert(size != 0); } check_entry_exit_locking(tsd_tsdn(tsd)); @@ -2529,8 +1592,8 @@ imalloc_body(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd) { * We should never specify particular arenas or tcaches from * within our internal allocations. */ - assert(dopts->tcache_ind == TCACHE_IND_AUTOMATIC || - dopts->tcache_ind == TCACHE_IND_NONE); + assert(dopts->tcache_ind == TCACHE_IND_AUTOMATIC + || dopts->tcache_ind == TCACHE_IND_NONE); assert(dopts->arena_ind == ARENA_IND_AUTOMATIC); dopts->tcache_ind = TCACHE_IND_NONE; /* We know that arena 0 has already been initialized. */ @@ -2547,15 +1610,15 @@ imalloc_body(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd) { if (config_prof && opt_prof) { bool prof_active = prof_active_get_unlocked(); bool sample_event = te_prof_sample_event_lookahead(tsd, usize); - prof_tctx_t *tctx = prof_alloc_prep(tsd, prof_active, - sample_event); + prof_tctx_t *tctx = prof_alloc_prep( + tsd, prof_active, sample_event); emap_alloc_ctx_t alloc_ctx; - if (likely((uintptr_t)tctx == (uintptr_t)1U)) { - alloc_ctx.slab = (usize <= SC_SMALL_MAXCLASS); - allocation = imalloc_no_sample( - sopts, dopts, tsd, usize, usize, ind); - } else if ((uintptr_t)tctx > (uintptr_t)1U) { + if (likely(tctx == PROF_TCTX_SENTINEL)) { + alloc_ctx.slab = sz_can_use_slab(usize); + allocation = imalloc_no_sample(sopts, dopts, tsd, usize, + usize, ind, alloc_ctx.slab); + } else if (tctx != NULL) { allocation = imalloc_sample( sopts, dopts, tsd, usize, ind); alloc_ctx.slab = false; @@ -2571,7 +1634,7 @@ imalloc_body(static_opts_t *sopts, dynamic_opts_t *dopts, tsd_t *tsd) { } else { assert(!opt_prof); allocation = imalloc_no_sample(sopts, dopts, tsd, size, usize, - ind); + ind, sz_can_use_slab(usize)); if (unlikely(allocation == NULL)) { goto label_oom; } @@ -2698,8 +1761,8 @@ imalloc(static_opts_t *sopts, dynamic_opts_t *dopts) { JEMALLOC_NOINLINE void * malloc_default(size_t size) { - void *ret; - static_opts_t sopts; + void *ret; + static_opts_t sopts; dynamic_opts_t dopts; /* @@ -2729,8 +1792,6 @@ malloc_default(size_t size) { hook_invoke_alloc(hook_alloc_malloc, ret, (uintptr_t)ret, args); } - LOG("core.malloc.exit", "result: %p", ret); - return ret; } @@ -2739,22 +1800,28 @@ malloc_default(size_t size) { * Begin malloc(3)-compatible functions. */ -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * -JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1) -je_malloc(size_t size) { - return imalloc_fastpath(size, &malloc_default); +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * +JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1) je_malloc(size_t size) { + LOG("core.malloc.entry", "size: %zu", size); + + void *ret = imalloc_fastpath(size, &malloc_default); + + LOG("core.malloc.exit", "result: %p", ret); + return ret; } JEMALLOC_EXPORT int JEMALLOC_NOTHROW JEMALLOC_ATTR(nonnull(1)) -je_posix_memalign(void **memptr, size_t alignment, size_t size) { - int ret; - static_opts_t sopts; + je_posix_memalign(void **memptr, size_t alignment, size_t size) { + int ret; + static_opts_t sopts; dynamic_opts_t dopts; - LOG("core.posix_memalign.entry", "mem ptr: %p, alignment: %zu, " - "size: %zu", memptr, alignment, size); + LOG("core.posix_memalign.entry", + "mem ptr: %p, alignment: %zu, " + "size: %zu", + memptr, alignment, size); static_opts_init(&sopts); dynamic_opts_init(&dopts); @@ -2773,10 +1840,10 @@ je_posix_memalign(void **memptr, size_t alignment, size_t size) { ret = imalloc(&sopts, &dopts); if (sopts.slow) { - uintptr_t args[3] = {(uintptr_t)memptr, (uintptr_t)alignment, - (uintptr_t)size}; - hook_invoke_alloc(hook_alloc_posix_memalign, *memptr, - (uintptr_t)ret, args); + uintptr_t args[3] = { + (uintptr_t)memptr, (uintptr_t)alignment, (uintptr_t)size}; + hook_invoke_alloc( + hook_alloc_posix_memalign, *memptr, (uintptr_t)ret, args); } LOG("core.posix_memalign.exit", "result: %d, alloc ptr: %p", ret, @@ -2785,13 +1852,13 @@ je_posix_memalign(void **memptr, size_t alignment, size_t size) { return ret; } -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(2) -je_aligned_alloc(size_t alignment, size_t size) { + je_aligned_alloc(size_t alignment, size_t size) { void *ret; - static_opts_t sopts; + static_opts_t sopts; dynamic_opts_t dopts; LOG("core.aligned_alloc.entry", "alignment: %zu, size: %zu\n", @@ -2817,8 +1884,8 @@ je_aligned_alloc(size_t alignment, size_t size) { imalloc(&sopts, &dopts); if (sopts.slow) { uintptr_t args[3] = {(uintptr_t)alignment, (uintptr_t)size}; - hook_invoke_alloc(hook_alloc_aligned_alloc, ret, - (uintptr_t)ret, args); + hook_invoke_alloc( + hook_alloc_aligned_alloc, ret, (uintptr_t)ret, args); } LOG("core.aligned_alloc.exit", "result: %p", ret); @@ -2826,15 +1893,15 @@ je_aligned_alloc(size_t alignment, size_t size) { return ret; } -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE2(1, 2) -je_calloc(size_t num, size_t size) { - void *ret; - static_opts_t sopts; + je_calloc(size_t num, size_t size) { + void *ret; + static_opts_t sopts; dynamic_opts_t dopts; - LOG("core.calloc.entry", "num: %zu, size: %zu\n", num, size); + LOG("core.calloc.entry", "num: %zu, size: %zu", num, size); static_opts_init(&sopts); dynamic_opts_init(&dopts); @@ -2874,51 +1941,26 @@ ifree(tsd_t *tsd, void *ptr, tcache_t *tcache, bool slow_path) { assert(malloc_initialized() || IS_INITIALIZER); emap_alloc_ctx_t alloc_ctx; - emap_alloc_ctx_lookup(tsd_tsdn(tsd), &arena_emap_global, ptr, - &alloc_ctx); + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind != SC_NSIZES); - size_t usize = sz_index2size(alloc_ctx.szind); + size_t usize = emap_alloc_ctx_usize_get(&alloc_ctx); if (config_prof && opt_prof) { prof_free(tsd, ptr, usize, &alloc_ctx); } if (likely(!slow_path)) { - idalloctm(tsd_tsdn(tsd), ptr, tcache, &alloc_ctx, false, - false); + idalloctm(tsd_tsdn(tsd), ptr, tcache, &alloc_ctx, false, false); } else { if (config_fill && slow_path && opt_junk_free) { junk_free_callback(ptr, usize); } - idalloctm(tsd_tsdn(tsd), ptr, tcache, &alloc_ctx, false, - true); + idalloctm(tsd_tsdn(tsd), ptr, tcache, &alloc_ctx, false, true); } thread_dalloc_event(tsd, usize); } -JEMALLOC_ALWAYS_INLINE bool -maybe_check_alloc_ctx(tsd_t *tsd, void *ptr, emap_alloc_ctx_t *alloc_ctx) { - if (config_opt_size_checks) { - emap_alloc_ctx_t dbg_ctx; - emap_alloc_ctx_lookup(tsd_tsdn(tsd), &arena_emap_global, ptr, - &dbg_ctx); - if (alloc_ctx->szind != dbg_ctx.szind) { - safety_check_fail_sized_dealloc( - /* current_dealloc */ true, ptr, - /* true_size */ sz_size2index(dbg_ctx.szind), - /* input_size */ sz_size2index(alloc_ctx->szind)); - return true; - } - if (alloc_ctx->slab != dbg_ctx.slab) { - safety_check_fail( - "Internal heap corruption detected: " - "mismatch in slab bit"); - return true; - } - } - return false; -} - JEMALLOC_ALWAYS_INLINE void isfree(tsd_t *tsd, void *ptr, size_t usize, tcache_t *tcache, bool slow_path) { if (!slow_path) { @@ -2933,35 +1975,41 @@ isfree(tsd_t *tsd, void *ptr, size_t usize, tcache_t *tcache, bool slow_path) { assert(malloc_initialized() || IS_INITIALIZER); emap_alloc_ctx_t alloc_ctx; + szind_t szind = sz_size2index(usize); if (!config_prof) { - alloc_ctx.szind = sz_size2index(usize); - alloc_ctx.slab = (alloc_ctx.szind < SC_NBINS); + emap_alloc_ctx_init( + &alloc_ctx, szind, (szind < SC_NBINS), usize); } else { if (likely(!prof_sample_aligned(ptr))) { /* * When the ptr is not page aligned, it was not sampled. * usize can be trusted to determine szind and slab. */ - alloc_ctx.szind = sz_size2index(usize); - alloc_ctx.slab = (alloc_ctx.szind < SC_NBINS); + emap_alloc_ctx_init( + &alloc_ctx, szind, (szind < SC_NBINS), usize); } else if (opt_prof) { - emap_alloc_ctx_lookup(tsd_tsdn(tsd), &arena_emap_global, - ptr, &alloc_ctx); + /* + * Small sampled allocs promoted can still get correct + * usize here. Check comments in edata_usize_get. + */ + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &alloc_ctx); if (config_opt_safety_checks) { /* Small alloc may have !slab (sampled). */ - if (unlikely(alloc_ctx.szind != - sz_size2index(usize))) { + size_t true_size = emap_alloc_ctx_usize_get( + &alloc_ctx); + if (unlikely(alloc_ctx.szind + != sz_size2index(usize))) { safety_check_fail_sized_dealloc( /* current_dealloc */ true, ptr, - /* true_size */ sz_index2size( - alloc_ctx.szind), + /* true_size */ true_size, /* input_size */ usize); } } } else { - alloc_ctx.szind = sz_size2index(usize); - alloc_ctx.slab = (alloc_ctx.szind < SC_NBINS); + emap_alloc_ctx_init( + &alloc_ctx, szind, (szind < SC_NBINS), usize); } } bool fail = maybe_check_alloc_ctx(tsd, ptr, &alloc_ctx); @@ -2979,14 +2027,12 @@ isfree(tsd_t *tsd, void *ptr, size_t usize, tcache_t *tcache, bool slow_path) { prof_free(tsd, ptr, usize, &alloc_ctx); } if (likely(!slow_path)) { - isdalloct(tsd_tsdn(tsd), ptr, usize, tcache, &alloc_ctx, - false); + isdalloct(tsd_tsdn(tsd), ptr, usize, tcache, &alloc_ctx, false); } else { if (config_fill && slow_path && opt_junk_free) { junk_free_callback(ptr, usize); } - isdalloct(tsd_tsdn(tsd), ptr, usize, tcache, &alloc_ctx, - true); + isdalloct(tsd_tsdn(tsd), ptr, usize, tcache, &alloc_ctx, true); } thread_dalloc_event(tsd, usize); } @@ -3025,144 +2071,27 @@ free_default(void *ptr) { } } -JEMALLOC_ALWAYS_INLINE bool -free_fastpath_nonfast_aligned(void *ptr, bool check_prof) { - /* - * free_fastpath do not handle two uncommon cases: 1) sampled profiled - * objects and 2) sampled junk & stash for use-after-free detection. - * Both have special alignments which are used to escape the fastpath. - * - * prof_sample is page-aligned, which covers the UAF check when both - * are enabled (the assertion below). Avoiding redundant checks since - * this is on the fastpath -- at most one runtime branch from this. - */ - if (config_debug && cache_bin_nonfast_aligned(ptr)) { - assert(prof_sample_aligned(ptr)); - } - - if (config_prof && check_prof) { - /* When prof is enabled, the prof_sample alignment is enough. */ - if (prof_sample_aligned(ptr)) { - return true; - } else { - return false; - } - } +JEMALLOC_EXPORT void JEMALLOC_NOTHROW +je_free(void *ptr) { + LOG("core.free.entry", "ptr: %p", ptr); - if (config_uaf_detection) { - if (cache_bin_nonfast_aligned(ptr)) { - return true; - } else { - return false; - } - } + je_free_impl(ptr); - return false; + LOG("core.free.exit", ""); } -/* Returns whether or not the free attempt was successful. */ -JEMALLOC_ALWAYS_INLINE -bool free_fastpath(void *ptr, size_t size, bool size_hint) { - tsd_t *tsd = tsd_get(false); - /* The branch gets optimized away unless tsd_get_allocates(). */ - if (unlikely(tsd == NULL)) { - return false; - } - /* - * The tsd_fast() / initialized checks are folded into the branch - * testing (deallocated_after >= threshold) later in this function. - * The threshold will be set to 0 when !tsd_fast. - */ - assert(tsd_fast(tsd) || - *tsd_thread_deallocated_next_event_fastp_get_unsafe(tsd) == 0); - - emap_alloc_ctx_t alloc_ctx; - if (!size_hint) { - bool err = emap_alloc_ctx_try_lookup_fast(tsd, - &arena_emap_global, ptr, &alloc_ctx); - - /* Note: profiled objects will have alloc_ctx.slab set */ - if (unlikely(err || !alloc_ctx.slab || - free_fastpath_nonfast_aligned(ptr, - /* check_prof */ false))) { - return false; - } - assert(alloc_ctx.szind != SC_NSIZES); - } else { - /* - * Check for both sizes that are too large, and for sampled / - * special aligned objects. The alignment check will also check - * for null ptr. - */ - if (unlikely(size > SC_LOOKUP_MAXCLASS || - free_fastpath_nonfast_aligned(ptr, - /* check_prof */ true))) { - return false; - } - alloc_ctx.szind = sz_size2index_lookup(size); - /* Max lookup class must be small. */ - assert(alloc_ctx.szind < SC_NBINS); - /* This is a dead store, except when opt size checking is on. */ - alloc_ctx.slab = true; - } - /* - * Currently the fastpath only handles small sizes. The branch on - * SC_LOOKUP_MAXCLASS makes sure of it. This lets us avoid checking - * tcache szind upper limit (i.e. tcache_maxclass) as well. - */ - assert(alloc_ctx.slab); - - uint64_t deallocated, threshold; - te_free_fastpath_ctx(tsd, &deallocated, &threshold); - - size_t usize = sz_index2size(alloc_ctx.szind); - uint64_t deallocated_after = deallocated + usize; - /* - * Check for events and tsd non-nominal (fast_threshold will be set to - * 0) in a single branch. Note that this handles the uninitialized case - * as well (TSD init will be triggered on the non-fastpath). Therefore - * anything depends on a functional TSD (e.g. the alloc_ctx sanity check - * below) needs to be after this branch. - */ - if (unlikely(deallocated_after >= threshold)) { - return false; - } - assert(tsd_fast(tsd)); - bool fail = maybe_check_alloc_ctx(tsd, ptr, &alloc_ctx); - if (fail) { - /* See the comment in isfree. */ - return true; - } - - tcache_t *tcache = tcache_get_from_ind(tsd, TCACHE_IND_AUTOMATIC, - /* slow */ false, /* is_alloc */ false); - cache_bin_t *bin = &tcache->bins[alloc_ctx.szind]; - - /* - * If junking were enabled, this is where we would do it. It's not - * though, since we ensured above that we're on the fast path. Assert - * that to double-check. - */ - assert(!opt_junk_free); - - if (!cache_bin_dalloc_easy(bin, ptr)) { - return false; - } +JEMALLOC_EXPORT void JEMALLOC_NOTHROW +je_free_sized(void *ptr, size_t size) { + LOG("core.free_sized.entry", "ptr: %p, size: %zu", ptr, size); - *tsd_thread_deallocatedp_get(tsd) = deallocated_after; + je_sdallocx_noflags(ptr, size); - return true; + LOG("core.free_sized.exit", ""); } JEMALLOC_EXPORT void JEMALLOC_NOTHROW -je_free(void *ptr) { - LOG("core.free.entry", "ptr: %p", ptr); - - if (!free_fastpath(ptr, 0, false)) { - free_default(ptr); - } - - LOG("core.free.exit", ""); +je_free_aligned_sized(void *ptr, size_t alignment, size_t size) { + return je_sdallocx(ptr, size, /* flags */ MALLOCX_ALIGN(alignment)); } /* @@ -3174,12 +2103,11 @@ je_free(void *ptr) { */ #ifdef JEMALLOC_OVERRIDE_MEMALIGN -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * -JEMALLOC_ATTR(malloc) -je_memalign(size_t alignment, size_t size) { - void *ret; - static_opts_t sopts; +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * +JEMALLOC_ATTR(malloc) je_memalign(size_t alignment, size_t size) { + void *ret; + static_opts_t sopts; dynamic_opts_t dopts; LOG("core.memalign.entry", "alignment: %zu, size: %zu\n", alignment, @@ -3188,6 +2116,7 @@ je_memalign(size_t alignment, size_t size) { static_opts_init(&sopts); dynamic_opts_init(&dopts); + sopts.bump_empty_aligned_alloc = true; sopts.min_alignment = 1; sopts.oom_string = ": Error allocating aligned memory: out of memory\n"; @@ -3203,8 +2132,8 @@ je_memalign(size_t alignment, size_t size) { imalloc(&sopts, &dopts); if (sopts.slow) { uintptr_t args[3] = {alignment, size}; - hook_invoke_alloc(hook_alloc_memalign, ret, (uintptr_t)ret, - args); + hook_invoke_alloc( + hook_alloc_memalign, ret, (uintptr_t)ret, args); } LOG("core.memalign.exit", "result: %p", ret); @@ -3213,13 +2142,12 @@ je_memalign(size_t alignment, size_t size) { #endif #ifdef JEMALLOC_OVERRIDE_VALLOC -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * -JEMALLOC_ATTR(malloc) -je_valloc(size_t size) { +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * +JEMALLOC_ATTR(malloc) je_valloc(size_t size) { void *ret; - static_opts_t sopts; + static_opts_t sopts; dynamic_opts_t dopts; LOG("core.valloc.entry", "size: %zu\n", size); @@ -3250,6 +2178,48 @@ je_valloc(size_t size) { } #endif +#ifdef JEMALLOC_OVERRIDE_PVALLOC +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * +JEMALLOC_ATTR(malloc) je_pvalloc(size_t size) { + void *ret; + + static_opts_t sopts; + dynamic_opts_t dopts; + + LOG("core.pvalloc.entry", "size: %zu\n", size); + + static_opts_init(&sopts); + dynamic_opts_init(&dopts); + + sopts.null_out_result_on_error = true; + sopts.min_alignment = PAGE; + sopts.oom_string = + ": Error allocating aligned memory: out of memory\n"; + sopts.invalid_alignment_string = + ": Error allocating aligned memory: invalid alignment\n"; + + dopts.result = &ret; + dopts.num_items = 1; + /* + * This is the only difference from je_valloc - size is rounded up to + * a PAGE multiple. + */ + dopts.item_size = PAGE_CEILING(size); + dopts.alignment = PAGE; + + imalloc(&sopts, &dopts); + if (sopts.slow) { + uintptr_t args[3] = {size}; + hook_invoke_alloc( + hook_alloc_pvalloc, ret, (uintptr_t)ret, args); + } + + LOG("core.pvalloc.exit", "result: %p\n", ret); + return ret; +} +#endif + #if defined(JEMALLOC_IS_MALLOC) && defined(JEMALLOC_GLIBC_MALLOC_HOOK) /* * glibc provides the RTLD_DEEPBIND flag for dlopen which can make it possible @@ -3260,49 +2230,59 @@ je_valloc(size_t size) { * passed an extra argument for the caller return address, which will be * ignored. */ -#include // defines __GLIBC__ if we are compiling against glibc +# include // defines __GLIBC__ if we are compiling against glibc JEMALLOC_EXPORT void (*__free_hook)(void *ptr) = je_free; JEMALLOC_EXPORT void *(*__malloc_hook)(size_t size) = je_malloc; JEMALLOC_EXPORT void *(*__realloc_hook)(void *ptr, size_t size) = je_realloc; -# ifdef JEMALLOC_GLIBC_MEMALIGN_HOOK -JEMALLOC_EXPORT void *(*__memalign_hook)(size_t alignment, size_t size) = - je_memalign; -# endif +# ifdef JEMALLOC_GLIBC_MEMALIGN_HOOK +JEMALLOC_EXPORT void *(*__memalign_hook)( + size_t alignment, size_t size) = je_memalign; +# endif -# ifdef __GLIBC__ +# ifdef __GLIBC__ /* * To enable static linking with glibc, the libc specific malloc interface must * be implemented also, so none of glibc's malloc.o functions are added to the * link. */ -# define ALIAS(je_fn) __attribute__((alias (#je_fn), used)) +# define ALIAS(je_fn) __attribute__((alias(#je_fn), used)) /* To force macro expansion of je_ prefix before stringification. */ -# define PREALIAS(je_fn) ALIAS(je_fn) -# ifdef JEMALLOC_OVERRIDE___LIBC_CALLOC +# define PREALIAS(je_fn) ALIAS(je_fn) +# ifdef JEMALLOC_OVERRIDE___LIBC_CALLOC void *__libc_calloc(size_t n, size_t size) PREALIAS(je_calloc); -# endif -# ifdef JEMALLOC_OVERRIDE___LIBC_FREE -void __libc_free(void* ptr) PREALIAS(je_free); -# endif -# ifdef JEMALLOC_OVERRIDE___LIBC_MALLOC +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_FREE +void __libc_free(void *ptr) PREALIAS(je_free); +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_FREE_SIZED +void __libc_free_sized(void *ptr, size_t size) PREALIAS(je_free_sized); +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_FREE_ALIGNED_SIZED +void __libc_free_aligned_sized(void *ptr, size_t alignment, size_t size) + PREALIAS(je_free_aligned_sized); +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_MALLOC void *__libc_malloc(size_t size) PREALIAS(je_malloc); -# endif -# ifdef JEMALLOC_OVERRIDE___LIBC_MEMALIGN +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_MEMALIGN void *__libc_memalign(size_t align, size_t s) PREALIAS(je_memalign); -# endif -# ifdef JEMALLOC_OVERRIDE___LIBC_REALLOC -void *__libc_realloc(void* ptr, size_t size) PREALIAS(je_realloc); -# endif -# ifdef JEMALLOC_OVERRIDE___LIBC_VALLOC +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_REALLOC +void *__libc_realloc(void *ptr, size_t size) PREALIAS(je_realloc); +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_VALLOC void *__libc_valloc(size_t size) PREALIAS(je_valloc); -# endif -# ifdef JEMALLOC_OVERRIDE___POSIX_MEMALIGN -int __posix_memalign(void** r, size_t a, size_t s) PREALIAS(je_posix_memalign); -# endif -# undef PREALIAS -# undef ALIAS -# endif +# endif +# ifdef JEMALLOC_OVERRIDE___LIBC_PVALLOC +void *__libc_pvalloc(size_t size) PREALIAS(je_pvalloc); +# endif +# ifdef JEMALLOC_OVERRIDE___POSIX_MEMALIGN +int __posix_memalign(void **r, size_t a, size_t s) PREALIAS(je_posix_memalign); +# endif +# undef PREALIAS +# undef ALIAS +# endif #endif /* @@ -3335,23 +2315,23 @@ mallocx_arena_get(int flags) { #ifdef JEMALLOC_EXPERIMENTAL_SMALLOCX_API -#define JEMALLOC_SMALLOCX_CONCAT_HELPER(x, y) x ## y -#define JEMALLOC_SMALLOCX_CONCAT_HELPER2(x, y) \ - JEMALLOC_SMALLOCX_CONCAT_HELPER(x, y) +# define JEMALLOC_SMALLOCX_CONCAT_HELPER(x, y) x##y +# define JEMALLOC_SMALLOCX_CONCAT_HELPER2(x, y) \ + JEMALLOC_SMALLOCX_CONCAT_HELPER(x, y) typedef struct { - void *ptr; + void *ptr; size_t size; } smallocx_return_t; -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -smallocx_return_t JEMALLOC_NOTHROW -/* +JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN smallocx_return_t + JEMALLOC_NOTHROW + /* * The attribute JEMALLOC_ATTR(malloc) cannot be used due to: * - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86488 */ -JEMALLOC_SMALLOCX_CONCAT_HELPER2(je_smallocx_, JEMALLOC_VERSION_GID_IDENT) - (size_t size, int flags) { + JEMALLOC_SMALLOCX_CONCAT_HELPER2(je_smallocx_, JEMALLOC_VERSION_GID_IDENT)( + size_t size, int flags) { /* * Note: the attribute JEMALLOC_ALLOC_SIZE(1) cannot be * used here because it makes writing beyond the `size` @@ -3360,8 +2340,8 @@ JEMALLOC_SMALLOCX_CONCAT_HELPER2(je_smallocx_, JEMALLOC_VERSION_GID_IDENT) * up to `smallocx_return_t::size`. */ smallocx_return_t ret; - static_opts_t sopts; - dynamic_opts_t dopts; + static_opts_t sopts; + dynamic_opts_t dopts; LOG("core.smallocx.entry", "size: %zu, flags: %d", size, flags); @@ -3390,16 +2370,16 @@ JEMALLOC_SMALLOCX_CONCAT_HELPER2(je_smallocx_, JEMALLOC_VERSION_GID_IDENT) LOG("core.smallocx.exit", "result: %p, size: %zu", ret.ptr, ret.size); return ret; } -#undef JEMALLOC_SMALLOCX_CONCAT_HELPER -#undef JEMALLOC_SMALLOCX_CONCAT_HELPER2 +# undef JEMALLOC_SMALLOCX_CONCAT_HELPER +# undef JEMALLOC_SMALLOCX_CONCAT_HELPER2 #endif -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * JEMALLOC_ATTR(malloc) JEMALLOC_ALLOC_SIZE(1) -je_mallocx(size_t size, int flags) { - void *ret; - static_opts_t sopts; + je_mallocx(size_t size, int flags) { + void *ret; + static_opts_t sopts; dynamic_opts_t dopts; LOG("core.mallocx.entry", "size: %zu, flags: %d", size, flags); @@ -3424,8 +2404,8 @@ je_mallocx(size_t size, int flags) { imalloc(&sopts, &dopts); if (sopts.slow) { uintptr_t args[3] = {size, flags}; - hook_invoke_alloc(hook_alloc_mallocx, ret, (uintptr_t)ret, - args); + hook_invoke_alloc( + hook_alloc_mallocx, ret, (uintptr_t)ret, args); } LOG("core.mallocx.exit", "result: %p", ret); @@ -3442,18 +2422,25 @@ irallocx_prof_sample(tsdn_t *tsdn, void *old_ptr, size_t old_usize, return NULL; } - alignment = prof_sample_align(alignment); - if (usize <= SC_SMALL_MAXCLASS) { - p = iralloct(tsdn, old_ptr, old_usize, - SC_LARGE_MINCLASS, alignment, zero, tcache, + alignment = prof_sample_align(usize, alignment); + /* + * If the allocation is small enough that it would normally be allocated + * on a slab, we need to take additional steps to ensure that it gets + * its own extent instead. + */ + if (sz_can_use_slab(usize)) { + size_t bumped_usize = sz_sa2u(usize, alignment); + p = iralloct_explicit_slab(tsdn, old_ptr, old_usize, + bumped_usize, alignment, zero, /* slab */ false, tcache, arena, hook_args); if (p == NULL) { return NULL; } - arena_prof_promote(tsdn, p, usize); + arena_prof_promote(tsdn, p, usize, bumped_usize); } else { - p = iralloct(tsdn, old_ptr, old_usize, usize, alignment, zero, - tcache, arena, hook_args); + p = iralloct_explicit_slab(tsdn, old_ptr, old_usize, usize, + alignment, zero, /* slab */ false, tcache, arena, + hook_args); } assert(prof_sample_aligned(p)); @@ -3462,40 +2449,39 @@ irallocx_prof_sample(tsdn_t *tsdn, void *old_ptr, size_t old_usize, JEMALLOC_ALWAYS_INLINE void * irallocx_prof(tsd_t *tsd, void *old_ptr, size_t old_usize, size_t size, - size_t alignment, size_t usize, bool zero, tcache_t *tcache, - arena_t *arena, emap_alloc_ctx_t *alloc_ctx, - hook_ralloc_args_t *hook_args) { + size_t alignment, size_t usize, bool zero, tcache_t *tcache, arena_t *arena, + emap_alloc_ctx_t *alloc_ctx, hook_ralloc_args_t *hook_args) { prof_info_t old_prof_info; prof_info_get_and_reset_recent(tsd, old_ptr, alloc_ctx, &old_prof_info); - bool prof_active = prof_active_get_unlocked(); - bool sample_event = te_prof_sample_event_lookahead(tsd, usize); + bool prof_active = prof_active_get_unlocked(); + bool sample_event = te_prof_sample_event_lookahead(tsd, usize); prof_tctx_t *tctx = prof_alloc_prep(tsd, prof_active, sample_event); - void *p; - if (unlikely((uintptr_t)tctx != (uintptr_t)1U)) { + void *p; + if (unlikely(tctx != PROF_TCTX_SENTINEL)) { p = irallocx_prof_sample(tsd_tsdn(tsd), old_ptr, old_usize, usize, alignment, zero, tcache, arena, tctx, hook_args); } else { p = iralloct(tsd_tsdn(tsd), old_ptr, old_usize, size, alignment, - zero, tcache, arena, hook_args); + usize, zero, tcache, arena, hook_args); } if (unlikely(p == NULL)) { prof_alloc_rollback(tsd, tctx); return NULL; } assert(usize == isalloc(tsd_tsdn(tsd), p)); - prof_realloc(tsd, p, size, usize, tctx, prof_active, old_ptr, - old_usize, &old_prof_info, sample_event); + prof_realloc(tsd, p, size, usize, tctx, prof_active, old_ptr, old_usize, + &old_prof_info, sample_event); return p; } static void * do_rallocx(void *ptr, size_t size, int flags, bool is_realloc) { - void *p; - tsd_t *tsd; - size_t usize; - size_t old_usize; - size_t alignment = MALLOCX_ALIGN_GET(flags); + void *p; + tsd_t *tsd; + size_t usize; + size_t old_usize; + size_t alignment = MALLOCX_ALIGN_GET(flags); arena_t *arena; assert(ptr != NULL); @@ -3511,22 +2497,22 @@ do_rallocx(void *ptr, size_t size, int flags, bool is_realloc) { goto label_oom; } - unsigned tcache_ind = mallocx_tcache_get(flags); + unsigned tcache_ind = mallocx_tcache_get(flags); tcache_t *tcache = tcache_get_from_ind(tsd, tcache_ind, /* slow */ true, /* is_alloc */ true); emap_alloc_ctx_t alloc_ctx; - emap_alloc_ctx_lookup(tsd_tsdn(tsd), &arena_emap_global, ptr, - &alloc_ctx); + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind != SC_NSIZES); - old_usize = sz_index2size(alloc_ctx.szind); + old_usize = emap_alloc_ctx_usize_get(&alloc_ctx); assert(old_usize == isalloc(tsd_tsdn(tsd), ptr)); if (aligned_usize_get(size, alignment, &usize, NULL, false)) { goto label_oom; } - hook_ralloc_args_t hook_args = {is_realloc, {(uintptr_t)ptr, size, - flags, 0}}; + hook_ralloc_args_t hook_args = { + is_realloc, {(uintptr_t)ptr, size, flags, 0}}; if (config_prof && opt_prof) { p = irallocx_prof(tsd, ptr, old_usize, size, alignment, usize, zero, tcache, arena, &alloc_ctx, &hook_args); @@ -3535,7 +2521,7 @@ do_rallocx(void *ptr, size_t size, int flags, bool is_realloc) { } } else { p = iralloct(tsd_tsdn(tsd), ptr, old_usize, size, alignment, - zero, tcache, arena, &hook_args); + usize, zero, tcache, arena, &hook_args); if (unlikely(p == NULL)) { goto label_oom; } @@ -3551,12 +2537,15 @@ do_rallocx(void *ptr, size_t size, int flags, bool is_realloc) { if (config_fill && unlikely(opt_junk_alloc) && usize > old_usize && !zero) { size_t excess_len = usize - old_usize; - void *excess_start = (void *)((uintptr_t)p + old_usize); + void *excess_start = (void *)((byte_t *)p + old_usize); junk_alloc_callback(excess_start, excess_len); } return p; label_oom: + if (is_realloc) { + set_errno(ENOMEM); + } if (config_xmalloc && unlikely(opt_xmalloc)) { malloc_write(": Error in rallocx(): out of memory\n"); abort(); @@ -3567,12 +2556,11 @@ do_rallocx(void *ptr, size_t size, int flags, bool is_realloc) { return NULL; } -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * -JEMALLOC_ALLOC_SIZE(2) -je_rallocx(void *ptr, size_t size, int flags) { - LOG("core.rallocx.entry", "ptr: %p, size: %zu, flags: %d", ptr, - size, flags); +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * +JEMALLOC_ALLOC_SIZE(2) je_rallocx(void *ptr, size_t size, int flags) { + LOG("core.rallocx.entry", "ptr: %p, size: %zu, flags: %d", ptr, size, + flags); void *ret = do_rallocx(ptr, size, flags, false); LOG("core.rallocx.exit", "result: %p", ret); return ret; @@ -3606,7 +2594,8 @@ do_realloc_nonnull_zero(void *ptr) { check_entry_exit_locking(tsd_tsdn(tsd)); return NULL; } else { - safety_check_fail("Called realloc(non-null-ptr, 0) with " + safety_check_fail( + "Called realloc(non-null-ptr, 0) with " "zero_realloc:abort set\n"); /* In real code, this will never run; the safety check failure * will call abort. In the unit test, we just want to bail out @@ -3617,10 +2606,9 @@ do_realloc_nonnull_zero(void *ptr) { } } -JEMALLOC_EXPORT JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN -void JEMALLOC_NOTHROW * -JEMALLOC_ALLOC_SIZE(2) -je_realloc(void *ptr, size_t size) { +JEMALLOC_EXPORT +JEMALLOC_ALLOCATOR JEMALLOC_RESTRICT_RETURN void JEMALLOC_NOTHROW * +JEMALLOC_ALLOC_SIZE(2) je_realloc(void *ptr, size_t size) { LOG("core.realloc.entry", "ptr: %p, size: %zu\n", ptr, size); if (likely(ptr != NULL && size != 0)) { @@ -3635,7 +2623,7 @@ je_realloc(void *ptr, size_t size) { /* realloc(NULL, size) is equivalent to malloc(size). */ void *ret; - static_opts_t sopts; + static_opts_t sopts; dynamic_opts_t dopts; static_opts_init(&sopts); @@ -3653,8 +2641,8 @@ je_realloc(void *ptr, size_t size) { imalloc(&sopts, &dopts); if (sopts.slow) { uintptr_t args[3] = {(uintptr_t)ptr, size}; - hook_invoke_alloc(hook_alloc_realloc, ret, - (uintptr_t)ret, args); + hook_invoke_alloc( + hook_alloc_realloc, ret, (uintptr_t)ret, args); } LOG("core.realloc.exit", "result: %p", ret); return ret; @@ -3666,8 +2654,8 @@ ixallocx_helper(tsdn_t *tsdn, void *ptr, size_t old_usize, size_t size, size_t extra, size_t alignment, bool zero) { size_t newsize; - if (ixalloc(tsdn, ptr, old_usize, size, extra, alignment, zero, - &newsize)) { + if (ixalloc( + tsdn, ptr, old_usize, size, extra, alignment, zero, &newsize)) { return old_usize; } @@ -3682,8 +2670,8 @@ ixallocx_prof_sample(tsdn_t *tsdn, void *ptr, size_t old_usize, size_t size, return old_usize; } - return ixallocx_helper(tsdn, ptr, old_usize, size, extra, alignment, - zero); + return ixallocx_helper( + tsdn, ptr, old_usize, size, extra, alignment, zero); } JEMALLOC_ALWAYS_INLINE size_t @@ -3703,8 +2691,8 @@ ixallocx_prof(tsd_t *tsd, void *ptr, size_t old_usize, size_t size, * prof_realloc() will use the actual usize to decide whether to sample. */ size_t usize_max; - if (aligned_usize_get(size + extra, alignment, &usize_max, NULL, - false)) { + if (aligned_usize_get( + size + extra, alignment, &usize_max, NULL, false)) { /* * usize_max is out of range, and chances are that allocation * will fail, but use the maximum possible value and carry on @@ -3717,7 +2705,7 @@ ixallocx_prof(tsd_t *tsd, void *ptr, size_t old_usize, size_t size, prof_tctx_t *tctx = prof_alloc_prep(tsd, prof_active, sample_event); size_t usize; - if (unlikely((uintptr_t)tctx != (uintptr_t)1U)) { + if (unlikely(tctx != PROF_TCTX_SENTINEL)) { usize = ixallocx_prof_sample(tsd_tsdn(tsd), ptr, old_usize, size, extra, alignment, zero, tctx); } else { @@ -3738,7 +2726,15 @@ ixallocx_prof(tsd_t *tsd, void *ptr, size_t old_usize, size_t size, prof_info_get(tsd, ptr, alloc_ctx, &prof_info); prof_alloc_rollback(tsd, tctx); } else { - prof_info_get_and_reset_recent(tsd, ptr, alloc_ctx, &prof_info); + /* + * Need to retrieve the new alloc_ctx since the modification + * to edata has already been done. + */ + emap_alloc_ctx_t new_alloc_ctx; + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &new_alloc_ctx); + prof_info_get_and_reset_recent( + tsd, ptr, &new_alloc_ctx, &prof_info); assert(usize <= usize_max); sample_event = te_prof_sample_event_lookahead(tsd, usize); prof_realloc(tsd, ptr, size, usize, tctx, prof_active, ptr, @@ -3754,10 +2750,12 @@ je_xallocx(void *ptr, size_t size, size_t extra, int flags) { tsd_t *tsd; size_t usize, old_usize; size_t alignment = MALLOCX_ALIGN_GET(flags); - bool zero = zero_get(MALLOCX_ZERO_GET(flags), /* slow */ true); + bool zero = zero_get(MALLOCX_ZERO_GET(flags), /* slow */ true); - LOG("core.xallocx.entry", "ptr: %p, size: %zu, extra: %zu, " - "flags: %d", ptr, size, extra, flags); + LOG("core.xallocx.entry", + "ptr: %p, size: %zu, extra: %zu, " + "flags: %d", + ptr, size, extra, flags); assert(ptr != NULL); assert(size != 0); @@ -3771,14 +2769,14 @@ je_xallocx(void *ptr, size_t size, size_t extra, int flags) { * object associated with the ptr (though the content of the edata_t * object can be changed). */ - edata_t *old_edata = emap_edata_lookup(tsd_tsdn(tsd), - &arena_emap_global, ptr); + edata_t *old_edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); emap_alloc_ctx_t alloc_ctx; - emap_alloc_ctx_lookup(tsd_tsdn(tsd), &arena_emap_global, ptr, - &alloc_ctx); + emap_alloc_ctx_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr, &alloc_ctx); assert(alloc_ctx.szind != SC_NSIZES); - old_usize = sz_index2size(alloc_ctx.szind); + old_usize = emap_alloc_ctx_usize_get(&alloc_ctx); assert(old_usize == isalloc(tsd_tsdn(tsd), ptr)); /* * The API explicitly absolves itself of protecting against (size + @@ -3818,17 +2816,17 @@ je_xallocx(void *ptr, size_t size, size_t extra, int flags) { thread_alloc_event(tsd, usize); thread_dalloc_event(tsd, old_usize); - if (config_fill && unlikely(opt_junk_alloc) && usize > old_usize && - !zero) { + if (config_fill && unlikely(opt_junk_alloc) && usize > old_usize + && !zero) { size_t excess_len = usize - old_usize; - void *excess_start = (void *)((uintptr_t)ptr + old_usize); + void *excess_start = (void *)((byte_t *)ptr + old_usize); junk_alloc_callback(excess_start, excess_len); } label_not_resized: if (unlikely(!tsd_fast(tsd))) { uintptr_t args[4] = {(uintptr_t)ptr, size, extra, flags}; - hook_invoke_expand(hook_expand_xallocx, ptr, old_usize, - usize, (uintptr_t)usize, args); + hook_invoke_expand(hook_expand_xallocx, ptr, old_usize, usize, + (uintptr_t)usize, args); } UTRACE(ptr, size, ptr); @@ -3839,9 +2837,8 @@ je_xallocx(void *ptr, size_t size, size_t extra, int flags) { } JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW -JEMALLOC_ATTR(pure) -je_sallocx(const void *ptr, int flags) { - size_t usize; +JEMALLOC_ATTR(pure) je_sallocx(const void *ptr, int flags) { + size_t usize; tsdn_t *tsdn; LOG("core.sallocx.entry", "ptr: %p, flags: %d", ptr, flags); @@ -3873,10 +2870,10 @@ je_dallocx(void *ptr, int flags) { assert(malloc_initialized() || IS_INITIALIZER); tsd_t *tsd = tsd_fetch_min(); - bool fast = tsd_fast(tsd); + bool fast = tsd_fast(tsd); check_entry_exit_locking(tsd_tsdn(tsd)); - unsigned tcache_ind = mallocx_tcache_get(flags); + unsigned tcache_ind = mallocx_tcache_get(flags); tcache_t *tcache = tcache_get_from_ind(tsd, tcache_ind, !fast, /* is_alloc */ false); @@ -3910,11 +2907,11 @@ sdallocx_default(void *ptr, size_t size, int flags) { assert(malloc_initialized() || IS_INITIALIZER); tsd_t *tsd = tsd_fetch_min(); - bool fast = tsd_fast(tsd); + bool fast = tsd_fast(tsd); size_t usize = inallocx(tsd_tsdn(tsd), size, flags); check_entry_exit_locking(tsd_tsdn(tsd)); - unsigned tcache_ind = mallocx_tcache_get(flags); + unsigned tcache_ind = mallocx_tcache_get(flags); tcache_t *tcache = tcache_get_from_ind(tsd, tcache_ind, !fast, /* is_alloc */ false); @@ -3932,32 +2929,17 @@ sdallocx_default(void *ptr, size_t size, int flags) { JEMALLOC_EXPORT void JEMALLOC_NOTHROW je_sdallocx(void *ptr, size_t size, int flags) { - LOG("core.sdallocx.entry", "ptr: %p, size: %zu, flags: %d", ptr, - size, flags); - - if (flags != 0 || !free_fastpath(ptr, size, true)) { - sdallocx_default(ptr, size, flags); - } - - LOG("core.sdallocx.exit", ""); -} - -void JEMALLOC_NOTHROW -je_sdallocx_noflags(void *ptr, size_t size) { - LOG("core.sdallocx.entry", "ptr: %p, size: %zu, flags: 0", ptr, - size); + LOG("core.sdallocx.entry", "ptr: %p, size: %zu, flags: %d", ptr, size, + flags); - if (!free_fastpath(ptr, size, true)) { - sdallocx_default(ptr, size, 0); - } + je_sdallocx_impl(ptr, size, flags); LOG("core.sdallocx.exit", ""); } JEMALLOC_EXPORT size_t JEMALLOC_NOTHROW -JEMALLOC_ATTR(pure) -je_nallocx(size_t size, int flags) { - size_t usize; +JEMALLOC_ATTR(pure) je_nallocx(size_t size, int flags) { + size_t usize; tsdn_t *tsdn; assert(size != 0); @@ -3982,9 +2964,9 @@ je_nallocx(size_t size, int flags) { } JEMALLOC_EXPORT int JEMALLOC_NOTHROW -je_mallctl(const char *name, void *oldp, size_t *oldlenp, void *newp, - size_t newlen) { - int ret; +je_mallctl( + const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen) { + int ret; tsd_t *tsd; LOG("core.mallctl.entry", "name: %s", name); @@ -4025,8 +3007,8 @@ je_mallctlnametomib(const char *name, size_t *mibp, size_t *miblenp) { JEMALLOC_EXPORT int JEMALLOC_NOTHROW je_mallctlbymib(const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, - void *newp, size_t newlen) { - int ret; + void *newp, size_t newlen) { + int ret; tsd_t *tsd; LOG("core.mallctlbymib.entry", ""); @@ -4046,8 +3028,8 @@ je_mallctlbymib(const size_t *mib, size_t miblen, void *oldp, size_t *oldlenp, #define STATS_PRINT_BUFSIZE 65536 JEMALLOC_EXPORT void JEMALLOC_NOTHROW -je_malloc_stats_print(void (*write_cb)(void *, const char *), void *cbopaque, - const char *opts) { +je_malloc_stats_print( + void (*write_cb)(void *, const char *), void *cbopaque, const char *opts) { tsdn_t *tsdn; LOG("core.malloc_stats_print.entry", ""); @@ -4118,12 +3100,12 @@ je_malloc_size(const void *ptr) { static void batch_alloc_prof_sample_assert(tsd_t *tsd, size_t batch, size_t usize) { assert(config_prof && opt_prof); - bool prof_sample_event = te_prof_sample_event_lookahead(tsd, - batch * usize); + bool prof_sample_event = te_prof_sample_event_lookahead( + tsd, batch * usize); assert(!prof_sample_event); size_t surplus; - prof_sample_event = te_prof_sample_event_lookahead_surplus(tsd, - (batch + 1) * usize, &surplus); + prof_sample_event = te_prof_sample_event_lookahead_surplus( + tsd, (batch + 1) * usize, &surplus); assert(prof_sample_event); assert(surplus < usize); } @@ -4148,14 +3130,14 @@ batch_alloc(void **ptrs, size_t num, size_t size, int flags) { goto label_done; } szind_t ind = sz_size2index(usize); - bool zero = zero_get(MALLOCX_ZERO_GET(flags), /* slow */ true); + bool zero = zero_get(MALLOCX_ZERO_GET(flags), /* slow */ true); /* * The cache bin and arena will be lazily initialized; it's hard to * know in advance whether each of them needs to be initialized. */ cache_bin_t *bin = NULL; - arena_t *arena = NULL; + arena_t *arena = NULL; size_t nregs = 0; if (likely(ind < SC_NBINS)) { @@ -4166,10 +3148,10 @@ batch_alloc(void **ptrs, size_t num, size_t size, int flags) { while (filled < num) { size_t batch = num - filled; size_t surplus = SIZE_MAX; /* Dead store. */ - bool prof_sample_event = config_prof && opt_prof + bool prof_sample_event = config_prof && opt_prof && prof_active_get_unlocked() - && te_prof_sample_event_lookahead_surplus(tsd, - batch * usize, &surplus); + && te_prof_sample_event_lookahead_surplus( + tsd, batch * usize, &surplus); if (prof_sample_event) { /* @@ -4185,8 +3167,8 @@ batch_alloc(void **ptrs, size_t num, size_t size, int flags) { if (likely(ind < SC_NBINS) && batch >= nregs) { if (arena == NULL) { unsigned arena_ind = mallocx_arena_get(flags); - if (arena_get_from_ind(tsd, arena_ind, - &arena)) { + if (arena_get_from_ind( + tsd, arena_ind, &arena)) { goto label_done; } if (arena == NULL) { @@ -4203,15 +3185,16 @@ batch_alloc(void **ptrs, size_t num, size_t size, int flags) { filled += n; } - if (likely(ind < nhbins) && progress < batch) { + unsigned tcache_ind = mallocx_tcache_get(flags); + tcache_t *tcache = tcache_get_from_ind(tsd, tcache_ind, + /* slow */ true, /* is_alloc */ true); + if (likely(tcache != NULL + && ind < tcache_nbins_get(tcache->tcache_slow) + && !tcache_bin_disabled( + ind, &tcache->bins[ind], tcache->tcache_slow)) + && progress < batch) { if (bin == NULL) { - unsigned tcache_ind = mallocx_tcache_get(flags); - tcache_t *tcache = tcache_get_from_ind(tsd, - tcache_ind, /* slow */ true, - /* is_alloc */ true); - if (tcache != NULL) { - bin = &tcache->bins[ind]; - } + bin = &tcache->bins[ind]; } /* * If we don't have a tcache bin, we don't want to @@ -4240,22 +3223,22 @@ batch_alloc(void **ptrs, size_t num, size_t size, int flags) { * additional benefit is that the tcache will * not be empty for the next allocation request. */ - size_t n = cache_bin_alloc_batch(bin, bin_batch, - ptrs + filled); + size_t n = cache_bin_alloc_batch( + bin, bin_batch, ptrs + filled); if (config_stats) { bin->tstats.nrequests += n; } if (zero) { for (size_t i = 0; i < n; ++i) { - memset(ptrs[filled + i], 0, - usize); + memset( + ptrs[filled + i], 0, usize); } } if (config_prof && opt_prof && unlikely(ind >= SC_NBINS)) { for (size_t i = 0; i < n; ++i) { - prof_tctx_reset_sampled(tsd, - ptrs[filled + i]); + prof_tctx_reset_sampled( + tsd, ptrs[filled + i]); } } progress += n; @@ -4331,7 +3314,7 @@ JEMALLOC_EXPORT void _malloc_prefork(void) #endif { - tsd_t *tsd; + tsd_t *tsd; unsigned i, j, narenas; arena_t *arena; @@ -4361,8 +3344,8 @@ _malloc_prefork(void) /* Break arena prefork into stages to preserve lock order. */ for (i = 0; i < 9; i++) { for (j = 0; j < narenas; j++) { - if ((arena = arena_get(tsd_tsdn(tsd), j, false)) != - NULL) { + if ((arena = arena_get(tsd_tsdn(tsd), j, false)) + != NULL) { switch (i) { case 0: arena_prefork0(tsd_tsdn(tsd), arena); @@ -4391,11 +3374,11 @@ _malloc_prefork(void) case 8: arena_prefork8(tsd_tsdn(tsd), arena); break; - default: not_reached(); + default: + not_reached(); } } } - } prof_prefork1(tsd_tsdn(tsd)); stats_prefork(tsd_tsdn(tsd)); @@ -4410,7 +3393,7 @@ JEMALLOC_EXPORT void _malloc_postfork(void) #endif { - tsd_t *tsd; + tsd_t *tsd; unsigned i, narenas; #ifdef JEMALLOC_MUTEX_INIT_CB @@ -4445,7 +3428,7 @@ _malloc_postfork(void) void jemalloc_postfork_child(void) { - tsd_t *tsd; + tsd_t *tsd; unsigned i, narenas; assert(malloc_initialized()); diff --git a/dep/jemalloc/src/jemalloc_cpp.cpp b/dep/jemalloc/src/jemalloc_cpp.cpp index 451655f1b5a59..ac109bb28e8ef 100644 --- a/dep/jemalloc/src/jemalloc_cpp.cpp +++ b/dep/jemalloc/src/jemalloc_cpp.cpp @@ -1,7 +1,7 @@ -#include +#include #include +// NOLINTBEGIN(misc-use-anonymous-namespace) -#define JEMALLOC_CPP_CPP_ #ifdef __cplusplus extern "C" { #endif @@ -24,77 +24,90 @@ extern "C" { // // ... but it needs to work with jemalloc namespaces. -void *operator new(std::size_t size); -void *operator new[](std::size_t size); -void *operator new(std::size_t size, const std::nothrow_t &) noexcept; -void *operator new[](std::size_t size, const std::nothrow_t &) noexcept; -void operator delete(void *ptr) noexcept; -void operator delete[](void *ptr) noexcept; -void operator delete(void *ptr, const std::nothrow_t &) noexcept; -void operator delete[](void *ptr, const std::nothrow_t &) noexcept; +void *operator new(std::size_t size); +void *operator new[](std::size_t size); +void *operator new(std::size_t size, const std::nothrow_t &) noexcept; +void *operator new[](std::size_t size, const std::nothrow_t &) noexcept; +void operator delete(void *ptr) noexcept; +void operator delete[](void *ptr) noexcept; +void operator delete(void *ptr, const std::nothrow_t &) noexcept; +void operator delete[](void *ptr, const std::nothrow_t &) noexcept; #if __cpp_sized_deallocation >= 201309 /* C++14's sized-delete operators. */ -void operator delete(void *ptr, std::size_t size) noexcept; -void operator delete[](void *ptr, std::size_t size) noexcept; +void operator delete(void *ptr, std::size_t size) noexcept; +void operator delete[](void *ptr, std::size_t size) noexcept; #endif #if __cpp_aligned_new >= 201606 /* C++17's over-aligned operators. */ -void *operator new(std::size_t size, std::align_val_t); -void *operator new(std::size_t size, std::align_val_t, const std::nothrow_t &) noexcept; -void *operator new[](std::size_t size, std::align_val_t); -void *operator new[](std::size_t size, std::align_val_t, const std::nothrow_t &) noexcept; -void operator delete(void* ptr, std::align_val_t) noexcept; -void operator delete(void* ptr, std::align_val_t, const std::nothrow_t &) noexcept; -void operator delete(void* ptr, std::size_t size, std::align_val_t al) noexcept; -void operator delete[](void* ptr, std::align_val_t) noexcept; -void operator delete[](void* ptr, std::align_val_t, const std::nothrow_t &) noexcept; -void operator delete[](void* ptr, std::size_t size, std::align_val_t al) noexcept; +void *operator new(std::size_t size, std::align_val_t); +void *operator new( + std::size_t size, std::align_val_t, const std::nothrow_t &) noexcept; +void *operator new[](std::size_t size, std::align_val_t); +void *operator new[]( + std::size_t size, std::align_val_t, const std::nothrow_t &) noexcept; +void operator delete(void *ptr, std::align_val_t) noexcept; +void operator delete( + void *ptr, std::align_val_t, const std::nothrow_t &) noexcept; +void operator delete(void *ptr, std::size_t size, std::align_val_t al) noexcept; +void operator delete[](void *ptr, std::align_val_t) noexcept; +void operator delete[]( + void *ptr, std::align_val_t, const std::nothrow_t &) noexcept; +void operator delete[]( + void *ptr, std::size_t size, std::align_val_t al) noexcept; #endif JEMALLOC_NOINLINE static void * handleOOM(std::size_t size, bool nothrow) { if (opt_experimental_infallible_new) { - safety_check_fail(": Allocation failed and " - "opt.experimental_infallible_new is true. Aborting.\n"); + const char *huge_warning = (size >= ((std::size_t)1 << 30)) + ? "This may be caused by heap corruption, if the large size " + "is unexpected (suggest building with sanitizers for " + "debugging)." + : ""; + + safety_check_fail( + ": Allocation of size %zu failed. " + "%s opt.experimental_infallible_new is true. Aborting.\n", + size, huge_warning); return nullptr; } void *ptr = nullptr; while (ptr == nullptr) { - std::new_handler handler; - // GCC-4.8 and clang 4.0 do not have std::get_new_handler. - { - static std::mutex mtx; - std::lock_guard lock(mtx); - - handler = std::set_new_handler(nullptr); - std::set_new_handler(handler); - } + std::new_handler handler = std::get_new_handler(); if (handler == nullptr) break; +#ifdef JEMALLOC_HAVE_CXX_EXCEPTIONS try { handler(); } catch (const std::bad_alloc &) { break; } +#else + handler(); +#endif ptr = je_malloc(size); } - if (ptr == nullptr && !nothrow) - std::__throw_bad_alloc(); + if (ptr == nullptr && !nothrow) { +#ifdef JEMALLOC_HAVE_CXX_EXCEPTIONS + throw std::bad_alloc(); +#else + std::terminate(); +#endif + } return ptr; } template -JEMALLOC_NOINLINE -static void * -fallback_impl(std::size_t size) noexcept(IsNoExcept) { +JEMALLOC_NOINLINE static void * +fallbackNewImpl(std::size_t size) noexcept(IsNoExcept) { void *ptr = malloc_default(size); if (likely(ptr != nullptr)) { return ptr; @@ -103,10 +116,14 @@ fallback_impl(std::size_t size) noexcept(IsNoExcept) { } template -JEMALLOC_ALWAYS_INLINE -void * +JEMALLOC_ALWAYS_INLINE void * newImpl(std::size_t size) noexcept(IsNoExcept) { - return imalloc_fastpath(size, &fallback_impl); + LOG("core.operator_new.entry", "size: %zu", size); + + void *ret = imalloc_fastpath(size, &fallbackNewImpl); + + LOG("core.operator_new.exit", "result: %p", ret); + return ret; } void * @@ -132,9 +149,9 @@ operator new[](std::size_t size, const std::nothrow_t &) noexcept { #if __cpp_aligned_new >= 201606 template -JEMALLOC_ALWAYS_INLINE -void * -alignedNewImpl(std::size_t size, std::align_val_t alignment) noexcept(IsNoExcept) { +JEMALLOC_ALWAYS_INLINE void * +alignedNewImpl(std::size_t size, std::align_val_t alignment) noexcept( + IsNoExcept) { void *ptr = je_aligned_alloc(static_cast(alignment), size); if (likely(ptr != nullptr)) { return ptr; @@ -154,45 +171,68 @@ operator new[](std::size_t size, std::align_val_t alignment) { } void * -operator new(std::size_t size, std::align_val_t alignment, const std::nothrow_t &) noexcept { +operator new(std::size_t size, std::align_val_t alignment, + const std::nothrow_t &) noexcept { return alignedNewImpl(size, alignment); } void * -operator new[](std::size_t size, std::align_val_t alignment, const std::nothrow_t &) noexcept { +operator new[](std::size_t size, std::align_val_t alignment, + const std::nothrow_t &) noexcept { return alignedNewImpl(size, alignment); } -#endif // __cpp_aligned_new +#endif // __cpp_aligned_new void operator delete(void *ptr) noexcept { - je_free(ptr); + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } void operator delete[](void *ptr) noexcept { - je_free(ptr); + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } void operator delete(void *ptr, const std::nothrow_t &) noexcept { - je_free(ptr); + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } -void operator delete[](void *ptr, const std::nothrow_t &) noexcept { - je_free(ptr); +void +operator delete[](void *ptr, const std::nothrow_t &) noexcept { + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } #if __cpp_sized_deallocation >= 201309 JEMALLOC_ALWAYS_INLINE void -sizedDeleteImpl(void* ptr, std::size_t size) noexcept { +sizedDeleteImpl(void *ptr, std::size_t size) noexcept { if (unlikely(ptr == nullptr)) { return; } + LOG("core.operator_delete.entry", "ptr: %p, size: %zu", ptr, size); + je_sdallocx_noflags(ptr, size); + + LOG("core.operator_delete.exit", ""); } void @@ -205,50 +245,76 @@ operator delete[](void *ptr, std::size_t size) noexcept { sizedDeleteImpl(ptr, size); } -#endif // __cpp_sized_deallocation +#endif // __cpp_sized_deallocation #if __cpp_aligned_new >= 201606 JEMALLOC_ALWAYS_INLINE void -alignedSizedDeleteImpl(void* ptr, std::size_t size, std::align_val_t alignment) noexcept { +alignedSizedDeleteImpl( + void *ptr, std::size_t size, std::align_val_t alignment) noexcept { if (config_debug) { assert(((size_t)alignment & ((size_t)alignment - 1)) == 0); } if (unlikely(ptr == nullptr)) { return; } - je_sdallocx(ptr, size, MALLOCX_ALIGN(alignment)); + LOG("core.operator_delete.entry", "ptr: %p, size: %zu, alignment: %zu", + ptr, size, alignment); + + je_sdallocx_impl(ptr, size, MALLOCX_ALIGN(alignment)); + + LOG("core.operator_delete.exit", ""); } void -operator delete(void* ptr, std::align_val_t) noexcept { - je_free(ptr); +operator delete(void *ptr, std::align_val_t) noexcept { + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } void -operator delete[](void* ptr, std::align_val_t) noexcept { - je_free(ptr); +operator delete[](void *ptr, std::align_val_t) noexcept { + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } void -operator delete(void* ptr, std::align_val_t, const std::nothrow_t&) noexcept { - je_free(ptr); +operator delete(void *ptr, std::align_val_t, const std::nothrow_t &) noexcept { + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } void -operator delete[](void* ptr, std::align_val_t, const std::nothrow_t&) noexcept { - je_free(ptr); +operator delete[]( + void *ptr, std::align_val_t, const std::nothrow_t &) noexcept { + LOG("core.operator_delete.entry", "ptr: %p", ptr); + + je_free_impl(ptr); + + LOG("core.operator_delete.exit", ""); } void -operator delete(void* ptr, std::size_t size, std::align_val_t alignment) noexcept { +operator delete( + void *ptr, std::size_t size, std::align_val_t alignment) noexcept { alignedSizedDeleteImpl(ptr, size, alignment); } void -operator delete[](void* ptr, std::size_t size, std::align_val_t alignment) noexcept { +operator delete[]( + void *ptr, std::size_t size, std::align_val_t alignment) noexcept { alignedSizedDeleteImpl(ptr, size, alignment); } -#endif // __cpp_aligned_new +#endif // __cpp_aligned_new +// NOLINTEND(misc-use-anonymous-namespace) diff --git a/dep/jemalloc/src/large.c b/dep/jemalloc/src/large.c index 5fc4bf584c451..6ccf49d766cf4 100644 --- a/dep/jemalloc/src/large.c +++ b/dep/jemalloc/src/large.c @@ -18,10 +18,10 @@ large_malloc(tsdn_t *tsdn, arena_t *arena, size_t usize, bool zero) { } void * -large_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, - bool zero) { - size_t ausize; - edata_t *edata; +large_palloc( + tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, bool zero) { + size_t ausize; + edata_t *edata; UNUSED bool idump JEMALLOC_CC_SILENCE_INIT(false); assert(!tsdn_null(tsdn) || arena != NULL); @@ -34,12 +34,14 @@ large_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, if (likely(!tsdn_null(tsdn))) { arena = arena_choose_maybe_huge(tsdn_tsd(tsdn), arena, usize); } - if (unlikely(arena == NULL) || (edata = arena_extent_alloc_large(tsdn, - arena, usize, alignment, zero)) == NULL) { + if (unlikely(arena == NULL) + || (edata = arena_extent_alloc_large( + tsdn, arena, usize, alignment, zero)) + == NULL) { return NULL; } - /* See comments in arena_bin_slabs_full_insert(). */ + /* See comments in bin_slabs_full_insert(). */ if (!arena_is_auto(arena)) { /* Insert edata into large. */ malloc_mutex_lock(tsdn, &arena->large_mtx); @@ -53,10 +55,10 @@ large_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, static bool large_ralloc_no_move_shrink(tsdn_t *tsdn, edata_t *edata, size_t usize) { - arena_t *arena = arena_get_from_edata(edata); + arena_t *arena = arena_get_from_edata(edata); ehooks_t *ehooks = arena_get_ehooks(arena); - size_t old_size = edata_size_get(edata); - size_t old_usize = edata_usize_get(edata); + size_t old_size = edata_size_get(edata); + size_t old_usize = edata_usize_get(edata); assert(old_usize > usize); @@ -80,8 +82,8 @@ large_ralloc_no_move_shrink(tsdn_t *tsdn, edata_t *edata, size_t usize) { } static bool -large_ralloc_no_move_expand(tsdn_t *tsdn, edata_t *edata, size_t usize, - bool zero) { +large_ralloc_no_move_expand( + tsdn_t *tsdn, edata_t *edata, size_t usize, bool zero) { arena_t *arena = arena_get_from_edata(edata); size_t old_size = edata_size_get(edata); @@ -112,11 +114,11 @@ large_ralloc_no_move_expand(tsdn_t *tsdn, edata_t *edata, size_t usize, * offset from the beginning of the extent is a multiple * of CACHELINE in [0 .. PAGE). */ - void *zbase = (void *) - ((uintptr_t)edata_addr_get(edata) + old_usize); - void *zpast = PAGE_ADDR2BASE((void *)((uintptr_t)zbase + - PAGE)); - size_t nzero = (uintptr_t)zpast - (uintptr_t)zbase; + void *zbase = (void *)((byte_t *)edata_addr_get(edata) + + old_usize); + void *zpast = PAGE_ADDR2BASE( + (void *)((byte_t *)zbase + PAGE)); + size_t nzero = (byte_t *)zpast - (byte_t *)zbase; assert(nzero > 0); memset(zbase, 0, nzero); } @@ -134,19 +136,19 @@ large_ralloc_no_move(tsdn_t *tsdn, edata_t *edata, size_t usize_min, /* The following should have been caught by callers. */ assert(usize_min > 0 && usize_max <= SC_LARGE_MAXCLASS); /* Both allocation sizes must be large to avoid a move. */ - assert(oldusize >= SC_LARGE_MINCLASS - && usize_max >= SC_LARGE_MINCLASS); + assert(oldusize >= SC_LARGE_MINCLASS && usize_max >= SC_LARGE_MINCLASS); if (usize_max > oldusize) { /* Attempt to expand the allocation in-place. */ - if (!large_ralloc_no_move_expand(tsdn, edata, usize_max, - zero)) { + if (!large_ralloc_no_move_expand( + tsdn, edata, usize_max, zero)) { arena_decay_tick(tsdn, arena_get_from_edata(edata)); return false; } /* Try again, this time with usize_min. */ - if (usize_min < usize_max && usize_min > oldusize && - large_ralloc_no_move_expand(tsdn, edata, usize_min, zero)) { + if (usize_min < usize_max && usize_min > oldusize + && !large_ralloc_no_move_expand( + tsdn, edata, usize_min, zero)) { arena_decay_tick(tsdn, arena_get_from_edata(edata)); return false; } @@ -172,8 +174,8 @@ large_ralloc_no_move(tsdn_t *tsdn, edata_t *edata, size_t usize_min, } static void * -large_ralloc_move_helper(tsdn_t *tsdn, arena_t *arena, size_t usize, - size_t alignment, bool zero) { +large_ralloc_move_helper( + tsdn_t *tsdn, arena_t *arena, size_t usize, size_t alignment, bool zero) { if (alignment <= CACHELINE) { return large_malloc(tsdn, arena, usize, zero); } @@ -190,14 +192,13 @@ large_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t usize, /* The following should have been caught by callers. */ assert(usize > 0 && usize <= SC_LARGE_MAXCLASS); /* Both allocation sizes must be large to avoid a move. */ - assert(oldusize >= SC_LARGE_MINCLASS - && usize >= SC_LARGE_MINCLASS); + assert(oldusize >= SC_LARGE_MINCLASS && usize >= SC_LARGE_MINCLASS); /* Try to avoid moving the allocation. */ if (!large_ralloc_no_move(tsdn, edata, usize, usize, zero)) { - hook_invoke_expand(hook_args->is_realloc - ? hook_expand_realloc : hook_expand_rallocx, ptr, oldusize, - usize, (uintptr_t)ptr, hook_args->args); + hook_invoke_expand(hook_args->is_realloc ? hook_expand_realloc + : hook_expand_rallocx, + ptr, oldusize, usize, (uintptr_t)ptr, hook_args->args); return edata_addr_get(edata); } @@ -206,17 +207,18 @@ large_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t usize, * different size class. In that case, fall back to allocating new * space and copying. */ - void *ret = large_ralloc_move_helper(tsdn, arena, usize, alignment, - zero); + void *ret = large_ralloc_move_helper( + tsdn, arena, usize, alignment, zero); if (ret == NULL) { return NULL; } - hook_invoke_alloc(hook_args->is_realloc - ? hook_alloc_realloc : hook_alloc_rallocx, ret, (uintptr_t)ret, - hook_args->args); - hook_invoke_dalloc(hook_args->is_realloc - ? hook_dalloc_realloc : hook_dalloc_rallocx, ptr, hook_args->args); + hook_invoke_alloc( + hook_args->is_realloc ? hook_alloc_realloc : hook_alloc_rallocx, + ret, (uintptr_t)ret, hook_args->args); + hook_invoke_dalloc( + hook_args->is_realloc ? hook_dalloc_realloc : hook_dalloc_rallocx, + ptr, hook_args->args); size_t copysize = (usize < oldusize) ? usize : oldusize; memcpy(ret, edata_addr_get(edata), copysize); @@ -228,10 +230,10 @@ large_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t usize, * locked indicates whether the arena's large_mtx is currently held. */ static void -large_dalloc_prep_impl(tsdn_t *tsdn, arena_t *arena, edata_t *edata, - bool locked) { +large_dalloc_prep_impl( + tsdn_t *tsdn, arena_t *arena, edata_t *edata, bool locked) { if (!locked) { - /* See comments in arena_bin_slabs_full_insert(). */ + /* See comments in bin_slabs_full_insert(). */ if (!arena_is_auto(arena)) { malloc_mutex_lock(tsdn, &arena->large_mtx); edata_list_active_remove(&arena->large, edata); @@ -274,22 +276,17 @@ large_dalloc(tsdn_t *tsdn, edata_t *edata) { arena_decay_tick(tsdn, arena); } -size_t -large_salloc(tsdn_t *tsdn, const edata_t *edata) { - return edata_usize_get(edata); -} - void -large_prof_info_get(tsd_t *tsd, edata_t *edata, prof_info_t *prof_info, - bool reset_recent) { +large_prof_info_get( + tsd_t *tsd, edata_t *edata, prof_info_t *prof_info, bool reset_recent) { assert(prof_info != NULL); prof_tctx_t *alloc_tctx = edata_prof_tctx_get(edata); prof_info->alloc_tctx = alloc_tctx; - if ((uintptr_t)alloc_tctx > (uintptr_t)1U) { - nstime_copy(&prof_info->alloc_time, - edata_prof_alloc_time_get(edata)); + if (prof_tctx_is_valid(alloc_tctx)) { + nstime_copy( + &prof_info->alloc_time, edata_prof_alloc_time_get(edata)); prof_info->alloc_size = edata_prof_alloc_size_get(edata); if (reset_recent) { /* @@ -308,7 +305,7 @@ large_prof_tctx_set(edata_t *edata, prof_tctx_t *tctx) { void large_prof_tctx_reset(edata_t *edata) { - large_prof_tctx_set(edata, (prof_tctx_t *)(uintptr_t)1U); + large_prof_tctx_set(edata, PROF_TCTX_SENTINEL); } void diff --git a/dep/jemalloc/src/log.c b/dep/jemalloc/src/log.c index 778902fb9b838..9b1c6261a3623 100644 --- a/dep/jemalloc/src/log.c +++ b/dep/jemalloc/src/log.c @@ -3,7 +3,7 @@ #include "jemalloc/internal/log.h" -char log_var_names[JEMALLOC_LOG_VAR_BUFSIZE]; +char log_var_names[JEMALLOC_LOG_VAR_BUFSIZE]; atomic_b_t log_init_done = ATOMIC_INIT(false); /* @@ -11,7 +11,7 @@ atomic_b_t log_init_done = ATOMIC_INIT(false); * with a pointer to the first character after the end of the string. */ static const char * -log_var_extract_segment(const char* segment_begin) { +log_var_extract_segment(const char *segment_begin) { const char *end; for (end = segment_begin; *end != '\0' && *end != '|'; end++) { } @@ -30,12 +30,12 @@ log_var_matches_segment(const char *segment_begin, const char *segment_end, if (segment_len == 1 && *segment_begin == '.') { return true; } - if (segment_len == log_var_len) { + if (segment_len == log_var_len) { return strncmp(segment_begin, log_var_begin, segment_len) == 0; } else if (segment_len < log_var_len) { return strncmp(segment_begin, log_var_begin, segment_len) == 0 && log_var_begin[segment_len] == '.'; - } else { + } else { return false; } } @@ -61,9 +61,9 @@ log_var_update_state(log_var_t *log_var) { segment_begin); assert(segment_end < log_var_names + JEMALLOC_LOG_VAR_BUFSIZE); if (log_var_matches_segment(segment_begin, segment_end, - log_var_begin, log_var_end)) { - atomic_store_u(&log_var->state, LOG_ENABLED, - ATOMIC_RELAXED); + log_var_begin, log_var_end)) { + atomic_store_u( + &log_var->state, LOG_ENABLED, ATOMIC_RELAXED); return LOG_ENABLED; } if (*segment_end == '\0') { diff --git a/dep/jemalloc/src/malloc_io.c b/dep/jemalloc/src/malloc_io.c index b76885cbbf76d..9716c6682dad0 100644 --- a/dep/jemalloc/src/malloc_io.c +++ b/dep/jemalloc/src/malloc_io.c @@ -5,63 +5,68 @@ #include "jemalloc/internal/util.h" #ifdef assert -# undef assert +# undef assert #endif #ifdef not_reached -# undef not_reached +# undef not_reached #endif #ifdef not_implemented -# undef not_implemented +# undef not_implemented #endif #ifdef assert_not_implemented -# undef assert_not_implemented +# undef assert_not_implemented #endif /* * Define simple versions of assertion macros that won't recurse in case * of assertion failures in malloc_*printf(). */ -#define assert(e) do { \ - if (config_debug && !(e)) { \ - malloc_write(": Failed assertion\n"); \ - abort(); \ - } \ -} while (0) - -#define not_reached() do { \ - if (config_debug) { \ - malloc_write(": Unreachable code reached\n"); \ - abort(); \ - } \ - unreachable(); \ -} while (0) - -#define not_implemented() do { \ - if (config_debug) { \ - malloc_write(": Not implemented\n"); \ - abort(); \ - } \ -} while (0) - -#define assert_not_implemented(e) do { \ - if (unlikely(config_debug && !(e))) { \ - not_implemented(); \ - } \ -} while (0) +#define assert(e) \ + do { \ + if (config_debug && !(e)) { \ + malloc_write(": Failed assertion\n"); \ + abort(); \ + } \ + } while (0) + +#define not_reached() \ + do { \ + if (config_debug) { \ + malloc_write( \ + ": Unreachable code reached\n"); \ + abort(); \ + } \ + unreachable(); \ + } while (0) + +#define not_implemented() \ + do { \ + if (config_debug) { \ + malloc_write(": Not implemented\n"); \ + abort(); \ + } \ + } while (0) + +#define assert_not_implemented(e) \ + do { \ + if (unlikely(config_debug && !(e))) { \ + not_implemented(); \ + } \ + } while (0) /******************************************************************************/ /* Function prototypes for non-inline static functions. */ #define U2S_BUFSIZE ((1U << (LG_SIZEOF_INTMAX_T + 3)) + 1) -static char *u2s(uintmax_t x, unsigned base, bool uppercase, char *s, - size_t *slen_p); +static char *u2s( + uintmax_t x, unsigned base, bool uppercase, char *s, size_t *slen_p); #define D2S_BUFSIZE (1 + U2S_BUFSIZE) static char *d2s(intmax_t x, char sign, char *s, size_t *slen_p); #define O2S_BUFSIZE (1 + U2S_BUFSIZE) static char *o2s(uintmax_t x, bool alt_form, char *s, size_t *slen_p); #define X2S_BUFSIZE (2 + U2S_BUFSIZE) -static char *x2s(uintmax_t x, bool alt_form, bool uppercase, char *s, - size_t *slen_p); +static char *x2s( + uintmax_t x, bool alt_form, bool uppercase, char *s, size_t *slen_p); /******************************************************************************/ @@ -71,7 +76,7 @@ wrtmessage(void *cbopaque, const char *s) { malloc_write_fd(STDERR_FILENO, s, strlen(s)); } -JEMALLOC_EXPORT void (*je_malloc_message)(void *, const char *s); +JEMALLOC_EXPORT void (*je_malloc_message)(void *, const char *s); /* * Wrapper around malloc_message() that avoids the need for @@ -93,14 +98,15 @@ malloc_write(const char *s) { int buferror(int err, char *buf, size_t buflen) { #ifdef _WIN32 - FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, - (LPSTR)buf, (DWORD)buflen, NULL); + FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0, (LPSTR)buf, + (DWORD)buflen, NULL); return 0; -#elif defined(JEMALLOC_STRERROR_R_RETURNS_CHAR_WITH_GNU_SOURCE) && defined(_GNU_SOURCE) +#elif defined(JEMALLOC_STRERROR_R_RETURNS_CHAR_WITH_GNU_SOURCE) \ + && defined(_GNU_SOURCE) char *b = strerror_r(err, buf, buflen); if (b != buf) { strncpy(buf, b, buflen); - buf[buflen-1] = '\0'; + buf[buflen - 1] = '\0'; } return 0; #else @@ -110,9 +116,9 @@ buferror(int err, char *buf, size_t buflen) { uintmax_t malloc_strtoumax(const char *restrict nptr, char **restrict endptr, int base) { - uintmax_t ret, digit; - unsigned b; - bool neg; + uintmax_t ret, digit; + unsigned b; + bool neg; const char *p, *ns; p = nptr; @@ -128,7 +134,12 @@ malloc_strtoumax(const char *restrict nptr, char **restrict endptr, int base) { neg = false; while (true) { switch (*p) { - case '\t': case '\n': case '\v': case '\f': case '\r': case ' ': + case '\t': + case '\n': + case '\v': + case '\f': + case '\r': + case ' ': p++; break; case '-': @@ -142,8 +153,8 @@ malloc_strtoumax(const char *restrict nptr, char **restrict endptr, int base) { } } - /* Get prefix, if any. */ - label_prefix: +/* Get prefix, if any. */ +label_prefix: /* * Note where the first non-whitespace/sign character is so that it is * possible to tell whether any digits are consumed (e.g., " 0" vs. @@ -152,8 +163,14 @@ malloc_strtoumax(const char *restrict nptr, char **restrict endptr, int base) { ns = p; if (*p == '0') { switch (p[1]) { - case '0': case '1': case '2': case '3': case '4': case '5': - case '6': case '7': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': if (b == 0) { b = 8; } @@ -161,13 +178,30 @@ malloc_strtoumax(const char *restrict nptr, char **restrict endptr, int base) { p++; } break; - case 'X': case 'x': + case 'X': + case 'x': switch (p[2]) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - case 'A': case 'B': case 'C': case 'D': case 'E': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': case 'F': - case 'a': case 'b': case 'c': case 'd': case 'e': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': case 'f': if (b == 0) { b = 16; @@ -244,9 +278,8 @@ u2s(uintmax_t x, unsigned base, bool uppercase, char *s, size_t *slen_p) { } while (x > 0); break; case 16: { - const char *digits = (uppercase) - ? "0123456789ABCDEF" - : "0123456789abcdef"; + const char *digits = (uppercase) ? "0123456789ABCDEF" + : "0123456789abcdef"; do { i--; @@ -254,7 +287,8 @@ u2s(uintmax_t x, unsigned base, bool uppercase, char *s, size_t *slen_p) { x >>= 4; } while (x > 0); break; - } default: { + } + default: { const char *digits = (uppercase) ? "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" : "0123456789abcdefghijklmnopqrstuvwxyz"; @@ -265,7 +299,8 @@ u2s(uintmax_t x, unsigned base, bool uppercase, char *s, size_t *slen_p) { s[i] = digits[x % (uint64_t)base]; x /= (uint64_t)base; } while (x > 0); - }} + } + } *slen_p = U2S_BUFSIZE - 1 - i; return &s[i]; @@ -294,7 +329,8 @@ d2s(intmax_t x, char sign, char *s, size_t *slen_p) { (*slen_p)++; *s = sign; break; - default: not_reached(); + default: + not_reached(); } return s; } @@ -316,7 +352,8 @@ x2s(uintmax_t x, bool alt_form, bool uppercase, char *s, size_t *slen_p) { if (alt_form) { s -= 2; (*slen_p) += 2; - memcpy(s, uppercase ? "0X" : "0x", 2); + s[0] = '0'; + s[1] = uppercase ? 'X' : 'x'; } return s; } @@ -324,107 +361,112 @@ x2s(uintmax_t x, bool alt_form, bool uppercase, char *s, size_t *slen_p) { JEMALLOC_COLD size_t malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { - size_t i; + size_t i; const char *f; -#define APPEND_C(c) do { \ - if (i < size) { \ - str[i] = (c); \ - } \ - i++; \ -} while (0) -#define APPEND_S(s, slen) do { \ - if (i < size) { \ - size_t cpylen = (slen <= size - i) ? slen : size - i; \ - memcpy(&str[i], s, cpylen); \ - } \ - i += slen; \ -} while (0) -#define APPEND_PADDED_S(s, slen, width, left_justify) do { \ - /* Left padding. */ \ - size_t pad_len = (width == -1) ? 0 : ((slen < (size_t)width) ? \ - (size_t)width - slen : 0); \ - if (!left_justify && pad_len != 0) { \ - size_t j; \ - for (j = 0; j < pad_len; j++) { \ - if (pad_zero) { \ - APPEND_C('0'); \ - } else { \ - APPEND_C(' '); \ - } \ - } \ - } \ - /* Value. */ \ - APPEND_S(s, slen); \ - /* Right padding. */ \ - if (left_justify && pad_len != 0) { \ - size_t j; \ - for (j = 0; j < pad_len; j++) { \ - APPEND_C(' '); \ - } \ - } \ -} while (0) -#define GET_ARG_NUMERIC(val, len) do { \ - switch ((unsigned char)len) { \ - case '?': \ - val = va_arg(ap, int); \ - break; \ - case '?' | 0x80: \ - val = va_arg(ap, unsigned int); \ - break; \ - case 'l': \ - val = va_arg(ap, long); \ - break; \ - case 'l' | 0x80: \ - val = va_arg(ap, unsigned long); \ - break; \ - case 'q': \ - val = va_arg(ap, long long); \ - break; \ - case 'q' | 0x80: \ - val = va_arg(ap, unsigned long long); \ - break; \ - case 'j': \ - val = va_arg(ap, intmax_t); \ - break; \ - case 'j' | 0x80: \ - val = va_arg(ap, uintmax_t); \ - break; \ - case 't': \ - val = va_arg(ap, ptrdiff_t); \ - break; \ - case 'z': \ - val = va_arg(ap, ssize_t); \ - break; \ - case 'z' | 0x80: \ - val = va_arg(ap, size_t); \ - break; \ - case 'p': /* Synthetic; used for %p. */ \ - val = va_arg(ap, uintptr_t); \ - break; \ - default: \ - not_reached(); \ - val = 0; \ - } \ -} while (0) +#define APPEND_C(c) \ + do { \ + if (i < size) { \ + str[i] = (c); \ + } \ + i++; \ + } while (0) +#define APPEND_S(s, slen) \ + do { \ + if (i < size) { \ + size_t cpylen = (slen <= size - i) ? slen : size - i; \ + memcpy(&str[i], s, cpylen); \ + } \ + i += slen; \ + } while (0) +#define APPEND_PADDED_S(s, slen, width, left_justify) \ + do { \ + /* Left padding. */ \ + size_t pad_len = (width == -1) \ + ? 0 \ + : ((slen < (size_t)width) ? (size_t)width - slen : 0); \ + if (!left_justify && pad_len != 0) { \ + size_t j; \ + for (j = 0; j < pad_len; j++) { \ + if (pad_zero) { \ + APPEND_C('0'); \ + } else { \ + APPEND_C(' '); \ + } \ + } \ + } \ + /* Value. */ \ + APPEND_S(s, slen); \ + /* Right padding. */ \ + if (left_justify && pad_len != 0) { \ + size_t j; \ + for (j = 0; j < pad_len; j++) { \ + APPEND_C(' '); \ + } \ + } \ + } while (0) +#define GET_ARG_NUMERIC(val, len) \ + do { \ + switch ((unsigned char)len) { \ + case '?': \ + val = va_arg(ap, int); \ + break; \ + case '?' | 0x80: \ + val = va_arg(ap, unsigned int); \ + break; \ + case 'l': \ + val = va_arg(ap, long); \ + break; \ + case 'l' | 0x80: \ + val = va_arg(ap, unsigned long); \ + break; \ + case 'q': \ + val = va_arg(ap, long long); \ + break; \ + case 'q' | 0x80: \ + val = va_arg(ap, unsigned long long); \ + break; \ + case 'j': \ + val = va_arg(ap, intmax_t); \ + break; \ + case 'j' | 0x80: \ + val = va_arg(ap, uintmax_t); \ + break; \ + case 't': \ + val = va_arg(ap, ptrdiff_t); \ + break; \ + case 'z': \ + val = va_arg(ap, ssize_t); \ + break; \ + case 'z' | 0x80: \ + val = va_arg(ap, size_t); \ + break; \ + case 'p': /* Synthetic; used for %p. */ \ + val = va_arg(ap, uintptr_t); \ + break; \ + default: \ + not_reached(); \ + val = 0; \ + } \ + } while (0) i = 0; f = format; while (true) { switch (*f) { - case '\0': goto label_out; + case '\0': + goto label_out; case '%': { - bool alt_form = false; - bool left_justify = false; - bool plus_space = false; - bool plus_plus = false; - int prec = -1; - int width = -1; + bool alt_form = false; + bool left_justify = false; + bool plus_space = false; + bool plus_plus = false; + int prec = -1; + int width = -1; unsigned char len = '?'; - char *s; - size_t slen; - bool first_width_digit = true; - bool pad_zero = false; + char *s; + size_t slen; + bool pad_zero = false; f++; /* Flags. */ @@ -446,12 +488,13 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { assert(!plus_plus); plus_plus = true; break; - default: goto label_width; + default: + goto label_width; } f++; } - /* Width. */ - label_width: + /* Width. */ + label_width: switch (*f) { case '*': width = va_arg(ap, int); @@ -462,21 +505,26 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { } break; case '0': - if (first_width_digit) { - pad_zero = true; - } + pad_zero = true; JEMALLOC_FALLTHROUGH; - case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': { + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { uintmax_t uwidth; set_errno(0); uwidth = malloc_strtoumax(f, (char **)&f, 10); - assert(uwidth != UINTMAX_MAX || get_errno() != - ERANGE); + assert(uwidth != UINTMAX_MAX + || get_errno() != ERANGE); width = (int)uwidth; - first_width_digit = false; break; - } default: + } + default: break; } /* Width/precision separator. */ @@ -491,20 +539,29 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { prec = va_arg(ap, int); f++; break; - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': { uintmax_t uprec; set_errno(0); uprec = malloc_strtoumax(f, (char **)&f, 10); - assert(uprec != UINTMAX_MAX || get_errno() != - ERANGE); + assert(uprec != UINTMAX_MAX + || get_errno() != ERANGE); prec = (int)uprec; break; } - default: break; + default: + break; } - /* Length. */ - label_length: + /* Length. */ + label_length: switch (*f) { case 'l': f++; @@ -515,11 +572,15 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { len = 'l'; } break; - case 'q': case 'j': case 't': case 'z': + case 'q': + case 'j': + case 't': + case 'z': len = *f; f++; break; - default: break; + default: + break; } /* Conversion specifier. */ switch (*f) { @@ -528,9 +589,10 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { APPEND_C(*f); f++; break; - case 'd': case 'i': { + case 'd': + case 'i': { intmax_t val JEMALLOC_CC_SILENCE_INIT(0); - char buf[D2S_BUFSIZE]; + char buf[D2S_BUFSIZE]; /* * Outputting negative, zero-padded numbers @@ -545,41 +607,48 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { assert(!pad_zero); GET_ARG_NUMERIC(val, len); - s = d2s(val, (plus_plus ? '+' : (plus_space ? - ' ' : '-')), buf, &slen); + s = d2s(val, + (plus_plus ? '+' + : (plus_space ? ' ' : '-')), + buf, &slen); APPEND_PADDED_S(s, slen, width, left_justify); f++; break; - } case 'o': { + } + case 'o': { uintmax_t val JEMALLOC_CC_SILENCE_INIT(0); - char buf[O2S_BUFSIZE]; + char buf[O2S_BUFSIZE]; GET_ARG_NUMERIC(val, len | 0x80); s = o2s(val, alt_form, buf, &slen); APPEND_PADDED_S(s, slen, width, left_justify); f++; break; - } case 'u': { + } + case 'u': { uintmax_t val JEMALLOC_CC_SILENCE_INIT(0); - char buf[U2S_BUFSIZE]; + char buf[U2S_BUFSIZE]; GET_ARG_NUMERIC(val, len | 0x80); s = u2s(val, 10, false, buf, &slen); APPEND_PADDED_S(s, slen, width, left_justify); f++; break; - } case 'x': case 'X': { + } + case 'x': + case 'X': { uintmax_t val JEMALLOC_CC_SILENCE_INIT(0); - char buf[X2S_BUFSIZE]; + char buf[X2S_BUFSIZE]; GET_ARG_NUMERIC(val, len | 0x80); s = x2s(val, alt_form, *f == 'X', buf, &slen); APPEND_PADDED_S(s, slen, width, left_justify); f++; break; - } case 'c': { + } + case 'c': { unsigned char val; - char buf[2]; + char buf[2]; assert(len == '?' || len == 'l'); assert_not_implemented(len != 'l'); @@ -589,7 +658,8 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { APPEND_PADDED_S(buf, 1, width, left_justify); f++; break; - } case 's': + } + case 's': assert(len == '?' || len == 'l'); assert_not_implemented(len != 'l'); s = va_arg(ap, char *); @@ -599,26 +669,30 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { break; case 'p': { uintmax_t val; - char buf[X2S_BUFSIZE]; + char buf[X2S_BUFSIZE]; GET_ARG_NUMERIC(val, 'p'); s = x2s(val, true, false, buf, &slen); APPEND_PADDED_S(s, slen, width, left_justify); f++; break; - } default: not_reached(); + } + default: + not_reached(); } break; - } default: { + } + default: { APPEND_C(*f); f++; break; - }} + } + } } - label_out: +label_out: if (i < size) { str[i] = '\0'; - } else { + } else if (size != 0) { str[size - 1] = '\0'; } @@ -632,7 +706,7 @@ malloc_vsnprintf(char *str, size_t size, const char *format, va_list ap) { JEMALLOC_FORMAT_PRINTF(3, 4) size_t malloc_snprintf(char *str, size_t size, const char *format, ...) { - size_t ret; + size_t ret; va_list ap; va_start(ap, format); @@ -643,8 +717,8 @@ malloc_snprintf(char *str, size_t size, const char *format, ...) { } void -malloc_vcprintf(write_cb_t *write_cb, void *cbopaque, const char *format, - va_list ap) { +malloc_vcprintf( + write_cb_t *write_cb, void *cbopaque, const char *format, va_list ap) { char buf[MALLOC_PRINTF_BUFSIZE]; if (write_cb == NULL) { @@ -653,8 +727,8 @@ malloc_vcprintf(write_cb_t *write_cb, void *cbopaque, const char *format, * function, so use the default one. malloc_write() is an * inline function, so use malloc_message() directly here. */ - write_cb = (je_malloc_message != NULL) ? je_malloc_message : - wrtmessage; + write_cb = (je_malloc_message != NULL) ? je_malloc_message + : wrtmessage; } malloc_vsnprintf(buf, sizeof(buf), format, ap); @@ -686,6 +760,81 @@ malloc_printf(const char *format, ...) { va_end(ap); } +static ssize_t +malloc_write_fd_syscall(int fd, const void *buf, size_t count) { +#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_write) + /* + * Use syscall(2) rather than write(2) when possible in order to avoid + * the possibility of memory allocation within libc. This is necessary + * on FreeBSD; most operating systems do not have this problem though. + * + * syscall() returns long or int, depending on platform, so capture the + * result in the widest plausible type to avoid compiler warnings. + */ + return (ssize_t)syscall(SYS_write, fd, buf, count); +#else + return (ssize_t)write(fd, buf, +# ifdef _WIN32 + (unsigned int) +# endif + count); +#endif +} + +ssize_t +malloc_write_fd(int fd, const void *buf, size_t count) { + size_t bytes_written = 0; + do { + ssize_t result = malloc_write_fd_syscall(fd, + &((const byte_t *)buf)[bytes_written], + count - bytes_written); + if (result < 0) { +#ifndef _WIN32 + if (errno == EINTR) { + continue; + } +#endif + return result; + } + bytes_written += result; + } while (bytes_written < count); + return bytes_written; +} + +static ssize_t +malloc_read_fd_syscall(int fd, void *buf, size_t count) { +#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_read) + return (ssize_t)syscall(SYS_read, fd, buf, count); +#else + return (ssize_t)read(fd, buf, +# ifdef _WIN32 + (unsigned int) +# endif + count); +#endif +} + +ssize_t +malloc_read_fd(int fd, void *buf, size_t count) { + size_t bytes_read = 0; + do { + ssize_t result = malloc_read_fd_syscall( + fd, &((byte_t *)buf)[bytes_read], count - bytes_read); + if (result < 0) { +#ifndef _WIN32 + if (errno == EINTR) { + continue; + } +#endif + return result; + } else if (result == 0) { + break; + } + bytes_read += result; + } while (bytes_read < count); + return bytes_read; +} + /* * Restore normal assertion macros, in order to make it possible to compile all * C files as a single concatenation. diff --git a/dep/jemalloc/src/mutex.c b/dep/jemalloc/src/mutex.c index 0b3547a87dc04..aa2ab6659974d 100644 --- a/dep/jemalloc/src/mutex.c +++ b/dep/jemalloc/src/mutex.c @@ -5,8 +5,8 @@ #include "jemalloc/internal/malloc_io.h" #include "jemalloc/internal/spin.h" -#ifndef _CRT_SPINCOUNT -#define _CRT_SPINCOUNT 4000 +#if defined(_WIN32) && !defined(_CRT_SPINCOUNT) +# define _CRT_SPINCOUNT 4000 #endif /* @@ -22,8 +22,8 @@ int64_t opt_mutex_max_spin = 600; bool isthreaded = false; #endif #ifdef JEMALLOC_MUTEX_INIT_CB -static bool postpone_init = true; -static malloc_mutex_t *postponed_mutexes = NULL; +static bool postpone_init = true; +static malloc_mutex_t *postponed_mutexes = NULL; #endif /******************************************************************************/ @@ -44,14 +44,14 @@ pthread_create(pthread_t *__restrict thread, /******************************************************************************/ #ifdef JEMALLOC_MUTEX_INIT_CB -JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb(pthread_mutex_t *mutex, - void *(calloc_cb)(size_t, size_t)); +JEMALLOC_EXPORT int _pthread_mutex_init_calloc_cb( + pthread_mutex_t *mutex, void *(calloc_cb)(size_t, size_t)); #endif void malloc_mutex_lock_slow(malloc_mutex_t *mutex) { mutex_prof_data_t *data = &mutex->prof_data; - nstime_t before; + nstime_t before; if (ncpus == 1) { goto label_spin_done; @@ -61,7 +61,7 @@ malloc_mutex_lock_slow(malloc_mutex_t *mutex) { do { spin_cpu_spinwait(); if (!atomic_load_b(&mutex->locked, ATOMIC_RELAXED) - && !malloc_mutex_trylock_final(mutex)) { + && !malloc_mutex_trylock_final(mutex)) { data->n_spin_acquired++; return; } @@ -77,8 +77,9 @@ malloc_mutex_lock_slow(malloc_mutex_t *mutex) { /* Copy before to after to avoid clock skews. */ nstime_t after; nstime_copy(&after, &before); - uint32_t n_thds = atomic_fetch_add_u32(&data->n_waiting_thds, 1, - ATOMIC_RELAXED) + 1; + uint32_t n_thds = atomic_fetch_add_u32( + &data->n_waiting_thds, 1, ATOMIC_RELAXED) + + 1; /* One last try as above two calls may take quite some cycles. */ if (!malloc_mutex_trylock_final(mutex)) { atomic_fetch_sub_u32(&data->n_waiting_thds, 1, ATOMIC_RELAXED); @@ -137,27 +138,28 @@ mutex_addr_comp(const witness_t *witness1, void *mutex1, } bool -malloc_mutex_init(malloc_mutex_t *mutex, const char *name, - witness_rank_t rank, malloc_mutex_lock_order_t lock_order) { +malloc_mutex_init(malloc_mutex_t *mutex, const char *name, witness_rank_t rank, + malloc_mutex_lock_order_t lock_order) { mutex_prof_data_init(&mutex->prof_data); #ifdef _WIN32 -# if _WIN32_WINNT >= 0x0600 +# if _WIN32_WINNT >= 0x0600 InitializeSRWLock(&mutex->lock); -# else - if (!InitializeCriticalSectionAndSpinCount(&mutex->lock, - _CRT_SPINCOUNT)) { +# else + if (!InitializeCriticalSectionAndSpinCount( + &mutex->lock, _CRT_SPINCOUNT)) { return true; } -# endif +# endif #elif (defined(JEMALLOC_OS_UNFAIR_LOCK)) - mutex->lock = OS_UNFAIR_LOCK_INIT; + mutex->lock = OS_UNFAIR_LOCK_INIT; #elif (defined(JEMALLOC_MUTEX_INIT_CB)) if (postpone_init) { mutex->postponed_next = postponed_mutexes; postponed_mutexes = mutex; } else { - if (_pthread_mutex_init_calloc_cb(&mutex->lock, - bootstrap_calloc) != 0) { + if (_pthread_mutex_init_calloc_cb( + &mutex->lock, bootstrap_calloc) + != 0) { return true; } } @@ -201,9 +203,10 @@ malloc_mutex_postfork_child(tsdn_t *tsdn, malloc_mutex_t *mutex) { #ifdef JEMALLOC_MUTEX_INIT_CB malloc_mutex_unlock(tsdn, mutex); #else - if (malloc_mutex_init(mutex, mutex->witness.name, - mutex->witness.rank, mutex->lock_order)) { - malloc_printf(": Error re-initializing mutex in " + if (malloc_mutex_init(mutex, mutex->witness.name, mutex->witness.rank, + mutex->lock_order)) { + malloc_printf( + ": Error re-initializing mutex in " "child\n"); if (opt_abort) { abort(); @@ -217,8 +220,9 @@ malloc_mutex_boot(void) { #ifdef JEMALLOC_MUTEX_INIT_CB postpone_init = false; while (postponed_mutexes != NULL) { - if (_pthread_mutex_init_calloc_cb(&postponed_mutexes->lock, - bootstrap_calloc) != 0) { + if (_pthread_mutex_init_calloc_cb( + &postponed_mutexes->lock, bootstrap_calloc) + != 0) { return true; } postponed_mutexes = postponed_mutexes->postponed_next; diff --git a/dep/jemalloc/src/nstime.c b/dep/jemalloc/src/nstime.c index a1a53777febbe..0dfbeda150968 100644 --- a/dep/jemalloc/src/nstime.c +++ b/dep/jemalloc/src/nstime.c @@ -5,8 +5,8 @@ #include "jemalloc/internal/assert.h" -#define BILLION UINT64_C(1000000000) -#define MILLION UINT64_C(1000000) +#define BILLION UINT64_C(1000000000) +#define MILLION UINT64_C(1000000) static void nstime_set_initialized(nstime_t *time) { @@ -22,8 +22,8 @@ nstime_assert_initialized(const nstime_t *time) { * Some parts (e.g. stats) rely on memset to zero initialize. Treat * these as valid initialization. */ - assert(time->magic == NSTIME_MAGIC || - (time->magic == 0 && time->ns == 0)); + assert( + time->magic == NSTIME_MAGIC || (time->magic == 0 && time->ns == 0)); #endif } @@ -63,7 +63,7 @@ nstime_ns(const nstime_t *time) { } uint64_t -nstime_msec(const nstime_t *time) { +nstime_ms(const nstime_t *time) { nstime_assert_initialized(time); return time->ns / MILLION; } @@ -133,8 +133,10 @@ nstime_isubtract(nstime_t *time, uint64_t subtrahend) { void nstime_imultiply(nstime_t *time, uint64_t multiplier) { nstime_assert_initialized(time); - assert((((time->ns | multiplier) & (UINT64_MAX << (sizeof(uint64_t) << - 2))) == 0) || ((time->ns * multiplier) / multiplier == time->ns)); + assert( + (((time->ns | multiplier) & (UINT64_MAX << (sizeof(uint64_t) << 2))) + == 0) + || ((time->ns * multiplier) / multiplier == time->ns)); nstime_initialize_operand(time); time->ns *= multiplier; @@ -158,7 +160,20 @@ nstime_divide(const nstime_t *time, const nstime_t *divisor) { return time->ns / divisor->ns; } -/* Returns time since *past, w/o updating *past. */ +uint64_t +nstime_ns_between(const nstime_t *earlier, const nstime_t *later) { + nstime_assert_initialized(earlier); + nstime_assert_initialized(later); + assert(nstime_compare(later, earlier) >= 0); + return later->ns - earlier->ns; +} + +uint64_t +nstime_ms_between(const nstime_t *earlier, const nstime_t *later) { + return nstime_ns_between(earlier, later) / MILLION; +} + +/* Returns time since *past in nanoseconds, w/o updating *past. */ uint64_t nstime_ns_since(const nstime_t *past) { nstime_assert_initialized(past); @@ -166,13 +181,17 @@ nstime_ns_since(const nstime_t *past) { nstime_t now; nstime_copy(&now, past); nstime_update(&now); + return nstime_ns_between(past, &now); +} - assert(nstime_compare(&now, past) >= 0); - return now.ns - past->ns; +/* Returns time since *past in milliseconds, w/o updating *past. */ +uint64_t +nstime_ms_since(const nstime_t *past) { + return nstime_ns_since(past) / MILLION; } #ifdef _WIN32 -# define NSTIME_MONOTONIC true +# define NSTIME_MONOTONIC false static void nstime_get(nstime_t *time) { FILETIME ft; @@ -184,7 +203,7 @@ nstime_get(nstime_t *time) { nstime_init(time, ticks_100ns * 100); } #elif defined(JEMALLOC_HAVE_CLOCK_MONOTONIC_COARSE) -# define NSTIME_MONOTONIC true +# define NSTIME_MONOTONIC true static void nstime_get(nstime_t *time) { struct timespec ts; @@ -193,7 +212,7 @@ nstime_get(nstime_t *time) { nstime_init2(time, ts.tv_sec, ts.tv_nsec); } #elif defined(JEMALLOC_HAVE_CLOCK_MONOTONIC) -# define NSTIME_MONOTONIC true +# define NSTIME_MONOTONIC true static void nstime_get(nstime_t *time) { struct timespec ts; @@ -201,14 +220,25 @@ nstime_get(nstime_t *time) { clock_gettime(CLOCK_MONOTONIC, &ts); nstime_init2(time, ts.tv_sec, ts.tv_nsec); } +#elif defined(JEMALLOC_HAVE_CLOCK_GETTIME_NSEC_NP) +# define NSTIME_MONOTONIC true +static void +nstime_get(nstime_t *time) { + nstime_init(time, clock_gettime_nsec_np(CLOCK_UPTIME_RAW)); +} #elif defined(JEMALLOC_HAVE_MACH_ABSOLUTE_TIME) -# define NSTIME_MONOTONIC true +# define NSTIME_MONOTONIC true static void nstime_get(nstime_t *time) { - nstime_init(time, mach_absolute_time()); + static mach_timebase_info_data_t sTimebaseInfo; + if (sTimebaseInfo.denom == 0) { + (void)mach_timebase_info(&sTimebaseInfo); + } + nstime_init(time, + mach_absolute_time() * sTimebaseInfo.numer / sTimebaseInfo.denom); } #else -# define NSTIME_MONOTONIC false +# define NSTIME_MONOTONIC false static void nstime_get(nstime_t *time) { struct timeval tv; @@ -225,15 +255,13 @@ nstime_monotonic_impl(void) { } nstime_monotonic_t *JET_MUTABLE nstime_monotonic = nstime_monotonic_impl; -prof_time_res_t opt_prof_time_res = - prof_time_res_default; +prof_time_res_t opt_prof_time_res = prof_time_res_default; -const char *prof_time_res_mode_names[] = { - "default", - "high", +const char *const prof_time_res_mode_names[] = { + "default", + "high", }; - static void nstime_get_realtime(nstime_t *time) { #if defined(JEMALLOC_HAVE_CLOCK_REALTIME) && !defined(_WIN32) @@ -285,5 +313,3 @@ nstime_prof_init_update(nstime_t *time) { nstime_init_zero(time); nstime_prof_update(time); } - - diff --git a/dep/jemalloc/src/pa.c b/dep/jemalloc/src/pa.c index eb7e4620ea53e..a03b0c1c448dd 100644 --- a/dep/jemalloc/src/pa.c +++ b/dep/jemalloc/src/pa.c @@ -11,13 +11,13 @@ pa_nactive_add(pa_shard_t *shard, size_t add_pages) { static void pa_nactive_sub(pa_shard_t *shard, size_t sub_pages) { - assert(atomic_load_zu(&shard->nactive, ATOMIC_RELAXED) >= sub_pages); + assert(pa_shard_nactive(shard) >= sub_pages); atomic_fetch_sub_zu(&shard->nactive, sub_pages, ATOMIC_RELAXED); } bool pa_central_init(pa_central_t *central, base_t *base, bool hpa, - hpa_hooks_t *hpa_hooks) { + const hpa_hooks_t *hpa_hooks) { bool err; if (hpa) { err = hpa_central_init(¢ral->hpa, base, hpa_hooks); @@ -41,8 +41,8 @@ pa_shard_init(tsdn_t *tsdn, pa_shard_t *shard, pa_central_t *central, } if (pac_init(tsdn, &shard->pac, base, emap, &shard->edata_cache, - cur_time, pac_oversize_threshold, dirty_decay_ms, muzzy_decay_ms, - &stats->pac_stats, stats_mtx)) { + cur_time, pac_oversize_threshold, dirty_decay_ms, + muzzy_decay_ms, &stats->pac_stats, stats_mtx)) { return true; } @@ -67,12 +67,9 @@ pa_shard_init(tsdn_t *tsdn, pa_shard_t *shard, pa_central_t *central, bool pa_shard_enable_hpa(tsdn_t *tsdn, pa_shard_t *shard, const hpa_shard_opts_t *hpa_opts, const sec_opts_t *hpa_sec_opts) { - if (hpa_shard_init(&shard->hpa_shard, &shard->central->hpa, shard->emap, - shard->base, &shard->edata_cache, shard->ind, hpa_opts)) { - return true; - } - if (sec_init(tsdn, &shard->hpa_sec, shard->base, &shard->hpa_shard.pai, - hpa_sec_opts)) { + if (hpa_shard_init(tsdn, &shard->hpa_shard, &shard->central->hpa, + shard->emap, shard->base, &shard->edata_cache, shard->ind, + hpa_opts, hpa_sec_opts)) { return true; } shard->ever_used_hpa = true; @@ -85,7 +82,6 @@ void pa_shard_disable_hpa(tsdn_t *tsdn, pa_shard_t *shard) { atomic_store_b(&shard->use_hpa, false, ATOMIC_RELAXED); if (shard->ever_used_hpa) { - sec_disable(tsdn, &shard->hpa_sec); hpa_shard_disable(tsdn, &shard->hpa_shard); } } @@ -93,8 +89,13 @@ pa_shard_disable_hpa(tsdn_t *tsdn, pa_shard_t *shard) { void pa_shard_reset(tsdn_t *tsdn, pa_shard_t *shard) { atomic_store_zu(&shard->nactive, 0, ATOMIC_RELAXED); + pa_shard_flush(tsdn, shard); +} + +void +pa_shard_flush(tsdn_t *tsdn, pa_shard_t *shard) { if (shard->ever_used_hpa) { - sec_flush(tsdn, &shard->hpa_sec); + hpa_shard_flush(tsdn, &shard->hpa_shard); } } @@ -107,28 +108,27 @@ void pa_shard_destroy(tsdn_t *tsdn, pa_shard_t *shard) { pac_destroy(tsdn, &shard->pac); if (shard->ever_used_hpa) { - sec_flush(tsdn, &shard->hpa_sec); - hpa_shard_disable(tsdn, &shard->hpa_shard); + hpa_shard_destroy(tsdn, &shard->hpa_shard); } } static pai_t * pa_get_pai(pa_shard_t *shard, edata_t *edata) { - return (edata_pai_get(edata) == EXTENT_PAI_PAC - ? &shard->pac.pai : &shard->hpa_sec.pai); + return (edata_pai_get(edata) == EXTENT_PAI_PAC ? &shard->pac.pai + : &shard->hpa_shard.pai); } edata_t * pa_alloc(tsdn_t *tsdn, pa_shard_t *shard, size_t size, size_t alignment, bool slab, szind_t szind, bool zero, bool guarded, bool *deferred_work_generated) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); assert(!guarded || alignment <= PAGE); edata_t *edata = NULL; if (!guarded && pa_shard_uses_hpa(shard)) { - edata = pai_alloc(tsdn, &shard->hpa_sec.pai, size, alignment, + edata = pai_alloc(tsdn, &shard->hpa_shard.pai, size, alignment, zero, /* guarded */ false, slab, deferred_work_generated); } /* @@ -190,8 +190,8 @@ pa_shrink(tsdn_t *tsdn, pa_shard_t *shard, edata_t *edata, size_t old_size, size_t shrink_amount = old_size - new_size; pai_t *pai = pa_get_pai(shard, edata); - bool error = pai_shrink(tsdn, pai, edata, old_size, new_size, - deferred_work_generated); + bool error = pai_shrink( + tsdn, pai, edata, old_size, new_size, deferred_work_generated); if (error) { return true; } @@ -220,13 +220,6 @@ pa_dalloc(tsdn_t *tsdn, pa_shard_t *shard, edata_t *edata, pai_dalloc(tsdn, pai, edata, deferred_work_generated); } -bool -pa_shard_retain_grow_limit_get_set(tsdn_t *tsdn, pa_shard_t *shard, - size_t *old_limit, size_t *new_limit) { - return pac_retain_grow_limit_get_set(tsdn, &shard->pac, old_limit, - new_limit); -} - bool pa_decay_ms_set(tsdn_t *tsdn, pa_shard_t *shard, extent_state_t state, ssize_t decay_ms, pac_purge_eagerness_t eagerness) { @@ -239,11 +232,11 @@ pa_decay_ms_get(pa_shard_t *shard, extent_state_t state) { } void -pa_shard_set_deferral_allowed(tsdn_t *tsdn, pa_shard_t *shard, - bool deferral_allowed) { +pa_shard_set_deferral_allowed( + tsdn_t *tsdn, pa_shard_t *shard, bool deferral_allowed) { if (pa_shard_uses_hpa(shard)) { - hpa_shard_set_deferral_allowed(tsdn, &shard->hpa_shard, - deferral_allowed); + hpa_shard_set_deferral_allowed( + tsdn, &shard->hpa_shard, deferral_allowed); } } @@ -267,8 +260,8 @@ pa_shard_time_until_deferred_work(tsdn_t *tsdn, pa_shard_t *shard) { } if (pa_shard_uses_hpa(shard)) { - uint64_t hpa = - pai_time_until_deferred_work(tsdn, &shard->hpa_shard.pai); + uint64_t hpa = pai_time_until_deferred_work( + tsdn, &shard->hpa_shard.pai); if (hpa < time) { time = hpa; } diff --git a/dep/jemalloc/src/pa_extra.c b/dep/jemalloc/src/pa_extra.c index 0f488be69c5dd..ff45674f2ba6a 100644 --- a/dep/jemalloc/src/pa_extra.c +++ b/dep/jemalloc/src/pa_extra.c @@ -17,7 +17,7 @@ pa_shard_prefork0(tsdn_t *tsdn, pa_shard_t *shard) { void pa_shard_prefork2(tsdn_t *tsdn, pa_shard_t *shard) { if (shard->ever_used_hpa) { - sec_prefork2(tsdn, &shard->hpa_sec); + hpa_shard_prefork2(tsdn, &shard->hpa_shard); } } @@ -54,7 +54,6 @@ pa_shard_postfork_parent(tsdn_t *tsdn, pa_shard_t *shard) { malloc_mutex_postfork_parent(tsdn, &shard->pac.decay_dirty.mtx); malloc_mutex_postfork_parent(tsdn, &shard->pac.decay_muzzy.mtx); if (shard->ever_used_hpa) { - sec_postfork_parent(tsdn, &shard->hpa_sec); hpa_shard_postfork_parent(tsdn, &shard->hpa_shard); } } @@ -69,24 +68,41 @@ pa_shard_postfork_child(tsdn_t *tsdn, pa_shard_t *shard) { malloc_mutex_postfork_child(tsdn, &shard->pac.decay_dirty.mtx); malloc_mutex_postfork_child(tsdn, &shard->pac.decay_muzzy.mtx); if (shard->ever_used_hpa) { - sec_postfork_child(tsdn, &shard->hpa_sec); hpa_shard_postfork_child(tsdn, &shard->hpa_shard); } } +size_t +pa_shard_nactive(pa_shard_t *shard) { + return atomic_load_zu(&shard->nactive, ATOMIC_RELAXED); +} + +size_t +pa_shard_ndirty(pa_shard_t *shard) { + size_t ndirty = ecache_npages_get(&shard->pac.ecache_dirty); + if (shard->ever_used_hpa) { + ndirty += psset_ndirty(&shard->hpa_shard.psset); + } + return ndirty; +} + +size_t +pa_shard_nmuzzy(pa_shard_t *shard) { + return ecache_npages_get(&shard->pac.ecache_muzzy); +} + void -pa_shard_basic_stats_merge(pa_shard_t *shard, size_t *nactive, size_t *ndirty, - size_t *nmuzzy) { - *nactive += atomic_load_zu(&shard->nactive, ATOMIC_RELAXED); - *ndirty += ecache_npages_get(&shard->pac.ecache_dirty); - *nmuzzy += ecache_npages_get(&shard->pac.ecache_muzzy); +pa_shard_basic_stats_merge( + pa_shard_t *shard, size_t *nactive, size_t *ndirty, size_t *nmuzzy) { + *nactive += pa_shard_nactive(shard); + *ndirty += pa_shard_ndirty(shard); + *nmuzzy += pa_shard_nmuzzy(shard); } void pa_shard_stats_merge(tsdn_t *tsdn, pa_shard_t *shard, pa_shard_stats_t *pa_shard_stats_out, pac_estats_t *estats_out, - hpa_shard_stats_t *hpa_stats_out, sec_stats_t *sec_stats_out, - size_t *resident) { + hpa_shard_stats_t *hpa_stats_out, size_t *resident) { cassert(config_stats); pa_shard_stats_out->pac_stats.retained += @@ -95,37 +111,37 @@ pa_shard_stats_merge(tsdn_t *tsdn, pa_shard_t *shard, &shard->edata_cache.count, ATOMIC_RELAXED); size_t resident_pgs = 0; - resident_pgs += atomic_load_zu(&shard->nactive, ATOMIC_RELAXED); - resident_pgs += ecache_npages_get(&shard->pac.ecache_dirty); + resident_pgs += pa_shard_nactive(shard); + resident_pgs += pa_shard_ndirty(shard); *resident += (resident_pgs << LG_PAGE); /* Dirty decay stats */ locked_inc_u64_unsynchronized( &pa_shard_stats_out->pac_stats.decay_dirty.npurge, locked_read_u64(tsdn, LOCKEDINT_MTX(*shard->stats_mtx), - &shard->pac.stats->decay_dirty.npurge)); + &shard->pac.stats->decay_dirty.npurge)); locked_inc_u64_unsynchronized( &pa_shard_stats_out->pac_stats.decay_dirty.nmadvise, locked_read_u64(tsdn, LOCKEDINT_MTX(*shard->stats_mtx), - &shard->pac.stats->decay_dirty.nmadvise)); + &shard->pac.stats->decay_dirty.nmadvise)); locked_inc_u64_unsynchronized( &pa_shard_stats_out->pac_stats.decay_dirty.purged, locked_read_u64(tsdn, LOCKEDINT_MTX(*shard->stats_mtx), - &shard->pac.stats->decay_dirty.purged)); + &shard->pac.stats->decay_dirty.purged)); /* Muzzy decay stats */ locked_inc_u64_unsynchronized( &pa_shard_stats_out->pac_stats.decay_muzzy.npurge, locked_read_u64(tsdn, LOCKEDINT_MTX(*shard->stats_mtx), - &shard->pac.stats->decay_muzzy.npurge)); + &shard->pac.stats->decay_muzzy.npurge)); locked_inc_u64_unsynchronized( &pa_shard_stats_out->pac_stats.decay_muzzy.nmadvise, locked_read_u64(tsdn, LOCKEDINT_MTX(*shard->stats_mtx), - &shard->pac.stats->decay_muzzy.nmadvise)); + &shard->pac.stats->decay_muzzy.nmadvise)); locked_inc_u64_unsynchronized( &pa_shard_stats_out->pac_stats.decay_muzzy.purged, locked_read_u64(tsdn, LOCKEDINT_MTX(*shard->stats_mtx), - &shard->pac.stats->decay_muzzy.purged)); + &shard->pac.stats->decay_muzzy.purged)); atomic_load_add_store_zu(&pa_shard_stats_out->pac_stats.abandoned_vm, atomic_load_zu(&shard->pac.stats->abandoned_vm, ATOMIC_RELAXED)); @@ -138,8 +154,8 @@ pa_shard_stats_merge(tsdn_t *tsdn, pa_shard_t *shard, retained = ecache_nextents_get(&shard->pac.ecache_retained, i); dirty_bytes = ecache_nbytes_get(&shard->pac.ecache_dirty, i); muzzy_bytes = ecache_nbytes_get(&shard->pac.ecache_muzzy, i); - retained_bytes = ecache_nbytes_get(&shard->pac.ecache_retained, - i); + retained_bytes = ecache_nbytes_get( + &shard->pac.ecache_retained, i); estats_out[i].ndirty = dirty; estats_out[i].nmuzzy = muzzy; @@ -151,7 +167,6 @@ pa_shard_stats_merge(tsdn_t *tsdn, pa_shard_t *shard, if (shard->ever_used_hpa) { hpa_shard_stats_merge(tsdn, &shard->hpa_shard, hpa_stats_out); - sec_stats_merge(tsdn, &shard->hpa_sec, sec_stats_out); } } @@ -185,7 +200,7 @@ pa_shard_mtx_stats_read(tsdn_t *tsdn, pa_shard_t *shard, pa_shard_mtx_stats_read_single(tsdn, mutex_prof_data, &shard->hpa_shard.grow_mtx, arena_prof_mutex_hpa_shard_grow); - sec_mutex_stats_read(tsdn, &shard->hpa_sec, + sec_mutex_stats_read(tsdn, &shard->hpa_shard.sec, &mutex_prof_data[arena_prof_mutex_hpa_sec]); } } diff --git a/dep/jemalloc/src/pac.c b/dep/jemalloc/src/pac.c index 53e3d823758e8..ed0f77c2a3e86 100644 --- a/dep/jemalloc/src/pac.c +++ b/dep/jemalloc/src/pac.c @@ -7,18 +7,18 @@ static edata_t *pac_alloc_impl(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, bool guarded, bool frequent_reuse, bool *deferred_work_generated); -static bool pac_expand_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated); -static bool pac_shrink_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool *deferred_work_generated); -static void pac_dalloc_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated); +static bool pac_expand_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, + size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated); +static bool pac_shrink_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, + size_t old_size, size_t new_size, bool *deferred_work_generated); +static void pac_dalloc_impl( + tsdn_t *tsdn, pai_t *self, edata_t *edata, bool *deferred_work_generated); static uint64_t pac_time_until_deferred_work(tsdn_t *tsdn, pai_t *self); static inline void -pac_decay_data_get(pac_t *pac, extent_state_t state, - decay_t **r_decay, pac_decay_stats_t **r_decay_stats, ecache_t **r_ecache) { - switch(state) { +pac_decay_data_get(pac_t *pac, extent_state_t state, decay_t **r_decay, + pac_decay_stats_t **r_decay_stats, ecache_t **r_ecache) { + switch (state) { case extent_state_dirty: *r_decay = &pac->decay_dirty; *r_decay_stats = &pac->stats->decay_dirty; @@ -29,6 +29,10 @@ pac_decay_data_get(pac_t *pac, extent_state_t state, *r_decay_stats = &pac->stats->decay_muzzy; *r_ecache = &pac->ecache_muzzy; return; + case extent_state_active: + case extent_state_retained: + case extent_state_transition: + case extent_state_merging: default: unreachable(); } @@ -47,7 +51,7 @@ pac_init(tsdn_t *tsdn, pac_t *pac, base_t *base, emap_t *emap, * merging/splitting extents is non-trivial. */ if (ecache_init(tsdn, &pac->ecache_dirty, extent_state_dirty, ind, - /* delay_coalesce */ true)) { + /* delay_coalesce */ true)) { return true; } /* @@ -55,7 +59,7 @@ pac_init(tsdn_t *tsdn, pac_t *pac, base_t *base, emap_t *emap, * the critical path much less often than for dirty extents. */ if (ecache_init(tsdn, &pac->ecache_muzzy, extent_state_muzzy, ind, - /* delay_coalesce */ false)) { + /* delay_coalesce */ false)) { return true; } /* @@ -64,17 +68,17 @@ pac_init(tsdn_t *tsdn, pac_t *pac, base_t *base, emap_t *emap, * coalescing), but also because operations on retained extents are not * in the critical path. */ - if (ecache_init(tsdn, &pac->ecache_retained, extent_state_retained, - ind, /* delay_coalesce */ false)) { + if (ecache_init(tsdn, &pac->ecache_retained, extent_state_retained, ind, + /* delay_coalesce */ false)) { return true; } exp_grow_init(&pac->exp_grow); if (malloc_mutex_init(&pac->grow_mtx, "extent_grow", - WITNESS_RANK_EXTENT_GROW, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_EXTENT_GROW, malloc_mutex_rank_exclusive)) { return true; } - atomic_store_zu(&pac->oversize_threshold, pac_oversize_threshold, - ATOMIC_RELAXED); + atomic_store_zu( + &pac->oversize_threshold, pac_oversize_threshold, ATOMIC_RELAXED); if (decay_init(&pac->decay_dirty, cur_time, dirty_decay_ms)) { return true; } @@ -93,11 +97,9 @@ pac_init(tsdn_t *tsdn, pac_t *pac, base_t *base, emap_t *emap, atomic_store_zu(&pac->extent_sn_next, 0, ATOMIC_RELAXED); pac->pai.alloc = &pac_alloc_impl; - pac->pai.alloc_batch = &pai_alloc_batch_default; pac->pai.expand = &pac_expand_impl; pac->pai.shrink = &pac_shrink_impl; pac->pai.dalloc = &pac_dalloc_impl; - pac->pai.dalloc_batch = &pai_dalloc_batch_default; pac->pai.time_until_deferred_work = &pac_time_until_deferred_work; return false; @@ -108,10 +110,28 @@ pac_may_have_muzzy(pac_t *pac) { return pac_decay_ms_get(pac, extent_state_muzzy) != 0; } +static size_t +pac_alloc_retained_batched_size(size_t size) { + if (size > SC_LARGE_MAXCLASS) { + /* + * A valid input with usize SC_LARGE_MAXCLASS could still + * reach here because of sz_large_pad. Such a request is valid + * but we should not further increase it. Thus, directly + * return size for such cases. + */ + return size; + } + size_t batched_size = sz_s2u_compute_using_delta(size); + size_t next_hugepage_size = HUGEPAGE_CEILING(size); + return batched_size > next_hugepage_size ? next_hugepage_size + : batched_size; +} + static edata_t * pac_alloc_real(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, size_t size, size_t alignment, bool zero, bool guarded) { assert(!guarded || alignment <= PAGE); + size_t newly_mapped_size = 0; edata_t *edata = ecache_alloc(tsdn, pac, ehooks, &pac->ecache_dirty, NULL, size, alignment, zero, guarded); @@ -120,16 +140,74 @@ pac_alloc_real(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, size_t size, edata = ecache_alloc(tsdn, pac, ehooks, &pac->ecache_muzzy, NULL, size, alignment, zero, guarded); } + + /* + * We batched allocate a larger extent with large size classes disabled + * because the reuse of extents in the dirty pool is worse without size + * classes for large allocs. For instance, when + * disable_large_size_classes is false, 1.1MB, 1.15MB, and 1.2MB allocs + * will all be ceiled to 1.25MB and can reuse the same buffer if they + * are alloc & dalloc sequentially. However, with + * disable_large_size_classes being true, they cannot reuse the same + * buffer and their sequential allocs & dallocs will result in three + * different extents. Thus, we cache extra mergeable extents in the + * dirty pool to improve the reuse. We skip this optimization if both + * maps_coalesce and opt_retain are disabled because VM is not cheap + * enough in such cases to be used aggressively and extents cannot be + * merged at will (only extents from the same VirtualAlloc can be + * merged). Note that it could still be risky to cache more extents + * when either mpas_coalesce or opt_retain is enabled. Yet doing + * so is still beneficial in improving the reuse of extents with some + * limits. This choice should be reevaluated if + * pac_alloc_retained_batched_size is changed to be more aggressive. + */ + if (sz_large_size_classes_disabled() && edata == NULL + && (maps_coalesce || opt_retain)) { + size_t batched_size = pac_alloc_retained_batched_size(size); + /* + * Note that ecache_alloc_grow will try to retrieve virtual + * memory from both retained pool and directly from OS through + * extent_alloc_wrapper if the retained pool has no qualified + * extents. This is also why the overcaching still works even + * with opt_retain off. + */ + edata = ecache_alloc_grow(tsdn, pac, ehooks, + &pac->ecache_retained, NULL, batched_size, alignment, zero, + guarded); + + if (edata != NULL && batched_size > size) { + edata_t *trail = extent_split_wrapper(tsdn, pac, ehooks, + edata, size, batched_size - size, + /* holding_core_locks */ false); + if (trail == NULL) { + ecache_dalloc(tsdn, pac, ehooks, + &pac->ecache_retained, edata); + edata = NULL; + } else { + ecache_dalloc(tsdn, pac, ehooks, + &pac->ecache_dirty, trail); + } + } + + if (edata != NULL) { + newly_mapped_size = batched_size; + } + } + if (edata == NULL) { edata = ecache_alloc_grow(tsdn, pac, ehooks, &pac->ecache_retained, NULL, size, alignment, zero, guarded); - if (config_stats && edata != NULL) { - atomic_fetch_add_zu(&pac->stats->pac_mapped, size, - ATOMIC_RELAXED); + if (edata != NULL) { + newly_mapped_size = size; } } + if (config_stats && newly_mapped_size != 0) { + atomic_fetch_add_zu( + &pac->stats->pac_mapped, newly_mapped_size, ATOMIC_RELAXED); + } + return edata; } @@ -140,8 +218,8 @@ pac_alloc_new_guarded(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, size_t size, edata_t *edata; if (san_bump_enabled() && frequent_reuse) { - edata = san_bump_alloc(tsdn, &pac->sba, pac, ehooks, size, - zero); + edata = san_bump_alloc( + tsdn, &pac->sba, pac, ehooks, size, zero); } else { size_t size_with_guards = san_two_side_guarded_sz(size); /* Alloc a non-guarded extent first.*/ @@ -150,12 +228,12 @@ pac_alloc_new_guarded(tsdn_t *tsdn, pac_t *pac, ehooks_t *ehooks, size_t size, if (edata != NULL) { /* Add guards around it. */ assert(edata_size_get(edata) == size_with_guards); - san_guard_pages_two_sided(tsdn, ehooks, edata, - pac->emap, true); + san_guard_pages_two_sided( + tsdn, ehooks, edata, pac->emap, true); } } - assert(edata == NULL || (edata_guarded_get(edata) && - edata_size_get(edata) == size)); + assert(edata == NULL + || (edata_guarded_get(edata) && edata_size_get(edata) == size)); return edata; } @@ -164,7 +242,7 @@ static edata_t * pac_alloc_impl(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, bool guarded, bool frequent_reuse, bool *deferred_work_generated) { - pac_t *pac = (pac_t *)self; + pac_t *pac = (pac_t *)self; ehooks_t *ehooks = pac_ehooks_get(pac); edata_t *edata = NULL; @@ -175,13 +253,13 @@ pac_alloc_impl(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, * for such allocations would always return NULL. * */ if (!guarded || frequent_reuse) { - edata = pac_alloc_real(tsdn, pac, ehooks, size, alignment, - zero, guarded); + edata = pac_alloc_real( + tsdn, pac, ehooks, size, alignment, zero, guarded); } if (edata == NULL && guarded) { /* No cached guarded extents; creating a new one. */ - edata = pac_alloc_new_guarded(tsdn, pac, ehooks, size, - alignment, zero, frequent_reuse); + edata = pac_alloc_new_guarded( + tsdn, pac, ehooks, size, alignment, zero, frequent_reuse); } return edata; @@ -190,7 +268,7 @@ pac_alloc_impl(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, static bool pac_expand_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated) { - pac_t *pac = (pac_t *)self; + pac_t *pac = (pac_t *)self; ehooks_t *ehooks = pac_ehooks_get(pac); size_t mapped_add = 0; @@ -219,8 +297,8 @@ pac_expand_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, return true; } if (config_stats && mapped_add > 0) { - atomic_fetch_add_zu(&pac->stats->pac_mapped, mapped_add, - ATOMIC_RELAXED); + atomic_fetch_add_zu( + &pac->stats->pac_mapped, mapped_add, ATOMIC_RELAXED); } return false; } @@ -228,7 +306,7 @@ pac_expand_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, static bool pac_shrink_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, size_t new_size, bool *deferred_work_generated) { - pac_t *pac = (pac_t *)self; + pac_t *pac = (pac_t *)self; ehooks_t *ehooks = pac_ehooks_get(pac); size_t shrink_amount = old_size - new_size; @@ -248,9 +326,9 @@ pac_shrink_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, } static void -pac_dalloc_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated) { - pac_t *pac = (pac_t *)self; +pac_dalloc_impl( + tsdn_t *tsdn, pai_t *self, edata_t *edata, bool *deferred_work_generated) { + pac_t *pac = (pac_t *)self; ehooks_t *ehooks = pac_ehooks_get(pac); if (edata_guarded_get(edata)) { @@ -267,10 +345,10 @@ pac_dalloc_impl(tsdn_t *tsdn, pai_t *self, edata_t *edata, * guarded). */ if (!edata_slab_get(edata) || !maps_coalesce) { - assert(edata_size_get(edata) >= SC_LARGE_MINCLASS || - !maps_coalesce); - san_unguard_pages_two_sided(tsdn, ehooks, edata, - pac->emap); + assert(edata_size_get(edata) >= SC_LARGE_MINCLASS + || !maps_coalesce); + san_unguard_pages_two_sided( + tsdn, ehooks, edata, pac->emap); } } @@ -285,8 +363,8 @@ pac_ns_until_purge(tsdn_t *tsdn, decay_t *decay, size_t npages) { /* Use minimal interval if decay is contended. */ return BACKGROUND_THREAD_DEFERRED_MIN; } - uint64_t result = decay_ns_until_purge(decay, npages, - ARENA_DEFERRED_PURGE_NPAGES_THRESHOLD); + uint64_t result = decay_ns_until_purge( + decay, npages, ARENA_DEFERRED_PURGE_NPAGES_THRESHOLD); malloc_mutex_unlock(tsdn, &decay->mtx); return result; @@ -295,18 +373,16 @@ pac_ns_until_purge(tsdn_t *tsdn, decay_t *decay, size_t npages) { static uint64_t pac_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { uint64_t time; - pac_t *pac = (pac_t *)self; + pac_t *pac = (pac_t *)self; - time = pac_ns_until_purge(tsdn, - &pac->decay_dirty, - ecache_npages_get(&pac->ecache_dirty)); + time = pac_ns_until_purge( + tsdn, &pac->decay_dirty, ecache_npages_get(&pac->ecache_dirty)); if (time == BACKGROUND_THREAD_DEFERRED_MIN) { return time; } - uint64_t muzzy = pac_ns_until_purge(tsdn, - &pac->decay_muzzy, - ecache_npages_get(&pac->ecache_muzzy)); + uint64_t muzzy = pac_ns_until_purge( + tsdn, &pac->decay_muzzy, ecache_npages_get(&pac->ecache_muzzy)); if (muzzy < time) { time = muzzy; } @@ -314,8 +390,8 @@ pac_time_until_deferred_work(tsdn_t *tsdn, pai_t *self) { } bool -pac_retain_grow_limit_get_set(tsdn_t *tsdn, pac_t *pac, size_t *old_limit, - size_t *new_limit) { +pac_retain_grow_limit_get_set( + tsdn_t *tsdn, pac_t *pac, size_t *old_limit, size_t *new_limit) { pszind_t new_ind JEMALLOC_CC_SILENCE_INIT(0); if (new_limit != NULL) { size_t limit = *new_limit; @@ -341,15 +417,15 @@ static size_t pac_stash_decayed(tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, size_t npages_limit, size_t npages_decay_max, edata_list_inactive_t *result) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 0); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 0); ehooks_t *ehooks = pac_ehooks_get(pac); /* Stash extents according to npages_limit. */ size_t nstashed = 0; while (nstashed < npages_decay_max) { - edata_t *edata = ecache_evict(tsdn, pac, ehooks, ecache, - npages_limit); + edata_t *edata = ecache_evict( + tsdn, pac, ehooks, ecache, npages_limit); if (edata == NULL) { break; } @@ -359,6 +435,44 @@ pac_stash_decayed(tsdn_t *tsdn, pac_t *pac, ecache_t *ecache, return nstashed; } +static bool +decay_with_process_madvise(edata_list_inactive_t *decay_extents) { + cassert(have_process_madvise); + assert(opt_process_madvise_max_batch > 0); +#ifndef JEMALLOC_HAVE_PROCESS_MADVISE + return true; +#else + assert( + opt_process_madvise_max_batch <= PROCESS_MADVISE_MAX_BATCH_LIMIT); + size_t len = opt_process_madvise_max_batch; + VARIABLE_ARRAY(struct iovec, vec, len); + + size_t cur = 0, total_bytes = 0; + for (edata_t *edata = edata_list_inactive_first(decay_extents); + edata != NULL; + edata = edata_list_inactive_next(decay_extents, edata)) { + size_t pages_bytes = edata_size_get(edata); + vec[cur].iov_base = edata_base_get(edata); + vec[cur].iov_len = pages_bytes; + total_bytes += pages_bytes; + cur++; + if (cur == len) { + bool err = pages_purge_process_madvise( + vec, len, total_bytes); + if (err) { + return true; + } + cur = 0; + total_bytes = 0; + } + } + if (cur > 0) { + return pages_purge_process_madvise(vec, cur, total_bytes); + } + return false; +#endif +} + static size_t pac_decay_stashed(tsdn_t *tsdn, pac_t *pac, decay_t *decay, pac_decay_stats_t *decay_stats, ecache_t *ecache, bool fully_decay, @@ -374,8 +488,30 @@ pac_decay_stashed(tsdn_t *tsdn, pac_t *pac, decay_t *decay, bool try_muzzy = !fully_decay && pac_decay_ms_get(pac, extent_state_muzzy) != 0; - for (edata_t *edata = edata_list_inactive_first(decay_extents); edata != - NULL; edata = edata_list_inactive_first(decay_extents)) { + bool purge_to_retained = !try_muzzy + || ecache->state == extent_state_muzzy; + /* + * Attempt process_madvise only if 1) enabled, 2) purging to retained, + * and 3) not using custom hooks. + */ + bool try_process_madvise = (opt_process_madvise_max_batch > 0) + && purge_to_retained && ehooks_dalloc_will_fail(ehooks); + + bool already_purged; + if (try_process_madvise) { + /* + * If anything unexpected happened during process_madvise + * (e.g. not supporting MADV_DONTNEED, or partial success for + * some reason), we will consider nothing is purged and fallback + * to the regular madvise. + */ + already_purged = !decay_with_process_madvise(decay_extents); + } else { + already_purged = false; + } + + for (edata_t *edata = edata_list_inactive_first(decay_extents); + edata != NULL; edata = edata_list_inactive_first(decay_extents)) { edata_list_inactive_remove(decay_extents, edata); size_t size = edata_size_get(edata); @@ -385,12 +521,10 @@ pac_decay_stashed(tsdn_t *tsdn, pac_t *pac, decay_t *decay, npurged += npages; switch (ecache->state) { - case extent_state_active: - not_reached(); case extent_state_dirty: if (try_muzzy) { - err = extent_purge_lazy_wrapper(tsdn, ehooks, - edata, /* offset */ 0, size); + err = extent_purge_lazy_wrapper( + tsdn, ehooks, edata, /* offset */ 0, size); if (!err) { ecache_dalloc(tsdn, pac, ehooks, &pac->ecache_muzzy, edata); @@ -399,10 +533,18 @@ pac_decay_stashed(tsdn_t *tsdn, pac_t *pac, decay_t *decay, } JEMALLOC_FALLTHROUGH; case extent_state_muzzy: - extent_dalloc_wrapper(tsdn, pac, ehooks, edata); + if (already_purged) { + extent_dalloc_wrapper_purged( + tsdn, pac, ehooks, edata); + } else { + extent_dalloc_wrapper(tsdn, pac, ehooks, edata); + } nunmapped += npages; break; + case extent_state_active: case extent_state_retained: + case extent_state_transition: + case extent_state_merging: default: not_reached(); } @@ -435,8 +577,8 @@ static void pac_decay_to_limit(tsdn_t *tsdn, pac_t *pac, decay_t *decay, pac_decay_stats_t *decay_stats, ecache_t *ecache, bool fully_decay, size_t npages_limit, size_t npages_decay_max) { - witness_assert_depth_to_rank(tsdn_witness_tsdp_get(tsdn), - WITNESS_RANK_CORE, 1); + witness_assert_depth_to_rank( + tsdn_witness_tsdp_get(tsdn), WITNESS_RANK_CORE, 1); if (decay->purging || npages_decay_max == 0) { return; @@ -446,8 +588,8 @@ pac_decay_to_limit(tsdn_t *tsdn, pac_t *pac, decay_t *decay, edata_list_inactive_t decay_extents; edata_list_inactive_init(&decay_extents); - size_t npurge = pac_stash_decayed(tsdn, pac, ecache, npages_limit, - npages_decay_max, &decay_extents); + size_t npurge = pac_stash_decayed( + tsdn, pac, ecache, npages_limit, npages_decay_max, &decay_extents); if (npurge != 0) { size_t npurged = pac_decay_stashed(tsdn, pac, decay, decay_stats, ecache, fully_decay, &decay_extents); @@ -468,8 +610,8 @@ pac_decay_all(tsdn_t *tsdn, pac_t *pac, decay_t *decay, static void pac_decay_try_purge(tsdn_t *tsdn, pac_t *pac, decay_t *decay, - pac_decay_stats_t *decay_stats, ecache_t *ecache, - size_t current_npages, size_t npages_limit) { + pac_decay_stats_t *decay_stats, ecache_t *ecache, size_t current_npages, + size_t npages_limit) { if (current_npages > npages_limit) { pac_decay_to_limit(tsdn, pac, decay, decay_stats, ecache, /* fully_decay */ false, npages_limit, @@ -504,8 +646,8 @@ pac_maybe_decay_purge(tsdn_t *tsdn, pac_t *pac, decay_t *decay, nstime_t time; nstime_init_update(&time); size_t npages_current = ecache_npages_get(ecache); - bool epoch_advanced = decay_maybe_advance_epoch(decay, &time, - npages_current); + bool epoch_advanced = decay_maybe_advance_epoch( + decay, &time, npages_current); if (eagerness == PAC_PURGE_ALWAYS || (epoch_advanced && eagerness == PAC_PURGE_ON_EPOCH_ADVANCE)) { size_t npages_limit = decay_npages_limit_get(decay); @@ -519,9 +661,9 @@ pac_maybe_decay_purge(tsdn_t *tsdn, pac_t *pac, decay_t *decay, bool pac_decay_ms_set(tsdn_t *tsdn, pac_t *pac, extent_state_t state, ssize_t decay_ms, pac_purge_eagerness_t eagerness) { - decay_t *decay; + decay_t *decay; pac_decay_stats_t *decay_stats; - ecache_t *ecache; + ecache_t *ecache; pac_decay_data_get(pac, state, &decay, &decay_stats, &ecache); if (!decay_ms_valid(decay_ms)) { @@ -548,9 +690,9 @@ pac_decay_ms_set(tsdn_t *tsdn, pac_t *pac, extent_state_t state, ssize_t pac_decay_ms_get(pac_t *pac, extent_state_t state) { - decay_t *decay; + decay_t *decay; pac_decay_stats_t *decay_stats; - ecache_t *ecache; + ecache_t *ecache; pac_decay_data_get(pac, state, &decay, &decay_stats, &ecache); return decay_ms_read(decay); } @@ -579,9 +721,10 @@ pac_destroy(tsdn_t *tsdn, pac_t *pac) { * dss-based extents for later reuse. */ ehooks_t *ehooks = pac_ehooks_get(pac); - edata_t *edata; - while ((edata = ecache_evict(tsdn, pac, ehooks, - &pac->ecache_retained, 0)) != NULL) { + edata_t *edata; + while ( + (edata = ecache_evict(tsdn, pac, ehooks, &pac->ecache_retained, 0)) + != NULL) { extent_destroy_wrapper(tsdn, pac, ehooks, edata); } } diff --git a/dep/jemalloc/src/pages.c b/dep/jemalloc/src/pages.c index 8c83a7de7b998..5c12ae426e86a 100644 --- a/dep/jemalloc/src/pages.c +++ b/dep/jemalloc/src/pages.c @@ -8,41 +8,46 @@ #include "jemalloc/internal/malloc_io.h" #ifdef JEMALLOC_SYSCTL_VM_OVERCOMMIT -#include -#ifdef __FreeBSD__ -#include -#endif +# include +# ifdef __FreeBSD__ +# include +# endif #endif #ifdef __NetBSD__ -#include /* ilog2 */ +# include /* ilog2 */ #endif #ifdef JEMALLOC_HAVE_VM_MAKE_TAG -#define PAGES_FD_TAG VM_MAKE_TAG(101U) +# define PAGES_FD_TAG VM_MAKE_TAG(254U) #else -#define PAGES_FD_TAG -1 +# define PAGES_FD_TAG -1 +#endif +#if defined(JEMALLOC_HAVE_PRCTL) && defined(JEMALLOC_PAGEID) +# include +# ifndef PR_SET_VMA +# define PR_SET_VMA 0x53564d41 +# define PR_SET_VMA_ANON_NAME 0 +# endif #endif /******************************************************************************/ /* Data. */ /* Actual operating system page size, detected during bootstrap, <= PAGE. */ -static size_t os_page; +size_t os_page; #ifndef _WIN32 -# define PAGES_PROT_COMMIT (PROT_READ | PROT_WRITE) -# define PAGES_PROT_DECOMMIT (PROT_NONE) -static int mmap_flags; +# define PAGES_PROT_COMMIT (PROT_READ | PROT_WRITE) +# define PAGES_PROT_DECOMMIT (PROT_NONE) +static int mmap_flags; #endif -static bool os_overcommits; +static bool os_overcommits; -const char *thp_mode_names[] = { - "default", - "always", - "never", - "not supported" -}; -thp_mode_t opt_thp = THP_MODE_DEFAULT; -thp_mode_t init_system_thp_mode; +const char *const thp_mode_names[] = { + "default", "always", "never", "not supported"}; +const char *const system_thp_mode_names[] = { + "madvise", "always", "never", "not supported"}; +thp_mode_t opt_thp = THP_MODE_DEFAULT; +system_thp_mode_t init_system_thp_mode; /* Runtime support for lazy purge. Irrelevant when !pages_can_purge_lazy. */ static bool pages_can_purge_lazy_runtime = true; @@ -59,16 +64,16 @@ static int madvise_dont_need_zeros_is_faulty = -1; * * [1]: https://patchwork.kernel.org/patch/10576637/ */ -static int madvise_MADV_DONTNEED_zeroes_pages() -{ - int works = -1; +static int +madvise_MADV_DONTNEED_zeroes_pages(void) { size_t size = PAGE; - void * addr = mmap(NULL, size, PROT_READ|PROT_WRITE, - MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + void *addr = mmap(NULL, size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (addr == MAP_FAILED) { - malloc_write(": Cannot allocate memory for " + malloc_write( + ": Cannot allocate memory for " "MADV_DONTNEED check\n"); if (opt_abort) { abort(); @@ -76,6 +81,7 @@ static int madvise_MADV_DONTNEED_zeroes_pages() } memset(addr, 'A', size); + int works; if (madvise(addr, size, MADV_DONTNEED) == 0) { works = memchr(addr, 'A', size) == NULL; } else { @@ -87,7 +93,8 @@ static int madvise_MADV_DONTNEED_zeroes_pages() } if (munmap(addr, size) != 0) { - malloc_write(": Cannot deallocate memory for " + malloc_write( + ": Cannot deallocate memory for " "MADV_DONTNEED check\n"); if (opt_abort) { abort(); @@ -98,6 +105,26 @@ static int madvise_MADV_DONTNEED_zeroes_pages() } #endif +#ifdef JEMALLOC_PAGEID +static int +os_page_id(void *addr, size_t size, const char *name) { +# ifdef JEMALLOC_HAVE_PRCTL + /* + * While parsing `/proc//maps` file, the block could appear as + * 7f4836000000-7f4836800000 rw-p 00000000 00:00 0 [anon:jemalloc_pg_overcommit]` + */ + int n; + assert(addr != NULL); + n = prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, (uintptr_t)addr, size, + (uintptr_t)name); + assert(n == 0 || (n == -1 && get_errno() == EINVAL)); + return n; +# else + return 0; +# endif +} +#endif + /******************************************************************************/ /* * Function prototypes for static functions that are referenced prior to @@ -132,7 +159,8 @@ os_pages_map(void *addr, size_t size, size_t alignment, bool *commit) { * of existing mappings, and we only want to create new mappings. */ { -#ifdef __NetBSD__ + int flags = mmap_flags; +# ifdef __NetBSD__ /* * On NetBSD PAGE for a platform is defined to the * maximum page size of all machine architectures @@ -141,12 +169,12 @@ os_pages_map(void *addr, size_t size, size_t alignment, bool *commit) { */ if (alignment > os_page || PAGE > os_page) { unsigned int a = ilog2(MAX(alignment, PAGE)); - mmap_flags |= MAP_ALIGNED(a); + flags |= MAP_ALIGNED(a); } -#endif +# endif int prot = *commit ? PAGES_PROT_COMMIT : PAGES_PROT_DECOMMIT; - ret = mmap(addr, size, prot, mmap_flags, PAGES_FD_TAG, 0); + ret = mmap(addr, size, prot, flags, PAGES_FD_TAG, 0); } assert(ret != NULL); @@ -160,15 +188,21 @@ os_pages_map(void *addr, size_t size, size_t alignment, bool *commit) { ret = NULL; } #endif - assert(ret == NULL || (addr == NULL && ret != addr) || (addr != NULL && - ret == addr)); + assert(ret == NULL || (addr == NULL && ret != addr) + || (addr != NULL && ret == addr)); +#ifdef JEMALLOC_PAGEID + if (ret != NULL) { + os_page_id(ret, size, + os_overcommits ? "jemalloc_pg_overcommit" : "jemalloc_pg"); + } +#endif return ret; } static void * -os_pages_trim(void *addr, size_t alloc_size, size_t leadsize, size_t size, - bool *commit) { - void *ret = (void *)((uintptr_t)addr + leadsize); +os_pages_trim( + void *addr, size_t alloc_size, size_t leadsize, size_t size, bool *commit) { + void *ret = (void *)((byte_t *)addr + leadsize); assert(alloc_size >= leadsize + size); #ifdef _WIN32 @@ -188,7 +222,7 @@ os_pages_trim(void *addr, size_t alloc_size, size_t leadsize, size_t size, os_pages_unmap(addr, leadsize); } if (trailsize != 0) { - os_pages_unmap((void *)((uintptr_t)ret + size), trailsize); + os_pages_unmap((void *)((byte_t *)ret + size), trailsize); } return ret; #endif @@ -208,13 +242,15 @@ os_pages_unmap(void *addr, size_t size) { char buf[BUFERROR_BUF]; buferror(get_errno(), buf, sizeof(buf)); - malloc_printf(": Error in " + malloc_printf( + ": Error in " #ifdef _WIN32 "VirtualFree" #else "munmap" #endif - "(): %s\n", buf); + "(): %s\n", + buf); if (opt_abort) { abort(); } @@ -321,13 +357,14 @@ os_pages_commit(void *addr, size_t size, bool commit) { assert(PAGE_CEILING(size) == size); #ifdef _WIN32 - return (commit ? (addr != VirtualAlloc(addr, size, MEM_COMMIT, - PAGE_READWRITE)) : (!VirtualFree(addr, size, MEM_DECOMMIT))); + return (commit + ? (addr != VirtualAlloc(addr, size, MEM_COMMIT, PAGE_READWRITE)) + : (!VirtualFree(addr, size, MEM_DECOMMIT))); #else { - int prot = commit ? PAGES_PROT_COMMIT : PAGES_PROT_DECOMMIT; - void *result = mmap(addr, size, prot, mmap_flags | MAP_FIXED, - PAGES_FD_TAG, 0); + int prot = commit ? PAGES_PROT_COMMIT : PAGES_PROT_DECOMMIT; + void *result = mmap( + addr, size, prot, mmap_flags | MAP_FIXED, PAGES_FD_TAG, 0); if (result == MAP_FAILED) { return true; } @@ -366,8 +403,8 @@ pages_decommit(void *addr, size_t size) { void pages_mark_guards(void *head, void *tail) { assert(head != NULL || tail != NULL); - assert(head == NULL || tail == NULL || - (uintptr_t)head < (uintptr_t)tail); + assert( + head == NULL || tail == NULL || (uintptr_t)head < (uintptr_t)tail); #ifdef JEMALLOC_HAVE_MPROTECT if (head != NULL) { mprotect(head, PAGE, PROT_NONE); @@ -389,13 +426,12 @@ pages_mark_guards(void *head, void *tail) { void pages_unmark_guards(void *head, void *tail) { assert(head != NULL || tail != NULL); - assert(head == NULL || tail == NULL || - (uintptr_t)head < (uintptr_t)tail); + assert( + head == NULL || tail == NULL || (uintptr_t)head < (uintptr_t)tail); #ifdef JEMALLOC_HAVE_MPROTECT - bool head_and_tail = (head != NULL) && (tail != NULL); - size_t range = head_and_tail ? - (uintptr_t)tail - (uintptr_t)head + PAGE : - SIZE_T_MAX; + bool head_and_tail = (head != NULL) && (tail != NULL); + size_t range = head_and_tail ? (uintptr_t)tail - (uintptr_t)head + PAGE + : SIZE_T_MAX; /* * The amount of work that the kernel does in mprotect depends on the * range argument. SC_LARGE_MINCLASS is an arbitrary threshold chosen @@ -444,17 +480,18 @@ pages_purge_lazy(void *addr, size_t size) { return false; #elif defined(JEMALLOC_PURGE_MADVISE_FREE) return (madvise(addr, size, -# ifdef MADV_FREE - MADV_FREE -# else - JEMALLOC_MADV_FREE -# endif - ) != 0); -#elif defined(JEMALLOC_PURGE_MADVISE_DONTNEED) && \ - !defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS) +# ifdef MADV_FREE + MADV_FREE +# else + JEMALLOC_MADV_FREE +# endif + ) + != 0); +#elif defined(JEMALLOC_PURGE_MADVISE_DONTNEED) \ + && !defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS) return (madvise(addr, size, MADV_DONTNEED) != 0); -#elif defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED) && \ - !defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED_ZEROS) +#elif defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED) \ + && !defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED_ZEROS) return (posix_madvise(addr, size, POSIX_MADV_DONTNEED) != 0); #else not_reached(); @@ -470,14 +507,14 @@ pages_purge_forced(void *addr, size_t size) { return true; } -#if defined(JEMALLOC_PURGE_MADVISE_DONTNEED) && \ - defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS) - return (unlikely(madvise_dont_need_zeros_is_faulty) || - madvise(addr, size, MADV_DONTNEED) != 0); -#elif defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED) && \ - defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED_ZEROS) - return (unlikely(madvise_dont_need_zeros_is_faulty) || - posix_madvise(addr, size, POSIX_MADV_DONTNEED) != 0); +#if defined(JEMALLOC_PURGE_MADVISE_DONTNEED) \ + && defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS) + return (unlikely(madvise_dont_need_zeros_is_faulty) + || madvise(addr, size, MADV_DONTNEED) != 0); +#elif defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED) \ + && defined(JEMALLOC_PURGE_POSIX_MADVISE_DONTNEED_ZEROS) + return (unlikely(madvise_dont_need_zeros_is_faulty) + || posix_madvise(addr, size, POSIX_MADV_DONTNEED) != 0); #elif defined(JEMALLOC_MAPS_COALESCE) /* Try to overlay a new demand-zeroed mapping. */ return pages_commit(addr, size); @@ -538,6 +575,30 @@ pages_nohuge_unaligned(void *addr, size_t size) { return pages_nohuge_impl(addr, size, false); } +bool +pages_collapse(void *addr, size_t size) { + assert(PAGE_ADDR2BASE(addr) == addr); + assert(PAGE_CEILING(size) == size); + /* + * There is one more MADV_COLLAPSE precondition that is not easy to + * express with assert statement. In order to madvise(addr, size, + * MADV_COLLAPSE) call to be successful, at least one page in the range + * must currently be backed by physical memory. In particularly, this + * means we can't call pages_collapse on freshly mapped memory region. + * See madvise(2) man page for more details. + */ +#if defined(JEMALLOC_HAVE_MADVISE_COLLAPSE) \ + && (defined(MADV_COLLAPSE) || defined(JEMALLOC_MADV_COLLAPSE)) +# if defined(MADV_COLLAPSE) + return (madvise(addr, size, MADV_COLLAPSE) != 0); +# elif defined(JEMALLOC_MADV_COLLAPSE) + return (madvise(addr, size, JEMALLOC_MADV_COLLAPSE) != 0); +# endif +#else + return true; +#endif +} + bool pages_dontdump(void *addr, size_t size) { assert(PAGE_ADDR2BASE(addr) == addr); @@ -564,6 +625,83 @@ pages_dodump(void *addr, size_t size) { #endif } +#ifdef JEMALLOC_HAVE_PROCESS_MADVISE +# include +# include + +# ifndef PIDFD_SELF +# define PIDFD_SELF -10000 +# endif + +static atomic_b_t process_madvise_gate = ATOMIC_INIT(true); + +static bool +init_process_madvise(void) { + if (opt_process_madvise_max_batch == 0) { + return false; + } + + if (opt_process_madvise_max_batch > PROCESS_MADVISE_MAX_BATCH_LIMIT) { + opt_process_madvise_max_batch = PROCESS_MADVISE_MAX_BATCH_LIMIT; + } + + return false; +} + +# ifdef SYS_process_madvise +# define JE_SYS_PROCESS_MADVISE_NR SYS_process_madvise +# else +# define JE_SYS_PROCESS_MADVISE_NR \ + EXPERIMENTAL_SYS_PROCESS_MADVISE_NR +# endif + +static bool +pages_purge_process_madvise_impl( + void *vec, size_t vec_len, size_t total_bytes) { + if (!atomic_load_b(&process_madvise_gate, ATOMIC_RELAXED)) { + return true; + } + + /* + * TODO: remove this save/restore of errno after supporting errno + * preservation for free() call properly. + */ + int saved_errno = get_errno(); + size_t purged_bytes = (size_t)syscall(JE_SYS_PROCESS_MADVISE_NR, + PIDFD_SELF, (struct iovec *)vec, vec_len, MADV_DONTNEED, 0); + if (purged_bytes == (size_t)-1) { + if (errno == EPERM || errno == EINVAL || errno == ENOSYS + || errno == EBADF) { + /* Process madvise not supported the way we need it. */ + atomic_store_b( + &process_madvise_gate, false, ATOMIC_RELAXED); + } + set_errno(saved_errno); + } + + return purged_bytes != total_bytes; +} + +#else + +static bool +init_process_madvise(void) { + return false; +} + +static bool +pages_purge_process_madvise_impl( + void *vec, size_t vec_len, size_t total_bytes) { + not_reached(); + return true; +} + +#endif + +bool +pages_purge_process_madvise(void *vec, size_t vec_len, size_t total_bytes) { + return pages_purge_process_madvise_impl(vec, vec_len, total_bytes); +} static size_t os_page_detect(void) { @@ -580,7 +718,7 @@ os_page_detect(void) { #else long result = sysconf(_SC_PAGESIZE); if (result == -1) { - return LG_PAGE; + return PAGE; } return (size_t)result; #endif @@ -589,11 +727,11 @@ os_page_detect(void) { #ifdef JEMALLOC_SYSCTL_VM_OVERCOMMIT static bool os_overcommits_sysctl(void) { - int vm_overcommit; + int vm_overcommit; size_t sz; sz = sizeof(vm_overcommit); -#if defined(__FreeBSD__) && defined(VM_OVERCOMMIT) +# if defined(__FreeBSD__) && defined(VM_OVERCOMMIT) int mib[2]; mib[0] = CTL_VM; @@ -601,69 +739,38 @@ os_overcommits_sysctl(void) { if (sysctl(mib, 2, &vm_overcommit, &sz, NULL, 0) != 0) { return false; /* Error. */ } -#else +# else if (sysctlbyname("vm.overcommit", &vm_overcommit, &sz, NULL, 0) != 0) { return false; /* Error. */ } -#endif +# endif return ((vm_overcommit & 0x3) == 0); } #endif #ifdef JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY -/* - * Use syscall(2) rather than {open,read,close}(2) when possible to avoid - * reentry during bootstrapping if another library has interposed system call - * wrappers. - */ static bool os_overcommits_proc(void) { - int fd; + int fd; char buf[1]; -#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_open) - #if defined(O_CLOEXEC) - fd = (int)syscall(SYS_open, "/proc/sys/vm/overcommit_memory", O_RDONLY | - O_CLOEXEC); - #else - fd = (int)syscall(SYS_open, "/proc/sys/vm/overcommit_memory", O_RDONLY); - if (fd != -1) { - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); - } - #endif -#elif defined(JEMALLOC_USE_SYSCALL) && defined(SYS_openat) - #if defined(O_CLOEXEC) - fd = (int)syscall(SYS_openat, - AT_FDCWD, "/proc/sys/vm/overcommit_memory", O_RDONLY | O_CLOEXEC); - #else - fd = (int)syscall(SYS_openat, - AT_FDCWD, "/proc/sys/vm/overcommit_memory", O_RDONLY); - if (fd != -1) { - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); - } - #endif -#else - #if defined(O_CLOEXEC) - fd = open("/proc/sys/vm/overcommit_memory", O_RDONLY | O_CLOEXEC); - #else - fd = open("/proc/sys/vm/overcommit_memory", O_RDONLY); - if (fd != -1) { - fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); - } - #endif -#endif +# if defined(O_CLOEXEC) + fd = malloc_open( + "/proc/sys/vm/overcommit_memory", O_RDONLY | O_CLOEXEC); +# else + fd = malloc_open("/proc/sys/vm/overcommit_memory", O_RDONLY); + if (fd != -1) { + fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); + } +# endif if (fd == -1) { return false; /* Error. */ } ssize_t nread = malloc_read_fd(fd, &buf, sizeof(buf)); -#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_close) - syscall(SYS_close, fd); -#else - close(fd); -#endif + malloc_close(fd); if (nread < 1) { return false; /* Error. */ @@ -678,21 +785,31 @@ os_overcommits_proc(void) { } #endif +static bool +pages_should_skip_set_thp_state() { + if (opt_thp == thp_mode_do_nothing + || (opt_thp == thp_mode_always + && init_system_thp_mode == system_thp_mode_always) + || (opt_thp == thp_mode_never + && init_system_thp_mode == system_thp_mode_never)) { + return true; + } + return false; +} void -pages_set_thp_state (void *ptr, size_t size) { - if (opt_thp == thp_mode_default || opt_thp == init_system_thp_mode) { +pages_set_thp_state(void *ptr, size_t size) { + if (pages_should_skip_set_thp_state()) { return; } - assert(opt_thp != thp_mode_not_supported && - init_system_thp_mode != thp_mode_not_supported); + assert(opt_thp != thp_mode_not_supported + && init_system_thp_mode != system_thp_mode_not_supported); if (opt_thp == thp_mode_always - && init_system_thp_mode != thp_mode_never) { - assert(init_system_thp_mode == thp_mode_default); + && init_system_thp_mode == system_thp_mode_madvise) { pages_huge_unaligned(ptr, size); } else if (opt_thp == thp_mode_never) { - assert(init_system_thp_mode == thp_mode_default || - init_system_thp_mode == thp_mode_always); + assert(init_system_thp_mode == system_thp_mode_madvise + || init_system_thp_mode == system_thp_mode_always); pages_nohuge_unaligned(ptr, size); } } @@ -710,48 +827,47 @@ init_thp_state(void) { static const char sys_state_madvise[] = "always [madvise] never\n"; static const char sys_state_always[] = "[always] madvise never\n"; static const char sys_state_never[] = "always madvise [never]\n"; - char buf[sizeof(sys_state_madvise)]; + char buf[sizeof(sys_state_madvise)]; -#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_open) - int fd = (int)syscall(SYS_open, + int fd = malloc_open( "/sys/kernel/mm/transparent_hugepage/enabled", O_RDONLY); -#elif defined(JEMALLOC_USE_SYSCALL) && defined(SYS_openat) - int fd = (int)syscall(SYS_openat, - AT_FDCWD, "/sys/kernel/mm/transparent_hugepage/enabled", O_RDONLY); -#else - int fd = open("/sys/kernel/mm/transparent_hugepage/enabled", O_RDONLY); -#endif if (fd == -1) { goto label_error; } ssize_t nread = malloc_read_fd(fd, &buf, sizeof(buf)); -#if defined(JEMALLOC_USE_SYSCALL) && defined(SYS_close) - syscall(SYS_close, fd); -#else - close(fd); -#endif - - if (nread < 0) { + malloc_close(fd); + if (nread < 0) { goto label_error; - } + } if (strncmp(buf, sys_state_madvise, (size_t)nread) == 0) { - init_system_thp_mode = thp_mode_default; + init_system_thp_mode = system_thp_mode_madvise; } else if (strncmp(buf, sys_state_always, (size_t)nread) == 0) { - init_system_thp_mode = thp_mode_always; + init_system_thp_mode = system_thp_mode_always; } else if (strncmp(buf, sys_state_never, (size_t)nread) == 0) { - init_system_thp_mode = thp_mode_never; + init_system_thp_mode = system_thp_mode_never; } else { goto label_error; } + if (opt_hpa_opts.hugify_style == hpa_hugify_style_auto) { + if (init_system_thp_mode == system_thp_mode_madvise) { + opt_hpa_opts.hugify_style = hpa_hugify_style_lazy; + } else { + opt_hpa_opts.hugify_style = hpa_hugify_style_none; + } + } return; #elif defined(JEMALLOC_HAVE_MEMCNTL) - init_system_thp_mode = thp_mode_default; + init_system_thp_mode = system_thp_mode_madvise; + if (opt_hpa_opts.hugify_style == hpa_hugify_style_auto) { + opt_hpa_opts.hugify_style = hpa_hugify_style_eager; + } return; #endif label_error: - opt_thp = init_system_thp_mode = thp_mode_not_supported; + opt_thp = thp_mode_not_supported; + init_system_thp_mode = system_thp_mode_not_supported; } bool @@ -767,10 +883,13 @@ pages_boot(void) { #ifdef JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS if (!opt_trust_madvise) { - madvise_dont_need_zeros_is_faulty = !madvise_MADV_DONTNEED_zeroes_pages(); + madvise_dont_need_zeros_is_faulty = + !madvise_MADV_DONTNEED_zeroes_pages(); if (madvise_dont_need_zeros_is_faulty) { - malloc_write(": MADV_DONTNEED does not work (memset will be used instead)\n"); - malloc_write(": (This is the expected behaviour if you are running under QEMU)\n"); + malloc_write( + ": MADV_DONTNEED does not work (memset will be used instead)\n"); + malloc_write( + ": (This is the expected behaviour if you are running under QEMU)\n"); } } else { /* In case opt_trust_madvise is disable, @@ -787,11 +906,11 @@ pages_boot(void) { os_overcommits = os_overcommits_sysctl(); #elif defined(JEMALLOC_PROC_SYS_VM_OVERCOMMIT_MEMORY) os_overcommits = os_overcommits_proc(); -# ifdef MAP_NORESERVE +# ifdef MAP_NORESERVE if (os_overcommits) { mmap_flags |= MAP_NORESERVE; } -# endif +# endif #elif defined(__NetBSD__) os_overcommits = true; #else @@ -807,8 +926,9 @@ pages_boot(void) { #else /* Detect lazy purge runtime support. */ if (pages_can_purge_lazy) { - bool committed = false; - void *madv_free_page = os_pages_map(NULL, PAGE, PAGE, &committed); + bool committed = false; + void *madv_free_page = os_pages_map( + NULL, PAGE, PAGE, &committed); if (madv_free_page == NULL) { return true; } @@ -819,6 +939,12 @@ pages_boot(void) { os_pages_unmap(madv_free_page, PAGE); } #endif + if (init_process_madvise()) { + if (opt_abort) { + abort(); + } + return true; + } return false; } diff --git a/dep/jemalloc/src/pai.c b/dep/jemalloc/src/pai.c deleted file mode 100644 index 45c87729278d3..0000000000000 --- a/dep/jemalloc/src/pai.c +++ /dev/null @@ -1,31 +0,0 @@ -#include "jemalloc/internal/jemalloc_preamble.h" -#include "jemalloc/internal/jemalloc_internal_includes.h" - -size_t -pai_alloc_batch_default(tsdn_t *tsdn, pai_t *self, size_t size, size_t nallocs, - edata_list_active_t *results, bool *deferred_work_generated) { - for (size_t i = 0; i < nallocs; i++) { - bool deferred_by_alloc = false; - edata_t *edata = pai_alloc(tsdn, self, size, PAGE, - /* zero */ false, /* guarded */ false, - /* frequent_reuse */ false, &deferred_by_alloc); - *deferred_work_generated |= deferred_by_alloc; - if (edata == NULL) { - return i; - } - edata_list_active_append(results, edata); - } - return nallocs; -} - -void -pai_dalloc_batch_default(tsdn_t *tsdn, pai_t *self, - edata_list_active_t *list, bool *deferred_work_generated) { - edata_t *edata; - while ((edata = edata_list_active_first(list)) != NULL) { - bool deferred_by_dalloc = false; - edata_list_active_remove(list, edata); - pai_dalloc(tsdn, self, edata, &deferred_by_dalloc); - *deferred_work_generated |= deferred_by_dalloc; - } -} diff --git a/dep/jemalloc/src/peak_event.c b/dep/jemalloc/src/peak_event.c index 4093fbcc691ee..39f90b70be27e 100644 --- a/dep/jemalloc/src/peak_event.c +++ b/dep/jemalloc/src/peak_event.c @@ -3,43 +3,24 @@ #include "jemalloc/internal/peak_event.h" -#include "jemalloc/internal/activity_callback.h" #include "jemalloc/internal/peak.h" - -/* - * Update every 64K by default. We're not exposing this as a configuration - * option for now; we don't want to bind ourselves too tightly to any particular - * performance requirements for small values, or guarantee that we'll even be - * able to provide fine-grained accuracy. - */ -#define PEAK_EVENT_WAIT (64 * 1024) +#include "jemalloc/internal/thread_event_registry.h" /* Update the peak with current tsd state. */ void peak_event_update(tsd_t *tsd) { uint64_t alloc = tsd_thread_allocated_get(tsd); uint64_t dalloc = tsd_thread_deallocated_get(tsd); - peak_t *peak = tsd_peakp_get(tsd); + peak_t *peak = tsd_peakp_get(tsd); peak_update(peak, alloc, dalloc); } -static void -peak_event_activity_callback(tsd_t *tsd) { - activity_callback_thunk_t *thunk = tsd_activity_callback_thunkp_get( - tsd); - uint64_t alloc = tsd_thread_allocated_get(tsd); - uint64_t dalloc = tsd_thread_deallocated_get(tsd); - if (thunk->callback != NULL) { - thunk->callback(thunk->uctx, alloc, dalloc); - } -} - /* Set current state to zero. */ void peak_event_zero(tsd_t *tsd) { uint64_t alloc = tsd_thread_allocated_get(tsd); uint64_t dalloc = tsd_thread_deallocated_get(tsd); - peak_t *peak = tsd_peakp_get(tsd); + peak_t *peak = tsd_peakp_get(tsd); peak_set_zero(peak, alloc, dalloc); } @@ -49,34 +30,30 @@ peak_event_max(tsd_t *tsd) { return peak_max(peak); } -uint64_t -peak_alloc_new_event_wait(tsd_t *tsd) { +static uint64_t +peak_event_new_event_wait(tsd_t *tsd) { return PEAK_EVENT_WAIT; } -uint64_t -peak_alloc_postponed_event_wait(tsd_t *tsd) { +static uint64_t +peak_event_postponed_event_wait(tsd_t *tsd) { return TE_MIN_START_WAIT; } -void -peak_alloc_event_handler(tsd_t *tsd, uint64_t elapsed) { +static void +peak_event_handler(tsd_t *tsd) { peak_event_update(tsd); - peak_event_activity_callback(tsd); -} - -uint64_t -peak_dalloc_new_event_wait(tsd_t *tsd) { - return PEAK_EVENT_WAIT; } -uint64_t -peak_dalloc_postponed_event_wait(tsd_t *tsd) { - return TE_MIN_START_WAIT; +static te_enabled_t +peak_event_enabled(void) { + return config_stats ? te_enabled_yes : te_enabled_no; } -void -peak_dalloc_event_handler(tsd_t *tsd, uint64_t elapsed) { - peak_event_update(tsd); - peak_event_activity_callback(tsd); -} +/* Handles alloc and dalloc */ +te_base_cb_t peak_te_handler = { + .enabled = &peak_event_enabled, + .new_event_wait = &peak_event_new_event_wait, + .postponed_event_wait = &peak_event_postponed_event_wait, + .event_handler = &peak_event_handler, +}; diff --git a/dep/jemalloc/src/prof.c b/dep/jemalloc/src/prof.c index 7a6d5d569a484..a833fed50533b 100644 --- a/dep/jemalloc/src/prof.c +++ b/dep/jemalloc/src/prof.c @@ -12,6 +12,7 @@ #include "jemalloc/internal/prof_sys.h" #include "jemalloc/internal/prof_hook.h" #include "jemalloc/internal/thread_event.h" +#include "jemalloc/internal/thread_event_registry.h" /* * This file implements the profiling "APIs" needed by other parts of jemalloc, @@ -23,19 +24,21 @@ /* Data. */ -bool opt_prof = false; -bool opt_prof_active = true; -bool opt_prof_thread_active_init = true; -size_t opt_lg_prof_sample = LG_PROF_SAMPLE_DEFAULT; -ssize_t opt_lg_prof_interval = LG_PROF_INTERVAL_DEFAULT; -bool opt_prof_gdump = false; -bool opt_prof_final = false; -bool opt_prof_leak = false; -bool opt_prof_leak_error = false; -bool opt_prof_accum = false; -char opt_prof_prefix[PROF_DUMP_FILENAME_LEN]; -bool opt_prof_sys_thread_name = false; -bool opt_prof_unbias = true; +bool opt_prof = false; +bool opt_prof_active = true; +bool opt_prof_thread_active_init = true; +unsigned opt_prof_bt_max = PROF_BT_MAX_DEFAULT; +size_t opt_lg_prof_sample = LG_PROF_SAMPLE_DEFAULT; +ssize_t opt_lg_prof_interval = LG_PROF_INTERVAL_DEFAULT; +bool opt_prof_gdump = false; +bool opt_prof_final = false; +bool opt_prof_leak = false; +bool opt_prof_leak_error = false; +bool opt_prof_accum = false; +bool opt_prof_pid_namespace = false; +char opt_prof_prefix[PROF_DUMP_FILENAME_LEN]; +bool opt_prof_sys_thread_name = false; +bool opt_prof_unbias = true; /* Accessed via prof_sample_event_handler(). */ static counter_accum_t prof_idump_accumulated; @@ -44,38 +47,44 @@ static counter_accum_t prof_idump_accumulated; * Initialized as opt_prof_active, and accessed via * prof_active_[gs]et{_unlocked,}(). */ -bool prof_active_state; +bool prof_active_state; static malloc_mutex_t prof_active_mtx; /* * Initialized as opt_prof_thread_active_init, and accessed via * prof_thread_active_init_[gs]et(). */ -static bool prof_thread_active_init; +static bool prof_thread_active_init; static malloc_mutex_t prof_thread_active_init_mtx; /* * Initialized as opt_prof_gdump, and accessed via * prof_gdump_[gs]et{_unlocked,}(). */ -bool prof_gdump_val; +bool prof_gdump_val; static malloc_mutex_t prof_gdump_mtx; uint64_t prof_interval = 0; size_t lg_prof_sample; -static uint64_t next_thr_uid; +static uint64_t next_thr_uid; static malloc_mutex_t next_thr_uid_mtx; /* Do not dump any profiles until bootstrapping is complete. */ bool prof_booted = false; /* Logically a prof_backtrace_hook_t. */ -atomic_p_t prof_backtrace_hook; +static atomic_p_t prof_backtrace_hook; /* Logically a prof_dump_hook_t. */ -atomic_p_t prof_dump_hook; +static atomic_p_t prof_dump_hook; + +/* Logically a prof_sample_hook_t. */ +static atomic_p_t prof_sample_hook; + +/* Logically a prof_sample_free_hook_t. */ +static atomic_p_t prof_sample_free_hook; /******************************************************************************/ @@ -84,11 +93,19 @@ prof_alloc_rollback(tsd_t *tsd, prof_tctx_t *tctx) { cassert(config_prof); if (tsd_reentrancy_level_get(tsd) > 0) { - assert((uintptr_t)tctx == (uintptr_t)1U); + assert(tctx == PROF_TCTX_SENTINEL); return; } - if ((uintptr_t)tctx > (uintptr_t)1U) { + if (prof_tctx_is_valid(tctx)) { + /* + * This `assert` really shouldn't be necessary. It's here + * because there's a bug in the clang static analyzer; it + * somehow does not realize that by `prof_tctx_is_valid(tctx)` + * being true that we've already ensured that `tctx` is not + * `NULL`. + */ + assert(tctx != NULL); malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock); tctx->prepared = false; prof_tctx_try_destroy(tsd, tctx); @@ -96,16 +113,16 @@ prof_alloc_rollback(tsd_t *tsd, prof_tctx_t *tctx) { } void -prof_malloc_sample_object(tsd_t *tsd, const void *ptr, size_t size, - size_t usize, prof_tctx_t *tctx) { +prof_malloc_sample_object( + tsd_t *tsd, const void *ptr, size_t size, size_t usize, prof_tctx_t *tctx) { cassert(config_prof); if (opt_prof_sys_thread_name) { prof_sys_thread_name_fetch(tsd); } - edata_t *edata = emap_edata_lookup(tsd_tsdn(tsd), &arena_emap_global, - ptr); + edata_t *edata = emap_edata_lookup( + tsd_tsdn(tsd), &arena_emap_global, ptr); prof_info_set(tsd, edata, tctx, size); szind_t szind = sz_size2index(usize); @@ -144,17 +161,37 @@ prof_malloc_sample_object(tsd_t *tsd, const void *ptr, size_t size, if (opt_prof_stats) { prof_stats_inc(tsd, szind, size); } + + /* Sample hook. */ + prof_sample_hook_t prof_sample_hook = prof_sample_hook_get(); + if (prof_sample_hook != NULL) { + prof_bt_t *bt = &tctx->gctx->bt; + pre_reentrancy(tsd, NULL); + prof_sample_hook(ptr, size, bt->vec, bt->len, usize); + post_reentrancy(tsd); + } } void -prof_free_sampled_object(tsd_t *tsd, size_t usize, prof_info_t *prof_info) { +prof_free_sampled_object( + tsd_t *tsd, const void *ptr, size_t usize, prof_info_t *prof_info) { cassert(config_prof); assert(prof_info != NULL); prof_tctx_t *tctx = prof_info->alloc_tctx; - assert((uintptr_t)tctx > (uintptr_t)1U); + assert(prof_tctx_is_valid(tctx)); szind_t szind = sz_size2index(usize); + + /* Unsample hook. */ + prof_sample_free_hook_t prof_sample_free_hook = + prof_sample_free_hook_get(); + if (prof_sample_free_hook != NULL) { + pre_reentrancy(tsd, NULL); + prof_sample_free_hook(ptr, usize); + post_reentrancy(tsd); + } + malloc_mutex_lock(tsd_tsdn(tsd), tctx->tdata->lock); assert(tctx->cnts.curobjs > 0); @@ -242,9 +279,12 @@ prof_sample_new_event_wait(tsd_t *tsd) { * otherwise bytes_until_sample would be 0 if u is exactly 1.0. */ uint64_t r = prng_lg_range_u64(tsd_prng_statep_get(tsd), 53); - double u = (r == 0U) ? 1.0 : (double)r * (1.0/9007199254740992.0L); - return (uint64_t)(log(u) / - log(1.0 - (1.0 / (double)((uint64_t)1U << lg_prof_sample)))) + double u = (r == 0U) + ? 1.0 + : (double)((long double)r * (1.0L / 9007199254740992.0L)); + return (uint64_t)(log(u) + / log( + 1.0 - (1.0 / (double)((uint64_t)1U << lg_prof_sample)))) + (uint64_t)1U; #else not_reached(); @@ -252,31 +292,52 @@ prof_sample_new_event_wait(tsd_t *tsd) { #endif } -uint64_t -prof_sample_postponed_event_wait(tsd_t *tsd) { - /* - * The postponed wait time for prof sample event is computed as if we - * want a new wait time (i.e. as if the event were triggered). If we - * instead postpone to the immediate next allocation, like how we're - * handling the other events, then we can have sampling bias, if e.g. - * the allocation immediately following a reentrancy always comes from - * the same stack trace. - */ - return prof_sample_new_event_wait(tsd); -} - void -prof_sample_event_handler(tsd_t *tsd, uint64_t elapsed) { +prof_sample_event_handler(tsd_t *tsd) { cassert(config_prof); - assert(elapsed > 0 && elapsed != TE_INVALID_ELAPSED); if (prof_interval == 0 || !prof_active_get_unlocked()) { return; } + uint64_t last_event = thread_allocated_last_event_get(tsd); + uint64_t last_sample_event = tsd_prof_sample_last_event_get(tsd); + tsd_prof_sample_last_event_set(tsd, last_event); + uint64_t elapsed = last_event - last_sample_event; + assert(elapsed > 0 && elapsed != TE_INVALID_ELAPSED); if (counter_accum(tsd_tsdn(tsd), &prof_idump_accumulated, elapsed)) { prof_idump(tsd_tsdn(tsd)); } } +uint64_t +tsd_prof_sample_event_wait_get(tsd_t *tsd) { +#ifdef JEMALLOC_PROF + return tsd_te_datap_get_unsafe(tsd)->alloc_wait[te_alloc_prof_sample]; +#else + not_reached(); + return TE_MAX_START_WAIT; +#endif +} + +static te_enabled_t +prof_sample_enabled(void) { + return config_prof && opt_prof ? te_enabled_yes : te_enabled_no; +} + +te_base_cb_t prof_sample_te_handler = { + .enabled = &prof_sample_enabled, + .new_event_wait = &prof_sample_new_event_wait, + /* + * The postponed wait time for prof sample event is computed as if we + * want a new wait time (i.e. as if the event were triggered). If we + * instead postpone to the immediate next allocation, like how we're + * handling the other events, then we can have sampling bias, if e.g. + * the allocation immediately following a reentrancy always comes from + * the same stack trace. + */ + .postponed_event_wait = &prof_sample_new_event_wait, + .event_handler = &prof_sample_event_handler, +}; + static void prof_fdump(void) { tsd_t *tsd; @@ -302,7 +363,7 @@ prof_idump_accum_init(void) { void prof_idump(tsdn_t *tsdn) { - tsd_t *tsd; + tsd_t *tsd; prof_tdata_t *tdata; cassert(config_prof); @@ -341,7 +402,7 @@ prof_mdump(tsd_t *tsd, const char *filename) { void prof_gdump(tsdn_t *tsdn) { - tsd_t *tsd; + tsd_t *tsd; prof_tdata_t *tdata; cassert(config_prof); @@ -388,13 +449,16 @@ prof_tdata_t * prof_tdata_reinit(tsd_t *tsd, prof_tdata_t *tdata) { uint64_t thr_uid = tdata->thr_uid; uint64_t thr_discrim = tdata->thr_discrim + 1; - char *thread_name = (tdata->thread_name != NULL) ? - prof_thread_name_alloc(tsd, tdata->thread_name) : NULL; - bool active = tdata->active; + bool active = tdata->active; + /* Keep a local copy of the thread name, before detaching. */ + prof_thread_name_assert(tdata); + char thread_name[PROF_THREAD_NAME_MAX_LEN]; + strncpy(thread_name, tdata->thread_name, PROF_THREAD_NAME_MAX_LEN); prof_tdata_detach(tsd, tdata); - return prof_tdata_init_impl(tsd, thr_uid, thr_discrim, thread_name, - active); + + return prof_tdata_init_impl( + tsd, thr_uid, thr_discrim, thread_name, active); } void @@ -437,15 +501,15 @@ prof_active_set(tsdn_t *tsdn, bool active) { const char * prof_thread_name_get(tsd_t *tsd) { - assert(tsd_reentrancy_level_get(tsd) == 0); - - prof_tdata_t *tdata; + static const char *prof_thread_name_dummy = ""; - tdata = prof_tdata_get(tsd, true); + assert(tsd_reentrancy_level_get(tsd) == 0); + prof_tdata_t *tdata = prof_tdata_get(tsd, true); if (tdata == NULL) { - return ""; + return prof_thread_name_dummy; } - return (tdata->thread_name != NULL ? tdata->thread_name : ""); + + return tdata->thread_name; } int @@ -532,9 +596,9 @@ prof_backtrace_hook_set(prof_backtrace_hook_t hook) { } prof_backtrace_hook_t -prof_backtrace_hook_get() { - return (prof_backtrace_hook_t)atomic_load_p(&prof_backtrace_hook, - ATOMIC_ACQUIRE); +prof_backtrace_hook_get(void) { + return (prof_backtrace_hook_t)atomic_load_p( + &prof_backtrace_hook, ATOMIC_ACQUIRE); } void @@ -543,17 +607,38 @@ prof_dump_hook_set(prof_dump_hook_t hook) { } prof_dump_hook_t -prof_dump_hook_get() { - return (prof_dump_hook_t)atomic_load_p(&prof_dump_hook, - ATOMIC_ACQUIRE); +prof_dump_hook_get(void) { + return (prof_dump_hook_t)atomic_load_p(&prof_dump_hook, ATOMIC_ACQUIRE); +} + +void +prof_sample_hook_set(prof_sample_hook_t hook) { + atomic_store_p(&prof_sample_hook, hook, ATOMIC_RELEASE); +} + +prof_sample_hook_t +prof_sample_hook_get(void) { + return (prof_sample_hook_t)atomic_load_p( + &prof_sample_hook, ATOMIC_ACQUIRE); +} + +void +prof_sample_free_hook_set(prof_sample_free_hook_t hook) { + atomic_store_p(&prof_sample_free_hook, hook, ATOMIC_RELEASE); +} + +prof_sample_free_hook_t +prof_sample_free_hook_get(void) { + return (prof_sample_free_hook_t)atomic_load_p( + &prof_sample_free_hook, ATOMIC_ACQUIRE); } void prof_boot0(void) { cassert(config_prof); - memcpy(opt_prof_prefix, PROF_PREFIX_DEFAULT, - sizeof(PROF_PREFIX_DEFAULT)); + memcpy( + opt_prof_prefix, PROF_PREFIX_DEFAULT, sizeof(PROF_PREFIX_DEFAULT)); } void @@ -577,8 +662,8 @@ prof_boot1(void) { opt_prof_gdump = false; } else if (opt_prof) { if (opt_lg_prof_interval >= 0) { - prof_interval = (((uint64_t)1U) << - opt_lg_prof_interval); + prof_interval = (((uint64_t)1U) + << opt_lg_prof_interval); } } } @@ -592,41 +677,40 @@ prof_boot2(tsd_t *tsd, base_t *base) { * stats when opt_prof is false. */ if (malloc_mutex_init(&prof_active_mtx, "prof_active", - WITNESS_RANK_PROF_ACTIVE, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_ACTIVE, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&prof_gdump_mtx, "prof_gdump", - WITNESS_RANK_PROF_GDUMP, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_GDUMP, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&prof_thread_active_init_mtx, - "prof_thread_active_init", WITNESS_RANK_PROF_THREAD_ACTIVE_INIT, - malloc_mutex_rank_exclusive)) { + "prof_thread_active_init", WITNESS_RANK_PROF_THREAD_ACTIVE_INIT, + malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&bt2gctx_mtx, "prof_bt2gctx", - WITNESS_RANK_PROF_BT2GCTX, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_BT2GCTX, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&tdatas_mtx, "prof_tdatas", - WITNESS_RANK_PROF_TDATAS, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_TDATAS, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&next_thr_uid_mtx, "prof_next_thr_uid", - WITNESS_RANK_PROF_NEXT_THR_UID, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_NEXT_THR_UID, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&prof_stats_mtx, "prof_stats", - WITNESS_RANK_PROF_STATS, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_STATS, malloc_mutex_rank_exclusive)) { return true; } - if (malloc_mutex_init(&prof_dump_filename_mtx, - "prof_dump_filename", WITNESS_RANK_PROF_DUMP_FILENAME, - malloc_mutex_rank_exclusive)) { + if (malloc_mutex_init(&prof_dump_filename_mtx, "prof_dump_filename", + WITNESS_RANK_PROF_DUMP_FILENAME, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&prof_dump_mtx, "prof_dump", - WITNESS_RANK_PROF_DUMP, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_DUMP, malloc_mutex_rank_exclusive)) { return true; } @@ -646,8 +730,8 @@ prof_boot2(tsd_t *tsd, base_t *base) { return true; } - if (opt_prof_final && opt_prof_prefix[0] != '\0' && - atexit(prof_fdump) != 0) { + if (opt_prof_final && opt_prof_prefix[0] != '\0' + && atexit(prof_fdump) != 0) { malloc_write(": Error in atexit()\n"); if (opt_abort) { abort(); @@ -671,8 +755,8 @@ prof_boot2(tsd_t *tsd, base_t *base) { } for (unsigned i = 0; i < PROF_NCTX_LOCKS; i++) { if (malloc_mutex_init(&gctx_locks[i], "prof_gctx", - WITNESS_RANK_PROF_GCTX, - malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_GCTX, + malloc_mutex_rank_exclusive)) { return true; } } @@ -684,8 +768,8 @@ prof_boot2(tsd_t *tsd, base_t *base) { } for (unsigned i = 0; i < PROF_NTDATA_LOCKS; i++) { if (malloc_mutex_init(&tdata_locks[i], "prof_tdata", - WITNESS_RANK_PROF_TDATA, - malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_TDATA, + malloc_mutex_rank_exclusive)) { return true; } } @@ -736,8 +820,8 @@ prof_postfork_parent(tsdn_t *tsdn) { if (config_prof && opt_prof) { unsigned i; - malloc_mutex_postfork_parent(tsdn, - &prof_thread_active_init_mtx); + malloc_mutex_postfork_parent( + tsdn, &prof_thread_active_init_mtx); malloc_mutex_postfork_parent(tsdn, &next_thr_uid_mtx); malloc_mutex_postfork_parent(tsdn, &prof_stats_mtx); malloc_mutex_postfork_parent(tsdn, &prof_recent_alloc_mtx); diff --git a/dep/jemalloc/src/prof_data.c b/dep/jemalloc/src/prof_data.c index bfa55be1ca559..7aa047ac03849 100644 --- a/dep/jemalloc/src/prof_data.c +++ b/dep/jemalloc/src/prof_data.c @@ -36,7 +36,7 @@ malloc_mutex_t prof_dump_mtx; * and destroying mutexes causes complications for systems that allocate when * creating/destroying mutexes. */ -malloc_mutex_t *gctx_locks; +malloc_mutex_t *gctx_locks; static atomic_u_t cum_gctxs; /* Atomic counter. */ /* @@ -69,43 +69,45 @@ static int prof_tctx_comp(const prof_tctx_t *a, const prof_tctx_t *b) { uint64_t a_thr_uid = a->thr_uid; uint64_t b_thr_uid = b->thr_uid; - int ret = (a_thr_uid > b_thr_uid) - (a_thr_uid < b_thr_uid); + int ret = (a_thr_uid > b_thr_uid) - (a_thr_uid < b_thr_uid); if (ret == 0) { uint64_t a_thr_discrim = a->thr_discrim; uint64_t b_thr_discrim = b->thr_discrim; - ret = (a_thr_discrim > b_thr_discrim) - (a_thr_discrim < - b_thr_discrim); + ret = (a_thr_discrim > b_thr_discrim) + - (a_thr_discrim < b_thr_discrim); if (ret == 0) { uint64_t a_tctx_uid = a->tctx_uid; uint64_t b_tctx_uid = b->tctx_uid; - ret = (a_tctx_uid > b_tctx_uid) - (a_tctx_uid < - b_tctx_uid); + ret = (a_tctx_uid > b_tctx_uid) + - (a_tctx_uid < b_tctx_uid); } } return ret; } -rb_gen(static UNUSED, tctx_tree_, prof_tctx_tree_t, prof_tctx_t, - tctx_link, prof_tctx_comp) +/* NOLINTBEGIN(performance-no-int-to-ptr) */ +rb_gen(static UNUSED, tctx_tree_, prof_tctx_tree_t, prof_tctx_t, tctx_link, + prof_tctx_comp) + /* NOLINTEND(performance-no-int-to-ptr) */ -static int -prof_gctx_comp(const prof_gctx_t *a, const prof_gctx_t *b) { + static int prof_gctx_comp(const prof_gctx_t *a, const prof_gctx_t *b) { unsigned a_len = a->bt.len; unsigned b_len = b->bt.len; unsigned comp_len = (a_len < b_len) ? a_len : b_len; - int ret = memcmp(a->bt.vec, b->bt.vec, comp_len * sizeof(void *)); + int ret = memcmp(a->bt.vec, b->bt.vec, comp_len * sizeof(void *)); if (ret == 0) { ret = (a_len > b_len) - (a_len < b_len); } return ret; } +/* NOLINTBEGIN(performance-no-int-to-ptr) */ rb_gen(static UNUSED, gctx_tree_, prof_gctx_tree_t, prof_gctx_t, dump_link, prof_gctx_comp) + /* NOLINTEND(performance-no-int-to-ptr) */ -static int -prof_tdata_comp(const prof_tdata_t *a, const prof_tdata_t *b) { - int ret; + static int prof_tdata_comp(const prof_tdata_t *a, const prof_tdata_t *b) { + int ret; uint64_t a_uid = a->thr_uid; uint64_t b_uid = b->thr_uid; @@ -119,13 +121,14 @@ prof_tdata_comp(const prof_tdata_t *a, const prof_tdata_t *b) { return ret; } +/* NOLINTBEGIN(performance-no-int-to-ptr) */ rb_gen(static UNUSED, tdata_tree_, prof_tdata_tree_t, prof_tdata_t, tdata_link, prof_tdata_comp) + /* NOLINTEND(performance-no-int-to-ptr) */ -/******************************************************************************/ + /******************************************************************************/ -static malloc_mutex_t * -prof_gctx_mutex_choose(void) { + static malloc_mutex_t *prof_gctx_mutex_choose(void) { unsigned ngctxs = atomic_fetch_add_u(&cum_gctxs, 1, ATOMIC_RELAXED); return &gctx_locks[(ngctxs - 1) % PROF_NCTX_LOCKS]; @@ -139,8 +142,8 @@ prof_tdata_mutex_choose(uint64_t thr_uid) { bool prof_data_init(tsd_t *tsd) { tdata_tree_new(&tdatas); - return ckh_new(tsd, &bt2gctx, PROF_CKH_MINITEMS, - prof_bt_hash, prof_bt_keycomp); + return ckh_new( + tsd, &bt2gctx, PROF_CKH_MINITEMS, prof_bt_hash, prof_bt_keycomp); } static void @@ -189,8 +192,8 @@ prof_gctx_create(tsdn_t *tsdn, prof_bt_t *bt) { */ size_t size = offsetof(prof_gctx_t, vec) + (bt->len * sizeof(void *)); prof_gctx_t *gctx = (prof_gctx_t *)iallocztm(tsdn, size, - sz_size2index(size), false, NULL, true, arena_get(TSDN_NULL, 0, true), - true); + sz_size2index(size), false, NULL, true, + arena_get(TSDN_NULL, 0, true), true); if (gctx == NULL) { return NULL; } @@ -209,8 +212,7 @@ prof_gctx_create(tsdn_t *tsdn, prof_bt_t *bt) { } static void -prof_gctx_try_destroy(tsd_t *tsd, prof_tdata_t *tdata_self, - prof_gctx_t *gctx) { +prof_gctx_try_destroy(tsd_t *tsd, prof_tdata_t *tdata_self, prof_gctx_t *gctx) { cassert(config_prof); /* @@ -261,12 +263,12 @@ static bool prof_lookup_global(tsd_t *tsd, prof_bt_t *bt, prof_tdata_t *tdata, void **p_btkey, prof_gctx_t **p_gctx, bool *p_new_gctx) { union { - prof_gctx_t *p; - void *v; + prof_gctx_t *p; + void *v; } gctx, tgctx; union { - prof_bt_t *p; - void *v; + prof_bt_t *p; + void *v; } btkey; bool new_gctx; @@ -310,8 +312,8 @@ prof_lookup_global(tsd_t *tsd, prof_bt_t *bt, prof_tdata_t *tdata, if (tgctx.v != NULL) { /* Lost race to insert. */ - idalloctm(tsd_tsdn(tsd), tgctx.v, NULL, NULL, true, - true); + idalloctm( + tsd_tsdn(tsd), tgctx.v, NULL, NULL, true, true); } } prof_leave(tsd, tdata); @@ -325,11 +327,11 @@ prof_lookup_global(tsd_t *tsd, prof_bt_t *bt, prof_tdata_t *tdata, prof_tctx_t * prof_lookup(tsd_t *tsd, prof_bt_t *bt) { union { - prof_tctx_t *p; - void *v; + prof_tctx_t *p; + void *v; } ret; prof_tdata_t *tdata; - bool not_found; + bool not_found; cassert(config_prof); @@ -343,16 +345,16 @@ prof_lookup(tsd_t *tsd, prof_bt_t *bt) { } malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock); if (not_found) { - void *btkey; + void *btkey; prof_gctx_t *gctx; - bool new_gctx, error; + bool new_gctx, error; /* * This thread's cache lacks bt. Look for it in the global * cache. */ - if (prof_lookup_global(tsd, bt, tdata, &btkey, &gctx, - &new_gctx)) { + if (prof_lookup_global( + tsd, bt, tdata, &btkey, &gctx, &new_gctx)) { return NULL; } @@ -397,8 +399,8 @@ prof_lookup(tsd_t *tsd, prof_bt_t *bt) { /* Used in unit tests. */ static prof_tdata_t * -prof_tdata_count_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, - void *arg) { +prof_tdata_count_iter( + prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, void *arg) { size_t *tdata_count = (size_t *)arg; (*tdata_count)++; @@ -409,13 +411,13 @@ prof_tdata_count_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, /* Used in unit tests. */ size_t prof_tdata_count(void) { - size_t tdata_count = 0; + size_t tdata_count = 0; tsdn_t *tsdn; tsdn = tsdn_fetch(); malloc_mutex_lock(tsdn, &tdatas_mtx); - tdata_tree_iter(&tdatas, NULL, prof_tdata_count_iter, - (void *)&tdata_count); + tdata_tree_iter( + &tdatas, NULL, prof_tdata_count_iter, (void *)&tdata_count); malloc_mutex_unlock(tsdn, &tdatas_mtx); return tdata_count; @@ -424,8 +426,8 @@ prof_tdata_count(void) { /* Used in unit tests. */ size_t prof_bt_count(void) { - size_t bt_count; - tsd_t *tsd; + size_t bt_count; + tsd_t *tsd; prof_tdata_t *tdata; tsd = tsd_fetch(); @@ -441,75 +443,40 @@ prof_bt_count(void) { return bt_count; } -char * -prof_thread_name_alloc(tsd_t *tsd, const char *thread_name) { - char *ret; - size_t size; - - if (thread_name == NULL) { - return NULL; - } - - size = strlen(thread_name) + 1; - if (size == 1) { - return ""; - } - - ret = iallocztm(tsd_tsdn(tsd), size, sz_size2index(size), false, NULL, - true, arena_get(TSDN_NULL, 0, true), true); - if (ret == NULL) { - return NULL; - } - memcpy(ret, thread_name, size); - return ret; +static void +prof_thread_name_write_tdata(prof_tdata_t *tdata, const char *thread_name) { + strncpy(tdata->thread_name, thread_name, PROF_THREAD_NAME_MAX_LEN); + tdata->thread_name[PROF_THREAD_NAME_MAX_LEN - 1] = '\0'; } int prof_thread_name_set_impl(tsd_t *tsd, const char *thread_name) { assert(tsd_reentrancy_level_get(tsd) == 0); + assert(thread_name != NULL); - prof_tdata_t *tdata; - unsigned i; - char *s; - - tdata = prof_tdata_get(tsd, true); - if (tdata == NULL) { - return EAGAIN; - } - - /* Validate input. */ - if (thread_name == NULL) { - return EFAULT; - } - for (i = 0; thread_name[i] != '\0'; i++) { + for (unsigned i = 0; thread_name[i] != '\0'; i++) { char c = thread_name[i]; if (!isgraph(c) && !isblank(c)) { - return EFAULT; + return EINVAL; } } - s = prof_thread_name_alloc(tsd, thread_name); - if (s == NULL) { - return EAGAIN; + prof_tdata_t *tdata = prof_tdata_get(tsd, true); + if (tdata == NULL) { + return ENOMEM; } - if (tdata->thread_name != NULL) { - idalloctm(tsd_tsdn(tsd), tdata->thread_name, NULL, NULL, true, - true); - tdata->thread_name = NULL; - } - if (strlen(s) > 0) { - tdata->thread_name = s; - } + prof_thread_name_write_tdata(tdata, thread_name); + return 0; } JEMALLOC_FORMAT_PRINTF(3, 4) static void -prof_dump_printf(write_cb_t *prof_dump_write, void *cbopaque, - const char *format, ...) { +prof_dump_printf( + write_cb_t *prof_dump_write, void *cbopaque, const char *format, ...) { va_list ap; - char buf[PROF_PRINTF_BUFSIZE]; + char buf[PROF_PRINTF_BUFSIZE]; va_start(ap, format); malloc_vsnprintf(buf, sizeof(buf), format, ap); @@ -538,11 +505,18 @@ prof_double_uint64_cast(double d) { } #endif -void prof_unbias_map_init() { +void +prof_unbias_map_init(void) { /* See the comment in prof_sample_new_event_wait */ #ifdef JEMALLOC_PROF for (szind_t i = 0; i < SC_NSIZES; i++) { - double sz = (double)sz_index2size(i); + /* + * With large size classes disabled, the unbiased calculation + * here is not as accurate as it was because usize now changes + * in a finer grain while the unbiased_sz is still calculated + * using the old way. + */ + double sz = (double)sz_index2size_unsafe(i); double rate = (double)(ZU(1) << lg_prof_sample); double div_val = 1.0 - exp(-sz / rate); double unbiased_sz = sz / div_val; @@ -644,8 +618,8 @@ prof_do_unbias(uint64_t c_out_shifted_i, uint64_t s_out_i, uint64_t *r_c_in, } static void -prof_dump_print_cnts(write_cb_t *prof_dump_write, void *cbopaque, - const prof_cnt_t *cnts) { +prof_dump_print_cnts( + write_cb_t *prof_dump_write, void *cbopaque, const prof_cnt_t *cnts) { uint64_t curobjs; uint64_t curbytes; uint64_t accumobjs; @@ -662,8 +636,8 @@ prof_dump_print_cnts(write_cb_t *prof_dump_write, void *cbopaque, accumbytes = cnts->accumbytes; } prof_dump_printf(prof_dump_write, cbopaque, - "%"FMTu64": %"FMTu64" [%"FMTu64": %"FMTu64"]", - curobjs, curbytes, accumobjs, accumbytes); + "%" FMTu64 ": %" FMTu64 " [%" FMTu64 ": %" FMTu64 "]", curobjs, + curbytes, accumobjs, accumbytes); } static void @@ -683,11 +657,11 @@ prof_tctx_merge_tdata(tsdn_t *tsdn, prof_tctx_t *tctx, prof_tdata_t *tdata) { memcpy(&tctx->dump_cnts, &tctx->cnts, sizeof(prof_cnt_t)); tdata->cnt_summed.curobjs += tctx->dump_cnts.curobjs; - tdata->cnt_summed.curobjs_shifted_unbiased - += tctx->dump_cnts.curobjs_shifted_unbiased; + tdata->cnt_summed.curobjs_shifted_unbiased += + tctx->dump_cnts.curobjs_shifted_unbiased; tdata->cnt_summed.curbytes += tctx->dump_cnts.curbytes; - tdata->cnt_summed.curbytes_unbiased - += tctx->dump_cnts.curbytes_unbiased; + tdata->cnt_summed.curbytes_unbiased += + tctx->dump_cnts.curbytes_unbiased; if (opt_prof_accum) { tdata->cnt_summed.accumobjs += tctx->dump_cnts.accumobjs; @@ -710,17 +684,17 @@ prof_tctx_merge_gctx(tsdn_t *tsdn, prof_tctx_t *tctx, prof_gctx_t *gctx) { malloc_mutex_assert_owner(tsdn, gctx->lock); gctx->cnt_summed.curobjs += tctx->dump_cnts.curobjs; - gctx->cnt_summed.curobjs_shifted_unbiased - += tctx->dump_cnts.curobjs_shifted_unbiased; + gctx->cnt_summed.curobjs_shifted_unbiased += + tctx->dump_cnts.curobjs_shifted_unbiased; gctx->cnt_summed.curbytes += tctx->dump_cnts.curbytes; gctx->cnt_summed.curbytes_unbiased += tctx->dump_cnts.curbytes_unbiased; if (opt_prof_accum) { gctx->cnt_summed.accumobjs += tctx->dump_cnts.accumobjs; - gctx->cnt_summed.accumobjs_shifted_unbiased - += tctx->dump_cnts.accumobjs_shifted_unbiased; + gctx->cnt_summed.accumobjs_shifted_unbiased += + tctx->dump_cnts.accumobjs_shifted_unbiased; gctx->cnt_summed.accumbytes += tctx->dump_cnts.accumbytes; - gctx->cnt_summed.accumbytes_unbiased - += tctx->dump_cnts.accumbytes_unbiased; + gctx->cnt_summed.accumbytes_unbiased += + tctx->dump_cnts.accumbytes_unbiased; } } @@ -738,6 +712,7 @@ prof_tctx_merge_iter(prof_tctx_tree_t *tctxs, prof_tctx_t *tctx, void *arg) { case prof_tctx_state_purgatory: prof_tctx_merge_gctx(tsdn, tctx, tctx->gctx); break; + case prof_tctx_state_initializing: default: not_reached(); } @@ -747,9 +722,9 @@ prof_tctx_merge_iter(prof_tctx_tree_t *tctxs, prof_tctx_t *tctx, void *arg) { typedef struct prof_dump_iter_arg_s prof_dump_iter_arg_t; struct prof_dump_iter_arg_s { - tsdn_t *tsdn; + tsdn_t *tsdn; write_cb_t *prof_dump_write; - void *cbopaque; + void *cbopaque; }; static prof_tctx_t * @@ -765,9 +740,9 @@ prof_tctx_dump_iter(prof_tctx_tree_t *tctxs, prof_tctx_t *tctx, void *opaque) { case prof_tctx_state_dumping: case prof_tctx_state_purgatory: prof_dump_printf(arg->prof_dump_write, arg->cbopaque, - " t%"FMTu64": ", tctx->thr_uid); - prof_dump_print_cnts(arg->prof_dump_write, arg->cbopaque, - &tctx->dump_cnts); + " t%" FMTu64 ": ", tctx->thr_uid); + prof_dump_print_cnts( + arg->prof_dump_write, arg->cbopaque, &tctx->dump_cnts); arg->prof_dump_write(arg->cbopaque, "\n"); break; default: @@ -778,7 +753,7 @@ prof_tctx_dump_iter(prof_tctx_tree_t *tctxs, prof_tctx_t *tctx, void *opaque) { static prof_tctx_t * prof_tctx_finish_iter(prof_tctx_tree_t *tctxs, prof_tctx_t *tctx, void *arg) { - tsdn_t *tsdn = (tsdn_t *)arg; + tsdn_t *tsdn = (tsdn_t *)arg; prof_tctx_t *ret; malloc_mutex_assert_owner(tsdn, tctx->gctx->lock); @@ -793,6 +768,7 @@ prof_tctx_finish_iter(prof_tctx_tree_t *tctxs, prof_tctx_t *tctx, void *arg) { case prof_tctx_state_purgatory: ret = tctx; goto label_return; + case prof_tctx_state_initializing: default: not_reached(); } @@ -832,8 +808,8 @@ prof_gctx_merge_iter(prof_gctx_tree_t *gctxs, prof_gctx_t *gctx, void *opaque) { prof_gctx_merge_iter_arg_t *arg = (prof_gctx_merge_iter_arg_t *)opaque; malloc_mutex_lock(arg->tsdn, gctx->lock); - tctx_tree_iter(&gctx->tctxs, NULL, prof_tctx_merge_iter, - (void *)arg->tsdn); + tctx_tree_iter( + &gctx->tctxs, NULL, prof_tctx_merge_iter, (void *)arg->tsdn); if (gctx->cnt_summed.curobjs != 0) { (*arg->leak_ngctx)++; } @@ -845,7 +821,7 @@ prof_gctx_merge_iter(prof_gctx_tree_t *gctxs, prof_gctx_t *gctx, void *opaque) { static void prof_gctx_finish(tsd_t *tsd, prof_gctx_tree_t *gctxs) { prof_tdata_t *tdata = prof_tdata_get(tsd, false); - prof_gctx_t *gctx; + prof_gctx_t *gctx; /* * Standard tree iteration won't work here, because as soon as we @@ -861,15 +837,14 @@ prof_gctx_finish(tsd_t *tsd, prof_gctx_tree_t *gctxs) { next = NULL; do { - prof_tctx_t *to_destroy = - tctx_tree_iter(&gctx->tctxs, next, - prof_tctx_finish_iter, + prof_tctx_t *to_destroy = tctx_tree_iter( + &gctx->tctxs, next, prof_tctx_finish_iter, (void *)tsd_tsdn(tsd)); if (to_destroy != NULL) { - next = tctx_tree_next(&gctx->tctxs, - to_destroy); - tctx_tree_remove(&gctx->tctxs, - to_destroy); + next = tctx_tree_next( + &gctx->tctxs, to_destroy); + tctx_tree_remove( + &gctx->tctxs, to_destroy); idalloctm(tsd_tsdn(tsd), to_destroy, NULL, NULL, true, true); } else { @@ -890,41 +865,41 @@ prof_gctx_finish(tsd_t *tsd, prof_gctx_tree_t *gctxs) { typedef struct prof_tdata_merge_iter_arg_s prof_tdata_merge_iter_arg_t; struct prof_tdata_merge_iter_arg_s { - tsdn_t *tsdn; + tsdn_t *tsdn; prof_cnt_t *cnt_all; }; static prof_tdata_t * -prof_tdata_merge_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, - void *opaque) { - prof_tdata_merge_iter_arg_t *arg = - (prof_tdata_merge_iter_arg_t *)opaque; +prof_tdata_merge_iter( + prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, void *opaque) { + prof_tdata_merge_iter_arg_t *arg = (prof_tdata_merge_iter_arg_t *) + opaque; malloc_mutex_lock(arg->tsdn, tdata->lock); if (!tdata->expired) { size_t tabind; union { - prof_tctx_t *p; - void *v; + prof_tctx_t *p; + void *v; } tctx; tdata->dumping = true; memset(&tdata->cnt_summed, 0, sizeof(prof_cnt_t)); - for (tabind = 0; !ckh_iter(&tdata->bt2tctx, &tabind, NULL, - &tctx.v);) { + for (tabind = 0; + !ckh_iter(&tdata->bt2tctx, &tabind, NULL, &tctx.v);) { prof_tctx_merge_tdata(arg->tsdn, tctx.p, tdata); } arg->cnt_all->curobjs += tdata->cnt_summed.curobjs; - arg->cnt_all->curobjs_shifted_unbiased - += tdata->cnt_summed.curobjs_shifted_unbiased; + arg->cnt_all->curobjs_shifted_unbiased += + tdata->cnt_summed.curobjs_shifted_unbiased; arg->cnt_all->curbytes += tdata->cnt_summed.curbytes; - arg->cnt_all->curbytes_unbiased - += tdata->cnt_summed.curbytes_unbiased; + arg->cnt_all->curbytes_unbiased += + tdata->cnt_summed.curbytes_unbiased; if (opt_prof_accum) { arg->cnt_all->accumobjs += tdata->cnt_summed.accumobjs; - arg->cnt_all->accumobjs_shifted_unbiased - += tdata->cnt_summed.accumobjs_shifted_unbiased; + arg->cnt_all->accumobjs_shifted_unbiased += + tdata->cnt_summed.accumobjs_shifted_unbiased; arg->cnt_all->accumbytes += tdata->cnt_summed.accumbytes; arg->cnt_all->accumbytes_unbiased += @@ -939,18 +914,18 @@ prof_tdata_merge_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, } static prof_tdata_t * -prof_tdata_dump_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, - void *opaque) { +prof_tdata_dump_iter( + prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, void *opaque) { if (!tdata->dumping) { return NULL; } prof_dump_iter_arg_t *arg = (prof_dump_iter_arg_t *)opaque; - prof_dump_printf(arg->prof_dump_write, arg->cbopaque, " t%"FMTu64": ", - tdata->thr_uid); - prof_dump_print_cnts(arg->prof_dump_write, arg->cbopaque, - &tdata->cnt_summed); - if (tdata->thread_name != NULL) { + prof_dump_printf(arg->prof_dump_write, arg->cbopaque, + " t%" FMTu64 ": ", tdata->thr_uid); + prof_dump_print_cnts( + arg->prof_dump_write, arg->cbopaque, &tdata->cnt_summed); + if (!prof_thread_name_empty(tdata)) { arg->prof_dump_write(arg->cbopaque, " "); arg->prof_dump_write(arg->cbopaque, tdata->thread_name); } @@ -961,7 +936,7 @@ prof_tdata_dump_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, static void prof_dump_header(prof_dump_iter_arg_t *arg, const prof_cnt_t *cnt_all) { prof_dump_printf(arg->prof_dump_write, arg->cbopaque, - "heap_v2/%"FMTu64"\n t*: ", ((uint64_t)1U << lg_prof_sample)); + "heap_v2/%" FMTu64 "\n t*: ", ((uint64_t)1U << lg_prof_sample)); prof_dump_print_cnts(arg->prof_dump_write, arg->cbopaque, cnt_all); arg->prof_dump_write(arg->cbopaque, "\n"); @@ -977,8 +952,8 @@ prof_dump_gctx(prof_dump_iter_arg_t *arg, prof_gctx_t *gctx, malloc_mutex_assert_owner(arg->tsdn, gctx->lock); /* Avoid dumping such gctx's that have no useful data. */ - if ((!opt_prof_accum && gctx->cnt_summed.curobjs == 0) || - (opt_prof_accum && gctx->cnt_summed.accumobjs == 0)) { + if ((!opt_prof_accum && gctx->cnt_summed.curobjs == 0) + || (opt_prof_accum && gctx->cnt_summed.accumobjs == 0)) { assert(gctx->cnt_summed.curobjs == 0); assert(gctx->cnt_summed.curbytes == 0); /* @@ -997,12 +972,12 @@ prof_dump_gctx(prof_dump_iter_arg_t *arg, prof_gctx_t *gctx, arg->prof_dump_write(arg->cbopaque, "@"); for (unsigned i = 0; i < bt->len; i++) { prof_dump_printf(arg->prof_dump_write, arg->cbopaque, - " %#"FMTxPTR, (uintptr_t)bt->vec[i]); + " %#" FMTxPTR, (uintptr_t)bt->vec[i]); } arg->prof_dump_write(arg->cbopaque, "\n t*: "); - prof_dump_print_cnts(arg->prof_dump_write, arg->cbopaque, - &gctx->cnt_summed); + prof_dump_print_cnts( + arg->prof_dump_write, arg->cbopaque, &gctx->cnt_summed); arg->prof_dump_write(arg->cbopaque, "\n"); tctx_tree_iter(&gctx->tctxs, NULL, prof_tctx_dump_iter, arg); @@ -1023,18 +998,21 @@ prof_leakcheck(const prof_cnt_t *cnt_all, size_t leak_ngctx) { */ if (cnt_all->curbytes != 0) { double sample_period = (double)((uint64_t)1 << lg_prof_sample); - double ratio = (((double)cnt_all->curbytes) / - (double)cnt_all->curobjs) / sample_period; - double scale_factor = 1.0 / (1.0 - exp(-ratio)); - uint64_t curbytes = (uint64_t)round(((double)cnt_all->curbytes) - * scale_factor); - uint64_t curobjs = (uint64_t)round(((double)cnt_all->curobjs) * - scale_factor); - - malloc_printf(": Leak approximation summary: ~%"FMTu64 - " byte%s, ~%"FMTu64" object%s, >= %zu context%s\n", - curbytes, (curbytes != 1) ? "s" : "", curobjs, (curobjs != - 1) ? "s" : "", leak_ngctx, (leak_ngctx != 1) ? "s" : ""); + double ratio = (((double)cnt_all->curbytes) + / (double)cnt_all->curobjs) + / sample_period; + double scale_factor = 1.0 / (1.0 - exp(-ratio)); + uint64_t curbytes = (uint64_t)round( + ((double)cnt_all->curbytes) * scale_factor); + uint64_t curobjs = (uint64_t)round( + ((double)cnt_all->curobjs) * scale_factor); + + malloc_printf( + ": Leak approximation summary: ~%" FMTu64 + " byte%s, ~%" FMTu64 " object%s, >= %zu context%s\n", + curbytes, (curbytes != 1) ? "s" : "", curobjs, + (curobjs != 1) ? "s" : "", leak_ngctx, + (leak_ngctx != 1) ? "s" : ""); malloc_printf( ": Run jeprof on dump output for leak detail\n"); if (opt_prof_leak_error) { @@ -1065,8 +1043,8 @@ prof_dump_prep(tsd_t *tsd, prof_tdata_t *tdata, prof_cnt_t *cnt_all, size_t *leak_ngctx, prof_gctx_tree_t *gctxs) { size_t tabind; union { - prof_gctx_t *p; - void *v; + prof_gctx_t *p; + void *v; } gctx; prof_enter(tsd, tdata); @@ -1085,19 +1063,19 @@ prof_dump_prep(tsd_t *tsd, prof_tdata_t *tdata, prof_cnt_t *cnt_all, * stats and merge them into the associated gctx's. */ memset(cnt_all, 0, sizeof(prof_cnt_t)); - prof_tdata_merge_iter_arg_t prof_tdata_merge_iter_arg = {tsd_tsdn(tsd), - cnt_all}; + prof_tdata_merge_iter_arg_t prof_tdata_merge_iter_arg = { + tsd_tsdn(tsd), cnt_all}; malloc_mutex_lock(tsd_tsdn(tsd), &tdatas_mtx); - tdata_tree_iter(&tdatas, NULL, prof_tdata_merge_iter, - &prof_tdata_merge_iter_arg); + tdata_tree_iter( + &tdatas, NULL, prof_tdata_merge_iter, &prof_tdata_merge_iter_arg); malloc_mutex_unlock(tsd_tsdn(tsd), &tdatas_mtx); /* Merge tctx stats into gctx's. */ *leak_ngctx = 0; - prof_gctx_merge_iter_arg_t prof_gctx_merge_iter_arg = {tsd_tsdn(tsd), - leak_ngctx}; - gctx_tree_iter(gctxs, NULL, prof_gctx_merge_iter, - &prof_gctx_merge_iter_arg); + prof_gctx_merge_iter_arg_t prof_gctx_merge_iter_arg = { + tsd_tsdn(tsd), leak_ngctx}; + gctx_tree_iter( + gctxs, NULL, prof_gctx_merge_iter, &prof_gctx_merge_iter_arg); prof_leave(tsd, tdata); } @@ -1106,12 +1084,12 @@ void prof_dump_impl(tsd_t *tsd, write_cb_t *prof_dump_write, void *cbopaque, prof_tdata_t *tdata, bool leakcheck) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &prof_dump_mtx); - prof_cnt_t cnt_all; - size_t leak_ngctx; + prof_cnt_t cnt_all; + size_t leak_ngctx; prof_gctx_tree_t gctxs; prof_dump_prep(tsd, tdata, &cnt_all, &leak_ngctx, &gctxs); - prof_dump_iter_arg_t prof_dump_iter_arg = {tsd_tsdn(tsd), - prof_dump_write, cbopaque}; + prof_dump_iter_arg_t prof_dump_iter_arg = { + tsd_tsdn(tsd), prof_dump_write, cbopaque}; prof_dump_header(&prof_dump_iter_arg, &cnt_all); gctx_tree_iter(&gctxs, NULL, prof_gctx_dump_iter, &prof_dump_iter_arg); prof_gctx_finish(tsd, &gctxs); @@ -1123,12 +1101,12 @@ prof_dump_impl(tsd_t *tsd, write_cb_t *prof_dump_write, void *cbopaque, /* Used in unit tests. */ void prof_cnt_all(prof_cnt_t *cnt_all) { - tsd_t *tsd = tsd_fetch(); + tsd_t *tsd = tsd_fetch(); prof_tdata_t *tdata = prof_tdata_get(tsd, false); if (tdata == NULL) { memset(cnt_all, 0, sizeof(prof_cnt_t)); } else { - size_t leak_ngctx; + size_t leak_ngctx; prof_gctx_tree_t gctxs; prof_dump_prep(tsd, tdata, cnt_all, &leak_ngctx, &gctxs); prof_gctx_finish(tsd, &gctxs); @@ -1167,23 +1145,31 @@ prof_tdata_init_impl(tsd_t *tsd, uint64_t thr_uid, uint64_t thr_discrim, cassert(config_prof); /* Initialize an empty cache for this thread. */ - tdata = (prof_tdata_t *)iallocztm(tsd_tsdn(tsd), sizeof(prof_tdata_t), - sz_size2index(sizeof(prof_tdata_t)), false, NULL, true, + size_t tdata_sz = ALIGNMENT_CEILING(sizeof(prof_tdata_t), QUANTUM); + size_t total_sz = tdata_sz + sizeof(void *) * opt_prof_bt_max; + tdata = (prof_tdata_t *)iallocztm(tsd_tsdn(tsd), total_sz, + sz_size2index(total_sz), false, NULL, true, arena_get(TSDN_NULL, 0, true), true); if (tdata == NULL) { return NULL; } + tdata->vec = (void **)((byte_t *)tdata + tdata_sz); tdata->lock = prof_tdata_mutex_choose(thr_uid); tdata->thr_uid = thr_uid; tdata->thr_discrim = thr_discrim; - tdata->thread_name = thread_name; tdata->attached = true; tdata->expired = false; tdata->tctx_uid_next = 0; + if (thread_name == NULL) { + prof_thread_name_clear(tdata); + } else { + prof_thread_name_write_tdata(tdata, thread_name); + } + prof_thread_name_assert(tdata); if (ckh_new(tsd, &tdata->bt2tctx, PROF_CKH_MINITEMS, prof_bt_hash, - prof_bt_keycomp)) { + prof_bt_keycomp)) { idalloctm(tsd_tsdn(tsd), tdata, NULL, NULL, true, true); return NULL; } @@ -1214,27 +1200,22 @@ prof_tdata_should_destroy_unlocked(prof_tdata_t *tdata, bool even_if_attached) { } static bool -prof_tdata_should_destroy(tsdn_t *tsdn, prof_tdata_t *tdata, - bool even_if_attached) { +prof_tdata_should_destroy( + tsdn_t *tsdn, prof_tdata_t *tdata, bool even_if_attached) { malloc_mutex_assert_owner(tsdn, tdata->lock); return prof_tdata_should_destroy_unlocked(tdata, even_if_attached); } static void -prof_tdata_destroy_locked(tsd_t *tsd, prof_tdata_t *tdata, - bool even_if_attached) { +prof_tdata_destroy_locked( + tsd_t *tsd, prof_tdata_t *tdata, bool even_if_attached) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &tdatas_mtx); malloc_mutex_assert_not_owner(tsd_tsdn(tsd), tdata->lock); tdata_tree_remove(&tdatas, tdata); - assert(prof_tdata_should_destroy_unlocked(tdata, even_if_attached)); - if (tdata->thread_name != NULL) { - idalloctm(tsd_tsdn(tsd), tdata->thread_name, NULL, NULL, true, - true); - } ckh_delete(tsd, &tdata->bt2tctx); idalloctm(tsd_tsdn(tsd), tdata, NULL, NULL, true, true); } @@ -1252,8 +1233,8 @@ prof_tdata_detach(tsd_t *tsd, prof_tdata_t *tdata) { malloc_mutex_lock(tsd_tsdn(tsd), tdata->lock); if (tdata->attached) { - destroy_tdata = prof_tdata_should_destroy(tsd_tsdn(tsd), tdata, - true); + destroy_tdata = prof_tdata_should_destroy( + tsd_tsdn(tsd), tdata, true); /* * Only detach if !destroy_tdata, because detaching would allow * another thread to win the race to destroy tdata. @@ -1288,8 +1269,8 @@ prof_tdata_expire(tsdn_t *tsdn, prof_tdata_t *tdata) { } static prof_tdata_t * -prof_tdata_reset_iter(prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, - void *arg) { +prof_tdata_reset_iter( + prof_tdata_tree_t *tdatas_ptr, prof_tdata_t *tdata, void *arg) { tsdn_t *tsdn = (tsdn_t *)arg; return (prof_tdata_expire(tsdn, tdata) ? tdata : NULL); @@ -1309,8 +1290,8 @@ prof_reset(tsd_t *tsd, size_t lg_sample) { next = NULL; do { - prof_tdata_t *to_destroy = tdata_tree_iter(&tdatas, next, - prof_tdata_reset_iter, (void *)tsd); + prof_tdata_t *to_destroy = tdata_tree_iter( + &tdatas, next, prof_tdata_reset_iter, (void *)tsd); if (to_destroy != NULL) { next = tdata_tree_next(&tdatas, to_destroy); prof_tdata_destroy_locked(tsd, to_destroy, false); @@ -1373,8 +1354,8 @@ prof_tctx_destroy(tsd_t *tsd, prof_tctx_t *tctx) { prof_tdata_t *tdata = tctx->tdata; tctx->tdata = NULL; ckh_remove(tsd, &tdata->bt2tctx, &gctx->bt, NULL, NULL); - bool destroy_tdata = prof_tdata_should_destroy(tsd_tsdn(tsd), - tdata, false); + bool destroy_tdata = prof_tdata_should_destroy( + tsd_tsdn(tsd), tdata, false); malloc_mutex_unlock(tsd_tsdn(tsd), tdata->lock); if (destroy_tdata) { prof_tdata_destroy(tsd, tdata, false); @@ -1419,6 +1400,8 @@ prof_tctx_destroy(tsd_t *tsd, prof_tctx_t *tctx) { destroy_tctx = false; destroy_gctx = false; break; + case prof_tctx_state_initializing: + case prof_tctx_state_purgatory: default: not_reached(); destroy_tctx = false; diff --git a/dep/jemalloc/src/prof_log.c b/dep/jemalloc/src/prof_log.c index 0632c3b37e55e..74f1372f5fd34 100644 --- a/dep/jemalloc/src/prof_log.c +++ b/dep/jemalloc/src/prof_log.c @@ -12,7 +12,7 @@ #include "jemalloc/internal/prof_log.h" #include "jemalloc/internal/prof_sys.h" -bool opt_prof_log = false; +bool opt_prof_log = false; typedef enum prof_logging_state_e prof_logging_state_t; enum prof_logging_state_e { prof_logging_state_stopped, @@ -25,15 +25,15 @@ enum prof_logging_state_e { * - started: log_start called, log_stop not called yet. Allocations are logged. * - dumping: log_stop called but not finished; samples are not logged anymore. */ -prof_logging_state_t prof_logging_state = prof_logging_state_stopped; +static prof_logging_state_t prof_logging_state = prof_logging_state_stopped; /* Used in unit tests. */ static bool prof_log_dummy = false; /* Incremented for every log file that is output. */ static uint64_t log_seq = 0; -static char log_filename[ - /* Minimize memory bloat for non-prof builds. */ +static char log_filename[ +/* Minimize memory bloat for non-prof builds. */ #ifdef JEMALLOC_PROF PATH_MAX + #endif @@ -51,8 +51,8 @@ typedef struct prof_bt_node_s prof_bt_node_t; struct prof_bt_node_s { prof_bt_node_t *next; - size_t index; - prof_bt_t bt; + size_t index; + prof_bt_t bt; /* Variable size backtrace vector pointed to by bt. */ void *vec[1]; }; @@ -61,8 +61,8 @@ typedef struct prof_thr_node_s prof_thr_node_t; struct prof_thr_node_s { prof_thr_node_t *next; - size_t index; - uint64_t thr_uid; + size_t index; + uint64_t thr_uid; /* Variable size based on thr_name_sz. */ char name[1]; }; @@ -91,15 +91,15 @@ struct prof_alloc_node_s { * These are the backtraces and threads that have already been logged by an * allocation. */ -static bool log_tables_initialized = false; +static bool log_tables_initialized = false; static ckh_t log_bt_node_set; static ckh_t log_thr_node_set; /* Store linked lists for logged data. */ -static prof_bt_node_t *log_bt_first = NULL; -static prof_bt_node_t *log_bt_last = NULL; -static prof_thr_node_t *log_thr_first = NULL; -static prof_thr_node_t *log_thr_last = NULL; +static prof_bt_node_t *log_bt_first = NULL; +static prof_bt_node_t *log_bt_last = NULL; +static prof_thr_node_t *log_thr_first = NULL; +static prof_thr_node_t *log_thr_last = NULL; static prof_alloc_node_t *log_alloc_first = NULL; static prof_alloc_node_t *log_alloc_last = NULL; @@ -131,12 +131,12 @@ prof_log_bt_index(tsd_t *tsd, prof_bt_t *bt) { /* See if this backtrace is already cached in the table. */ if (ckh_search(&log_bt_node_set, (void *)(&dummy_node), - (void **)(&node), NULL)) { - size_t sz = offsetof(prof_bt_node_t, vec) + - (bt->len * sizeof(void *)); - prof_bt_node_t *new_node = (prof_bt_node_t *) - iallocztm(tsd_tsdn(tsd), sz, sz_size2index(sz), false, NULL, - true, arena_get(TSDN_NULL, 0, true), true); + (void **)(&node), NULL)) { + size_t sz = offsetof(prof_bt_node_t, vec) + + (bt->len * sizeof(void *)); + prof_bt_node_t *new_node = (prof_bt_node_t *)iallocztm( + tsd_tsdn(tsd), sz, sz_size2index(sz), false, NULL, true, + arena_get(TSDN_NULL, 0, true), true); if (log_bt_first == NULL) { log_bt_first = new_node; log_bt_last = new_node; @@ -174,11 +174,11 @@ prof_log_thr_index(tsd_t *tsd, uint64_t thr_uid, const char *name) { /* See if this thread is already cached in the table. */ if (ckh_search(&log_thr_node_set, (void *)(&dummy_node), - (void **)(&node), NULL)) { + (void **)(&node), NULL)) { size_t sz = offsetof(prof_thr_node_t, name) + strlen(name) + 1; - prof_thr_node_t *new_node = (prof_thr_node_t *) - iallocztm(tsd_tsdn(tsd), sz, sz_size2index(sz), false, NULL, - true, arena_get(TSDN_NULL, 0, true), true); + prof_thr_node_t *new_node = (prof_thr_node_t *)iallocztm( + tsd_tsdn(tsd), sz, sz_size2index(sz), false, NULL, true, + arena_get(TSDN_NULL, 0, true), true); if (log_thr_first == NULL) { log_thr_first = new_node; log_thr_last = new_node; @@ -225,9 +225,9 @@ prof_try_log(tsd_t *tsd, size_t usize, prof_info_t *prof_info) { if (!log_tables_initialized) { bool err1 = ckh_new(tsd, &log_bt_node_set, PROF_CKH_MINITEMS, - prof_bt_node_hash, prof_bt_node_keycomp); + prof_bt_node_hash, prof_bt_node_keycomp); bool err2 = ckh_new(tsd, &log_thr_node_set, PROF_CKH_MINITEMS, - prof_thr_node_hash, prof_thr_node_keycomp); + prof_thr_node_hash, prof_thr_node_keycomp); if (err1 || err2) { goto label_done; } @@ -238,13 +238,12 @@ prof_try_log(tsd_t *tsd, size_t usize, prof_info_t *prof_info) { nstime_t free_time; nstime_prof_init_update(&free_time); - size_t sz = sizeof(prof_alloc_node_t); - prof_alloc_node_t *new_node = (prof_alloc_node_t *) - iallocztm(tsd_tsdn(tsd), sz, sz_size2index(sz), false, NULL, true, + size_t sz = sizeof(prof_alloc_node_t); + prof_alloc_node_t *new_node = (prof_alloc_node_t *)iallocztm( + tsd_tsdn(tsd), sz, sz_size2index(sz), false, NULL, true, arena_get(TSDN_NULL, 0, true), true); - const char *prod_thr_name = (tctx->tdata->thread_name == NULL)? - "" : tctx->tdata->thread_name; + const char *prod_thr_name = tctx->tdata->thread_name; const char *cons_thr_name = prof_thread_name_get(tsd); prof_bt_t bt; @@ -257,10 +256,10 @@ prof_try_log(tsd_t *tsd, size_t usize, prof_info_t *prof_info) { prof_bt_t *prod_bt = &tctx->gctx->bt; new_node->next = NULL; - new_node->alloc_thr_ind = prof_log_thr_index(tsd, tctx->tdata->thr_uid, - prod_thr_name); - new_node->free_thr_ind = prof_log_thr_index(tsd, cons_tdata->thr_uid, - cons_thr_name); + new_node->alloc_thr_ind = prof_log_thr_index( + tsd, tctx->tdata->thr_uid, prod_thr_name); + new_node->free_thr_ind = prof_log_thr_index( + tsd, cons_tdata->thr_uid, cons_thr_name); new_node->alloc_bt_ind = prof_log_bt_index(tsd, prod_bt); new_node->free_bt_ind = prof_log_bt_index(tsd, cons_bt); new_node->alloc_time_ns = nstime_ns(&alloc_time); @@ -289,8 +288,8 @@ static bool prof_bt_node_keycomp(const void *k1, const void *k2) { const prof_bt_node_t *bt_node1 = (prof_bt_node_t *)k1; const prof_bt_node_t *bt_node2 = (prof_bt_node_t *)k2; - return prof_bt_keycomp((void *)(&bt_node1->bt), - (void *)(&bt_node2->bt)); + return prof_bt_keycomp( + (void *)(&bt_node1->bt), (void *)(&bt_node2->bt)); } static void @@ -310,7 +309,7 @@ prof_thr_node_keycomp(const void *k1, const void *k2) { size_t prof_log_bt_count(void) { cassert(config_prof); - size_t cnt = 0; + size_t cnt = 0; prof_bt_node_t *node = log_bt_first; while (node != NULL) { cnt++; @@ -323,7 +322,7 @@ prof_log_bt_count(void) { size_t prof_log_alloc_count(void) { cassert(config_prof); - size_t cnt = 0; + size_t cnt = 0; prof_alloc_node_t *node = log_alloc_first; while (node != NULL) { cnt++; @@ -336,7 +335,7 @@ prof_log_alloc_count(void) { size_t prof_log_thr_count(void) { cassert(config_prof); - size_t cnt = 0; + size_t cnt = 0; prof_thr_node_t *node = log_thr_first; while (node != NULL) { cnt++; @@ -375,9 +374,8 @@ prof_log_rep_check(void) { size_t thr_count = prof_log_thr_count(); size_t alloc_count = prof_log_alloc_count(); - if (prof_logging_state == prof_logging_state_stopped) { - if (bt_count != 0 || thr_count != 0 || alloc_count || 0) { + if (bt_count != 0 || thr_count != 0 || alloc_count != 0) { return true; } } @@ -436,7 +434,8 @@ prof_log_start(tsdn_t *tsdn, const char *filename) { if (!prof_log_atexit_called) { prof_log_atexit_called = true; if (atexit(prof_log_stop_final) != 0) { - malloc_write(": Error in atexit() " + malloc_write( + ": Error in atexit() " "for logging\n"); if (opt_abort) { abort(); @@ -470,14 +469,14 @@ prof_log_start(tsdn_t *tsdn, const char *filename) { } struct prof_emitter_cb_arg_s { - int fd; + int fd; ssize_t ret; }; static void prof_emitter_write_cb(void *opaque, const char *to_write) { - struct prof_emitter_cb_arg_s *arg = - (struct prof_emitter_cb_arg_s *)opaque; + struct prof_emitter_cb_arg_s *arg = (struct prof_emitter_cb_arg_s *) + opaque; size_t bytes = strlen(to_write); if (prof_log_dummy) { return; @@ -502,8 +501,8 @@ prof_log_emit_threads(tsd_t *tsd, emitter_t *emitter) { char *thr_name = thr_node->name; - emitter_json_kv(emitter, "thr_name", emitter_type_string, - &thr_name); + emitter_json_kv( + emitter, "thr_name", emitter_type_string, &thr_name); emitter_json_object_end(emitter); thr_old_node = thr_node; @@ -522,7 +521,7 @@ prof_log_emit_traces(tsd_t *tsd, emitter_t *emitter) { * Calculate how many hex digits we need: twice number of bytes, two for * "0x", and then one more for terminating '\0'. */ - char buf[2 * sizeof(intptr_t) + 3]; + char buf[2 * sizeof(intptr_t) + 3]; size_t buf_sz = sizeof(buf); while (bt_node != NULL) { emitter_json_array_begin(emitter); @@ -530,8 +529,8 @@ prof_log_emit_traces(tsd_t *tsd, emitter_t *emitter) { for (i = 0; i < bt_node->bt.len; i++) { malloc_snprintf(buf, buf_sz, "%p", bt_node->bt.vec[i]); char *trace_str = buf; - emitter_json_value(emitter, emitter_type_string, - &trace_str); + emitter_json_value( + emitter, emitter_type_string, &trace_str); } emitter_json_array_end(emitter); @@ -562,21 +561,21 @@ prof_log_emit_allocs(tsd_t *tsd, emitter_t *emitter) { emitter_json_kv(emitter, "free_trace", emitter_type_size, &alloc_node->free_bt_ind); - emitter_json_kv(emitter, "alloc_timestamp", - emitter_type_uint64, &alloc_node->alloc_time_ns); + emitter_json_kv(emitter, "alloc_timestamp", emitter_type_uint64, + &alloc_node->alloc_time_ns); emitter_json_kv(emitter, "free_timestamp", emitter_type_uint64, &alloc_node->free_time_ns); - emitter_json_kv(emitter, "usize", emitter_type_uint64, - &alloc_node->usize); + emitter_json_kv( + emitter, "usize", emitter_type_uint64, &alloc_node->usize); emitter_json_object_end(emitter); alloc_old_node = alloc_node; alloc_node = alloc_node->next; - idalloctm(tsd_tsdn(tsd), alloc_old_node, NULL, NULL, true, - true); + idalloctm( + tsd_tsdn(tsd), alloc_old_node, NULL, NULL, true, true); } emitter_json_array_end(emitter); } @@ -592,15 +591,14 @@ prof_log_emit_metadata(emitter_t *emitter) { emitter_json_kv(emitter, "duration", emitter_type_uint64, &ns); char *vers = JEMALLOC_VERSION; - emitter_json_kv(emitter, "version", - emitter_type_string, &vers); + emitter_json_kv(emitter, "version", emitter_type_string, &vers); - emitter_json_kv(emitter, "lg_sample_rate", - emitter_type_int, &lg_prof_sample); + emitter_json_kv( + emitter, "lg_sample_rate", emitter_type_int, &lg_prof_sample); const char *res_type = prof_time_res_mode_names[opt_prof_time_res]; - emitter_json_kv(emitter, "prof_time_resolution", emitter_type_string, - &res_type); + emitter_json_kv( + emitter, "prof_time_resolution", emitter_type_string, &res_type); int pid = prof_getpid(); emitter_json_kv(emitter, "pid", emitter_type_int, &pid); @@ -633,7 +631,6 @@ prof_log_stop(tsdn_t *tsdn) { prof_logging_state = prof_logging_state_dumping; malloc_mutex_unlock(tsdn, &log_mtx); - emitter_t emitter; /* Create a file. */ @@ -646,8 +643,10 @@ prof_log_stop(tsdn_t *tsdn) { } if (fd == -1) { - malloc_printf(": creat() for log file \"%s\" " - " failed with %d\n", log_filename, errno); + malloc_printf( + ": creat() for log file \"%s\" " + " failed with %d\n", + log_filename, errno); if (opt_abort) { abort(); } @@ -660,8 +659,8 @@ prof_log_stop(tsdn_t *tsdn) { buf_writer_t buf_writer; buf_writer_init(tsdn, &buf_writer, prof_emitter_write_cb, &arg, NULL, PROF_LOG_STOP_BUFSIZE); - emitter_init(&emitter, emitter_output_json_compact, buf_writer_cb, - &buf_writer); + emitter_init( + &emitter, emitter_output_json_compact, buf_writer_cb, &buf_writer); emitter_begin(&emitter); prof_log_emit_metadata(&emitter); @@ -702,8 +701,8 @@ JEMALLOC_COLD bool prof_log_init(tsd_t *tsd) { cassert(config_prof); - if (malloc_mutex_init(&log_mtx, "prof_log", - WITNESS_RANK_PROF_LOG, malloc_mutex_rank_exclusive)) { + if (malloc_mutex_init(&log_mtx, "prof_log", WITNESS_RANK_PROF_LOG, + malloc_mutex_rank_exclusive)) { return true; } diff --git a/dep/jemalloc/src/prof_recent.c b/dep/jemalloc/src/prof_recent.c index 834a9446c16fa..f7108bee8e8ea 100644 --- a/dep/jemalloc/src/prof_recent.c +++ b/dep/jemalloc/src/prof_recent.c @@ -7,22 +7,22 @@ #include "jemalloc/internal/prof_data.h" #include "jemalloc/internal/prof_recent.h" -ssize_t opt_prof_recent_alloc_max = PROF_RECENT_ALLOC_MAX_DEFAULT; -malloc_mutex_t prof_recent_alloc_mtx; /* Protects the fields below */ +ssize_t opt_prof_recent_alloc_max = PROF_RECENT_ALLOC_MAX_DEFAULT; +malloc_mutex_t prof_recent_alloc_mtx; /* Protects the fields below */ static atomic_zd_t prof_recent_alloc_max; -static ssize_t prof_recent_alloc_count = 0; +static ssize_t prof_recent_alloc_count = 0; prof_recent_list_t prof_recent_alloc_list; malloc_mutex_t prof_recent_dump_mtx; /* Protects dumping. */ static void -prof_recent_alloc_max_init() { - atomic_store_zd(&prof_recent_alloc_max, opt_prof_recent_alloc_max, - ATOMIC_RELAXED); +prof_recent_alloc_max_init(void) { + atomic_store_zd( + &prof_recent_alloc_max, opt_prof_recent_alloc_max, ATOMIC_RELAXED); } static inline ssize_t -prof_recent_alloc_max_get_no_lock() { +prof_recent_alloc_max_get_no_lock(void) { return atomic_load_zd(&prof_recent_alloc_max, ATOMIC_RELAXED); } @@ -144,26 +144,26 @@ edata_prof_recent_alloc_get_no_lock_test(const edata_t *edata) { static inline prof_recent_t * edata_prof_recent_alloc_get(tsd_t *tsd, const edata_t *edata) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &prof_recent_alloc_mtx); - prof_recent_t *recent_alloc = - edata_prof_recent_alloc_get_no_lock(edata); - assert(recent_alloc == NULL || - prof_recent_alloc_edata_get(tsd, recent_alloc) == edata); + prof_recent_t *recent_alloc = edata_prof_recent_alloc_get_no_lock( + edata); + assert(recent_alloc == NULL + || prof_recent_alloc_edata_get(tsd, recent_alloc) == edata); return recent_alloc; } static prof_recent_t * -edata_prof_recent_alloc_update_internal(tsd_t *tsd, edata_t *edata, - prof_recent_t *recent_alloc) { +edata_prof_recent_alloc_update_internal( + tsd_t *tsd, edata_t *edata, prof_recent_t *recent_alloc) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &prof_recent_alloc_mtx); - prof_recent_t *old_recent_alloc = - edata_prof_recent_alloc_get(tsd, edata); + prof_recent_t *old_recent_alloc = edata_prof_recent_alloc_get( + tsd, edata); edata_prof_recent_alloc_set_dont_call_directly(edata, recent_alloc); return old_recent_alloc; } static void -edata_prof_recent_alloc_set(tsd_t *tsd, edata_t *edata, - prof_recent_t *recent_alloc) { +edata_prof_recent_alloc_set( + tsd_t *tsd, edata_t *edata, prof_recent_t *recent_alloc) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &prof_recent_alloc_mtx); assert(recent_alloc != NULL); prof_recent_t *old_recent_alloc = @@ -173,8 +173,8 @@ edata_prof_recent_alloc_set(tsd_t *tsd, edata_t *edata, } static void -edata_prof_recent_alloc_reset(tsd_t *tsd, edata_t *edata, - prof_recent_t *recent_alloc) { +edata_prof_recent_alloc_reset( + tsd_t *tsd, edata_t *edata, prof_recent_t *recent_alloc) { malloc_mutex_assert_owner(tsd_tsdn(tsd), &prof_recent_alloc_mtx); assert(recent_alloc != NULL); prof_recent_t *old_recent_alloc = @@ -265,14 +265,14 @@ prof_recent_alloc_assert_count(tsd_t *tsd) { if (!config_debug) { return; } - ssize_t count = 0; + ssize_t count = 0; prof_recent_t *n; - ql_foreach(n, &prof_recent_alloc_list, link) { + ql_foreach (n, &prof_recent_alloc_list, link) { ++count; } assert(count == prof_recent_alloc_count); - assert(prof_recent_alloc_max_get(tsd) == -1 || - count <= prof_recent_alloc_max_get(tsd)); + assert(prof_recent_alloc_max_get(tsd) == -1 + || count <= prof_recent_alloc_max_get(tsd)); } void @@ -319,8 +319,8 @@ prof_recent_alloc(tsd_t *tsd, edata_t *edata, size_t size, size_t usize) { * the allocation locks. */ prof_recent_t *reserve = NULL; - if (prof_recent_alloc_max_get(tsd) == -1 || - prof_recent_alloc_count < prof_recent_alloc_max_get(tsd)) { + if (prof_recent_alloc_max_get(tsd) == -1 + || prof_recent_alloc_count < prof_recent_alloc_max_get(tsd)) { assert(prof_recent_alloc_max_get(tsd) != 0); malloc_mutex_unlock(tsd_tsdn(tsd), &prof_recent_alloc_mtx); reserve = prof_recent_allocate_node(tsd_tsdn(tsd)); @@ -346,8 +346,9 @@ prof_recent_alloc(tsd_t *tsd, edata_t *edata, size_t size, size_t usize) { ql_rotate(&prof_recent_alloc_list, link); } else { /* Otherwise make use of the new node. */ - assert(prof_recent_alloc_max_get(tsd) == -1 || - prof_recent_alloc_count < prof_recent_alloc_max_get(tsd)); + assert(prof_recent_alloc_max_get(tsd) == -1 + || prof_recent_alloc_count + < prof_recent_alloc_max_get(tsd)); if (reserve == NULL) { goto label_rollback; } @@ -403,7 +404,7 @@ prof_recent_alloc(tsd_t *tsd, edata_t *edata, size_t size, size_t usize) { } ssize_t -prof_recent_alloc_max_ctl_read() { +prof_recent_alloc_max_ctl_read(void) { cassert(config_prof); /* Don't bother to acquire the lock. */ return prof_recent_alloc_max_get_no_lock(); @@ -421,7 +422,7 @@ prof_recent_alloc_restore_locked(tsd_t *tsd, prof_recent_list_t *to_delete) { } prof_recent_t *node; - ql_foreach(node, &prof_recent_alloc_list, link) { + ql_foreach (node, &prof_recent_alloc_list, link) { if (prof_recent_alloc_count == max) { break; } @@ -462,7 +463,7 @@ prof_recent_alloc_max_ctl_write(tsd_t *tsd, ssize_t max) { assert(max >= -1); malloc_mutex_lock(tsd_tsdn(tsd), &prof_recent_alloc_mtx); prof_recent_alloc_assert_count(tsd); - const ssize_t old_max = prof_recent_alloc_max_update(tsd, max); + const ssize_t old_max = prof_recent_alloc_max_update(tsd, max); prof_recent_list_t to_delete; prof_recent_alloc_restore_locked(tsd, &to_delete); malloc_mutex_unlock(tsd_tsdn(tsd), &prof_recent_alloc_mtx); @@ -472,7 +473,7 @@ prof_recent_alloc_max_ctl_write(tsd_t *tsd, ssize_t max) { static void prof_recent_alloc_dump_bt(emitter_t *emitter, prof_tctx_t *tctx) { - char bt_buf[2 * sizeof(intptr_t) + 3]; + char bt_buf[2 * sizeof(intptr_t) + 3]; char *s = bt_buf; assert(tctx != NULL); prof_bt_t *bt = &tctx->gctx->bt; @@ -495,13 +496,14 @@ prof_recent_alloc_dump_node(emitter_t *emitter, prof_recent_t *node) { &node->alloc_tctx->thr_uid); prof_tdata_t *alloc_tdata = node->alloc_tctx->tdata; assert(alloc_tdata != NULL); - if (alloc_tdata->thread_name != NULL) { + if (!prof_thread_name_empty(alloc_tdata)) { + const char *thread_name = alloc_tdata->thread_name; emitter_json_kv(emitter, "alloc_thread_name", - emitter_type_string, &alloc_tdata->thread_name); + emitter_type_string, &thread_name); } uint64_t alloc_time_ns = nstime_ns(&node->alloc_time); - emitter_json_kv(emitter, "alloc_time", emitter_type_uint64, - &alloc_time_ns); + emitter_json_kv( + emitter, "alloc_time", emitter_type_uint64, &alloc_time_ns); emitter_json_array_kv_begin(emitter, "alloc_trace"); prof_recent_alloc_dump_bt(emitter, node->alloc_tctx); emitter_json_array_end(emitter); @@ -511,9 +513,10 @@ prof_recent_alloc_dump_node(emitter_t *emitter, prof_recent_t *node) { emitter_type_uint64, &node->dalloc_tctx->thr_uid); prof_tdata_t *dalloc_tdata = node->dalloc_tctx->tdata; assert(dalloc_tdata != NULL); - if (dalloc_tdata->thread_name != NULL) { + if (!prof_thread_name_empty(dalloc_tdata)) { + const char *thread_name = dalloc_tdata->thread_name; emitter_json_kv(emitter, "dalloc_thread_name", - emitter_type_string, &dalloc_tdata->thread_name); + emitter_type_string, &thread_name); } assert(!nstime_equals_zero(&node->dalloc_time)); uint64_t dalloc_time_ns = nstime_ns(&node->dalloc_time); @@ -537,8 +540,8 @@ prof_recent_alloc_dump(tsd_t *tsd, write_cb_t *write_cb, void *cbopaque) { buf_writer_init(tsd_tsdn(tsd), &buf_writer, write_cb, cbopaque, NULL, PROF_RECENT_PRINT_BUFSIZE); emitter_t emitter; - emitter_init(&emitter, emitter_output_json_compact, buf_writer_cb, - &buf_writer); + emitter_init( + &emitter, emitter_output_json_compact, buf_writer_cb, &buf_writer); prof_recent_list_t temp_list; malloc_mutex_lock(tsd_tsdn(tsd), &prof_recent_alloc_mtx); @@ -552,13 +555,13 @@ prof_recent_alloc_dump(tsd_t *tsd, write_cb_t *write_cb, void *cbopaque) { emitter_begin(&emitter); uint64_t sample_interval = (uint64_t)1U << lg_prof_sample; - emitter_json_kv(&emitter, "sample_interval", emitter_type_uint64, - &sample_interval); - emitter_json_kv(&emitter, "recent_alloc_max", emitter_type_ssize, - &dump_max); + emitter_json_kv( + &emitter, "sample_interval", emitter_type_uint64, &sample_interval); + emitter_json_kv( + &emitter, "recent_alloc_max", emitter_type_ssize, &dump_max); emitter_json_array_kv_begin(&emitter, "recent_alloc"); prof_recent_t *node; - ql_foreach(node, &temp_list, link) { + ql_foreach (node, &temp_list, link) { prof_recent_alloc_dump_node(&emitter, node); } emitter_json_array_end(&emitter); @@ -580,17 +583,17 @@ prof_recent_alloc_dump(tsd_t *tsd, write_cb_t *write_cb, void *cbopaque) { #undef PROF_RECENT_PRINT_BUFSIZE bool -prof_recent_init() { +prof_recent_init(void) { cassert(config_prof); prof_recent_alloc_max_init(); if (malloc_mutex_init(&prof_recent_alloc_mtx, "prof_recent_alloc", - WITNESS_RANK_PROF_RECENT_ALLOC, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_RECENT_ALLOC, malloc_mutex_rank_exclusive)) { return true; } if (malloc_mutex_init(&prof_recent_dump_mtx, "prof_recent_dump", - WITNESS_RANK_PROF_RECENT_DUMP, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_PROF_RECENT_DUMP, malloc_mutex_rank_exclusive)) { return true; } diff --git a/dep/jemalloc/src/prof_stack_range.c b/dep/jemalloc/src/prof_stack_range.c new file mode 100644 index 0000000000000..8ebcab8eef23f --- /dev/null +++ b/dep/jemalloc/src/prof_stack_range.c @@ -0,0 +1,175 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/malloc_io.h" +#include "jemalloc/internal/prof_sys.h" + +#if defined(__linux__) && defined(JEMALLOC_HAVE_GETTID) + +# include +# include +# include +# include // strtoul +# include +# include + +/* + * Converts a string representing a hexadecimal number to an unsigned long long + * integer. Functionally equivalent to strtoull() (for base 16) but faster for + * that case. + * + * @param nptr Pointer to the string to be converted. + * @param endptr Pointer to a pointer to character, which will be set to the + * character in `nptr` where parsing stopped. Can be NULL. + * @return The converted unsigned long long integer value. + */ +static inline unsigned long long int +strtoull_hex(const char *nptr, char **endptr) { + unsigned long long int val = 0; + int ii = 0; + for (; ii < 16; ++ii) { + char c = nptr[ii]; + if (c >= '0' && c <= '9') { + val = (val << 4) + (c - '0'); + } else if (c >= 'a' && c <= 'f') { + val = (val << 4) + (c - 'a' + 10); + } else { + break; + } + } + if (endptr) { + *endptr = (char *)(nptr + ii); + } + return val; +} + +static int +prof_mapping_containing_addr(uintptr_t addr, const char *maps_path, + uintptr_t *mm_start, uintptr_t *mm_end) { + int ret = ENOENT; /* not found */ + *mm_start = *mm_end = 0; + + /* + * Each line of /proc//maps is: + * - + * + * The fields we care about are always within the first 34 characters so + * as long as `buf` contains the start of a mapping line it can always be + * parsed. + */ + static const int kMappingFieldsWidth = 34; + + int fd = -1; + char buf[4096]; + ssize_t remaining = 0; /* actual number of bytes read to buf */ + char *line = NULL; + + while (1) { + if (fd < 0) { + /* case 0: initial open of maps file */ + fd = malloc_open(maps_path, O_RDONLY); + if (fd < 0) { + return errno; + } + + remaining = malloc_read_fd(fd, buf, sizeof(buf)); + if (remaining < 0) { + ret = errno; + break; + } else if (remaining == 0) { + break; + } + line = buf; + } else if (line == NULL) { + /* case 1: no newline found in buf */ + remaining = malloc_read_fd(fd, buf, sizeof(buf)); + if (remaining < 0) { + ret = errno; + break; + } else if (remaining == 0) { + break; + } + line = memchr(buf, '\n', remaining); + if (line != NULL) { + line++; /* advance to character after newline */ + remaining -= (line - buf); + } + } else if (line != NULL && remaining < kMappingFieldsWidth) { + /* + * case 2: found newline but insufficient characters remaining in + * buf + */ + memcpy(buf, line, + remaining); /* copy remaining characters to start of buf */ + line = buf; + + ssize_t count = malloc_read_fd( + fd, buf + remaining, sizeof(buf) - remaining); + if (count < 0) { + ret = errno; + break; + } else if (count == 0) { + break; + } + + remaining += + count; /* actual number of bytes read to buf */ + } else { + /* case 3: found newline and sufficient characters to parse */ + + /* parse - */ + char *tmp = line; + uintptr_t start_addr = (uintptr_t)strtoull_hex( + tmp, &tmp); + if (addr >= start_addr) { + tmp++; /* advance to character after '-' */ + uintptr_t end_addr = (uintptr_t)strtoull_hex( + tmp, NULL); + if (addr < end_addr) { + *mm_start = start_addr; + *mm_end = end_addr; + ret = 0; + break; + } + } + + /* Advance to character after next newline in the current buf. */ + char *prev_line = line; + line = memchr(line, '\n', remaining); + if (line != NULL) { + line++; /* advance to character after newline */ + remaining -= (line - prev_line); + } + } + } + + malloc_close(fd); + return ret; +} + +int +prof_thread_stack_range(uintptr_t fp, uintptr_t *low, uintptr_t *high) { + /* + * NOTE: Prior to kernel 4.5 an entry for every thread stack was included in + * /proc//maps as [STACK:]. Starting with kernel 4.5 only the main + * thread stack remains as the [stack] mapping. For other thread stacks the + * mapping is still visible in /proc//task//maps (though not + * labeled as [STACK:tid]). + * https://lists.ubuntu.com/archives/kernel-team/2016-March/074681.html + */ + char maps_path[64]; // "/proc//task//maps" + malloc_snprintf(maps_path, sizeof(maps_path), "/proc/%d/task/%d/maps", + getpid(), gettid()); + return prof_mapping_containing_addr(fp, maps_path, low, high); +} + +#else + +int +prof_thread_stack_range( + UNUSED uintptr_t addr, uintptr_t *stack_start, uintptr_t *stack_end) { + *stack_start = *stack_end = 0; + return ENOENT; +} + +#endif // __linux__ diff --git a/dep/jemalloc/src/prof_stats.c b/dep/jemalloc/src/prof_stats.c index 5d1a506bb72d4..db248be76209f 100644 --- a/dep/jemalloc/src/prof_stats.c +++ b/dep/jemalloc/src/prof_stats.c @@ -3,8 +3,8 @@ #include "jemalloc/internal/prof_stats.h" -bool opt_prof_stats = false; -malloc_mutex_t prof_stats_mtx; +bool opt_prof_stats = false; +malloc_mutex_t prof_stats_mtx; static prof_stats_t prof_stats_live[PROF_SC_NSIZES]; static prof_stats_t prof_stats_accum[PROF_SC_NSIZES]; diff --git a/dep/jemalloc/src/prof_sys.c b/dep/jemalloc/src/prof_sys.c index b5f1f5b225e17..be50c0bed1c5b 100644 --- a/dep/jemalloc/src/prof_sys.c +++ b/dep/jemalloc/src/prof_sys.c @@ -1,15 +1,15 @@ -#define JEMALLOC_PROF_SYS_C_ #include "jemalloc/internal/jemalloc_preamble.h" #include "jemalloc/internal/jemalloc_internal_includes.h" #include "jemalloc/internal/buf_writer.h" #include "jemalloc/internal/ctl.h" +#include "jemalloc/internal/malloc_io.h" #include "jemalloc/internal/prof_data.h" #include "jemalloc/internal/prof_sys.h" #ifdef JEMALLOC_PROF_LIBUNWIND -#define UNW_LOCAL_ONLY -#include +# define UNW_LOCAL_ONLY +# include #endif #ifdef JEMALLOC_PROF_LIBGCC @@ -18,17 +18,21 @@ * use libgcc's unwinding functionality, but after we've included that, we've * already hooked _Unwind_Backtrace. We'll temporarily disable hooking. */ -#undef _Unwind_Backtrace -#include -#define _Unwind_Backtrace JEMALLOC_TEST_HOOK(_Unwind_Backtrace, test_hooks_libc_hook) +# undef _Unwind_Backtrace +# include +# define _Unwind_Backtrace \ + JEMALLOC_TEST_HOOK(_Unwind_Backtrace, test_hooks_libc_hook) +#endif + +#ifdef JEMALLOC_PROF_FRAME_POINTER +// execinfo backtrace() as fallback unwinder +# include #endif /******************************************************************************/ malloc_mutex_t prof_dump_filename_mtx; -bool prof_do_mock = false; - static uint64_t prof_dump_seq; static uint64_t prof_dump_iseq; static uint64_t prof_dump_mseq; @@ -55,9 +59,9 @@ prof_backtrace_impl(void **vec, unsigned *len, unsigned max_len) { cassert(config_prof); assert(*len == 0); assert(vec != NULL); - assert(max_len == PROF_BT_MAX); + assert(max_len <= PROF_BT_MAX_LIMIT); - nframes = unw_backtrace(vec, PROF_BT_MAX); + nframes = unw_backtrace(vec, max_len); if (nframes <= 0) { return; } @@ -74,7 +78,7 @@ prof_unwind_init_callback(struct _Unwind_Context *context, void *arg) { static _Unwind_Reason_Code prof_unwind_callback(struct _Unwind_Context *context, void *arg) { prof_unwind_data_t *data = (prof_unwind_data_t *)arg; - void *ip; + void *ip; cassert(config_prof); @@ -97,32 +101,132 @@ prof_backtrace_impl(void **vec, unsigned *len, unsigned max_len) { cassert(config_prof); assert(vec != NULL); - assert(max_len == PROF_BT_MAX); + assert(max_len <= PROF_BT_MAX_LIMIT); _Unwind_Backtrace(prof_unwind_callback, &data); } -#elif (defined(JEMALLOC_PROF_GCC)) +#elif (defined(JEMALLOC_PROF_FRAME_POINTER)) +JEMALLOC_DIAGNOSTIC_PUSH +JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS + +struct stack_range { + uintptr_t start; + uintptr_t end; +}; + +struct thread_unwind_info { + struct stack_range stack_range; + bool fallback; +}; +static __thread struct thread_unwind_info unwind_info = { + .stack_range = + { + .start = 0, + .end = 0, + }, + .fallback = false, +}; /* thread local */ + static void prof_backtrace_impl(void **vec, unsigned *len, unsigned max_len) { -#define BT_FRAME(i) \ - if ((i) < max_len) { \ - void *p; \ - if (__builtin_frame_address(i) == 0) { \ - return; \ - } \ - p = __builtin_return_address(i); \ - if (p == NULL) { \ - return; \ - } \ - vec[(i)] = p; \ - *len = (i) + 1; \ - } else { \ - return; \ + /* fp: current stack frame pointer + * + * stack_range: readable stack memory range for the current thread. + * Used to validate frame addresses during stack unwinding. + * For most threads there is a single valid stack range + * that is fixed at thread creation time. This may not be + * the case when folly fibers or boost contexts are used. + * In those cases fall back to using execinfo backtrace() + * (DWARF unwind). + */ + + /* always safe to get the current stack frame address */ + uintptr_t fp = (uintptr_t)__builtin_frame_address(0); + + /* new thread - get the stack range */ + if (!unwind_info.fallback + && unwind_info.stack_range.start == unwind_info.stack_range.end) { + if (prof_thread_stack_range(fp, &unwind_info.stack_range.start, + &unwind_info.stack_range.end) + != 0) { + unwind_info.fallback = true; + } else { + assert(fp >= unwind_info.stack_range.start + && fp < unwind_info.stack_range.end); + } } + if (unwind_info.fallback) { + goto label_fallback; + } + + unsigned ii = 0; + while (ii < max_len && fp != 0) { + if (fp < unwind_info.stack_range.start + || fp >= unwind_info.stack_range.end) { + /* + * Determining the stack range from procfs can be + * relatively expensive especially for programs with + * many threads / shared libraries. If the stack + * range has changed, it is likely to change again + * in the future (fibers or some other stack + * manipulation). So fall back to backtrace for this + * thread. + */ + unwind_info.fallback = true; + goto label_fallback; + } + void *ip = ((void **)fp)[1]; + if (ip == 0) { + break; + } + vec[ii++] = ip; + fp = ((uintptr_t *)fp)[0]; + } + *len = ii; + return; + +label_fallback: + /* + * Using the backtrace from execinfo.h here. Note that it may get + * redirected to libunwind when a libunwind not built with build-time + * flag --disable-weak-backtrace is linked. + */ + assert(unwind_info.fallback); + int nframes = backtrace(vec, max_len); + if (nframes > 0) { + *len = nframes; + } else { + *len = 0; + } +} + +JEMALLOC_DIAGNOSTIC_POP +#elif (defined(JEMALLOC_PROF_GCC)) +JEMALLOC_DIAGNOSTIC_PUSH +JEMALLOC_DIAGNOSTIC_IGNORE_FRAME_ADDRESS +static void +prof_backtrace_impl(void **vec, unsigned *len, unsigned max_len) { +/* The input arg must be a constant for __builtin_return_address. */ +# define BT_FRAME(i) \ + if ((i) < max_len) { \ + void *p; \ + if (__builtin_frame_address(i) == 0) { \ + return; \ + } \ + p = __builtin_return_address(i); \ + if (p == NULL) { \ + return; \ + } \ + vec[(i)] = p; \ + *len = (i) + 1; \ + } else { \ + return; \ + } + cassert(config_prof); assert(vec != NULL); - assert(max_len == PROF_BT_MAX); + assert(max_len <= PROF_BT_MAX_LIMIT); BT_FRAME(0) BT_FRAME(1) @@ -264,7 +368,149 @@ prof_backtrace_impl(void **vec, unsigned *len, unsigned max_len) { BT_FRAME(125) BT_FRAME(126) BT_FRAME(127) -#undef BT_FRAME + BT_FRAME(128) + BT_FRAME(129) + + BT_FRAME(130) + BT_FRAME(131) + BT_FRAME(132) + BT_FRAME(133) + BT_FRAME(134) + BT_FRAME(135) + BT_FRAME(136) + BT_FRAME(137) + BT_FRAME(138) + BT_FRAME(139) + + BT_FRAME(140) + BT_FRAME(141) + BT_FRAME(142) + BT_FRAME(143) + BT_FRAME(144) + BT_FRAME(145) + BT_FRAME(146) + BT_FRAME(147) + BT_FRAME(148) + BT_FRAME(149) + + BT_FRAME(150) + BT_FRAME(151) + BT_FRAME(152) + BT_FRAME(153) + BT_FRAME(154) + BT_FRAME(155) + BT_FRAME(156) + BT_FRAME(157) + BT_FRAME(158) + BT_FRAME(159) + + BT_FRAME(160) + BT_FRAME(161) + BT_FRAME(162) + BT_FRAME(163) + BT_FRAME(164) + BT_FRAME(165) + BT_FRAME(166) + BT_FRAME(167) + BT_FRAME(168) + BT_FRAME(169) + + BT_FRAME(170) + BT_FRAME(171) + BT_FRAME(172) + BT_FRAME(173) + BT_FRAME(174) + BT_FRAME(175) + BT_FRAME(176) + BT_FRAME(177) + BT_FRAME(178) + BT_FRAME(179) + + BT_FRAME(180) + BT_FRAME(181) + BT_FRAME(182) + BT_FRAME(183) + BT_FRAME(184) + BT_FRAME(185) + BT_FRAME(186) + BT_FRAME(187) + BT_FRAME(188) + BT_FRAME(189) + + BT_FRAME(190) + BT_FRAME(191) + BT_FRAME(192) + BT_FRAME(193) + BT_FRAME(194) + BT_FRAME(195) + BT_FRAME(196) + BT_FRAME(197) + BT_FRAME(198) + BT_FRAME(199) + + BT_FRAME(200) + BT_FRAME(201) + BT_FRAME(202) + BT_FRAME(203) + BT_FRAME(204) + BT_FRAME(205) + BT_FRAME(206) + BT_FRAME(207) + BT_FRAME(208) + BT_FRAME(209) + + BT_FRAME(210) + BT_FRAME(211) + BT_FRAME(212) + BT_FRAME(213) + BT_FRAME(214) + BT_FRAME(215) + BT_FRAME(216) + BT_FRAME(217) + BT_FRAME(218) + BT_FRAME(219) + + BT_FRAME(220) + BT_FRAME(221) + BT_FRAME(222) + BT_FRAME(223) + BT_FRAME(224) + BT_FRAME(225) + BT_FRAME(226) + BT_FRAME(227) + BT_FRAME(228) + BT_FRAME(229) + + BT_FRAME(230) + BT_FRAME(231) + BT_FRAME(232) + BT_FRAME(233) + BT_FRAME(234) + BT_FRAME(235) + BT_FRAME(236) + BT_FRAME(237) + BT_FRAME(238) + BT_FRAME(239) + + BT_FRAME(240) + BT_FRAME(241) + BT_FRAME(242) + BT_FRAME(243) + BT_FRAME(244) + BT_FRAME(245) + BT_FRAME(246) + BT_FRAME(247) + BT_FRAME(248) + BT_FRAME(249) + + BT_FRAME(250) + BT_FRAME(251) + BT_FRAME(252) + BT_FRAME(253) + BT_FRAME(254) + BT_FRAME(255) +# undef BT_FRAME + JEMALLOC_DIAGNOSTIC_POP } #else static void @@ -281,18 +527,20 @@ prof_backtrace(tsd_t *tsd, prof_bt_t *bt) { assert(prof_backtrace_hook != NULL); pre_reentrancy(tsd, NULL); - prof_backtrace_hook(bt->vec, &bt->len, PROF_BT_MAX); + prof_backtrace_hook(bt->vec, &bt->len, opt_prof_bt_max); post_reentrancy(tsd); } void -prof_hooks_init() { +prof_hooks_init(void) { prof_backtrace_hook_set(&prof_backtrace_impl); prof_dump_hook_set(NULL); + prof_sample_hook_set(NULL); + prof_sample_free_hook_set(NULL); } void -prof_unwind_init() { +prof_unwind_init(void) { #ifdef JEMALLOC_PROF_LIBGCC /* * Cause the backtracing machinery to allocate its internal @@ -318,12 +566,18 @@ prof_sys_thread_name_read_t *JET_MUTABLE prof_sys_thread_name_read = void prof_sys_thread_name_fetch(tsd_t *tsd) { -#define THREAD_NAME_MAX_LEN 16 - char buf[THREAD_NAME_MAX_LEN]; - if (!prof_sys_thread_name_read(buf, THREAD_NAME_MAX_LEN)) { - prof_thread_name_set_impl(tsd, buf); + prof_tdata_t *tdata = prof_tdata_get(tsd, true); + if (tdata == NULL) { + return; + } + + if (prof_sys_thread_name_read( + tdata->thread_name, PROF_THREAD_NAME_MAX_LEN) + != 0) { + prof_thread_name_clear(tdata); } -#undef THREAD_NAME_MAX_LEN + + tdata->thread_name[PROF_THREAD_NAME_MAX_LEN - 1] = '\0'; } int @@ -335,6 +589,41 @@ prof_getpid(void) { #endif } +static long +prof_get_pid_namespace(void) { + long ret = 0; + +#if defined(_WIN32) || defined(__APPLE__) + // Not supported, do nothing. +#else + char buf[PATH_MAX]; + const char *linkname = +# if defined(__FreeBSD__) || defined(__DragonFly__) + "/proc/curproc/ns/pid" +# else + "/proc/self/ns/pid" +# endif + ; + ssize_t linklen = +# ifndef JEMALLOC_READLINKAT + readlink(linkname, buf, PATH_MAX) +# else + readlinkat(AT_FDCWD, linkname, buf, PATH_MAX) +# endif + ; + + // namespace string is expected to be like pid:[4026531836] + if (linklen > 0) { + // Trim the trailing "]" + buf[linklen - 1] = '\0'; + char *index = strtok(buf, "pid:["); + ret = atol(index); + } +#endif + + return ret; +} + /* * This buffer is rather large for stack allocation, so use a single buffer for * all profile dumps; protected by prof_dump_mtx. @@ -362,8 +651,8 @@ struct prof_dump_arg_s { }; static void -prof_dump_check_possible_error(prof_dump_arg_t *arg, bool err_cond, - const char *format, ...) { +prof_dump_check_possible_error( + prof_dump_arg_t *arg, bool err_cond, const char *format, ...) { assert(!arg->error); if (!err_cond) { return; @@ -375,7 +664,7 @@ prof_dump_check_possible_error(prof_dump_arg_t *arg, bool err_cond, } va_list ap; - char buf[PROF_PRINTF_BUFSIZE]; + char buf[PROF_PRINTF_BUFSIZE]; va_start(ap, format); malloc_vsnprintf(buf, sizeof(buf), format, ap); va_end(ap); @@ -407,8 +696,8 @@ prof_dump_flush(void *opaque, const char *s) { cassert(config_prof); prof_dump_arg_t *arg = (prof_dump_arg_t *)opaque; if (!arg->error) { - ssize_t err = prof_dump_write_file(arg->prof_dump_fd, s, - strlen(s)); + ssize_t err = prof_dump_write_file( + arg->prof_dump_fd, s, strlen(s)); prof_dump_check_possible_error(arg, err == -1, ": failed to write during heap profile flush\n"); } @@ -421,48 +710,118 @@ prof_dump_close(prof_dump_arg_t *arg) { } } -#ifndef _WIN32 +#ifdef __APPLE__ +# include + +# ifdef __LP64__ +typedef struct mach_header_64 mach_header_t; +typedef struct segment_command_64 segment_command_t; +# define MH_MAGIC_VALUE MH_MAGIC_64 +# define MH_CIGAM_VALUE MH_CIGAM_64 +# define LC_SEGMENT_VALUE LC_SEGMENT_64 +# else +typedef struct mach_header mach_header_t; +typedef struct segment_command segment_command_t; +# define MH_MAGIC_VALUE MH_MAGIC +# define MH_CIGAM_VALUE MH_CIGAM +# define LC_SEGMENT_VALUE LC_SEGMENT +# endif + +static void +prof_dump_dyld_image_vmaddr(buf_writer_t *buf_writer, uint32_t image_index) { + const mach_header_t *header = (const mach_header_t *) + _dyld_get_image_header(image_index); + if (header == NULL + || (header->magic != MH_MAGIC_VALUE + && header->magic != MH_CIGAM_VALUE)) { + // Invalid header + return; + } + + intptr_t slide = _dyld_get_image_vmaddr_slide(image_index); + const char *name = _dyld_get_image_name(image_index); + struct load_command *load_cmd = (struct load_command *)((char *)header + + sizeof(mach_header_t)); + for (uint32_t i = 0; load_cmd && (i < header->ncmds); i++) { + if (load_cmd->cmd == LC_SEGMENT_VALUE) { + const segment_command_t *segment_cmd = + (const segment_command_t *)load_cmd; + if (!strcmp(segment_cmd->segname, "__TEXT")) { + char buffer[PATH_MAX + 1]; + malloc_snprintf(buffer, sizeof(buffer), + "%016llx-%016llx: %s\n", + segment_cmd->vmaddr + slide, + segment_cmd->vmaddr + slide + + segment_cmd->vmsize, + name); + buf_writer_cb(buf_writer, buffer); + return; + } + } + load_cmd = (struct load_command *)((char *)load_cmd + + load_cmd->cmdsize); + } +} + +static void +prof_dump_dyld_maps(buf_writer_t *buf_writer) { + uint32_t image_count = _dyld_image_count(); + for (uint32_t i = 0; i < image_count; i++) { + prof_dump_dyld_image_vmaddr(buf_writer, i); + } +} + +prof_dump_open_maps_t *JET_MUTABLE prof_dump_open_maps = NULL; + +static void +prof_dump_maps(buf_writer_t *buf_writer) { + buf_writer_cb(buf_writer, "\nMAPPED_LIBRARIES:\n"); + /* No proc map file to read on MacOS, dump dyld maps for backtrace. */ + prof_dump_dyld_maps(buf_writer); +} +#else /* !__APPLE__ */ +# ifndef _WIN32 JEMALLOC_FORMAT_PRINTF(1, 2) static int prof_open_maps_internal(const char *format, ...) { - int mfd; + int mfd; va_list ap; - char filename[PATH_MAX + 1]; + char filename[PATH_MAX + 1]; va_start(ap, format); malloc_vsnprintf(filename, sizeof(filename), format, ap); va_end(ap); -#if defined(O_CLOEXEC) +# if defined(O_CLOEXEC) mfd = open(filename, O_RDONLY | O_CLOEXEC); -#else +# else mfd = open(filename, O_RDONLY); if (mfd != -1) { fcntl(mfd, F_SETFD, fcntl(mfd, F_GETFD) | FD_CLOEXEC); } -#endif +# endif return mfd; } -#endif +# endif static int -prof_dump_open_maps_impl() { +prof_dump_open_maps_impl(void) { int mfd; cassert(config_prof); -#if defined(__FreeBSD__) || defined(__DragonFly__) +# if defined(__FreeBSD__) || defined(__DragonFly__) mfd = prof_open_maps_internal("/proc/curproc/map"); -#elif defined(_WIN32) +# elif defined(_WIN32) mfd = -1; // Not implemented -#else +# else int pid = prof_getpid(); mfd = prof_open_maps_internal("/proc/%d/task/%d/maps", pid, pid); if (mfd == -1) { mfd = prof_open_maps_internal("/proc/%d/maps", pid); } -#endif +# endif return mfd; } prof_dump_open_maps_t *JET_MUTABLE prof_dump_open_maps = @@ -486,14 +845,15 @@ prof_dump_maps(buf_writer_t *buf_writer) { buf_writer_pipe(buf_writer, prof_dump_read_maps_cb, &mfd); close(mfd); } +#endif /* __APPLE__ */ static bool -prof_dump(tsd_t *tsd, bool propagate_err, const char *filename, - bool leakcheck) { +prof_dump( + tsd_t *tsd, bool propagate_err, const char *filename, bool leakcheck) { cassert(config_prof); assert(tsd_reentrancy_level_get(tsd) == 0); - prof_tdata_t * tdata = prof_tdata_get(tsd, true); + prof_tdata_t *tdata = prof_tdata_get(tsd, true); if (tdata == NULL) { return true; } @@ -540,7 +900,7 @@ prof_strncpy(char *UNUSED dest, const char *UNUSED src, size_t UNUSED size) { } static const char * -prof_prefix_get(tsdn_t* tsdn) { +prof_prefix_get(tsdn_t *tsdn) { malloc_mutex_assert_owner(tsdn, &prof_dump_filename_mtx); return prof_prefix == NULL ? opt_prof_prefix : prof_prefix; @@ -564,15 +924,31 @@ prof_dump_filename(tsd_t *tsd, char *filename, char v, uint64_t vseq) { const char *prefix = prof_prefix_get(tsd_tsdn(tsd)); if (vseq != VSEQ_INVALID) { - /* "...v.heap" */ - malloc_snprintf(filename, DUMP_FILENAME_BUFSIZE, - "%s.%d.%"FMTu64".%c%"FMTu64".heap", prefix, prof_getpid(), - prof_dump_seq, v, vseq); + if (opt_prof_pid_namespace) { + /* "....v.heap" */ + malloc_snprintf(filename, DUMP_FILENAME_BUFSIZE, + "%s.%ld.%d.%" FMTu64 ".%c%" FMTu64 ".heap", prefix, + prof_get_pid_namespace(), prof_getpid(), + prof_dump_seq, v, vseq); + } else { + /* "...v.heap" */ + malloc_snprintf(filename, DUMP_FILENAME_BUFSIZE, + "%s.%d.%" FMTu64 ".%c%" FMTu64 ".heap", prefix, + prof_getpid(), prof_dump_seq, v, vseq); + } } else { - /* "....heap" */ - malloc_snprintf(filename, DUMP_FILENAME_BUFSIZE, - "%s.%d.%"FMTu64".%c.heap", prefix, prof_getpid(), - prof_dump_seq, v); + if (opt_prof_pid_namespace) { + /* ".....heap" */ + malloc_snprintf(filename, DUMP_FILENAME_BUFSIZE, + "%s.%ld.%d.%" FMTu64 ".%c.heap", prefix, + prof_get_pid_namespace(), prof_getpid(), + prof_dump_seq, v); + } else { + /* "....heap" */ + malloc_snprintf(filename, DUMP_FILENAME_BUFSIZE, + "%s.%d.%" FMTu64 ".%c.heap", prefix, prof_getpid(), + prof_dump_seq, v); + } } prof_dump_seq++; } @@ -580,8 +956,15 @@ prof_dump_filename(tsd_t *tsd, char *filename, char v, uint64_t vseq) { void prof_get_default_filename(tsdn_t *tsdn, char *filename, uint64_t ind) { malloc_mutex_lock(tsdn, &prof_dump_filename_mtx); - malloc_snprintf(filename, PROF_DUMP_FILENAME_LEN, - "%s.%d.%"FMTu64".json", prof_prefix_get(tsdn), prof_getpid(), ind); + if (opt_prof_pid_namespace) { + malloc_snprintf(filename, PROF_DUMP_FILENAME_LEN, + "%s.%ld.%d.%" FMTu64 ".json", prof_prefix_get(tsdn), + prof_get_pid_namespace(), prof_getpid(), ind); + } else { + malloc_snprintf(filename, PROF_DUMP_FILENAME_LEN, + "%s.%d.%" FMTu64 ".json", prof_prefix_get(tsdn), + prof_getpid(), ind); + } malloc_mutex_unlock(tsdn, &prof_dump_filename_mtx); } @@ -600,12 +983,15 @@ bool prof_prefix_set(tsdn_t *tsdn, const char *prefix) { cassert(config_prof); ctl_mtx_assert_held(tsdn); + if (prefix == NULL) { + return true; + } malloc_mutex_lock(tsdn, &prof_dump_filename_mtx); if (prof_prefix == NULL) { malloc_mutex_unlock(tsdn, &prof_dump_filename_mtx); /* Everything is still guarded by ctl_mtx. */ - char *buffer = base_alloc(tsdn, prof_base, - PROF_DUMP_FILENAME_LEN, QUANTUM); + char *buffer = base_alloc( + tsdn, prof_base, PROF_DUMP_FILENAME_LEN, QUANTUM); if (buffer == NULL) { return true; } @@ -642,7 +1028,8 @@ prof_mdump_impl(tsd_t *tsd, const char *filename) { /* No filename specified, so automatically generate one. */ malloc_mutex_lock(tsd_tsdn(tsd), &prof_dump_filename_mtx); if (prof_prefix_get(tsd_tsdn(tsd))[0] == '\0') { - malloc_mutex_unlock(tsd_tsdn(tsd), &prof_dump_filename_mtx); + malloc_mutex_unlock( + tsd_tsdn(tsd), &prof_dump_filename_mtx); return true; } prof_dump_filename(tsd, filename_buf, 'm', prof_dump_mseq); diff --git a/dep/jemalloc/src/psset.c b/dep/jemalloc/src/psset.c index 9a8f054f111c9..4e904feb8a019 100644 --- a/dep/jemalloc/src/psset.c +++ b/dep/jemalloc/src/psset.c @@ -11,7 +11,6 @@ psset_init(psset_t *psset) { hpdata_age_heap_new(&psset->pageslabs[i]); } fb_init(psset->pageslab_bitmap, PSSET_NPSIZES); - memset(&psset->merged_stats, 0, sizeof(psset->merged_stats)); memset(&psset->stats, 0, sizeof(psset->stats)); hpdata_empty_list_init(&psset->empty); for (int i = 0; i < PSSET_NPURGE_LISTS; i++) { @@ -30,15 +29,19 @@ psset_bin_stats_accum(psset_bin_stats_t *dst, psset_bin_stats_t *src) { void psset_stats_accum(psset_stats_t *dst, psset_stats_t *src) { - psset_bin_stats_accum(&dst->full_slabs[0], &src->full_slabs[0]); - psset_bin_stats_accum(&dst->full_slabs[1], &src->full_slabs[1]); - psset_bin_stats_accum(&dst->empty_slabs[0], &src->empty_slabs[0]); - psset_bin_stats_accum(&dst->empty_slabs[1], &src->empty_slabs[1]); + psset_bin_stats_accum(&dst->merged, &src->merged); + for (int huge = 0; huge < PSSET_NHUGE; huge++) { + psset_bin_stats_accum(&dst->slabs[huge], &src->slabs[huge]); + psset_bin_stats_accum( + &dst->full_slabs[huge], &src->full_slabs[huge]); + psset_bin_stats_accum( + &dst->empty_slabs[huge], &src->empty_slabs[huge]); + } for (pszind_t i = 0; i < PSSET_NPSIZES; i++) { - psset_bin_stats_accum(&dst->nonfull_slabs[i][0], - &src->nonfull_slabs[i][0]); - psset_bin_stats_accum(&dst->nonfull_slabs[i][1], - &src->nonfull_slabs[i][1]); + psset_bin_stats_accum( + &dst->nonfull_slabs[i][0], &src->nonfull_slabs[i][0]); + psset_bin_stats_accum( + &dst->nonfull_slabs[i][1], &src->nonfull_slabs[i][1]); } } @@ -48,52 +51,92 @@ psset_stats_accum(psset_stats_t *dst, psset_stats_t *src) { * bin) when we call psset_update_end. */ JEMALLOC_ALWAYS_INLINE void -psset_bin_stats_insert_remove(psset_t *psset, psset_bin_stats_t *binstats, - hpdata_t *ps, bool insert) { +psset_slab_stats_insert_remove(psset_stats_t *stats, + psset_bin_stats_t *binstats, hpdata_t *ps, bool insert) { size_t mul = insert ? (size_t)1 : (size_t)-1; + size_t nactive = hpdata_nactive_get(ps); + size_t ndirty = hpdata_ndirty_get(ps); + + stats->merged.npageslabs += mul * 1; + stats->merged.nactive += mul * nactive; + stats->merged.ndirty += mul * ndirty; + + /* + * Stats above are necessary for purging logic to work, everything + * below is to improve observability, thense is optional, so we don't + * update it, when stats disabled. + */ + if (!config_stats) { + return; + } + size_t huge_idx = (size_t)hpdata_huge_get(ps); - binstats[huge_idx].npageslabs += mul * 1; - binstats[huge_idx].nactive += mul * hpdata_nactive_get(ps); - binstats[huge_idx].ndirty += mul * hpdata_ndirty_get(ps); + stats->slabs[huge_idx].npageslabs += mul * 1; + stats->slabs[huge_idx].nactive += mul * nactive; + stats->slabs[huge_idx].ndirty += mul * ndirty; - psset->merged_stats.npageslabs += mul * 1; - psset->merged_stats.nactive += mul * hpdata_nactive_get(ps); - psset->merged_stats.ndirty += mul * hpdata_ndirty_get(ps); + binstats[huge_idx].npageslabs += mul * 1; + binstats[huge_idx].nactive += mul * nactive; + binstats[huge_idx].ndirty += mul * ndirty; if (config_debug) { - psset_bin_stats_t check_stats = {0}; - for (size_t huge = 0; huge <= 1; huge++) { - psset_bin_stats_accum(&check_stats, - &psset->stats.full_slabs[huge]); - psset_bin_stats_accum(&check_stats, - &psset->stats.empty_slabs[huge]); + psset_bin_stats_t check_stats[PSSET_NHUGE] = {{0}}; + for (int huge = 0; huge < PSSET_NHUGE; huge++) { + psset_bin_stats_accum( + &check_stats[huge], &stats->full_slabs[huge]); + psset_bin_stats_accum( + &check_stats[huge], &stats->empty_slabs[huge]); for (pszind_t pind = 0; pind < PSSET_NPSIZES; pind++) { - psset_bin_stats_accum(&check_stats, - &psset->stats.nonfull_slabs[pind][huge]); + psset_bin_stats_accum(&check_stats[huge], + &stats->nonfull_slabs[pind][huge]); } } - assert(psset->merged_stats.npageslabs - == check_stats.npageslabs); - assert(psset->merged_stats.nactive == check_stats.nactive); - assert(psset->merged_stats.ndirty == check_stats.ndirty); + + assert(stats->merged.npageslabs + == check_stats[0].npageslabs + check_stats[1].npageslabs); + assert(stats->merged.nactive + == check_stats[0].nactive + check_stats[1].nactive); + assert(stats->merged.ndirty + == check_stats[0].ndirty + check_stats[1].ndirty); + + for (int huge = 0; huge < PSSET_NHUGE; huge++) { + assert(stats->slabs[huge].npageslabs + == check_stats[huge].npageslabs); + assert(stats->slabs[huge].nactive + == check_stats[huge].nactive); + assert(stats->slabs[huge].ndirty + == check_stats[huge].ndirty); + } } } static void -psset_bin_stats_insert(psset_t *psset, psset_bin_stats_t *binstats, - hpdata_t *ps) { - psset_bin_stats_insert_remove(psset, binstats, ps, true); +psset_slab_stats_insert( + psset_stats_t *stats, psset_bin_stats_t *binstats, hpdata_t *ps) { + psset_slab_stats_insert_remove(stats, binstats, ps, true); } static void -psset_bin_stats_remove(psset_t *psset, psset_bin_stats_t *binstats, - hpdata_t *ps) { - psset_bin_stats_insert_remove(psset, binstats, ps, false); +psset_slab_stats_remove( + psset_stats_t *stats, psset_bin_stats_t *binstats, hpdata_t *ps) { + psset_slab_stats_insert_remove(stats, binstats, ps, false); +} + +static pszind_t +psset_hpdata_heap_index(const hpdata_t *ps) { + assert(!hpdata_full(ps)); + assert(!hpdata_empty(ps)); + size_t longest_free_range = hpdata_longest_free_range_get(ps); + pszind_t pind = sz_psz2ind( + sz_psz_quantize_floor(longest_free_range << LG_PAGE)); + assert(pind < PSSET_NPSIZES); + return pind; } static void -psset_hpdata_heap_remove(psset_t *psset, pszind_t pind, hpdata_t *ps) { +psset_hpdata_heap_remove(psset_t *psset, hpdata_t *ps) { + pszind_t pind = psset_hpdata_heap_index(ps); hpdata_age_heap_remove(&psset->pageslabs[pind], ps); if (hpdata_age_heap_empty(&psset->pageslabs[pind])) { fb_unset(psset->pageslab_bitmap, PSSET_NPSIZES, (size_t)pind); @@ -101,7 +144,8 @@ psset_hpdata_heap_remove(psset_t *psset, pszind_t pind, hpdata_t *ps) { } static void -psset_hpdata_heap_insert(psset_t *psset, pszind_t pind, hpdata_t *ps) { +psset_hpdata_heap_insert(psset_t *psset, hpdata_t *ps) { + pszind_t pind = psset_hpdata_heap_index(ps); if (hpdata_age_heap_empty(&psset->pageslabs[pind])) { fb_set(psset->pageslab_bitmap, PSSET_NPSIZES, (size_t)pind); } @@ -109,38 +153,30 @@ psset_hpdata_heap_insert(psset_t *psset, pszind_t pind, hpdata_t *ps) { } static void -psset_stats_insert(psset_t* psset, hpdata_t *ps) { +psset_stats_insert(psset_t *psset, hpdata_t *ps) { + psset_stats_t *stats = &psset->stats; if (hpdata_empty(ps)) { - psset_bin_stats_insert(psset, psset->stats.empty_slabs, ps); + psset_slab_stats_insert(stats, psset->stats.empty_slabs, ps); } else if (hpdata_full(ps)) { - psset_bin_stats_insert(psset, psset->stats.full_slabs, ps); + psset_slab_stats_insert(stats, psset->stats.full_slabs, ps); } else { - size_t longest_free_range = hpdata_longest_free_range_get(ps); - - pszind_t pind = sz_psz2ind(sz_psz_quantize_floor( - longest_free_range << LG_PAGE)); - assert(pind < PSSET_NPSIZES); - - psset_bin_stats_insert(psset, psset->stats.nonfull_slabs[pind], - ps); + pszind_t pind = psset_hpdata_heap_index(ps); + psset_slab_stats_insert( + stats, psset->stats.nonfull_slabs[pind], ps); } } static void psset_stats_remove(psset_t *psset, hpdata_t *ps) { + psset_stats_t *stats = &psset->stats; if (hpdata_empty(ps)) { - psset_bin_stats_remove(psset, psset->stats.empty_slabs, ps); + psset_slab_stats_remove(stats, psset->stats.empty_slabs, ps); } else if (hpdata_full(ps)) { - psset_bin_stats_remove(psset, psset->stats.full_slabs, ps); + psset_slab_stats_remove(stats, psset->stats.full_slabs, ps); } else { - size_t longest_free_range = hpdata_longest_free_range_get(ps); - - pszind_t pind = sz_psz2ind(sz_psz_quantize_floor( - longest_free_range << LG_PAGE)); - assert(pind < PSSET_NPSIZES); - - psset_bin_stats_remove(psset, psset->stats.nonfull_slabs[pind], - ps); + pszind_t pind = psset_hpdata_heap_index(ps); + psset_slab_stats_remove( + stats, psset->stats.nonfull_slabs[pind], ps); } } @@ -165,13 +201,7 @@ psset_alloc_container_insert(psset_t *psset, hpdata_t *ps) { * going to return them from a psset_pick_alloc call. */ } else { - size_t longest_free_range = hpdata_longest_free_range_get(ps); - - pszind_t pind = sz_psz2ind(sz_psz_quantize_floor( - longest_free_range << LG_PAGE)); - assert(pind < PSSET_NPSIZES); - - psset_hpdata_heap_insert(psset, pind, ps); + psset_hpdata_heap_insert(psset, ps); } } @@ -186,13 +216,7 @@ psset_alloc_container_remove(psset_t *psset, hpdata_t *ps) { } else if (hpdata_full(ps)) { /* Same as above -- do nothing in this case. */ } else { - size_t longest_free_range = hpdata_longest_free_range_get(ps); - - pszind_t pind = sz_psz2ind(sz_psz_quantize_floor( - longest_free_range << LG_PAGE)); - assert(pind < PSSET_NPSIZES); - - psset_hpdata_heap_remove(psset, pind, ps); + psset_hpdata_heap_remove(psset, ps); } } @@ -240,7 +264,7 @@ psset_maybe_remove_purge_list(psset_t *psset, hpdata_t *ps) { * purge LRU within a given dirtiness bucket. */ if (hpdata_purge_allowed_get(ps)) { - size_t ind = psset_purge_list_ind(ps); + size_t ind = psset_purge_list_ind(ps); hpdata_purge_list_t *purge_list = &psset->to_purge[ind]; hpdata_purge_list_remove(purge_list, ps); if (hpdata_purge_list_empty(purge_list)) { @@ -252,14 +276,13 @@ psset_maybe_remove_purge_list(psset_t *psset, hpdata_t *ps) { static void psset_maybe_insert_purge_list(psset_t *psset, hpdata_t *ps) { if (hpdata_purge_allowed_get(ps)) { - size_t ind = psset_purge_list_ind(ps); + size_t ind = psset_purge_list_ind(ps); hpdata_purge_list_t *purge_list = &psset->to_purge[ind]; if (hpdata_purge_list_empty(purge_list)) { fb_set(psset->purge_bitmap, PSSET_NPURGE_LISTS, ind); } hpdata_purge_list_append(purge_list, ps); } - } void @@ -313,18 +336,50 @@ psset_update_end(psset_t *psset, hpdata_t *ps) { hpdata_assert_consistent(ps); } +static hpdata_t * +psset_enumerate_search(psset_t *psset, pszind_t pind, size_t size) { + if (hpdata_age_heap_empty(&psset->pageslabs[pind])) { + return NULL; + } + + hpdata_t *ps = NULL; + hpdata_age_heap_enumerate_helper_t helper; + hpdata_age_heap_enumerate_prepare(&psset->pageslabs[pind], &helper, + PSSET_ENUMERATE_MAX_NUM, sizeof(helper.bfs_queue) / sizeof(void *)); + + while ((ps = hpdata_age_heap_enumerate_next( + &psset->pageslabs[pind], &helper))) { + if (hpdata_longest_free_range_get(ps) >= size) { + return ps; + } + } + + return NULL; +} + hpdata_t * psset_pick_alloc(psset_t *psset, size_t size) { assert((size & PAGE_MASK) == 0); assert(size <= HUGEPAGE); - pszind_t min_pind = sz_psz2ind(sz_psz_quantize_ceil(size)); - pszind_t pind = (pszind_t)fb_ffs(psset->pageslab_bitmap, PSSET_NPSIZES, - (size_t)min_pind); + pszind_t min_pind = sz_psz2ind(sz_psz_quantize_ceil(size)); + hpdata_t *ps = NULL; + + /* See comments in eset_first_fit for why we enumerate search below. */ + pszind_t pind_prev = sz_psz2ind(sz_psz_quantize_floor(size)); + if (sz_large_size_classes_disabled() && pind_prev < min_pind) { + ps = psset_enumerate_search(psset, pind_prev, size); + if (ps != NULL) { + return ps; + } + } + + pszind_t pind = (pszind_t)fb_ffs( + psset->pageslab_bitmap, PSSET_NPSIZES, (size_t)min_pind); if (pind == PSSET_NPSIZES) { return hpdata_empty_list_first(&psset->empty); } - hpdata_t *ps = hpdata_age_heap_first(&psset->pageslabs[pind]); + ps = hpdata_age_heap_first(&psset->pageslabs[pind]); if (ps == NULL) { return NULL; } @@ -335,17 +390,40 @@ psset_pick_alloc(psset_t *psset, size_t size) { } hpdata_t * -psset_pick_purge(psset_t *psset) { - ssize_t ind_ssz = fb_fls(psset->purge_bitmap, PSSET_NPURGE_LISTS, - PSSET_NPURGE_LISTS - 1); - if (ind_ssz < 0) { - return NULL; +psset_pick_purge(psset_t *psset, const nstime_t *now) { + size_t max_bit = PSSET_NPURGE_LISTS - 1; + while (1) { + ssize_t ind_ssz = fb_fls( + psset->purge_bitmap, PSSET_NPURGE_LISTS, max_bit); + if (ind_ssz < 0) { + break; + } + pszind_t ind = (pszind_t)ind_ssz; + assert(ind < PSSET_NPURGE_LISTS); + hpdata_t *ps = hpdata_purge_list_first(&psset->to_purge[ind]); + assert(ps != NULL); + if (now == NULL) { + return ps; + } + /* + * We only check the first page (it had least recent hpa_alloc + * or hpa_dalloc). It is possible that some page in the list + * would meet the time, but we only guarantee the min delay. If + * we want to get the one that changed the state to purgable + * the earliest, we would change the list into a heap ordered by + * time. We will use benchmark to make a decision. + */ + const nstime_t *tm_allowed = hpdata_time_purge_allowed_get(ps); + if (nstime_compare(tm_allowed, now) <= 0) { + return ps; + } + if (ind == 0) { + break; + } + max_bit = ind - 1; } - pszind_t ind = (pszind_t)ind_ssz; - assert(ind < PSSET_NPURGE_LISTS); - hpdata_t *ps = hpdata_purge_list_first(&psset->to_purge[ind]); - assert(ps != NULL); - return ps; + /* No page is ready yet */ + return NULL; } hpdata_t * diff --git a/dep/jemalloc/src/rtree.c b/dep/jemalloc/src/rtree.c index 6496b5afdc4a0..ac27f82992c4a 100644 --- a/dep/jemalloc/src/rtree.c +++ b/dep/jemalloc/src/rtree.c @@ -20,7 +20,7 @@ rtree_new(rtree_t *rtree, base_t *base, bool zeroed) { rtree->base = base; if (malloc_mutex_init(&rtree->init_lock, "rtree", WITNESS_RANK_RTREE, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } @@ -29,19 +29,19 @@ rtree_new(rtree_t *rtree, base_t *base, bool zeroed) { static rtree_node_elm_t * rtree_node_alloc(tsdn_t *tsdn, rtree_t *rtree, size_t nelms) { - return (rtree_node_elm_t *)base_alloc(tsdn, rtree->base, - nelms * sizeof(rtree_node_elm_t), CACHELINE); + return (rtree_node_elm_t *)base_alloc_rtree( + tsdn, rtree->base, nelms * sizeof(rtree_node_elm_t)); } static rtree_leaf_elm_t * rtree_leaf_alloc(tsdn_t *tsdn, rtree_t *rtree, size_t nelms) { - return (rtree_leaf_elm_t *)base_alloc(tsdn, rtree->base, - nelms * sizeof(rtree_leaf_elm_t), CACHELINE); + return (rtree_leaf_elm_t *)base_alloc_rtree( + tsdn, rtree->base, nelms * sizeof(rtree_leaf_elm_t)); } static rtree_node_elm_t * -rtree_node_init(tsdn_t *tsdn, rtree_t *rtree, unsigned level, - atomic_p_t *elmp) { +rtree_node_init( + tsdn_t *tsdn, rtree_t *rtree, unsigned level, atomic_p_t *elmp) { malloc_mutex_lock(tsdn, &rtree->init_lock); /* * If *elmp is non-null, then it was initialized with the init lock @@ -49,8 +49,8 @@ rtree_node_init(tsdn_t *tsdn, rtree_t *rtree, unsigned level, */ rtree_node_elm_t *node = atomic_load_p(elmp, ATOMIC_RELAXED); if (node == NULL) { - node = rtree_node_alloc(tsdn, rtree, ZU(1) << - rtree_levels[level].bits); + node = rtree_node_alloc( + tsdn, rtree, ZU(1) << rtree_levels[level].bits); if (node == NULL) { malloc_mutex_unlock(tsdn, &rtree->init_lock); return NULL; @@ -75,8 +75,8 @@ rtree_leaf_init(tsdn_t *tsdn, rtree_t *rtree, atomic_p_t *elmp) { */ rtree_leaf_elm_t *leaf = atomic_load_p(elmp, ATOMIC_RELAXED); if (leaf == NULL) { - leaf = rtree_leaf_alloc(tsdn, rtree, ZU(1) << - rtree_levels[RTREE_HEIGHT-1].bits); + leaf = rtree_leaf_alloc( + tsdn, rtree, ZU(1) << rtree_levels[RTREE_HEIGHT - 1].bits); if (leaf == NULL) { malloc_mutex_unlock(tsdn, &rtree->init_lock); return NULL; @@ -107,11 +107,11 @@ rtree_child_node_tryread(rtree_node_elm_t *elm, bool dependent) { rtree_node_elm_t *node; if (dependent) { - node = (rtree_node_elm_t *)atomic_load_p(&elm->child, - ATOMIC_RELAXED); + node = (rtree_node_elm_t *)atomic_load_p( + &elm->child, ATOMIC_RELAXED); } else { - node = (rtree_node_elm_t *)atomic_load_p(&elm->child, - ATOMIC_ACQUIRE); + node = (rtree_node_elm_t *)atomic_load_p( + &elm->child, ATOMIC_ACQUIRE); } assert(!dependent || node != NULL); @@ -136,11 +136,11 @@ rtree_child_leaf_tryread(rtree_node_elm_t *elm, bool dependent) { rtree_leaf_elm_t *leaf; if (dependent) { - leaf = (rtree_leaf_elm_t *)atomic_load_p(&elm->child, - ATOMIC_RELAXED); + leaf = (rtree_leaf_elm_t *)atomic_load_p( + &elm->child, ATOMIC_RELAXED); } else { - leaf = (rtree_leaf_elm_t *)atomic_load_p(&elm->child, - ATOMIC_ACQUIRE); + leaf = (rtree_leaf_elm_t *)atomic_load_p( + &elm->child, ATOMIC_ACQUIRE); } assert(!dependent || leaf != NULL); @@ -181,53 +181,54 @@ rtree_leaf_elm_lookup_hard(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, } } -#define RTREE_GET_CHILD(level) { \ - assert(level < RTREE_HEIGHT-1); \ - if (level != 0 && !dependent && \ - unlikely(!rtree_node_valid(node))) { \ - return NULL; \ - } \ - uintptr_t subkey = rtree_subkey(key, level); \ - if (level + 2 < RTREE_HEIGHT) { \ - node = init_missing ? \ - rtree_child_node_read(tsdn, rtree, \ - &node[subkey], level, dependent) : \ - rtree_child_node_tryread(&node[subkey], \ - dependent); \ - } else { \ - leaf = init_missing ? \ - rtree_child_leaf_read(tsdn, rtree, \ - &node[subkey], level, dependent) : \ - rtree_child_leaf_tryread(&node[subkey], \ - dependent); \ - } \ +#define RTREE_GET_CHILD(level) \ + { \ + assert(level < RTREE_HEIGHT - 1); \ + if (level != 0 && !dependent \ + && unlikely(!rtree_node_valid(node))) { \ + return NULL; \ + } \ + uintptr_t subkey = rtree_subkey(key, level); \ + if (level + 2 < RTREE_HEIGHT) { \ + node = init_missing \ + ? rtree_child_node_read(tsdn, rtree, \ + &node[subkey], level, dependent) \ + : rtree_child_node_tryread( \ + &node[subkey], dependent); \ + } else { \ + leaf = init_missing \ + ? rtree_child_leaf_read(tsdn, rtree, \ + &node[subkey], level, dependent) \ + : rtree_child_leaf_tryread( \ + &node[subkey], dependent); \ + } \ } /* * Cache replacement upon hard lookup (i.e. L1 & L2 rtree cache miss): * (1) evict last entry in L2 cache; (2) move the collision slot from L1 * cache down to L2; and 3) fill L1. */ -#define RTREE_GET_LEAF(level) { \ - assert(level == RTREE_HEIGHT-1); \ - if (!dependent && unlikely(!rtree_leaf_valid(leaf))) { \ - return NULL; \ - } \ - if (RTREE_CTX_NCACHE_L2 > 1) { \ - memmove(&rtree_ctx->l2_cache[1], \ - &rtree_ctx->l2_cache[0], \ - sizeof(rtree_ctx_cache_elm_t) * \ - (RTREE_CTX_NCACHE_L2 - 1)); \ - } \ - size_t slot = rtree_cache_direct_map(key); \ - rtree_ctx->l2_cache[0].leafkey = \ - rtree_ctx->cache[slot].leafkey; \ - rtree_ctx->l2_cache[0].leaf = \ - rtree_ctx->cache[slot].leaf; \ - uintptr_t leafkey = rtree_leafkey(key); \ - rtree_ctx->cache[slot].leafkey = leafkey; \ - rtree_ctx->cache[slot].leaf = leaf; \ - uintptr_t subkey = rtree_subkey(key, level); \ - return &leaf[subkey]; \ +#define RTREE_GET_LEAF(level) \ + { \ + assert(level == RTREE_HEIGHT - 1); \ + if (!dependent && unlikely(!rtree_leaf_valid(leaf))) { \ + return NULL; \ + } \ + if (RTREE_CTX_NCACHE_L2 > 1) { \ + memmove(&rtree_ctx->l2_cache[1], \ + &rtree_ctx->l2_cache[0], \ + sizeof(rtree_ctx_cache_elm_t) \ + * (RTREE_CTX_NCACHE_L2 - 1)); \ + } \ + size_t slot = rtree_cache_direct_map(key); \ + rtree_ctx->l2_cache[0].leafkey = \ + rtree_ctx->cache[slot].leafkey; \ + rtree_ctx->l2_cache[0].leaf = rtree_ctx->cache[slot].leaf; \ + uintptr_t leafkey = rtree_leafkey(key); \ + rtree_ctx->cache[slot].leafkey = leafkey; \ + rtree_ctx->cache[slot].leaf = leaf; \ + uintptr_t subkey = rtree_subkey(key, level); \ + return &leaf[subkey]; \ } if (RTREE_HEIGHT > 1) { RTREE_GET_CHILD(0) @@ -236,11 +237,11 @@ rtree_leaf_elm_lookup_hard(tsdn_t *tsdn, rtree_t *rtree, rtree_ctx_t *rtree_ctx, RTREE_GET_CHILD(1) } if (RTREE_HEIGHT > 3) { - for (unsigned i = 2; i < RTREE_HEIGHT-1; i++) { + for (unsigned i = 2; i < RTREE_HEIGHT - 1; i++) { RTREE_GET_CHILD(i) } } - RTREE_GET_LEAF(RTREE_HEIGHT-1) + RTREE_GET_LEAF(RTREE_HEIGHT - 1) #undef RTREE_GET_CHILD #undef RTREE_GET_LEAF not_reached(); diff --git a/dep/jemalloc/src/safety_check.c b/dep/jemalloc/src/safety_check.c index 209fdda92b5cd..d052718daeb10 100644 --- a/dep/jemalloc/src/safety_check.c +++ b/dep/jemalloc/src/safety_check.c @@ -3,23 +3,44 @@ static safety_check_abort_hook_t safety_check_abort; -void safety_check_fail_sized_dealloc(bool current_dealloc, const void *ptr, +void +safety_check_fail_sized_dealloc(bool current_dealloc, const void *ptr, size_t true_size, size_t input_size) { - char *src = current_dealloc ? "the current pointer being freed" : - "in thread cache, possibly from previous deallocations"; + char *src = current_dealloc + ? "the current pointer being freed" + : "in thread cache, possibly from previous deallocations"; + char *suggest_debug_build = config_debug ? "" : " --enable-debug or"; - safety_check_fail(": size mismatch detected (true size %zu " + safety_check_fail( + ": size mismatch detected (true size %zu " "vs input size %zu), likely caused by application sized " - "deallocation bugs (source address: %p, %s). Suggest building with " - "--enable-debug or address sanitizer for debugging. Abort.\n", - true_size, input_size, ptr, src); + "deallocation bugs (source address: %p, %s). Suggest building with" + "%s address sanitizer for debugging. Abort.\n", + true_size, input_size, ptr, src, suggest_debug_build); } -void safety_check_set_abort(safety_check_abort_hook_t abort_fn) { +void +safety_check_set_abort(safety_check_abort_hook_t abort_fn) { safety_check_abort = abort_fn; } -void safety_check_fail(const char *format, ...) { +/* + * In addition to malloc_write, also embed hint msg in the abort function name + * because there are cases only logging crash stack traces. + */ +static void +safety_check_detected_heap_corruption___run_address_sanitizer_build_to_debug( + const char *buf) { + if (safety_check_abort == NULL) { + malloc_write(buf); + abort(); + } else { + safety_check_abort(buf); + } +} + +void +safety_check_fail(const char *format, ...) { char buf[MALLOC_PRINTF_BUFSIZE]; va_list ap; @@ -27,10 +48,6 @@ void safety_check_fail(const char *format, ...) { malloc_vsnprintf(buf, MALLOC_PRINTF_BUFSIZE, format, ap); va_end(ap); - if (safety_check_abort == NULL) { - malloc_write(buf); - abort(); - } else { - safety_check_abort(buf); - } + safety_check_detected_heap_corruption___run_address_sanitizer_build_to_debug( + buf); } diff --git a/dep/jemalloc/src/san.c b/dep/jemalloc/src/san.c index 6e51291135c75..5448c67fb1a4b 100644 --- a/dep/jemalloc/src/san.c +++ b/dep/jemalloc/src/san.c @@ -20,43 +20,43 @@ ssize_t opt_lg_san_uaf_align = SAN_LG_UAF_ALIGN_DEFAULT; uintptr_t san_cache_bin_nonfast_mask = SAN_CACHE_BIN_NONFAST_MASK_DEFAULT; static inline void -san_find_guarded_addr(edata_t *edata, uintptr_t *guard1, uintptr_t *guard2, - uintptr_t *addr, size_t size, bool left, bool right) { +san_find_guarded_addr(edata_t *edata, void **guard1, void **guard2, void **addr, + size_t size, bool left, bool right) { assert(!edata_guarded_get(edata)); assert(size % PAGE == 0); - *addr = (uintptr_t)edata_base_get(edata); + *addr = edata_base_get(edata); if (left) { *guard1 = *addr; - *addr += SAN_PAGE_GUARD; + *addr = ((byte_t *)*addr) + SAN_PAGE_GUARD; } else { - *guard1 = 0; + *guard1 = NULL; } if (right) { - *guard2 = *addr + size; + *guard2 = ((byte_t *)*addr) + size; } else { - *guard2 = 0; + *guard2 = NULL; } } static inline void -san_find_unguarded_addr(edata_t *edata, uintptr_t *guard1, uintptr_t *guard2, - uintptr_t *addr, size_t size, bool left, bool right) { +san_find_unguarded_addr(edata_t *edata, void **guard1, void **guard2, + void **addr, size_t size, bool left, bool right) { assert(edata_guarded_get(edata)); assert(size % PAGE == 0); - *addr = (uintptr_t)edata_base_get(edata); + *addr = edata_base_get(edata); if (right) { - *guard2 = *addr + size; + *guard2 = ((byte_t *)*addr) + size; } else { - *guard2 = 0; + *guard2 = NULL; } if (left) { - *guard1 = *addr - SAN_PAGE_GUARD; - assert(*guard1 != 0); + *guard1 = ((byte_t *)*addr) - SAN_PAGE_GUARD; + assert(*guard1 != NULL); *addr = *guard1; } else { - *guard1 = 0; + *guard1 = NULL; } } @@ -73,16 +73,16 @@ san_guard_pages(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, emap_t *emap, ? san_two_side_unguarded_sz(size_with_guards) : san_one_side_unguarded_sz(size_with_guards); - uintptr_t guard1, guard2, addr; - san_find_guarded_addr(edata, &guard1, &guard2, &addr, usize, left, - right); + void *guard1, *guard2, *addr; + san_find_guarded_addr( + edata, &guard1, &guard2, &addr, usize, left, right); assert(edata_state_get(edata) == extent_state_active); - ehooks_guard(tsdn, ehooks, (void *)guard1, (void *)guard2); + ehooks_guard(tsdn, ehooks, guard1, guard2); /* Update the guarded addr and usable size of the edata. */ edata_size_set(edata, usize); - edata_addr_set(edata, (void *)addr); + edata_addr_set(edata, addr); edata_guarded_set(edata, true); if (remap) { @@ -108,9 +108,9 @@ san_unguard_pages_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, ? san_two_side_guarded_sz(size) : san_one_side_guarded_sz(size); - uintptr_t guard1, guard2, addr; - san_find_unguarded_addr(edata, &guard1, &guard2, &addr, size, left, - right); + void *guard1, *guard2, *addr; + san_find_unguarded_addr( + edata, &guard1, &guard2, &addr, size, left, right); ehooks_unguard(tsdn, ehooks, (void *)guard1, (void *)guard2); @@ -130,15 +130,15 @@ san_unguard_pages_impl(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, } void -san_unguard_pages(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - emap_t *emap, bool left, bool right) { +san_unguard_pages(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, emap_t *emap, + bool left, bool right) { san_unguard_pages_impl(tsdn, ehooks, edata, emap, left, right, /* remap */ true); } void -san_unguard_pages_pre_destroy(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, - emap_t *emap) { +san_unguard_pages_pre_destroy( + tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, emap_t *emap) { emap_assert_not_mapped(tsdn, emap, edata); /* * We don't want to touch the emap of about to be destroyed extents, as @@ -146,7 +146,7 @@ san_unguard_pages_pre_destroy(tsdn_t *tsdn, ehooks_t *ehooks, edata_t *edata, * we unguard the extents to the right, because retained extents only * own their right guard page per san_bump_alloc's logic. */ - san_unguard_pages_impl(tsdn, ehooks, edata, emap, /* left */ false, + san_unguard_pages_impl(tsdn, ehooks, edata, emap, /* left */ false, /* right */ true, /* remap */ false); } @@ -163,9 +163,9 @@ san_stashed_corrupted(void *ptr, size_t size) { void *first, *mid, *last; san_junk_ptr_locations(ptr, size, &first, &mid, &last); - if (*(uintptr_t *)first != uaf_detect_junk || - *(uintptr_t *)mid != uaf_detect_junk || - *(uintptr_t *)last != uaf_detect_junk) { + if (*(uintptr_t *)first != uaf_detect_junk + || *(uintptr_t *)mid != uaf_detect_junk + || *(uintptr_t *)last != uaf_detect_junk) { return true; } @@ -183,7 +183,8 @@ san_check_stashed_ptrs(void **ptrs, size_t nstashed, size_t usize) { assert(stashed != NULL); assert(cache_bin_nonfast_aligned(stashed)); if (unlikely(san_stashed_corrupted(stashed, usize))) { - safety_check_fail(": Write-after-free " + safety_check_fail( + ": Write-after-free " "detected on deallocated pointer %p (size %zu).\n", stashed, usize); } diff --git a/dep/jemalloc/src/san_bump.c b/dep/jemalloc/src/san_bump.c index 888974555f285..110312902c9d0 100644 --- a/dep/jemalloc/src/san_bump.c +++ b/dep/jemalloc/src/san_bump.c @@ -7,31 +7,31 @@ #include "jemalloc/internal/ehooks.h" #include "jemalloc/internal/edata_cache.h" -static bool -san_bump_grow_locked(tsdn_t *tsdn, san_bump_alloc_t *sba, pac_t *pac, - ehooks_t *ehooks, size_t size); +static bool san_bump_grow_locked(tsdn_t *tsdn, san_bump_alloc_t *sba, + pac_t *pac, ehooks_t *ehooks, size_t size); edata_t * -san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t* sba, pac_t *pac, +san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t *sba, pac_t *pac, ehooks_t *ehooks, size_t size, bool zero) { assert(san_bump_enabled()); - edata_t* to_destroy; - size_t guarded_size = san_one_side_guarded_sz(size); + edata_t *to_destroy; + size_t guarded_size = san_one_side_guarded_sz(size); malloc_mutex_lock(tsdn, &sba->mtx); - if (sba->curr_reg == NULL || - edata_size_get(sba->curr_reg) < guarded_size) { + if (sba->curr_reg == NULL + || edata_size_get(sba->curr_reg) < guarded_size) { /* * If the current region can't accommodate the allocation, * try replacing it with a larger one and destroy current if the * replacement succeeds. */ to_destroy = sba->curr_reg; - bool err = san_bump_grow_locked(tsdn, sba, pac, ehooks, - guarded_size); + bool err = san_bump_grow_locked( + tsdn, sba, pac, ehooks, guarded_size); if (err) { + sba->curr_reg = to_destroy; goto label_err; } } else { @@ -40,9 +40,9 @@ san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t* sba, pac_t *pac, assert(guarded_size <= edata_size_get(sba->curr_reg)); size_t trail_size = edata_size_get(sba->curr_reg) - guarded_size; - edata_t* edata; + edata_t *edata; if (trail_size != 0) { - edata_t* curr_reg_trail = extent_split_wrapper(tsdn, pac, + edata_t *curr_reg_trail = extent_split_wrapper(tsdn, pac, ehooks, sba->curr_reg, guarded_size, trail_size, /* holding_core_locks */ true); if (curr_reg_trail == NULL) { @@ -69,9 +69,8 @@ san_bump_alloc(tsdn_t *tsdn, san_bump_alloc_t* sba, pac_t *pac, /* right */ true, /* remap */ true); if (extent_commit_zero(tsdn, ehooks, edata, /* commit */ true, zero, - /* growing_retained */ false)) { - extent_record(tsdn, pac, ehooks, &pac->ecache_retained, - edata); + /* growing_retained */ false)) { + extent_record(tsdn, pac, ehooks, &pac->ecache_retained, edata); return NULL; } @@ -90,9 +89,10 @@ san_bump_grow_locked(tsdn_t *tsdn, san_bump_alloc_t *sba, pac_t *pac, ehooks_t *ehooks, size_t size) { malloc_mutex_assert_owner(tsdn, &sba->mtx); - bool committed = false, zeroed = false; - size_t alloc_size = size > SBA_RETAINED_ALLOC_SIZE ? size : - SBA_RETAINED_ALLOC_SIZE; + bool committed = false, zeroed = false; + size_t alloc_size = size > SBA_RETAINED_ALLOC_SIZE + ? size + : SBA_RETAINED_ALLOC_SIZE; assert((alloc_size & PAGE_MASK) == 0); sba->curr_reg = extent_alloc_wrapper(tsdn, pac, ehooks, NULL, alloc_size, PAGE, zeroed, &committed, diff --git a/dep/jemalloc/src/sc.c b/dep/jemalloc/src/sc.c index e4a94d89f2454..014ab95d8d356 100644 --- a/dep/jemalloc/src/sc.c +++ b/dep/jemalloc/src/sc.c @@ -27,7 +27,7 @@ slab_size(int lg_page, int lg_base, int lg_delta, int ndelta) { size_t try_slab_size = page; size_t try_nregs = try_slab_size / reg_size; size_t perfect_slab_size = 0; - bool perfect = false; + bool perfect = false; /* * This loop continues until we find the least common multiple of the * page size and size class size. Size classes are all of the form @@ -106,7 +106,7 @@ size_classes( /* Outputs that we update as we go. */ size_t lookup_maxclass = 0; size_t small_maxclass = 0; - int lg_large_minclass = 0; + int lg_large_minclass = 0; size_t large_maxclass = 0; /* Tiny size classes. */ @@ -209,7 +209,7 @@ size_classes( lg_delta++; } /* Additional outputs. */ - int nsizes = index; + int nsizes = index; unsigned lg_ceil_nsizes = lg_ceil(nsizes); /* Fill in the output data. */ @@ -292,8 +292,8 @@ sc_data_update_slab_size(sc_data_t *data, size_t begin, size_t end, int pgs) { if (!sc->bin) { break; } - size_t reg_size = reg_size_compute(sc->lg_base, sc->lg_delta, - sc->ndelta); + size_t reg_size = reg_size_compute( + sc->lg_base, sc->lg_delta, sc->ndelta); if (begin <= reg_size && reg_size <= end) { sc_data_update_sc_slab_size(sc, reg_size, pgs); } diff --git a/dep/jemalloc/src/sec.c b/dep/jemalloc/src/sec.c index df6755904951e..a32545370cf77 100644 --- a/dep/jemalloc/src/sec.c +++ b/dep/jemalloc/src/sec.c @@ -2,90 +2,58 @@ #include "jemalloc/internal/jemalloc_internal_includes.h" #include "jemalloc/internal/sec.h" +#include "jemalloc/internal/jemalloc_probe.h" -static edata_t *sec_alloc(tsdn_t *tsdn, pai_t *self, size_t size, - size_t alignment, bool zero, bool guarded, bool frequent_reuse, - bool *deferred_work_generated); -static bool sec_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool zero, bool *deferred_work_generated); -static bool sec_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, - size_t old_size, size_t new_size, bool *deferred_work_generated); -static void sec_dalloc(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated); - -static void +static bool sec_bin_init(sec_bin_t *bin) { - bin->being_batch_filled = false; bin->bytes_cur = 0; + sec_bin_stats_init(&bin->stats); edata_list_active_init(&bin->freelist); + bool err = malloc_mutex_init(&bin->mtx, "sec_bin", WITNESS_RANK_SEC_BIN, + malloc_mutex_rank_exclusive); + if (err) { + return true; + } + + return false; } bool -sec_init(tsdn_t *tsdn, sec_t *sec, base_t *base, pai_t *fallback, - const sec_opts_t *opts) { +sec_init(tsdn_t *tsdn, sec_t *sec, base_t *base, const sec_opts_t *opts) { + sec->opts = *opts; + if (opts->nshards == 0) { + return false; + } assert(opts->max_alloc >= PAGE); - size_t max_alloc = PAGE_FLOOR(opts->max_alloc); + /* + * Same as tcache, sec do not cache allocs/dallocs larger than + * USIZE_GROW_SLOW_THRESHOLD because the usize above this increases + * by PAGE and the number of usizes is too large. + */ + assert(opts->max_alloc <= USIZE_GROW_SLOW_THRESHOLD); + + size_t max_alloc = PAGE_FLOOR(opts->max_alloc); pszind_t npsizes = sz_psz2ind(max_alloc) + 1; - size_t sz_shards = opts->nshards * sizeof(sec_shard_t); - size_t sz_bins = opts->nshards * (size_t)npsizes * sizeof(sec_bin_t); - size_t sz_alloc = sz_shards + sz_bins; - void *dynalloc = base_alloc(tsdn, base, sz_alloc, CACHELINE); + size_t ntotal_bins = opts->nshards * (size_t)npsizes; + size_t sz_bins = sizeof(sec_bin_t) * ntotal_bins; + void *dynalloc = base_alloc(tsdn, base, sz_bins, CACHELINE); if (dynalloc == NULL) { return true; } - sec_shard_t *shard_cur = (sec_shard_t *)dynalloc; - sec->shards = shard_cur; - sec_bin_t *bin_cur = (sec_bin_t *)&shard_cur[opts->nshards]; - /* Just for asserts, below. */ - sec_bin_t *bin_start = bin_cur; - - for (size_t i = 0; i < opts->nshards; i++) { - sec_shard_t *shard = shard_cur; - shard_cur++; - bool err = malloc_mutex_init(&shard->mtx, "sec_shard", - WITNESS_RANK_SEC_SHARD, malloc_mutex_rank_exclusive); - if (err) { + sec->bins = (sec_bin_t *)dynalloc; + for (pszind_t j = 0; j < ntotal_bins; j++) { + if (sec_bin_init(&sec->bins[j])) { return true; } - shard->enabled = true; - shard->bins = bin_cur; - for (pszind_t j = 0; j < npsizes; j++) { - sec_bin_init(&shard->bins[j]); - bin_cur++; - } - shard->bytes_cur = 0; - shard->to_flush_next = 0; } - /* - * Should have exactly matched the bin_start to the first unused byte - * after the shards. - */ - assert((void *)shard_cur == (void *)bin_start); - /* And the last bin to use up the last bytes of the allocation. */ - assert((char *)bin_cur == ((char *)dynalloc + sz_alloc)); - sec->fallback = fallback; - - - sec->opts = *opts; sec->npsizes = npsizes; - /* - * Initialize these last so that an improper use of an SEC whose - * initialization failed will segfault in an easy-to-spot way. - */ - sec->pai.alloc = &sec_alloc; - sec->pai.alloc_batch = &pai_alloc_batch_default; - sec->pai.expand = &sec_expand; - sec->pai.shrink = &sec_shrink; - sec->pai.dalloc = &sec_dalloc; - sec->pai.dalloc_batch = &pai_dalloc_batch_default; - return false; } -static sec_shard_t * +static uint8_t sec_shard_pick(tsdn_t *tsdn, sec_t *sec) { /* * Eventually, we should implement affinity, tracking source shard using @@ -93,9 +61,9 @@ sec_shard_pick(tsdn_t *tsdn, sec_t *sec) { * distribute across all shards. */ if (tsdn_null(tsdn)) { - return &sec->shards[0]; + return 0; } - tsd_t *tsd = tsdn_tsd(tsdn); + tsd_t *tsd = tsdn_tsd(tsdn); uint8_t *idxp = tsd_sec_shardp_get(tsd); if (*idxp == (uint8_t)-1) { /* @@ -104,319 +72,314 @@ sec_shard_pick(tsdn_t *tsdn, sec_t *sec) { * number to store 32 bits, since we'll deliberately overflow * when we multiply by the number of shards. */ - uint64_t rand32 = prng_lg_range_u64(tsd_prng_statep_get(tsd), 32); - uint32_t idx = - (uint32_t)((rand32 * (uint64_t)sec->opts.nshards) >> 32); + uint64_t rand32 = prng_lg_range_u64( + tsd_prng_statep_get(tsd), 32); + uint32_t idx = (uint32_t)((rand32 * (uint64_t)sec->opts.nshards) + >> 32); assert(idx < (uint32_t)sec->opts.nshards); *idxp = (uint8_t)idx; } - return &sec->shards[*idxp]; + return *idxp; } -/* - * Perhaps surprisingly, this can be called on the alloc pathways; if we hit an - * empty cache, we'll try to fill it, which can push the shard over it's limit. - */ -static void -sec_flush_some_and_unlock(tsdn_t *tsdn, sec_t *sec, sec_shard_t *shard) { - malloc_mutex_assert_owner(tsdn, &shard->mtx); - edata_list_active_t to_flush; - edata_list_active_init(&to_flush); - while (shard->bytes_cur > sec->opts.bytes_after_flush) { - /* Pick a victim. */ - sec_bin_t *bin = &shard->bins[shard->to_flush_next]; - - /* Update our victim-picking state. */ - shard->to_flush_next++; - if (shard->to_flush_next == sec->npsizes) { - shard->to_flush_next = 0; - } - - assert(shard->bytes_cur >= bin->bytes_cur); - if (bin->bytes_cur != 0) { - shard->bytes_cur -= bin->bytes_cur; - bin->bytes_cur = 0; - edata_list_active_concat(&to_flush, &bin->freelist); - } - /* - * Either bin->bytes_cur was 0, in which case we didn't touch - * the bin list but it should be empty anyways (or else we - * missed a bytes_cur update on a list modification), or it - * *was* 0 and we emptied it ourselves. Either way, it should - * be empty now. - */ - assert(edata_list_active_empty(&bin->freelist)); - } - - malloc_mutex_unlock(tsdn, &shard->mtx); - bool deferred_work_generated = false; - pai_dalloc_batch(tsdn, sec->fallback, &to_flush, - &deferred_work_generated); +static sec_bin_t * +sec_bin_pick(sec_t *sec, uint8_t shard, pszind_t pszind) { + assert(shard < sec->opts.nshards); + size_t ind = (size_t)shard * sec->npsizes + pszind; + assert(ind < sec->npsizes * sec->opts.nshards); + return &sec->bins[ind]; } static edata_t * -sec_shard_alloc_locked(tsdn_t *tsdn, sec_t *sec, sec_shard_t *shard, - sec_bin_t *bin) { - malloc_mutex_assert_owner(tsdn, &shard->mtx); - if (!shard->enabled) { - return NULL; - } +sec_bin_alloc_locked(tsdn_t *tsdn, sec_t *sec, sec_bin_t *bin, size_t size) { + malloc_mutex_assert_owner(tsdn, &bin->mtx); + edata_t *edata = edata_list_active_first(&bin->freelist); if (edata != NULL) { + assert(!edata_list_active_empty(&bin->freelist)); edata_list_active_remove(&bin->freelist, edata); - assert(edata_size_get(edata) <= bin->bytes_cur); - bin->bytes_cur -= edata_size_get(edata); - assert(edata_size_get(edata) <= shard->bytes_cur); - shard->bytes_cur -= edata_size_get(edata); + size_t sz = edata_size_get(edata); + assert(sz <= bin->bytes_cur && sz > 0); + bin->bytes_cur -= sz; + bin->stats.nhits++; } return edata; } static edata_t * -sec_batch_fill_and_alloc(tsdn_t *tsdn, sec_t *sec, sec_shard_t *shard, - sec_bin_t *bin, size_t size) { - malloc_mutex_assert_not_owner(tsdn, &shard->mtx); - - edata_list_active_t result; - edata_list_active_init(&result); - bool deferred_work_generated = false; - size_t nalloc = pai_alloc_batch(tsdn, sec->fallback, size, - 1 + sec->opts.batch_fill_extra, &result, &deferred_work_generated); - - edata_t *ret = edata_list_active_first(&result); - if (ret != NULL) { - edata_list_active_remove(&result, ret); +sec_multishard_trylock_alloc( + tsdn_t *tsdn, sec_t *sec, size_t size, pszind_t pszind) { + assert(sec->opts.nshards > 0); + + uint8_t cur_shard = sec_shard_pick(tsdn, sec); + sec_bin_t *bin; + for (size_t i = 0; i < sec->opts.nshards; ++i) { + bin = sec_bin_pick(sec, cur_shard, pszind); + if (!malloc_mutex_trylock(tsdn, &bin->mtx)) { + edata_t *edata = sec_bin_alloc_locked( + tsdn, sec, bin, size); + malloc_mutex_unlock(tsdn, &bin->mtx); + if (edata != NULL) { + JE_USDT(sec_alloc, 5, sec, bin, edata, size, + /* frequent_reuse */ 1); + return edata; + } + } + cur_shard++; + if (cur_shard == sec->opts.nshards) { + cur_shard = 0; + } } - - malloc_mutex_lock(tsdn, &shard->mtx); - bin->being_batch_filled = false; /* - * Handle the easy case first: nothing to cache. Note that this can - * only happen in case of OOM, since sec_alloc checks the expected - * number of allocs, and doesn't bother going down the batch_fill - * pathway if there won't be anything left to cache. So to be in this - * code path, we must have asked for > 1 alloc, but only gotten 1 back. + * TODO: Benchmark whether it is worth blocking on all shards here before + * declaring a miss. That could recover more remote-shard hits under + * contention, but it also changes the allocation latency policy. */ - if (nalloc <= 1) { - malloc_mutex_unlock(tsdn, &shard->mtx); - return ret; - } - - size_t new_cached_bytes = (nalloc - 1) * size; - - edata_list_active_concat(&bin->freelist, &result); - bin->bytes_cur += new_cached_bytes; - shard->bytes_cur += new_cached_bytes; - - if (shard->bytes_cur > sec->opts.max_bytes) { - sec_flush_some_and_unlock(tsdn, sec, shard); - } else { - malloc_mutex_unlock(tsdn, &shard->mtx); + assert(cur_shard == sec_shard_pick(tsdn, sec)); + bin = sec_bin_pick(sec, cur_shard, pszind); + malloc_mutex_lock(tsdn, &bin->mtx); + edata_t *edata = sec_bin_alloc_locked(tsdn, sec, bin, size); + if (edata == NULL) { + /* Only now we know it is a miss. */ + bin->stats.nmisses++; } - - return ret; + malloc_mutex_unlock(tsdn, &bin->mtx); + JE_USDT(sec_alloc, 5, sec, bin, edata, size, /* frequent_reuse */ 1); + return edata; } -static edata_t * -sec_alloc(tsdn_t *tsdn, pai_t *self, size_t size, size_t alignment, bool zero, - bool guarded, bool frequent_reuse, bool *deferred_work_generated) { - assert((size & PAGE_MASK) == 0); - assert(!guarded); - - sec_t *sec = (sec_t *)self; - - if (zero || alignment > PAGE || sec->opts.nshards == 0 - || size > sec->opts.max_alloc) { - return pai_alloc(tsdn, sec->fallback, size, alignment, zero, - /* guarded */ false, frequent_reuse, - deferred_work_generated); +edata_t * +sec_alloc(tsdn_t *tsdn, sec_t *sec, size_t size) { + if (!sec_size_supported(sec, size)) { + return NULL; } + assert((size & PAGE_MASK) == 0); pszind_t pszind = sz_psz2ind(size); assert(pszind < sec->npsizes); - sec_shard_t *shard = sec_shard_pick(tsdn, sec); - sec_bin_t *bin = &shard->bins[pszind]; - bool do_batch_fill = false; - - malloc_mutex_lock(tsdn, &shard->mtx); - edata_t *edata = sec_shard_alloc_locked(tsdn, sec, shard, bin); - if (edata == NULL) { - if (!bin->being_batch_filled - && sec->opts.batch_fill_extra > 0) { - bin->being_batch_filled = true; - do_batch_fill = true; - } - } - malloc_mutex_unlock(tsdn, &shard->mtx); - if (edata == NULL) { - if (do_batch_fill) { - edata = sec_batch_fill_and_alloc(tsdn, sec, shard, bin, - size); - } else { - edata = pai_alloc(tsdn, sec->fallback, size, alignment, - zero, /* guarded */ false, frequent_reuse, - deferred_work_generated); + /* + * If there's only one shard, skip the trylock optimization and + * go straight to the blocking lock. + */ + if (sec->opts.nshards == 1) { + sec_bin_t *bin = sec_bin_pick(sec, /* shard */ 0, pszind); + malloc_mutex_lock(tsdn, &bin->mtx); + edata_t *edata = sec_bin_alloc_locked(tsdn, sec, bin, size); + if (edata == NULL) { + bin->stats.nmisses++; } + malloc_mutex_unlock(tsdn, &bin->mtx); + JE_USDT(sec_alloc, 5, sec, bin, edata, size, + /* frequent_reuse */ 1); + return edata; } - return edata; + return sec_multishard_trylock_alloc(tsdn, sec, size, pszind); } -static bool -sec_expand(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, - size_t new_size, bool zero, bool *deferred_work_generated) { - sec_t *sec = (sec_t *)self; - return pai_expand(tsdn, sec->fallback, edata, old_size, new_size, zero, - deferred_work_generated); -} +static void +sec_bin_dalloc_locked(tsdn_t *tsdn, sec_t *sec, sec_bin_t *bin, size_t size, + edata_list_active_t *dalloc_list) { + malloc_mutex_assert_owner(tsdn, &bin->mtx); -static bool -sec_shrink(tsdn_t *tsdn, pai_t *self, edata_t *edata, size_t old_size, - size_t new_size, bool *deferred_work_generated) { - sec_t *sec = (sec_t *)self; - return pai_shrink(tsdn, sec->fallback, edata, old_size, new_size, - deferred_work_generated); + bin->bytes_cur += size; + edata_t *edata = edata_list_active_first(dalloc_list); + assert(edata != NULL); + edata_list_active_remove(dalloc_list, edata); + JE_USDT(sec_dalloc, 3, sec, bin, edata); + edata_list_active_prepend(&bin->freelist, edata); + /* Single extent can be returned to SEC */ + assert(edata_list_active_empty(dalloc_list)); + + if (bin->bytes_cur <= sec->opts.max_bytes) { + bin->stats.ndalloc_noflush++; + return; + } + bin->stats.ndalloc_flush++; + /* we want to flush 1/4 of max_bytes */ + size_t bytes_target = sec->opts.max_bytes - (sec->opts.max_bytes >> 2); + while (bin->bytes_cur > bytes_target + && !edata_list_active_empty(&bin->freelist)) { + edata_t *cur = edata_list_active_last(&bin->freelist); + size_t sz = edata_size_get(cur); + assert(sz <= bin->bytes_cur && sz > 0); + bin->bytes_cur -= sz; + edata_list_active_remove(&bin->freelist, cur); + edata_list_active_append(dalloc_list, cur); + } } static void -sec_flush_all_locked(tsdn_t *tsdn, sec_t *sec, sec_shard_t *shard) { - malloc_mutex_assert_owner(tsdn, &shard->mtx); - shard->bytes_cur = 0; - edata_list_active_t to_flush; - edata_list_active_init(&to_flush); - for (pszind_t i = 0; i < sec->npsizes; i++) { - sec_bin_t *bin = &shard->bins[i]; - bin->bytes_cur = 0; - edata_list_active_concat(&to_flush, &bin->freelist); +sec_multishard_trylock_dalloc(tsdn_t *tsdn, sec_t *sec, size_t size, + pszind_t pszind, edata_list_active_t *dalloc_list) { + assert(sec->opts.nshards > 0); + + /* Try to dalloc in this threads bin first */ + uint8_t cur_shard = sec_shard_pick(tsdn, sec); + for (size_t i = 0; i < sec->opts.nshards; ++i) { + sec_bin_t *bin = sec_bin_pick(sec, cur_shard, pszind); + if (!malloc_mutex_trylock(tsdn, &bin->mtx)) { + sec_bin_dalloc_locked( + tsdn, sec, bin, size, dalloc_list); + malloc_mutex_unlock(tsdn, &bin->mtx); + return; + } + cur_shard++; + if (cur_shard == sec->opts.nshards) { + cur_shard = 0; + } } - - /* - * Ordinarily we would try to avoid doing the batch deallocation while - * holding the shard mutex, but the flush_all pathways only happen when - * we're disabling the HPA or resetting the arena, both of which are - * rare pathways. - */ - bool deferred_work_generated = false; - pai_dalloc_batch(tsdn, sec->fallback, &to_flush, - &deferred_work_generated); + /* No bin had alloc or had the extent */ + assert(cur_shard == sec_shard_pick(tsdn, sec)); + sec_bin_t *bin = sec_bin_pick(sec, cur_shard, pszind); + malloc_mutex_lock(tsdn, &bin->mtx); + sec_bin_dalloc_locked(tsdn, sec, bin, size, dalloc_list); + malloc_mutex_unlock(tsdn, &bin->mtx); } -static void -sec_shard_dalloc_and_unlock(tsdn_t *tsdn, sec_t *sec, sec_shard_t *shard, - edata_t *edata) { - malloc_mutex_assert_owner(tsdn, &shard->mtx); - assert(shard->bytes_cur <= sec->opts.max_bytes); - size_t size = edata_size_get(edata); +void +sec_dalloc(tsdn_t *tsdn, sec_t *sec, edata_list_active_t *dalloc_list) { + if (!sec_is_used(sec)) { + return; + } + edata_t *edata = edata_list_active_first(dalloc_list); + size_t size = edata_size_get(edata); + if (size > sec->opts.max_alloc) { + return; + } pszind_t pszind = sz_psz2ind(size); assert(pszind < sec->npsizes); + /* - * Prepending here results in LIFO allocation per bin, which seems - * reasonable. + * If there's only one shard, skip the trylock optimization and + * go straight to the blocking lock. */ - sec_bin_t *bin = &shard->bins[pszind]; - edata_list_active_prepend(&bin->freelist, edata); - bin->bytes_cur += size; - shard->bytes_cur += size; - if (shard->bytes_cur > sec->opts.max_bytes) { - /* - * We've exceeded the shard limit. We make two nods in the - * direction of fragmentation avoidance: we flush everything in - * the shard, rather than one particular bin, and we hold the - * lock while flushing (in case one of the extents we flush is - * highly preferred from a fragmentation-avoidance perspective - * in the backing allocator). This has the extra advantage of - * not requiring advanced cache balancing strategies. - */ - sec_flush_some_and_unlock(tsdn, sec, shard); - malloc_mutex_assert_not_owner(tsdn, &shard->mtx); - } else { - malloc_mutex_unlock(tsdn, &shard->mtx); - } -} - -static void -sec_dalloc(tsdn_t *tsdn, pai_t *self, edata_t *edata, - bool *deferred_work_generated) { - sec_t *sec = (sec_t *)self; - if (sec->opts.nshards == 0 - || edata_size_get(edata) > sec->opts.max_alloc) { - pai_dalloc(tsdn, sec->fallback, edata, - deferred_work_generated); + if (sec->opts.nshards == 1) { + sec_bin_t *bin = sec_bin_pick(sec, /* shard */ 0, pszind); + malloc_mutex_lock(tsdn, &bin->mtx); + sec_bin_dalloc_locked(tsdn, sec, bin, size, dalloc_list); + malloc_mutex_unlock(tsdn, &bin->mtx); return; } - sec_shard_t *shard = sec_shard_pick(tsdn, sec); - malloc_mutex_lock(tsdn, &shard->mtx); - if (shard->enabled) { - sec_shard_dalloc_and_unlock(tsdn, sec, shard, edata); - } else { - malloc_mutex_unlock(tsdn, &shard->mtx); - pai_dalloc(tsdn, sec->fallback, edata, - deferred_work_generated); - } + sec_multishard_trylock_dalloc(tsdn, sec, size, pszind, dalloc_list); } void -sec_flush(tsdn_t *tsdn, sec_t *sec) { - for (size_t i = 0; i < sec->opts.nshards; i++) { - malloc_mutex_lock(tsdn, &sec->shards[i].mtx); - sec_flush_all_locked(tsdn, sec, &sec->shards[i]); - malloc_mutex_unlock(tsdn, &sec->shards[i].mtx); +sec_fill(tsdn_t *tsdn, sec_t *sec, size_t size, edata_list_active_t *result, + size_t nallocs) { + assert((size & PAGE_MASK) == 0); + assert(sec->opts.nshards != 0 && size <= sec->opts.max_alloc); + assert(nallocs > 0); + + pszind_t pszind = sz_psz2ind(size); + assert(pszind < sec->npsizes); + + sec_bin_t *bin = sec_bin_pick(sec, sec_shard_pick(tsdn, sec), pszind); + malloc_mutex_assert_not_owner(tsdn, &bin->mtx); + malloc_mutex_lock(tsdn, &bin->mtx); + size_t new_cached_bytes = nallocs * size; + if (bin->bytes_cur + new_cached_bytes <= sec->opts.max_bytes) { + assert(!edata_list_active_empty(result)); + edata_list_active_concat(&bin->freelist, result); + bin->bytes_cur += new_cached_bytes; + } else { + /* + * Unlikely case of many threads filling at the same time and + * going above max. + */ + bin->stats.noverfills++; + while (bin->bytes_cur + size <= sec->opts.max_bytes) { + edata_t *edata = edata_list_active_first(result); + if (edata == NULL) { + break; + } + edata_list_active_remove(result, edata); + assert(size == edata_size_get(edata)); + edata_list_active_append(&bin->freelist, edata); + bin->bytes_cur += size; + } } + malloc_mutex_unlock(tsdn, &bin->mtx); } void -sec_disable(tsdn_t *tsdn, sec_t *sec) { - for (size_t i = 0; i < sec->opts.nshards; i++) { - malloc_mutex_lock(tsdn, &sec->shards[i].mtx); - sec->shards[i].enabled = false; - sec_flush_all_locked(tsdn, sec, &sec->shards[i]); - malloc_mutex_unlock(tsdn, &sec->shards[i].mtx); +sec_flush(tsdn_t *tsdn, sec_t *sec, edata_list_active_t *to_flush) { + if (!sec_is_used(sec)) { + return; + } + size_t ntotal_bins = sec->opts.nshards * sec->npsizes; + for (pszind_t i = 0; i < ntotal_bins; i++) { + sec_bin_t *bin = &sec->bins[i]; + malloc_mutex_lock(tsdn, &bin->mtx); + bin->bytes_cur = 0; + edata_list_active_concat(to_flush, &bin->freelist); + malloc_mutex_unlock(tsdn, &bin->mtx); } } void sec_stats_merge(tsdn_t *tsdn, sec_t *sec, sec_stats_t *stats) { + if (!sec_is_used(sec)) { + return; + } size_t sum = 0; - for (size_t i = 0; i < sec->opts.nshards; i++) { - /* - * We could save these lock acquisitions by making bytes_cur - * atomic, but stats collection is rare anyways and we expect - * the number and type of stats to get more interesting. - */ - malloc_mutex_lock(tsdn, &sec->shards[i].mtx); - sum += sec->shards[i].bytes_cur; - malloc_mutex_unlock(tsdn, &sec->shards[i].mtx); + size_t ntotal_bins = sec->opts.nshards * sec->npsizes; + for (pszind_t i = 0; i < ntotal_bins; i++) { + sec_bin_t *bin = &sec->bins[i]; + malloc_mutex_lock(tsdn, &bin->mtx); + sum += bin->bytes_cur; + sec_bin_stats_accum(&stats->total, &bin->stats); + malloc_mutex_unlock(tsdn, &bin->mtx); } stats->bytes += sum; } void -sec_mutex_stats_read(tsdn_t *tsdn, sec_t *sec, - mutex_prof_data_t *mutex_prof_data) { - for (size_t i = 0; i < sec->opts.nshards; i++) { - malloc_mutex_lock(tsdn, &sec->shards[i].mtx); - malloc_mutex_prof_accum(tsdn, mutex_prof_data, - &sec->shards[i].mtx); - malloc_mutex_unlock(tsdn, &sec->shards[i].mtx); +sec_mutex_stats_read( + tsdn_t *tsdn, sec_t *sec, mutex_prof_data_t *mutex_prof_data) { + if (!sec_is_used(sec)) { + return; + } + size_t ntotal_bins = sec->opts.nshards * sec->npsizes; + for (pszind_t i = 0; i < ntotal_bins; i++) { + sec_bin_t *bin = &sec->bins[i]; + malloc_mutex_lock(tsdn, &bin->mtx); + malloc_mutex_prof_accum(tsdn, mutex_prof_data, &bin->mtx); + malloc_mutex_unlock(tsdn, &bin->mtx); } } void sec_prefork2(tsdn_t *tsdn, sec_t *sec) { - for (size_t i = 0; i < sec->opts.nshards; i++) { - malloc_mutex_prefork(tsdn, &sec->shards[i].mtx); + if (!sec_is_used(sec)) { + return; + } + size_t ntotal_bins = sec->opts.nshards * sec->npsizes; + for (pszind_t i = 0; i < ntotal_bins; i++) { + sec_bin_t *bin = &sec->bins[i]; + malloc_mutex_prefork(tsdn, &bin->mtx); } } void sec_postfork_parent(tsdn_t *tsdn, sec_t *sec) { - for (size_t i = 0; i < sec->opts.nshards; i++) { - malloc_mutex_postfork_parent(tsdn, &sec->shards[i].mtx); + if (!sec_is_used(sec)) { + return; + } + size_t ntotal_bins = sec->opts.nshards * sec->npsizes; + for (pszind_t i = 0; i < ntotal_bins; i++) { + sec_bin_t *bin = &sec->bins[i]; + malloc_mutex_postfork_parent(tsdn, &bin->mtx); } } void sec_postfork_child(tsdn_t *tsdn, sec_t *sec) { - for (size_t i = 0; i < sec->opts.nshards; i++) { - malloc_mutex_postfork_child(tsdn, &sec->shards[i].mtx); + if (!sec_is_used(sec)) { + return; + } + size_t ntotal_bins = sec->opts.nshards * sec->npsizes; + for (pszind_t i = 0; i < ntotal_bins; i++) { + sec_bin_t *bin = &sec->bins[i]; + malloc_mutex_postfork_child(tsdn, &bin->mtx); } } diff --git a/dep/jemalloc/src/stats.c b/dep/jemalloc/src/stats.c index efc70fd3c8b2b..82458fec45e21 100644 --- a/dep/jemalloc/src/stats.c +++ b/dep/jemalloc/src/stats.c @@ -9,60 +9,67 @@ #include "jemalloc/internal/mutex_prof.h" #include "jemalloc/internal/prof_stats.h" -const char *global_mutex_names[mutex_prof_num_global_mutexes] = { +static const char *const global_mutex_names[mutex_prof_num_global_mutexes] = { #define OP(mtx) #mtx, - MUTEX_PROF_GLOBAL_MUTEXES + MUTEX_PROF_GLOBAL_MUTEXES #undef OP }; -const char *arena_mutex_names[mutex_prof_num_arena_mutexes] = { +static const char *const arena_mutex_names[mutex_prof_num_arena_mutexes] = { #define OP(mtx) #mtx, - MUTEX_PROF_ARENA_MUTEXES + MUTEX_PROF_ARENA_MUTEXES #undef OP }; -#define CTL_GET(n, v, t) do { \ - size_t sz = sizeof(t); \ - xmallctl(n, (void *)v, &sz, NULL, 0); \ -} while (0) - -#define CTL_LEAF_PREPARE(mib, miblen, name) do { \ - assert(miblen < CTL_MAX_DEPTH); \ - size_t miblen_new = CTL_MAX_DEPTH; \ - xmallctlmibnametomib(mib, miblen, name, &miblen_new); \ - assert(miblen_new > miblen); \ -} while (0) - -#define CTL_LEAF(mib, miblen, leaf, v, t) do { \ - assert(miblen < CTL_MAX_DEPTH); \ - size_t miblen_new = CTL_MAX_DEPTH; \ - size_t sz = sizeof(t); \ - xmallctlbymibname(mib, miblen, leaf, &miblen_new, (void *)v, \ - &sz, NULL, 0); \ - assert(miblen_new == miblen + 1); \ -} while (0) - -#define CTL_M2_GET(n, i, v, t) do { \ - size_t mib[CTL_MAX_DEPTH]; \ - size_t miblen = sizeof(mib) / sizeof(size_t); \ - size_t sz = sizeof(t); \ - xmallctlnametomib(n, mib, &miblen); \ - mib[2] = (i); \ - xmallctlbymib(mib, miblen, (void *)v, &sz, NULL, 0); \ -} while (0) +#define CTL_GET(n, v, t) \ + do { \ + size_t sz = sizeof(t); \ + xmallctl(n, (void *)v, &sz, NULL, 0); \ + } while (0) + +#define CTL_LEAF_PREPARE(mib, miblen, name) \ + do { \ + assert(miblen < CTL_MAX_DEPTH); \ + size_t miblen_new = CTL_MAX_DEPTH; \ + xmallctlmibnametomib(mib, miblen, name, &miblen_new); \ + assert(miblen_new > miblen); \ + } while (0) + +#define CTL_LEAF(mib, miblen, leaf, v, t) \ + do { \ + assert(miblen < CTL_MAX_DEPTH); \ + size_t miblen_new = CTL_MAX_DEPTH; \ + size_t sz = sizeof(t); \ + xmallctlbymibname( \ + mib, miblen, leaf, &miblen_new, (void *)v, &sz, NULL, 0); \ + assert(miblen_new == miblen + 1); \ + } while (0) + +#define CTL_MIB_GET(n, i, v, t, ind) \ + do { \ + size_t mib[CTL_MAX_DEPTH]; \ + size_t miblen = sizeof(mib) / sizeof(size_t); \ + size_t sz = sizeof(t); \ + xmallctlnametomib(n, mib, &miblen); \ + mib[(ind)] = (i); \ + xmallctlbymib(mib, miblen, (void *)v, &sz, NULL, 0); \ + } while (0) + +#define CTL_M1_GET(n, i, v, t) CTL_MIB_GET(n, i, v, t, 1) +#define CTL_M2_GET(n, i, v, t) CTL_MIB_GET(n, i, v, t, 2) /******************************************************************************/ /* Data. */ bool opt_stats_print = false; -char opt_stats_print_opts[stats_print_tot_num_options+1] = ""; +char opt_stats_print_opts[stats_print_tot_num_options + 1] = ""; int64_t opt_stats_interval = STATS_INTERVAL_DEFAULT; -char opt_stats_interval_opts[stats_print_tot_num_options+1] = ""; +char opt_stats_interval_opts[stats_print_tot_num_options + 1] = ""; static counter_accum_t stats_interval_accumulated; /* Per thread batch accum size for stats_interval. */ -static uint64_t stats_interval_accum_batch; +uint64_t stats_interval_accum_batch; /******************************************************************************/ @@ -108,8 +115,8 @@ get_rate_str(uint64_t dividend, uint64_t divisor, char str[6]) { static void mutex_stats_init_cols(emitter_row_t *row, const char *table_name, emitter_col_t *name, - emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], - emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters]) { + emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], + emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters]) { mutex_prof_uint64_t_counter_ind_t k_uint64_t = 0; mutex_prof_uint32_t_counter_ind_t k_uint32_t = 0; @@ -125,13 +132,13 @@ mutex_stats_init_cols(emitter_row_t *row, const char *table_name, #define WIDTH_uint32_t 12 #define WIDTH_uint64_t 16 -#define OP(counter, counter_type, human, derived, base_counter) \ - col = &col_##counter_type[k_##counter_type]; \ - ++k_##counter_type; \ - emitter_col_init(col, row); \ - col->justify = emitter_justify_right; \ - col->width = derived ? 8 : WIDTH_##counter_type; \ - col->type = emitter_type_title; \ +#define OP(counter, counter_type, human, derived, base_counter) \ + col = &col_##counter_type[k_##counter_type]; \ + ++k_##counter_type; \ + emitter_col_init(col, row); \ + col->justify = emitter_justify_right; \ + col->width = derived ? 8 : WIDTH_##counter_type; \ + col->type = emitter_type_title; \ col->str_val = human; MUTEX_PROF_COUNTERS #undef OP @@ -143,9 +150,9 @@ mutex_stats_init_cols(emitter_row_t *row, const char *table_name, static void mutex_stats_read_global(size_t mib[], size_t miblen, const char *name, emitter_col_t *col_name, - emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], - emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters], - uint64_t uptime) { + emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], + emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters], + uint64_t uptime) { CTL_LEAF_PREPARE(mib, miblen, name); size_t miblen_name = miblen + 1; @@ -154,18 +161,17 @@ mutex_stats_read_global(size_t mib[], size_t miblen, const char *name, emitter_col_t *dst; #define EMITTER_TYPE_uint32_t emitter_type_uint32 #define EMITTER_TYPE_uint64_t emitter_type_uint64 -#define OP(counter, counter_type, human, derived, base_counter) \ - dst = &col_##counter_type[mutex_counter_##counter]; \ - dst->type = EMITTER_TYPE_##counter_type; \ - if (!derived) { \ - CTL_LEAF(mib, miblen_name, #counter, \ - (counter_type *)&dst->bool_val, counter_type); \ - } else { \ - emitter_col_t *base = \ - &col_##counter_type[mutex_counter_##base_counter]; \ - dst->counter_type##_val = \ - (counter_type)rate_per_second( \ - base->counter_type##_val, uptime); \ +#define OP(counter, counter_type, human, derived, base_counter) \ + dst = &col_##counter_type[mutex_counter_##counter]; \ + dst->type = EMITTER_TYPE_##counter_type; \ + if (!derived) { \ + CTL_LEAF(mib, miblen_name, #counter, \ + (counter_type *)&dst->bool_val, counter_type); \ + } else { \ + emitter_col_t *base = \ + &col_##counter_type[mutex_counter_##base_counter]; \ + dst->counter_type##_val = (counter_type)rate_per_second( \ + base->counter_type##_val, uptime); \ } MUTEX_PROF_COUNTERS #undef OP @@ -176,9 +182,9 @@ mutex_stats_read_global(size_t mib[], size_t miblen, const char *name, static void mutex_stats_read_arena(size_t mib[], size_t miblen, const char *name, emitter_col_t *col_name, - emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], - emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters], - uint64_t uptime) { + emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], + emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters], + uint64_t uptime) { CTL_LEAF_PREPARE(mib, miblen, name); size_t miblen_name = miblen + 1; @@ -187,18 +193,17 @@ mutex_stats_read_arena(size_t mib[], size_t miblen, const char *name, emitter_col_t *dst; #define EMITTER_TYPE_uint32_t emitter_type_uint32 #define EMITTER_TYPE_uint64_t emitter_type_uint64 -#define OP(counter, counter_type, human, derived, base_counter) \ - dst = &col_##counter_type[mutex_counter_##counter]; \ - dst->type = EMITTER_TYPE_##counter_type; \ - if (!derived) { \ - CTL_LEAF(mib, miblen_name, #counter, \ - (counter_type *)&dst->bool_val, counter_type); \ - } else { \ - emitter_col_t *base = \ - &col_##counter_type[mutex_counter_##base_counter]; \ - dst->counter_type##_val = \ - (counter_type)rate_per_second( \ - base->counter_type##_val, uptime); \ +#define OP(counter, counter_type, human, derived, base_counter) \ + dst = &col_##counter_type[mutex_counter_##counter]; \ + dst->type = EMITTER_TYPE_##counter_type; \ + if (!derived) { \ + CTL_LEAF(mib, miblen_name, #counter, \ + (counter_type *)&dst->bool_val, counter_type); \ + } else { \ + emitter_col_t *base = \ + &col_##counter_type[mutex_counter_##base_counter]; \ + dst->counter_type##_val = (counter_type)rate_per_second( \ + base->counter_type##_val, uptime); \ } MUTEX_PROF_COUNTERS #undef OP @@ -210,7 +215,7 @@ static void mutex_stats_read_arena_bin(size_t mib[], size_t miblen, emitter_col_t col_uint64_t[mutex_prof_num_uint64_t_counters], emitter_col_t col_uint32_t[mutex_prof_num_uint32_t_counters], - uint64_t uptime) { + uint64_t uptime) { CTL_LEAF_PREPARE(mib, miblen, "mutex"); size_t miblen_mutex = miblen + 1; @@ -218,18 +223,17 @@ mutex_stats_read_arena_bin(size_t mib[], size_t miblen, #define EMITTER_TYPE_uint32_t emitter_type_uint32 #define EMITTER_TYPE_uint64_t emitter_type_uint64 -#define OP(counter, counter_type, human, derived, base_counter) \ - dst = &col_##counter_type[mutex_counter_##counter]; \ - dst->type = EMITTER_TYPE_##counter_type; \ - if (!derived) { \ - CTL_LEAF(mib, miblen_mutex, #counter, \ - (counter_type *)&dst->bool_val, counter_type); \ - } else { \ - emitter_col_t *base = \ - &col_##counter_type[mutex_counter_##base_counter]; \ - dst->counter_type##_val = \ - (counter_type)rate_per_second( \ - base->counter_type##_val, uptime); \ +#define OP(counter, counter_type, human, derived, base_counter) \ + dst = &col_##counter_type[mutex_counter_##counter]; \ + dst->type = EMITTER_TYPE_##counter_type; \ + if (!derived) { \ + CTL_LEAF(mib, miblen_mutex, #counter, \ + (counter_type *)&dst->bool_val, counter_type); \ + } else { \ + emitter_col_t *base = \ + &col_##counter_type[mutex_counter_##base_counter]; \ + dst->counter_type##_val = (counter_type)rate_per_second( \ + base->counter_type##_val, uptime); \ } MUTEX_PROF_COUNTERS #undef OP @@ -253,57 +257,55 @@ mutex_stats_emit(emitter_t *emitter, emitter_row_t *row, #define EMITTER_TYPE_uint32_t emitter_type_uint32 #define EMITTER_TYPE_uint64_t emitter_type_uint64 -#define OP(counter, type, human, derived, base_counter) \ - if (!derived) { \ - col = &col_##type[k_##type]; \ - ++k_##type; \ +#define OP(counter, type, human, derived, base_counter) \ + if (!derived) { \ + col = &col_##type[k_##type]; \ emitter_json_kv(emitter, #counter, EMITTER_TYPE_##type, \ - (const void *)&col->bool_val); \ - } + (const void *)&col->bool_val); \ + } \ + ++k_##type; MUTEX_PROF_COUNTERS; #undef OP #undef EMITTER_TYPE_uint32_t #undef EMITTER_TYPE_uint64_t } -#define COL_DECLARE(column_name) \ - emitter_col_t col_##column_name; +#define COL_DECLARE(column_name) emitter_col_t col_##column_name; -#define COL_INIT(row_name, column_name, left_or_right, col_width, etype)\ - emitter_col_init(&col_##column_name, &row_name); \ - col_##column_name.justify = emitter_justify_##left_or_right; \ - col_##column_name.width = col_width; \ +#define COL_INIT(row_name, column_name, left_or_right, col_width, etype) \ + emitter_col_init(&col_##column_name, &row_name); \ + col_##column_name.justify = emitter_justify_##left_or_right; \ + col_##column_name.width = col_width; \ col_##column_name.type = emitter_type_##etype; -#define COL(row_name, column_name, left_or_right, col_width, etype) \ - COL_DECLARE(column_name); \ +#define COL(row_name, column_name, left_or_right, col_width, etype) \ + COL_DECLARE(column_name); \ COL_INIT(row_name, column_name, left_or_right, col_width, etype) -#define COL_HDR_DECLARE(column_name) \ - COL_DECLARE(column_name); \ +#define COL_HDR_DECLARE(column_name) \ + COL_DECLARE(column_name); \ emitter_col_t header_##column_name; -#define COL_HDR_INIT(row_name, column_name, human, left_or_right, \ - col_width, etype) \ - COL_INIT(row_name, column_name, left_or_right, col_width, etype)\ - emitter_col_init(&header_##column_name, &header_##row_name); \ - header_##column_name.justify = emitter_justify_##left_or_right; \ - header_##column_name.width = col_width; \ - header_##column_name.type = emitter_type_title; \ +#define COL_HDR_INIT( \ + row_name, column_name, human, left_or_right, col_width, etype) \ + COL_INIT(row_name, column_name, left_or_right, col_width, etype) \ + emitter_col_init(&header_##column_name, &header_##row_name); \ + header_##column_name.justify = emitter_justify_##left_or_right; \ + header_##column_name.width = col_width; \ + header_##column_name.type = emitter_type_title; \ header_##column_name.str_val = human ? human : #column_name; -#define COL_HDR(row_name, column_name, human, left_or_right, col_width, \ - etype) \ - COL_HDR_DECLARE(column_name) \ - COL_HDR_INIT(row_name, column_name, human, left_or_right, \ - col_width, etype) +#define COL_HDR(row_name, column_name, human, left_or_right, col_width, etype) \ + COL_HDR_DECLARE(column_name) \ + COL_HDR_INIT( \ + row_name, column_name, human, left_or_right, col_width, etype) JEMALLOC_COLD static void -stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, - uint64_t uptime) { - size_t page; - bool in_gap, in_gap_prev; +stats_arena_bins_print( + emitter_t *emitter, bool mutex, unsigned i, uint64_t uptime) { + size_t page; + bool in_gap, in_gap_prev; unsigned nbins, j; CTL_GET("arenas.page", &page, size_t); @@ -321,12 +323,12 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, COL_HDR(row, size, NULL, right, 20, size) COL_HDR(row, ind, NULL, right, 4, unsigned) - COL_HDR(row, allocated, NULL, right, 13, uint64) - COL_HDR(row, nmalloc, NULL, right, 13, uint64) + COL_HDR(row, allocated, NULL, right, 14, size) + COL_HDR(row, nmalloc, NULL, right, 14, uint64) COL_HDR(row, nmalloc_ps, "(#/sec)", right, 8, uint64) - COL_HDR(row, ndalloc, NULL, right, 13, uint64) + COL_HDR(row, ndalloc, NULL, right, 14, uint64) COL_HDR(row, ndalloc_ps, "(#/sec)", right, 8, uint64) - COL_HDR(row, nrequests, NULL, right, 13, uint64) + COL_HDR(row, nrequests, NULL, right, 15, uint64) COL_HDR(row, nrequests_ps, "(#/sec)", right, 10, uint64) COL_HDR_DECLARE(prof_live_requested); COL_HDR_DECLARE(prof_live_count); @@ -366,17 +368,17 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, emitter_col_t header_mutex32[mutex_prof_num_uint32_t_counters]; if (mutex) { - mutex_stats_init_cols(&row, NULL, NULL, col_mutex64, - col_mutex32); - mutex_stats_init_cols(&header_row, NULL, NULL, header_mutex64, - header_mutex32); + mutex_stats_init_cols( + &row, NULL, NULL, col_mutex64, col_mutex32); + mutex_stats_init_cols( + &header_row, NULL, NULL, header_mutex64, header_mutex32); } /* * We print a "bins:" header as part of the table row; we need to adjust * the header size column to compensate. */ - header_size.width -=5; + header_size.width -= 5; emitter_table_printf(emitter, "bins:"); emitter_table_row(emitter, &header_row); emitter_json_array_kv_begin(emitter, "bins"); @@ -395,13 +397,13 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, } for (j = 0, in_gap = false; j < nbins; j++) { - uint64_t nslabs; - size_t reg_size, slab_size, curregs; - size_t curslabs; - size_t nonfull_slabs; - uint32_t nregs, nshards; - uint64_t nmalloc, ndalloc, nrequests, nfills, nflushes; - uint64_t nreslabs; + uint64_t nslabs; + size_t reg_size, slab_size, curregs; + size_t curslabs; + size_t nonfull_slabs; + uint32_t nregs, nshards; + uint64_t nmalloc, ndalloc, nrequests, nfills, nflushes; + uint64_t nreslabs; prof_stats_t prof_live; prof_stats_t prof_accum; @@ -426,8 +428,8 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, } if (in_gap_prev && !in_gap) { - emitter_table_printf(emitter, - " ---\n"); + emitter_table_printf( + emitter, " ---\n"); } if (in_gap && !emitter_outputs_json(emitter)) { @@ -441,8 +443,8 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, CTL_LEAF(stats_arenas_mib, 5, "nmalloc", &nmalloc, uint64_t); CTL_LEAF(stats_arenas_mib, 5, "ndalloc", &ndalloc, uint64_t); CTL_LEAF(stats_arenas_mib, 5, "curregs", &curregs, size_t); - CTL_LEAF(stats_arenas_mib, 5, "nrequests", &nrequests, - uint64_t); + CTL_LEAF( + stats_arenas_mib, 5, "nrequests", &nrequests, uint64_t); CTL_LEAF(stats_arenas_mib, 5, "nfills", &nfills, uint64_t); CTL_LEAF(stats_arenas_mib, 5, "nflushes", &nflushes, uint64_t); CTL_LEAF(stats_arenas_mib, 5, "nreslabs", &nreslabs, uint64_t); @@ -456,14 +458,14 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, } emitter_json_object_begin(emitter); - emitter_json_kv(emitter, "nmalloc", emitter_type_uint64, - &nmalloc); - emitter_json_kv(emitter, "ndalloc", emitter_type_uint64, - &ndalloc); - emitter_json_kv(emitter, "curregs", emitter_type_size, - &curregs); - emitter_json_kv(emitter, "nrequests", emitter_type_uint64, - &nrequests); + emitter_json_kv( + emitter, "nmalloc", emitter_type_uint64, &nmalloc); + emitter_json_kv( + emitter, "ndalloc", emitter_type_uint64, &ndalloc); + emitter_json_kv( + emitter, "curregs", emitter_type_size, &curregs); + emitter_json_kv( + emitter, "nrequests", emitter_type_uint64, &nrequests); if (prof_stats_on) { emitter_json_kv(emitter, "prof_live_requested", emitter_type_uint64, &prof_live.req_sum); @@ -474,28 +476,28 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, emitter_json_kv(emitter, "prof_accum_count", emitter_type_uint64, &prof_accum.count); } - emitter_json_kv(emitter, "nfills", emitter_type_uint64, - &nfills); - emitter_json_kv(emitter, "nflushes", emitter_type_uint64, - &nflushes); - emitter_json_kv(emitter, "nreslabs", emitter_type_uint64, - &nreslabs); - emitter_json_kv(emitter, "curslabs", emitter_type_size, - &curslabs); + emitter_json_kv( + emitter, "nfills", emitter_type_uint64, &nfills); + emitter_json_kv( + emitter, "nflushes", emitter_type_uint64, &nflushes); + emitter_json_kv( + emitter, "nreslabs", emitter_type_uint64, &nreslabs); + emitter_json_kv( + emitter, "curslabs", emitter_type_size, &curslabs); emitter_json_kv(emitter, "nonfull_slabs", emitter_type_size, &nonfull_slabs); if (mutex) { emitter_json_object_kv_begin(emitter, "mutex"); - mutex_stats_emit(emitter, NULL, col_mutex64, - col_mutex32); + mutex_stats_emit( + emitter, NULL, col_mutex64, col_mutex32); emitter_json_object_end(emitter); } emitter_json_object_end(emitter); size_t availregs = nregs * curslabs; - char util[6]; - if (get_rate_str((uint64_t)curregs, (uint64_t)availregs, util)) - { + char util[6]; + if (get_rate_str( + (uint64_t)curregs, (uint64_t)availregs, util)) { if (availregs == 0) { malloc_snprintf(util, sizeof(util), "1"); } else if (curregs > availregs) { @@ -519,7 +521,8 @@ stats_arena_bins_print(emitter_t *emitter, bool mutex, unsigned i, col_ndalloc.uint64_val = ndalloc; col_ndalloc_ps.uint64_val = rate_per_second(ndalloc, uptime); col_nrequests.uint64_val = nrequests; - col_nrequests_ps.uint64_val = rate_per_second(nrequests, uptime); + col_nrequests_ps.uint64_val = rate_per_second( + nrequests, uptime); if (prof_stats_on) { col_prof_live_requested.uint64_val = prof_live.req_sum; col_prof_live_count.uint64_val = prof_live.count; @@ -560,7 +563,7 @@ JEMALLOC_COLD static void stats_arena_lextents_print(emitter_t *emitter, unsigned i, uint64_t uptime) { unsigned nbins, nlextents, j; - bool in_gap, in_gap_prev; + bool in_gap, in_gap_prev; CTL_GET("arenas.nbins", &nbins, unsigned); CTL_GET("arenas.nlextents", &nlextents, unsigned); @@ -614,8 +617,8 @@ stats_arena_lextents_print(emitter_t *emitter, unsigned i, uint64_t uptime) { } for (j = 0, in_gap = false; j < nlextents; j++) { - uint64_t nmalloc, ndalloc, nrequests; - size_t lextent_size, curlextents; + uint64_t nmalloc, ndalloc, nrequests; + size_t lextent_size, curlextents; prof_stats_t prof_live; prof_stats_t prof_accum; @@ -624,20 +627,20 @@ stats_arena_lextents_print(emitter_t *emitter, unsigned i, uint64_t uptime) { CTL_LEAF(stats_arenas_mib, 5, "nmalloc", &nmalloc, uint64_t); CTL_LEAF(stats_arenas_mib, 5, "ndalloc", &ndalloc, uint64_t); - CTL_LEAF(stats_arenas_mib, 5, "nrequests", &nrequests, - uint64_t); + CTL_LEAF( + stats_arenas_mib, 5, "nrequests", &nrequests, uint64_t); in_gap_prev = in_gap; in_gap = (nrequests == 0); if (in_gap_prev && !in_gap) { - emitter_table_printf(emitter, - " ---\n"); + emitter_table_printf( + emitter, " ---\n"); } CTL_LEAF(arenas_lextent_mib, 3, "size", &lextent_size, size_t); - CTL_LEAF(stats_arenas_mib, 5, "curlextents", &curlextents, - size_t); + CTL_LEAF( + stats_arenas_mib, 5, "curlextents", &curlextents, size_t); if (prof_stats_on) { prof_stats_mib[3] = j; @@ -658,8 +661,8 @@ stats_arena_lextents_print(emitter_t *emitter, unsigned i, uint64_t uptime) { emitter_json_kv(emitter, "prof_accum_count", emitter_type_uint64, &prof_accum.count); } - emitter_json_kv(emitter, "curlextents", emitter_type_size, - &curlextents); + emitter_json_kv( + emitter, "curlextents", emitter_type_size, &curlextents); emitter_json_object_end(emitter); col_size.size_val = lextent_size; @@ -670,7 +673,8 @@ stats_arena_lextents_print(emitter_t *emitter, unsigned i, uint64_t uptime) { col_ndalloc.uint64_val = ndalloc; col_ndalloc_ps.uint64_val = rate_per_second(ndalloc, uptime); col_nrequests.uint64_val = nrequests; - col_nrequests_ps.uint64_val = rate_per_second(nrequests, uptime); + col_nrequests_ps.uint64_val = rate_per_second( + nrequests, uptime); if (prof_stats_on) { col_prof_live_requested.uint64_val = prof_live.req_sum; col_prof_live_count.uint64_val = prof_live.count; @@ -693,8 +697,8 @@ stats_arena_lextents_print(emitter_t *emitter, unsigned i, uint64_t uptime) { JEMALLOC_COLD static void stats_arena_extents_print(emitter_t *emitter, unsigned i) { - unsigned j; - bool in_gap, in_gap_prev; + unsigned j; + bool in_gap, in_gap_prev; emitter_row_t header_row; emitter_row_init(&header_row); emitter_row_t row; @@ -731,12 +735,12 @@ stats_arena_extents_print(emitter_t *emitter, unsigned i) { CTL_LEAF(stats_arenas_mib, 5, "ndirty", &ndirty, size_t); CTL_LEAF(stats_arenas_mib, 5, "nmuzzy", &nmuzzy, size_t); CTL_LEAF(stats_arenas_mib, 5, "nretained", &nretained, size_t); - CTL_LEAF(stats_arenas_mib, 5, "dirty_bytes", &dirty_bytes, - size_t); - CTL_LEAF(stats_arenas_mib, 5, "muzzy_bytes", &muzzy_bytes, + CTL_LEAF( + stats_arenas_mib, 5, "dirty_bytes", &dirty_bytes, size_t); + CTL_LEAF( + stats_arenas_mib, 5, "muzzy_bytes", &muzzy_bytes, size_t); + CTL_LEAF(stats_arenas_mib, 5, "retained_bytes", &retained_bytes, size_t); - CTL_LEAF(stats_arenas_mib, 5, "retained_bytes", - &retained_bytes, size_t); total = ndirty + nmuzzy + nretained; total_bytes = dirty_bytes + muzzy_bytes + retained_bytes; @@ -745,20 +749,20 @@ stats_arena_extents_print(emitter_t *emitter, unsigned i) { in_gap = (total == 0); if (in_gap_prev && !in_gap) { - emitter_table_printf(emitter, - " ---\n"); + emitter_table_printf( + emitter, " ---\n"); } emitter_json_object_begin(emitter); emitter_json_kv(emitter, "ndirty", emitter_type_size, &ndirty); emitter_json_kv(emitter, "nmuzzy", emitter_type_size, &nmuzzy); - emitter_json_kv(emitter, "nretained", emitter_type_size, - &nretained); + emitter_json_kv( + emitter, "nretained", emitter_type_size, &nretained); - emitter_json_kv(emitter, "dirty_bytes", emitter_type_size, - &dirty_bytes); - emitter_json_kv(emitter, "muzzy_bytes", emitter_type_size, - &muzzy_bytes); + emitter_json_kv( + emitter, "dirty_bytes", emitter_type_size, &dirty_bytes); + emitter_json_kv( + emitter, "muzzy_bytes", emitter_type_size, &muzzy_bytes); emitter_json_kv(emitter, "retained_bytes", emitter_type_size, &retained_bytes); emitter_json_object_end(emitter); @@ -785,25 +789,156 @@ stats_arena_extents_print(emitter_t *emitter, unsigned i) { } static void -stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { - emitter_row_t header_row; - emitter_row_init(&header_row); - emitter_row_t row; - emitter_row_init(&row); +stats_arena_hpa_shard_sec_print(emitter_t *emitter, unsigned i) { + size_t sec_bytes; + size_t sec_hits; + size_t sec_misses; + size_t sec_dalloc_flush; + size_t sec_dalloc_noflush; + size_t sec_overfills; + CTL_M2_GET("stats.arenas.0.hpa_sec_bytes", i, &sec_bytes, size_t); + emitter_kv(emitter, "sec_bytes", "Bytes in small extent cache", + emitter_type_size, &sec_bytes); + CTL_M2_GET("stats.arenas.0.hpa_sec_hits", i, &sec_hits, size_t); + emitter_kv(emitter, "sec_hits", "Total hits in small extent cache", + emitter_type_size, &sec_hits); + CTL_M2_GET("stats.arenas.0.hpa_sec_misses", i, &sec_misses, size_t); + emitter_kv(emitter, "sec_misses", "Total misses in small extent cache", + emitter_type_size, &sec_misses); + CTL_M2_GET("stats.arenas.0.hpa_sec_dalloc_noflush", i, + &sec_dalloc_noflush, size_t); + emitter_kv(emitter, "sec_dalloc_noflush", + "Dalloc calls without flush in small extent cache", + emitter_type_size, &sec_dalloc_noflush); + CTL_M2_GET("stats.arenas.0.hpa_sec_dalloc_flush", i, &sec_dalloc_flush, + size_t); + emitter_kv(emitter, "sec_dalloc_flush", + "Dalloc calls with flush in small extent cache", emitter_type_size, + &sec_dalloc_flush); + CTL_M2_GET( + "stats.arenas.0.hpa_sec_overfills", i, &sec_overfills, size_t); + emitter_kv(emitter, "sec_overfills", + "sec_fill calls that went over max_bytes", emitter_type_size, + &sec_overfills); +} + +static void +stats_arena_hpa_shard_counters_print( + emitter_t *emitter, unsigned i, uint64_t uptime) { + size_t npageslabs; + size_t nactive; + size_t ndirty; + + size_t npageslabs_nonhuge; + size_t nactive_nonhuge; + size_t ndirty_nonhuge; + size_t nretained_nonhuge; + + size_t npageslabs_huge; + size_t nactive_huge; + size_t ndirty_huge; uint64_t npurge_passes; uint64_t npurges; uint64_t nhugifies; + uint64_t nhugify_failures; uint64_t ndehugifies; - CTL_M2_GET("stats.arenas.0.hpa_shard.npurge_passes", - i, &npurge_passes, uint64_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.npurges", - i, &npurges, uint64_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.nhugifies", - i, &nhugifies, uint64_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.ndehugifies", - i, &ndehugifies, uint64_t); + CTL_M2_GET( + "stats.arenas.0.hpa_shard.npageslabs", i, &npageslabs, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.nactive", i, &nactive, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.ndirty", i, &ndirty, size_t); + + CTL_M2_GET("stats.arenas.0.hpa_shard.slabs.npageslabs_nonhuge", i, + &npageslabs_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.slabs.nactive_nonhuge", i, + &nactive_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.slabs.ndirty_nonhuge", i, + &ndirty_nonhuge, size_t); + nretained_nonhuge = npageslabs_nonhuge * HUGEPAGE_PAGES + - nactive_nonhuge - ndirty_nonhuge; + + CTL_M2_GET("stats.arenas.0.hpa_shard.slabs.npageslabs_huge", i, + &npageslabs_huge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.slabs.nactive_huge", i, + &nactive_huge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.slabs.ndirty_huge", i, + &ndirty_huge, size_t); + + CTL_M2_GET("stats.arenas.0.hpa_shard.npurge_passes", i, &npurge_passes, + uint64_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.npurges", i, &npurges, uint64_t); + CTL_M2_GET( + "stats.arenas.0.hpa_shard.nhugifies", i, &nhugifies, uint64_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.nhugify_failures", i, + &nhugify_failures, uint64_t); + CTL_M2_GET( + "stats.arenas.0.hpa_shard.ndehugifies", i, &ndehugifies, uint64_t); + + emitter_table_printf(emitter, + "HPA shard stats:\n" + " Pageslabs: %zu (%zu huge, %zu nonhuge)\n" + " Active pages: %zu (%zu huge, %zu nonhuge)\n" + " Dirty pages: %zu (%zu huge, %zu nonhuge)\n" + " Retained pages: %zu\n" + " Purge passes: %" FMTu64 " (%" FMTu64 + " / sec)\n" + " Purges: %" FMTu64 " (%" FMTu64 + " / sec)\n" + " Hugeifies: %" FMTu64 " (%" FMTu64 + " / sec)\n" + " Hugify failures: %" FMTu64 " (%" FMTu64 + " / sec)\n" + " Dehugifies: %" FMTu64 " (%" FMTu64 + " / sec)\n" + "\n", + npageslabs, npageslabs_huge, npageslabs_nonhuge, nactive, + nactive_huge, nactive_nonhuge, ndirty, ndirty_huge, ndirty_nonhuge, + nretained_nonhuge, npurge_passes, + rate_per_second(npurge_passes, uptime), npurges, + rate_per_second(npurges, uptime), nhugifies, + rate_per_second(nhugifies, uptime), nhugify_failures, + rate_per_second(nhugify_failures, uptime), ndehugifies, + rate_per_second(ndehugifies, uptime)); + + emitter_json_kv(emitter, "npageslabs", emitter_type_size, &npageslabs); + emitter_json_kv(emitter, "nactive", emitter_type_size, &nactive); + emitter_json_kv(emitter, "ndirty", emitter_type_size, &ndirty); + + emitter_json_kv( + emitter, "npurge_passes", emitter_type_uint64, &npurge_passes); + emitter_json_kv(emitter, "npurges", emitter_type_uint64, &npurges); + emitter_json_kv(emitter, "nhugifies", emitter_type_uint64, &nhugifies); + emitter_json_kv(emitter, "nhugify_failures", emitter_type_uint64, + &nhugify_failures); + emitter_json_kv( + emitter, "ndehugifies", emitter_type_uint64, &ndehugifies); + + emitter_json_object_kv_begin(emitter, "slabs"); + emitter_json_kv(emitter, "npageslabs_nonhuge", emitter_type_size, + &npageslabs_nonhuge); + emitter_json_kv( + emitter, "nactive_nonhuge", emitter_type_size, &nactive_nonhuge); + emitter_json_kv( + emitter, "ndirty_nonhuge", emitter_type_size, &ndirty_nonhuge); + emitter_json_kv(emitter, "nretained_nonhuge", emitter_type_size, + &nretained_nonhuge); + + emitter_json_kv( + emitter, "npageslabs_huge", emitter_type_size, &npageslabs_huge); + emitter_json_kv( + emitter, "nactive_huge", emitter_type_size, &nactive_huge); + emitter_json_kv( + emitter, "ndirty_huge", emitter_type_size, &ndirty_huge); + emitter_json_object_end(emitter); /* End "slabs" */ +} + +static void +stats_arena_hpa_shard_slabs_print(emitter_t *emitter, unsigned i) { + emitter_row_t header_row; + emitter_row_init(&header_row); + emitter_row_t row; + emitter_row_init(&row); size_t npageslabs_huge; size_t nactive_huge; @@ -814,48 +949,20 @@ stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { size_t ndirty_nonhuge; size_t nretained_nonhuge; - size_t sec_bytes; - CTL_M2_GET("stats.arenas.0.hpa_sec_bytes", i, &sec_bytes, size_t); - emitter_kv(emitter, "sec_bytes", "Bytes in small extent cache", - emitter_type_size, &sec_bytes); - - /* First, global stats. */ - emitter_table_printf(emitter, - "HPA shard stats:\n" - " Purge passes: %" FMTu64 " (%" FMTu64 " / sec)\n" - " Purges: %" FMTu64 " (%" FMTu64 " / sec)\n" - " Hugeifies: %" FMTu64 " (%" FMTu64 " / sec)\n" - " Dehugifies: %" FMTu64 " (%" FMTu64 " / sec)\n" - "\n", - npurge_passes, rate_per_second(npurge_passes, uptime), - npurges, rate_per_second(npurges, uptime), - nhugifies, rate_per_second(nhugifies, uptime), - ndehugifies, rate_per_second(ndehugifies, uptime)); - - emitter_json_object_kv_begin(emitter, "hpa_shard"); - emitter_json_kv(emitter, "npurge_passes", emitter_type_uint64, - &npurge_passes); - emitter_json_kv(emitter, "npurges", emitter_type_uint64, - &npurges); - emitter_json_kv(emitter, "nhugifies", emitter_type_uint64, - &nhugifies); - emitter_json_kv(emitter, "ndehugifies", emitter_type_uint64, - &ndehugifies); - - /* Next, full slab stats. */ - CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.npageslabs_huge", - i, &npageslabs_huge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.nactive_huge", - i, &nactive_huge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.ndirty_huge", - i, &ndirty_huge, size_t); - - CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.npageslabs_nonhuge", - i, &npageslabs_nonhuge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.nactive_nonhuge", - i, &nactive_nonhuge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.ndirty_nonhuge", - i, &ndirty_nonhuge, size_t); + /* Full slab stats. */ + CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.npageslabs_huge", i, + &npageslabs_huge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.nactive_huge", i, + &nactive_huge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.ndirty_huge", i, + &ndirty_huge, size_t); + + CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.npageslabs_nonhuge", i, + &npageslabs_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.nactive_nonhuge", i, + &nactive_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.full_slabs.ndirty_nonhuge", i, + &ndirty_nonhuge, size_t); nretained_nonhuge = npageslabs_nonhuge * HUGEPAGE_PAGES - nactive_nonhuge - ndirty_nonhuge; @@ -865,40 +972,40 @@ stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { " nactive: %zu huge, %zu nonhuge \n" " ndirty: %zu huge, %zu nonhuge \n" " nretained: 0 huge, %zu nonhuge \n", - npageslabs_huge, npageslabs_nonhuge, - nactive_huge, nactive_nonhuge, - ndirty_huge, ndirty_nonhuge, - nretained_nonhuge); + npageslabs_huge, npageslabs_nonhuge, nactive_huge, nactive_nonhuge, + ndirty_huge, ndirty_nonhuge, nretained_nonhuge); emitter_json_object_kv_begin(emitter, "full_slabs"); - emitter_json_kv(emitter, "npageslabs_huge", emitter_type_size, - &npageslabs_huge); - emitter_json_kv(emitter, "nactive_huge", emitter_type_size, - &nactive_huge); - emitter_json_kv(emitter, "nactive_huge", emitter_type_size, - &nactive_huge); + emitter_json_kv( + emitter, "npageslabs_huge", emitter_type_size, &npageslabs_huge); + emitter_json_kv( + emitter, "nactive_huge", emitter_type_size, &nactive_huge); + emitter_json_kv( + emitter, "ndirty_huge", emitter_type_size, &ndirty_huge); emitter_json_kv(emitter, "npageslabs_nonhuge", emitter_type_size, &npageslabs_nonhuge); - emitter_json_kv(emitter, "nactive_nonhuge", emitter_type_size, - &nactive_nonhuge); - emitter_json_kv(emitter, "ndirty_nonhuge", emitter_type_size, - &ndirty_nonhuge); + emitter_json_kv( + emitter, "nactive_nonhuge", emitter_type_size, &nactive_nonhuge); + emitter_json_kv( + emitter, "ndirty_nonhuge", emitter_type_size, &ndirty_nonhuge); + emitter_json_kv(emitter, "nretained_nonhuge", emitter_type_size, + &nretained_nonhuge); emitter_json_object_end(emitter); /* End "full_slabs" */ /* Next, empty slab stats. */ - CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.npageslabs_huge", - i, &npageslabs_huge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.nactive_huge", - i, &nactive_huge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.ndirty_huge", - i, &ndirty_huge, size_t); - - CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.npageslabs_nonhuge", - i, &npageslabs_nonhuge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.nactive_nonhuge", - i, &nactive_nonhuge, size_t); - CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.ndirty_nonhuge", - i, &ndirty_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.npageslabs_huge", i, + &npageslabs_huge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.nactive_huge", i, + &nactive_huge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.ndirty_huge", i, + &ndirty_huge, size_t); + + CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.npageslabs_nonhuge", i, + &npageslabs_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.nactive_nonhuge", i, + &nactive_nonhuge, size_t); + CTL_M2_GET("stats.arenas.0.hpa_shard.empty_slabs.ndirty_nonhuge", i, + &ndirty_nonhuge, size_t); nretained_nonhuge = npageslabs_nonhuge * HUGEPAGE_PAGES - nactive_nonhuge - ndirty_nonhuge; @@ -907,28 +1014,28 @@ stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { " npageslabs: %zu huge, %zu nonhuge\n" " nactive: %zu huge, %zu nonhuge \n" " ndirty: %zu huge, %zu nonhuge \n" - " nretained: 0 huge, %zu nonhuge \n" - "\n", - npageslabs_huge, npageslabs_nonhuge, - nactive_huge, nactive_nonhuge, - ndirty_huge, ndirty_nonhuge, - nretained_nonhuge); + " nretained: 0 huge, %zu nonhuge \n", + npageslabs_huge, npageslabs_nonhuge, nactive_huge, nactive_nonhuge, + ndirty_huge, ndirty_nonhuge, nretained_nonhuge); emitter_json_object_kv_begin(emitter, "empty_slabs"); - emitter_json_kv(emitter, "npageslabs_huge", emitter_type_size, - &npageslabs_huge); - emitter_json_kv(emitter, "nactive_huge", emitter_type_size, - &nactive_huge); - emitter_json_kv(emitter, "nactive_huge", emitter_type_size, - &nactive_huge); + emitter_json_kv( + emitter, "npageslabs_huge", emitter_type_size, &npageslabs_huge); + emitter_json_kv( + emitter, "nactive_huge", emitter_type_size, &nactive_huge); + emitter_json_kv( + emitter, "ndirty_huge", emitter_type_size, &ndirty_huge); emitter_json_kv(emitter, "npageslabs_nonhuge", emitter_type_size, &npageslabs_nonhuge); - emitter_json_kv(emitter, "nactive_nonhuge", emitter_type_size, - &nactive_nonhuge); - emitter_json_kv(emitter, "ndirty_nonhuge", emitter_type_size, - &ndirty_nonhuge); + emitter_json_kv( + emitter, "nactive_nonhuge", emitter_type_size, &nactive_nonhuge); + emitter_json_kv( + emitter, "ndirty_nonhuge", emitter_type_size, &ndirty_nonhuge); + emitter_json_kv(emitter, "nretained_nonhuge", emitter_type_size, + &nretained_nonhuge); emitter_json_object_end(emitter); /* End "empty_slabs" */ + /* Last, nonfull slab stats. */ COL_HDR(row, size, NULL, right, 20, size) COL_HDR(row, ind, NULL, right, 4, unsigned) COL_HDR(row, npageslabs_huge, NULL, right, 16, size) @@ -944,6 +1051,7 @@ stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { stats_arenas_mib[2] = i; CTL_LEAF_PREPARE(stats_arenas_mib, 3, "hpa_shard.nonfull_slabs"); + emitter_table_printf(emitter, " In nonfull slabs:\n"); emitter_table_row(emitter, &header_row); emitter_json_array_kv_begin(emitter, "nonfull_slabs"); bool in_gap = false; @@ -952,25 +1060,25 @@ stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { CTL_LEAF(stats_arenas_mib, 6, "npageslabs_huge", &npageslabs_huge, size_t); - CTL_LEAF(stats_arenas_mib, 6, "nactive_huge", - &nactive_huge, size_t); - CTL_LEAF(stats_arenas_mib, 6, "ndirty_huge", - &ndirty_huge, size_t); + CTL_LEAF( + stats_arenas_mib, 6, "nactive_huge", &nactive_huge, size_t); + CTL_LEAF( + stats_arenas_mib, 6, "ndirty_huge", &ndirty_huge, size_t); CTL_LEAF(stats_arenas_mib, 6, "npageslabs_nonhuge", &npageslabs_nonhuge, size_t); CTL_LEAF(stats_arenas_mib, 6, "nactive_nonhuge", &nactive_nonhuge, size_t); - CTL_LEAF(stats_arenas_mib, 6, "ndirty_nonhuge", - &ndirty_nonhuge, size_t); + CTL_LEAF(stats_arenas_mib, 6, "ndirty_nonhuge", &ndirty_nonhuge, + size_t); nretained_nonhuge = npageslabs_nonhuge * HUGEPAGE_PAGES - nactive_nonhuge - ndirty_nonhuge; bool in_gap_prev = in_gap; in_gap = (npageslabs_huge == 0 && npageslabs_nonhuge == 0); if (in_gap_prev && !in_gap) { - emitter_table_printf(emitter, - " ---\n"); + emitter_table_printf( + emitter, " ---\n"); } col_size.size_val = sz_pind2sz(j); @@ -989,27 +1097,38 @@ stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { emitter_json_object_begin(emitter); emitter_json_kv(emitter, "npageslabs_huge", emitter_type_size, &npageslabs_huge); - emitter_json_kv(emitter, "nactive_huge", emitter_type_size, - &nactive_huge); - emitter_json_kv(emitter, "ndirty_huge", emitter_type_size, - &ndirty_huge); - emitter_json_kv(emitter, "npageslabs_nonhuge", emitter_type_size, - &npageslabs_nonhuge); + emitter_json_kv( + emitter, "nactive_huge", emitter_type_size, &nactive_huge); + emitter_json_kv( + emitter, "ndirty_huge", emitter_type_size, &ndirty_huge); + emitter_json_kv(emitter, "npageslabs_nonhuge", + emitter_type_size, &npageslabs_nonhuge); emitter_json_kv(emitter, "nactive_nonhuge", emitter_type_size, &nactive_nonhuge); emitter_json_kv(emitter, "ndirty_nonhuge", emitter_type_size, &ndirty_nonhuge); + emitter_json_kv(emitter, "nretained_nonhuge", emitter_type_size, + &nretained_nonhuge); emitter_json_object_end(emitter); } emitter_json_array_end(emitter); /* End "nonfull_slabs" */ - emitter_json_object_end(emitter); /* End "hpa_shard" */ if (in_gap) { emitter_table_printf(emitter, " ---\n"); } } static void -stats_arena_mutexes_print(emitter_t *emitter, unsigned arena_ind, uint64_t uptime) { +stats_arena_hpa_shard_print(emitter_t *emitter, unsigned i, uint64_t uptime) { + emitter_json_object_kv_begin(emitter, "hpa_shard"); + stats_arena_hpa_shard_sec_print(emitter, i); + stats_arena_hpa_shard_counters_print(emitter, i, uptime); + stats_arena_hpa_shard_slabs_print(emitter, i); + emitter_json_object_end(emitter); /* End "hpa_shard" */ +} + +static void +stats_arena_mutexes_print( + emitter_t *emitter, unsigned arena_ind, uint64_t uptime) { emitter_row_t row; emitter_col_t col_name; emitter_col_t col64[mutex_prof_num_uint64_t_counters]; @@ -1030,8 +1149,8 @@ stats_arena_mutexes_print(emitter_t *emitter, unsigned arena_ind, uint64_t uptim i++) { const char *name = arena_mutex_names[i]; emitter_json_object_kv_begin(emitter, name); - mutex_stats_read_arena(stats_arenas_mib, 4, name, &col_name, - col64, col32, uptime); + mutex_stats_read_arena( + stats_arenas_mib, 4, name, &col_name, col64, col32, uptime); mutex_stats_emit(emitter, &row, col64, col32); emitter_json_object_end(emitter); /* Close the mutex dict. */ } @@ -1042,78 +1161,86 @@ JEMALLOC_COLD static void stats_arena_print(emitter_t *emitter, unsigned i, bool bins, bool large, bool mutex, bool extents, bool hpa) { - unsigned nthreads; + char name[ARENA_NAME_LEN]; + char *namep = name; + unsigned nthreads; const char *dss; - ssize_t dirty_decay_ms, muzzy_decay_ms; - size_t page, pactive, pdirty, pmuzzy, mapped, retained; - size_t base, internal, resident, metadata_thp, extent_avail; + ssize_t dirty_decay_ms, muzzy_decay_ms; + size_t page, pactive, pdirty, pmuzzy, mapped, retained; + size_t base, internal, resident, metadata_edata, metadata_rtree, + metadata_thp, extent_avail; uint64_t dirty_npurge, dirty_nmadvise, dirty_purged; uint64_t muzzy_npurge, muzzy_nmadvise, muzzy_purged; - size_t small_allocated; + size_t small_allocated; uint64_t small_nmalloc, small_ndalloc, small_nrequests, small_nfills, small_nflushes; - size_t large_allocated; + size_t large_allocated; uint64_t large_nmalloc, large_ndalloc, large_nrequests, large_nfills, large_nflushes; - size_t tcache_bytes, tcache_stashed_bytes, abandoned_vm; + size_t tcache_bytes, tcache_stashed_bytes, abandoned_vm; uint64_t uptime; CTL_GET("arenas.page", &page, size_t); + if (i != MALLCTL_ARENAS_ALL && i != MALLCTL_ARENAS_DESTROYED) { + CTL_M1_GET("arena.0.name", i, (void *)&namep, const char *); + emitter_kv( + emitter, "name", "name", emitter_type_string, &namep); + } CTL_M2_GET("stats.arenas.0.nthreads", i, &nthreads, unsigned); emitter_kv(emitter, "nthreads", "assigned threads", emitter_type_unsigned, &nthreads); CTL_M2_GET("stats.arenas.0.uptime", i, &uptime, uint64_t); - emitter_kv(emitter, "uptime_ns", "uptime", emitter_type_uint64, - &uptime); + emitter_kv( + emitter, "uptime_ns", "uptime", emitter_type_uint64, &uptime); CTL_M2_GET("stats.arenas.0.dss", i, &dss, const char *); emitter_kv(emitter, "dss", "dss allocation precedence", emitter_type_string, &dss); - CTL_M2_GET("stats.arenas.0.dirty_decay_ms", i, &dirty_decay_ms, - ssize_t); - CTL_M2_GET("stats.arenas.0.muzzy_decay_ms", i, &muzzy_decay_ms, - ssize_t); + CTL_M2_GET( + "stats.arenas.0.dirty_decay_ms", i, &dirty_decay_ms, ssize_t); + CTL_M2_GET( + "stats.arenas.0.muzzy_decay_ms", i, &muzzy_decay_ms, ssize_t); CTL_M2_GET("stats.arenas.0.pactive", i, &pactive, size_t); CTL_M2_GET("stats.arenas.0.pdirty", i, &pdirty, size_t); CTL_M2_GET("stats.arenas.0.pmuzzy", i, &pmuzzy, size_t); CTL_M2_GET("stats.arenas.0.dirty_npurge", i, &dirty_npurge, uint64_t); - CTL_M2_GET("stats.arenas.0.dirty_nmadvise", i, &dirty_nmadvise, - uint64_t); + CTL_M2_GET( + "stats.arenas.0.dirty_nmadvise", i, &dirty_nmadvise, uint64_t); CTL_M2_GET("stats.arenas.0.dirty_purged", i, &dirty_purged, uint64_t); CTL_M2_GET("stats.arenas.0.muzzy_npurge", i, &muzzy_npurge, uint64_t); - CTL_M2_GET("stats.arenas.0.muzzy_nmadvise", i, &muzzy_nmadvise, - uint64_t); + CTL_M2_GET( + "stats.arenas.0.muzzy_nmadvise", i, &muzzy_nmadvise, uint64_t); CTL_M2_GET("stats.arenas.0.muzzy_purged", i, &muzzy_purged, uint64_t); emitter_row_t decay_row; emitter_row_init(&decay_row); /* JSON-style emission. */ - emitter_json_kv(emitter, "dirty_decay_ms", emitter_type_ssize, - &dirty_decay_ms); - emitter_json_kv(emitter, "muzzy_decay_ms", emitter_type_ssize, - &muzzy_decay_ms); + emitter_json_kv( + emitter, "dirty_decay_ms", emitter_type_ssize, &dirty_decay_ms); + emitter_json_kv( + emitter, "muzzy_decay_ms", emitter_type_ssize, &muzzy_decay_ms); emitter_json_kv(emitter, "pactive", emitter_type_size, &pactive); emitter_json_kv(emitter, "pdirty", emitter_type_size, &pdirty); emitter_json_kv(emitter, "pmuzzy", emitter_type_size, &pmuzzy); - emitter_json_kv(emitter, "dirty_npurge", emitter_type_uint64, - &dirty_npurge); - emitter_json_kv(emitter, "dirty_nmadvise", emitter_type_uint64, - &dirty_nmadvise); - emitter_json_kv(emitter, "dirty_purged", emitter_type_uint64, - &dirty_purged); + emitter_json_kv( + emitter, "dirty_npurge", emitter_type_uint64, &dirty_npurge); + emitter_json_kv( + emitter, "dirty_nmadvise", emitter_type_uint64, &dirty_nmadvise); + emitter_json_kv( + emitter, "dirty_purged", emitter_type_uint64, &dirty_purged); - emitter_json_kv(emitter, "muzzy_npurge", emitter_type_uint64, - &muzzy_npurge); - emitter_json_kv(emitter, "muzzy_nmadvise", emitter_type_uint64, - &muzzy_nmadvise); - emitter_json_kv(emitter, "muzzy_purged", emitter_type_uint64, - &muzzy_purged); + emitter_json_kv( + emitter, "muzzy_npurge", emitter_type_uint64, &muzzy_npurge); + emitter_json_kv( + emitter, "muzzy_nmadvise", emitter_type_uint64, &muzzy_nmadvise); + emitter_json_kv( + emitter, "muzzy_purged", emitter_type_uint64, &muzzy_purged); /* Table-style emission. */ COL(decay_row, decay_type, right, 9, title); @@ -1230,12 +1357,12 @@ stats_arena_print(emitter_t *emitter, unsigned i, bool bins, bool large, col_count_nfills_ps.type = emitter_type_uint64; col_count_nflushes_ps.type = emitter_type_uint64; -#define GET_AND_EMIT_ALLOC_STAT(small_or_large, name, valtype) \ - CTL_M2_GET("stats.arenas.0." #small_or_large "." #name, i, \ - &small_or_large##_##name, valtype##_t); \ - emitter_json_kv(emitter, #name, emitter_type_##valtype, \ - &small_or_large##_##name); \ - col_count_##name.type = emitter_type_##valtype; \ +#define GET_AND_EMIT_ALLOC_STAT(small_or_large, name, valtype) \ + CTL_M2_GET("stats.arenas.0." #small_or_large "." #name, i, \ + &small_or_large##_##name, valtype##_t); \ + emitter_json_kv( \ + emitter, #name, emitter_type_##valtype, &small_or_large##_##name); \ + col_count_##name.type = emitter_type_##valtype; \ col_count_##name.valtype##_val = small_or_large##_##name; emitter_json_object_kv_begin(emitter, "small"); @@ -1243,20 +1370,20 @@ stats_arena_print(emitter_t *emitter, unsigned i, bool bins, bool large, GET_AND_EMIT_ALLOC_STAT(small, allocated, size) GET_AND_EMIT_ALLOC_STAT(small, nmalloc, uint64) - col_count_nmalloc_ps.uint64_val = - rate_per_second(col_count_nmalloc.uint64_val, uptime); + col_count_nmalloc_ps.uint64_val = rate_per_second( + col_count_nmalloc.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(small, ndalloc, uint64) - col_count_ndalloc_ps.uint64_val = - rate_per_second(col_count_ndalloc.uint64_val, uptime); + col_count_ndalloc_ps.uint64_val = rate_per_second( + col_count_ndalloc.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(small, nrequests, uint64) - col_count_nrequests_ps.uint64_val = - rate_per_second(col_count_nrequests.uint64_val, uptime); + col_count_nrequests_ps.uint64_val = rate_per_second( + col_count_nrequests.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(small, nfills, uint64) - col_count_nfills_ps.uint64_val = - rate_per_second(col_count_nfills.uint64_val, uptime); + col_count_nfills_ps.uint64_val = rate_per_second( + col_count_nfills.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(small, nflushes, uint64) - col_count_nflushes_ps.uint64_val = - rate_per_second(col_count_nflushes.uint64_val, uptime); + col_count_nflushes_ps.uint64_val = rate_per_second( + col_count_nflushes.uint64_val, uptime); emitter_table_row(emitter, &alloc_count_row); emitter_json_object_end(emitter); /* Close "small". */ @@ -1266,20 +1393,20 @@ stats_arena_print(emitter_t *emitter, unsigned i, bool bins, bool large, GET_AND_EMIT_ALLOC_STAT(large, allocated, size) GET_AND_EMIT_ALLOC_STAT(large, nmalloc, uint64) - col_count_nmalloc_ps.uint64_val = - rate_per_second(col_count_nmalloc.uint64_val, uptime); + col_count_nmalloc_ps.uint64_val = rate_per_second( + col_count_nmalloc.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(large, ndalloc, uint64) - col_count_ndalloc_ps.uint64_val = - rate_per_second(col_count_ndalloc.uint64_val, uptime); + col_count_ndalloc_ps.uint64_val = rate_per_second( + col_count_ndalloc.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(large, nrequests, uint64) - col_count_nrequests_ps.uint64_val = - rate_per_second(col_count_nrequests.uint64_val, uptime); + col_count_nrequests_ps.uint64_val = rate_per_second( + col_count_nrequests.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(large, nfills, uint64) - col_count_nfills_ps.uint64_val = - rate_per_second(col_count_nfills.uint64_val, uptime); + col_count_nfills_ps.uint64_val = rate_per_second( + col_count_nfills.uint64_val, uptime); GET_AND_EMIT_ALLOC_STAT(large, nflushes, uint64) - col_count_nflushes_ps.uint64_val = - rate_per_second(col_count_nflushes.uint64_val, uptime); + col_count_nflushes_ps.uint64_val = rate_per_second( + col_count_nflushes.uint64_val, uptime); emitter_table_row(emitter, &alloc_count_row); emitter_json_object_end(emitter); /* Close "large". */ @@ -1294,16 +1421,16 @@ stats_arena_print(emitter_t *emitter, unsigned i, bool bins, bool large, col_count_nrequests.uint64_val = small_nrequests + large_nrequests; col_count_nfills.uint64_val = small_nfills + large_nfills; col_count_nflushes.uint64_val = small_nflushes + large_nflushes; - col_count_nmalloc_ps.uint64_val = - rate_per_second(col_count_nmalloc.uint64_val, uptime); - col_count_ndalloc_ps.uint64_val = - rate_per_second(col_count_ndalloc.uint64_val, uptime); - col_count_nrequests_ps.uint64_val = - rate_per_second(col_count_nrequests.uint64_val, uptime); - col_count_nfills_ps.uint64_val = - rate_per_second(col_count_nfills.uint64_val, uptime); - col_count_nflushes_ps.uint64_val = - rate_per_second(col_count_nflushes.uint64_val, uptime); + col_count_nmalloc_ps.uint64_val = rate_per_second( + col_count_nmalloc.uint64_val, uptime); + col_count_ndalloc_ps.uint64_val = rate_per_second( + col_count_ndalloc.uint64_val, uptime); + col_count_nrequests_ps.uint64_val = rate_per_second( + col_count_nrequests.uint64_val, uptime); + col_count_nfills_ps.uint64_val = rate_per_second( + col_count_nfills.uint64_val, uptime); + col_count_nflushes_ps.uint64_val = rate_per_second( + col_count_nflushes.uint64_val, uptime); emitter_table_row(emitter, &alloc_count_row); emitter_row_t mem_count_row; @@ -1331,17 +1458,19 @@ stats_arena_print(emitter_t *emitter, unsigned i, bool bins, bool large, mem_count_val.size_val = pactive * page; emitter_table_row(emitter, &mem_count_row); -#define GET_AND_EMIT_MEM_STAT(stat) \ - CTL_M2_GET("stats.arenas.0."#stat, i, &stat, size_t); \ - emitter_json_kv(emitter, #stat, emitter_type_size, &stat); \ - mem_count_title.str_val = #stat":"; \ - mem_count_val.size_val = stat; \ +#define GET_AND_EMIT_MEM_STAT(stat) \ + CTL_M2_GET("stats.arenas.0." #stat, i, &stat, size_t); \ + emitter_json_kv(emitter, #stat, emitter_type_size, &stat); \ + mem_count_title.str_val = #stat ":"; \ + mem_count_val.size_val = stat; \ emitter_table_row(emitter, &mem_count_row); GET_AND_EMIT_MEM_STAT(mapped) GET_AND_EMIT_MEM_STAT(retained) GET_AND_EMIT_MEM_STAT(base) GET_AND_EMIT_MEM_STAT(internal) + GET_AND_EMIT_MEM_STAT(metadata_edata) + GET_AND_EMIT_MEM_STAT(metadata_rtree) GET_AND_EMIT_MEM_STAT(metadata_thp) GET_AND_EMIT_MEM_STAT(tcache_bytes) GET_AND_EMIT_MEM_STAT(tcache_stashed_bytes) @@ -1371,13 +1500,13 @@ JEMALLOC_COLD static void stats_general_print(emitter_t *emitter) { const char *cpv; - bool bv, bv2; - unsigned uv; - uint32_t u32v; - uint64_t u64v; - int64_t i64v; - ssize_t ssv, ssv2; - size_t sv, bsz, usz, u32sz, u64sz, i64sz, ssz, sssz, cpsz; + bool bv, bv2; + unsigned uv; + uint32_t u32v; + uint64_t u64v; + int64_t i64v; + ssize_t ssv, ssv2; + size_t sv, bsz, usz, u32sz, u64sz, i64sz, ssz, sssz, cpsz; bsz = sizeof(bool); usz = sizeof(unsigned); @@ -1393,11 +1522,11 @@ stats_general_print(emitter_t *emitter) { /* config. */ emitter_dict_begin(emitter, "config", "Build-time option settings"); -#define CONFIG_WRITE_BOOL(name) \ - do { \ - CTL_GET("config."#name, &bv, bool); \ - emitter_kv(emitter, #name, "config."#name, \ - emitter_type_bool, &bv); \ +#define CONFIG_WRITE_BOOL(name) \ + do { \ + CTL_GET("config." #name, &bv, bool); \ + emitter_kv( \ + emitter, #name, "config." #name, emitter_type_bool, &bv); \ } while (0) CONFIG_WRITE_BOOL(cache_oblivious); @@ -1411,59 +1540,103 @@ stats_general_print(emitter_t *emitter) { CONFIG_WRITE_BOOL(prof); CONFIG_WRITE_BOOL(prof_libgcc); CONFIG_WRITE_BOOL(prof_libunwind); + CONFIG_WRITE_BOOL(prof_frameptr); CONFIG_WRITE_BOOL(stats); CONFIG_WRITE_BOOL(utrace); CONFIG_WRITE_BOOL(xmalloc); #undef CONFIG_WRITE_BOOL emitter_dict_end(emitter); /* Close "config" dict. */ + /* system. */ + emitter_dict_begin(emitter, "system", "System configuration"); + + /* + * This shows system's THP mode detected at jemalloc's init time. + * jemalloc does not re-detect the mode even if it changes after + * jemalloc's init. It is assumed that system's THP mode is stable + * during the process's lifetime and a violation could lead to + * undefined behavior. + */ + const char *thp_mode_name = system_thp_mode_names[init_system_thp_mode]; + emitter_kv(emitter, "thp_mode", "system.thp_mode", emitter_type_string, + &thp_mode_name); + + emitter_dict_end(emitter); /* Close "system". */ + /* opt. */ -#define OPT_WRITE(name, var, size, emitter_type) \ - if (je_mallctl("opt."name, (void *)&var, &size, NULL, 0) == \ - 0) { \ - emitter_kv(emitter, name, "opt."name, emitter_type, \ - &var); \ +#define OPT_WRITE(name, var, size, emitter_type) \ + if (je_mallctl("opt." name, (void *)&var, &size, NULL, 0) == 0) { \ + emitter_kv(emitter, name, "opt." name, emitter_type, &var); \ } -#define OPT_WRITE_MUTABLE(name, var1, var2, size, emitter_type, \ - altname) \ - if (je_mallctl("opt."name, (void *)&var1, &size, NULL, 0) == \ - 0 && je_mallctl(altname, (void *)&var2, &size, NULL, 0) \ - == 0) { \ - emitter_kv_note(emitter, name, "opt."name, \ - emitter_type, &var1, altname, emitter_type, \ - &var2); \ +#define OPT_WRITE_MUTABLE(name, var1, var2, size, emitter_type, altname) \ + if (je_mallctl("opt." name, (void *)&var1, &size, NULL, 0) == 0 \ + && je_mallctl(altname, (void *)&var2, &size, NULL, 0) == 0) { \ + emitter_kv_note(emitter, name, "opt." name, emitter_type, \ + &var1, altname, emitter_type, &var2); \ } #define OPT_WRITE_BOOL(name) OPT_WRITE(name, bv, bsz, emitter_type_bool) -#define OPT_WRITE_BOOL_MUTABLE(name, altname) \ +#define OPT_WRITE_BOOL_MUTABLE(name, altname) \ OPT_WRITE_MUTABLE(name, bv, bv2, bsz, emitter_type_bool, altname) -#define OPT_WRITE_UNSIGNED(name) \ - OPT_WRITE(name, uv, usz, emitter_type_unsigned) +#define OPT_WRITE_UNSIGNED(name) OPT_WRITE(name, uv, usz, emitter_type_unsigned) -#define OPT_WRITE_INT64(name) \ - OPT_WRITE(name, i64v, i64sz, emitter_type_int64) -#define OPT_WRITE_UINT64(name) \ - OPT_WRITE(name, u64v, u64sz, emitter_type_uint64) +#define OPT_WRITE_INT64(name) OPT_WRITE(name, i64v, i64sz, emitter_type_int64) +#define OPT_WRITE_UINT64(name) OPT_WRITE(name, u64v, u64sz, emitter_type_uint64) -#define OPT_WRITE_SIZE_T(name) \ - OPT_WRITE(name, sv, ssz, emitter_type_size) -#define OPT_WRITE_SSIZE_T(name) \ - OPT_WRITE(name, ssv, sssz, emitter_type_ssize) -#define OPT_WRITE_SSIZE_T_MUTABLE(name, altname) \ - OPT_WRITE_MUTABLE(name, ssv, ssv2, sssz, emitter_type_ssize, \ - altname) +#define OPT_WRITE_SIZE_T(name) OPT_WRITE(name, sv, ssz, emitter_type_size) +#define OPT_WRITE_SSIZE_T(name) OPT_WRITE(name, ssv, sssz, emitter_type_ssize) +#define OPT_WRITE_SSIZE_T_MUTABLE(name, altname) \ + OPT_WRITE_MUTABLE(name, ssv, ssv2, sssz, emitter_type_ssize, altname) -#define OPT_WRITE_CHAR_P(name) \ - OPT_WRITE(name, cpv, cpsz, emitter_type_string) +#define OPT_WRITE_CHAR_P(name) OPT_WRITE(name, cpv, cpsz, emitter_type_string) emitter_dict_begin(emitter, "opt", "Run-time option settings"); + /* + * opt.malloc_conf. + * + * Sources are documented in https://jemalloc.net/jemalloc.3.html#tuning + * - (Not Included Here) The string specified via --with-malloc-conf, + * which is already printed out above as config.malloc_conf + * - (Included) The string pointed to by the global variable malloc_conf + * - (Included) The “name” of the file referenced by the symbolic link + * named /etc/malloc.conf + * - (Included) The value of the environment variable MALLOC_CONF + * - (Optional, Unofficial) The string pointed to by the global variable + * malloc_conf_2_conf_harder, which is hidden from the public. + * + * Note: The outputs are strictly ordered by priorities (low -> high). + * + */ +#define MALLOC_CONF_WRITE(name, message) \ + if (je_mallctl("opt.malloc_conf." name, (void *)&cpv, &cpsz, NULL, 0) \ + != 0) { \ + cpv = ""; \ + } \ + emitter_kv(emitter, name, message, emitter_type_string, &cpv); + + MALLOC_CONF_WRITE("global_var", "Global variable malloc_conf"); + MALLOC_CONF_WRITE("symlink", "Symbolic link malloc.conf"); + MALLOC_CONF_WRITE("env_var", "Environment variable MALLOC_CONF"); + /* As this config is unofficial, skip the output if it's NULL */ + if (je_mallctl("opt.malloc_conf.global_var_2_conf_harder", (void *)&cpv, + &cpsz, NULL, 0) + == 0) { + emitter_kv(emitter, "global_var_2_conf_harder", + "Global " + "variable malloc_conf_2_conf_harder", + emitter_type_string, &cpv); + } +#undef MALLOC_CONF_WRITE + OPT_WRITE_BOOL("abort") OPT_WRITE_BOOL("abort_conf") OPT_WRITE_BOOL("cache_oblivious") OPT_WRITE_BOOL("confirm_conf") + OPT_WRITE_BOOL("experimental_hpa_start_huge_if_thp_always") + OPT_WRITE_BOOL("experimental_hpa_enforce_hugify") OPT_WRITE_BOOL("retain") OPT_WRITE_CHAR_P("dss") OPT_WRITE_UNSIGNED("narenas") @@ -1473,7 +1646,9 @@ stats_general_print(emitter_t *emitter) { OPT_WRITE_SIZE_T("hpa_slab_max_alloc") OPT_WRITE_SIZE_T("hpa_hugification_threshold") OPT_WRITE_UINT64("hpa_hugify_delay_ms") + OPT_WRITE_BOOL("hpa_hugify_sync") OPT_WRITE_UINT64("hpa_min_purge_interval_ms") + OPT_WRITE_SSIZE_T("experimental_hpa_max_purge_nhp") if (je_mallctl("opt.hpa_dirty_mult", (void *)&u32v, &u32sz, NULL, 0) == 0) { /* @@ -1492,11 +1667,14 @@ stats_general_print(emitter_t *emitter) { "opt.hpa_dirty_mult", emitter_type_string, &bufp); } } + OPT_WRITE_SIZE_T("hpa_purge_threshold") + OPT_WRITE_UINT64("hpa_min_purge_delay_ms") + OPT_WRITE_CHAR_P("hpa_hugify_style") OPT_WRITE_SIZE_T("hpa_sec_nshards") OPT_WRITE_SIZE_T("hpa_sec_max_alloc") OPT_WRITE_SIZE_T("hpa_sec_max_bytes") - OPT_WRITE_SIZE_T("hpa_sec_bytes_after_flush") OPT_WRITE_SIZE_T("hpa_sec_batch_fill_extra") + OPT_WRITE_BOOL("huge_arena_pac_thp") OPT_WRITE_CHAR_P("metadata_thp") OPT_WRITE_INT64("mutex_max_spin") OPT_WRITE_BOOL_MUTABLE("background_thread", "background_thread") @@ -1508,6 +1686,7 @@ stats_general_print(emitter_t *emitter) { OPT_WRITE_BOOL("utrace") OPT_WRITE_BOOL("xmalloc") OPT_WRITE_BOOL("experimental_infallible_new") + OPT_WRITE_BOOL("experimental_tcache_gc") OPT_WRITE_BOOL("tcache") OPT_WRITE_SIZE_T("tcache_max") OPT_WRITE_UNSIGNED("tcache_nslots_small_min") @@ -1518,12 +1697,14 @@ stats_general_print(emitter_t *emitter) { OPT_WRITE_SIZE_T("tcache_gc_delay_bytes") OPT_WRITE_UNSIGNED("lg_tcache_flush_small_div") OPT_WRITE_UNSIGNED("lg_tcache_flush_large_div") + OPT_WRITE_UNSIGNED("debug_double_free_max_scan") OPT_WRITE_CHAR_P("thp") OPT_WRITE_BOOL("prof") + OPT_WRITE_UNSIGNED("prof_bt_max") OPT_WRITE_CHAR_P("prof_prefix") OPT_WRITE_BOOL_MUTABLE("prof_active", "prof.active") - OPT_WRITE_BOOL_MUTABLE("prof_thread_active_init", - "prof.thread_active_init") + OPT_WRITE_BOOL_MUTABLE( + "prof_thread_active_init", "prof.thread_active_init") OPT_WRITE_SSIZE_T_MUTABLE("lg_prof_sample", "prof.lg_sample") OPT_WRITE_BOOL("prof_accum") OPT_WRITE_SSIZE_T("lg_prof_interval") @@ -1538,8 +1719,10 @@ stats_general_print(emitter_t *emitter) { OPT_WRITE_INT64("stats_interval") OPT_WRITE_CHAR_P("stats_interval_opts") OPT_WRITE_CHAR_P("zero_realloc") + OPT_WRITE_SIZE_T("process_madvise_max_batch") + OPT_WRITE_BOOL("disable_large_size_classes") - emitter_dict_end(emitter); + emitter_dict_end(emitter); /* Close "opt". */ #undef OPT_WRITE #undef OPT_WRITE_MUTABLE @@ -1559,12 +1742,12 @@ stats_general_print(emitter_t *emitter) { "prof.thread_active_init", emitter_type_bool, &bv); CTL_GET("prof.active", &bv, bool); - emitter_kv(emitter, "active", "prof.active", emitter_type_bool, - &bv); + emitter_kv( + emitter, "active", "prof.active", emitter_type_bool, &bv); CTL_GET("prof.gdump", &bv, bool); - emitter_kv(emitter, "gdump", "prof.gdump", emitter_type_bool, - &bv); + emitter_kv( + emitter, "gdump", "prof.gdump", emitter_type_bool, &bv); CTL_GET("prof.interval", &u64v, uint64_t); emitter_kv(emitter, "interval", "prof.interval", @@ -1603,6 +1786,10 @@ stats_general_print(emitter_t *emitter) { CTL_GET("arenas.page", &sv, size_t); emitter_kv(emitter, "page", "Page size", emitter_type_size, &sv); + CTL_GET("arenas.hugepage", &sv, size_t); + emitter_kv( + emitter, "hugepage", "Hugepage size", emitter_type_size, &sv); + if (je_mallctl("arenas.tcache_max", (void *)&sv, &ssz, NULL, 0) == 0) { emitter_kv(emitter, "tcache_max", "Maximum thread-cached size class", emitter_type_size, &sv); @@ -1631,20 +1818,20 @@ stats_general_print(emitter_t *emitter) { emitter_json_object_begin(emitter); CTL_LEAF(arenas_bin_mib, 3, "size", &sv, size_t); - emitter_json_kv(emitter, "size", emitter_type_size, - &sv); + emitter_json_kv( + emitter, "size", emitter_type_size, &sv); CTL_LEAF(arenas_bin_mib, 3, "nregs", &u32v, uint32_t); - emitter_json_kv(emitter, "nregs", emitter_type_uint32, - &u32v); + emitter_json_kv( + emitter, "nregs", emitter_type_uint32, &u32v); CTL_LEAF(arenas_bin_mib, 3, "slab_size", &sv, size_t); - emitter_json_kv(emitter, "slab_size", emitter_type_size, - &sv); + emitter_json_kv( + emitter, "slab_size", emitter_type_size, &sv); CTL_LEAF(arenas_bin_mib, 3, "nshards", &u32v, uint32_t); - emitter_json_kv(emitter, "nshards", emitter_type_uint32, - &u32v); + emitter_json_kv( + emitter, "nshards", emitter_type_uint32, &u32v); emitter_json_object_end(emitter); } @@ -1665,8 +1852,8 @@ stats_general_print(emitter_t *emitter) { emitter_json_object_begin(emitter); CTL_LEAF(arenas_lextent_mib, 3, "size", &sv, size_t); - emitter_json_kv(emitter, "size", emitter_type_size, - &sv); + emitter_json_kv( + emitter, "size", emitter_type_size, &sv); emitter_json_object_end(emitter); } @@ -1684,15 +1871,17 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, * These should be deleted. We keep them around for a while, to aid in * the transition to the emitter code. */ - size_t allocated, active, metadata, metadata_thp, resident, mapped, - retained; - size_t num_background_threads; - size_t zero_reallocs; + size_t allocated, active, metadata, metadata_edata, metadata_rtree, + metadata_thp, resident, mapped, retained; + size_t num_background_threads; + size_t zero_reallocs; uint64_t background_thread_num_runs, background_thread_run_interval; CTL_GET("stats.allocated", &allocated, size_t); CTL_GET("stats.active", &active, size_t); CTL_GET("stats.metadata", &metadata, size_t); + CTL_GET("stats.metadata_edata", &metadata_edata, size_t); + CTL_GET("stats.metadata_rtree", &metadata_rtree, size_t); CTL_GET("stats.metadata_thp", &metadata_thp, size_t); CTL_GET("stats.resident", &resident, size_t); CTL_GET("stats.mapped", &mapped, size_t); @@ -1718,18 +1907,24 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, emitter_json_kv(emitter, "allocated", emitter_type_size, &allocated); emitter_json_kv(emitter, "active", emitter_type_size, &active); emitter_json_kv(emitter, "metadata", emitter_type_size, &metadata); - emitter_json_kv(emitter, "metadata_thp", emitter_type_size, - &metadata_thp); + emitter_json_kv( + emitter, "metadata_edata", emitter_type_size, &metadata_edata); + emitter_json_kv( + emitter, "metadata_rtree", emitter_type_size, &metadata_rtree); + emitter_json_kv( + emitter, "metadata_thp", emitter_type_size, &metadata_thp); emitter_json_kv(emitter, "resident", emitter_type_size, &resident); emitter_json_kv(emitter, "mapped", emitter_type_size, &mapped); emitter_json_kv(emitter, "retained", emitter_type_size, &retained); - emitter_json_kv(emitter, "zero_reallocs", emitter_type_size, - &zero_reallocs); + emitter_json_kv( + emitter, "zero_reallocs", emitter_type_size, &zero_reallocs); - emitter_table_printf(emitter, "Allocated: %zu, active: %zu, " - "metadata: %zu (n_thp %zu), resident: %zu, mapped: %zu, " - "retained: %zu\n", allocated, active, metadata, metadata_thp, - resident, mapped, retained); + emitter_table_printf(emitter, + "Allocated: %zu, active: %zu, " + "metadata: %zu (n_thp %zu, edata %zu, rtree %zu), resident: %zu, " + "mapped: %zu, retained: %zu\n", + allocated, active, metadata, metadata_thp, metadata_edata, + metadata_rtree, resident, mapped, retained); /* Strange behaviors */ emitter_table_printf(emitter, @@ -1737,16 +1932,17 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, /* Background thread stats. */ emitter_json_object_kv_begin(emitter, "background_thread"); - emitter_json_kv(emitter, "num_threads", emitter_type_size, - &num_background_threads); + emitter_json_kv( + emitter, "num_threads", emitter_type_size, &num_background_threads); emitter_json_kv(emitter, "num_runs", emitter_type_uint64, &background_thread_num_runs); emitter_json_kv(emitter, "run_interval", emitter_type_uint64, &background_thread_run_interval); emitter_json_object_end(emitter); /* Close "background_thread". */ - emitter_table_printf(emitter, "Background threads: %zu, " - "num_runs: %"FMTu64", run_interval: %"FMTu64" ns\n", + emitter_table_printf(emitter, + "Background threads: %zu, " + "num_runs: %" FMTu64 ", run_interval: %" FMTu64 " ns\n", num_background_threads, background_thread_num_runs, background_thread_run_interval); @@ -1755,7 +1951,7 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, emitter_col_t name; emitter_col_t col64[mutex_prof_num_uint64_t_counters]; emitter_col_t col32[mutex_prof_num_uint32_t_counters]; - uint64_t uptime; + uint64_t uptime; emitter_row_init(&row); mutex_stats_init_cols(&row, "", &name, col64, col32); @@ -1770,7 +1966,8 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, for (int i = 0; i < mutex_prof_num_global_mutexes; i++) { mutex_stats_read_global(stats_mutexes_mib, 2, global_mutex_names[i], &name, col64, col32, uptime); - emitter_json_object_kv_begin(emitter, global_mutex_names[i]); + emitter_json_object_kv_begin( + emitter, global_mutex_names[i]); mutex_stats_emit(emitter, &row, col64, col32); emitter_json_object_end(emitter); } @@ -1789,24 +1986,24 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, size_t mib[3]; size_t miblen = sizeof(mib) / sizeof(size_t); size_t sz; - VARIABLE_ARRAY(bool, initialized, narenas); - bool destroyed_initialized; - unsigned i, j, ninitialized; + VARIABLE_ARRAY_UNSAFE(bool, initialized, narenas); + bool destroyed_initialized; + unsigned i, ninitialized; xmallctlnametomib("arena.0.initialized", mib, &miblen); for (i = ninitialized = 0; i < narenas; i++) { mib[1] = i; sz = sizeof(bool); - xmallctlbymib(mib, miblen, &initialized[i], &sz, - NULL, 0); + xmallctlbymib( + mib, miblen, &initialized[i], &sz, NULL, 0); if (initialized[i]) { ninitialized++; } } mib[1] = MALLCTL_ARENAS_DESTROYED; sz = sizeof(bool); - xmallctlbymib(mib, miblen, &destroyed_initialized, &sz, - NULL, 0); + xmallctlbymib( + mib, miblen, &destroyed_initialized, &sz, NULL, 0); /* Merged stats. */ if (merged && (ninitialized > 1 || !unmerged)) { @@ -1821,23 +2018,24 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, /* Destroyed stats. */ if (destroyed_initialized && destroyed) { /* Print destroyed arena stats. */ - emitter_table_printf(emitter, - "Destroyed arenas stats:\n"); + emitter_table_printf( + emitter, "Destroyed arenas stats:\n"); emitter_json_object_kv_begin(emitter, "destroyed"); stats_arena_print(emitter, MALLCTL_ARENAS_DESTROYED, bins, large, mutex, extents, hpa); - emitter_json_object_end(emitter); /* Close "destroyed". */ + emitter_json_object_end( + emitter); /* Close "destroyed". */ } /* Unmerged stats. */ if (unmerged) { - for (i = j = 0; i < narenas; i++) { + for (i = 0; i < narenas; i++) { if (initialized[i]) { char arena_ind_str[20]; malloc_snprintf(arena_ind_str, sizeof(arena_ind_str), "%u", i); - emitter_json_object_kv_begin(emitter, - arena_ind_str); + emitter_json_object_kv_begin( + emitter, arena_ind_str); emitter_table_printf(emitter, "arenas[%s]:\n", arena_ind_str); stats_arena_print(emitter, i, bins, @@ -1853,9 +2051,9 @@ stats_print_helper(emitter_t *emitter, bool merged, bool destroyed, void stats_print(write_cb_t *write_cb, void *cbopaque, const char *opts) { - int err; + int err; uint64_t epoch; - size_t u64sz; + size_t u64sz; #define OPTION(o, v, d, s) bool v = d; STATS_PRINT_OPTIONS #undef OPTION @@ -1869,15 +2067,17 @@ stats_print(write_cb_t *write_cb, void *cbopaque, const char *opts) { * */ epoch = 1; u64sz = sizeof(uint64_t); - err = je_mallctl("epoch", (void *)&epoch, &u64sz, (void *)&epoch, - sizeof(uint64_t)); + err = je_mallctl( + "epoch", (void *)&epoch, &u64sz, (void *)&epoch, sizeof(uint64_t)); if (err != 0) { if (err == EAGAIN) { - malloc_write(": Memory allocation failure in " + malloc_write( + ": Memory allocation failure in " "mallctl(\"epoch\", ...)\n"); return; } - malloc_write(": Failure in mallctl(\"epoch\", " + malloc_write( + ": Failure in mallctl(\"epoch\", " "...)\n"); abort(); } @@ -1885,7 +2085,10 @@ stats_print(write_cb_t *write_cb, void *cbopaque, const char *opts) { if (opts != NULL) { for (unsigned i = 0; opts[i] != '\0'; i++) { switch (opts[i]) { -#define OPTION(o, v, d, s) case o: v = s; break; +#define OPTION(o, v, d, s) \ + case o: \ + v = s; \ + break; STATS_PRINT_OPTIONS #undef OPTION default:; @@ -1895,8 +2098,8 @@ stats_print(write_cb_t *write_cb, void *cbopaque, const char *opts) { emitter_t emitter; emitter_init(&emitter, - json ? emitter_output_json_compact : emitter_output_table, - write_cb, cbopaque); + json ? emitter_output_json_compact : emitter_output_table, write_cb, + cbopaque); emitter_begin(&emitter); emitter_table_printf(&emitter, "___ Begin jemalloc statistics ___\n"); emitter_json_object_kv_begin(&emitter, "jemalloc"); @@ -1905,8 +2108,8 @@ stats_print(write_cb_t *write_cb, void *cbopaque, const char *opts) { stats_general_print(&emitter); } if (config_stats) { - stats_print_helper(&emitter, merged, destroyed, unmerged, - bins, large, mutex, extents, hpa); + stats_print_helper(&emitter, merged, destroyed, unmerged, bins, + large, mutex, extents, hpa); } emitter_json_object_end(&emitter); /* Closes the "jemalloc" dict. */ @@ -1925,14 +2128,31 @@ stats_interval_postponed_event_wait(tsd_t *tsd) { } void -stats_interval_event_handler(tsd_t *tsd, uint64_t elapsed) { +stats_interval_event_handler(tsd_t *tsd) { + uint64_t last_event = thread_allocated_last_event_get(tsd); + uint64_t last_sample_event = tsd_stats_interval_last_event_get(tsd); + tsd_stats_interval_last_event_set(tsd, last_event); + uint64_t elapsed = last_event - last_sample_event; + assert(elapsed > 0 && elapsed != TE_INVALID_ELAPSED); - if (counter_accum(tsd_tsdn(tsd), &stats_interval_accumulated, - elapsed)) { + if (counter_accum( + tsd_tsdn(tsd), &stats_interval_accumulated, elapsed)) { je_malloc_stats_print(NULL, NULL, opt_stats_interval_opts); } } +static te_enabled_t +stats_interval_enabled(void) { + return opt_stats_interval >= 0 ? te_enabled_yes : te_enabled_no; +} + +te_base_cb_t stats_interval_te_handler = { + .enabled = &stats_interval_enabled, + .new_event_wait = &stats_interval_new_event_wait, + .postponed_event_wait = &stats_interval_postponed_event_wait, + .event_handler = &stats_interval_event_handler, +}; + bool stats_boot(void) { uint64_t stats_interval; @@ -1940,12 +2160,12 @@ stats_boot(void) { assert(opt_stats_interval == -1); stats_interval = 0; stats_interval_accum_batch = 0; - } else{ + } else { /* See comments in stats.h */ - stats_interval = (opt_stats_interval > 0) ? - opt_stats_interval : 1; - uint64_t batch = stats_interval >> - STATS_INTERVAL_ACCUM_LG_BATCH_SIZE; + stats_interval = (opt_stats_interval > 0) ? opt_stats_interval + : 1; + uint64_t batch = stats_interval + >> STATS_INTERVAL_ACCUM_LG_BATCH_SIZE; if (batch > STATS_INTERVAL_ACCUM_BATCH_MAX) { batch = STATS_INTERVAL_ACCUM_BATCH_MAX; } else if (batch == 0) { diff --git a/dep/jemalloc/src/sz.c b/dep/jemalloc/src/sz.c index d3115dda7c96d..da92f2b41e42a 100644 --- a/dep/jemalloc/src/sz.c +++ b/dep/jemalloc/src/sz.c @@ -3,12 +3,12 @@ #include "jemalloc/internal/sz.h" JEMALLOC_ALIGNED(CACHELINE) -size_t sz_pind2sz_tab[SC_NPSIZES+1]; +size_t sz_pind2sz_tab[SC_NPSIZES + 1]; size_t sz_large_pad; size_t sz_psz_quantize_floor(size_t size) { - size_t ret; + size_t ret; pszind_t pind; assert(size > 0); @@ -47,8 +47,8 @@ sz_psz_quantize_ceil(size_t size) { * search would potentially find sufficiently aligned available * memory somewhere lower. */ - ret = sz_pind2sz(sz_psz2ind(ret - sz_large_pad + 1)) + - sz_large_pad; + ret = sz_pind2sz(sz_psz2ind(ret - sz_large_pad + 1)) + + sz_large_pad; } return ret; } @@ -65,7 +65,7 @@ sz_boot_pind2sz_tab(const sc_data_t *sc_data) { } } for (int i = pind; i <= (int)SC_NPSIZES; i++) { - sz_pind2sz_tab[pind] = sc_data->large_maxclass + PAGE; + sz_pind2sz_tab[i] = sc_data->large_maxclass + PAGE; } } @@ -95,12 +95,13 @@ sz_boot_size2index_tab(const sc_data_t *sc_data) { for (unsigned sc_ind = 0; sc_ind < SC_NSIZES && dst_ind < dst_max; sc_ind++) { const sc_t *sc = &sc_data->sc[sc_ind]; - size_t sz = (ZU(1) << sc->lg_base) + size_t sz = (ZU(1) << sc->lg_base) + (ZU(sc->ndelta) << sc->lg_delta); size_t max_ind = ((sz + (ZU(1) << SC_LG_TINY_MIN) - 1) - >> SC_LG_TINY_MIN); + >> SC_LG_TINY_MIN); for (; dst_ind <= max_ind && dst_ind < dst_max; dst_ind++) { - sz_size2index_tab[dst_ind] = sc_ind; + assert(sc_ind < 1 << (sizeof(uint8_t) * 8)); + sz_size2index_tab[dst_ind] = (uint8_t)sc_ind; } } } diff --git a/dep/jemalloc/src/tcache.c b/dep/jemalloc/src/tcache.c index fa16732e4abfa..fe210d27bad62 100644 --- a/dep/jemalloc/src/tcache.c +++ b/dep/jemalloc/src/tcache.c @@ -2,6 +2,7 @@ #include "jemalloc/internal/jemalloc_internal_includes.h" #include "jemalloc/internal/assert.h" +#include "jemalloc/internal/base.h" #include "jemalloc/internal/mutex.h" #include "jemalloc/internal/safety_check.h" #include "jemalloc/internal/san.h" @@ -12,7 +13,7 @@ bool opt_tcache = true; -/* tcache_maxclass is set to 32KB by default. */ +/* global_do_not_change_tcache_maxclass is set to 32KB by default. */ size_t opt_tcache_max = ((size_t)1) << 15; /* Reasonable defaults for min and max values. */ @@ -28,7 +29,7 @@ unsigned opt_tcache_nslots_large = 20; * This is bounded by some other constraints as well, like the fact that it * must be even, must be less than opt_tcache_nslots_small_max, etc.. */ -ssize_t opt_lg_tcache_nslots_mul = 1; +ssize_t opt_lg_tcache_nslots_mul = 1; /* * Number of allocation bytes between tcache incremental GCs. Again, this @@ -57,27 +58,41 @@ size_t opt_tcache_gc_delay_bytes = 0; unsigned opt_lg_tcache_flush_small_div = 1; unsigned opt_lg_tcache_flush_large_div = 1; -cache_bin_info_t *tcache_bin_info; - -/* Total stack size required (per tcache). Include the padding above. */ -static size_t tcache_bin_alloc_size; -static size_t tcache_bin_alloc_alignment; +/* + * Number of cache bins enabled, including both large and small. This value + * is only used to initialize tcache_nbins in the per-thread tcache. + * Directly modifying it will not affect threads already launched. + */ +unsigned global_do_not_change_tcache_nbins; +/* + * Max size class to be cached (can be small or large). This value is only used + * to initialize tcache_max in the per-thread tcache. Directly modifying it + * will not affect threads already launched. + */ +size_t global_do_not_change_tcache_maxclass; -/* Number of cache bins enabled, including both large and small. */ -unsigned nhbins; -/* Max size class to be cached (can be small or large). */ -size_t tcache_maxclass; +/* + * Default bin info for each bin. Will be initialized in malloc_conf_init + * and tcache_boot and should not be modified after that. + */ +static cache_bin_info_t opt_tcache_ncached_max[TCACHE_NBINS_MAX] = {{0}}; +/* + * Marks whether a bin's info is set already. This is used in + * tcache_bin_info_compute to avoid overwriting ncached_max specified by + * malloc_conf. It should be set only when parsing malloc_conf. + */ +static bool opt_tcache_ncached_max_set[TCACHE_NBINS_MAX] = {0}; -tcaches_t *tcaches; +tcaches_t *tcaches; /* Index of first element within tcaches that has never been used. */ -static unsigned tcaches_past; +static unsigned tcaches_past; /* Head of singly linked list tracking available tcaches elements. */ -static tcaches_t *tcaches_avail; +static tcaches_t *tcaches_avail; /* Protects tcaches{,_past,_avail}. */ -static malloc_mutex_t tcaches_mtx; +static malloc_mutex_t tcaches_mtx; /******************************************************************************/ @@ -96,14 +111,83 @@ tcache_gc_postponed_event_wait(tsd_t *tsd) { return TE_MIN_START_WAIT; } -uint64_t -tcache_gc_dalloc_new_event_wait(tsd_t *tsd) { - return opt_tcache_gc_incr_bytes; +static inline void +tcache_bin_fill_ctl_init(tcache_slow_t *tcache_slow, szind_t szind) { + assert(szind < SC_NBINS); + cache_bin_fill_ctl_t *ctl = + &tcache_slow->bin_fill_ctl_do_not_access_directly[szind]; + ctl->base = 1; + ctl->offset = 0; } -uint64_t -tcache_gc_dalloc_postponed_event_wait(tsd_t *tsd) { - return TE_MIN_START_WAIT; +static inline cache_bin_fill_ctl_t * +tcache_bin_fill_ctl_get(tcache_slow_t *tcache_slow, szind_t szind) { + assert(szind < SC_NBINS); + cache_bin_fill_ctl_t *ctl = + &tcache_slow->bin_fill_ctl_do_not_access_directly[szind]; + assert(ctl->base > ctl->offset); + return ctl; +} + +/* + * The number of items to be filled at a time for a given small bin is + * calculated by (ncached_max >> lg_fill_div). + * The actual ctl struct consists of two fields, i.e. base and offset, + * and the difference between the two(base - offset) is the final lg_fill_div. + * The base is adjusted during GC based on the traffic within a period of time, + * while the offset is updated in real time to handle the immediate traffic. + */ +static inline uint8_t +tcache_nfill_small_lg_div_get(tcache_slow_t *tcache_slow, szind_t szind) { + cache_bin_fill_ctl_t *ctl = tcache_bin_fill_ctl_get(tcache_slow, szind); + return (ctl->base - (opt_experimental_tcache_gc ? ctl->offset : 0)); +} + +/* + * When we want to fill more items to respond to burst load, + * offset is increased so that (base - offset) is decreased, + * which in return increases the number of items to be filled. + */ +static inline void +tcache_nfill_small_burst_prepare(tcache_slow_t *tcache_slow, szind_t szind) { + cache_bin_fill_ctl_t *ctl = tcache_bin_fill_ctl_get(tcache_slow, szind); + if (ctl->offset + 1 < ctl->base) { + ctl->offset++; + } +} + +static inline void +tcache_nfill_small_burst_reset(tcache_slow_t *tcache_slow, szind_t szind) { + cache_bin_fill_ctl_t *ctl = tcache_bin_fill_ctl_get(tcache_slow, szind); + ctl->offset = 0; +} + +/* + * limit == 0: indicating that the fill count should be increased, + * i.e. lg_div(base) should be decreased. + * + * limit != 0: limit is set to ncached_max, indicating that the fill + * count should be decreased, i.e. lg_div(base) should be increased. + */ +static inline void +tcache_nfill_small_gc_update( + tcache_slow_t *tcache_slow, szind_t szind, cache_bin_sz_t limit) { + cache_bin_fill_ctl_t *ctl = tcache_bin_fill_ctl_get(tcache_slow, szind); + if (!limit && ctl->base > 1) { + /* + * Increase fill count by 2X for small bins. Make sure + * lg_fill_div stays greater than 1. + */ + ctl->base--; + } else if (limit && (limit >> ctl->base) > 1) { + /* + * Reduce fill count by 2X. Limit lg_fill_div such that + * the fill count is always at least 1. + */ + ctl->base++; + } + /* Reset the offset for the next GC period. */ + ctl->offset = 0; } static uint8_t @@ -119,420 +203,467 @@ tcache_gc_item_delay_compute(szind_t szind) { return (uint8_t)item_delay; } -static void -tcache_gc_small(tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, - szind_t szind) { - /* Aim to flush 3/4 of items below low-water. */ +static inline void * +tcache_gc_small_heuristic_addr_get( + tsd_t *tsd, tcache_slow_t *tcache_slow, szind_t szind) { assert(szind < SC_NBINS); + tsdn_t *tsdn = tsd_tsdn(tsd); + bin_t *bin = bin_choose(tsdn, tcache_slow->arena, szind, NULL); + assert(bin != NULL); + + malloc_mutex_lock(tsdn, &bin->lock); + edata_t *slab = (bin->slabcur == NULL) + ? edata_heap_first(&bin->slabs_nonfull) + : bin->slabcur; + assert(slab != NULL || edata_heap_empty(&bin->slabs_nonfull)); + void *ret = (slab != NULL) ? edata_addr_get(slab) : NULL; + assert(ret != NULL || slab == NULL); + malloc_mutex_unlock(tsdn, &bin->lock); - cache_bin_t *cache_bin = &tcache->bins[szind]; - cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin, - &tcache_bin_info[szind]); - cache_bin_sz_t low_water = cache_bin_low_water_get(cache_bin, - &tcache_bin_info[szind]); - assert(!tcache_slow->bin_refilled[szind]); - - size_t nflush = low_water - (low_water >> 2); - if (nflush < tcache_slow->bin_flush_delay_items[szind]) { - /* Workaround for a conversion warning. */ - uint8_t nflush_uint8 = (uint8_t)nflush; - assert(sizeof(tcache_slow->bin_flush_delay_items[0]) == - sizeof(nflush_uint8)); - tcache_slow->bin_flush_delay_items[szind] -= nflush_uint8; - return; - } else { - tcache_slow->bin_flush_delay_items[szind] - = tcache_gc_item_delay_compute(szind); - } + return ret; +} - tcache_bin_flush_small(tsd, tcache, cache_bin, szind, - (unsigned)(ncached - nflush)); +static inline bool +tcache_gc_is_addr_remote(void *addr, uintptr_t min, uintptr_t max) { + assert(addr != NULL); + return ((uintptr_t)addr < min || (uintptr_t)addr >= max); +} +static inline cache_bin_sz_t +tcache_gc_small_nremote_get(cache_bin_t *cache_bin, void *addr, + uintptr_t *addr_min, uintptr_t *addr_max, szind_t szind, size_t nflush) { + assert(addr != NULL && addr_min != NULL && addr_max != NULL); + /* The slab address range that the provided addr belongs to. */ + uintptr_t slab_min = (uintptr_t)addr; + uintptr_t slab_max = slab_min + bin_infos[szind].slab_size; + /* + * When growing retained virtual memory, it's increased exponentially, + * starting from 2M, so that the total number of disjoint virtual + * memory ranges retained by each shard is limited. + */ + uintptr_t neighbor_min = ((uintptr_t)addr > TCACHE_GC_NEIGHBOR_LIMIT) + ? ((uintptr_t)addr - TCACHE_GC_NEIGHBOR_LIMIT) + : 0; + uintptr_t neighbor_max = ((uintptr_t)addr + < (UINTPTR_MAX - TCACHE_GC_NEIGHBOR_LIMIT)) + ? ((uintptr_t)addr + TCACHE_GC_NEIGHBOR_LIMIT) + : UINTPTR_MAX; + + /* Scan the entire bin to count the number of remote pointers. */ + void **head = cache_bin->stack_head; + cache_bin_sz_t n_remote_slab = 0, n_remote_neighbor = 0; + cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin); + for (void **cur = head; cur < head + ncached; cur++) { + n_remote_slab += (cache_bin_sz_t)tcache_gc_is_addr_remote( + *cur, slab_min, slab_max); + n_remote_neighbor += (cache_bin_sz_t)tcache_gc_is_addr_remote( + *cur, neighbor_min, neighbor_max); + } + /* + * Note: since slab size is dynamic and can be larger than 2M, i.e. + * TCACHE_GC_NEIGHBOR_LIMIT, there is no guarantee as to which of + * n_remote_slab and n_remote_neighbor is greater. + */ + assert(n_remote_slab <= ncached && n_remote_neighbor <= ncached); /* - * Reduce fill count by 2X. Limit lg_fill_div such that - * the fill count is always at least 1. + * We first consider keeping ptrs from the neighboring addr range, + * since in most cases the range is greater than the slab range. + * So if the number of non-neighbor ptrs is more than the intended + * flush amount, we use it as the anchor for flushing. */ - if ((cache_bin_info_ncached_max(&tcache_bin_info[szind]) - >> (tcache_slow->lg_fill_div[szind] + 1)) >= 1) { - tcache_slow->lg_fill_div[szind]++; + if (n_remote_neighbor >= nflush) { + *addr_min = neighbor_min; + *addr_max = neighbor_max; + return n_remote_neighbor; } + /* + * We then consider only keeping ptrs from the local slab, and in most + * cases this is stricter, assuming that slab < 2M is the common case. + */ + *addr_min = slab_min; + *addr_max = slab_max; + return n_remote_slab; } -static void -tcache_gc_large(tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, - szind_t szind) { - /* Like the small GC; flush 3/4 of untouched items. */ - assert(szind >= SC_NBINS); - cache_bin_t *cache_bin = &tcache->bins[szind]; - cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin, - &tcache_bin_info[szind]); - cache_bin_sz_t low_water = cache_bin_low_water_get(cache_bin, - &tcache_bin_info[szind]); - tcache_bin_flush_large(tsd, tcache, cache_bin, szind, - (unsigned)(ncached - low_water + (low_water >> 2))); +/* Shuffle the ptrs in the bin to put the remote pointers at the bottom. */ +static inline void +tcache_gc_small_bin_shuffle(cache_bin_t *cache_bin, cache_bin_sz_t nremote, + uintptr_t addr_min, uintptr_t addr_max) { + void **swap = NULL; + cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin); + cache_bin_sz_t ntop = ncached - nremote, cnt = 0; + assert(ntop > 0 && ntop < ncached); + /* + * Scan the [head, head + ntop) part of the cache bin, during which + * bubbling the non-remote ptrs to the top of the bin. + * After this, the [head, head + cnt) part of the bin contains only + * non-remote ptrs, and they're in the same relative order as before. + * While the [head + cnt, head + ntop) part contains only remote ptrs. + */ + void **head = cache_bin->stack_head; + for (void **cur = head; cur < head + ntop; cur++) { + if (!tcache_gc_is_addr_remote(*cur, addr_min, addr_max)) { + /* Tracks the number of non-remote ptrs seen so far. */ + cnt++; + /* + * There is remote ptr before the current non-remote ptr, + * swap the current non-remote ptr with the remote ptr, + * and increment the swap pointer so that it's still + * pointing to the top remote ptr in the bin. + */ + if (swap != NULL) { + assert(swap < cur); + assert(tcache_gc_is_addr_remote( + *swap, addr_min, addr_max)); + void *tmp = *cur; + *cur = *swap; + *swap = tmp; + swap++; + assert(swap <= cur); + assert(tcache_gc_is_addr_remote( + *swap, addr_min, addr_max)); + } + continue; + } else if (swap == NULL) { + /* Swap always points to the top remote ptr in the bin. */ + swap = cur; + } + } + /* + * Scan the [head + ntop, head + ncached) part of the cache bin, + * after which it should only contain remote ptrs. + */ + for (void **cur = head + ntop; cur < head + ncached; cur++) { + /* Early break if all non-remote ptrs have been moved. */ + if (cnt == ntop) { + break; + } + if (!tcache_gc_is_addr_remote(*cur, addr_min, addr_max)) { + assert(tcache_gc_is_addr_remote( + *(head + cnt), addr_min, addr_max)); + void *tmp = *cur; + *cur = *(head + cnt); + *(head + cnt) = tmp; + cnt++; + } + } + assert(cnt == ntop); + /* Sanity check to make sure the shuffle is done correctly. */ + for (void **cur = head; cur < head + ncached; cur++) { + assert(*cur != NULL); + assert( + ((cur < head + ntop) + && !tcache_gc_is_addr_remote(*cur, addr_min, addr_max)) + || ((cur >= head + ntop) + && tcache_gc_is_addr_remote(*cur, addr_min, addr_max))); + } } -static void -tcache_event(tsd_t *tsd) { - tcache_t *tcache = tcache_get(tsd); - if (tcache == NULL) { - return; - } +static bool +tcache_gc_small( + tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, szind_t szind) { + /* + * Aim to flush 3/4 of items below low-water, with remote pointers being + * prioritized for flushing. + */ + assert(szind < SC_NBINS); - tcache_slow_t *tcache_slow = tsd_tcache_slowp_get(tsd); - szind_t szind = tcache_slow->next_gc_bin; - bool is_small = (szind < SC_NBINS); cache_bin_t *cache_bin = &tcache->bins[szind]; - - tcache_bin_flush_stashed(tsd, tcache, cache_bin, szind, is_small); - - cache_bin_sz_t low_water = cache_bin_low_water_get(cache_bin, - &tcache_bin_info[szind]); + assert(!tcache_bin_disabled(szind, cache_bin, tcache->tcache_slow)); + cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin); + cache_bin_sz_t low_water = cache_bin_low_water_get(cache_bin); if (low_water > 0) { - if (is_small) { - tcache_gc_small(tsd, tcache_slow, tcache, szind); - } else { - tcache_gc_large(tsd, tcache_slow, tcache, szind); - } - } else if (is_small && tcache_slow->bin_refilled[szind]) { - assert(low_water == 0); /* - * Increase fill count by 2X for small bins. Make sure - * lg_fill_div stays greater than 0. + * There is unused items within the GC period => reduce fill count. + * limit field != 0 is borrowed to indicate that the fill count + * should be reduced. */ - if (tcache_slow->lg_fill_div[szind] > 1) { - tcache_slow->lg_fill_div[szind]--; - } + tcache_nfill_small_gc_update(tcache_slow, szind, + /* limit */ cache_bin_ncached_max_get(cache_bin)); + } else if (tcache_slow->bin_refilled[szind]) { + /* + * There has been refills within the GC period => increase fill count. + * limit field set to 0 is borrowed to indicate that the fill count + * should be increased. + */ + tcache_nfill_small_gc_update(tcache_slow, szind, /* limit */ 0); tcache_slow->bin_refilled[szind] = false; } - cache_bin_low_water_set(cache_bin); - - tcache_slow->next_gc_bin++; - if (tcache_slow->next_gc_bin == nhbins) { - tcache_slow->next_gc_bin = 0; - } -} - -void -tcache_gc_event_handler(tsd_t *tsd, uint64_t elapsed) { - assert(elapsed == TE_INVALID_ELAPSED); - tcache_event(tsd); -} - -void -tcache_gc_dalloc_event_handler(tsd_t *tsd, uint64_t elapsed) { - assert(elapsed == TE_INVALID_ELAPSED); - tcache_event(tsd); -} - -void * -tcache_alloc_small_hard(tsdn_t *tsdn, arena_t *arena, - tcache_t *tcache, cache_bin_t *cache_bin, szind_t binind, - bool *tcache_success) { - tcache_slow_t *tcache_slow = tcache->tcache_slow; - void *ret; - - assert(tcache_slow->arena != NULL); - unsigned nfill = cache_bin_info_ncached_max(&tcache_bin_info[binind]) - >> tcache_slow->lg_fill_div[binind]; - arena_cache_bin_fill_small(tsdn, arena, cache_bin, - &tcache_bin_info[binind], binind, nfill); - tcache_slow->bin_refilled[binind] = true; - ret = cache_bin_alloc(cache_bin, tcache_success); + assert(!tcache_slow->bin_refilled[szind]); - return ret; -} + cache_bin_sz_t nflush = low_water - (low_water >> 2); + /* + * When the new tcache gc is not enabled, keep the flush delay logic, + * and directly flush the bottom nflush items if needed. + */ + if (!opt_experimental_tcache_gc) { + if (nflush < tcache_slow->bin_flush_delay_items[szind]) { + /* Workaround for a conversion warning. */ + uint8_t nflush_uint8 = (uint8_t)nflush; + assert(sizeof(tcache_slow->bin_flush_delay_items[0]) + == sizeof(nflush_uint8)); + tcache_slow->bin_flush_delay_items[szind] -= + nflush_uint8; + return false; + } -static const void * -tcache_bin_flush_ptr_getter(void *arr_ctx, size_t ind) { - cache_bin_ptr_array_t *arr = (cache_bin_ptr_array_t *)arr_ctx; - return arr->ptr[ind]; -} + tcache_slow->bin_flush_delay_items[szind] = + tcache_gc_item_delay_compute(szind); + goto label_flush; + } -static void -tcache_bin_flush_metadata_visitor(void *szind_sum_ctx, - emap_full_alloc_ctx_t *alloc_ctx) { - size_t *szind_sum = (size_t *)szind_sum_ctx; - *szind_sum -= alloc_ctx->szind; - util_prefetch_write_range(alloc_ctx->edata, sizeof(edata_t)); -} + /* Directly goto the flush path when the entire bin needs to be flushed. */ + if (nflush == ncached) { + goto label_flush; + } -JEMALLOC_NOINLINE static void -tcache_bin_flush_size_check_fail(cache_bin_ptr_array_t *arr, szind_t szind, - size_t nptrs, emap_batch_lookup_result_t *edatas) { - bool found_mismatch = false; - for (size_t i = 0; i < nptrs; i++) { - szind_t true_szind = edata_szind_get(edatas[i].edata); - if (true_szind != szind) { - found_mismatch = true; - safety_check_fail_sized_dealloc( - /* current_dealloc */ false, - /* ptr */ tcache_bin_flush_ptr_getter(arr, i), - /* true_size */ sz_index2size(true_szind), - /* input_size */ sz_index2size(szind)); - } + /* Query arena binshard to get heuristic locality info. */ + void *addr = tcache_gc_small_heuristic_addr_get( + tsd, tcache_slow, szind); + if (addr == NULL) { + goto label_flush; } - assert(found_mismatch); -} -static void -tcache_bin_flush_edatas_lookup(tsd_t *tsd, cache_bin_ptr_array_t *arr, - szind_t binind, size_t nflush, emap_batch_lookup_result_t *edatas) { + /* + * Use the queried addr above to get the number of remote ptrs in the + * bin, and the min/max of the local addr range. + */ + uintptr_t addr_min, addr_max; + cache_bin_sz_t nremote = tcache_gc_small_nremote_get( + cache_bin, addr, &addr_min, &addr_max, szind, nflush); /* - * This gets compiled away when config_opt_safety_checks is false. - * Checks for sized deallocation bugs, failing early rather than - * corrupting metadata. + * Update the nflush to the larger value between the intended flush count + * and the number of remote ptrs. */ - size_t szind_sum = binind * nflush; - emap_edata_lookup_batch(tsd, &arena_emap_global, nflush, - &tcache_bin_flush_ptr_getter, (void *)arr, - &tcache_bin_flush_metadata_visitor, (void *)&szind_sum, - edatas); - if (config_opt_safety_checks && unlikely(szind_sum != 0)) { - tcache_bin_flush_size_check_fail(arr, binind, nflush, edatas); + if (nremote > nflush) { + nflush = nremote; } -} - -JEMALLOC_ALWAYS_INLINE bool -tcache_bin_flush_match(edata_t *edata, unsigned cur_arena_ind, - unsigned cur_binshard, bool small) { - if (small) { - return edata_arena_ind_get(edata) == cur_arena_ind - && edata_binshard_get(edata) == cur_binshard; - } else { - return edata_arena_ind_get(edata) == cur_arena_ind; + /* + * When entering the locality check, nflush should be less than ncached, + * otherwise the entire bin should be flushed regardless. The only case + * when nflush gets updated to ncached after locality check is, when all + * the items in the bin are remote, in which case the entire bin should + * also be flushed. + */ + assert(nflush < ncached || nremote == ncached); + if (nremote == 0 || nremote == ncached) { + goto label_flush; } -} -JEMALLOC_ALWAYS_INLINE void -tcache_bin_flush_impl(tsd_t *tsd, tcache_t *tcache, cache_bin_t *cache_bin, - szind_t binind, cache_bin_ptr_array_t *ptrs, unsigned nflush, bool small) { - tcache_slow_t *tcache_slow = tcache->tcache_slow; /* - * A couple lookup calls take tsdn; declare it once for convenience - * instead of calling tsd_tsdn(tsd) all the time. + * Move the remote points to the bottom of the bin for flushing. + * As long as moved to the bottom, the order of these nremote ptrs + * does not matter, since they are going to be flushed anyway. + * The rest of the ptrs are moved to the top of the bin, and their + * relative order is maintained. */ - tsdn_t *tsdn = tsd_tsdn(tsd); + tcache_gc_small_bin_shuffle(cache_bin, nremote, addr_min, addr_max); - if (small) { - assert(binind < SC_NBINS); - } else { - assert(binind < nhbins); +label_flush: + if (nflush == 0) { + assert(low_water == 0); + return false; } - arena_t *tcache_arena = tcache_slow->arena; - assert(tcache_arena != NULL); + assert(nflush <= ncached); + tcache_bin_flush_small( + tsd, tcache, cache_bin, szind, (unsigned)(ncached - nflush)); + return true; +} +static bool +tcache_gc_large( + tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, szind_t szind) { /* - * Variable length array must have > 0 length; the last element is never - * touched (it's just included to satisfy the no-zero-length rule). + * Like the small GC, flush 3/4 of untouched items. However, simply flush + * the bottom nflush items, without any locality check. */ - VARIABLE_ARRAY(emap_batch_lookup_result_t, item_edata, nflush + 1); - tcache_bin_flush_edatas_lookup(tsd, ptrs, binind, nflush, item_edata); + assert(szind >= SC_NBINS); + cache_bin_t *cache_bin = &tcache->bins[szind]; + assert(!tcache_bin_disabled(szind, cache_bin, tcache->tcache_slow)); + cache_bin_sz_t low_water = cache_bin_low_water_get(cache_bin); + if (low_water == 0) { + return false; + } + unsigned nrem = (unsigned)(cache_bin_ncached_get_local(cache_bin) + - low_water + (low_water >> 2)); + tcache_bin_flush_large(tsd, tcache, cache_bin, szind, nrem); + return true; +} - /* - * The slabs where we freed the last remaining object in the slab (and - * so need to free the slab itself). - * Used only if small == true. - */ - unsigned dalloc_count = 0; - VARIABLE_ARRAY(edata_t *, dalloc_slabs, nflush + 1); +/* Try to gc one bin by szind, return true if there is item flushed. */ +static bool +tcache_try_gc_bin( + tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, szind_t szind) { + assert(tcache != NULL); + cache_bin_t *cache_bin = &tcache->bins[szind]; + if (tcache_bin_disabled(szind, cache_bin, tcache_slow)) { + return false; + } - /* - * We're about to grab a bunch of locks. If one of them happens to be - * the one guarding the arena-level stats counters we flush our - * thread-local ones to, we do so under one critical section. - */ - bool merged_stats = false; - while (nflush > 0) { - /* Lock the arena, or bin, associated with the first object. */ - edata_t *edata = item_edata[0].edata; - unsigned cur_arena_ind = edata_arena_ind_get(edata); - arena_t *cur_arena = arena_get(tsdn, cur_arena_ind, false); + bool is_small = (szind < SC_NBINS); + tcache_bin_flush_stashed(tsd, tcache, cache_bin, szind, is_small); + bool ret = is_small ? tcache_gc_small(tsd, tcache_slow, tcache, szind) + : tcache_gc_large(tsd, tcache_slow, tcache, szind); + cache_bin_low_water_set(cache_bin); + return ret; +} - /* - * These assignments are always overwritten when small is true, - * and their values are always ignored when small is false, but - * to avoid the technical UB when we pass them as parameters, we - * need to intialize them. - */ - unsigned cur_binshard = 0; - bin_t *cur_bin = NULL; - if (small) { - cur_binshard = edata_binshard_get(edata); - cur_bin = arena_get_bin(cur_arena, binind, - cur_binshard); - assert(cur_binshard < bin_infos[binind].n_shards); - /* - * If you're looking at profiles, you might think this - * is a good place to prefetch the bin stats, which are - * often a cache miss. This turns out not to be - * helpful on the workloads we've looked at, with moving - * the bin stats next to the lock seeming to do better. - */ - } +static void +tcache_gc_event(tsd_t *tsd) { + tcache_t *tcache = tcache_get(tsd); + if (tcache == NULL) { + return; + } - if (small) { - malloc_mutex_lock(tsdn, &cur_bin->lock); - } - if (!small && !arena_is_auto(cur_arena)) { - malloc_mutex_lock(tsdn, &cur_arena->large_mtx); + tcache_slow_t *tcache_slow = tsd_tcache_slowp_get(tsd); + assert(tcache_slow != NULL); + + /* When the new tcache gc is not enabled, GC one bin at a time. */ + if (!opt_experimental_tcache_gc) { + szind_t szind = tcache_slow->next_gc_bin; + tcache_try_gc_bin(tsd, tcache_slow, tcache, szind); + tcache_slow->next_gc_bin++; + if (tcache_slow->next_gc_bin == tcache_nbins_get(tcache_slow)) { + tcache_slow->next_gc_bin = 0; } + return; + } - /* - * If we acquired the right lock and have some stats to flush, - * flush them. - */ - if (config_stats && tcache_arena == cur_arena - && !merged_stats) { - merged_stats = true; - if (small) { - cur_bin->stats.nflushes++; - cur_bin->stats.nrequests += - cache_bin->tstats.nrequests; - cache_bin->tstats.nrequests = 0; - } else { - arena_stats_large_flush_nrequests_add(tsdn, - &tcache_arena->stats, binind, - cache_bin->tstats.nrequests); - cache_bin->tstats.nrequests = 0; - } - } + nstime_t now; + nstime_copy(&now, &tcache_slow->last_gc_time); + nstime_update(&now); + assert(nstime_compare(&now, &tcache_slow->last_gc_time) >= 0); - /* - * Large allocations need special prep done. Afterwards, we can - * drop the large lock. - */ - if (!small) { - for (unsigned i = 0; i < nflush; i++) { - void *ptr = ptrs->ptr[i]; - edata = item_edata[i].edata; - assert(ptr != NULL && edata != NULL); - - if (tcache_bin_flush_match(edata, cur_arena_ind, - cur_binshard, small)) { - large_dalloc_prep_locked(tsdn, - edata); - } - } + if (nstime_ns(&now) - nstime_ns(&tcache_slow->last_gc_time) + < TCACHE_GC_INTERVAL_NS) { + // time interval is too short, skip this event. + return; + } + /* Update last_gc_time to now. */ + nstime_copy(&tcache_slow->last_gc_time, &now); + + unsigned gc_small_nbins = 0, gc_large_nbins = 0; + unsigned tcache_nbins = tcache_nbins_get(tcache_slow); + unsigned small_nbins = tcache_nbins > SC_NBINS ? SC_NBINS + : tcache_nbins; + szind_t szind_small = tcache_slow->next_gc_bin_small; + szind_t szind_large = tcache_slow->next_gc_bin_large; + + /* Flush at most TCACHE_GC_SMALL_NBINS_MAX small bins at a time. */ + for (unsigned i = 0; + i < small_nbins && gc_small_nbins < TCACHE_GC_SMALL_NBINS_MAX; + i++) { + assert(szind_small < SC_NBINS); + if (tcache_try_gc_bin(tsd, tcache_slow, tcache, szind_small)) { + gc_small_nbins++; } - if (!small && !arena_is_auto(cur_arena)) { - malloc_mutex_unlock(tsdn, &cur_arena->large_mtx); + if (++szind_small == small_nbins) { + szind_small = 0; } + } + tcache_slow->next_gc_bin_small = szind_small; - /* Deallocate whatever we can. */ - unsigned ndeferred = 0; - /* Init only to avoid used-uninitialized warning. */ - arena_dalloc_bin_locked_info_t dalloc_bin_info = {0}; - if (small) { - arena_dalloc_bin_locked_begin(&dalloc_bin_info, binind); - } - for (unsigned i = 0; i < nflush; i++) { - void *ptr = ptrs->ptr[i]; - edata = item_edata[i].edata; - assert(ptr != NULL && edata != NULL); - if (!tcache_bin_flush_match(edata, cur_arena_ind, - cur_binshard, small)) { - /* - * The object was allocated either via a - * different arena, or a different bin in this - * arena. Either way, stash the object so that - * it can be handled in a future pass. - */ - ptrs->ptr[ndeferred] = ptr; - item_edata[ndeferred].edata = edata; - ndeferred++; - continue; - } - if (small) { - if (arena_dalloc_bin_locked_step(tsdn, - cur_arena, cur_bin, &dalloc_bin_info, - binind, edata, ptr)) { - dalloc_slabs[dalloc_count] = edata; - dalloc_count++; - } - } else { - if (large_dalloc_safety_checks(edata, ptr, - binind)) { - /* See the comment in isfree. */ - continue; - } - large_dalloc_finish(tsdn, edata); - } - } + if (tcache_nbins <= SC_NBINS) { + return; + } - if (small) { - arena_dalloc_bin_locked_finish(tsdn, cur_arena, cur_bin, - &dalloc_bin_info); - malloc_mutex_unlock(tsdn, &cur_bin->lock); + /* Flush at most TCACHE_GC_LARGE_NBINS_MAX large bins at a time. */ + for (unsigned i = SC_NBINS; + i < tcache_nbins && gc_large_nbins < TCACHE_GC_LARGE_NBINS_MAX; + i++) { + assert(szind_large >= SC_NBINS && szind_large < tcache_nbins); + if (tcache_try_gc_bin(tsd, tcache_slow, tcache, szind_large)) { + gc_large_nbins++; + } + if (++szind_large == tcache_nbins) { + szind_large = SC_NBINS; } - arena_decay_ticks(tsdn, cur_arena, nflush - ndeferred); - nflush = ndeferred; } + tcache_slow->next_gc_bin_large = szind_large; +} - /* Handle all deferred slab dalloc. */ - assert(small || dalloc_count == 0); - for (unsigned i = 0; i < dalloc_count; i++) { - edata_t *slab = dalloc_slabs[i]; - arena_slab_dalloc(tsdn, arena_get_from_edata(slab), slab); +void * +tcache_alloc_small_hard(tsdn_t *tsdn, arena_t *arena, tcache_t *tcache, + cache_bin_t *cache_bin, szind_t binind, bool *tcache_success) { + tcache_slow_t *tcache_slow = tcache->tcache_slow; + void *ret; + assert(tcache_slow->arena != NULL); + assert(!tcache_bin_disabled(binind, cache_bin, tcache_slow)); + assert(cache_bin_ncached_get_local(cache_bin) == 0); + cache_bin_sz_t nfill = cache_bin_ncached_max_get(cache_bin) + >> tcache_nfill_small_lg_div_get(tcache_slow, binind); + if (nfill == 0) { + nfill = 1; } + cache_bin_sz_t nfill_min = opt_experimental_tcache_gc + ? ((nfill >> 1) + 1) + : nfill; + cache_bin_sz_t nfill_max = nfill; + CACHE_BIN_PTR_ARRAY_DECLARE(ptrs, nfill_max); + cache_bin_init_ptr_array_for_fill(cache_bin, &ptrs, nfill_max); + + cache_bin_sz_t filled = arena_ptr_array_fill_small(tsdn, arena, binind, + &ptrs, /* nfill_min */ nfill_min, /* nfill_max */ nfill_max, + cache_bin->tstats); + cache_bin_finish_fill(cache_bin, &ptrs, filled); + assert(filled >= nfill_min && filled <= nfill_max); + assert(cache_bin_ncached_get_local(cache_bin) == filled); - if (config_stats && !merged_stats) { - if (small) { - /* - * The flush loop didn't happen to flush to this - * thread's arena, so the stats didn't get merged. - * Manually do so now. - */ - bin_t *bin = arena_bin_choose(tsdn, tcache_arena, - binind, NULL); - malloc_mutex_lock(tsdn, &bin->lock); - bin->stats.nflushes++; - bin->stats.nrequests += cache_bin->tstats.nrequests; - cache_bin->tstats.nrequests = 0; - malloc_mutex_unlock(tsdn, &bin->lock); - } else { - arena_stats_large_flush_nrequests_add(tsdn, - &tcache_arena->stats, binind, - cache_bin->tstats.nrequests); - cache_bin->tstats.nrequests = 0; - } - } + tcache_slow->bin_refilled[binind] = true; + tcache_nfill_small_burst_prepare(tcache_slow, binind); + ret = cache_bin_alloc(cache_bin, tcache_success); + return ret; } JEMALLOC_ALWAYS_INLINE void tcache_bin_flush_bottom(tsd_t *tsd, tcache_t *tcache, cache_bin_t *cache_bin, szind_t binind, unsigned rem, bool small) { + assert(rem <= cache_bin_ncached_max_get(cache_bin)); + assert(!tcache_bin_disabled(binind, cache_bin, tcache->tcache_slow)); + cache_bin_sz_t orig_nstashed = cache_bin_nstashed_get_local(cache_bin); tcache_bin_flush_stashed(tsd, tcache, cache_bin, binind, small); - cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin, - &tcache_bin_info[binind]); - assert((cache_bin_sz_t)rem <= ncached); - unsigned nflush = ncached - rem; + cache_bin_sz_t ncached = cache_bin_ncached_get_local(cache_bin); + assert((cache_bin_sz_t)rem <= ncached + orig_nstashed); + if ((cache_bin_sz_t)rem > ncached) { + /* + * The flush_stashed above could have done enough flushing, if + * there were many items stashed. Validate that: 1) non zero + * stashed, and 2) bin stack has available space now. + */ + assert(orig_nstashed > 0); + assert(ncached + cache_bin_nstashed_get_local(cache_bin) + < cache_bin_ncached_max_get(cache_bin)); + /* Still go through the flush logic for stats purpose only. */ + rem = ncached; + } + cache_bin_sz_t nflush = ncached - (cache_bin_sz_t)rem; CACHE_BIN_PTR_ARRAY_DECLARE(ptrs, nflush); - cache_bin_init_ptr_array_for_flush(cache_bin, &tcache_bin_info[binind], - &ptrs, nflush); + cache_bin_init_ptr_array_for_flush(cache_bin, &ptrs, nflush); - tcache_bin_flush_impl(tsd, tcache, cache_bin, binind, &ptrs, nflush, - small); + arena_ptr_array_flush(tsd, binind, &ptrs, nflush, small, + tcache->tcache_slow->arena, cache_bin->tstats); - cache_bin_finish_flush(cache_bin, &tcache_bin_info[binind], &ptrs, - ncached - rem); + cache_bin_finish_flush(cache_bin, &ptrs, nflush); } void tcache_bin_flush_small(tsd_t *tsd, tcache_t *tcache, cache_bin_t *cache_bin, szind_t binind, unsigned rem) { - tcache_bin_flush_bottom(tsd, tcache, cache_bin, binind, rem, true); + tcache_nfill_small_burst_reset(tcache->tcache_slow, binind); + tcache_bin_flush_bottom(tsd, tcache, cache_bin, binind, rem, + /* small */ true); } void tcache_bin_flush_large(tsd_t *tsd, tcache_t *tcache, cache_bin_t *cache_bin, szind_t binind, unsigned rem) { - tcache_bin_flush_bottom(tsd, tcache, cache_bin, binind, rem, false); + tcache_bin_flush_bottom(tsd, tcache, cache_bin, binind, rem, + /* small */ false); } /* @@ -548,35 +679,67 @@ tcache_bin_flush_large(tsd_t *tsd, tcache_t *tcache, cache_bin_t *cache_bin, void tcache_bin_flush_stashed(tsd_t *tsd, tcache_t *tcache, cache_bin_t *cache_bin, szind_t binind, bool is_small) { - cache_bin_info_t *info = &tcache_bin_info[binind]; + assert(!tcache_bin_disabled(binind, cache_bin, tcache->tcache_slow)); /* * The two below are for assertion only. The content of original cached * items remain unchanged -- the stashed items reside on the other end * of the stack. Checking the stack head and ncached to verify. */ - void *head_content = *cache_bin->stack_head; - cache_bin_sz_t orig_cached = cache_bin_ncached_get_local(cache_bin, - info); + void *head_content = *cache_bin->stack_head; + cache_bin_sz_t orig_cached = cache_bin_ncached_get_local(cache_bin); - cache_bin_sz_t nstashed = cache_bin_nstashed_get_local(cache_bin, info); - assert(orig_cached + nstashed <= cache_bin_info_ncached_max(info)); + cache_bin_sz_t nstashed = cache_bin_nstashed_get_local(cache_bin); + assert(orig_cached + nstashed <= cache_bin_ncached_max_get(cache_bin)); if (nstashed == 0) { return; } CACHE_BIN_PTR_ARRAY_DECLARE(ptrs, nstashed); - cache_bin_init_ptr_array_for_stashed(cache_bin, binind, info, &ptrs, - nstashed); + cache_bin_init_ptr_array_for_stashed( + cache_bin, binind, &ptrs, nstashed); san_check_stashed_ptrs(ptrs.ptr, nstashed, sz_index2size(binind)); - tcache_bin_flush_impl(tsd, tcache, cache_bin, binind, &ptrs, nstashed, - is_small); - cache_bin_finish_flush_stashed(cache_bin, info); + arena_ptr_array_flush(tsd, binind, &ptrs, nstashed, is_small, + tcache->tcache_slow->arena, cache_bin->tstats); + cache_bin_finish_flush_stashed(cache_bin); - assert(cache_bin_nstashed_get_local(cache_bin, info) == 0); - assert(cache_bin_ncached_get_local(cache_bin, info) == orig_cached); + assert(cache_bin_nstashed_get_local(cache_bin) == 0); + assert(cache_bin_ncached_get_local(cache_bin) == orig_cached); assert(head_content == *cache_bin->stack_head); } +JET_EXTERN bool +tcache_get_default_ncached_max_set(szind_t ind) { + return opt_tcache_ncached_max_set[ind]; +} + +JET_EXTERN const cache_bin_info_t * +tcache_get_default_ncached_max(void) { + return opt_tcache_ncached_max; +} + +bool +tcache_bin_ncached_max_read( + tsd_t *tsd, size_t bin_size, cache_bin_sz_t *ncached_max) { + if (bin_size > TCACHE_MAXCLASS_LIMIT) { + return true; + } + + if (!tcache_available(tsd)) { + *ncached_max = 0; + return false; + } + + tcache_t *tcache = tsd_tcachep_get(tsd); + assert(tcache != NULL); + szind_t bin_ind = sz_size2index(bin_size); + + cache_bin_t *bin = &tcache->bins[bin_ind]; + *ncached_max = tcache_bin_disabled(bin_ind, bin, tcache->tcache_slow) + ? 0 + : cache_bin_ncached_max_get(bin); + return false; +} + void tcache_arena_associate(tsdn_t *tsdn, tcache_slow_t *tcache_slow, tcache_t *tcache, arena_t *arena) { @@ -599,17 +762,17 @@ tcache_arena_associate(tsdn_t *tsdn, tcache_slow_t *tcache_slow, } static void -tcache_arena_dissociate(tsdn_t *tsdn, tcache_slow_t *tcache_slow, - tcache_t *tcache) { +tcache_arena_dissociate( + tsdn_t *tsdn, tcache_slow_t *tcache_slow, tcache_t *tcache) { arena_t *arena = tcache_slow->arena; assert(arena != NULL); if (config_stats) { /* Unlink from list of extant tcaches. */ malloc_mutex_lock(tsdn, &arena->tcache_ql_mtx); if (config_debug) { - bool in_ql = false; + bool in_ql = false; tcache_slow_t *iter; - ql_foreach(iter, &arena->tcache_ql, link) { + ql_foreach (iter, &arena->tcache_ql, link) { if (iter == tcache_slow) { in_ql = true; break; @@ -633,94 +796,182 @@ tcache_arena_reassociate(tsdn_t *tsdn, tcache_slow_t *tcache_slow, tcache_arena_associate(tsdn, tcache_slow, tcache, arena); } -bool -tsd_tcache_enabled_data_init(tsd_t *tsd) { - /* Called upon tsd initialization. */ - tsd_tcache_enabled_set(tsd, opt_tcache); - tsd_slow_update(tsd); - - if (opt_tcache) { - /* Trigger tcache init. */ - tsd_tcache_data_init(tsd); - } - - return false; +static void +tcache_default_settings_init(tcache_slow_t *tcache_slow) { + assert(tcache_slow != NULL); + assert(global_do_not_change_tcache_maxclass != 0); + assert(global_do_not_change_tcache_nbins != 0); + tcache_slow->tcache_nbins = global_do_not_change_tcache_nbins; } static void -tcache_init(tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, - void *mem) { +tcache_init(tsd_t *tsd, tcache_slow_t *tcache_slow, tcache_t *tcache, void *mem, + const cache_bin_info_t *tcache_bin_info) { tcache->tcache_slow = tcache_slow; tcache_slow->tcache = tcache; memset(&tcache_slow->link, 0, sizeof(ql_elm(tcache_t))); + nstime_init_zero(&tcache_slow->last_gc_time); tcache_slow->next_gc_bin = 0; + tcache_slow->next_gc_bin_small = 0; + tcache_slow->next_gc_bin_large = SC_NBINS; tcache_slow->arena = NULL; tcache_slow->dyn_alloc = mem; /* * We reserve cache bins for all small size classes, even if some may - * not get used (i.e. bins higher than nhbins). This allows the fast - * and common paths to access cache bin metadata safely w/o worrying - * about which ones are disabled. + * not get used (i.e. bins higher than tcache_nbins). This allows + * the fast and common paths to access cache bin metadata safely w/o + * worrying about which ones are disabled. */ - unsigned n_reserved_bins = nhbins < SC_NBINS ? SC_NBINS : nhbins; - memset(tcache->bins, 0, sizeof(cache_bin_t) * n_reserved_bins); - - size_t cur_offset = 0; - cache_bin_preincrement(tcache_bin_info, nhbins, mem, - &cur_offset); - for (unsigned i = 0; i < nhbins; i++) { + unsigned tcache_nbins = tcache_nbins_get(tcache_slow); + size_t cur_offset = 0; + cache_bin_preincrement(tcache_bin_info, tcache_nbins, mem, &cur_offset); + for (unsigned i = 0; i < tcache_nbins; i++) { if (i < SC_NBINS) { - tcache_slow->lg_fill_div[i] = 1; + tcache_bin_fill_ctl_init(tcache_slow, i); tcache_slow->bin_refilled[i] = false; - tcache_slow->bin_flush_delay_items[i] - = tcache_gc_item_delay_compute(i); + tcache_slow->bin_flush_delay_items[i] = + tcache_gc_item_delay_compute(i); } cache_bin_t *cache_bin = &tcache->bins[i]; - cache_bin_init(cache_bin, &tcache_bin_info[i], mem, - &cur_offset); + if (tcache_bin_info[i].ncached_max > 0) { + cache_bin_init( + cache_bin, &tcache_bin_info[i], mem, &cur_offset); + } else { + cache_bin_init_disabled( + cache_bin, tcache_bin_info[i].ncached_max); + } } /* - * For small size classes beyond tcache_maxclass (i.e. nhbins < NBINS), - * their cache bins are initialized to a state to safely and efficiently - * fail all fastpath alloc / free, so that no additional check around - * nhbins is needed on fastpath. + * Initialize all disabled bins to a state that can safely and + * efficiently fail all fastpath alloc / free, so that no additional + * check around tcache_nbins is needed on fastpath. Yet we still + * store the ncached_max in the bin_info for future usage. */ - for (unsigned i = nhbins; i < SC_NBINS; i++) { - /* Disabled small bins. */ + for (unsigned i = tcache_nbins; i < TCACHE_NBINS_MAX; i++) { cache_bin_t *cache_bin = &tcache->bins[i]; - void *fake_stack = mem; - size_t fake_offset = 0; + cache_bin_init_disabled( + cache_bin, tcache_bin_info[i].ncached_max); + assert(tcache_bin_disabled(i, cache_bin, tcache->tcache_slow)); + } - cache_bin_init(cache_bin, &tcache_bin_info[i], fake_stack, - &fake_offset); - assert(tcache_small_bin_disabled(i, cache_bin)); + cache_bin_postincrement(mem, &cur_offset); + if (config_debug) { + /* Sanity check that the whole stack is used. */ + size_t size, alignment; + cache_bin_info_compute_alloc( + tcache_bin_info, tcache_nbins, &size, &alignment); + assert(cur_offset == size); } +} - cache_bin_postincrement(tcache_bin_info, nhbins, mem, - &cur_offset); - /* Sanity check that the whole stack is used. */ - assert(cur_offset == tcache_bin_alloc_size); +static inline unsigned +tcache_ncached_max_compute(szind_t szind) { + if (szind >= SC_NBINS) { + return opt_tcache_nslots_large; + } + unsigned slab_nregs = bin_infos[szind].nregs; + + /* We may modify these values; start with the opt versions. */ + unsigned nslots_small_min = opt_tcache_nslots_small_min; + unsigned nslots_small_max = opt_tcache_nslots_small_max; + + /* + * Clamp values to meet our constraints -- even, nonzero, min < max, and + * suitable for a cache bin size. + */ + if (opt_tcache_nslots_small_max > CACHE_BIN_NCACHED_MAX) { + nslots_small_max = CACHE_BIN_NCACHED_MAX; + } + if (nslots_small_min % 2 != 0) { + nslots_small_min++; + } + if (nslots_small_max % 2 != 0) { + nslots_small_max--; + } + if (nslots_small_min < 2) { + nslots_small_min = 2; + } + if (nslots_small_max < 2) { + nslots_small_max = 2; + } + if (nslots_small_min > nslots_small_max) { + nslots_small_min = nslots_small_max; + } + + unsigned candidate; + if (opt_lg_tcache_nslots_mul < 0) { + candidate = slab_nregs >> (-opt_lg_tcache_nslots_mul); + } else { + candidate = slab_nregs << opt_lg_tcache_nslots_mul; + } + if (candidate % 2 != 0) { + /* + * We need the candidate size to be even -- we assume that we + * can divide by two and get a positive number (e.g. when + * flushing). + */ + ++candidate; + } + if (candidate <= nslots_small_min) { + return nslots_small_min; + } else if (candidate <= nslots_small_max) { + return candidate; + } else { + return nslots_small_max; + } } -/* Initialize auto tcache (embedded in TSD). */ -bool -tsd_tcache_data_init(tsd_t *tsd) { +JET_EXTERN void +tcache_bin_info_compute(cache_bin_info_t tcache_bin_info[TCACHE_NBINS_MAX]) { + /* + * Compute the values for each bin, but for bins with indices larger + * than tcache_nbins, no items will be cached. + */ + for (szind_t i = 0; i < TCACHE_NBINS_MAX; i++) { + unsigned ncached_max = tcache_get_default_ncached_max_set(i) + ? (unsigned)tcache_get_default_ncached_max()[i].ncached_max + : tcache_ncached_max_compute(i); + assert(ncached_max <= CACHE_BIN_NCACHED_MAX); + cache_bin_info_init( + &tcache_bin_info[i], (cache_bin_sz_t)ncached_max); + } +} + +static void * +tcache_stack_alloc_impl(tsdn_t *tsdn, size_t size, size_t alignment) { + if (cache_bin_stack_use_thp()) { + /* Alignment is ignored since it comes from THP. */ + assert(alignment == QUANTUM); + return b0_alloc_tcache_stack(tsdn, size); + } + size = sz_sa2u(size, alignment); + return ipallocztm(tsdn, size, alignment, true, NULL, + true, arena_get(TSDN_NULL, 0, true)); +} + +void *(*JET_MUTABLE tcache_stack_alloc)(tsdn_t *tsdn, size_t size, + size_t alignment) = tcache_stack_alloc_impl; + +static bool +tsd_tcache_data_init_impl( + tsd_t *tsd, arena_t *arena, const cache_bin_info_t *tcache_bin_info) { tcache_slow_t *tcache_slow = tsd_tcache_slowp_get_unsafe(tsd); - tcache_t *tcache = tsd_tcachep_get_unsafe(tsd); + tcache_t *tcache = tsd_tcachep_get_unsafe(tsd); assert(cache_bin_still_zero_initialized(&tcache->bins[0])); - size_t alignment = tcache_bin_alloc_alignment; - size_t size = sz_sa2u(tcache_bin_alloc_size, alignment); + unsigned tcache_nbins = tcache_nbins_get(tcache_slow); + size_t size, alignment; + cache_bin_info_compute_alloc( + tcache_bin_info, tcache_nbins, &size, &alignment); - void *mem = ipallocztm(tsd_tsdn(tsd), size, alignment, true, NULL, - true, arena_get(TSDN_NULL, 0, true)); + void *mem = tcache_stack_alloc(tsd_tsdn(tsd), size, alignment); if (mem == NULL) { return true; } - tcache_init(tsd, tcache_slow, tcache, mem); + tcache_init(tsd, tcache_slow, tcache, mem, tcache_bin_info); /* * Initialization is a bit tricky here. After malloc init is done, all * threads can rely on arena_choose and associate tcache accordingly. @@ -730,18 +981,19 @@ tsd_tcache_data_init(tsd_t *tsd) { * arena_choose_hard() will re-associate properly. */ tcache_slow->arena = NULL; - arena_t *arena; if (!malloc_initialized()) { /* If in initialization, assign to a0. */ arena = arena_get(tsd_tsdn(tsd), 0, false); - tcache_arena_associate(tsd_tsdn(tsd), tcache_slow, tcache, - arena); + tcache_arena_associate( + tsd_tsdn(tsd), tcache_slow, tcache, arena); } else { - arena = arena_choose(tsd, NULL); + if (arena == NULL) { + arena = arena_choose(tsd, NULL); + } /* This may happen if thread.tcache.enabled is used. */ if (tcache_slow->arena == NULL) { - tcache_arena_associate(tsd_tsdn(tsd), tcache_slow, - tcache, arena); + tcache_arena_associate( + tsd_tsdn(tsd), tcache_slow, tcache, arena); } } assert(arena == tcache_slow->arena); @@ -749,6 +1001,27 @@ tsd_tcache_data_init(tsd_t *tsd) { return false; } +/* Initialize auto tcache (embedded in TSD). */ +static bool +tsd_tcache_data_init(tsd_t *tsd, arena_t *arena, + const cache_bin_info_t tcache_bin_info[TCACHE_NBINS_MAX]) { + assert(tcache_bin_info != NULL); + bool err = tsd_tcache_data_init_impl(tsd, arena, tcache_bin_info); + if (unlikely(err)) { + /* + * Disable the tcache before calling malloc_write to + * avoid recursive allocations through libc hooks. + */ + tsd_tcache_enabled_set(tsd, false); + tsd_slow_update(tsd); + malloc_write(": Failed to allocate tcache data\n"); + if (opt_abort) { + abort(); + } + } + return err; +} + /* Created manual tcache for tcache.create mallctl. */ tcache_t * tcache_create_explicit(tsd_t *tsd) { @@ -757,35 +1030,179 @@ tcache_create_explicit(tsd_t *tsd) { * the beginning of the whole allocation (for freeing). The makes sure * the cache bins have the requested alignment. */ - size_t size = tcache_bin_alloc_size + sizeof(tcache_t) - + sizeof(tcache_slow_t); + unsigned tcache_nbins = global_do_not_change_tcache_nbins; + size_t tcache_size, alignment; + cache_bin_info_compute_alloc(tcache_get_default_ncached_max(), + tcache_nbins, &tcache_size, &alignment); + + size_t size = tcache_size + sizeof(tcache_t) + sizeof(tcache_slow_t); /* Naturally align the pointer stacks. */ size = PTR_CEILING(size); - size = sz_sa2u(size, tcache_bin_alloc_alignment); + size = sz_sa2u(size, alignment); - void *mem = ipallocztm(tsd_tsdn(tsd), size, tcache_bin_alloc_alignment, - true, NULL, true, arena_get(TSDN_NULL, 0, true)); + void *mem = ipallocztm(tsd_tsdn(tsd), size, alignment, true, NULL, true, + arena_get(TSDN_NULL, 0, true)); if (mem == NULL) { return NULL; } - tcache_t *tcache = (void *)((uintptr_t)mem + tcache_bin_alloc_size); - tcache_slow_t *tcache_slow = - (void *)((uintptr_t)mem + tcache_bin_alloc_size + sizeof(tcache_t)); - tcache_init(tsd, tcache_slow, tcache, mem); + tcache_t *tcache = (void *)((byte_t *)mem + tcache_size); + tcache_slow_t *tcache_slow = (void *)((byte_t *)mem + tcache_size + + sizeof(tcache_t)); + tcache_default_settings_init(tcache_slow); + tcache_init( + tsd, tcache_slow, tcache, mem, tcache_get_default_ncached_max()); - tcache_arena_associate(tsd_tsdn(tsd), tcache_slow, tcache, - arena_ichoose(tsd, NULL)); + tcache_arena_associate( + tsd_tsdn(tsd), tcache_slow, tcache, arena_ichoose(tsd, NULL)); return tcache; } +bool +tsd_tcache_enabled_data_init(tsd_t *tsd) { + /* Called upon tsd initialization. */ + tsd_tcache_enabled_set(tsd, opt_tcache); + /* + * tcache is not available yet, but we need to set up its tcache_nbins + * in advance. + */ + tcache_default_settings_init(tsd_tcache_slowp_get(tsd)); + tsd_slow_update(tsd); + + if (opt_tcache) { + /* Trigger tcache init. */ + return tsd_tcache_data_init( + tsd, NULL, tcache_get_default_ncached_max()); + } + + return false; +} + +void +tcache_enabled_set(tsd_t *tsd, bool enabled) { + bool was_enabled = tsd_tcache_enabled_get(tsd); + + if (!was_enabled && enabled) { + if (tsd_tcache_data_init( + tsd, NULL, tcache_get_default_ncached_max())) { + return; + } + } else if (was_enabled && !enabled) { + tcache_cleanup(tsd); + } + /* Commit the state last. Above calls check current state. */ + tsd_tcache_enabled_set(tsd, enabled); + tsd_slow_update(tsd); +} + +bool +thread_tcache_max_set(tsd_t *tsd, size_t tcache_max) { + assert(tcache_max <= TCACHE_MAXCLASS_LIMIT); + assert(tcache_max == sz_s2u(tcache_max)); + tcache_t *tcache = tsd_tcachep_get(tsd); + tcache_slow_t *tcache_slow = tcache->tcache_slow; + cache_bin_info_t tcache_bin_info[TCACHE_NBINS_MAX] = {{0}}; + bool ret = false; + assert(tcache != NULL && tcache_slow != NULL); + + bool enabled = tcache_available(tsd); + arena_t *assigned_arena JEMALLOC_CLANG_ANALYZER_SILENCE_INIT(NULL); + if (enabled) { + assigned_arena = tcache_slow->arena; + /* Carry over the bin settings during the reboot. */ + tcache_bin_settings_backup(tcache, tcache_bin_info); + /* Shutdown and reboot the tcache for a clean slate. */ + tcache_cleanup(tsd); + } + + /* + * Still set tcache_nbins of the tcache even if the tcache is not + * available yet because the values are stored in tsd_t and are + * always available for changing. + */ + tcache_max_set(tcache_slow, tcache_max); + + if (enabled) { + ret = tsd_tcache_data_init(tsd, assigned_arena, tcache_bin_info); + } + + assert(tcache_nbins_get(tcache_slow) == sz_size2index(tcache_max) + 1); + return ret; +} + +static bool +tcache_bin_info_settings_parse(const char *bin_settings_segment_cur, + size_t len_left, cache_bin_info_t tcache_bin_info[TCACHE_NBINS_MAX], + bool bin_info_is_set[TCACHE_NBINS_MAX]) { + do { + size_t size_start, size_end; + size_t ncached_max; + bool err = multi_setting_parse_next(&bin_settings_segment_cur, + &len_left, &size_start, &size_end, &ncached_max); + if (err) { + return true; + } + if (size_end > TCACHE_MAXCLASS_LIMIT) { + size_end = TCACHE_MAXCLASS_LIMIT; + } + if (size_start > TCACHE_MAXCLASS_LIMIT + || size_start > size_end) { + continue; + } + /* May get called before sz_init (during malloc_conf_init). */ + szind_t bin_start = sz_size2index_compute(size_start); + szind_t bin_end = sz_size2index_compute(size_end); + if (ncached_max > CACHE_BIN_NCACHED_MAX) { + ncached_max = (size_t)CACHE_BIN_NCACHED_MAX; + } + for (szind_t i = bin_start; i <= bin_end; i++) { + cache_bin_info_init( + &tcache_bin_info[i], (cache_bin_sz_t)ncached_max); + if (bin_info_is_set != NULL) { + bin_info_is_set[i] = true; + } + } + } while (len_left > 0); + + return false; +} + +bool +tcache_bin_info_default_init( + const char *bin_settings_segment_cur, size_t len_left) { + return tcache_bin_info_settings_parse(bin_settings_segment_cur, + len_left, opt_tcache_ncached_max, opt_tcache_ncached_max_set); +} + +bool +tcache_bins_ncached_max_write(tsd_t *tsd, char *settings, size_t len) { + assert(tcache_available(tsd)); + assert(len != 0); + tcache_t *tcache = tsd_tcachep_get(tsd); + assert(tcache != NULL); + cache_bin_info_t tcache_bin_info[TCACHE_NBINS_MAX]; + tcache_bin_settings_backup(tcache, tcache_bin_info); + + if (tcache_bin_info_settings_parse( + settings, len, tcache_bin_info, NULL)) { + return true; + } + + arena_t *assigned_arena = tcache->tcache_slow->arena; + tcache_cleanup(tsd); + return tsd_tcache_data_init(tsd, assigned_arena, tcache_bin_info); +} + static void tcache_flush_cache(tsd_t *tsd, tcache_t *tcache) { tcache_slow_t *tcache_slow = tcache->tcache_slow; assert(tcache_slow->arena != NULL); - for (unsigned i = 0; i < nhbins; i++) { + for (unsigned i = 0; i < tcache_nbins_get(tcache_slow); i++) { cache_bin_t *cache_bin = &tcache->bins[i]; + if (tcache_bin_disabled(i, cache_bin, tcache_slow)) { + continue; + } if (i < SC_NBINS) { tcache_bin_flush_small(tsd, tcache, cache_bin, i, 0); } else { @@ -812,10 +1229,14 @@ tcache_destroy(tsd_t *tsd, tcache_t *tcache, bool tsd_tcache) { if (tsd_tcache) { cache_bin_t *cache_bin = &tcache->bins[0]; - cache_bin_assert_empty(cache_bin, &tcache_bin_info[0]); + cache_bin_assert_empty(cache_bin); + } + if (tsd_tcache && cache_bin_stack_use_thp()) { + b0_dalloc_tcache_stack(tsd_tsdn(tsd), tcache_slow->dyn_alloc); + } else { + idalloctm(tsd_tsdn(tsd), tcache_slow->dyn_alloc, NULL, NULL, + true, true); } - idalloctm(tsd_tsdn(tsd), tcache_slow->dyn_alloc, NULL, NULL, true, - true); /* * The deallocation and tcache flush above may not trigger decay since @@ -823,11 +1244,11 @@ tcache_destroy(tsd_t *tsd, tcache_t *tcache, bool tsd_tcache) { * tsd). Manually trigger decay to avoid pathological cases. Also * include arena 0 because the tcache array is allocated from it. */ - arena_decay(tsd_tsdn(tsd), arena_get(tsd_tsdn(tsd), 0, false), - false, false); + arena_decay( + tsd_tsdn(tsd), arena_get(tsd_tsdn(tsd), 0, false), false, false); - if (arena_nthreads_get(arena, false) == 0 && - !background_thread_enabled()) { + if (arena_nthreads_get(arena, false) == 0 + && !background_thread_enabled()) { /* Force purging when no threads assigned to the arena anymore. */ arena_decay(tsd_tsdn(tsd), arena, /* is_background_thread */ false, /* all */ true); @@ -850,13 +1271,8 @@ tcache_cleanup(tsd_t *tsd) { assert(!cache_bin_still_zero_initialized(&tcache->bins[0])); tcache_destroy(tsd, tcache, true); - if (config_debug) { - /* - * For debug testing only, we want to pretend we're still in the - * zero-initialized state. - */ - memset(tcache->bins, 0, sizeof(cache_bin_t) * nhbins); - } + /* Make sure all bins used are reinitialized to the clean state. */ + memset(tcache->bins, 0, sizeof(cache_bin_t) * TCACHE_NBINS_MAX); } void @@ -864,10 +1280,13 @@ tcache_stats_merge(tsdn_t *tsdn, tcache_t *tcache, arena_t *arena) { cassert(config_stats); /* Merge and reset tcache stats. */ - for (unsigned i = 0; i < nhbins; i++) { + for (unsigned i = 0; i < tcache_nbins_get(tcache->tcache_slow); i++) { cache_bin_t *cache_bin = &tcache->bins[i]; + if (tcache_bin_disabled(i, cache_bin, tcache->tcache_slow)) { + continue; + } if (i < SC_NBINS) { - bin_t *bin = arena_bin_choose(tsdn, arena, i, NULL); + bin_t *bin = bin_choose(tsdn, arena, i, NULL); malloc_mutex_lock(tsdn, &bin->lock); bin->stats.nrequests += cache_bin->tstats.nrequests; malloc_mutex_unlock(tsdn, &bin->lock); @@ -887,7 +1306,7 @@ tcaches_create_prep(tsd_t *tsd, base_t *base) { if (tcaches == NULL) { tcaches = base_alloc(tsd_tsdn(tsd), base, - sizeof(tcache_t *) * (MALLOCX_TCACHE_MAX+1), CACHELINE); + sizeof(tcache_t *) * (MALLOCX_TCACHE_MAX + 1), CACHELINE); if (tcaches == NULL) { err = true; goto label_return; @@ -978,7 +1397,7 @@ void tcaches_destroy(tsd_t *tsd, unsigned ind) { malloc_mutex_lock(tsd_tsdn(tsd), &tcaches_mtx); tcaches_t *elm = &tcaches[ind]; - tcache_t *tcache = tcaches_elm_remove(tsd, elm, false); + tcache_t *tcache = tcaches_elm_remove(tsd, elm, false); elm->next = tcaches_avail; tcaches_avail = elm; malloc_mutex_unlock(tsd_tsdn(tsd), &tcaches_mtx); @@ -987,97 +1406,25 @@ tcaches_destroy(tsd_t *tsd, unsigned ind) { } } -static unsigned -tcache_ncached_max_compute(szind_t szind) { - if (szind >= SC_NBINS) { - assert(szind < nhbins); - return opt_tcache_nslots_large; - } - unsigned slab_nregs = bin_infos[szind].nregs; - - /* We may modify these values; start with the opt versions. */ - unsigned nslots_small_min = opt_tcache_nslots_small_min; - unsigned nslots_small_max = opt_tcache_nslots_small_max; - - /* - * Clamp values to meet our constraints -- even, nonzero, min < max, and - * suitable for a cache bin size. - */ - if (opt_tcache_nslots_small_max > CACHE_BIN_NCACHED_MAX) { - nslots_small_max = CACHE_BIN_NCACHED_MAX; - } - if (nslots_small_min % 2 != 0) { - nslots_small_min++; - } - if (nslots_small_max % 2 != 0) { - nslots_small_max--; - } - if (nslots_small_min < 2) { - nslots_small_min = 2; - } - if (nslots_small_max < 2) { - nslots_small_max = 2; - } - if (nslots_small_min > nslots_small_max) { - nslots_small_min = nslots_small_max; - } - - unsigned candidate; - if (opt_lg_tcache_nslots_mul < 0) { - candidate = slab_nregs >> (-opt_lg_tcache_nslots_mul); - } else { - candidate = slab_nregs << opt_lg_tcache_nslots_mul; - } - if (candidate % 2 != 0) { - /* - * We need the candidate size to be even -- we assume that we - * can divide by two and get a positive number (e.g. when - * flushing). - */ - ++candidate; - } - if (candidate <= nslots_small_min) { - return nslots_small_min; - } else if (candidate <= nslots_small_max) { - return candidate; - } else { - return nslots_small_max; - } -} - bool tcache_boot(tsdn_t *tsdn, base_t *base) { - tcache_maxclass = sz_s2u(opt_tcache_max); - assert(tcache_maxclass <= TCACHE_MAXCLASS_LIMIT); - nhbins = sz_size2index(tcache_maxclass) + 1; + global_do_not_change_tcache_maxclass = sz_s2u(opt_tcache_max); + assert(global_do_not_change_tcache_maxclass <= TCACHE_MAXCLASS_LIMIT); + global_do_not_change_tcache_nbins = + sz_size2index(global_do_not_change_tcache_maxclass) + 1; + /* + * Pre-compute default bin info and store the results in + * opt_tcache_ncached_max. After the changes here, + * opt_tcache_ncached_max should not be modified and should always be + * accessed using tcache_get_default_ncached_max. + */ + tcache_bin_info_compute(opt_tcache_ncached_max); if (malloc_mutex_init(&tcaches_mtx, "tcaches", WITNESS_RANK_TCACHES, - malloc_mutex_rank_exclusive)) { + malloc_mutex_rank_exclusive)) { return true; } - /* Initialize tcache_bin_info. See comments in tcache_init(). */ - unsigned n_reserved_bins = nhbins < SC_NBINS ? SC_NBINS : nhbins; - size_t size = n_reserved_bins * sizeof(cache_bin_info_t); - tcache_bin_info = (cache_bin_info_t *)base_alloc(tsdn, base, size, - CACHELINE); - if (tcache_bin_info == NULL) { - return true; - } - - for (szind_t i = 0; i < nhbins; i++) { - unsigned ncached_max = tcache_ncached_max_compute(i); - cache_bin_info_init(&tcache_bin_info[i], ncached_max); - } - for (szind_t i = nhbins; i < SC_NBINS; i++) { - /* Disabled small bins. */ - cache_bin_info_init(&tcache_bin_info[i], 0); - assert(tcache_small_bin_disabled(i, NULL)); - } - - cache_bin_info_compute_alloc(tcache_bin_info, nhbins, - &tcache_bin_alloc_size, &tcache_bin_alloc_alignment); - return false; } @@ -1096,6 +1443,20 @@ tcache_postfork_child(tsdn_t *tsdn) { malloc_mutex_postfork_child(tsdn, &tcaches_mtx); } -void tcache_assert_initialized(tcache_t *tcache) { +void +tcache_assert_initialized(tcache_t *tcache) { assert(!cache_bin_still_zero_initialized(&tcache->bins[0])); } + +static te_enabled_t +tcache_gc_enabled(void) { + return (opt_tcache_gc_incr_bytes > 0) ? te_enabled_yes : te_enabled_no; +} + +/* Handles alloc and dalloc the same way */ +te_base_cb_t tcache_gc_te_handler = { + .enabled = &tcache_gc_enabled, + .new_event_wait = &tcache_gc_new_event_wait, + .postponed_event_wait = &tcache_gc_postponed_event_wait, + .event_handler = &tcache_gc_event, +}; diff --git a/dep/jemalloc/src/test_hooks.c b/dep/jemalloc/src/test_hooks.c index ace00d9c46958..40621199d8691 100644 --- a/dep/jemalloc/src/test_hooks.c +++ b/dep/jemalloc/src/test_hooks.c @@ -6,7 +6,7 @@ * from outside the generated library, so that we can use them in test code. */ JEMALLOC_EXPORT -void (*test_hooks_arena_new_hook)() = NULL; +void (*test_hooks_arena_new_hook)(void) = NULL; JEMALLOC_EXPORT -void (*test_hooks_libc_hook)() = NULL; +void (*test_hooks_libc_hook)(void) = NULL; diff --git a/dep/jemalloc/src/thread_event.c b/dep/jemalloc/src/thread_event.c index 37eb5827d3c93..82776342eae4c 100644 --- a/dep/jemalloc/src/thread_event.c +++ b/dep/jemalloc/src/thread_event.c @@ -2,103 +2,48 @@ #include "jemalloc/internal/jemalloc_internal_includes.h" #include "jemalloc/internal/thread_event.h" - -/* - * Signatures for event specific functions. These functions should be defined - * by the modules owning each event. The signatures here verify that the - * definitions follow the right format. - * - * The first two are functions computing new / postponed event wait time. New - * event wait time is the time till the next event if an event is currently - * being triggered; postponed event wait time is the time till the next event - * if an event should be triggered but needs to be postponed, e.g. when the TSD - * is not nominal or during reentrancy. - * - * The third is the event handler function, which is called whenever an event - * is triggered. The parameter is the elapsed time since the last time an - * event of the same type was triggered. - */ -#define E(event, condition_unused, is_alloc_event_unused) \ -uint64_t event##_new_event_wait(tsd_t *tsd); \ -uint64_t event##_postponed_event_wait(tsd_t *tsd); \ -void event##_event_handler(tsd_t *tsd, uint64_t elapsed); - -ITERATE_OVER_ALL_EVENTS -#undef E - -/* Signatures for internal functions fetching elapsed time. */ -#define E(event, condition_unused, is_alloc_event_unused) \ -static uint64_t event##_fetch_elapsed(tsd_t *tsd); - -ITERATE_OVER_ALL_EVENTS -#undef E - -static uint64_t -tcache_gc_fetch_elapsed(tsd_t *tsd) { - return TE_INVALID_ELAPSED; -} - -static uint64_t -tcache_gc_dalloc_fetch_elapsed(tsd_t *tsd) { - return TE_INVALID_ELAPSED; -} - -static uint64_t -prof_sample_fetch_elapsed(tsd_t *tsd) { - uint64_t last_event = thread_allocated_last_event_get(tsd); - uint64_t last_sample_event = prof_sample_last_event_get(tsd); - prof_sample_last_event_set(tsd, last_event); - return last_event - last_sample_event; -} - -static uint64_t -stats_interval_fetch_elapsed(tsd_t *tsd) { - uint64_t last_event = thread_allocated_last_event_get(tsd); - uint64_t last_stats_event = stats_interval_last_event_get(tsd); - stats_interval_last_event_set(tsd, last_event); - return last_event - last_stats_event; -} - -static uint64_t -peak_alloc_fetch_elapsed(tsd_t *tsd) { - return TE_INVALID_ELAPSED; -} - -static uint64_t -peak_dalloc_fetch_elapsed(tsd_t *tsd) { - return TE_INVALID_ELAPSED; -} - -/* Per event facilities done. */ +#include "jemalloc/internal/thread_event_registry.h" +#include "jemalloc/internal/peak_event.h" static bool te_ctx_has_active_events(te_ctx_t *ctx) { assert(config_debug); -#define E(event, condition, alloc_event) \ - if (condition && alloc_event == ctx->is_alloc) { \ - return true; \ + if (ctx->is_alloc) { + for (int i = 0; i < te_alloc_count; ++i) { + if (te_enabled_yes == te_alloc_handlers[i]->enabled()) { + return true; + } + } + } else { + for (int i = 0; i < te_dalloc_count; ++i) { + if (te_enabled_yes + == te_dalloc_handlers[i]->enabled()) { + return true; + } + } } - ITERATE_OVER_ALL_EVENTS -#undef E return false; } static uint64_t te_next_event_compute(tsd_t *tsd, bool is_alloc) { + te_base_cb_t **handlers = is_alloc ? te_alloc_handlers + : te_dalloc_handlers; + uint64_t *waits = is_alloc ? tsd_te_datap_get_unsafe(tsd)->alloc_wait + : tsd_te_datap_get_unsafe(tsd)->dalloc_wait; + int count = is_alloc ? te_alloc_count : te_dalloc_count; + uint64_t wait = TE_MAX_START_WAIT; -#define E(event, condition, alloc_event) \ - if (is_alloc == alloc_event && condition) { \ - uint64_t event_wait = \ - event##_event_wait_get(tsd); \ - assert(event_wait <= TE_MAX_START_WAIT); \ - if (event_wait > 0U && event_wait < wait) { \ - wait = event_wait; \ - } \ - } - ITERATE_OVER_ALL_EVENTS -#undef E - assert(wait <= TE_MAX_START_WAIT); + for (int i = 0; i < count; i++) { + if (te_enabled_yes == handlers[i]->enabled()) { + uint64_t ev_wait = waits[i]; + assert(ev_wait <= TE_MAX_START_WAIT); + if (ev_wait > 0U && ev_wait < wait) { + wait = ev_wait; + } + } + } return wait; } @@ -121,6 +66,19 @@ te_assert_invariants_impl(tsd_t *tsd, te_ctx_t *ctx) { /* The subtraction is intentionally susceptible to underflow. */ assert(current_bytes - last_event < interval); + + /* This computation assumes that event did not become active in the + * time since the last trigger. This works fine if waits for inactive + * events are initialized with 0 as those are ignored + * If we wanted to initialize user events to anything other than + * zero, computation would take it into account and min_wait could + * be smaller than interval (as it was not part of the calc setting + * next_event). + * + * If we ever wanted to unregister the events assert would also + * need to account for the possibility that next_event was set, by + * event that is now gone + */ uint64_t min_wait = te_next_event_compute(tsd, te_ctx_is_alloc(ctx)); /* * next_event should have been pushed up only except when no event is @@ -128,9 +86,9 @@ te_assert_invariants_impl(tsd_t *tsd, te_ctx_t *ctx) { * below is stronger than needed, but having an exactly accurate guard * is more complicated to implement. */ - assert((!te_ctx_has_active_events(ctx) && last_event == 0U) || - interval == min_wait || - (interval < min_wait && interval == TE_MAX_INTERVAL)); + assert((!te_ctx_has_active_events(ctx) && last_event == 0U) + || interval == min_wait + || (interval < min_wait && interval == TE_MAX_INTERVAL)); } void @@ -193,8 +151,9 @@ te_assert_invariants_debug(tsd_t *tsd) { static void te_ctx_next_event_fast_update(te_ctx_t *ctx) { uint64_t next_event = te_ctx_next_event_get(ctx); - uint64_t next_event_fast = (next_event <= TE_NEXT_EVENT_FAST_MAX) ? - next_event : 0U; + uint64_t next_event_fast = (next_event <= TE_NEXT_EVENT_FAST_MAX) + ? next_event + : 0U; te_ctx_next_event_fast_set(ctx, next_event_fast); } @@ -218,9 +177,8 @@ te_recompute_fast_threshold(tsd_t *tsd) { } } -static void -te_adjust_thresholds_helper(tsd_t *tsd, te_ctx_t *ctx, - uint64_t wait) { +static inline void +te_adjust_thresholds_impl(tsd_t *tsd, te_ctx_t *ctx, uint64_t wait) { /* * The next threshold based on future events can only be adjusted after * progressing the last_event counter (which is set to current). @@ -228,23 +186,165 @@ te_adjust_thresholds_helper(tsd_t *tsd, te_ctx_t *ctx, assert(te_ctx_current_bytes_get(ctx) == te_ctx_last_event_get(ctx)); assert(wait <= TE_MAX_START_WAIT); - uint64_t next_event = te_ctx_last_event_get(ctx) + (wait <= - TE_MAX_INTERVAL ? wait : TE_MAX_INTERVAL); + uint64_t next_event = te_ctx_last_event_get(ctx) + + (wait <= TE_MAX_INTERVAL ? wait : TE_MAX_INTERVAL); te_ctx_next_event_set(tsd, ctx, next_event); } +void +te_adjust_thresholds_helper(tsd_t *tsd, te_ctx_t *ctx, uint64_t wait) { + te_adjust_thresholds_impl(tsd, ctx, wait); +} -static uint64_t -te_clip_event_wait(uint64_t event_wait) { - assert(event_wait > 0U); - if (TE_MIN_START_WAIT > 1U && - unlikely(event_wait < TE_MIN_START_WAIT)) { - event_wait = TE_MIN_START_WAIT; +static void +te_init_waits(tsd_t *tsd, uint64_t *wait, bool is_alloc) { + te_base_cb_t **handlers = is_alloc ? te_alloc_handlers + : te_dalloc_handlers; + uint64_t *waits = is_alloc ? tsd_te_datap_get_unsafe(tsd)->alloc_wait + : tsd_te_datap_get_unsafe(tsd)->dalloc_wait; + int count = is_alloc ? te_alloc_count : te_dalloc_count; + for (int i = 0; i < count; i++) { + if (te_enabled_yes == handlers[i]->enabled()) { + uint64_t ev_wait = handlers[i]->new_event_wait(tsd); + assert(ev_wait > 0); + waits[i] = ev_wait; + if (ev_wait < *wait) { + *wait = ev_wait; + } + } + } +} + +static inline bool +te_update_wait(tsd_t *tsd, uint64_t accumbytes, bool allow, uint64_t *ev_wait, + uint64_t *wait, te_base_cb_t *handler, uint64_t new_wait) { + bool ret = false; + if (*ev_wait > accumbytes) { + *ev_wait -= accumbytes; + } else if (!allow) { + *ev_wait = handler->postponed_event_wait(tsd); + } else { + ret = true; + *ev_wait = new_wait == 0 ? handler->new_event_wait(tsd) + : new_wait; + } + + assert(*ev_wait > 0); + if (*ev_wait < *wait) { + *wait = *ev_wait; + } + return ret; +} + +extern uint64_t stats_interval_accum_batch; +/* Return number of handlers enqueued into to_trigger array */ +static inline size_t +te_update_alloc_events(tsd_t *tsd, te_base_cb_t **to_trigger, + uint64_t accumbytes, bool allow, uint64_t *wait) { + /* + * We do not loop and invoke the functions via interface because + * of the perf cost. This path is relatively hot, so we sacrifice + * elegance for perf. + */ + size_t nto_trigger = 0; + uint64_t *waits = tsd_te_datap_get_unsafe(tsd)->alloc_wait; + if (opt_tcache_gc_incr_bytes > 0) { + assert(te_enabled_yes + == te_alloc_handlers[te_alloc_tcache_gc]->enabled()); + if (te_update_wait(tsd, accumbytes, allow, + &waits[te_alloc_tcache_gc], wait, + te_alloc_handlers[te_alloc_tcache_gc], + opt_tcache_gc_incr_bytes)) { + to_trigger[nto_trigger++] = + te_alloc_handlers[te_alloc_tcache_gc]; + } + } +#ifdef JEMALLOC_PROF + if (opt_prof) { + assert(te_enabled_yes + == te_alloc_handlers[te_alloc_prof_sample]->enabled()); + if (te_update_wait(tsd, accumbytes, allow, + &waits[te_alloc_prof_sample], wait, + te_alloc_handlers[te_alloc_prof_sample], 0)) { + to_trigger[nto_trigger++] = + te_alloc_handlers[te_alloc_prof_sample]; + } + } +#endif + if (opt_stats_interval >= 0) { + if (te_update_wait(tsd, accumbytes, allow, + &waits[te_alloc_stats_interval], wait, + te_alloc_handlers[te_alloc_stats_interval], + stats_interval_accum_batch)) { + assert(te_enabled_yes + == te_alloc_handlers[te_alloc_stats_interval] + ->enabled()); + to_trigger[nto_trigger++] = + te_alloc_handlers[te_alloc_stats_interval]; + } + } + +#ifdef JEMALLOC_STATS + assert(te_enabled_yes == te_alloc_handlers[te_alloc_peak]->enabled()); + if (te_update_wait(tsd, accumbytes, allow, &waits[te_alloc_peak], wait, + te_alloc_handlers[te_alloc_peak], PEAK_EVENT_WAIT)) { + to_trigger[nto_trigger++] = te_alloc_handlers[te_alloc_peak]; + } + +#endif + + for (te_alloc_t ue = te_alloc_user0; ue <= te_alloc_user3; ue++) { + te_enabled_t status = te_user_event_enabled( + ue - te_alloc_user0, true); + if (status == te_enabled_not_installed) { + break; + } else if (status == te_enabled_yes) { + if (te_update_wait(tsd, accumbytes, allow, &waits[ue], + wait, te_alloc_handlers[ue], 0)) { + to_trigger[nto_trigger++] = + te_alloc_handlers[ue]; + } + } } - if (TE_MAX_START_WAIT < UINT64_MAX && - unlikely(event_wait > TE_MAX_START_WAIT)) { - event_wait = TE_MAX_START_WAIT; + return nto_trigger; +} + +static inline size_t +te_update_dalloc_events(tsd_t *tsd, te_base_cb_t **to_trigger, + uint64_t accumbytes, bool allow, uint64_t *wait) { + size_t nto_trigger = 0; + uint64_t *waits = tsd_te_datap_get_unsafe(tsd)->dalloc_wait; + if (opt_tcache_gc_incr_bytes > 0) { + assert(te_enabled_yes + == te_dalloc_handlers[te_dalloc_tcache_gc]->enabled()); + if (te_update_wait(tsd, accumbytes, allow, + &waits[te_dalloc_tcache_gc], wait, + te_dalloc_handlers[te_dalloc_tcache_gc], + opt_tcache_gc_incr_bytes)) { + to_trigger[nto_trigger++] = + te_dalloc_handlers[te_dalloc_tcache_gc]; + } + } +#ifdef JEMALLOC_STATS + assert(te_enabled_yes == te_dalloc_handlers[te_dalloc_peak]->enabled()); + if (te_update_wait(tsd, accumbytes, allow, &waits[te_dalloc_peak], wait, + te_dalloc_handlers[te_dalloc_peak], PEAK_EVENT_WAIT)) { + to_trigger[nto_trigger++] = te_dalloc_handlers[te_dalloc_peak]; + } +#endif + for (te_dalloc_t ue = te_dalloc_user0; ue <= te_dalloc_user3; ue++) { + te_enabled_t status = te_user_event_enabled( + ue - te_dalloc_user0, false); + if (status == te_enabled_not_installed) { + break; + } else if (status == te_enabled_yes) { + if (te_update_wait(tsd, accumbytes, allow, &waits[ue], + wait, te_dalloc_handlers[ue], 0)) { + to_trigger[nto_trigger++] = + te_dalloc_handlers[ue]; + } + } } - return event_wait; + return nto_trigger; } void @@ -256,49 +356,30 @@ te_event_trigger(tsd_t *tsd, te_ctx_t *ctx) { te_ctx_last_event_set(ctx, bytes_after); - bool allow_event_trigger = tsd_nominal(tsd) && - tsd_reentrancy_level_get(tsd) == 0; - bool is_alloc = ctx->is_alloc; + bool allow_event_trigger = tsd_nominal(tsd) + && tsd_reentrancy_level_get(tsd) == 0; uint64_t wait = TE_MAX_START_WAIT; -#define E(event, condition, alloc_event) \ - bool is_##event##_triggered = false; \ - if (is_alloc == alloc_event && condition) { \ - uint64_t event_wait = event##_event_wait_get(tsd); \ - assert(event_wait <= TE_MAX_START_WAIT); \ - if (event_wait > accumbytes) { \ - event_wait -= accumbytes; \ - } else if (!allow_event_trigger) { \ - event_wait = event##_postponed_event_wait(tsd); \ - } else { \ - is_##event##_triggered = true; \ - event_wait = event##_new_event_wait(tsd); \ - } \ - event_wait = te_clip_event_wait(event_wait); \ - event##_event_wait_set(tsd, event_wait); \ - if (event_wait < wait) { \ - wait = event_wait; \ - } \ + assert((int)te_alloc_count >= (int)te_dalloc_count); + te_base_cb_t *to_trigger[te_alloc_count]; + size_t nto_trigger; + if (ctx->is_alloc) { + nto_trigger = te_update_alloc_events( + tsd, to_trigger, accumbytes, allow_event_trigger, &wait); + } else { + nto_trigger = te_update_dalloc_events( + tsd, to_trigger, accumbytes, allow_event_trigger, &wait); } - ITERATE_OVER_ALL_EVENTS -#undef E - assert(wait <= TE_MAX_START_WAIT); te_adjust_thresholds_helper(tsd, ctx, wait); te_assert_invariants(tsd); -#define E(event, condition, alloc_event) \ - if (is_alloc == alloc_event && condition && \ - is_##event##_triggered) { \ - assert(allow_event_trigger); \ - uint64_t elapsed = event##_fetch_elapsed(tsd); \ - event##_event_handler(tsd, elapsed); \ + for (size_t i = 0; i < nto_trigger; i++) { + assert(allow_event_trigger); + to_trigger[i]->event_handler(tsd); } - ITERATE_OVER_ALL_EVENTS -#undef E - te_assert_invariants(tsd); } @@ -318,19 +399,9 @@ te_init(tsd_t *tsd, bool is_alloc) { te_ctx_last_event_set(&ctx, te_ctx_current_bytes_get(&ctx)); uint64_t wait = TE_MAX_START_WAIT; -#define E(event, condition, alloc_event) \ - if (is_alloc == alloc_event && condition) { \ - uint64_t event_wait = event##_new_event_wait(tsd); \ - event_wait = te_clip_event_wait(event_wait); \ - event##_event_wait_set(tsd, event_wait); \ - if (event_wait < wait) { \ - wait = event_wait; \ - } \ - } + te_init_waits(tsd, &wait, is_alloc); - ITERATE_OVER_ALL_EVENTS -#undef E - te_adjust_thresholds_helper(tsd, &ctx, wait); + te_adjust_thresholds_impl(tsd, &ctx, wait); } void diff --git a/dep/jemalloc/src/thread_event_registry.c b/dep/jemalloc/src/thread_event_registry.c new file mode 100644 index 0000000000000..b8307df067aa3 --- /dev/null +++ b/dep/jemalloc/src/thread_event_registry.c @@ -0,0 +1,238 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/thread_event.h" +#include "jemalloc/internal/thread_event_registry.h" +#include "jemalloc/internal/tcache_externs.h" +#include "jemalloc/internal/peak_event.h" +#include "jemalloc/internal/prof_externs.h" +#include "jemalloc/internal/stats.h" + +static malloc_mutex_t uevents_mu; + +bool +experimental_thread_events_boot(void) { + return malloc_mutex_init(&uevents_mu, "thread_events", + WITNESS_RANK_THREAD_EVENTS_USER, malloc_mutex_rank_exclusive); +} + +#define TE_REGISTER_ERRCODE_FULL_SLOTS -1 +#define TE_REGISTER_ERRCODE_ALREADY_REGISTERED -2 + +static user_hook_object_t uevents_storage[TE_MAX_USER_EVENTS] = { + {NULL, 0, false}, +}; + +static atomic_p_t uevent_obj_p[TE_MAX_USER_EVENTS] = { + NULL, +}; + +static inline bool +user_object_eq(user_hook_object_t *lhs, user_hook_object_t *rhs) { + assert(lhs != NULL && rhs != NULL); + + return lhs->callback == rhs->callback && lhs->interval == rhs->interval + && lhs->is_alloc_only == rhs->is_alloc_only; +} + +/* + * Return slot number that event is registered at on success + * it will be [0, TE_MAX_USER_EVENTS) + * Return negative value on some error + */ +static inline int +te_register_user_handler_locked(user_hook_object_t *new_obj) { + /* Attempt to find the free slot in global register */ + for (int i = 0; i < TE_MAX_USER_EVENTS; ++i) { + user_hook_object_t *p = (user_hook_object_t *)atomic_load_p( + &uevent_obj_p[i], ATOMIC_ACQUIRE); + + if (p && user_object_eq(p, new_obj)) { + /* Same callback and interval are registered - no error. */ + return TE_REGISTER_ERRCODE_ALREADY_REGISTERED; + } else if (p == NULL) { + /* Empty slot */ + uevents_storage[i] = *new_obj; + atomic_fence(ATOMIC_SEQ_CST); + atomic_store_p(&uevent_obj_p[i], &uevents_storage[i], + ATOMIC_RELEASE); + return i; + } + } + + return TE_REGISTER_ERRCODE_FULL_SLOTS; +} + +static inline user_hook_object_t * +uobj_get(size_t cb_idx) { + assert(cb_idx < TE_MAX_USER_EVENTS); + return (user_hook_object_t *)atomic_load_p( + &uevent_obj_p[cb_idx], ATOMIC_ACQUIRE); +} + +te_enabled_t +te_user_event_enabled(size_t ue_idx, bool is_alloc) { + assert(ue_idx < TE_MAX_USER_EVENTS); + user_hook_object_t *obj = uobj_get(ue_idx); + if (!obj) { + return te_enabled_not_installed; + } + if (is_alloc || !obj->is_alloc_only) { + return te_enabled_yes; + } + return te_enabled_no; +} + +static inline uint64_t +new_event_wait(size_t cb_idx) { + user_hook_object_t *obj = uobj_get(cb_idx); + /* Enabled should have guarded it */ + assert(obj); + return obj->interval; +} + +static uint64_t +postponed_event_wait(tsd_t *tsd) { + return TE_MIN_START_WAIT; +} + +static inline void +handler_wrapper(tsd_t *tsd, bool is_alloc, size_t cb_idx) { + user_hook_object_t *obj = uobj_get(cb_idx); + /* Enabled should have guarded it */ + assert(obj); + uint64_t alloc = tsd_thread_allocated_get(tsd); + uint64_t dalloc = tsd_thread_deallocated_get(tsd); + + pre_reentrancy(tsd, NULL); + obj->callback(is_alloc, alloc, dalloc); + post_reentrancy(tsd); +} + +#define TE_USER_HANDLER_BINDING_IDX(i) \ + static te_enabled_t te_user_alloc_enabled##i(void) { \ + return te_user_event_enabled(i, true); \ + } \ + static te_enabled_t te_user_dalloc_enabled##i(void) { \ + return te_user_event_enabled(i, false); \ + } \ + static uint64_t te_user_new_event_wait_##i(tsd_t *tsd) { \ + return new_event_wait(i); \ + } \ + static void te_user_alloc_handler_call##i(tsd_t *tsd) { \ + handler_wrapper(tsd, true, i); \ + } \ + static void te_user_dalloc_handler_call##i(tsd_t *tsd) { \ + handler_wrapper(tsd, false, i); \ + } \ + static te_base_cb_t user_alloc_handler##i = { \ + .enabled = &te_user_alloc_enabled##i, \ + .new_event_wait = &te_user_new_event_wait_##i, \ + .postponed_event_wait = &postponed_event_wait, \ + .event_handler = &te_user_alloc_handler_call##i}; \ + static te_base_cb_t user_dalloc_handler##i = { \ + .enabled = &te_user_dalloc_enabled##i, \ + .new_event_wait = &te_user_new_event_wait_##i, \ + .postponed_event_wait = &postponed_event_wait, \ + .event_handler = &te_user_dalloc_handler_call##i} + +TE_USER_HANDLER_BINDING_IDX(0); +TE_USER_HANDLER_BINDING_IDX(1); +TE_USER_HANDLER_BINDING_IDX(2); +TE_USER_HANDLER_BINDING_IDX(3); + +/* Table of all the thread events. */ +te_base_cb_t *te_alloc_handlers[te_alloc_count] = { +#ifdef JEMALLOC_PROF + &prof_sample_te_handler, +#endif + &stats_interval_te_handler, &tcache_gc_te_handler, +#ifdef JEMALLOC_STATS + &peak_te_handler, +#endif + &user_alloc_handler0, &user_alloc_handler1, &user_alloc_handler2, + &user_alloc_handler3}; + +te_base_cb_t *te_dalloc_handlers[te_dalloc_count] = {&tcache_gc_te_handler, +#ifdef JEMALLOC_STATS + &peak_te_handler, +#endif + &user_dalloc_handler0, &user_dalloc_handler1, &user_dalloc_handler2, + &user_dalloc_handler3}; + +static inline bool +te_update_tsd(tsd_t *tsd, uint64_t new_wait, size_t ue_idx, bool is_alloc) { + bool needs_recompute = false; + te_ctx_t ctx; + uint64_t next, current, cur_wait; + + if (is_alloc) { + tsd_te_datap_get_unsafe(tsd) + ->alloc_wait[te_alloc_user0 + ue_idx] = new_wait; + } else { + tsd_te_datap_get_unsafe(tsd) + ->dalloc_wait[te_dalloc_user0 + ue_idx] = new_wait; + } + te_ctx_get(tsd, &ctx, is_alloc); + + next = te_ctx_next_event_get(&ctx); + current = te_ctx_current_bytes_get(&ctx); + cur_wait = next - current; + + if (new_wait < cur_wait) { + /* + * Set last event to current (same as when te inits). This + * will make sure that all the invariants are correct, before + * we adjust next_event and next_event fast. + */ + te_ctx_last_event_set(&ctx, te_ctx_current_bytes_get(&ctx)); + te_adjust_thresholds_helper(tsd, &ctx, new_wait); + needs_recompute = true; + } + return needs_recompute; +} + +static inline void +te_recalculate_current_thread_data(tsdn_t *tsdn, int ue_idx, bool alloc_only) { + bool recompute = false; + /* we do not need lock to recalculate the events on the current thread */ + assert(ue_idx < TE_MAX_USER_EVENTS); + tsd_t *tsd = tsdn_null(tsdn) ? tsd_fetch() : tsdn_tsd(tsdn); + if (tsd) { + uint64_t new_wait = new_event_wait(ue_idx); + recompute = te_update_tsd(tsd, new_wait, ue_idx, true); + if (!alloc_only) { + recompute = te_update_tsd(tsd, new_wait, ue_idx, false) + || recompute; + } + + if (recompute) { + te_recompute_fast_threshold(tsd); + } + } +} + +int +te_register_user_handler(tsdn_t *tsdn, user_hook_object_t *te_uobj) { + int ret; + int reg_retcode; + if (!te_uobj || !te_uobj->callback || te_uobj->interval == 0) { + return EINVAL; + } + + malloc_mutex_lock(tsdn, &uevents_mu); + reg_retcode = te_register_user_handler_locked(te_uobj); + malloc_mutex_unlock(tsdn, &uevents_mu); + + if (reg_retcode >= 0) { + te_recalculate_current_thread_data( + tsdn, reg_retcode, te_uobj->is_alloc_only); + ret = 0; + } else if (reg_retcode == TE_REGISTER_ERRCODE_ALREADY_REGISTERED) { + ret = 0; + } else { + ret = EINVAL; + } + + return ret; +} diff --git a/dep/jemalloc/src/ticker.c b/dep/jemalloc/src/ticker.c index 790b5c20079c6..1fd6ac968deac 100644 --- a/dep/jemalloc/src/ticker.c +++ b/dep/jemalloc/src/ticker.c @@ -20,13 +20,8 @@ * The values here are computed in src/ticker.py */ -const uint8_t ticker_geom_table[1 << TICKER_GEOM_NBITS] = { - 254, 211, 187, 169, 156, 144, 135, 127, - 120, 113, 107, 102, 97, 93, 89, 85, - 81, 77, 74, 71, 68, 65, 62, 60, - 57, 55, 53, 50, 48, 46, 44, 42, - 40, 39, 37, 35, 33, 32, 30, 29, - 27, 26, 24, 23, 21, 20, 19, 18, - 16, 15, 14, 13, 12, 10, 9, 8, - 7, 6, 5, 4, 3, 2, 1, 0 -}; +const uint8_t ticker_geom_table[1 << TICKER_GEOM_NBITS] = {254, 211, 187, 169, + 156, 144, 135, 127, 120, 113, 107, 102, 97, 93, 89, 85, 81, 77, 74, 71, 68, + 65, 62, 60, 57, 55, 53, 50, 48, 46, 44, 42, 40, 39, 37, 35, 33, 32, 30, 29, + 27, 26, 24, 23, 21, 20, 19, 18, 16, 15, 14, 13, 12, 10, 9, 8, 7, 6, 5, 4, 3, + 2, 1, 0}; diff --git a/dep/jemalloc/src/tsd.c b/dep/jemalloc/src/tsd.c index e8e4f3a339592..30acad93e588d 100644 --- a/dep/jemalloc/src/tsd.c +++ b/dep/jemalloc/src/tsd.c @@ -20,11 +20,20 @@ bool tsd_booted = false; #elif (defined(JEMALLOC_TLS)) JEMALLOC_TSD_TYPE_ATTR(tsd_t) tsd_tls = TSD_INITIALIZER; pthread_key_t tsd_tsd; -bool tsd_booted = false; +bool tsd_booted = false; #elif (defined(_WIN32)) -DWORD tsd_tsd; -tsd_wrapper_t tsd_boot_wrapper = {false, TSD_INITIALIZER}; +# if defined(JEMALLOC_LEGACY_WINDOWS_SUPPORT) || !defined(_MSC_VER) +DWORD tsd_tsd; +tsd_wrapper_t tsd_boot_wrapper = {TSD_INITIALIZER, false}; +# else +JEMALLOC_TSD_TYPE_ATTR(tsd_wrapper_t) +tsd_wrapper_tls = {TSD_INITIALIZER, false}; +# endif bool tsd_booted = false; +# if JEMALLOC_WIN32_TLSGETVALUE2 +TGV2 tls_get_value2 = NULL; +HMODULE tgv2_mod = NULL; +# endif #else /* @@ -37,17 +46,12 @@ struct tsd_init_head_s { malloc_mutex_t lock; }; -pthread_key_t tsd_tsd; -tsd_init_head_t tsd_init_head = { - ql_head_initializer(blocks), - MALLOC_MUTEX_INITIALIZER -}; +pthread_key_t tsd_tsd; +tsd_init_head_t tsd_init_head = { + ql_head_initializer(blocks), MALLOC_MUTEX_INITIALIZER}; -tsd_wrapper_t tsd_boot_wrapper = { - false, - TSD_INITIALIZER -}; -bool tsd_booted = false; +tsd_wrapper_t tsd_boot_wrapper = {false, TSD_INITIALIZER}; +bool tsd_booted = false; #endif JEMALLOC_DIAGNOSTIC_POP @@ -56,7 +60,7 @@ JEMALLOC_DIAGNOSTIC_POP /* A list of all the tsds in the nominal state. */ typedef ql_head(tsd_t) tsd_list_t; -static tsd_list_t tsd_nominal_tsds = ql_head_initializer(tsd_nominal_tsds); +static tsd_list_t tsd_nominal_tsds = ql_head_initializer(tsd_nominal_tsds); static malloc_mutex_t tsd_nominal_tsds_lock; /* How many slow-path-enabling features are turned on. */ @@ -65,13 +69,13 @@ static atomic_u32_t tsd_global_slow_count = ATOMIC_INIT(0); static bool tsd_in_nominal_list(tsd_t *tsd) { tsd_t *tsd_list; - bool found = false; + bool found = false; /* * We don't know that tsd is nominal; it might not be safe to get data * out of it here. */ malloc_mutex_lock(TSDN_NULL, &tsd_nominal_tsds_lock); - ql_foreach(tsd_list, &tsd_nominal_tsds, TSD_MANGLE(tsd_link)) { + ql_foreach (tsd_list, &tsd_nominal_tsds, TSD_MANGLE(tsd_link)) { if (tsd == tsd_list) { found = true; break; @@ -109,7 +113,7 @@ tsd_force_recompute(tsdn_t *tsdn) { atomic_fence(ATOMIC_RELEASE); malloc_mutex_lock(tsdn, &tsd_nominal_tsds_lock); tsd_t *remote_tsd; - ql_foreach(remote_tsd, &tsd_nominal_tsds, TSD_MANGLE(tsd_link)) { + ql_foreach (remote_tsd, &tsd_nominal_tsds, TSD_MANGLE(tsd_link)) { assert(tsd_atomic_load(&remote_tsd->state, ATOMIC_RELAXED) <= tsd_state_nominal_max); tsd_atomic_store(&remote_tsd->state, @@ -135,7 +139,8 @@ tsd_global_slow_inc(tsdn_t *tsdn) { tsd_force_recompute(tsdn); } -void tsd_global_slow_dec(tsdn_t *tsdn) { +void +tsd_global_slow_dec(tsdn_t *tsdn) { atomic_fetch_sub_u32(&tsd_global_slow_count, 1, ATOMIC_RELAXED); /* See the note in ..._inc(). */ tsd_force_recompute(tsdn); @@ -148,7 +153,7 @@ tsd_local_slow(tsd_t *tsd) { } bool -tsd_global_slow() { +tsd_global_slow(void) { return atomic_load_u32(&tsd_global_slow_count, ATOMIC_RELAXED) > 0; } @@ -172,8 +177,8 @@ tsd_slow_update(tsd_t *tsd) { uint8_t old_state; do { uint8_t new_state = tsd_state_compute(tsd); - old_state = tsd_atomic_exchange(&tsd->state, new_state, - ATOMIC_ACQUIRE); + old_state = tsd_atomic_exchange( + &tsd->state, new_state, ATOMIC_ACQUIRE); } while (old_state == tsd_state_nominal_recompute); te_recompute_fast_threshold(tsd); @@ -203,8 +208,8 @@ tsd_state_set(tsd_t *tsd, uint8_t new_state) { assert(tsd_in_nominal_list(tsd)); if (new_state > tsd_state_nominal_max) { tsd_remove_nominal(tsd); - tsd_atomic_store(&tsd->state, new_state, - ATOMIC_RELAXED); + tsd_atomic_store( + &tsd->state, new_state, ATOMIC_RELAXED); } else { /* * This is the tricky case. We're transitioning from @@ -227,8 +232,7 @@ tsd_prng_state_init(tsd_t *tsd) { * cost of test repeatability. For debug builds, instead use a * deterministic seed. */ - *tsd_prng_statep_get(tsd) = config_debug ? 0 : - (uint64_t)(uintptr_t)tsd; + *tsd_prng_statep_get(tsd) = config_debug ? 0 : (uint64_t)(uintptr_t)tsd; } static bool @@ -256,8 +260,8 @@ assert_tsd_data_cleanup_done(tsd_t *tsd) { static bool tsd_data_init_nocleanup(tsd_t *tsd) { - assert(tsd_state_get(tsd) == tsd_state_reincarnated || - tsd_state_get(tsd) == tsd_state_minimal_initialized); + assert(tsd_state_get(tsd) == tsd_state_reincarnated + || tsd_state_get(tsd) == tsd_state_minimal_initialized); /* * During reincarnation, there is no guarantee that the cleanup function * will be called (deallocation may happen after all tsd destructors). @@ -300,9 +304,25 @@ tsd_fetch_slow(tsd_t *tsd, bool minimal) { tsd_state_set(tsd, tsd_state_minimal_initialized); tsd_set(tsd); tsd_data_init_nocleanup(tsd); + *tsd_min_init_state_nfetchedp_get(tsd) = 1; } } else if (tsd_state_get(tsd) == tsd_state_minimal_initialized) { - if (!minimal) { + /* + * If a thread only ever deallocates (e.g. dedicated reclamation + * threads), we want to help it to eventually escape the slow + * path (caused by the minimal initialized state). The nfetched + * counter tracks the number of times the tsd has been accessed + * under the min init state, and triggers the switch to nominal + * once reached the max allowed count. + * + * This means at most 128 deallocations stay on the slow path. + * + * Also see comments in free_default(). + */ + uint8_t *nfetched = tsd_min_init_state_nfetchedp_get(tsd); + assert(*nfetched >= 1); + (*nfetched)++; + if (!minimal || *nfetched == TSD_MIN_INIT_STATE_MAX_FETCHED) { /* Switch to fully initialized. */ tsd_state_set(tsd, tsd_state_nominal); assert(*tsd_reentrancy_levelp_get(tsd) >= 1); @@ -334,15 +354,15 @@ malloc_tsd_dalloc(void *wrapper) { } #if defined(JEMALLOC_MALLOC_THREAD_CLEANUP) || defined(_WIN32) -static unsigned ncleanups; +static unsigned ncleanups; static malloc_tsd_cleanup_t cleanups[MALLOC_TSD_CLEANUPS_MAX]; -#ifndef _WIN32 +# ifndef _WIN32 JEMALLOC_EXPORT -#endif +# endif void _malloc_thread_cleanup(void) { - bool pending[MALLOC_TSD_CLEANUPS_MAX], again; + bool pending[MALLOC_TSD_CLEANUPS_MAX], again; unsigned i; for (i = 0; i < ncleanups; i++) { @@ -362,9 +382,9 @@ _malloc_thread_cleanup(void) { } while (again); } -#ifndef _WIN32 +# ifndef _WIN32 JEMALLOC_EXPORT -#endif +# endif void _malloc_tsd_cleanup_register(bool (*f)(void)) { assert(ncleanups < MALLOC_TSD_CLEANUPS_MAX); @@ -422,7 +442,7 @@ tsd_cleanup(void *arg) { } #ifdef JEMALLOC_JET test_callback_t test_callback = *tsd_test_callbackp_get_unsafe(tsd); - int *data = tsd_test_datap_get_unsafe(tsd); + int *data = tsd_test_datap_get_unsafe(tsd); if (test_callback != NULL) { test_callback(data); } @@ -437,7 +457,7 @@ malloc_tsd_boot0(void) { ncleanups = 0; #endif if (malloc_mutex_init(&tsd_nominal_tsds_lock, "tsd_nominal_tsds_lock", - WITNESS_RANK_OMIT, malloc_mutex_rank_exclusive)) { + WITNESS_RANK_OMIT, malloc_mutex_rank_exclusive)) { return NULL; } if (tsd_boot0()) { @@ -459,11 +479,11 @@ malloc_tsd_boot1(void) { static BOOL WINAPI _tls_callback(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { -#ifdef JEMALLOC_LAZY_LOCK +# ifdef JEMALLOC_LAZY_LOCK case DLL_THREAD_ATTACH: isthreaded = true; break; -#endif +# endif case DLL_THREAD_DETACH: _malloc_thread_cleanup(); break; @@ -478,36 +498,37 @@ _tls_callback(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { * hooked "read". We won't read for the rest of the file, so we can get away * with unhooking. */ -#ifdef read -# undef read -#endif - -#ifdef _MSC_VER -# ifdef _M_IX86 -# pragma comment(linker, "/INCLUDE:__tls_used") -# pragma comment(linker, "/INCLUDE:_tls_callback") -# else -# pragma comment(linker, "/INCLUDE:_tls_used") -# pragma comment(linker, "/INCLUDE:" STRINGIFY(tls_callback) ) -# endif -# pragma section(".CRT$XLY",long,read) -#endif -JEMALLOC_SECTION(".CRT$XLY") JEMALLOC_ATTR(used) -BOOL (WINAPI *const tls_callback)(HINSTANCE hinstDLL, - DWORD fdwReason, LPVOID lpvReserved) = _tls_callback; +# ifdef read +# undef read +# endif + +# ifdef _MSC_VER +# ifdef _M_IX86 +# pragma comment(linker, "/INCLUDE:__tls_used") +# pragma comment(linker, "/INCLUDE:_tls_callback") +# else +# pragma comment(linker, "/INCLUDE:_tls_used") +# pragma comment( \ + linker, "/INCLUDE:" STRINGIFY(tls_callback)) +# endif +# pragma section(".CRT$XLY", long, read) +# endif +JEMALLOC_SECTION(".CRT$XLY") +JEMALLOC_ATTR(used) BOOL(WINAPI *const tls_callback)( + HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) = _tls_callback; #endif -#if (!defined(JEMALLOC_MALLOC_THREAD_CLEANUP) && !defined(JEMALLOC_TLS) && \ - !defined(_WIN32)) +#if (!defined(JEMALLOC_MALLOC_THREAD_CLEANUP) && !defined(JEMALLOC_TLS) \ + && !defined(_WIN32)) void * tsd_init_check_recursion(tsd_init_head_t *head, tsd_init_block_t *block) { - pthread_t self = pthread_self(); + pthread_t self = pthread_self(); tsd_init_block_t *iter; /* Check whether this thread has already inserted into the list. */ malloc_mutex_lock(TSDN_NULL, &head->lock); - ql_foreach(iter, &head->blocks, link) { - if (iter->thread == self) { + ql_foreach (iter, &head->blocks, link) { + if (pthread_equal(iter->thread, self)) { malloc_mutex_unlock(TSDN_NULL, &head->lock); return iter->data; } diff --git a/dep/jemalloc/src/util.c b/dep/jemalloc/src/util.c new file mode 100644 index 0000000000000..1bcf4fee43184 --- /dev/null +++ b/dep/jemalloc/src/util.c @@ -0,0 +1,48 @@ +#include "jemalloc/internal/jemalloc_preamble.h" +#include "jemalloc/internal/jemalloc_internal_includes.h" + +#include "jemalloc/internal/util.h" + +/* Reads the next size pair in a multi-sized option. */ +bool +multi_setting_parse_next(const char **setting_segment_cur, size_t *len_left, + size_t *key_start, size_t *key_end, size_t *value) { + const char *cur = *setting_segment_cur; + char *end; + uintmax_t um; + + set_errno(0); + + /* First number, then '-' */ + um = malloc_strtoumax(cur, &end, 0); + if (get_errno() != 0 || *end != '-') { + return true; + } + *key_start = (size_t)um; + cur = end + 1; + + /* Second number, then ':' */ + um = malloc_strtoumax(cur, &end, 0); + if (get_errno() != 0 || *end != ':') { + return true; + } + *key_end = (size_t)um; + cur = end + 1; + + /* Last number */ + um = malloc_strtoumax(cur, &end, 0); + if (get_errno() != 0) { + return true; + } + *value = (size_t)um; + + /* Consume the separator if there is one. */ + if (*end == '|') { + end++; + } + + *len_left -= end - *setting_segment_cur; + *setting_segment_cur = end; + + return false; +} diff --git a/dep/jemalloc/src/witness.c b/dep/jemalloc/src/witness.c index 4474af04c8dcd..940b1eae8ce4b 100644 --- a/dep/jemalloc/src/witness.c +++ b/dep/jemalloc/src/witness.c @@ -26,8 +26,8 @@ witness_print_witness(witness_t *w, unsigned n) { static void witness_print_witnesses(const witness_list_t *witnesses) { witness_t *w, *last = NULL; - unsigned n = 0; - ql_foreach(w, witnesses, link) { + unsigned n = 0; + ql_foreach (w, witnesses, link) { if (last != NULL && w->rank > last->rank) { assert(w->name != last->name); witness_print_witness(last, n); @@ -45,8 +45,8 @@ witness_print_witnesses(const witness_list_t *witnesses) { } static void -witness_lock_error_impl(const witness_list_t *witnesses, - const witness_t *witness) { +witness_lock_error_impl( + const witness_list_t *witnesses, const witness_t *witness) { malloc_printf(": Lock rank order reversal:"); witness_print_witnesses(witnesses); malloc_printf(" %s(%u)\n", witness->name, witness->rank); @@ -56,8 +56,8 @@ witness_lock_error_t *JET_MUTABLE witness_lock_error = witness_lock_error_impl; static void witness_owner_error_impl(const witness_t *witness) { - malloc_printf(": Should own %s(%u)\n", witness->name, - witness->rank); + malloc_printf( + ": Should own %s(%u)\n", witness->name, witness->rank); abort(); } witness_owner_error_t *JET_MUTABLE witness_owner_error = @@ -76,7 +76,7 @@ static void witness_depth_error_impl(const witness_list_t *witnesses, witness_rank_t rank_inclusive, unsigned depth) { malloc_printf(": Should own %u lock%s of rank >= %u:", depth, - (depth != 1) ? "s" : "", rank_inclusive); + (depth != 1) ? "s" : "", rank_inclusive); witness_print_witnesses(witnesses); malloc_printf("\n"); abort(); diff --git a/dep/jemalloc/src/zone.c b/dep/jemalloc/src/zone.c index 23dfdd04a91d8..e09de4b89b367 100644 --- a/dep/jemalloc/src/zone.c +++ b/dep/jemalloc/src/zone.c @@ -4,7 +4,7 @@ #include "jemalloc/internal/assert.h" #ifndef JEMALLOC_ZONE -# error "This source file is for zones on Darwin (OS X)." +# error "This source file is for zones on Darwin (OS X)." #endif /* Definitions of the following structs in malloc/malloc.h might be too old @@ -22,10 +22,11 @@ typedef struct _malloc_zone_t { void *(*realloc)(struct _malloc_zone_t *, void *, size_t); void (*destroy)(struct _malloc_zone_t *); const char *zone_name; - unsigned (*batch_malloc)(struct _malloc_zone_t *, size_t, void **, unsigned); + unsigned (*batch_malloc)( + struct _malloc_zone_t *, size_t, void **, unsigned); void (*batch_free)(struct _malloc_zone_t *, void **, unsigned); struct malloc_introspection_t *introspect; - unsigned version; + unsigned version; void *(*memalign)(struct _malloc_zone_t *, size_t, size_t); void (*free_definite_size)(struct _malloc_zone_t *, void *, size_t); size_t (*pressure_relief)(struct _malloc_zone_t *, size_t); @@ -33,22 +34,24 @@ typedef struct _malloc_zone_t { typedef struct { vm_address_t address; - vm_size_t size; + vm_size_t size; } vm_range_t; typedef struct malloc_statistics_t { unsigned blocks_in_use; - size_t size_in_use; - size_t max_size_in_use; - size_t size_allocated; + size_t size_in_use; + size_t max_size_in_use; + size_t size_allocated; } malloc_statistics_t; typedef kern_return_t memory_reader_t(task_t, vm_address_t, vm_size_t, void **); -typedef void vm_range_recorder_t(task_t, void *, unsigned type, vm_range_t *, unsigned); +typedef void vm_range_recorder_t( + task_t, void *, unsigned type, vm_range_t *, unsigned); typedef struct malloc_introspection_t { - kern_return_t (*enumerator)(task_t, void *, unsigned, vm_address_t, memory_reader_t, vm_range_recorder_t); + kern_return_t (*enumerator)(task_t, void *, unsigned, vm_address_t, + memory_reader_t, vm_range_recorder_t); size_t (*good_size)(malloc_zone_t *, size_t); boolean_t (*check)(malloc_zone_t *); void (*print)(malloc_zone_t *, boolean_t); @@ -61,14 +64,16 @@ typedef struct malloc_introspection_t { boolean_t (*disable_discharge_checking)(malloc_zone_t *); void (*discharge)(malloc_zone_t *, void *); #ifdef __BLOCKS__ - void (*enumerate_discharged_pointers)(malloc_zone_t *, void (^)(void *, void *)); + void (*enumerate_discharged_pointers)( + malloc_zone_t *, void (^)(void *, void *)); #else void *enumerate_unavailable_without_blocks; #endif void (*reinit_lock)(malloc_zone_t *); } malloc_introspection_t; -extern kern_return_t malloc_get_all_zones(task_t, memory_reader_t, vm_address_t **, unsigned *); +extern kern_return_t malloc_get_all_zones( + task_t, memory_reader_t, vm_address_t **, unsigned *); extern malloc_zone_t *malloc_default_zone(void); @@ -81,48 +86,46 @@ extern void malloc_zone_unregister(malloc_zone_t *zone); * We need to check whether it is present at runtime, thus the weak_import. */ extern malloc_zone_t *malloc_default_purgeable_zone(void) -JEMALLOC_ATTR(weak_import); + JEMALLOC_ATTR(weak_import); /******************************************************************************/ /* Data. */ -static malloc_zone_t *default_zone, *purgeable_zone; -static malloc_zone_t jemalloc_zone; +static malloc_zone_t *default_zone, *purgeable_zone; +static malloc_zone_t jemalloc_zone; static struct malloc_introspection_t jemalloc_zone_introspect; -static pid_t zone_force_lock_pid = -1; +static pid_t zone_force_lock_pid = -1; /******************************************************************************/ /* Function prototypes for non-inline static functions. */ -static size_t zone_size(malloc_zone_t *zone, const void *ptr); -static void *zone_malloc(malloc_zone_t *zone, size_t size); -static void *zone_calloc(malloc_zone_t *zone, size_t num, size_t size); -static void *zone_valloc(malloc_zone_t *zone, size_t size); -static void zone_free(malloc_zone_t *zone, void *ptr); -static void *zone_realloc(malloc_zone_t *zone, void *ptr, size_t size); -static void *zone_memalign(malloc_zone_t *zone, size_t alignment, - size_t size); -static void zone_free_definite_size(malloc_zone_t *zone, void *ptr, - size_t size); -static void zone_destroy(malloc_zone_t *zone); -static unsigned zone_batch_malloc(struct _malloc_zone_t *zone, size_t size, +static size_t zone_size(malloc_zone_t *zone, const void *ptr); +static void *zone_malloc(malloc_zone_t *zone, size_t size); +static void *zone_calloc(malloc_zone_t *zone, size_t num, size_t size); +static void *zone_valloc(malloc_zone_t *zone, size_t size); +static void zone_free(malloc_zone_t *zone, void *ptr); +static void *zone_realloc(malloc_zone_t *zone, void *ptr, size_t size); +static void *zone_memalign(malloc_zone_t *zone, size_t alignment, size_t size); +static void zone_free_definite_size( + malloc_zone_t *zone, void *ptr, size_t size); +static void zone_destroy(malloc_zone_t *zone); +static unsigned zone_batch_malloc(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); -static void zone_batch_free(struct _malloc_zone_t *zone, - void **to_be_freed, unsigned num_to_be_freed); -static size_t zone_pressure_relief(struct _malloc_zone_t *zone, size_t goal); -static size_t zone_good_size(malloc_zone_t *zone, size_t size); -static kern_return_t zone_enumerator(task_t task, void *data, unsigned type_mask, - vm_address_t zone_address, memory_reader_t reader, +static void zone_batch_free( + struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); +static size_t zone_pressure_relief(struct _malloc_zone_t *zone, size_t goal); +static size_t zone_good_size(malloc_zone_t *zone, size_t size); +static kern_return_t zone_enumerator(task_t task, void *data, + unsigned type_mask, vm_address_t zone_address, memory_reader_t reader, vm_range_recorder_t recorder); -static boolean_t zone_check(malloc_zone_t *zone); -static void zone_print(malloc_zone_t *zone, boolean_t verbose); -static void zone_log(malloc_zone_t *zone, void *address); -static void zone_force_lock(malloc_zone_t *zone); -static void zone_force_unlock(malloc_zone_t *zone); -static void zone_statistics(malloc_zone_t *zone, - malloc_statistics_t *stats); -static boolean_t zone_locked(malloc_zone_t *zone); -static void zone_reinit_lock(malloc_zone_t *zone); +static boolean_t zone_check(malloc_zone_t *zone); +static void zone_print(malloc_zone_t *zone, boolean_t verbose); +static void zone_log(malloc_zone_t *zone, void *address); +static void zone_force_lock(malloc_zone_t *zone); +static void zone_force_unlock(malloc_zone_t *zone); +static void zone_statistics(malloc_zone_t *zone, malloc_statistics_t *stats); +static boolean_t zone_locked(malloc_zone_t *zone); +static void zone_reinit_lock(malloc_zone_t *zone); /******************************************************************************/ /* @@ -225,8 +228,8 @@ zone_batch_malloc(struct _malloc_zone_t *zone, size_t size, void **results, } static void -zone_batch_free(struct _malloc_zone_t *zone, void **to_be_freed, - unsigned num_to_be_freed) { +zone_batch_free( + struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed) { unsigned i; for (i = 0; i < num_to_be_freed; i++) { @@ -261,12 +264,10 @@ zone_check(malloc_zone_t *zone) { } static void -zone_print(malloc_zone_t *zone, boolean_t verbose) { -} +zone_print(malloc_zone_t *zone, boolean_t verbose) {} static void -zone_log(malloc_zone_t *zone, void *address) { -} +zone_log(malloc_zone_t *zone, void *address) {} static void zone_force_lock(malloc_zone_t *zone) { @@ -369,7 +370,7 @@ zone_init(void) { static malloc_zone_t * zone_default_get(void) { malloc_zone_t **zones = NULL; - unsigned int num_zones = 0; + unsigned int num_zones = 0; /* * On OSX 10.12, malloc_default_zone returns a special zone that is not @@ -380,8 +381,9 @@ zone_default_get(void) { * zone is the default. So get the list of zones to get the first one, * instead of relying on malloc_default_zone. */ - if (KERN_SUCCESS != malloc_get_all_zones(0, NULL, - (vm_address_t**)&zones, &num_zones)) { + if (KERN_SUCCESS + != malloc_get_all_zones( + 0, NULL, (vm_address_t **)&zones, &num_zones)) { /* * Reset the value in case the failure happened after it was * set. @@ -441,8 +443,8 @@ zone_register(void) { * register jemalloc's. */ default_zone = zone_default_get(); - if (!default_zone->zone_name || strcmp(default_zone->zone_name, - "DefaultMallocZone") != 0) { + if (!default_zone->zone_name + || strcmp(default_zone->zone_name, "DefaultMallocZone") != 0) { return; } @@ -457,8 +459,9 @@ zone_register(void) { * to check for the existence of malloc_default_purgeable_zone() at * run time. */ - purgeable_zone = (malloc_default_purgeable_zone == NULL) ? NULL : - malloc_default_purgeable_zone(); + purgeable_zone = (malloc_default_purgeable_zone == NULL) + ? NULL + : malloc_default_purgeable_zone(); /* Register the custom zone. At this point it won't be the default. */ zone_init(); From 534388aab7f32abdf8957809d0b8f4df7cd353d6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 2 May 2026 13:06:15 +0200 Subject: [PATCH 121/175] DB/Creatures: Add vendor data for 12.0.5 void assault npcs Maren Silverwing Triam Dawnsetter Rae'ana Sergeant Vornin --- .../world/master/2026_05_02_00_world.sql | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 sql/updates/world/master/2026_05_02_00_world.sql diff --git a/sql/updates/world/master/2026_05_02_00_world.sql b/sql/updates/world/master/2026_05_02_00_world.sql new file mode 100644 index 0000000000000..3e1cef43c9e31 --- /dev/null +++ b/sql/updates/world/master/2026_05_02_00_world.sql @@ -0,0 +1,91 @@ +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321,`StaticFlags1`=0x10000060,`VerifiedBuild`=67186 WHERE `Entry`=255473 AND `DifficultyID`=0; -- 255473 (Maren Silverwing) - ImmuneToPc, ImmuneToNpc, CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321,`StaticFlags1`=0x10000060,`VerifiedBuild`=67186 WHERE `Entry`=255476 AND `DifficultyID`=0; -- 255476 (Triam Dawnsetter) - ImmuneToPc, ImmuneToNpc, CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3313,`StaticFlags1`=0x10000060,`VerifiedBuild`=67186 WHERE `Entry`=255495 AND `DifficultyID`=0; -- 255495 (Rae'ana) - ImmuneToPc, ImmuneToNpc, CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321,`StaticFlags1`=0x10000020,`VerifiedBuild`=67186 WHERE `Entry`=255503 AND `DifficultyID`=0; -- 255503 (Sergeant Vornin) - ImmuneToPc, CanSwim +UPDATE `creature_template` SET `faction`=3526,`npcflag`=129,`BaseAttackTime`=2000,`unit_flags`=0x300,`unit_flags2`=0x800 WHERE `entry`=255473; -- Maren Silverwing +UPDATE `creature_template` SET `faction`=3526,`npcflag`=129,`BaseAttackTime`=2000,`unit_flags`=0x300,`unit_flags2`=0x800 WHERE `entry`=255476; -- Triam Dawnsetter +UPDATE `creature_template` SET `faction`=3270,`npcflag`=131,`BaseAttackTime`=2000,`unit_flags`=0x300,`unit_flags2`=0x800 WHERE `entry`=255495; -- Rae'ana +UPDATE `creature_template` SET `faction`=3524,`npcflag`=129,`BaseAttackTime`=2000,`unit_flags`=0x100,`unit_flags2`=0x800 WHERE `entry`=255503; -- Sergeant Vornin + +DELETE FROM `creature_template_addon` WHERE `entry` IN (255473,255476,255495,255503); +INSERT INTO `creature_template_addon` (`entry`,`PathId`,`mount`,`StandState`,`AnimTier`,`VisFlags`,`SheathState`,`PvpFlags`,`emote`,`aiAnimKit`,`movementAnimKit`,`meleeAnimKit`,`visibilityDistanceType`,`auras`) VALUES +(255473,0,0,0,0,0,0,0,0,0,0,0,0,'421177 421175'), -- Maren Silverwing - Disable ALL Mounts, Disable ALL Mounts +(255476,0,0,0,0,0,0,0,0,0,0,0,0,'421177 421175'), -- Triam Dawnsetter - Disable ALL Mounts, Disable ALL Mounts +(255495,0,0,0,0,0,1,0,0,0,0,0,0,''), -- Rae'ana +(255503,0,0,0,0,0,1,0,0,0,0,0,0,''); -- Sergeant Vornin + +DELETE FROM `creature_template_gossip` WHERE `CreatureID` IN (255473,255476,255495,255503); +INSERT INTO `creature_template_gossip` (`CreatureID`,`MenuID`,`VerifiedBuild`) VALUES +(255473,42907,67186), -- Maren Silverwing +(255476,42101,67186), -- Triam Dawnsetter +(255495,42103,67186), -- Rae'ana +(255503,42114,67186); -- Sergeant Vornin + +DELETE FROM `npc_vendor` WHERE `entry` IN (255473,255476,255495,255503); +INSERT INTO `npc_vendor` (`entry`,`slot`,`item`,`maxcount`,`ExtendedCost`,`type`,`PlayerConditionID`,`IgnoreFiltering`,`VerifiedBuild`) VALUES +(255473, 1,263928,0,11138,1, 0,0,67186), -- Cache of Void-Touched Armaments +(255473, 2,263929,0,11139,1, 0,0,67186), -- Cache of Void-Touched Armaments +(255473, 3,268996,0,11400,1, 0,0,67186), -- Field Accolade Pouch +(255476, 1,264323,0,11267,1,154160,0,67314), -- Cache of Void-Touched Weapons +(255476, 2,264314,0,11266,1,154156,0,67314), -- Cache of Void-Touched Headgear +(255476, 3,264315,0,11266,1,154158,0,67314), -- Cache of Void-Touched Shoulderwear +(255476, 4,264316,0,11266,1,154153,0,67314), -- Cache of Void-Touched Cloaks +(255476, 5,264317,0,11266,1,154152,0,67314), -- Cache of Void-Touched Chestpieces +(255476, 6,264318,0,11266,1,154159,0,67314), -- Cache of Void-Touched Bracers +(255476, 7,264319,0,11266,1,154155,0,67314), -- Cache of Void-Touched Gloves +(255476, 8,264320,0,11266,1,154151,0,67314), -- Cache of Void-Touched Belts +(255476, 9,264321,0,11266,1,154157,0,67314), -- Cache of Void-Touched Legwear +(255476,10,264322,0,11266,1,154154,0,67314), -- Cache of Void-Touched Boots +(255495, 1,273159,0,11542,1,153041,0,67186), -- Void Elf Scribe's Desk +(255495, 2,273135,0,11525,1,153041,0,67186), -- Void Elf Floating Desk +(255495, 3,273142,0,11525,1,153041,0,67186), -- Runic Parchment +(255495, 4,273157,0,11525,1,153041,0,67186), -- Void Flame Candle +(255495, 5,273147,0,11525,1,153041,0,67186), -- Void Inkwell +(255495, 6,271158,0,11268,1,153045,0,67186), -- Dark Obelisk +(255503, 1,264348,0,11269,1,149652,0,67186), -- Unbound Manawyrm +(255503, 2,268578,0,11519,1,153046,0,67186), -- Void-Touched Hawkstrider +(255503, 3,270331,0,11520,1,153044,0,67186), -- Void-Infused Mindbreaker Fry +(255503, 4,270330,0,11520,1,153044,0,67186), -- Void-Touched Dragonhawk Egg +(255503, 5,270989,0,11521,1,154481,0,67186); -- Cappy + +SET @NPCTEXTID := 610020; +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+8; +INSERT INTO `npc_text` (`ID`,`Probability0`,`Probability1`,`Probability2`,`Probability3`,`Probability4`,`Probability5`,`Probability6`,`Probability7`,`BroadcastTextId0`,`BroadcastTextId1`,`BroadcastTextId2`,`BroadcastTextId3`,`BroadcastTextId4`,`BroadcastTextId5`,`BroadcastTextId6`,`BroadcastTextId7`,`VerifiedBuild`) VALUES +(@NPCTEXTID+0,1,0,0,0,0,0,0,0,307720,0,0,0,0,0,0,0,67186), -- Triam Dawnsetter +(@NPCTEXTID+1,1,0,0,0,0,0,0,0,307718,0,0,0,0,0,0,0,67186), -- Triam Dawnsetter +(@NPCTEXTID+2,1,0,0,0,0,0,0,0,307724,0,0,0,0,0,0,0,67186), -- Rae'ana +(@NPCTEXTID+3,1,0,0,0,0,0,0,0,307722,0,0,0,0,0,0,0,67186), -- Rae'ana +(@NPCTEXTID+4,1,0,0,0,0,0,0,0,307743,0,0,0,0,0,0,0,67186), -- Sergeant Vornin +(@NPCTEXTID+5,1,0,0,0,0,0,0,0,307740,0,0,0,0,0,0,0,67186), -- Sergeant Vornin +(@NPCTEXTID+6,1,0,0,0,0,0,0,0,312807,0,0,0,0,0,0,0,67186), -- Maren Silverwing +(@NPCTEXTID+7,1,0,0,0,0,0,0,0,312805,0,0,0,0,0,0,0,67186), -- Maren Silverwing +(@NPCTEXTID+8,1,0,0,0,0,0,0,0,312813,0,0,0,0,0,0,0,67186); -- Maren Silverwing + +DELETE FROM `gossip_menu` WHERE `MenuID` IN (42100,42101,42102,42103,42113,42114,42906,42907,42909); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(42100,@NPCTEXTID+0,67186), -- Triam Dawnsetter +(42101,@NPCTEXTID+1,67186), -- Triam Dawnsetter +(42102,@NPCTEXTID+2,67186), -- Rae'ana +(42103,@NPCTEXTID+3,67186), -- Rae'ana +(42113,@NPCTEXTID+4,67186), -- Sergeant Vornin +(42114,@NPCTEXTID+5,67186), -- Sergeant Vornin +(42906,@NPCTEXTID+6,67186), -- Maren Silverwing +(42907,@NPCTEXTID+7,67186), -- Maren Silverwing +(42909,@NPCTEXTID+8,67186); -- Maren Silverwing + +DELETE FROM `gossip_menu_option` WHERE `MenuID` IN (42100,42101,42102,42103,42113,42114,42906,42907,42909); +INSERT INTO `gossip_menu_option` (`MenuID`,`GossipOptionID`,`OptionID`,`OptionNpc`,`OptionText`,`OptionBroadcastTextID`,`Language`,`Flags`,`ActionMenuID`,`ActionPoiID`,`GossipNpcOptionID`,`BoxCoded`,`BoxMoney`,`BoxText`,`BoxBroadcastTextID`,`SpellID`,`OverrideIconID`,`VerifiedBuild`) VALUES +(42100,139799,0,0,'I want to talk about something else.',0,0,0,42101,0,NULL,0,0,NULL,0,NULL,NULL,67314), +(42101,138131,0,0,'What did you find?',0,0,0,42100,0,NULL,0,0,NULL,0,NULL,NULL,67314), +(42101,138965,1,1,'What gear slots are available?',0,0,0,0,0,NULL,0,0,NULL,0,NULL,NULL,67314), +(42102,139803,0,0,'I want to talk about something else.',0,0,0,42103,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42103,138132,0,0,'What is your role in the Ranger Captain''s task force?',0,0,0,42102,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42103,138355,1,1,'Can I see the relics you have found and deemed safe?',0,0,0,0,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42113,139802,0,0,'I want to talk about something else.',0,0,0,42114,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42114,138139,0,0,'Oh, just curious what your part is in the task force?',0,0,0,42113,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42114,138966,1,1,'Do you have any mounts or pets available now?',0,0,0,0,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42906,139798,0,0,'I want to talk about something else.',0,0,0,42907,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42907,139420,0,1,'I''d like to exchange Field Accolades for gear.',0,0,0,0,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42907,139421,1,0,'What did you discover recently?',0,0,0,42906,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42907,139423,2,0,'Is Mayven your sister?',0,0,0,42909,0,NULL,0,0,NULL,0,NULL,NULL,67186), +(42909,139424,0,0,'I want to talk about something else.',0,0,0,42907,0,NULL,0,0,NULL,0,NULL,NULL,67186); From e80b57068cbfe5ce7043d216a3eeba5131413318 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 2 May 2026 22:05:12 +0200 Subject: [PATCH 122/175] Core/DataStores: Add id to assertion message in DB2Storage::AssertEntry --- src/server/shared/DataStores/DB2Store.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/server/shared/DataStores/DB2Store.h b/src/server/shared/DataStores/DB2Store.h index 362155552b2bc..3f8448e1114b3 100644 --- a/src/server/shared/DataStores/DB2Store.h +++ b/src/server/shared/DataStores/DB2Store.h @@ -70,18 +70,21 @@ class TC_SHARED_API DB2StorageBase friend class UnitTestDataLoader; }; -template +template requires (std::is_standard_layout_v && std::is_trivially_copyable_v) class DB2Storage : public DB2StorageBase { - static_assert(std::is_standard_layout_v, "T in DB2Storage must have standard layout."); - public: using iterator = DBStorageIterator; using DB2StorageBase::DB2StorageBase; T const* LookupEntry(uint32 id) const { return (id >= _indexTableSize) ? nullptr : reinterpret_cast(_indexTable[id]); } - T const* AssertEntry(uint32 id) const { return ASSERT_NOTNULL(LookupEntry(id)); } + T const* AssertEntry(uint32 id) const + { + T const* record = LookupEntry(id); + ASSERT(record != nullptr, "LookupEntry(%u)", id); + return record; + } iterator begin() const { return iterator(reinterpret_cast(_indexTable), _indexTableSize, _minId); } iterator end() const { return iterator(reinterpret_cast(_indexTable), _indexTableSize, _indexTableSize); } From 5fb80408e83b7e959d6b8716697d335de80b5039 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 3 May 2026 11:09:56 +0200 Subject: [PATCH 123/175] Core/DataStores: Skip MapDifficulty rows that don't point to a valid map id and remove asserts on Difficulty.db2 checks (0 is a valid difficulty for a map and it doesn't have data in that file) --- src/server/game/DataStores/DB2Stores.cpp | 11 ++++++++++- src/server/game/DataStores/DB2Stores.h | 1 + src/server/game/DataStores/DB2Structure.h | 1 + src/server/game/Entities/Player/Player.cpp | 4 ++-- src/server/game/Instances/InstanceLockMgr.cpp | 12 ++++++------ src/server/game/Instances/InstanceScriptData.cpp | 2 +- src/server/game/Instances/InstanceScriptData.h | 2 +- src/server/game/Maps/MapManager.cpp | 2 +- src/server/scripts/Commands/cs_instance.cpp | 6 +++--- 9 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index 2c5f9163ba147..ae3022285a42a 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -1376,7 +1376,8 @@ void DB2Manager::IndexLoadedStores() _journalTiersByIndex.push_back(journalTier); for (MapDifficultyEntry const* entry : sMapDifficultyStore) - _mapDifficulties[entry->MapID][entry->DifficultyID] = entry; + if (sMapStore.HasRecord(entry->MapID)) + _mapDifficulties[entry->MapID][entry->DifficultyID] = entry; std::vector mapDifficultyConditions; mapDifficultyConditions.reserve(sMapDifficultyXConditionStore.GetNumRows()); @@ -2427,6 +2428,14 @@ float DB2Manager::GetCurveValueAt(CurveInterpolationMode mode, std::spanName[sWorld->GetDefaultDbcLocale()]; + + return "None"sv; +} + EmotesTextSoundEntry const* DB2Manager::GetTextSoundEmoteFor(uint32 emote, uint8 race, uint8 gender, uint8 class_) const { if (EmotesTextSoundEntry const* emotesTextSound = Trinity::Containers::MapGetValuePtr(_emoteTextSounds, { emote, race, gender, class_ })) diff --git a/src/server/game/DataStores/DB2Stores.h b/src/server/game/DataStores/DB2Stores.h index 69a42edfa14c1..8301f1534b212 100644 --- a/src/server/game/DataStores/DB2Stores.h +++ b/src/server/game/DataStores/DB2Stores.h @@ -492,6 +492,7 @@ class TC_GAME_API DB2Manager std::pair GetCurveXAxisRange(uint32 curveId) const; float GetCurveValueAt(uint32 curveId, float x) const; float GetCurveValueAt(CurveInterpolationMode mode, std::span points, float x) const; + static std::string_view GetDifficultyName(Difficulty difficulty); EmotesTextSoundEntry const* GetTextSoundEmoteFor(uint32 emote, uint8 race, uint8 gender, uint8 class_) const; float EvaluateExpectedStat(ExpectedStatType stat, uint32 level, int32 expansion, uint32 contentTuningId, Classes unitClass, int32 mythicPlusMilestoneSeason) const; std::vector const* GetFactionTeamList(uint32 faction) const; diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 989a595e8188a..2db0fe53abcd5 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -3021,6 +3021,7 @@ struct MapDifficultyEntry int32 WorldStateExpressionID; uint32 MapID; + Difficulty GetDifficultyID() const { return static_cast(DifficultyID); } bool HasResetSchedule() const { return ResetInterval != MAP_DIFFICULTY_RESET_ANYTIME; } bool IsUsingEncounterLocks() const { return GetFlags().HasFlag(MapDifficultyFlags::UseLootBasedLockInsteadOfInstanceLock); } bool IsRestoringDungeonState() const { return GetFlags().HasFlag(MapDifficultyFlags::ResumeDungeonProgressBasedOnLockout); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 41ca64766fed6..331f9e80f4a24 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -25156,8 +25156,8 @@ void Player::SendInitialPacketsAfterAddToMap() if (GetMap()->IsRaid()) { Difficulty mapDifficulty = GetMap()->GetDifficultyID(); - DifficultyEntry const* difficulty = sDifficultyStore.AssertEntry(mapDifficulty); - SendRaidDifficulty((difficulty->Flags & DIFFICULTY_FLAG_LEGACY) != 0, mapDifficulty); + DifficultyEntry const* difficulty = sDifficultyStore.LookupEntry(mapDifficulty); + SendRaidDifficulty(difficulty && (difficulty->Flags & DIFFICULTY_FLAG_LEGACY) != 0, mapDifficulty); } else if (GetMap()->IsNonRaidDungeon()) SendDungeonDifficulty(GetMap()->GetDifficultyID()); diff --git a/src/server/game/Instances/InstanceLockMgr.cpp b/src/server/game/Instances/InstanceLockMgr.cpp index 98398d3989cda..494647b1070b2 100644 --- a/src/server/game/Instances/InstanceLockMgr.cpp +++ b/src/server/game/Instances/InstanceLockMgr.cpp @@ -269,7 +269,7 @@ InstanceLock* InstanceLockMgr::CreateInstanceLockForNewInstance(ObjectGuid const _temporaryInstanceLocksByPlayer[playerGuid][entries.GetKey()].reset(instanceLock); TC_LOG_DEBUG("instance.locks", "[{}-{} | {}-{}] Created new temporary instance lock for {} in instance {}", entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), playerGuid.ToString(), instanceId); return instanceLock; } @@ -300,7 +300,7 @@ InstanceLock* InstanceLockMgr::UpdateInstanceLockForPlayer(CharacterDatabaseTran TC_LOG_DEBUG("instance.locks", "[{}-{} | {}-{}] Promoting temporary lock to permanent for {} in instance {}", entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), playerGuid.ToString(), updateEvent.InstanceId); } } @@ -330,7 +330,7 @@ InstanceLock* InstanceLockMgr::UpdateInstanceLockForPlayer(CharacterDatabaseTran TC_LOG_DEBUG("instance.locks", "[{}-{} | {}-{}] Created new instance lock for {} in instance {}", entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), playerGuid.ToString(), updateEvent.InstanceId); } else @@ -353,7 +353,7 @@ InstanceLock* InstanceLockMgr::UpdateInstanceLockForPlayer(CharacterDatabaseTran instanceLock->GetData()->CompletedEncountersMask |= 1u << updateEvent.CompletedEncounter->Bit; TC_LOG_DEBUG("instance.locks", "[{}-{} | {}-{}] Instance lock for {} in instance {} gains completed encounter [{}-{}]", entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), playerGuid.ToString(), updateEvent.InstanceId, updateEvent.CompletedEncounter->ID, updateEvent.CompletedEncounter->Name[sWorld->GetDefaultDbcLocale()]); } @@ -371,7 +371,7 @@ InstanceLock* InstanceLockMgr::UpdateInstanceLockForPlayer(CharacterDatabaseTran instanceLock->SetExtended(false); TC_LOG_DEBUG("instance.locks", "[{}-{} | {}-{}] Expired instance lock for {} in instance {} is now active", entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), playerGuid.ToString(), updateEvent.InstanceId); } @@ -465,7 +465,7 @@ std::pair InstanceLockMgr::Updat TC_LOG_DEBUG("instance.locks", "[{}-{} | {}-{}] Instance lock for {} is {} extended", entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), playerGuid.ToString(), extended ? "now" : "no longer"); return { oldExpiryTime, instanceLock->GetEffectiveExpiryTime() }; diff --git a/src/server/game/Instances/InstanceScriptData.cpp b/src/server/game/Instances/InstanceScriptData.cpp index a1845026bb119..e638f4e9f41d0 100644 --- a/src/server/game/Instances/InstanceScriptData.cpp +++ b/src/server/game/Instances/InstanceScriptData.cpp @@ -184,7 +184,7 @@ uint32 InstanceScriptDataReader::GetInstanceId() const { return _instance.instan uint32 InstanceScriptDataReader::GetMapId() const { return _instance.instance->GetId(); } char const* InstanceScriptDataReader::GetMapName() const { return _instance.instance->GetMapName(); } uint32 InstanceScriptDataReader::GetDifficultyId() const { return uint32(_instance.instance->GetDifficultyID()); } -char const* InstanceScriptDataReader::GetDifficultyName() const { return sDifficultyStore.AssertEntry(_instance.instance->GetDifficultyID())->Name[sWorld->GetDefaultDbcLocale()]; } +std::string_view InstanceScriptDataReader::GetDifficultyName() const { return DB2Manager::GetDifficultyName(_instance.instance->GetDifficultyID()); } std::string InstanceScriptDataWriter::GetString() { diff --git a/src/server/game/Instances/InstanceScriptData.h b/src/server/game/Instances/InstanceScriptData.h index c489123d6252d..3b2c06a9d6733 100644 --- a/src/server/game/Instances/InstanceScriptData.h +++ b/src/server/game/Instances/InstanceScriptData.h @@ -60,7 +60,7 @@ class InstanceScriptDataReader uint32 GetMapId() const; char const* GetMapName() const; uint32 GetDifficultyId() const; - char const* GetDifficultyName() const; + std::string_view GetDifficultyName() const; InstanceScript& _instance; rapidjson::Document _doc; diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp index e5cca6b376493..7e2670af093ec 100644 --- a/src/server/game/Maps/MapManager.cpp +++ b/src/server/game/Maps/MapManager.cpp @@ -103,7 +103,7 @@ InstanceMap* MapManager::CreateInstance(uint32 mapId, uint32 instanceId, Instanc sDB2Manager.GetDownscaledMapDifficultyData(mapId, difficulty); TC_LOG_DEBUG("maps", "MapInstanced::CreateInstance: {}map instance {} for {} created with difficulty {}", - instanceLock && instanceLock->IsNew() ? "" : "new ", instanceId, mapId, sDifficultyStore.AssertEntry(difficulty)->Name[sWorld->GetDefaultDbcLocale()]); + instanceLock && instanceLock->IsNew() ? "" : "new ", instanceId, mapId, DB2Manager::GetDifficultyName(difficulty)); InstanceMap* map = new InstanceMap(mapId, i_gridCleanUpDelay, instanceId, difficulty, team, instanceLock, lfgDungeonsId); ASSERT(map->IsDungeon()); diff --git a/src/server/scripts/Commands/cs_instance.cpp b/src/server/scripts/Commands/cs_instance.cpp index 4d9dbce012216..34219f3b4bc8f 100644 --- a/src/server/scripts/Commands/cs_instance.cpp +++ b/src/server/scripts/Commands/cs_instance.cpp @@ -79,7 +79,7 @@ class instance_commandscript : public CommandScript std::string timeleft = !instanceLock->IsExpired() ? secsToTimeString(std::chrono::duration_cast(instanceLock->GetEffectiveExpiryTime() - now).count()) : "-"; handler->PSendSysMessage(LANG_COMMAND_LIST_BIND_INFO, entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), instanceLock->GetInstanceId(), handler->GetTrinityString(instanceLock->IsExpired() ? LANG_YES : LANG_NO), handler->GetTrinityString(instanceLock->IsExtended() ? LANG_YES : LANG_NO), @@ -117,7 +117,7 @@ class instance_commandscript : public CommandScript std::string timeleft = !instanceLock->IsExpired() ? secsToTimeString(std::chrono::duration_cast(instanceLock->GetEffectiveExpiryTime() - now).count()) : "-"; handler->PSendSysMessage(LANG_COMMAND_INST_UNBIND_UNBINDING, entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), instanceLock->GetInstanceId(), handler->GetTrinityString(instanceLock->IsExpired() ? LANG_YES : LANG_NO), handler->GetTrinityString(instanceLock->IsExtended() ? LANG_YES : LANG_NO), @@ -132,7 +132,7 @@ class instance_commandscript : public CommandScript std::string timeleft = !instanceLock->IsExpired() ? secsToTimeString(std::chrono::duration_cast(instanceLock->GetEffectiveExpiryTime() - now).count()) : "-"; handler->PSendSysMessage(LANG_COMMAND_INST_UNBIND_FAILED, entries.Map->ID, entries.Map->MapName[sWorld->GetDefaultDbcLocale()], - uint32(entries.MapDifficulty->DifficultyID), sDifficultyStore.AssertEntry(entries.MapDifficulty->DifficultyID)->Name[sWorld->GetDefaultDbcLocale()], + uint32(entries.MapDifficulty->DifficultyID), DB2Manager::GetDifficultyName(entries.MapDifficulty->GetDifficultyID()), instanceLock->GetInstanceId(), handler->GetTrinityString(instanceLock->IsExpired() ? LANG_YES : LANG_NO), handler->GetTrinityString(instanceLock->IsExtended() ? LANG_YES : LANG_NO), From a308782909ec188ed43fb7d66da86a7433804bc1 Mon Sep 17 00:00:00 2001 From: ModoX Date: Sun, 3 May 2026 17:48:12 +0200 Subject: [PATCH 124/175] Core/Units: Do not remove feign death flags when IMMUNE_TO_PC/NPC is inherited from template --- src/server/game/Globals/ObjectMgr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index e5bc58b3e47cf..f27842a09fd2d 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2349,7 +2349,7 @@ void ObjectMgr::LoadCreatures() *data.unit_flags2 &= UNIT_FLAG2_ALLOWED; } - if (*data.unit_flags2 & UNIT_FLAG2_FEIGN_DEATH && (!data.unit_flags.has_value() || !(*data.unit_flags & (UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC)))) + if (*data.unit_flags2 & UNIT_FLAG2_FEIGN_DEATH && (!data.unit_flags.has_value() || !(*data.unit_flags & (UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC))) && !(cInfo->unit_flags & (UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC))) { TC_LOG_ERROR("sql.sql", "Table `creature` has creature (GUID: {} Entry: {}) has UNIT_FLAG2_FEIGN_DEATH set without IMMUNE_TO_PC | IMMUNE_TO_NPC, removing incorrect flag.", guid, data.id); *data.unit_flags2 &= ~UNIT_FLAG2_FEIGN_DEATH; @@ -2364,7 +2364,7 @@ void ObjectMgr::LoadCreatures() *data.unit_flags3 &= UNIT_FLAG3_ALLOWED; } - if (*data.unit_flags3 & UNIT_FLAG3_FAKE_DEAD && (!data.unit_flags.has_value() || !(*data.unit_flags & (UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC)))) + if (*data.unit_flags3 & UNIT_FLAG3_FAKE_DEAD && (!data.unit_flags.has_value() || !(*data.unit_flags & (UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC))) && !(cInfo->unit_flags & (UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC))) { TC_LOG_ERROR("sql.sql", "Table `creature` has creature (GUID: {} Entry: {}) has UNIT_FLAG3_FAKE_DEAD set without IMMUNE_TO_PC | IMMUNE_TO_NPC, removing incorrect flag.", guid, data.id); *data.unit_flags3 &= ~UNIT_FLAG3_FAKE_DEAD; From 7567653a033743da66db9ed678d3052ae4816c62 Mon Sep 17 00:00:00 2001 From: Naddley Date: Sun, 3 May 2026 17:52:54 +0200 Subject: [PATCH 125/175] DB/Harandar: Added conversation after teleport to harandar (Quest: The Root Cause) - added some createobject2 spawns --- .../world/master/2026_05_03_00_world.sql | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 sql/updates/world/master/2026_05_03_00_world.sql diff --git a/sql/updates/world/master/2026_05_03_00_world.sql b/sql/updates/world/master/2026_05_03_00_world.sql new file mode 100644 index 0000000000000..855e7ec984ab1 --- /dev/null +++ b/sql/updates/world/master/2026_05_03_00_world.sql @@ -0,0 +1,196 @@ +SET @CGUID := 11000792; + +SET @NPCTEXTID := 610029; + +SET @ATID := 187; +SET @ATIDSPAWN := 288; +SET @ATCP := 178; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+15; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 237480, 2694, 15355, 15922, '0', 26037, 0, 0, 1, -177.72222900390625, -2148.786376953125, 1176.921142578125, 3.802503108978271484, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Orweyna (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +(@CGUID+1, 237341, 2694, 15355, 15922, '0', 26039, 0, 0, 1, -174.458328247070312, -2152.739501953125, 1177.080810546875, 1.108461976051330566, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Halduron Brightwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +(@CGUID+2, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -155.763885498046875, -2126.873291015625, 1184.8408203125, 0.901937007904052734, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+3, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -107.319442749023437, -2157.84375, 1176.3629150390625, 3.034853219985961914, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+4, 237204, 2694, 15355, 15922, '0', 0, 0, 0, 0, -119.512153625488281, -2170.916748046875, 1179.9871826171875, 0.94222259521484375, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Surly Potatoad (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+5, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -134.28472900390625, -2106.890625, 1180.8634033203125, 1.17809605598449707, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+6, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -153.375, -2121.9775390625, 1189.88037109375, 4.399270534515380859, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+7, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -109.328132629394531, -2134.5625, 1182.59912109375, 0, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+8, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -117.163192749023437, -2073.91845703125, 1157.8670654296875, 1.026018142700195312, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+9, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -104.163192749023437, -2080.5869140625, 1161.4210205078125, 3.034853219985961914, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+10, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -139.59722900390625, -2096.232666015625, 1161.884033203125, 2.760121345520019531, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+11, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -114.772567749023437, -2063.661376953125, 1173.1083984375, 1.267651915550231933, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+12, 237204, 2694, 15355, 15922, '0', 0, 0, 0, 0, -174.090286254882812, -2091.911376953125, 1160.0732421875, 0.206134051084518432, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Surly Potatoad (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+13, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -118.251739501953125, -2063.2587890625, 1174.060791015625, 1.277216315269470214, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+14, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -122.279518127441406, -2062.4150390625, 1171.206787109375, 4.144488334655761718, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+15, 246467, 2694, 15355, 15922, '0', 0, 0, 0, 0, -111.338539123535156, -2157.3994140625, 1176.3831787109375, 4.677419662475585937, 120, 0, 0, 0, NULL, NULL, 0x4000800 | 0x00000001, 0xC1000000 | 0x00002000, 67314); -- Potatoad (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+15; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+2, 0, 0, 0, 0, 0, 1, 0, 713, 0, 0, 0, 0, ''), -- Glimmering Petalwing +(@CGUID+3, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Agitated Thorntalon +(@CGUID+6, 0, 0, 0, 0, 0, 1, 0, 713, 0, 0, 0, 0, ''), -- Glimmering Petalwing +(@CGUID+7, 0, 0, 0, 0, 0, 1, 0, 713, 0, 0, 0, 0, ''), -- Glimmering Petalwing +(@CGUID+11, 0, 0, 0, 0, 0, 1, 0, 713, 0, 0, 0, 0, ''), -- Glimmering Petalwing +(@CGUID+13, 0, 0, 0, 0, 0, 1, 0, 713, 0, 0, 0, 0, ''), -- Glimmering Petalwing +(@CGUID+14, 0, 0, 0, 0, 0, 1, 0, 713, 0, 0, 0, 0, ''), -- Glimmering Petalwing +(@CGUID+15, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''); -- Potatoad + +-- Serverside Areatrigger +DELETE FROM `areatrigger_template` WHERE `Id`=@ATID+0 AND `IsCustom`=1; +INSERT INTO `areatrigger_template` (`Id`, `IsCustom`, `Flags`, `VerifiedBuild`) VALUES +(@ATID+0, 1, 1, 0); + +DELETE FROM `areatrigger` WHERE `SpawnId` = @ATIDSPAWN+0; +INSERT INTO `areatrigger` (`SpawnId`, `AreaTriggerCreatePropertiesId`, `IsCustom`, `MapId`, `SpawnDifficulties`, `PosX`, `PosY`, `PosZ`, `Orientation`, `PhaseUseFlags`, `PhaseId`, `PhaseGroup`, `ScriptName`, `Comment`, `VerifiedBuild`) VALUES +(@ATIDSPAWN+0, @ATCP+0, 1, 2694, '0', -177.563126, -2150.783691, 1176.984863, 0.398269, 0, 26037, 0, 'SmartAreaTriggerAI', 'Harandar - Trigger Conversation 28825 for Orweyna/Halduron', 0); + +DELETE FROM `areatrigger_create_properties` WHERE `Id`=@ATCP+0 AND `IsCustom`=1; +INSERT INTO `areatrigger_create_properties` (`Id`, `IsCustom`, `AreaTriggerId`, `IsAreatriggerCustom`, `Flags`, `MoveCurveId`, `ScaleCurveId`, `MorphCurveId`, `FacingCurveId`, `AnimId`, `AnimKitId`, `DecalPropertiesId`, `SpellForVisuals`, `TimeToTargetScale`, `Shape`, `ShapeData0`, `ShapeData1`, `ShapeData2`, `ShapeData3`, `ShapeData4`, `ShapeData5`, `ShapeData6`, `ShapeData7`, `ScriptName`, `VerifiedBuild`) VALUES +(@ATCP+0, 1, @ATID+0, 1, 0, 0, 0, 0, 0, -1, 0, 0, NULL, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, '', 0); + +-- Template Addon +DELETE FROM `creature_template_addon` WHERE `entry` = 237341; +INSERT INTO `creature_template_addon` (`entry`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(237341, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, ''); -- 237341 (Halduron Brightwing) + +-- Template +UPDATE `creature_template` SET `faction`=35, `npcflag`=1, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x800 WHERE `entry`=237341; -- Halduron Brightwing +UPDATE `creature_template` SET `faction`=35, `npcflag`=3, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=237480; -- Orweyna +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=253252; -- Spore-Covered Firefly +UPDATE `creature_template` SET `faction`=190, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=253251; -- Lashroom Bud +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=245958; -- Underroot Hatchling +UPDATE `creature_template` SET `faction`=14, `speed_run`=1.269841432571411132, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x4000000 WHERE `entry`=237204; -- Surly Potatoad +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=249690; -- Root-darting Firefly +UPDATE `creature_template` SET `faction`=190, `speed_walk`=1.60000002384185791, `BaseAttackTime`=2000, `unit_flags`=0x40, `unit_flags2`=0x800 WHERE `entry`=248649; -- Fungal Strider +UPDATE `creature_template` SET `faction`=14, `speed_run`=1.269841432571411132, `BaseAttackTime`=2000, `unit_flags`=0x2000340, `unit_flags2`=0x4000800, `unit_flags3`=0xC1000000 WHERE `entry`=246467; -- Potatoad +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=256534; -- Spore-dusted Moth +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x4000000 WHERE `entry`=237201; -- Agitated Thorntalon +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=253254; -- Underbrush Crawler +UPDATE `creature_template` SET `faction`=190, `BaseAttackTime`=2000, `unit_flags2`=0x800, `unit_flags3`=0x4000000 WHERE `entry`=253881; -- Glimmering Petalwing +UPDATE `creature_template` SET `faction`=190, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags2`=0x800 WHERE `entry`=251982; -- Plodding Potadling + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3321, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=237480 AND `DifficultyID`=0); -- 237480 (Orweyna) - CanSwim +UPDATE `creature_template_difficulty` SET `LevelScalingDeltaMin`=1, `LevelScalingDeltaMax`=1, `ContentTuningID`=3313, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=237341 AND `DifficultyID`=0); -- 237341 (Halduron Brightwing) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=253252 AND `DifficultyID`=0); -- 253252 (Spore-Covered Firefly) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=253251 AND `DifficultyID`=0); -- 253251 (Lashroom Bud) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=245958 AND `DifficultyID`=0); -- 245958 (Underroot Hatchling) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=237204 AND `DifficultyID`=0); -- 237204 (Surly Potatoad) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x30000000, `VerifiedBuild`=67314 WHERE (`Entry`=249690 AND `DifficultyID`=0); -- 249690 (Root-darting Firefly) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3313, `VerifiedBuild`=67314 WHERE (`Entry`=248649 AND `DifficultyID`=0); -- 248649 (Fungal Strider) - +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x30000000, `VerifiedBuild`=67314 WHERE (`Entry`=256534 AND `DifficultyID`=0); -- 256534 (Spore-dusted Moth) - CanSwim, Floating +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=237201 AND `DifficultyID`=0); -- 237201 (Agitated Thorntalon) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=253254 AND `DifficultyID`=0); -- 253254 (Underbrush Crawler) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=253881 AND `DifficultyID`=0); -- 253881 (Glimmering Petalwing) - CanSwim +UPDATE `creature_template_difficulty` SET `ContentTuningID`=81, `StaticFlags1`=0x10000000, `VerifiedBuild`=67314 WHERE (`Entry`=251982 AND `DifficultyID`=0); -- 251982 (Plodding Potadling) - CanSwim + +-- Difficulty override +DELETE FROM `creature_static_flags_override` WHERE `SpawnId` = (@CGUID+5); +INSERT INTO `creature_static_flags_override` (`SpawnId`, `DifficultyId`, `StaticFlags1`, `StaticFlags2`, `StaticFlags3`, `StaticFlags4`, `StaticFlags5`, `StaticFlags6`, `StaticFlags7`, `StaticFlags8`) VALUES +((@CGUID+5), 0, 0x30000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- Phase +DELETE FROM `phase_name` WHERE `ID` IN (26037,26039); +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(26037, 'Cosmetic - See Orweyna near the Cave at Amirdrassil Roots'), +(26039, 'Cosmetic - See Halduron near the Cave at Amirdrassil Roots'); + +DELETE FROM `phase_area` WHERE `PhaseId` IN (26037,26039); +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(15355, 26037, 'See Orweyna near the cave at Amirdrassil Roots'), +(15355, 26039, 'See Halduron near the cave at Amirdrassil Roots'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` IN (26037,26039) AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 26037, 0, 0, 0, 47, 0, 86899, 2|64, 0, 0, 'Apply Phase 26037 if Quest 86899 is complete|rewarded'), +(26, 26037, 0, 0, 0, 47, 0, 86900, 2|8|64, 0, 1, 'Apply Phase 26037 if Quest 86900 is not complete|in progress|rewarded'), +(26, 26039, 0, 0, 0, 47, 0, 86899, 2|64, 0, 0, 'Apply Phase 26039 if Quest 86899 is complete|rewarded'), +(26, 26039, 0, 0, 0, 47, 0, 86900, 2|8|64, 0, 1, 'Apply Phase 26039 if Quest 86900 is not complete|in progress|rewarded'); + +-- Conversation +DELETE FROM `conversation_template` WHERE `Id`=28825; +INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES +(28825, 81685, 0, 67314); + +DELETE FROM `conversation_actors` WHERE (`ConversationId`=28825 AND `Idx` IN (0,1)); +INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `ConversationActorGuid`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES +(28825, 105998, (@CGUID+0), 0, 0, 0, 0, 0, 67314), -- Full: 0x20423150C0E7EA00002B560000767BFE Creature/0 R4236/S11094 Map: 2694 (Harandar) Entry: 237480 (Orweyna) Low: 7764990 +(28825, 106178, (@CGUID+1), 1, 0, 0, 0, 0, 67314); -- Full: 0x20423150C0E7C740002B560000767C04 Creature/0 R4236/S11094 Map: 2694 (Harandar) Entry: 237341 (Halduron Brightwing) Low: 7764996 + +DELETE FROM `conversation_line_template` WHERE `Id` IN (79613, 81660, 81685); +INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES +(79613, 0, 0, 0, 0, 67314), +(81660, 0, 1, 0, 0, 67314), +(81685, 0, 0, 0, 0, 67314); + +-- Quest +DELETE FROM `quest_details` WHERE `ID`=86900; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(86900, 1, 0, 0, 0, 0, 0, 0, 0, 67314); -- To Har'athir + +DELETE FROM `creature_queststarter` WHERE (`id`=237480 AND `quest`=86900); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(237480, 86900, 67314); -- To Har'athir offered by Orweyna + +DELETE FROM `quest_template_addon` WHERE `ID` = 86900; +INSERT INTO `quest_template_addon` (`ID`, `MaxLevel`, `AllowableClasses`, `SourceSpellID`, `PrevQuestID`, `NextQuestID`, `ExclusiveGroup`, `BreadcrumbForQuestId`, `RewardMailTemplateID`, `RewardMailDelay`, `RequiredSkillID`, `RequiredSkillPoints`, `RequiredMinRepFaction`, `RequiredMaxRepFaction`, `RequiredMinRepValue`, `RequiredMaxRepValue`, `ProvidedItemCount`, `SpecialFlags`, `ScriptName`) VALUES +(86900, 0, 0, 0, 86899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ''); + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=237480 AND `MenuID`=39211) OR (`CreatureID`=237341 AND `MenuID`=38720); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(237480, 39211, 67314), -- Orweyna +(237341, 38720, 67314); -- Halduron Brightwing + +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+2; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 286956, 0, 0, 0, 0, 0, 0, 0, 67314), -- 237341 (Halduron Brightwing) +(@NPCTEXTID+1, 1, 0, 0, 0, 0, 0, 0, 0, 289846, 0, 0, 0, 0, 0, 0, 0, 67314), -- 237480 (Orweyna) +(@NPCTEXTID+2, 1, 0, 0, 0, 0, 0, 0, 0, 289845, 0, 0, 0, 0, 0, 0, 0, 67314); -- 237480 (Orweyna) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=38720 AND `TextID`=@NPCTEXTID+0) OR (`MenuID`=39210 AND `TextID`=@NPCTEXTID+1) OR (`MenuID`=39211 AND `TextID`=@NPCTEXTID+2); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(38720, @NPCTEXTID+0, 67314), -- 237341 (Halduron Brightwing) +(39210, @NPCTEXTID+1, 67314), -- 237480 (Orweyna) +(39211, @NPCTEXTID+2, 67314); -- 237480 (Orweyna) + +DELETE FROM `gossip_menu_option` WHERE (`OptionID`=0 AND `MenuID` IN (39211,39210)); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(39211, 133757, 0, 0, 'Will your people welcome you?', 0, 0, 0, 39210, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 67314), +(39210, 138580, 0, 0, 'I would like to ask something else.', 0, 0, 0, 39211, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 67314); + +-- Serverside Areatrigger SAI +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ATID+0 AND `source_type`=12 AND `id`=0 AND `link`=1; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `Difficulties`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param_string`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `action_param_string`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_param_string`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(@ATID+0, 12, 0, 1, '', 46, 0, 100, 0, 0, 0, 0, 0, 0, '', 143, 28825, 0, 0, 0, 0, 0, 0, NULL, 7, 0, 0, 0, 0, NULL, 0, 0, 0, 0, 'On AreaTrigger enter - play Conversation to Invoker'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=28 AND `SourceGroup`=@ATID+0 AND `SourceEntry`=1; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(28, @ATID+0, 1, 0, 0, 47, 0, 86899, 2|64, 0, '', 0, 0, 0, '', 'Only trigger areatrigger when quest 86899 is complete|rewarded'), +(28, @ATID+0, 1, 0, 0, 47, 0, 86900, 2|8|64, 0, '', 1, 0, 0, '', 'Only trigger areatrigger when quest 86900 is not complete|in progress|rewarded'); + +-- Path for Glimmering Petalwing +SET @MOVERGUID := @CGUID+5; +SET @ENTRY := 253881; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 9.1776, 'Glimmering Petalwing - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -128.42686, -2092.7485, 1180.8634, NULL, 0), +(@PATH, 1, -114.28473, -2086.8906, 1180.8634, NULL, 0), +(@PATH, 2, -100.14259, -2092.7485, 1180.8634, NULL, 0), +(@PATH, 3, -94.28473, -2106.8906, 1180.8634, NULL, 0), +(@PATH, 4, -100.14259, -2121.0327, 1180.8634, NULL, 0), +(@PATH, 5, -114.28473, -2126.8906, 1180.8634, NULL, 0), +(@PATH, 6, -128.42686, -2121.0327, 1180.8634, NULL, 0), +(@PATH, 7, -134.28473, -2106.8906, 1180.8634, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, ''); -- Glimmering Petalwing From 56b347ced2938ce0cb544463d90d4ab33859ce8d Mon Sep 17 00:00:00 2001 From: Naddley Date: Sun, 3 May 2026 20:18:34 +0200 Subject: [PATCH 126/175] DB/Harandar: Added some more spawns --- .../world/master/2026_05_03_01_world.sql | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 sql/updates/world/master/2026_05_03_01_world.sql diff --git a/sql/updates/world/master/2026_05_03_01_world.sql b/sql/updates/world/master/2026_05_03_01_world.sql new file mode 100644 index 0000000000000..4409c8b98943d --- /dev/null +++ b/sql/updates/world/master/2026_05_03_01_world.sql @@ -0,0 +1,175 @@ +SET @CGUID := 11000808; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+22; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -27.2621536254882812, -2171.12841796875, 1174.1876220703125, 5.686717987060546875, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+1, 249690, 2694, 15355, 15922, '0', 0, 0, 0, 0, -31.6458339691162109, -2152.125, 1181.4559326171875, 4.539616107940673828, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Root-darting Firefly (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) (possible waypoints or random movement) +(@CGUID+2, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -14.140625, -2139.923583984375, 1175.286865234375, 3.034853219985961914, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+3, 253251, 2694, 15355, 15922, '0', 0, 0, 0, 0, -63.1024322509765625, -2180.23779296875, 1176.5260009765625, 3.88161635398864746, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Lashroom Bud (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+4, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, 10.40277767181396484, -2108.3125, 1167.3509521484375, 3.034853219985961914, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+5, 253881, 2694, 15355, 15922, '0', 0, 0, 0, 0, -17.6944446563720703, -2113.826416015625, 1193.98193359375, 3.24378204345703125, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Glimmering Petalwing (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+6, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, 12.00173664093017578, -2009.28125, 1153.1044921875, 3.598376035690307617, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+7, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -19.0625, -2088.9619140625, 1167.46533203125, 0.211842939257621765, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+8, 237201, 2694, 15355, 15922, '0', 0, 0, 0, 0, -32.5434036254882812, -2175.65625, 1174.4580078125, 6.183427333831787109, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Agitated Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+9, 237204, 2694, 15355, 15922, '0', 0, 0, 0, 0, 3.012152910232543945, -2055.607666015625, 1161.37646484375, 4.408668041229248046, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Surly Potatoad (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+10, 249690, 2694, 15355, 15922, '0', 0, 0, 0, 0, -51.4861106872558593, -2105.15283203125, 1185.603515625, 1.620810747146606445, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Root-darting Firefly (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+11, 237204, 2694, 15355, 15922, '0', 0, 0, 0, 0, -44.7621536254882812, -2113.09033203125, 1171.0224609375, 3.767470598220825195, 120, 6, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Surly Potatoad (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+12, 241751, 2694, 15355, 15922, '0', 0, 0, 0, 0, -29.7378482818603515, -2181.140625, 1174.427978515625, 2.481104135513305664, 120, 0, 0, 0, NULL, NULL, 0x4000800 | 0x00000001, 0xC1000000 | 0x00002000, 67314), -- Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +(@CGUID+13, 241751, 2694, 15355, 15922, '0', 0, 0, 0, 0, -118.631942749023437, -2065.354248046875, 1154.4388427734375, 2.687990188598632812, 120, 0, 0, 0, NULL, NULL, 0x4000800 | 0x00000001, 0xC1000000 | 0x00002000, 67314), -- Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +(@CGUID+14, 246467, 2694, 15355, 15922, '0', 0, 0, 0, 0, 8.954861640930175781, -2107.892333984375, 1167.3173828125, 5.798959255218505859, 120, 0, 0, 0, NULL, NULL, 0x4000800 | 0x00000001, 0xC1000000 | 0x00002000, 67314), -- Potatoad (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +(@CGUID+15, 241751, 2694, 15355, 15922, '0', 0, 0, 0, 0, -19.1336803436279296, -2176.9375, 1175.447265625, 0, 120, 0, 0, 0, NULL, NULL, 0x4000800 | 0x00000001, 0xC1000000 | 0x00002000, 67314), -- Thorntalon (Area: Amirdrassil Roots - Difficulty: 0) CreateObject1 +(@CGUID+16, 251982, 2694, 15355, 15922, '0', 0, 0, 0, 0, -153.178817749023437, -2130.763916015625, 1175.458740234375, 5.437462806701660156, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Plodding Potadling (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+17, 249690, 2694, 15355, 15922, '0', 0, 0, 0, 0, -129.960067749023437, -2167.05908203125, 1189.1146240234375, 2.040605545043945312, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Root-darting Firefly (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 (Auras: ) +(@CGUID+18, 249690, 2694, 15355, 15922, '0', 0, 0, 0, 0, -136.201385498046875, -2083.788330078125, 1178.3690185546875, 0.109118066728115081, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67314), -- Root-darting Firefly (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+19, 251982, 2694, 15355, 15922, '0', 0, 0, 0, 0, -189.723953247070312, -2081.671875, 1161.7314453125, 3.975203514099121093, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Plodding Potadling (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+20, 251982, 2694, 15355, 15922, '0', 0, 0, 0, 0, -182.461807250976562, -2093.96533203125, 1160.112548828125, 1.652510285377502441, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Plodding Potadling (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+21, 251982, 2694, 15355, 15922, '0', 0, 0, 0, 0, -179.072921752929687, -2097.192626953125, 1160.6962890625, 2.047296524047851562, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 67314), -- Plodding Potadling (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +(@CGUID+22, 256534, 2694, 15355, 15922, '0', 0, 0, 0, 0, -152.585067749023437, -2141.296875, 1209.685791015625, 0.789195179939270019, 120, 4, 0, 1, NULL, NULL, NULL, NULL, 67314); -- Spore-dusted Moth (Area: Amirdrassil Roots - Difficulty: 0) CreateObject2 +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+22; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@CGUID+2, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, ''), -- Agitated Thorntalon +(@CGUID+4, 0, 0, 0, 0, 0, 1, 0, 418, 0, 0, 0, 0, ''), -- Agitated Thorntalon +(@CGUID+8, 0, 0, 0, 0, 0, 1, 0, 27, 0, 0, 0, 0, ''), -- Agitated Thorntalon +(@CGUID+12, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Thorntalon +(@CGUID+13, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Thorntalon +(@CGUID+14, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Potatoad +(@CGUID+15, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, ''), -- Thorntalon +(@CGUID+22, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, ''); -- Spore-dusted Moth + +-- Template +UPDATE `creature_template` SET `faction`=14, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0xC1000000 WHERE `entry`=241751; -- Thorntalon + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x20000100, `StaticFlags5`=0x1, `VerifiedBuild`=67314 WHERE (`Entry`=241751 AND `DifficultyID`=0); -- 241751 (Thorntalon) - Sessile, Floating - UntargetableByClient +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3087, `StaticFlags1`=0x20000100, `StaticFlags5`=0x1, `VerifiedBuild`=67314 WHERE (`Entry`=246467 AND `DifficultyID`=0); -- 246467 (Potatoad) - Sessile, Floating - UntargetableByClient + +-- Difficulty override +DELETE FROM `creature_static_flags_override` WHERE `SpawnId` = (@CGUID+5); +INSERT INTO `creature_static_flags_override` (`SpawnId`, `DifficultyId`, `StaticFlags1`, `StaticFlags2`, `StaticFlags3`, `StaticFlags4`, `StaticFlags5`, `StaticFlags6`, `StaticFlags7`, `StaticFlags8`) VALUES +((@CGUID+5), 0, 0x30000000, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + +-- Path for Glimmering Petalwing +SET @MOVERGUID := @CGUID+5; +SET @ENTRY := 253881; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 2.8687, 'Glimmering Petalwing - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -32.92191, -2115.388, 1193.9819, NULL, 0), +(@PATH, 1, -44.79361, -2105.7249, 1193.9819, NULL, 0), +(@PATH, 2, -46.355247, -2090.4973, 1193.9819, NULL, 0), +(@PATH, 3, -36.692047, -2078.6257, 1193.9819, NULL, 0), +(@PATH, 4, -21.464573, -2077.064, 1193.9819, NULL, 0), +(@PATH, 5, -9.59288, -2086.7273, 1193.9819, NULL, 0), +(@PATH, 6, -8.031242, -2101.9548, 1193.9819, NULL, 0), +(@PATH, 7, -17.694447, -2113.8264, 1193.9819, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `mount`, `StandState`, `AnimTier`, `VisFlags`, `SheathState`, `PvpFlags`, `emote`, `aiAnimKit`, `movementAnimKit`, `meleeAnimKit`, `visibilityDistanceType`, `auras`) VALUES +(@MOVERGUID, @PATH, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, ''); -- Glimmering Petalwing + +-- Path for Root-darting Firefly +SET @MOVERGUID := @CGUID+10; +SET @ENTRY := 249690; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 2.8683, 'Root-darting Firefly - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -52.06006, -2093.6868, 1185.6035, NULL, 0), +(@PATH, 1, -44.358112, -2085.173, 1185.6035, NULL, 0), +(@PATH, 2, -32.89196, -2084.599, 1185.6035, NULL, 0), +(@PATH, 3, -24.37833, -2092.301, 1185.6035, NULL, 0), +(@PATH, 4, -23.804382, -2103.767, 1185.6035, NULL, 0), +(@PATH, 5, -31.506332, -2112.2808, 1185.6035, NULL, 0), +(@PATH, 6, -42.97248, -2112.8547, 1185.6035, NULL, 0), +(@PATH, 7, -51.486115, -2105.1528, 1185.6035, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 3, 1); + +-- Path for Root-darting Firefly +SET @MOVERGUID := @CGUID+1; +SET @ENTRY := 249690; +SET @PATHOFFSET := 1; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 2.8683, 'Root-darting Firefly - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -33.6195, -2163.4346, 1181.4559, NULL, 0), +(@PATH, 1, -43.01217, -2170.0361, 1181.4559, NULL, 0), +(@PATH, 2, -54.321747, -2168.0625, 1181.4559, NULL, 0), +(@PATH, 3, -60.92324, -2158.6697, 1181.4559, NULL, 0), +(@PATH, 4, -58.949577, -2147.36, 1181.4559, NULL, 0), +(@PATH, 5, -49.5569, -2140.7585, 1181.4559, NULL, 0), +(@PATH, 6, -38.247322, -2142.7324, 1181.4559, NULL, 0), +(@PATH, 7, -31.645834, -2152.125, 1181.4559, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 3, 1); + +-- Path for Root-darting Firefly +SET @MOVERGUID := @CGUID+17; +SET @ENTRY := 249690; +SET @PATHOFFSET := 2; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 2.8683, 'Root-darting Firefly - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -135.15744, -2156.8225, 1189.1146, NULL, 0), +(@PATH, 1, -131.59413, -2145.909, 1189.1146, NULL, 0), +(@PATH, 2, -121.35747, -2140.7114, 1189.1146, NULL, 0), +(@PATH, 3, -110.443954, -2144.275, 1189.1146, NULL, 0), +(@PATH, 4, -105.24658, -2154.5115, 1189.1146, NULL, 0), +(@PATH, 5, -108.8099, -2165.425, 1189.1146, NULL, 0), +(@PATH, 6, -119.046555, -2170.6223, 1189.1146, NULL, 0), +(@PATH, 7, -129.96007, -2167.059, 1189.1146, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 3, 1); + +-- Path for Root-darting Firefly +SET @MOVERGUID := @CGUID+18; +SET @ENTRY := 249690; +SET @PATHOFFSET := 3; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 0, 0x2, 2.8683, 'Root-darting Firefly - Cyclic Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, -124.78918, -2082.538, 1178.369, NULL, 0), +(@PATH, 1, -115.83541, -2089.7236, 1178.369, NULL, 0), +(@PATH, 2, -114.58509, -2101.1357, 1178.369, NULL, 0), +(@PATH, 3, -121.77063, -2110.0896, 1178.369, NULL, 0), +(@PATH, 4, -133.18285, -2111.3398, 1178.369, NULL, 0), +(@PATH, 5, -142.13661, -2104.1543, 1178.369, NULL, 0), +(@PATH, 6, -143.38693, -2092.7422, 1178.369, NULL, 0), +(@PATH, 7, -136.20139, -2083.7883, 1178.369, NULL, 0); + +UPDATE `creature` SET `wander_distance`=0, `MovementType`=2 WHERE `guid`=@MOVERGUID; +DELETE FROM `creature_addon` WHERE `guid`=@MOVERGUID; +INSERT INTO `creature_addon` (`guid`, `PathId`, `AnimTier`, `SheathState`) VALUES +(@MOVERGUID, @PATH, 3, 1); From cf3c136657ffc91353546e4e8b35028f711ae8c5 Mon Sep 17 00:00:00 2001 From: Naddley <64811442+Naddley@users.noreply.github.com> Date: Sun, 3 May 2026 21:56:18 +0200 Subject: [PATCH 127/175] Scripts/EversongWoods: Implement Quest "The Root Cause" (#31831) --- .../world/master/2026_05_03_02_world.sql | 277 ++++++++++++++++++ ...randar_chapter_1_of_craves_and_cradles.cpp | 120 ++++++++ .../QuelThalas/quel_thalas_script_loader.cpp | 6 + 3 files changed, 403 insertions(+) create mode 100644 sql/updates/world/master/2026_05_03_02_world.sql create mode 100644 src/server/scripts/QuelThalas/Harandar/harandar_chapter_1_of_craves_and_cradles.cpp diff --git a/sql/updates/world/master/2026_05_03_02_world.sql b/sql/updates/world/master/2026_05_03_02_world.sql new file mode 100644 index 0000000000000..c2b6bbc689f2b --- /dev/null +++ b/sql/updates/world/master/2026_05_03_02_world.sql @@ -0,0 +1,277 @@ +SET @CGUID := 11000831; +SET @NPCTEXTID := 610032; + +-- Creature +DELETE FROM `creature` WHERE `guid` = @CGUID+0; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 241042, 0, 15968, 15995, '0', 26249, 0, 0, 0, 7219.01123046875, -4106.63037109375, 104.9899826049804687, 4.802604198455810546, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 67186); -- Mysterious Rootway (Area: Fairbreeze Village - Difficulty: 0) CreateObject1 + +-- Template +UPDATE `creature_template` SET `faction`=35, `npcflag`=16777216, `speed_run`=1, `BaseAttackTime`=2000, `unit_flags`=0x300, `unit_flags2`=0x4000800, `unit_flags3`=0x41000001 WHERE `entry`=241042; -- Mysterious Rootway + +-- Difficulty +UPDATE `creature_template_difficulty` SET `ContentTuningID`=3313, `StaticFlags1`=0x0, `StaticFlags3`=0x2000000, `StaticFlags5`=0x1, `VerifiedBuild`=67314 WHERE (`Entry`=241042 AND `DifficultyID`=0); -- 241042 (Mysterious Rootway) - Sessile, Floating - CannotTurn - UntargetableByClient + +-- Conversation +DELETE FROM `conversation_template` WHERE `Id` = 28444; +INSERT INTO `conversation_template` (`Id`, `FirstLineID`, `TextureKitId`, `VerifiedBuild`) VALUES +(28444, 78289, 0, 67186); + +UPDATE `conversation_template` SET `ScriptName` = 'conversation_the_root_cause_open_portal' WHERE `Id` = 28444; + +DELETE FROM `conversation_actors` WHERE (`ConversationId`=28444 AND `Idx`=0); +INSERT INTO `conversation_actors` (`ConversationId`, `ConversationActorId`, `ConversationActorGuid`, `Idx`, `CreatureId`, `CreatureDisplayInfoId`, `NoActorObject`, `ActivePlayerObject`, `VerifiedBuild`) VALUES +(28444, 105442, 11000790, 0, 0, 0, 0, 0, 67186); -- Full: 0x2030780000E7280000F2950000705DD8 Creature/0 R3102/S62101 Map: 0 (Eastern Kingdoms) Entry: 236704 (Orweyna) Low: 7364056 + +DELETE FROM `conversation_line_template` WHERE `Id` IN (81180, 81179, 79342, 78289); +INSERT INTO `conversation_line_template` (`Id`, `UiCameraID`, `ActorIdx`, `Flags`, `ChatType`, `VerifiedBuild`) VALUES +(81180, 0, 1, 1, 0, 67186), +(81179, 0, 0, 1, 0, 67186), +(79342, 0, 0, 0, 0, 67186), +(78289, 0, 0, 0, 0, 67186); + +-- Phase +DELETE FROM `phase_name` WHERE `ID` = 26249; +INSERT INTO `phase_name` (`ID`, `Name`) VALUES +(26249, 'Cosmetic - See Mysterious Rootway at Fairbreeze Village'); + +DELETE FROM `phase_area` WHERE `PhaseId` = 26249; +INSERT INTO `phase_area` (`AreaId`, `PhaseId`, `Comment`) VALUES +(15995, 26249, 'See Mysterious Rootway at Fairbreeze Village'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 26248 AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 26248, 0, 0, 0, 47, 0, 89402, 2|8|64, 0, 0, 'Apply Phase 26248 if Quest 89402 is complete|in progress|rewarded'), +(26, 26248, 0, 0, 0, 47, 0, 86899, 2|64, 0, 1, 'Apply Phase 26248 if Quest 86899 is not complete|rewarded'), +(26, 26248, 0, 0, 0, 48, 0, 464543, 0, 1, 1, 'Apply Phase 26248 if Questobjective 464543 is not rewarded'); + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId`=26 AND `SourceGroup` = 26249 AND `SourceEntry` = 0); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `Comment`) VALUE +(26, 26249, 0, 0, 0, 47, 0, 86899, 2|64, 0, 0, 'Apply Phase 26249 if Quest 86899 is complete|rewarded'), +(26, 26249, 0, 0, 1, 47, 0, 86899, 8, 0, 0, 'Apply Phase 26249 if Quest 86899 is in progress'), +(26, 26249, 0, 0, 1, 48, 0, 464543, 0, 1, 0, 'Apply Phase 26249 if Questobjective 464543 is rewarded'); + +-- Quest +DELETE FROM `creature_queststarter` WHERE (`id`=236704 AND `quest`=86899); +INSERT INTO `creature_queststarter` (`id`, `quest`, `VerifiedBuild`) VALUES +(236704, 86899, 66838); -- The Root Cause offered by Orweyna + +DELETE FROM `quest_details` WHERE `ID`=86899; +INSERT INTO `quest_details` (`ID`, `Emote1`, `Emote2`, `Emote3`, `Emote4`, `EmoteDelay1`, `EmoteDelay2`, `EmoteDelay3`, `EmoteDelay4`, `VerifiedBuild`) VALUES +(86899, 1, 0, 0, 0, 0, 0, 0, 0, 66838); -- The Root Cause + +DELETE FROM `quest_poi` WHERE (`QuestID`=86899 AND `BlobIndex`=0 AND `Idx1`=4); +INSERT INTO `quest_poi` (`QuestID`, `BlobIndex`, `Idx1`, `ObjectiveIndex`, `QuestObjectiveID`, `QuestObjectID`, `MapID`, `UiMapID`, `Priority`, `Flags`, `WorldEffectID`, `PlayerConditionID`, `NavigationPlayerConditionID`, `SpawnTrackingID`, `AlwaysAllowMergingBlobs`, `VerifiedBuild`) VALUES +(86899, 0, 4, 32, 0, 0, 0, 2395, 0, 0, 0, 0, 0, 2768734, 0, 67186); -- The Root Cause + +UPDATE `quest_poi` SET `ObjectiveIndex`=2, `QuestObjectiveID`=459756, `QuestObjectID`=253687, `Flags`=2, `SpawnTrackingID`=0, `VerifiedBuild`=67186 WHERE (`QuestID`=86899 AND `BlobIndex`=0 AND `Idx1`=3); -- The Root Cause +UPDATE `quest_poi` SET `Flags`=2, `VerifiedBuild`=67186 WHERE (`QuestID`=86899 AND `BlobIndex`=0 AND `Idx1`=2); -- The Root Cause +UPDATE `quest_poi` SET `VerifiedBuild`=67186 WHERE (`QuestID`=86899 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=86899 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=93057 AND `BlobIndex`=1 AND `Idx1`=1) OR (`QuestID`=93057 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=94866 AND `BlobIndex`=1 AND `Idx1`=1) OR (`QuestID`=94866 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=92150 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=92150 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=50604 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=50604 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=53436 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=53436 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=50599 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=50601 AND `BlobIndex`=0 AND `Idx1`=0) OR (`QuestID`=48639 AND `BlobIndex`=0 AND `Idx1`=3) OR (`QuestID`=48639 AND `BlobIndex`=3 AND `Idx1`=2) OR (`QuestID`=48639 AND `BlobIndex`=2 AND `Idx1`=1) OR (`QuestID`=48639 AND `BlobIndex`=1 AND `Idx1`=0) OR (`QuestID`=42421 AND `BlobIndex`=0 AND `Idx1`=6) OR (`QuestID`=42421 AND `BlobIndex`=4 AND `Idx1`=5) OR (`QuestID`=42421 AND `BlobIndex`=3 AND `Idx1`=4) OR (`QuestID`=42421 AND `BlobIndex`=2 AND `Idx1`=3) OR (`QuestID`=42421 AND `BlobIndex`=1 AND `Idx1`=2) OR (`QuestID`=42421 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=42421 AND `BlobIndex`=1 AND `Idx1`=0) OR (`QuestID`=42420 AND `BlobIndex`=0 AND `Idx1`=1) OR (`QuestID`=42420 AND `BlobIndex`=0 AND `Idx1`=0); +DELETE FROM `quest_poi_points` WHERE (`QuestID`=86899 AND `Idx1`=4 AND `Idx2`=0); +INSERT INTO `quest_poi_points` (`QuestID`, `Idx1`, `Idx2`, `X`, `Y`, `Z`, `VerifiedBuild`) VALUES +(86899, 4, 0, 7307, -4130, 89, 67186); -- The Root Cause + +UPDATE `quest_poi_points` SET `X`=7221, `Y`=-4107, `Z`=0, `VerifiedBuild`=67186 WHERE (`QuestID`=86899 AND `Idx1`=3 AND `Idx2`=0); -- The Root Cause +UPDATE `quest_poi_points` SET `VerifiedBuild`=67186 WHERE (`QuestID`=86899 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=86899 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=86899 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=93057 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=93057 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=94866 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=94866 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=92150 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=10) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=9) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=8) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=7) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=6) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=5) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=4) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=3) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=2) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=1) OR (`QuestID`=92150 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=50604 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=50604 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=53436 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=53436 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=50599 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=50601 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=3 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=48639 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=6 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=5 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=4 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=3 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=2 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=42421 AND `Idx1`=0 AND `Idx2`=0) OR (`QuestID`=42420 AND `Idx1`=1 AND `Idx2`=0) OR (`QuestID`=42420 AND `Idx1`=0 AND `Idx2`=0); + +-- Gossip +DELETE FROM `creature_template_gossip` WHERE (`CreatureID`=236704 AND `MenuID`=40378); +INSERT INTO `creature_template_gossip` (`CreatureID`, `MenuID`, `VerifiedBuild`) VALUES +(236704, 40378, 66838); -- Orweyna + +DELETE FROM `npc_text` WHERE `ID` BETWEEN @NPCTEXTID+0 AND @NPCTEXTID+0; +INSERT INTO `npc_text` (`ID`, `Probability0`, `Probability1`, `Probability2`, `Probability3`, `Probability4`, `Probability5`, `Probability6`, `Probability7`, `BroadcastTextId0`, `BroadcastTextId1`, `BroadcastTextId2`, `BroadcastTextId3`, `BroadcastTextId4`, `BroadcastTextId5`, `BroadcastTextId6`, `BroadcastTextId7`, `VerifiedBuild`) VALUES +(@NPCTEXTID+0, 1, 0, 0, 0, 0, 0, 0, 0, 299238, 0, 0, 0, 0, 0, 0, 0, 66838); -- 236704 (Orweyna) + +DELETE FROM `gossip_menu` WHERE (`MenuID`=40378 AND `TextID`=@NPCTEXTID+0); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`, `VerifiedBuild`) VALUES +(40378, @NPCTEXTID+0, 66838); -- 236704 (Orweyna) + +DELETE FROM `gossip_menu_option` WHERE (`MenuID`=40378 AND `OptionID`=0); +INSERT INTO `gossip_menu_option` (`MenuID`, `GossipOptionID`, `OptionID`, `OptionNpc`, `OptionText`, `OptionBroadcastTextID`, `Language`, `Flags`, `ActionMenuID`, `ActionPoiID`, `GossipNpcOptionID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `SpellID`, `OverrideIconID`, `VerifiedBuild`) VALUES +(40378, 135559, 0, 0, 'I\'m ready. Let\'s go!', 45852, 0, 1, 0, 0, NULL, 0, 0, NULL, 0, NULL, NULL, 66838); -- OptionBroadcastTextID: 45852 - 47369 - 50940 - 111807 - 132063 + +DELETE FROM `conditions` WHERE (`SourceTypeOrReferenceId` = 15) AND (`SourceGroup` IN (40378)); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `Comment`) VALUES +(15, 40378, 0, 0, 0, 9, 0, 86899, 0, 0, '', 0, 'Player for which gossip text is shown has quest The Root Cause (86899) active'); + +-- Spelltarget pos. +DELETE FROM `spell_target_position` WHERE (`ID`=1226563 AND `EffectIndex`=0 AND `OrderIndex`=0); +INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `OrderIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `VerifiedBuild`) VALUES +(1226563, 0, 0, 2694, -180.490005493164062, -2153.219970703125, 1176.699951171875, 67314); -- Spell: 1226563 (Teleport) Effect 0: 15 (SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL) + +-- SpellClick +DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = 241042; +INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES +(241042, 1226563, 1, 0); + +-- Orweyna smart ai +SET @ENTRY := 236704; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 1, 62, 0, 100, 0, 40378, 0, 0, 0, 0, 33, 236704, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On gossip action 0 from menu 40378 selected - Gossip player: Give kill credit Orweyna (236704)', ''), +(@ENTRY, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 0, 143, 28444, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On gossip action 0 from menu 40378 selected - Gossip player: Start conversation (28444) Actors<> (first line 78289)', ''), +(@ENTRY, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On gossip action 0 from menu 40378 selected - Gossip player: Close gossip', ''), +(@ENTRY, 0, 3, 0, 34, 0, 100, 0, 2, 7, 0, 0, 0, 80, 23670400, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On movement of type WAYPOINT_MOTION_TYPE inform, point 7 - Self: Start timed action list id #Orweyna #0 (23670400) (update out of combat)', ''), +(@ENTRY, 0, 4, 0, 34, 0, 100, 0, 2, 8, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On movement of type WAYPOINT_MOTION_TYPE inform, point 8 - Self: Despawn instantly', ''); + +-- Halduron Brightwing smart ai +SET @ENTRY := 240715; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 0, 34, 0, 100, 0, 2, 10, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'On movement of type WAYPOINT_MOTION_TYPE inform, point 10 - Self: Despawn instantly', ''); + +-- Timed list 23670400 smart ai +SET @ENTRY := 23670400; +DELETE FROM `smart_scripts` WHERE `source_type` = 9 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 9, 0, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 0, 85, 1227327, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'After 2 seconds - Self: Cast spell 1227327 on self', ''), +(@ENTRY, 9, 1, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 0, 85, 82238, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 'After 3 seconds - Owner/Summoner: Cast spell 82238 on self', ''); + +-- Mysterious Rootway smart ai +SET @ENTRY := 241042; +UPDATE `creature_template` SET `AIName` = 'SmartAI', `ScriptName` = '' WHERE `entry` = @ENTRY; +DELETE FROM `smart_scripts` WHERE `source_type` = 0 AND `entryOrGuid` = @ENTRY; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `action_param7`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`, `Difficulties`) VALUES +(@ENTRY, 0, 0, 1, 73, 0, 100, 0, 0, 0, 0, 0, 0, 33, 253687, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On spellclick - Clicker: Give kill credit Kill Credit: Portal Taken (253687)', ''), +(@ENTRY, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 33, 241042, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'On spellclick - Clicker: Give kill credit Mysterious Rootway (241042)', ''); + +-- Path Orweyna +SET @ENTRY := 236704; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 1, 0x0, NULL, 'Orweyna - Scripted Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 7286.8853, -4147.608, 89.09489, NULL, 0), +(@PATH, 1, 7272.6475, -4143.533, 88.78289, NULL, 0), +(@PATH, 2, 7257.244, -4130.1147, 88.74363, NULL, 0), +(@PATH, 3, 7247.751, -4126.193, 93.06993, NULL, 0), +(@PATH, 4, 7235.901, -4124.1787, 97.01976, NULL, 0), +(@PATH, 5, 7228.421, -4123.6147, 98.5907, NULL, 0), +(@PATH, 6, 7223.507, -4117.3027, 102.05774, NULL, 0), +(@PATH, 7, 7220.033, -4107.6895, 105.14824, NULL, 7088), +(@PATH, 8, 7220.0835, -4104.0693, 106.351685, NULL, 0); + +-- Path Halduron +SET @ENTRY := 240715; +SET @PATHOFFSET := 0; +SET @PATH := @ENTRY * 100 + @PATHOFFSET; +DELETE FROM `waypoint_path` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path` (`PathId`, `MoveType`, `Flags`, `Velocity`, `Comment`) VALUES +(@PATH, 1, 0x0, NULL, 'Halduron Brightwing - Scripted Path'); + +DELETE FROM `waypoint_path_node` WHERE `PathId`= @PATH; +INSERT INTO `waypoint_path_node` (`PathId`, `NodeId`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`, `Delay`) VALUES +(@PATH, 0, 7288.2744, -4145.8315, 89.09489, NULL, 0), +(@PATH, 1, 7268.6416, -4141.3853, 87.11374, NULL, 0), +(@PATH, 2, 7263.4385, -4135.4443, 86.96283, NULL, 0), +(@PATH, 3, 7258.6953, -4130.4517, 88.48486, NULL, 0), +(@PATH, 4, 7252.2163, -4126.356, 91.45217, NULL, 0), +(@PATH, 5, 7243.7466, -4125.0034, 94.81014, NULL, 0), +(@PATH, 6, 7235.979, -4123.9946, 97.07729, NULL, 0), +(@PATH, 7, 7222.3403, -4121.033, 100.96966, NULL, 0), +(@PATH, 8, 7218.5723, -4116.618, 102.97466, NULL, 0), +(@PATH, 9, 7215.1895, -4109.369, 104.89932, NULL, 5251), +(@PATH, 10, 7220.5703, -4103.2153, 106.615486, NULL, 0); + +-- Gob Template +DELETE FROM `gameobject_template` WHERE `entry` IN (584262 /*Cushion*/, 626905 /*Cushion*/, 584261 /*Cushion*/, 584274 /*Chair*/, 573007 /*Chair*/, 584281 /*Bench*/, 584644 /*Chair*/, 573006 /*Chair*/, 627029 /*627029*/, 627044 /*627044*/, 584227 /*Chair*/, 584271 /*Chair*/, 582089 /*Bench*/, 573001 /*Chair*/, 584267 /*Chair*/, 573009 /*Chair*/, 584248 /*Cushion*/, 584226 /*Chair*/, 547520 /*Runestone*/, 626900 /*Cushion*/, 573008 /*Chair*/, 584648 /*Chair*/, 626898 /*Cushion*/, 570257 /*Umbric's Laboratory*/, 587067 /*Orb of Translocation*/, 584286 /*Bench*/, 573005 /*Chair*/, 573004 /*Chair*/, 584285 /*Bench*/, 584646 /*Chair*/, 584251 /*Cushion*/, 584645 /*Chair*/, 582090 /*Orb of Translocation*/, 584259 /*Bench*/, 584272 /*Chair*/, 526992 /*Orb of Translocation*/, 584247 /*Chair*/, 526989 /*Orb of Translocation*/, 573678 /*Cushion*/, 587068 /*Orb of Translocation*/, 584124 /*Bench*/, 573002 /*Chair*/, 526991 /*Orb of Translocation*/, 526990 /*Orb of Translocation*/, 560856 /*Runestone*/, 626819 /*Orb of Translocation*/, 587646 /*Orb of Translocation*/, 584283 /*Bench*/, 627045 /*627045*/, 626899 /*Cushion*/, 554869 /*Anvil*/, 639448 /*Orb of Translocation*/, 584284 /*Bench*/, 626903 /*Cushion*/, 584237 /*Cushion*/, 584126 /*Bench*/, 584268 /*Chair*/, 584249 /*Cushion*/, 555879 /*Orb of Translocation*/, 626901 /*Cushion*/, 621909 /*Mailbox*/, 526987 /*Orb of Translocation*/, 584282 /*Bench*/, 584125 /*Bench*/, 582091 /*Orb of Translocation*/, 584647 /*Chair*/, 584790 /*Orb of Translocation*/, 639447 /*Orb of Translocation*/, 584273 /*Chair*/, 554868 /*Forge*/, 584250 /*Cushion*/, 584269 /*Chair*/, 573000 /*Chair*/, 526988 /*Orb of Translocation*/, 494914 /*Orb of Translocation*/, 584228 /*Chair*/, 626902 /*Cushion*/, 626820 /*Orb of Translocation*/, 573003 /*Chair*/, 572494 /*Dropped Sword*/, 527211 /*Hiding Spot*/, 578273 /*Delivery Crate*/, 619649 /*Vista Point*/, 619648 /*Vista Point*/, 544167 /*Grappling Hook Rope*/, 527187 /*Hiding Bush*/, 617534 /*Gilded Armillary Sphere*/, 537181 /*Lightbloom Plant*/, 544171 /*Grappling Hook Rope*/, 619621 /*Vista Point*/, 529610 /*Lightbloom Feather*/, 520359 /*Smuggled Cargo*/); +INSERT INTO `gameobject_template` (`entry`, `type`, `displayId`, `name`, `IconName`, `castBarCaption`, `unk1`, `size`, `Data0`, `Data1`, `Data2`, `Data3`, `Data4`, `Data5`, `Data6`, `Data7`, `Data8`, `Data9`, `Data10`, `Data11`, `Data12`, `Data13`, `Data14`, `Data15`, `Data16`, `Data17`, `Data18`, `Data19`, `Data20`, `Data21`, `Data22`, `Data23`, `Data24`, `Data25`, `Data26`, `Data27`, `Data28`, `Data29`, `Data30`, `Data31`, `Data32`, `Data33`, `Data34`, `RequiredLevel`, `ContentTuningId`, `VerifiedBuild`) VALUES +(584262, 7, 99999, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(626905, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584261, 7, 99999, 'Cushion', '', '', '', 1.279999971389770507, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584274, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(573007, 7, 96998, 'Chair', '', '', '', 0.999999284744262695, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584281, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(584644, 7, 96998, 'Chair', '', '', '', 0.999999225139617919, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(573006, 7, 99278, 'Chair', '', '', '', 0.999999701976776123, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(627029, 0, 96998, '', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- 627029 +(627044, 0, 96998, '', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- 627044 +(584227, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584271, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(582089, 7, 96999, 'Bench', '', '', '', 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(573001, 7, 96998, 'Chair', '', '', '', 0.999999284744262695, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584267, 7, 96998, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(573009, 7, 96998, 'Chair', '', '', '', 0.999999701976776123, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584248, 7, 99999, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584226, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(547520, 22, 106529, 'Runestone', 'questinteract', '', '', 1.5, 1245837, -1, 0, 0, 1, 18814, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Runestone +(626900, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(573008, 7, 96998, 'Chair', '', '', '', 0.999999701976776123, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584648, 7, 96998, 'Chair', '', '', '', 0.999999225139617919, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(626898, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(570257, 43, 112086, 'Umbric\'s Laboratory', '', '', '', 1, -1, 0, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Umbric's Laboratory +(587067, 22, 98276, 'Orb of Translocation', '', '', '', 1, 1280643, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584286, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(573005, 7, 96998, 'Chair', '', '', '', 0.999999761581420898, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(573004, 7, 96998, 'Chair', '', '', '', 0.999999761581420898, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584285, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(584646, 7, 96998, 'Chair', '', '', '', 0.999999284744262695, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584251, 7, 99999, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584645, 7, 96998, 'Chair', '', '', '', 0.999999284744262695, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(582090, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1278019, -1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584259, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(584272, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(526992, 22, 98276, 'Orb of Translocation', '', '', '', 1, 1280604, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584247, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(526989, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1280561, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(573678, 7, 99999, 'Cushion', '', '', '', 0.99999934434890747, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(587068, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1280644, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584124, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(573002, 7, 96998, 'Chair', '', '', '', 0.999999403953552246, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(526991, 22, 98276, 'Orb of Translocation', '', '', '', 1, 1280613, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(526990, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1280559, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(560856, 56, 106529, 'Runestone', 'questinteract', '', '', 1.439999938011169433, 0, 106529, 1, 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Runestone +(626819, 22, 98276, 'Orb of Translocation', 'questinteract', '', '', 0.999999761581420898, 1280099, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(587646, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1280638, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584283, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(627045, 0, 96998, '', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- 627045 +(626899, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(554869, 8, 104963, 'Anvil', '', '', '', 1, 1, 10, 0, 0, 0, 0, 0, 0, 103828, 0, 30091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Anvil +(639448, 22, 98276, 'Orb of Translocation', '', '', '', 0.999999761581420898, 1280102, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584284, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(626903, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584237, 7, 99999, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584126, 7, 96999, 'Bench', '', '', '', 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(584268, 7, 96998, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584249, 7, 99999, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(555879, 22, 98276, 'Orb of Translocation', 'questinteract', '', '', 0.999999582767486572, 1280017, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(626901, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(621909, 19, 108516, 'Mailbox', '', '', '', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Mailbox +(526987, 22, 98276, 'Orb of Translocation', '', '', '', 1, 1280614, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584282, 7, 97001, 'Bench', '', '', '', 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(584125, 7, 96999, 'Bench', '', '', '', 1, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Bench +(582091, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1278020, -1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584647, 7, 99278, 'Chair', '', '', '', 0.999999403953552246, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(584790, 22, 97121, 'Orb of Translocation', '', '', '', 1, 1280637, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(639447, 22, 98276, 'Orb of Translocation', '', '', '', 0.999999821186065673, 1280099, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584273, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(554868, 8, 107879, 'Forge', '', '', '', 1, 3, 10, 0, 0, 0, 0, 0, 0, 103829, 0, 30092, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Forge +(584250, 7, 99999, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(584269, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(573000, 7, 96998, 'Chair', '', '', '', 0.999999463558197021, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(526988, 22, 98276, 'Orb of Translocation', '', '', '', 1, 1280603, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(494914, 22, 98276, 'Orb of Translocation', 'questinteract', '', '', 0.999999821186065673, 1280167, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(584228, 7, 99278, 'Chair', '', '', '', 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(626902, 7, 100004, 'Cushion', '', '', '', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Cushion +(626820, 22, 98276, 'Orb of Translocation', 'questinteract', '', '', 0.999999463558197021, 1280102, -1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Orb of Translocation +(573003, 7, 99278, 'Chair', '', '', '', 0.999999523162841796, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66838), -- Chair +(572494, 10, 112651, 'Dropped Sword', 'interact', 'Drinking', '', 1, 4191, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1252113, 0, 0, 1, 21295, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Dropped Sword +(527211, 10, 103490, 'Hiding Spot', 'questinteract', 'Investigating', '', 1, 0, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1258785, 0, 0, 1, 178675, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Hiding Spot +(578273, 10, 74555, 'Delivery Crate', 'questinteract', 'Picking Up', '', 1, 43, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1256721, 0, 0, 1, 125962, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Delivery Crate +(619649, 10, 74696, 'Vista Point', 'openhandglow', '', '', 1, 1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275626, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 150324, 0, 7463, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 66838), -- Vista Point +(619648, 10, 74696, 'Vista Point', 'openhandglow', '', '', 1, 1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275626, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 150323, 0, 7462, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 66838), -- Vista Point +(544167, 10, 96428, 'Grappling Hook Rope', 'questinteract', 'Using', '', 1, 2173, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1236346, 0, 0, 1, 19700, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Grappling Hook Rope +(527187, 10, 103660, 'Hiding Bush', 'questinteract', 'Investigating', '', 1, 0, 0, 0, 3000, 0, 0, 0, 0, 0, 0, 1258791, 0, 0, 1, 178675, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Hiding Bush +(617534, 3, 114177, 'Gilded Armillary Sphere', '', 'Collecting', '', 0.75, 1690, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257503, 0, 0, 0, 0, 0, 32768, 0, 0, 0, 0, 0, 1241120, 0, 0, 7429, 137771, 0, 0, 0, 0, 80, 3085, 66838), -- Gilded Armillary Sphere +(537181, 5, 105226, 'Lightbloom Plant', '', '', '', 0.200000002980232238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Lightbloom Plant +(544171, 10, 96428, 'Grappling Hook Rope', 'questinteract', 'Using', '', 1, 2173, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1236346, 0, 0, 1, 19700, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Grappling Hook Rope +(619621, 10, 74696, 'Vista Point', 'openhandglow', '', '', 1, 1635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1275626, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 150320, 0, 7460, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 66838), -- Vista Point +(529610, 5, 69362, 'Lightbloom Feather', '', '', '', 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838), -- Lightbloom Feather +(520359, 10, 35827, 'Smuggled Cargo', 'questinteract', 'Destroying', '', 1.5, 99, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1232900, 0, 0, 1, 24585, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 3085, 66838); -- Smuggled Cargo diff --git a/src/server/scripts/QuelThalas/Harandar/harandar_chapter_1_of_craves_and_cradles.cpp b/src/server/scripts/QuelThalas/Harandar/harandar_chapter_1_of_craves_and_cradles.cpp new file mode 100644 index 0000000000000..a2f7f415c27e7 --- /dev/null +++ b/src/server/scripts/QuelThalas/Harandar/harandar_chapter_1_of_craves_and_cradles.cpp @@ -0,0 +1,120 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "Conversation.h" +#include "ConversationAI.h" +#include "CreatureAI.h" +#include "CreatureAIImpl.h" +#include "MotionMaster.h" +#include "ObjectAccessor.h" +#include "PhasingHandler.h" +#include "Player.h" +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "SpellAuras.h" +#include "SpellScript.h" +#include "TemporarySummon.h" + +namespace Scripts::QuelThalas::Harandar::Chapter1 +{ +namespace Creatures +{ + static constexpr uint32 OrweynaFairbreezeVillage = 236704; + static constexpr uint32 HalduronFairbreezeVillage = 240715; +} +namespace Conversations +{ + namespace Actors + { + static constexpr uint32 OrweynaActorFairbreezeVillage = 105442; + } + namespace Lines + { + static constexpr uint32 TheRootCauseStart = 78289; + } +} +namespace Paths +{ + static constexpr uint32 OrweynaStartPathToPortal = 23670400; + static constexpr uint32 HalduronStartPathToPortal = 24071500; +} + +// 28444 - Conversation +class conversation_the_root_cause_open_portal : public ConversationAI +{ +public: + using ConversationAI::ConversationAI; + + void OnCreate(Unit* creator) override + { + Creature* orweynaObject = creator->FindNearestCreatureWithOptions(30.0f, { .CreatureId = Creatures::OrweynaFairbreezeVillage, .IgnorePhases = true }); + if (!orweynaObject) + return; + + Creature* halduronObject = creator->FindNearestCreatureWithOptions(30.0f, { .CreatureId = Creatures::HalduronFairbreezeVillage, .IgnorePhases = true }); + if (!halduronObject) + return; + + TempSummon* orweynaClone = orweynaObject->SummonPersonalClone(orweynaObject->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, creator->ToPlayer()); + if (!orweynaClone) + return; + + TempSummon* halduronClone = halduronObject->SummonPersonalClone(halduronObject->GetPosition(), TEMPSUMMON_MANUAL_DESPAWN, 0s, 0, 0, creator->ToPlayer()); + if (!halduronClone) + return; + + orweynaClone->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + halduronClone->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); + + conversation->AddActor(Conversations::Actors::OrweynaActorFairbreezeVillage, 0, orweynaClone->GetGUID()); + conversation->Start(); + } + + void OnStart() override + { + LocaleConstant privateOwnerLocale = conversation->GetPrivateObjectOwnerLocale(); + + conversation->m_Events.AddEvent([conversation = conversation]() + { + if (Creature* orweynaClone = conversation->GetActorCreature(0)) + orweynaClone->GetMotionMaster()->MovePath(Paths::OrweynaStartPathToPortal, false); + + }, conversation->GetLineEndTime(privateOwnerLocale, Conversations::Lines::TheRootCauseStart)); + + conversation->m_Events.AddEvent([conversation = conversation]() + { + Player* player = ObjectAccessor::GetPlayer(*conversation, conversation->GetPrivateObjectOwner()); + if (!player) + return; + + Creature* halduronClone = player->FindNearestCreatureWithOptions(20.0f, { .CreatureId = Creatures::HalduronFairbreezeVillage, .IgnorePhases = true, .PrivateObjectOwnerGuid = player->GetGUID() }); + if (!halduronClone) + return; + + halduronClone->GetMotionMaster()->MovePath(Paths::HalduronStartPathToPortal, false); + }, conversation->GetLineEndTime(privateOwnerLocale, Conversations::Lines::TheRootCauseStart) +3s); + } +}; +} + +void AddSC_harandar_chapter_1_of_caves_and_cradles() +{ + using namespace Scripts::QuelThalas::Harandar::Chapter1; + + // Conversation + RegisterConversationAI(conversation_the_root_cause_open_portal); +} diff --git a/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp b/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp index 384bcfdccc1cf..1f6cbee5ccc2a 100644 --- a/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp +++ b/src/server/scripts/QuelThalas/quel_thalas_script_loader.cpp @@ -20,6 +20,9 @@ // Silvermoon void AddSC_silvermoon_city_midnight(); +// Harandar +void AddSC_harandar_chapter_1_of_caves_and_cradles(); + // Murder Row void AddSC_boss_kystia_manaheart(); void AddSC_instance_murder_row(); @@ -31,6 +34,9 @@ void AddQuelThalasScripts() // Silvermoon AddSC_silvermoon_city_midnight(); + // Harandar + AddSC_harandar_chapter_1_of_caves_and_cradles(); + // Murder Row AddSC_boss_kystia_manaheart(); AddSC_instance_murder_row(); From a2d9179e672efb632fdf1bd8bc593f8559434105 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 4 May 2026 13:16:33 +0200 Subject: [PATCH 128/175] Core/Vehicles: Remove incorrect passenger->vehicle threat redirection Closes #31832 --- src/server/game/Combat/ThreatManager.cpp | 16 +++++++--------- src/server/game/Entities/Vehicle/Vehicle.cpp | 5 ++++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 7a4f50d89b356..2917bcea83802 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -186,6 +186,10 @@ void ThreatReference::HeapNotifyDecreased() if (tWho->GetSummonerGUID().IsPlayer()) return false; + // accessories are fully treated as components of the parent and cannot have threat + if (cWho->HasUnitTypeMask(UNIT_MASK_ACCESSORY)) + return false; + return true; } @@ -375,18 +379,12 @@ void ThreatManager::AddThreat(Unit* target, float amount, SpellInfo const* spell return; } - // while riding a vehicle, all threat goes to the vehicle, not the pilot - if (Unit* vehicle = target->GetVehicleBase()) - { - AddThreat(vehicle, amount, spell, ignoreModifiers, ignoreRedirects); - if (target->HasUnitTypeMask(UNIT_MASK_ACCESSORY)) // accessories are fully treated as components of the parent and cannot have threat - return; - amount = 0.0f; - } - // If victim is personal spawn, redirect all aggro to summoner if (target->IsPrivateObject() && (!GetOwner()->IsPrivateObject() || !GetOwner()->CheckPrivateObjectOwnerVisibility(target))) { + if (ignoreRedirects) + return; + if (Unit* privateObjectOwner = ObjectAccessor::GetUnit(*GetOwner(), target->GetPrivateObjectOwner())) { AddThreat(privateObjectOwner, amount, spell, ignoreModifiers, ignoreRedirects); diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 52b5250ac08e8..7923b64e230ea 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -411,7 +411,10 @@ void Vehicle::InstallAccessory(uint32 entry, int8 seatId, bool minion, uint8 typ ASSERT(accessory); if (minion) + { accessory->AddUnitTypeMask(UNIT_MASK_ACCESSORY); + accessory->GetThreatManager().Initialize(); // reinitialize CanHaveThreatList cached value + } if (rideSpellId) _me->HandleSpellClick(accessory, seatId, *rideSpellId); @@ -912,7 +915,7 @@ bool VehicleJoinEvent::Execute(uint64, uint32) Passenger->GetMotionMaster()->LaunchMoveSpline(std::move(initializer), EVENT_VEHICLE_BOARD, MOTION_PRIORITY_HIGHEST); for (auto const& [guid, threatRef] : Passenger->GetThreatManager().GetThreatenedByMeList()) - threatRef->GetOwner()->GetThreatManager().AddThreat(Target->GetBase(), threatRef->GetThreat(), nullptr, true, true); + threatRef->GetOwner()->GetThreatManager().AddThreat(Target->GetBase(), 0.0f, nullptr, true, true); if (Creature* creature = Target->GetBase()->ToCreature()) { From d0f1a7d74394999068ffa4a77634554e2e4bb7fd Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 4 May 2026 13:29:29 +0200 Subject: [PATCH 129/175] Core/Objects: Private objects are no longer able to see non-private objects other than their owner --- src/server/game/Combat/ThreatManager.cpp | 13 ------------- src/server/game/Entities/Object/Object.cpp | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 2917bcea83802..f7cf4322d6d87 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -379,19 +379,6 @@ void ThreatManager::AddThreat(Unit* target, float amount, SpellInfo const* spell return; } - // If victim is personal spawn, redirect all aggro to summoner - if (target->IsPrivateObject() && (!GetOwner()->IsPrivateObject() || !GetOwner()->CheckPrivateObjectOwnerVisibility(target))) - { - if (ignoreRedirects) - return; - - if (Unit* privateObjectOwner = ObjectAccessor::GetUnit(*GetOwner(), target->GetPrivateObjectOwner())) - { - AddThreat(privateObjectOwner, amount, spell, ignoreModifiers, ignoreRedirects); - amount = 0.0f; - } - } - // if we cannot actually have a threat list, we instead just set combat state and avoid creating threat refs altogether if (!CanHaveThreatList()) { diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index b95d16ac6b5ff..02e92f27c37a5 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -865,7 +865,7 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, CanSeeOrDetectExtraArgs if (obj->IsAlwaysVisibleFor(this) || CanAlwaysSee(obj)) return true; - if (!args.IncludeAnyPrivateObject && !obj->CheckPrivateObjectOwnerVisibility(this)) + if (!args.IncludeAnyPrivateObject && (!obj->CheckPrivateObjectOwnerVisibility(this) || !CheckPrivateObjectOwnerVisibility(obj))) return false; if (SmoothPhasing const* smoothPhasing = obj->GetSmoothPhasing()) From eaa4ac74e9a08feabc5d5ed39fae7eb2d3148dff Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 4 May 2026 18:43:11 +0200 Subject: [PATCH 130/175] Core/Commands: FIx .character deleted commands outputting full guid strings instead of just counters (full guids cannot be used as input for other .character deleted commands) --- .../world/master/2026_05_04_00_world.sql | 1 + src/server/scripts/Commands/cs_character.cpp | 38 +++++++++---------- 2 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 sql/updates/world/master/2026_05_04_00_world.sql diff --git a/sql/updates/world/master/2026_05_04_00_world.sql b/sql/updates/world/master/2026_05_04_00_world.sql new file mode 100644 index 0000000000000..7a7d091d895f9 --- /dev/null +++ b/sql/updates/world/master/2026_05_04_00_world.sql @@ -0,0 +1 @@ +UPDATE `trinity_string` SET `content_default`='| %10s | %20s | %15s (%10u) | %19s |' WHERE `entry`=1017; diff --git a/src/server/scripts/Commands/cs_character.cpp b/src/server/scripts/Commands/cs_character.cpp index 46a212288ee64..1c65c2079e5f1 100644 --- a/src/server/scripts/Commands/cs_character.cpp +++ b/src/server/scripts/Commands/cs_character.cpp @@ -103,7 +103,7 @@ class character_commandscript : public CommandScript * @param searchString the search string which either contains a player GUID or a part fo the character-name * @return returns false if there was a problem while selecting the characters (e.g. player name not normalizeable) */ - static bool GetDeletedCharacterInfoList(DeletedInfoList& foundList, std::string& searchString) + static bool GetDeletedCharacterInfoList(DeletedInfoList& foundList, std::string_view searchString) { PreparedQueryResult result; CharacterDatabasePreparedStatement* stmt; @@ -119,11 +119,12 @@ class character_commandscript : public CommandScript // search by name else { - if (!normalizePlayerName(searchString)) + std::string normalizedName(searchString); + if (!normalizePlayerName(normalizedName)) return false; stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHAR_DEL_INFO_BY_NAME); - stmt->setString(0, searchString); + stmt->setString(0, normalizedName); result = CharacterDatabase.Query(stmt); } } @@ -181,11 +182,11 @@ class character_commandscript : public CommandScript if (!handler->GetSession()) handler->PSendSysMessage(LANG_CHARACTER_DELETED_LIST_LINE_CONSOLE, - itr->guid.ToString().c_str(), itr->name.c_str(), itr->accountName.empty() ? "" : itr->accountName.c_str(), + Trinity::ToString(itr->guid.GetCounter()), itr->name.c_str(), itr->accountName.empty() ? "" : itr->accountName.c_str(), itr->accountId, dateStr.c_str()); else handler->PSendSysMessage(LANG_CHARACTER_DELETED_LIST_LINE_CHAT, - itr->guid.ToString().c_str(), itr->name.c_str(), itr->accountName.empty() ? "" : itr->accountName.c_str(), + Trinity::ToString(itr->guid.GetCounter()), itr->name.c_str(), itr->accountName.empty() ? "" : itr->accountName.c_str(), itr->accountId, dateStr.c_str()); } @@ -207,7 +208,7 @@ class character_commandscript : public CommandScript { if (delInfo.accountName.empty()) // account does not exist { - handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_ACCOUNT, delInfo.name.c_str(), delInfo.guid.ToString().c_str(), delInfo.accountId); + handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_ACCOUNT, delInfo.name.c_str(), Trinity::ToString(delInfo.guid.GetCounter()), delInfo.accountId); return; } @@ -215,13 +216,13 @@ class character_commandscript : public CommandScript uint32 charcount = AccountMgr::GetCharactersCount(delInfo.accountId); if (charcount >= sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM)) { - handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_FULL, delInfo.name.c_str(), delInfo.guid.ToString().c_str(), delInfo.accountId); + handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_FULL, delInfo.name.c_str(), Trinity::ToString(delInfo.guid.GetCounter()), delInfo.accountId); return; } if (!sCharacterCache->GetCharacterGuidByName(delInfo.name).IsEmpty()) { - handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_NAME, delInfo.name.c_str(), delInfo.guid.ToString().c_str(), delInfo.accountId); + handler->PSendSysMessage(LANG_CHARACTER_DELETED_SKIP_NAME, delInfo.name.c_str(), Trinity::ToString(delInfo.guid.GetCounter()), delInfo.accountId); return; } @@ -573,15 +574,12 @@ class character_commandscript : public CommandScript * @see HandleCharacterDeletedDeleteCommand * @see DeletedInfoList * - * @param args the search string which either contains a player GUID or a part fo the character-name + * @param needle the search string which either contains a player GUID or a part fo the character-name */ - static bool HandleCharacterDeletedListCommand(ChatHandler* handler, Optional needleStr) + static bool HandleCharacterDeletedListCommand(ChatHandler* handler, Optional const& needle) { - std::string needle; - if (needleStr) - needle.assign(*needleStr); DeletedInfoList foundList; - if (!GetDeletedCharacterInfoList(foundList, needle)) + if (!GetDeletedCharacterInfoList(foundList, needle.value_or(""sv))) return false; // if no characters have been found, output a warning @@ -606,9 +604,11 @@ class character_commandscript : public CommandScript * @see HandleCharacterDeletedListCommand * @see HandleCharacterDeletedDeleteCommand * - * @param args the search string which either contains a player GUID or a part of the character-name + * @param needle the search string which either contains a player GUID or a part of the character-name + * @param newCharName new character name after restoring + * @param newAccount account to attach restored character to */ - static bool HandleCharacterDeletedRestoreCommand(ChatHandler* handler, std::string needle, Optional newCharName, Optional newAccount) + static bool HandleCharacterDeletedRestoreCommand(ChatHandler* handler, std::string_view needle, Optional const& newCharName, Optional const& newAccount) { DeletedInfoList foundList; if (!GetDeletedCharacterInfoList(foundList, needle)) @@ -664,9 +664,9 @@ class character_commandscript : public CommandScript * @see HandleCharacterDeletedListCommand * @see HandleCharacterDeletedRestoreCommand * - * @param args the search string which either contains a player GUID or a part fo the character-name + * @param needle the search string which either contains a player GUID or a part fo the character-name */ - static bool HandleCharacterDeletedDeleteCommand(ChatHandler* handler, std::string needle) + static bool HandleCharacterDeletedDeleteCommand(ChatHandler* handler, std::string_view needle) { DeletedInfoList foundList; if (!GetDeletedCharacterInfoList(foundList, needle)) @@ -698,7 +698,7 @@ class character_commandscript : public CommandScript * @see HandleCharacterDeletedListCommand * @see HandleCharacterDeletedRestoreCommand * - * @param args the search string which either contains a player GUID or a part fo the character-name + * @param days removes characters deleted more than this many days ago */ static bool HandleCharacterDeletedOldCommand(ChatHandler* /*handler*/, Optional days) { From 99c44f1cf2858c99aa67db4439d6a78ce8d9f450 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Tue, 5 May 2026 17:28:54 +0300 Subject: [PATCH 131/175] DB/K'aresh: Added graveyards (#31800) --- .../world/master/2026_05_05_00_world.sql | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 sql/updates/world/master/2026_05_05_00_world.sql diff --git a/sql/updates/world/master/2026_05_05_00_world.sql b/sql/updates/world/master/2026_05_05_00_world.sql new file mode 100644 index 0000000000000..5cbac6044b1db --- /dev/null +++ b/sql/updates/world/master/2026_05_05_00_world.sql @@ -0,0 +1,32 @@ +SET @CGUID := 10006964; + +SET @GGUID := 100144; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+5; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 2738, 15336, 15782, '0', 0, 0, 0, 0, -127.284721374511718, 922.51910400390625, 247.049285888671875, 4.182866096496582031, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 62876), -- Spirit Healer (Area: Hosaas' Rest - Difficulty: 0) +(@CGUID+1, 6491, 2738, 15336, 15806, '0', 0, 0, 0, 0, 289.092010498046875, 535.546875, 118.9519882202148437, 2.619654178619384765, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 62876), -- Spirit Healer (Area: Serrated Peaks - Difficulty: 0) +(@CGUID+2, 6491, 2738, 15336, 15826, '0', 0, 0, 0, 0, 302.236114501953125, -213.835067749023437, -72.7183761596679687, 4.836814403533935546, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 62876), -- Spirit Healer (Area: Lunnall River - Difficulty: 0) +(@CGUID+3, 6491, 2738, 15336, 15801, '0', 0, 0, 0, 0, 711.0867919921875, -1051.6978759765625, 25.51560401916503906, 0.355405241250991821, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 62876), -- Spirit Healer (Area: The Merciless Wastes - Difficulty: 0) +(@CGUID+4, 6491, 2738, 15336, 16002, '0', 0, 0, 0, 0, 1981.5364990234375, 116.739593505859375, -40.8567237854003906, 2.341418981552124023, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 62876), -- Spirit Healer (Area: Khiyed Ruins - Difficulty: 0) +(@CGUID+5, 6491, 2738, 15336, 15805, '0', 0, 0, 0, 0, 1762.5208740234375, 1626.7222900390625, -289.472991943359375, 0, 120, 0, 0, 0, NULL, NULL, NULL, NULL, 62876); -- Spirit Healer (Area: Shadow Point - Difficulty: 0) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+5; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 15336, 'K\'aresh - Hosaas\' Rest'), +(@GGUID+1, 15336, 'K\'aresh - Serrated Peaks'), +(@GGUID+2, 15336, 'K\'aresh - Lunnall River'), +(@GGUID+3, 15336, 'K\'aresh - The Merciless Wastes'), +(@GGUID+4, 15336, 'K\'aresh - Khiyed Ruins'), +(@GGUID+5, 15336, 'K\'aresh - Shadow Point'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+5; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 2738, -130.169, 917.926, 244.204, 1.029027 / (2 * PI() / 360), 'K\'aresh - Hosaas\' Rest - GY'), +(@GGUID+1, 2738, 281.335, 541.286, 116.553, 5.610727 / (2 * PI() / 360), 'K\'aresh - Serrated Peaks - GY'), +(@GGUID+2, 2738, 302.68576, -218.74654, -74.78781, 1.730694 / (2 * PI() / 360), 'K\'aresh - Lunnall River - GY'), +(@GGUID+3, 2738, 717.173, -1047.97, 22.5864, 3.664336 / (2 * PI() / 360), 'K\'aresh - The Merciless Wastes - GY'), +(@GGUID+4, 2738, 1975.54, 121.236, -43.8025, 5.638461 / (2 * PI() / 360), 'K\'aresh - Khiyed Ruins - GY'), +(@GGUID+5, 2738, 1772.66, 1625.98, -293.564, 3.047083 / (2 * PI() / 360), 'K\'aresh - Shadow Point - GY'); From 9a4ca01f6e1aa576f45dec5b34fdd432a6fe4868 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 6 May 2026 18:27:16 +0200 Subject: [PATCH 132/175] Core/Movement: Implement FadeObject spline flag for playing smooth despawn animations --- src/server/game/AI/SmartScripts/SmartAI.cpp | 9 ++++-- src/server/game/AI/SmartScripts/SmartAI.h | 2 +- .../game/AI/SmartScripts/SmartScript.cpp | 19 +++++++++---- .../game/AI/SmartScripts/SmartScriptMgr.h | 5 +++- src/server/game/Movement/MotionMaster.cpp | 28 +++++++++++-------- src/server/game/Movement/MotionMaster.h | 4 +++ src/server/game/Movement/MovementDefines.h | 10 +++++++ .../PointMovementGenerator.cpp | 7 +++-- .../PointMovementGenerator.h | 3 +- .../WaypointMovementGenerator.cpp | 22 +++++++++++++-- .../WaypointMovementGenerator.h | 3 ++ .../game/Movement/Spline/MoveSpline.cpp | 8 ++++-- .../game/Movement/Spline/MoveSplineInit.h | 17 +++++++++-- .../game/Movement/Spline/MoveSplineInitArgs.h | 1 + 14 files changed, 107 insertions(+), 31 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 20beb7bcbd299..983b4ca2fc6af 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -46,7 +46,7 @@ bool SmartAI::IsAIControlled() const return !_charmed; } -void SmartAI::StartPath(uint32 pathId/* = 0*/, bool repeat/* = false*/, Unit* invoker/* = nullptr*/, uint32 nodeId/* = 0*/, +void SmartAI::StartPath(uint32 pathId/* = 0*/, bool repeat/* = false*/, Unit* invoker/* = nullptr*/, uint32 nodeId/* = 0*/, uint32 fadeObjectDuration /*= 0*/, Scripting::v2::ActionResultSetter&& scriptResult/* = {}*/) { if (HasEscortState(SMART_ESCORT_ESCORTING)) @@ -73,7 +73,12 @@ void SmartAI::StartPath(uint32 pathId/* = 0*/, bool repeat/* = false*/, Unit* in me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_NONE); } - me->GetMotionMaster()->MovePath(pathId, _repeatWaypointPath, {}, {}, MovementWalkRunSpeedSelectionMode::Default, {}, {}, {}, {}, true, std::move(scriptResult)); + Optional fadeObject; + if (fadeObjectDuration) + fadeObject.emplace(Milliseconds(fadeObjectDuration)); + + me->GetMotionMaster()->MovePath(pathId, _repeatWaypointPath, {}, {}, MovementWalkRunSpeedSelectionMode::Default, + {}, {}, {}, {}, true, fadeObject, std::move(scriptResult)); } WaypointPath const* SmartAI::LoadPath(uint32 entry) diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 712fd06788ed5..36aad1b988a27 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -53,7 +53,7 @@ class TC_GAME_API SmartAI : public CreatureAI // Start moving to the desired MovePoint void StartPath(uint32 pathId = 0, bool repeat = false, Unit* invoker = nullptr, uint32 nodeId = 0, - Scripting::v2::ActionResultSetter&& scriptResult = {}); + uint32 fadeObjectDuration = 0, Scripting::v2::ActionResultSetter&& scriptResult = {}); WaypointPath const* LoadPath(uint32 entry); void PausePath(uint32 delay, bool forced = false); bool CanResumePath(); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 27b17c5558da5..e3a87a8ab0d83 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1178,6 +1178,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } case SMART_ACTION_MOVE_OFFSET: { + Optional fadeObject; + if (e.action.moveOffset.FadeObjectDuration) + fadeObject.emplace(Milliseconds(e.action.moveOffset.FadeObjectDuration)); + std::shared_ptr> waitEvent = CreateTimedActionListWaitEventFor>(e, targets.size()); for (WorldObject* target : targets) @@ -1203,7 +1207,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u scriptResult = Scripting::v2::ActionResult::GetResultSetter({ waitEvent, &waitEvent->Results.emplace_back() }); creatureTarget->GetMotionMaster()->MovePoint(e.action.moveOffset.PointId, x, y, z, - true, {}, {}, MovementWalkRunSpeedSelectionMode::Default, {}, std::move(scriptResult)); + true, {}, {}, MovementWalkRunSpeedSelectionMode::Default, {}, {}, std::move(scriptResult)); } if (waitEvent && !waitEvent->Results.empty()) mTimedActionWaitEvent = std::move(waitEvent); @@ -1428,7 +1432,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (waitEvent) scriptResult = Scripting::v2::ActionResult::GetResultSetter(waitEvent); - ENSURE_AI(SmartAI, me->AI())->StartPath(entry, repeat, unit, 0, std::move(scriptResult)); + ENSURE_AI(SmartAI, me->AI())->StartPath(entry, repeat, unit, 0, e.action.wpStart.FadeObjectDuration, std::move(scriptResult)); mTimedActionWaitEvent = std::move(waitEvent); uint32 quest = e.action.wpStart.quest; @@ -1498,6 +1502,10 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!targets.empty()) target = Trinity::Containers::SelectRandomContainerElement(targets); + Optional fadeObject; + if (e.action.moveToPos.FadeObjectDuration) + fadeObject.emplace(Milliseconds(e.action.moveToPos.FadeObjectDuration)); + std::shared_ptr> waitEvent = CreateTimedActionListWaitEventFor(e); Scripting::v2::ActionResultSetter scriptResult; if (waitEvent) @@ -1509,7 +1517,8 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u target->GetPosition(x, y, z); if (e.action.moveToPos.ContactDistance > 0) target->GetContactPoint(me, x, y, z, e.action.moveToPos.ContactDistance); - me->GetMotionMaster()->MovePoint(e.action.moveToPos.pointId, x + e.target.x, y + e.target.y, z + e.target.z, e.action.moveToPos.disablePathfinding == 0); + me->GetMotionMaster()->MovePoint(e.action.moveToPos.pointId, x + e.target.x, y + e.target.y, z + e.target.z, e.action.moveToPos.disablePathfinding == 0, + {}, {}, MovementWalkRunSpeedSelectionMode::Default, {}, fadeObject, std::move(scriptResult)); mTimedActionWaitEvent = std::move(waitEvent); } @@ -1522,7 +1531,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u dest = trans->GetPositionWithOffset(dest); me->GetMotionMaster()->MovePoint(e.action.moveToPos.pointId, dest, e.action.moveToPos.disablePathfinding == 0, {}, {}, - MovementWalkRunSpeedSelectionMode::Default, {}, std::move(scriptResult)); + MovementWalkRunSpeedSelectionMode::Default, {}, fadeObject, std::move(scriptResult)); mTimedActionWaitEvent = std::move(waitEvent); break; } @@ -2142,7 +2151,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (waitEvent) actionResultSetter = Scripting::v2::ActionResult::GetResultSetter({ waitEvent, &waitEvent->Results.emplace_back() }); - ENSURE_AI(SmartAI, creature->AI())->StartPath(closest.first, true, nullptr, closest.second, std::move(actionResultSetter)); + ENSURE_AI(SmartAI, creature->AI())->StartPath(closest.first, true, nullptr, closest.second, 0, std::move(actionResultSetter)); } } } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 9ea0e2956e219..546fddba7aa5c 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -888,7 +888,8 @@ struct SmartAction SAIBool repeat; uint32 quest; uint32 despawnTime; - // uint32 reactState; DO NOT REUSE + uint32 reactState_DEPRECATED_DO_NOT_REUSE; + uint32 FadeObjectDuration; } wpStart; struct @@ -1028,6 +1029,7 @@ struct SmartAction SAIBool transport; SAIBool disablePathfinding; uint32 ContactDistance; + uint32 FadeObjectDuration; } moveToPos; struct @@ -1098,6 +1100,7 @@ struct SmartAction struct { uint32 PointId; + uint32 FadeObjectDuration; } moveOffset; struct diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index ed45d9e98edb0..071aad90b2d62 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -662,17 +662,21 @@ void MotionMaster::MoveFleeing(Unit* enemy, Milliseconds time /*= 0ms*/, void MotionMaster::MovePoint(uint32 id, Position const& pos, bool generatePath/* = true*/, Optional finalOrient/* = {}*/, Optional speed /*= {}*/, MovementWalkRunSpeedSelectionMode speedSelectionMode /*= MovementWalkRunSpeedSelectionMode::Default*/, Optional closeEnoughDistance /*= {}*/, + Optional fadeObject /*= {}*/, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) { - MovePoint(id, pos.m_positionX, pos.m_positionY, pos.m_positionZ, generatePath, finalOrient, speed, speedSelectionMode, closeEnoughDistance, std::move(scriptResult)); + MovePoint(id, pos.m_positionX, pos.m_positionY, pos.m_positionZ, generatePath, finalOrient, speed, speedSelectionMode, closeEnoughDistance, + fadeObject, std::move(scriptResult)); } void MotionMaster::MovePoint(uint32 id, float x, float y, float z, bool generatePath /*= true*/, Optional finalOrient /*= {}*/, Optional speed /*= {}*/, MovementWalkRunSpeedSelectionMode speedSelectionMode /*= MovementWalkRunSpeedSelectionMode::Default*/, Optional closeEnoughDistance /*= {}*/, + Optional fadeObject /*= {}*/, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) { TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MovePoint: '{}', targeted point Id: {} (X: {}, Y: {}, Z: {})", _owner->GetGUID(), id, x, y, z); - Add(new PointMovementGenerator(id, x, y, z, generatePath, speed, finalOrient, nullptr, nullptr, speedSelectionMode, closeEnoughDistance, std::move(scriptResult))); + Add(new PointMovementGenerator(id, x, y, z, generatePath, speed, finalOrient, nullptr, nullptr, speedSelectionMode, closeEnoughDistance, + fadeObject, std::move(scriptResult))); } void MotionMaster::MoveCloserAndStop(uint32 id, Unit* target, float distance) @@ -1128,7 +1132,7 @@ void MotionMaster::MovePath(uint32 pathId, bool repeatable, Optional> waitTimeRangeAtPathEnd /*= {}*/, Optional wanderDistanceAtPathEnds /*= {}*/, Optional followPathBackwardsFromEndToStart /*= {}*/, - Optional exactSplinePath /*= {}*/, bool generatePath /*= true*/, + Optional exactSplinePath /*= {}*/, bool generatePath /*= true*/, Optional fadeObject /*= {}*/, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) { if (!pathId) @@ -1142,29 +1146,29 @@ void MotionMaster::MovePath(uint32 pathId, bool repeatable, OptionalGetGUID(), pathId, repeatable ? "YES" : "NO"); if (_owner->GetTypeId() == TYPEID_UNIT) - Add(new WaypointMovementGenerator(pathId, repeatable, duration, speed, speedSelectionMode, waitTimeRangeAtPathEnd, - wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, std::move(scriptResult)), MOTION_SLOT_DEFAULT); + Add(new WaypointMovementGenerator(pathId, repeatable, duration, speed, speedSelectionMode, std::move(waitTimeRangeAtPathEnd), + wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, fadeObject, std::move(scriptResult)), MOTION_SLOT_DEFAULT); else - Add(new WaypointMovementGenerator(pathId, repeatable, duration, speed, speedSelectionMode, waitTimeRangeAtPathEnd, - wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, std::move(scriptResult))); + Add(new WaypointMovementGenerator(pathId, repeatable, duration, speed, speedSelectionMode, std::move(waitTimeRangeAtPathEnd), + wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, {}, std::move(scriptResult))); } void MotionMaster::MovePath(WaypointPath const& path, bool repeatable, Optional duration /*= {}*/, Optional speed /*= {}*/, MovementWalkRunSpeedSelectionMode speedSelectionMode /*= MovementWalkRunSpeedSelectionMode::Default*/, Optional> waitTimeRangeAtPathEnd /*= {}*/, Optional wanderDistanceAtPathEnds /*= {}*/, Optional followPathBackwardsFromEndToStart /*= {}*/, - Optional exactSplinePath /*= {}*/, bool generatePath /*= true*/, + Optional exactSplinePath /*= {}*/, bool generatePath /*= true*/, Optional fadeObject /*= {}*/, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) { TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MovePath: '{}', starts moving over path Id: {} (repeatable: {})", _owner->GetGUID(), path.Id, repeatable ? "YES" : "NO"); if (_owner->GetTypeId() == TYPEID_UNIT) - Add(new WaypointMovementGenerator(path, repeatable, duration, speed, speedSelectionMode, waitTimeRangeAtPathEnd, - wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, std::move(scriptResult)), MOTION_SLOT_DEFAULT); + Add(new WaypointMovementGenerator(path, repeatable, duration, speed, speedSelectionMode, std::move(waitTimeRangeAtPathEnd), + wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, fadeObject, std::move(scriptResult)), MOTION_SLOT_DEFAULT); else - Add(new WaypointMovementGenerator(path, repeatable, duration, speed, speedSelectionMode, waitTimeRangeAtPathEnd, - wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, std::move(scriptResult))); + Add(new WaypointMovementGenerator(path, repeatable, duration, speed, speedSelectionMode, std::move(waitTimeRangeAtPathEnd), + wanderDistanceAtPathEnds, followPathBackwardsFromEndToStart, exactSplinePath, generatePath, {}, std::move(scriptResult))); } void MotionMaster::MoveRotate(uint32 id, RotateDirection direction, Optional time /*= {}*/, diff --git a/src/server/game/Movement/MotionMaster.h b/src/server/game/Movement/MotionMaster.h index 23d48d0b6e8fc..50eed165be9cf 100644 --- a/src/server/game/Movement/MotionMaster.h +++ b/src/server/game/Movement/MotionMaster.h @@ -169,9 +169,11 @@ class TC_GAME_API MotionMaster Scripting::v2::ActionResultSetter&& scriptResult = {}); void MovePoint(uint32 id, Position const& pos, bool generatePath = true, Optional finalOrient = {}, Optional speed = {}, MovementWalkRunSpeedSelectionMode speedSelectionMode = MovementWalkRunSpeedSelectionMode::Default, Optional closeEnoughDistance = {}, + Optional fadeObject = {}, Scripting::v2::ActionResultSetter&& scriptResult = {}); void MovePoint(uint32 id, float x, float y, float z, bool generatePath = true, Optional finalOrient = {}, Optional speed = {}, MovementWalkRunSpeedSelectionMode speedSelectionMode = MovementWalkRunSpeedSelectionMode::Default, Optional closeEnoughDistance = {}, + Optional fadeObject = {}, Scripting::v2::ActionResultSetter&& scriptResult = {}); /* * Makes the unit move toward the target until it is at a certain distance from it. The unit then stops. @@ -216,11 +218,13 @@ class TC_GAME_API MotionMaster MovementWalkRunSpeedSelectionMode speedSelectionMode = MovementWalkRunSpeedSelectionMode::Default, Optional> waitTimeRangeAtPathEnd = {}, Optional wanderDistanceAtPathEnds = {}, Optional followPathBackwardsFromEndToStart = {}, Optional exactSplinePath = {}, bool generatePath = true, + Optional fadeObject = {}, Scripting::v2::ActionResultSetter&& scriptResult = {}); void MovePath(WaypointPath const& path, bool repeatable, Optional duration = {}, Optional speed = {}, MovementWalkRunSpeedSelectionMode speedSelectionMode = MovementWalkRunSpeedSelectionMode::Default, Optional> waitTimeRangeAtPathEnd = {}, Optional wanderDistanceAtPathEnds = {}, Optional followPathBackwardsFromEndToStart = {}, Optional exactSplinePath = {}, bool generatePath = true, + Optional fadeObject = {}, Scripting::v2::ActionResultSetter&& scriptResult = {}); /** diff --git a/src/server/game/Movement/MovementDefines.h b/src/server/game/Movement/MovementDefines.h index 1df6555eb0a45..75af56413b056 100644 --- a/src/server/game/Movement/MovementDefines.h +++ b/src/server/game/Movement/MovementDefines.h @@ -19,6 +19,7 @@ #define TRINITY_MOVEMENTDEFINES_H #include "Common.h" +#include "Duration.h" #include "ObjectGuid.h" #include "Optional.h" #include "Position.h" @@ -160,6 +161,15 @@ struct JumpChargeParams using MovementFacingTarget = std::variant; +struct MovementFadeObject +{ + constexpr MovementFadeObject() = default; + constexpr MovementFadeObject(Milliseconds duration) : Duration(duration) { } + constexpr MovementFadeObject(Optional duration) : Duration(duration) { } + + Optional Duration; +}; + inline bool IsInvalidMovementGeneratorType(uint8 const type) { return type == MAX_DB_MOTION_TYPE || type >= MAX_MOTION_TYPE; } inline bool IsInvalidMovementSlot(uint8 const slot) { return slot >= MAX_MOTION_SLOT; } diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp index e4324b3ef3d57..ef06c7d21b719 100755 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.cpp @@ -31,9 +31,10 @@ PointMovementGenerator::PointMovementGenerator(uint32 id, float x, float y, float z, bool generatePath, Optional speed /*= {}*/, Optional finalOrient /*= {}*/, Unit const* faceTarget /*= nullptr*/, Movement::SpellEffectExtraData const* spellEffectExtraData /*= nullptr*/, MovementWalkRunSpeedSelectionMode speedSelectionMode /*= MovementWalkRunSpeedSelectionMode::Default*/, - Optional closeEnoughDistance /*= {}*/, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) + Optional closeEnoughDistance /*= {}*/, Optional fadeObject /*= {}*/, + Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) : _movementId(id), _destination(x, y, z), _speed(speed), _generatePath(generatePath), _finalOrient(finalOrient), - i_faceTarget(faceTarget), _speedSelectionMode(speedSelectionMode), _closeEnoughDistance(closeEnoughDistance) + i_faceTarget(faceTarget), _speedSelectionMode(speedSelectionMode), _closeEnoughDistance(closeEnoughDistance), _fadeObject(fadeObject) { this->Mode = MOTION_MODE_DEFAULT; this->Priority = MOTION_PRIORITY_NORMAL; @@ -104,6 +105,8 @@ void PointMovementGenerator::Initialize(Unit* owner) init.SetSpellEffectExtraData(*i_spellEffectExtra); if (_finalOrient) init.SetFacing(*_finalOrient); + if (_fadeObject) + init.SetFadeObject(_fadeObject->Duration.value_or(1s)); switch (_speedSelectionMode) { case MovementWalkRunSpeedSelectionMode::Default: diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h index 28baf373a2da7..0b9229fe91331 100644 --- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h @@ -33,7 +33,7 @@ class PointMovementGenerator : public MovementGenerator explicit PointMovementGenerator(uint32 id, float x, float y, float z, bool generatePath, Optional speed = {}, Optional finalOrient = {}, Unit const* faceTarget = nullptr, Movement::SpellEffectExtraData const* spellEffectExtraData = nullptr, MovementWalkRunSpeedSelectionMode speedSelectionMode = MovementWalkRunSpeedSelectionMode::Default, - Optional closeEnoughDistance = {}, + Optional closeEnoughDistance = {}, Optional fadeObject = {}, Scripting::v2::ActionResultSetter&& scriptResult = {}); PointMovementGenerator(PointMovementGenerator const&) = delete; PointMovementGenerator(PointMovementGenerator&&) = delete; @@ -66,6 +66,7 @@ class PointMovementGenerator : public MovementGenerator std::unique_ptr i_spellEffectExtra; MovementWalkRunSpeedSelectionMode _speedSelectionMode; Optional _closeEnoughDistance; + Optional _fadeObject; }; class AssistanceMovementGenerator : public PointMovementGenerator diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp index 122d1c693b99e..f331f88c8c8d6 100644 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp @@ -39,11 +39,12 @@ template WaypointMovementGenerator::WaypointMovementGenerator(uint32 pathId, bool repeating, Optional duration, Optional speed, MovementWalkRunSpeedSelectionMode speedSelectionMode, Optional> waitTimeRangeAtPathEnd, Optional wanderDistanceAtPathEnds, Optional followPathBackwardsFromEndToStart, Optional exactSplinePath, bool generatePath, + Optional fadeObject /*= {}*/, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) : PathMovementBase(sWaypointMgr->GetPath(pathId)), _speed(speed), _speedSelectionMode(speedSelectionMode), _waitTimeRangeAtPathEnd(std::move(waitTimeRangeAtPathEnd)), _wanderDistanceAtPathEnds(wanderDistanceAtPathEnds), _followPathBackwardsFromEndToStart(followPathBackwardsFromEndToStart), _exactSplinePath(exactSplinePath), _repeating(repeating), _generatePath(generatePath), - _moveTimer(0), _nextMoveTime(0), _waypointTransitionSplinePointsIndex(0), _isReturningToStart(false) + _fadeObject(fadeObject), _moveTimer(0), _nextMoveTime(0), _waypointTransitionSplinePointsIndex(0), _isReturningToStart(false) { this->Mode = MOTION_MODE_DEFAULT; this->Priority = MOTION_PRIORITY_NORMAL; @@ -58,11 +59,12 @@ template WaypointMovementGenerator::WaypointMovementGenerator(WaypointPath const& path, bool repeating, Optional duration, Optional speed, MovementWalkRunSpeedSelectionMode speedSelectionMode, Optional> waitTimeRangeAtPathEnd, Optional wanderDistanceAtPathEnds, Optional followPathBackwardsFromEndToStart, Optional exactSplinePath, bool generatePath, + Optional fadeObject, Scripting::v2::ActionResultSetter&& scriptResult /*= {}*/) : PathMovementBase(std::make_unique(path)), _speed(speed), _speedSelectionMode(speedSelectionMode), _waitTimeRangeAtPathEnd(std::move(waitTimeRangeAtPathEnd)), _wanderDistanceAtPathEnds(wanderDistanceAtPathEnds), _followPathBackwardsFromEndToStart(followPathBackwardsFromEndToStart), _exactSplinePath(exactSplinePath), _repeating(repeating), _generatePath(generatePath), - _moveTimer(0), _nextMoveTime(0), _waypointTransitionSplinePointsIndex(0), _isReturningToStart(false) + _fadeObject(fadeObject), _moveTimer(0), _nextMoveTime(0), _waypointTransitionSplinePointsIndex(0), _isReturningToStart(false) { this->Mode = MOTION_MODE_DEFAULT; this->Priority = MOTION_PRIORITY_NORMAL; @@ -592,6 +594,22 @@ void WaypointMovementGenerator::StartMove(T* owner, bool relaunch/* = false*/ && (lastWaypointForSegment->Delay || (_isReturningToStart ? _currentNode == 0 : _currentNode == path->Nodes.size() - 1))) init.SetFacing(*lastWaypointForSegment->Orientation); + if (_fadeObject && !_repeating) + { + std::size_t lastWaypointForPath = IsFollowingPathBackwardsFromEndToStart() ? 0 : path->Nodes.size() - 1; + if (IsExactSplinePath()) + { + auto [lastSegmentFirstNode, segmentLength] = path->ContinuousSegments[IsFollowingPathBackwardsFromEndToStart() ? 0 : path->ContinuousSegments.size() - 1]; + if (lastWaypointForPath >= lastSegmentFirstNode && lastWaypointForPath < lastSegmentFirstNode + segmentLength) + init.SetFadeObject(_fadeObject->Duration.value_or(1s)); + } + else + { + if (lastWaypointForSegment->Id == path->Nodes[lastWaypointForPath].Id) + init.SetFadeObject(_fadeObject->Duration.value_or(1s)); + } + } + switch (lastWaypointForSegment->MoveType.value_or(path->MoveType)) { case WaypointMoveType::Land: diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h index 001f95632105c..c344f03bf0e7c 100755 --- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h @@ -35,11 +35,13 @@ class WaypointMovementGenerator : public MovementGeneratorMedium> waitTimeRangeAtPathEnd = {}, Optional wanderDistanceAtPathEnds = {}, Optional followPathBackwardsFromEndToStart = {}, Optional exactSplinePath = {}, bool generatePath = true, + Optional fadeObject = {}, Scripting::v2::ActionResultSetter&& scriptResult = {}); explicit WaypointMovementGenerator(WaypointPath const& path, bool repeating, Optional duration, Optional speed, MovementWalkRunSpeedSelectionMode speedSelectionMode, Optional> waitTimeRangeAtPathEnd, Optional wanderDistanceAtPathEnds, Optional followPathBackwardsFromEndToStart, Optional exactSplinePath, bool generatePath, + Optional fadeObject, Scripting::v2::ActionResultSetter&& scriptResult = {}); ~WaypointMovementGenerator(); @@ -93,6 +95,7 @@ class WaypointMovementGenerator : public MovementGeneratorMedium _exactSplinePath; bool _repeating; bool _generatePath; + Optional _fadeObject; TimeTracker _moveTimer; TimeTracker _nextMoveTime; diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp index f5129100758f6..e9adf45407dd5 100644 --- a/src/server/game/Movement/Spline/MoveSpline.cpp +++ b/src/server/game/Movement/Spline/MoveSpline.cpp @@ -213,7 +213,7 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args) spell_effect_extra = args.spellEffectExtra; turn = args.turnData; anim_tier = args.animTier; - splineIsFacingOnly = args.path.size() == 2 && args.facing.type != MONSTER_MOVE_NORMAL && ((args.path[1] - args.path[0]).length() < 0.1f); + splineIsFacingOnly = args.path.size() == 2 && args.facing.type != MONSTER_MOVE_NORMAL && ((args.path[1] - args.path[0]).squaredLength() < 0.01f); velocity = args.velocity; @@ -228,7 +228,7 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args) // init parabolic / animation // spline initialized, duration known and i able to compute parabolic acceleration - if (args.flags.HasFlag(MoveSplineFlagEnum::Parabolic | MoveSplineFlagEnum::FadeObject) || args.animTier) + if (args.flags.Parabolic || args.animTier) { int32 spline_duration = Duration(); effect_start_time = spline.length(spline.first() + args.effect_start_point); @@ -244,6 +244,8 @@ void MoveSpline::Initialize(MoveSplineInitArgs const& args) } } } + else if (args.flags.FadeObject) + effect_start_time = std::max(Duration() - args.fade_object_duration_ms, 0); } MoveSpline::MoveSpline() : m_Id(0), time_passed(0), @@ -310,7 +312,7 @@ bool MoveSplineInitArgs::_checkPathLengths() } MoveSplineInitArgs::MoveSplineInitArgs() : path_Idx_offset(0), velocity(0.f), -parabolic_amplitude(0.f), effect_start_point(0), +parabolic_amplitude(0.f), effect_start_point(0), fade_object_duration_ms(0), splineId(0), initialOrientation(0.f), walk(false), HasVelocity(false), TransformForTransport(true) { diff --git a/src/server/game/Movement/Spline/MoveSplineInit.h b/src/server/game/Movement/Spline/MoveSplineInit.h index 939f5e973c6ba..75ccbf252a16f 100644 --- a/src/server/game/Movement/Spline/MoveSplineInit.h +++ b/src/server/game/Movement/Spline/MoveSplineInit.h @@ -18,6 +18,7 @@ #ifndef TRINITYSERVER_MOVESPLINEINIT_H #define TRINITYSERVER_MOVESPLINEINIT_H +#include "Duration.h" #include "MoveSplineInitArgs.h" #include #include @@ -56,14 +57,19 @@ namespace Movement /** Adds movement by parabolic trajectory * @param amplitude the maximum height of parabola, value could be negative and positive * @param start_point point index on the path where parabolic movement starts - * can't be combined with final animation + * can't be combined with final animation or fade object */ void SetParabolic(float amplitude, int32 start_point); /* Plays animation after movement done - * can't be combined with parabolic movement + * can't be combined with parabolic movement or fade object */ void SetAnimation(AnimTier anim, uint32 tierTransitionId = 0, int32 transitionStartPoint = 0); + /* Plays fading animation while moving + * can't be combined with parabolic|animation movement + */ + void SetFadeObject(Milliseconds fadeDuration = 1s); + /* Adds final facing animation * sets unit's facing to specified point/angle after all path done * you can have only one final facing: previous will be overriden @@ -197,6 +203,13 @@ namespace Movement args.flags.Animation = tierTransitionId == 0; } + inline void MoveSplineInit::SetFadeObject(Milliseconds fadeDuration) + { + args.fade_object_duration_ms = fadeDuration.count(); + args.flags.FadeObject = true; + args.animTier.reset(); + } + inline void MoveSplineInit::DisableTransportPathTransformations() { args.TransformForTransport = false; } inline void MoveSplineInit::SetSpellEffectExtraData(SpellEffectExtraData const& spellEffectExtraData) diff --git a/src/server/game/Movement/Spline/MoveSplineInitArgs.h b/src/server/game/Movement/Spline/MoveSplineInitArgs.h index 25b9b71791db3..341f36bbee18a 100644 --- a/src/server/game/Movement/Spline/MoveSplineInitArgs.h +++ b/src/server/game/Movement/Spline/MoveSplineInitArgs.h @@ -79,6 +79,7 @@ namespace Movement float velocity; float parabolic_amplitude; int32 effect_start_point; + int32 fade_object_duration_ms; uint32 splineId; float initialOrientation; Optional spellEffectExtra; From e704dc7677f42fe81652bd223a12d6a6818ba487 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 7 May 2026 11:10:25 +0200 Subject: [PATCH 133/175] Core/Spells: Removed incorrect generated proc data for different difficulties for spells that already have rows in spell_proc table --- src/server/game/Spells/SpellMgr.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 14948d4835679..243f3c80368f6 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -1753,10 +1753,12 @@ void SpellMgr::LoadSpellProcs() count = 0; oldMSTime = getMSTime(); + std::unordered_map, SpellProcEntry> generatedSpellProcMap; + for (SpellInfo const& spellInfo : mSpellInfoMap) { // Data already present in DB, overwrites default proc - if (mSpellProcMap.find({ spellInfo.Id, spellInfo.Difficulty }) != mSpellProcMap.end()) + if (GetSpellProcEntry(&spellInfo) != nullptr) continue; // Nothing to do if no flags set @@ -1899,10 +1901,12 @@ void SpellMgr::LoadSpellProcs() continue; } - mSpellProcMap[{ spellInfo.Id, spellInfo.Difficulty }] = procEntry; + generatedSpellProcMap[{ spellInfo.Id, spellInfo.Difficulty }] = procEntry; ++count; } + mSpellProcMap.merge(generatedSpellProcMap); + TC_LOG_INFO("server.loading", ">> Generated spell proc data for {} spells in {} ms", count, GetMSTimeDiffToNow(oldMSTime)); } From 2371cabb29fbd650b3e059a8c983f35fa5d54442 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 7 May 2026 16:42:01 +0200 Subject: [PATCH 134/175] Dep/g3d: Build fix for gcc on windows --- dep/g3dlite/G3D-v9.0 hotfix20.diff | 87 ++++++++++++++++++++++++++++++ dep/g3dlite/Readme.txt | 1 + dep/g3dlite/include/G3D/platform.h | 8 ++- dep/g3dlite/source/GThread.cpp | 11 ++-- dep/g3dlite/source/System.cpp | 5 +- 5 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 dep/g3dlite/G3D-v9.0 hotfix20.diff diff --git a/dep/g3dlite/G3D-v9.0 hotfix20.diff b/dep/g3dlite/G3D-v9.0 hotfix20.diff new file mode 100644 index 0000000000000..d8eef3c1849c5 --- /dev/null +++ b/dep/g3dlite/G3D-v9.0 hotfix20.diff @@ -0,0 +1,87 @@ +diff --git a/dep/g3dlite/include/G3D/platform.h b/dep/g3dlite/include/G3D/platform.h +index 9202fe41d0..400a81361e 100644 +--- a/dep/g3dlite/include/G3D/platform.h ++++ b/dep/g3dlite/include/G3D/platform.h +@@ -52,8 +52,10 @@ These control the version of Winsock used by G3D. + + #ifndef _MSC_VER + /// Fast call is a register-based optimized calling convention supported only by Visual C++ ++#ifndef __fastcall + #define __fastcall + #endif ++#endif + + /** \def G3D_WINDOWS*/ + /** \def G3D_FREEBSD2*/ +@@ -64,8 +66,10 @@ These control the version of Winsock used by G3D. + # define G3D_WINDOWS + #elif defined(__MINGW32__) + #define G3D_WINDOWS +- #undef __MSVCRT_VERSION__ +- #define __MSVCRT_VERSION__ 0x0601 ++ #if !defined(__MSVCRT_VERSION__) || __MSVCRT_VERSION__ < 0x0601 ++ #undef __MSVCRT_VERSION__ ++ #define __MSVCRT_VERSION__ 0x0601 ++ #endif + #include + #elif defined(__FreeBSD__) || defined(__OpenBSD__) + #define G3D_FREEBSD +diff --git a/dep/g3dlite/source/GThread.cpp b/dep/g3dlite/source/GThread.cpp +index 5f3f7ffd64..f6483a75d1 100644 +--- a/dep/g3dlite/source/GThread.cpp ++++ b/dep/g3dlite/source/GThread.cpp +@@ -91,6 +91,11 @@ typedef struct tagTHREADNAME_INFO { + } THREADNAME_INFO; + #pragma pack(pop) + ++static LONG ExceptionIgnorer(PEXCEPTION_POINTERS ex) ++{ ++ return ex->ExceptionRecord->ExceptionCode == MS_VC_EXCEPTION ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_CONTINUE_SEARCH; ++} ++ + static void SetThreadName(DWORD dwThreadID, const char* threadName) { + THREADNAME_INFO info; + info.dwType = 0x1000; +@@ -98,9 +103,9 @@ static void SetThreadName(DWORD dwThreadID, const char* threadName) { + info.dwThreadID = dwThreadID; + info.dwFlags = 0; + +- __try { +- RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); +- } __except(EXCEPTION_EXECUTE_HANDLER) {} ++ PVOID handler = AddVectoredExceptionHandler(1, &ExceptionIgnorer); ++ RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); ++ RemoveVectoredExceptionHandler(handler); + } + #endif + +diff --git a/dep/g3dlite/source/System.cpp b/dep/g3dlite/source/System.cpp +index d6fbfa7567..213cec86d8 100644 +--- a/dep/g3dlite/source/System.cpp ++++ b/dep/g3dlite/source/System.cpp +@@ -42,6 +42,7 @@ + #ifdef G3D_WINDOWS + + # include ++# include + # include + # include "G3D/RegistryUtil.h" + #include +@@ -1725,7 +1726,7 @@ void System::cpuid(CPUIDFunction func, uint32& eax, uint32& ebx, uint32& ecx, ui + #if ! defined(__PIC__) || defined(__x86_64__) + // AT&T assembler syntax + asm volatile( +- "movl $0, %%ecx \n\n" /* Wipe ecx */ ++ "xor %%ecx, %%ecx \n\n" /* Wipe ecx */ + "cpuid \n\t" + : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) + : "a"(func)); +@@ -1733,7 +1734,7 @@ void System::cpuid(CPUIDFunction func, uint32& eax, uint32& ebx, uint32& ecx, ui + // AT&T assembler syntax + asm volatile( + "pushl %%ebx \n\t" /* save ebx */ +- "movl $0, %%ecx \n\n" /* Wipe ecx */ ++ "xor %%ecx, %%ecx \n\n" /* Wipe ecx */ + "cpuid \n\t" + "movl %%ebx, %1 \n\t" /* save what cpuid just put in %ebx */ + "popl %%ebx \n\t" /* restore the old ebx */ diff --git a/dep/g3dlite/Readme.txt b/dep/g3dlite/Readme.txt index 30e86cc8b6d36..0fa457de60a79 100644 --- a/dep/g3dlite/Readme.txt +++ b/dep/g3dlite/Readme.txt @@ -29,3 +29,4 @@ G3D-v9.0 hotfix16.diff - 2022-02-11 - Fix *BSD compile errors G3D-v9.0 hotfix17.diff - 2023-03-25 - Fix macOS compile errors G3D-v9.0 hotfix18.diff - 2024-02-17 - ARM64 support on MSVC G3D-v9.0 hotfix19.diff - 2024-06-09 - clang build fix on windows +G3D-v9.0 hotfix20.diff - 2026-05-07 - gcc build fix on windows diff --git a/dep/g3dlite/include/G3D/platform.h b/dep/g3dlite/include/G3D/platform.h index 9202fe41d0bd2..400a81361eb07 100644 --- a/dep/g3dlite/include/G3D/platform.h +++ b/dep/g3dlite/include/G3D/platform.h @@ -52,8 +52,10 @@ These control the version of Winsock used by G3D. #ifndef _MSC_VER /// Fast call is a register-based optimized calling convention supported only by Visual C++ +#ifndef __fastcall #define __fastcall #endif +#endif /** \def G3D_WINDOWS*/ /** \def G3D_FREEBSD2*/ @@ -64,8 +66,10 @@ These control the version of Winsock used by G3D. # define G3D_WINDOWS #elif defined(__MINGW32__) #define G3D_WINDOWS - #undef __MSVCRT_VERSION__ - #define __MSVCRT_VERSION__ 0x0601 + #if !defined(__MSVCRT_VERSION__) || __MSVCRT_VERSION__ < 0x0601 + #undef __MSVCRT_VERSION__ + #define __MSVCRT_VERSION__ 0x0601 + #endif #include #elif defined(__FreeBSD__) || defined(__OpenBSD__) #define G3D_FREEBSD diff --git a/dep/g3dlite/source/GThread.cpp b/dep/g3dlite/source/GThread.cpp index 5f3f7ffd64e64..f6483a75d15aa 100644 --- a/dep/g3dlite/source/GThread.cpp +++ b/dep/g3dlite/source/GThread.cpp @@ -91,6 +91,11 @@ typedef struct tagTHREADNAME_INFO { } THREADNAME_INFO; #pragma pack(pop) +static LONG ExceptionIgnorer(PEXCEPTION_POINTERS ex) +{ + return ex->ExceptionRecord->ExceptionCode == MS_VC_EXCEPTION ? EXCEPTION_CONTINUE_EXECUTION : EXCEPTION_CONTINUE_SEARCH; +} + static void SetThreadName(DWORD dwThreadID, const char* threadName) { THREADNAME_INFO info; info.dwType = 0x1000; @@ -98,9 +103,9 @@ static void SetThreadName(DWORD dwThreadID, const char* threadName) { info.dwThreadID = dwThreadID; info.dwFlags = 0; - __try { - RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); - } __except(EXCEPTION_EXECUTE_HANDLER) {} + PVOID handler = AddVectoredExceptionHandler(1, &ExceptionIgnorer); + RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info ); + RemoveVectoredExceptionHandler(handler); } #endif diff --git a/dep/g3dlite/source/System.cpp b/dep/g3dlite/source/System.cpp index d6fbfa7567979..213cec86d8892 100644 --- a/dep/g3dlite/source/System.cpp +++ b/dep/g3dlite/source/System.cpp @@ -42,6 +42,7 @@ #ifdef G3D_WINDOWS # include +# include # include # include "G3D/RegistryUtil.h" #include @@ -1725,7 +1726,7 @@ void System::cpuid(CPUIDFunction func, uint32& eax, uint32& ebx, uint32& ecx, ui #if ! defined(__PIC__) || defined(__x86_64__) // AT&T assembler syntax asm volatile( - "movl $0, %%ecx \n\n" /* Wipe ecx */ + "xor %%ecx, %%ecx \n\n" /* Wipe ecx */ "cpuid \n\t" : "=a"(eax), "=b"(ebx), "=c"(ecx), "=d"(edx) : "a"(func)); @@ -1733,7 +1734,7 @@ void System::cpuid(CPUIDFunction func, uint32& eax, uint32& ebx, uint32& ecx, ui // AT&T assembler syntax asm volatile( "pushl %%ebx \n\t" /* save ebx */ - "movl $0, %%ecx \n\n" /* Wipe ecx */ + "xor %%ecx, %%ecx \n\n" /* Wipe ecx */ "cpuid \n\t" "movl %%ebx, %1 \n\t" /* save what cpuid just put in %ebx */ "popl %%ebx \n\t" /* restore the old ebx */ From a4cdde85c2adc6613006d25cd124e73b7a7a9e87 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 7 May 2026 16:43:22 +0200 Subject: [PATCH 135/175] Dep/g3d: Fix warnings with gcc 16 --- dep/g3dlite/G3D-v9.0 hotfix21.diff | 35 ++++++++++++++++++++++++++++++ dep/g3dlite/Readme.txt | 1 + dep/g3dlite/include/G3D/platform.h | 17 +-------------- 3 files changed, 37 insertions(+), 16 deletions(-) create mode 100644 dep/g3dlite/G3D-v9.0 hotfix21.diff diff --git a/dep/g3dlite/G3D-v9.0 hotfix21.diff b/dep/g3dlite/G3D-v9.0 hotfix21.diff new file mode 100644 index 0000000000000..57e1e11cd283d --- /dev/null +++ b/dep/g3dlite/G3D-v9.0 hotfix21.diff @@ -0,0 +1,35 @@ +diff --git a/dep/g3dlite/include/G3D/platform.h b/dep/g3dlite/include/G3D/platform.h +index 400a81361e..a38e87a641 100644 +--- a/dep/g3dlite/include/G3D/platform.h ++++ b/dep/g3dlite/include/G3D/platform.h +@@ -366,29 +366,14 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) {\ + + + // Bring in shared_ptr and weak_ptr +-#if (defined(__GNUC__) && defined(__APPLE__)) || defined(__linux__) +-#include // Defines _LIBCC_VERSION if linking against libc++ or does nothing +-#endif +-#if (!defined(_LIBCPP_VERSION) && defined(__APPLE__)) || (!defined(_LIBCPP_VERSION) && defined(__linux__)) +-# include +-#else +-# include +-#endif ++#include + + namespace G3D { +-#if (!defined(_LIBCPP_VERSION) && defined(__APPLE__)) || (!defined(_LIBCPP_VERSION) && defined(__linux__)) +- using std::tr1::shared_ptr; +- using std::tr1::weak_ptr; +- using std::tr1::dynamic_pointer_cast; +- using std::tr1::static_pointer_cast; +- using std::tr1::enable_shared_from_this; +-#else + using std::shared_ptr; + using std::weak_ptr; + using std::dynamic_pointer_cast; + using std::static_pointer_cast; + using std::enable_shared_from_this; +-#endif + + /** Options for initG3D and initGLG3D. */ + class G3DSpecification { diff --git a/dep/g3dlite/Readme.txt b/dep/g3dlite/Readme.txt index 0fa457de60a79..bceb46530c11f 100644 --- a/dep/g3dlite/Readme.txt +++ b/dep/g3dlite/Readme.txt @@ -30,3 +30,4 @@ G3D-v9.0 hotfix17.diff - 2023-03-25 - Fix macOS compile errors G3D-v9.0 hotfix18.diff - 2024-02-17 - ARM64 support on MSVC G3D-v9.0 hotfix19.diff - 2024-06-09 - clang build fix on windows G3D-v9.0 hotfix20.diff - 2026-05-07 - gcc build fix on windows +G3D-v9.0 hotfix21.diff - 2026-05-07 - gcc 16 warning fix diff --git a/dep/g3dlite/include/G3D/platform.h b/dep/g3dlite/include/G3D/platform.h index 400a81361eb07..a38e87a64134b 100644 --- a/dep/g3dlite/include/G3D/platform.h +++ b/dep/g3dlite/include/G3D/platform.h @@ -366,29 +366,14 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw) {\ // Bring in shared_ptr and weak_ptr -#if (defined(__GNUC__) && defined(__APPLE__)) || defined(__linux__) -#include // Defines _LIBCC_VERSION if linking against libc++ or does nothing -#endif -#if (!defined(_LIBCPP_VERSION) && defined(__APPLE__)) || (!defined(_LIBCPP_VERSION) && defined(__linux__)) -# include -#else -# include -#endif +#include namespace G3D { -#if (!defined(_LIBCPP_VERSION) && defined(__APPLE__)) || (!defined(_LIBCPP_VERSION) && defined(__linux__)) - using std::tr1::shared_ptr; - using std::tr1::weak_ptr; - using std::tr1::dynamic_pointer_cast; - using std::tr1::static_pointer_cast; - using std::tr1::enable_shared_from_this; -#else using std::shared_ptr; using std::weak_ptr; using std::dynamic_pointer_cast; using std::static_pointer_cast; using std::enable_shared_from_this; -#endif /** Options for initG3D and initGLG3D. */ class G3DSpecification { From 6653ab10b130e2ee61702e72f3735b2b51a542e0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 7 May 2026 22:51:48 +0200 Subject: [PATCH 136/175] Core: Updated allowed build to 12.0.5.67403 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_05_07_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_05_07_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 5d90f5561b5cf..88c834492064d 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1610,7 +1610,14 @@ INSERT INTO `build_auth_key` VALUES (67314,'Mac','x64','WoWC',0x49B611A88AA140811257FFB6D8AC4CAA), (67314,'Win','A64','WoW',0xF38339612437BADE56FD23DAE7D51C76), (67314,'Win','x64','WoW',0xA4EDEEFFF3372B893DCB37867DE69FD1), -(67314,'Win','x64','WoWC',0x62498C0192429CA9BAA13D2CA8CA6B12); +(67314,'Win','x64','WoWC',0x62498C0192429CA9BAA13D2CA8CA6B12), +(67403,'Mac','A64','WoW',0xEE573F9EA729A9F9E090CDFBDA5BE22B), +(67403,'Mac','A64','WoWC',0x1C5A89C904201AD2B2A7DA370BD0E7B3), +(67403,'Mac','x64','WoW',0x96347A82EE58B9974108F24508251DC9), +(67403,'Mac','x64','WoWC',0xB041BFA73FBF99A6515368A5DEBF9DA2), +(67403,'Win','A64','WoW',0x0BE63FC149F0CB6987130C9FC797B057), +(67403,'Win','x64','WoW',0xB8E645E203411CEE3C29871128EB4620), +(67403,'Win','x64','WoWC',0x5ED83A95B93FAD32FC6FCF167DD8CB94); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2060,7 +2067,8 @@ INSERT INTO `build_info` VALUES (67114,12,0,5,NULL), (67186,12,0,5,NULL), (67235,12,0,5,NULL), -(67314,12,0,5,NULL); +(67314,12,0,5,NULL), +(67403,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3673,7 +3681,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67314', + `gamebuild` int unsigned NOT NULL DEFAULT '67403', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3688,7 +3696,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67314,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67403,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4253,7 +4261,8 @@ INSERT INTO `updates` VALUES ('2026_04_23_00_auth.sql','7FF5A1098DDB029004A8822D2A1545878F269D25','RELEASED','2026-04-23 18:44:59',0), ('2026_04_24_00_auth.sql','8C1C15C9672C557D91E2AE61521F8063F6030F14','RELEASED','2026-04-24 09:39:50',0), ('2026_04_29_00_auth.sql','035B7C240CDAC17FDC883175D5C0ABAFA432FDDD','RELEASED','2026-04-29 00:00:29',0), -('2026_05_01_00_auth.sql','1E532962D6A6E618B2675EBCC7AE9E1EFE260CAA','RELEASED','2026-05-01 11:58:34',0); +('2026_05_01_00_auth.sql','1E532962D6A6E618B2675EBCC7AE9E1EFE260CAA','RELEASED','2026-05-01 11:58:34',0), +('2026_05_07_00_auth.sql','21E45190BB39F4EA4071E6FD0F47EF2238437A81','RELEASED','2026-05-07 22:51:10',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_05_07_00_auth.sql b/sql/updates/auth/master/2026_05_07_00_auth.sql new file mode 100644 index 0000000000000..4d2a853bb89a5 --- /dev/null +++ b/sql/updates/auth/master/2026_05_07_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67403); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67403,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67403 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67403,'Mac','A64','WoW',0xEE573F9EA729A9F9E090CDFBDA5BE22B), +(67403,'Mac','A64','WoWC',0x1C5A89C904201AD2B2A7DA370BD0E7B3), +(67403,'Mac','x64','WoW',0x96347A82EE58B9974108F24508251DC9), +(67403,'Mac','x64','WoWC',0xB041BFA73FBF99A6515368A5DEBF9DA2), +(67403,'Win','A64','WoW',0x0BE63FC149F0CB6987130C9FC797B057), +(67403,'Win','x64','WoW',0xB8E645E203411CEE3C29871128EB4620), +(67403,'Win','x64','WoWC',0x5ED83A95B93FAD32FC6FCF167DD8CB94); + +UPDATE `realmlist` SET `gamebuild`=67403 WHERE `gamebuild`=67314; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67403'; From d949df50454cc0da8051fec2bfd1b41550f331d2 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Fri, 8 May 2026 22:25:08 +0300 Subject: [PATCH 137/175] DB/Hallowfall: Added graveyards (#31833) --- sql/updates/world/2026_05_08_00_world.sql | 47 +++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 sql/updates/world/2026_05_08_00_world.sql diff --git a/sql/updates/world/2026_05_08_00_world.sql b/sql/updates/world/2026_05_08_00_world.sql new file mode 100644 index 0000000000000..a524127a8a96c --- /dev/null +++ b/sql/updates/world/2026_05_08_00_world.sql @@ -0,0 +1,47 @@ +SET @CGUID := 8000876; + +SET @GGUID := 100150; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+10; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 2601, 14838, 15032, '0', 0, 0, 0, 0, 2288.421875, -1979.5086669921875, 272.81451416015625, 1.357499003410339355, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Shadowmire) +(@CGUID+1, 6491, 2601, 14838, 14924, '0', 0, 0, 0, 0, 2642.052001953125, -1116.376708984375, -138.551437377929687, 3.848736047744750976, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Rumshackle) +(@CGUID+2, 6491, 2601, 14838, 14854, '0', 0, 0, 0, 0, 3466.694580078125, -608.40277099609375, 55.83907699584960937, 1.89326941967010498, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Hillhelm Stead) +(@CGUID+3, 6491, 2601, 14838, 14838, '0', 0, 0, 0, 0, 2916.520751953125, -7.40625, 106.33660888671875, 1.595125317573547363, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Hallowfall - East Coast) +(@CGUID+4, 6491, 2601, 14838, 15337, '0', 0, 0, 0, 0, 2851.013916015625, 1201.779541015625, 516.1177978515625, 4.81681680679321289, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Priory of the Sacred Flame) +(@CGUID+5, 6491, 2601, 14838, 15337, '0', 0, 0, 0, 0, 2798.9296875, 1267.24658203125, 545.48797607421875, 0, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Priory of the Sacred Flame - Upper) +(@CGUID+6, 6491, 2601, 14838, 14917, '0', 0, 0, 0, 0, 2023.8629150390625, 1068.4896240234375, 94.00238800048828125, 2.90085458755493164, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Mereldar) +(@CGUID+7, 6491, 2601, 14838, 14923, '0', 0, 0, 0, 0, 2069.079833984375, -525.20660400390625, -254.526641845703125, 1.434691190719604492, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Fangs) +(@CGUID+8, 6491, 2601, 14838, 15176, '0', 0, 0, 0, 0, 1586.8211669921875, -982.54864501953125, -132.1517333984375, 3.015602827072143554, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Sanguine Grasps) +(@CGUID+9, 6491, 2601, 14838, 14930, '0', 0, 0, 0, 0, 1653.859375, -257.442718505859375, -122.723045349121093, 6.065942764282226562, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Tenir\'s Ascent) +(@CGUID+10, 6491, 2601, 14838, 14838, '0', 0, 0, 0, 0, 718.44793701171875, 1388.6822509765625, -181.150299072265625, 0.51455467939376831, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186); -- Spirit Healer (Area: Hallowfall - West) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+10; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 14838, 'Hallowfall - Shadowmire'), +(@GGUID+1, 14838, 'Hallowfall - Rumshackle'), +(@GGUID+2, 14838, 'Hallowfall - Hillhelm Stead'), +(@GGUID+3, 14838, 'Hallowfall - East Coast'), +(@GGUID+4, 14838, 'Hallowfall - Priory of the Sacred Flame'), +(@GGUID+5, 14838, 'Hallowfall - Priory of the Sacred Flame Upper'), +(@GGUID+6, 14838, 'Hallowfall - Mereldar'), +(@GGUID+7, 14838, 'Hallowfall - The Fangs'), +(@GGUID+8, 14838, 'Hallowfall - Sanguine Grasps'), +(@GGUID+9, 14838, 'Hallowfall - Tenir\'s Ascent'), +(@GGUID+10, 14838, 'Hallowfall - West'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+10; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 2601, 2289.6875, -1973.8455, 270.75815, 4.487062 / (2 * PI() / 360), 'Hallowfall - Shadowmire - GY'), +(@GGUID+1, 2601, 2637.29, -1121.158, -140.15381, 0.787905 / (2 * PI() / 360), 'Hallowfall - Rumshackle - GY'), +(@GGUID+2, 2601, 3464.9653, -605.033, 55.07029, 2.141394 / (2 * PI() / 360), 'Hallowfall - Hillhelm Stead - GY'), +(@GGUID+3, 2601, 2915.087, 1.0503472, 106.47424, 4.869191 / (2 * PI() / 360), 'Hallowfall - East Coast - GY'), +(@GGUID+4, 2601, 2852.356, 1194.0486, 515.2062, 1.729972 / (2 * PI() / 360), 'Hallowfall - Priory of the Sacred Flame - GY'), +(@GGUID+5, 2601, 2798.9296875, 1267.24658203125, 545.48797607421875, 0, 'Hallowfall - Priory Upper - GY'), +(@GGUID+6, 2601, 2016.0452, 1071.1598, 93.9256, 5.943256 / (2 * PI() / 360), 'Hallowfall - Mereldar - GY'), +(@GGUID+7, 2601, 2067.92, -525.82, -254.454, 1.268409 / (2 * PI() / 360), 'Hallowfall - The Fangs - GY'), +(@GGUID+8, 2601, 1580.0226, -981.17365, -132.72205, 6.126051 / (2 * PI() / 360), 'Hallowfall - Sanguine Grasps - GY'), +(@GGUID+9, 2601, 1659.4618, -258.21527, -124.36241, 3.024867 / (2 * PI() / 360), 'Hallowfall - Tenir\'s Ascent - GY'), +(@GGUID+10, 2601, 722.84894, 1391.1702, -182.6997, 3.599679 / (2 * PI() / 360), 'Hallowfall - West - GY'); From f2ad44acae39feed1f50e25ef83aa612b2f9d8ee Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 8 May 2026 20:57:12 +0200 Subject: [PATCH 138/175] Core/Movement: Move ValidateMovementInfo back to WorldSession class to reduce differences between branches --- src/server/game/Entities/Player/Player.cpp | 89 --------- src/server/game/Entities/Player/Player.h | 2 - src/server/game/Handlers/MovementHandler.cpp | 179 +++++++++++++------ src/server/game/Handlers/VehicleHandler.cpp | 6 +- src/server/game/Server/WorldSession.h | 3 + 5 files changed, 125 insertions(+), 154 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 331f9e80f4a24..093f9d6c9184c 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -30640,95 +30640,6 @@ bool Player::CanUseMastery() const return false; } -void Player::ValidateMovementInfo(MovementInfo* mi) -{ - //! Anti-cheat checks. Please keep them in seperate if () blocks to maintain a clear overview. - //! Might be subject to latency, so just remove improper flags. - #ifdef TRINITY_DEBUG - #define REMOVE_VIOLATING_FLAGS(check, maskToRemove) \ - { \ - if (check) \ - { \ - TC_LOG_DEBUG("entities.unit", "Player::ValidateMovementInfo: Violation of MovementFlags found ({}). " \ - "MovementFlags: {}, MovementFlags2: {} for player {}. Mask {} will be removed.", \ - STRINGIZE(check), mi->GetMovementFlags(), mi->GetExtraMovementFlags(), GetGUID().ToString(), maskToRemove); \ - mi->RemoveMovementFlag((maskToRemove)); \ - } \ - } - #else - #define REMOVE_VIOLATING_FLAGS(check, maskToRemove) \ - if (check) \ - mi->RemoveMovementFlag((maskToRemove)); - #endif - - if (!m_unitMovedByMe->GetVehicleBase() || !(m_unitMovedByMe->GetVehicle()->GetVehicleInfo()->Flags & VEHICLE_FLAG_FIXED_POSITION)) - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT), MOVEMENTFLAG_ROOT); - - /*! This must be a packet spoofing attempt. MOVEMENTFLAG_ROOT sent from the client is not valid - in conjunction with any of the moving movement flags such as MOVEMENTFLAG_FORWARD. - It will freeze clients that receive this player's movement info. - */ - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT) && mi->HasMovementFlag(MOVEMENTFLAG_MASK_MOVING), - MOVEMENTFLAG_MASK_MOVING); - - //! Cannot hover without SPELL_AURA_HOVER - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && !m_unitMovedByMe->HasAuraType(SPELL_AURA_HOVER), - MOVEMENTFLAG_HOVER); - - //! Cannot ascend and descend at the same time - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ASCENDING) && mi->HasMovementFlag(MOVEMENTFLAG_DESCENDING), - MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING); - - //! Cannot move left and right at the same time - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_RIGHT), - MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT); - - //! Cannot strafe left and right at the same time - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_RIGHT), - MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT); - - //! Cannot pitch up and down at the same time - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_PITCH_UP) && mi->HasMovementFlag(MOVEMENTFLAG_PITCH_DOWN), - MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN); - - //! Cannot move forwards and backwards at the same time - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FORWARD) && mi->HasMovementFlag(MOVEMENTFLAG_BACKWARD), - MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD); - - //! Cannot walk on water without SPELL_AURA_WATER_WALK except for ghosts - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_WATERWALKING) && - !m_unitMovedByMe->HasAuraType(SPELL_AURA_WATER_WALK) && - !m_unitMovedByMe->HasAuraType(SPELL_AURA_GHOST), - MOVEMENTFLAG_WATERWALKING); - - //! Cannot feather fall without SPELL_AURA_FEATHER_FALL - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FALLING_SLOW) && !m_unitMovedByMe->HasAuraType(SPELL_AURA_FEATHER_FALL), - MOVEMENTFLAG_FALLING_SLOW); - - /*! Cannot fly if no fly auras present. Exception is being a GM. - Note that we check for account level instead of Player::IsGameMaster() because in some - situations it may be feasable to use .gm fly on as a GM without having .gm on, - e.g. aerial combat. - */ - - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSession()->GetSecurity() == SEC_PLAYER && - !m_unitMovedByMe->HasAuraType(SPELL_AURA_FLY) && - !m_unitMovedByMe->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && - !m_unitMovedByMe->HasAuraType(SPELL_AURA_ADV_FLYING), - MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY); - - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_CAN_FLY) && mi->HasMovementFlag(MOVEMENTFLAG_FALLING), - MOVEMENTFLAG_FALLING); - - REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION) && G3D::fuzzyEq(mi->stepUpStartElevation, 0.0f), MOVEMENTFLAG_SPLINE_ELEVATION); - - // Client first checks if spline elevation != 0, then verifies flag presence - if (G3D::fuzzyNe(mi->stepUpStartElevation, 0.0f)) - mi->AddMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION); - - #undef REMOVE_VIOLATING_FLAGS -} - void Player::SendSupercededSpell(uint32 oldSpell, uint32 newSpell) const { WorldPackets::Spells::SupercededSpells supercededSpells; diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 5de64e9e19462..3db23b216dc8e 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2869,8 +2869,6 @@ class TC_GAME_API Player final : public Unit, public GridObject bool IsInWhisperWhiteList(ObjectGuid guid); void RemoveFromWhisperWhiteList(ObjectGuid guid) { WhisperList.remove(guid); } - void ValidateMovementInfo(MovementInfo* mi); - void SendMovementSetCollisionHeight(float height, WorldPackets::Movement::UpdateCollisionHeightReason reason); bool CanFly() const override { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index bc8bd06e769cb..524e2a5a8f11d 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -45,6 +45,107 @@ #include #include +bool WorldSession::ValidateMovementInfo(MovementInfo* mi) const +{ + //! Anti-cheat checks. Please keep them in seperate if () blocks to maintain a clear overview. + //! Might be subject to latency, so just remove improper flags. + #ifdef TRINITY_DEBUG + #define REMOVE_VIOLATING_FLAGS(check, maskToRemove) do \ + { \ + if (check) \ + { \ + TC_LOG_DEBUG("entities.unit", "Player::ValidateMovementInfo: Violation of MovementFlags found ({}). " \ + "MovementFlags: {}, MovementFlags2: {}, MovementFlags3: {} for player {}. Mask {} will be removed.", \ + STRINGIZE(check), mi->GetMovementFlags(), mi->GetExtraMovementFlags(), mi->GetExtraMovementFlags2(), GetPlayer()->GetGUID(), maskToRemove); \ + mi->RemoveMovementFlag((maskToRemove)); \ + } \ + } while (0) + #else + #define REMOVE_VIOLATING_FLAGS(check, maskToRemove) do \ + { \ + if (check) \ + mi->RemoveMovementFlag((maskToRemove)); \ + } while (0) + #endif + + Unit* mover = _player->GetUnitBeingMoved(); + + if (!mover || mi->guid != mover->GetGUID()) + return false; + + if (!mi->pos.IsPositionValid()) + return false; + + if (!GetPlayer()->GetVehicleBase() || !(GetPlayer()->GetVehicle()->GetVehicleInfo()->Flags & VEHICLE_FLAG_FIXED_POSITION)) + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT), MOVEMENTFLAG_ROOT); + + /*! This must be a packet spoofing attempt. MOVEMENTFLAG_ROOT sent from the client is not valid + in conjunction with any of the moving movement flags such as MOVEMENTFLAG_FORWARD. + It will freeze clients that receive this player's movement info. + */ + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT) && mi->HasMovementFlag(MOVEMENTFLAG_MASK_MOVING), + MOVEMENTFLAG_MASK_MOVING); + + //! Cannot hover without SPELL_AURA_HOVER + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_HOVER) && !mover->HasAuraType(SPELL_AURA_HOVER), + MOVEMENTFLAG_HOVER); + + //! Cannot ascend and descend at the same time + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ASCENDING) && mi->HasMovementFlag(MOVEMENTFLAG_DESCENDING), + MOVEMENTFLAG_ASCENDING | MOVEMENTFLAG_DESCENDING); + + //! Cannot move left and right at the same time + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_RIGHT), + MOVEMENTFLAG_LEFT | MOVEMENTFLAG_RIGHT); + + //! Cannot strafe left and right at the same time + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_LEFT) && mi->HasMovementFlag(MOVEMENTFLAG_STRAFE_RIGHT), + MOVEMENTFLAG_STRAFE_LEFT | MOVEMENTFLAG_STRAFE_RIGHT); + + //! Cannot pitch up and down at the same time + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_PITCH_UP) && mi->HasMovementFlag(MOVEMENTFLAG_PITCH_DOWN), + MOVEMENTFLAG_PITCH_UP | MOVEMENTFLAG_PITCH_DOWN); + + //! Cannot move forwards and backwards at the same time + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FORWARD) && mi->HasMovementFlag(MOVEMENTFLAG_BACKWARD), + MOVEMENTFLAG_FORWARD | MOVEMENTFLAG_BACKWARD); + + //! Cannot walk on water without SPELL_AURA_WATER_WALK except for ghosts + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_WATERWALKING) && + !mover->HasAuraType(SPELL_AURA_WATER_WALK) && + !mover->HasAuraType(SPELL_AURA_GHOST), + MOVEMENTFLAG_WATERWALKING); + + //! Cannot feather fall without SPELL_AURA_FEATHER_FALL + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FALLING_SLOW) && !mover->HasAuraType(SPELL_AURA_FEATHER_FALL), + MOVEMENTFLAG_FALLING_SLOW); + + /*! Cannot fly if no fly auras present. Exception is being a GM. + Note that we check for account level instead of Player::IsGameMaster() because in some + situations it may be feasable to use .gm fly on as a GM without having .gm on, + e.g. aerial combat. + */ + + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY) && GetSecurity() == SEC_PLAYER && + !mover->HasAuraType(SPELL_AURA_FLY) && + !mover->HasAuraType(SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED) && + !mover->HasAuraType(SPELL_AURA_ADV_FLYING), + MOVEMENTFLAG_FLYING | MOVEMENTFLAG_CAN_FLY); + + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_DISABLE_GRAVITY | MOVEMENTFLAG_CAN_FLY) && mi->HasMovementFlag(MOVEMENTFLAG_FALLING), + MOVEMENTFLAG_FALLING); + + REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION) && G3D::fuzzyEq(mi->stepUpStartElevation, 0.0f), MOVEMENTFLAG_SPLINE_ELEVATION); + + // Client first checks if spline elevation != 0, then verifies flag presence + if (G3D::fuzzyNe(mi->stepUpStartElevation, 0.0f)) + mi->AddMovementFlag(MOVEMENTFLAG_SPLINE_ELEVATION); + + #undef REMOVE_VIOLATING_FLAGS + + return true; +} + void WorldSession::HandleMoveWorldportAckOpcode(WorldPackets::Movement::WorldPortResponse& /*packet*/) { if (_player->GetTeleportState() != TeleportState::WaitingForWorldPortAck) @@ -341,10 +442,10 @@ void WorldSession::HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMov void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movementInfo) { - Unit* mover = _player->GetUnitBeingMoved(); - - ASSERT(mover != nullptr); // there must always be a mover + if (!ValidateMovementInfo(&movementInfo)) + return; + Unit* mover = _player->GetUnitBeingMoved(); Player* plrMover = mover->ToPlayer(); TC_LOG_TRACE("opcodes.movement", "HandleMovementOpcode Name {}: opcode {} {} Flags {} Flags2 {} Pos {}", @@ -355,18 +456,6 @@ void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movem if (plrMover && plrMover->IsBeingTeleported()) return; - GetPlayer()->ValidateMovementInfo(&movementInfo); - - // prevent tampered movement data - if (movementInfo.guid != mover->GetGUID()) - { - TC_LOG_ERROR("network", "HandleMovementOpcodes: guid error"); - return; - } - - if (!movementInfo.pos.IsPositionValid()) - return; - if (!mover->movespline->Finalized()) return; @@ -521,11 +610,7 @@ void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movem void WorldSession::HandleForceSpeedChangeAck(WorldPackets::Movement::MovementSpeedAck& packet) { - - GetPlayer()->ValidateMovementInfo(&packet.Ack.Status); - - // now can skip not our packet - if (_player->GetGUID() != packet.Ack.Status.guid) + if (!ValidateMovementInfo(&packet.Ack.Status)) return; /*----------------*/ @@ -594,12 +679,12 @@ void WorldSession::HandleForceSpeedChangeAck(WorldPackets::Movement::MovementSpe void WorldSession::HandleSetAdvFlyingSpeedAck(WorldPackets::Movement::MovementSpeedAck& speedAck) { - GetPlayer()->ValidateMovementInfo(&speedAck.Ack.Status); + ValidateMovementInfo(&speedAck.Ack.Status); } void WorldSession::HandleSetAdvFlyingSpeedRangeAck(WorldPackets::Movement::MovementSpeedRangeAck& speedRangeAck) { - GetPlayer()->ValidateMovementInfo(&speedRangeAck.Ack.Status); + ValidateMovementInfo(&speedRangeAck.Ack.Status); } void WorldSession::HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet) @@ -611,9 +696,7 @@ void WorldSession::HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveM void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackAck& movementAck) { - GetPlayer()->ValidateMovementInfo(&movementAck.Ack.Status); - - if (_player->m_unitMovedByMe->GetGUID() != movementAck.Ack.Status.guid) + if (!ValidateMovementInfo(&movementAck.Ack.Status)) return; movementAck.Ack.Status.time = AdjustClientMovementTime(movementAck.Ack.Status.time); @@ -626,7 +709,7 @@ void WorldSession::HandleMoveKnockBackAck(WorldPackets::Movement::MoveKnockBackA void WorldSession::HandleMovementAckMessage(WorldPackets::Movement::MovementAckMessage& movementAck) { - GetPlayer()->ValidateMovementInfo(&movementAck.Ack.Status); + ValidateMovementInfo(&movementAck.Ack.Status); } void WorldSession::HandleSummonResponseOpcode(WorldPackets::Movement::SummonResponse& packet) @@ -639,23 +722,15 @@ void WorldSession::HandleSummonResponseOpcode(WorldPackets::Movement::SummonResp void WorldSession::HandleSetCollisionHeightAck(WorldPackets::Movement::MoveSetCollisionHeightAck& setCollisionHeightAck) { - GetPlayer()->ValidateMovementInfo(&setCollisionHeightAck.Data.Status); + ValidateMovementInfo(&setCollisionHeightAck.Data.Status); } void WorldSession::HandleMoveApplyMovementForceAck(WorldPackets::Movement::MoveApplyMovementForceAck& moveApplyMovementForceAck) { - Unit* mover = _player->m_unitMovedByMe; - ASSERT(mover != nullptr); - _player->ValidateMovementInfo(&moveApplyMovementForceAck.Ack.Status); - - // prevent tampered movement data - if (moveApplyMovementForceAck.Ack.Status.guid != mover->GetGUID()) - { - TC_LOG_ERROR("network", "HandleMoveApplyMovementForceAck: guid error, expected {}, got {}", - mover->GetGUID().ToString(), moveApplyMovementForceAck.Ack.Status.guid.ToString()); + if (!ValidateMovementInfo(&moveApplyMovementForceAck.Ack.Status)) return; - } + Unit* mover = _player->m_unitMovedByMe; moveApplyMovementForceAck.Ack.Status.time = AdjustClientMovementTime(moveApplyMovementForceAck.Ack.Status.time); WorldPackets::Movement::MoveUpdateApplyMovementForce updateApplyMovementForce; @@ -666,17 +741,10 @@ void WorldSession::HandleMoveApplyMovementForceAck(WorldPackets::Movement::MoveA void WorldSession::HandleMoveRemoveMovementForceAck(WorldPackets::Movement::MoveRemoveMovementForceAck& moveRemoveMovementForceAck) { - Unit* mover = _player->m_unitMovedByMe; - ASSERT(mover != nullptr); - _player->ValidateMovementInfo(&moveRemoveMovementForceAck.Ack.Status); - - // prevent tampered movement data - if (moveRemoveMovementForceAck.Ack.Status.guid != mover->GetGUID()) - { - TC_LOG_ERROR("network", "HandleMoveRemoveMovementForceAck: guid error, expected {}, got {}", - mover->GetGUID().ToString(), moveRemoveMovementForceAck.Ack.Status.guid.ToString()); + if (!ValidateMovementInfo(&moveRemoveMovementForceAck.Ack.Status)) return; - } + + Unit* mover = _player->m_unitMovedByMe; moveRemoveMovementForceAck.Ack.Status.time = AdjustClientMovementTime(moveRemoveMovementForceAck.Ack.Status.time); @@ -688,17 +756,10 @@ void WorldSession::HandleMoveRemoveMovementForceAck(WorldPackets::Movement::Move void WorldSession::HandleMoveSetModMovementForceMagnitudeAck(WorldPackets::Movement::MovementSpeedAck& setModMovementForceMagnitudeAck) { - Unit* mover = _player->m_unitMovedByMe; - ASSERT(mover != nullptr); // there must always be a mover - _player->ValidateMovementInfo(&setModMovementForceMagnitudeAck.Ack.Status); - - // prevent tampered movement data - if (setModMovementForceMagnitudeAck.Ack.Status.guid != mover->GetGUID()) - { - TC_LOG_ERROR("network", "HandleSetModMovementForceMagnitudeAck: guid error, expected {}, got {}", - mover->GetGUID().ToString(), setModMovementForceMagnitudeAck.Ack.Status.guid.ToString()); + if (!ValidateMovementInfo(&setModMovementForceMagnitudeAck.Ack.Status)) return; - } + + Unit* mover = _player->m_unitMovedByMe; // skip all except last if (_player->m_movementForceModMagnitudeChanges > 0) @@ -730,8 +791,8 @@ void WorldSession::HandleMoveSetModMovementForceMagnitudeAck(WorldPackets::Movem void WorldSession::HandleMoveSplineDoneOpcode(WorldPackets::Movement::MoveSplineDone& moveSplineDone) { - MovementInfo movementInfo = moveSplineDone.Status; - _player->ValidateMovementInfo(&movementInfo); + if (!ValidateMovementInfo(&moveSplineDone.Status)) + return; // in taxi flight packet received in 2 case: // 1) end taxi path in far (multi-node) flight diff --git a/src/server/game/Handlers/VehicleHandler.cpp b/src/server/game/Handlers/VehicleHandler.cpp index f6f0358f3ba2c..b0f0b57ece521 100644 --- a/src/server/game/Handlers/VehicleHandler.cpp +++ b/src/server/game/Handlers/VehicleHandler.cpp @@ -88,9 +88,7 @@ void WorldSession::HandleMoveChangeVehicleSeats(WorldPackets::Vehicle::MoveChang return; } - GetPlayer()->ValidateMovementInfo(&moveChangeVehicleSeats.Status); - - if (vehicle_base->GetGUID() != moveChangeVehicleSeats.Status.guid) + if (!ValidateMovementInfo(&moveChangeVehicleSeats.Status)) return; vehicle_base->m_movementInfo = moveChangeVehicleSeats.Status; @@ -196,5 +194,5 @@ void WorldSession::HandleRequestVehicleExit(WorldPackets::Vehicle::RequestVehicl void WorldSession::HandleMoveSetVehicleRecAck(WorldPackets::Vehicle::MoveSetVehicleRecIdAck& setVehicleRecIdAck) { - GetPlayer()->ValidateMovementInfo(&setVehicleRecIdAck.Data.Status); + ValidateMovementInfo(&setVehicleRecIdAck.Data.Status); } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index a2228a4aad4e1..3ee5d0ca96ca3 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -1369,6 +1369,9 @@ class TC_GAME_API WorldSession void HandleMoveWorldportAck(); // for server-side calls void HandleSuspendTokenResponse(WorldPackets::Movement::SuspendTokenResponse& suspendTokenResponse); + // Validates that correct unit is moved, coords are in valid range and movement flags + bool ValidateMovementInfo(MovementInfo* mi) const; + void HandleMovementOpcodes(WorldPackets::Movement::ClientPlayerMovement& packet); void HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movementInfo); void HandleSetActiveMoverOpcode(WorldPackets::Movement::SetActiveMover& packet); From 6f98fc436359cdeaf0961f0100a2d966a86b46b9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 8 May 2026 21:34:57 +0200 Subject: [PATCH 139/175] Core: Updated allowed build to 12.0.5.67451 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_05_08_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_05_08_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 88c834492064d..698753615a99e 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1617,7 +1617,14 @@ INSERT INTO `build_auth_key` VALUES (67403,'Mac','x64','WoWC',0xB041BFA73FBF99A6515368A5DEBF9DA2), (67403,'Win','A64','WoW',0x0BE63FC149F0CB6987130C9FC797B057), (67403,'Win','x64','WoW',0xB8E645E203411CEE3C29871128EB4620), -(67403,'Win','x64','WoWC',0x5ED83A95B93FAD32FC6FCF167DD8CB94); +(67403,'Win','x64','WoWC',0x5ED83A95B93FAD32FC6FCF167DD8CB94), +(67451,'Mac','A64','WoW',0x889201CF5539DADA1FFBFF71E0BBE280), +(67451,'Mac','A64','WoWC',0x4160C109D8DE331C89400BED2F05FC03), +(67451,'Mac','x64','WoW',0x9CA9D05C4B207F774B044494E1D708E1), +(67451,'Mac','x64','WoWC',0x410CDD2A04375CA5D0D88C349C52C55A), +(67451,'Win','A64','WoW',0x5C995E2429DE358EFE6EAB87AE04D875), +(67451,'Win','x64','WoW',0x79881A8B0B6482BD73DB99F9C69456EA), +(67451,'Win','x64','WoWC',0x2B20FCC4EDB252C81601F9C1E05A1C6B); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2068,7 +2075,8 @@ INSERT INTO `build_info` VALUES (67186,12,0,5,NULL), (67235,12,0,5,NULL), (67314,12,0,5,NULL), -(67403,12,0,5,NULL); +(67403,12,0,5,NULL), +(67451,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3681,7 +3689,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67403', + `gamebuild` int unsigned NOT NULL DEFAULT '67451', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3696,7 +3704,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67403,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67451,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4262,7 +4270,8 @@ INSERT INTO `updates` VALUES ('2026_04_24_00_auth.sql','8C1C15C9672C557D91E2AE61521F8063F6030F14','RELEASED','2026-04-24 09:39:50',0), ('2026_04_29_00_auth.sql','035B7C240CDAC17FDC883175D5C0ABAFA432FDDD','RELEASED','2026-04-29 00:00:29',0), ('2026_05_01_00_auth.sql','1E532962D6A6E618B2675EBCC7AE9E1EFE260CAA','RELEASED','2026-05-01 11:58:34',0), -('2026_05_07_00_auth.sql','21E45190BB39F4EA4071E6FD0F47EF2238437A81','RELEASED','2026-05-07 22:51:10',0); +('2026_05_07_00_auth.sql','21E45190BB39F4EA4071E6FD0F47EF2238437A81','RELEASED','2026-05-07 22:51:10',0), +('2026_05_08_00_auth.sql','3423C730BDA4A5406EED67D44612EE50C6A648A2','RELEASED','2026-05-08 20:58:04',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_05_08_00_auth.sql b/sql/updates/auth/master/2026_05_08_00_auth.sql new file mode 100644 index 0000000000000..ecf2b4c399d8b --- /dev/null +++ b/sql/updates/auth/master/2026_05_08_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67451); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67451,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67451 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67451,'Mac','A64','WoW',0x889201CF5539DADA1FFBFF71E0BBE280), +(67451,'Mac','A64','WoWC',0x4160C109D8DE331C89400BED2F05FC03), +(67451,'Mac','x64','WoW',0x9CA9D05C4B207F774B044494E1D708E1), +(67451,'Mac','x64','WoWC',0x410CDD2A04375CA5D0D88C349C52C55A), +(67451,'Win','A64','WoW',0x5C995E2429DE358EFE6EAB87AE04D875), +(67451,'Win','x64','WoW',0x79881A8B0B6482BD73DB99F9C69456EA), +(67451,'Win','x64','WoWC',0x2B20FCC4EDB252C81601F9C1E05A1C6B); + +UPDATE `realmlist` SET `gamebuild`=67451 WHERE `gamebuild`=67403; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67451'; From f057d89c5b8f8c677e78163b21a471f6ceb6a9ec Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 9 May 2026 21:05:51 +0200 Subject: [PATCH 140/175] Core/Position: Add StringFormat support for Position and WorldLocation --- .../game/AI/ScriptedAI/ScriptedEscortAI.cpp | 2 +- .../game/Battlegrounds/BattlegroundMgr.cpp | 2 +- src/server/game/Entities/Object/Object.cpp | 6 +-- src/server/game/Entities/Object/Position.cpp | 52 ++++++++++++++++--- src/server/game/Entities/Object/Position.h | 43 ++++++++++++++- src/server/game/Entities/Player/Player.cpp | 37 +++---------- src/server/game/Entities/Player/Player.h | 3 -- .../game/Globals/AreaTriggerDataStore.cpp | 4 +- src/server/game/Globals/ObjectMgr.cpp | 18 +++---- src/server/game/Handlers/MovementHandler.cpp | 4 +- src/server/game/Movement/MotionMaster.cpp | 2 +- .../instance_culling_of_stratholme.cpp | 2 +- 12 files changed, 111 insertions(+), 64 deletions(-) diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index 66ee41117d440..aca50860feac0 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -178,7 +178,7 @@ void EscortAI::UpdateAI(uint32 diff) { Position respawnPosition = me->GetRespawnPosition(); me->GetMotionMaster()->MovePoint(POINT_HOME, respawnPosition); - TC_LOG_DEBUG("scripts.ai.escortai", "EscortAI::UpdateAI: returning to spawn location: {} ({})", respawnPosition.ToString(), me->GetGUID().ToString()); + TC_LOG_DEBUG("scripts.ai.escortai", "EscortAI::UpdateAI: returning to spawn location: {} ({})", respawnPosition, me->GetGUID().ToString()); } else if (_instantRespawn) me->Respawn(true); diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp index af81984453463..3d86afd0df926 100644 --- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp +++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp @@ -487,7 +487,7 @@ void BattlegroundMgr::SendBattlegroundList(Player* player, ObjectGuid const& gui Team team = player->GetBGTeam(); WorldSafeLocsEntry const* pos = battleground->GetTeamStartPosition(Battleground::GetTeamIndexByTeamId(team)); - TC_LOG_DEBUG("bg.battleground", "BattlegroundMgr::SendToBattleground: Sending {} to map {}, {} (bgType {})", player->GetName(), mapid, pos->Loc.ToString(), battleground->GetTypeID()); + TC_LOG_DEBUG("bg.battleground", "BattlegroundMgr::SendToBattleground: Sending {} to map {}, {} (bgType {})", player->GetName(), mapid, pos->Loc, battleground->GetTypeID()); player->TeleportTo({ .Location = pos->Loc, .TransportGuid = pos->TransportSpawnId ? ObjectGuid::Create(*pos->TransportSpawnId) : ObjectGuid::Empty }); } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 02e92f27c37a5..7c1a5ae27029e 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -172,12 +172,12 @@ void MovementInfo::OutDebug() TC_LOG_DEBUG("misc", "flags2 {} ({})", Movement::MovementFlags_ToString(MovementFlags2(flags2)), flags2); TC_LOG_DEBUG("misc", "flags3 {} ({})", Movement::MovementFlags_ToString(MovementFlags3(flags3)), flags3); TC_LOG_DEBUG("misc", "time {} current time {}", time, getMSTime()); - TC_LOG_DEBUG("misc", "position: `{}`", pos.ToString()); + TC_LOG_DEBUG("misc", "position: `{}`", pos); if (!transport.guid.IsEmpty()) { TC_LOG_DEBUG("misc", "TRANSPORT:"); TC_LOG_DEBUG("misc", "{}", transport.guid.ToString()); - TC_LOG_DEBUG("misc", "position: `{}`", transport.pos.ToString()); + TC_LOG_DEBUG("misc", "position: `{}`", transport.pos); TC_LOG_DEBUG("misc", "seat: {}", transport.seat); TC_LOG_DEBUG("misc", "time: {}", transport.time); if (transport.prevTime) @@ -202,7 +202,7 @@ void MovementInfo::OutDebug() if (inertia) { TC_LOG_DEBUG("misc", "inertia->id: {}", inertia->id); - TC_LOG_DEBUG("misc", "inertia->force: {}", inertia->force.ToString()); + TC_LOG_DEBUG("misc", "inertia->force: {}", inertia->force); TC_LOG_DEBUG("misc", "inertia->lifetime: {}", inertia->lifetime); } diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp index 29e21a11ac6f8..2c75dafa7473d 100644 --- a/src/server/game/Entities/Object/Position.cpp +++ b/src/server/game/Entities/Object/Position.cpp @@ -201,7 +201,7 @@ bool Position::HasInLine(Position const* pos, float objSize, float width) const std::string Position::ToString() const { - return Trinity::StringFormat("X: {} Y: {} Z: {} O: {}", m_positionX, m_positionY, m_positionZ, m_orientation); + return Trinity::StringFormat("{}", *this); } float Position::NormalizeOrientation(float o) @@ -265,16 +265,56 @@ ByteBuffer& operator>>(ByteBuffer& buf, Position::Streamer const ByteBuffer& operator<<(ByteBuffer& buf, Position::ConstStreamer const& streamer) { int32 packed = 0; - packed |= (int32(streamer.Pos->GetPositionX() / 0.25f) & 0x7FF); - packed |= (int32(streamer.Pos->GetPositionY() / 0.25f) & 0x7FF) << 11; - packed |= (int32(streamer.Pos->GetPositionZ() / 0.25f) & 0x3FF) << 22; + packed |= (int32(streamer.Pos->GetPositionX() * 4.0f) & 0x7FF); + packed |= (int32(streamer.Pos->GetPositionY() * 4.0f) & 0x7FF) << 11; + packed |= (int32(streamer.Pos->GetPositionZ() * 4.0f) & 0x3FF) << 22; buf << int32(packed); return buf; } +ByteBuffer& operator>>(ByteBuffer& buf, Position::Streamer const& streamer) +{ + int32 packed; + buf >> packed; + streamer.Pos->Relocate(float((packed << 21) >> 21) * 0.25f, float((packed << 10) >> 21) * 0.25f, float(packed >> 22) * 0.25f); + return buf; +} + +template +auto fmt::formatter::format(Position const& position, FormatContext& ctx) const -> decltype(ctx.out()) +{ + return Trinity::StringFormatTo(ctx.out(), "X: {} Y: {} Z: {} O: {}", + position.GetPositionX(), position.GetPositionY(), position.GetPositionZ(), position.GetOrientation()); +} + +template +auto fmt::formatter::format(WorldLocation const& worldLocation, FormatContext& ctx) const -> decltype(ctx.out()) +{ + ctx.advance_to(Trinity::StringFormatTo(ctx.out(), "MapID: {} ", worldLocation.GetMapId())); + return fmt::formatter::format(worldLocation, ctx); +} + +template +auto fmt::formatter>::format(TaggedPosition const& position, FormatContext& ctx) const -> decltype(ctx.out()) +{ + return Trinity::StringFormatTo(ctx.out(), "X: {} Y: {}", + position.Pos.GetPositionX(), position.Pos.GetPositionY()); +} + +template +auto fmt::formatter>::format(TaggedPosition const& position, FormatContext& ctx) const -> decltype(ctx.out()) +{ + return Trinity::StringFormatTo(ctx.out(), "X: {} Y: {} Z: {}", + position.Pos.GetPositionX(), position.Pos.GetPositionY(), position.Pos.GetPositionZ()); +} + +template TC_GAME_API fmt::appender fmt::formatter::format(Position const&, format_context&) const; +template TC_GAME_API fmt::appender fmt::formatter::format(WorldLocation const&, format_context&) const; +template TC_GAME_API fmt::appender fmt::formatter>::format(TaggedPosition const&, format_context&) const; +template TC_GAME_API fmt::appender fmt::formatter>::format(TaggedPosition const&, format_context&) const; + std::string WorldLocation::GetDebugInfo() const { MapEntry const* mapEntry = sMapStore.LookupEntry(m_mapId); - return Trinity::StringFormat("MapID: {} Map name: '{}' {}", - m_mapId, mapEntry ? mapEntry->MapName[sWorld->GetDefaultDbcLocale()] : "", Position::ToString()); + return Trinity::StringFormat("Map name: '{}' {}", mapEntry ? mapEntry->MapName[sWorld->GetDefaultDbcLocale()] : "", *this); } diff --git a/src/server/game/Entities/Object/Position.h b/src/server/game/Entities/Object/Position.h index 14553c4a14bf9..a7ee9655503e2 100644 --- a/src/server/game/Entities/Object/Position.h +++ b/src/server/game/Entities/Object/Position.h @@ -19,6 +19,7 @@ #define Trinity_game_Position_h__ #include "Define.h" +#include "StringFormatFwd.h" #include #include #include @@ -226,6 +227,7 @@ TC_GAME_API ByteBuffer& operator>>(ByteBuffer& buf, Position::Streamer const& streamer); TC_GAME_API ByteBuffer& operator>>(ByteBuffer& buf, Position::Streamer const& streamer); TC_GAME_API ByteBuffer& operator<<(ByteBuffer& buf, Position::ConstStreamer const& streamer); +TC_GAME_API ByteBuffer& operator>>(ByteBuffer& buf, Position::Streamer const& streamer); template struct TaggedPosition @@ -244,8 +246,7 @@ struct TaggedPosition constexpr operator Position() const { return Pos; } - friend constexpr bool operator==(TaggedPosition const& left, TaggedPosition const& right) { return left.Pos == right.Pos; } - friend constexpr bool operator!=(TaggedPosition const& left, TaggedPosition const& right) { return left.Pos != right.Pos; } + friend bool operator==(TaggedPosition const& left, TaggedPosition const& right) = default; friend ByteBuffer& operator<<(ByteBuffer& buf, TaggedPosition const& tagged) { return buf << Position::ConstStreamer(tagged.Pos); } friend ByteBuffer& operator>>(ByteBuffer& buf, TaggedPosition& tagged) { return buf >> Position::Streamer(tagged.Pos); } @@ -253,4 +254,42 @@ struct TaggedPosition Position Pos; }; +template <> +struct fmt::formatter : Trinity::NoArgFormatterBase +{ + template + auto format(Position const& position, FormatContext& ctx) const -> decltype(ctx.out()); +}; + +template <> +struct fmt::formatter : fmt::formatter +{ + template + auto format(WorldLocation const& worldLocation, FormatContext& ctx) const -> decltype(ctx.out()); +}; + +template <> +struct fmt::formatter, char, void> : Trinity::NoArgFormatterBase +{ + template + auto format(TaggedPosition const& position, FormatContext& ctx) const -> decltype(ctx.out()); +}; + +template <> +struct fmt::formatter, char, void> : Trinity::NoArgFormatterBase +{ + template + auto format(TaggedPosition const& position, FormatContext& ctx) const -> decltype(ctx.out()); +}; + +template <> +struct fmt::formatter, char, void> : fmt::formatter +{ +}; + +template <> +struct fmt::formatter, char, void> : fmt::formatter, char, void> +{ +}; + #endif // Trinity_game_Position_h__ diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 093f9d6c9184c..6571994f686db 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1237,8 +1237,8 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti { if (!MapManager::IsValidMapCoord(teleportLocation.Location)) { - TC_LOG_ERROR("maps", "Player::TeleportTo: Invalid map ({}) or invalid coordinates ({}) given when teleporting player '{}' ({}, MapID: {}, {}).", - teleportLocation.Location.GetMapId(), teleportLocation.Location.ToString(), GetGUID().ToString(), GetName(), GetMapId(), GetPosition().ToString()); + TC_LOG_ERROR("maps", "Player::TeleportTo: Invalid map ({}) or invalid coordinates ({}) given when teleporting player '{}' ({}, {}).", + teleportLocation.Location, GetGUID().ToString(), GetName(), GetMapId(), GetPosition()); return false; } @@ -18401,7 +18401,7 @@ bool Player::LoadFromDB(ObjectGuid guid, CharacterDatabaseQueryHolder const& hol std::fabs(m_movementInfo.transport.pos.GetPositionZ()) > 250.0f) { TC_LOG_ERROR("entities.player.loading", "Player::LoadFromDB: Player ({}) has invalid transport coordinates ({}). Teleport to bind location.", - guid.ToString(), globalPosition.ToString()); + guid.ToString(), globalPosition); m_movementInfo.transport.Reset(); @@ -19666,7 +19666,7 @@ void Player::_LoadQuestStatus(PreparedQueryResult result) else endTime = 0; - TC_LOG_DEBUG("entities.player.loading", "Player::_LoadQuestStatus: Quest status is {{{}}} for quest {{{}}} for player ({})", questStatusData.Status, quest_id, GetGUID().ToString()); + TC_LOG_DEBUG("entities.player.loading", "Player::_LoadQuestStatus: Quest status is {} for quest {} for player ({})", questStatusData.Status, quest_id, GetGUID().ToString()); // add to quest log if (slot < MAX_QUEST_LOG_SIZE && questStatusData.Status != QUEST_STATUS_NONE) @@ -19990,8 +19990,8 @@ void Player::_LoadStoredAuraTeleportLocations(PreparedQueryResult result) WorldLocation location(fields[1].GetUInt32(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat(), fields[5].GetFloat()); if (!MapManager::IsValidMapCoord(location)) { - TC_LOG_ERROR("spells", "Player::_LoadStoredAuraTeleportLocations: Player {} ({}) spell (ID: {}) has invalid position on map {}, {{{}}}.", - GetName(), GetGUID().ToString(), spellId, location.GetMapId(), location.ToString()); + TC_LOG_ERROR("spells", "Player::_LoadStoredAuraTeleportLocations: Player {} ({}) spell (ID: {}) has invalid position {}.", + GetName(), GetGUID().ToString(), spellId, location); continue; } @@ -30508,31 +30508,6 @@ bool Player::IsFriendlyArea(AreaTableEntry const* areaEntry) const return true; } -std::string Player::GetMapAreaAndZoneString() const -{ - uint32 areaId = GetAreaId(); - std::string areaName = "Unknown"; - std::string zoneName = "Unknown"; - if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(areaId)) - { - areaName = area->AreaName[GetSession()->GetSessionDbcLocale()]; - if (area->GetFlags().HasFlag(AreaFlags::IsSubzone)) - if (AreaTableEntry const* zone = sAreaTableStore.LookupEntry(area->ParentAreaID)) - zoneName = zone->AreaName[GetSession()->GetSessionDbcLocale()]; - } - - std::ostringstream str; - str << "Map: " << GetMapId() << " (" << (FindMap() ? FindMap()->GetMapName() : "Unknown") << ") Area: " << areaId << " (" << areaName.c_str() << ") Zone: " << zoneName.c_str(); - return str.str(); -} - -std::string Player::GetCoordsMapAreaAndZoneString() const -{ - std::ostringstream str; - str << Position::ToString() << " " << GetMapAreaAndZoneString(); - return str.str(); -} - Guild* Player::GetGuild() { ObjectGuid::LowType guildId = GetGuildId(); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 3db23b216dc8e..82fde95e35750 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2874,9 +2874,6 @@ class TC_GAME_API Player final : public Unit, public GridObject bool CanFly() const override { return m_movementInfo.HasMovementFlag(MOVEMENTFLAG_CAN_FLY); } bool CanEnterWater() const override { return true; } - std::string GetMapAreaAndZoneString() const; - std::string GetCoordsMapAreaAndZoneString() const; - // Reagent Bank bool IsReagentBankUnlocked() const { return HasPlayerFlagEx(PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED); } void UnlockReagentBank() { SetPlayerFlagEx(PLAYER_FLAGS_EX_REAGENT_BANK_UNLOCKED); } diff --git a/src/server/game/Globals/AreaTriggerDataStore.cpp b/src/server/game/Globals/AreaTriggerDataStore.cpp index 2f24533672582..db329ff03c5e9 100644 --- a/src/server/game/Globals/AreaTriggerDataStore.cpp +++ b/src/server/game/Globals/AreaTriggerDataStore.cpp @@ -417,8 +417,8 @@ void AreaTriggerDataStore::LoadAreaTriggerSpawns() if (!MapManager::IsValidMapCoord(location)) { - TC_LOG_ERROR("sql.sql", "Table `areatrigger` has listed an invalid position: SpawnId: {}, MapId {}, Position {{}}", - spawnId, location.GetMapId(), location.ToString()); + TC_LOG_ERROR("sql.sql", "Table `areatrigger` has listed an invalid position: SpawnId: {}, Location {}", + spawnId, location); continue; } diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index f27842a09fd2d..bfdc3a5de3ac0 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -2211,7 +2211,7 @@ void ObjectMgr::LoadCreatures() VMAP::LoadResult result = vmgr->existsMap(sWorld->GetDataPath() + "vmaps", data.mapId, gx, gy); if (result != VMAP::LoadResult::Success) TC_LOG_ERROR("sql.sql", "Table `creature` has creature (GUID: {} Entry: {} MapID: {}) spawned on a possible invalid position ({})", - guid, data.id, data.mapId, data.spawnPoint.ToString()); + guid, data.id, data.mapId, data.spawnPoint); } } } @@ -2567,7 +2567,7 @@ void ObjectMgr::LoadGameObjects() VMAP::LoadResult result = vmgr->existsMap(sWorld->GetDataPath() + "vmaps", data.mapId, gx, gy); if (result != VMAP::LoadResult::Success) TC_LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: {} Entry: {} MapID: {}) spawned on a possible invalid position ({})", - guid, data.id, data.mapId, data.spawnPoint.ToString()); + guid, data.id, data.mapId, data.spawnPoint); } } } @@ -7030,7 +7030,7 @@ void ObjectMgr::LoadWorldSafeLocs() WorldLocation loc(fields[1].GetUInt32(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat(), DegToRad(fields[5].GetFloat())); if (!MapManager::IsValidMapCoord(loc)) { - TC_LOG_ERROR("sql.sql", "World location (ID: {}) has a invalid position MapID: {} {}, skipped", id, loc.GetMapId(), loc.ToString()); + TC_LOG_ERROR("sql.sql", "World location (ID: {}) has a invalid position {}, skipped", id, loc); continue; } @@ -10055,16 +10055,12 @@ CreatureBaseStats const* ObjectMgr::GetCreatureBaseStats(uint8 level, uint8 unit if (it != _creatureBaseStatsStore.end()) return &(it->second); - struct DefaultCreatureBaseStats : public CreatureBaseStats + static constexpr CreatureBaseStats defStats { - DefaultCreatureBaseStats() - { - BaseMana = 0; - AttackPower = 0; - RangedAttackPower = 0; - } + .BaseMana = 0, + .AttackPower = 0, + .RangedAttackPower = 0 }; - static const DefaultCreatureBaseStats defStats; return &defStats; } diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index 524e2a5a8f11d..146fd415eb1f4 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -448,9 +448,9 @@ void WorldSession::HandleMovementOpcode(OpcodeClient opcode, MovementInfo& movem Unit* mover = _player->GetUnitBeingMoved(); Player* plrMover = mover->ToPlayer(); - TC_LOG_TRACE("opcodes.movement", "HandleMovementOpcode Name {}: opcode {} {} Flags {} Flags2 {} Pos {}", + TC_LOG_TRACE("opcodes.movement", "HandleMovementOpcode Name {}: opcode {} {} Flags {} Flags2 {} Flags3 {} Pos {}", mover->GetName(), opcode, GetOpcodeNameForLogging(opcode), - movementInfo.flags, movementInfo.flags2, movementInfo.pos.ToString()); + movementInfo.flags, movementInfo.flags2, movementInfo.flags3, movementInfo.pos); // ignore, waiting processing in WorldSession::HandleMoveWorldportAckOpcode and WorldSession::HandleMoveTeleportAck if (plrMover && plrMover->IsBeingTeleported()) diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp index 071aad90b2d62..e8e4d709af833 100644 --- a/src/server/game/Movement/MotionMaster.cpp +++ b/src/server/game/Movement/MotionMaster.cpp @@ -864,7 +864,7 @@ void MotionMaster::MoveJump(uint32 id, Position const& pos, std::variant&& scriptResult /*= {}*/) { - TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MoveJump: '{}', jumps to point Id: {} ({})", _owner->GetGUID(), id, pos.ToString()); + TC_LOG_DEBUG("movement.motionmaster", "MotionMaster::MoveJump: '{}', jumps to point Id: {} ({})", _owner->GetGUID(), id, pos); float dist = _owner->GetExactDist(pos); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp index 30fc63a5796a8..aef26c3c1881e 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp @@ -600,7 +600,7 @@ class instance_culling_of_stratholme : public InstanceMapScript _plagueCrates.push_back(creature->GetGUID()); break; case NPC_ARTHAS: - TC_LOG_DEBUG("scripts.cos", "instance_culling_of_stratholme::OnCreatureCreate: Arthas spawned at {}", creature->GetPosition().ToString()); + TC_LOG_DEBUG("scripts.cos", "instance_culling_of_stratholme::OnCreatureCreate: Arthas spawned at {}", creature->GetPosition()); _arthasGUID = creature->GetGUID(); creature->setActive(true); break; From 648343e7a4a51638ece01118f8ae9f4b2deb5cfe Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sat, 9 May 2026 22:34:53 +0300 Subject: [PATCH 141/175] Core/Misc: Update QuestSort enum for 12.0.5 (#31838) --- src/server/game/Miscellaneous/SharedDefines.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index a4bc7a5bb92f3..ebf52eb3059b7 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -5607,7 +5607,7 @@ enum QuestInfo QUEST_INFO_PREY_WORLD_QUEST = 295 }; -// QuestSort.dbc (11.2.5.62687) +// QuestSort.db2 (12.0.5.67186) enum QuestSort { QUEST_SORT_EPIC = 1, @@ -5791,8 +5791,19 @@ enum QuestSort QUEST_SORT_META_QUESTS = 645, QUEST_SORT_SECRETS_OF_AZEROTH = 646, QUEST_SORT_LOREWALKING = 647, + QUEST_SORT_MIDNIGHT = 649, + QUEST_SORT_ABUNDANCE = 650, QUEST_SORT_DASTARDLY_DUOS = 651, QUEST_SORT_DELVES = 652, + QUEST_SORT_ARATORS_JOURNEY = 653, + QUEST_SORT_NEIGHBORHOOD = 655, + QUEST_SORT_PREY = 656, + QUEST_SORT_CATCH_UP = 657, + QUEST_SORT_SIEGE_OF_ARATHI_HIGHLANDS = 658, + QUEST_SORT_DEPTH_DIVERS = 659, + QUEST_SORT_CLOAK_AND_CAPTURE = 661, + QUEST_SORT_HARANIR = 664, + QUEST_SORT_DECOR_DUEL = 665, }; constexpr uint8 ClassByQuestSort(int32 QuestSort) From e49105cb6840db70a751e9bb7e0ad05192d5df1a Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 14:40:49 +0200 Subject: [PATCH 142/175] Core/Misc: Changed compiler detection to better support compilers that pretend to be something else, such as clang-cl is both msvc and clang at the same time --- src/common/CompilerDefs.h | 48 +++++++++++++++---- src/common/Debugging/Errors.cpp | 2 +- src/common/Debugging/Errors.h | 2 +- src/common/Define.h | 12 ++--- src/common/Logging/Log.h | 2 +- src/common/Utilities/Memory.h | 4 +- src/common/Utilities/StartProcess.cpp | 4 +- src/common/Utilities/StringConvert.h | 2 +- src/server/bnetserver/Main.cpp | 2 +- src/server/game/Entities/Object/BaseEntity.h | 4 +- .../Entities/Object/Updates/UpdateFields.cpp | 4 +- src/server/scripts/Commands/cs_ban.cpp | 2 +- src/server/scripts/Commands/cs_group.cpp | 2 +- src/server/scripts/Commands/cs_guild.cpp | 2 +- src/server/scripts/Commands/cs_lookup.cpp | 2 +- src/server/scripts/Commands/cs_misc.cpp | 2 +- src/server/scripts/Commands/cs_mmaps.cpp | 2 +- src/server/scripts/Commands/cs_modify.cpp | 2 +- src/server/scripts/Commands/cs_reload.cpp | 2 +- src/server/scripts/Commands/cs_reset.cpp | 2 +- src/server/scripts/Commands/cs_send.cpp | 2 +- src/server/scripts/Commands/cs_server.cpp | 2 +- src/server/scripts/Commands/cs_ticket.cpp | 2 +- src/server/worldserver/Main.cpp | 2 +- src/tools/map_extractor/System.cpp | 2 +- src/tools/mmaps_generator/PathGenerator.cpp | 2 +- src/tools/vmap4_assembler/VMapAssembler.cpp | 2 +- src/tools/vmap4_extractor/vmapexport.cpp | 2 +- 28 files changed, 75 insertions(+), 45 deletions(-) diff --git a/src/common/CompilerDefs.h b/src/common/CompilerDefs.h index 4003fbe77e95e..7a3d6ad7feb97 100644 --- a/src/common/CompilerDefs.h +++ b/src/common/CompilerDefs.h @@ -30,19 +30,49 @@ # define TRINITY_PLATFORM TRINITY_PLATFORM_UNIX #endif -#define TRINITY_COMPILER_MICROSOFT 0 -#define TRINITY_COMPILER_GNU 1 -#define TRINITY_COMPILER_INTEL 2 +#define TRINITY_COMPILER_MICROSOFT_FLAG(on) ((on) << 0) +#define TRINITY_COMPILER_GCC_FLAG(on) ((on) << 1) +#define TRINITY_COMPILER_CLANG_FLAG(on) ((on) << 2) +#define TRINITY_COMPILER_INTEL_FLAG(on) ((on) << 3) #ifdef _MSC_VER -# define TRINITY_COMPILER TRINITY_COMPILER_MICROSOFT -#elif defined( __INTEL_COMPILER ) -# define TRINITY_COMPILER TRINITY_COMPILER_INTEL -#elif defined( __GNUC__ ) -# define TRINITY_COMPILER TRINITY_COMPILER_GNU -# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +# define TRINITY_COMPILER_MICROSOFT_DETECTED 1 #else +# define TRINITY_COMPILER_MICROSOFT_DETECTED 0 +#endif + +#ifdef __GNUC__ +# define TRINITY_COMPILER_GCC_DETECTED 1 +#else +# define TRINITY_COMPILER_GCC_DETECTED 0 +#endif + +#ifdef __clang__ +# define TRINITY_COMPILER_CLANG_DETECTED 1 +#else +# define TRINITY_COMPILER_CLANG_DETECTED 0 +#endif + +#ifdef __INTEL_COMPILER +# define TRINITY_COMPILER_INTEL_DETECTED 1 +#else +# define TRINITY_COMPILER_INTEL_DETECTED 0 +#endif + +#define TRINITY_COMPILER \ + ( TRINITY_COMPILER_MICROSOFT_FLAG(TRINITY_COMPILER_MICROSOFT_DETECTED) \ + | TRINITY_COMPILER_GCC_FLAG(TRINITY_COMPILER_GCC_DETECTED) \ + | TRINITY_COMPILER_CLANG_FLAG(TRINITY_COMPILER_CLANG_DETECTED) \ + | TRINITY_COMPILER_INTEL_FLAG(TRINITY_COMPILER_INTEL_DETECTED) ) + +#if TRINITY_COMPILER == 0 # error "FATAL ERROR: Unknown compiler." #endif +#define TRINITY_COMPILER_IS(compiler) (((TRINITY_COMPILER) & (compiler)) != 0) +#define TRINITY_COMPILER_IS_MICROSOFT TRINITY_COMPILER_IS(TRINITY_COMPILER_MICROSOFT_FLAG(1)) +#define TRINITY_COMPILER_IS_GCC TRINITY_COMPILER_IS(TRINITY_COMPILER_GCC_FLAG(1)) +#define TRINITY_COMPILER_IS_CLANG TRINITY_COMPILER_IS(TRINITY_COMPILER_CLANG_FLAG(1)) +#define TRINITY_COMPILER_IS_INTEL TRINITY_COMPILER_IS(TRINITY_COMPILER_INTEL_FLAG(1)) + #endif diff --git a/src/common/Debugging/Errors.cpp b/src/common/Debugging/Errors.cpp index c333aa24ec06c..ab25657cef671 100644 --- a/src/common/Debugging/Errors.cpp +++ b/src/common/Debugging/Errors.cpp @@ -33,7 +33,7 @@ terminates the application. */ -#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT +#if TRINITY_COMPILER_IS_MICROSOFT #define Unreachable() (__assume(false)) #else #define Unreachable() (__builtin_unreachable()) diff --git a/src/common/Debugging/Errors.h b/src/common/Debugging/Errors.h index 913b4898b4fae..81d06a0d441bd 100644 --- a/src/common/Debugging/Errors.h +++ b/src/common/Debugging/Errors.h @@ -52,7 +52,7 @@ namespace Trinity } } // namespace Trinity -#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT +#if TRINITY_COMPILER_IS_MICROSOFT #define ASSERT_BEGIN __pragma(warning(push)) __pragma(warning(disable: 4127)) #define ASSERT_END __pragma(warning(pop)) #else diff --git a/src/common/Define.h b/src/common/Define.h index 32862f715306c..aa14d7035c058 100644 --- a/src/common/Define.h +++ b/src/common/Define.h @@ -20,7 +20,7 @@ #include "CompilerDefs.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC # if !defined(__STDC_FORMAT_MACROS) # define __STDC_FORMAT_MACROS # endif @@ -72,17 +72,17 @@ # define TRINITY_INLINE #endif //!COREDEBUG -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC # define ATTR_PRINTF(F, V) __attribute__ ((__format__ (__printf__, F, V))) -#else //TRINITY_COMPILER != TRINITY_COMPILER_GNU +#else //TRINITY_COMPILER_IS_GCC # define ATTR_PRINTF(F, V) -#endif //TRINITY_COMPILER == TRINITY_COMPILER_GNU +#endif //TRINITY_COMPILER_IS_GCC #ifdef TRINITY_API_USE_DYNAMIC_LINKING -# if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT +# if TRINITY_COMPILER_IS_MICROSOFT # define TC_API_EXPORT __declspec(dllexport) # define TC_API_IMPORT __declspec(dllimport) -# elif TRINITY_COMPILER == TRINITY_COMPILER_GNU +# elif TRINITY_COMPILER_IS_GCC # define TC_API_EXPORT __attribute__((visibility("default"))) # define TC_API_IMPORT # else diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h index 5621ec67f86d4..59224aac50f5f 100644 --- a/src/common/Logging/Log.h +++ b/src/common/Logging/Log.h @@ -165,7 +165,7 @@ class TC_COMMON_API Log #ifdef PERFORMANCE_PROFILING #define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) ((void)0) -#elif TRINITY_PLATFORM != TRINITY_PLATFORM_WINDOWS +#elif !TRINITY_COMPILER_IS_MICROSOFT #define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) TC_LOG_MESSAGE_BODY_CORE(filterType__, level__, message__, ## __VA_ARGS__) #else #define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) \ diff --git a/src/common/Utilities/Memory.h b/src/common/Utilities/Memory.h index 706a471e3da91..7cc0d95995ac7 100644 --- a/src/common/Utilities/Memory.h +++ b/src/common/Utilities/Memory.h @@ -22,7 +22,7 @@ #include #include -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wignored-attributes" #endif @@ -167,7 +167,7 @@ inline std::unique_ptr> make_uni } } -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic pop #endif diff --git a/src/common/Utilities/StartProcess.cpp b/src/common/Utilities/StartProcess.cpp index 80c83bf63e9c5..1252bed774a8d 100644 --- a/src/common/Utilities/StartProcess.cpp +++ b/src/common/Utilities/StartProcess.cpp @@ -75,7 +75,7 @@ class AsyncProcessResultImplementation { ASSERT(!my_child, "Process started already!"); -#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT +#if TRINITY_COMPILER_IS_MICROSOFT #pragma warning(push) #pragma warning(disable:4297) /* @@ -89,7 +89,7 @@ class AsyncProcessResultImplementation #endif bp::ipstream outStream; bp::ipstream errStream; -#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT +#if TRINITY_COMPILER_IS_MICROSOFT #pragma warning(pop) #endif diff --git a/src/common/Utilities/StringConvert.h b/src/common/Utilities/StringConvert.h index ebe33cee72159..1ed95122af25c 100644 --- a/src/common/Utilities/StringConvert.h +++ b/src/common/Utilities/StringConvert.h @@ -174,7 +174,7 @@ namespace Trinity::Impl::StringConvertImpl } }; -#if TRINITY_COMPILER == TRINITY_COMPILER_MICROSOFT +#if TRINITY_COMPILER_IS_MICROSOFT template struct For>> { diff --git a/src/server/bnetserver/Main.cpp b/src/server/bnetserver/Main.cpp index 5f2d8d35e9686..29ab540edc4fe 100644 --- a/src/server/bnetserver/Main.cpp +++ b/src/server/bnetserver/Main.cpp @@ -437,7 +437,7 @@ variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile, f return variablesMap; } -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_COMPILER_IS_MICROSOFT #include "WheatyExceptionReport.h" // must be at end of file because of init_seg pragma INIT_CRASH_HANDLER(); diff --git a/src/server/game/Entities/Object/BaseEntity.h b/src/server/game/Entities/Object/BaseEntity.h index d4919231c5509..5b7a54618076d 100644 --- a/src/server/game/Entities/Object/BaseEntity.h +++ b/src/server/game/Entities/Object/BaseEntity.h @@ -371,14 +371,14 @@ class TC_GAME_API BaseEntity inline BaseEntity* UF::UpdateFieldHolder::GetOwner() { -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GNU #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Winvalid-offsetof" #endif return reinterpret_cast(reinterpret_cast(this) - offsetof(BaseEntity, m_values)); -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GNU #pragma GCC diagnostic pop #endif } diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index 09cbcc7cfb08c..0a2a1e3d12108 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -27,7 +27,7 @@ // This file is automatically generated, DO NOT EDIT -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #else @@ -10535,7 +10535,7 @@ void PlayerInitiativeComponentData::ClearChangesMask() } -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic pop #else #pragma warning(pop) diff --git a/src/server/scripts/Commands/cs_ban.cpp b/src/server/scripts/Commands/cs_ban.cpp index 45e94e6e61099..6c23fb11d92ac 100644 --- a/src/server/scripts/Commands/cs_ban.cpp +++ b/src/server/scripts/Commands/cs_ban.cpp @@ -37,7 +37,7 @@ EndScriptData */ #include "World.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_group.cpp b/src/server/scripts/Commands/cs_group.cpp index 599404143084b..4121274442d27 100644 --- a/src/server/scripts/Commands/cs_group.cpp +++ b/src/server/scripts/Commands/cs_group.cpp @@ -33,7 +33,7 @@ #include "RBAC.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_guild.cpp b/src/server/scripts/Commands/cs_guild.cpp index c81b5f018f43f..6c1698aa20f02 100644 --- a/src/server/scripts/Commands/cs_guild.cpp +++ b/src/server/scripts/Commands/cs_guild.cpp @@ -36,7 +36,7 @@ EndScriptData */ #include "Util.h" #include -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_lookup.cpp b/src/server/scripts/Commands/cs_lookup.cpp index 51a8ecf37e76b..86259d9b5cdbc 100644 --- a/src/server/scripts/Commands/cs_lookup.cpp +++ b/src/server/scripts/Commands/cs_lookup.cpp @@ -38,7 +38,7 @@ EndScriptData */ #include "WorldSession.h" #include -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 32740be9d8d5e..2f6358801d8a9 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -49,7 +49,7 @@ #include "World.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_mmaps.cpp b/src/server/scripts/Commands/cs_mmaps.cpp index 26afee7bfecf4..3a1bd3a6f0a07 100644 --- a/src/server/scripts/Commands/cs_mmaps.cpp +++ b/src/server/scripts/Commands/cs_mmaps.cpp @@ -37,7 +37,7 @@ #include "RBAC.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_modify.cpp b/src/server/scripts/Commands/cs_modify.cpp index f2cc27925035e..616d4d76280d6 100644 --- a/src/server/scripts/Commands/cs_modify.cpp +++ b/src/server/scripts/Commands/cs_modify.cpp @@ -41,7 +41,7 @@ EndScriptData */ using namespace Trinity::ChatCommands; -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp index 2f2b836166604..e8e15dd014ac1 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -51,7 +51,7 @@ EndScriptData */ #include "WaypointManager.h" #include "World.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_reset.cpp b/src/server/scripts/Commands/cs_reset.cpp index 0af5e0df95e09..a9fca99357de2 100644 --- a/src/server/scripts/Commands/cs_reset.cpp +++ b/src/server/scripts/Commands/cs_reset.cpp @@ -37,7 +37,7 @@ EndScriptData */ #include "World.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_send.cpp b/src/server/scripts/Commands/cs_send.cpp index f221141bf5949..6e89b0da98b81 100644 --- a/src/server/scripts/Commands/cs_send.cpp +++ b/src/server/scripts/Commands/cs_send.cpp @@ -27,7 +27,7 @@ #include "RBAC.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index 22ffaf1a1b847..d47a77f1884e5 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -47,7 +47,7 @@ EndScriptData */ #include #include -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/scripts/Commands/cs_ticket.cpp b/src/server/scripts/Commands/cs_ticket.cpp index a962a42f4823c..3580e7763e35c 100644 --- a/src/server/scripts/Commands/cs_ticket.cpp +++ b/src/server/scripts/Commands/cs_ticket.cpp @@ -35,7 +35,7 @@ EndScriptData */ #include "World.h" #include "WorldSession.h" -#if TRINITY_COMPILER == TRINITY_COMPILER_GNU +#if TRINITY_COMPILER_IS_GCC #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif diff --git a/src/server/worldserver/Main.cpp b/src/server/worldserver/Main.cpp index cb6903080fa47..33df2ee05f1b4 100644 --- a/src/server/worldserver/Main.cpp +++ b/src/server/worldserver/Main.cpp @@ -734,7 +734,7 @@ variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile, f return vm; } -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_COMPILER_IS_MICROSOFT #include "WheatyExceptionReport.h" // must be at end of file because of init_seg pragma INIT_CRASH_HANDLER(); diff --git a/src/tools/map_extractor/System.cpp b/src/tools/map_extractor/System.cpp index 64016200fadae..a3b5a5a0d23cc 100644 --- a/src/tools/map_extractor/System.cpp +++ b/src/tools/map_extractor/System.cpp @@ -1576,7 +1576,7 @@ int main(int argc, char * arg[]) return 0; } -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_COMPILER_IS_MICROSOFT #include "WheatyExceptionReport.h" // must be at end of file because of init_seg pragma INIT_CRASH_HANDLER(); diff --git a/src/tools/mmaps_generator/PathGenerator.cpp b/src/tools/mmaps_generator/PathGenerator.cpp index 7204da980a331..ff9f1a7a2d21e 100644 --- a/src/tools/mmaps_generator/PathGenerator.cpp +++ b/src/tools/mmaps_generator/PathGenerator.cpp @@ -509,7 +509,7 @@ int main(int argc, char** argv) return 0; } -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_COMPILER_IS_MICROSOFT #include "WheatyExceptionReport.h" // must be at end of file because of init_seg pragma INIT_CRASH_HANDLER(); diff --git a/src/tools/vmap4_assembler/VMapAssembler.cpp b/src/tools/vmap4_assembler/VMapAssembler.cpp index 5cdc214665eab..20c3f13fb3e36 100644 --- a/src/tools/vmap4_assembler/VMapAssembler.cpp +++ b/src/tools/vmap4_assembler/VMapAssembler.cpp @@ -112,7 +112,7 @@ Optional HandleArgs(int argc, char* argv[], std::string* src, std::string* return {}; } -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_COMPILER_IS_MICROSOFT #include "WheatyExceptionReport.h" // must be at end of file because of init_seg pragma INIT_CRASH_HANDLER(); diff --git a/src/tools/vmap4_extractor/vmapexport.cpp b/src/tools/vmap4_extractor/vmapexport.cpp index 5600d411c5a3d..704893415b698 100644 --- a/src/tools/vmap4_extractor/vmapexport.cpp +++ b/src/tools/vmap4_extractor/vmapexport.cpp @@ -736,7 +736,7 @@ int main(int argc, char ** argv) return 0; } -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_COMPILER_IS_MICROSOFT #include "WheatyExceptionReport.h" // must be at end of file because of init_seg pragma INIT_CRASH_HANDLER(); From 1d029b8ba08a9148033f4fa8cc4bc49c40a7db1d Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 14:41:43 +0200 Subject: [PATCH 143/175] Core/Objects: Silence clang warning on windows --- src/server/game/Entities/Object/BaseEntity.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Object/BaseEntity.h b/src/server/game/Entities/Object/BaseEntity.h index 5b7a54618076d..c64828808de86 100644 --- a/src/server/game/Entities/Object/BaseEntity.h +++ b/src/server/game/Entities/Object/BaseEntity.h @@ -371,14 +371,14 @@ class TC_GAME_API BaseEntity inline BaseEntity* UF::UpdateFieldHolder::GetOwner() { -#if TRINITY_COMPILER_IS_GNU +#if TRINITY_COMPILER_IS_GCC || TRINITY_COMPILER_IS_CLANG #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Winvalid-offsetof" #endif return reinterpret_cast(reinterpret_cast(this) - offsetof(BaseEntity, m_values)); -#if TRINITY_COMPILER_IS_GNU +#if TRINITY_COMPILER_IS_GCC || TRINITY_COMPILER_IS_CLANG #pragma GCC diagnostic pop #endif } From d800dad58b12be2554e35aafcb3ed6125838c3f8 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 14:42:26 +0200 Subject: [PATCH 144/175] Build: Remove compiler flags not supported by clang-cl --- cmake/compiler/msvc/settings.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake index de2327a55ae66..6701c33f130d7 100644 --- a/cmake/compiler/msvc/settings.cmake +++ b/cmake/compiler/msvc/settings.cmake @@ -48,7 +48,7 @@ if("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild") target_compile_options(trinity-compile-option-interface INTERFACE /MP) -else() +elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") # Forces writes to the PDB file to be serialized through mspdbsrv.exe (/FS) # Enable faster PDB generation in parallel builds by minimizing RPC calls to mspdbsrv.exe (/Zf) target_compile_options(trinity-compile-option-interface From 7279bff489e315d98af5efffc046436896f009f0 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 14:45:17 +0200 Subject: [PATCH 145/175] Core/Misc: Remove old msvc warning suppression workarounds for do {} while (0) constructs used in assert and logging macros --- src/common/Debugging/Errors.h | 24 ++++++++---------------- src/common/Logging/Log.h | 16 ++++------------ 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/src/common/Debugging/Errors.h b/src/common/Debugging/Errors.h index 81d06a0d441bd..865dc8cffc3f1 100644 --- a/src/common/Debugging/Errors.h +++ b/src/common/Debugging/Errors.h @@ -52,25 +52,17 @@ namespace Trinity } } // namespace Trinity -#if TRINITY_COMPILER_IS_MICROSOFT -#define ASSERT_BEGIN __pragma(warning(push)) __pragma(warning(disable: 4127)) -#define ASSERT_END __pragma(warning(pop)) -#else -#define ASSERT_BEGIN -#define ASSERT_END -#endif - -#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS +#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS && !defined(EXCEPTION_ASSERTION_FAILURE) #define EXCEPTION_ASSERTION_FAILURE 0xC0000420L #endif -#define WPAssert(cond, ...) ASSERT_BEGIN do { if (!(cond)) [[unlikely]] Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond, GetDebugInfo(), ##__VA_ARGS__); } while(0) ASSERT_END -#define WPAssert_NODEBUGINFO(cond, ...) ASSERT_BEGIN do { if (!(cond)) [[unlikely]] Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond, ::GetDebugInfo(), ##__VA_ARGS__); } while(0) ASSERT_END -#define WPFatal(cond, ...) ASSERT_BEGIN do { if (!(cond)) [[unlikely]] Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); } while(0) ASSERT_END -#define WPError(cond, msg) ASSERT_BEGIN do { if (!(cond)) [[unlikely]] Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END -#define WPWarning(cond, msg) ASSERT_BEGIN do { if (!(cond)) [[unlikely]] Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END -#define WPAbort() ASSERT_BEGIN do { Trinity::Abort(__FILE__, __LINE__, __FUNCTION__); } while(0) ASSERT_END -#define WPAbort_MSG(msg, ...) ASSERT_BEGIN do { Trinity::Abort(__FILE__, __LINE__, __FUNCTION__, (msg), ##__VA_ARGS__); } while(0) ASSERT_END +#define WPAssert(cond, ...) do { if (!(cond)) [[unlikely]] Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond, GetDebugInfo(), ##__VA_ARGS__); } while(0) +#define WPAssert_NODEBUGINFO(cond, ...) do { if (!(cond)) [[unlikely]] Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond, ::GetDebugInfo(), ##__VA_ARGS__); } while(0) +#define WPFatal(cond, ...) do { if (!(cond)) [[unlikely]] Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__); } while(0) +#define WPError(cond, msg) do { if (!(cond)) [[unlikely]] Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) +#define WPWarning(cond, msg) do { if (!(cond)) [[unlikely]] Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) +#define WPAbort() do { Trinity::Abort(__FILE__, __LINE__, __FUNCTION__); } while(0) +#define WPAbort_MSG(msg, ...) do { Trinity::Abort(__FILE__, __LINE__, __FUNCTION__, (msg), ##__VA_ARGS__); } while(0) #ifdef PERFORMANCE_PROFILING #define ASSERT(cond, ...) ((void)0) diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h index 59224aac50f5f..46a15b9d97a24 100644 --- a/src/common/Logging/Log.h +++ b/src/common/Logging/Log.h @@ -155,24 +155,16 @@ class TC_COMMON_API Log #define sLog Log::instance() -#define TC_LOG_MESSAGE_BODY_CORE(filterType__, level__, message__, ...) \ +#ifdef PERFORMANCE_PROFILING +#define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) ((void)0) +#else +#define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) \ do { \ Log* logInstance = sLog; \ if (Logger const* loggerInstance = logInstance->GetEnabledLogger(Log::make_string_view((filterType__)), (level__))) \ logInstance->OutMessageTo(loggerInstance, Log::make_string_view((filterType__)), (level__), \ Log::make_format_string_view((message__)), ## __VA_ARGS__); \ } while (0) - -#ifdef PERFORMANCE_PROFILING -#define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) ((void)0) -#elif !TRINITY_COMPILER_IS_MICROSOFT -#define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) TC_LOG_MESSAGE_BODY_CORE(filterType__, level__, message__, ## __VA_ARGS__) -#else -#define TC_LOG_MESSAGE_BODY(filterType__, level__, message__, ...) \ - __pragma(warning(push)) \ - __pragma(warning(disable:4127)) \ - TC_LOG_MESSAGE_BODY_CORE(filterType__, level__, message__, ## __VA_ARGS__) \ - __pragma(warning(pop)) #endif #define TC_LOG_TRACE(filterType__, message__, ...) \ From 61030fd2ec2a2433d8566eb739a11b740f5ea1df Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 14:46:25 +0200 Subject: [PATCH 146/175] Core/Misc: Nopch build fix for msvc --- src/common/Debugging/Windows/WheatyExceptionReport.cpp | 2 ++ src/server/shared/Realm/Realm.cpp | 7 +++++++ src/server/shared/Realm/Realm.h | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/src/common/Debugging/Windows/WheatyExceptionReport.cpp b/src/common/Debugging/Windows/WheatyExceptionReport.cpp index 0c2cf42a6826a..ac9293a4ea635 100644 --- a/src/common/Debugging/Windows/WheatyExceptionReport.cpp +++ b/src/common/Debugging/Windows/WheatyExceptionReport.cpp @@ -8,6 +8,7 @@ #include "GitRevision.h" #include "Memory.h" #include +#include #include #include #include @@ -18,6 +19,7 @@ #endif #include +#include #include #include #include diff --git a/src/server/shared/Realm/Realm.cpp b/src/server/shared/Realm/Realm.cpp index c06a53dfe9c98..29a1be667a5ff 100644 --- a/src/server/shared/Realm/Realm.cpp +++ b/src/server/shared/Realm/Realm.cpp @@ -22,6 +22,13 @@ #include #include +Realm::Realm() = default; +Realm::Realm(Realm const& other) = default; +Realm::Realm(Realm&& other) noexcept = default; +Realm& Realm::operator=(Realm const& other) = default; +Realm& Realm::operator=(Realm&& other) noexcept = default; +Realm::~Realm() = default; + void Realm::SetName(std::string name) { Name = name; diff --git a/src/server/shared/Realm/Realm.h b/src/server/shared/Realm/Realm.h index e44ff308c4f2d..e8a07b3cc3ea2 100644 --- a/src/server/shared/Realm/Realm.h +++ b/src/server/shared/Realm/Realm.h @@ -137,6 +137,13 @@ inline constexpr uint32 HARDCODED_DEVELOPMENT_REALM_CATEGORY_ID = 1; // Storage object for a realm struct TC_SHARED_API Realm { + Realm(); + Realm(Realm const& other); + Realm(Realm&& other) noexcept; + Realm& operator=(Realm const& other); + Realm& operator=(Realm&& other) noexcept; + ~Realm(); + Battlenet::RealmHandle Id; uint32 Build; std::vector Addresses; From df1eb62a8259c4edc3a160724be683f76f4858f9 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 15:03:42 +0200 Subject: [PATCH 147/175] Core/Misc: Fix linker errors with clang-cl --- src/server/game/Grids/NGrid.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Grids/NGrid.cpp b/src/server/game/Grids/NGrid.cpp index 831c4f938bfbc..2efe24821e34e 100644 --- a/src/server/game/Grids/NGrid.cpp +++ b/src/server/game/Grids/NGrid.cpp @@ -29,8 +29,8 @@ GridInfo::GridInfo(time_t expiry, bool unload /*= true */) : i_timer(expiry), vi { } -template class Grid; -template class NGrid; +template class TC_GAME_API Grid; +template class TC_GAME_API NGrid; template struct TC_GAME_API TypeListContainer; template struct TC_GAME_API TypeListContainer; From 5b092d8df09cc71f6eab4d04579a661c5937ca92 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 10 May 2026 19:40:10 +0200 Subject: [PATCH 148/175] Core/Misc: Reorder function definitions in MiscPackets.cpp to match declaration order in header --- .../game/Server/Packets/MiscPackets.cpp | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index f4eefab796f0a..e70554a69c682 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -30,6 +30,14 @@ WorldPacket const* BindPointUpdate::Write() return &_worldPacket; } +WorldPacket const* PlayerBound::Write() +{ + _worldPacket << BinderID; + _worldPacket << uint32(AreaID); + + return &_worldPacket; +} + WorldPacket const* InvalidatePlayer::Write() { _worldPacket << Guid; @@ -175,9 +183,10 @@ void TimeSyncResponse::Read() _worldPacket >> ClientTime; } -WorldPacket const* ServerTimeOffset::Write() +WorldPacket const* TriggerCinematic::Write() { - _worldPacket << Time; + _worldPacket << uint32(CinematicID); + _worldPacket << ConversationGuid; return &_worldPacket; } @@ -189,10 +198,9 @@ WorldPacket const* TriggerMovie::Write() return &_worldPacket; } -WorldPacket const* TriggerCinematic::Write() +WorldPacket const* ServerTimeOffset::Write() { - _worldPacket << uint32(CinematicID); - _worldPacket << ConversationGuid; + _worldPacket << Time; return &_worldPacket; } @@ -347,14 +355,6 @@ WorldPacket const* SetAnimTier::Write() return &_worldPacket; } -WorldPacket const* PlayerBound::Write() -{ - _worldPacket << BinderID; - _worldPacket << uint32(AreaID); - - return &_worldPacket; -} - WorldPacket const* StartMirrorTimer::Write() { _worldPacket << uint8(Timer); From e00b80cf728ff0a7200b1321b46d775a9c08d027 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 11 May 2026 10:34:57 +0200 Subject: [PATCH 149/175] Core/CrashHandler: Replace unsafe pointer dereferences wrapped in __try/__except with ReadProcessMemory --- .../Windows/WheatyExceptionReport.cpp | 500 ++++++++++-------- .../Debugging/Windows/WheatyExceptionReport.h | 9 +- 2 files changed, 277 insertions(+), 232 deletions(-) diff --git a/src/common/Debugging/Windows/WheatyExceptionReport.cpp b/src/common/Debugging/Windows/WheatyExceptionReport.cpp index ac9293a4ea635..116dc33cf2cd4 100644 --- a/src/common/Debugging/Windows/WheatyExceptionReport.cpp +++ b/src/common/Debugging/Windows/WheatyExceptionReport.cpp @@ -632,7 +632,7 @@ void WheatyExceptionReport::printTracesForAllThreads(bool bWriteVariables) { THREADENTRY32 te32; - DWORD dwOwnerPID = GetCurrentProcessId(); + DWORD dwOwnerPID = GetProcessId(m_process); DWORD dwCurrentTID = GetCurrentThreadId(); // Take a snapshot of all running threads HANDLE hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); @@ -681,212 +681,205 @@ void WheatyExceptionReport::printTracesForAllThreads(bool bWriteVariables) void WheatyExceptionReport::GenerateExceptionReport( PEXCEPTION_POINTERS pExceptionInfo) { - __try + SYSTEMTIME systime; + GetLocalTime(&systime); + + // Start out with a banner + Log(_T("Revision: %" PRSTRc "\r\n"), GitRevision::GetFullVersion()); + Log(_T("Date %u:%u:%u. Time %u:%u \r\n"), systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute); + PEXCEPTION_RECORD pExceptionRecord = pExceptionInfo->ExceptionRecord; + + PrintSystemInfo(); + // First print information about the type of fault + Log(_T("\r\n//=====================================================\r\n")); + Log(_T("Exception code: %08X %s\r\n"), + pExceptionRecord->ExceptionCode, + GetExceptionString(pExceptionRecord->ExceptionCode)); + if (pExceptionRecord->ExceptionCode == EXCEPTION_ASSERTION_FAILURE && pExceptionRecord->NumberParameters >= 2) { - SYSTEMTIME systime; - GetLocalTime(&systime); - - // Start out with a banner - Log(_T("Revision: %" PRSTRc "\r\n"), GitRevision::GetFullVersion()); - Log(_T("Date %u:%u:%u. Time %u:%u \r\n"), systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute); - PEXCEPTION_RECORD pExceptionRecord = pExceptionInfo->ExceptionRecord; - - PrintSystemInfo(); - // First print information about the type of fault - Log(_T("\r\n//=====================================================\r\n")); - Log(_T("Exception code: %08X %s\r\n"), - pExceptionRecord->ExceptionCode, - GetExceptionString(pExceptionRecord->ExceptionCode)); - if (pExceptionRecord->ExceptionCode == EXCEPTION_ASSERTION_FAILURE && pExceptionRecord->NumberParameters >= 2) - { - pExceptionRecord->ExceptionAddress = reinterpret_cast(pExceptionRecord->ExceptionInformation[1]); - Log(_T("Assertion message: %" PRSTRc "\r\n"), pExceptionRecord->ExceptionInformation[0]); - } + pExceptionRecord->ExceptionAddress = reinterpret_cast(pExceptionRecord->ExceptionInformation[1]); + Log(_T("Assertion message: %" PRSTRc "\r\n"), pExceptionRecord->ExceptionInformation[0]); + } - // Now print information about where the fault occured - TCHAR* szFaultingModule = m_tempPathBuffer; - DWORD section; - DWORD_PTR offset; - GetLogicalAddress(pExceptionRecord->ExceptionAddress, - szFaultingModule, - m_tempPathBufferChars, - section, offset); + // Now print information about where the fault occured + TCHAR* szFaultingModule = m_tempPathBuffer; + DWORD section; + DWORD_PTR offset; + GetLogicalAddress(pExceptionRecord->ExceptionAddress, + szFaultingModule, + m_tempPathBufferChars, + section, offset); #if defined(_M_IX86) || defined(_M_ARM) - Log(_T("Fault address: %08X %02X:%08X %s\r\n"), - pExceptionRecord->ExceptionAddress, - section, offset, szFaultingModule); + Log(_T("Fault address: %08X %02X:%08X %s\r\n"), + pExceptionRecord->ExceptionAddress, + section, offset, szFaultingModule); #endif #if defined(_M_X64) || defined(_M_ARM64) || defined(_M_HYBRID_X86_ARM64) || defined (_M_ARM64EC) - Log(_T("Fault address: %016I64X %02X:%016I64X %s\r\n"), - pExceptionRecord->ExceptionAddress, - section, offset, szFaultingModule); + Log(_T("Fault address: %016I64X %02X:%016I64X %s\r\n"), + pExceptionRecord->ExceptionAddress, + section, offset, szFaultingModule); #endif - PCONTEXT pCtx = pExceptionInfo->ContextRecord; + PCONTEXT pCtx = pExceptionInfo->ContextRecord; - // Show the registers + // Show the registers #ifdef _M_IX86 // X86 Only! - Log(_T("\r\nRegisters:\r\n")); - - Log(_T("EAX:%08X\r\nEBX:%08X\r\nECX:%08X\r\nEDX:%08X\r\nESI:%08X\r\nEDI:%08X\r\n") - , pCtx->Eax, pCtx->Ebx, pCtx->Ecx, pCtx->Edx, - pCtx->Esi, pCtx->Edi); - - Log(_T("CS:EIP:%04X:%08X\r\n"), pCtx->SegCs, pCtx->Eip); - Log(_T("SS:ESP:%04X:%08X EBP:%08X\r\n"), - pCtx->SegSs, pCtx->Esp, pCtx->Ebp); - Log(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"), - pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs); - Log(_T("Flags:%08X\r\n"), pCtx->EFlags); + Log(_T("\r\nRegisters:\r\n")); + + Log(_T("EAX:%08X\r\nEBX:%08X\r\nECX:%08X\r\nEDX:%08X\r\nESI:%08X\r\nEDI:%08X\r\n") + , pCtx->Eax, pCtx->Ebx, pCtx->Ecx, pCtx->Edx, + pCtx->Esi, pCtx->Edi); + + Log(_T("CS:EIP:%04X:%08X\r\n"), pCtx->SegCs, pCtx->Eip); + Log(_T("SS:ESP:%04X:%08X EBP:%08X\r\n"), + pCtx->SegSs, pCtx->Esp, pCtx->Ebp); + Log(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"), + pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs); + Log(_T("Flags:%08X\r\n"), pCtx->EFlags); #endif #ifdef _M_X64 - Log(_T("\r\nRegisters:\r\n")); - Log(_T("RAX:%016I64X\r\nRBX:%016I64X\r\nRCX:%016I64X\r\nRDX:%016I64X\r\nRSI:%016I64X\r\nRDI:%016I64X\r\n") - _T("R8: %016I64X\r\nR9: %016I64X\r\nR10:%016I64X\r\nR11:%016I64X\r\nR12:%016I64X\r\nR13:%016I64X\r\nR14:%016I64X\r\nR15:%016I64X\r\n") - , pCtx->Rax, pCtx->Rbx, pCtx->Rcx, pCtx->Rdx, - pCtx->Rsi, pCtx->Rdi, pCtx->R8, pCtx->R9, pCtx->R10, pCtx->R11, pCtx->R12, pCtx->R13, pCtx->R14, pCtx->R15); - Log(_T("CS:RIP:%04X:%016I64X\r\n"), pCtx->SegCs, pCtx->Rip); - Log(_T("SS:RSP:%04X:%016I64X RBP:%08X\r\n"), - pCtx->SegSs, pCtx->Rsp, pCtx->Rbp); - Log(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"), - pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs); - Log(_T("Flags:%08X\r\n"), pCtx->EFlags); + Log(_T("\r\nRegisters:\r\n")); + Log(_T("RAX:%016I64X\r\nRBX:%016I64X\r\nRCX:%016I64X\r\nRDX:%016I64X\r\nRSI:%016I64X\r\nRDI:%016I64X\r\n") + _T("R8: %016I64X\r\nR9: %016I64X\r\nR10:%016I64X\r\nR11:%016I64X\r\nR12:%016I64X\r\nR13:%016I64X\r\nR14:%016I64X\r\nR15:%016I64X\r\n") + , pCtx->Rax, pCtx->Rbx, pCtx->Rcx, pCtx->Rdx, + pCtx->Rsi, pCtx->Rdi, pCtx->R8, pCtx->R9, pCtx->R10, pCtx->R11, pCtx->R12, pCtx->R13, pCtx->R14, pCtx->R15); + Log(_T("CS:RIP:%04X:%016I64X\r\n"), pCtx->SegCs, pCtx->Rip); + Log(_T("SS:RSP:%04X:%016I64X RBP:%08X\r\n"), + pCtx->SegSs, pCtx->Rsp, pCtx->Rbp); + Log(_T("DS:%04X ES:%04X FS:%04X GS:%04X\r\n"), + pCtx->SegDs, pCtx->SegEs, pCtx->SegFs, pCtx->SegGs); + Log(_T("Flags:%08X\r\n"), pCtx->EFlags); #endif #ifdef _M_ARM64 - Log(_T("\r\nRegisters:\r\n")); - Log(_T("X0:%016I64X\r\nX1:%016I64X\r\nX2:%016I64X\r\nX3:%016I64X\r\nX4:%016I64X\r\nX5:%016I64X\r\n"), - _T("X6:%016I64X\r\nX7:%016I64X\r\nX8:%016I64X\r\nX9:%016I64X\r\nX10:%016I64X\r\nX11:%016I64X\r\nX12:%016I64X\r\nX13:%016I64X\r\n"), - _T("X14:%016I64X\r\nX15:%016I64X\r\nX16:%016I64X\r\nX17:%016I64X\r\nX18:%016I64X\r\nX19:%016I64X\r\nX20:%016I64X\r\nX21:%016I64X\r\n"), - _T("X22:%016I64X\r\nX23:%016I64X\r\nX24:%016I64X\r\nX25:%016I64X\r\nX26:%016I64X\r\nX27:%016I64X\r\nX28:%016I64X\r\n"), - pCtx->X0, pCtx->X1, pCtx->X2, pCtx->X3, pCtx->X4, pCtx->X5, - pCtx->X6, pCtx->X7, pCtx->X8, pCtx->X9, pCtx->X10, pCtx->X11, pCtx->X12, pCtx->X13, - pCtx->X14, pCtx->X15, pCtx->X16, pCtx->X17, pCtx->X18, pCtx->X19, pCtx->X20, pCtx->X21, - pCtx->X22, pCtx->X23, pCtx->X24, pCtx->X25, pCtx->X26, pCtx->X27, pCtx->X28); - Log(_T("LR:%016I64X\r\n"), pCtx->Lr); - Log(_T("PC:%016I64X\r\n"), pCtx->Pc); - Log(_T("SP:%016I64X FP:%016I64X\r\n"), pCtx->Sp, pCtx->Fp); - Log(_T("Flags:%08X\r\n"), pCtx->Cpsr); + Log(_T("\r\nRegisters:\r\n")); + Log(_T("X0:%016I64X\r\nX1:%016I64X\r\nX2:%016I64X\r\nX3:%016I64X\r\nX4:%016I64X\r\nX5:%016I64X\r\n"), + _T("X6:%016I64X\r\nX7:%016I64X\r\nX8:%016I64X\r\nX9:%016I64X\r\nX10:%016I64X\r\nX11:%016I64X\r\nX12:%016I64X\r\nX13:%016I64X\r\n"), + _T("X14:%016I64X\r\nX15:%016I64X\r\nX16:%016I64X\r\nX17:%016I64X\r\nX18:%016I64X\r\nX19:%016I64X\r\nX20:%016I64X\r\nX21:%016I64X\r\n"), + _T("X22:%016I64X\r\nX23:%016I64X\r\nX24:%016I64X\r\nX25:%016I64X\r\nX26:%016I64X\r\nX27:%016I64X\r\nX28:%016I64X\r\n"), + pCtx->X0, pCtx->X1, pCtx->X2, pCtx->X3, pCtx->X4, pCtx->X5, + pCtx->X6, pCtx->X7, pCtx->X8, pCtx->X9, pCtx->X10, pCtx->X11, pCtx->X12, pCtx->X13, + pCtx->X14, pCtx->X15, pCtx->X16, pCtx->X17, pCtx->X18, pCtx->X19, pCtx->X20, pCtx->X21, + pCtx->X22, pCtx->X23, pCtx->X24, pCtx->X25, pCtx->X26, pCtx->X27, pCtx->X28); + Log(_T("LR:%016I64X\r\n"), pCtx->Lr); + Log(_T("PC:%016I64X\r\n"), pCtx->Pc); + Log(_T("SP:%016I64X FP:%016I64X\r\n"), pCtx->Sp, pCtx->Fp); + Log(_T("Flags:%08X\r\n"), pCtx->Cpsr); #endif - SymSetOptions(SYMOPT_DEFERRED_LOADS); + SymSetOptions(SYMOPT_DEFERRED_LOADS); - // Initialize DbgHelp - if (!SymInitialize(m_process, nullptr, TRUE)) - { - Log(_T("\r\n")); - Log(_T("----\r\n")); - Log(_T("SYMBOL HANDLER ERROR (THIS IS NOT THE CRASH ERROR)\r\n\r\n")); - Log(_T("Couldn't initialize symbol handler for process when generating crash report\r\n")); - Log(_T("Error: %s\r\n"), ErrorMessage(GetLastError())); - Log(_T("THE BELOW CALL STACKS MIGHT HAVE MISSING OR INACCURATE FILE/FUNCTION NAMES\r\n\r\n")); - Log(_T("----\r\n")); - } + // Initialize DbgHelp + if (!SymInitialize(m_process, nullptr, TRUE)) + { + Log(_T("\r\n")); + Log(_T("----\r\n")); + Log(_T("SYMBOL HANDLER ERROR (THIS IS NOT THE CRASH ERROR)\r\n\r\n")); + Log(_T("Couldn't initialize symbol handler for process when generating crash report\r\n")); + Log(_T("Error: %s\r\n"), ErrorMessage(GetLastError())); + Log(_T("THE BELOW CALL STACKS MIGHT HAVE MISSING OR INACCURATE FILE/FUNCTION NAMES\r\n\r\n")); + Log(_T("----\r\n")); + } - if (pExceptionRecord->ExceptionCode == 0xE06D7363 && pExceptionRecord->NumberParameters >= 2) - { - PVOID exceptionObject = reinterpret_cast(pExceptionRecord->ExceptionInformation[1]); - ThrowInfo const* throwInfo = reinterpret_cast(pExceptionRecord->ExceptionInformation[2]); + if (pExceptionRecord->ExceptionCode == 0xE06D7363 && pExceptionRecord->NumberParameters >= 2) + { + PVOID exceptionObject = reinterpret_cast(pExceptionRecord->ExceptionInformation[1]); + ThrowInfo const* throwInfo = reinterpret_cast(pExceptionRecord->ExceptionInformation[2]); #if _EH_RELATIVE_TYPEINFO - // When _EH_RELATIVE_TYPEINFO is defined, the pointers need to be retrieved with some pointer math - auto resolveExceptionRVA = [pExceptionRecord](int32 rva) -> DWORD_PTR - { - return rva + (pExceptionRecord->NumberParameters >= 4 ? pExceptionRecord->ExceptionInformation[3] : 0); - }; + // When _EH_RELATIVE_TYPEINFO is defined, the pointers need to be retrieved with some pointer math + auto resolveExceptionRVA = [pExceptionRecord](int32 rva) -> DWORD_PTR + { + return rva + (pExceptionRecord->NumberParameters >= 4 ? pExceptionRecord->ExceptionInformation[3] : 0); + }; #else - // Otherwise the pointers are already there in the API types - auto resolveExceptionRVA = [](void const* input) -> void const* { return input; }; + // Otherwise the pointers are already there in the API types + auto resolveExceptionRVA = [](void const* input) -> void const* { return input; }; #endif - CatchableTypeArray const* catchables = reinterpret_cast(resolveExceptionRVA(throwInfo->pCatchableTypeArray)); - CatchableType const* catchable = catchables->nCatchableTypes ? reinterpret_cast(resolveExceptionRVA(catchables->arrayOfCatchableTypes[0])) : nullptr; - TypeDescriptor const* exceptionTypeinfo = catchable ? reinterpret_cast(resolveExceptionRVA(catchable->pType)) : nullptr; + CatchableTypeArray const* catchables = reinterpret_cast(resolveExceptionRVA(throwInfo->pCatchableTypeArray)); + CatchableType const* catchable = catchables->nCatchableTypes ? reinterpret_cast(resolveExceptionRVA(catchables->arrayOfCatchableTypes[0])) : nullptr; + TypeDescriptor const* exceptionTypeinfo = catchable ? reinterpret_cast(resolveExceptionRVA(catchable->pType)) : nullptr; - if (exceptionTypeinfo) + if (exceptionTypeinfo) + { + void* stdExceptionTypeInfo = []() -> void* { - void* stdExceptionTypeInfo = []() -> void* + try { - try - { - std::exception fake; - return __RTtypeid(&fake); - } - catch (...) - { - return nullptr; - } - }(); - std::exception const* exceptionPtr = [](void* object, TypeDescriptor const* typeInfo, void* stdExceptionTypeInfo) -> std::exception const* + std::exception fake; + return __RTtypeid(&fake); + } + catch (...) { - try - { - // real_type descriptor is obtained by parsing throwinfo - // equivalent to expression like this - // std::exception* e = object; - // real_type* r = dynamic_cast(e); - // return r; - return reinterpret_cast(__RTDynamicCast(object, 0, stdExceptionTypeInfo, (void*)typeInfo, false)); - } - catch (...) - { - return nullptr; - } - }(exceptionObject, exceptionTypeinfo, stdExceptionTypeInfo); + return nullptr; + } + }(); + std::exception const* exceptionPtr = [](void* object, TypeDescriptor const* typeInfo, void* stdExceptionTypeInfo) -> std::exception const* + { + try + { + // real_type descriptor is obtained by parsing throwinfo + // equivalent to expression like this + // std::exception* e = object; + // real_type* r = dynamic_cast(e); + // return r; + return reinterpret_cast(__RTDynamicCast(object, 0, stdExceptionTypeInfo, (void*)typeInfo, false)); + } + catch (...) + { + return nullptr; + } + }(exceptionObject, exceptionTypeinfo, stdExceptionTypeInfo); - // dynamic_cast(variable_that_already_has_that_type) is optimized away by compiler and attempting to call __RTDynamicCast fails for it - if (!exceptionPtr && exceptionTypeinfo == stdExceptionTypeInfo) - exceptionPtr = reinterpret_cast(exceptionObject); + // dynamic_cast(variable_that_already_has_that_type) is optimized away by compiler and attempting to call __RTDynamicCast fails for it + if (!exceptionPtr && exceptionTypeinfo == stdExceptionTypeInfo) + exceptionPtr = reinterpret_cast(exceptionObject); - Log(_T("\r\nUncaught C++ exception info:")); - if (exceptionPtr) - Log(_T(" %s"), exceptionPtr->what()); + Log(_T("\r\nUncaught C++ exception info:")); + if (exceptionPtr) + Log(_T(" %s"), exceptionPtr->what()); - Log(_T("\r\n")); + Log(_T("\r\n")); - char undName[MAX_SYM_NAME] = { }; - if (UnDecorateSymbolName(&exceptionTypeinfo->name[1], &undName[0], MAX_SYM_NAME, UNDNAME_32_BIT_DECODE | UNDNAME_NAME_ONLY | UNDNAME_NO_ARGUMENTS)) + char undName[MAX_SYM_NAME] = { }; + if (UnDecorateSymbolName(&exceptionTypeinfo->name[1], &undName[0], MAX_SYM_NAME, UNDNAME_32_BIT_DECODE | UNDNAME_NAME_ONLY | UNDNAME_NO_ARGUMENTS)) + { + char buf[MAX_SYM_NAME + sizeof(SYMBOL_INFO)] = { }; + PSYMBOL_INFO sym = (PSYMBOL_INFO)&buf[0]; + sym->SizeOfStruct = sizeof(SYMBOL_INFO); + sym->MaxNameLen = MAX_SYM_NAME; + if (SymGetTypeFromName(m_process, (ULONG64)GetModuleHandle(nullptr), undName, sym)) { - char buf[MAX_SYM_NAME + sizeof(SYMBOL_INFO)] = { }; - PSYMBOL_INFO sym = (PSYMBOL_INFO)&buf[0]; - sym->SizeOfStruct = sizeof(SYMBOL_INFO); - sym->MaxNameLen = MAX_SYM_NAME; - if (SymGetTypeFromName(m_process, (ULONG64)GetModuleHandle(nullptr), undName, sym)) - { - sym->Address = pExceptionRecord->ExceptionInformation[1]; - sym->Flags = 0; - char const* variableName = "uncaught_exception"; - memset(sym->Name, 0, MAX_SYM_NAME); - memcpy(sym->Name, variableName, strlen(variableName)); - FormatSymbolValue(sym, nullptr); - } + sym->Address = pExceptionRecord->ExceptionInformation[1]; + sym->Flags = 0; + char const* variableName = "uncaught_exception"; + memset(sym->Name, 0, MAX_SYM_NAME); + memcpy(sym->Name, variableName, strlen(variableName)); + FormatSymbolValue(sym, nullptr); } } } + } - CONTEXT trashableContext = *pCtx; + CONTEXT trashableContext = *pCtx; - WriteStackDetails(&trashableContext, false, nullptr); - printTracesForAllThreads(false); + WriteStackDetails(&trashableContext, false, GetCurrentThread()); + printTracesForAllThreads(false); - // #ifdef _M_IX86 // X86 Only! + // #ifdef _M_IX86 // X86 Only! - Log(_T("========================\r\n")); - Log(_T("Local Variables And Parameters\r\n")); + Log(_T("========================\r\n")); + Log(_T("Local Variables And Parameters\r\n")); - trashableContext = *pCtx; - WriteStackDetails(&trashableContext, true, nullptr); - printTracesForAllThreads(true); + trashableContext = *pCtx; + WriteStackDetails(&trashableContext, true, GetCurrentThread()); + printTracesForAllThreads(true); - SymCleanup(m_process); + SymCleanup(m_process); - Log(_T("\r\n")); - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - Log(_T("Error writing the crash log\r\n")); - } + Log(_T("\r\n")); } //====================================================================== @@ -1065,7 +1058,7 @@ bool bWriteVariables, HANDLE pThreadHandle) // Get the next stack frame if (!StackWalkEx(dwMachineType, m_process, - pThreadHandle != nullptr ? pThreadHandle : GetCurrentThread(), + pThreadHandle, &sf, pContext, nullptr, @@ -1158,17 +1151,8 @@ ULONG /*SymbolSize*/, PVOID UserContext) { EnumerateSymbolsCallbackContext* context = static_cast(UserContext); - __try - { - context->report->ClearSymbols(); - context->report->FormatSymbolValue(pSymInfo, context); - - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - context->report->Log(_T("punting on symbol %" PRSTRc ", partial output:\r\n"), pSymInfo->Name); - } - + context->report->ClearSymbols(); + context->report->FormatSymbolValue(pSymInfo, context); return TRUE; } @@ -1523,7 +1507,7 @@ bool logChildren) m_symbolDetails.top().Suffix += "*"; // Try to dereference the pointer in a try/except block since it might be invalid - DWORD_PTR address = DereferenceUnsafePointer(offset); + DWORD_PTR address = DereferenceUnsafePointer(reinterpret_cast(offset)).value_or(DWORD_PTR(-1)); char buffer[WER_SMALL_BUFFER_SIZE]; FormatOutputValue(buffer, btVoid, sizeof(PVOID), (PVOID)offset, sizeof(buffer)); @@ -1782,6 +1766,15 @@ bool logChildren) bHandled = true; } +template +void WheatyExceptionReport::FormatOutputValueNumeric(char* buffer, size_t bufferSize, char const* format, LPCVOID address) +{ + if (Optional value = DereferenceUnsafePointer(address)) + (void)::snprintf(buffer, bufferSize, format, *value); + else + (void)snprintf(buffer, bufferSize, "%p ", address); +} + void WheatyExceptionReport::FormatOutputValue(char * pszCurrBuffer, BasicType basicType, DWORD64 length, @@ -1789,66 +1782,114 @@ PVOID pAddress, size_t bufferSize, size_t countOverride) { - __try + switch (basicType) { - switch (basicType) + case btChar: { - case btChar: + // Special case handling for char[] type + if (countOverride != 0) { - // Special case handling for char[] type - if (countOverride != 0) - length = countOverride; - else - length = strlen((char*)pAddress); - if (length > bufferSize - 6) - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "\"%.*s...\"", (int)(bufferSize - 6), (char*)pAddress); + *pszCurrBuffer = '"'; + if (countOverride > bufferSize - 3) + { + if (ReadProcessMemory(m_process, pAddress, pszCurrBuffer + 1, bufferSize - 6, nullptr)) + { + strcpy(pszCurrBuffer + bufferSize - 5, "...\""); + return; + } + } else - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "\"%.*s\"", (int)length, (char*)pAddress); - break; + { + if (ReadProcessMemory(m_process, pAddress, pszCurrBuffer + 1, countOverride, nullptr)) + { + strcpy(pszCurrBuffer + 1 + countOverride, "\""); + return; + } + } + + (void)snprintf(pszCurrBuffer, bufferSize, "%p ", pAddress); } - case btStdString: + else { - std::string* value = static_cast(pAddress); - if (value->length() > bufferSize - 6) - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "\"%.*s...\"", (int)(bufferSize - 6), value->c_str()); - else - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "\"%s\"", value->c_str()); - break; - } - default: - // Format appropriately (assuming it's a 1, 2, or 4 bytes (!!!) - if (length == 1) - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "0x%X", *(PBYTE)pAddress); - else if (length == 2) - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "0x%X", *(PWORD)pAddress); - else if (length == 4) + *pszCurrBuffer = '"'; + size_t i = 1; + for (; i < bufferSize - 2; ++i) { - if (basicType == btFloat) - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "%f", *(PFLOAT)pAddress); - else - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "0x%lX", *(PDWORD)pAddress); + Optional character = DereferenceUnsafePointer(static_cast(pAddress) + i - 1); + if (!character) + { + (void)snprintf(pszCurrBuffer, bufferSize, "%p ", pAddress); + return; + } + *(pszCurrBuffer + i) = *character; + if (!*character) + break; // end of string } - else if (length == 8) + if (i == bufferSize - 2) + { + // too long + strcpy(pszCurrBuffer + bufferSize - 6, "..."); + } + + *(pszCurrBuffer + i) = '"'; + *(pszCurrBuffer + i + 1) = '\0'; + } + break; + } + case btStdString: + { + alignas(std::string) std::array rawBytes = { }; + if (ReadProcessMemory(m_process, pAddress, rawBytes.data(), rawBytes.size(), nullptr)) + { + std::string const* value = reinterpret_cast(rawBytes.data()); + + *pszCurrBuffer = '"'; + if (value->length() > bufferSize - 3) { - if (basicType == btFloat) + if (ReadProcessMemory(m_process, value->data(), pszCurrBuffer + 1, bufferSize - 6, nullptr)) { - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "%f", - *(double *)pAddress); + strcpy(pszCurrBuffer + bufferSize - 6, "...\""); + return; } - else - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "0x%llX", - *(DWORD64*)pAddress); } else { - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "%p", pAddress); + if (ReadProcessMemory(m_process, value->data(), pszCurrBuffer + 1, value->length(), nullptr)) + { + strcpy(pszCurrBuffer + 1 + value->length(), "\""); + return; + } } - break; + } + + (void)snprintf(pszCurrBuffer, bufferSize, "%p ", pAddress); + + break; } - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - pszCurrBuffer += snprintf(pszCurrBuffer, bufferSize, "%p ", pAddress); + default: + // Format appropriately (assuming it's a 1, 2, or 4 bytes (!!!) + if (length == 1) + FormatOutputValueNumeric(pszCurrBuffer, bufferSize, "0x%X", pAddress); + else if (length == 2) + FormatOutputValueNumeric(pszCurrBuffer, bufferSize, "0x%X", pAddress); + else if (length == 4) + { + if (basicType == btFloat) + FormatOutputValueNumeric(pszCurrBuffer, bufferSize, "%f", pAddress); + else + FormatOutputValueNumeric(pszCurrBuffer, bufferSize, "0x%lX", pAddress); + } + else if (length == 8) + { + if (basicType == btFloat) + FormatOutputValueNumeric(pszCurrBuffer, bufferSize, "%f", pAddress); + else + FormatOutputValueNumeric(pszCurrBuffer, bufferSize, "0x%llX", pAddress); + } + else + (void)snprintf(pszCurrBuffer, bufferSize, "%p", pAddress); + + break; } } @@ -1877,16 +1918,15 @@ WheatyExceptionReport::GetBasicType(DWORD typeIndex, DWORD64 modBase) const return btNoType; } -DWORD_PTR WheatyExceptionReport::DereferenceUnsafePointer(DWORD_PTR address) +template requires (std::is_scalar_v) +Optional WheatyExceptionReport::DereferenceUnsafePointer(LPCVOID address) { - __try - { - return *(PDWORD_PTR)address; - } - __except (EXCEPTION_EXECUTE_HANDLER) - { - return DWORD_PTR(-1); - } + Optional result; + SIZE_T numberOfBytesRead = 0; + if (!::ReadProcessMemory(m_process, address, &result.emplace(), sizeof(T), &numberOfBytesRead) || numberOfBytesRead != sizeof(T)) + result.reset(); + + return result; } //============================================================================ diff --git a/src/common/Debugging/Windows/WheatyExceptionReport.h b/src/common/Debugging/Windows/WheatyExceptionReport.h index 90e44c0702058..8463d7e23db89 100644 --- a/src/common/Debugging/Windows/WheatyExceptionReport.h +++ b/src/common/Debugging/Windows/WheatyExceptionReport.h @@ -372,10 +372,15 @@ class TC_COMMON_API WheatyExceptionReport void DumpTypeIndex(DWORD64, DWORD, DWORD_PTR, bool &, char const*, char const*, bool, bool); - static void FormatOutputValue(char * pszCurrBuffer, BasicType basicType, DWORD64 length, PVOID pAddress, size_t bufferSize, size_t countOverride = 0); + template + void FormatOutputValueNumeric(char* buffer, size_t bufferSize, char const* format, LPCVOID address); + + void FormatOutputValue(char * pszCurrBuffer, BasicType basicType, DWORD64 length, PVOID pAddress, size_t bufferSize, size_t countOverride = 0); BasicType GetBasicType(DWORD typeIndex, DWORD64 modBase) const; - static DWORD_PTR DereferenceUnsafePointer(DWORD_PTR address); + + template requires (std::is_scalar_v) + Optional DereferenceUnsafePointer(LPCVOID address); int Log(const TCHAR * format, ...); From e6af961d9d67cf6868f4b059e7c6cb7c22023ee7 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 11 May 2026 11:02:10 +0200 Subject: [PATCH 150/175] Core/CrashHandler: Update enums from DIA SDK --- .../Debugging/Windows/WheatyExceptionReport.h | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/src/common/Debugging/Windows/WheatyExceptionReport.h b/src/common/Debugging/Windows/WheatyExceptionReport.h index 8463d7e23db89..9c4cab639b76a 100644 --- a/src/common/Debugging/Windows/WheatyExceptionReport.h +++ b/src/common/Debugging/Windows/WheatyExceptionReport.h @@ -1,8 +1,6 @@ #ifndef _WHEATYEXCEPTIONREPORT_ #define _WHEATYEXCEPTIONREPORT_ -#define _NO_CVCONST_H - #include "Define.h" #include "Optional.h" #include @@ -41,6 +39,10 @@ enum BasicType // Stolen from CVCON btBit = 29, btBSTR = 30, btHresult = 31, + btChar16 = 32, // char16_t + btChar32 = 33, // char32_t + btChar8 = 34, // char8_t + btVector = 35, // Custom types btStdString = 101 @@ -60,6 +62,55 @@ enum DataKind // Stolen from CVCONS DataIsConstant }; +enum SymTagEnum // Stolen from CVCONST.H in the DIA 2.0 SDK +{ + SymTagNull, + SymTagExe, + SymTagCompiland, + SymTagCompilandDetails, + SymTagCompilandEnv, + SymTagFunction, + SymTagBlock, + SymTagData, + SymTagAnnotation, + SymTagLabel, + SymTagPublicSymbol, + SymTagUDT, + SymTagEnum, + SymTagFunctionType, + SymTagPointerType, + SymTagArrayType, + SymTagBaseType, + SymTagTypedef, + SymTagBaseClass, + SymTagFriend, + SymTagFunctionArgType, + SymTagFuncDebugStart, + SymTagFuncDebugEnd, + SymTagUsingNamespace, + SymTagVTableShape, + SymTagVTable, + SymTagCustom, + SymTagThunk, + SymTagCustomType, + SymTagManagedType, + SymTagDimension, + SymTagCallSite, + SymTagInlineSite, + SymTagBaseInterface, + SymTagVectorType, + SymTagMatrixType, + SymTagHLSLType, + SymTagCaller, + SymTagCallee, + SymTagExport, + SymTagHeapAllocationSite, + SymTagCoffGroup, + SymTagInlinee, + SymTagTaggedUnionCase, + SymTagMax +}; + enum CpuRegister // Stolen from CVCONST.H in the DIA SDK { CV_ALLREG_VFRAME= 30006, @@ -284,7 +335,11 @@ char const* const rgBaseType[] = "", // btComplex = 28, "", // btBit = 29, "BSTR", // btBSTR = 30, - "HRESULT" // btHresult = 31 + "HRESULT", // btHresult = 31 + "char16_t", + "char32_t", + "char8_t", + "" }; struct SymbolPair From b909bca0bae02df26b08bdd84fdfb49799cecdec Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 11 May 2026 11:10:18 +0200 Subject: [PATCH 151/175] Core/CrashHandler: Fix formatting single `char` variables --- src/common/Debugging/Windows/WheatyExceptionReport.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/Debugging/Windows/WheatyExceptionReport.cpp b/src/common/Debugging/Windows/WheatyExceptionReport.cpp index 116dc33cf2cd4..51b7135561676 100644 --- a/src/common/Debugging/Windows/WheatyExceptionReport.cpp +++ b/src/common/Debugging/Windows/WheatyExceptionReport.cpp @@ -1410,7 +1410,7 @@ EnumerateSymbolsCallbackContext* pCtx) m_symbolDetails.top().Name = pSym->Name; char buffer[50]; - FormatOutputValue(buffer, basicType, pSym->Size, (PVOID)pVariable, sizeof(buffer)); + FormatOutputValue(buffer, basicType, pSym->Size, (PVOID)pVariable, sizeof(buffer), 1); m_symbolDetails.top().Value = buffer; } @@ -1756,7 +1756,7 @@ bool logChildren) SymGetTypeInfo(m_process, modBase, typeId, TI_GET_LENGTH, &length); char buffer[50]; - FormatOutputValue(buffer, basicType, length, (PVOID)dwFinalOffset, sizeof(buffer)); + FormatOutputValue(buffer, basicType, length, (PVOID)dwFinalOffset, sizeof(buffer), 1); m_symbolDetails.top().Value = buffer; } From 72dc4d99647f0c36d629ce41470e52d2a2174632 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 11 May 2026 20:31:03 +0200 Subject: [PATCH 152/175] Core/Spells: Sync enum name with 3.3.5 branch --- .../game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Miscellaneous/SharedDefines.h | 2 +- .../game/Spells/Auras/SpellAuraEffects.h | 2 +- src/server/game/Spells/Spell.cpp | 20 ++++---- src/server/game/Spells/Spell.h | 22 ++++---- src/server/game/Spells/SpellEffects.cpp | 50 +++++++++---------- src/server/game/Spells/SpellInfo.cpp | 14 +++--- src/server/game/Spells/SpellInfo.h | 6 +-- src/server/game/Spells/SpellMgr.cpp | 2 +- src/server/game/Spells/SpellMgr.h | 2 +- 10 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 340e4994d6acf..ad9fcbb159e24 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -2461,7 +2461,7 @@ void Creature::LoadTemplateImmunities(int32 creatureImmunitiesId) if (immunities->Mechanic[i]) ApplySpellImmune(placeholderSpellId, IMMUNITY_MECHANIC, i, apply); - for (SpellEffectName effect : immunities->Effect) + for (SpellEffects effect : immunities->Effect) ApplySpellImmune(placeholderSpellId, IMMUNITY_EFFECT, effect, apply); for (AuraType aura : immunities->Aura) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index ebf52eb3059b7..aa974175a6473 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -1342,7 +1342,7 @@ constexpr TeamId GetTeamIdForTeam(Team team) return TEAM_NEUTRAL; } -enum SpellEffectName +enum SpellEffects { SPELL_EFFECT_NONE = 0, SPELL_EFFECT_INSTAKILL = 1, diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 8bdccfb27c2b8..523ca08dde31e 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -105,7 +105,7 @@ class TC_GAME_API AuraEffect SpellEffectInfo const& GetSpellEffectInfo() const { return m_effectInfo; } bool IsEffect() const { return m_effectInfo.Effect != 0; } - bool IsEffect(SpellEffectName effectName) const { return m_effectInfo.Effect == effectName; } + bool IsEffect(SpellEffects effectName) const { return m_effectInfo.Effect == effectName; } bool IsAreaAuraEffect() const; private: diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index d3603def63681..4a335aec998f6 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5128,7 +5128,7 @@ void Spell::SendSpellExecuteLog() _executeLogEffects.clear(); } -SpellLogEffect& Spell::GetExecuteLogEffect(SpellEffectName effect) +SpellLogEffect& Spell::GetExecuteLogEffect(SpellEffects effect) { auto itr = std::find_if(_executeLogEffects.begin(), _executeLogEffects.end(), [effect](SpellLogEffect& log) { @@ -5142,7 +5142,7 @@ SpellLogEffect& Spell::GetExecuteLogEffect(SpellEffectName effect) return _executeLogEffects.back(); } -void Spell::ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, Powers powerType, uint32 points, float amplitude) +void Spell::ExecuteLogEffectTakeTargetPower(SpellEffects effect, Unit* target, Powers powerType, uint32 points, float amplitude) { SpellLogEffectPowerDrainParams spellLogEffectPowerDrainParams; @@ -5154,7 +5154,7 @@ void Spell::ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target GetExecuteLogEffectTargets(effect, &SpellLogEffect::PowerDrainTargets).push_back(spellLogEffectPowerDrainParams); } -void Spell::ExecuteLogEffectExtraAttacks(SpellEffectName effect, Unit* victim, uint32 numAttacks) +void Spell::ExecuteLogEffectExtraAttacks(SpellEffects effect, Unit* victim, uint32 numAttacks) { SpellLogEffectExtraAttacksParams spellLogEffectExtraAttacksParams; spellLogEffectExtraAttacksParams.Victim = victim->GetGUID(); @@ -5174,7 +5174,7 @@ void Spell::SendSpellInterruptLog(Unit* victim, uint32 spellId) m_caster->SendMessageToSet(data.Write(), true); } -void Spell::ExecuteLogEffectDurabilityDamage(SpellEffectName effect, Unit* victim, int32 itemId, int32 amount) +void Spell::ExecuteLogEffectDurabilityDamage(SpellEffects effect, Unit* victim, int32 itemId, int32 amount) { SpellLogEffectDurabilityDamageParams spellLogEffectDurabilityDamageParams; spellLogEffectDurabilityDamageParams.Victim = victim->GetGUID(); @@ -5184,7 +5184,7 @@ void Spell::ExecuteLogEffectDurabilityDamage(SpellEffectName effect, Unit* victi GetExecuteLogEffectTargets(effect, &SpellLogEffect::DurabilityDamageTargets).push_back(spellLogEffectDurabilityDamageParams); } -void Spell::ExecuteLogEffectOpenLock(SpellEffectName effect, Object* obj) +void Spell::ExecuteLogEffectOpenLock(SpellEffects effect, Object* obj) { SpellLogEffectGenericVictimParams spellLogEffectGenericVictimParams; spellLogEffectGenericVictimParams.Victim = obj->GetGUID(); @@ -5192,7 +5192,7 @@ void Spell::ExecuteLogEffectOpenLock(SpellEffectName effect, Object* obj) GetExecuteLogEffectTargets(effect, &SpellLogEffect::GenericVictimTargets).push_back(spellLogEffectGenericVictimParams); } -void Spell::ExecuteLogEffectCreateItem(SpellEffectName effect, uint32 entry) +void Spell::ExecuteLogEffectCreateItem(SpellEffects effect, uint32 entry) { SpellLogEffectTradeSkillItemParams spellLogEffectTradeSkillItemParams; spellLogEffectTradeSkillItemParams.ItemID = entry; @@ -5200,7 +5200,7 @@ void Spell::ExecuteLogEffectCreateItem(SpellEffectName effect, uint32 entry) GetExecuteLogEffectTargets(effect, &SpellLogEffect::TradeSkillTargets).push_back(spellLogEffectTradeSkillItemParams); } -void Spell::ExecuteLogEffectDestroyItem(SpellEffectName effect, uint32 entry) +void Spell::ExecuteLogEffectDestroyItem(SpellEffects effect, uint32 entry) { SpellLogEffectFeedPetParams spellLogEffectFeedPetParams; spellLogEffectFeedPetParams.ItemID = entry; @@ -5208,7 +5208,7 @@ void Spell::ExecuteLogEffectDestroyItem(SpellEffectName effect, uint32 entry) GetExecuteLogEffectTargets(effect, &SpellLogEffect::FeedPetTargets).push_back(spellLogEffectFeedPetParams); } -void Spell::ExecuteLogEffectSummonObject(SpellEffectName effect, WorldObject* obj) +void Spell::ExecuteLogEffectSummonObject(SpellEffects effect, WorldObject* obj) { SpellLogEffectGenericVictimParams spellLogEffectGenericVictimParams; spellLogEffectGenericVictimParams.Victim = obj->GetGUID(); @@ -5216,7 +5216,7 @@ void Spell::ExecuteLogEffectSummonObject(SpellEffectName effect, WorldObject* ob GetExecuteLogEffectTargets(effect, &SpellLogEffect::GenericVictimTargets).push_back(spellLogEffectGenericVictimParams); } -void Spell::ExecuteLogEffectUnsummonObject(SpellEffectName effect, WorldObject* obj) +void Spell::ExecuteLogEffectUnsummonObject(SpellEffects effect, WorldObject* obj) { SpellLogEffectGenericVictimParams spellLogEffectGenericVictimParams; spellLogEffectGenericVictimParams.Victim = obj->GetGUID(); @@ -5224,7 +5224,7 @@ void Spell::ExecuteLogEffectUnsummonObject(SpellEffectName effect, WorldObject* GetExecuteLogEffectTargets(effect, &SpellLogEffect::GenericVictimTargets).push_back(spellLogEffectGenericVictimParams); } -void Spell::ExecuteLogEffectResurrect(SpellEffectName effect, Unit* target) +void Spell::ExecuteLogEffectResurrect(SpellEffects effect, Unit* target) { SpellLogEffectGenericVictimParams spellLogEffectGenericVictimParams; spellLogEffectGenericVictimParams.Victim = target->GetGUID(); diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 55180451c5386..5f57e9b304bef 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -567,9 +567,9 @@ class TC_GAME_API Spell void SendSpellGo(); void SendSpellCooldown(); void SendSpellExecuteLog(); - SpellLogEffect& GetExecuteLogEffect(SpellEffectName effect); + SpellLogEffect& GetExecuteLogEffect(SpellEffects effect); template - std::vector& GetExecuteLogEffectTargets(SpellEffectName effect, Optional> SpellLogEffect::* member) + std::vector& GetExecuteLogEffectTargets(SpellEffects effect, Optional> SpellLogEffect::* member) { Optional>& opt = GetExecuteLogEffect(effect).*member; if (!opt) @@ -577,15 +577,15 @@ class TC_GAME_API Spell return *opt; } - void ExecuteLogEffectTakeTargetPower(SpellEffectName effect, Unit* target, Powers powerType, uint32 points, float amplitude); - void ExecuteLogEffectExtraAttacks(SpellEffectName effect, Unit* victim, uint32 numAttacks); - void ExecuteLogEffectDurabilityDamage(SpellEffectName effect, Unit* victim, int32 itemId, int32 amount); - void ExecuteLogEffectOpenLock(SpellEffectName effect, Object* obj); - void ExecuteLogEffectCreateItem(SpellEffectName effect, uint32 entry); - void ExecuteLogEffectDestroyItem(SpellEffectName effect, uint32 entry); - void ExecuteLogEffectSummonObject(SpellEffectName effect, WorldObject* obj); - void ExecuteLogEffectUnsummonObject(SpellEffectName effect, WorldObject* obj); - void ExecuteLogEffectResurrect(SpellEffectName effect, Unit* target); + void ExecuteLogEffectTakeTargetPower(SpellEffects effect, Unit* target, Powers powerType, uint32 points, float amplitude); + void ExecuteLogEffectExtraAttacks(SpellEffects effect, Unit* victim, uint32 numAttacks); + void ExecuteLogEffectDurabilityDamage(SpellEffects effect, Unit* victim, int32 itemId, int32 amount); + void ExecuteLogEffectOpenLock(SpellEffects effect, Object* obj); + void ExecuteLogEffectCreateItem(SpellEffects effect, uint32 entry); + void ExecuteLogEffectDestroyItem(SpellEffects effect, uint32 entry); + void ExecuteLogEffectSummonObject(SpellEffects effect, WorldObject* obj); + void ExecuteLogEffectUnsummonObject(SpellEffects effect, WorldObject* obj); + void ExecuteLogEffectResurrect(SpellEffects effect, Unit* target); void SendSpellInterruptLog(Unit* victim, uint32 spellId); void SendInterrupted(uint8 result); void SendChannelUpdate(uint32 time, Optional result = {}); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index e3f59de5b5187..821fe4d8a2fb3 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -480,7 +480,7 @@ void Spell::EffectResurrectNew() uint32 health = GetEffectValueAsInt(); uint32 mana = effectInfo->MiscValue; - ExecuteLogEffectResurrect(SpellEffectName(effectInfo->Effect), player); + ExecuteLogEffectResurrect(effectInfo->Effect, player); player->SetResurrectRequestData(m_caster, health, mana, 0); SendResurrectRequest(player); } @@ -1176,7 +1176,7 @@ void Spell::EffectPowerDrain() unitCaster->EnergizeBySpell(unitCaster, m_spellInfo, gain, powerType); } - ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, damage, gainMultiplier); + ExecuteLogEffectTakeTargetPower(effectInfo->Effect, unitTarget, powerType, damage, gainMultiplier); } void Spell::EffectSendEvent() @@ -1236,7 +1236,7 @@ void Spell::EffectPowerBurn() float dmgMultiplier = effectInfo->CalcValueMultiplier(GetUnitCasterForEffectHandlers(), this); // add log data before multiplication (need power amount, not damage) - ExecuteLogEffectTakeTargetPower(SpellEffectName(effectInfo->Effect), unitTarget, powerType, damage, 0.0f); + ExecuteLogEffectTakeTargetPower(effectInfo->Effect, unitTarget, powerType, damage, 0.0f); damage = int32(damage * dmgMultiplier); @@ -1466,7 +1466,7 @@ void Spell::EffectCreateItem() return; DoCreateItem(effectInfo->ItemType, m_spellInfo->HasAttribute(SPELL_ATTR0_IS_TRADESKILL) ? ItemContext::Trade_Skill : ItemContext::NONE); - ExecuteLogEffectCreateItem(SpellEffectName(effectInfo->Effect), effectInfo->ItemType); + ExecuteLogEffectCreateItem(effectInfo->Effect, effectInfo->ItemType); } void Spell::EffectCreateItem2() @@ -1729,7 +1729,7 @@ void Spell::EffectOpenLock() } } } - ExecuteLogEffectOpenLock(SpellEffectName(effectInfo->Effect), gameObjTarget ? (Object*)gameObjTarget : (Object*)itemTarget); + ExecuteLogEffectOpenLock(effectInfo->Effect, gameObjTarget ? (Object*)gameObjTarget : (Object*)itemTarget); } void Spell::EffectSummonChangeItem() @@ -2029,7 +2029,7 @@ void Spell::EffectSummonType() else if (properties->Control == SUMMON_CATEGORY_WILD && caster->IsPlayer()) // there might be more conditions involved summon->SetDemonCreatorGUID(caster->GetGUID()); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), summon); + ExecuteLogEffectSummonObject(effectInfo->Effect, summon); } return; } @@ -2084,7 +2084,7 @@ void Spell::EffectSummonType() if (summon) { summon->SetCreatorGUID(caster->GetGUID()); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), summon); + ExecuteLogEffectSummonObject(effectInfo->Effect, summon); } } @@ -2744,7 +2744,7 @@ void Spell::EffectSummonPet() pet->SetName(new_name); } - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), pet); + ExecuteLogEffectSummonObject(effectInfo->Effect, pet); } void Spell::EffectLearnPetSpell() @@ -3054,7 +3054,7 @@ void Spell::EffectSummonObjectWild() go->SetRespawnTime(duration > 0 ? duration/IN_MILLISECONDS : 0); go->SetSpellId(m_spellInfo->Id); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), go); + ExecuteLogEffectSummonObject(effectInfo->Effect, go); // Wild object not have owner and check clickable by players map->AddToMap(go); @@ -3066,7 +3066,7 @@ void Spell::EffectSummonObjectWild() linkedTrap->SetRespawnTime(duration > 0 ? duration / IN_MILLISECONDS : 0); linkedTrap->SetSpellId(m_spellInfo->Id); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), linkedTrap); + ExecuteLogEffectSummonObject(effectInfo->Effect, linkedTrap); } } @@ -3304,7 +3304,7 @@ void Spell::EffectDuel() go->SetRespawnTime(duration > 0 ? duration/IN_MILLISECONDS : 0); go->SetSpellId(m_spellInfo->Id); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), go); + ExecuteLogEffectSummonObject(effectInfo->Effect, go); caster->AddGameObject(go); map->AddToMap(go); @@ -3556,7 +3556,7 @@ void Spell::EffectFeedPet() if (!pet->IsAlive()) return; - ExecuteLogEffectDestroyItem(SpellEffectName(effectInfo->Effect), foodItem->GetEntry()); + ExecuteLogEffectDestroyItem(effectInfo->Effect, foodItem->GetEntry()); int32 pct; int32 levelDiff = int32(pet->GetLevel()) - int32(foodItem->GetTemplate()->GetBaseItemLevel()); @@ -3589,7 +3589,7 @@ void Spell::EffectDismissPet() Pet* pet = unitTarget->ToPet(); - ExecuteLogEffectUnsummonObject(SpellEffectName(effectInfo->Effect), pet); + ExecuteLogEffectUnsummonObject(effectInfo->Effect, pet); pet->Remove(PET_SAVE_NOT_IN_SLOT); } @@ -3644,7 +3644,7 @@ void Spell::EffectSummonObject() go->SetSpellId(m_spellInfo->Id); unitCaster->AddGameObject(go); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), go); + ExecuteLogEffectSummonObject(effectInfo->Effect, go); map->AddToMap(go); @@ -3675,7 +3675,7 @@ void Spell::EffectResurrect() uint32 health = player->CountPctFromMaxHealth(effectValue); uint32 mana = CalculatePct(player->GetMaxPower(POWER_MANA), effectValue); - ExecuteLogEffectResurrect(SpellEffectName(effectInfo->Effect), player); + ExecuteLogEffectResurrect(effectInfo->Effect, player); player->SetResurrectRequestData(m_caster, health, mana, 0); SendResurrectRequest(player); @@ -3693,7 +3693,7 @@ void Spell::EffectAddExtraAttacks() unitTarget->AddExtraAttacks(extraAttacks); - ExecuteLogEffectExtraAttacks(SpellEffectName(effectInfo->Effect), unitTarget, extraAttacks); + ExecuteLogEffectExtraAttacks(effectInfo->Effect, unitTarget, extraAttacks); } void Spell::EffectParry() @@ -4391,7 +4391,7 @@ void Spell::EffectDurabilityDamage() if (slot < 0) { unitTarget->ToPlayer()->DurabilityPointsLossAll(GetEffectValueAsInt(), (slot < -1)); - ExecuteLogEffectDurabilityDamage(SpellEffectName(effectInfo->Effect), unitTarget, -1, -1); + ExecuteLogEffectDurabilityDamage(effectInfo->Effect, unitTarget, -1, -1); return; } @@ -4402,7 +4402,7 @@ void Spell::EffectDurabilityDamage() if (Item* item = unitTarget->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot)) { unitTarget->ToPlayer()->DurabilityPointsLoss(item, GetEffectValueAsInt()); - ExecuteLogEffectDurabilityDamage(SpellEffectName(effectInfo->Effect), unitTarget, item->GetEntry(), slot); + ExecuteLogEffectDurabilityDamage(effectInfo->Effect, unitTarget, item->GetEntry(), slot); } } @@ -4559,7 +4559,7 @@ void Spell::EffectTransmitted() //go->SetLevel(unitCaster->getLevel()); go->SetSpellId(m_spellInfo->Id); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), go); + ExecuteLogEffectSummonObject(effectInfo->Effect, go); TC_LOG_DEBUG("spells", "AddObject at SpellEfects.cpp EffectTransmitted"); //unitCaster->AddGameObject(go); @@ -4576,7 +4576,7 @@ void Spell::EffectTransmitted() linkedTrap->SetSpellId(m_spellInfo->Id); linkedTrap->SetOwnerGUID(unitCaster->GetGUID()); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), linkedTrap); + ExecuteLogEffectSummonObject(effectInfo->Effect, linkedTrap); } } @@ -5059,7 +5059,7 @@ void Spell::SummonGuardian(SpellEffectInfo const* effect, uint32 entry, SummonPr summon->SetDisplayId(1126); // modelid1 } - ExecuteLogEffectSummonObject(SpellEffectName(effect->Effect), summon); + ExecuteLogEffectSummonObject(SpellEffects(effect->Effect), summon); } } @@ -5356,7 +5356,7 @@ void Spell::EffectSummonPersonalGameObject() go->SetSpellId(m_spellInfo->Id); go->SetPrivateObjectOwner(m_caster->GetGUID()); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), go); + ExecuteLogEffectSummonObject(effectInfo->Effect, go); map->AddToMap(go); @@ -5367,7 +5367,7 @@ void Spell::EffectSummonPersonalGameObject() linkedTrap->SetRespawnTime(duration > 0 ? duration / IN_MILLISECONDS : 0); linkedTrap->SetSpellId(m_spellInfo->Id); - ExecuteLogEffectSummonObject(SpellEffectName(effectInfo->Effect), linkedTrap); + ExecuteLogEffectSummonObject(effectInfo->Effect, linkedTrap); } } @@ -5398,7 +5398,7 @@ void Spell::EffectResurrectWithAura() if (resurrectAura && target->HasAura(resurrectAura)) return; - ExecuteLogEffectResurrect(SpellEffectName(effectInfo->Effect), target); + ExecuteLogEffectResurrect(effectInfo->Effect, target); target->SetResurrectRequestData(m_caster, health, mana, resurrectAura); SendResurrectRequest(target); } @@ -5543,7 +5543,7 @@ void Spell::EffectCreateHeirloomItem() bonusList.push_back(collectionMgr->GetHeirloomBonus(m_misc.Raw.Data[0])); DoCreateItem(m_misc.Raw.Data[0], ItemContext::NONE, &bonusList); - ExecuteLogEffectCreateItem(SpellEffectName(effectInfo->Effect), m_misc.Raw.Data[0]); + ExecuteLogEffectCreateItem(effectInfo->Effect, m_misc.Raw.Data[0]); } void Spell::EffectActivateGarrisonBuilding() diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 8c1eb7122c099..cff6c31b53d63 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -239,7 +239,7 @@ struct SpellEffectInfo::ImmunityInfo uint8 OtherImmuneMask = 0; Trinity::Containers::FlatSet AuraTypeImmune; - Trinity::Containers::FlatSet SpellEffectImmune; + Trinity::Containers::FlatSet SpellEffectImmune; }; std::array SpellImplicitTargetInfo::_data = @@ -415,7 +415,7 @@ SpellEffectInfo::SpellEffectInfo(SpellInfo const* spellInfo, SpellEffectEntry co _spellInfo = spellInfo; EffectIndex = SpellEffIndex(_effect.EffectIndex); - Effect = SpellEffectName(_effect.Effect); + Effect = SpellEffects(_effect.Effect); ApplyAuraName = AuraType(_effect.EffectAura); ApplyAuraPeriod = _effect.EffectAuraPeriod; BasePoints = _effect.EffectBasePoints; @@ -456,7 +456,7 @@ bool SpellEffectInfo::IsEffect() const return Effect != 0; } -bool SpellEffectInfo::IsEffect(SpellEffectName effectName) const +bool SpellEffectInfo::IsEffect(SpellEffects effectName) const { return Effect == effectName; } @@ -1548,7 +1548,7 @@ uint32 SpellInfo::GetCategory() const return CategoryId; } -bool SpellInfo::HasEffect(SpellEffectName effect) const +bool SpellInfo::HasEffect(SpellEffects effect) const { for (SpellEffectInfo const& eff : GetEffects()) if (eff.IsEffect(effect)) @@ -3497,7 +3497,7 @@ void SpellInfo::_LoadImmunityInfo() dispelImmunityMask |= creatureImmunities->DispelType.to_ulong(); mechanicImmunityMask |= creatureImmunities->Mechanic.to_ullong(); otherImmunityMask |= creatureImmunities->Other.AsUnderlyingType(); - for (SpellEffectName effectType : creatureImmunities->Effect) + for (SpellEffects effectType : creatureImmunities->Effect) immuneInfo.SpellEffectImmune.insert(effectType); for (AuraType aura : creatureImmunities->Aura) immuneInfo.AuraTypeImmune.insert(aura); @@ -3538,7 +3538,7 @@ void SpellInfo::_LoadImmunityInfo() } case SPELL_AURA_EFFECT_IMMUNITY: { - immuneInfo.SpellEffectImmune.insert(static_cast(miscVal)); + immuneInfo.SpellEffectImmune.insert(static_cast(miscVal)); break; } case SPELL_AURA_STATE_IMMUNITY: @@ -3784,7 +3784,7 @@ void SpellInfo::ApplyAllSpellImmunitiesTo(Unit* target, SpellEffectInfo const& s }); } - for (SpellEffectName effectType : immuneInfo->SpellEffectImmune) + for (SpellEffects effectType : immuneInfo->SpellEffectImmune) target->ApplySpellImmune(Id, IMMUNITY_EFFECT, effectType, apply); if (uint8 otherImmuneMask = immuneInfo->OtherImmuneMask) diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index fda07e05142d4..033148a773c37 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -212,7 +212,7 @@ class TC_GAME_API SpellEffectInfo SpellInfo const* _spellInfo; public: SpellEffIndex EffectIndex; - SpellEffectName Effect; + SpellEffects Effect; AuraType ApplyAuraName; uint32 ApplyAuraPeriod; float BasePoints; @@ -254,7 +254,7 @@ class TC_GAME_API SpellEffectInfo ~SpellEffectInfo(); bool IsEffect() const; - bool IsEffect(SpellEffectName effectName) const; + bool IsEffect(SpellEffects effectName) const; bool IsAura() const; bool IsAura(AuraType aura) const; bool IsTargetingArea() const; @@ -447,7 +447,7 @@ class TC_GAME_API SpellInfo SpellInfo& operator=(SpellInfo&&) noexcept = delete; uint32 GetCategory() const; - bool HasEffect(SpellEffectName effect) const; + bool HasEffect(SpellEffects effect) const; bool HasAura(AuraType aura) const; bool HasAreaAuraEffect() const; bool HasOnlyDamageEffects() const; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 243f3c80368f6..5a9ff6618799e 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -5373,7 +5373,7 @@ void SpellMgr::LoadSpellInfoImmunities() for (std::string_view token : Trinity::Tokenize(fields[4].GetStringView(), ',', false)) { if (Optional effect = Trinity::StringTo(token); effect && effect < uint32(TOTAL_SPELL_EFFECTS)) - immunities.Effect.push_back(SpellEffectName(*effect)); + immunities.Effect.push_back(SpellEffects(*effect)); else TC_LOG_ERROR("sql.sql", "Invalid effect type in `Effects` {} for creature immunities {}, skipped", token, id); } diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index c9e954b25ee8a..82cc50bdb7c5f 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -565,7 +565,7 @@ struct CreatureImmunities std::bitset School; std::bitset DispelType; std::bitset Mechanic; - std::vector Effect; + std::vector Effect; std::vector Aura; EnumFlag Other = SpellOtherImmunity::None; }; From ea204f91bd5e99b54b8a264d2c79eda9eba60e8d Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 12 May 2026 00:06:38 +0200 Subject: [PATCH 153/175] Core/PacketIO: Use default compiler generated copy and move operations in WorldPacket (cherry picked from commit b758b56be4088a80fcb2094885267af9333d28e5) --- src/server/game/Server/WorldPacket.h | 31 +++++----------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/src/server/game/Server/WorldPacket.h b/src/server/game/Server/WorldPacket.h index 70462b5a53361..4a361bb263dc4 100644 --- a/src/server/game/Server/WorldPacket.h +++ b/src/server/game/Server/WorldPacket.h @@ -40,37 +40,16 @@ class WorldPacket : public ByteBuffer explicit WorldPacket(uint32 opcode, size_t res, ConnectionType connection = CONNECTION_TYPE_DEFAULT) : WorldPacket(opcode, res, Reserve{}, connection) { } - WorldPacket(WorldPacket&& packet) noexcept : ByteBuffer(std::move(packet)), - m_opcode(packet.m_opcode), _connection(packet._connection), m_receivedTime(packet.m_receivedTime) { } + explicit WorldPacket(std::vector&& buffer, ConnectionType connection) : ByteBuffer(std::move(buffer)), + m_opcode(UNKNOWN_OPCODE), _connection(connection) { } WorldPacket(WorldPacket const& right) = default; - explicit WorldPacket(std::vector&& buffer, ConnectionType connection) : ByteBuffer(std::move(buffer)), - m_opcode(UNKNOWN_OPCODE), _connection(connection) { } + WorldPacket(WorldPacket&& packet) noexcept = default; - WorldPacket& operator=(WorldPacket const& right) - { - if (this != &right) - { - m_opcode = right.m_opcode; - _connection = right._connection; - ByteBuffer::operator =(right); - } - - return *this; - } + WorldPacket& operator=(WorldPacket const& right) = default; - WorldPacket& operator=(WorldPacket&& right) noexcept - { - if (this != &right) - { - m_opcode = right.m_opcode; - _connection = right._connection; - ByteBuffer::operator=(std::move(right)); - } - - return *this; - } + WorldPacket& operator=(WorldPacket&& right) noexcept = default; void Initialize(uint32 opcode, size_t newres = 200, ConnectionType connection = CONNECTION_TYPE_DEFAULT) { From fbc7929ce0c98582de18486ebdbbdaf2c8805ff1 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 14 May 2026 20:50:05 +0200 Subject: [PATCH 154/175] Core/Misc: Port some 3.3.5 cherry-pick refactors --- src/server/game/Chat/Chat.cpp | 19 ++++++++----------- src/server/game/Chat/Chat.h | 4 ++-- src/server/game/Entities/Player/Player.cpp | 16 ++++++++-------- src/server/game/Handlers/ChatHandler.cpp | 7 +++---- src/server/game/Maps/Map.h | 7 ++++--- .../game/Spells/Auras/SpellAuraEffects.cpp | 13 ++++--------- .../game/Spells/Auras/SpellAuraEffects.h | 4 ---- src/server/game/Spells/Auras/SpellAuras.cpp | 18 +++++++++--------- src/server/game/Spells/Auras/SpellAuras.h | 13 ++++++------- 9 files changed, 44 insertions(+), 57 deletions(-) diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index dc7a79112bb8e..b78f0c0ef9dac 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -698,7 +698,7 @@ LocaleConstant CliHandler::GetSessionDbLocaleIndex() const return sObjectMgr->GetDBCLocaleIndex(); } -std::string const AddonChannelCommandHandler::PREFIX = "TrinityCore"; +std::string_view const AddonChannelCommandHandler::PREFIX = "TrinityCore"; bool AddonChannelCommandHandler::ParseCommands(std::string_view str) { @@ -740,7 +740,7 @@ bool AddonChannelCommandHandler::ParseCommands(std::string_view str) } } -void AddonChannelCommandHandler::Send(std::string const& msg) +void AddonChannelCommandHandler::Send(std::string_view msg) { WorldPackets::Chat::Chat chat; chat.Initialize(CHAT_MSG_WHISPER, LANG_ADDON, GetSession()->GetPlayer(), GetSession()->GetPlayer(), msg, 0, "", LOCALE_enUS, PREFIX); @@ -750,29 +750,26 @@ void AddonChannelCommandHandler::Send(std::string const& msg) void AddonChannelCommandHandler::SendAck() // a Command acknowledged, no body { ASSERT(echo); - char ack[6] = "a"; + char ack[5] = "a"; memcpy(ack + 1, echo, 4); - ack[5] = '\0'; - Send(ack); + Send(std::string_view(ack, 5)); hadAck = true; } void AddonChannelCommandHandler::SendOK() // o Command OK, no body { ASSERT(echo); - char ok[6] = "o"; + char ok[5] = "o"; memcpy(ok + 1, echo, 4); - ok[5] = '\0'; - Send(ok); + Send(std::string_view(ok, 5)); } void AddonChannelCommandHandler::SendFailed() // f Command failed, no body { ASSERT(echo); - char fail[6] = "f"; + char fail[5] = "f"; memcpy(fail + 1, echo, 4); - fail[5] = '\0'; - Send(fail); + Send(std::string_view(fail, 5)); } // m Command message, message in body diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index d44d984653173..30924bc37bd44 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -159,7 +159,7 @@ class TC_GAME_API CliHandler : public ChatHandler class TC_GAME_API AddonChannelCommandHandler : public ChatHandler { public: - static std::string const PREFIX; + static std::string_view const PREFIX; using ChatHandler::ChatHandler; bool ParseCommands(std::string_view str) override; @@ -168,7 +168,7 @@ class TC_GAME_API AddonChannelCommandHandler : public ChatHandler bool IsHumanReadable() const override { return humanReadable; } private: - void Send(std::string const& msg); + void Send(std::string_view msg); void SendAck(); void SendOK(); void SendFailed(); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 6571994f686db..1e351c6522c64 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1435,14 +1435,14 @@ bool Player::TeleportTo(TeleportLocation const& teleportLocation, TeleportToOpti transferPending.TransferSpellID = teleportSpellId; if (teleportLocation.TransportGuid.has_value()) { - transferPending.Ship.emplace(); + WorldPackets::Movement::ShipTransferPending& shipTransferPending = transferPending.Ship.emplace(); if (TransportSpawn const* transportSpawn = sTransportMgr->GetTransportSpawn(teleportLocation.TransportGuid->GetCounter())) { - transferPending.Ship->ID = transportSpawn->TransportGameObjectId; + shipTransferPending.ID = transportSpawn->TransportGameObjectId; if (dynamic_cast(GetTransport())) - transferPending.Ship->OriginMapID = GetMapId(); + shipTransferPending.OriginMapID = GetMapId(); else - transferPending.Ship->OriginMapID = -1; + shipTransferPending.OriginMapID = -1; } } @@ -6103,9 +6103,9 @@ void Player::SendActionButtons(uint32 state) const { WorldPackets::Spells::UpdateActionButtons packet; - for (auto itr = m_actionButtons.begin(); itr != m_actionButtons.end(); ++itr) - if (itr->second.uState != ACTIONBUTTON_DELETED && itr->first < packet.ActionButtons.size()) - packet.ActionButtons[itr->first] = itr->second.packedData; + for (auto const& [i, button] : m_actionButtons) + if (button.uState != ACTIONBUTTON_DELETED && i < packet.ActionButtons.size()) + packet.ActionButtons[i] = button.packedData; packet.Reason = state; @@ -28203,7 +28203,7 @@ void Player::SetEquipmentSet(EquipmentSetInfo::EquipmentSetData const& newEqSet) if (newEqSet.Guid != 0) { // something wrong... - EquipmentSetContainer::const_iterator itr = _equipmentSets.find(newEqSet.Guid); + auto itr = _equipmentSets.find(newEqSet.Guid); if (itr == _equipmentSets.end() || itr->second.Data.Guid != newEqSet.Guid) { TC_LOG_ERROR("entities.player", "Player::SetEquipmentSet: Player '{}' ({}) tried to save nonexistent equipment set {} (index: {})", diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 4a451feed7aa0..3b3ee4995e9fd 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -713,7 +713,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) return; } - sScriptMgr->OnPlayerTextEmote(_player, packet.SoundIndex, packet.EmoteID, packet.Target); + sScriptMgr->OnPlayerTextEmote(_player, packet.EmoteID, packet.SoundIndex, packet.Target); EmotesTextEntry const* em = sEmotesTextStore.LookupEntry(packet.EmoteID); if (!em) @@ -754,9 +754,8 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) _player->UpdateCriteria(CriteriaType::DoEmote, packet.EmoteID, 0, 0, unit); // Send scripted event call - if (unit) - if (Creature* creature = unit->ToCreature()) - creature->AI()->ReceiveEmote(_player, packet.EmoteID); + if (Creature* creature = Object::ToCreature(unit)) + creature->AI()->ReceiveEmote(_player, packet.EmoteID); if (emote != EMOTE_ONESHOT_NONE) _player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Anim); diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index 15793ba517c51..d4f5e36934328 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -93,15 +93,16 @@ enum TransferAbortReason : uint32 TRANSFER_ABORT_MAX_PLAYERS = 2, // Transfer Aborted: instance is full TRANSFER_ABORT_NOT_FOUND = 3, // Transfer Aborted: instance not found TRANSFER_ABORT_TOO_MANY_INSTANCES = 4, // You have entered too many instances recently. + TRANSFER_ABORT_LOGGING_OUT = 5, TRANSFER_ABORT_ZONE_IN_COMBAT = 6, // Unable to zone in while an encounter is in progress. TRANSFER_ABORT_INSUF_EXPAN_LVL = 7, // You must have expansion installed to access this area. TRANSFER_ABORT_DIFFICULTY = 8, // difficulty mode is not available for %s. TRANSFER_ABORT_UNIQUE_MESSAGE = 9, // Until you've escaped TLK's grasp, you cannot leave this place! TRANSFER_ABORT_TOO_MANY_REALM_INSTANCES = 10, // Additional instances cannot be launched, please try again later. TRANSFER_ABORT_NEED_GROUP = 11, // Transfer Aborted: you must be in a raid group to enter this instance - TRANSFER_ABORT_NOT_FOUND_2 = 12, // Transfer Aborted: instance not found - TRANSFER_ABORT_NOT_FOUND_3 = 13, // Transfer Aborted: instance not found - TRANSFER_ABORT_NOT_FOUND_4 = 14, // Transfer Aborted: instance not found + TRANSFER_ABORT_NEED_SERVER = 12, // Transfer Aborted: instance not found + TRANSFER_ABORT_TIMEOUT = 13, // Transfer Aborted: instance not found + TRANSFER_ABORT_BUSY = 14, // Transfer Aborted: instance not found TRANSFER_ABORT_REALM_ONLY = 15, // All players in the party must be from the same realm to enter %s. TRANSFER_ABORT_MAP_NOT_ALLOWED = 16, // Map cannot be entered at this time. TRANSFER_ABORT_LOCKED_TO_DIFFERENT_INSTANCE = 18, // You are already locked to %s diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index dd4dfe4cf790c..853865493d5ef 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5337,14 +5337,14 @@ void AuraEffect::HandleAuraLinked(AuraApplication const* aurApp, uint8 mode, boo if (!triggeredSpellInfo) return; - Unit* caster = triggeredSpellInfo->NeedsToBeTriggeredByCaster(m_spellInfo) ? GetCaster() : target; - if (!caster) - return; - if (mode & AURA_EFFECT_HANDLE_REAL) { if (apply) { + Unit* caster = triggeredSpellInfo->NeedsToBeTriggeredByCaster(m_spellInfo) ? GetCaster() : target; + if (!caster) + return; + CastSpellExtraArgs args(this); if (GetAmount()) // If amount avalible cast with basepoints (Crypt Fever for example) args.AddSpellMod(SPELLVALUE_BASE_POINT0, GetAmount()); @@ -5776,11 +5776,6 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const target->SendPeriodicAuraLog(&pInfo); } -bool AuraEffect::IsAreaAuraEffect() const -{ - return GetSpellEffectInfo().IsAreaAuraEffect(); -} - void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) const { if (!target->IsAlive()) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.h b/src/server/game/Spells/Auras/SpellAuraEffects.h index 523ca08dde31e..9b8488694040a 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.h +++ b/src/server/game/Spells/Auras/SpellAuraEffects.h @@ -104,10 +104,6 @@ class TC_GAME_API AuraEffect SpellEffectInfo const& GetSpellEffectInfo() const { return m_effectInfo; } - bool IsEffect() const { return m_effectInfo.Effect != 0; } - bool IsEffect(SpellEffects effectName) const { return m_effectInfo.Effect == effectName; } - bool IsAreaAuraEffect() const; - private: Aura* const m_base; diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 2eb98b475e443..a85a8263622de 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -514,14 +514,14 @@ AuraScript* Aura::GetScriptByType(std::type_info const& type) const void Aura::_InitEffects(uint32 effMask, Unit* caster, SpellEffectValue const* baseAmount) { // shouldn't be in constructor - functions in AuraEffect::AuraEffect use polymorphism - _effects.resize(GetSpellInfo()->GetEffects().size()); + m_effects.resize(GetSpellInfo()->GetEffects().size()); for (SpellEffectInfo const& spellEffectInfo : GetSpellInfo()->GetEffects()) if (effMask & (1 << spellEffectInfo.EffectIndex)) - _effects[spellEffectInfo.EffectIndex] = new AuraEffect(this, spellEffectInfo, baseAmount ? baseAmount + spellEffectInfo.EffectIndex : nullptr, caster); + m_effects[spellEffectInfo.EffectIndex] = new AuraEffect(this, spellEffectInfo, baseAmount ? baseAmount + spellEffectInfo.EffectIndex : nullptr, caster); - while (!_effects.back()) - _effects.pop_back(); + while (!m_effects.back()) + m_effects.pop_back(); } bool Aura::CanPeriodicTickCrit() const @@ -544,7 +544,7 @@ Aura::~Aura() delete script; } - for (AuraEffect* effect : _effects) + for (AuraEffect* effect : m_effects) delete effect; ASSERT(m_applications.empty()); @@ -575,10 +575,10 @@ WorldObject* Aura::GetWorldObjectCaster() const AuraEffect* Aura::GetEffect(uint32 index) const { - if (index >= _effects.size()) + if (index >= m_effects.size()) return nullptr; - return _effects[index]; + return m_effects[index]; } AuraObjectType Aura::GetType() const @@ -1260,9 +1260,9 @@ AuraKey Aura::GenerateKey(uint32& recalculateMask) const key.SpellId = GetId(); key.EffectMask = 0; recalculateMask = 0; - for (uint32 i = 0; i < _effects.size(); ++i) + for (uint32 i = 0; i < m_effects.size(); ++i) { - if (AuraEffect const* effect = _effects[i]) + if (AuraEffect const* effect = m_effects[i]) { key.EffectMask |= 1 << i; if (effect->CanBeRecalculated()) diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h index 872f964bfc9e8..84765df970ccd 100644 --- a/src/server/game/Spells/Auras/SpellAuras.h +++ b/src/server/game/Spells/Auras/SpellAuras.h @@ -362,16 +362,16 @@ class TC_GAME_API Aura Trinity::IteratorPair> GetAuraEffects() { return Trinity::Containers::MakeIteratorPair( - DBStorageIterator(_effects.data(), _effects.size()), - DBStorageIterator(_effects.data(), _effects.size(), _effects.size())); + DBStorageIterator(m_effects.data(), m_effects.size()), + DBStorageIterator(m_effects.data(), m_effects.size(), m_effects.size())); } Trinity::IteratorPair> GetAuraEffects() const { return Trinity::Containers::MakeIteratorPair( - DBStorageIterator(_effects.data(), _effects.size()), - DBStorageIterator(_effects.data(), _effects.size(), _effects.size())); + DBStorageIterator(m_effects.data(), m_effects.size()), + DBStorageIterator(m_effects.data(), m_effects.size(), m_effects.size())); } - std::size_t GetAuraEffectCount() const { return _effects.size(); } + std::size_t GetAuraEffectCount() const { return m_effects.size(); } virtual std::string GetDebugInfo() const; @@ -410,6 +410,7 @@ class TC_GAME_API Aura uint8 m_procCharges; // Aura charges (0 for infinite) uint8 m_stackAmount; // Aura stack amount + AuraEffectVector m_effects; ApplicationMap m_applications; bool m_isRemoved; @@ -425,8 +426,6 @@ class TC_GAME_API Aura private: std::vector _removedApplications; - AuraEffectVector _effects; - struct NoopAuraDeleter { void operator()(Aura*) const { /*noop - not managed*/ } }; Trinity::unique_trackable_ptr m_scriptRef; }; From d6bfa6342d33203fc00712c097580afae0290c45 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Fri, 15 May 2026 16:14:34 +0300 Subject: [PATCH 155/175] DB/RingingDeeps: Added graveyards (#31839) --- .../world/master/2026_05_15_00_world.sql | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 sql/updates/world/master/2026_05_15_00_world.sql diff --git a/sql/updates/world/master/2026_05_15_00_world.sql b/sql/updates/world/master/2026_05_15_00_world.sql new file mode 100644 index 0000000000000..743f81d5a0aff --- /dev/null +++ b/sql/updates/world/master/2026_05_15_00_world.sql @@ -0,0 +1,53 @@ +SET @CGUID := 10006970; + +SET @GGUID := 100161; + +-- Creature +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+12; +INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `MovementType`, `npcflag`, `unit_flags`, `unit_flags2`, `unit_flags3`, `VerifiedBuild`) VALUES +(@CGUID+0, 6491, 2601, 14795, 14800, '0', 0, 0, 0, 0, 3027.7666015625, -2485.7744140625, 361.95977783203125, 1.470984816551208496, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Earthenworks - Difficulty: 0) +(@CGUID+1, 6491, 2601, 14795, 14800, '0', 0, 0, 0, 0, 2829.65625, -3133.5244140625, 362.4063720703125, 1.459322810173034667, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Earthenworks - Difficulty: 0) +(@CGUID+2, 6491, 2601, 14795, 0, '0', 0, 0, 0, 0, 2439.3837890625, -2896.442626953125, 402.479949951171875, 2.818042993545532226, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Ringing Deeps - Central - Difficulty: 0) +(@CGUID+3, 6491, 2601, 14795, 14796, '0', 0, 0, 0, 0, 2003.5816650390625, -2803.42529296875, 364.447052001953125, 2.835761547088623046, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Gundargaz - Difficulty: 0) +(@CGUID+4, 6491, 2601, 14795, 14797, '0', 0, 0, 0, 0, 2370.71533203125, -2591.960205078125, 373.72955322265625, 5.12450265884399414, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Ironhaul Station - Difficulty: 0) +(@CGUID+5, 6491, 2601, 14795, 14822, '0', 0, 0, 0, 0, 1753.907958984375, -3251.73095703125, 326.364044189453125, 3.968767881393432617, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Pillarstone Spire - Difficulty: 0) +(@CGUID+6, 6491, 2601, 14795, 14820, '0', 0, 0, 0, 0, 1662.3507080078125, -3930.979248046875, 257.15533447265625, 2.129301786422729492, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Shadowvein Point - Difficulty: 0) +(@CGUID+7, 6491, 2601, 14795, 0, '0', 0, 0, 0, 0, 2367.4375, -3727.263916015625, 402.0526123046875, 3.616298198699951171, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Ringing Deeps - South - Difficulty: 0) +(@CGUID+8, 6491, 2601, 14795, 14816, '0', 0, 0, 0, 0, 1261.857666015625, -4177.69287109375, 224.8875579833984375, 2.932206392288208007, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Obsidian Hollow - Difficulty: 0) +(@CGUID+9, 6491, 2601, 14795, 0, '0', 0, 0, 0, 0, 867.8507080078125, -3485.5400390625, 176.82415771484375, 3.787322998046875, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Ringing Deeps - West - Difficulty: 0) +(@CGUID+10, 6491, 2601, 14795, 14811, '0', 0, 0, 0, 0, 703.45660400390625, -2877.73095703125, 116.0552825927734375, 4.510862350463867187, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: The Living Grotto - Difficulty: 0) +(@CGUID+11, 6491, 2601, 14795, 14812, '0', 0, 0, 0, 0, 123.0156326293945312, -3989.927001953125, 111.5989456176757812, 1.327016353607177734, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186), -- Spirit Healer (Area: Opportunity Point - Difficulty: 0) +(@CGUID+12, 6491, 2601, 14795, 15528, '0', 0, 0, 0, 0, -132.05035400390625, -4863.830078125, -120.925376892089843, 2.37410593032836914, 7200, 0, 0, 0, NULL, NULL, NULL, NULL, 67186); -- Spirit Healer (Area: Gutterville - Difficulty: 0) + +-- Graveyard +DELETE FROM `graveyard_zone` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+12; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Comment`) VALUES +(@GGUID+0, 14795, 'The Ringing Deeps - The Hallowfall Gate'), +(@GGUID+1, 14795, 'The Ringing Deeps - North'), +(@GGUID+2, 14795, 'The Ringing Deeps - Central'), +(@GGUID+3, 14795, 'The Ringing Deeps - Gundargaz'), +(@GGUID+4, 14795, 'The Ringing Deeps - Ironhaul Station'), +(@GGUID+5, 14795, 'The Ringing Deeps - Pillarstone Spire'), +(@GGUID+6, 14795, 'The Ringing Deeps - Shadowvein Point'), +(@GGUID+7, 14795, 'The Ringing Deeps - South'), +(@GGUID+8, 14795, 'The Ringing Deeps - Obsidian Hollow'), +(@GGUID+9, 14795, 'The Ringing Deeps - West'), +(@GGUID+10, 14795, 'The Ringing Deeps - The Living Grotto'), +(@GGUID+11, 14795, 'The Ringing Deeps - Opportunity Point'), +(@GGUID+12, 14795, 'The Ringing Deeps - Gutterville'); + +DELETE FROM `world_safe_locs` WHERE `ID` BETWEEN @GGUID+0 AND @GGUID+12; +INSERT INTO `world_safe_locs` (`ID`, `MapID`, `LocX`, `LocY`, `LocZ`, `Facing`, `Comment`) VALUES +(@GGUID+0, 2601, 3028.4236, -2481.4358, 360.0422, 4.59609222412109375 / (2 * PI() / 360), 'The Ringing Deeps - The Hallowfall Gate - GY'), +(@GGUID+1, 2601, 2829.68, -3133.37, 362.26, 1.341953992843627929 / (2 * PI() / 360), 'The Ringing Deeps - North - GY'), +(@GGUID+2, 2601, 2439.77, -2896.16, 402.365, 3.500728845596313476 / (2 * PI() / 360), 'The Ringing Deeps - Central - GY'), +(@GGUID+3, 2601, 1999.7916, -2802.1597, 362.92307, 5.938390731811523437 / (2 * PI() / 360), 'The Ringing Deeps - Gundargaz - GY'), +(@GGUID+4, 2601, 2372.6301, -2597.1926, 373.80652, 1.91044628620147705 / (2 * PI() / 360), 'The Ringing Deeps - Ironhaul Station - GY'), +(@GGUID+5, 2601, 1750.6111, -3255.2708, 324.67062, 1.085670113563537597 / (2 * PI() / 360), 'The Ringing Deeps - Pillarstone Spire - GY'), +(@GGUID+6, 2601, 1658.75, -3927.6736, 255.30501, 5.403573036193847656 / (2 * PI() / 360), 'The Ringing Deeps - Shadowvein Point - GY'), +(@GGUID+7, 2601, 2362.5156, -3730.0503, 400.48096, 0.448542356491088867 / (2 * PI() / 360), 'The Ringing Deeps - South - GY'), +(@GGUID+8, 2601, 1257.6129, -4176.4897, 223.08159, 5.924509525299072265 / (2 * PI() / 360), 'The Ringing Deeps - Obsidian Hollow - GY'), +(@GGUID+9, 2601, 865.0625, -3488.2083, 174.96628, 0.60096144676208496 / (2 * PI() / 360), 'The Ringing Deeps - West - GY'), +(@GGUID+10, 2601, 702.2535, -2882.0364, 113.83126, 1.402311444282531738 / (2 * PI() / 360), 'The Ringing Deeps - The Living Grotto - GY'), +(@GGUID+11, 2601, 123.89931, -3986.2344, 109.95682, 4.44544839859008789 / (2 * PI() / 360), 'The Ringing Deeps - Opportunity Point - GY'), +(@GGUID+12, 2601, -132.083, -4863.93, -120.887, 2.254197597503662109 / (2 * PI() / 360), 'The Ringing Deeps - Gutterville - GY'); From 8915d3d90cc7d1f9ec73b5eff6b7acfc157af600 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sat, 16 May 2026 00:33:36 +0200 Subject: [PATCH 156/175] Core: Updated allowed build to 12.0.5.67602 --- sql/base/auth_database.sql | 19 +++++++++++---- .../auth/master/2026_05_16_00_auth.sql | 23 +++++++++++++++++++ 2 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 sql/updates/auth/master/2026_05_16_00_auth.sql diff --git a/sql/base/auth_database.sql b/sql/base/auth_database.sql index 698753615a99e..938b2684698cd 100644 --- a/sql/base/auth_database.sql +++ b/sql/base/auth_database.sql @@ -1624,7 +1624,14 @@ INSERT INTO `build_auth_key` VALUES (67451,'Mac','x64','WoWC',0x410CDD2A04375CA5D0D88C349C52C55A), (67451,'Win','A64','WoW',0x5C995E2429DE358EFE6EAB87AE04D875), (67451,'Win','x64','WoW',0x79881A8B0B6482BD73DB99F9C69456EA), -(67451,'Win','x64','WoWC',0x2B20FCC4EDB252C81601F9C1E05A1C6B); +(67451,'Win','x64','WoWC',0x2B20FCC4EDB252C81601F9C1E05A1C6B), +(67602,'Mac','A64','WoW',0x89E2CEB6AE2890997DB03BB332BEC59E), +(67602,'Mac','A64','WoWC',0xC1BD2C01B0EAC4580B427A6DEEDC48A0), +(67602,'Mac','x64','WoW',0x4A9D243A9A4919936FE5CAC7024F920F), +(67602,'Mac','x64','WoWC',0x31289BB2115BA7A778D4E54FFF638296), +(67602,'Win','A64','WoW',0x2E7F2CE7A255EF8697D07B586B113820), +(67602,'Win','x64','WoW',0x7364F24CDF8CECE86ED8D6C9D26DE012), +(67602,'Win','x64','WoWC',0xB1140CD65B6D22D08BB7C91689493C71); /*!40000 ALTER TABLE `build_auth_key` ENABLE KEYS */; UNLOCK TABLES; @@ -2076,7 +2083,8 @@ INSERT INTO `build_info` VALUES (67235,12,0,5,NULL), (67314,12,0,5,NULL), (67403,12,0,5,NULL), -(67451,12,0,5,NULL); +(67451,12,0,5,NULL), +(67602,12,0,5,NULL); /*!40000 ALTER TABLE `build_info` ENABLE KEYS */; UNLOCK TABLES; @@ -3689,7 +3697,7 @@ CREATE TABLE `realmlist` ( `timezone` tinyint unsigned NOT NULL DEFAULT '0', `allowedSecurityLevel` tinyint unsigned NOT NULL DEFAULT '0', `population` float NOT NULL DEFAULT '0', - `gamebuild` int unsigned NOT NULL DEFAULT '67451', + `gamebuild` int unsigned NOT NULL DEFAULT '67602', `Region` tinyint unsigned NOT NULL DEFAULT '1', `Battlegroup` tinyint unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`id`), @@ -3704,7 +3712,7 @@ CREATE TABLE `realmlist` ( LOCK TABLES `realmlist` WRITE; /*!40000 ALTER TABLE `realmlist` DISABLE KEYS */; INSERT INTO `realmlist` VALUES -(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67451,1,1); +(1,'Trinity','127.0.0.1','127.0.0.1',NULL,NULL,'255.255.255.0',8085,0,0,1,0,0,67602,1,1); /*!40000 ALTER TABLE `realmlist` ENABLE KEYS */; UNLOCK TABLES; @@ -4271,7 +4279,8 @@ INSERT INTO `updates` VALUES ('2026_04_29_00_auth.sql','035B7C240CDAC17FDC883175D5C0ABAFA432FDDD','RELEASED','2026-04-29 00:00:29',0), ('2026_05_01_00_auth.sql','1E532962D6A6E618B2675EBCC7AE9E1EFE260CAA','RELEASED','2026-05-01 11:58:34',0), ('2026_05_07_00_auth.sql','21E45190BB39F4EA4071E6FD0F47EF2238437A81','RELEASED','2026-05-07 22:51:10',0), -('2026_05_08_00_auth.sql','3423C730BDA4A5406EED67D44612EE50C6A648A2','RELEASED','2026-05-08 20:58:04',0); +('2026_05_08_00_auth.sql','3423C730BDA4A5406EED67D44612EE50C6A648A2','RELEASED','2026-05-08 20:58:04',0), +('2026_05_16_00_auth.sql','E4B2B3C36957C07F11ACC23B7A6CB156E239B599','RELEASED','2026-05-16 00:30:22',0); /*!40000 ALTER TABLE `updates` ENABLE KEYS */; UNLOCK TABLES; diff --git a/sql/updates/auth/master/2026_05_16_00_auth.sql b/sql/updates/auth/master/2026_05_16_00_auth.sql new file mode 100644 index 0000000000000..8f9b209c54d5b --- /dev/null +++ b/sql/updates/auth/master/2026_05_16_00_auth.sql @@ -0,0 +1,23 @@ +DELETE FROM `build_info` WHERE `build` IN (67602); +INSERT INTO `build_info` (`build`,`majorVersion`,`minorVersion`,`bugfixVersion`,`hotfixVersion`) VALUES +(67602,12,0,5,NULL); + +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Mac' AND `arch`='A64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Mac' AND `arch`='x64' AND `type`='WoWC'; +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Win' AND `arch`='A64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Win' AND `arch`='x64' AND `type`='WoW'; +DELETE FROM `build_auth_key` WHERE `build`=67602 AND `platform`='Win' AND `arch`='x64' AND `type`='WoWC'; +INSERT INTO `build_auth_key` (`build`,`platform`,`arch`,`type`,`key`) VALUES +(67602,'Mac','A64','WoW',0x89E2CEB6AE2890997DB03BB332BEC59E), +(67602,'Mac','A64','WoWC',0xC1BD2C01B0EAC4580B427A6DEEDC48A0), +(67602,'Mac','x64','WoW',0x4A9D243A9A4919936FE5CAC7024F920F), +(67602,'Mac','x64','WoWC',0x31289BB2115BA7A778D4E54FFF638296), +(67602,'Win','A64','WoW',0x2E7F2CE7A255EF8697D07B586B113820), +(67602,'Win','x64','WoW',0x7364F24CDF8CECE86ED8D6C9D26DE012), +(67602,'Win','x64','WoWC',0xB1140CD65B6D22D08BB7C91689493C71); + +UPDATE `realmlist` SET `gamebuild`=67602 WHERE `gamebuild`=67451; + +ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int unsigned NOT NULL DEFAULT '67602'; From a4cdedfc6d15707e031836f176ce64c49bea60de Mon Sep 17 00:00:00 2001 From: MoltenCrystal Date: Sun, 17 May 2026 23:36:56 +0200 Subject: [PATCH 157/175] DB/WorldState: Named active Awakened raid worldstate for Dragonflight (#31848) --- sql/updates/world/master/2026_05_17_00_world.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 sql/updates/world/master/2026_05_17_00_world.sql diff --git a/sql/updates/world/master/2026_05_17_00_world.sql b/sql/updates/world/master/2026_05_17_00_world.sql new file mode 100644 index 0000000000000..4c28e83bb3df1 --- /dev/null +++ b/sql/updates/world/master/2026_05_17_00_world.sql @@ -0,0 +1,4 @@ +-- Worldstate for Awakened raids in Dragonflight +DELETE FROM `world_state` WHERE `ID` = 25589; +INSERT INTO `world_state` (`ID`, `DefaultValue`, `MapIDs`, `AreaIDs`, `ScriptName`, `Comment`) VALUES +(25589, 0, NULL, NULL, '', 'Dragonflight - Active Awakened raid'); From 6324222cdb4d5d99673b788bfff5b324efc7ea5f Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 18 May 2026 00:28:59 +0200 Subject: [PATCH 158/175] Core/Misc: Port some 3.3.5 cherry-pick refactors --- src/server/game/Chat/Channels/Channel.cpp | 119 ++++++++---------- src/server/game/Chat/Channels/Channel.h | 14 +-- .../game/Entities/Item/ItemEnchantmentMgr.cpp | 4 +- .../game/Entities/Item/ItemEnchantmentMgr.h | 2 +- src/server/game/Entities/Player/Player.cpp | 9 +- src/server/game/Entities/Unit/Unit.cpp | 13 +- src/server/game/Handlers/ItemHandler.cpp | 20 +-- src/server/game/Handlers/PetHandler.cpp | 3 + src/server/game/Handlers/SpellHandler.cpp | 14 +-- .../game/Server/Packets/ChannelPackets.cpp | 6 +- .../game/Server/Packets/ChannelPackets.h | 4 +- .../game/Server/Packets/MovementPackets.h | 4 +- src/server/game/Server/Packets/SpellPackets.h | 2 +- .../game/Spells/Auras/SpellAuraDefines.h | 2 +- src/server/game/Spells/Auras/SpellAuras.cpp | 9 +- src/server/game/Spells/Auras/SpellAuras.h | 2 +- src/server/game/Spells/Spell.cpp | 105 +++------------- src/server/game/Spells/Spell.h | 2 +- src/server/game/Spells/SpellDefines.h | 2 +- src/server/scripts/Commands/cs_debug.cpp | 1 - 20 files changed, 117 insertions(+), 220 deletions(-) diff --git a/src/server/game/Chat/Channels/Channel.cpp b/src/server/game/Chat/Channels/Channel.cpp index 0550f4ea931ba..4bbe8bbe9ce7b 100644 --- a/src/server/game/Chat/Channels/Channel.cpp +++ b/src/server/game/Chat/Channels/Channel.cpp @@ -214,12 +214,6 @@ void Channel::JoinChannel(Player* player, std::string const& pass) PlayerInfo& playerInfo = _playersStore[guid]; playerInfo.SetInvisible(!player->isGMVisible()); - /* - YouJoinedAppend appender; - ChannelNameBuilder builder(this, appender); - SendToOne(builder, guid); - */ - auto builder = [&](LocaleConstant locale) { LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale); @@ -237,7 +231,7 @@ void Channel::JoinChannel(Player* player, std::string const& pass) SendToOne(builder, guid); - JoinNotify(player); + JoinNotify(guid); // Custom channel handling if (!IsConstant()) @@ -269,16 +263,8 @@ void Channel::LeaveChannel(Player* player, bool send, bool suspend) return; } - player->LeftChannel(this); - if (send) { - /* - YouLeftAppend appender; - ChannelNameBuilder builder(this, appender); - SendToOne(builder, guid); - */ - auto builder = [&](LocaleConstant locale) { LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale); @@ -292,11 +278,12 @@ void Channel::LeaveChannel(Player* player, bool send, bool suspend) }; SendToOne(builder, guid); + + player->LeftChannel(this); } - PlayerInfo& info = _playersStore.at(guid); + PlayerInfo info = _playersStore.extract(guid).mapped(); bool changeowner = info.IsOwner(); - _playersStore.erase(guid); if (_announceEnabled && !player->GetSession()->HasPermission(rbac::RBAC_PERM_SILENTLY_JOIN_CHANNEL)) { @@ -305,11 +292,11 @@ void Channel::LeaveChannel(Player* player, bool send, bool suspend) SendToAll(builder); } - LeaveNotify(player); + LeaveNotify(guid); if (!IsConstant()) { - // If the channel owner left and there are still playersStore inside, pick a new owner + // If the channel owner left and there are players still inside, pick a new owner // do not pick invisible gm owner unless there are only invisible gms in that channel (rare) if (changeowner && _ownershipEnabled && !_playersStore.empty()) { @@ -323,10 +310,10 @@ void Channel::LeaveChannel(Player* player, bool send, bool suspend) if (itr == _playersStore.end()) itr = _playersStore.begin(); - ObjectGuid const& newowner = itr->first; + ObjectGuid const& newOwner = itr->first; itr->second.SetModerator(true); - SetOwner(newowner); + SetOwner(newOwner); // if the new owner is invisible gm, set flag to automatically choose a new owner if (itr->second.IsInvisible()) @@ -541,6 +528,40 @@ void Channel::SetInvisible(Player const* player, bool on) _isOwnerInvisible = on; } +void Channel::SetModerator(ObjectGuid const& guid, bool set) +{ + if (!IsOn(guid)) + return; + + PlayerInfo& playerInfo = _playersStore.at(guid); + if (playerInfo.IsModerator() != set) + { + uint8 oldFlag = playerInfo.GetFlags(); + playerInfo.SetModerator(set); + + ModeChangeAppend appender(guid, oldFlag, playerInfo.GetFlags()); + ChannelNameBuilder builder(this, appender); + SendToAll(builder); + } +} + +void Channel::SetMute(ObjectGuid const& guid, bool set) +{ + if (!IsOn(guid)) + return; + + PlayerInfo& playerInfo = _playersStore.at(guid); + if (playerInfo.IsMuted() != set) + { + uint8 oldFlag = playerInfo.GetFlags(); + playerInfo.SetMuted(set); + + ModeChangeAppend appender(guid, oldFlag, playerInfo.GetFlags()); + ChannelNameBuilder builder(this, appender); + SendToAll(builder); + } +} + void Channel::SetOwner(Player const* player, std::string const& newname) { ObjectGuid const& guid = player->GetGUID(); @@ -597,7 +618,7 @@ void Channel::SendWhoOwner(Player const* player) } } -void Channel::List(Player const* player) +void Channel::List(Player const* player) const { ObjectGuid const& guid = player->GetGUID(); if (!IsOn(guid)) @@ -613,13 +634,13 @@ void Channel::List(Player const* player) player->GetSession()->GetPlayerInfo(), channelName); WorldPackets::Channel::ChannelListResponse list; - list._Display = true; /// always true? + list.Display = true; /// always true? list._Channel = channelName; list._ChannelFlags = GetFlags(); uint32 gmLevelInWhoList = sWorld->getIntConfig(CONFIG_GM_LEVEL_IN_WHO_LIST); - list._Members.reserve(_playersStore.size()); + list.Members.reserve(_playersStore.size()); for (PlayerContainer::value_type const& i : _playersStore) { Player* member = ObjectAccessor::FindConnectedPlayer(i.first); @@ -631,7 +652,7 @@ void Channel::List(Player const* player) member->GetSession()->GetSecurity() <= AccountTypes(gmLevelInWhoList)) && member->IsVisibleGloballyFor(player)) { - list._Members.emplace_back(i.first, *member->m_playerData->VirtualPlayerRealm, i.second.GetFlags()); + list.Members.emplace_back(i.first, *member->m_playerData->VirtualPlayerRealm, i.second.GetFlags()); } } @@ -661,7 +682,6 @@ void Channel::Announce(Player const* player) _announceEnabled = !_announceEnabled; - WorldPackets::Channel::ChannelNotify notify; if (_announceEnabled) { AnnouncementsOnAppend appender(guid); @@ -841,7 +861,6 @@ void Channel::SetOwner(ObjectGuid const& guid, bool exclaim) { if (!_ownerGuid.IsEmpty()) { - // [] will re-add player after it possible removed auto itr = _playersStore.find(_ownerGuid); if (itr != _playersStore.end()) itr->second.SetOwner(false); @@ -850,15 +869,15 @@ void Channel::SetOwner(ObjectGuid const& guid, bool exclaim) _ownerGuid = guid; if (!_ownerGuid.IsEmpty()) { - uint8 oldFlag = GetPlayerFlags(_ownerGuid); auto itr = _playersStore.find(_ownerGuid); if (itr == _playersStore.end()) return; + uint8 oldFlag = itr->second.GetFlags(); itr->second.SetModerator(true); itr->second.SetOwner(true); - ModeChangeAppend appender(_ownerGuid, oldFlag, GetPlayerFlags(_ownerGuid)); + ModeChangeAppend appender(_ownerGuid, oldFlag, itr->second.GetFlags()); ChannelNameBuilder builder(this, appender); SendToAll(builder); @@ -885,10 +904,8 @@ void Channel::DeclineInvite(Player const* /*player*/) { } -void Channel::JoinNotify(Player const* player) +void Channel::JoinNotify(ObjectGuid const& guid) const { - ObjectGuid const& guid = player->GetGUID(); - if (IsConstant()) { auto builder = [&](LocaleConstant locale) @@ -927,10 +944,8 @@ void Channel::JoinNotify(Player const* player) } } -void Channel::LeaveNotify(Player const* player) +void Channel::LeaveNotify(ObjectGuid const& guid) const { - ObjectGuid const& guid = player->GetGUID(); - auto builder = [&](LocaleConstant locale) { LocaleConstant localeIdx = sWorld->GetAvailableDbcLocale(locale); @@ -950,40 +965,6 @@ void Channel::LeaveNotify(Player const* player) SendToAll(builder); } -void Channel::SetModerator(ObjectGuid const& guid, bool set) -{ - if (!IsOn(guid)) - return; - - PlayerInfo& playerInfo = _playersStore.at(guid); - if (playerInfo.IsModerator() != set) - { - uint8 oldFlag = playerInfo.GetFlags(); - playerInfo.SetModerator(set); - - ModeChangeAppend appender(guid, oldFlag, playerInfo.GetFlags()); - ChannelNameBuilder builder(this, appender); - SendToAll(builder); - } -} - -void Channel::SetMute(ObjectGuid const& guid, bool set) -{ - if (!IsOn(guid)) - return; - - PlayerInfo& playerInfo = _playersStore.at(guid); - if (playerInfo.IsMuted() != set) - { - uint8 oldFlag = playerInfo.GetFlags(); - playerInfo.SetMuted(set); - - ModeChangeAppend appender(guid, oldFlag, playerInfo.GetFlags()); - ChannelNameBuilder builder(this, appender); - SendToAll(builder); - } -} - template void Channel::SendToAll(Builder& builder, ObjectGuid const& guid, ObjectGuid const& accountGuid) const { diff --git a/src/server/game/Chat/Channels/Channel.h b/src/server/game/Chat/Channels/Channel.h index 8fff9ea395023..193d2567f1baf 100644 --- a/src/server/game/Chat/Channels/Channel.h +++ b/src/server/game/Chat/Channels/Channel.h @@ -27,14 +27,6 @@ class Player; struct AreaTableEntry; -namespace WorldPackets -{ - namespace Channel - { - class ChannelNotify; - } -} - // EnumUtils: DESCRIBE THIS enum ChatNotify : uint8 { @@ -218,14 +210,14 @@ class TC_GAME_API Channel void UnsetMute(Player const* player, std::string const& newname) { SetMode(player, newname, false, false); } void SilenceAll(Player const* player, std::string const& name); void UnsilenceAll(Player const* player, std::string const& name); - void List(Player const* player); + void List(Player const* player) const; void Announce(Player const* player); void Say(ObjectGuid const& guid, std::string const& what, uint32 lang) const; void AddonSay(ObjectGuid const& guid, std::string const& prefix, std::string const& what, bool isLogged) const; void DeclineInvite(Player const* player); void Invite(Player const* player, std::string const& newp); - void JoinNotify(Player const* player); - void LeaveNotify(Player const* player); + void JoinNotify(ObjectGuid const& guid) const; + void LeaveNotify(ObjectGuid const& guid) const; void SetOwnership(bool ownership) { _ownershipEnabled = ownership; } private: diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp index 297d39f1da984..cc7b31e1cf6b8 100644 --- a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp +++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp @@ -104,7 +104,7 @@ ItemRandomBonusListId GenerateItemRandomBonusListId(uint32 item_id) return *Trinity::Containers::SelectRandomWeightedContainerElement(tab->second.BonusListIDs, std::span(tab->second.Chances)); } -TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subClass) +float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subClass) { uint32 propIndex; @@ -168,6 +168,8 @@ TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint case ITEM_QUALITY_LEGENDARY: case ITEM_QUALITY_ARTIFACT: return randPropPointsEntry->EpicF[propIndex]; + default: + break; } return 0; diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.h b/src/server/game/Entities/Item/ItemEnchantmentMgr.h index 5c8f524a1251e..375b7914edc70 100644 --- a/src/server/game/Entities/Item/ItemEnchantmentMgr.h +++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.h @@ -24,6 +24,6 @@ using ItemRandomBonusListId = uint32; TC_GAME_API void LoadItemRandomBonusListTemplates(); TC_GAME_API ItemRandomBonusListId GenerateItemRandomBonusListId(uint32 item_id); -TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subclass); +TC_GAME_API float GetRandomPropertyPoints(uint32 itemLevel, uint32 quality, uint32 inventoryType, uint32 subClass); #endif diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1e351c6522c64..8a15f548c9323 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22932,8 +22932,7 @@ void Player::AddSpellMod(SpellModifier* mod, bool apply) spellModifier.ModIndex = AsUnderlyingType(mod->op); - boost::dynamic_bitset mask; - mask.resize(128); + boost::dynamic_bitset mask(128, 0); boost::from_block_range( &static_cast(mod)->mask[0], @@ -25543,11 +25542,7 @@ void Player::SendAurasForTarget(Unit* target) const update.Auras.reserve(visibleAuras.size()); for (AuraApplication* auraApp : visibleAuras) - { - WorldPackets::Spells::AuraInfo auraInfo; - auraApp->BuildUpdatePacket(auraInfo, false); - update.Auras.push_back(auraInfo); - } + auraApp->BuildUpdatePacket(update.Auras.emplace_back(), false); SendDirectMessage(update.Write()); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 3a0fbbf9f4215..cfbc42802bff6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2096,6 +2096,8 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit log.damage = splitDamage; log.originalDamage = splitDamage; log.absorb = split_absorb; + log.periodicLog = damageInfo.GetDamageType() == DOT; + log.HitInfo |= SPELL_HIT_TYPE_SPLIT; caster->SendSpellNonMeleeDamageLog(&log); // break 'Fear' and similar auras @@ -12982,7 +12984,6 @@ void Unit::SendTeleportPacket(TeleportLocation const& teleportLocation) moveUpdateTeleport.Status = &m_movementInfo; if (_movementForces) moveUpdateTeleport.MovementForces = _movementForces->GetForces(); - Unit* broadcastSource = this; // should this really be the unit _being_ moved? not the unit doing the moving? if (Player* playerMover = Unit::ToPlayer(GetUnitBeingMoved())) @@ -12995,14 +12996,15 @@ void Unit::SendTeleportPacket(TeleportLocation const& teleportLocation) moveTeleport.SequenceIndex = m_movementCounter++; playerMover->SendDirectMessage(moveTeleport.Write()); - broadcastSource = playerMover; + // Broadcast the packet to everyone except self. + SendMessageToSet(moveUpdateTeleport.Write(), playerMover); } else { // This is the only packet sent for creatures which contains MovementInfo structure // we do not update m_movementInfo for creatures so it needs to be done manually here moveUpdateTeleport.Status->guid = GetGUID(); - moveUpdateTeleport.Status->time = getMSTime(); + moveUpdateTeleport.Status->time = GameTime::GetGameTimeMS(); if (teleportLocation.TransportGuid) { @@ -13018,10 +13020,9 @@ void Unit::SendTeleportPacket(TeleportLocation const& teleportLocation) moveUpdateTeleport.Status->pos.Relocate(teleportLocation.Location); moveUpdateTeleport.Status->transport.Reset(); } - } - // Broadcast the packet to everyone except self. - broadcastSource->SendMessageToSet(moveUpdateTeleport.Write(), false); + SendMessageToSet(moveUpdateTeleport.Write(), true); + } } bool Unit::UpdatePosition(float x, float y, float z, float orientation, bool teleport) diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index 70859460335b4..d6b70b68b6857 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -620,7 +620,7 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) if (!itemTemplate) continue; - int32 leftInStock = !vendorItem->maxcount ? -1 : vendor->GetVendorItemCurrentCount(vendorItem); + int32 leftInStock = !vendorItem->maxcount ? -1 : int32(vendor->GetVendorItemCurrentCount(vendorItem)); if (!_player->IsGameMaster()) // ignore conditions if GM on { // Respect allowed class @@ -656,20 +656,20 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) price = std::max(uint64(1), price); item.MuID = slot + 1; // client expects counting to start at 1 - item.ExtendedCostID = vendorItem->ExtendedCost; item.Type = vendorItem->Type; - item.Quantity = leftInStock; - item.StackCount = itemTemplate->GetBuyCount(); - item.Price = price; - item.DoNotFilterOnVendor = vendorItem->IgnoreFiltering; - item.Refundable = itemTemplate->HasFlag(ITEM_FLAG_ITEM_PURCHASE_RECORD) && vendorItem->ExtendedCost && itemTemplate->GetMaxStackSize() == 1; - item.Item.ItemID = vendorItem->item; if (!vendorItem->BonusListIDs.empty()) { item.Item.ItemBonus.emplace(); item.Item.ItemBonus->BonusListIDs = vendorItem->BonusListIDs; } + item.Quantity = leftInStock; + item.Price = price; + item.StackCount = itemTemplate->GetBuyCount(); + item.ExtendedCostID = vendorItem->ExtendedCost; + item.DoNotFilterOnVendor = vendorItem->IgnoreFiltering; + item.Refundable = itemTemplate->HasFlag(ITEM_FLAG_ITEM_PURCHASE_RECORD) && vendorItem->ExtendedCost && itemTemplate->GetMaxStackSize() == 1; + } else if (vendorItem->Type == ITEM_VENDOR_TYPE_CURRENCY) { @@ -681,10 +681,10 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) continue; // there's no price defined for currencies, only extendedcost is used item.MuID = slot + 1; // client expects counting to start at 1 - item.ExtendedCostID = vendorItem->ExtendedCost; - item.Item.ItemID = vendorItem->item; item.Type = vendorItem->Type; + item.Item.ItemID = vendorItem->item; item.StackCount = vendorItem->maxcount; + item.ExtendedCostID = vendorItem->ExtendedCost; item.DoNotFilterOnVendor = vendorItem->IgnoreFiltering; } else diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index f7a76ee198e76..aa4ec2f610e29 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -727,6 +727,9 @@ void WorldSession::HandlePetCastSpellOpcode(WorldPackets::Spells::PetCastSpell& return; } + if (petCastSpell.Cast.MoveUpdate) + HandleMovementOpcode(CMSG_MOVE_STOP, *petCastSpell.Cast.MoveUpdate); + Spell* spell = new Spell(caster, spellInfo, triggerCastFlags); spell->m_fromClient = true; std::ranges::copy(petCastSpell.Cast.Misc, std::ranges::begin(spell->m_misc.Raw.Data)); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 76999e55249c1..574a52b00fc1f 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -228,13 +228,13 @@ void WorldSession::HandleGameobjectReportUse(WorldPackets::GameObject::GameObjRe } } -void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& cast) +void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& castRequest) { // Skip casting invalid spells right away - SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(cast.Cast.SpellID, _player->GetMap()->GetDifficultyID()); + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(castRequest.Cast.SpellID, _player->GetMap()->GetDifficultyID()); if (!spellInfo) { - TC_LOG_ERROR("network", "WorldSession::HandleCastSpellOpcode: attempted to cast a non-existing spell (Id: {})", cast.Cast.SpellID); + TC_LOG_ERROR("network", "WorldSession::HandleCastSpellOpcode: attempted to cast a non-existing spell (Id: {})", castRequest.Cast.SpellID); return; } @@ -254,13 +254,13 @@ void WorldSession::HandleCastSpellOpcode(WorldPackets::Spells::CastSpell& cast) castingUnit = _player; } - if (cast.Cast.MoveUpdate.has_value()) - HandleMovementOpcode(CMSG_MOVE_STOP, *cast.Cast.MoveUpdate); + if (castRequest.Cast.MoveUpdate.has_value()) + HandleMovementOpcode(CMSG_MOVE_STOP, *castRequest.Cast.MoveUpdate); if (_player->CanRequestSpellCast(spellInfo, castingUnit)) - _player->RequestSpellCast(std::make_unique(std::move(cast.Cast), castingUnit->GetGUID())); + _player->RequestSpellCast(std::make_unique(std::move(castRequest.Cast), castingUnit->GetGUID())); else - Spell::SendCastResult(_player, spellInfo, {}, cast.Cast.CastID, SPELL_FAILED_SPELL_IN_PROGRESS); + Spell::SendCastResult(_player, spellInfo, {}, castRequest.Cast.CastID, SPELL_FAILED_SPELL_IN_PROGRESS); } void WorldSession::HandleCancelCastOpcode(WorldPackets::Spells::CancelCast& packet) diff --git a/src/server/game/Server/Packets/ChannelPackets.cpp b/src/server/game/Server/Packets/ChannelPackets.cpp index dc7fef49dbdee..ae9fed1f27460 100644 --- a/src/server/game/Server/Packets/ChannelPackets.cpp +++ b/src/server/game/Server/Packets/ChannelPackets.cpp @@ -24,13 +24,13 @@ namespace WorldPackets::Channel { WorldPacket const* ChannelListResponse::Write() { - _worldPacket << Bits<1>(_Display); + _worldPacket << Bits<1>(Display); _worldPacket << SizedString::BitsSize<7>(_Channel); _worldPacket << uint32(_ChannelFlags); - _worldPacket << Size(_Members); + _worldPacket << Size(Members); _worldPacket << SizedString::Data(_Channel); - for (ChannelPlayer const& player : _Members) + for (ChannelPlayer const& player : Members) { _worldPacket << player.Guid; _worldPacket << uint32(player.VirtualRealmAddress); diff --git a/src/server/game/Server/Packets/ChannelPackets.h b/src/server/game/Server/Packets/ChannelPackets.h index db4b51ddd200b..a14e16d3a10b7 100644 --- a/src/server/game/Server/Packets/ChannelPackets.h +++ b/src/server/game/Server/Packets/ChannelPackets.h @@ -42,10 +42,10 @@ namespace WorldPackets WorldPacket const* Write() override; - std::vector _Members; + std::vector Members; std::string _Channel; ///< Channel Name uint32 _ChannelFlags = 0; ///< @see enum ChannelFlags - bool _Display = false; + bool Display = false; }; class TC_GAME_API ChannelNotify final : public ServerPacket diff --git a/src/server/game/Server/Packets/MovementPackets.h b/src/server/game/Server/Packets/MovementPackets.h index acdc5a10fa5b0..9ed604c561115 100644 --- a/src/server/game/Server/Packets/MovementPackets.h +++ b/src/server/game/Server/Packets/MovementPackets.h @@ -246,7 +246,7 @@ namespace WorldPackets class MoveSplineSetFlag final : public ServerPacket { public: - explicit MoveSplineSetFlag(OpcodeServer opcode) : ServerPacket(opcode, 8) { } + explicit MoveSplineSetFlag(OpcodeServer opcode) : ServerPacket(opcode, 18) { } WorldPacket const* Write() override; @@ -256,7 +256,7 @@ namespace WorldPackets class MoveSetFlag final : public ServerPacket { public: - explicit MoveSetFlag(OpcodeServer opcode) : ServerPacket(opcode, 12) { } + explicit MoveSetFlag(OpcodeServer opcode) : ServerPacket(opcode, 18 + 4) { } WorldPacket const* Write() override; diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h index 17c5134fba31f..e0c97857f1148 100644 --- a/src/server/game/Server/Packets/SpellPackets.h +++ b/src/server/game/Server/Packets/SpellPackets.h @@ -139,7 +139,7 @@ namespace WorldPackets class SetActionButton final : public ClientPacket { public: - explicit SetActionButton(WorldPacket&& packet) : ClientPacket(CMSG_SET_ACTION_BUTTON, std::move(packet)) {} + explicit SetActionButton(WorldPacket&& packet) : ClientPacket(CMSG_SET_ACTION_BUTTON, std::move(packet)) { } void Read() override; diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index 1e4e0e862686c..cfd3b4719d872 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -24,7 +24,7 @@ enum AURA_FLAGS { AFLAG_NONE = 0x0000, - AFLAG_NOCASTER = 0x0001, + AFLAG_SELF_CAST = 0x0001, AFLAG_POSITIVE = 0x0002, AFLAG_DURATION = 0x0004, AFLAG_SCALABLE = 0x0008, diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index a85a8263622de..0802ca2587a25 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -113,7 +113,7 @@ void AuraApplication::_Remove() void AuraApplication::_InitFlags(Unit* caster, uint32 effMask) { // mark as selfcast if needed - _flags |= (GetBase()->GetCasterGUID() == GetTarget()->GetGUID()) ? AFLAG_NOCASTER : AFLAG_NONE; + _flags |= (GetBase()->GetCasterGUID() == GetTarget()->GetGUID()) ? AFLAG_SELF_CAST : AFLAG_NONE; // aura is cast by self or an enemy // one negative effect and we know aura is negative @@ -261,7 +261,7 @@ void AuraApplication::BuildUpdatePacket(WorldPackets::Spells::AuraInfo& auraInfo auraData.Applications = aura->IsUsingStacks() ? aura->GetStackAmount() : aura->GetCharges(); if (!aura->GetCasterGUID().IsUnit()) auraData.CastUnit = ObjectGuid::Empty; // optional data is filled in, but cast unit contains empty guid in packet - else if (!(auraData.Flags & AFLAG_NOCASTER)) + else if (!(auraData.Flags & AFLAG_SELF_CAST)) auraData.CastUnit = aura->GetCasterGUID(); if (!aura->GetCastItemGUID().IsEmpty()) @@ -304,10 +304,7 @@ void AuraApplication::ClientUpdate(bool remove) WorldPackets::Spells::AuraUpdate update; update.UpdateAll = false; update.UnitGUID = GetTarget()->GetGUID(); - - WorldPackets::Spells::AuraInfo auraInfo; - BuildUpdatePacket(auraInfo, remove); - update.Auras.push_back(auraInfo); + BuildUpdatePacket(update.Auras.emplace_back(), remove); _target->SendMessageToSet(update.Write(), true); } diff --git a/src/server/game/Spells/Auras/SpellAuras.h b/src/server/game/Spells/Auras/SpellAuras.h index 84765df970ccd..da50245076d3e 100644 --- a/src/server/game/Spells/Auras/SpellAuras.h +++ b/src/server/game/Spells/Auras/SpellAuras.h @@ -86,7 +86,7 @@ class TC_GAME_API AuraApplication uint32 GetEffectMask() const { return _effectMask; } bool HasEffect(uint8 effect) const { ASSERT(effect < MAX_SPELL_EFFECTS); return (_effectMask & (1 << effect)) != 0; } bool IsPositive() const { return (_flags & AFLAG_POSITIVE) != 0; } - bool IsSelfcast() const { return (_flags & AFLAG_NOCASTER) != 0; } + bool IsSelfcast() const { return (_flags & AFLAG_SELF_CAST) != 0; } uint32 GetEffectsToApply() const { return _effectsToApply; } void UpdateApplyEffectMask(uint32 newEffMask, bool canHandleNewEffects); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 4a335aec998f6..fd241174fcc97 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4441,7 +4441,7 @@ void Spell::finish(SpellCastResult result) } template -inline void FillSpellCastFailedArgs(T& packet, ObjectGuid castId, SpellInfo const* spellInfo, SpellCastResult result, SpellCustomErrors customError, int32* param1 /*= nullptr*/, int32* param2 /*= nullptr*/, Player* caster) +inline void FillSpellCastFailedArgs(T& packet, ObjectGuid castId, SpellInfo const* spellInfo, SpellCastResult result, SpellCustomErrors customError, int32* param1, int32* param2) { packet.CastID = castId; packet.SpellID = spellInfo->Id; @@ -4490,30 +4490,26 @@ inline void FillSpellCastFailedArgs(T& packet, ObjectGuid castId, SpellInfo cons if (param1) { packet.FailedArg1 = *param1; - if (param2) - packet.FailedArg2 = *param2; } else { if (spellInfo->Totem[0]) packet.FailedArg1 = spellInfo->Totem[0]; - if (spellInfo->Totem[1]) - packet.FailedArg2 = spellInfo->Totem[1]; + else if (spellInfo->Totem[1]) + packet.FailedArg1 = spellInfo->Totem[1]; } break; case SPELL_FAILED_TOTEM_CATEGORY: if (param1) { packet.FailedArg1 = *param1; - if (param2) - packet.FailedArg2 = *param2; } else { if (spellInfo->TotemCategory[0]) packet.FailedArg1 = spellInfo->TotemCategory[0]; - if (spellInfo->TotemCategory[1]) - packet.FailedArg2 = spellInfo->TotemCategory[1]; + else if (spellInfo->TotemCategory[1]) + packet.FailedArg1 = spellInfo->TotemCategory[1]; } break; case SPELL_FAILED_EQUIPPED_ITEM_CLASS: @@ -4531,68 +4527,34 @@ inline void FillSpellCastFailedArgs(T& packet, ObjectGuid castId, SpellInfo cons } break; case SPELL_FAILED_TOO_MANY_OF_ITEM: - { if (param1) - packet.FailedArg1 = *param1; - else - { - uint32 item = 0; - for (SpellEffectInfo const& spellEffectInfo : spellInfo->GetEffects()) - { - if (uint32 itemType = spellEffectInfo.ItemType) - { - item = itemType; - break; - } - } - - ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item); - if (proto && proto->GetItemLimitCategory()) - packet.FailedArg1 = proto->GetItemLimitCategory(); - } + packet.FailedArg1 = *param1; // ItemLimitCategory id break; - } case SPELL_FAILED_PREVENTED_BY_MECHANIC: if (param1) packet.FailedArg1 = *param1; - else - packet.FailedArg1 = spellInfo->GetAllEffectsMechanicMask(); // SpellMechanic.dbc id break; case SPELL_FAILED_NEED_EXOTIC_AMMO: if (param1) - packet.FailedArg1 = *param1; - else - packet.FailedArg1 = spellInfo->EquippedItemSubClassMask; // seems correct... + packet.FailedArg1 = *param1; // weapon subclass id break; case SPELL_FAILED_NEED_MORE_ITEMS: if (param1 && param2) { - packet.FailedArg1 = *param1; - packet.FailedArg2 = *param2; - } - else - { - packet.FailedArg1 = 0; // Item id - packet.FailedArg2 = 0; // Item count? + packet.FailedArg1 = *param1; // Item id + packet.FailedArg2 = *param2; // Item count } break; case SPELL_FAILED_MIN_SKILL: if (param1 && param2) { - packet.FailedArg1 = *param1; - packet.FailedArg2 = *param2; - } - else - { - packet.FailedArg1 = 0; // SkillLine.dbc id - packet.FailedArg2 = 0; // required skill value + packet.FailedArg1 = *param1; // SkillLine.dbc id + packet.FailedArg2 = *param2; // required skill value } break; case SPELL_FAILED_FISHING_TOO_LOW: if (param1) - packet.FailedArg1 = *param1; - else - packet.FailedArg1 = 0; // required fishing skill + packet.FailedArg1 = *param1; // required fishing skill break; case SPELL_FAILED_CUSTOM_ERROR: packet.FailedArg1 = customError; @@ -4604,44 +4566,9 @@ inline void FillSpellCastFailedArgs(T& packet, ObjectGuid castId, SpellInfo cons packet.FailedArg1 = 0; // Unknown break; case SPELL_FAILED_REAGENTS: - { if (param1) packet.FailedArg1 = *param1; - else - { - for (uint32 i = 0; i < MAX_SPELL_REAGENTS; i++) - { - if (spellInfo->Reagent[i] <= 0) - continue; - - uint32 itemid = spellInfo->Reagent[i]; - uint32 itemcount = spellInfo->ReagentCount[i]; - - if (caster && !caster->HasItemCount(itemid, itemcount)) - { - packet.FailedArg1 = itemid; // first missing item - break; - } - } - } - - if (param2) - packet.FailedArg2 = *param2; - else if (!param1) - { - for (SpellReagentsCurrencyEntry const* reagentsCurrency : spellInfo->ReagentsCurrency) - { - if (caster && !caster->HasCurrency(reagentsCurrency->CurrencyTypesID, reagentsCurrency->CurrencyCount)) - { - packet.FailedArg1 = -1; - packet.FailedArg2 = reagentsCurrency->CurrencyTypesID; - break; - } - } - } - break; - } case SPELL_FAILED_CANT_UNTALENT: { ASSERT(param1); @@ -4675,7 +4602,7 @@ void Spell::SendCastResult(SpellCastResult result, int32* param1 /*= nullptr*/, WorldPackets::Spells::CastFailed castFailed; castFailed.Visual = m_SpellVisual; - FillSpellCastFailedArgs(castFailed, m_castId, m_spellInfo, result, m_customError, param1, param2, m_caster->ToPlayer()); + FillSpellCastFailedArgs(castFailed, m_castId, m_spellInfo, result, m_customError, param1, param2); receiver->SendDirectMessage(castFailed.Write()); } @@ -4692,18 +4619,18 @@ void Spell::SendPetCastResult(SpellCastResult result, int32* param1 /*= nullptr* result = SPELL_FAILED_DONT_REPORT; WorldPackets::Spells::PetCastFailed petCastFailed; - FillSpellCastFailedArgs(petCastFailed, m_castId, m_spellInfo, result, SPELL_CUSTOM_ERROR_NONE, param1, param2, owner->ToPlayer()); + FillSpellCastFailedArgs(petCastFailed, m_castId, m_spellInfo, result, SPELL_CUSTOM_ERROR_NONE, param1, param2); owner->ToPlayer()->SendDirectMessage(petCastFailed.Write()); } -void Spell::SendCastResult(Player* caster, SpellInfo const* spellInfo, SpellCastVisual spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError /*= SPELL_CUSTOM_ERROR_NONE*/, int32* param1 /*= nullptr*/, int32* param2 /*= nullptr*/) +void Spell::SendCastResult(Player const* caster, SpellInfo const* spellInfo, SpellCastVisual spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError /*= SPELL_CUSTOM_ERROR_NONE*/, int32* param1 /*= nullptr*/, int32* param2 /*= nullptr*/) { if (result == SPELL_CAST_OK) return; WorldPackets::Spells::CastFailed packet; packet.Visual = spellVisual; - FillSpellCastFailedArgs(packet, cast_count, spellInfo, result, customError, param1, param2, caster); + FillSpellCastFailedArgs(packet, cast_count, spellInfo, result, customError, param1, param2); caster->SendDirectMessage(packet.Write()); } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 5f57e9b304bef..3ca32b0de1590 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -559,7 +559,7 @@ class TC_GAME_API Spell void CheckSrc(); void CheckDst(); - static void SendCastResult(Player* caster, SpellInfo const* spellInfo, SpellCastVisual spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError = SPELL_CUSTOM_ERROR_NONE, int32* param1 = nullptr, int32* param2 = nullptr); + static void SendCastResult(Player const* caster, SpellInfo const* spellInfo, SpellCastVisual spellVisual, ObjectGuid cast_count, SpellCastResult result, SpellCustomErrors customError = SPELL_CUSTOM_ERROR_NONE, int32* param1 = nullptr, int32* param2 = nullptr); void SendCastResult(SpellCastResult result, int32* param1 = nullptr, int32* param2 = nullptr) const; void SendPetCastResult(SpellCastResult result, int32* param1 = nullptr, int32* param2 = nullptr) const; void SendMountResult(MountResult result); diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 259e39868a3aa..e85cd9e8182de 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -437,7 +437,7 @@ class TC_GAME_API SpellCastTargets float GetSpeedZ() const { return m_speed * std::sin(m_pitch); } void Update(WorldObject* caster); - std::string GetTargetString() const { return m_strTarget; } + std::string const& GetTargetString() const { return m_strTarget; } private: uint32 m_targetMask; diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 46e8a7ad18675..757491784c1b0 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -301,7 +301,6 @@ class debug_commandscript : public CommandScript castFailed.FailedArg1 = failArg1.value_or(-1); castFailed.FailedArg2 = failArg2.value_or(-1); handler->GetSession()->SendPacket(castFailed.Write()); - return true; } From ec4246555d5a6e6fa8bf1c206d6608a2760ffedd Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 18 May 2026 10:56:16 +0200 Subject: [PATCH 159/175] SQL: Move update file to correct directory --- sql/updates/world/{ => master}/2026_05_08_00_world.sql | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename sql/updates/world/{ => master}/2026_05_08_00_world.sql (100%) diff --git a/sql/updates/world/2026_05_08_00_world.sql b/sql/updates/world/master/2026_05_08_00_world.sql similarity index 100% rename from sql/updates/world/2026_05_08_00_world.sql rename to sql/updates/world/master/2026_05_08_00_world.sql From b2d6776dcec95ab8053cae352b3e487d524b11b4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 18 May 2026 12:38:45 +0200 Subject: [PATCH 160/175] Core/Battlegrounds: Fixed "not enough players" message being incorrectly always printed before battleground starts and replaced its trinity_string entry with proper battleground status packet --- .../world/master/2026_05_18_00_world.sql | 1 + .../game/Battlegrounds/Battleground.cpp | 85 +++++++------------ src/server/game/Battlegrounds/Battleground.h | 2 - src/server/game/Miscellaneous/Language.h | 8 +- 4 files changed, 37 insertions(+), 59 deletions(-) create mode 100644 sql/updates/world/master/2026_05_18_00_world.sql diff --git a/sql/updates/world/master/2026_05_18_00_world.sql b/sql/updates/world/master/2026_05_18_00_world.sql new file mode 100644 index 0000000000000..dc440ce9d449a --- /dev/null +++ b/sql/updates/world/master/2026_05_18_00_world.sql @@ -0,0 +1 @@ +DELETE FROM `trinity_string` WHERE `entry` IN (750,751); diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 85240dd1f3f2e..cabf2177b3a64 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -93,7 +93,6 @@ Battleground::Battleground(BattlegroundTemplate const* battlegroundTemplate) : _ m_TeamScores[TEAM_HORDE] = 0; m_PrematureCountDown = false; - m_PrematureCountDownTimer = 0; m_LastPlayerPositionBroadcast = 0; @@ -176,10 +175,7 @@ void Battleground::Update(uint32 diff) } else { - if (sBattlegroundMgr->GetPrematureFinishTime() && (GetPlayersCountByTeam(ALLIANCE) < GetMinPlayersPerTeam() || GetPlayersCountByTeam(HORDE) < GetMinPlayersPerTeam())) - _ProcessProgress(diff); - else if (m_PrematureCountDown) - m_PrematureCountDown = false; + _ProcessProgress(diff); } break; case STATUS_WAIT_LEAVE: @@ -284,33 +280,42 @@ inline void Battleground::_ProcessProgress(uint32 diff) // *** BATTLEGROUND BALLANCE SYSTEM *** // ********************************************************* // if less then minimum players are in on one side, then start premature finish timer - if (!m_PrematureCountDown) + bool broadcastStatusUpdate = false; + if (!sBattlegroundMgr->isTesting() && sBattlegroundMgr->GetPrematureFinishTime() && (GetPlayersCountByTeam(ALLIANCE) < GetMinPlayersPerTeam() || GetPlayersCountByTeam(HORDE) < GetMinPlayersPerTeam())) { - m_PrematureCountDown = true; - m_PrematureCountDownTimer = sBattlegroundMgr->GetPrematureFinishTime(); + if (!m_PrematureCountDown) + { + m_PrematureCountDown = true; + SetRemainingTime(sBattlegroundMgr->GetPrematureFinishTime()); + broadcastStatusUpdate = true; + } + else if ((m_EndTime -= int32(diff)) < 0) + { + // time's up! + EndBattleground(GetPrematureWinner()); + m_PrematureCountDown = false; + } } - else if (m_PrematureCountDownTimer < diff) + else if (m_PrematureCountDown) { - // time's up! - EndBattleground(GetPrematureWinner()); m_PrematureCountDown = false; + SetRemainingTime(0); + broadcastStatusUpdate = true; } - else if (!sBattlegroundMgr->isTesting()) + + if (broadcastStatusUpdate) { - uint32 newtime = m_PrematureCountDownTimer - diff; - // announce every minute - if (newtime > (MINUTE * IN_MILLISECONDS)) - { - if (newtime / (MINUTE * IN_MILLISECONDS) != m_PrematureCountDownTimer / (MINUTE * IN_MILLISECONDS)) - PSendMessageToAll(LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING, CHAT_MSG_SYSTEM, nullptr, (uint32)(m_PrematureCountDownTimer / (MINUTE * IN_MILLISECONDS))); - } - else + for (auto const& [guid, playerData] : m_Players) { - //announce every 15 seconds - if (newtime / (15 * IN_MILLISECONDS) != m_PrematureCountDownTimer / (15 * IN_MILLISECONDS)) - PSendMessageToAll(LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING_SECS, CHAT_MSG_SYSTEM, nullptr, (uint32)(m_PrematureCountDownTimer / IN_MILLISECONDS)); + if (Player* player = _GetPlayer(guid, false, "_ProcessProgress")) + { + WorldPackets::Battleground::BattlefieldStatusActive battlefieldStatus; + BattlegroundMgr::BuildBattlegroundStatusActive(&battlefieldStatus, this, player, + player->GetBattlegroundQueueIndex(playerData.queueTypeId), + player->GetBattlegroundQueueJoinTime(playerData.queueTypeId), playerData.queueTypeId); + player->SendDirectMessage(battlefieldStatus.Write()); + } } - m_PrematureCountDownTimer = newtime; } } @@ -321,9 +326,6 @@ inline void Battleground::_ProcessJoin(uint32 diff) // ********************************************************* ModifyStartDelayTime(diff); - if (!isArena()) - SetRemainingTime(300000); - if (m_ResetStatTimer > 5000) { m_ResetStatTimer = 0; @@ -441,9 +443,6 @@ inline void Battleground::_ProcessJoin(uint32 diff) sWorld->SendWorldText(LANG_BG_STARTED_ANNOUNCE_WORLD, GetName(), GetMinLevel(), GetMaxLevel()); } } - - if (GetRemainingTime() > 0 && (m_EndTime -= diff) > 0) - SetRemainingTime(GetRemainingTime() - diff); } inline void Battleground::_ProcessLeave(uint32 diff) @@ -663,8 +662,7 @@ void Battleground::EndBattleground(Team winner) WorldPackets::Battleground::PVPMatchComplete pvpMatchComplete; pvpMatchComplete.Winner = GetWinner(); pvpMatchComplete.Duration = std::chrono::duration_cast(Milliseconds(std::max(0, (GetElapsedTime() - BG_START_DELAY_2M)))); - pvpMatchComplete.LogData.emplace(); - BuildPvPLogDataPacket(*pvpMatchComplete.LogData); + BuildPvPLogDataPacket(pvpMatchComplete.LogData.emplace()); pvpMatchComplete.Write(); for (BattlegroundPlayerMap::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr) @@ -1327,21 +1325,6 @@ void Battleground::SendMessageToAll(uint32 entry, ChatMsg msgType, Player const* BroadcastWorker(localizer); } -void Battleground::PSendMessageToAll(uint32 entry, ChatMsg msgType, Player const* source, ...) -{ - if (!entry) - return; - - va_list ap; - va_start(ap, source); - - Trinity::TrinityStringChatBuilder builder(nullptr, msgType, entry, source, &ap); - Trinity::LocalizedDo localizer(builder); - BroadcastWorker(localizer); - - va_end(ap); -} - void Battleground::AddPlayerPosition(WorldPackets::Battleground::BattlegroundPlayerPosition const& position) { _playerPositions.push_back(position); @@ -1349,12 +1332,8 @@ void Battleground::AddPlayerPosition(WorldPackets::Battleground::BattlegroundPla void Battleground::RemovePlayerPosition(ObjectGuid guid) { - auto itr = std::remove_if(_playerPositions.begin(), _playerPositions.end(), [guid](WorldPackets::Battleground::BattlegroundPlayerPosition const& playerPosition) - { - return playerPosition.Guid == guid; - }); - - _playerPositions.erase(itr, _playerPositions.end()); + auto itr = std::ranges::remove(_playerPositions, guid, &WorldPackets::Battleground::BattlegroundPlayerPosition::Guid); + _playerPositions.erase(itr.begin(), itr.end()); } void Battleground::EndNow() diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 32b6075e94abe..db6b72cb6affd 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -370,7 +370,6 @@ class TC_GAME_API Battleground void BlockMovement(Player* player); void SendMessageToAll(uint32 entry, ChatMsg type, Player const* source = nullptr); - void PSendMessageToAll(uint32 entry, ChatMsg type, Player const* source, ...); // Raid Group Group* GetBgRaid(Team team) const { return team == ALLIANCE ? m_BgRaids[TEAM_ALLIANCE] : m_BgRaids[TEAM_HORDE]; } @@ -537,7 +536,6 @@ class TC_GAME_API Battleground int32 m_StartDelayTime; bool m_IsRated; // is this battle rated? bool m_PrematureCountDown; - uint32 m_PrematureCountDownTimer; uint32 m_LastPlayerPositionBroadcast; // Player lists diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index cb9e33f304c92..280a945bd60b4 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -739,10 +739,10 @@ enum TrinityStrings LANG_DIST_ARENA_POINTS_END = 746, // 3.3.5 RESERVED LANG_BG_DISABLED = 747, LANG_ARENA_DISABLED = 748, -// = 749, see LANG_PINFO_ACC_OS - LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING = 750, // "Not enough players. This game will close in %u mins." - LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING_SECS = 751, // "Not enough players. This game will close in %u seconds." -// = 752, see LANG_PINFO_ACC_IP + // = 749, see LANG_PINFO_ACC_OS + // = 750, + // = 751, + // = 752, see LANG_PINFO_ACC_IP // 753-755 - free // Room for BG/ARENA = 773-784 From bfee0955b8f237a646d1a53012dad36d937ae7dd Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 19 May 2026 00:12:24 +0200 Subject: [PATCH 161/175] Core/Achievements: Suppress achievement earned messages and visuals on first login --- src/server/game/Achievements/AchievementMgr.cpp | 1 + src/server/game/Server/Packets/AchievementPackets.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index b7adb40dddefe..9e4515f67590f 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -664,6 +664,7 @@ void PlayerAchievementMgr::SendAchievementEarned(AchievementEntry const* achieve achievementEarned.AchievementID = achievement->ID; achievementEarned.Time = *GameTime::GetUtcWowTime(); achievementEarned.Time += receiver->GetSession()->GetTimezoneOffset(); + achievementEarned.Initial = receiver->HasAtLoginFlag(AT_LOGIN_FIRST); receiver->SendDirectMessage(achievementEarned.Write()); }; diff --git a/src/server/game/Server/Packets/AchievementPackets.cpp b/src/server/game/Server/Packets/AchievementPackets.cpp index 418e44a8f321a..148fd58ba6058 100644 --- a/src/server/game/Server/Packets/AchievementPackets.cpp +++ b/src/server/game/Server/Packets/AchievementPackets.cpp @@ -27,6 +27,7 @@ ByteBuffer& operator<<(ByteBuffer& data, EarnedAchievement const& earned) data << earned.Owner; data << uint32(earned.VirtualRealmAddress); data << uint32(earned.NativeRealmAddress); + return data; } From 96c7cd3ffad4173f0f1aa8779dab1a8638c01337 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 19 May 2026 14:15:58 +0200 Subject: [PATCH 162/175] Core/Loot: Add new function argument to AutoStoreLoot that changes message printed to chat --- src/server/game/Entities/Player/Player.cpp | 4 ++-- src/server/game/Entities/Player/Player.h | 6 +++--- src/server/game/Loot/Loot.cpp | 4 ++-- src/server/game/Loot/Loot.h | 2 +- src/server/game/Loot/LootMgr.cpp | 5 ++--- src/server/game/Spells/SpellEffects.cpp | 2 +- 6 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8a15f548c9323..84d1d52264801 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -27171,11 +27171,11 @@ void Player::InitRunes() SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::PowerRegenInterruptedFlatModifier, runeIndex), 0.0f); } -void Player::AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const& store, ItemContext context, bool broadcast, bool createdByPlayer) +void Player::AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const& store, ItemContext context, bool broadcast, bool pushed, bool createdByPlayer) { Loot loot(nullptr, ObjectGuid::Empty, LOOT_NONE, nullptr); loot.FillLoot(loot_id, store, this, true, false, LOOT_MODE_DEFAULT, context); - loot.AutoStore(this, bag, slot, broadcast, createdByPlayer); + loot.AutoStore(this, bag, slot, broadcast, pushed, createdByPlayer); Unit::ProcSkillsAndAuras(this, nullptr, PROC_FLAG_LOOTED, PROC_FLAG_NONE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_PHASE_NONE, PROC_HIT_NONE, nullptr, nullptr, nullptr); } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 82fde95e35750..a8797fe521523 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1571,8 +1571,8 @@ class TC_GAME_API Player final : public Unit, public GridObject void EquipChildItem(uint8 parentBag, uint8 parentSlot, Item* parentItem); void AutoUnequipChildItem(Item* parentItem); bool StoreNewItemInBestSlots(uint32 itemId, uint32 amount, ItemContext context); - void AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const& store, ItemContext context = ItemContext::NONE, bool broadcast = false, bool createdByPlayer = false); - void AutoStoreLoot(uint32 loot_id, LootStore const& store, ItemContext context = ItemContext::NONE, bool broadcast = false, bool createdByPlayer = false) { AutoStoreLoot(NULL_BAG, NULL_SLOT, loot_id, store, context, broadcast, createdByPlayer); } + void AutoStoreLoot(uint8 bag, uint8 slot, uint32 loot_id, LootStore const& store, ItemContext context = ItemContext::NONE, bool broadcast = false, bool pushed = false, bool createdByPlayer = false); + void AutoStoreLoot(uint32 loot_id, LootStore const& store, ItemContext context = ItemContext::NONE, bool broadcast = false, bool pushed = false, bool createdByPlayer = false) { AutoStoreLoot(NULL_BAG, NULL_SLOT, loot_id, store, context, broadcast, pushed, createdByPlayer); } void StoreLootItem(ObjectGuid lootWorldObjectGuid, uint8 lootSlot, Loot* loot, AELootResult* aeResult = nullptr); InventoryResult CanTakeMoreSimilarItems(uint32 entry, uint32 count, Item* pItem, uint32* no_space_count = nullptr, uint32* offendingItemId = nullptr) const; @@ -1641,7 +1641,7 @@ class TC_GAME_API Player final : public Unit, public GridObject bool IsUseEquipedWeapon(bool mainhand) const; bool IsTwoHandUsed() const; bool IsUsingTwoHandedWeaponInOneHand() const; - void SendNewItem(Item* item, uint32 quantity, bool received, bool created, bool broadcast = false, uint32 dungeonEncounterId = 0); + void SendNewItem(Item* item, uint32 quantity, bool pushed, bool created, bool broadcast = false, uint32 dungeonEncounterId = 0); bool BuyItemFromVendorSlot(ObjectGuid vendorguid, uint32 vendorslot, uint32 item, uint32 count, uint8 bag, uint8 slot); Optional CanSellItemToVendor(Item const* item, uint32 amount) const; Optional SellItemToVendor(Item* item, uint32 amount); diff --git a/src/server/game/Loot/Loot.cpp b/src/server/game/Loot/Loot.cpp index d2c22a93373d7..1a4233843a162 100644 --- a/src/server/game/Loot/Loot.cpp +++ b/src/server/game/Loot/Loot.cpp @@ -973,7 +973,7 @@ void Loot::AddItem(LootStoreItem const& item) } } -bool Loot::AutoStore(Player* player, uint8 bag, uint8 slot, bool broadcast, bool createdByPlayer) +bool Loot::AutoStore(Player* player, uint8 bag, uint8 slot, bool broadcast, bool pushed, bool createdByPlayer) { bool allLooted = true; for (uint32 i = 0; i < items.size(); ++i) @@ -1013,7 +1013,7 @@ bool Loot::AutoStore(Player* player, uint8 bag, uint8 slot, bool broadcast, bool if (Item* pItem = player->StoreNewItem(dest, lootItem->itemid, true, lootItem->randomBonusListId, GuidSet(), lootItem->context, &lootItem->BonusListIDs)) { - player->SendNewItem(pItem, lootItem->count, false, createdByPlayer, broadcast, GetDungeonEncounterId()); + player->SendNewItem(pItem, lootItem->count, pushed, createdByPlayer, broadcast, GetDungeonEncounterId()); player->ApplyItemLootedSpell(pItem, true); } else diff --git a/src/server/game/Loot/Loot.h b/src/server/game/Loot/Loot.h index 14b9509a6780b..edf57ad0e2d12 100644 --- a/src/server/game/Loot/Loot.h +++ b/src/server/game/Loot/Loot.h @@ -328,7 +328,7 @@ struct TC_GAME_API Loot // Inserts the item into the loot (called by LootTemplate processors) void AddItem(LootStoreItem const& item); - bool AutoStore(Player* player, uint8 bag, uint8 slot, bool broadcast = false, bool createdByPlayer = false); + bool AutoStore(Player* player, uint8 bag, uint8 slot, bool broadcast = false, bool pushed = false, bool createdByPlayer = false); void AutoStoreTrackingQuests(Player* player, NotNormalLootItemList& ffaItems); void LootMoney(); diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 3039bfa7ec142..b016cc6f6bae6 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -697,14 +697,13 @@ void LootTemplate::Process(Loot& loot, bool rate, uint16 lootMode, uint8 groupId void LootTemplate::ProcessPersonalLoot(std::unordered_map>& personalLoot, bool rate, uint16 lootMode) const { - auto getLootersForItem = [&personalLoot](auto&& predicate) + auto getLootersForItem = [&personalLoot](auto&& predicate) -> std::vector { std::vector lootersForItem; for (auto&& [looter, loot] : personalLoot) - { if (predicate(looter)) lootersForItem.push_back(looter); - } + return lootersForItem; }; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 821fe4d8a2fb3..68a2a76c1f6ee 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1484,7 +1484,7 @@ void Spell::EffectCreateItem2() // Pick a random item from spell_loot_template if (m_spellInfo->IsLootCrafting()) { - player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell, context, false, true); + player->AutoStoreLoot(m_spellInfo->Id, LootTemplates_Spell, context, false, false, true); if (!m_CastItem) player->UpdateCraftSkill(m_spellInfo); } From 9c738b17fff36ba8329b322dd4852c83ba07a6a6 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 21 May 2026 22:55:25 +0200 Subject: [PATCH 163/175] Core/Items: Remove outdated reagent bank check --- src/server/game/Handlers/BankHandler.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/server/game/Handlers/BankHandler.cpp b/src/server/game/Handlers/BankHandler.cpp index 86aeb62e66106..fd1dd954db9e2 100644 --- a/src/server/game/Handlers/BankHandler.cpp +++ b/src/server/game/Handlers/BankHandler.cpp @@ -271,12 +271,6 @@ void WorldSession::HandleAutoDepositCharacterBank(WorldPackets::Bank::AutoDeposi return; } - if (!_player->IsReagentBankUnlocked()) - { - _player->SendEquipError(EQUIP_ERR_REAGENT_BANK_LOCKED); - return; - } - // query all reagents from player's inventory bool anyDeposited = false; for (Item* item : _player->GetCraftingReagentItemsToDeposit()) From 84261ff2861a968d635357366d89801cdc280fbe Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 22 May 2026 01:19:04 +0200 Subject: [PATCH 164/175] Core/Items: Fixed item level and stat calculation --- src/server/game/Entities/Item/Item.cpp | 12 +-- src/server/game/Entities/Player/Player.cpp | 102 ++++++++++++++------- 2 files changed, 74 insertions(+), 40 deletions(-) diff --git a/src/server/game/Entities/Item/Item.cpp b/src/server/game/Entities/Item/Item.cpp index e35a61b7ef577..51606786bd9c7 100644 --- a/src/server/game/Entities/Item/Item.cpp +++ b/src/server/game/Entities/Item/Item.cpp @@ -2295,13 +2295,13 @@ uint32 Item::GetItemLevel(ItemTemplate const* itemTemplate, BonusData const& bon else if (Optional levels = sDB2Manager.GetContentTuningData(bonusData.ContentTuningId, {}, true)) level = std::min(std::max(int16(level), levels->MinLevel), levels->MaxLevel); - itemLevel = uint32(sDB2Manager.GetCurveValueAt(bonusData.PlayerLevelToItemLevelCurveId, level)); + itemLevel = uint32(std::round(sDB2Manager.GetCurveValueAt(bonusData.PlayerLevelToItemLevelCurveId, level))); } itemLevel += bonusData.ItemLevelBonus; } else - itemLevel = bonusData.ItemLevelOffset + uint32(sDB2Manager.GetCurveValueAt(bonusData.ItemLevelOffsetCurveId, bonusData.ItemLevelOffsetItemLevel)); + itemLevel = bonusData.ItemLevelOffset + uint32(std::round(sDB2Manager.GetCurveValueAt(bonusData.ItemLevelOffsetCurveId, bonusData.ItemLevelOffsetItemLevel))); for (uint32 i = 0; i < MAX_ITEM_PROTO_SOCKETS; ++i) itemLevel += bonusData.GemItemLevelBonus[i]; @@ -2323,17 +2323,17 @@ uint32 Item::GetItemLevel(ItemTemplate const* itemTemplate, BonusData const& bon int32 currentBuild = ClientBuild::GetMinorMajorBugfixVersionForBuild(currentRealm->Build); // apply all squishes between items_squish and server_squish - for (uint32 squishId = bonusData.ItemSquishEraID; squishId < sItemSquishEraStore.GetNumRows(); ++squishId) + for (uint32 squishId = bonusData.ItemSquishEraID + 1; squishId < sItemSquishEraStore.GetNumRows(); ++squishId) { ItemSquishEraEntry const* squish = sItemSquishEraStore.LookupEntry(squishId); - if (!squish) + if (!squish || squish->Flags & 0x1) continue; if (squish->Patch > currentBuild) break; if (squish->CurveID) - itemLevel = uint32(sDB2Manager.GetCurveValueAt(squish->CurveID, itemLevel)); + itemLevel = uint32(std::round(sDB2Manager.GetCurveValueAt(squish->CurveID, itemLevel))); } } } @@ -2367,7 +2367,7 @@ float Item::GetItemStatValue(uint32 index, Player const* owner) const { float statValue = float(_bonusData.StatPercentEditor[index] * randomPropPoints) * 0.0001f; if (GtItemSocketCostPerLevelEntry const* gtCost = sItemSocketCostPerLevelGameTable.GetRow(itemLevel)) - statValue -= float(int32(_bonusData.ItemStatSocketCostMultiplier[index] * gtCost->SocketCost)); + statValue -= float(_bonusData.ItemStatSocketCostMultiplier[index] * gtCost->SocketCost); return statValue; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 84d1d52264801..d71c6d642f59d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7970,6 +7970,44 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) if (val == 0) continue; + // apply stat multiplier + switch (statType) + { + case ITEM_MOD_STAMINA: + if (GtStaminaMultByILvl const* staminaMult = sStaminaMultByILvlGameTable.GetRow(itemLevel)) + val *= GetIlvlStatMultiplier(staminaMult, proto->GetInventoryType()); + break; + case ITEM_MOD_DEFENSE_SKILL_RATING: + case ITEM_MOD_DODGE_RATING: + case ITEM_MOD_PARRY_RATING: + case ITEM_MOD_BLOCK_RATING: + case ITEM_MOD_HIT_MELEE_RATING: + case ITEM_MOD_HIT_RANGED_RATING: + case ITEM_MOD_HIT_SPELL_RATING: + case ITEM_MOD_CRIT_MELEE_RATING: + case ITEM_MOD_CRIT_RANGED_RATING: + case ITEM_MOD_CRIT_SPELL_RATING: + case ITEM_MOD_HIT_RATING: + case ITEM_MOD_CRIT_RATING: + case ITEM_MOD_HIT_TAKEN_RATING: + case ITEM_MOD_CRIT_TAKEN_RATING: + case ITEM_MOD_RESILIENCE_RATING: + case ITEM_MOD_HASTE_RATING: + case ITEM_MOD_EXPERTISE_RATING: + case ITEM_MOD_VERSATILITY: + case ITEM_MOD_MASTERY_RATING: + case ITEM_MOD_CR_SPEED: + case ITEM_MOD_CR_LIFESTEAL: + case ITEM_MOD_CR_AVOIDANCE: + case ITEM_MOD_CR_STURDINESS: + val *= combatRatingMultiplier; + break; + default: + break; + } + + val = std::round(val); + switch (statType) { case ITEM_MOD_MANA: @@ -7995,42 +8033,38 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) UpdateStatBuffMod(STAT_SPIRIT); break; case ITEM_MOD_STAMINA: //modify stamina - { - if (GtStaminaMultByILvl const* staminaMult = sStaminaMultByILvlGameTable.GetRow(itemLevel)) - val = int32(val * GetIlvlStatMultiplier(staminaMult, proto->GetInventoryType())); HandleStatFlatModifier(UNIT_MOD_STAT_STAMINA, BASE_VALUE, float(val), apply); UpdateStatBuffMod(STAT_STAMINA); break; - } case ITEM_MOD_DEFENSE_SKILL_RATING: - ApplyRatingMod(CR_DEFENSE_SKILL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_DEFENSE_SKILL, int32(val), apply); break; case ITEM_MOD_DODGE_RATING: - ApplyRatingMod(CR_DODGE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_DODGE, int32(val), apply); break; case ITEM_MOD_PARRY_RATING: - ApplyRatingMod(CR_PARRY, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_PARRY, int32(val), apply); break; case ITEM_MOD_BLOCK_RATING: - ApplyRatingMod(CR_BLOCK, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_BLOCK, int32(val), apply); break; case ITEM_MOD_HIT_MELEE_RATING: - ApplyRatingMod(CR_HIT_MELEE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_HIT_MELEE, int32(val), apply); break; case ITEM_MOD_HIT_RANGED_RATING: - ApplyRatingMod(CR_HIT_RANGED, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_HIT_RANGED, int32(val), apply); break; case ITEM_MOD_HIT_SPELL_RATING: - ApplyRatingMod(CR_HIT_SPELL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_HIT_SPELL, int32(val), apply); break; case ITEM_MOD_CRIT_MELEE_RATING: - ApplyRatingMod(CR_CRIT_MELEE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_CRIT_MELEE, int32(val), apply); break; case ITEM_MOD_CRIT_RANGED_RATING: - ApplyRatingMod(CR_CRIT_RANGED, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_CRIT_RANGED, int32(val), apply); break; case ITEM_MOD_CRIT_SPELL_RATING: - ApplyRatingMod(CR_CRIT_SPELL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_CRIT_SPELL, int32(val), apply); break; // case ITEM_MOD_HIT_TAKEN_MELEE_RATING: // ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val), apply); @@ -8060,14 +8094,14 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) ApplyRatingMod(CR_HASTE_SPELL, int32(val), apply); break; case ITEM_MOD_HIT_RATING: - ApplyRatingMod(CR_HIT_MELEE, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_HIT_RANGED, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_HIT_SPELL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_HIT_MELEE, int32(val), apply); + ApplyRatingMod(CR_HIT_RANGED, int32(val), apply); + ApplyRatingMod(CR_HIT_SPELL, int32(val), apply); break; case ITEM_MOD_CRIT_RATING: - ApplyRatingMod(CR_CRIT_MELEE, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_CRIT_RANGED, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_CRIT_SPELL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_CRIT_MELEE, int32(val), apply); + ApplyRatingMod(CR_CRIT_RANGED, int32(val), apply); + ApplyRatingMod(CR_CRIT_SPELL, int32(val), apply); break; // case ITEM_MOD_HIT_TAKEN_RATING: // Unused since 3.3.5 // ApplyRatingMod(CR_HIT_TAKEN_MELEE, int32(val), apply); @@ -8080,15 +8114,15 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) // ApplyRatingMod(CR_CRIT_TAKEN_SPELL, int32(val), apply); // break; case ITEM_MOD_RESILIENCE_RATING: - ApplyRatingMod(CR_RESILIENCE_PLAYER_DAMAGE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_RESILIENCE_PLAYER_DAMAGE, int32(val), apply); break; case ITEM_MOD_HASTE_RATING: - ApplyRatingMod(CR_HASTE_MELEE, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_HASTE_RANGED, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_HASTE_SPELL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_HASTE_MELEE, int32(val), apply); + ApplyRatingMod(CR_HASTE_RANGED, int32(val), apply); + ApplyRatingMod(CR_HASTE_SPELL, int32(val), apply); break; case ITEM_MOD_EXPERTISE_RATING: - ApplyRatingMod(CR_EXPERTISE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_EXPERTISE, int32(val), apply); break; case ITEM_MOD_ATTACK_POWER: HandleStatFlatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_VALUE, float(val), apply); @@ -8098,9 +8132,9 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) HandleStatFlatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_VALUE, float(val), apply); break; case ITEM_MOD_VERSATILITY: - ApplyRatingMod(CR_VERSATILITY_DAMAGE_DONE, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_VERSATILITY_DAMAGE_TAKEN, int32(val * combatRatingMultiplier), apply); - ApplyRatingMod(CR_VERSATILITY_HEALING_DONE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_VERSATILITY_DAMAGE_DONE, int32(val), apply); + ApplyRatingMod(CR_VERSATILITY_DAMAGE_TAKEN, int32(val), apply); + ApplyRatingMod(CR_VERSATILITY_HEALING_DONE, int32(val), apply); break; case ITEM_MOD_MANA_REGENERATION: ApplyManaRegenBonus(int32(val), apply); @@ -8115,10 +8149,10 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) ApplyHealthRegenBonus(int32(val), apply); break; case ITEM_MOD_SPELL_PENETRATION: - ApplySpellPenetrationBonus(val, apply); + ApplySpellPenetrationBonus(int32(val), apply); break; case ITEM_MOD_MASTERY_RATING: - ApplyRatingMod(CR_MASTERY, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_MASTERY, int32(val), apply); break; case ITEM_MOD_EXTRA_ARMOR: HandleStatFlatModifier(UNIT_MOD_ARMOR, TOTAL_VALUE, float(val), apply); @@ -8151,16 +8185,16 @@ void Player::_ApplyItemBonuses(Item* item, uint8 slot, bool apply) ApplyRatingMod(CR_CORRUPTION_RESISTANCE, int32(val), apply); break; case ITEM_MOD_CR_SPEED: - ApplyRatingMod(CR_SPEED, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_SPEED, int32(val), apply); break; case ITEM_MOD_CR_LIFESTEAL: - ApplyRatingMod(CR_LIFESTEAL, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_LIFESTEAL, int32(val), apply); break; case ITEM_MOD_CR_AVOIDANCE: - ApplyRatingMod(CR_AVOIDANCE, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_AVOIDANCE, int32(val), apply); break; case ITEM_MOD_CR_STURDINESS: - ApplyRatingMod(CR_STURDINESS, int32(val * combatRatingMultiplier), apply); + ApplyRatingMod(CR_STURDINESS, int32(val), apply); break; case ITEM_MOD_AGI_STR_INT: HandleStatFlatModifier(UNIT_MOD_STAT_AGILITY, BASE_VALUE, float(val), apply); From b3830b1d74e008990c0443eadad21b45304d578f Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 22 May 2026 18:24:17 +0200 Subject: [PATCH 165/175] Core/Movement: Allow using all chrono types to MotionMaster::MovePath fadeObject argument --- src/server/game/Movement/MovementDefines.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/game/Movement/MovementDefines.h b/src/server/game/Movement/MovementDefines.h index 75af56413b056..350e40c46db62 100644 --- a/src/server/game/Movement/MovementDefines.h +++ b/src/server/game/Movement/MovementDefines.h @@ -164,8 +164,12 @@ using MovementFacingTarget = std::variant duration) : Duration(duration) { } + + template + constexpr MovementFadeObject(std::chrono::duration duration) : Duration(duration) { } + + template + constexpr MovementFadeObject(Optional> duration) : Duration(duration) { } Optional Duration; }; From 0f952258e7fd84da03d5a968399116ef336368dd Mon Sep 17 00:00:00 2001 From: Naddley Date: Sat, 23 May 2026 13:38:03 +0200 Subject: [PATCH 166/175] DB/Westfall: Update some more creature to createobject2 --- .../world/master/2026_05_23_00_world.sql | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 sql/updates/world/master/2026_05_23_00_world.sql diff --git a/sql/updates/world/master/2026_05_23_00_world.sql b/sql/updates/world/master/2026_05_23_00_world.sql new file mode 100644 index 0000000000000..babb7c3573ffc --- /dev/null +++ b/sql/updates/world/master/2026_05_23_00_world.sql @@ -0,0 +1,32 @@ +-- Update creature spawns to createobject2 positions + +-- Coyote +UPDATE `creature` SET `position_x`=-9765.7783203125, `position_y`=1345.98095703125, `position_z`=41.07471466064453125, `orientation`=5.586446762084960937 WHERE `guid` = 276019; +UPDATE `creature` SET `position_x`=-9826.8212890625, `position_y`=1567.611083984375, `position_z`=39.67414093017578125, `orientation`=1.970574259757995605 WHERE `guid` = 275936; +UPDATE `creature` SET `position_x`=-9832.703125, `position_y`=1404.3836669921875, `position_z`=48.96465682983398437, `orientation`=1.717794179916381835 WHERE `guid` = 275925; +UPDATE `creature` SET `position_x`=-9927.4931640625, `position_y`=1328.607666015625, `position_z`=43.4078216552734375, `orientation`=5.445637702941894531 WHERE `guid` = 275813; +UPDATE `creature` SET `position_x`=-10017.7861328125, `position_y`=1350.388916015625, `position_z`=41.94374465942382812, `orientation`=0.777366518974304199 WHERE `guid` = 275718; + +UPDATE `creature` SET `wander_distance` = 8, `MovementType` = 1 WHERE `guid` IN (276019,275936,275925,275813,275718); + +-- Young Goretusk +UPDATE `creature` SET `position_x`=-9787.576171875, `position_y`=1299.685791015625, `position_z`=40.55675506591796875, `orientation`=4.565766811370849609 WHERE `guid` = 275917; +UPDATE `creature` SET `position_x`=-9851.091796875, `position_y`=1384.953125, `position_z`=51.53354644775390625, `orientation`=5.42313385009765625 WHERE `guid` = 275912; +UPDATE `creature` SET `position_x`=-9908.3330078125, `position_y`=1359.1475830078125, `position_z`=45.46649932861328125, `orientation`=0.8707658052444458 WHERE `guid` = 275817; +UPDATE `creature` SET `position_x`=-9950.7236328125, `position_y`=1350.9288330078125, `position_z`=42.2512969970703125, `orientation`=2.370773792266845703 WHERE `guid` = 275782; +UPDATE `creature` SET `position_x`=-10048.919921875, `position_y`=1371.345458984375, `position_z`=43.65888214111328125, `orientation`=3.545768976211547851 WHERE `guid` = 275725; + +UPDATE `creature` SET `wander_distance` = 6, `MovementType` = 1 WHERE `guid` IN (275917,275912,275817,275782,275725); + +-- Young Fleshripper +UPDATE `creature` SET `position_x`=-9818.1484375, `position_y`=1351.0841064453125, `position_z`=45.45838546752929687, `orientation`=5.497895240783691406 WHERE `guid` = 275909; +UPDATE `creature` SET `position_x`=-9773.716796875, `position_y`=1268.1805419921875, `position_z`=40.6760101318359375, `orientation`=5.993234634399414062 WHERE `guid` = 276023; +UPDATE `creature` SET `position_x`=-9853.45703125, `position_y`=1451.2882080078125, `position_z`=59.78445816040039062, `orientation`=4.542524337768554687 WHERE `guid` = 275924; +UPDATE `creature` SET `position_x`=-10023.154296875, `position_y`=1406.0538330078125, `position_z`=41.21857452392578125, `orientation`=0.516912281513214111 WHERE `guid` = 275728; + +UPDATE `creature` SET `wander_distance` = 12, `MovementType` = 1 WHERE `guid` IN (275909,276023,275924,275728); + +-- Fleshripper +UPDATE `creature` SET `position_x`=-9826.2548828125, `position_y`=1498.7274169921875, `position_z`=42.78895187377929687, `orientation`=0.684449195861816406 WHERE `guid` = 275918; + +UPDATE `creature` SET `wander_distance` = 8, `MovementType` = 1 WHERE `guid` IN (275918); From 7e84b53648c238ef6632703bbb187bb2334271f2 Mon Sep 17 00:00:00 2001 From: Nik <102656911+notwonderful@users.noreply.github.com> Date: Sun, 24 May 2026 00:07:17 +0300 Subject: [PATCH 167/175] Core/Misc: Update CreatureFamily enum for 12.0.5 (#31851) --- src/server/game/Miscellaneous/SharedDefines.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index aa974175a6473..036cb9a8c5089 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -5010,7 +5010,7 @@ uint32 const CREATURE_TYPEMASK_DEMON_OR_UNDEAD = (1 << (CREATURE_TYPE_DEMON-1)) uint32 const CREATURE_TYPEMASK_HUMANOID_OR_UNDEAD = (1 << (CREATURE_TYPE_HUMANOID-1)) | (1 << (CREATURE_TYPE_UNDEAD-1)); uint32 const CREATURE_TYPEMASK_MECHANICAL_OR_ELEMENTAL = (1 << (CREATURE_TYPE_MECHANICAL-1)) | (1 << (CREATURE_TYPE_ELEMENTAL-1)); -// CreatureFamily.dbc (11.2.5.62687) +// CreatureFamily.dbc (12.0.5.67602) enum CreatureFamily { CREATURE_FAMILY_NONE = 0, @@ -5065,13 +5065,13 @@ enum CreatureFamily CREATURE_FAMILY_HYDRA = 68, CREATURE_FAMILY_FELIMP = 100, CREATURE_FAMILY_VOIDLORD = 101, - CREATURE_FAMILY_SHIVARA = 102, + CREATURE_FAMILY_SHIVARRA = 102, CREATURE_FAMILY_OBSERVER = 103, CREATURE_FAMILY_WRATHGUARD = 104, CREATURE_FAMILY_INFERNAL = 108, CREATURE_FAMILY_FIREELEMENTAL = 116, CREATURE_FAMILY_EARTHELEMENTAL = 117, - CREATURE_FAMILY_CRANE = 125, + CREATURE_FAMILY_WATERFOWL = 125, CREATURE_FAMILY_WATERSTRIDER = 126, CREATURE_FAMILY_RODENT = 127, CREATURE_FAMILY_STONE_HOUND = 128, @@ -5079,7 +5079,7 @@ enum CreatureFamily CREATURE_FAMILY_BASILISK = 130, CREATURE_FAMILY_DIREHORN = 138, CREATURE_FAMILY_STORMELEMENTAL = 145, - CREATURE_FAMILY_TORRORGUARD = 147, + CREATURE_FAMILY_TERRORGUARD = 147, CREATURE_FAMILY_ABYSSAL = 148, CREATURE_FAMILY_RIVERBEAST = 150, CREATURE_FAMILY_STAG = 151, @@ -5090,14 +5090,15 @@ enum CreatureFamily CREATURE_FAMILY_FEATHERMANE = 160, CREATURE_FAMILY_LIZARD = 288, CREATURE_FAMILY_PTERRORDAX = 290, - CREATURE_FAMILY_TOAD = 291, + CREATURE_FAMILY_HOPPER = 291, CREATURE_FAMILY_CARAPID = 292, CREATURE_FAMILY_BLOOD_BEAST = 296, CREATURE_FAMILY_CAMEL = 298, CREATURE_FAMILY_COURSER = 299, CREATURE_FAMILY_MAMMOTH = 300, CREATURE_FAMILY_INCUBUS = 302, - CREATURE_FAMILY_LESSER_DRAGONKIN = 303 + CREATURE_FAMILY_LESSER_DRAGONKIN = 303, + CREATURE_FAMILY_WHIPTAIL = 315 }; enum CreatureTypeFlags From d7de55ad6913330296a355b041c7b31027fbb4e7 Mon Sep 17 00:00:00 2001 From: Naddley Date: Sat, 23 May 2026 23:51:11 +0200 Subject: [PATCH 168/175] DB/Westfall: Update more creatures to createobject2 --- .../world/master/2026_05_23_01_world.sql | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 sql/updates/world/master/2026_05_23_01_world.sql diff --git a/sql/updates/world/master/2026_05_23_01_world.sql b/sql/updates/world/master/2026_05_23_01_world.sql new file mode 100644 index 0000000000000..8280d4e486391 --- /dev/null +++ b/sql/updates/world/master/2026_05_23_01_world.sql @@ -0,0 +1,63 @@ +-- Update creature spawns to createobject2 positions + +-- Coyote +UPDATE `creature` SET `position_x`=-10112.2919921875, `position_y`=1257.9410400390625, `position_z`=38.7079925537109375, `orientation`=5.972020626068115234 WHERE `guid` = 275667; +UPDATE `creature` SET `position_x`=-10284.5400390625, `position_y`=1150.21875, `position_z`=38.8421630859375, `orientation`=0.415150463581085205 WHERE `guid` = 275481; +UPDATE `creature` SET `position_x`=-10217.171875, `position_y`=1216.953125, `position_z`=43.1945953369140625, `orientation`=3.949086666107177734 WHERE `guid` = 275518; +UPDATE `creature` SET `position_x`=-9884.3369140625, `position_y`=852.013916015625, `position_z`=31.84584999084472656, `orientation`=5.217483997344970703 WHERE `guid` = 275797; +UPDATE `creature` SET `position_x`=-9950.0712890625, `position_y`=849.67706298828125, `position_z`=31.97866630554199218, `orientation`=4.304910659790039062 WHERE `guid` = 275792; +UPDATE `creature` SET `position_x`=-10051.0087890625, `position_y`=949.27081298828125, `position_z`=36.65061187744140625, `orientation`=5.31670379638671875 WHERE `guid` = 275688; +UPDATE `creature` SET `position_x`=-10084.7587890625, `position_y`=850.66143798828125, `position_z`=33.3445892333984375, `orientation`=5.123446464538574218 WHERE `guid` = 275624; +UPDATE `creature` SET `position_x`=-10020.9892578125, `position_y`=850.5399169921875, `position_z`=33.247344970703125, `orientation`=1.827679157257080078 WHERE `guid` = 275689; +UPDATE `creature` SET `position_x`=-10121.03515625, `position_y`=956.42364501953125, `position_z`=36.19438552856445312, `orientation`=5.954511642456054687 WHERE `guid` = 275620; +UPDATE `creature` SET `position_x`=-10185.5244140625, `position_y`=884.73956298828125, `position_z`=40.25575637817382812, `orientation`=5.553556442260742187 WHERE `guid` = 275537; +UPDATE `creature` SET `position_x`=-10150.2431640625, `position_y`=849.125, `position_z`=25.1642303466796875, `orientation`=4.190216541290283203 WHERE `guid` = 275535; +UPDATE `creature` SET `position_x`=-10297.1826171875, `position_y`=924.34375, `position_z`=38.05178451538085937, `orientation`=0.939201772212982177 WHERE `guid` = 275531; +UPDATE `creature` SET `position_x`=-10251.4892578125, `position_y`=820.49652099609375, `position_z`=50.11504745483398437, `orientation`=2.384792804718017578 WHERE `guid` = 275529; + +UPDATE `creature` SET `wander_distance` = 8, `MovementType` = 1 WHERE `guid` IN (275667,275481,275518,275797,275792,275688,275624,275689,275620,275537,275535,275531,275529); + +-- Young Goretusk +UPDATE `creature` SET `position_x`=-9917.078125, `position_y`=849.0694580078125, `position_z`=32.4301605224609375, `orientation`=0.236416608095169067 WHERE `guid` = 275798; +UPDATE `creature` SET `position_x`=-9981.4501953125, `position_y`=812.88232421875, `position_z`=33.01144790649414062, `orientation`=4.4719085693359375 WHERE `guid` = 275692; +UPDATE `creature` SET `position_x`=-10050.6142578125, `position_y`=885.8125, `position_z`=34.56714630126953125, `orientation`=2.421432018280029296 WHERE `guid` = 275630; +UPDATE `creature` SET `position_x`=-10083.69140625, `position_y`=918.2882080078125, `position_z`=36.40305709838867187, `orientation`=0.719702780246734619 WHERE `guid` = 275629; +UPDATE `creature` SET `position_x`=-10151.271484375, `position_y`=944.1805419921875, `position_z`=37.7889251708984375, `orientation`=0.711530804634094238 WHERE `guid` = 275619; +UPDATE `creature` SET `position_x`=-10171.626953125, `position_y`=868.97918701171875, `position_z`=35.7053375244140625, `orientation`=1.437640070915222167 WHERE `guid` = 275534; +UPDATE `creature` SET `position_x`=-10221.6357421875, `position_y`=938.63714599609375, `position_z`=42.136260986328125, `orientation`=0.531850874423980712 WHERE `guid` = 275527; +UPDATE `creature` SET `position_x`=-10250.6005859375, `position_y`=881.25347900390625, `position_z`=37.28864669799804687, `orientation`=0.815001606941223144 WHERE `guid` = 275530; + +UPDATE `creature` SET `wander_distance` = 6, `MovementType` = 1 WHERE `guid` IN (275798,275692,275630,275629,275619,275534,275527,275530); + +-- Goretusk +UPDATE `creature` SET `position_x`=-10156.716796875, `position_y`=1228.4010009765625, `position_z`=35.82923126220703125, `orientation`=4.195333480834960937 WHERE `guid` = 275606; +UPDATE `creature` SET `position_x`=-10089.7587890625, `position_y`=1191.13720703125, `position_z`=37.23752212524414062, `orientation`=2.990307807922363281 WHERE `guid` = 275669; +UPDATE `creature` SET `position_x`=-10125.326171875, `position_y`=1218.35595703125, `position_z`=34.92719268798828125, `orientation`=3.635154008865356445 WHERE `guid` = 275609; +UPDATE `creature` SET `position_x`=-10195.9736328125, `position_y`=1210.7447509765625, `position_z`=38.43616867065429687, `orientation`=4.825494766235351562 WHERE `guid` = 275545; +UPDATE `creature` SET `position_x`=-10223.0419921875, `position_y`=1207.02783203125, `position_z`=42.30506515502929687, `orientation`=0 WHERE `guid` = 275519; +UPDATE `creature` SET `position_x`=-10182.55078125, `position_y`=1185.6197509765625, `position_z`=36.96110153198242187, `orientation`=0 WHERE `guid` = 275549; +UPDATE `creature` SET `position_x`=-10248.2373046875, `position_y`=1249.681396484375, `position_z`=38.31702804565429687, `orientation`=3.49864816665649414 WHERE `guid` = 275478; +UPDATE `creature` SET `position_x`=-10202.4619140625, `position_y`=1152.1458740234375, `position_z`=36.00730514526367187, `orientation`=0 WHERE `guid` = 275522; +UPDATE `creature` SET `position_x`=-10317.41796875, `position_y`=1183.10888671875, `position_z`=39.922393798828125, `orientation`=0.944585442543029785 WHERE `guid` = 275420; +UPDATE `creature` SET `position_x`=-10218.3486328125, `position_y`=1172.157958984375, `position_z`=36.1107330322265625, `orientation`=0 WHERE `guid` = 275521; +UPDATE `creature` SET `position_x`=-10184.810546875, `position_y`=1231.8629150390625, `position_z`=35.80158233642578125, `orientation`=0 WHERE `guid` = 275544; +UPDATE `creature` SET `position_x`=-10389.1162109375, `position_y`=1115.91845703125, `position_z`=34.17665863037109375, `orientation`=3.015480756759643554 WHERE `guid` = 275319; +UPDATE `creature` SET `position_x`=-10448.8017578125, `position_y`=1185.578125, `position_z`=38.65456008911132812, `orientation`=4.223866462707519531 WHERE `guid` = 275279; +UPDATE `creature` SET `position_x`=-10351.423828125, `position_y`=1147.935791015625, `position_z`=36.42644882202148437, `orientation`=5.291047096252441406 WHERE `guid` = 275320; +UPDATE `creature` SET `position_x`=-10383.974609375, `position_y`=1188.2945556640625, `position_z`=41.59771728515625, `orientation`=5.8113250732421875 WHERE `guid` = 275318; +UPDATE `creature` SET `position_x`=-10315.1611328125, `position_y`=1052.6754150390625, `position_z`=41.00365829467773437, `orientation`=0.825018167495727539 WHERE `guid` = 275418; + +UPDATE `creature` SET `wander_distance` = 8, `MovementType` = 1 WHERE `guid` IN (275606,275669,275609,275545,275519,275549,275478,275522,275420,275521,275544,275319,275279,275320,275318,275418); + +-- Young Fleshripper +UPDATE `creature` SET `position_x`= -10119.6337890625, `position_y`=1316.984375, `position_z`=39.73633193969726562, `orientation`=0.693411588668823242 WHERE `guid` = 275671; +UPDATE `creature` SET `position_x`=-10071.8037109375, `position_y`=1171.4114990234375, `position_z`=38.68895721435546875, `orientation`=2.600074052810668945 WHERE `guid` = 275660; +UPDATE `creature` SET `position_x`=-10252.361328125, `position_y`=1184.0538330078125, `position_z`=34.03143310546875, `orientation`=2.307207822799682617 WHERE `guid` = 275480; +UPDATE `creature` SET `position_x`=-10049.6630859375, `position_y`=883.65802001953125, `position_z`=34.52642822265625, `orientation`=4.17992401123046875 WHERE `guid` = 275690; +UPDATE `creature` SET `position_x`=-10051.4033203125, `position_y`=824.24481201171875, `position_z`=33.06116867065429687, `orientation`=5.475196361541748046 WHERE `guid` = 275625; +UPDATE `creature` SET `position_x`=-10118.5859375, `position_y`=883.97845458984375, `position_z`=32.17874908447265625, `orientation`=3.457170724868774414 WHERE `guid` = 275623; +UPDATE `creature` SET `position_x`=-9982.6044921875, `position_y`=914.7257080078125, `position_z`=36.70961761474609375, `orientation`=0.345296263694763183 WHERE `guid` = 275696; +UPDATE `creature` SET `position_x`=-10209.6923828125, `position_y`=837.00518798828125, `position_z`=36.19669342041015625, `orientation`=2.07704019546508789 WHERE `guid` = 275533; +UPDATE `creature` SET `position_x`=-10182.125, `position_y`=917.8819580078125, `position_z`=38.52907562255859375, `orientation`=4.004416465759277343 WHERE `guid` = 275538; + +UPDATE `creature` SET `wander_distance` = 12, `MovementType` = 1 WHERE `guid` IN (275671,275660,275480,275690,275625,275623,275696,275533,275538); From c5b1e9e0c28bcc07560b2ea1a6b1ac1227984756 Mon Sep 17 00:00:00 2001 From: Naddley Date: Sat, 23 May 2026 23:51:58 +0200 Subject: [PATCH 169/175] DB/Westfall: Pooled some more copper veins --- .../world/master/2026_05_23_02_world.sql | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 sql/updates/world/master/2026_05_23_02_world.sql diff --git a/sql/updates/world/master/2026_05_23_02_world.sql b/sql/updates/world/master/2026_05_23_02_world.sql new file mode 100644 index 0000000000000..36539290e2329 --- /dev/null +++ b/sql/updates/world/master/2026_05_23_02_world.sql @@ -0,0 +1,18 @@ +SET @OGUID := 167087; +SET @POOLID := 3000015; + +-- GameObject +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+1; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `PhaseId`, `PhaseGroup`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +(@OGUID+0, 1731, 0, 40, 40, '0', 0, 0, -9959.7607421875, 942.342041015625, 33.25298309326171875, 0, 0, 0, 0, 1, 120, 255, 1, 67602), -- Copper Vein (Area: Westfall - Difficulty: 0) CreateObject2 +(@OGUID+1, 1731, 0, 40, 40, '0', 0, 0, -9942.2314453125, 875.8507080078125, 32.7149505615234375, 0, 0, 0, 0, 1, 120, 255, 1, 67602); -- Copper Vein (Area: Westfall - Difficulty: 0) CreateObject2 + +DELETE FROM `pool_template` WHERE `entry` = @POOLID+0; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@POOLID+0, 1, 'Westfall - Hill - Copper Vein Group'); + +DELETE FROM `pool_members` WHERE (`type` = 1 AND `spawnId` IN (@OGUID+0,@OGUID+1,208341)); +INSERT INTO `pool_members` (`type`, `spawnId`, `poolSpawnId`, `chance`, `description`) VALUES +(1, @OGUID+0, @POOLID+0, 0, 'Westfall - Hill - Node 1'), +(1, @OGUID+1, @POOLID+0, 0, 'Westfall - Hill - Node 2'), +(1, 208341, @POOLID+0, 0, 'Westfall - Hill - Node 3'); From 3961330d44fe8af8128fafbfcebe5714aa656e87 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 24 May 2026 21:30:08 +0200 Subject: [PATCH 170/175] Core/Misc: Port some 3.3.5 cherry-pick refactors --- src/server/game/Handlers/ItemHandler.cpp | 5 +---- src/server/game/Quests/QuestDef.h | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 14 ++++++-------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index d6b70b68b6857..7fd41502438ec 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -342,10 +342,7 @@ void WorldSession::HandleDestroyItemOpcode(WorldPackets::Item::DestroyItem& dest } if (destroyItem.Count) - { - uint32 i_count = destroyItem.Count; - _player->DestroyItemCount(item, i_count, true); - } + _player->DestroyItemCount(item, destroyItem.Count, true); else _player->DestroyItem(destroyItem.ContainerId, destroyItem.SlotNum, true); } diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 829ca81492fce..3e527c634a968 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -823,7 +823,7 @@ class TC_GAME_API Quest int32 _questGiverPortraitMount = 0; int32 _questGiverPortraitModelSceneId = 0; uint32 _questTurnInPortrait = 0; - uint32 _rewardReputationMask; + uint32 _rewardReputationMask = 0; uint32 _soundAccept = 0; uint32 _soundTurnIn = 0; uint32 _areaGroupID = 0; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 853865493d5ef..7e1a9f751c732 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -1693,15 +1693,13 @@ void AuraEffect::HandleModInvisibility(AuraApplication const* aurApp, uint8 mode else { if (!target->HasAuraTypeWithMiscvalue(SPELL_AURA_MOD_INVISIBILITY, type)) - { - // if not have invisibility auras of type INVISIBILITY_GENERAL - // remove glow vision - if (type == INVISIBILITY_GENERAL) - if (Player* playerTarget = target->ToPlayer()) - playerTarget->RemoveAuraVision(PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); - target->m_invisibility.DelFlag(type); - } + + // if not have invisibility auras of type INVISIBILITY_GENERAL + // remove glow vision + if (!target->m_invisibility.HasFlag(INVISIBILITY_GENERAL)) + if (Player* playerTarget = target->ToPlayer()) + playerTarget->RemoveAuraVision(PLAYER_FIELD_BYTE2_INVISIBILITY_GLOW); if (!target->HasAuraType(SPELL_AURA_MOD_INVISIBILITY)) target->RemoveVisFlag(UNIT_VIS_FLAGS_INVISIBLE); From 3880509ff46d8574e3deade6aeb949ebaa3d63a7 Mon Sep 17 00:00:00 2001 From: Aokromes Date: Wed, 5 Apr 2023 09:35:41 +0200 Subject: [PATCH 171/175] DB/Creature: Update "Lunchbox" modelid by jildor, closes #28854 (cherry picked from commit fe811617cd0c699a9f665ec905d4e86e82959c70) --- .../world/master/2026_05_24_00_world_2023_04_05_01_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/master/2026_05_24_00_world_2023_04_05_01_world.sql diff --git a/sql/updates/world/master/2026_05_24_00_world_2023_04_05_01_world.sql b/sql/updates/world/master/2026_05_24_00_world_2023_04_05_01_world.sql new file mode 100644 index 0000000000000..7944655cd897a --- /dev/null +++ b/sql/updates/world/master/2026_05_24_00_world_2023_04_05_01_world.sql @@ -0,0 +1,2 @@ +-- Wrath of the Lich King Patch 3.1.0 (2009-04-14): Model updated from a kodo beast to a rhino. +UPDATE `creature` SET `modelid`=26266 WHERE `id`=25968 AND `modelid`=23486; From f798c1d78bf0262db921cc952c5d30949f2ed66a Mon Sep 17 00:00:00 2001 From: Aokromes Date: Wed, 5 Apr 2023 09:37:18 +0200 Subject: [PATCH 172/175] DB/Creature: Update Prince Tortheldrin spawn coordinates by CraftedRO closes #28840 (cherry picked from commit ebceb9eb090b9e914679f1f4fa7e210b99aeafbb) --- .../world/master/2026_05_24_01_world_2023_04_05_02_world.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/master/2026_05_24_01_world_2023_04_05_02_world.sql diff --git a/sql/updates/world/master/2026_05_24_01_world_2023_04_05_02_world.sql b/sql/updates/world/master/2026_05_24_01_world_2023_04_05_02_world.sql new file mode 100644 index 0000000000000..4bedfe2136ab9 --- /dev/null +++ b/sql/updates/world/master/2026_05_24_01_world_2023_04_05_02_world.sql @@ -0,0 +1,2 @@ +-- Update Prince Tortheldrin spawn coordinates +UPDATE `creature` SET `position_x`=132.6259, `position_y`=625.9129, `position_z`=-48.38363, `orientation`=4.625122547149658203 WHERE `guid`=56951 AND `id`=11486; From 39f4f96b2d92820c5ad93c7595adad01ab498f0f Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 25 May 2026 12:39:15 +0200 Subject: [PATCH 173/175] Scripts/Spells: Update Fury Warrior Enrage to midnight (#31856) --- .../world/master/2026_05_25_00_world.sql | 4 + src/server/scripts/Spells/spell_warrior.cpp | 123 +++++++++--------- 2 files changed, 68 insertions(+), 59 deletions(-) create mode 100644 sql/updates/world/master/2026_05_25_00_world.sql diff --git a/sql/updates/world/master/2026_05_25_00_world.sql b/sql/updates/world/master/2026_05_25_00_world.sql new file mode 100644 index 0000000000000..b8112165e6c19 --- /dev/null +++ b/sql/updates/world/master/2026_05_25_00_world.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_warr_bloodthirst_enrage'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(23881, 'spell_warr_bloodthirst_enrage'), +(335096, 'spell_warr_bloodthirst_enrage'); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 8d75436c8fedf..772cab2f07c25 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -353,6 +353,67 @@ class spell_warr_bloodthirst : public SpellScript } }; +// 23881 - Bloodthirst +// 335096 - Bloodbath +class spell_warr_bloodthirst_enrage : public SpellScript +{ + bool Validate(SpellInfo const* spellInfo) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_FRESH_MEAT_TALENT, SPELL_WARRIOR_FRESH_MEAT_DEBUFF }) + && ValidateSpellEffect({{ spellInfo->Id, EFFECT_2 }}); + } + + enum class EnrageResult + { + No, + Yes, + FreshMeat + }; + + EnrageResult CheckEnrageProc() const + { + Unit const* caster = GetCaster(); + Unit const* hitUnit = GetHitUnit(); + + if (hitUnit != GetExplTargetUnit()) + return EnrageResult::No; + + if (caster->HasAura(SPELL_WARRIOR_FRESH_MEAT_TALENT)) + if (!hitUnit->HasAura(SPELL_WARRIOR_FRESH_MEAT_DEBUFF, caster->GetGUID())) + return EnrageResult::FreshMeat; + + if (roll_chance(GetEffectInfo(EFFECT_2).CalcValue(caster))) + return EnrageResult::Yes; + + return EnrageResult::No; + } + + void Enrage(SpellEffIndex /*effIndex*/) const + { + EnrageResult procResult = CheckEnrageProc(); + if (procResult == EnrageResult::No) + return; + + Unit* caster = GetCaster(); + + caster->CastSpell(nullptr, SPELL_WARRIOR_ENRAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell() + }); + + // Fresh Meat talent handling + if (procResult == EnrageResult::FreshMeat) + caster->CastSpell(GetHitUnit(), SPELL_WARRIOR_FRESH_MEAT_DEBUFF, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR + }); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_warr_bloodthirst_enrage::Enrage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + // 446085 - Brutal Finish (attached to 446035 - Bladestorm) class spell_warr_brutal_finish : public AuraScript { @@ -662,11 +723,6 @@ class spell_warr_devastator : public AuraScript // 184361 - Enrage class spell_warr_enrage_proc : public AuraScript { - bool Validate(SpellInfo const* /*spellInfo*/) override - { - return ValidateSpellInfo({ SPELL_WARRIOR_FRESH_MEAT_TALENT, SPELL_WARRIOR_FRESH_MEAT_DEBUFF }); - } - static bool CheckRampageProc(AuraScript const&, AuraEffect const* /*aurEff*/, ProcEventInfo const& eventInfo) { SpellInfo const* spellInfo = eventInfo.GetSpellInfo(); @@ -676,39 +732,6 @@ class spell_warr_enrage_proc : public AuraScript return true; } - static bool IsBloodthirst(SpellInfo const* spellInfo) - { - // Bloodthirst/Bloodbath - return spellInfo->IsAffected(SPELLFAMILY_WARRIOR, { 0x0, 0x400 }); - } - - static bool CheckBloodthirstProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo) - { - SpellInfo const* spellInfo = eventInfo.GetSpellInfo(); - if (!spellInfo || !IsBloodthirst(spellInfo)) - return false; - - // Fresh Meat talent handling - if (Unit const* actor = eventInfo.GetActor()) - { - if (actor->HasAura(SPELL_WARRIOR_FRESH_MEAT_TALENT)) - { - Spell const* procSpell = eventInfo.GetProcSpell(); - if (!procSpell) - return false; - - Unit const* target = procSpell->m_targets.GetUnitTarget(); - if (!target) - return false; - - if (!target->HasAura(SPELL_WARRIOR_FRESH_MEAT_DEBUFF, actor->GetGUID())) - return true; - } - } - - return roll_chance(aurEff->GetAmount()); - } - void HandleProc(ProcEventInfo const& eventInfo) { PreventDefaultAction(); @@ -719,29 +742,11 @@ class spell_warr_enrage_proc : public AuraScript .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, .TriggeringSpell = eventInfo.GetProcSpell() }); - - // Fresh Meat talent handling - if (auraTarget->HasAura(SPELL_WARRIOR_FRESH_MEAT_TALENT)) - { - Spell const* procSpell = eventInfo.GetProcSpell(); - if (!procSpell) - return; - - if (!IsBloodthirst(procSpell->GetSpellInfo())) - return; - - if (Unit* bloodthirstTarget = procSpell->m_targets.GetUnitTarget()) - if (!bloodthirstTarget->HasAura(SPELL_WARRIOR_FRESH_MEAT_DEBUFF, auraTarget->GetGUID())) - auraTarget->CastSpell(bloodthirstTarget, SPELL_WARRIOR_FRESH_MEAT_DEBUFF, CastSpellExtraArgsInit{ - .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR - }); - } } void Register() override { DoCheckEffectProc += AuraCheckEffectProcFn(spell_warr_enrage_proc::CheckRampageProc, EFFECT_0, SPELL_AURA_DUMMY); - DoCheckEffectProc += AuraCheckEffectProcFn(spell_warr_enrage_proc::CheckBloodthirstProc, EFFECT_1, SPELL_AURA_DUMMY); OnProc += AuraProcFn(spell_warr_enrage_proc::HandleProc); } }; @@ -1071,7 +1076,7 @@ class spell_warr_heroic_leap : public SpellScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_WARRIOR_HEROIC_LEAP_DAMAGE, SPELL_WARRIOR_TAUNT }); + return ValidateSpellInfo({ SPELL_WARRIOR_TAUNT }); } SpellCastResult CheckElevation() const @@ -1867,8 +1872,7 @@ class spell_warr_strategist : public AuraScript { bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_WARRIOR_SHIELD_SLAM, SPELL_WARRIOR_SHIELD_SLAM_MARKER }) - && ValidateSpellEffect({ { SPELL_WARRIOR_STRATEGIST, EFFECT_0 } }); + return ValidateSpellInfo({ SPELL_WARRIOR_SHIELD_SLAM, SPELL_WARRIOR_SHIELD_SLAM_MARKER }); } static bool CheckProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& /*procEvent*/) @@ -2343,6 +2347,7 @@ void AddSC_warrior_spell_scripts() RegisterSpellScript(spell_warr_avatar); RegisterSpellScript(spell_warr_bloodsurge); RegisterSpellScript(spell_warr_bloodthirst); + RegisterSpellScript(spell_warr_bloodthirst_enrage); RegisterSpellScript(spell_warr_brutal_finish); RegisterSpellScript(spell_warr_brutal_vitality); RegisterSpellScript(spell_warr_charge); From a41ed0e00993b6600d89694f8d71c846eb36e8dd Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 25 May 2026 14:29:01 +0200 Subject: [PATCH 174/175] Scripts/Spells: Remove unused spells from WarriorSpells enum --- src/server/scripts/Spells/spell_warrior.cpp | 22 +++++---------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 772cab2f07c25..c431512774a64 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -43,11 +43,10 @@ enum WarriorSpells SPELL_WARRIOR_BLADESTORM_PERIODIC_WHIRLWIND = 50622, SPELL_WARRIOR_BLOODSURGE_ENERGIZE = 384362, SPELL_WARRIOR_BLOODTHIRST_HEAL = 117313, - SPELL_WARRIOR_BOUNDING_STRIDE_AURA = 202163, SPELL_WARRIOR_BOUNDING_STRIDE = 202164, + SPELL_WARRIOR_BOUNDING_STRIDE_AURA = 202163, SPELL_WARRIOR_BRUTAL_FINISH_BUFF = 446918, SPELL_WARRIOR_BRUTAL_FINISH_TALENT = 446085, - SPELL_WARRIOR_CHARGE = 34846, SPELL_WARRIOR_CHARGE_DROP_FIRE_PERIODIC = 126661, SPELL_WARRIOR_CHARGE_EFFECT = 198337, SPELL_WARRIOR_CHARGE_ROOT_EFFECT = 105771, @@ -60,39 +59,31 @@ enum WarriorSpells SPELL_WARRIOR_ENRAGE = 184362, SPELL_WARRIOR_EXECUTE = 20647, SPELL_WARRIOR_FRENZIED_ENRAGE = 383848, - SPELL_WARRIOR_FRENZY_TALENT = 335077, - SPELL_WARRIOR_FRENZY_BUFF = 335082, SPELL_WARRIOR_FRESH_MEAT_DEBUFF = 316044, SPELL_WARRIOR_FRESH_MEAT_TALENT = 215568, SPELL_WARRIOR_FROTHING_BERSERKER_ENERGIZE = 392793, SPELL_WARRIOR_FUELED_BY_VIOLENCE_HEAL = 383104, SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL = 123779, - SPELL_WARRIOR_GLYPH_OF_HEROIC_LEAP = 159708, - SPELL_WARRIOR_GLYPH_OF_HEROIC_LEAP_BUFF = 133278, SPELL_WARRIOR_GUSHING_WOUND = 385042, - SPELL_WARRIOR_HEROIC_LEAP_JUMP = 178368, - SPELL_WARRIOR_HEROIC_LEAP_DAMAGE = 52174, SPELL_WARRIOR_IGNORE_PAIN = 190456, + SPELL_WARRIOR_IMPENDING_VICTORY = 202168, + SPELL_WARRIOR_IMPENDING_VICTORY_HEAL = 202166, SPELL_WARRIOR_IMPROVED_EXECUTE_ARMS = 316405, SPELL_WARRIOR_IMPROVED_RAGING_BLOW = 383854, SPELL_WARRIOR_IMPROVED_WHIRLWIND = 12950, - SPELL_WARRIOR_INTERVENE_CHARGE = 316531, SPELL_WARRIOR_INTERVENE_AURA = 147833, + SPELL_WARRIOR_INTERVENE_CHARGE = 316531, SPELL_WARRIOR_INTIMIDATING_SHOUT_MENACE_AOE = 316595, SPELL_WARRIOR_INVIGORATING_FURY = 385174, SPELL_WARRIOR_INVIGORATING_FURY_TALENT = 383468, SPELL_WARRIOR_IN_FOR_THE_KILL = 248621, SPELL_WARRIOR_IN_FOR_THE_KILL_HASTE = 248622, - SPELL_WARRIOR_IMPENDING_VICTORY = 202168, - SPELL_WARRIOR_IMPENDING_VICTORY_HEAL = 202166, - SPELL_WARRIOR_IMPROVED_HEROIC_LEAP = 157449, SPELL_WARRIOR_KILL_OR_BE_KILLED_COOLDOWN = 1265598, SPELL_WARRIOR_KILL_OR_BE_KILLED_FULFILLED = 1265645, SPELL_WARRIOR_KILL_OR_BE_KILLED_INSTAKILL = 1265646, SPELL_WARRIOR_KILL_OR_BE_KILLED_PROC = 1265600, SPELL_WARRIOR_KILL_OR_BE_KILLED_TARGET = 1265641, SPELL_WARRIOR_MEAT_CLEAVER_TALENT = 280392, - SPELL_WARRIOR_MORTAL_STRIKE = 12294, SPELL_WARRIOR_MORTAL_WOUNDS = 115804, SPELL_WARRIOR_OVERPOWER = 7384, SPELL_WARRIOR_OVERPOWERING_FINISH = 400205, @@ -109,14 +100,12 @@ enum WarriorSpells SPELL_WARRIOR_SHIELD_SLAM = 23922, SPELL_WARRIOR_SHIELD_SLAM_MARKER = 224324, SPELL_WARRIOR_SHIELD_WALL = 871, - SPELL_WARRIOR_SHOCKWAVE = 46968, SPELL_WARRIOR_SHOCKWAVE_STUN = 132168, SPELL_WARRIOR_SLAUGHTERING_STRIKES = 388004, SPELL_WARRIOR_SLAUGHTERING_STRIKES_BUFF = 393931, SPELL_WARRIOR_STOICISM = 70845, - SPELL_WARRIOR_STORM_BOLT_STUN = 132169, SPELL_WARRIOR_STORM_BOLTS = 436162, - SPELL_WARRIOR_STRATEGIST = 384041, + SPELL_WARRIOR_STORM_BOLT_STUN = 132169, SPELL_WARRIOR_SUDDEN_DEATH = 29725, SPELL_WARRIOR_SUDDEN_DEATH_BUFF = 52437, SPELL_WARRIOR_SURGE_OF_ADRENALINE_TALENT = 1265359, @@ -127,7 +116,6 @@ enum WarriorSpells SPELL_WARRIOR_TAUNT = 355, SPELL_WARRIOR_THUNDER_BLAST = 435615, SPELL_WARRIOR_THUNDER_CLAP_SLOW = 435203, - SPELL_WARRIOR_TITANIC_RAGE = 394329, SPELL_WARRIOR_TRAUMA_EFFECT = 215537, SPELL_WARRIOR_VICIOUS_CONTEMPT = 383885, SPELL_WARRIOR_VICTORIOUS = 32216, From b0615dc2443663a7fd1aa3e7c095f7a784486172 Mon Sep 17 00:00:00 2001 From: Rochet2 Date: Tue, 26 May 2026 02:36:55 +0300 Subject: [PATCH 175/175] Fix GOMove command script for upstream ChatCommand API --- src/server/scripts/Custom/GOMove/GOMoveScripts.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Custom/GOMove/GOMoveScripts.cpp b/src/server/scripts/Custom/GOMove/GOMoveScripts.cpp index 573d20ce31b1f..323ebba55c401 100644 --- a/src/server/scripts/Custom/GOMove/GOMoveScripts.cpp +++ b/src/server/scripts/Custom/GOMove/GOMoveScripts.cpp @@ -69,7 +69,7 @@ class GOMove_commandscript : public CommandScript SPAWNSPELL, }; - ChatCommandTable GetCommands() const override + std::span GetCommands() const override { static ChatCommandTable GOMoveCommandTable = { @@ -172,7 +172,7 @@ class GOMove_commandscript : public CommandScript { GameObject* target = GOMove::GetGameObject(player, lowguid); if (!target) - ChatHandler(player->GetSession()).PSendSysMessage("Object GUID: %u not found", lowguid); + ChatHandler(player->GetSession()).PSendSysMessage("Object GUID: %s not found.", std::to_string(lowguid).c_str()); else { float x, y, z, o;